| 
								
							 | 
							
								{{# def.definitions }}
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								{{## def._error:_rule:
							 | 
						
						
						
							| 
								
							 | 
							
								  {{ 'istanbul ignore else'; }}
							 | 
						
						
						
							| 
								
							 | 
							
								  {{? it.createErrors !== false }}
							 | 
						
						
						
							| 
								
							 | 
							
								    {
							 | 
						
						
						
							| 
								
							 | 
							
								      keyword: '{{= $errorKeyword || _rule }}'
							 | 
						
						
						
							| 
								
							 | 
							
								      , dataPath: (dataPath || '') + {{= it.errorPath }}
							 | 
						
						
						
							| 
								
							 | 
							
								      , schemaPath: {{=it.util.toQuotedString($errSchemaPath)}}
							 | 
						
						
						
							| 
								
							 | 
							
								      , params: {{# def._errorParams[_rule] }}
							 | 
						
						
						
							| 
								
							 | 
							
								      {{? it.opts.messages !== false }}
							 | 
						
						
						
							| 
								
							 | 
							
								        , message: {{# def._errorMessages[_rule] }}
							 | 
						
						
						
							| 
								
							 | 
							
								      {{?}}
							 | 
						
						
						
							| 
								
							 | 
							
								      {{? it.opts.verbose }}
							 | 
						
						
						
							| 
								
							 | 
							
								        , schema: {{# def._errorSchemas[_rule] }}
							 | 
						
						
						
							| 
								
							 | 
							
								        , parentSchema: validate.schema{{=it.schemaPath}}
							 | 
						
						
						
							| 
								
							 | 
							
								        , data: {{=$data}}
							 | 
						
						
						
							| 
								
							 | 
							
								      {{?}}
							 | 
						
						
						
							| 
								
							 | 
							
								    }
							 | 
						
						
						
							| 
								
							 | 
							
								  {{??}}
							 | 
						
						
						
							| 
								
							 | 
							
								    {}
							 | 
						
						
						
							| 
								
							 | 
							
								  {{?}}
							 | 
						
						
						
							| 
								
							 | 
							
								#}}
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								{{## def._addError:_rule:
							 | 
						
						
						
							| 
								
							 | 
							
								  if (vErrors === null) vErrors = [err];
							 | 
						
						
						
							| 
								
							 | 
							
								  else vErrors.push(err);
							 | 
						
						
						
							| 
								
							 | 
							
								  errors++;
							 | 
						
						
						
							| 
								
							 | 
							
								#}}
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								{{## def.addError:_rule:
							 | 
						
						
						
							| 
								
							 | 
							
								  var err = {{# def._error:_rule }};
							 | 
						
						
						
							| 
								
							 | 
							
								  {{# def._addError:_rule }}
							 | 
						
						
						
							| 
								
							 | 
							
								#}}
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								{{## def.error:_rule:
							 | 
						
						
						
							| 
								
							 | 
							
								  {{# def.beginDefOut}}
							 | 
						
						
						
							| 
								
							 | 
							
								    {{# def._error:_rule }}
							 | 
						
						
						
							| 
								
							 | 
							
								  {{# def.storeDefOut:__err }}
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								  {{? !it.compositeRule && $breakOnError }}
							 | 
						
						
						
							| 
								
							 | 
							
								    {{ 'istanbul ignore if'; }}
							 | 
						
						
						
							| 
								
							 | 
							
								    {{? it.async }}
							 | 
						
						
						
							| 
								
							 | 
							
								      throw new ValidationError([{{=__err}}]);
							 | 
						
						
						
							| 
								
							 | 
							
								    {{??}}
							 | 
						
						
						
							| 
								
							 | 
							
								      validate.errors = [{{=__err}}];
							 | 
						
						
						
							| 
								
							 | 
							
								      return false;
							 | 
						
						
						
							| 
								
							 | 
							
								    {{?}}
							 | 
						
						
						
							| 
								
							 | 
							
								  {{??}}
							 | 
						
						
						
							| 
								
							 | 
							
								    var err = {{=__err}};
							 | 
						
						
						
							| 
								
							 | 
							
								    {{# def._addError:_rule }}
							 | 
						
						
						
							| 
								
							 | 
							
								  {{?}}
							 | 
						
						
						
							| 
								
							 | 
							
								#}}
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								{{## def.extraError:_rule:
							 | 
						
						
						
							| 
								
							 | 
							
								  {{# def.addError:_rule}}
							 | 
						
						
						
							| 
								
							 | 
							
								  {{? !it.compositeRule && $breakOnError }}
							 | 
						
						
						
							| 
								
							 | 
							
								    {{ 'istanbul ignore if'; }}
							 | 
						
						
						
							| 
								
							 | 
							
								    {{? it.async }}
							 | 
						
						
						
							| 
								
							 | 
							
								      throw new ValidationError(vErrors);
							 | 
						
						
						
							| 
								
							 | 
							
								    {{??}}
							 | 
						
						
						
							| 
								
							 | 
							
								      validate.errors = vErrors;
							 | 
						
						
						
							| 
								
							 | 
							
								      return false;
							 | 
						
						
						
							| 
								
							 | 
							
								    {{?}}
							 | 
						
						
						
							| 
								
							 | 
							
								  {{?}}
							 | 
						
						
						
							| 
								
							 | 
							
								#}}
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								{{## def.checkError:_rule:
							 | 
						
						
						
							| 
								
							 | 
							
								  if (!{{=$valid}}) {
							 | 
						
						
						
							| 
								
							 | 
							
								    {{# def.error:_rule }}
							 | 
						
						
						
							| 
								
							 | 
							
								  }
							 | 
						
						
						
							| 
								
							 | 
							
								#}}
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								{{## def.resetErrors:
							 | 
						
						
						
							| 
								
							 | 
							
								  errors = {{=$errs}};
							 | 
						
						
						
							| 
								
							 | 
							
								  if (vErrors !== null) {
							 | 
						
						
						
							| 
								
							 | 
							
								    if ({{=$errs}}) vErrors.length = {{=$errs}};
							 | 
						
						
						
							| 
								
							 | 
							
								    else vErrors = null;
							 | 
						
						
						
							| 
								
							 | 
							
								  }
							 | 
						
						
						
							| 
								
							 | 
							
								#}}
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								{{## def.concatSchema:{{?$isData}}' + {{=$schemaValue}} + '{{??}}{{=$schema}}{{?}}#}}
							 | 
						
						
						
							| 
								
							 | 
							
								{{## def.appendSchema:{{?$isData}}' + {{=$schemaValue}}{{??}}{{=$schemaValue}}'{{?}}#}}
							 | 
						
						
						
							| 
								
							 | 
							
								{{## def.concatSchemaEQ:{{?$isData}}' + {{=$schemaValue}} + '{{??}}{{=it.util.escapeQuotes($schema)}}{{?}}#}}
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								{{## def._errorMessages = {
							 | 
						
						
						
							| 
								
							 | 
							
								  'false schema':  "'boolean schema is false'",
							 | 
						
						
						
							| 
								
							 | 
							
								  $ref:            "'can\\\'t resolve reference {{=it.util.escapeQuotes($schema)}}'",
							 | 
						
						
						
							| 
								
							 | 
							
								  additionalItems: "'should NOT have more than {{=$schema.length}} items'",
							 | 
						
						
						
							| 
								
							 | 
							
								  additionalProperties: "'{{? it.opts._errorDataPathProperty }}is an invalid additional property{{??}}should NOT have additional properties{{?}}'",
							 | 
						
						
						
							| 
								
							 | 
							
								  anyOf:           "'should match some schema in anyOf'",
							 | 
						
						
						
							| 
								
							 | 
							
								  const:           "'should be equal to constant'",
							 | 
						
						
						
							| 
								
							 | 
							
								  contains:        "'should contain a valid item'",
							 | 
						
						
						
							| 
								
							 | 
							
								  dependencies:    "'should have {{? $deps.length == 1 }}property {{= it.util.escapeQuotes($deps[0]) }}{{??}}properties {{= it.util.escapeQuotes($deps.join(\", \")) }}{{?}} when property {{= it.util.escapeQuotes($property) }} is present'",
							 | 
						
						
						
							| 
								
							 | 
							
								  'enum':          "'should be equal to one of the allowed values'",
							 | 
						
						
						
							| 
								
							 | 
							
								  format:          "'should match format \"{{#def.concatSchemaEQ}}\"'",
							 | 
						
						
						
							| 
								
							 | 
							
								  'if':            "'should match \"' + {{=$ifClause}} + '\" schema'",
							 | 
						
						
						
							| 
								
							 | 
							
								  _limit:          "'should be {{=$opStr}} {{#def.appendSchema}}",
							 | 
						
						
						
							| 
								
							 | 
							
								  _exclusiveLimit: "'{{=$exclusiveKeyword}} should be boolean'",
							 | 
						
						
						
							| 
								
							 | 
							
								  _limitItems:     "'should NOT have {{?$keyword=='maxItems'}}more{{??}}fewer{{?}} than {{#def.concatSchema}} items'",
							 | 
						
						
						
							| 
								
							 | 
							
								  _limitLength:    "'should NOT be {{?$keyword=='maxLength'}}longer{{??}}shorter{{?}} than {{#def.concatSchema}} characters'",
							 | 
						
						
						
							| 
								
							 | 
							
								  _limitProperties:"'should NOT have {{?$keyword=='maxProperties'}}more{{??}}fewer{{?}} than {{#def.concatSchema}} properties'",
							 | 
						
						
						
							| 
								
							 | 
							
								  multipleOf:      "'should be multiple of {{#def.appendSchema}}",
							 | 
						
						
						
							| 
								
							 | 
							
								  not:             "'should NOT be valid'",
							 | 
						
						
						
							| 
								
							 | 
							
								  oneOf:           "'should match exactly one schema in oneOf'",
							 | 
						
						
						
							| 
								
							 | 
							
								  pattern:         "'should match pattern \"{{#def.concatSchemaEQ}}\"'",
							 | 
						
						
						
							| 
								
							 | 
							
								  propertyNames:   "'property name \\'{{=$invalidName}}\\' is invalid'",
							 | 
						
						
						
							| 
								
							 | 
							
								  required:        "'{{? it.opts._errorDataPathProperty }}is a required property{{??}}should have required property \\'{{=$missingProperty}}\\'{{?}}'",
							 | 
						
						
						
							| 
								
							 | 
							
								  type:            "'should be {{? $typeIsArray }}{{= $typeSchema.join(\",\") }}{{??}}{{=$typeSchema}}{{?}}'",
							 | 
						
						
						
							| 
								
							 | 
							
								  uniqueItems:     "'should NOT have duplicate items (items ## ' + j + ' and ' + i + ' are identical)'",
							 | 
						
						
						
							| 
								
							 | 
							
								  custom:          "'should pass \"{{=$rule.keyword}}\" keyword validation'",
							 | 
						
						
						
							| 
								
							 | 
							
								  patternRequired: "'should have property matching pattern \\'{{=$missingPattern}}\\''",
							 | 
						
						
						
							| 
								
							 | 
							
								  switch:          "'should pass \"switch\" keyword validation'",
							 | 
						
						
						
							| 
								
							 | 
							
								  _formatLimit:    "'should be {{=$opStr}} \"{{#def.concatSchemaEQ}}\"'",
							 | 
						
						
						
							| 
								
							 | 
							
								  _formatExclusiveLimit: "'{{=$exclusiveKeyword}} should be boolean'"
							 | 
						
						
						
							| 
								
							 | 
							
								} #}}
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								{{## def.schemaRefOrVal: {{?$isData}}validate.schema{{=$schemaPath}}{{??}}{{=$schema}}{{?}} #}}
							 | 
						
						
						
							| 
								
							 | 
							
								{{## def.schemaRefOrQS: {{?$isData}}validate.schema{{=$schemaPath}}{{??}}{{=it.util.toQuotedString($schema)}}{{?}} #}}
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								{{## def._errorSchemas = {
							 | 
						
						
						
							| 
								
							 | 
							
								  'false schema':  "false",
							 | 
						
						
						
							| 
								
							 | 
							
								  $ref:            "{{=it.util.toQuotedString($schema)}}",
							 | 
						
						
						
							| 
								
							 | 
							
								  additionalItems: "false",
							 | 
						
						
						
							| 
								
							 | 
							
								  additionalProperties: "false",
							 | 
						
						
						
							| 
								
							 | 
							
								  anyOf:           "validate.schema{{=$schemaPath}}",
							 | 
						
						
						
							| 
								
							 | 
							
								  const:           "validate.schema{{=$schemaPath}}",
							 | 
						
						
						
							| 
								
							 | 
							
								  contains:        "validate.schema{{=$schemaPath}}",
							 | 
						
						
						
							| 
								
							 | 
							
								  dependencies:    "validate.schema{{=$schemaPath}}",
							 | 
						
						
						
							| 
								
							 | 
							
								  'enum':          "validate.schema{{=$schemaPath}}",
							 | 
						
						
						
							| 
								
							 | 
							
								  format:          "{{#def.schemaRefOrQS}}",
							 | 
						
						
						
							| 
								
							 | 
							
								  'if':            "validate.schema{{=$schemaPath}}",
							 | 
						
						
						
							| 
								
							 | 
							
								  _limit:          "{{#def.schemaRefOrVal}}",
							 | 
						
						
						
							| 
								
							 | 
							
								  _exclusiveLimit: "validate.schema{{=$schemaPath}}",
							 | 
						
						
						
							| 
								
							 | 
							
								  _limitItems:     "{{#def.schemaRefOrVal}}",
							 | 
						
						
						
							| 
								
							 | 
							
								  _limitLength:    "{{#def.schemaRefOrVal}}",
							 | 
						
						
						
							| 
								
							 | 
							
								  _limitProperties:"{{#def.schemaRefOrVal}}",
							 | 
						
						
						
							| 
								
							 | 
							
								  multipleOf:      "{{#def.schemaRefOrVal}}",
							 | 
						
						
						
							| 
								
							 | 
							
								  not:             "validate.schema{{=$schemaPath}}",
							 | 
						
						
						
							| 
								
							 | 
							
								  oneOf:           "validate.schema{{=$schemaPath}}",
							 | 
						
						
						
							| 
								
							 | 
							
								  pattern:         "{{#def.schemaRefOrQS}}",
							 | 
						
						
						
							| 
								
							 | 
							
								  propertyNames:   "validate.schema{{=$schemaPath}}",
							 | 
						
						
						
							| 
								
							 | 
							
								  required:        "validate.schema{{=$schemaPath}}",
							 | 
						
						
						
							| 
								
							 | 
							
								  type:            "validate.schema{{=$schemaPath}}",
							 | 
						
						
						
							| 
								
							 | 
							
								  uniqueItems:     "{{#def.schemaRefOrVal}}",
							 | 
						
						
						
							| 
								
							 | 
							
								  custom:          "validate.schema{{=$schemaPath}}",
							 | 
						
						
						
							| 
								
							 | 
							
								  patternRequired: "validate.schema{{=$schemaPath}}",
							 | 
						
						
						
							| 
								
							 | 
							
								  switch:          "validate.schema{{=$schemaPath}}",
							 | 
						
						
						
							| 
								
							 | 
							
								  _formatLimit:    "{{#def.schemaRefOrQS}}",
							 | 
						
						
						
							| 
								
							 | 
							
								  _formatExclusiveLimit: "validate.schema{{=$schemaPath}}"
							 | 
						
						
						
							| 
								
							 | 
							
								} #}}
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								{{## def.schemaValueQS: {{?$isData}}{{=$schemaValue}}{{??}}{{=it.util.toQuotedString($schema)}}{{?}} #}}
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								{{## def._errorParams = {
							 | 
						
						
						
							| 
								
							 | 
							
								  'false schema':  "{}",
							 | 
						
						
						
							| 
								
							 | 
							
								  $ref:            "{ ref: '{{=it.util.escapeQuotes($schema)}}' }",
							 | 
						
						
						
							| 
								
							 | 
							
								  additionalItems: "{ limit: {{=$schema.length}} }",
							 | 
						
						
						
							| 
								
							 | 
							
								  additionalProperties: "{ additionalProperty: '{{=$additionalProperty}}' }",
							 | 
						
						
						
							| 
								
							 | 
							
								  anyOf:           "{}",
							 | 
						
						
						
							| 
								
							 | 
							
								  const:           "{ allowedValue: schema{{=$lvl}} }",
							 | 
						
						
						
							| 
								
							 | 
							
								  contains:        "{}",
							 | 
						
						
						
							| 
								
							 | 
							
								  dependencies:    "{ property: '{{= it.util.escapeQuotes($property) }}', missingProperty: '{{=$missingProperty}}', depsCount: {{=$deps.length}}, deps: '{{= it.util.escapeQuotes($deps.length==1 ? $deps[0] : $deps.join(\", \")) }}' }",
							 | 
						
						
						
							| 
								
							 | 
							
								  'enum':          "{ allowedValues: schema{{=$lvl}} }",
							 | 
						
						
						
							| 
								
							 | 
							
								  format:          "{ format: {{#def.schemaValueQS}} }",
							 | 
						
						
						
							| 
								
							 | 
							
								  'if':            "{ failingKeyword: {{=$ifClause}} }",
							 | 
						
						
						
							| 
								
							 | 
							
								  _limit:          "{ comparison: {{=$opExpr}}, limit: {{=$schemaValue}}, exclusive: {{=$exclusive}} }",
							 | 
						
						
						
							| 
								
							 | 
							
								  _exclusiveLimit: "{}",
							 | 
						
						
						
							| 
								
							 | 
							
								  _limitItems:     "{ limit: {{=$schemaValue}} }",
							 | 
						
						
						
							| 
								
							 | 
							
								  _limitLength:    "{ limit: {{=$schemaValue}} }",
							 | 
						
						
						
							| 
								
							 | 
							
								  _limitProperties:"{ limit: {{=$schemaValue}} }",
							 | 
						
						
						
							| 
								
							 | 
							
								  multipleOf:      "{ multipleOf: {{=$schemaValue}} }",
							 | 
						
						
						
							| 
								
							 | 
							
								  not:             "{}",
							 | 
						
						
						
							| 
								
							 | 
							
								  oneOf:           "{ passingSchemas: {{=$passingSchemas}} }",
							 | 
						
						
						
							| 
								
							 | 
							
								  pattern:         "{ pattern: {{#def.schemaValueQS}} }",
							 | 
						
						
						
							| 
								
							 | 
							
								  propertyNames:   "{ propertyName: '{{=$invalidName}}' }",
							 | 
						
						
						
							| 
								
							 | 
							
								  required:        "{ missingProperty: '{{=$missingProperty}}' }",
							 | 
						
						
						
							| 
								
							 | 
							
								  type:            "{ type: '{{? $typeIsArray }}{{= $typeSchema.join(\",\") }}{{??}}{{=$typeSchema}}{{?}}' }",
							 | 
						
						
						
							| 
								
							 | 
							
								  uniqueItems:     "{ i: i, j: j }",
							 | 
						
						
						
							| 
								
							 | 
							
								  custom:          "{ keyword: '{{=$rule.keyword}}' }",
							 | 
						
						
						
							| 
								
							 | 
							
								  patternRequired: "{ missingPattern: '{{=$missingPattern}}' }",
							 | 
						
						
						
							| 
								
							 | 
							
								  switch:          "{ caseIndex: {{=$caseIndex}} }",
							 | 
						
						
						
							| 
								
							 | 
							
								  _formatLimit:    "{ comparison: {{=$opExpr}}, limit: {{#def.schemaValueQS}}, exclusive: {{=$exclusive}} }",
							 | 
						
						
						
							| 
								
							 | 
							
								  _formatExclusiveLimit: "{}"
							 | 
						
						
						
							| 
								
							 | 
							
								} #}}
							 |