{"version":3,"sources":["jsdelivr-header.js","/npm/eslint-vitest-rule-tester@2.2.0/dist/index.mjs"],"names":[],"mappings":"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","file":"/npm/eslint-vitest-rule-tester@2.2.0/dist/index.mjs","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/eslint-vitest-rule-tester@2.2.0/dist/index.mjs\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","import { Linter } from 'eslint';\nimport { describe, it, expect } from 'vitest';\nimport path from 'node:path';\nimport process from 'node:process';\n\nfunction toArray(array) {\n  array = array ?? [];\n  return Array.isArray(array) ? array : [array];\n}\nconst toString = (v) => Object.prototype.toString.call(v);\nconst isObject = (val) => toString(val) === \"[object Object]\";\nconst _reFullWs = /^\\s*$/;\nfunction unindent(str) {\n  const lines = (typeof str === \"string\" ? str : str[0]).split(\"\\n\");\n  const whitespaceLines = lines.map((line) => _reFullWs.test(line));\n  const commonIndent = lines.reduce((min, line, idx) => {\n    if (whitespaceLines[idx])\n      return min;\n    const indent = line.match(/^\\s*/)?.[0].length;\n    return indent === void 0 ? min : Math.min(min, indent);\n  }, Number.POSITIVE_INFINITY);\n  let emptyLinesHead = 0;\n  while (emptyLinesHead < lines.length && whitespaceLines[emptyLinesHead])\n    emptyLinesHead++;\n  let emptyLinesTail = 0;\n  while (emptyLinesTail < lines.length && whitespaceLines[lines.length - emptyLinesTail - 1])\n    emptyLinesTail++;\n  return lines.slice(emptyLinesHead, lines.length - emptyLinesTail).map((line) => line.slice(commonIndent)).join(\"\\n\");\n}\nfunction objectKeys(obj) {\n  return Object.keys(obj);\n}\nfunction deepMerge(target, ...sources) {\n  if (!sources.length)\n    return target;\n  const source = sources.shift();\n  if (source === void 0)\n    return target;\n  if (isMergableObject(target) && isMergableObject(source)) {\n    objectKeys(source).forEach((key) => {\n      if (key === \"__proto__\" || key === \"constructor\" || key === \"prototype\")\n        return;\n      if (isMergableObject(source[key])) {\n        if (!target[key])\n          target[key] = {};\n        if (isMergableObject(target[key])) {\n          deepMerge(target[key], source[key]);\n        } else {\n          target[key] = source[key];\n        }\n      } else {\n        target[key] = source[key];\n      }\n    });\n  }\n  return deepMerge(target, ...sources);\n}\nfunction isMergableObject(item) {\n  return isObject(item) && !Array.isArray(item);\n}\nfunction objectPick(obj, keys, omitUndefined = false) {\n  return keys.reduce((n, k) => {\n    if (k in obj) {\n      if (!omitUndefined || obj[k] !== void 0)\n        n[k] = obj[k];\n    }\n    return n;\n  }, {});\n}\n\nfunction pickFlatConfigFromOptions(options) {\n  const picked = objectPick(\n    options,\n    [\n      \"parserOptions\",\n      \"parser\",\n      \"languageOptions\",\n      \"linterOptions\",\n      \"settings\",\n      \"processor\",\n      \"files\"\n    ]\n  );\n  if (picked.parserOptions) {\n    picked.languageOptions ||= {};\n    picked.languageOptions.parserOptions = picked.parserOptions;\n    if (picked.parserOptions.ecmaVersion)\n      picked.languageOptions.ecmaVersion ||= picked.parserOptions.ecmaVersion;\n    if (picked.parserOptions.sourceType)\n      picked.languageOptions.sourceType ||= picked.parserOptions.sourceType;\n    delete picked.parserOptions;\n  }\n  if (picked.parser) {\n    picked.languageOptions ||= {};\n    picked.languageOptions.parser = picked.parser;\n    delete picked.parser;\n  }\n  if (Object.keys(picked).length)\n    return picked;\n  return void 0;\n}\n\nfunction interpolate(text, data) {\n  if (!data)\n    return text;\n  return text.replace(\n    /\\{\\{([^{}]+)\\}\\}/gu,\n    (fullMatch, termWithWhitespace) => {\n      const term = termWithWhitespace.trim();\n      if (term in data)\n        return String(data[term]);\n      return fullMatch;\n    }\n  );\n}\n\nfunction normalizeTestCase(c, languageOptions, defaultFilenames, type) {\n  const obj = typeof c === \"string\" ? { code: c } : { ...c };\n  const normalized = obj;\n  normalized.type ||= type || (\"errors\" in obj || \"output\" in obj ? \"invalid\" : \"valid\");\n  const merged = {\n    ...languageOptions,\n    ...normalized.languageOptions,\n    parser: normalized.languageOptions?.parser ?? normalized.parser ?? languageOptions?.parser,\n    parserOptions: {\n      ...languageOptions?.parserOptions,\n      ...normalized.parserOptions,\n      ...normalized.languageOptions?.parserOptions\n    }\n  };\n  if (isUsingTypeScriptParser(merged)) {\n    normalized.filename ||= getDefaultTypeScriptFilename(merged, defaultFilenames);\n    normalized.languageOptions ||= {};\n    normalized.languageOptions.parser = merged.parser;\n    normalized.languageOptions.parserOptions = {\n      ecmaVersion: \"latest\",\n      sourceType: \"module\",\n      disallowAutomaticSingleRunInference: true,\n      ...merged.parserOptions\n    };\n  } else {\n    normalized.filename ||= getDefaultJavaScriptFilename(merged, defaultFilenames);\n  }\n  return normalized;\n}\nfunction normalizeCaseError(error, rule) {\n  if (typeof error === \"string\")\n    return { messageId: error };\n  const clone = { ...error };\n  if (\"data\" in clone) {\n    if (!rule)\n      throw new Error(`'data' property in invalid test case requires 'rule' to be provided at the top level`);\n    if (!clone.messageId)\n      throw new Error(`'data' property is provided but 'messageId' is missing`);\n    if (clone.message)\n      throw new Error(`'data' and 'message' properties are mutually exclusive`);\n    const template = rule.meta?.messages?.[clone.messageId];\n    if (!template)\n      throw new Error(`Message ID '${clone.messageId}' is not found in the rule meta`);\n    clone.message = interpolate(template, clone.data);\n    delete clone.data;\n  }\n  if (\"type\" in clone) {\n    clone.nodeType = clone.type;\n    delete clone.type;\n  }\n  return clone;\n}\nfunction getDefaultJavaScriptFilename(languageOptions, defaultFilenames) {\n  return languageOptions?.parserOptions?.ecmaFeatures?.jsx ? defaultFilenames.jsx : defaultFilenames.js;\n}\nfunction getDefaultTypeScriptFilename(languageOptions, defaultFilenames) {\n  const rootPath = (isUsingTypeScriptTypings(languageOptions) ? languageOptions?.parserOptions?.tsconfigRootDir : void 0) ?? process.cwd();\n  const filename = languageOptions?.parserOptions?.ecmaFeatures?.jsx ? defaultFilenames.tsx : defaultFilenames.ts;\n  return path.join(rootPath, filename);\n}\nfunction isUsingTypeScriptParser(languageOptions) {\n  return languageOptions?.parser?.meta?.name === \"typescript-eslint/parser\";\n}\nfunction isUsingTypeScriptTypings(languageOptions) {\n  return languageOptions?.parserOptions?.program || languageOptions?.parserOptions?.project || languageOptions?.parserOptions?.projectService;\n}\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nfunction getAugmentedNamespace(n) {\n  if (n.__esModule) return n;\n  var f = n.default;\n\tif (typeof f == \"function\") {\n\t\tvar a = function a () {\n\t\t\tif (this instanceof a) {\n        return Reflect.construct(f, arguments, this.constructor);\n\t\t\t}\n\t\t\treturn f.apply(this, arguments);\n\t\t};\n\t\ta.prototype = f.prototype;\n  } else a = {};\n  Object.defineProperty(a, '__esModule', {value: true});\n\tObject.keys(n).forEach(function (k) {\n\t\tvar d = Object.getOwnPropertyDescriptor(n, k);\n\t\tObject.defineProperty(a, k, d.get ? d : {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\treturn n[k];\n\t\t\t}\n\t\t});\n\t});\n\treturn a;\n}\n\nvar uri_all$1 = {exports: {}};\n\n/** @license URI.js v4.4.1 (c) 2011 Gary Court. License: http://github.com/garycourt/uri-js */\nvar uri_all = uri_all$1.exports;\n\nvar hasRequiredUri_all;\n\nfunction requireUri_all () {\n\tif (hasRequiredUri_all) return uri_all$1.exports;\n\thasRequiredUri_all = 1;\n\t(function (module, exports) {\n\t\t(function (global, factory) {\n\t\t\tfactory(exports) ;\n\t\t}(uri_all, (function (exports) {\n\t\tfunction merge() {\n\t\t    for (var _len = arguments.length, sets = Array(_len), _key = 0; _key < _len; _key++) {\n\t\t        sets[_key] = arguments[_key];\n\t\t    }\n\n\t\t    if (sets.length > 1) {\n\t\t        sets[0] = sets[0].slice(0, -1);\n\t\t        var xl = sets.length - 1;\n\t\t        for (var x = 1; x < xl; ++x) {\n\t\t            sets[x] = sets[x].slice(1, -1);\n\t\t        }\n\t\t        sets[xl] = sets[xl].slice(1);\n\t\t        return sets.join('');\n\t\t    } else {\n\t\t        return sets[0];\n\t\t    }\n\t\t}\n\t\tfunction subexp(str) {\n\t\t    return \"(?:\" + str + \")\";\n\t\t}\n\t\tfunction typeOf(o) {\n\t\t    return o === undefined ? \"undefined\" : o === null ? \"null\" : Object.prototype.toString.call(o).split(\" \").pop().split(\"]\").shift().toLowerCase();\n\t\t}\n\t\tfunction toUpperCase(str) {\n\t\t    return str.toUpperCase();\n\t\t}\n\t\tfunction toArray(obj) {\n\t\t    return obj !== undefined && obj !== null ? obj instanceof Array ? obj : typeof obj.length !== \"number\" || obj.split || obj.setInterval || obj.call ? [obj] : Array.prototype.slice.call(obj) : [];\n\t\t}\n\t\tfunction assign(target, source) {\n\t\t    var obj = target;\n\t\t    if (source) {\n\t\t        for (var key in source) {\n\t\t            obj[key] = source[key];\n\t\t        }\n\t\t    }\n\t\t    return obj;\n\t\t}\n\n\t\tfunction buildExps(isIRI) {\n\t\t    var ALPHA$$ = \"[A-Za-z]\",\n\t\t        DIGIT$$ = \"[0-9]\",\n\t\t        HEXDIG$$ = merge(DIGIT$$, \"[A-Fa-f]\"),\n\t\t        PCT_ENCODED$ = subexp(subexp(\"%[EFef]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%[89A-Fa-f]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%\" + HEXDIG$$ + HEXDIG$$)),\n\t\t        //expanded\n\t\t    GEN_DELIMS$$ = \"[\\\\:\\\\/\\\\?\\\\#\\\\[\\\\]\\\\@]\",\n\t\t        SUB_DELIMS$$ = \"[\\\\!\\\\$\\\\&\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\;\\\\=]\",\n\t\t        RESERVED$$ = merge(GEN_DELIMS$$, SUB_DELIMS$$),\n\t\t        UCSCHAR$$ = isIRI ? \"[\\\\xA0-\\\\u200D\\\\u2010-\\\\u2029\\\\u202F-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF]\" : \"[]\",\n\t\t        //subset, excludes bidi control characters\n\t\t    IPRIVATE$$ = isIRI ? \"[\\\\uE000-\\\\uF8FF]\" : \"[]\",\n\t\t        //subset\n\t\t    UNRESERVED$$ = merge(ALPHA$$, DIGIT$$, \"[\\\\-\\\\.\\\\_\\\\~]\", UCSCHAR$$);\n\t\t        subexp(ALPHA$$ + merge(ALPHA$$, DIGIT$$, \"[\\\\+\\\\-\\\\.]\") + \"*\");\n\t\t        subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:]\")) + \"*\");\n\t\t        var DEC_OCTET_RELAXED$ = subexp(subexp(\"25[0-5]\") + \"|\" + subexp(\"2[0-4]\" + DIGIT$$) + \"|\" + subexp(\"1\" + DIGIT$$ + DIGIT$$) + \"|\" + subexp(\"0?[1-9]\" + DIGIT$$) + \"|0?0?\" + DIGIT$$),\n\t\t        //relaxed parsing rules\n\t\t    IPV4ADDRESS$ = subexp(DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$),\n\t\t        H16$ = subexp(HEXDIG$$ + \"{1,4}\"),\n\t\t        LS32$ = subexp(subexp(H16$ + \"\\\\:\" + H16$) + \"|\" + IPV4ADDRESS$),\n\t\t        IPV6ADDRESS1$ = subexp(subexp(H16$ + \"\\\\:\") + \"{6}\" + LS32$),\n\t\t        //                           6( h16 \":\" ) ls32\n\t\t    IPV6ADDRESS2$ = subexp(\"\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{5}\" + LS32$),\n\t\t        //                      \"::\" 5( h16 \":\" ) ls32\n\t\t    IPV6ADDRESS3$ = subexp(subexp(H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{4}\" + LS32$),\n\t\t        //[               h16 ] \"::\" 4( h16 \":\" ) ls32\n\t\t    IPV6ADDRESS4$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,1}\" + H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{3}\" + LS32$),\n\t\t        //[ *1( h16 \":\" ) h16 ] \"::\" 3( h16 \":\" ) ls32\n\t\t    IPV6ADDRESS5$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,2}\" + H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{2}\" + LS32$),\n\t\t        //[ *2( h16 \":\" ) h16 ] \"::\" 2( h16 \":\" ) ls32\n\t\t    IPV6ADDRESS6$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,3}\" + H16$) + \"?\\\\:\\\\:\" + H16$ + \"\\\\:\" + LS32$),\n\t\t        //[ *3( h16 \":\" ) h16 ] \"::\"    h16 \":\"   ls32\n\t\t    IPV6ADDRESS7$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,4}\" + H16$) + \"?\\\\:\\\\:\" + LS32$),\n\t\t        //[ *4( h16 \":\" ) h16 ] \"::\"              ls32\n\t\t    IPV6ADDRESS8$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,5}\" + H16$) + \"?\\\\:\\\\:\" + H16$),\n\t\t        //[ *5( h16 \":\" ) h16 ] \"::\"              h16\n\t\t    IPV6ADDRESS9$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,6}\" + H16$) + \"?\\\\:\\\\:\"),\n\t\t        //[ *6( h16 \":\" ) h16 ] \"::\"\n\t\t    IPV6ADDRESS$ = subexp([IPV6ADDRESS1$, IPV6ADDRESS2$, IPV6ADDRESS3$, IPV6ADDRESS4$, IPV6ADDRESS5$, IPV6ADDRESS6$, IPV6ADDRESS7$, IPV6ADDRESS8$, IPV6ADDRESS9$].join(\"|\")),\n\t\t        ZONEID$ = subexp(subexp(UNRESERVED$$ + \"|\" + PCT_ENCODED$) + \"+\");\n\t\t        //RFC 6874, with relaxed parsing rules\n\t\t    subexp(\"[vV]\" + HEXDIG$$ + \"+\\\\.\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:]\") + \"+\");\n\t\t        //RFC 6874\n\t\t    subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$)) + \"*\");\n\t\t        var PCHAR$ = subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@]\"));\n\t\t        subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\@]\")) + \"+\");\n\t\t        subexp(subexp(PCHAR$ + \"|\" + merge(\"[\\\\/\\\\?]\", IPRIVATE$$)) + \"*\");\n\t\t    return {\n\t\t        NOT_SCHEME: new RegExp(merge(\"[^]\", ALPHA$$, DIGIT$$, \"[\\\\+\\\\-\\\\.]\"), \"g\"),\n\t\t        NOT_USERINFO: new RegExp(merge(\"[^\\\\%\\\\:]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\t        NOT_HOST: new RegExp(merge(\"[^\\\\%\\\\[\\\\]\\\\:]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\t        NOT_PATH: new RegExp(merge(\"[^\\\\%\\\\/\\\\:\\\\@]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\t        NOT_PATH_NOSCHEME: new RegExp(merge(\"[^\\\\%\\\\/\\\\@]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\t        NOT_QUERY: new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@\\\\/\\\\?]\", IPRIVATE$$), \"g\"),\n\t\t        NOT_FRAGMENT: new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@\\\\/\\\\?]\"), \"g\"),\n\t\t        ESCAPE: new RegExp(merge(\"[^]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\t        UNRESERVED: new RegExp(UNRESERVED$$, \"g\"),\n\t\t        OTHER_CHARS: new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, RESERVED$$), \"g\"),\n\t\t        PCT_ENCODED: new RegExp(PCT_ENCODED$, \"g\"),\n\t\t        IPV4ADDRESS: new RegExp(\"^(\" + IPV4ADDRESS$ + \")$\"),\n\t\t        IPV6ADDRESS: new RegExp(\"^\\\\[?(\" + IPV6ADDRESS$ + \")\" + subexp(subexp(\"\\\\%25|\\\\%(?!\" + HEXDIG$$ + \"{2})\") + \"(\" + ZONEID$ + \")\") + \"?\\\\]?$\") //RFC 6874, with relaxed parsing rules\n\t\t    };\n\t\t}\n\t\tvar URI_PROTOCOL = buildExps(false);\n\n\t\tvar IRI_PROTOCOL = buildExps(true);\n\n\t\tvar slicedToArray = function () {\n\t\t  function sliceIterator(arr, i) {\n\t\t    var _arr = [];\n\t\t    var _n = true;\n\t\t    var _d = false;\n\t\t    var _e = undefined;\n\n\t\t    try {\n\t\t      for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n\t\t        _arr.push(_s.value);\n\n\t\t        if (i && _arr.length === i) break;\n\t\t      }\n\t\t    } catch (err) {\n\t\t      _d = true;\n\t\t      _e = err;\n\t\t    } finally {\n\t\t      try {\n\t\t        if (!_n && _i[\"return\"]) _i[\"return\"]();\n\t\t      } finally {\n\t\t        if (_d) throw _e;\n\t\t      }\n\t\t    }\n\n\t\t    return _arr;\n\t\t  }\n\n\t\t  return function (arr, i) {\n\t\t    if (Array.isArray(arr)) {\n\t\t      return arr;\n\t\t    } else if (Symbol.iterator in Object(arr)) {\n\t\t      return sliceIterator(arr, i);\n\t\t    } else {\n\t\t      throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n\t\t    }\n\t\t  };\n\t\t}();\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\tvar toConsumableArray = function (arr) {\n\t\t  if (Array.isArray(arr)) {\n\t\t    for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n\t\t    return arr2;\n\t\t  } else {\n\t\t    return Array.from(arr);\n\t\t  }\n\t\t};\n\n\t\t/** Highest positive signed 32-bit float value */\n\n\t\tvar maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n\t\t/** Bootstring parameters */\n\t\tvar base = 36;\n\t\tvar tMin = 1;\n\t\tvar tMax = 26;\n\t\tvar skew = 38;\n\t\tvar damp = 700;\n\t\tvar initialBias = 72;\n\t\tvar initialN = 128; // 0x80\n\t\tvar delimiter = '-'; // '\\x2D'\n\n\t\t/** Regular expressions */\n\t\tvar regexPunycode = /^xn--/;\n\t\tvar regexNonASCII = /[^\\0-\\x7E]/; // non-ASCII chars\n\t\tvar regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n\t\t/** Error messages */\n\t\tvar errors = {\n\t\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t\t'invalid-input': 'Invalid input'\n\t\t};\n\n\t\t/** Convenience shortcuts */\n\t\tvar baseMinusTMin = base - tMin;\n\t\tvar floor = Math.floor;\n\t\tvar stringFromCharCode = String.fromCharCode;\n\n\t\t/*--------------------------------------------------------------------------*/\n\n\t\t/**\n\t\t * A generic error utility function.\n\t\t * @private\n\t\t * @param {String} type The error type.\n\t\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t\t */\n\t\tfunction error$1(type) {\n\t\t\tthrow new RangeError(errors[type]);\n\t\t}\n\n\t\t/**\n\t\t * A generic `Array#map` utility function.\n\t\t * @private\n\t\t * @param {Array} array The array to iterate over.\n\t\t * @param {Function} callback The function that gets called for every array\n\t\t * item.\n\t\t * @returns {Array} A new array of values returned by the callback function.\n\t\t */\n\t\tfunction map(array, fn) {\n\t\t\tvar result = [];\n\t\t\tvar length = array.length;\n\t\t\twhile (length--) {\n\t\t\t\tresult[length] = fn(array[length]);\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\n\t\t/**\n\t\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t\t * addresses.\n\t\t * @private\n\t\t * @param {String} domain The domain name or email address.\n\t\t * @param {Function} callback The function that gets called for every\n\t\t * character.\n\t\t * @returns {Array} A new string of characters returned by the callback\n\t\t * function.\n\t\t */\n\t\tfunction mapDomain(string, fn) {\n\t\t\tvar parts = string.split('@');\n\t\t\tvar result = '';\n\t\t\tif (parts.length > 1) {\n\t\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\t\tresult = parts[0] + '@';\n\t\t\t\tstring = parts[1];\n\t\t\t}\n\t\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\t\tvar labels = string.split('.');\n\t\t\tvar encoded = map(labels, fn).join('.');\n\t\t\treturn result + encoded;\n\t\t}\n\n\t\t/**\n\t\t * Creates an array containing the numeric code points of each Unicode\n\t\t * character in the string. While JavaScript uses UCS-2 internally,\n\t\t * this function will convert a pair of surrogate halves (each of which\n\t\t * UCS-2 exposes as separate characters) into a single code point,\n\t\t * matching UTF-16.\n\t\t * @see `punycode.ucs2.encode`\n\t\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t\t * @memberOf punycode.ucs2\n\t\t * @name decode\n\t\t * @param {String} string The Unicode input string (UCS-2).\n\t\t * @returns {Array} The new array of code points.\n\t\t */\n\t\tfunction ucs2decode(string) {\n\t\t\tvar output = [];\n\t\t\tvar counter = 0;\n\t\t\tvar length = string.length;\n\t\t\twhile (counter < length) {\n\t\t\t\tvar value = string.charCodeAt(counter++);\n\t\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\t\t\tvar extra = string.charCodeAt(counter++);\n\t\t\t\t\tif ((extra & 0xFC00) == 0xDC00) {\n\t\t\t\t\t\t// Low surrogate.\n\t\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\t\t\toutput.push(value);\n\t\t\t\t\t\tcounter--;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\toutput.push(value);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\n\t\t/**\n\t\t * Creates a string based on an array of numeric code points.\n\t\t * @see `punycode.ucs2.decode`\n\t\t * @memberOf punycode.ucs2\n\t\t * @name encode\n\t\t * @param {Array} codePoints The array of numeric code points.\n\t\t * @returns {String} The new Unicode string (UCS-2).\n\t\t */\n\t\tvar ucs2encode = function ucs2encode(array) {\n\t\t\treturn String.fromCodePoint.apply(String, toConsumableArray(array));\n\t\t};\n\n\t\t/**\n\t\t * Converts a basic code point into a digit/integer.\n\t\t * @see `digitToBasic()`\n\t\t * @private\n\t\t * @param {Number} codePoint The basic numeric code point value.\n\t\t * @returns {Number} The numeric value of a basic code point (for use in\n\t\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t\t * the code point does not represent a value.\n\t\t */\n\t\tvar basicToDigit = function basicToDigit(codePoint) {\n\t\t\tif (codePoint - 0x30 < 0x0A) {\n\t\t\t\treturn codePoint - 0x16;\n\t\t\t}\n\t\t\tif (codePoint - 0x41 < 0x1A) {\n\t\t\t\treturn codePoint - 0x41;\n\t\t\t}\n\t\t\tif (codePoint - 0x61 < 0x1A) {\n\t\t\t\treturn codePoint - 0x61;\n\t\t\t}\n\t\t\treturn base;\n\t\t};\n\n\t\t/**\n\t\t * Converts a digit/integer into a basic code point.\n\t\t * @see `basicToDigit()`\n\t\t * @private\n\t\t * @param {Number} digit The numeric value of a basic code point.\n\t\t * @returns {Number} The basic code point whose value (when used for\n\t\t * representing integers) is `digit`, which needs to be in the range\n\t\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t\t * used; else, the lowercase form is used. The behavior is undefined\n\t\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t\t */\n\t\tvar digitToBasic = function digitToBasic(digit, flag) {\n\t\t\t//  0..25 map to ASCII a..z or A..Z\n\t\t\t// 26..35 map to ASCII 0..9\n\t\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t\t};\n\n\t\t/**\n\t\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t\t * @private\n\t\t */\n\t\tvar adapt = function adapt(delta, numPoints, firstTime) {\n\t\t\tvar k = 0;\n\t\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\t\tdelta += floor(delta / numPoints);\n\t\t\tfor (; /* no initialization */delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t\t}\n\t\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t\t};\n\n\t\t/**\n\t\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t\t * symbols.\n\t\t * @memberOf punycode\n\t\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t\t * @returns {String} The resulting string of Unicode symbols.\n\t\t */\n\t\tvar decode = function decode(input) {\n\t\t\t// Don't use UCS-2.\n\t\t\tvar output = [];\n\t\t\tvar inputLength = input.length;\n\t\t\tvar i = 0;\n\t\t\tvar n = initialN;\n\t\t\tvar bias = initialBias;\n\n\t\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t\t// the first basic code points to the output.\n\n\t\t\tvar basic = input.lastIndexOf(delimiter);\n\t\t\tif (basic < 0) {\n\t\t\t\tbasic = 0;\n\t\t\t}\n\n\t\t\tfor (var j = 0; j < basic; ++j) {\n\t\t\t\t// if it's not a basic code point\n\t\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\t\terror$1('not-basic');\n\t\t\t\t}\n\t\t\t\toutput.push(input.charCodeAt(j));\n\t\t\t}\n\n\t\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t\t// points were copied; start at the beginning otherwise.\n\n\t\t\tfor (var index = basic > 0 ? basic + 1 : 0; index < inputLength;) /* no final expression */{\n\n\t\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t\t// value at the end to obtain `delta`.\n\t\t\t\tvar oldi = i;\n\t\t\t\tfor (var w = 1, k = base;; /* no condition */k += base) {\n\n\t\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\t\terror$1('invalid-input');\n\t\t\t\t\t}\n\n\t\t\t\t\tvar digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\t\terror$1('overflow');\n\t\t\t\t\t}\n\n\t\t\t\t\ti += digit * w;\n\t\t\t\t\tvar t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;\n\n\t\t\t\t\tif (digit < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar baseMinusT = base - t;\n\t\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\t\terror$1('overflow');\n\t\t\t\t\t}\n\n\t\t\t\t\tw *= baseMinusT;\n\t\t\t\t}\n\n\t\t\t\tvar out = output.length + 1;\n\t\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\t\terror$1('overflow');\n\t\t\t\t}\n\n\t\t\t\tn += floor(i / out);\n\t\t\t\ti %= out;\n\n\t\t\t\t// Insert `n` at position `i` of the output.\n\t\t\t\toutput.splice(i++, 0, n);\n\t\t\t}\n\n\t\t\treturn String.fromCodePoint.apply(String, output);\n\t\t};\n\n\t\t/**\n\t\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t\t * Punycode string of ASCII-only symbols.\n\t\t * @memberOf punycode\n\t\t * @param {String} input The string of Unicode symbols.\n\t\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t\t */\n\t\tvar encode = function encode(input) {\n\t\t\tvar output = [];\n\n\t\t\t// Convert the input in UCS-2 to an array of Unicode code points.\n\t\t\tinput = ucs2decode(input);\n\n\t\t\t// Cache the length.\n\t\t\tvar inputLength = input.length;\n\n\t\t\t// Initialize the state.\n\t\t\tvar n = initialN;\n\t\t\tvar delta = 0;\n\t\t\tvar bias = initialBias;\n\n\t\t\t// Handle the basic code points.\n\t\t\tvar _iteratorNormalCompletion = true;\n\t\t\tvar _didIteratorError = false;\n\t\t\tvar _iteratorError = undefined;\n\n\t\t\ttry {\n\t\t\t\tfor (var _iterator = input[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n\t\t\t\t\tvar _currentValue2 = _step.value;\n\n\t\t\t\t\tif (_currentValue2 < 0x80) {\n\t\t\t\t\t\toutput.push(stringFromCharCode(_currentValue2));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\t_didIteratorError = true;\n\t\t\t\t_iteratorError = err;\n\t\t\t} finally {\n\t\t\t\ttry {\n\t\t\t\t\tif (!_iteratorNormalCompletion && _iterator.return) {\n\t\t\t\t\t\t_iterator.return();\n\t\t\t\t\t}\n\t\t\t\t} finally {\n\t\t\t\t\tif (_didIteratorError) {\n\t\t\t\t\t\tthrow _iteratorError;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar basicLength = output.length;\n\t\t\tvar handledCPCount = basicLength;\n\n\t\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t\t// `basicLength` is the number of basic code points.\n\n\t\t\t// Finish the basic string with a delimiter unless it's empty.\n\t\t\tif (basicLength) {\n\t\t\t\toutput.push(delimiter);\n\t\t\t}\n\n\t\t\t// Main encoding loop:\n\t\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t\t// larger one:\n\t\t\t\tvar m = maxInt;\n\t\t\t\tvar _iteratorNormalCompletion2 = true;\n\t\t\t\tvar _didIteratorError2 = false;\n\t\t\t\tvar _iteratorError2 = undefined;\n\n\t\t\t\ttry {\n\t\t\t\t\tfor (var _iterator2 = input[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n\t\t\t\t\t\tvar currentValue = _step2.value;\n\n\t\t\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\t\t\tm = currentValue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t\t\t\t// but guard against overflow.\n\t\t\t\t} catch (err) {\n\t\t\t\t\t_didIteratorError2 = true;\n\t\t\t\t\t_iteratorError2 = err;\n\t\t\t\t} finally {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (!_iteratorNormalCompletion2 && _iterator2.return) {\n\t\t\t\t\t\t\t_iterator2.return();\n\t\t\t\t\t\t}\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif (_didIteratorError2) {\n\t\t\t\t\t\t\tthrow _iteratorError2;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar handledCPCountPlusOne = handledCPCount + 1;\n\t\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\t\terror$1('overflow');\n\t\t\t\t}\n\n\t\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\t\tn = m;\n\n\t\t\t\tvar _iteratorNormalCompletion3 = true;\n\t\t\t\tvar _didIteratorError3 = false;\n\t\t\t\tvar _iteratorError3 = undefined;\n\n\t\t\t\ttry {\n\t\t\t\t\tfor (var _iterator3 = input[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n\t\t\t\t\t\tvar _currentValue = _step3.value;\n\n\t\t\t\t\t\tif (_currentValue < n && ++delta > maxInt) {\n\t\t\t\t\t\t\terror$1('overflow');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (_currentValue == n) {\n\t\t\t\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\t\t\t\tvar q = delta;\n\t\t\t\t\t\t\tfor (var k = base;; /* no condition */k += base) {\n\t\t\t\t\t\t\t\tvar t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;\n\t\t\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tvar qMinusT = q - t;\n\t\t\t\t\t\t\t\tvar baseMinusT = base - t;\n\t\t\t\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)));\n\t\t\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\t\t\tdelta = 0;\n\t\t\t\t\t\t\t++handledCPCount;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} catch (err) {\n\t\t\t\t\t_didIteratorError3 = true;\n\t\t\t\t\t_iteratorError3 = err;\n\t\t\t\t} finally {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (!_iteratorNormalCompletion3 && _iterator3.return) {\n\t\t\t\t\t\t\t_iterator3.return();\n\t\t\t\t\t\t}\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif (_didIteratorError3) {\n\t\t\t\t\t\t\tthrow _iteratorError3;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t++delta;\n\t\t\t\t++n;\n\t\t\t}\n\t\t\treturn output.join('');\n\t\t};\n\n\t\t/**\n\t\t * Converts a Punycode string representing a domain name or an email address\n\t\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t\t * it doesn't matter if you call it on a string that has already been\n\t\t * converted to Unicode.\n\t\t * @memberOf punycode\n\t\t * @param {String} input The Punycoded domain name or email address to\n\t\t * convert to Unicode.\n\t\t * @returns {String} The Unicode representation of the given Punycode\n\t\t * string.\n\t\t */\n\t\tvar toUnicode = function toUnicode(input) {\n\t\t\treturn mapDomain(input, function (string) {\n\t\t\t\treturn regexPunycode.test(string) ? decode(string.slice(4).toLowerCase()) : string;\n\t\t\t});\n\t\t};\n\n\t\t/**\n\t\t * Converts a Unicode string representing a domain name or an email address to\n\t\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t\t * ASCII.\n\t\t * @memberOf punycode\n\t\t * @param {String} input The domain name or email address to convert, as a\n\t\t * Unicode string.\n\t\t * @returns {String} The Punycode representation of the given domain name or\n\t\t * email address.\n\t\t */\n\t\tvar toASCII = function toASCII(input) {\n\t\t\treturn mapDomain(input, function (string) {\n\t\t\t\treturn regexNonASCII.test(string) ? 'xn--' + encode(string) : string;\n\t\t\t});\n\t\t};\n\n\t\t/*--------------------------------------------------------------------------*/\n\n\t\t/** Define the public API */\n\t\tvar punycode = {\n\t\t\t/**\n\t\t  * A string representing the current Punycode.js version number.\n\t\t  * @memberOf punycode\n\t\t  * @type String\n\t\t  */\n\t\t\t'version': '2.1.0',\n\t\t\t/**\n\t\t  * An object of methods to convert from JavaScript's internal character\n\t\t  * representation (UCS-2) to Unicode code points, and back.\n\t\t  * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t\t  * @memberOf punycode\n\t\t  * @type Object\n\t\t  */\n\t\t\t'ucs2': {\n\t\t\t\t'decode': ucs2decode,\n\t\t\t\t'encode': ucs2encode\n\t\t\t},\n\t\t\t'decode': decode,\n\t\t\t'encode': encode,\n\t\t\t'toASCII': toASCII,\n\t\t\t'toUnicode': toUnicode\n\t\t};\n\n\t\t/**\n\t\t * URI.js\n\t\t *\n\t\t * @fileoverview An RFC 3986 compliant, scheme extendable URI parsing/validating/resolving library for JavaScript.\n\t\t * @author <a href=\"mailto:gary.court@gmail.com\">Gary Court</a>\n\t\t * @see http://github.com/garycourt/uri-js\n\t\t */\n\t\t/**\n\t\t * Copyright 2011 Gary Court. All rights reserved.\n\t\t *\n\t\t * Redistribution and use in source and binary forms, with or without modification, are\n\t\t * permitted provided that the following conditions are met:\n\t\t *\n\t\t *    1. Redistributions of source code must retain the above copyright notice, this list of\n\t\t *       conditions and the following disclaimer.\n\t\t *\n\t\t *    2. Redistributions in binary form must reproduce the above copyright notice, this list\n\t\t *       of conditions and the following disclaimer in the documentation and/or other materials\n\t\t *       provided with the distribution.\n\t\t *\n\t\t * THIS SOFTWARE IS PROVIDED BY GARY COURT ``AS IS'' AND ANY EXPRESS OR IMPLIED\n\t\t * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n\t\t * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GARY COURT OR\n\t\t * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n\t\t * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n\t\t * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\n\t\t * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n\t\t * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF\n\t\t * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t\t *\n\t\t * The views and conclusions contained in the software and documentation are those of the\n\t\t * authors and should not be interpreted as representing official policies, either expressed\n\t\t * or implied, of Gary Court.\n\t\t */\n\t\tvar SCHEMES = {};\n\t\tfunction pctEncChar(chr) {\n\t\t    var c = chr.charCodeAt(0);\n\t\t    var e = void 0;\n\t\t    if (c < 16) e = \"%0\" + c.toString(16).toUpperCase();else if (c < 128) e = \"%\" + c.toString(16).toUpperCase();else if (c < 2048) e = \"%\" + (c >> 6 | 192).toString(16).toUpperCase() + \"%\" + (c & 63 | 128).toString(16).toUpperCase();else e = \"%\" + (c >> 12 | 224).toString(16).toUpperCase() + \"%\" + (c >> 6 & 63 | 128).toString(16).toUpperCase() + \"%\" + (c & 63 | 128).toString(16).toUpperCase();\n\t\t    return e;\n\t\t}\n\t\tfunction pctDecChars(str) {\n\t\t    var newStr = \"\";\n\t\t    var i = 0;\n\t\t    var il = str.length;\n\t\t    while (i < il) {\n\t\t        var c = parseInt(str.substr(i + 1, 2), 16);\n\t\t        if (c < 128) {\n\t\t            newStr += String.fromCharCode(c);\n\t\t            i += 3;\n\t\t        } else if (c >= 194 && c < 224) {\n\t\t            if (il - i >= 6) {\n\t\t                var c2 = parseInt(str.substr(i + 4, 2), 16);\n\t\t                newStr += String.fromCharCode((c & 31) << 6 | c2 & 63);\n\t\t            } else {\n\t\t                newStr += str.substr(i, 6);\n\t\t            }\n\t\t            i += 6;\n\t\t        } else if (c >= 224) {\n\t\t            if (il - i >= 9) {\n\t\t                var _c = parseInt(str.substr(i + 4, 2), 16);\n\t\t                var c3 = parseInt(str.substr(i + 7, 2), 16);\n\t\t                newStr += String.fromCharCode((c & 15) << 12 | (_c & 63) << 6 | c3 & 63);\n\t\t            } else {\n\t\t                newStr += str.substr(i, 9);\n\t\t            }\n\t\t            i += 9;\n\t\t        } else {\n\t\t            newStr += str.substr(i, 3);\n\t\t            i += 3;\n\t\t        }\n\t\t    }\n\t\t    return newStr;\n\t\t}\n\t\tfunction _normalizeComponentEncoding(components, protocol) {\n\t\t    function decodeUnreserved(str) {\n\t\t        var decStr = pctDecChars(str);\n\t\t        return !decStr.match(protocol.UNRESERVED) ? str : decStr;\n\t\t    }\n\t\t    if (components.scheme) components.scheme = String(components.scheme).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_SCHEME, \"\");\n\t\t    if (components.userinfo !== undefined) components.userinfo = String(components.userinfo).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_USERINFO, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\t\t    if (components.host !== undefined) components.host = String(components.host).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_HOST, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\t\t    if (components.path !== undefined) components.path = String(components.path).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(components.scheme ? protocol.NOT_PATH : protocol.NOT_PATH_NOSCHEME, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\t\t    if (components.query !== undefined) components.query = String(components.query).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_QUERY, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\t\t    if (components.fragment !== undefined) components.fragment = String(components.fragment).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_FRAGMENT, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\t\t    return components;\n\t\t}\n\n\t\tfunction _stripLeadingZeros(str) {\n\t\t    return str.replace(/^0*(.*)/, \"$1\") || \"0\";\n\t\t}\n\t\tfunction _normalizeIPv4(host, protocol) {\n\t\t    var matches = host.match(protocol.IPV4ADDRESS) || [];\n\n\t\t    var _matches = slicedToArray(matches, 2),\n\t\t        address = _matches[1];\n\n\t\t    if (address) {\n\t\t        return address.split(\".\").map(_stripLeadingZeros).join(\".\");\n\t\t    } else {\n\t\t        return host;\n\t\t    }\n\t\t}\n\t\tfunction _normalizeIPv6(host, protocol) {\n\t\t    var matches = host.match(protocol.IPV6ADDRESS) || [];\n\n\t\t    var _matches2 = slicedToArray(matches, 3),\n\t\t        address = _matches2[1],\n\t\t        zone = _matches2[2];\n\n\t\t    if (address) {\n\t\t        var _address$toLowerCase$ = address.toLowerCase().split('::').reverse(),\n\t\t            _address$toLowerCase$2 = slicedToArray(_address$toLowerCase$, 2),\n\t\t            last = _address$toLowerCase$2[0],\n\t\t            first = _address$toLowerCase$2[1];\n\n\t\t        var firstFields = first ? first.split(\":\").map(_stripLeadingZeros) : [];\n\t\t        var lastFields = last.split(\":\").map(_stripLeadingZeros);\n\t\t        var isLastFieldIPv4Address = protocol.IPV4ADDRESS.test(lastFields[lastFields.length - 1]);\n\t\t        var fieldCount = isLastFieldIPv4Address ? 7 : 8;\n\t\t        var lastFieldsStart = lastFields.length - fieldCount;\n\t\t        var fields = Array(fieldCount);\n\t\t        for (var x = 0; x < fieldCount; ++x) {\n\t\t            fields[x] = firstFields[x] || lastFields[lastFieldsStart + x] || '';\n\t\t        }\n\t\t        if (isLastFieldIPv4Address) {\n\t\t            fields[fieldCount - 1] = _normalizeIPv4(fields[fieldCount - 1], protocol);\n\t\t        }\n\t\t        var allZeroFields = fields.reduce(function (acc, field, index) {\n\t\t            if (!field || field === \"0\") {\n\t\t                var lastLongest = acc[acc.length - 1];\n\t\t                if (lastLongest && lastLongest.index + lastLongest.length === index) {\n\t\t                    lastLongest.length++;\n\t\t                } else {\n\t\t                    acc.push({ index: index, length: 1 });\n\t\t                }\n\t\t            }\n\t\t            return acc;\n\t\t        }, []);\n\t\t        var longestZeroFields = allZeroFields.sort(function (a, b) {\n\t\t            return b.length - a.length;\n\t\t        })[0];\n\t\t        var newHost = void 0;\n\t\t        if (longestZeroFields && longestZeroFields.length > 1) {\n\t\t            var newFirst = fields.slice(0, longestZeroFields.index);\n\t\t            var newLast = fields.slice(longestZeroFields.index + longestZeroFields.length);\n\t\t            newHost = newFirst.join(\":\") + \"::\" + newLast.join(\":\");\n\t\t        } else {\n\t\t            newHost = fields.join(\":\");\n\t\t        }\n\t\t        if (zone) {\n\t\t            newHost += \"%\" + zone;\n\t\t        }\n\t\t        return newHost;\n\t\t    } else {\n\t\t        return host;\n\t\t    }\n\t\t}\n\t\tvar URI_PARSE = /^(?:([^:\\/?#]+):)?(?:\\/\\/((?:([^\\/?#@]*)@)?(\\[[^\\/?#\\]]+\\]|[^\\/?#:]*)(?:\\:(\\d*))?))?([^?#]*)(?:\\?([^#]*))?(?:#((?:.|\\n|\\r)*))?/i;\n\t\tvar NO_MATCH_IS_UNDEFINED = \"\".match(/(){0}/)[1] === undefined;\n\t\tfunction parse(uriString) {\n\t\t    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\t    var components = {};\n\t\t    var protocol = options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL;\n\t\t    if (options.reference === \"suffix\") uriString = (options.scheme ? options.scheme + \":\" : \"\") + \"//\" + uriString;\n\t\t    var matches = uriString.match(URI_PARSE);\n\t\t    if (matches) {\n\t\t        if (NO_MATCH_IS_UNDEFINED) {\n\t\t            //store each component\n\t\t            components.scheme = matches[1];\n\t\t            components.userinfo = matches[3];\n\t\t            components.host = matches[4];\n\t\t            components.port = parseInt(matches[5], 10);\n\t\t            components.path = matches[6] || \"\";\n\t\t            components.query = matches[7];\n\t\t            components.fragment = matches[8];\n\t\t            //fix port number\n\t\t            if (isNaN(components.port)) {\n\t\t                components.port = matches[5];\n\t\t            }\n\t\t        } else {\n\t\t            //IE FIX for improper RegExp matching\n\t\t            //store each component\n\t\t            components.scheme = matches[1] || undefined;\n\t\t            components.userinfo = uriString.indexOf(\"@\") !== -1 ? matches[3] : undefined;\n\t\t            components.host = uriString.indexOf(\"//\") !== -1 ? matches[4] : undefined;\n\t\t            components.port = parseInt(matches[5], 10);\n\t\t            components.path = matches[6] || \"\";\n\t\t            components.query = uriString.indexOf(\"?\") !== -1 ? matches[7] : undefined;\n\t\t            components.fragment = uriString.indexOf(\"#\") !== -1 ? matches[8] : undefined;\n\t\t            //fix port number\n\t\t            if (isNaN(components.port)) {\n\t\t                components.port = uriString.match(/\\/\\/(?:.|\\n)*\\:(?:\\/|\\?|\\#|$)/) ? matches[4] : undefined;\n\t\t            }\n\t\t        }\n\t\t        if (components.host) {\n\t\t            //normalize IP hosts\n\t\t            components.host = _normalizeIPv6(_normalizeIPv4(components.host, protocol), protocol);\n\t\t        }\n\t\t        //determine reference type\n\t\t        if (components.scheme === undefined && components.userinfo === undefined && components.host === undefined && components.port === undefined && !components.path && components.query === undefined) {\n\t\t            components.reference = \"same-document\";\n\t\t        } else if (components.scheme === undefined) {\n\t\t            components.reference = \"relative\";\n\t\t        } else if (components.fragment === undefined) {\n\t\t            components.reference = \"absolute\";\n\t\t        } else {\n\t\t            components.reference = \"uri\";\n\t\t        }\n\t\t        //check for reference errors\n\t\t        if (options.reference && options.reference !== \"suffix\" && options.reference !== components.reference) {\n\t\t            components.error = components.error || \"URI is not a \" + options.reference + \" reference.\";\n\t\t        }\n\t\t        //find scheme handler\n\t\t        var schemeHandler = SCHEMES[(options.scheme || components.scheme || \"\").toLowerCase()];\n\t\t        //check if scheme can't handle IRIs\n\t\t        if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {\n\t\t            //if host component is a domain name\n\t\t            if (components.host && (options.domainHost || schemeHandler && schemeHandler.domainHost)) {\n\t\t                //convert Unicode IDN -> ASCII IDN\n\t\t                try {\n\t\t                    components.host = punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase());\n\t\t                } catch (e) {\n\t\t                    components.error = components.error || \"Host's domain name can not be converted to ASCII via punycode: \" + e;\n\t\t                }\n\t\t            }\n\t\t            //convert IRI -> URI\n\t\t            _normalizeComponentEncoding(components, URI_PROTOCOL);\n\t\t        } else {\n\t\t            //normalize encodings\n\t\t            _normalizeComponentEncoding(components, protocol);\n\t\t        }\n\t\t        //perform scheme specific parsing\n\t\t        if (schemeHandler && schemeHandler.parse) {\n\t\t            schemeHandler.parse(components, options);\n\t\t        }\n\t\t    } else {\n\t\t        components.error = components.error || \"URI can not be parsed.\";\n\t\t    }\n\t\t    return components;\n\t\t}\n\n\t\tfunction _recomposeAuthority(components, options) {\n\t\t    var protocol = options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL;\n\t\t    var uriTokens = [];\n\t\t    if (components.userinfo !== undefined) {\n\t\t        uriTokens.push(components.userinfo);\n\t\t        uriTokens.push(\"@\");\n\t\t    }\n\t\t    if (components.host !== undefined) {\n\t\t        //normalize IP hosts, add brackets and escape zone separator for IPv6\n\t\t        uriTokens.push(_normalizeIPv6(_normalizeIPv4(String(components.host), protocol), protocol).replace(protocol.IPV6ADDRESS, function (_, $1, $2) {\n\t\t            return \"[\" + $1 + ($2 ? \"%25\" + $2 : \"\") + \"]\";\n\t\t        }));\n\t\t    }\n\t\t    if (typeof components.port === \"number\" || typeof components.port === \"string\") {\n\t\t        uriTokens.push(\":\");\n\t\t        uriTokens.push(String(components.port));\n\t\t    }\n\t\t    return uriTokens.length ? uriTokens.join(\"\") : undefined;\n\t\t}\n\n\t\tvar RDS1 = /^\\.\\.?\\//;\n\t\tvar RDS2 = /^\\/\\.(\\/|$)/;\n\t\tvar RDS3 = /^\\/\\.\\.(\\/|$)/;\n\t\tvar RDS5 = /^\\/?(?:.|\\n)*?(?=\\/|$)/;\n\t\tfunction removeDotSegments(input) {\n\t\t    var output = [];\n\t\t    while (input.length) {\n\t\t        if (input.match(RDS1)) {\n\t\t            input = input.replace(RDS1, \"\");\n\t\t        } else if (input.match(RDS2)) {\n\t\t            input = input.replace(RDS2, \"/\");\n\t\t        } else if (input.match(RDS3)) {\n\t\t            input = input.replace(RDS3, \"/\");\n\t\t            output.pop();\n\t\t        } else if (input === \".\" || input === \"..\") {\n\t\t            input = \"\";\n\t\t        } else {\n\t\t            var im = input.match(RDS5);\n\t\t            if (im) {\n\t\t                var s = im[0];\n\t\t                input = input.slice(s.length);\n\t\t                output.push(s);\n\t\t            } else {\n\t\t                throw new Error(\"Unexpected dot segment condition\");\n\t\t            }\n\t\t        }\n\t\t    }\n\t\t    return output.join(\"\");\n\t\t}\n\n\t\tfunction serialize(components) {\n\t\t    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\t    var protocol = options.iri ? IRI_PROTOCOL : URI_PROTOCOL;\n\t\t    var uriTokens = [];\n\t\t    //find scheme handler\n\t\t    var schemeHandler = SCHEMES[(options.scheme || components.scheme || \"\").toLowerCase()];\n\t\t    //perform scheme specific serialization\n\t\t    if (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(components, options);\n\t\t    if (components.host) {\n\t\t        //if host component is an IPv6 address\n\t\t        if (protocol.IPV6ADDRESS.test(components.host)) ;\n\t\t        //TODO: normalize IPv6 address as per RFC 5952\n\n\t\t        //if host component is a domain name\n\t\t        else if (options.domainHost || schemeHandler && schemeHandler.domainHost) {\n\t\t                //convert IDN via punycode\n\t\t                try {\n\t\t                    components.host = !options.iri ? punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase()) : punycode.toUnicode(components.host);\n\t\t                } catch (e) {\n\t\t                    components.error = components.error || \"Host's domain name can not be converted to \" + (!options.iri ? \"ASCII\" : \"Unicode\") + \" via punycode: \" + e;\n\t\t                }\n\t\t            }\n\t\t    }\n\t\t    //normalize encoding\n\t\t    _normalizeComponentEncoding(components, protocol);\n\t\t    if (options.reference !== \"suffix\" && components.scheme) {\n\t\t        uriTokens.push(components.scheme);\n\t\t        uriTokens.push(\":\");\n\t\t    }\n\t\t    var authority = _recomposeAuthority(components, options);\n\t\t    if (authority !== undefined) {\n\t\t        if (options.reference !== \"suffix\") {\n\t\t            uriTokens.push(\"//\");\n\t\t        }\n\t\t        uriTokens.push(authority);\n\t\t        if (components.path && components.path.charAt(0) !== \"/\") {\n\t\t            uriTokens.push(\"/\");\n\t\t        }\n\t\t    }\n\t\t    if (components.path !== undefined) {\n\t\t        var s = components.path;\n\t\t        if (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {\n\t\t            s = removeDotSegments(s);\n\t\t        }\n\t\t        if (authority === undefined) {\n\t\t            s = s.replace(/^\\/\\//, \"/%2F\"); //don't allow the path to start with \"//\"\n\t\t        }\n\t\t        uriTokens.push(s);\n\t\t    }\n\t\t    if (components.query !== undefined) {\n\t\t        uriTokens.push(\"?\");\n\t\t        uriTokens.push(components.query);\n\t\t    }\n\t\t    if (components.fragment !== undefined) {\n\t\t        uriTokens.push(\"#\");\n\t\t        uriTokens.push(components.fragment);\n\t\t    }\n\t\t    return uriTokens.join(\"\"); //merge tokens into a string\n\t\t}\n\n\t\tfunction resolveComponents(base, relative) {\n\t\t    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\t\t    var skipNormalization = arguments[3];\n\n\t\t    var target = {};\n\t\t    if (!skipNormalization) {\n\t\t        base = parse(serialize(base, options), options); //normalize base components\n\t\t        relative = parse(serialize(relative, options), options); //normalize relative components\n\t\t    }\n\t\t    options = options || {};\n\t\t    if (!options.tolerant && relative.scheme) {\n\t\t        target.scheme = relative.scheme;\n\t\t        //target.authority = relative.authority;\n\t\t        target.userinfo = relative.userinfo;\n\t\t        target.host = relative.host;\n\t\t        target.port = relative.port;\n\t\t        target.path = removeDotSegments(relative.path || \"\");\n\t\t        target.query = relative.query;\n\t\t    } else {\n\t\t        if (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) {\n\t\t            //target.authority = relative.authority;\n\t\t            target.userinfo = relative.userinfo;\n\t\t            target.host = relative.host;\n\t\t            target.port = relative.port;\n\t\t            target.path = removeDotSegments(relative.path || \"\");\n\t\t            target.query = relative.query;\n\t\t        } else {\n\t\t            if (!relative.path) {\n\t\t                target.path = base.path;\n\t\t                if (relative.query !== undefined) {\n\t\t                    target.query = relative.query;\n\t\t                } else {\n\t\t                    target.query = base.query;\n\t\t                }\n\t\t            } else {\n\t\t                if (relative.path.charAt(0) === \"/\") {\n\t\t                    target.path = removeDotSegments(relative.path);\n\t\t                } else {\n\t\t                    if ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) {\n\t\t                        target.path = \"/\" + relative.path;\n\t\t                    } else if (!base.path) {\n\t\t                        target.path = relative.path;\n\t\t                    } else {\n\t\t                        target.path = base.path.slice(0, base.path.lastIndexOf(\"/\") + 1) + relative.path;\n\t\t                    }\n\t\t                    target.path = removeDotSegments(target.path);\n\t\t                }\n\t\t                target.query = relative.query;\n\t\t            }\n\t\t            //target.authority = base.authority;\n\t\t            target.userinfo = base.userinfo;\n\t\t            target.host = base.host;\n\t\t            target.port = base.port;\n\t\t        }\n\t\t        target.scheme = base.scheme;\n\t\t    }\n\t\t    target.fragment = relative.fragment;\n\t\t    return target;\n\t\t}\n\n\t\tfunction resolve(baseURI, relativeURI, options) {\n\t\t    var schemelessOptions = assign({ scheme: 'null' }, options);\n\t\t    return serialize(resolveComponents(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true), schemelessOptions);\n\t\t}\n\n\t\tfunction normalize(uri, options) {\n\t\t    if (typeof uri === \"string\") {\n\t\t        uri = serialize(parse(uri, options), options);\n\t\t    } else if (typeOf(uri) === \"object\") {\n\t\t        uri = parse(serialize(uri, options), options);\n\t\t    }\n\t\t    return uri;\n\t\t}\n\n\t\tfunction equal(uriA, uriB, options) {\n\t\t    if (typeof uriA === \"string\") {\n\t\t        uriA = serialize(parse(uriA, options), options);\n\t\t    } else if (typeOf(uriA) === \"object\") {\n\t\t        uriA = serialize(uriA, options);\n\t\t    }\n\t\t    if (typeof uriB === \"string\") {\n\t\t        uriB = serialize(parse(uriB, options), options);\n\t\t    } else if (typeOf(uriB) === \"object\") {\n\t\t        uriB = serialize(uriB, options);\n\t\t    }\n\t\t    return uriA === uriB;\n\t\t}\n\n\t\tfunction escapeComponent(str, options) {\n\t\t    return str && str.toString().replace(!options || !options.iri ? URI_PROTOCOL.ESCAPE : IRI_PROTOCOL.ESCAPE, pctEncChar);\n\t\t}\n\n\t\tfunction unescapeComponent(str, options) {\n\t\t    return str && str.toString().replace(!options || !options.iri ? URI_PROTOCOL.PCT_ENCODED : IRI_PROTOCOL.PCT_ENCODED, pctDecChars);\n\t\t}\n\n\t\tvar handler = {\n\t\t    scheme: \"http\",\n\t\t    domainHost: true,\n\t\t    parse: function parse(components, options) {\n\t\t        //report missing host\n\t\t        if (!components.host) {\n\t\t            components.error = components.error || \"HTTP URIs must have a host.\";\n\t\t        }\n\t\t        return components;\n\t\t    },\n\t\t    serialize: function serialize(components, options) {\n\t\t        var secure = String(components.scheme).toLowerCase() === \"https\";\n\t\t        //normalize the default port\n\t\t        if (components.port === (secure ? 443 : 80) || components.port === \"\") {\n\t\t            components.port = undefined;\n\t\t        }\n\t\t        //normalize the empty path\n\t\t        if (!components.path) {\n\t\t            components.path = \"/\";\n\t\t        }\n\t\t        //NOTE: We do not parse query strings for HTTP URIs\n\t\t        //as WWW Form Url Encoded query strings are part of the HTML4+ spec,\n\t\t        //and not the HTTP spec.\n\t\t        return components;\n\t\t    }\n\t\t};\n\n\t\tvar handler$1 = {\n\t\t    scheme: \"https\",\n\t\t    domainHost: handler.domainHost,\n\t\t    parse: handler.parse,\n\t\t    serialize: handler.serialize\n\t\t};\n\n\t\tfunction isSecure(wsComponents) {\n\t\t    return typeof wsComponents.secure === 'boolean' ? wsComponents.secure : String(wsComponents.scheme).toLowerCase() === \"wss\";\n\t\t}\n\t\t//RFC 6455\n\t\tvar handler$2 = {\n\t\t    scheme: \"ws\",\n\t\t    domainHost: true,\n\t\t    parse: function parse(components, options) {\n\t\t        var wsComponents = components;\n\t\t        //indicate if the secure flag is set\n\t\t        wsComponents.secure = isSecure(wsComponents);\n\t\t        //construct resouce name\n\t\t        wsComponents.resourceName = (wsComponents.path || '/') + (wsComponents.query ? '?' + wsComponents.query : '');\n\t\t        wsComponents.path = undefined;\n\t\t        wsComponents.query = undefined;\n\t\t        return wsComponents;\n\t\t    },\n\t\t    serialize: function serialize(wsComponents, options) {\n\t\t        //normalize the default port\n\t\t        if (wsComponents.port === (isSecure(wsComponents) ? 443 : 80) || wsComponents.port === \"\") {\n\t\t            wsComponents.port = undefined;\n\t\t        }\n\t\t        //ensure scheme matches secure flag\n\t\t        if (typeof wsComponents.secure === 'boolean') {\n\t\t            wsComponents.scheme = wsComponents.secure ? 'wss' : 'ws';\n\t\t            wsComponents.secure = undefined;\n\t\t        }\n\t\t        //reconstruct path from resource name\n\t\t        if (wsComponents.resourceName) {\n\t\t            var _wsComponents$resourc = wsComponents.resourceName.split('?'),\n\t\t                _wsComponents$resourc2 = slicedToArray(_wsComponents$resourc, 2),\n\t\t                path = _wsComponents$resourc2[0],\n\t\t                query = _wsComponents$resourc2[1];\n\n\t\t            wsComponents.path = path && path !== '/' ? path : undefined;\n\t\t            wsComponents.query = query;\n\t\t            wsComponents.resourceName = undefined;\n\t\t        }\n\t\t        //forbid fragment component\n\t\t        wsComponents.fragment = undefined;\n\t\t        return wsComponents;\n\t\t    }\n\t\t};\n\n\t\tvar handler$3 = {\n\t\t    scheme: \"wss\",\n\t\t    domainHost: handler$2.domainHost,\n\t\t    parse: handler$2.parse,\n\t\t    serialize: handler$2.serialize\n\t\t};\n\n\t\tvar O = {};\n\t\t//RFC 3986\n\t\tvar UNRESERVED$$ = \"[A-Za-z0-9\\\\-\\\\.\\\\_\\\\~\" + (\"\\\\xA0-\\\\u200D\\\\u2010-\\\\u2029\\\\u202F-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF\" ) + \"]\";\n\t\tvar HEXDIG$$ = \"[0-9A-Fa-f]\"; //case-insensitive\n\t\tvar PCT_ENCODED$ = subexp(subexp(\"%[EFef]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%[89A-Fa-f]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%\" + HEXDIG$$ + HEXDIG$$)); //expanded\n\t\t//RFC 5322, except these symbols as per RFC 6068: @ : / ? # [ ] & ; =\n\t\t//const ATEXT$$ = \"[A-Za-z0-9\\\\!\\\\#\\\\$\\\\%\\\\&\\\\'\\\\*\\\\+\\\\-\\\\/\\\\=\\\\?\\\\^\\\\_\\\\`\\\\{\\\\|\\\\}\\\\~]\";\n\t\t//const WSP$$ = \"[\\\\x20\\\\x09]\";\n\t\t//const OBS_QTEXT$$ = \"[\\\\x01-\\\\x08\\\\x0B\\\\x0C\\\\x0E-\\\\x1F\\\\x7F]\";  //(%d1-8 / %d11-12 / %d14-31 / %d127)\n\t\t//const QTEXT$$ = merge(\"[\\\\x21\\\\x23-\\\\x5B\\\\x5D-\\\\x7E]\", OBS_QTEXT$$);  //%d33 / %d35-91 / %d93-126 / obs-qtext\n\t\t//const VCHAR$$ = \"[\\\\x21-\\\\x7E]\";\n\t\t//const WSP$$ = \"[\\\\x20\\\\x09]\";\n\t\t//const OBS_QP$ = subexp(\"\\\\\\\\\" + merge(\"[\\\\x00\\\\x0D\\\\x0A]\", OBS_QTEXT$$));  //%d0 / CR / LF / obs-qtext\n\t\t//const FWS$ = subexp(subexp(WSP$$ + \"*\" + \"\\\\x0D\\\\x0A\") + \"?\" + WSP$$ + \"+\");\n\t\t//const QUOTED_PAIR$ = subexp(subexp(\"\\\\\\\\\" + subexp(VCHAR$$ + \"|\" + WSP$$)) + \"|\" + OBS_QP$);\n\t\t//const QUOTED_STRING$ = subexp('\\\\\"' + subexp(FWS$ + \"?\" + QCONTENT$) + \"*\" + FWS$ + \"?\" + '\\\\\"');\n\t\tvar ATEXT$$ = \"[A-Za-z0-9\\\\!\\\\$\\\\%\\\\'\\\\*\\\\+\\\\-\\\\^\\\\_\\\\`\\\\{\\\\|\\\\}\\\\~]\";\n\t\tvar QTEXT$$ = \"[\\\\!\\\\$\\\\%\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\-\\\\.0-9\\\\<\\\\>A-Z\\\\x5E-\\\\x7E]\";\n\t\tvar VCHAR$$ = merge(QTEXT$$, \"[\\\\\\\"\\\\\\\\]\");\n\t\tvar SOME_DELIMS$$ = \"[\\\\!\\\\$\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\;\\\\:\\\\@]\";\n\t\tvar UNRESERVED = new RegExp(UNRESERVED$$, \"g\");\n\t\tvar PCT_ENCODED = new RegExp(PCT_ENCODED$, \"g\");\n\t\tvar NOT_LOCAL_PART = new RegExp(merge(\"[^]\", ATEXT$$, \"[\\\\.]\", '[\\\\\"]', VCHAR$$), \"g\");\n\t\tvar NOT_HFNAME = new RegExp(merge(\"[^]\", UNRESERVED$$, SOME_DELIMS$$), \"g\");\n\t\tvar NOT_HFVALUE = NOT_HFNAME;\n\t\tfunction decodeUnreserved(str) {\n\t\t    var decStr = pctDecChars(str);\n\t\t    return !decStr.match(UNRESERVED) ? str : decStr;\n\t\t}\n\t\tvar handler$4 = {\n\t\t    scheme: \"mailto\",\n\t\t    parse: function parse$$1(components, options) {\n\t\t        var mailtoComponents = components;\n\t\t        var to = mailtoComponents.to = mailtoComponents.path ? mailtoComponents.path.split(\",\") : [];\n\t\t        mailtoComponents.path = undefined;\n\t\t        if (mailtoComponents.query) {\n\t\t            var unknownHeaders = false;\n\t\t            var headers = {};\n\t\t            var hfields = mailtoComponents.query.split(\"&\");\n\t\t            for (var x = 0, xl = hfields.length; x < xl; ++x) {\n\t\t                var hfield = hfields[x].split(\"=\");\n\t\t                switch (hfield[0]) {\n\t\t                    case \"to\":\n\t\t                        var toAddrs = hfield[1].split(\",\");\n\t\t                        for (var _x = 0, _xl = toAddrs.length; _x < _xl; ++_x) {\n\t\t                            to.push(toAddrs[_x]);\n\t\t                        }\n\t\t                        break;\n\t\t                    case \"subject\":\n\t\t                        mailtoComponents.subject = unescapeComponent(hfield[1], options);\n\t\t                        break;\n\t\t                    case \"body\":\n\t\t                        mailtoComponents.body = unescapeComponent(hfield[1], options);\n\t\t                        break;\n\t\t                    default:\n\t\t                        unknownHeaders = true;\n\t\t                        headers[unescapeComponent(hfield[0], options)] = unescapeComponent(hfield[1], options);\n\t\t                        break;\n\t\t                }\n\t\t            }\n\t\t            if (unknownHeaders) mailtoComponents.headers = headers;\n\t\t        }\n\t\t        mailtoComponents.query = undefined;\n\t\t        for (var _x2 = 0, _xl2 = to.length; _x2 < _xl2; ++_x2) {\n\t\t            var addr = to[_x2].split(\"@\");\n\t\t            addr[0] = unescapeComponent(addr[0]);\n\t\t            if (!options.unicodeSupport) {\n\t\t                //convert Unicode IDN -> ASCII IDN\n\t\t                try {\n\t\t                    addr[1] = punycode.toASCII(unescapeComponent(addr[1], options).toLowerCase());\n\t\t                } catch (e) {\n\t\t                    mailtoComponents.error = mailtoComponents.error || \"Email address's domain name can not be converted to ASCII via punycode: \" + e;\n\t\t                }\n\t\t            } else {\n\t\t                addr[1] = unescapeComponent(addr[1], options).toLowerCase();\n\t\t            }\n\t\t            to[_x2] = addr.join(\"@\");\n\t\t        }\n\t\t        return mailtoComponents;\n\t\t    },\n\t\t    serialize: function serialize$$1(mailtoComponents, options) {\n\t\t        var components = mailtoComponents;\n\t\t        var to = toArray(mailtoComponents.to);\n\t\t        if (to) {\n\t\t            for (var x = 0, xl = to.length; x < xl; ++x) {\n\t\t                var toAddr = String(to[x]);\n\t\t                var atIdx = toAddr.lastIndexOf(\"@\");\n\t\t                var localPart = toAddr.slice(0, atIdx).replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_LOCAL_PART, pctEncChar);\n\t\t                var domain = toAddr.slice(atIdx + 1);\n\t\t                //convert IDN via punycode\n\t\t                try {\n\t\t                    domain = !options.iri ? punycode.toASCII(unescapeComponent(domain, options).toLowerCase()) : punycode.toUnicode(domain);\n\t\t                } catch (e) {\n\t\t                    components.error = components.error || \"Email address's domain name can not be converted to \" + (!options.iri ? \"ASCII\" : \"Unicode\") + \" via punycode: \" + e;\n\t\t                }\n\t\t                to[x] = localPart + \"@\" + domain;\n\t\t            }\n\t\t            components.path = to.join(\",\");\n\t\t        }\n\t\t        var headers = mailtoComponents.headers = mailtoComponents.headers || {};\n\t\t        if (mailtoComponents.subject) headers[\"subject\"] = mailtoComponents.subject;\n\t\t        if (mailtoComponents.body) headers[\"body\"] = mailtoComponents.body;\n\t\t        var fields = [];\n\t\t        for (var name in headers) {\n\t\t            if (headers[name] !== O[name]) {\n\t\t                fields.push(name.replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFNAME, pctEncChar) + \"=\" + headers[name].replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFVALUE, pctEncChar));\n\t\t            }\n\t\t        }\n\t\t        if (fields.length) {\n\t\t            components.query = fields.join(\"&\");\n\t\t        }\n\t\t        return components;\n\t\t    }\n\t\t};\n\n\t\tvar URN_PARSE = /^([^\\:]+)\\:(.*)/;\n\t\t//RFC 2141\n\t\tvar handler$5 = {\n\t\t    scheme: \"urn\",\n\t\t    parse: function parse$$1(components, options) {\n\t\t        var matches = components.path && components.path.match(URN_PARSE);\n\t\t        var urnComponents = components;\n\t\t        if (matches) {\n\t\t            var scheme = options.scheme || urnComponents.scheme || \"urn\";\n\t\t            var nid = matches[1].toLowerCase();\n\t\t            var nss = matches[2];\n\t\t            var urnScheme = scheme + \":\" + (options.nid || nid);\n\t\t            var schemeHandler = SCHEMES[urnScheme];\n\t\t            urnComponents.nid = nid;\n\t\t            urnComponents.nss = nss;\n\t\t            urnComponents.path = undefined;\n\t\t            if (schemeHandler) {\n\t\t                urnComponents = schemeHandler.parse(urnComponents, options);\n\t\t            }\n\t\t        } else {\n\t\t            urnComponents.error = urnComponents.error || \"URN can not be parsed.\";\n\t\t        }\n\t\t        return urnComponents;\n\t\t    },\n\t\t    serialize: function serialize$$1(urnComponents, options) {\n\t\t        var scheme = options.scheme || urnComponents.scheme || \"urn\";\n\t\t        var nid = urnComponents.nid;\n\t\t        var urnScheme = scheme + \":\" + (options.nid || nid);\n\t\t        var schemeHandler = SCHEMES[urnScheme];\n\t\t        if (schemeHandler) {\n\t\t            urnComponents = schemeHandler.serialize(urnComponents, options);\n\t\t        }\n\t\t        var uriComponents = urnComponents;\n\t\t        var nss = urnComponents.nss;\n\t\t        uriComponents.path = (nid || options.nid) + \":\" + nss;\n\t\t        return uriComponents;\n\t\t    }\n\t\t};\n\n\t\tvar UUID = /^[0-9A-Fa-f]{8}(?:\\-[0-9A-Fa-f]{4}){3}\\-[0-9A-Fa-f]{12}$/;\n\t\t//RFC 4122\n\t\tvar handler$6 = {\n\t\t    scheme: \"urn:uuid\",\n\t\t    parse: function parse(urnComponents, options) {\n\t\t        var uuidComponents = urnComponents;\n\t\t        uuidComponents.uuid = uuidComponents.nss;\n\t\t        uuidComponents.nss = undefined;\n\t\t        if (!options.tolerant && (!uuidComponents.uuid || !uuidComponents.uuid.match(UUID))) {\n\t\t            uuidComponents.error = uuidComponents.error || \"UUID is not valid.\";\n\t\t        }\n\t\t        return uuidComponents;\n\t\t    },\n\t\t    serialize: function serialize(uuidComponents, options) {\n\t\t        var urnComponents = uuidComponents;\n\t\t        //normalize UUID\n\t\t        urnComponents.nss = (uuidComponents.uuid || \"\").toLowerCase();\n\t\t        return urnComponents;\n\t\t    }\n\t\t};\n\n\t\tSCHEMES[handler.scheme] = handler;\n\t\tSCHEMES[handler$1.scheme] = handler$1;\n\t\tSCHEMES[handler$2.scheme] = handler$2;\n\t\tSCHEMES[handler$3.scheme] = handler$3;\n\t\tSCHEMES[handler$4.scheme] = handler$4;\n\t\tSCHEMES[handler$5.scheme] = handler$5;\n\t\tSCHEMES[handler$6.scheme] = handler$6;\n\n\t\texports.SCHEMES = SCHEMES;\n\t\texports.pctEncChar = pctEncChar;\n\t\texports.pctDecChars = pctDecChars;\n\t\texports.parse = parse;\n\t\texports.removeDotSegments = removeDotSegments;\n\t\texports.serialize = serialize;\n\t\texports.resolveComponents = resolveComponents;\n\t\texports.resolve = resolve;\n\t\texports.normalize = normalize;\n\t\texports.equal = equal;\n\t\texports.escapeComponent = escapeComponent;\n\t\texports.unescapeComponent = unescapeComponent;\n\n\t\tObject.defineProperty(exports, '__esModule', { value: true });\n\n\t\t})));\n\t\t\n\t} (uri_all$1, uri_all$1.exports));\n\treturn uri_all$1.exports;\n}\n\nvar fastDeepEqual;\nvar hasRequiredFastDeepEqual;\n\nfunction requireFastDeepEqual () {\n\tif (hasRequiredFastDeepEqual) return fastDeepEqual;\n\thasRequiredFastDeepEqual = 1;\n\n\t// do not edit .js files directly - edit src/index.jst\n\n\n\n\tfastDeepEqual = function equal(a, b) {\n\t  if (a === b) return true;\n\n\t  if (a && b && typeof a == 'object' && typeof b == 'object') {\n\t    if (a.constructor !== b.constructor) return false;\n\n\t    var length, i, keys;\n\t    if (Array.isArray(a)) {\n\t      length = a.length;\n\t      if (length != b.length) return false;\n\t      for (i = length; i-- !== 0;)\n\t        if (!equal(a[i], b[i])) return false;\n\t      return true;\n\t    }\n\n\n\n\t    if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n\t    if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n\t    if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n\t    keys = Object.keys(a);\n\t    length = keys.length;\n\t    if (length !== Object.keys(b).length) return false;\n\n\t    for (i = length; i-- !== 0;)\n\t      if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n\t    for (i = length; i-- !== 0;) {\n\t      var key = keys[i];\n\n\t      if (!equal(a[key], b[key])) return false;\n\t    }\n\n\t    return true;\n\t  }\n\n\t  // true if both NaN, false otherwise\n\t  return a!==a && b!==b;\n\t};\n\treturn fastDeepEqual;\n}\n\nvar ucs2length;\nvar hasRequiredUcs2length;\n\nfunction requireUcs2length () {\n\tif (hasRequiredUcs2length) return ucs2length;\n\thasRequiredUcs2length = 1;\n\n\t// https://mathiasbynens.be/notes/javascript-encoding\n\t// https://github.com/bestiejs/punycode.js - punycode.ucs2.decode\n\tucs2length = function ucs2length(str) {\n\t  var length = 0\n\t    , len = str.length\n\t    , pos = 0\n\t    , value;\n\t  while (pos < len) {\n\t    length++;\n\t    value = str.charCodeAt(pos++);\n\t    if (value >= 0xD800 && value <= 0xDBFF && pos < len) {\n\t      // high surrogate, and there is a next character\n\t      value = str.charCodeAt(pos);\n\t      if ((value & 0xFC00) == 0xDC00) pos++; // low surrogate\n\t    }\n\t  }\n\t  return length;\n\t};\n\treturn ucs2length;\n}\n\nvar util;\nvar hasRequiredUtil;\n\nfunction requireUtil () {\n\tif (hasRequiredUtil) return util;\n\thasRequiredUtil = 1;\n\n\n\tutil = {\n\t  copy: copy,\n\t  checkDataType: checkDataType,\n\t  checkDataTypes: checkDataTypes,\n\t  coerceToTypes: coerceToTypes,\n\t  toHash: toHash,\n\t  getProperty: getProperty,\n\t  escapeQuotes: escapeQuotes,\n\t  equal: requireFastDeepEqual(),\n\t  ucs2length: requireUcs2length(),\n\t  varOccurences: varOccurences,\n\t  varReplace: varReplace,\n\t  schemaHasRules: schemaHasRules,\n\t  schemaHasRulesExcept: schemaHasRulesExcept,\n\t  schemaUnknownRules: schemaUnknownRules,\n\t  toQuotedString: toQuotedString,\n\t  getPathExpr: getPathExpr,\n\t  getPath: getPath,\n\t  getData: getData,\n\t  unescapeFragment: unescapeFragment,\n\t  unescapeJsonPointer: unescapeJsonPointer,\n\t  escapeFragment: escapeFragment,\n\t  escapeJsonPointer: escapeJsonPointer\n\t};\n\n\n\tfunction copy(o, to) {\n\t  to = to || {};\n\t  for (var key in o) to[key] = o[key];\n\t  return to;\n\t}\n\n\n\tfunction checkDataType(dataType, data, strictNumbers, negate) {\n\t  var EQUAL = negate ? ' !== ' : ' === '\n\t    , AND = negate ? ' || ' : ' && '\n\t    , OK = negate ? '!' : ''\n\t    , NOT = negate ? '' : '!';\n\t  switch (dataType) {\n\t    case 'null': return data + EQUAL + 'null';\n\t    case 'array': return OK + 'Array.isArray(' + data + ')';\n\t    case 'object': return '(' + OK + data + AND +\n\t                          'typeof ' + data + EQUAL + '\"object\"' + AND +\n\t                          NOT + 'Array.isArray(' + data + '))';\n\t    case 'integer': return '(typeof ' + data + EQUAL + '\"number\"' + AND +\n\t                           NOT + '(' + data + ' % 1)' +\n\t                           AND + data + EQUAL + data +\n\t                           (strictNumbers ? (AND + OK + 'isFinite(' + data + ')') : '') + ')';\n\t    case 'number': return '(typeof ' + data + EQUAL + '\"' + dataType + '\"' +\n\t                          (strictNumbers ? (AND + OK + 'isFinite(' + data + ')') : '') + ')';\n\t    default: return 'typeof ' + data + EQUAL + '\"' + dataType + '\"';\n\t  }\n\t}\n\n\n\tfunction checkDataTypes(dataTypes, data, strictNumbers) {\n\t  switch (dataTypes.length) {\n\t    case 1: return checkDataType(dataTypes[0], data, strictNumbers, true);\n\t    default:\n\t      var code = '';\n\t      var types = toHash(dataTypes);\n\t      if (types.array && types.object) {\n\t        code = types.null ? '(': '(!' + data + ' || ';\n\t        code += 'typeof ' + data + ' !== \"object\")';\n\t        delete types.null;\n\t        delete types.array;\n\t        delete types.object;\n\t      }\n\t      if (types.number) delete types.integer;\n\t      for (var t in types)\n\t        code += (code ? ' && ' : '' ) + checkDataType(t, data, strictNumbers, true);\n\n\t      return code;\n\t  }\n\t}\n\n\n\tvar COERCE_TO_TYPES = toHash([ 'string', 'number', 'integer', 'boolean', 'null' ]);\n\tfunction coerceToTypes(optionCoerceTypes, dataTypes) {\n\t  if (Array.isArray(dataTypes)) {\n\t    var types = [];\n\t    for (var i=0; i<dataTypes.length; i++) {\n\t      var t = dataTypes[i];\n\t      if (COERCE_TO_TYPES[t]) types[types.length] = t;\n\t      else if (optionCoerceTypes === 'array' && t === 'array') types[types.length] = t;\n\t    }\n\t    if (types.length) return types;\n\t  } else if (COERCE_TO_TYPES[dataTypes]) {\n\t    return [dataTypes];\n\t  } else if (optionCoerceTypes === 'array' && dataTypes === 'array') {\n\t    return ['array'];\n\t  }\n\t}\n\n\n\tfunction toHash(arr) {\n\t  var hash = {};\n\t  for (var i=0; i<arr.length; i++) hash[arr[i]] = true;\n\t  return hash;\n\t}\n\n\n\tvar IDENTIFIER = /^[a-z$_][a-z$_0-9]*$/i;\n\tvar SINGLE_QUOTE = /'|\\\\/g;\n\tfunction getProperty(key) {\n\t  return typeof key == 'number'\n\t          ? '[' + key + ']'\n\t          : IDENTIFIER.test(key)\n\t            ? '.' + key\n\t            : \"['\" + escapeQuotes(key) + \"']\";\n\t}\n\n\n\tfunction escapeQuotes(str) {\n\t  return str.replace(SINGLE_QUOTE, '\\\\$&')\n\t            .replace(/\\n/g, '\\\\n')\n\t            .replace(/\\r/g, '\\\\r')\n\t            .replace(/\\f/g, '\\\\f')\n\t            .replace(/\\t/g, '\\\\t');\n\t}\n\n\n\tfunction varOccurences(str, dataVar) {\n\t  dataVar += '[^0-9]';\n\t  var matches = str.match(new RegExp(dataVar, 'g'));\n\t  return matches ? matches.length : 0;\n\t}\n\n\n\tfunction varReplace(str, dataVar, expr) {\n\t  dataVar += '([^0-9])';\n\t  expr = expr.replace(/\\$/g, '$$$$');\n\t  return str.replace(new RegExp(dataVar, 'g'), expr + '$1');\n\t}\n\n\n\tfunction schemaHasRules(schema, rules) {\n\t  if (typeof schema == 'boolean') return !schema;\n\t  for (var key in schema) if (rules[key]) return true;\n\t}\n\n\n\tfunction schemaHasRulesExcept(schema, rules, exceptKeyword) {\n\t  if (typeof schema == 'boolean') return !schema && exceptKeyword != 'not';\n\t  for (var key in schema) if (key != exceptKeyword && rules[key]) return true;\n\t}\n\n\n\tfunction schemaUnknownRules(schema, rules) {\n\t  if (typeof schema == 'boolean') return;\n\t  for (var key in schema) if (!rules[key]) return key;\n\t}\n\n\n\tfunction toQuotedString(str) {\n\t  return '\\'' + escapeQuotes(str) + '\\'';\n\t}\n\n\n\tfunction getPathExpr(currentPath, expr, jsonPointers, isNumber) {\n\t  var path = jsonPointers // false by default\n\t              ? '\\'/\\' + ' + expr + (isNumber ? '' : '.replace(/~/g, \\'~0\\').replace(/\\\\//g, \\'~1\\')')\n\t              : (isNumber ? '\\'[\\' + ' + expr + ' + \\']\\'' : '\\'[\\\\\\'\\' + ' + expr + ' + \\'\\\\\\']\\'');\n\t  return joinPaths(currentPath, path);\n\t}\n\n\n\tfunction getPath(currentPath, prop, jsonPointers) {\n\t  var path = jsonPointers // false by default\n\t              ? toQuotedString('/' + escapeJsonPointer(prop))\n\t              : toQuotedString(getProperty(prop));\n\t  return joinPaths(currentPath, path);\n\t}\n\n\n\tvar JSON_POINTER = /^\\/(?:[^~]|~0|~1)*$/;\n\tvar RELATIVE_JSON_POINTER = /^([0-9]+)(#|\\/(?:[^~]|~0|~1)*)?$/;\n\tfunction getData($data, lvl, paths) {\n\t  var up, jsonPointer, data, matches;\n\t  if ($data === '') return 'rootData';\n\t  if ($data[0] == '/') {\n\t    if (!JSON_POINTER.test($data)) throw new Error('Invalid JSON-pointer: ' + $data);\n\t    jsonPointer = $data;\n\t    data = 'rootData';\n\t  } else {\n\t    matches = $data.match(RELATIVE_JSON_POINTER);\n\t    if (!matches) throw new Error('Invalid JSON-pointer: ' + $data);\n\t    up = +matches[1];\n\t    jsonPointer = matches[2];\n\t    if (jsonPointer == '#') {\n\t      if (up >= lvl) throw new Error('Cannot access property/index ' + up + ' levels up, current level is ' + lvl);\n\t      return paths[lvl - up];\n\t    }\n\n\t    if (up > lvl) throw new Error('Cannot access data ' + up + ' levels up, current level is ' + lvl);\n\t    data = 'data' + ((lvl - up) || '');\n\t    if (!jsonPointer) return data;\n\t  }\n\n\t  var expr = data;\n\t  var segments = jsonPointer.split('/');\n\t  for (var i=0; i<segments.length; i++) {\n\t    var segment = segments[i];\n\t    if (segment) {\n\t      data += getProperty(unescapeJsonPointer(segment));\n\t      expr += ' && ' + data;\n\t    }\n\t  }\n\t  return expr;\n\t}\n\n\n\tfunction joinPaths (a, b) {\n\t  if (a == '\"\"') return b;\n\t  return (a + ' + ' + b).replace(/([^\\\\])' \\+ '/g, '$1');\n\t}\n\n\n\tfunction unescapeFragment(str) {\n\t  return unescapeJsonPointer(decodeURIComponent(str));\n\t}\n\n\n\tfunction escapeFragment(str) {\n\t  return encodeURIComponent(escapeJsonPointer(str));\n\t}\n\n\n\tfunction escapeJsonPointer(str) {\n\t  return str.replace(/~/g, '~0').replace(/\\//g, '~1');\n\t}\n\n\n\tfunction unescapeJsonPointer(str) {\n\t  return str.replace(/~1/g, '/').replace(/~0/g, '~');\n\t}\n\treturn util;\n}\n\nvar schema_obj;\nvar hasRequiredSchema_obj;\n\nfunction requireSchema_obj () {\n\tif (hasRequiredSchema_obj) return schema_obj;\n\thasRequiredSchema_obj = 1;\n\n\tvar util = requireUtil();\n\n\tschema_obj = SchemaObject;\n\n\tfunction SchemaObject(obj) {\n\t  util.copy(obj, this);\n\t}\n\treturn schema_obj;\n}\n\nvar jsonSchemaTraverse = {exports: {}};\n\nvar hasRequiredJsonSchemaTraverse;\n\nfunction requireJsonSchemaTraverse () {\n\tif (hasRequiredJsonSchemaTraverse) return jsonSchemaTraverse.exports;\n\thasRequiredJsonSchemaTraverse = 1;\n\n\tvar traverse = jsonSchemaTraverse.exports = function (schema, opts, cb) {\n\t  // Legacy support for v0.3.1 and earlier.\n\t  if (typeof opts == 'function') {\n\t    cb = opts;\n\t    opts = {};\n\t  }\n\n\t  cb = opts.cb || cb;\n\t  var pre = (typeof cb == 'function') ? cb : cb.pre || function() {};\n\t  var post = cb.post || function() {};\n\n\t  _traverse(opts, pre, post, schema, '', schema);\n\t};\n\n\n\ttraverse.keywords = {\n\t  additionalItems: true,\n\t  items: true,\n\t  contains: true,\n\t  additionalProperties: true,\n\t  propertyNames: true,\n\t  not: true\n\t};\n\n\ttraverse.arrayKeywords = {\n\t  items: true,\n\t  allOf: true,\n\t  anyOf: true,\n\t  oneOf: true\n\t};\n\n\ttraverse.propsKeywords = {\n\t  definitions: true,\n\t  properties: true,\n\t  patternProperties: true,\n\t  dependencies: true\n\t};\n\n\ttraverse.skipKeywords = {\n\t  default: true,\n\t  enum: true,\n\t  const: true,\n\t  required: true,\n\t  maximum: true,\n\t  minimum: true,\n\t  exclusiveMaximum: true,\n\t  exclusiveMinimum: true,\n\t  multipleOf: true,\n\t  maxLength: true,\n\t  minLength: true,\n\t  pattern: true,\n\t  format: true,\n\t  maxItems: true,\n\t  minItems: true,\n\t  uniqueItems: true,\n\t  maxProperties: true,\n\t  minProperties: true\n\t};\n\n\n\tfunction _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {\n\t  if (schema && typeof schema == 'object' && !Array.isArray(schema)) {\n\t    pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n\t    for (var key in schema) {\n\t      var sch = schema[key];\n\t      if (Array.isArray(sch)) {\n\t        if (key in traverse.arrayKeywords) {\n\t          for (var i=0; i<sch.length; i++)\n\t            _traverse(opts, pre, post, sch[i], jsonPtr + '/' + key + '/' + i, rootSchema, jsonPtr, key, schema, i);\n\t        }\n\t      } else if (key in traverse.propsKeywords) {\n\t        if (sch && typeof sch == 'object') {\n\t          for (var prop in sch)\n\t            _traverse(opts, pre, post, sch[prop], jsonPtr + '/' + key + '/' + escapeJsonPtr(prop), rootSchema, jsonPtr, key, schema, prop);\n\t        }\n\t      } else if (key in traverse.keywords || (opts.allKeys && !(key in traverse.skipKeywords))) {\n\t        _traverse(opts, pre, post, sch, jsonPtr + '/' + key, rootSchema, jsonPtr, key, schema);\n\t      }\n\t    }\n\t    post(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n\t  }\n\t}\n\n\n\tfunction escapeJsonPtr(str) {\n\t  return str.replace(/~/g, '~0').replace(/\\//g, '~1');\n\t}\n\treturn jsonSchemaTraverse.exports;\n}\n\nvar resolve_1;\nvar hasRequiredResolve;\n\nfunction requireResolve () {\n\tif (hasRequiredResolve) return resolve_1;\n\thasRequiredResolve = 1;\n\n\tvar URI = requireUri_all()\n\t  , equal = requireFastDeepEqual()\n\t  , util = requireUtil()\n\t  , SchemaObject = requireSchema_obj()\n\t  , traverse = requireJsonSchemaTraverse();\n\n\tresolve_1 = resolve;\n\n\tresolve.normalizeId = normalizeId;\n\tresolve.fullPath = getFullPath;\n\tresolve.url = resolveUrl;\n\tresolve.ids = resolveIds;\n\tresolve.inlineRef = inlineRef;\n\tresolve.schema = resolveSchema;\n\n\t/**\n\t * [resolve and compile the references ($ref)]\n\t * @this   Ajv\n\t * @param  {Function} compile reference to schema compilation funciton (localCompile)\n\t * @param  {Object} root object with information about the root schema for the current schema\n\t * @param  {String} ref reference to resolve\n\t * @return {Object|Function} schema object (if the schema can be inlined) or validation function\n\t */\n\tfunction resolve(compile, root, ref) {\n\t  /* jshint validthis: true */\n\t  var refVal = this._refs[ref];\n\t  if (typeof refVal == 'string') {\n\t    if (this._refs[refVal]) refVal = this._refs[refVal];\n\t    else return resolve.call(this, compile, root, refVal);\n\t  }\n\n\t  refVal = refVal || this._schemas[ref];\n\t  if (refVal instanceof SchemaObject) {\n\t    return inlineRef(refVal.schema, this._opts.inlineRefs)\n\t            ? refVal.schema\n\t            : refVal.validate || this._compile(refVal);\n\t  }\n\n\t  var res = resolveSchema.call(this, root, ref);\n\t  var schema, v, baseId;\n\t  if (res) {\n\t    schema = res.schema;\n\t    root = res.root;\n\t    baseId = res.baseId;\n\t  }\n\n\t  if (schema instanceof SchemaObject) {\n\t    v = schema.validate || compile.call(this, schema.schema, root, undefined, baseId);\n\t  } else if (schema !== undefined) {\n\t    v = inlineRef(schema, this._opts.inlineRefs)\n\t        ? schema\n\t        : compile.call(this, schema, root, undefined, baseId);\n\t  }\n\n\t  return v;\n\t}\n\n\n\t/**\n\t * Resolve schema, its root and baseId\n\t * @this Ajv\n\t * @param  {Object} root root object with properties schema, refVal, refs\n\t * @param  {String} ref  reference to resolve\n\t * @return {Object} object with properties schema, root, baseId\n\t */\n\tfunction resolveSchema(root, ref) {\n\t  /* jshint validthis: true */\n\t  var p = URI.parse(ref)\n\t    , refPath = _getFullPath(p)\n\t    , baseId = getFullPath(this._getId(root.schema));\n\t  if (Object.keys(root.schema).length === 0 || refPath !== baseId) {\n\t    var id = normalizeId(refPath);\n\t    var refVal = this._refs[id];\n\t    if (typeof refVal == 'string') {\n\t      return resolveRecursive.call(this, root, refVal, p);\n\t    } else if (refVal instanceof SchemaObject) {\n\t      if (!refVal.validate) this._compile(refVal);\n\t      root = refVal;\n\t    } else {\n\t      refVal = this._schemas[id];\n\t      if (refVal instanceof SchemaObject) {\n\t        if (!refVal.validate) this._compile(refVal);\n\t        if (id == normalizeId(ref))\n\t          return { schema: refVal, root: root, baseId: baseId };\n\t        root = refVal;\n\t      } else {\n\t        return;\n\t      }\n\t    }\n\t    if (!root.schema) return;\n\t    baseId = getFullPath(this._getId(root.schema));\n\t  }\n\t  return getJsonPointer.call(this, p, baseId, root.schema, root);\n\t}\n\n\n\t/* @this Ajv */\n\tfunction resolveRecursive(root, ref, parsedRef) {\n\t  /* jshint validthis: true */\n\t  var res = resolveSchema.call(this, root, ref);\n\t  if (res) {\n\t    var schema = res.schema;\n\t    var baseId = res.baseId;\n\t    root = res.root;\n\t    var id = this._getId(schema);\n\t    if (id) baseId = resolveUrl(baseId, id);\n\t    return getJsonPointer.call(this, parsedRef, baseId, schema, root);\n\t  }\n\t}\n\n\n\tvar PREVENT_SCOPE_CHANGE = util.toHash(['properties', 'patternProperties', 'enum', 'dependencies', 'definitions']);\n\t/* @this Ajv */\n\tfunction getJsonPointer(parsedRef, baseId, schema, root) {\n\t  /* jshint validthis: true */\n\t  parsedRef.fragment = parsedRef.fragment || '';\n\t  if (parsedRef.fragment.slice(0,1) != '/') return;\n\t  var parts = parsedRef.fragment.split('/');\n\n\t  for (var i = 1; i < parts.length; i++) {\n\t    var part = parts[i];\n\t    if (part) {\n\t      part = util.unescapeFragment(part);\n\t      schema = schema[part];\n\t      if (schema === undefined) break;\n\t      var id;\n\t      if (!PREVENT_SCOPE_CHANGE[part]) {\n\t        id = this._getId(schema);\n\t        if (id) baseId = resolveUrl(baseId, id);\n\t        if (schema.$ref) {\n\t          var $ref = resolveUrl(baseId, schema.$ref);\n\t          var res = resolveSchema.call(this, root, $ref);\n\t          if (res) {\n\t            schema = res.schema;\n\t            root = res.root;\n\t            baseId = res.baseId;\n\t          }\n\t        }\n\t      }\n\t    }\n\t  }\n\t  if (schema !== undefined && schema !== root.schema)\n\t    return { schema: schema, root: root, baseId: baseId };\n\t}\n\n\n\tvar SIMPLE_INLINED = util.toHash([\n\t  'type', 'format', 'pattern',\n\t  'maxLength', 'minLength',\n\t  'maxProperties', 'minProperties',\n\t  'maxItems', 'minItems',\n\t  'maximum', 'minimum',\n\t  'uniqueItems', 'multipleOf',\n\t  'required', 'enum'\n\t]);\n\tfunction inlineRef(schema, limit) {\n\t  if (limit === false) return false;\n\t  if (limit === undefined || limit === true) return checkNoRef(schema);\n\t  else if (limit) return countKeys(schema) <= limit;\n\t}\n\n\n\tfunction checkNoRef(schema) {\n\t  var item;\n\t  if (Array.isArray(schema)) {\n\t    for (var i=0; i<schema.length; i++) {\n\t      item = schema[i];\n\t      if (typeof item == 'object' && !checkNoRef(item)) return false;\n\t    }\n\t  } else {\n\t    for (var key in schema) {\n\t      if (key == '$ref') return false;\n\t      item = schema[key];\n\t      if (typeof item == 'object' && !checkNoRef(item)) return false;\n\t    }\n\t  }\n\t  return true;\n\t}\n\n\n\tfunction countKeys(schema) {\n\t  var count = 0, item;\n\t  if (Array.isArray(schema)) {\n\t    for (var i=0; i<schema.length; i++) {\n\t      item = schema[i];\n\t      if (typeof item == 'object') count += countKeys(item);\n\t      if (count == Infinity) return Infinity;\n\t    }\n\t  } else {\n\t    for (var key in schema) {\n\t      if (key == '$ref') return Infinity;\n\t      if (SIMPLE_INLINED[key]) {\n\t        count++;\n\t      } else {\n\t        item = schema[key];\n\t        if (typeof item == 'object') count += countKeys(item) + 1;\n\t        if (count == Infinity) return Infinity;\n\t      }\n\t    }\n\t  }\n\t  return count;\n\t}\n\n\n\tfunction getFullPath(id, normalize) {\n\t  if (normalize !== false) id = normalizeId(id);\n\t  var p = URI.parse(id);\n\t  return _getFullPath(p);\n\t}\n\n\n\tfunction _getFullPath(p) {\n\t  return URI.serialize(p).split('#')[0] + '#';\n\t}\n\n\n\tvar TRAILING_SLASH_HASH = /#\\/?$/;\n\tfunction normalizeId(id) {\n\t  return id ? id.replace(TRAILING_SLASH_HASH, '') : '';\n\t}\n\n\n\tfunction resolveUrl(baseId, id) {\n\t  id = normalizeId(id);\n\t  return URI.resolve(baseId, id);\n\t}\n\n\n\t/* @this Ajv */\n\tfunction resolveIds(schema) {\n\t  var schemaId = normalizeId(this._getId(schema));\n\t  var baseIds = {'': schemaId};\n\t  var fullPaths = {'': getFullPath(schemaId, false)};\n\t  var localRefs = {};\n\t  var self = this;\n\n\t  traverse(schema, {allKeys: true}, function(sch, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {\n\t    if (jsonPtr === '') return;\n\t    var id = self._getId(sch);\n\t    var baseId = baseIds[parentJsonPtr];\n\t    var fullPath = fullPaths[parentJsonPtr] + '/' + parentKeyword;\n\t    if (keyIndex !== undefined)\n\t      fullPath += '/' + (typeof keyIndex == 'number' ? keyIndex : util.escapeFragment(keyIndex));\n\n\t    if (typeof id == 'string') {\n\t      id = baseId = normalizeId(baseId ? URI.resolve(baseId, id) : id);\n\n\t      var refVal = self._refs[id];\n\t      if (typeof refVal == 'string') refVal = self._refs[refVal];\n\t      if (refVal && refVal.schema) {\n\t        if (!equal(sch, refVal.schema))\n\t          throw new Error('id \"' + id + '\" resolves to more than one schema');\n\t      } else if (id != normalizeId(fullPath)) {\n\t        if (id[0] == '#') {\n\t          if (localRefs[id] && !equal(sch, localRefs[id]))\n\t            throw new Error('id \"' + id + '\" resolves to more than one schema');\n\t          localRefs[id] = sch;\n\t        } else {\n\t          self._refs[id] = fullPath;\n\t        }\n\t      }\n\t    }\n\t    baseIds[jsonPtr] = baseId;\n\t    fullPaths[jsonPtr] = fullPath;\n\t  });\n\n\t  return localRefs;\n\t}\n\treturn resolve_1;\n}\n\nvar error_classes;\nvar hasRequiredError_classes;\n\nfunction requireError_classes () {\n\tif (hasRequiredError_classes) return error_classes;\n\thasRequiredError_classes = 1;\n\n\tvar resolve = requireResolve();\n\n\terror_classes = {\n\t  Validation: errorSubclass(ValidationError),\n\t  MissingRef: errorSubclass(MissingRefError)\n\t};\n\n\n\tfunction ValidationError(errors) {\n\t  this.message = 'validation failed';\n\t  this.errors = errors;\n\t  this.ajv = this.validation = true;\n\t}\n\n\n\tMissingRefError.message = function (baseId, ref) {\n\t  return 'can\\'t resolve reference ' + ref + ' from id ' + baseId;\n\t};\n\n\n\tfunction MissingRefError(baseId, ref, message) {\n\t  this.message = message || MissingRefError.message(baseId, ref);\n\t  this.missingRef = resolve.url(baseId, ref);\n\t  this.missingSchema = resolve.normalizeId(resolve.fullPath(this.missingRef));\n\t}\n\n\n\tfunction errorSubclass(Subclass) {\n\t  Subclass.prototype = Object.create(Error.prototype);\n\t  Subclass.prototype.constructor = Subclass;\n\t  return Subclass;\n\t}\n\treturn error_classes;\n}\n\nvar fastJsonStableStringify;\nvar hasRequiredFastJsonStableStringify;\n\nfunction requireFastJsonStableStringify () {\n\tif (hasRequiredFastJsonStableStringify) return fastJsonStableStringify;\n\thasRequiredFastJsonStableStringify = 1;\n\n\tfastJsonStableStringify = function (data, opts) {\n\t    if (!opts) opts = {};\n\t    if (typeof opts === 'function') opts = { cmp: opts };\n\t    var cycles = (typeof opts.cycles === 'boolean') ? opts.cycles : false;\n\n\t    var cmp = opts.cmp && (function (f) {\n\t        return function (node) {\n\t            return function (a, b) {\n\t                var aobj = { key: a, value: node[a] };\n\t                var bobj = { key: b, value: node[b] };\n\t                return f(aobj, bobj);\n\t            };\n\t        };\n\t    })(opts.cmp);\n\n\t    var seen = [];\n\t    return (function stringify (node) {\n\t        if (node && node.toJSON && typeof node.toJSON === 'function') {\n\t            node = node.toJSON();\n\t        }\n\n\t        if (node === undefined) return;\n\t        if (typeof node == 'number') return isFinite(node) ? '' + node : 'null';\n\t        if (typeof node !== 'object') return JSON.stringify(node);\n\n\t        var i, out;\n\t        if (Array.isArray(node)) {\n\t            out = '[';\n\t            for (i = 0; i < node.length; i++) {\n\t                if (i) out += ',';\n\t                out += stringify(node[i]) || 'null';\n\t            }\n\t            return out + ']';\n\t        }\n\n\t        if (node === null) return 'null';\n\n\t        if (seen.indexOf(node) !== -1) {\n\t            if (cycles) return JSON.stringify('__cycle__');\n\t            throw new TypeError('Converting circular structure to JSON');\n\t        }\n\n\t        var seenIndex = seen.push(node) - 1;\n\t        var keys = Object.keys(node).sort(cmp && cmp(node));\n\t        out = '';\n\t        for (i = 0; i < keys.length; i++) {\n\t            var key = keys[i];\n\t            var value = stringify(node[key]);\n\n\t            if (!value) continue;\n\t            if (out) out += ',';\n\t            out += JSON.stringify(key) + ':' + value;\n\t        }\n\t        seen.splice(seenIndex, 1);\n\t        return '{' + out + '}';\n\t    })(data);\n\t};\n\treturn fastJsonStableStringify;\n}\n\nvar validate;\nvar hasRequiredValidate;\n\nfunction requireValidate () {\n\tif (hasRequiredValidate) return validate;\n\thasRequiredValidate = 1;\n\tvalidate = function generate_validate(it, $keyword, $ruleType) {\n\t  var out = '';\n\t  var $async = it.schema.$async === true,\n\t    $refKeywords = it.util.schemaHasRulesExcept(it.schema, it.RULES.all, '$ref'),\n\t    $id = it.self._getId(it.schema);\n\t  if (it.opts.strictKeywords) {\n\t    var $unknownKwd = it.util.schemaUnknownRules(it.schema, it.RULES.keywords);\n\t    if ($unknownKwd) {\n\t      var $keywordsMsg = 'unknown keyword: ' + $unknownKwd;\n\t      if (it.opts.strictKeywords === 'log') it.logger.warn($keywordsMsg);\n\t      else throw new Error($keywordsMsg);\n\t    }\n\t  }\n\t  if (it.isTop) {\n\t    out += ' var validate = ';\n\t    if ($async) {\n\t      it.async = true;\n\t      out += 'async ';\n\t    }\n\t    out += 'function(data, dataPath, parentData, parentDataProperty, rootData) { \\'use strict\\'; ';\n\t    if ($id && (it.opts.sourceCode || it.opts.processCode)) {\n\t      out += ' ' + ('/\\*# sourceURL=' + $id + ' */') + ' ';\n\t    }\n\t  }\n\t  if (typeof it.schema == 'boolean' || !($refKeywords || it.schema.$ref)) {\n\t    var $keyword = 'false schema';\n\t    var $lvl = it.level;\n\t    var $dataLvl = it.dataLevel;\n\t    var $schema = it.schema[$keyword];\n\t    var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n\t    var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n\t    var $breakOnError = !it.opts.allErrors;\n\t    var $errorKeyword;\n\t    var $data = 'data' + ($dataLvl || '');\n\t    var $valid = 'valid' + $lvl;\n\t    if (it.schema === false) {\n\t      if (it.isTop) {\n\t        $breakOnError = true;\n\t      } else {\n\t        out += ' var ' + ($valid) + ' = false; ';\n\t      }\n\t      var $$outStack = $$outStack || [];\n\t      $$outStack.push(out);\n\t      out = ''; /* istanbul ignore else */\n\t      if (it.createErrors !== false) {\n\t        out += ' { keyword: \\'' + ($errorKeyword || 'false schema') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n\t        if (it.opts.messages !== false) {\n\t          out += ' , message: \\'boolean schema is false\\' ';\n\t        }\n\t        if (it.opts.verbose) {\n\t          out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n\t        }\n\t        out += ' } ';\n\t      } else {\n\t        out += ' {} ';\n\t      }\n\t      var __err = out;\n\t      out = $$outStack.pop();\n\t      if (!it.compositeRule && $breakOnError) {\n\t        /* istanbul ignore if */\n\t        if (it.async) {\n\t          out += ' throw new ValidationError([' + (__err) + ']); ';\n\t        } else {\n\t          out += ' validate.errors = [' + (__err) + ']; return false; ';\n\t        }\n\t      } else {\n\t        out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n\t      }\n\t    } else {\n\t      if (it.isTop) {\n\t        if ($async) {\n\t          out += ' return data; ';\n\t        } else {\n\t          out += ' validate.errors = null; return true; ';\n\t        }\n\t      } else {\n\t        out += ' var ' + ($valid) + ' = true; ';\n\t      }\n\t    }\n\t    if (it.isTop) {\n\t      out += ' }; return validate; ';\n\t    }\n\t    return out;\n\t  }\n\t  if (it.isTop) {\n\t    var $top = it.isTop,\n\t      $lvl = it.level = 0,\n\t      $dataLvl = it.dataLevel = 0,\n\t      $data = 'data';\n\t    it.rootId = it.resolve.fullPath(it.self._getId(it.root.schema));\n\t    it.baseId = it.baseId || it.rootId;\n\t    delete it.isTop;\n\t    it.dataPathArr = [\"\"];\n\t    if (it.schema.default !== undefined && it.opts.useDefaults && it.opts.strictDefaults) {\n\t      var $defaultMsg = 'default is ignored in the schema root';\n\t      if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg);\n\t      else throw new Error($defaultMsg);\n\t    }\n\t    out += ' var vErrors = null; ';\n\t    out += ' var errors = 0;     ';\n\t    out += ' if (rootData === undefined) rootData = data; ';\n\t  } else {\n\t    var $lvl = it.level,\n\t      $dataLvl = it.dataLevel,\n\t      $data = 'data' + ($dataLvl || '');\n\t    if ($id) it.baseId = it.resolve.url(it.baseId, $id);\n\t    if ($async && !it.async) throw new Error('async schema in sync schema');\n\t    out += ' var errs_' + ($lvl) + ' = errors;';\n\t  }\n\t  var $valid = 'valid' + $lvl,\n\t    $breakOnError = !it.opts.allErrors,\n\t    $closingBraces1 = '',\n\t    $closingBraces2 = '';\n\t  var $errorKeyword;\n\t  var $typeSchema = it.schema.type,\n\t    $typeIsArray = Array.isArray($typeSchema);\n\t  if ($typeSchema && it.opts.nullable && it.schema.nullable === true) {\n\t    if ($typeIsArray) {\n\t      if ($typeSchema.indexOf('null') == -1) $typeSchema = $typeSchema.concat('null');\n\t    } else if ($typeSchema != 'null') {\n\t      $typeSchema = [$typeSchema, 'null'];\n\t      $typeIsArray = true;\n\t    }\n\t  }\n\t  if ($typeIsArray && $typeSchema.length == 1) {\n\t    $typeSchema = $typeSchema[0];\n\t    $typeIsArray = false;\n\t  }\n\t  if (it.schema.$ref && $refKeywords) {\n\t    if (it.opts.extendRefs == 'fail') {\n\t      throw new Error('$ref: validation keywords used in schema at path \"' + it.errSchemaPath + '\" (see option extendRefs)');\n\t    } else if (it.opts.extendRefs !== true) {\n\t      $refKeywords = false;\n\t      it.logger.warn('$ref: keywords ignored in schema at path \"' + it.errSchemaPath + '\"');\n\t    }\n\t  }\n\t  if (it.schema.$comment && it.opts.$comment) {\n\t    out += ' ' + (it.RULES.all.$comment.code(it, '$comment'));\n\t  }\n\t  if ($typeSchema) {\n\t    if (it.opts.coerceTypes) {\n\t      var $coerceToTypes = it.util.coerceToTypes(it.opts.coerceTypes, $typeSchema);\n\t    }\n\t    var $rulesGroup = it.RULES.types[$typeSchema];\n\t    if ($coerceToTypes || $typeIsArray || $rulesGroup === true || ($rulesGroup && !$shouldUseGroup($rulesGroup))) {\n\t      var $schemaPath = it.schemaPath + '.type',\n\t        $errSchemaPath = it.errSchemaPath + '/type';\n\t      var $schemaPath = it.schemaPath + '.type',\n\t        $errSchemaPath = it.errSchemaPath + '/type',\n\t        $method = $typeIsArray ? 'checkDataTypes' : 'checkDataType';\n\t      out += ' if (' + (it.util[$method]($typeSchema, $data, it.opts.strictNumbers, true)) + ') { ';\n\t      if ($coerceToTypes) {\n\t        var $dataType = 'dataType' + $lvl,\n\t          $coerced = 'coerced' + $lvl;\n\t        out += ' var ' + ($dataType) + ' = typeof ' + ($data) + '; var ' + ($coerced) + ' = undefined; ';\n\t        if (it.opts.coerceTypes == 'array') {\n\t          out += ' if (' + ($dataType) + ' == \\'object\\' && Array.isArray(' + ($data) + ') && ' + ($data) + '.length == 1) { ' + ($data) + ' = ' + ($data) + '[0]; ' + ($dataType) + ' = typeof ' + ($data) + '; if (' + (it.util.checkDataType(it.schema.type, $data, it.opts.strictNumbers)) + ') ' + ($coerced) + ' = ' + ($data) + '; } ';\n\t        }\n\t        out += ' if (' + ($coerced) + ' !== undefined) ; ';\n\t        var arr1 = $coerceToTypes;\n\t        if (arr1) {\n\t          var $type, $i = -1,\n\t            l1 = arr1.length - 1;\n\t          while ($i < l1) {\n\t            $type = arr1[$i += 1];\n\t            if ($type == 'string') {\n\t              out += ' else if (' + ($dataType) + ' == \\'number\\' || ' + ($dataType) + ' == \\'boolean\\') ' + ($coerced) + ' = \\'\\' + ' + ($data) + '; else if (' + ($data) + ' === null) ' + ($coerced) + ' = \\'\\'; ';\n\t            } else if ($type == 'number' || $type == 'integer') {\n\t              out += ' else if (' + ($dataType) + ' == \\'boolean\\' || ' + ($data) + ' === null || (' + ($dataType) + ' == \\'string\\' && ' + ($data) + ' && ' + ($data) + ' == +' + ($data) + ' ';\n\t              if ($type == 'integer') {\n\t                out += ' && !(' + ($data) + ' % 1)';\n\t              }\n\t              out += ')) ' + ($coerced) + ' = +' + ($data) + '; ';\n\t            } else if ($type == 'boolean') {\n\t              out += ' else if (' + ($data) + ' === \\'false\\' || ' + ($data) + ' === 0 || ' + ($data) + ' === null) ' + ($coerced) + ' = false; else if (' + ($data) + ' === \\'true\\' || ' + ($data) + ' === 1) ' + ($coerced) + ' = true; ';\n\t            } else if ($type == 'null') {\n\t              out += ' else if (' + ($data) + ' === \\'\\' || ' + ($data) + ' === 0 || ' + ($data) + ' === false) ' + ($coerced) + ' = null; ';\n\t            } else if (it.opts.coerceTypes == 'array' && $type == 'array') {\n\t              out += ' else if (' + ($dataType) + ' == \\'string\\' || ' + ($dataType) + ' == \\'number\\' || ' + ($dataType) + ' == \\'boolean\\' || ' + ($data) + ' == null) ' + ($coerced) + ' = [' + ($data) + ']; ';\n\t            }\n\t          }\n\t        }\n\t        out += ' else {   ';\n\t        var $$outStack = $$outStack || [];\n\t        $$outStack.push(out);\n\t        out = ''; /* istanbul ignore else */\n\t        if (it.createErrors !== false) {\n\t          out += ' { keyword: \\'' + ($errorKeyword || 'type') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \\'';\n\t          if ($typeIsArray) {\n\t            out += '' + ($typeSchema.join(\",\"));\n\t          } else {\n\t            out += '' + ($typeSchema);\n\t          }\n\t          out += '\\' } ';\n\t          if (it.opts.messages !== false) {\n\t            out += ' , message: \\'should be ';\n\t            if ($typeIsArray) {\n\t              out += '' + ($typeSchema.join(\",\"));\n\t            } else {\n\t              out += '' + ($typeSchema);\n\t            }\n\t            out += '\\' ';\n\t          }\n\t          if (it.opts.verbose) {\n\t            out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n\t          }\n\t          out += ' } ';\n\t        } else {\n\t          out += ' {} ';\n\t        }\n\t        var __err = out;\n\t        out = $$outStack.pop();\n\t        if (!it.compositeRule && $breakOnError) {\n\t          /* istanbul ignore if */\n\t          if (it.async) {\n\t            out += ' throw new ValidationError([' + (__err) + ']); ';\n\t          } else {\n\t            out += ' validate.errors = [' + (__err) + ']; return false; ';\n\t          }\n\t        } else {\n\t          out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n\t        }\n\t        out += ' } if (' + ($coerced) + ' !== undefined) {  ';\n\t        var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData',\n\t          $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty';\n\t        out += ' ' + ($data) + ' = ' + ($coerced) + '; ';\n\t        if (!$dataLvl) {\n\t          out += 'if (' + ($parentData) + ' !== undefined)';\n\t        }\n\t        out += ' ' + ($parentData) + '[' + ($parentDataProperty) + '] = ' + ($coerced) + '; } ';\n\t      } else {\n\t        var $$outStack = $$outStack || [];\n\t        $$outStack.push(out);\n\t        out = ''; /* istanbul ignore else */\n\t        if (it.createErrors !== false) {\n\t          out += ' { keyword: \\'' + ($errorKeyword || 'type') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \\'';\n\t          if ($typeIsArray) {\n\t            out += '' + ($typeSchema.join(\",\"));\n\t          } else {\n\t            out += '' + ($typeSchema);\n\t          }\n\t          out += '\\' } ';\n\t          if (it.opts.messages !== false) {\n\t            out += ' , message: \\'should be ';\n\t            if ($typeIsArray) {\n\t              out += '' + ($typeSchema.join(\",\"));\n\t            } else {\n\t              out += '' + ($typeSchema);\n\t            }\n\t            out += '\\' ';\n\t          }\n\t          if (it.opts.verbose) {\n\t            out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n\t          }\n\t          out += ' } ';\n\t        } else {\n\t          out += ' {} ';\n\t        }\n\t        var __err = out;\n\t        out = $$outStack.pop();\n\t        if (!it.compositeRule && $breakOnError) {\n\t          /* istanbul ignore if */\n\t          if (it.async) {\n\t            out += ' throw new ValidationError([' + (__err) + ']); ';\n\t          } else {\n\t            out += ' validate.errors = [' + (__err) + ']; return false; ';\n\t          }\n\t        } else {\n\t          out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n\t        }\n\t      }\n\t      out += ' } ';\n\t    }\n\t  }\n\t  if (it.schema.$ref && !$refKeywords) {\n\t    out += ' ' + (it.RULES.all.$ref.code(it, '$ref')) + ' ';\n\t    if ($breakOnError) {\n\t      out += ' } if (errors === ';\n\t      if ($top) {\n\t        out += '0';\n\t      } else {\n\t        out += 'errs_' + ($lvl);\n\t      }\n\t      out += ') { ';\n\t      $closingBraces2 += '}';\n\t    }\n\t  } else {\n\t    var arr2 = it.RULES;\n\t    if (arr2) {\n\t      var $rulesGroup, i2 = -1,\n\t        l2 = arr2.length - 1;\n\t      while (i2 < l2) {\n\t        $rulesGroup = arr2[i2 += 1];\n\t        if ($shouldUseGroup($rulesGroup)) {\n\t          if ($rulesGroup.type) {\n\t            out += ' if (' + (it.util.checkDataType($rulesGroup.type, $data, it.opts.strictNumbers)) + ') { ';\n\t          }\n\t          if (it.opts.useDefaults) {\n\t            if ($rulesGroup.type == 'object' && it.schema.properties) {\n\t              var $schema = it.schema.properties,\n\t                $schemaKeys = Object.keys($schema);\n\t              var arr3 = $schemaKeys;\n\t              if (arr3) {\n\t                var $propertyKey, i3 = -1,\n\t                  l3 = arr3.length - 1;\n\t                while (i3 < l3) {\n\t                  $propertyKey = arr3[i3 += 1];\n\t                  var $sch = $schema[$propertyKey];\n\t                  if ($sch.default !== undefined) {\n\t                    var $passData = $data + it.util.getProperty($propertyKey);\n\t                    if (it.compositeRule) {\n\t                      if (it.opts.strictDefaults) {\n\t                        var $defaultMsg = 'default is ignored for: ' + $passData;\n\t                        if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg);\n\t                        else throw new Error($defaultMsg);\n\t                      }\n\t                    } else {\n\t                      out += ' if (' + ($passData) + ' === undefined ';\n\t                      if (it.opts.useDefaults == 'empty') {\n\t                        out += ' || ' + ($passData) + ' === null || ' + ($passData) + ' === \\'\\' ';\n\t                      }\n\t                      out += ' ) ' + ($passData) + ' = ';\n\t                      if (it.opts.useDefaults == 'shared') {\n\t                        out += ' ' + (it.useDefault($sch.default)) + ' ';\n\t                      } else {\n\t                        out += ' ' + (JSON.stringify($sch.default)) + ' ';\n\t                      }\n\t                      out += '; ';\n\t                    }\n\t                  }\n\t                }\n\t              }\n\t            } else if ($rulesGroup.type == 'array' && Array.isArray(it.schema.items)) {\n\t              var arr4 = it.schema.items;\n\t              if (arr4) {\n\t                var $sch, $i = -1,\n\t                  l4 = arr4.length - 1;\n\t                while ($i < l4) {\n\t                  $sch = arr4[$i += 1];\n\t                  if ($sch.default !== undefined) {\n\t                    var $passData = $data + '[' + $i + ']';\n\t                    if (it.compositeRule) {\n\t                      if (it.opts.strictDefaults) {\n\t                        var $defaultMsg = 'default is ignored for: ' + $passData;\n\t                        if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg);\n\t                        else throw new Error($defaultMsg);\n\t                      }\n\t                    } else {\n\t                      out += ' if (' + ($passData) + ' === undefined ';\n\t                      if (it.opts.useDefaults == 'empty') {\n\t                        out += ' || ' + ($passData) + ' === null || ' + ($passData) + ' === \\'\\' ';\n\t                      }\n\t                      out += ' ) ' + ($passData) + ' = ';\n\t                      if (it.opts.useDefaults == 'shared') {\n\t                        out += ' ' + (it.useDefault($sch.default)) + ' ';\n\t                      } else {\n\t                        out += ' ' + (JSON.stringify($sch.default)) + ' ';\n\t                      }\n\t                      out += '; ';\n\t                    }\n\t                  }\n\t                }\n\t              }\n\t            }\n\t          }\n\t          var arr5 = $rulesGroup.rules;\n\t          if (arr5) {\n\t            var $rule, i5 = -1,\n\t              l5 = arr5.length - 1;\n\t            while (i5 < l5) {\n\t              $rule = arr5[i5 += 1];\n\t              if ($shouldUseRule($rule)) {\n\t                var $code = $rule.code(it, $rule.keyword, $rulesGroup.type);\n\t                if ($code) {\n\t                  out += ' ' + ($code) + ' ';\n\t                  if ($breakOnError) {\n\t                    $closingBraces1 += '}';\n\t                  }\n\t                }\n\t              }\n\t            }\n\t          }\n\t          if ($breakOnError) {\n\t            out += ' ' + ($closingBraces1) + ' ';\n\t            $closingBraces1 = '';\n\t          }\n\t          if ($rulesGroup.type) {\n\t            out += ' } ';\n\t            if ($typeSchema && $typeSchema === $rulesGroup.type && !$coerceToTypes) {\n\t              out += ' else { ';\n\t              var $schemaPath = it.schemaPath + '.type',\n\t                $errSchemaPath = it.errSchemaPath + '/type';\n\t              var $$outStack = $$outStack || [];\n\t              $$outStack.push(out);\n\t              out = ''; /* istanbul ignore else */\n\t              if (it.createErrors !== false) {\n\t                out += ' { keyword: \\'' + ($errorKeyword || 'type') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \\'';\n\t                if ($typeIsArray) {\n\t                  out += '' + ($typeSchema.join(\",\"));\n\t                } else {\n\t                  out += '' + ($typeSchema);\n\t                }\n\t                out += '\\' } ';\n\t                if (it.opts.messages !== false) {\n\t                  out += ' , message: \\'should be ';\n\t                  if ($typeIsArray) {\n\t                    out += '' + ($typeSchema.join(\",\"));\n\t                  } else {\n\t                    out += '' + ($typeSchema);\n\t                  }\n\t                  out += '\\' ';\n\t                }\n\t                if (it.opts.verbose) {\n\t                  out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n\t                }\n\t                out += ' } ';\n\t              } else {\n\t                out += ' {} ';\n\t              }\n\t              var __err = out;\n\t              out = $$outStack.pop();\n\t              if (!it.compositeRule && $breakOnError) {\n\t                /* istanbul ignore if */\n\t                if (it.async) {\n\t                  out += ' throw new ValidationError([' + (__err) + ']); ';\n\t                } else {\n\t                  out += ' validate.errors = [' + (__err) + ']; return false; ';\n\t                }\n\t              } else {\n\t                out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n\t              }\n\t              out += ' } ';\n\t            }\n\t          }\n\t          if ($breakOnError) {\n\t            out += ' if (errors === ';\n\t            if ($top) {\n\t              out += '0';\n\t            } else {\n\t              out += 'errs_' + ($lvl);\n\t            }\n\t            out += ') { ';\n\t            $closingBraces2 += '}';\n\t          }\n\t        }\n\t      }\n\t    }\n\t  }\n\t  if ($breakOnError) {\n\t    out += ' ' + ($closingBraces2) + ' ';\n\t  }\n\t  if ($top) {\n\t    if ($async) {\n\t      out += ' if (errors === 0) return data;           ';\n\t      out += ' else throw new ValidationError(vErrors); ';\n\t    } else {\n\t      out += ' validate.errors = vErrors; ';\n\t      out += ' return errors === 0;       ';\n\t    }\n\t    out += ' }; return validate;';\n\t  } else {\n\t    out += ' var ' + ($valid) + ' = errors === errs_' + ($lvl) + ';';\n\t  }\n\n\t  function $shouldUseGroup($rulesGroup) {\n\t    var rules = $rulesGroup.rules;\n\t    for (var i = 0; i < rules.length; i++)\n\t      if ($shouldUseRule(rules[i])) return true;\n\t  }\n\n\t  function $shouldUseRule($rule) {\n\t    return it.schema[$rule.keyword] !== undefined || ($rule.implements && $ruleImplementsSomeKeyword($rule));\n\t  }\n\n\t  function $ruleImplementsSomeKeyword($rule) {\n\t    var impl = $rule.implements;\n\t    for (var i = 0; i < impl.length; i++)\n\t      if (it.schema[impl[i]] !== undefined) return true;\n\t  }\n\t  return out;\n\t};\n\treturn validate;\n}\n\nvar compile_1;\nvar hasRequiredCompile;\n\nfunction requireCompile () {\n\tif (hasRequiredCompile) return compile_1;\n\thasRequiredCompile = 1;\n\n\tvar resolve = requireResolve()\n\t  , util = requireUtil()\n\t  , errorClasses = requireError_classes()\n\t  , stableStringify = requireFastJsonStableStringify();\n\n\tvar validateGenerator = requireValidate();\n\n\t/**\n\t * Functions below are used inside compiled validations function\n\t */\n\n\tvar ucs2length = util.ucs2length;\n\tvar equal = requireFastDeepEqual();\n\n\t// this error is thrown by async schemas to return validation errors via exception\n\tvar ValidationError = errorClasses.Validation;\n\n\tcompile_1 = compile;\n\n\n\t/**\n\t * Compiles schema to validation function\n\t * @this   Ajv\n\t * @param  {Object} schema schema object\n\t * @param  {Object} root object with information about the root schema for this schema\n\t * @param  {Object} localRefs the hash of local references inside the schema (created by resolve.id), used for inline resolution\n\t * @param  {String} baseId base ID for IDs in the schema\n\t * @return {Function} validation function\n\t */\n\tfunction compile(schema, root, localRefs, baseId) {\n\t  /* jshint validthis: true, evil: true */\n\t  /* eslint no-shadow: 0 */\n\t  var self = this\n\t    , opts = this._opts\n\t    , refVal = [ undefined ]\n\t    , refs = {}\n\t    , patterns = []\n\t    , patternsHash = {}\n\t    , defaults = []\n\t    , defaultsHash = {}\n\t    , customRules = [];\n\n\t  root = root || { schema: schema, refVal: refVal, refs: refs };\n\n\t  var c = checkCompiling.call(this, schema, root, baseId);\n\t  var compilation = this._compilations[c.index];\n\t  if (c.compiling) return (compilation.callValidate = callValidate);\n\n\t  var formats = this._formats;\n\t  var RULES = this.RULES;\n\n\t  try {\n\t    var v = localCompile(schema, root, localRefs, baseId);\n\t    compilation.validate = v;\n\t    var cv = compilation.callValidate;\n\t    if (cv) {\n\t      cv.schema = v.schema;\n\t      cv.errors = null;\n\t      cv.refs = v.refs;\n\t      cv.refVal = v.refVal;\n\t      cv.root = v.root;\n\t      cv.$async = v.$async;\n\t      if (opts.sourceCode) cv.source = v.source;\n\t    }\n\t    return v;\n\t  } finally {\n\t    endCompiling.call(this, schema, root, baseId);\n\t  }\n\n\t  /* @this   {*} - custom context, see passContext option */\n\t  function callValidate() {\n\t    /* jshint validthis: true */\n\t    var validate = compilation.validate;\n\t    var result = validate.apply(this, arguments);\n\t    callValidate.errors = validate.errors;\n\t    return result;\n\t  }\n\n\t  function localCompile(_schema, _root, localRefs, baseId) {\n\t    var isRoot = !_root || (_root && _root.schema == _schema);\n\t    if (_root.schema != root.schema)\n\t      return compile.call(self, _schema, _root, localRefs, baseId);\n\n\t    var $async = _schema.$async === true;\n\n\t    var sourceCode = validateGenerator({\n\t      isTop: true,\n\t      schema: _schema,\n\t      isRoot: isRoot,\n\t      baseId: baseId,\n\t      root: _root,\n\t      schemaPath: '',\n\t      errSchemaPath: '#',\n\t      errorPath: '\"\"',\n\t      MissingRefError: errorClasses.MissingRef,\n\t      RULES: RULES,\n\t      validate: validateGenerator,\n\t      util: util,\n\t      resolve: resolve,\n\t      resolveRef: resolveRef,\n\t      usePattern: usePattern,\n\t      useDefault: useDefault,\n\t      useCustomRule: useCustomRule,\n\t      opts: opts,\n\t      formats: formats,\n\t      logger: self.logger,\n\t      self: self\n\t    });\n\n\t    sourceCode = vars(refVal, refValCode) + vars(patterns, patternCode)\n\t                   + vars(defaults, defaultCode) + vars(customRules, customRuleCode)\n\t                   + sourceCode;\n\n\t    if (opts.processCode) sourceCode = opts.processCode(sourceCode, _schema);\n\t    // console.log('\\n\\n\\n *** \\n', JSON.stringify(sourceCode));\n\t    var validate;\n\t    try {\n\t      var makeValidate = new Function(\n\t        'self',\n\t        'RULES',\n\t        'formats',\n\t        'root',\n\t        'refVal',\n\t        'defaults',\n\t        'customRules',\n\t        'equal',\n\t        'ucs2length',\n\t        'ValidationError',\n\t        sourceCode\n\t      );\n\n\t      validate = makeValidate(\n\t        self,\n\t        RULES,\n\t        formats,\n\t        root,\n\t        refVal,\n\t        defaults,\n\t        customRules,\n\t        equal,\n\t        ucs2length,\n\t        ValidationError\n\t      );\n\n\t      refVal[0] = validate;\n\t    } catch(e) {\n\t      self.logger.error('Error compiling schema, function code:', sourceCode);\n\t      throw e;\n\t    }\n\n\t    validate.schema = _schema;\n\t    validate.errors = null;\n\t    validate.refs = refs;\n\t    validate.refVal = refVal;\n\t    validate.root = isRoot ? validate : _root;\n\t    if ($async) validate.$async = true;\n\t    if (opts.sourceCode === true) {\n\t      validate.source = {\n\t        code: sourceCode,\n\t        patterns: patterns,\n\t        defaults: defaults\n\t      };\n\t    }\n\n\t    return validate;\n\t  }\n\n\t  function resolveRef(baseId, ref, isRoot) {\n\t    ref = resolve.url(baseId, ref);\n\t    var refIndex = refs[ref];\n\t    var _refVal, refCode;\n\t    if (refIndex !== undefined) {\n\t      _refVal = refVal[refIndex];\n\t      refCode = 'refVal[' + refIndex + ']';\n\t      return resolvedRef(_refVal, refCode);\n\t    }\n\t    if (!isRoot && root.refs) {\n\t      var rootRefId = root.refs[ref];\n\t      if (rootRefId !== undefined) {\n\t        _refVal = root.refVal[rootRefId];\n\t        refCode = addLocalRef(ref, _refVal);\n\t        return resolvedRef(_refVal, refCode);\n\t      }\n\t    }\n\n\t    refCode = addLocalRef(ref);\n\t    var v = resolve.call(self, localCompile, root, ref);\n\t    if (v === undefined) {\n\t      var localSchema = localRefs && localRefs[ref];\n\t      if (localSchema) {\n\t        v = resolve.inlineRef(localSchema, opts.inlineRefs)\n\t            ? localSchema\n\t            : compile.call(self, localSchema, root, localRefs, baseId);\n\t      }\n\t    }\n\n\t    if (v === undefined) {\n\t      removeLocalRef(ref);\n\t    } else {\n\t      replaceLocalRef(ref, v);\n\t      return resolvedRef(v, refCode);\n\t    }\n\t  }\n\n\t  function addLocalRef(ref, v) {\n\t    var refId = refVal.length;\n\t    refVal[refId] = v;\n\t    refs[ref] = refId;\n\t    return 'refVal' + refId;\n\t  }\n\n\t  function removeLocalRef(ref) {\n\t    delete refs[ref];\n\t  }\n\n\t  function replaceLocalRef(ref, v) {\n\t    var refId = refs[ref];\n\t    refVal[refId] = v;\n\t  }\n\n\t  function resolvedRef(refVal, code) {\n\t    return typeof refVal == 'object' || typeof refVal == 'boolean'\n\t            ? { code: code, schema: refVal, inline: true }\n\t            : { code: code, $async: refVal && !!refVal.$async };\n\t  }\n\n\t  function usePattern(regexStr) {\n\t    var index = patternsHash[regexStr];\n\t    if (index === undefined) {\n\t      index = patternsHash[regexStr] = patterns.length;\n\t      patterns[index] = regexStr;\n\t    }\n\t    return 'pattern' + index;\n\t  }\n\n\t  function useDefault(value) {\n\t    switch (typeof value) {\n\t      case 'boolean':\n\t      case 'number':\n\t        return '' + value;\n\t      case 'string':\n\t        return util.toQuotedString(value);\n\t      case 'object':\n\t        if (value === null) return 'null';\n\t        var valueStr = stableStringify(value);\n\t        var index = defaultsHash[valueStr];\n\t        if (index === undefined) {\n\t          index = defaultsHash[valueStr] = defaults.length;\n\t          defaults[index] = value;\n\t        }\n\t        return 'default' + index;\n\t    }\n\t  }\n\n\t  function useCustomRule(rule, schema, parentSchema, it) {\n\t    if (self._opts.validateSchema !== false) {\n\t      var deps = rule.definition.dependencies;\n\t      if (deps && !deps.every(function(keyword) {\n\t        return Object.prototype.hasOwnProperty.call(parentSchema, keyword);\n\t      }))\n\t        throw new Error('parent schema must have all required keywords: ' + deps.join(','));\n\n\t      var validateSchema = rule.definition.validateSchema;\n\t      if (validateSchema) {\n\t        var valid = validateSchema(schema);\n\t        if (!valid) {\n\t          var message = 'keyword schema is invalid: ' + self.errorsText(validateSchema.errors);\n\t          if (self._opts.validateSchema == 'log') self.logger.error(message);\n\t          else throw new Error(message);\n\t        }\n\t      }\n\t    }\n\n\t    var compile = rule.definition.compile\n\t      , inline = rule.definition.inline\n\t      , macro = rule.definition.macro;\n\n\t    var validate;\n\t    if (compile) {\n\t      validate = compile.call(self, schema, parentSchema, it);\n\t    } else if (macro) {\n\t      validate = macro.call(self, schema, parentSchema, it);\n\t      if (opts.validateSchema !== false) self.validateSchema(validate, true);\n\t    } else if (inline) {\n\t      validate = inline.call(self, it, rule.keyword, schema, parentSchema);\n\t    } else {\n\t      validate = rule.definition.validate;\n\t      if (!validate) return;\n\t    }\n\n\t    if (validate === undefined)\n\t      throw new Error('custom keyword \"' + rule.keyword + '\"failed to compile');\n\n\t    var index = customRules.length;\n\t    customRules[index] = validate;\n\n\t    return {\n\t      code: 'customRule' + index,\n\t      validate: validate\n\t    };\n\t  }\n\t}\n\n\n\t/**\n\t * Checks if the schema is currently compiled\n\t * @this   Ajv\n\t * @param  {Object} schema schema to compile\n\t * @param  {Object} root root object\n\t * @param  {String} baseId base schema ID\n\t * @return {Object} object with properties \"index\" (compilation index) and \"compiling\" (boolean)\n\t */\n\tfunction checkCompiling(schema, root, baseId) {\n\t  /* jshint validthis: true */\n\t  var index = compIndex.call(this, schema, root, baseId);\n\t  if (index >= 0) return { index: index, compiling: true };\n\t  index = this._compilations.length;\n\t  this._compilations[index] = {\n\t    schema: schema,\n\t    root: root,\n\t    baseId: baseId\n\t  };\n\t  return { index: index, compiling: false };\n\t}\n\n\n\t/**\n\t * Removes the schema from the currently compiled list\n\t * @this   Ajv\n\t * @param  {Object} schema schema to compile\n\t * @param  {Object} root root object\n\t * @param  {String} baseId base schema ID\n\t */\n\tfunction endCompiling(schema, root, baseId) {\n\t  /* jshint validthis: true */\n\t  var i = compIndex.call(this, schema, root, baseId);\n\t  if (i >= 0) this._compilations.splice(i, 1);\n\t}\n\n\n\t/**\n\t * Index of schema compilation in the currently compiled list\n\t * @this   Ajv\n\t * @param  {Object} schema schema to compile\n\t * @param  {Object} root root object\n\t * @param  {String} baseId base schema ID\n\t * @return {Integer} compilation index\n\t */\n\tfunction compIndex(schema, root, baseId) {\n\t  /* jshint validthis: true */\n\t  for (var i=0; i<this._compilations.length; i++) {\n\t    var c = this._compilations[i];\n\t    if (c.schema == schema && c.root == root && c.baseId == baseId) return i;\n\t  }\n\t  return -1;\n\t}\n\n\n\tfunction patternCode(i, patterns) {\n\t  return 'var pattern' + i + ' = new RegExp(' + util.toQuotedString(patterns[i]) + ');';\n\t}\n\n\n\tfunction defaultCode(i) {\n\t  return 'var default' + i + ' = defaults[' + i + '];';\n\t}\n\n\n\tfunction refValCode(i, refVal) {\n\t  return refVal[i] === undefined ? '' : 'var refVal' + i + ' = refVal[' + i + '];';\n\t}\n\n\n\tfunction customRuleCode(i) {\n\t  return 'var customRule' + i + ' = customRules[' + i + '];';\n\t}\n\n\n\tfunction vars(arr, statement) {\n\t  if (!arr.length) return '';\n\t  var code = '';\n\t  for (var i=0; i<arr.length; i++)\n\t    code += statement(i, arr);\n\t  return code;\n\t}\n\treturn compile_1;\n}\n\nvar cache = {exports: {}};\n\nvar hasRequiredCache;\n\nfunction requireCache () {\n\tif (hasRequiredCache) return cache.exports;\n\thasRequiredCache = 1;\n\n\n\tvar Cache = cache.exports = function Cache() {\n\t  this._cache = {};\n\t};\n\n\n\tCache.prototype.put = function Cache_put(key, value) {\n\t  this._cache[key] = value;\n\t};\n\n\n\tCache.prototype.get = function Cache_get(key) {\n\t  return this._cache[key];\n\t};\n\n\n\tCache.prototype.del = function Cache_del(key) {\n\t  delete this._cache[key];\n\t};\n\n\n\tCache.prototype.clear = function Cache_clear() {\n\t  this._cache = {};\n\t};\n\treturn cache.exports;\n}\n\nvar formats_1;\nvar hasRequiredFormats;\n\nfunction requireFormats () {\n\tif (hasRequiredFormats) return formats_1;\n\thasRequiredFormats = 1;\n\n\tvar util = requireUtil();\n\n\tvar DATE = /^(\\d\\d\\d\\d)-(\\d\\d)-(\\d\\d)$/;\n\tvar DAYS = [0,31,28,31,30,31,30,31,31,30,31,30,31];\n\tvar TIME = /^(\\d\\d):(\\d\\d):(\\d\\d)(\\.\\d+)?(z|[+-]\\d\\d(?::?\\d\\d)?)?$/i;\n\tvar HOSTNAME = /^(?=.{1,253}\\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\\.?$/i;\n\tvar URI = /^(?:[a-z][a-z0-9+\\-.]*:)(?:\\/?\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\\.[a-z0-9\\-._~!$&'()*+,;=:]+)\\]|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)|(?:[a-z0-9\\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\\d*)?(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\\?(?:[a-z0-9\\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;\n\tvar URIREF = /^(?:[a-z][a-z0-9+\\-.]*:)?(?:\\/?\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\\.[a-z0-9\\-._~!$&'()*+,;=:]+)\\]|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)|(?:[a-z0-9\\-._~!$&'\"()*+,;=]|%[0-9a-f]{2})*)(?::\\d*)?(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*|\\/(?:(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\\?(?:[a-z0-9\\-._~!$&'\"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\\-._~!$&'\"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;\n\t// uri-template: https://tools.ietf.org/html/rfc6570\n\tvar URITEMPLATE = /^(?:(?:[^\\x00-\\x20\"'<>%\\\\^`{|}]|%[0-9a-f]{2})|\\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\\*)?)*\\})*$/i;\n\t// For the source: https://gist.github.com/dperini/729294\n\t// For test cases: https://mathiasbynens.be/demo/url-regex\n\t// @todo Delete current URL in favour of the commented out URL rule when this issue is fixed https://github.com/eslint/eslint/issues/7983.\n\t// var URL = /^(?:(?:https?|ftp):\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?!10(?:\\.\\d{1,3}){3})(?!127(?:\\.\\d{1,3}){3})(?!169\\.254(?:\\.\\d{1,3}){2})(?!192\\.168(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u{00a1}-\\u{ffff}0-9]+-)*[a-z\\u{00a1}-\\u{ffff}0-9]+)(?:\\.(?:[a-z\\u{00a1}-\\u{ffff}0-9]+-)*[a-z\\u{00a1}-\\u{ffff}0-9]+)*(?:\\.(?:[a-z\\u{00a1}-\\u{ffff}]{2,})))(?::\\d{2,5})?(?:\\/[^\\s]*)?$/iu;\n\tvar URL = /^(?:(?:http[s\\u017F]?|ftp):\\/\\/)(?:(?:[\\0-\\x08\\x0E-\\x1F!-\\x9F\\xA1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\uE000-\\uFEFE\\uFF00-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+(?::(?:[\\0-\\x08\\x0E-\\x1F!-\\x9F\\xA1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\uE000-\\uFEFE\\uFF00-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])*)?@)?(?:(?!10(?:\\.[0-9]{1,3}){3})(?!127(?:\\.[0-9]{1,3}){3})(?!169\\.254(?:\\.[0-9]{1,3}){2})(?!192\\.168(?:\\.[0-9]{1,3}){2})(?!172\\.(?:1[6-9]|2[0-9]|3[01])(?:\\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9a-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+-)*(?:[0-9a-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+)(?:\\.(?:(?:[0-9a-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+-)*(?:[0-9a-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+)*(?:\\.(?:(?:[a-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\\/(?:[\\0-\\x08\\x0E-\\x1F!-\\x9F\\xA1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\uE000-\\uFEFE\\uFF00-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])*)?$/i;\n\tvar UUID = /^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i;\n\tvar JSON_POINTER = /^(?:\\/(?:[^~/]|~0|~1)*)*$/;\n\tvar JSON_POINTER_URI_FRAGMENT = /^#(?:\\/(?:[a-z0-9_\\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i;\n\tvar RELATIVE_JSON_POINTER = /^(?:0|[1-9][0-9]*)(?:#|(?:\\/(?:[^~/]|~0|~1)*)*)$/;\n\n\n\tformats_1 = formats;\n\n\tfunction formats(mode) {\n\t  mode = mode == 'full' ? 'full' : 'fast';\n\t  return util.copy(formats[mode]);\n\t}\n\n\n\tformats.fast = {\n\t  // date: http://tools.ietf.org/html/rfc3339#section-5.6\n\t  date: /^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d$/,\n\t  // date-time: http://tools.ietf.org/html/rfc3339#section-5.6\n\t  time: /^(?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)?$/i,\n\t  'date-time': /^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d[t\\s](?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)$/i,\n\t  // uri: https://github.com/mafintosh/is-my-json-valid/blob/master/formats.js\n\t  uri: /^(?:[a-z][a-z0-9+\\-.]*:)(?:\\/?\\/)?[^\\s]*$/i,\n\t  'uri-reference': /^(?:(?:[a-z][a-z0-9+\\-.]*:)?\\/?\\/)?(?:[^\\\\\\s#][^\\s#]*)?(?:#[^\\\\\\s]*)?$/i,\n\t  'uri-template': URITEMPLATE,\n\t  url: URL,\n\t  // email (sources from jsen validator):\n\t  // http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address#answer-8829363\n\t  // http://www.w3.org/TR/html5/forms.html#valid-e-mail-address (search for 'willful violation')\n\t  email: /^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,\n\t  hostname: HOSTNAME,\n\t  // optimized https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html\n\t  ipv4: /^(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$/,\n\t  // optimized http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses\n\t  ipv6: /^\\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(?:%.+)?\\s*$/i,\n\t  regex: regex,\n\t  // uuid: http://tools.ietf.org/html/rfc4122\n\t  uuid: UUID,\n\t  // JSON-pointer: https://tools.ietf.org/html/rfc6901\n\t  // uri fragment: https://tools.ietf.org/html/rfc3986#appendix-A\n\t  'json-pointer': JSON_POINTER,\n\t  'json-pointer-uri-fragment': JSON_POINTER_URI_FRAGMENT,\n\t  // relative JSON-pointer: http://tools.ietf.org/html/draft-luff-relative-json-pointer-00\n\t  'relative-json-pointer': RELATIVE_JSON_POINTER\n\t};\n\n\n\tformats.full = {\n\t  date: date,\n\t  time: time,\n\t  'date-time': date_time,\n\t  uri: uri,\n\t  'uri-reference': URIREF,\n\t  'uri-template': URITEMPLATE,\n\t  url: URL,\n\t  email: /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,\n\t  hostname: HOSTNAME,\n\t  ipv4: /^(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$/,\n\t  ipv6: /^\\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(?:%.+)?\\s*$/i,\n\t  regex: regex,\n\t  uuid: UUID,\n\t  'json-pointer': JSON_POINTER,\n\t  'json-pointer-uri-fragment': JSON_POINTER_URI_FRAGMENT,\n\t  'relative-json-pointer': RELATIVE_JSON_POINTER\n\t};\n\n\n\tfunction isLeapYear(year) {\n\t  // https://tools.ietf.org/html/rfc3339#appendix-C\n\t  return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n\t}\n\n\n\tfunction date(str) {\n\t  // full-date from http://tools.ietf.org/html/rfc3339#section-5.6\n\t  var matches = str.match(DATE);\n\t  if (!matches) return false;\n\n\t  var year = +matches[1];\n\t  var month = +matches[2];\n\t  var day = +matches[3];\n\n\t  return month >= 1 && month <= 12 && day >= 1 &&\n\t          day <= (month == 2 && isLeapYear(year) ? 29 : DAYS[month]);\n\t}\n\n\n\tfunction time(str, full) {\n\t  var matches = str.match(TIME);\n\t  if (!matches) return false;\n\n\t  var hour = matches[1];\n\t  var minute = matches[2];\n\t  var second = matches[3];\n\t  var timeZone = matches[5];\n\t  return ((hour <= 23 && minute <= 59 && second <= 59) ||\n\t          (hour == 23 && minute == 59 && second == 60)) &&\n\t         (!full || timeZone);\n\t}\n\n\n\tvar DATE_TIME_SEPARATOR = /t|\\s/i;\n\tfunction date_time(str) {\n\t  // http://tools.ietf.org/html/rfc3339#section-5.6\n\t  var dateTime = str.split(DATE_TIME_SEPARATOR);\n\t  return dateTime.length == 2 && date(dateTime[0]) && time(dateTime[1], true);\n\t}\n\n\n\tvar NOT_URI_FRAGMENT = /\\/|:/;\n\tfunction uri(str) {\n\t  // http://jmrware.com/articles/2009/uri_regexp/URI_regex.html + optional protocol + required \".\"\n\t  return NOT_URI_FRAGMENT.test(str) && URI.test(str);\n\t}\n\n\n\tvar Z_ANCHOR = /[^\\\\]\\\\Z/;\n\tfunction regex(str) {\n\t  if (Z_ANCHOR.test(str)) return false;\n\t  try {\n\t    new RegExp(str);\n\t    return true;\n\t  } catch(e) {\n\t    return false;\n\t  }\n\t}\n\treturn formats_1;\n}\n\nvar ref;\nvar hasRequiredRef;\n\nfunction requireRef () {\n\tif (hasRequiredRef) return ref;\n\thasRequiredRef = 1;\n\tref = function generate_ref(it, $keyword, $ruleType) {\n\t  var out = ' ';\n\t  var $lvl = it.level;\n\t  var $dataLvl = it.dataLevel;\n\t  var $schema = it.schema[$keyword];\n\t  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n\t  var $breakOnError = !it.opts.allErrors;\n\t  var $data = 'data' + ($dataLvl || '');\n\t  var $valid = 'valid' + $lvl;\n\t  var $async, $refCode;\n\t  if ($schema == '#' || $schema == '#/') {\n\t    if (it.isRoot) {\n\t      $async = it.async;\n\t      $refCode = 'validate';\n\t    } else {\n\t      $async = it.root.schema.$async === true;\n\t      $refCode = 'root.refVal[0]';\n\t    }\n\t  } else {\n\t    var $refVal = it.resolveRef(it.baseId, $schema, it.isRoot);\n\t    if ($refVal === undefined) {\n\t      var $message = it.MissingRefError.message(it.baseId, $schema);\n\t      if (it.opts.missingRefs == 'fail') {\n\t        it.logger.error($message);\n\t        var $$outStack = $$outStack || [];\n\t        $$outStack.push(out);\n\t        out = ''; /* istanbul ignore else */\n\t        if (it.createErrors !== false) {\n\t          out += ' { keyword: \\'' + ('$ref') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { ref: \\'' + (it.util.escapeQuotes($schema)) + '\\' } ';\n\t          if (it.opts.messages !== false) {\n\t            out += ' , message: \\'can\\\\\\'t resolve reference ' + (it.util.escapeQuotes($schema)) + '\\' ';\n\t          }\n\t          if (it.opts.verbose) {\n\t            out += ' , schema: ' + (it.util.toQuotedString($schema)) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n\t          }\n\t          out += ' } ';\n\t        } else {\n\t          out += ' {} ';\n\t        }\n\t        var __err = out;\n\t        out = $$outStack.pop();\n\t        if (!it.compositeRule && $breakOnError) {\n\t          /* istanbul ignore if */\n\t          if (it.async) {\n\t            out += ' throw new ValidationError([' + (__err) + ']); ';\n\t          } else {\n\t            out += ' validate.errors = [' + (__err) + ']; return false; ';\n\t          }\n\t        } else {\n\t          out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n\t        }\n\t        if ($breakOnError) {\n\t          out += ' if (false) { ';\n\t        }\n\t      } else if (it.opts.missingRefs == 'ignore') {\n\t        it.logger.warn($message);\n\t        if ($breakOnError) {\n\t          out += ' if (true) { ';\n\t        }\n\t      } else {\n\t        throw new it.MissingRefError(it.baseId, $schema, $message);\n\t      }\n\t    } else if ($refVal.inline) {\n\t      var $it = it.util.copy(it);\n\t      $it.level++;\n\t      var $nextValid = 'valid' + $it.level;\n\t      $it.schema = $refVal.schema;\n\t      $it.schemaPath = '';\n\t      $it.errSchemaPath = $schema;\n\t      var $code = it.validate($it).replace(/validate\\.schema/g, $refVal.code);\n\t      out += ' ' + ($code) + ' ';\n\t      if ($breakOnError) {\n\t        out += ' if (' + ($nextValid) + ') { ';\n\t      }\n\t    } else {\n\t      $async = $refVal.$async === true || (it.async && $refVal.$async !== false);\n\t      $refCode = $refVal.code;\n\t    }\n\t  }\n\t  if ($refCode) {\n\t    var $$outStack = $$outStack || [];\n\t    $$outStack.push(out);\n\t    out = '';\n\t    if (it.opts.passContext) {\n\t      out += ' ' + ($refCode) + '.call(this, ';\n\t    } else {\n\t      out += ' ' + ($refCode) + '( ';\n\t    }\n\t    out += ' ' + ($data) + ', (dataPath || \\'\\')';\n\t    if (it.errorPath != '\"\"') {\n\t      out += ' + ' + (it.errorPath);\n\t    }\n\t    var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData',\n\t      $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty';\n\t    out += ' , ' + ($parentData) + ' , ' + ($parentDataProperty) + ', rootData)  ';\n\t    var __callValidate = out;\n\t    out = $$outStack.pop();\n\t    if ($async) {\n\t      if (!it.async) throw new Error('async schema referenced by sync schema');\n\t      if ($breakOnError) {\n\t        out += ' var ' + ($valid) + '; ';\n\t      }\n\t      out += ' try { await ' + (__callValidate) + '; ';\n\t      if ($breakOnError) {\n\t        out += ' ' + ($valid) + ' = true; ';\n\t      }\n\t      out += ' } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; ';\n\t      if ($breakOnError) {\n\t        out += ' ' + ($valid) + ' = false; ';\n\t      }\n\t      out += ' } ';\n\t      if ($breakOnError) {\n\t        out += ' if (' + ($valid) + ') { ';\n\t      }\n\t    } else {\n\t      out += ' if (!' + (__callValidate) + ') { if (vErrors === null) vErrors = ' + ($refCode) + '.errors; else vErrors = vErrors.concat(' + ($refCode) + '.errors); errors = vErrors.length; } ';\n\t      if ($breakOnError) {\n\t        out += ' else { ';\n\t      }\n\t    }\n\t  }\n\t  return out;\n\t};\n\treturn ref;\n}\n\nvar allOf;\nvar hasRequiredAllOf;\n\nfunction requireAllOf () {\n\tif (hasRequiredAllOf) return allOf;\n\thasRequiredAllOf = 1;\n\tallOf = function generate_allOf(it, $keyword, $ruleType) {\n\t  var out = ' ';\n\t  var $schema = it.schema[$keyword];\n\t  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n\t  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n\t  var $breakOnError = !it.opts.allErrors;\n\t  var $it = it.util.copy(it);\n\t  var $closingBraces = '';\n\t  $it.level++;\n\t  var $nextValid = 'valid' + $it.level;\n\t  var $currentBaseId = $it.baseId,\n\t    $allSchemasEmpty = true;\n\t  var arr1 = $schema;\n\t  if (arr1) {\n\t    var $sch, $i = -1,\n\t      l1 = arr1.length - 1;\n\t    while ($i < l1) {\n\t      $sch = arr1[$i += 1];\n\t      if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {\n\t        $allSchemasEmpty = false;\n\t        $it.schema = $sch;\n\t        $it.schemaPath = $schemaPath + '[' + $i + ']';\n\t        $it.errSchemaPath = $errSchemaPath + '/' + $i;\n\t        out += '  ' + (it.validate($it)) + ' ';\n\t        $it.baseId = $currentBaseId;\n\t        if ($breakOnError) {\n\t          out += ' if (' + ($nextValid) + ') { ';\n\t          $closingBraces += '}';\n\t        }\n\t      }\n\t    }\n\t  }\n\t  if ($breakOnError) {\n\t    if ($allSchemasEmpty) {\n\t      out += ' if (true) { ';\n\t    } else {\n\t      out += ' ' + ($closingBraces.slice(0, -1)) + ' ';\n\t    }\n\t  }\n\t  return out;\n\t};\n\treturn allOf;\n}\n\nvar anyOf;\nvar hasRequiredAnyOf;\n\nfunction requireAnyOf () {\n\tif (hasRequiredAnyOf) return anyOf;\n\thasRequiredAnyOf = 1;\n\tanyOf = function generate_anyOf(it, $keyword, $ruleType) {\n\t  var out = ' ';\n\t  var $lvl = it.level;\n\t  var $dataLvl = it.dataLevel;\n\t  var $schema = it.schema[$keyword];\n\t  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n\t  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n\t  var $breakOnError = !it.opts.allErrors;\n\t  var $data = 'data' + ($dataLvl || '');\n\t  var $valid = 'valid' + $lvl;\n\t  var $errs = 'errs__' + $lvl;\n\t  var $it = it.util.copy(it);\n\t  var $closingBraces = '';\n\t  $it.level++;\n\t  var $nextValid = 'valid' + $it.level;\n\t  var $noEmptySchema = $schema.every(function($sch) {\n\t    return (it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all));\n\t  });\n\t  if ($noEmptySchema) {\n\t    var $currentBaseId = $it.baseId;\n\t    out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = false;  ';\n\t    var $wasComposite = it.compositeRule;\n\t    it.compositeRule = $it.compositeRule = true;\n\t    var arr1 = $schema;\n\t    if (arr1) {\n\t      var $sch, $i = -1,\n\t        l1 = arr1.length - 1;\n\t      while ($i < l1) {\n\t        $sch = arr1[$i += 1];\n\t        $it.schema = $sch;\n\t        $it.schemaPath = $schemaPath + '[' + $i + ']';\n\t        $it.errSchemaPath = $errSchemaPath + '/' + $i;\n\t        out += '  ' + (it.validate($it)) + ' ';\n\t        $it.baseId = $currentBaseId;\n\t        out += ' ' + ($valid) + ' = ' + ($valid) + ' || ' + ($nextValid) + '; if (!' + ($valid) + ') { ';\n\t        $closingBraces += '}';\n\t      }\n\t    }\n\t    it.compositeRule = $it.compositeRule = $wasComposite;\n\t    out += ' ' + ($closingBraces) + ' if (!' + ($valid) + ') {   var err =   '; /* istanbul ignore else */\n\t    if (it.createErrors !== false) {\n\t      out += ' { keyword: \\'' + ('anyOf') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n\t      if (it.opts.messages !== false) {\n\t        out += ' , message: \\'should match some schema in anyOf\\' ';\n\t      }\n\t      if (it.opts.verbose) {\n\t        out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n\t      }\n\t      out += ' } ';\n\t    } else {\n\t      out += ' {} ';\n\t    }\n\t    out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n\t    if (!it.compositeRule && $breakOnError) {\n\t      /* istanbul ignore if */\n\t      if (it.async) {\n\t        out += ' throw new ValidationError(vErrors); ';\n\t      } else {\n\t        out += ' validate.errors = vErrors; return false; ';\n\t      }\n\t    }\n\t    out += ' } else {  errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';\n\t    if (it.opts.allErrors) {\n\t      out += ' } ';\n\t    }\n\t  } else {\n\t    if ($breakOnError) {\n\t      out += ' if (true) { ';\n\t    }\n\t  }\n\t  return out;\n\t};\n\treturn anyOf;\n}\n\nvar comment;\nvar hasRequiredComment;\n\nfunction requireComment () {\n\tif (hasRequiredComment) return comment;\n\thasRequiredComment = 1;\n\tcomment = function generate_comment(it, $keyword, $ruleType) {\n\t  var out = ' ';\n\t  var $schema = it.schema[$keyword];\n\t  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n\t  !it.opts.allErrors;\n\t  var $comment = it.util.toQuotedString($schema);\n\t  if (it.opts.$comment === true) {\n\t    out += ' console.log(' + ($comment) + ');';\n\t  } else if (typeof it.opts.$comment == 'function') {\n\t    out += ' self._opts.$comment(' + ($comment) + ', ' + (it.util.toQuotedString($errSchemaPath)) + ', validate.root.schema);';\n\t  }\n\t  return out;\n\t};\n\treturn comment;\n}\n\nvar _const;\nvar hasRequired_const;\n\nfunction require_const () {\n\tif (hasRequired_const) return _const;\n\thasRequired_const = 1;\n\t_const = function generate_const(it, $keyword, $ruleType) {\n\t  var out = ' ';\n\t  var $lvl = it.level;\n\t  var $dataLvl = it.dataLevel;\n\t  var $schema = it.schema[$keyword];\n\t  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n\t  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n\t  var $breakOnError = !it.opts.allErrors;\n\t  var $data = 'data' + ($dataLvl || '');\n\t  var $valid = 'valid' + $lvl;\n\t  var $isData = it.opts.$data && $schema && $schema.$data;\n\t  if ($isData) {\n\t    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n\t  }\n\t  if (!$isData) {\n\t    out += ' var schema' + ($lvl) + ' = validate.schema' + ($schemaPath) + ';';\n\t  }\n\t  out += 'var ' + ($valid) + ' = equal(' + ($data) + ', schema' + ($lvl) + '); if (!' + ($valid) + ') {   ';\n\t  var $$outStack = $$outStack || [];\n\t  $$outStack.push(out);\n\t  out = ''; /* istanbul ignore else */\n\t  if (it.createErrors !== false) {\n\t    out += ' { keyword: \\'' + ('const') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { allowedValue: schema' + ($lvl) + ' } ';\n\t    if (it.opts.messages !== false) {\n\t      out += ' , message: \\'should be equal to constant\\' ';\n\t    }\n\t    if (it.opts.verbose) {\n\t      out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n\t    }\n\t    out += ' } ';\n\t  } else {\n\t    out += ' {} ';\n\t  }\n\t  var __err = out;\n\t  out = $$outStack.pop();\n\t  if (!it.compositeRule && $breakOnError) {\n\t    /* istanbul ignore if */\n\t    if (it.async) {\n\t      out += ' throw new ValidationError([' + (__err) + ']); ';\n\t    } else {\n\t      out += ' validate.errors = [' + (__err) + ']; return false; ';\n\t    }\n\t  } else {\n\t    out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n\t  }\n\t  out += ' }';\n\t  if ($breakOnError) {\n\t    out += ' else { ';\n\t  }\n\t  return out;\n\t};\n\treturn _const;\n}\n\nvar contains;\nvar hasRequiredContains;\n\nfunction requireContains () {\n\tif (hasRequiredContains) return contains;\n\thasRequiredContains = 1;\n\tcontains = function generate_contains(it, $keyword, $ruleType) {\n\t  var out = ' ';\n\t  var $lvl = it.level;\n\t  var $dataLvl = it.dataLevel;\n\t  var $schema = it.schema[$keyword];\n\t  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n\t  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n\t  var $breakOnError = !it.opts.allErrors;\n\t  var $data = 'data' + ($dataLvl || '');\n\t  var $valid = 'valid' + $lvl;\n\t  var $errs = 'errs__' + $lvl;\n\t  var $it = it.util.copy(it);\n\t  var $closingBraces = '';\n\t  $it.level++;\n\t  var $nextValid = 'valid' + $it.level;\n\t  var $idx = 'i' + $lvl,\n\t    $dataNxt = $it.dataLevel = it.dataLevel + 1,\n\t    $nextData = 'data' + $dataNxt,\n\t    $currentBaseId = it.baseId,\n\t    $nonEmptySchema = (it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all));\n\t  out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';';\n\t  if ($nonEmptySchema) {\n\t    var $wasComposite = it.compositeRule;\n\t    it.compositeRule = $it.compositeRule = true;\n\t    $it.schema = $schema;\n\t    $it.schemaPath = $schemaPath;\n\t    $it.errSchemaPath = $errSchemaPath;\n\t    out += ' var ' + ($nextValid) + ' = false; for (var ' + ($idx) + ' = 0; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { ';\n\t    $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true);\n\t    var $passData = $data + '[' + $idx + ']';\n\t    $it.dataPathArr[$dataNxt] = $idx;\n\t    var $code = it.validate($it);\n\t    $it.baseId = $currentBaseId;\n\t    if (it.util.varOccurences($code, $nextData) < 2) {\n\t      out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n\t    } else {\n\t      out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n\t    }\n\t    out += ' if (' + ($nextValid) + ') break; }  ';\n\t    it.compositeRule = $it.compositeRule = $wasComposite;\n\t    out += ' ' + ($closingBraces) + ' if (!' + ($nextValid) + ') {';\n\t  } else {\n\t    out += ' if (' + ($data) + '.length == 0) {';\n\t  }\n\t  var $$outStack = $$outStack || [];\n\t  $$outStack.push(out);\n\t  out = ''; /* istanbul ignore else */\n\t  if (it.createErrors !== false) {\n\t    out += ' { keyword: \\'' + ('contains') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n\t    if (it.opts.messages !== false) {\n\t      out += ' , message: \\'should contain a valid item\\' ';\n\t    }\n\t    if (it.opts.verbose) {\n\t      out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n\t    }\n\t    out += ' } ';\n\t  } else {\n\t    out += ' {} ';\n\t  }\n\t  var __err = out;\n\t  out = $$outStack.pop();\n\t  if (!it.compositeRule && $breakOnError) {\n\t    /* istanbul ignore if */\n\t    if (it.async) {\n\t      out += ' throw new ValidationError([' + (__err) + ']); ';\n\t    } else {\n\t      out += ' validate.errors = [' + (__err) + ']; return false; ';\n\t    }\n\t  } else {\n\t    out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n\t  }\n\t  out += ' } else { ';\n\t  if ($nonEmptySchema) {\n\t    out += '  errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';\n\t  }\n\t  if (it.opts.allErrors) {\n\t    out += ' } ';\n\t  }\n\t  return out;\n\t};\n\treturn contains;\n}\n\nvar dependencies$1;\nvar hasRequiredDependencies;\n\nfunction requireDependencies () {\n\tif (hasRequiredDependencies) return dependencies$1;\n\thasRequiredDependencies = 1;\n\tdependencies$1 = function generate_dependencies(it, $keyword, $ruleType) {\n\t  var out = ' ';\n\t  var $lvl = it.level;\n\t  var $dataLvl = it.dataLevel;\n\t  var $schema = it.schema[$keyword];\n\t  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n\t  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n\t  var $breakOnError = !it.opts.allErrors;\n\t  var $data = 'data' + ($dataLvl || '');\n\t  var $errs = 'errs__' + $lvl;\n\t  var $it = it.util.copy(it);\n\t  var $closingBraces = '';\n\t  $it.level++;\n\t  var $nextValid = 'valid' + $it.level;\n\t  var $schemaDeps = {},\n\t    $propertyDeps = {},\n\t    $ownProperties = it.opts.ownProperties;\n\t  for ($property in $schema) {\n\t    if ($property == '__proto__') continue;\n\t    var $sch = $schema[$property];\n\t    var $deps = Array.isArray($sch) ? $propertyDeps : $schemaDeps;\n\t    $deps[$property] = $sch;\n\t  }\n\t  out += 'var ' + ($errs) + ' = errors;';\n\t  var $currentErrorPath = it.errorPath;\n\t  out += 'var missing' + ($lvl) + ';';\n\t  for (var $property in $propertyDeps) {\n\t    $deps = $propertyDeps[$property];\n\t    if ($deps.length) {\n\t      out += ' if ( ' + ($data) + (it.util.getProperty($property)) + ' !== undefined ';\n\t      if ($ownProperties) {\n\t        out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($property)) + '\\') ';\n\t      }\n\t      if ($breakOnError) {\n\t        out += ' && ( ';\n\t        var arr1 = $deps;\n\t        if (arr1) {\n\t          var $propertyKey, $i = -1,\n\t            l1 = arr1.length - 1;\n\t          while ($i < l1) {\n\t            $propertyKey = arr1[$i += 1];\n\t            if ($i) {\n\t              out += ' || ';\n\t            }\n\t            var $prop = it.util.getProperty($propertyKey),\n\t              $useData = $data + $prop;\n\t            out += ' ( ( ' + ($useData) + ' === undefined ';\n\t            if ($ownProperties) {\n\t              out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n\t            }\n\t            out += ') && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? $propertyKey : $prop)) + ') ) ';\n\t          }\n\t        }\n\t        out += ')) {  ';\n\t        var $propertyPath = 'missing' + $lvl,\n\t          $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\n\t        if (it.opts._errorDataPathProperty) {\n\t          it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath;\n\t        }\n\t        var $$outStack = $$outStack || [];\n\t        $$outStack.push(out);\n\t        out = ''; /* istanbul ignore else */\n\t        if (it.createErrors !== false) {\n\t          out += ' { keyword: \\'' + ('dependencies') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { property: \\'' + (it.util.escapeQuotes($property)) + '\\', missingProperty: \\'' + ($missingProperty) + '\\', depsCount: ' + ($deps.length) + ', deps: \\'' + (it.util.escapeQuotes($deps.length == 1 ? $deps[0] : $deps.join(\", \"))) + '\\' } ';\n\t          if (it.opts.messages !== false) {\n\t            out += ' , message: \\'should have ';\n\t            if ($deps.length == 1) {\n\t              out += 'property ' + (it.util.escapeQuotes($deps[0]));\n\t            } else {\n\t              out += 'properties ' + (it.util.escapeQuotes($deps.join(\", \")));\n\t            }\n\t            out += ' when property ' + (it.util.escapeQuotes($property)) + ' is present\\' ';\n\t          }\n\t          if (it.opts.verbose) {\n\t            out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n\t          }\n\t          out += ' } ';\n\t        } else {\n\t          out += ' {} ';\n\t        }\n\t        var __err = out;\n\t        out = $$outStack.pop();\n\t        if (!it.compositeRule && $breakOnError) {\n\t          /* istanbul ignore if */\n\t          if (it.async) {\n\t            out += ' throw new ValidationError([' + (__err) + ']); ';\n\t          } else {\n\t            out += ' validate.errors = [' + (__err) + ']; return false; ';\n\t          }\n\t        } else {\n\t          out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n\t        }\n\t      } else {\n\t        out += ' ) { ';\n\t        var arr2 = $deps;\n\t        if (arr2) {\n\t          var $propertyKey, i2 = -1,\n\t            l2 = arr2.length - 1;\n\t          while (i2 < l2) {\n\t            $propertyKey = arr2[i2 += 1];\n\t            var $prop = it.util.getProperty($propertyKey),\n\t              $missingProperty = it.util.escapeQuotes($propertyKey),\n\t              $useData = $data + $prop;\n\t            if (it.opts._errorDataPathProperty) {\n\t              it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers);\n\t            }\n\t            out += ' if ( ' + ($useData) + ' === undefined ';\n\t            if ($ownProperties) {\n\t              out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n\t            }\n\t            out += ') {  var err =   '; /* istanbul ignore else */\n\t            if (it.createErrors !== false) {\n\t              out += ' { keyword: \\'' + ('dependencies') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { property: \\'' + (it.util.escapeQuotes($property)) + '\\', missingProperty: \\'' + ($missingProperty) + '\\', depsCount: ' + ($deps.length) + ', deps: \\'' + (it.util.escapeQuotes($deps.length == 1 ? $deps[0] : $deps.join(\", \"))) + '\\' } ';\n\t              if (it.opts.messages !== false) {\n\t                out += ' , message: \\'should have ';\n\t                if ($deps.length == 1) {\n\t                  out += 'property ' + (it.util.escapeQuotes($deps[0]));\n\t                } else {\n\t                  out += 'properties ' + (it.util.escapeQuotes($deps.join(\", \")));\n\t                }\n\t                out += ' when property ' + (it.util.escapeQuotes($property)) + ' is present\\' ';\n\t              }\n\t              if (it.opts.verbose) {\n\t                out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n\t              }\n\t              out += ' } ';\n\t            } else {\n\t              out += ' {} ';\n\t            }\n\t            out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } ';\n\t          }\n\t        }\n\t      }\n\t      out += ' }   ';\n\t      if ($breakOnError) {\n\t        $closingBraces += '}';\n\t        out += ' else { ';\n\t      }\n\t    }\n\t  }\n\t  it.errorPath = $currentErrorPath;\n\t  var $currentBaseId = $it.baseId;\n\t  for (var $property in $schemaDeps) {\n\t    var $sch = $schemaDeps[$property];\n\t    if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {\n\t      out += ' ' + ($nextValid) + ' = true; if ( ' + ($data) + (it.util.getProperty($property)) + ' !== undefined ';\n\t      if ($ownProperties) {\n\t        out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($property)) + '\\') ';\n\t      }\n\t      out += ') { ';\n\t      $it.schema = $sch;\n\t      $it.schemaPath = $schemaPath + it.util.getProperty($property);\n\t      $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($property);\n\t      out += '  ' + (it.validate($it)) + ' ';\n\t      $it.baseId = $currentBaseId;\n\t      out += ' }  ';\n\t      if ($breakOnError) {\n\t        out += ' if (' + ($nextValid) + ') { ';\n\t        $closingBraces += '}';\n\t      }\n\t    }\n\t  }\n\t  if ($breakOnError) {\n\t    out += '   ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';\n\t  }\n\t  return out;\n\t};\n\treturn dependencies$1;\n}\n\nvar _enum;\nvar hasRequired_enum;\n\nfunction require_enum () {\n\tif (hasRequired_enum) return _enum;\n\thasRequired_enum = 1;\n\t_enum = function generate_enum(it, $keyword, $ruleType) {\n\t  var out = ' ';\n\t  var $lvl = it.level;\n\t  var $dataLvl = it.dataLevel;\n\t  var $schema = it.schema[$keyword];\n\t  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n\t  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n\t  var $breakOnError = !it.opts.allErrors;\n\t  var $data = 'data' + ($dataLvl || '');\n\t  var $valid = 'valid' + $lvl;\n\t  var $isData = it.opts.$data && $schema && $schema.$data;\n\t  if ($isData) {\n\t    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n\t  }\n\t  var $i = 'i' + $lvl,\n\t    $vSchema = 'schema' + $lvl;\n\t  if (!$isData) {\n\t    out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + ';';\n\t  }\n\t  out += 'var ' + ($valid) + ';';\n\t  if ($isData) {\n\t    out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {';\n\t  }\n\t  out += '' + ($valid) + ' = false;for (var ' + ($i) + '=0; ' + ($i) + '<' + ($vSchema) + '.length; ' + ($i) + '++) if (equal(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + '])) { ' + ($valid) + ' = true; break; }';\n\t  if ($isData) {\n\t    out += '  }  ';\n\t  }\n\t  out += ' if (!' + ($valid) + ') {   ';\n\t  var $$outStack = $$outStack || [];\n\t  $$outStack.push(out);\n\t  out = ''; /* istanbul ignore else */\n\t  if (it.createErrors !== false) {\n\t    out += ' { keyword: \\'' + ('enum') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { allowedValues: schema' + ($lvl) + ' } ';\n\t    if (it.opts.messages !== false) {\n\t      out += ' , message: \\'should be equal to one of the allowed values\\' ';\n\t    }\n\t    if (it.opts.verbose) {\n\t      out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n\t    }\n\t    out += ' } ';\n\t  } else {\n\t    out += ' {} ';\n\t  }\n\t  var __err = out;\n\t  out = $$outStack.pop();\n\t  if (!it.compositeRule && $breakOnError) {\n\t    /* istanbul ignore if */\n\t    if (it.async) {\n\t      out += ' throw new ValidationError([' + (__err) + ']); ';\n\t    } else {\n\t      out += ' validate.errors = [' + (__err) + ']; return false; ';\n\t    }\n\t  } else {\n\t    out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n\t  }\n\t  out += ' }';\n\t  if ($breakOnError) {\n\t    out += ' else { ';\n\t  }\n\t  return out;\n\t};\n\treturn _enum;\n}\n\nvar format;\nvar hasRequiredFormat;\n\nfunction requireFormat () {\n\tif (hasRequiredFormat) return format;\n\thasRequiredFormat = 1;\n\tformat = function generate_format(it, $keyword, $ruleType) {\n\t  var out = ' ';\n\t  var $lvl = it.level;\n\t  var $dataLvl = it.dataLevel;\n\t  var $schema = it.schema[$keyword];\n\t  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n\t  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n\t  var $breakOnError = !it.opts.allErrors;\n\t  var $data = 'data' + ($dataLvl || '');\n\t  if (it.opts.format === false) {\n\t    if ($breakOnError) {\n\t      out += ' if (true) { ';\n\t    }\n\t    return out;\n\t  }\n\t  var $isData = it.opts.$data && $schema && $schema.$data,\n\t    $schemaValue;\n\t  if ($isData) {\n\t    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n\t    $schemaValue = 'schema' + $lvl;\n\t  } else {\n\t    $schemaValue = $schema;\n\t  }\n\t  var $unknownFormats = it.opts.unknownFormats,\n\t    $allowUnknown = Array.isArray($unknownFormats);\n\t  if ($isData) {\n\t    var $format = 'format' + $lvl,\n\t      $isObject = 'isObject' + $lvl,\n\t      $formatType = 'formatType' + $lvl;\n\t    out += ' var ' + ($format) + ' = formats[' + ($schemaValue) + ']; var ' + ($isObject) + ' = typeof ' + ($format) + ' == \\'object\\' && !(' + ($format) + ' instanceof RegExp) && ' + ($format) + '.validate; var ' + ($formatType) + ' = ' + ($isObject) + ' && ' + ($format) + '.type || \\'string\\'; if (' + ($isObject) + ') { ';\n\t    if (it.async) {\n\t      out += ' var async' + ($lvl) + ' = ' + ($format) + '.async; ';\n\t    }\n\t    out += ' ' + ($format) + ' = ' + ($format) + '.validate; } if (  ';\n\t    if ($isData) {\n\t      out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'string\\') || ';\n\t    }\n\t    out += ' (';\n\t    if ($unknownFormats != 'ignore') {\n\t      out += ' (' + ($schemaValue) + ' && !' + ($format) + ' ';\n\t      if ($allowUnknown) {\n\t        out += ' && self._opts.unknownFormats.indexOf(' + ($schemaValue) + ') == -1 ';\n\t      }\n\t      out += ') || ';\n\t    }\n\t    out += ' (' + ($format) + ' && ' + ($formatType) + ' == \\'' + ($ruleType) + '\\' && !(typeof ' + ($format) + ' == \\'function\\' ? ';\n\t    if (it.async) {\n\t      out += ' (async' + ($lvl) + ' ? await ' + ($format) + '(' + ($data) + ') : ' + ($format) + '(' + ($data) + ')) ';\n\t    } else {\n\t      out += ' ' + ($format) + '(' + ($data) + ') ';\n\t    }\n\t    out += ' : ' + ($format) + '.test(' + ($data) + '))))) {';\n\t  } else {\n\t    var $format = it.formats[$schema];\n\t    if (!$format) {\n\t      if ($unknownFormats == 'ignore') {\n\t        it.logger.warn('unknown format \"' + $schema + '\" ignored in schema at path \"' + it.errSchemaPath + '\"');\n\t        if ($breakOnError) {\n\t          out += ' if (true) { ';\n\t        }\n\t        return out;\n\t      } else if ($allowUnknown && $unknownFormats.indexOf($schema) >= 0) {\n\t        if ($breakOnError) {\n\t          out += ' if (true) { ';\n\t        }\n\t        return out;\n\t      } else {\n\t        throw new Error('unknown format \"' + $schema + '\" is used in schema at path \"' + it.errSchemaPath + '\"');\n\t      }\n\t    }\n\t    var $isObject = typeof $format == 'object' && !($format instanceof RegExp) && $format.validate;\n\t    var $formatType = $isObject && $format.type || 'string';\n\t    if ($isObject) {\n\t      var $async = $format.async === true;\n\t      $format = $format.validate;\n\t    }\n\t    if ($formatType != $ruleType) {\n\t      if ($breakOnError) {\n\t        out += ' if (true) { ';\n\t      }\n\t      return out;\n\t    }\n\t    if ($async) {\n\t      if (!it.async) throw new Error('async format in sync schema');\n\t      var $formatRef = 'formats' + it.util.getProperty($schema) + '.validate';\n\t      out += ' if (!(await ' + ($formatRef) + '(' + ($data) + '))) { ';\n\t    } else {\n\t      out += ' if (! ';\n\t      var $formatRef = 'formats' + it.util.getProperty($schema);\n\t      if ($isObject) $formatRef += '.validate';\n\t      if (typeof $format == 'function') {\n\t        out += ' ' + ($formatRef) + '(' + ($data) + ') ';\n\t      } else {\n\t        out += ' ' + ($formatRef) + '.test(' + ($data) + ') ';\n\t      }\n\t      out += ') { ';\n\t    }\n\t  }\n\t  var $$outStack = $$outStack || [];\n\t  $$outStack.push(out);\n\t  out = ''; /* istanbul ignore else */\n\t  if (it.createErrors !== false) {\n\t    out += ' { keyword: \\'' + ('format') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { format:  ';\n\t    if ($isData) {\n\t      out += '' + ($schemaValue);\n\t    } else {\n\t      out += '' + (it.util.toQuotedString($schema));\n\t    }\n\t    out += '  } ';\n\t    if (it.opts.messages !== false) {\n\t      out += ' , message: \\'should match format \"';\n\t      if ($isData) {\n\t        out += '\\' + ' + ($schemaValue) + ' + \\'';\n\t      } else {\n\t        out += '' + (it.util.escapeQuotes($schema));\n\t      }\n\t      out += '\"\\' ';\n\t    }\n\t    if (it.opts.verbose) {\n\t      out += ' , schema:  ';\n\t      if ($isData) {\n\t        out += 'validate.schema' + ($schemaPath);\n\t      } else {\n\t        out += '' + (it.util.toQuotedString($schema));\n\t      }\n\t      out += '         , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n\t    }\n\t    out += ' } ';\n\t  } else {\n\t    out += ' {} ';\n\t  }\n\t  var __err = out;\n\t  out = $$outStack.pop();\n\t  if (!it.compositeRule && $breakOnError) {\n\t    /* istanbul ignore if */\n\t    if (it.async) {\n\t      out += ' throw new ValidationError([' + (__err) + ']); ';\n\t    } else {\n\t      out += ' validate.errors = [' + (__err) + ']; return false; ';\n\t    }\n\t  } else {\n\t    out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n\t  }\n\t  out += ' } ';\n\t  if ($breakOnError) {\n\t    out += ' else { ';\n\t  }\n\t  return out;\n\t};\n\treturn format;\n}\n\nvar _if;\nvar hasRequired_if;\n\nfunction require_if () {\n\tif (hasRequired_if) return _if;\n\thasRequired_if = 1;\n\t_if = function generate_if(it, $keyword, $ruleType) {\n\t  var out = ' ';\n\t  var $lvl = it.level;\n\t  var $dataLvl = it.dataLevel;\n\t  var $schema = it.schema[$keyword];\n\t  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n\t  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n\t  var $breakOnError = !it.opts.allErrors;\n\t  var $data = 'data' + ($dataLvl || '');\n\t  var $valid = 'valid' + $lvl;\n\t  var $errs = 'errs__' + $lvl;\n\t  var $it = it.util.copy(it);\n\t  $it.level++;\n\t  var $nextValid = 'valid' + $it.level;\n\t  var $thenSch = it.schema['then'],\n\t    $elseSch = it.schema['else'],\n\t    $thenPresent = $thenSch !== undefined && (it.opts.strictKeywords ? (typeof $thenSch == 'object' && Object.keys($thenSch).length > 0) || $thenSch === false : it.util.schemaHasRules($thenSch, it.RULES.all)),\n\t    $elsePresent = $elseSch !== undefined && (it.opts.strictKeywords ? (typeof $elseSch == 'object' && Object.keys($elseSch).length > 0) || $elseSch === false : it.util.schemaHasRules($elseSch, it.RULES.all)),\n\t    $currentBaseId = $it.baseId;\n\t  if ($thenPresent || $elsePresent) {\n\t    var $ifClause;\n\t    $it.createErrors = false;\n\t    $it.schema = $schema;\n\t    $it.schemaPath = $schemaPath;\n\t    $it.errSchemaPath = $errSchemaPath;\n\t    out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = true;  ';\n\t    var $wasComposite = it.compositeRule;\n\t    it.compositeRule = $it.compositeRule = true;\n\t    out += '  ' + (it.validate($it)) + ' ';\n\t    $it.baseId = $currentBaseId;\n\t    $it.createErrors = true;\n\t    out += '  errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; }  ';\n\t    it.compositeRule = $it.compositeRule = $wasComposite;\n\t    if ($thenPresent) {\n\t      out += ' if (' + ($nextValid) + ') {  ';\n\t      $it.schema = it.schema['then'];\n\t      $it.schemaPath = it.schemaPath + '.then';\n\t      $it.errSchemaPath = it.errSchemaPath + '/then';\n\t      out += '  ' + (it.validate($it)) + ' ';\n\t      $it.baseId = $currentBaseId;\n\t      out += ' ' + ($valid) + ' = ' + ($nextValid) + '; ';\n\t      if ($thenPresent && $elsePresent) {\n\t        $ifClause = 'ifClause' + $lvl;\n\t        out += ' var ' + ($ifClause) + ' = \\'then\\'; ';\n\t      } else {\n\t        $ifClause = '\\'then\\'';\n\t      }\n\t      out += ' } ';\n\t      if ($elsePresent) {\n\t        out += ' else { ';\n\t      }\n\t    } else {\n\t      out += ' if (!' + ($nextValid) + ') { ';\n\t    }\n\t    if ($elsePresent) {\n\t      $it.schema = it.schema['else'];\n\t      $it.schemaPath = it.schemaPath + '.else';\n\t      $it.errSchemaPath = it.errSchemaPath + '/else';\n\t      out += '  ' + (it.validate($it)) + ' ';\n\t      $it.baseId = $currentBaseId;\n\t      out += ' ' + ($valid) + ' = ' + ($nextValid) + '; ';\n\t      if ($thenPresent && $elsePresent) {\n\t        $ifClause = 'ifClause' + $lvl;\n\t        out += ' var ' + ($ifClause) + ' = \\'else\\'; ';\n\t      } else {\n\t        $ifClause = '\\'else\\'';\n\t      }\n\t      out += ' } ';\n\t    }\n\t    out += ' if (!' + ($valid) + ') {   var err =   '; /* istanbul ignore else */\n\t    if (it.createErrors !== false) {\n\t      out += ' { keyword: \\'' + ('if') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { failingKeyword: ' + ($ifClause) + ' } ';\n\t      if (it.opts.messages !== false) {\n\t        out += ' , message: \\'should match \"\\' + ' + ($ifClause) + ' + \\'\" schema\\' ';\n\t      }\n\t      if (it.opts.verbose) {\n\t        out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n\t      }\n\t      out += ' } ';\n\t    } else {\n\t      out += ' {} ';\n\t    }\n\t    out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n\t    if (!it.compositeRule && $breakOnError) {\n\t      /* istanbul ignore if */\n\t      if (it.async) {\n\t        out += ' throw new ValidationError(vErrors); ';\n\t      } else {\n\t        out += ' validate.errors = vErrors; return false; ';\n\t      }\n\t    }\n\t    out += ' }   ';\n\t    if ($breakOnError) {\n\t      out += ' else { ';\n\t    }\n\t  } else {\n\t    if ($breakOnError) {\n\t      out += ' if (true) { ';\n\t    }\n\t  }\n\t  return out;\n\t};\n\treturn _if;\n}\n\nvar items;\nvar hasRequiredItems;\n\nfunction requireItems () {\n\tif (hasRequiredItems) return items;\n\thasRequiredItems = 1;\n\titems = function generate_items(it, $keyword, $ruleType) {\n\t  var out = ' ';\n\t  var $lvl = it.level;\n\t  var $dataLvl = it.dataLevel;\n\t  var $schema = it.schema[$keyword];\n\t  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n\t  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n\t  var $breakOnError = !it.opts.allErrors;\n\t  var $data = 'data' + ($dataLvl || '');\n\t  var $valid = 'valid' + $lvl;\n\t  var $errs = 'errs__' + $lvl;\n\t  var $it = it.util.copy(it);\n\t  var $closingBraces = '';\n\t  $it.level++;\n\t  var $nextValid = 'valid' + $it.level;\n\t  var $idx = 'i' + $lvl,\n\t    $dataNxt = $it.dataLevel = it.dataLevel + 1,\n\t    $nextData = 'data' + $dataNxt,\n\t    $currentBaseId = it.baseId;\n\t  out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';';\n\t  if (Array.isArray($schema)) {\n\t    var $additionalItems = it.schema.additionalItems;\n\t    if ($additionalItems === false) {\n\t      out += ' ' + ($valid) + ' = ' + ($data) + '.length <= ' + ($schema.length) + '; ';\n\t      var $currErrSchemaPath = $errSchemaPath;\n\t      $errSchemaPath = it.errSchemaPath + '/additionalItems';\n\t      out += '  if (!' + ($valid) + ') {   ';\n\t      var $$outStack = $$outStack || [];\n\t      $$outStack.push(out);\n\t      out = ''; /* istanbul ignore else */\n\t      if (it.createErrors !== false) {\n\t        out += ' { keyword: \\'' + ('additionalItems') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schema.length) + ' } ';\n\t        if (it.opts.messages !== false) {\n\t          out += ' , message: \\'should NOT have more than ' + ($schema.length) + ' items\\' ';\n\t        }\n\t        if (it.opts.verbose) {\n\t          out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n\t        }\n\t        out += ' } ';\n\t      } else {\n\t        out += ' {} ';\n\t      }\n\t      var __err = out;\n\t      out = $$outStack.pop();\n\t      if (!it.compositeRule && $breakOnError) {\n\t        /* istanbul ignore if */\n\t        if (it.async) {\n\t          out += ' throw new ValidationError([' + (__err) + ']); ';\n\t        } else {\n\t          out += ' validate.errors = [' + (__err) + ']; return false; ';\n\t        }\n\t      } else {\n\t        out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n\t      }\n\t      out += ' } ';\n\t      $errSchemaPath = $currErrSchemaPath;\n\t      if ($breakOnError) {\n\t        $closingBraces += '}';\n\t        out += ' else { ';\n\t      }\n\t    }\n\t    var arr1 = $schema;\n\t    if (arr1) {\n\t      var $sch, $i = -1,\n\t        l1 = arr1.length - 1;\n\t      while ($i < l1) {\n\t        $sch = arr1[$i += 1];\n\t        if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {\n\t          out += ' ' + ($nextValid) + ' = true; if (' + ($data) + '.length > ' + ($i) + ') { ';\n\t          var $passData = $data + '[' + $i + ']';\n\t          $it.schema = $sch;\n\t          $it.schemaPath = $schemaPath + '[' + $i + ']';\n\t          $it.errSchemaPath = $errSchemaPath + '/' + $i;\n\t          $it.errorPath = it.util.getPathExpr(it.errorPath, $i, it.opts.jsonPointers, true);\n\t          $it.dataPathArr[$dataNxt] = $i;\n\t          var $code = it.validate($it);\n\t          $it.baseId = $currentBaseId;\n\t          if (it.util.varOccurences($code, $nextData) < 2) {\n\t            out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n\t          } else {\n\t            out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n\t          }\n\t          out += ' }  ';\n\t          if ($breakOnError) {\n\t            out += ' if (' + ($nextValid) + ') { ';\n\t            $closingBraces += '}';\n\t          }\n\t        }\n\t      }\n\t    }\n\t    if (typeof $additionalItems == 'object' && (it.opts.strictKeywords ? (typeof $additionalItems == 'object' && Object.keys($additionalItems).length > 0) || $additionalItems === false : it.util.schemaHasRules($additionalItems, it.RULES.all))) {\n\t      $it.schema = $additionalItems;\n\t      $it.schemaPath = it.schemaPath + '.additionalItems';\n\t      $it.errSchemaPath = it.errSchemaPath + '/additionalItems';\n\t      out += ' ' + ($nextValid) + ' = true; if (' + ($data) + '.length > ' + ($schema.length) + ') {  for (var ' + ($idx) + ' = ' + ($schema.length) + '; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { ';\n\t      $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true);\n\t      var $passData = $data + '[' + $idx + ']';\n\t      $it.dataPathArr[$dataNxt] = $idx;\n\t      var $code = it.validate($it);\n\t      $it.baseId = $currentBaseId;\n\t      if (it.util.varOccurences($code, $nextData) < 2) {\n\t        out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n\t      } else {\n\t        out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n\t      }\n\t      if ($breakOnError) {\n\t        out += ' if (!' + ($nextValid) + ') break; ';\n\t      }\n\t      out += ' } }  ';\n\t      if ($breakOnError) {\n\t        out += ' if (' + ($nextValid) + ') { ';\n\t        $closingBraces += '}';\n\t      }\n\t    }\n\t  } else if ((it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all))) {\n\t    $it.schema = $schema;\n\t    $it.schemaPath = $schemaPath;\n\t    $it.errSchemaPath = $errSchemaPath;\n\t    out += '  for (var ' + ($idx) + ' = ' + (0) + '; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { ';\n\t    $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true);\n\t    var $passData = $data + '[' + $idx + ']';\n\t    $it.dataPathArr[$dataNxt] = $idx;\n\t    var $code = it.validate($it);\n\t    $it.baseId = $currentBaseId;\n\t    if (it.util.varOccurences($code, $nextData) < 2) {\n\t      out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n\t    } else {\n\t      out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n\t    }\n\t    if ($breakOnError) {\n\t      out += ' if (!' + ($nextValid) + ') break; ';\n\t    }\n\t    out += ' }';\n\t  }\n\t  if ($breakOnError) {\n\t    out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';\n\t  }\n\t  return out;\n\t};\n\treturn items;\n}\n\nvar _limit;\nvar hasRequired_limit;\n\nfunction require_limit () {\n\tif (hasRequired_limit) return _limit;\n\thasRequired_limit = 1;\n\t_limit = function generate__limit(it, $keyword, $ruleType) {\n\t  var out = ' ';\n\t  var $lvl = it.level;\n\t  var $dataLvl = it.dataLevel;\n\t  var $schema = it.schema[$keyword];\n\t  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n\t  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n\t  var $breakOnError = !it.opts.allErrors;\n\t  var $errorKeyword;\n\t  var $data = 'data' + ($dataLvl || '');\n\t  var $isData = it.opts.$data && $schema && $schema.$data,\n\t    $schemaValue;\n\t  if ($isData) {\n\t    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n\t    $schemaValue = 'schema' + $lvl;\n\t  } else {\n\t    $schemaValue = $schema;\n\t  }\n\t  var $isMax = $keyword == 'maximum',\n\t    $exclusiveKeyword = $isMax ? 'exclusiveMaximum' : 'exclusiveMinimum',\n\t    $schemaExcl = it.schema[$exclusiveKeyword],\n\t    $isDataExcl = it.opts.$data && $schemaExcl && $schemaExcl.$data,\n\t    $op = $isMax ? '<' : '>',\n\t    $notOp = $isMax ? '>' : '<',\n\t    $errorKeyword = undefined;\n\t  if (!($isData || typeof $schema == 'number' || $schema === undefined)) {\n\t    throw new Error($keyword + ' must be number');\n\t  }\n\t  if (!($isDataExcl || $schemaExcl === undefined || typeof $schemaExcl == 'number' || typeof $schemaExcl == 'boolean')) {\n\t    throw new Error($exclusiveKeyword + ' must be number or boolean');\n\t  }\n\t  if ($isDataExcl) {\n\t    var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr),\n\t      $exclusive = 'exclusive' + $lvl,\n\t      $exclType = 'exclType' + $lvl,\n\t      $exclIsNumber = 'exclIsNumber' + $lvl,\n\t      $opExpr = 'op' + $lvl,\n\t      $opStr = '\\' + ' + $opExpr + ' + \\'';\n\t    out += ' var schemaExcl' + ($lvl) + ' = ' + ($schemaValueExcl) + '; ';\n\t    $schemaValueExcl = 'schemaExcl' + $lvl;\n\t    out += ' var ' + ($exclusive) + '; var ' + ($exclType) + ' = typeof ' + ($schemaValueExcl) + '; if (' + ($exclType) + ' != \\'boolean\\' && ' + ($exclType) + ' != \\'undefined\\' && ' + ($exclType) + ' != \\'number\\') { ';\n\t    var $errorKeyword = $exclusiveKeyword;\n\t    var $$outStack = $$outStack || [];\n\t    $$outStack.push(out);\n\t    out = ''; /* istanbul ignore else */\n\t    if (it.createErrors !== false) {\n\t      out += ' { keyword: \\'' + ($errorKeyword || '_exclusiveLimit') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n\t      if (it.opts.messages !== false) {\n\t        out += ' , message: \\'' + ($exclusiveKeyword) + ' should be boolean\\' ';\n\t      }\n\t      if (it.opts.verbose) {\n\t        out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n\t      }\n\t      out += ' } ';\n\t    } else {\n\t      out += ' {} ';\n\t    }\n\t    var __err = out;\n\t    out = $$outStack.pop();\n\t    if (!it.compositeRule && $breakOnError) {\n\t      /* istanbul ignore if */\n\t      if (it.async) {\n\t        out += ' throw new ValidationError([' + (__err) + ']); ';\n\t      } else {\n\t        out += ' validate.errors = [' + (__err) + ']; return false; ';\n\t      }\n\t    } else {\n\t      out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n\t    }\n\t    out += ' } else if ( ';\n\t    if ($isData) {\n\t      out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n\t    }\n\t    out += ' ' + ($exclType) + ' == \\'number\\' ? ( (' + ($exclusive) + ' = ' + ($schemaValue) + ' === undefined || ' + ($schemaValueExcl) + ' ' + ($op) + '= ' + ($schemaValue) + ') ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValueExcl) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) : ( (' + ($exclusive) + ' = ' + ($schemaValueExcl) + ' === true) ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValue) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) || ' + ($data) + ' !== ' + ($data) + ') { var op' + ($lvl) + ' = ' + ($exclusive) + ' ? \\'' + ($op) + '\\' : \\'' + ($op) + '=\\'; ';\n\t    if ($schema === undefined) {\n\t      $errorKeyword = $exclusiveKeyword;\n\t      $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword;\n\t      $schemaValue = $schemaValueExcl;\n\t      $isData = $isDataExcl;\n\t    }\n\t  } else {\n\t    var $exclIsNumber = typeof $schemaExcl == 'number',\n\t      $opStr = $op;\n\t    if ($exclIsNumber && $isData) {\n\t      var $opExpr = '\\'' + $opStr + '\\'';\n\t      out += ' if ( ';\n\t      if ($isData) {\n\t        out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n\t      }\n\t      out += ' ( ' + ($schemaValue) + ' === undefined || ' + ($schemaExcl) + ' ' + ($op) + '= ' + ($schemaValue) + ' ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaExcl) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) || ' + ($data) + ' !== ' + ($data) + ') { ';\n\t    } else {\n\t      if ($exclIsNumber && $schema === undefined) {\n\t        $exclusive = true;\n\t        $errorKeyword = $exclusiveKeyword;\n\t        $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword;\n\t        $schemaValue = $schemaExcl;\n\t        $notOp += '=';\n\t      } else {\n\t        if ($exclIsNumber) $schemaValue = Math[$isMax ? 'min' : 'max']($schemaExcl, $schema);\n\t        if ($schemaExcl === ($exclIsNumber ? $schemaValue : true)) {\n\t          $exclusive = true;\n\t          $errorKeyword = $exclusiveKeyword;\n\t          $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword;\n\t          $notOp += '=';\n\t        } else {\n\t          $exclusive = false;\n\t          $opStr += '=';\n\t        }\n\t      }\n\t      var $opExpr = '\\'' + $opStr + '\\'';\n\t      out += ' if ( ';\n\t      if ($isData) {\n\t        out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n\t      }\n\t      out += ' ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' || ' + ($data) + ' !== ' + ($data) + ') { ';\n\t    }\n\t  }\n\t  $errorKeyword = $errorKeyword || $keyword;\n\t  var $$outStack = $$outStack || [];\n\t  $$outStack.push(out);\n\t  out = ''; /* istanbul ignore else */\n\t  if (it.createErrors !== false) {\n\t    out += ' { keyword: \\'' + ($errorKeyword || '_limit') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { comparison: ' + ($opExpr) + ', limit: ' + ($schemaValue) + ', exclusive: ' + ($exclusive) + ' } ';\n\t    if (it.opts.messages !== false) {\n\t      out += ' , message: \\'should be ' + ($opStr) + ' ';\n\t      if ($isData) {\n\t        out += '\\' + ' + ($schemaValue);\n\t      } else {\n\t        out += '' + ($schemaValue) + '\\'';\n\t      }\n\t    }\n\t    if (it.opts.verbose) {\n\t      out += ' , schema:  ';\n\t      if ($isData) {\n\t        out += 'validate.schema' + ($schemaPath);\n\t      } else {\n\t        out += '' + ($schema);\n\t      }\n\t      out += '         , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n\t    }\n\t    out += ' } ';\n\t  } else {\n\t    out += ' {} ';\n\t  }\n\t  var __err = out;\n\t  out = $$outStack.pop();\n\t  if (!it.compositeRule && $breakOnError) {\n\t    /* istanbul ignore if */\n\t    if (it.async) {\n\t      out += ' throw new ValidationError([' + (__err) + ']); ';\n\t    } else {\n\t      out += ' validate.errors = [' + (__err) + ']; return false; ';\n\t    }\n\t  } else {\n\t    out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n\t  }\n\t  out += ' } ';\n\t  if ($breakOnError) {\n\t    out += ' else { ';\n\t  }\n\t  return out;\n\t};\n\treturn _limit;\n}\n\nvar _limitItems;\nvar hasRequired_limitItems;\n\nfunction require_limitItems () {\n\tif (hasRequired_limitItems) return _limitItems;\n\thasRequired_limitItems = 1;\n\t_limitItems = function generate__limitItems(it, $keyword, $ruleType) {\n\t  var out = ' ';\n\t  var $lvl = it.level;\n\t  var $dataLvl = it.dataLevel;\n\t  var $schema = it.schema[$keyword];\n\t  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n\t  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n\t  var $breakOnError = !it.opts.allErrors;\n\t  var $errorKeyword;\n\t  var $data = 'data' + ($dataLvl || '');\n\t  var $isData = it.opts.$data && $schema && $schema.$data,\n\t    $schemaValue;\n\t  if ($isData) {\n\t    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n\t    $schemaValue = 'schema' + $lvl;\n\t  } else {\n\t    $schemaValue = $schema;\n\t  }\n\t  if (!($isData || typeof $schema == 'number')) {\n\t    throw new Error($keyword + ' must be number');\n\t  }\n\t  var $op = $keyword == 'maxItems' ? '>' : '<';\n\t  out += 'if ( ';\n\t  if ($isData) {\n\t    out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n\t  }\n\t  out += ' ' + ($data) + '.length ' + ($op) + ' ' + ($schemaValue) + ') { ';\n\t  var $errorKeyword = $keyword;\n\t  var $$outStack = $$outStack || [];\n\t  $$outStack.push(out);\n\t  out = ''; /* istanbul ignore else */\n\t  if (it.createErrors !== false) {\n\t    out += ' { keyword: \\'' + ($errorKeyword || '_limitItems') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } ';\n\t    if (it.opts.messages !== false) {\n\t      out += ' , message: \\'should NOT have ';\n\t      if ($keyword == 'maxItems') {\n\t        out += 'more';\n\t      } else {\n\t        out += 'fewer';\n\t      }\n\t      out += ' than ';\n\t      if ($isData) {\n\t        out += '\\' + ' + ($schemaValue) + ' + \\'';\n\t      } else {\n\t        out += '' + ($schema);\n\t      }\n\t      out += ' items\\' ';\n\t    }\n\t    if (it.opts.verbose) {\n\t      out += ' , schema:  ';\n\t      if ($isData) {\n\t        out += 'validate.schema' + ($schemaPath);\n\t      } else {\n\t        out += '' + ($schema);\n\t      }\n\t      out += '         , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n\t    }\n\t    out += ' } ';\n\t  } else {\n\t    out += ' {} ';\n\t  }\n\t  var __err = out;\n\t  out = $$outStack.pop();\n\t  if (!it.compositeRule && $breakOnError) {\n\t    /* istanbul ignore if */\n\t    if (it.async) {\n\t      out += ' throw new ValidationError([' + (__err) + ']); ';\n\t    } else {\n\t      out += ' validate.errors = [' + (__err) + ']; return false; ';\n\t    }\n\t  } else {\n\t    out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n\t  }\n\t  out += '} ';\n\t  if ($breakOnError) {\n\t    out += ' else { ';\n\t  }\n\t  return out;\n\t};\n\treturn _limitItems;\n}\n\nvar _limitLength;\nvar hasRequired_limitLength;\n\nfunction require_limitLength () {\n\tif (hasRequired_limitLength) return _limitLength;\n\thasRequired_limitLength = 1;\n\t_limitLength = function generate__limitLength(it, $keyword, $ruleType) {\n\t  var out = ' ';\n\t  var $lvl = it.level;\n\t  var $dataLvl = it.dataLevel;\n\t  var $schema = it.schema[$keyword];\n\t  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n\t  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n\t  var $breakOnError = !it.opts.allErrors;\n\t  var $errorKeyword;\n\t  var $data = 'data' + ($dataLvl || '');\n\t  var $isData = it.opts.$data && $schema && $schema.$data,\n\t    $schemaValue;\n\t  if ($isData) {\n\t    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n\t    $schemaValue = 'schema' + $lvl;\n\t  } else {\n\t    $schemaValue = $schema;\n\t  }\n\t  if (!($isData || typeof $schema == 'number')) {\n\t    throw new Error($keyword + ' must be number');\n\t  }\n\t  var $op = $keyword == 'maxLength' ? '>' : '<';\n\t  out += 'if ( ';\n\t  if ($isData) {\n\t    out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n\t  }\n\t  if (it.opts.unicode === false) {\n\t    out += ' ' + ($data) + '.length ';\n\t  } else {\n\t    out += ' ucs2length(' + ($data) + ') ';\n\t  }\n\t  out += ' ' + ($op) + ' ' + ($schemaValue) + ') { ';\n\t  var $errorKeyword = $keyword;\n\t  var $$outStack = $$outStack || [];\n\t  $$outStack.push(out);\n\t  out = ''; /* istanbul ignore else */\n\t  if (it.createErrors !== false) {\n\t    out += ' { keyword: \\'' + ($errorKeyword || '_limitLength') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } ';\n\t    if (it.opts.messages !== false) {\n\t      out += ' , message: \\'should NOT be ';\n\t      if ($keyword == 'maxLength') {\n\t        out += 'longer';\n\t      } else {\n\t        out += 'shorter';\n\t      }\n\t      out += ' than ';\n\t      if ($isData) {\n\t        out += '\\' + ' + ($schemaValue) + ' + \\'';\n\t      } else {\n\t        out += '' + ($schema);\n\t      }\n\t      out += ' characters\\' ';\n\t    }\n\t    if (it.opts.verbose) {\n\t      out += ' , schema:  ';\n\t      if ($isData) {\n\t        out += 'validate.schema' + ($schemaPath);\n\t      } else {\n\t        out += '' + ($schema);\n\t      }\n\t      out += '         , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n\t    }\n\t    out += ' } ';\n\t  } else {\n\t    out += ' {} ';\n\t  }\n\t  var __err = out;\n\t  out = $$outStack.pop();\n\t  if (!it.compositeRule && $breakOnError) {\n\t    /* istanbul ignore if */\n\t    if (it.async) {\n\t      out += ' throw new ValidationError([' + (__err) + ']); ';\n\t    } else {\n\t      out += ' validate.errors = [' + (__err) + ']; return false; ';\n\t    }\n\t  } else {\n\t    out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n\t  }\n\t  out += '} ';\n\t  if ($breakOnError) {\n\t    out += ' else { ';\n\t  }\n\t  return out;\n\t};\n\treturn _limitLength;\n}\n\nvar _limitProperties;\nvar hasRequired_limitProperties;\n\nfunction require_limitProperties () {\n\tif (hasRequired_limitProperties) return _limitProperties;\n\thasRequired_limitProperties = 1;\n\t_limitProperties = function generate__limitProperties(it, $keyword, $ruleType) {\n\t  var out = ' ';\n\t  var $lvl = it.level;\n\t  var $dataLvl = it.dataLevel;\n\t  var $schema = it.schema[$keyword];\n\t  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n\t  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n\t  var $breakOnError = !it.opts.allErrors;\n\t  var $errorKeyword;\n\t  var $data = 'data' + ($dataLvl || '');\n\t  var $isData = it.opts.$data && $schema && $schema.$data,\n\t    $schemaValue;\n\t  if ($isData) {\n\t    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n\t    $schemaValue = 'schema' + $lvl;\n\t  } else {\n\t    $schemaValue = $schema;\n\t  }\n\t  if (!($isData || typeof $schema == 'number')) {\n\t    throw new Error($keyword + ' must be number');\n\t  }\n\t  var $op = $keyword == 'maxProperties' ? '>' : '<';\n\t  out += 'if ( ';\n\t  if ($isData) {\n\t    out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n\t  }\n\t  out += ' Object.keys(' + ($data) + ').length ' + ($op) + ' ' + ($schemaValue) + ') { ';\n\t  var $errorKeyword = $keyword;\n\t  var $$outStack = $$outStack || [];\n\t  $$outStack.push(out);\n\t  out = ''; /* istanbul ignore else */\n\t  if (it.createErrors !== false) {\n\t    out += ' { keyword: \\'' + ($errorKeyword || '_limitProperties') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } ';\n\t    if (it.opts.messages !== false) {\n\t      out += ' , message: \\'should NOT have ';\n\t      if ($keyword == 'maxProperties') {\n\t        out += 'more';\n\t      } else {\n\t        out += 'fewer';\n\t      }\n\t      out += ' than ';\n\t      if ($isData) {\n\t        out += '\\' + ' + ($schemaValue) + ' + \\'';\n\t      } else {\n\t        out += '' + ($schema);\n\t      }\n\t      out += ' properties\\' ';\n\t    }\n\t    if (it.opts.verbose) {\n\t      out += ' , schema:  ';\n\t      if ($isData) {\n\t        out += 'validate.schema' + ($schemaPath);\n\t      } else {\n\t        out += '' + ($schema);\n\t      }\n\t      out += '         , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n\t    }\n\t    out += ' } ';\n\t  } else {\n\t    out += ' {} ';\n\t  }\n\t  var __err = out;\n\t  out = $$outStack.pop();\n\t  if (!it.compositeRule && $breakOnError) {\n\t    /* istanbul ignore if */\n\t    if (it.async) {\n\t      out += ' throw new ValidationError([' + (__err) + ']); ';\n\t    } else {\n\t      out += ' validate.errors = [' + (__err) + ']; return false; ';\n\t    }\n\t  } else {\n\t    out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n\t  }\n\t  out += '} ';\n\t  if ($breakOnError) {\n\t    out += ' else { ';\n\t  }\n\t  return out;\n\t};\n\treturn _limitProperties;\n}\n\nvar multipleOf;\nvar hasRequiredMultipleOf;\n\nfunction requireMultipleOf () {\n\tif (hasRequiredMultipleOf) return multipleOf;\n\thasRequiredMultipleOf = 1;\n\tmultipleOf = function generate_multipleOf(it, $keyword, $ruleType) {\n\t  var out = ' ';\n\t  var $lvl = it.level;\n\t  var $dataLvl = it.dataLevel;\n\t  var $schema = it.schema[$keyword];\n\t  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n\t  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n\t  var $breakOnError = !it.opts.allErrors;\n\t  var $data = 'data' + ($dataLvl || '');\n\t  var $isData = it.opts.$data && $schema && $schema.$data,\n\t    $schemaValue;\n\t  if ($isData) {\n\t    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n\t    $schemaValue = 'schema' + $lvl;\n\t  } else {\n\t    $schemaValue = $schema;\n\t  }\n\t  if (!($isData || typeof $schema == 'number')) {\n\t    throw new Error($keyword + ' must be number');\n\t  }\n\t  out += 'var division' + ($lvl) + ';if (';\n\t  if ($isData) {\n\t    out += ' ' + ($schemaValue) + ' !== undefined && ( typeof ' + ($schemaValue) + ' != \\'number\\' || ';\n\t  }\n\t  out += ' (division' + ($lvl) + ' = ' + ($data) + ' / ' + ($schemaValue) + ', ';\n\t  if (it.opts.multipleOfPrecision) {\n\t    out += ' Math.abs(Math.round(division' + ($lvl) + ') - division' + ($lvl) + ') > 1e-' + (it.opts.multipleOfPrecision) + ' ';\n\t  } else {\n\t    out += ' division' + ($lvl) + ' !== parseInt(division' + ($lvl) + ') ';\n\t  }\n\t  out += ' ) ';\n\t  if ($isData) {\n\t    out += '  )  ';\n\t  }\n\t  out += ' ) {   ';\n\t  var $$outStack = $$outStack || [];\n\t  $$outStack.push(out);\n\t  out = ''; /* istanbul ignore else */\n\t  if (it.createErrors !== false) {\n\t    out += ' { keyword: \\'' + ('multipleOf') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { multipleOf: ' + ($schemaValue) + ' } ';\n\t    if (it.opts.messages !== false) {\n\t      out += ' , message: \\'should be multiple of ';\n\t      if ($isData) {\n\t        out += '\\' + ' + ($schemaValue);\n\t      } else {\n\t        out += '' + ($schemaValue) + '\\'';\n\t      }\n\t    }\n\t    if (it.opts.verbose) {\n\t      out += ' , schema:  ';\n\t      if ($isData) {\n\t        out += 'validate.schema' + ($schemaPath);\n\t      } else {\n\t        out += '' + ($schema);\n\t      }\n\t      out += '         , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n\t    }\n\t    out += ' } ';\n\t  } else {\n\t    out += ' {} ';\n\t  }\n\t  var __err = out;\n\t  out = $$outStack.pop();\n\t  if (!it.compositeRule && $breakOnError) {\n\t    /* istanbul ignore if */\n\t    if (it.async) {\n\t      out += ' throw new ValidationError([' + (__err) + ']); ';\n\t    } else {\n\t      out += ' validate.errors = [' + (__err) + ']; return false; ';\n\t    }\n\t  } else {\n\t    out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n\t  }\n\t  out += '} ';\n\t  if ($breakOnError) {\n\t    out += ' else { ';\n\t  }\n\t  return out;\n\t};\n\treturn multipleOf;\n}\n\nvar not;\nvar hasRequiredNot;\n\nfunction requireNot () {\n\tif (hasRequiredNot) return not;\n\thasRequiredNot = 1;\n\tnot = function generate_not(it, $keyword, $ruleType) {\n\t  var out = ' ';\n\t  var $lvl = it.level;\n\t  var $dataLvl = it.dataLevel;\n\t  var $schema = it.schema[$keyword];\n\t  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n\t  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n\t  var $breakOnError = !it.opts.allErrors;\n\t  var $data = 'data' + ($dataLvl || '');\n\t  var $errs = 'errs__' + $lvl;\n\t  var $it = it.util.copy(it);\n\t  $it.level++;\n\t  var $nextValid = 'valid' + $it.level;\n\t  if ((it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all))) {\n\t    $it.schema = $schema;\n\t    $it.schemaPath = $schemaPath;\n\t    $it.errSchemaPath = $errSchemaPath;\n\t    out += ' var ' + ($errs) + ' = errors;  ';\n\t    var $wasComposite = it.compositeRule;\n\t    it.compositeRule = $it.compositeRule = true;\n\t    $it.createErrors = false;\n\t    var $allErrorsOption;\n\t    if ($it.opts.allErrors) {\n\t      $allErrorsOption = $it.opts.allErrors;\n\t      $it.opts.allErrors = false;\n\t    }\n\t    out += ' ' + (it.validate($it)) + ' ';\n\t    $it.createErrors = true;\n\t    if ($allErrorsOption) $it.opts.allErrors = $allErrorsOption;\n\t    it.compositeRule = $it.compositeRule = $wasComposite;\n\t    out += ' if (' + ($nextValid) + ') {   ';\n\t    var $$outStack = $$outStack || [];\n\t    $$outStack.push(out);\n\t    out = ''; /* istanbul ignore else */\n\t    if (it.createErrors !== false) {\n\t      out += ' { keyword: \\'' + ('not') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n\t      if (it.opts.messages !== false) {\n\t        out += ' , message: \\'should NOT be valid\\' ';\n\t      }\n\t      if (it.opts.verbose) {\n\t        out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n\t      }\n\t      out += ' } ';\n\t    } else {\n\t      out += ' {} ';\n\t    }\n\t    var __err = out;\n\t    out = $$outStack.pop();\n\t    if (!it.compositeRule && $breakOnError) {\n\t      /* istanbul ignore if */\n\t      if (it.async) {\n\t        out += ' throw new ValidationError([' + (__err) + ']); ';\n\t      } else {\n\t        out += ' validate.errors = [' + (__err) + ']; return false; ';\n\t      }\n\t    } else {\n\t      out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n\t    }\n\t    out += ' } else {  errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';\n\t    if (it.opts.allErrors) {\n\t      out += ' } ';\n\t    }\n\t  } else {\n\t    out += '  var err =   '; /* istanbul ignore else */\n\t    if (it.createErrors !== false) {\n\t      out += ' { keyword: \\'' + ('not') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n\t      if (it.opts.messages !== false) {\n\t        out += ' , message: \\'should NOT be valid\\' ';\n\t      }\n\t      if (it.opts.verbose) {\n\t        out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n\t      }\n\t      out += ' } ';\n\t    } else {\n\t      out += ' {} ';\n\t    }\n\t    out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n\t    if ($breakOnError) {\n\t      out += ' if (false) { ';\n\t    }\n\t  }\n\t  return out;\n\t};\n\treturn not;\n}\n\nvar oneOf;\nvar hasRequiredOneOf;\n\nfunction requireOneOf () {\n\tif (hasRequiredOneOf) return oneOf;\n\thasRequiredOneOf = 1;\n\toneOf = function generate_oneOf(it, $keyword, $ruleType) {\n\t  var out = ' ';\n\t  var $lvl = it.level;\n\t  var $dataLvl = it.dataLevel;\n\t  var $schema = it.schema[$keyword];\n\t  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n\t  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n\t  var $breakOnError = !it.opts.allErrors;\n\t  var $data = 'data' + ($dataLvl || '');\n\t  var $valid = 'valid' + $lvl;\n\t  var $errs = 'errs__' + $lvl;\n\t  var $it = it.util.copy(it);\n\t  var $closingBraces = '';\n\t  $it.level++;\n\t  var $nextValid = 'valid' + $it.level;\n\t  var $currentBaseId = $it.baseId,\n\t    $prevValid = 'prevValid' + $lvl,\n\t    $passingSchemas = 'passingSchemas' + $lvl;\n\t  out += 'var ' + ($errs) + ' = errors , ' + ($prevValid) + ' = false , ' + ($valid) + ' = false , ' + ($passingSchemas) + ' = null; ';\n\t  var $wasComposite = it.compositeRule;\n\t  it.compositeRule = $it.compositeRule = true;\n\t  var arr1 = $schema;\n\t  if (arr1) {\n\t    var $sch, $i = -1,\n\t      l1 = arr1.length - 1;\n\t    while ($i < l1) {\n\t      $sch = arr1[$i += 1];\n\t      if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {\n\t        $it.schema = $sch;\n\t        $it.schemaPath = $schemaPath + '[' + $i + ']';\n\t        $it.errSchemaPath = $errSchemaPath + '/' + $i;\n\t        out += '  ' + (it.validate($it)) + ' ';\n\t        $it.baseId = $currentBaseId;\n\t      } else {\n\t        out += ' var ' + ($nextValid) + ' = true; ';\n\t      }\n\t      if ($i) {\n\t        out += ' if (' + ($nextValid) + ' && ' + ($prevValid) + ') { ' + ($valid) + ' = false; ' + ($passingSchemas) + ' = [' + ($passingSchemas) + ', ' + ($i) + ']; } else { ';\n\t        $closingBraces += '}';\n\t      }\n\t      out += ' if (' + ($nextValid) + ') { ' + ($valid) + ' = ' + ($prevValid) + ' = true; ' + ($passingSchemas) + ' = ' + ($i) + '; }';\n\t    }\n\t  }\n\t  it.compositeRule = $it.compositeRule = $wasComposite;\n\t  out += '' + ($closingBraces) + 'if (!' + ($valid) + ') {   var err =   '; /* istanbul ignore else */\n\t  if (it.createErrors !== false) {\n\t    out += ' { keyword: \\'' + ('oneOf') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { passingSchemas: ' + ($passingSchemas) + ' } ';\n\t    if (it.opts.messages !== false) {\n\t      out += ' , message: \\'should match exactly one schema in oneOf\\' ';\n\t    }\n\t    if (it.opts.verbose) {\n\t      out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n\t    }\n\t    out += ' } ';\n\t  } else {\n\t    out += ' {} ';\n\t  }\n\t  out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n\t  if (!it.compositeRule && $breakOnError) {\n\t    /* istanbul ignore if */\n\t    if (it.async) {\n\t      out += ' throw new ValidationError(vErrors); ';\n\t    } else {\n\t      out += ' validate.errors = vErrors; return false; ';\n\t    }\n\t  }\n\t  out += '} else {  errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; }';\n\t  if (it.opts.allErrors) {\n\t    out += ' } ';\n\t  }\n\t  return out;\n\t};\n\treturn oneOf;\n}\n\nvar pattern;\nvar hasRequiredPattern;\n\nfunction requirePattern () {\n\tif (hasRequiredPattern) return pattern;\n\thasRequiredPattern = 1;\n\tpattern = function generate_pattern(it, $keyword, $ruleType) {\n\t  var out = ' ';\n\t  var $lvl = it.level;\n\t  var $dataLvl = it.dataLevel;\n\t  var $schema = it.schema[$keyword];\n\t  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n\t  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n\t  var $breakOnError = !it.opts.allErrors;\n\t  var $data = 'data' + ($dataLvl || '');\n\t  var $isData = it.opts.$data && $schema && $schema.$data,\n\t    $schemaValue;\n\t  if ($isData) {\n\t    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n\t    $schemaValue = 'schema' + $lvl;\n\t  } else {\n\t    $schemaValue = $schema;\n\t  }\n\t  var $regexp = $isData ? '(new RegExp(' + $schemaValue + '))' : it.usePattern($schema);\n\t  out += 'if ( ';\n\t  if ($isData) {\n\t    out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'string\\') || ';\n\t  }\n\t  out += ' !' + ($regexp) + '.test(' + ($data) + ') ) {   ';\n\t  var $$outStack = $$outStack || [];\n\t  $$outStack.push(out);\n\t  out = ''; /* istanbul ignore else */\n\t  if (it.createErrors !== false) {\n\t    out += ' { keyword: \\'' + ('pattern') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { pattern:  ';\n\t    if ($isData) {\n\t      out += '' + ($schemaValue);\n\t    } else {\n\t      out += '' + (it.util.toQuotedString($schema));\n\t    }\n\t    out += '  } ';\n\t    if (it.opts.messages !== false) {\n\t      out += ' , message: \\'should match pattern \"';\n\t      if ($isData) {\n\t        out += '\\' + ' + ($schemaValue) + ' + \\'';\n\t      } else {\n\t        out += '' + (it.util.escapeQuotes($schema));\n\t      }\n\t      out += '\"\\' ';\n\t    }\n\t    if (it.opts.verbose) {\n\t      out += ' , schema:  ';\n\t      if ($isData) {\n\t        out += 'validate.schema' + ($schemaPath);\n\t      } else {\n\t        out += '' + (it.util.toQuotedString($schema));\n\t      }\n\t      out += '         , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n\t    }\n\t    out += ' } ';\n\t  } else {\n\t    out += ' {} ';\n\t  }\n\t  var __err = out;\n\t  out = $$outStack.pop();\n\t  if (!it.compositeRule && $breakOnError) {\n\t    /* istanbul ignore if */\n\t    if (it.async) {\n\t      out += ' throw new ValidationError([' + (__err) + ']); ';\n\t    } else {\n\t      out += ' validate.errors = [' + (__err) + ']; return false; ';\n\t    }\n\t  } else {\n\t    out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n\t  }\n\t  out += '} ';\n\t  if ($breakOnError) {\n\t    out += ' else { ';\n\t  }\n\t  return out;\n\t};\n\treturn pattern;\n}\n\nvar properties$3;\nvar hasRequiredProperties;\n\nfunction requireProperties () {\n\tif (hasRequiredProperties) return properties$3;\n\thasRequiredProperties = 1;\n\tproperties$3 = function generate_properties(it, $keyword, $ruleType) {\n\t  var out = ' ';\n\t  var $lvl = it.level;\n\t  var $dataLvl = it.dataLevel;\n\t  var $schema = it.schema[$keyword];\n\t  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n\t  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n\t  var $breakOnError = !it.opts.allErrors;\n\t  var $data = 'data' + ($dataLvl || '');\n\t  var $errs = 'errs__' + $lvl;\n\t  var $it = it.util.copy(it);\n\t  var $closingBraces = '';\n\t  $it.level++;\n\t  var $nextValid = 'valid' + $it.level;\n\t  var $key = 'key' + $lvl,\n\t    $idx = 'idx' + $lvl,\n\t    $dataNxt = $it.dataLevel = it.dataLevel + 1,\n\t    $nextData = 'data' + $dataNxt,\n\t    $dataProperties = 'dataProperties' + $lvl;\n\t  var $schemaKeys = Object.keys($schema || {}).filter(notProto),\n\t    $pProperties = it.schema.patternProperties || {},\n\t    $pPropertyKeys = Object.keys($pProperties).filter(notProto),\n\t    $aProperties = it.schema.additionalProperties,\n\t    $someProperties = $schemaKeys.length || $pPropertyKeys.length,\n\t    $noAdditional = $aProperties === false,\n\t    $additionalIsSchema = typeof $aProperties == 'object' && Object.keys($aProperties).length,\n\t    $removeAdditional = it.opts.removeAdditional,\n\t    $checkAdditional = $noAdditional || $additionalIsSchema || $removeAdditional,\n\t    $ownProperties = it.opts.ownProperties,\n\t    $currentBaseId = it.baseId;\n\t  var $required = it.schema.required;\n\t  if ($required && !(it.opts.$data && $required.$data) && $required.length < it.opts.loopRequired) {\n\t    var $requiredHash = it.util.toHash($required);\n\t  }\n\n\t  function notProto(p) {\n\t    return p !== '__proto__';\n\t  }\n\t  out += 'var ' + ($errs) + ' = errors;var ' + ($nextValid) + ' = true;';\n\t  if ($ownProperties) {\n\t    out += ' var ' + ($dataProperties) + ' = undefined;';\n\t  }\n\t  if ($checkAdditional) {\n\t    if ($ownProperties) {\n\t      out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; ';\n\t    } else {\n\t      out += ' for (var ' + ($key) + ' in ' + ($data) + ') { ';\n\t    }\n\t    if ($someProperties) {\n\t      out += ' var isAdditional' + ($lvl) + ' = !(false ';\n\t      if ($schemaKeys.length) {\n\t        if ($schemaKeys.length > 8) {\n\t          out += ' || validate.schema' + ($schemaPath) + '.hasOwnProperty(' + ($key) + ') ';\n\t        } else {\n\t          var arr1 = $schemaKeys;\n\t          if (arr1) {\n\t            var $propertyKey, i1 = -1,\n\t              l1 = arr1.length - 1;\n\t            while (i1 < l1) {\n\t              $propertyKey = arr1[i1 += 1];\n\t              out += ' || ' + ($key) + ' == ' + (it.util.toQuotedString($propertyKey)) + ' ';\n\t            }\n\t          }\n\t        }\n\t      }\n\t      if ($pPropertyKeys.length) {\n\t        var arr2 = $pPropertyKeys;\n\t        if (arr2) {\n\t          var $pProperty, $i = -1,\n\t            l2 = arr2.length - 1;\n\t          while ($i < l2) {\n\t            $pProperty = arr2[$i += 1];\n\t            out += ' || ' + (it.usePattern($pProperty)) + '.test(' + ($key) + ') ';\n\t          }\n\t        }\n\t      }\n\t      out += ' ); if (isAdditional' + ($lvl) + ') { ';\n\t    }\n\t    if ($removeAdditional == 'all') {\n\t      out += ' delete ' + ($data) + '[' + ($key) + ']; ';\n\t    } else {\n\t      var $currentErrorPath = it.errorPath;\n\t      var $additionalProperty = '\\' + ' + $key + ' + \\'';\n\t      if (it.opts._errorDataPathProperty) {\n\t        it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);\n\t      }\n\t      if ($noAdditional) {\n\t        if ($removeAdditional) {\n\t          out += ' delete ' + ($data) + '[' + ($key) + ']; ';\n\t        } else {\n\t          out += ' ' + ($nextValid) + ' = false; ';\n\t          var $currErrSchemaPath = $errSchemaPath;\n\t          $errSchemaPath = it.errSchemaPath + '/additionalProperties';\n\t          var $$outStack = $$outStack || [];\n\t          $$outStack.push(out);\n\t          out = ''; /* istanbul ignore else */\n\t          if (it.createErrors !== false) {\n\t            out += ' { keyword: \\'' + ('additionalProperties') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { additionalProperty: \\'' + ($additionalProperty) + '\\' } ';\n\t            if (it.opts.messages !== false) {\n\t              out += ' , message: \\'';\n\t              if (it.opts._errorDataPathProperty) {\n\t                out += 'is an invalid additional property';\n\t              } else {\n\t                out += 'should NOT have additional properties';\n\t              }\n\t              out += '\\' ';\n\t            }\n\t            if (it.opts.verbose) {\n\t              out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n\t            }\n\t            out += ' } ';\n\t          } else {\n\t            out += ' {} ';\n\t          }\n\t          var __err = out;\n\t          out = $$outStack.pop();\n\t          if (!it.compositeRule && $breakOnError) {\n\t            /* istanbul ignore if */\n\t            if (it.async) {\n\t              out += ' throw new ValidationError([' + (__err) + ']); ';\n\t            } else {\n\t              out += ' validate.errors = [' + (__err) + ']; return false; ';\n\t            }\n\t          } else {\n\t            out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n\t          }\n\t          $errSchemaPath = $currErrSchemaPath;\n\t          if ($breakOnError) {\n\t            out += ' break; ';\n\t          }\n\t        }\n\t      } else if ($additionalIsSchema) {\n\t        if ($removeAdditional == 'failing') {\n\t          out += ' var ' + ($errs) + ' = errors;  ';\n\t          var $wasComposite = it.compositeRule;\n\t          it.compositeRule = $it.compositeRule = true;\n\t          $it.schema = $aProperties;\n\t          $it.schemaPath = it.schemaPath + '.additionalProperties';\n\t          $it.errSchemaPath = it.errSchemaPath + '/additionalProperties';\n\t          $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);\n\t          var $passData = $data + '[' + $key + ']';\n\t          $it.dataPathArr[$dataNxt] = $key;\n\t          var $code = it.validate($it);\n\t          $it.baseId = $currentBaseId;\n\t          if (it.util.varOccurences($code, $nextData) < 2) {\n\t            out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n\t          } else {\n\t            out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n\t          }\n\t          out += ' if (!' + ($nextValid) + ') { errors = ' + ($errs) + '; if (validate.errors !== null) { if (errors) validate.errors.length = errors; else validate.errors = null; } delete ' + ($data) + '[' + ($key) + ']; }  ';\n\t          it.compositeRule = $it.compositeRule = $wasComposite;\n\t        } else {\n\t          $it.schema = $aProperties;\n\t          $it.schemaPath = it.schemaPath + '.additionalProperties';\n\t          $it.errSchemaPath = it.errSchemaPath + '/additionalProperties';\n\t          $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);\n\t          var $passData = $data + '[' + $key + ']';\n\t          $it.dataPathArr[$dataNxt] = $key;\n\t          var $code = it.validate($it);\n\t          $it.baseId = $currentBaseId;\n\t          if (it.util.varOccurences($code, $nextData) < 2) {\n\t            out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n\t          } else {\n\t            out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n\t          }\n\t          if ($breakOnError) {\n\t            out += ' if (!' + ($nextValid) + ') break; ';\n\t          }\n\t        }\n\t      }\n\t      it.errorPath = $currentErrorPath;\n\t    }\n\t    if ($someProperties) {\n\t      out += ' } ';\n\t    }\n\t    out += ' }  ';\n\t    if ($breakOnError) {\n\t      out += ' if (' + ($nextValid) + ') { ';\n\t      $closingBraces += '}';\n\t    }\n\t  }\n\t  var $useDefaults = it.opts.useDefaults && !it.compositeRule;\n\t  if ($schemaKeys.length) {\n\t    var arr3 = $schemaKeys;\n\t    if (arr3) {\n\t      var $propertyKey, i3 = -1,\n\t        l3 = arr3.length - 1;\n\t      while (i3 < l3) {\n\t        $propertyKey = arr3[i3 += 1];\n\t        var $sch = $schema[$propertyKey];\n\t        if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {\n\t          var $prop = it.util.getProperty($propertyKey),\n\t            $passData = $data + $prop,\n\t            $hasDefault = $useDefaults && $sch.default !== undefined;\n\t          $it.schema = $sch;\n\t          $it.schemaPath = $schemaPath + $prop;\n\t          $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($propertyKey);\n\t          $it.errorPath = it.util.getPath(it.errorPath, $propertyKey, it.opts.jsonPointers);\n\t          $it.dataPathArr[$dataNxt] = it.util.toQuotedString($propertyKey);\n\t          var $code = it.validate($it);\n\t          $it.baseId = $currentBaseId;\n\t          if (it.util.varOccurences($code, $nextData) < 2) {\n\t            $code = it.util.varReplace($code, $nextData, $passData);\n\t            var $useData = $passData;\n\t          } else {\n\t            var $useData = $nextData;\n\t            out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ';\n\t          }\n\t          if ($hasDefault) {\n\t            out += ' ' + ($code) + ' ';\n\t          } else {\n\t            if ($requiredHash && $requiredHash[$propertyKey]) {\n\t              out += ' if ( ' + ($useData) + ' === undefined ';\n\t              if ($ownProperties) {\n\t                out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n\t              }\n\t              out += ') { ' + ($nextValid) + ' = false; ';\n\t              var $currentErrorPath = it.errorPath,\n\t                $currErrSchemaPath = $errSchemaPath,\n\t                $missingProperty = it.util.escapeQuotes($propertyKey);\n\t              if (it.opts._errorDataPathProperty) {\n\t                it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers);\n\t              }\n\t              $errSchemaPath = it.errSchemaPath + '/required';\n\t              var $$outStack = $$outStack || [];\n\t              $$outStack.push(out);\n\t              out = ''; /* istanbul ignore else */\n\t              if (it.createErrors !== false) {\n\t                out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n\t                if (it.opts.messages !== false) {\n\t                  out += ' , message: \\'';\n\t                  if (it.opts._errorDataPathProperty) {\n\t                    out += 'is a required property';\n\t                  } else {\n\t                    out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n\t                  }\n\t                  out += '\\' ';\n\t                }\n\t                if (it.opts.verbose) {\n\t                  out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n\t                }\n\t                out += ' } ';\n\t              } else {\n\t                out += ' {} ';\n\t              }\n\t              var __err = out;\n\t              out = $$outStack.pop();\n\t              if (!it.compositeRule && $breakOnError) {\n\t                /* istanbul ignore if */\n\t                if (it.async) {\n\t                  out += ' throw new ValidationError([' + (__err) + ']); ';\n\t                } else {\n\t                  out += ' validate.errors = [' + (__err) + ']; return false; ';\n\t                }\n\t              } else {\n\t                out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n\t              }\n\t              $errSchemaPath = $currErrSchemaPath;\n\t              it.errorPath = $currentErrorPath;\n\t              out += ' } else { ';\n\t            } else {\n\t              if ($breakOnError) {\n\t                out += ' if ( ' + ($useData) + ' === undefined ';\n\t                if ($ownProperties) {\n\t                  out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n\t                }\n\t                out += ') { ' + ($nextValid) + ' = true; } else { ';\n\t              } else {\n\t                out += ' if (' + ($useData) + ' !== undefined ';\n\t                if ($ownProperties) {\n\t                  out += ' &&   Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n\t                }\n\t                out += ' ) { ';\n\t              }\n\t            }\n\t            out += ' ' + ($code) + ' } ';\n\t          }\n\t        }\n\t        if ($breakOnError) {\n\t          out += ' if (' + ($nextValid) + ') { ';\n\t          $closingBraces += '}';\n\t        }\n\t      }\n\t    }\n\t  }\n\t  if ($pPropertyKeys.length) {\n\t    var arr4 = $pPropertyKeys;\n\t    if (arr4) {\n\t      var $pProperty, i4 = -1,\n\t        l4 = arr4.length - 1;\n\t      while (i4 < l4) {\n\t        $pProperty = arr4[i4 += 1];\n\t        var $sch = $pProperties[$pProperty];\n\t        if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {\n\t          $it.schema = $sch;\n\t          $it.schemaPath = it.schemaPath + '.patternProperties' + it.util.getProperty($pProperty);\n\t          $it.errSchemaPath = it.errSchemaPath + '/patternProperties/' + it.util.escapeFragment($pProperty);\n\t          if ($ownProperties) {\n\t            out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; ';\n\t          } else {\n\t            out += ' for (var ' + ($key) + ' in ' + ($data) + ') { ';\n\t          }\n\t          out += ' if (' + (it.usePattern($pProperty)) + '.test(' + ($key) + ')) { ';\n\t          $it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);\n\t          var $passData = $data + '[' + $key + ']';\n\t          $it.dataPathArr[$dataNxt] = $key;\n\t          var $code = it.validate($it);\n\t          $it.baseId = $currentBaseId;\n\t          if (it.util.varOccurences($code, $nextData) < 2) {\n\t            out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n\t          } else {\n\t            out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n\t          }\n\t          if ($breakOnError) {\n\t            out += ' if (!' + ($nextValid) + ') break; ';\n\t          }\n\t          out += ' } ';\n\t          if ($breakOnError) {\n\t            out += ' else ' + ($nextValid) + ' = true; ';\n\t          }\n\t          out += ' }  ';\n\t          if ($breakOnError) {\n\t            out += ' if (' + ($nextValid) + ') { ';\n\t            $closingBraces += '}';\n\t          }\n\t        }\n\t      }\n\t    }\n\t  }\n\t  if ($breakOnError) {\n\t    out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';\n\t  }\n\t  return out;\n\t};\n\treturn properties$3;\n}\n\nvar propertyNames;\nvar hasRequiredPropertyNames;\n\nfunction requirePropertyNames () {\n\tif (hasRequiredPropertyNames) return propertyNames;\n\thasRequiredPropertyNames = 1;\n\tpropertyNames = function generate_propertyNames(it, $keyword, $ruleType) {\n\t  var out = ' ';\n\t  var $lvl = it.level;\n\t  var $dataLvl = it.dataLevel;\n\t  var $schema = it.schema[$keyword];\n\t  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n\t  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n\t  var $breakOnError = !it.opts.allErrors;\n\t  var $data = 'data' + ($dataLvl || '');\n\t  var $errs = 'errs__' + $lvl;\n\t  var $it = it.util.copy(it);\n\t  var $closingBraces = '';\n\t  $it.level++;\n\t  var $nextValid = 'valid' + $it.level;\n\t  out += 'var ' + ($errs) + ' = errors;';\n\t  if ((it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all))) {\n\t    $it.schema = $schema;\n\t    $it.schemaPath = $schemaPath;\n\t    $it.errSchemaPath = $errSchemaPath;\n\t    var $key = 'key' + $lvl,\n\t      $idx = 'idx' + $lvl,\n\t      $i = 'i' + $lvl,\n\t      $invalidName = '\\' + ' + $key + ' + \\'',\n\t      $dataNxt = $it.dataLevel = it.dataLevel + 1,\n\t      $nextData = 'data' + $dataNxt,\n\t      $dataProperties = 'dataProperties' + $lvl,\n\t      $ownProperties = it.opts.ownProperties,\n\t      $currentBaseId = it.baseId;\n\t    if ($ownProperties) {\n\t      out += ' var ' + ($dataProperties) + ' = undefined; ';\n\t    }\n\t    if ($ownProperties) {\n\t      out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; ';\n\t    } else {\n\t      out += ' for (var ' + ($key) + ' in ' + ($data) + ') { ';\n\t    }\n\t    out += ' var startErrs' + ($lvl) + ' = errors; ';\n\t    var $passData = $key;\n\t    var $wasComposite = it.compositeRule;\n\t    it.compositeRule = $it.compositeRule = true;\n\t    var $code = it.validate($it);\n\t    $it.baseId = $currentBaseId;\n\t    if (it.util.varOccurences($code, $nextData) < 2) {\n\t      out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n\t    } else {\n\t      out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n\t    }\n\t    it.compositeRule = $it.compositeRule = $wasComposite;\n\t    out += ' if (!' + ($nextValid) + ') { for (var ' + ($i) + '=startErrs' + ($lvl) + '; ' + ($i) + '<errors; ' + ($i) + '++) { vErrors[' + ($i) + '].propertyName = ' + ($key) + '; }   var err =   '; /* istanbul ignore else */\n\t    if (it.createErrors !== false) {\n\t      out += ' { keyword: \\'' + ('propertyNames') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { propertyName: \\'' + ($invalidName) + '\\' } ';\n\t      if (it.opts.messages !== false) {\n\t        out += ' , message: \\'property name \\\\\\'' + ($invalidName) + '\\\\\\' is invalid\\' ';\n\t      }\n\t      if (it.opts.verbose) {\n\t        out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n\t      }\n\t      out += ' } ';\n\t    } else {\n\t      out += ' {} ';\n\t    }\n\t    out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n\t    if (!it.compositeRule && $breakOnError) {\n\t      /* istanbul ignore if */\n\t      if (it.async) {\n\t        out += ' throw new ValidationError(vErrors); ';\n\t      } else {\n\t        out += ' validate.errors = vErrors; return false; ';\n\t      }\n\t    }\n\t    if ($breakOnError) {\n\t      out += ' break; ';\n\t    }\n\t    out += ' } }';\n\t  }\n\t  if ($breakOnError) {\n\t    out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';\n\t  }\n\t  return out;\n\t};\n\treturn propertyNames;\n}\n\nvar required$1;\nvar hasRequiredRequired;\n\nfunction requireRequired () {\n\tif (hasRequiredRequired) return required$1;\n\thasRequiredRequired = 1;\n\trequired$1 = function generate_required(it, $keyword, $ruleType) {\n\t  var out = ' ';\n\t  var $lvl = it.level;\n\t  var $dataLvl = it.dataLevel;\n\t  var $schema = it.schema[$keyword];\n\t  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n\t  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n\t  var $breakOnError = !it.opts.allErrors;\n\t  var $data = 'data' + ($dataLvl || '');\n\t  var $valid = 'valid' + $lvl;\n\t  var $isData = it.opts.$data && $schema && $schema.$data;\n\t  if ($isData) {\n\t    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n\t  }\n\t  var $vSchema = 'schema' + $lvl;\n\t  if (!$isData) {\n\t    if ($schema.length < it.opts.loopRequired && it.schema.properties && Object.keys(it.schema.properties).length) {\n\t      var $required = [];\n\t      var arr1 = $schema;\n\t      if (arr1) {\n\t        var $property, i1 = -1,\n\t          l1 = arr1.length - 1;\n\t        while (i1 < l1) {\n\t          $property = arr1[i1 += 1];\n\t          var $propertySch = it.schema.properties[$property];\n\t          if (!($propertySch && (it.opts.strictKeywords ? (typeof $propertySch == 'object' && Object.keys($propertySch).length > 0) || $propertySch === false : it.util.schemaHasRules($propertySch, it.RULES.all)))) {\n\t            $required[$required.length] = $property;\n\t          }\n\t        }\n\t      }\n\t    } else {\n\t      var $required = $schema;\n\t    }\n\t  }\n\t  if ($isData || $required.length) {\n\t    var $currentErrorPath = it.errorPath,\n\t      $loopRequired = $isData || $required.length >= it.opts.loopRequired,\n\t      $ownProperties = it.opts.ownProperties;\n\t    if ($breakOnError) {\n\t      out += ' var missing' + ($lvl) + '; ';\n\t      if ($loopRequired) {\n\t        if (!$isData) {\n\t          out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; ';\n\t        }\n\t        var $i = 'i' + $lvl,\n\t          $propertyPath = 'schema' + $lvl + '[' + $i + ']',\n\t          $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\n\t        if (it.opts._errorDataPathProperty) {\n\t          it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers);\n\t        }\n\t        out += ' var ' + ($valid) + ' = true; ';\n\t        if ($isData) {\n\t          out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {';\n\t        }\n\t        out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { ' + ($valid) + ' = ' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] !== undefined ';\n\t        if ($ownProperties) {\n\t          out += ' &&   Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + ']) ';\n\t        }\n\t        out += '; if (!' + ($valid) + ') break; } ';\n\t        if ($isData) {\n\t          out += '  }  ';\n\t        }\n\t        out += '  if (!' + ($valid) + ') {   ';\n\t        var $$outStack = $$outStack || [];\n\t        $$outStack.push(out);\n\t        out = ''; /* istanbul ignore else */\n\t        if (it.createErrors !== false) {\n\t          out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n\t          if (it.opts.messages !== false) {\n\t            out += ' , message: \\'';\n\t            if (it.opts._errorDataPathProperty) {\n\t              out += 'is a required property';\n\t            } else {\n\t              out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n\t            }\n\t            out += '\\' ';\n\t          }\n\t          if (it.opts.verbose) {\n\t            out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n\t          }\n\t          out += ' } ';\n\t        } else {\n\t          out += ' {} ';\n\t        }\n\t        var __err = out;\n\t        out = $$outStack.pop();\n\t        if (!it.compositeRule && $breakOnError) {\n\t          /* istanbul ignore if */\n\t          if (it.async) {\n\t            out += ' throw new ValidationError([' + (__err) + ']); ';\n\t          } else {\n\t            out += ' validate.errors = [' + (__err) + ']; return false; ';\n\t          }\n\t        } else {\n\t          out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n\t        }\n\t        out += ' } else { ';\n\t      } else {\n\t        out += ' if ( ';\n\t        var arr2 = $required;\n\t        if (arr2) {\n\t          var $propertyKey, $i = -1,\n\t            l2 = arr2.length - 1;\n\t          while ($i < l2) {\n\t            $propertyKey = arr2[$i += 1];\n\t            if ($i) {\n\t              out += ' || ';\n\t            }\n\t            var $prop = it.util.getProperty($propertyKey),\n\t              $useData = $data + $prop;\n\t            out += ' ( ( ' + ($useData) + ' === undefined ';\n\t            if ($ownProperties) {\n\t              out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n\t            }\n\t            out += ') && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? $propertyKey : $prop)) + ') ) ';\n\t          }\n\t        }\n\t        out += ') {  ';\n\t        var $propertyPath = 'missing' + $lvl,\n\t          $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\n\t        if (it.opts._errorDataPathProperty) {\n\t          it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath;\n\t        }\n\t        var $$outStack = $$outStack || [];\n\t        $$outStack.push(out);\n\t        out = ''; /* istanbul ignore else */\n\t        if (it.createErrors !== false) {\n\t          out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n\t          if (it.opts.messages !== false) {\n\t            out += ' , message: \\'';\n\t            if (it.opts._errorDataPathProperty) {\n\t              out += 'is a required property';\n\t            } else {\n\t              out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n\t            }\n\t            out += '\\' ';\n\t          }\n\t          if (it.opts.verbose) {\n\t            out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n\t          }\n\t          out += ' } ';\n\t        } else {\n\t          out += ' {} ';\n\t        }\n\t        var __err = out;\n\t        out = $$outStack.pop();\n\t        if (!it.compositeRule && $breakOnError) {\n\t          /* istanbul ignore if */\n\t          if (it.async) {\n\t            out += ' throw new ValidationError([' + (__err) + ']); ';\n\t          } else {\n\t            out += ' validate.errors = [' + (__err) + ']; return false; ';\n\t          }\n\t        } else {\n\t          out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n\t        }\n\t        out += ' } else { ';\n\t      }\n\t    } else {\n\t      if ($loopRequired) {\n\t        if (!$isData) {\n\t          out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; ';\n\t        }\n\t        var $i = 'i' + $lvl,\n\t          $propertyPath = 'schema' + $lvl + '[' + $i + ']',\n\t          $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\n\t        if (it.opts._errorDataPathProperty) {\n\t          it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers);\n\t        }\n\t        if ($isData) {\n\t          out += ' if (' + ($vSchema) + ' && !Array.isArray(' + ($vSchema) + ')) {  var err =   '; /* istanbul ignore else */\n\t          if (it.createErrors !== false) {\n\t            out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n\t            if (it.opts.messages !== false) {\n\t              out += ' , message: \\'';\n\t              if (it.opts._errorDataPathProperty) {\n\t                out += 'is a required property';\n\t              } else {\n\t                out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n\t              }\n\t              out += '\\' ';\n\t            }\n\t            if (it.opts.verbose) {\n\t              out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n\t            }\n\t            out += ' } ';\n\t          } else {\n\t            out += ' {} ';\n\t          }\n\t          out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else if (' + ($vSchema) + ' !== undefined) { ';\n\t        }\n\t        out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { if (' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] === undefined ';\n\t        if ($ownProperties) {\n\t          out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + ']) ';\n\t        }\n\t        out += ') {  var err =   '; /* istanbul ignore else */\n\t        if (it.createErrors !== false) {\n\t          out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n\t          if (it.opts.messages !== false) {\n\t            out += ' , message: \\'';\n\t            if (it.opts._errorDataPathProperty) {\n\t              out += 'is a required property';\n\t            } else {\n\t              out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n\t            }\n\t            out += '\\' ';\n\t          }\n\t          if (it.opts.verbose) {\n\t            out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n\t          }\n\t          out += ' } ';\n\t        } else {\n\t          out += ' {} ';\n\t        }\n\t        out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } } ';\n\t        if ($isData) {\n\t          out += '  }  ';\n\t        }\n\t      } else {\n\t        var arr3 = $required;\n\t        if (arr3) {\n\t          var $propertyKey, i3 = -1,\n\t            l3 = arr3.length - 1;\n\t          while (i3 < l3) {\n\t            $propertyKey = arr3[i3 += 1];\n\t            var $prop = it.util.getProperty($propertyKey),\n\t              $missingProperty = it.util.escapeQuotes($propertyKey),\n\t              $useData = $data + $prop;\n\t            if (it.opts._errorDataPathProperty) {\n\t              it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers);\n\t            }\n\t            out += ' if ( ' + ($useData) + ' === undefined ';\n\t            if ($ownProperties) {\n\t              out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n\t            }\n\t            out += ') {  var err =   '; /* istanbul ignore else */\n\t            if (it.createErrors !== false) {\n\t              out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n\t              if (it.opts.messages !== false) {\n\t                out += ' , message: \\'';\n\t                if (it.opts._errorDataPathProperty) {\n\t                  out += 'is a required property';\n\t                } else {\n\t                  out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n\t                }\n\t                out += '\\' ';\n\t              }\n\t              if (it.opts.verbose) {\n\t                out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n\t              }\n\t              out += ' } ';\n\t            } else {\n\t              out += ' {} ';\n\t            }\n\t            out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } ';\n\t          }\n\t        }\n\t      }\n\t    }\n\t    it.errorPath = $currentErrorPath;\n\t  } else if ($breakOnError) {\n\t    out += ' if (true) {';\n\t  }\n\t  return out;\n\t};\n\treturn required$1;\n}\n\nvar uniqueItems;\nvar hasRequiredUniqueItems;\n\nfunction requireUniqueItems () {\n\tif (hasRequiredUniqueItems) return uniqueItems;\n\thasRequiredUniqueItems = 1;\n\tuniqueItems = function generate_uniqueItems(it, $keyword, $ruleType) {\n\t  var out = ' ';\n\t  var $lvl = it.level;\n\t  var $dataLvl = it.dataLevel;\n\t  var $schema = it.schema[$keyword];\n\t  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n\t  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n\t  var $breakOnError = !it.opts.allErrors;\n\t  var $data = 'data' + ($dataLvl || '');\n\t  var $valid = 'valid' + $lvl;\n\t  var $isData = it.opts.$data && $schema && $schema.$data,\n\t    $schemaValue;\n\t  if ($isData) {\n\t    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n\t    $schemaValue = 'schema' + $lvl;\n\t  } else {\n\t    $schemaValue = $schema;\n\t  }\n\t  if (($schema || $isData) && it.opts.uniqueItems !== false) {\n\t    if ($isData) {\n\t      out += ' var ' + ($valid) + '; if (' + ($schemaValue) + ' === false || ' + ($schemaValue) + ' === undefined) ' + ($valid) + ' = true; else if (typeof ' + ($schemaValue) + ' != \\'boolean\\') ' + ($valid) + ' = false; else { ';\n\t    }\n\t    out += ' var i = ' + ($data) + '.length , ' + ($valid) + ' = true , j; if (i > 1) { ';\n\t    var $itemType = it.schema.items && it.schema.items.type,\n\t      $typeIsArray = Array.isArray($itemType);\n\t    if (!$itemType || $itemType == 'object' || $itemType == 'array' || ($typeIsArray && ($itemType.indexOf('object') >= 0 || $itemType.indexOf('array') >= 0))) {\n\t      out += ' outer: for (;i--;) { for (j = i; j--;) { if (equal(' + ($data) + '[i], ' + ($data) + '[j])) { ' + ($valid) + ' = false; break outer; } } } ';\n\t    } else {\n\t      out += ' var itemIndices = {}, item; for (;i--;) { var item = ' + ($data) + '[i]; ';\n\t      var $method = 'checkDataType' + ($typeIsArray ? 's' : '');\n\t      out += ' if (' + (it.util[$method]($itemType, 'item', it.opts.strictNumbers, true)) + ') continue; ';\n\t      if ($typeIsArray) {\n\t        out += ' if (typeof item == \\'string\\') item = \\'\"\\' + item; ';\n\t      }\n\t      out += ' if (typeof itemIndices[item] == \\'number\\') { ' + ($valid) + ' = false; j = itemIndices[item]; break; } itemIndices[item] = i; } ';\n\t    }\n\t    out += ' } ';\n\t    if ($isData) {\n\t      out += '  }  ';\n\t    }\n\t    out += ' if (!' + ($valid) + ') {   ';\n\t    var $$outStack = $$outStack || [];\n\t    $$outStack.push(out);\n\t    out = ''; /* istanbul ignore else */\n\t    if (it.createErrors !== false) {\n\t      out += ' { keyword: \\'' + ('uniqueItems') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { i: i, j: j } ';\n\t      if (it.opts.messages !== false) {\n\t        out += ' , message: \\'should NOT have duplicate items (items ## \\' + j + \\' and \\' + i + \\' are identical)\\' ';\n\t      }\n\t      if (it.opts.verbose) {\n\t        out += ' , schema:  ';\n\t        if ($isData) {\n\t          out += 'validate.schema' + ($schemaPath);\n\t        } else {\n\t          out += '' + ($schema);\n\t        }\n\t        out += '         , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n\t      }\n\t      out += ' } ';\n\t    } else {\n\t      out += ' {} ';\n\t    }\n\t    var __err = out;\n\t    out = $$outStack.pop();\n\t    if (!it.compositeRule && $breakOnError) {\n\t      /* istanbul ignore if */\n\t      if (it.async) {\n\t        out += ' throw new ValidationError([' + (__err) + ']); ';\n\t      } else {\n\t        out += ' validate.errors = [' + (__err) + ']; return false; ';\n\t      }\n\t    } else {\n\t      out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n\t    }\n\t    out += ' } ';\n\t    if ($breakOnError) {\n\t      out += ' else { ';\n\t    }\n\t  } else {\n\t    if ($breakOnError) {\n\t      out += ' if (true) { ';\n\t    }\n\t  }\n\t  return out;\n\t};\n\treturn uniqueItems;\n}\n\nvar dotjs;\nvar hasRequiredDotjs;\n\nfunction requireDotjs () {\n\tif (hasRequiredDotjs) return dotjs;\n\thasRequiredDotjs = 1;\n\n\t//all requires must be explicit because browserify won't work with dynamic requires\n\tdotjs = {\n\t  '$ref': requireRef(),\n\t  allOf: requireAllOf(),\n\t  anyOf: requireAnyOf(),\n\t  '$comment': requireComment(),\n\t  const: require_const(),\n\t  contains: requireContains(),\n\t  dependencies: requireDependencies(),\n\t  'enum': require_enum(),\n\t  format: requireFormat(),\n\t  'if': require_if(),\n\t  items: requireItems(),\n\t  maximum: require_limit(),\n\t  minimum: require_limit(),\n\t  maxItems: require_limitItems(),\n\t  minItems: require_limitItems(),\n\t  maxLength: require_limitLength(),\n\t  minLength: require_limitLength(),\n\t  maxProperties: require_limitProperties(),\n\t  minProperties: require_limitProperties(),\n\t  multipleOf: requireMultipleOf(),\n\t  not: requireNot(),\n\t  oneOf: requireOneOf(),\n\t  pattern: requirePattern(),\n\t  properties: requireProperties(),\n\t  propertyNames: requirePropertyNames(),\n\t  required: requireRequired(),\n\t  uniqueItems: requireUniqueItems(),\n\t  validate: requireValidate()\n\t};\n\treturn dotjs;\n}\n\nvar rules;\nvar hasRequiredRules;\n\nfunction requireRules () {\n\tif (hasRequiredRules) return rules;\n\thasRequiredRules = 1;\n\n\tvar ruleModules = requireDotjs()\n\t  , toHash = requireUtil().toHash;\n\n\trules = function rules() {\n\t  var RULES = [\n\t    { type: 'number',\n\t      rules: [ { 'maximum': ['exclusiveMaximum'] },\n\t               { 'minimum': ['exclusiveMinimum'] }, 'multipleOf', 'format'] },\n\t    { type: 'string',\n\t      rules: [ 'maxLength', 'minLength', 'pattern', 'format' ] },\n\t    { type: 'array',\n\t      rules: [ 'maxItems', 'minItems', 'items', 'contains', 'uniqueItems' ] },\n\t    { type: 'object',\n\t      rules: [ 'maxProperties', 'minProperties', 'required', 'dependencies', 'propertyNames',\n\t               { 'properties': ['additionalProperties', 'patternProperties'] } ] },\n\t    { rules: [ '$ref', 'const', 'enum', 'not', 'anyOf', 'oneOf', 'allOf', 'if' ] }\n\t  ];\n\n\t  var ALL = [ 'type', '$comment' ];\n\t  var KEYWORDS = [\n\t    '$schema', '$id', 'id', '$data', '$async', 'title',\n\t    'description', 'default', 'definitions',\n\t    'examples', 'readOnly', 'writeOnly',\n\t    'contentMediaType', 'contentEncoding',\n\t    'additionalItems', 'then', 'else'\n\t  ];\n\t  var TYPES = [ 'number', 'integer', 'string', 'array', 'object', 'boolean', 'null' ];\n\t  RULES.all = toHash(ALL);\n\t  RULES.types = toHash(TYPES);\n\n\t  RULES.forEach(function (group) {\n\t    group.rules = group.rules.map(function (keyword) {\n\t      var implKeywords;\n\t      if (typeof keyword == 'object') {\n\t        var key = Object.keys(keyword)[0];\n\t        implKeywords = keyword[key];\n\t        keyword = key;\n\t        implKeywords.forEach(function (k) {\n\t          ALL.push(k);\n\t          RULES.all[k] = true;\n\t        });\n\t      }\n\t      ALL.push(keyword);\n\t      var rule = RULES.all[keyword] = {\n\t        keyword: keyword,\n\t        code: ruleModules[keyword],\n\t        implements: implKeywords\n\t      };\n\t      return rule;\n\t    });\n\n\t    RULES.all.$comment = {\n\t      keyword: '$comment',\n\t      code: ruleModules.$comment\n\t    };\n\n\t    if (group.type) RULES.types[group.type] = group;\n\t  });\n\n\t  RULES.keywords = toHash(ALL.concat(KEYWORDS));\n\t  RULES.custom = {};\n\n\t  return RULES;\n\t};\n\treturn rules;\n}\n\nvar data$2;\nvar hasRequiredData;\n\nfunction requireData () {\n\tif (hasRequiredData) return data$2;\n\thasRequiredData = 1;\n\n\tvar KEYWORDS = [\n\t  'multipleOf',\n\t  'maximum',\n\t  'exclusiveMaximum',\n\t  'minimum',\n\t  'exclusiveMinimum',\n\t  'maxLength',\n\t  'minLength',\n\t  'pattern',\n\t  'additionalItems',\n\t  'maxItems',\n\t  'minItems',\n\t  'uniqueItems',\n\t  'maxProperties',\n\t  'minProperties',\n\t  'required',\n\t  'additionalProperties',\n\t  'enum',\n\t  'format',\n\t  'const'\n\t];\n\n\tdata$2 = function (metaSchema, keywordsJsonPointers) {\n\t  for (var i=0; i<keywordsJsonPointers.length; i++) {\n\t    metaSchema = JSON.parse(JSON.stringify(metaSchema));\n\t    var segments = keywordsJsonPointers[i].split('/');\n\t    var keywords = metaSchema;\n\t    var j;\n\t    for (j=1; j<segments.length; j++)\n\t      keywords = keywords[segments[j]];\n\n\t    for (j=0; j<KEYWORDS.length; j++) {\n\t      var key = KEYWORDS[j];\n\t      var schema = keywords[key];\n\t      if (schema) {\n\t        keywords[key] = {\n\t          anyOf: [\n\t            schema,\n\t            { $ref: 'https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#' }\n\t          ]\n\t        };\n\t      }\n\t    }\n\t  }\n\n\t  return metaSchema;\n\t};\n\treturn data$2;\n}\n\nvar async;\nvar hasRequiredAsync;\n\nfunction requireAsync () {\n\tif (hasRequiredAsync) return async;\n\thasRequiredAsync = 1;\n\n\tvar MissingRefError = requireError_classes().MissingRef;\n\n\tasync = compileAsync;\n\n\n\t/**\n\t * Creates validating function for passed schema with asynchronous loading of missing schemas.\n\t * `loadSchema` option should be a function that accepts schema uri and returns promise that resolves with the schema.\n\t * @this  Ajv\n\t * @param {Object}   schema schema object\n\t * @param {Boolean}  meta optional true to compile meta-schema; this parameter can be skipped\n\t * @param {Function} callback an optional node-style callback, it is called with 2 parameters: error (or null) and validating function.\n\t * @return {Promise} promise that resolves with a validating function.\n\t */\n\tfunction compileAsync(schema, meta, callback) {\n\t  /* eslint no-shadow: 0 */\n\t  /* global Promise */\n\t  /* jshint validthis: true */\n\t  var self = this;\n\t  if (typeof this._opts.loadSchema != 'function')\n\t    throw new Error('options.loadSchema should be a function');\n\n\t  if (typeof meta == 'function') {\n\t    callback = meta;\n\t    meta = undefined;\n\t  }\n\n\t  var p = loadMetaSchemaOf(schema).then(function () {\n\t    var schemaObj = self._addSchema(schema, undefined, meta);\n\t    return schemaObj.validate || _compileAsync(schemaObj);\n\t  });\n\n\t  if (callback) {\n\t    p.then(\n\t      function(v) { callback(null, v); },\n\t      callback\n\t    );\n\t  }\n\n\t  return p;\n\n\n\t  function loadMetaSchemaOf(sch) {\n\t    var $schema = sch.$schema;\n\t    return $schema && !self.getSchema($schema)\n\t            ? compileAsync.call(self, { $ref: $schema }, true)\n\t            : Promise.resolve();\n\t  }\n\n\n\t  function _compileAsync(schemaObj) {\n\t    try { return self._compile(schemaObj); }\n\t    catch(e) {\n\t      if (e instanceof MissingRefError) return loadMissingSchema(e);\n\t      throw e;\n\t    }\n\n\n\t    function loadMissingSchema(e) {\n\t      var ref = e.missingSchema;\n\t      if (added(ref)) throw new Error('Schema ' + ref + ' is loaded but ' + e.missingRef + ' cannot be resolved');\n\n\t      var schemaPromise = self._loadingSchemas[ref];\n\t      if (!schemaPromise) {\n\t        schemaPromise = self._loadingSchemas[ref] = self._opts.loadSchema(ref);\n\t        schemaPromise.then(removePromise, removePromise);\n\t      }\n\n\t      return schemaPromise.then(function (sch) {\n\t        if (!added(ref)) {\n\t          return loadMetaSchemaOf(sch).then(function () {\n\t            if (!added(ref)) self.addSchema(sch, ref, undefined, meta);\n\t          });\n\t        }\n\t      }).then(function() {\n\t        return _compileAsync(schemaObj);\n\t      });\n\n\t      function removePromise() {\n\t        delete self._loadingSchemas[ref];\n\t      }\n\n\t      function added(ref) {\n\t        return self._refs[ref] || self._schemas[ref];\n\t      }\n\t    }\n\t  }\n\t}\n\treturn async;\n}\n\nvar custom;\nvar hasRequiredCustom;\n\nfunction requireCustom () {\n\tif (hasRequiredCustom) return custom;\n\thasRequiredCustom = 1;\n\tcustom = function generate_custom(it, $keyword, $ruleType) {\n\t  var out = ' ';\n\t  var $lvl = it.level;\n\t  var $dataLvl = it.dataLevel;\n\t  var $schema = it.schema[$keyword];\n\t  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n\t  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n\t  var $breakOnError = !it.opts.allErrors;\n\t  var $errorKeyword;\n\t  var $data = 'data' + ($dataLvl || '');\n\t  var $valid = 'valid' + $lvl;\n\t  var $errs = 'errs__' + $lvl;\n\t  var $isData = it.opts.$data && $schema && $schema.$data,\n\t    $schemaValue;\n\t  if ($isData) {\n\t    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n\t    $schemaValue = 'schema' + $lvl;\n\t  } else {\n\t    $schemaValue = $schema;\n\t  }\n\t  var $rule = this,\n\t    $definition = 'definition' + $lvl,\n\t    $rDef = $rule.definition,\n\t    $closingBraces = '';\n\t  var $compile, $inline, $macro, $ruleValidate, $validateCode;\n\t  if ($isData && $rDef.$data) {\n\t    $validateCode = 'keywordValidate' + $lvl;\n\t    var $validateSchema = $rDef.validateSchema;\n\t    out += ' var ' + ($definition) + ' = RULES.custom[\\'' + ($keyword) + '\\'].definition; var ' + ($validateCode) + ' = ' + ($definition) + '.validate;';\n\t  } else {\n\t    $ruleValidate = it.useCustomRule($rule, $schema, it.schema, it);\n\t    if (!$ruleValidate) return;\n\t    $schemaValue = 'validate.schema' + $schemaPath;\n\t    $validateCode = $ruleValidate.code;\n\t    $compile = $rDef.compile;\n\t    $inline = $rDef.inline;\n\t    $macro = $rDef.macro;\n\t  }\n\t  var $ruleErrs = $validateCode + '.errors',\n\t    $i = 'i' + $lvl,\n\t    $ruleErr = 'ruleErr' + $lvl,\n\t    $asyncKeyword = $rDef.async;\n\t  if ($asyncKeyword && !it.async) throw new Error('async keyword in sync schema');\n\t  if (!($inline || $macro)) {\n\t    out += '' + ($ruleErrs) + ' = null;';\n\t  }\n\t  out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';';\n\t  if ($isData && $rDef.$data) {\n\t    $closingBraces += '}';\n\t    out += ' if (' + ($schemaValue) + ' === undefined) { ' + ($valid) + ' = true; } else { ';\n\t    if ($validateSchema) {\n\t      $closingBraces += '}';\n\t      out += ' ' + ($valid) + ' = ' + ($definition) + '.validateSchema(' + ($schemaValue) + '); if (' + ($valid) + ') { ';\n\t    }\n\t  }\n\t  if ($inline) {\n\t    if ($rDef.statements) {\n\t      out += ' ' + ($ruleValidate.validate) + ' ';\n\t    } else {\n\t      out += ' ' + ($valid) + ' = ' + ($ruleValidate.validate) + '; ';\n\t    }\n\t  } else if ($macro) {\n\t    var $it = it.util.copy(it);\n\t    var $closingBraces = '';\n\t    $it.level++;\n\t    var $nextValid = 'valid' + $it.level;\n\t    $it.schema = $ruleValidate.validate;\n\t    $it.schemaPath = '';\n\t    var $wasComposite = it.compositeRule;\n\t    it.compositeRule = $it.compositeRule = true;\n\t    var $code = it.validate($it).replace(/validate\\.schema/g, $validateCode);\n\t    it.compositeRule = $it.compositeRule = $wasComposite;\n\t    out += ' ' + ($code);\n\t  } else {\n\t    var $$outStack = $$outStack || [];\n\t    $$outStack.push(out);\n\t    out = '';\n\t    out += '  ' + ($validateCode) + '.call( ';\n\t    if (it.opts.passContext) {\n\t      out += 'this';\n\t    } else {\n\t      out += 'self';\n\t    }\n\t    if ($compile || $rDef.schema === false) {\n\t      out += ' , ' + ($data) + ' ';\n\t    } else {\n\t      out += ' , ' + ($schemaValue) + ' , ' + ($data) + ' , validate.schema' + (it.schemaPath) + ' ';\n\t    }\n\t    out += ' , (dataPath || \\'\\')';\n\t    if (it.errorPath != '\"\"') {\n\t      out += ' + ' + (it.errorPath);\n\t    }\n\t    var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData',\n\t      $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty';\n\t    out += ' , ' + ($parentData) + ' , ' + ($parentDataProperty) + ' , rootData )  ';\n\t    var def_callRuleValidate = out;\n\t    out = $$outStack.pop();\n\t    if ($rDef.errors === false) {\n\t      out += ' ' + ($valid) + ' = ';\n\t      if ($asyncKeyword) {\n\t        out += 'await ';\n\t      }\n\t      out += '' + (def_callRuleValidate) + '; ';\n\t    } else {\n\t      if ($asyncKeyword) {\n\t        $ruleErrs = 'customErrors' + $lvl;\n\t        out += ' var ' + ($ruleErrs) + ' = null; try { ' + ($valid) + ' = await ' + (def_callRuleValidate) + '; } catch (e) { ' + ($valid) + ' = false; if (e instanceof ValidationError) ' + ($ruleErrs) + ' = e.errors; else throw e; } ';\n\t      } else {\n\t        out += ' ' + ($ruleErrs) + ' = null; ' + ($valid) + ' = ' + (def_callRuleValidate) + '; ';\n\t      }\n\t    }\n\t  }\n\t  if ($rDef.modifying) {\n\t    out += ' if (' + ($parentData) + ') ' + ($data) + ' = ' + ($parentData) + '[' + ($parentDataProperty) + '];';\n\t  }\n\t  out += '' + ($closingBraces);\n\t  if ($rDef.valid) {\n\t    if ($breakOnError) {\n\t      out += ' if (true) { ';\n\t    }\n\t  } else {\n\t    out += ' if ( ';\n\t    if ($rDef.valid === undefined) {\n\t      out += ' !';\n\t      if ($macro) {\n\t        out += '' + ($nextValid);\n\t      } else {\n\t        out += '' + ($valid);\n\t      }\n\t    } else {\n\t      out += ' ' + (!$rDef.valid) + ' ';\n\t    }\n\t    out += ') { ';\n\t    $errorKeyword = $rule.keyword;\n\t    var $$outStack = $$outStack || [];\n\t    $$outStack.push(out);\n\t    out = '';\n\t    var $$outStack = $$outStack || [];\n\t    $$outStack.push(out);\n\t    out = ''; /* istanbul ignore else */\n\t    if (it.createErrors !== false) {\n\t      out += ' { keyword: \\'' + ($errorKeyword || 'custom') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { keyword: \\'' + ($rule.keyword) + '\\' } ';\n\t      if (it.opts.messages !== false) {\n\t        out += ' , message: \\'should pass \"' + ($rule.keyword) + '\" keyword validation\\' ';\n\t      }\n\t      if (it.opts.verbose) {\n\t        out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n\t      }\n\t      out += ' } ';\n\t    } else {\n\t      out += ' {} ';\n\t    }\n\t    var __err = out;\n\t    out = $$outStack.pop();\n\t    if (!it.compositeRule && $breakOnError) {\n\t      /* istanbul ignore if */\n\t      if (it.async) {\n\t        out += ' throw new ValidationError([' + (__err) + ']); ';\n\t      } else {\n\t        out += ' validate.errors = [' + (__err) + ']; return false; ';\n\t      }\n\t    } else {\n\t      out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n\t    }\n\t    var def_customError = out;\n\t    out = $$outStack.pop();\n\t    if ($inline) {\n\t      if ($rDef.errors) {\n\t        if ($rDef.errors != 'full') {\n\t          out += '  for (var ' + ($i) + '=' + ($errs) + '; ' + ($i) + '<errors; ' + ($i) + '++) { var ' + ($ruleErr) + ' = vErrors[' + ($i) + ']; if (' + ($ruleErr) + '.dataPath === undefined) ' + ($ruleErr) + '.dataPath = (dataPath || \\'\\') + ' + (it.errorPath) + '; if (' + ($ruleErr) + '.schemaPath === undefined) { ' + ($ruleErr) + '.schemaPath = \"' + ($errSchemaPath) + '\"; } ';\n\t          if (it.opts.verbose) {\n\t            out += ' ' + ($ruleErr) + '.schema = ' + ($schemaValue) + '; ' + ($ruleErr) + '.data = ' + ($data) + '; ';\n\t          }\n\t          out += ' } ';\n\t        }\n\t      } else {\n\t        if ($rDef.errors === false) {\n\t          out += ' ' + (def_customError) + ' ';\n\t        } else {\n\t          out += ' if (' + ($errs) + ' == errors) { ' + (def_customError) + ' } else {  for (var ' + ($i) + '=' + ($errs) + '; ' + ($i) + '<errors; ' + ($i) + '++) { var ' + ($ruleErr) + ' = vErrors[' + ($i) + ']; if (' + ($ruleErr) + '.dataPath === undefined) ' + ($ruleErr) + '.dataPath = (dataPath || \\'\\') + ' + (it.errorPath) + '; if (' + ($ruleErr) + '.schemaPath === undefined) { ' + ($ruleErr) + '.schemaPath = \"' + ($errSchemaPath) + '\"; } ';\n\t          if (it.opts.verbose) {\n\t            out += ' ' + ($ruleErr) + '.schema = ' + ($schemaValue) + '; ' + ($ruleErr) + '.data = ' + ($data) + '; ';\n\t          }\n\t          out += ' } } ';\n\t        }\n\t      }\n\t    } else if ($macro) {\n\t      out += '   var err =   '; /* istanbul ignore else */\n\t      if (it.createErrors !== false) {\n\t        out += ' { keyword: \\'' + ($errorKeyword || 'custom') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { keyword: \\'' + ($rule.keyword) + '\\' } ';\n\t        if (it.opts.messages !== false) {\n\t          out += ' , message: \\'should pass \"' + ($rule.keyword) + '\" keyword validation\\' ';\n\t        }\n\t        if (it.opts.verbose) {\n\t          out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n\t        }\n\t        out += ' } ';\n\t      } else {\n\t        out += ' {} ';\n\t      }\n\t      out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n\t      if (!it.compositeRule && $breakOnError) {\n\t        /* istanbul ignore if */\n\t        if (it.async) {\n\t          out += ' throw new ValidationError(vErrors); ';\n\t        } else {\n\t          out += ' validate.errors = vErrors; return false; ';\n\t        }\n\t      }\n\t    } else {\n\t      if ($rDef.errors === false) {\n\t        out += ' ' + (def_customError) + ' ';\n\t      } else {\n\t        out += ' if (Array.isArray(' + ($ruleErrs) + ')) { if (vErrors === null) vErrors = ' + ($ruleErrs) + '; else vErrors = vErrors.concat(' + ($ruleErrs) + '); errors = vErrors.length;  for (var ' + ($i) + '=' + ($errs) + '; ' + ($i) + '<errors; ' + ($i) + '++) { var ' + ($ruleErr) + ' = vErrors[' + ($i) + ']; if (' + ($ruleErr) + '.dataPath === undefined) ' + ($ruleErr) + '.dataPath = (dataPath || \\'\\') + ' + (it.errorPath) + ';  ' + ($ruleErr) + '.schemaPath = \"' + ($errSchemaPath) + '\";  ';\n\t        if (it.opts.verbose) {\n\t          out += ' ' + ($ruleErr) + '.schema = ' + ($schemaValue) + '; ' + ($ruleErr) + '.data = ' + ($data) + '; ';\n\t        }\n\t        out += ' } } else { ' + (def_customError) + ' } ';\n\t      }\n\t    }\n\t    out += ' } ';\n\t    if ($breakOnError) {\n\t      out += ' else { ';\n\t    }\n\t  }\n\t  return out;\n\t};\n\treturn custom;\n}\n\nconst $schema$2 = \"http://json-schema.org/draft-07/schema#\";\nconst $id$1 = \"http://json-schema.org/draft-07/schema#\";\nconst title = \"Core schema meta-schema\";\nconst definitions$1 = {\n\tschemaArray: {\n\t\ttype: \"array\",\n\t\tminItems: 1,\n\t\titems: {\n\t\t\t$ref: \"#\"\n\t\t}\n\t},\n\tnonNegativeInteger: {\n\t\ttype: \"integer\",\n\t\tminimum: 0\n\t},\n\tnonNegativeIntegerDefault0: {\n\t\tallOf: [\n\t\t\t{\n\t\t\t\t$ref: \"#/definitions/nonNegativeInteger\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"default\": 0\n\t\t\t}\n\t\t]\n\t},\n\tsimpleTypes: {\n\t\t\"enum\": [\n\t\t\t\"array\",\n\t\t\t\"boolean\",\n\t\t\t\"integer\",\n\t\t\t\"null\",\n\t\t\t\"number\",\n\t\t\t\"object\",\n\t\t\t\"string\"\n\t\t]\n\t},\n\tstringArray: {\n\t\ttype: \"array\",\n\t\titems: {\n\t\t\ttype: \"string\"\n\t\t},\n\t\tuniqueItems: true,\n\t\t\"default\": [\n\t\t]\n\t}\n};\nconst type$2 = [\n\t\"object\",\n\t\"boolean\"\n];\nconst properties$2 = {\n\t$id: {\n\t\ttype: \"string\",\n\t\tformat: \"uri-reference\"\n\t},\n\t$schema: {\n\t\ttype: \"string\",\n\t\tformat: \"uri\"\n\t},\n\t$ref: {\n\t\ttype: \"string\",\n\t\tformat: \"uri-reference\"\n\t},\n\t$comment: {\n\t\ttype: \"string\"\n\t},\n\ttitle: {\n\t\ttype: \"string\"\n\t},\n\tdescription: {\n\t\ttype: \"string\"\n\t},\n\t\"default\": true,\n\treadOnly: {\n\t\ttype: \"boolean\",\n\t\t\"default\": false\n\t},\n\texamples: {\n\t\ttype: \"array\",\n\t\titems: true\n\t},\n\tmultipleOf: {\n\t\ttype: \"number\",\n\t\texclusiveMinimum: 0\n\t},\n\tmaximum: {\n\t\ttype: \"number\"\n\t},\n\texclusiveMaximum: {\n\t\ttype: \"number\"\n\t},\n\tminimum: {\n\t\ttype: \"number\"\n\t},\n\texclusiveMinimum: {\n\t\ttype: \"number\"\n\t},\n\tmaxLength: {\n\t\t$ref: \"#/definitions/nonNegativeInteger\"\n\t},\n\tminLength: {\n\t\t$ref: \"#/definitions/nonNegativeIntegerDefault0\"\n\t},\n\tpattern: {\n\t\ttype: \"string\",\n\t\tformat: \"regex\"\n\t},\n\tadditionalItems: {\n\t\t$ref: \"#\"\n\t},\n\titems: {\n\t\tanyOf: [\n\t\t\t{\n\t\t\t\t$ref: \"#\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t$ref: \"#/definitions/schemaArray\"\n\t\t\t}\n\t\t],\n\t\t\"default\": true\n\t},\n\tmaxItems: {\n\t\t$ref: \"#/definitions/nonNegativeInteger\"\n\t},\n\tminItems: {\n\t\t$ref: \"#/definitions/nonNegativeIntegerDefault0\"\n\t},\n\tuniqueItems: {\n\t\ttype: \"boolean\",\n\t\t\"default\": false\n\t},\n\tcontains: {\n\t\t$ref: \"#\"\n\t},\n\tmaxProperties: {\n\t\t$ref: \"#/definitions/nonNegativeInteger\"\n\t},\n\tminProperties: {\n\t\t$ref: \"#/definitions/nonNegativeIntegerDefault0\"\n\t},\n\trequired: {\n\t\t$ref: \"#/definitions/stringArray\"\n\t},\n\tadditionalProperties: {\n\t\t$ref: \"#\"\n\t},\n\tdefinitions: {\n\t\ttype: \"object\",\n\t\tadditionalProperties: {\n\t\t\t$ref: \"#\"\n\t\t},\n\t\t\"default\": {\n\t\t}\n\t},\n\tproperties: {\n\t\ttype: \"object\",\n\t\tadditionalProperties: {\n\t\t\t$ref: \"#\"\n\t\t},\n\t\t\"default\": {\n\t\t}\n\t},\n\tpatternProperties: {\n\t\ttype: \"object\",\n\t\tadditionalProperties: {\n\t\t\t$ref: \"#\"\n\t\t},\n\t\tpropertyNames: {\n\t\t\tformat: \"regex\"\n\t\t},\n\t\t\"default\": {\n\t\t}\n\t},\n\tdependencies: {\n\t\ttype: \"object\",\n\t\tadditionalProperties: {\n\t\t\tanyOf: [\n\t\t\t\t{\n\t\t\t\t\t$ref: \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t$ref: \"#/definitions/stringArray\"\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t},\n\tpropertyNames: {\n\t\t$ref: \"#\"\n\t},\n\t\"const\": true,\n\t\"enum\": {\n\t\ttype: \"array\",\n\t\titems: true,\n\t\tminItems: 1,\n\t\tuniqueItems: true\n\t},\n\ttype: {\n\t\tanyOf: [\n\t\t\t{\n\t\t\t\t$ref: \"#/definitions/simpleTypes\"\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: \"array\",\n\t\t\t\titems: {\n\t\t\t\t\t$ref: \"#/definitions/simpleTypes\"\n\t\t\t\t},\n\t\t\t\tminItems: 1,\n\t\t\t\tuniqueItems: true\n\t\t\t}\n\t\t]\n\t},\n\tformat: {\n\t\ttype: \"string\"\n\t},\n\tcontentMediaType: {\n\t\ttype: \"string\"\n\t},\n\tcontentEncoding: {\n\t\ttype: \"string\"\n\t},\n\t\"if\": {\n\t\t$ref: \"#\"\n\t},\n\tthen: {\n\t\t$ref: \"#\"\n\t},\n\t\"else\": {\n\t\t$ref: \"#\"\n\t},\n\tallOf: {\n\t\t$ref: \"#/definitions/schemaArray\"\n\t},\n\tanyOf: {\n\t\t$ref: \"#/definitions/schemaArray\"\n\t},\n\toneOf: {\n\t\t$ref: \"#/definitions/schemaArray\"\n\t},\n\tnot: {\n\t\t$ref: \"#\"\n\t}\n};\nconst jsonSchemaDraft07 = {\n\t$schema: $schema$2,\n\t$id: $id$1,\n\ttitle: title,\n\tdefinitions: definitions$1,\n\ttype: type$2,\n\tproperties: properties$2,\n\t\"default\": true\n};\n\nconst jsonSchemaDraft07$1 = {\n  __proto__: null,\n  $id: $id$1,\n  $schema: $schema$2,\n  default: jsonSchemaDraft07,\n  definitions: definitions$1,\n  properties: properties$2,\n  title: title,\n  type: type$2\n};\n\nconst require$$13 = /*@__PURE__*/getAugmentedNamespace(jsonSchemaDraft07$1);\n\nvar definition_schema;\nvar hasRequiredDefinition_schema;\n\nfunction requireDefinition_schema () {\n\tif (hasRequiredDefinition_schema) return definition_schema;\n\thasRequiredDefinition_schema = 1;\n\n\tvar metaSchema = require$$13;\n\n\tdefinition_schema = {\n\t  $id: 'https://github.com/ajv-validator/ajv/blob/master/lib/definition_schema.js',\n\t  definitions: {\n\t    simpleTypes: metaSchema.definitions.simpleTypes\n\t  },\n\t  type: 'object',\n\t  dependencies: {\n\t    schema: ['validate'],\n\t    $data: ['validate'],\n\t    statements: ['inline'],\n\t    valid: {not: {required: ['macro']}}\n\t  },\n\t  properties: {\n\t    type: metaSchema.properties.type,\n\t    schema: {type: 'boolean'},\n\t    statements: {type: 'boolean'},\n\t    dependencies: {\n\t      type: 'array',\n\t      items: {type: 'string'}\n\t    },\n\t    metaSchema: {type: 'object'},\n\t    modifying: {type: 'boolean'},\n\t    valid: {type: 'boolean'},\n\t    $data: {type: 'boolean'},\n\t    async: {type: 'boolean'},\n\t    errors: {\n\t      anyOf: [\n\t        {type: 'boolean'},\n\t        {const: 'full'}\n\t      ]\n\t    }\n\t  }\n\t};\n\treturn definition_schema;\n}\n\nvar keyword;\nvar hasRequiredKeyword;\n\nfunction requireKeyword () {\n\tif (hasRequiredKeyword) return keyword;\n\thasRequiredKeyword = 1;\n\n\tvar IDENTIFIER = /^[a-z_$][a-z0-9_$-]*$/i;\n\tvar customRuleCode = requireCustom();\n\tvar definitionSchema = requireDefinition_schema();\n\n\tkeyword = {\n\t  add: addKeyword,\n\t  get: getKeyword,\n\t  remove: removeKeyword,\n\t  validate: validateKeyword\n\t};\n\n\n\t/**\n\t * Define custom keyword\n\t * @this  Ajv\n\t * @param {String} keyword custom keyword, should be unique (including different from all standard, custom and macro keywords).\n\t * @param {Object} definition keyword definition object with properties `type` (type(s) which the keyword applies to), `validate` or `compile`.\n\t * @return {Ajv} this for method chaining\n\t */\n\tfunction addKeyword(keyword, definition) {\n\t  /* jshint validthis: true */\n\t  /* eslint no-shadow: 0 */\n\t  var RULES = this.RULES;\n\t  if (RULES.keywords[keyword])\n\t    throw new Error('Keyword ' + keyword + ' is already defined');\n\n\t  if (!IDENTIFIER.test(keyword))\n\t    throw new Error('Keyword ' + keyword + ' is not a valid identifier');\n\n\t  if (definition) {\n\t    this.validateKeyword(definition, true);\n\n\t    var dataType = definition.type;\n\t    if (Array.isArray(dataType)) {\n\t      for (var i=0; i<dataType.length; i++)\n\t        _addRule(keyword, dataType[i], definition);\n\t    } else {\n\t      _addRule(keyword, dataType, definition);\n\t    }\n\n\t    var metaSchema = definition.metaSchema;\n\t    if (metaSchema) {\n\t      if (definition.$data && this._opts.$data) {\n\t        metaSchema = {\n\t          anyOf: [\n\t            metaSchema,\n\t            { '$ref': 'https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#' }\n\t          ]\n\t        };\n\t      }\n\t      definition.validateSchema = this.compile(metaSchema, true);\n\t    }\n\t  }\n\n\t  RULES.keywords[keyword] = RULES.all[keyword] = true;\n\n\n\t  function _addRule(keyword, dataType, definition) {\n\t    var ruleGroup;\n\t    for (var i=0; i<RULES.length; i++) {\n\t      var rg = RULES[i];\n\t      if (rg.type == dataType) {\n\t        ruleGroup = rg;\n\t        break;\n\t      }\n\t    }\n\n\t    if (!ruleGroup) {\n\t      ruleGroup = { type: dataType, rules: [] };\n\t      RULES.push(ruleGroup);\n\t    }\n\n\t    var rule = {\n\t      keyword: keyword,\n\t      definition: definition,\n\t      custom: true,\n\t      code: customRuleCode,\n\t      implements: definition.implements\n\t    };\n\t    ruleGroup.rules.push(rule);\n\t    RULES.custom[keyword] = rule;\n\t  }\n\n\t  return this;\n\t}\n\n\n\t/**\n\t * Get keyword\n\t * @this  Ajv\n\t * @param {String} keyword pre-defined or custom keyword.\n\t * @return {Object|Boolean} custom keyword definition, `true` if it is a predefined keyword, `false` otherwise.\n\t */\n\tfunction getKeyword(keyword) {\n\t  /* jshint validthis: true */\n\t  var rule = this.RULES.custom[keyword];\n\t  return rule ? rule.definition : this.RULES.keywords[keyword] || false;\n\t}\n\n\n\t/**\n\t * Remove keyword\n\t * @this  Ajv\n\t * @param {String} keyword pre-defined or custom keyword.\n\t * @return {Ajv} this for method chaining\n\t */\n\tfunction removeKeyword(keyword) {\n\t  /* jshint validthis: true */\n\t  var RULES = this.RULES;\n\t  delete RULES.keywords[keyword];\n\t  delete RULES.all[keyword];\n\t  delete RULES.custom[keyword];\n\t  for (var i=0; i<RULES.length; i++) {\n\t    var rules = RULES[i].rules;\n\t    for (var j=0; j<rules.length; j++) {\n\t      if (rules[j].keyword == keyword) {\n\t        rules.splice(j, 1);\n\t        break;\n\t      }\n\t    }\n\t  }\n\t  return this;\n\t}\n\n\n\t/**\n\t * Validate keyword definition\n\t * @this  Ajv\n\t * @param {Object} definition keyword definition object.\n\t * @param {Boolean} throwError true to throw exception if definition is invalid\n\t * @return {boolean} validation result\n\t */\n\tfunction validateKeyword(definition, throwError) {\n\t  validateKeyword.errors = null;\n\t  var v = this._validateKeyword = this._validateKeyword\n\t                                  || this.compile(definitionSchema, true);\n\n\t  if (v(definition)) return true;\n\t  validateKeyword.errors = v.errors;\n\t  if (throwError)\n\t    throw new Error('custom keyword definition is invalid: '  + this.errorsText(v.errors));\n\t  else\n\t    return false;\n\t}\n\treturn keyword;\n}\n\nconst $schema$1 = \"http://json-schema.org/draft-07/schema#\";\nconst $id = \"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#\";\nconst description$1 = \"Meta-schema for $data reference (JSON Schema extension proposal)\";\nconst type$1 = \"object\";\nconst required = [\n\t\"$data\"\n];\nconst properties$1 = {\n\t$data: {\n\t\ttype: \"string\",\n\t\tanyOf: [\n\t\t\t{\n\t\t\t\tformat: \"relative-json-pointer\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tformat: \"json-pointer\"\n\t\t\t}\n\t\t]\n\t}\n};\nconst additionalProperties = false;\nconst data = {\n\t$schema: $schema$1,\n\t$id: $id,\n\tdescription: description$1,\n\ttype: type$1,\n\trequired: required,\n\tproperties: properties$1,\n\tadditionalProperties: additionalProperties\n};\n\nconst data$1 = {\n  __proto__: null,\n  $id: $id,\n  $schema: $schema$1,\n  additionalProperties: additionalProperties,\n  default: data,\n  description: description$1,\n  properties: properties$1,\n  required: required,\n  type: type$1\n};\n\nconst require$$12 = /*@__PURE__*/getAugmentedNamespace(data$1);\n\nvar ajv;\nvar hasRequiredAjv;\n\nfunction requireAjv () {\n\tif (hasRequiredAjv) return ajv;\n\thasRequiredAjv = 1;\n\n\tvar compileSchema = requireCompile()\n\t  , resolve = requireResolve()\n\t  , Cache = requireCache()\n\t  , SchemaObject = requireSchema_obj()\n\t  , stableStringify = requireFastJsonStableStringify()\n\t  , formats = requireFormats()\n\t  , rules = requireRules()\n\t  , $dataMetaSchema = requireData()\n\t  , util = requireUtil();\n\n\tajv = Ajv;\n\n\tAjv.prototype.validate = validate;\n\tAjv.prototype.compile = compile;\n\tAjv.prototype.addSchema = addSchema;\n\tAjv.prototype.addMetaSchema = addMetaSchema;\n\tAjv.prototype.validateSchema = validateSchema;\n\tAjv.prototype.getSchema = getSchema;\n\tAjv.prototype.removeSchema = removeSchema;\n\tAjv.prototype.addFormat = addFormat;\n\tAjv.prototype.errorsText = errorsText;\n\n\tAjv.prototype._addSchema = _addSchema;\n\tAjv.prototype._compile = _compile;\n\n\tAjv.prototype.compileAsync = requireAsync();\n\tvar customKeyword = requireKeyword();\n\tAjv.prototype.addKeyword = customKeyword.add;\n\tAjv.prototype.getKeyword = customKeyword.get;\n\tAjv.prototype.removeKeyword = customKeyword.remove;\n\tAjv.prototype.validateKeyword = customKeyword.validate;\n\n\tvar errorClasses = requireError_classes();\n\tAjv.ValidationError = errorClasses.Validation;\n\tAjv.MissingRefError = errorClasses.MissingRef;\n\tAjv.$dataMetaSchema = $dataMetaSchema;\n\n\tvar META_SCHEMA_ID = 'http://json-schema.org/draft-07/schema';\n\n\tvar META_IGNORE_OPTIONS = [ 'removeAdditional', 'useDefaults', 'coerceTypes', 'strictDefaults' ];\n\tvar META_SUPPORT_DATA = ['/properties'];\n\n\t/**\n\t * Creates validator instance.\n\t * Usage: `Ajv(opts)`\n\t * @param {Object} opts optional options\n\t * @return {Object} ajv instance\n\t */\n\tfunction Ajv(opts) {\n\t  if (!(this instanceof Ajv)) return new Ajv(opts);\n\t  opts = this._opts = util.copy(opts) || {};\n\t  setLogger(this);\n\t  this._schemas = {};\n\t  this._refs = {};\n\t  this._fragments = {};\n\t  this._formats = formats(opts.format);\n\n\t  this._cache = opts.cache || new Cache;\n\t  this._loadingSchemas = {};\n\t  this._compilations = [];\n\t  this.RULES = rules();\n\t  this._getId = chooseGetId(opts);\n\n\t  opts.loopRequired = opts.loopRequired || Infinity;\n\t  if (opts.errorDataPath == 'property') opts._errorDataPathProperty = true;\n\t  if (opts.serialize === undefined) opts.serialize = stableStringify;\n\t  this._metaOpts = getMetaSchemaOptions(this);\n\n\t  if (opts.formats) addInitialFormats(this);\n\t  if (opts.keywords) addInitialKeywords(this);\n\t  addDefaultMetaSchema(this);\n\t  if (typeof opts.meta == 'object') this.addMetaSchema(opts.meta);\n\t  if (opts.nullable) this.addKeyword('nullable', {metaSchema: {type: 'boolean'}});\n\t  addInitialSchemas(this);\n\t}\n\n\n\n\t/**\n\t * Validate data using schema\n\t * Schema will be compiled and cached (using serialized JSON as key. [fast-json-stable-stringify](https://github.com/epoberezkin/fast-json-stable-stringify) is used to serialize.\n\t * @this   Ajv\n\t * @param  {String|Object} schemaKeyRef key, ref or schema object\n\t * @param  {Any} data to be validated\n\t * @return {Boolean} validation result. Errors from the last validation will be available in `ajv.errors` (and also in compiled schema: `schema.errors`).\n\t */\n\tfunction validate(schemaKeyRef, data) {\n\t  var v;\n\t  if (typeof schemaKeyRef == 'string') {\n\t    v = this.getSchema(schemaKeyRef);\n\t    if (!v) throw new Error('no schema with key or ref \"' + schemaKeyRef + '\"');\n\t  } else {\n\t    var schemaObj = this._addSchema(schemaKeyRef);\n\t    v = schemaObj.validate || this._compile(schemaObj);\n\t  }\n\n\t  var valid = v(data);\n\t  if (v.$async !== true) this.errors = v.errors;\n\t  return valid;\n\t}\n\n\n\t/**\n\t * Create validating function for passed schema.\n\t * @this   Ajv\n\t * @param  {Object} schema schema object\n\t * @param  {Boolean} _meta true if schema is a meta-schema. Used internally to compile meta schemas of custom keywords.\n\t * @return {Function} validating function\n\t */\n\tfunction compile(schema, _meta) {\n\t  var schemaObj = this._addSchema(schema, undefined, _meta);\n\t  return schemaObj.validate || this._compile(schemaObj);\n\t}\n\n\n\t/**\n\t * Adds schema to the instance.\n\t * @this   Ajv\n\t * @param {Object|Array} schema schema or array of schemas. If array is passed, `key` and other parameters will be ignored.\n\t * @param {String} key Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`.\n\t * @param {Boolean} _skipValidation true to skip schema validation. Used internally, option validateSchema should be used instead.\n\t * @param {Boolean} _meta true if schema is a meta-schema. Used internally, addMetaSchema should be used instead.\n\t * @return {Ajv} this for method chaining\n\t */\n\tfunction addSchema(schema, key, _skipValidation, _meta) {\n\t  if (Array.isArray(schema)){\n\t    for (var i=0; i<schema.length; i++) this.addSchema(schema[i], undefined, _skipValidation, _meta);\n\t    return this;\n\t  }\n\t  var id = this._getId(schema);\n\t  if (id !== undefined && typeof id != 'string')\n\t    throw new Error('schema id must be string');\n\t  key = resolve.normalizeId(key || id);\n\t  checkUnique(this, key);\n\t  this._schemas[key] = this._addSchema(schema, _skipValidation, _meta, true);\n\t  return this;\n\t}\n\n\n\t/**\n\t * Add schema that will be used to validate other schemas\n\t * options in META_IGNORE_OPTIONS are alway set to false\n\t * @this   Ajv\n\t * @param {Object} schema schema object\n\t * @param {String} key optional schema key\n\t * @param {Boolean} skipValidation true to skip schema validation, can be used to override validateSchema option for meta-schema\n\t * @return {Ajv} this for method chaining\n\t */\n\tfunction addMetaSchema(schema, key, skipValidation) {\n\t  this.addSchema(schema, key, skipValidation, true);\n\t  return this;\n\t}\n\n\n\t/**\n\t * Validate schema\n\t * @this   Ajv\n\t * @param {Object} schema schema to validate\n\t * @param {Boolean} throwOrLogError pass true to throw (or log) an error if invalid\n\t * @return {Boolean} true if schema is valid\n\t */\n\tfunction validateSchema(schema, throwOrLogError) {\n\t  var $schema = schema.$schema;\n\t  if ($schema !== undefined && typeof $schema != 'string')\n\t    throw new Error('$schema must be a string');\n\t  $schema = $schema || this._opts.defaultMeta || defaultMeta(this);\n\t  if (!$schema) {\n\t    this.logger.warn('meta-schema not available');\n\t    this.errors = null;\n\t    return true;\n\t  }\n\t  var valid = this.validate($schema, schema);\n\t  if (!valid && throwOrLogError) {\n\t    var message = 'schema is invalid: ' + this.errorsText();\n\t    if (this._opts.validateSchema == 'log') this.logger.error(message);\n\t    else throw new Error(message);\n\t  }\n\t  return valid;\n\t}\n\n\n\tfunction defaultMeta(self) {\n\t  var meta = self._opts.meta;\n\t  self._opts.defaultMeta = typeof meta == 'object'\n\t                            ? self._getId(meta) || meta\n\t                            : self.getSchema(META_SCHEMA_ID)\n\t                              ? META_SCHEMA_ID\n\t                              : undefined;\n\t  return self._opts.defaultMeta;\n\t}\n\n\n\t/**\n\t * Get compiled schema from the instance by `key` or `ref`.\n\t * @this   Ajv\n\t * @param  {String} keyRef `key` that was passed to `addSchema` or full schema reference (`schema.id` or resolved id).\n\t * @return {Function} schema validating function (with property `schema`).\n\t */\n\tfunction getSchema(keyRef) {\n\t  var schemaObj = _getSchemaObj(this, keyRef);\n\t  switch (typeof schemaObj) {\n\t    case 'object': return schemaObj.validate || this._compile(schemaObj);\n\t    case 'string': return this.getSchema(schemaObj);\n\t    case 'undefined': return _getSchemaFragment(this, keyRef);\n\t  }\n\t}\n\n\n\tfunction _getSchemaFragment(self, ref) {\n\t  var res = resolve.schema.call(self, { schema: {} }, ref);\n\t  if (res) {\n\t    var schema = res.schema\n\t      , root = res.root\n\t      , baseId = res.baseId;\n\t    var v = compileSchema.call(self, schema, root, undefined, baseId);\n\t    self._fragments[ref] = new SchemaObject({\n\t      ref: ref,\n\t      fragment: true,\n\t      schema: schema,\n\t      root: root,\n\t      baseId: baseId,\n\t      validate: v\n\t    });\n\t    return v;\n\t  }\n\t}\n\n\n\tfunction _getSchemaObj(self, keyRef) {\n\t  keyRef = resolve.normalizeId(keyRef);\n\t  return self._schemas[keyRef] || self._refs[keyRef] || self._fragments[keyRef];\n\t}\n\n\n\t/**\n\t * Remove cached schema(s).\n\t * If no parameter is passed all schemas but meta-schemas are removed.\n\t * If RegExp is passed all schemas with key/id matching pattern but meta-schemas are removed.\n\t * Even if schema is referenced by other schemas it still can be removed as other schemas have local references.\n\t * @this   Ajv\n\t * @param  {String|Object|RegExp} schemaKeyRef key, ref, pattern to match key/ref or schema object\n\t * @return {Ajv} this for method chaining\n\t */\n\tfunction removeSchema(schemaKeyRef) {\n\t  if (schemaKeyRef instanceof RegExp) {\n\t    _removeAllSchemas(this, this._schemas, schemaKeyRef);\n\t    _removeAllSchemas(this, this._refs, schemaKeyRef);\n\t    return this;\n\t  }\n\t  switch (typeof schemaKeyRef) {\n\t    case 'undefined':\n\t      _removeAllSchemas(this, this._schemas);\n\t      _removeAllSchemas(this, this._refs);\n\t      this._cache.clear();\n\t      return this;\n\t    case 'string':\n\t      var schemaObj = _getSchemaObj(this, schemaKeyRef);\n\t      if (schemaObj) this._cache.del(schemaObj.cacheKey);\n\t      delete this._schemas[schemaKeyRef];\n\t      delete this._refs[schemaKeyRef];\n\t      return this;\n\t    case 'object':\n\t      var serialize = this._opts.serialize;\n\t      var cacheKey = serialize ? serialize(schemaKeyRef) : schemaKeyRef;\n\t      this._cache.del(cacheKey);\n\t      var id = this._getId(schemaKeyRef);\n\t      if (id) {\n\t        id = resolve.normalizeId(id);\n\t        delete this._schemas[id];\n\t        delete this._refs[id];\n\t      }\n\t  }\n\t  return this;\n\t}\n\n\n\tfunction _removeAllSchemas(self, schemas, regex) {\n\t  for (var keyRef in schemas) {\n\t    var schemaObj = schemas[keyRef];\n\t    if (!schemaObj.meta && (!regex || regex.test(keyRef))) {\n\t      self._cache.del(schemaObj.cacheKey);\n\t      delete schemas[keyRef];\n\t    }\n\t  }\n\t}\n\n\n\t/* @this   Ajv */\n\tfunction _addSchema(schema, skipValidation, meta, shouldAddSchema) {\n\t  if (typeof schema != 'object' && typeof schema != 'boolean')\n\t    throw new Error('schema should be object or boolean');\n\t  var serialize = this._opts.serialize;\n\t  var cacheKey = serialize ? serialize(schema) : schema;\n\t  var cached = this._cache.get(cacheKey);\n\t  if (cached) return cached;\n\n\t  shouldAddSchema = shouldAddSchema || this._opts.addUsedSchema !== false;\n\n\t  var id = resolve.normalizeId(this._getId(schema));\n\t  if (id && shouldAddSchema) checkUnique(this, id);\n\n\t  var willValidate = this._opts.validateSchema !== false && !skipValidation;\n\t  var recursiveMeta;\n\t  if (willValidate && !(recursiveMeta = id && id == resolve.normalizeId(schema.$schema)))\n\t    this.validateSchema(schema, true);\n\n\t  var localRefs = resolve.ids.call(this, schema);\n\n\t  var schemaObj = new SchemaObject({\n\t    id: id,\n\t    schema: schema,\n\t    localRefs: localRefs,\n\t    cacheKey: cacheKey,\n\t    meta: meta\n\t  });\n\n\t  if (id[0] != '#' && shouldAddSchema) this._refs[id] = schemaObj;\n\t  this._cache.put(cacheKey, schemaObj);\n\n\t  if (willValidate && recursiveMeta) this.validateSchema(schema, true);\n\n\t  return schemaObj;\n\t}\n\n\n\t/* @this   Ajv */\n\tfunction _compile(schemaObj, root) {\n\t  if (schemaObj.compiling) {\n\t    schemaObj.validate = callValidate;\n\t    callValidate.schema = schemaObj.schema;\n\t    callValidate.errors = null;\n\t    callValidate.root = root ? root : callValidate;\n\t    if (schemaObj.schema.$async === true)\n\t      callValidate.$async = true;\n\t    return callValidate;\n\t  }\n\t  schemaObj.compiling = true;\n\n\t  var currentOpts;\n\t  if (schemaObj.meta) {\n\t    currentOpts = this._opts;\n\t    this._opts = this._metaOpts;\n\t  }\n\n\t  var v;\n\t  try { v = compileSchema.call(this, schemaObj.schema, root, schemaObj.localRefs); }\n\t  catch(e) {\n\t    delete schemaObj.validate;\n\t    throw e;\n\t  }\n\t  finally {\n\t    schemaObj.compiling = false;\n\t    if (schemaObj.meta) this._opts = currentOpts;\n\t  }\n\n\t  schemaObj.validate = v;\n\t  schemaObj.refs = v.refs;\n\t  schemaObj.refVal = v.refVal;\n\t  schemaObj.root = v.root;\n\t  return v;\n\n\n\t  /* @this   {*} - custom context, see passContext option */\n\t  function callValidate() {\n\t    /* jshint validthis: true */\n\t    var _validate = schemaObj.validate;\n\t    var result = _validate.apply(this, arguments);\n\t    callValidate.errors = _validate.errors;\n\t    return result;\n\t  }\n\t}\n\n\n\tfunction chooseGetId(opts) {\n\t  switch (opts.schemaId) {\n\t    case 'auto': return _get$IdOrId;\n\t    case 'id': return _getId;\n\t    default: return _get$Id;\n\t  }\n\t}\n\n\t/* @this   Ajv */\n\tfunction _getId(schema) {\n\t  if (schema.$id) this.logger.warn('schema $id ignored', schema.$id);\n\t  return schema.id;\n\t}\n\n\t/* @this   Ajv */\n\tfunction _get$Id(schema) {\n\t  if (schema.id) this.logger.warn('schema id ignored', schema.id);\n\t  return schema.$id;\n\t}\n\n\n\tfunction _get$IdOrId(schema) {\n\t  if (schema.$id && schema.id && schema.$id != schema.id)\n\t    throw new Error('schema $id is different from id');\n\t  return schema.$id || schema.id;\n\t}\n\n\n\t/**\n\t * Convert array of error message objects to string\n\t * @this   Ajv\n\t * @param  {Array<Object>} errors optional array of validation errors, if not passed errors from the instance are used.\n\t * @param  {Object} options optional options with properties `separator` and `dataVar`.\n\t * @return {String} human readable string with all errors descriptions\n\t */\n\tfunction errorsText(errors, options) {\n\t  errors = errors || this.errors;\n\t  if (!errors) return 'No errors';\n\t  options = options || {};\n\t  var separator = options.separator === undefined ? ', ' : options.separator;\n\t  var dataVar = options.dataVar === undefined ? 'data' : options.dataVar;\n\n\t  var text = '';\n\t  for (var i=0; i<errors.length; i++) {\n\t    var e = errors[i];\n\t    if (e) text += dataVar + e.dataPath + ' ' + e.message + separator;\n\t  }\n\t  return text.slice(0, -separator.length);\n\t}\n\n\n\t/**\n\t * Add custom format\n\t * @this   Ajv\n\t * @param {String} name format name\n\t * @param {String|RegExp|Function} format string is converted to RegExp; function should return boolean (true when valid)\n\t * @return {Ajv} this for method chaining\n\t */\n\tfunction addFormat(name, format) {\n\t  if (typeof format == 'string') format = new RegExp(format);\n\t  this._formats[name] = format;\n\t  return this;\n\t}\n\n\n\tfunction addDefaultMetaSchema(self) {\n\t  var $dataSchema;\n\t  if (self._opts.$data) {\n\t    $dataSchema = require$$12;\n\t    self.addMetaSchema($dataSchema, $dataSchema.$id, true);\n\t  }\n\t  if (self._opts.meta === false) return;\n\t  var metaSchema = require$$13;\n\t  if (self._opts.$data) metaSchema = $dataMetaSchema(metaSchema, META_SUPPORT_DATA);\n\t  self.addMetaSchema(metaSchema, META_SCHEMA_ID, true);\n\t  self._refs['http://json-schema.org/schema'] = META_SCHEMA_ID;\n\t}\n\n\n\tfunction addInitialSchemas(self) {\n\t  var optsSchemas = self._opts.schemas;\n\t  if (!optsSchemas) return;\n\t  if (Array.isArray(optsSchemas)) self.addSchema(optsSchemas);\n\t  else for (var key in optsSchemas) self.addSchema(optsSchemas[key], key);\n\t}\n\n\n\tfunction addInitialFormats(self) {\n\t  for (var name in self._opts.formats) {\n\t    var format = self._opts.formats[name];\n\t    self.addFormat(name, format);\n\t  }\n\t}\n\n\n\tfunction addInitialKeywords(self) {\n\t  for (var name in self._opts.keywords) {\n\t    var keyword = self._opts.keywords[name];\n\t    self.addKeyword(name, keyword);\n\t  }\n\t}\n\n\n\tfunction checkUnique(self, id) {\n\t  if (self._schemas[id] || self._refs[id])\n\t    throw new Error('schema with key or id \"' + id + '\" already exists');\n\t}\n\n\n\tfunction getMetaSchemaOptions(self) {\n\t  var metaOpts = util.copy(self._opts);\n\t  for (var i=0; i<META_IGNORE_OPTIONS.length; i++)\n\t    delete metaOpts[META_IGNORE_OPTIONS[i]];\n\t  return metaOpts;\n\t}\n\n\n\tfunction setLogger(self) {\n\t  var logger = self._opts.logger;\n\t  if (logger === false) {\n\t    self.logger = {log: noop, warn: noop, error: noop};\n\t  } else {\n\t    if (logger === undefined) logger = console;\n\t    if (!(typeof logger == 'object' && logger.log && logger.warn && logger.error))\n\t      throw new Error('logger must implement log, warn and error methods');\n\t    self.logger = logger;\n\t  }\n\t}\n\n\n\tfunction noop() {}\n\treturn ajv;\n}\n\nvar ajvExports = requireAjv();\nconst Ajv = /*@__PURE__*/getDefaultExportFromCjs(ajvExports);\n\nconst id = \"http://json-schema.org/draft-04/schema#\";\nconst $schema = \"http://json-schema.org/draft-04/schema#\";\nconst description = \"Core schema meta-schema\";\nconst definitions = {\n\tschemaArray: {\n\t\ttype: \"array\",\n\t\tminItems: 1,\n\t\titems: {\n\t\t\t$ref: \"#\"\n\t\t}\n\t},\n\tpositiveInteger: {\n\t\ttype: \"integer\",\n\t\tminimum: 0\n\t},\n\tpositiveIntegerDefault0: {\n\t\tallOf: [\n\t\t\t{\n\t\t\t\t$ref: \"#/definitions/positiveInteger\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"default\": 0\n\t\t\t}\n\t\t]\n\t},\n\tsimpleTypes: {\n\t\t\"enum\": [\n\t\t\t\"array\",\n\t\t\t\"boolean\",\n\t\t\t\"integer\",\n\t\t\t\"null\",\n\t\t\t\"number\",\n\t\t\t\"object\",\n\t\t\t\"string\"\n\t\t]\n\t},\n\tstringArray: {\n\t\ttype: \"array\",\n\t\titems: {\n\t\t\ttype: \"string\"\n\t\t},\n\t\tminItems: 1,\n\t\tuniqueItems: true\n\t}\n};\nconst type = \"object\";\nconst properties = {\n\tid: {\n\t\ttype: \"string\"\n\t},\n\t$schema: {\n\t\ttype: \"string\"\n\t},\n\ttitle: {\n\t\ttype: \"string\"\n\t},\n\tdescription: {\n\t\ttype: \"string\"\n\t},\n\t\"default\": {\n\t},\n\tmultipleOf: {\n\t\ttype: \"number\",\n\t\tminimum: 0,\n\t\texclusiveMinimum: true\n\t},\n\tmaximum: {\n\t\ttype: \"number\"\n\t},\n\texclusiveMaximum: {\n\t\ttype: \"boolean\",\n\t\t\"default\": false\n\t},\n\tminimum: {\n\t\ttype: \"number\"\n\t},\n\texclusiveMinimum: {\n\t\ttype: \"boolean\",\n\t\t\"default\": false\n\t},\n\tmaxLength: {\n\t\t$ref: \"#/definitions/positiveInteger\"\n\t},\n\tminLength: {\n\t\t$ref: \"#/definitions/positiveIntegerDefault0\"\n\t},\n\tpattern: {\n\t\ttype: \"string\",\n\t\tformat: \"regex\"\n\t},\n\tadditionalItems: {\n\t\tanyOf: [\n\t\t\t{\n\t\t\t\ttype: \"boolean\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t$ref: \"#\"\n\t\t\t}\n\t\t],\n\t\t\"default\": {\n\t\t}\n\t},\n\titems: {\n\t\tanyOf: [\n\t\t\t{\n\t\t\t\t$ref: \"#\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t$ref: \"#/definitions/schemaArray\"\n\t\t\t}\n\t\t],\n\t\t\"default\": {\n\t\t}\n\t},\n\tmaxItems: {\n\t\t$ref: \"#/definitions/positiveInteger\"\n\t},\n\tminItems: {\n\t\t$ref: \"#/definitions/positiveIntegerDefault0\"\n\t},\n\tuniqueItems: {\n\t\ttype: \"boolean\",\n\t\t\"default\": false\n\t},\n\tmaxProperties: {\n\t\t$ref: \"#/definitions/positiveInteger\"\n\t},\n\tminProperties: {\n\t\t$ref: \"#/definitions/positiveIntegerDefault0\"\n\t},\n\trequired: {\n\t\t$ref: \"#/definitions/stringArray\"\n\t},\n\tadditionalProperties: {\n\t\tanyOf: [\n\t\t\t{\n\t\t\t\ttype: \"boolean\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t$ref: \"#\"\n\t\t\t}\n\t\t],\n\t\t\"default\": {\n\t\t}\n\t},\n\tdefinitions: {\n\t\ttype: \"object\",\n\t\tadditionalProperties: {\n\t\t\t$ref: \"#\"\n\t\t},\n\t\t\"default\": {\n\t\t}\n\t},\n\tproperties: {\n\t\ttype: \"object\",\n\t\tadditionalProperties: {\n\t\t\t$ref: \"#\"\n\t\t},\n\t\t\"default\": {\n\t\t}\n\t},\n\tpatternProperties: {\n\t\ttype: \"object\",\n\t\tadditionalProperties: {\n\t\t\t$ref: \"#\"\n\t\t},\n\t\t\"default\": {\n\t\t}\n\t},\n\tdependencies: {\n\t\ttype: \"object\",\n\t\tadditionalProperties: {\n\t\t\tanyOf: [\n\t\t\t\t{\n\t\t\t\t\t$ref: \"#\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t$ref: \"#/definitions/stringArray\"\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t},\n\t\"enum\": {\n\t\ttype: \"array\",\n\t\tminItems: 1,\n\t\tuniqueItems: true\n\t},\n\ttype: {\n\t\tanyOf: [\n\t\t\t{\n\t\t\t\t$ref: \"#/definitions/simpleTypes\"\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: \"array\",\n\t\t\t\titems: {\n\t\t\t\t\t$ref: \"#/definitions/simpleTypes\"\n\t\t\t\t},\n\t\t\t\tminItems: 1,\n\t\t\t\tuniqueItems: true\n\t\t\t}\n\t\t]\n\t},\n\tformat: {\n\t\ttype: \"string\"\n\t},\n\tallOf: {\n\t\t$ref: \"#/definitions/schemaArray\"\n\t},\n\tanyOf: {\n\t\t$ref: \"#/definitions/schemaArray\"\n\t},\n\toneOf: {\n\t\t$ref: \"#/definitions/schemaArray\"\n\t},\n\tnot: {\n\t\t$ref: \"#\"\n\t}\n};\nconst dependencies = {\n\texclusiveMaximum: [\n\t\t\"maximum\"\n\t],\n\texclusiveMinimum: [\n\t\t\"minimum\"\n\t]\n};\nconst metaSchema = {\n\tid: id,\n\t$schema: $schema,\n\tdescription: description,\n\tdefinitions: definitions,\n\ttype: type,\n\tproperties: properties,\n\tdependencies: dependencies,\n\t\"default\": {\n}\n};\n\nfunction getAjvInstance() {\n  const ajv = new Ajv({\n    meta: false,\n    useDefaults: true,\n    validateSchema: false,\n    missingRefs: \"ignore\",\n    verbose: true,\n    schemaId: \"auto\",\n    strictDefaults: true\n  });\n  ajv.addMetaSchema(metaSchema);\n  ajv._opts.defaultMeta = metaSchema.id;\n  return ajv;\n}\nconst noOptionsSchema = Object.freeze({\n  type: \"array\",\n  minItems: 0,\n  maxItems: 0\n});\nfunction getRuleOptionsSchema(rule) {\n  if (!rule?.meta)\n    return { ...noOptionsSchema };\n  const schema = rule.meta.schema;\n  if (typeof schema === \"undefined\")\n    return { ...noOptionsSchema };\n  if (schema === false)\n    return null;\n  if (typeof schema !== \"object\" || schema === null)\n    throw new TypeError(`Rule's \\`meta.schema\\` must be an array or object`);\n  if (Array.isArray(schema)) {\n    if (schema.length) {\n      return {\n        type: \"array\",\n        items: schema,\n        minItems: 0,\n        maxItems: schema.length\n      };\n    } else {\n      return {\n        ...noOptionsSchema\n      };\n    }\n  }\n  return schema;\n}\n\nconst BOM = \"\\uFEFF\";\nfunction compareMessagesByFixRange(a, b) {\n  return a.fix.range[0] - b.fix.range[0] || a.fix.range[1] - b.fix.range[1];\n}\nfunction compareMessagesByLocation(a, b) {\n  return a.line - b.line || a.column - b.column;\n}\nfunction applyFixes(sourceText, messages) {\n  const remainingMessages = [];\n  const fixes = [];\n  const bom = sourceText.startsWith(BOM) ? BOM : \"\";\n  const text = bom ? sourceText.slice(1) : sourceText;\n  let lastPos = Number.NEGATIVE_INFINITY;\n  let output = bom;\n  function attemptFix(problem) {\n    const fix = problem.fix;\n    const start = fix.range[0];\n    const end = fix.range[1];\n    if (lastPos >= start || start > end) {\n      remainingMessages.push(problem);\n      return false;\n    }\n    if (start < 0 && end >= 0 || start === 0 && fix.text.startsWith(BOM))\n      output = \"\";\n    output += text.slice(Math.max(0, lastPos), Math.max(0, start));\n    output += fix.text;\n    lastPos = end;\n    return true;\n  }\n  messages.forEach((problem) => {\n    if (hasOwnProperty(problem, \"fix\"))\n      fixes.push(problem);\n    else\n      remainingMessages.push(problem);\n  });\n  if (fixes.length) {\n    let fixesWereApplied = false;\n    for (const problem of fixes.sort(compareMessagesByFixRange)) {\n      attemptFix(problem);\n      fixesWereApplied = true;\n    }\n    output += text.slice(Math.max(0, lastPos));\n    return {\n      fixed: fixesWereApplied,\n      messages: remainingMessages.sort(compareMessagesByLocation),\n      output\n    };\n  }\n  return {\n    fixed: false,\n    messages,\n    output: bom + text\n  };\n}\nfunction hasOwnProperty(obj, prop) {\n  return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nfunction createRuleTester(options) {\n  const languageOptions = deepMerge(\n    options.languageOptions ?? {\n      parser: options.parser,\n      parserOptions: options.parserOptions\n    },\n    ...toArray(options.configs).map((c) => c.languageOptions).filter((c) => c !== void 0)\n  );\n  const linter = new Linter({\n    configType: \"flat\",\n    cwd: isUsingTypeScriptParser(options.languageOptions) ? languageOptions?.parserOptions?.tsconfigRootDir : void 0\n  });\n  const defaultConfigs = toArray(options.configs);\n  {\n    const inlineConfig = pickFlatConfigFromOptions(options);\n    if (inlineConfig)\n      defaultConfigs.unshift(inlineConfig);\n  }\n  const defaultFilenames = {\n    js: \"file.js\",\n    ts: \"file.ts\",\n    jsx: \"file.jsx\",\n    tsx: \"file.tsx\",\n    ...options.defaultFilenames\n  };\n  async function each(c) {\n    const testcase = normalizeTestCase(c, languageOptions, defaultFilenames);\n    const {\n      recursive = 10,\n      verifyAfterFix = true,\n      verifyFixChanges = true\n    } = {\n      ...options,\n      ...testcase\n    };\n    const configs = [...defaultConfigs];\n    if (options.rule) {\n      const ruleName = options.name || \"rule-to-test\";\n      configs.push(\n        {\n          name: \"rule-to-test\",\n          files: [\"**\"],\n          plugins: {\n            \"rule-to-test\": {\n              rules: {\n                [ruleName]: options.rule\n              }\n            }\n          },\n          rules: {\n            [`rule-to-test/${ruleName}`]: Array.isArray(testcase.options) ? [\"error\", ...testcase.options] : testcase.options !== void 0 ? [\"error\", testcase.options] : \"error\"\n          },\n          ...pickFlatConfigFromOptions(testcase)\n        }\n      );\n      const schema = getRuleOptionsSchema(options.rule);\n      if (schema) {\n        const ajv = getAjvInstance();\n        ajv.validateSchema(schema);\n        if (ajv.errors) {\n          const errors = ajv.errors.map((error) => {\n            const field = error.dataPath[0] === \".\" ? error.dataPath.slice(1) : error.dataPath;\n            return `\t${field}: ${error.message}`;\n          });\n          throw new Error(`Schema for rule ${ruleName} is invalid: ${errors}`);\n        }\n        try {\n          ajv.compile(schema);\n        } catch (error) {\n          throw new Error(`Schema for rule ${ruleName} is invalid: ${error}`);\n        }\n      }\n    }\n    await testcase.before?.call(testcase, configs);\n    const messages = linter.verify(testcase.code, configs, testcase.filename);\n    messages.forEach((message) => {\n      if (message.ruleId)\n        message.ruleId = message.ruleId.replace(/^rule-to-test\\//, \"\");\n    });\n    if (testcase.errors) {\n      if (typeof testcase.errors === \"function\") {\n        await testcase.errors(messages);\n      } else if (typeof testcase.errors === \"number\") {\n        expect.soft(messages.length, \"number of error messages\").toBe(testcase.errors);\n      } else {\n        const errors = toArray(testcase.errors).map((e) => normalizeCaseError(e, options.rule));\n        expect(messages.length, \"number of error messages\").toBe(errors.length);\n        errors.forEach((e, i) => {\n          expect.soft(messages[i], \"error message object\").toMatchObject(e);\n        });\n      }\n    }\n    function fix(input) {\n      const problems = linter.verify(input, configs, testcase.filename);\n      const result2 = applyFixes(input, problems);\n      if (result2.fixed && result2.output === input && verifyFixChanges)\n        throw new Error(`Fix does not change the code, it's likely to cause infinite fixes`);\n      return result2;\n    }\n    const step1 = fix(testcase.code);\n    const result = {\n      ...step1,\n      steps: [step1]\n    };\n    if (result.fixed && recursive !== false) {\n      let r = recursive;\n      for (r = recursive; r >= 0; r--) {\n        const step = fix(result.output);\n        result.steps.push(step);\n        result.output = step.output;\n        if (!step.fixed)\n          break;\n      }\n      if (r < 0)\n        throw new Error(`Fix recursion limit exceeded, possibly the fix is not stable. Last output:\n-------\n${result.output}\n-------`);\n    }\n    result.messages = messages;\n    if (testcase.output !== void 0) {\n      if (testcase.output === null)\n        expect(result.output, \"output\").toBe(testcase.code);\n      else if (typeof testcase.output === \"function\")\n        await testcase.output(result.output, testcase.code);\n      else\n        expect(result.output, \"output\").toBe(testcase.output);\n    }\n    if (testcase.type === \"invalid\" && testcase.output === void 0 && testcase.errors === void 0)\n      throw new Error(`Invalid test case must have either 'errors' or 'output' property`);\n    if (verifyAfterFix && result.fixed) {\n      const messages2 = linter.verify(\n        result.output,\n        configs,\n        testcase.filename\n      );\n      expect.soft(messages2, \"no errors after fix\").toEqual([]);\n    }\n    await testcase.onResult?.(result);\n    await testcase.after?.call(testcase, result);\n    return {\n      testcase,\n      result\n    };\n  }\n  async function valid(arg) {\n    const result = await each(arg);\n    expect.soft(result.result.messages, \"no errors on valid cases\").toEqual([]);\n    expect.soft(result.result.fixed, \"no need to fix for valid cases\").toBeFalsy();\n    return result;\n  }\n  async function invalid(arg) {\n    const result = await each(arg);\n    expect.soft(result.result.messages, \"expect errors\").not.toEqual([]);\n    return result;\n  }\n  async function run(cases) {\n    describe(options.name || \"rule-to-test\", () => {\n      if (cases.valid?.length) {\n        describe(\"valid\", () => {\n          cases.valid.forEach(\n            (c, index) => {\n              const _case = normalizeTestCase(c, languageOptions, defaultFilenames, \"valid\");\n              let run2 = it;\n              if (_case.only)\n                run2 = it.only;\n              if (_case.skip)\n                run2 = it.skip;\n              run2(`Valid #${index}: ${_case.description || _case.code}`, async () => {\n                const { testcase, result } = await valid(_case);\n                await cases?.onResult?.(testcase, result);\n              });\n            }\n          );\n        });\n      }\n      if (cases.invalid?.length) {\n        describe(\"invalid\", () => {\n          cases.invalid.forEach((c, index) => {\n            const _case = normalizeTestCase(c, languageOptions, defaultFilenames, \"invalid\");\n            let run2 = it;\n            if (_case.only)\n              run2 = it.only;\n            if (_case.skip)\n              run2 = it.skip;\n            run2(`Invalid #${index}: ${_case.description || _case.code}`, async () => {\n              const { testcase, result } = await invalid(_case);\n              await cases?.onResult?.(testcase, result);\n            });\n          });\n        });\n      }\n    });\n  }\n  return {\n    each,\n    valid,\n    invalid,\n    run\n  };\n}\n\nfunction run(options) {\n  const tester = createRuleTester(options);\n  return tester.run(options);\n}\nfunction runClassic(ruleName, rule, cases, options) {\n  const tester = createRuleTester({\n    rule,\n    name: ruleName,\n    ...options\n  });\n  return tester.run(cases);\n}\n\nexport { unindent as $, createRuleTester, isUsingTypeScriptParser, isUsingTypeScriptTypings, normalizeCaseError, normalizeTestCase, pickFlatConfigFromOptions, run, runClassic, unindent };\n"]}