{"version":3,"file":"base-IIwIDaqc.js","names":["Breakpoint","Breakpoint","$","$","Cookies","$","$","$","$","Cookies","$","simpleParallax","Alpine","$"],"sources":["../../node_modules/jquery-validation/dist/jquery.validate.js","../../static/js/libs/bootstrap/transition.js","../../static/js/libs/bootstrap/alert.js","../../static/js/libs/bootstrap/collapse.js","../../static/js/libs/bootstrap/dropdown.js","../../static/js/libs/bootstrap/modal.js","../../static/js/libs/bootstrap/tab.js","../../static/js/libs/bootstrap/tooltip.js","../../static/js/libs/bootstrap/popover.js","../../node_modules/bootstrap-breakpoints/src/bootstrap-breakpoints.js","../../static/js/addons/responsive.js","../../static/js/addons/header.js","../../static/js/addons/accordion.js","../../static/js/addons/blog.js","../../node_modules/js-cookie/dist/js.cookie.mjs","../../static/js/addons/cookie-policy.js","../../node_modules/jquery-validation/dist/additional-methods.js","../../static/js/addons/forms/index.js","../../static/js/addons/localscroll.js","../../static/js/addons/modal.js","../../static/js/addons/search.js","../../static/js/addons/tabs.js","../../node_modules/simple-parallax-js/dist/simpleParallax.min.js","../../static/js/addons/parallax.js","../../static/js/base.js"],"sourcesContent":["/*!\n * jQuery Validation Plugin v1.22.1\n *\n * https://jqueryvalidation.org/\n *\n * Copyright (c) 2026 Jörn Zaefferer\n * Released under the MIT license\n */\n(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n$.extend( $.fn, {\n\n\t// https://jqueryvalidation.org/validate/\n\tvalidate: function( options ) {\n\n\t\t// If nothing is selected, return nothing; can't chain anyway\n\t\tif ( !this.length ) {\n\t\t\tif ( options && options.debug && window.console ) {\n\t\t\t\tconsole.warn( \"Nothing selected, can't validate, returning nothing.\" );\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Check if a validator for this form was already created\n\t\tvar validator = $.data( this[ 0 ], \"validator\" );\n\t\tif ( validator ) {\n\t\t\treturn validator;\n\t\t}\n\n\t\t// Add novalidate tag if HTML5.\n\t\tthis.attr( \"novalidate\", \"novalidate\" );\n\n\t\tvalidator = new $.validator( options, this[ 0 ] );\n\t\t$.data( this[ 0 ], \"validator\", validator );\n\n\t\tif ( validator.settings.onsubmit ) {\n\n\t\t\tthis.on( \"click.validate\", \":submit\", function( event ) {\n\n\t\t\t\t// Track the used submit button to properly handle scripted\n\t\t\t\t// submits later.\n\t\t\t\tvalidator.submitButton = event.currentTarget;\n\n\t\t\t\t// Allow suppressing validation by adding a cancel class to the submit button\n\t\t\t\tif ( $( this ).hasClass( \"cancel\" ) ) {\n\t\t\t\t\tvalidator.cancelSubmit = true;\n\t\t\t\t}\n\n\t\t\t\t// Allow suppressing validation by adding the html5 formnovalidate attribute to the submit button\n\t\t\t\tif ( $( this ).attr( \"formnovalidate\" ) !== undefined ) {\n\t\t\t\t\tvalidator.cancelSubmit = true;\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// Validate the form on submit\n\t\t\tthis.on( \"submit.validate\", function( event ) {\n\t\t\t\tif ( validator.settings.debug ) {\n\n\t\t\t\t\t// Prevent form submit to be able to see console output\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\n\t\t\t\tfunction handle() {\n\t\t\t\t\tvar hidden, result;\n\n\t\t\t\t\t// Insert a hidden input as a replacement for the missing submit button\n\t\t\t\t\t// The hidden input is inserted in two cases:\n\t\t\t\t\t//   - A user defined a `submitHandler`\n\t\t\t\t\t//   - There was a pending request due to `remote` method and `stopRequest()`\n\t\t\t\t\t//     was called to submit the form in case it's valid\n\t\t\t\t\tif ( validator.submitButton && ( validator.settings.submitHandler || validator.formSubmitted ) ) {\n\t\t\t\t\t\thidden = $( \"<input type='hidden'/>\" )\n\t\t\t\t\t\t\t.attr( \"name\", validator.submitButton.name )\n\t\t\t\t\t\t\t.val( $( validator.submitButton ).val() )\n\t\t\t\t\t\t\t.appendTo( validator.currentForm );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( validator.settings.submitHandler && !validator.settings.debug ) {\n\t\t\t\t\t\tresult = validator.settings.submitHandler.call( validator, validator.currentForm, event );\n\t\t\t\t\t\tif ( hidden ) {\n\n\t\t\t\t\t\t\t// And clean up afterwards; thanks to no-block-scope, hidden can be referenced\n\t\t\t\t\t\t\thidden.remove();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( result !== undefined ) {\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\t// Prevent submit for invalid forms or custom submit handlers\n\t\t\t\tif ( validator.cancelSubmit ) {\n\t\t\t\t\tvalidator.cancelSubmit = false;\n\t\t\t\t\treturn handle();\n\t\t\t\t}\n\t\t\t\tif ( validator.form() ) {\n\t\t\t\t\tif ( validator.pendingRequest ) {\n\t\t\t\t\t\tvalidator.formSubmitted = true;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn handle();\n\t\t\t\t} else {\n\t\t\t\t\tvalidator.focusInvalid();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn validator;\n\t},\n\n\t// https://jqueryvalidation.org/valid/\n\tvalid: function() {\n\t\tvar valid, validator, errorList;\n\n\t\tif ( $( this[ 0 ] ).is( \"form\" ) ) {\n\t\t\tvalid = this.validate().form();\n\t\t} else {\n\t\t\terrorList = [];\n\t\t\tvalid = true;\n\t\t\tvalidator = $( this[ 0 ].form ).validate();\n\t\t\tthis.each( function() {\n\t\t\t\tvalid = validator.element( this ) && valid;\n\t\t\t\tif ( !valid ) {\n\t\t\t\t\terrorList = errorList.concat( validator.errorList );\n\t\t\t\t}\n\t\t\t} );\n\t\t\tvalidator.errorList = errorList;\n\t\t}\n\t\treturn valid;\n\t},\n\n\t// https://jqueryvalidation.org/rules/\n\trules: function( command, argument ) {\n\t\tvar element = this[ 0 ],\n\t\t\tisContentEditable = typeof this.attr( \"contenteditable\" ) !== \"undefined\" && this.attr( \"contenteditable\" ) !== \"false\",\n\t\t\tsettings, staticRules, existingRules, data, param, filtered;\n\n\t\t// If nothing is selected, return empty object; can't chain anyway\n\t\tif ( element == null ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !element.form && isContentEditable ) {\n\t\t\telement.form = this.closest( \"form\" )[ 0 ];\n\t\t\telement.name = this.attr( \"name\" );\n\t\t}\n\n\t\tif ( element.form == null ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( command ) {\n\t\t\tsettings = $.data( element.form, \"validator\" ).settings;\n\t\t\tstaticRules = settings.rules;\n\t\t\texistingRules = $.validator.staticRules( element );\n\t\t\tswitch ( command ) {\n\t\t\tcase \"add\":\n\t\t\t\t$.extend( existingRules, $.validator.normalizeRule( argument ) );\n\n\t\t\t\t// Remove messages from rules, but allow them to be set separately\n\t\t\t\tdelete existingRules.messages;\n\t\t\t\tstaticRules[ element.name ] = existingRules;\n\t\t\t\tif ( argument.messages ) {\n\t\t\t\t\tsettings.messages[ element.name ] = $.extend( settings.messages[ element.name ], argument.messages );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"remove\":\n\t\t\t\tif ( !argument ) {\n\t\t\t\t\tdelete staticRules[ element.name ];\n\t\t\t\t\treturn existingRules;\n\t\t\t\t}\n\t\t\t\tfiltered = {};\n\t\t\t\t$.each( argument.split( /\\s/ ), function( index, method ) {\n\t\t\t\t\tfiltered[ method ] = existingRules[ method ];\n\t\t\t\t\tdelete existingRules[ method ];\n\t\t\t\t} );\n\t\t\t\treturn filtered;\n\t\t\t}\n\t\t}\n\n\t\tdata = $.validator.normalizeRules(\n\t\t$.extend(\n\t\t\t{},\n\t\t\t$.validator.classRules( element ),\n\t\t\t$.validator.attributeRules( element ),\n\t\t\t$.validator.dataRules( element ),\n\t\t\t$.validator.staticRules( element )\n\t\t), element );\n\n\t\t// Make sure required is at front\n\t\tif ( data.required ) {\n\t\t\tparam = data.required;\n\t\t\tdelete data.required;\n\t\t\tdata = $.extend( { required: param }, data );\n\t\t}\n\n\t\t// Make sure remote is at back\n\t\tif ( data.remote ) {\n\t\t\tparam = data.remote;\n\t\t\tdelete data.remote;\n\t\t\tdata = $.extend( data, { remote: param } );\n\t\t}\n\n\t\treturn data;\n\t}\n} );\n\n// JQuery trim is deprecated, provide a trim method based on String.prototype.trim\nvar trim = function( str ) {\n\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/trim#Polyfill\n\treturn str.replace( /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, \"\" );\n};\n\n// Custom selectors\n$.extend( $.expr.pseudos || $.expr[ \":\" ], {\t\t// '|| $.expr[ \":\" ]' here enables backwards compatibility to jQuery 1.7. Can be removed when dropping jQ 1.7.x support\n\n\t// https://jqueryvalidation.org/blank-selector/\n\tblank: function( a ) {\n\t\treturn !trim( \"\" + $( a ).val() );\n\t},\n\n\t// https://jqueryvalidation.org/filled-selector/\n\tfilled: function( a ) {\n\t\tvar val = $( a ).val();\n\t\treturn val !== null && !!trim( \"\" + val );\n\t},\n\n\t// https://jqueryvalidation.org/unchecked-selector/\n\tunchecked: function( a ) {\n\t\treturn !$( a ).prop( \"checked\" );\n\t}\n} );\n\n// Constructor for validator\n$.validator = function( options, form ) {\n\tthis.settings = $.extend( true, {}, $.validator.defaults, options );\n\tthis.currentForm = form;\n\tthis.init();\n};\n\n// https://jqueryvalidation.org/jQuery.validator.format/\n$.validator.format = function( source, params ) {\n\tif ( arguments.length === 1 ) {\n\t\treturn function() {\n\t\t\tvar args = $.makeArray( arguments );\n\t\t\targs.unshift( source );\n\t\t\treturn $.validator.format.apply( this, args );\n\t\t};\n\t}\n\tif ( params === undefined ) {\n\t\treturn source;\n\t}\n\tif ( arguments.length > 2 && params.constructor !== Array  ) {\n\t\tparams = $.makeArray( arguments ).slice( 1 );\n\t}\n\tif ( params.constructor !== Array ) {\n\t\tparams = [ params ];\n\t}\n\t$.each( params, function( i, n ) {\n\t\tsource = source.replace( new RegExp( \"\\\\{\" + i + \"\\\\}\", \"g\" ), function() {\n\t\t\treturn n;\n\t\t} );\n\t} );\n\treturn source;\n};\n\n$.extend( $.validator, {\n\n\tdefaults: {\n\t\tmessages: {},\n\t\tgroups: {},\n\t\trules: {},\n\t\terrorClass: \"error\",\n\t\tpendingClass: \"pending\",\n\t\tvalidClass: \"valid\",\n\t\terrorElement: \"label\",\n\t\tfocusCleanup: false,\n\t\tfocusInvalid: true,\n\t\tariaDescribedByCleanup: false,\n\t\terrorContainer: $( [] ),\n\t\terrorLabelContainer: $( [] ),\n\t\tonsubmit: true,\n\t\tignore: \":hidden\",\n\t\tignoreTitle: false,\n\t\tcustomElements: [],\n\t\tonfocusin: function( element ) {\n\t\t\tthis.lastActive = element;\n\n\t\t\t// Hide error label and remove error class on focus if enabled\n\t\t\tif ( this.settings.focusCleanup ) {\n\t\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t\tthis.hideThese( this.errorsFor( element ) );\n\t\t\t}\n\t\t},\n\t\tonfocusout: function( element ) {\n\t\t\tif ( !this.checkable( element ) && ( element.name in this.submitted || !this.optional( element ) ) ) {\n\t\t\t\tthis.element( element );\n\t\t\t}\n\t\t},\n\t\tonkeyup: function( element, event ) {\n\n\t\t\t// Avoid revalidate the field when pressing one of the following keys\n\t\t\t// Shift       => 16\n\t\t\t// Ctrl        => 17\n\t\t\t// Alt         => 18\n\t\t\t// Caps lock   => 20\n\t\t\t// End         => 35\n\t\t\t// Home        => 36\n\t\t\t// Left arrow  => 37\n\t\t\t// Up arrow    => 38\n\t\t\t// Right arrow => 39\n\t\t\t// Down arrow  => 40\n\t\t\t// Insert      => 45\n\t\t\t// Num lock    => 144\n\t\t\t// AltGr key   => 225\n\t\t\tvar excludedKeys = [\n\t\t\t\t16, 17, 18, 20, 35, 36, 37,\n\t\t\t\t38, 39, 40, 45, 144, 225\n\t\t\t];\n\n\t\t\tif ( event.which === 9 && this.elementValue( element ) === \"\" || $.inArray( event.keyCode, excludedKeys ) !== -1 ) {\n\t\t\t\treturn;\n\t\t\t} else if ( element.name in this.submitted || element.name in this.invalid ) {\n\t\t\t\tthis.element( element );\n\t\t\t}\n\t\t},\n\t\tonclick: function( element ) {\n\n\t\t\t// Click on selects, radiobuttons and checkboxes\n\t\t\tif ( element.name in this.submitted ) {\n\t\t\t\tthis.element( element );\n\n\t\t\t// Or option elements, check parent select in that case\n\t\t\t} else if ( element.parentNode.name in this.submitted ) {\n\t\t\t\tthis.element( element.parentNode );\n\t\t\t}\n\t\t},\n\t\thighlight: function( element, errorClass, validClass ) {\n\t\t\tif ( element.type === \"radio\" ) {\n\t\t\t\tthis.findByName( element.name ).addClass( errorClass ).removeClass( validClass );\n\t\t\t} else {\n\t\t\t\t$( element ).addClass( errorClass ).removeClass( validClass );\n\t\t\t}\n\t\t},\n\t\tunhighlight: function( element, errorClass, validClass ) {\n\t\t\tif ( element.type === \"radio\" ) {\n\t\t\t\tthis.findByName( element.name ).removeClass( errorClass ).addClass( validClass );\n\t\t\t} else {\n\t\t\t\t$( element ).removeClass( errorClass ).addClass( validClass );\n\t\t\t}\n\t\t}\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.setDefaults/\n\tsetDefaults: function( settings ) {\n\t\t$.extend( $.validator.defaults, settings );\n\t},\n\n\tmessages: {\n\t\trequired: \"This field is required.\",\n\t\tremote: \"Please fix this field.\",\n\t\temail: \"Please enter a valid email address.\",\n\t\turl: \"Please enter a valid URL.\",\n\t\tdate: \"Please enter a valid date.\",\n\t\tdateISO: \"Please enter a valid date (ISO).\",\n\t\tnumber: \"Please enter a valid number.\",\n\t\tdigits: \"Please enter only digits.\",\n\t\tequalTo: \"Please enter the same value again.\",\n\t\tmaxlength: $.validator.format( \"Please enter no more than {0} characters.\" ),\n\t\tminlength: $.validator.format( \"Please enter at least {0} characters.\" ),\n\t\trangelength: $.validator.format( \"Please enter a value between {0} and {1} characters long.\" ),\n\t\trange: $.validator.format( \"Please enter a value between {0} and {1}.\" ),\n\t\tmax: $.validator.format( \"Please enter a value less than or equal to {0}.\" ),\n\t\tmin: $.validator.format( \"Please enter a value greater than or equal to {0}.\" ),\n\t\tstep: $.validator.format( \"Please enter a multiple of {0}.\" )\n\t},\n\n\tautoCreateRanges: false,\n\n\tprototype: {\n\n\t\tinit: function() {\n\t\t\tthis.labelContainer = $( this.settings.errorLabelContainer );\n\t\t\tthis.errorContext = this.labelContainer.length && this.labelContainer || $( this.currentForm );\n\t\t\tthis.containers = $( this.settings.errorContainer ).add( this.settings.errorLabelContainer );\n\t\t\tthis.submitted = {};\n\t\t\tthis.valueCache = {};\n\t\t\tthis.pendingRequest = 0;\n\t\t\tthis.pending = {};\n\t\t\tthis.invalid = {};\n\t\t\tthis.reset();\n\n\t\t\tvar currentForm = this.currentForm,\n\t\t\t\tgroups = ( this.groups = {} ),\n\t\t\t\trules;\n\t\t\t$.each( this.settings.groups, function( key, value ) {\n\t\t\t\tif ( typeof value === \"string\" ) {\n\t\t\t\t\tvalue = value.split( /\\s/ );\n\t\t\t\t}\n\t\t\t\t$.each( value, function( index, name ) {\n\t\t\t\t\tgroups[ name ] = key;\n\t\t\t\t} );\n\t\t\t} );\n\t\t\trules = this.settings.rules;\n\t\t\t$.each( rules, function( key, value ) {\n\t\t\t\trules[ key ] = $.validator.normalizeRule( value );\n\t\t\t} );\n\n\t\t\tfunction delegate( event ) {\n\t\t\t\tvar isContentEditable = typeof $( this ).attr( \"contenteditable\" ) !== \"undefined\" && $( this ).attr( \"contenteditable\" ) !== \"false\";\n\n\t\t\t\t// Set form expando on contenteditable\n\t\t\t\tif ( !this.form && isContentEditable ) {\n\t\t\t\t\tthis.form = $( this ).closest( \"form\" )[ 0 ];\n\t\t\t\t\tthis.name = $( this ).attr( \"name\" );\n\t\t\t\t}\n\n\t\t\t\t// Ignore the element if it belongs to another form. This will happen mainly\n\t\t\t\t// when setting the `form` attribute of an input to the id of another form.\n\t\t\t\tif ( currentForm !== this.form ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar validator = $.data( this.form, \"validator\" ),\n\t\t\t\t\teventType = \"on\" + event.type.replace( /^validate/, \"\" ),\n\t\t\t\t\tsettings = validator.settings;\n\t\t\t\tif ( settings[ eventType ] && !$( this ).is( settings.ignore ) ) {\n\t\t\t\t\tsettings[ eventType ].call( validator, this, event );\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar focusListeners = [ \":text\", \"[type='password']\", \"[type='file']\", \"select\", \"textarea\", \"[type='number']\", \"[type='search']\",\n\t\t\t\t\t\t\t\t\"[type='tel']\", \"[type='url']\", \"[type='email']\", \"[type='datetime']\", \"[type='date']\", \"[type='month']\",\n\t\t\t\t\t\t\t\t\"[type='week']\", \"[type='time']\", \"[type='datetime-local']\", \"[type='range']\", \"[type='color']\",\n\t\t\t\t\t\t\t\t\"[type='radio']\", \"[type='checkbox']\", \"[contenteditable]\", \"[type='button']\" ];\n\t\t\tvar clickListeners = [ \"select\", \"option\", \"[type='radio']\", \"[type='checkbox']\" ];\n\t\t\t$( this.currentForm )\n\t\t\t\t.on( \"focusin.validate focusout.validate keyup.validate\", focusListeners.concat( this.settings.customElements ).join( \", \" ), delegate )\n\n\t\t\t\t// Support: Chrome, oldIE\n\t\t\t\t// \"select\" is provided as event.target when clicking a option\n\t\t\t\t.on( \"click.validate\", clickListeners.concat( this.settings.customElements ).join( \", \" ), delegate );\n\n\t\t\tif ( this.settings.invalidHandler ) {\n\t\t\t\t$( this.currentForm ).on( \"invalid-form.validate\", this.settings.invalidHandler );\n\t\t\t}\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.form/\n\t\tform: function() {\n\t\t\tthis.checkForm();\n\t\t\t$.extend( this.submitted, this.errorMap );\n\t\t\tthis.invalid = $.extend( {}, this.errorMap );\n\t\t\tif ( !this.valid() ) {\n\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ] );\n\t\t\t}\n\t\t\tthis.showErrors();\n\t\t\treturn this.valid();\n\t\t},\n\n\t\tcheckForm: function() {\n\t\t\tthis.prepareForm();\n\t\t\tfor ( var i = 0, elements = ( this.currentElements = this.elements() ); elements[ i ]; i++ ) {\n\t\t\t\tthis.check( elements[ i ] );\n\t\t\t}\n\t\t\treturn this.valid();\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.element/\n\t\telement: function( element ) {\n\t\t\tvar cleanElement = this.clean( element ),\n\t\t\t\tcheckElement = this.validationTargetFor( cleanElement ),\n\t\t\t\tv = this,\n\t\t\t\tresult = true,\n\t\t\t\trs, group;\n\n\t\t\tif ( checkElement === undefined ) {\n\t\t\t\tdelete this.invalid[ cleanElement.name ];\n\t\t\t} else {\n\t\t\t\tthis.prepareElement( checkElement );\n\t\t\t\tthis.currentElements = $( checkElement );\n\n\t\t\t\t// If this element is grouped, then validate all group elements already\n\t\t\t\t// containing a value\n\t\t\t\tgroup = this.groups[ checkElement.name ];\n\t\t\t\tif ( group ) {\n\t\t\t\t\t$.each( this.groups, function( name, testgroup ) {\n\t\t\t\t\t\tif ( testgroup === group && name !== checkElement.name ) {\n\t\t\t\t\t\t\tcleanElement = v.validationTargetFor( v.clean( v.findByName( name ) ) );\n\n\t\t\t\t\t\t\t// Don't want to check fields if a user hasn't gotten to them yet\n\t\t\t\t\t\t\tif ( cleanElement && cleanElement.name in v.invalid ) {\n\t\t\t\t\t\t\t\tv.currentElements.pushStack( cleanElement );\n\t\t\t\t\t\t\t\tresult = v.check( cleanElement ) && result;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\trs = this.check( checkElement ) !== false;\n\t\t\t\tresult = result && rs;\n\t\t\t\tif ( rs ) {\n\t\t\t\t\tthis.invalid[ checkElement.name ] = false;\n\t\t\t\t} else {\n\t\t\t\t\tthis.invalid[ checkElement.name ] = true;\n\t\t\t\t}\n\n\t\t\t\tif ( !this.numberOfInvalids() ) {\n\n\t\t\t\t\t// Hide error containers on last error\n\t\t\t\t\tthis.toHide = this.toHide.add( this.containers );\n\t\t\t\t}\n\t\t\t\tthis.showErrors();\n\n\t\t\t\t// Add aria-invalid status for screen readers\n\t\t\t\t$( element ).attr( \"aria-invalid\", !rs );\n\t\t\t}\n\n\t\t\treturn result;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.showErrors/\n\t\tshowErrors: function( errors ) {\n\t\t\tif ( errors ) {\n\t\t\t\tvar validator = this;\n\n\t\t\t\t// Add items to error list and map\n\t\t\t\t$.extend( this.errorMap, errors );\n\t\t\t\tthis.errorList = $.map( this.errorMap, function( message, name ) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tmessage: message,\n\t\t\t\t\t\telement: validator.findByName( name )[ 0 ]\n\t\t\t\t\t};\n\t\t\t\t} );\n\n\t\t\t\t// Remove items from success list\n\t\t\t\tthis.successList = $.grep( this.successList, function( element ) {\n\t\t\t\t\treturn !( element.name in errors );\n\t\t\t\t} );\n\t\t\t}\n\t\t\tif ( this.settings.showErrors ) {\n\t\t\t\tthis.settings.showErrors.call( this, this.errorMap, this.errorList );\n\t\t\t} else {\n\t\t\t\tthis.defaultShowErrors();\n\t\t\t}\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.resetForm/\n\t\tresetForm: function() {\n\t\t\tif ( $.fn.resetForm ) {\n\t\t\t\t$( this.currentForm ).resetForm();\n\t\t\t}\n\t\t\tthis.invalid = {};\n\t\t\tthis.submitted = {};\n\t\t\tthis.prepareForm();\n\t\t\tthis.hideErrors();\n\t\t\tvar elements = this.elements()\n\t\t\t\t.removeData( \"previousValue\" )\n\t\t\t\t.removeAttr( \"aria-invalid\" );\n\n\t\t\tthis.resetElements( elements );\n\t\t},\n\n\t\tresetElements: function( elements ) {\n\t\t\tvar i;\n\n\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\tfor ( i = 0; elements[ i ]; i++ ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[ i ],\n\t\t\t\t\t\tthis.settings.errorClass, \"\" );\n\t\t\t\t\tthis.findByName( elements[ i ].name ).removeClass( this.settings.validClass );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\telements\n\t\t\t\t\t.removeClass( this.settings.errorClass )\n\t\t\t\t\t.removeClass( this.settings.validClass );\n\t\t\t}\n\t\t},\n\n\t\tnumberOfInvalids: function() {\n\t\t\treturn this.objectLength( this.invalid );\n\t\t},\n\n\t\tobjectLength: function( obj ) {\n\t\t\t/* jshint unused: false */\n\t\t\tvar count = 0,\n\t\t\t\ti;\n\t\t\tfor ( i in obj ) {\n\n\t\t\t\t// This check allows counting elements with empty error\n\t\t\t\t// message as invalid elements\n\t\t\t\tif ( obj[ i ] !== undefined && obj[ i ] !== null && obj[ i ] !== false ) {\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn count;\n\t\t},\n\n\t\thideErrors: function() {\n\t\t\tthis.hideThese( this.toHide );\n\t\t},\n\t\taddErrorAriaDescribedBy: function( element, error, updateGroupMembers ) {\n\t\t\tupdateGroupMembers = ( updateGroupMembers === undefined ) ? false : updateGroupMembers;\n\n\t\t\tvar errorID, v, group,\n\t\t\t\tdescribedBy = $( element ).attr( \"aria-describedby\" );\n\t\t\t\terrorID = error.attr( \"id\" );\n\n\t\t\t// Respect existing non-error aria-describedby\n\t\t\tif ( !describedBy ) {\n\t\t\t\tdescribedBy = errorID;\n\t\t\t} else if ( !describedBy.match( new RegExp( \"\\\\b\" + this.escapeCssMeta( errorID ) + \"\\\\b\" ) ) ) {\n\n\t\t\t\t// Add to end of list if not already present\n\t\t\t\tdescribedBy += \" \" + errorID;\n\t\t\t}\n\n\t\t\t$( element ).attr( \"aria-describedby\", describedBy );\n\n\t\t\tif ( updateGroupMembers ) {\n\n\t\t\t\t// If this element is grouped, then assign to all elements in the same group\n\t\t\t\tgroup = this.groups[ element.name ];\n\t\t\t\tif ( group ) {\n\t\t\t\t\tv = this;\n\t\t\t\t\t$.each( v.groups, function( name, testgroup ) {\n\t\t\t\t\t\tif ( testgroup === group ) {\n\t\t\t\t\t\t\tv.addErrorAriaDescribedBy( $( \"[name='\" + v.escapeCssMeta( name ) + \"']\", v.currentForm ), error, false );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tremoveErrorAriaDescribedBy: function( element, error ) {\n\n\t\t\tvar describedBy = $( element ).attr( \"aria-describedby\" ),\n\t\t\t\tdescribedByIds = describedBy.split( \" \" ),\n\t\t\t\terrorID = error.attr( \"id\" ),\n\t\t\t\tind = describedByIds.indexOf( errorID );\n\n\t\t\tif ( ind > -1 ) {\n\t\t\t\tdescribedByIds.splice( ind, 1 );\n\t\t\t}\n\n\t\t\tif ( describedByIds.length ) {\n\t\t\t\t$( element ).attr( \"aria-describedby\", describedByIds.join( \" \" ) );\n\t\t\t} else {\n\t\t\t\t$( element ).removeAttr( \"aria-describedby\" );\n\t\t\t}\n\n\t\t},\n\n\t\thideThese: function( errors ) {\n\n\t\t\tfor ( var i = 0; errors[ i ]; i++ ) {\n\t\t\t\tvar error = $( errors[ i ] ),\n\t\t\t\t\terrorID = error.attr( \"id\" ) ? this.escapeCssMeta( error.attr( \"id\" ) ) : undefined,\n\t\t\t\t\telement = ( errorID ) ? this.elements().filter( '[aria-describedby~=\"' + errorID + '\"]' ) : [];\n\n\t\t\t\tif ( this.settings.ariaDescribedByCleanup && element.length ) {\n\t\t\t\t\tthis.removeErrorAriaDescribedBy( element, error );\n\t\t\t\t}\n\n\t\t\t\tif ( !error.is( this.containers ) ) {\n\t\t\t\t\terror.text( \"\" );\n\t\t\t\t}\n\n\t\t\t\tthis.addWrapper( error ).hide();\n\t\t\t}\n\n\t\t},\n\n\t\tvalid: function() {\n\t\t\treturn this.size() === 0;\n\t\t},\n\n\t\tsize: function() {\n\t\t\treturn this.errorList.length;\n\t\t},\n\n\t\tfocusInvalid: function() {\n\t\t\tif ( this.settings.focusInvalid ) {\n\t\t\t\ttry {\n\t\t\t\t\t$( this.findLastActive() || this.errorList.length && this.errorList[ 0 ].element || [] )\n\t\t\t\t\t.filter( \":visible\" )\n\t\t\t\t\t.trigger( \"focus\" )\n\n\t\t\t\t\t// Manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find\n\t\t\t\t\t.trigger( \"focusin\" );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// Ignore IE throwing errors when focusing hidden elements\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tfindLastActive: function() {\n\t\t\tvar lastActive = this.lastActive;\n\t\t\treturn lastActive && $.grep( this.errorList, function( n ) {\n\t\t\t\treturn n.element.name === lastActive.name;\n\t\t\t} ).length === 1 && lastActive;\n\t\t},\n\n\t\telements: function() {\n\t\t\tvar validator = this,\n\t\t\t\trulesCache = {},\n\t\t\t\tselectors = [ \"input\", \"select\", \"textarea\", \"[contenteditable]\" ],\n\t\t\t\tformId = this.currentForm.getAttribute( \"id\" ),\n\t\t\t\telements;\n\n\t\t\t// Select all valid inputs inside the form (no submit or reset buttons)\n\t\t\telements = $( this.currentForm )\n\t\t\t.find( selectors.concat( this.settings.customElements ).join( \", \" ) )\n\t\t\t.not( \":submit, :reset, :image, :disabled\" )\n\t\t\t.not( this.settings.ignore );\n\n\t\t\t// If the form has an ID, also include elements outside the form that have\n\t\t\t// a form attribute pointing to this form\n\t\t\tif ( formId ) {\n\t\t\t\telements = elements.add(\n\t\t\t\t\t$( selectors.concat( this.settings.customElements ).join( \", \" ) )\n\t\t\t\t\t.filter( \"[form='\" + validator.escapeCssMeta( formId ) + \"']\" )\n\t\t\t\t\t.not( \":submit, :reset, :image, :disabled\" )\n\t\t\t\t\t.not( this.settings.ignore )\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn elements.filter( function() {\n\t\t\t\tvar name = this.name || $( this ).attr( \"name\" ); // For contenteditable\n\t\t\t\tvar isContentEditable = typeof $( this ).attr( \"contenteditable\" ) !== \"undefined\" && $( this ).attr( \"contenteditable\" ) !== \"false\";\n\n\t\t\t\tif ( !name && validator.settings.debug && window.console ) {\n\t\t\t\t\tconsole.error( \"%o has no name assigned\", this );\n\t\t\t\t}\n\n\t\t\t\t// Set form expando on contenteditable\n\t\t\t\tif ( isContentEditable ) {\n\t\t\t\t\tthis.form = $( this ).closest( \"form\" )[ 0 ];\n\t\t\t\t\tthis.name = name;\n\t\t\t\t}\n\n\t\t\t\t// Ignore elements that belong to other/nested forms\n\t\t\t\tif ( this.form !== validator.currentForm ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// Select only the first element for each name, and only those with rules specified\n\t\t\t\tif ( name in rulesCache || !validator.objectLength( $( this ).rules() ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\trulesCache[ name ] = true;\n\t\t\t\treturn true;\n\t\t\t} );\n\t\t},\n\n\t\tclean: function( selector ) {\n\t\t\treturn $( selector )[ 0 ];\n\t\t},\n\n\t\terrors: function() {\n\t\t\tvar errorClass = this.settings.errorClass.split( \" \" ).join( \".\" );\n\t\t\treturn $( this.settings.errorElement + \".\" + errorClass, this.errorContext );\n\t\t},\n\n\t\tresetInternals: function() {\n\t\t\tthis.successList = [];\n\t\t\tthis.errorList = [];\n\t\t\tthis.errorMap = {};\n\t\t\tthis.toShow = $( [] );\n\t\t\tthis.toHide = $( [] );\n\t\t},\n\n\t\treset: function() {\n\t\t\tthis.resetInternals();\n\t\t\tthis.currentElements = $( [] );\n\t\t},\n\n\t\tprepareForm: function() {\n\t\t\tthis.reset();\n\t\t\tthis.toHide = this.errors().add( this.containers );\n\t\t},\n\n\t\tprepareElement: function( element ) {\n\t\t\tthis.reset();\n\t\t\tthis.toHide = this.errorsFor( element );\n\t\t},\n\n\t\telementValue: function( element ) {\n\t\t\tvar $element = $( element ),\n\t\t\t\ttype = element.type,\n\t\t\t\tisContentEditable = typeof $element.attr( \"contenteditable\" ) !== \"undefined\" && $element.attr( \"contenteditable\" ) !== \"false\",\n\t\t\t\tval, idx;\n\n\t\t\tif ( type === \"radio\" || type === \"checkbox\" ) {\n\t\t\t\treturn this.findByName( element.name ).filter( \":checked\" ).val();\n\t\t\t} else if ( type === \"number\" && typeof element.validity !== \"undefined\" ) {\n\t\t\t\treturn element.validity.badInput ? \"NaN\" : $element.val();\n\t\t\t}\n\n\t\t\tif ( isContentEditable ) {\n\t\t\t\tval = $element.text();\n\t\t\t} else {\n\t\t\t\tval = $element.val();\n\t\t\t}\n\n\t\t\tif ( type === \"file\" ) {\n\n\t\t\t\t// Modern browser (chrome & safari)\n\t\t\t\tif ( val.substr( 0, 12 ) === \"C:\\\\fakepath\\\\\" ) {\n\t\t\t\t\treturn val.substr( 12 );\n\t\t\t\t}\n\n\t\t\t\t// Legacy browsers\n\t\t\t\t// Unix-based path\n\t\t\t\tidx = val.lastIndexOf( \"/\" );\n\t\t\t\tif ( idx >= 0 ) {\n\t\t\t\t\treturn val.substr( idx + 1 );\n\t\t\t\t}\n\n\t\t\t\t// Windows-based path\n\t\t\t\tidx = val.lastIndexOf( \"\\\\\" );\n\t\t\t\tif ( idx >= 0 ) {\n\t\t\t\t\treturn val.substr( idx + 1 );\n\t\t\t\t}\n\n\t\t\t\t// Just the file name\n\t\t\t\treturn val;\n\t\t\t}\n\n\t\t\tif ( typeof val === \"string\" ) {\n\t\t\t\treturn val.replace( /\\r/g, \"\" );\n\t\t\t}\n\t\t\treturn val;\n\t\t},\n\n\t\tcheck: function( element ) {\n\t\t\telement = this.validationTargetFor( this.clean( element ) );\n\n\t\t\tvar rules = $( element ).rules(),\n\t\t\t\trulesCount = $.map( rules, function( n, i ) {\n\t\t\t\t\treturn i;\n\t\t\t\t} ).length,\n\t\t\t\tdependencyMismatch = false,\n\t\t\t\tval = this.elementValue( element ),\n\t\t\t\tresult, method, rule, normalizer;\n\n\t\t\t// Abort any pending Ajax request from a previous call to this method.\n\t\t\tthis.abortRequest( element );\n\n\t\t\t// Prioritize the local normalizer defined for this element over the global one\n\t\t\t// if the former exists, otherwise user the global one in case it exists.\n\t\t\tif ( typeof rules.normalizer === \"function\" ) {\n\t\t\t\tnormalizer = rules.normalizer;\n\t\t\t} else if (\ttypeof this.settings.normalizer === \"function\" ) {\n\t\t\t\tnormalizer = this.settings.normalizer;\n\t\t\t}\n\n\t\t\t// If normalizer is defined, then call it to retreive the changed value instead\n\t\t\t// of using the real one.\n\t\t\t// Note that `this` in the normalizer is `element`.\n\t\t\tif ( normalizer ) {\n\t\t\t\tval = normalizer.call( element, val );\n\n\t\t\t\t// Delete the normalizer from rules to avoid treating it as a pre-defined method.\n\t\t\t\tdelete rules.normalizer;\n\t\t\t}\n\n\t\t\tfor ( method in rules ) {\n\t\t\t\trule = { method: method, parameters: rules[ method ] };\n\t\t\t\ttry {\n\t\t\t\t\tresult = $.validator.methods[ method ].call( this, val, element, rule.parameters );\n\n\t\t\t\t\t// If a method indicates that the field is optional and therefore valid,\n\t\t\t\t\t// don't mark it as valid when there are no other rules\n\t\t\t\t\tif ( result === \"dependency-mismatch\" && rulesCount === 1 ) {\n\t\t\t\t\t\tdependencyMismatch = true;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tdependencyMismatch = false;\n\n\t\t\t\t\tif ( result === \"pending\" ) {\n\t\t\t\t\t\tthis.toHide = this.toHide.not( this.errorsFor( element ) );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !result ) {\n\t\t\t\t\t\tthis.formatAndAdd( element, rule );\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} catch ( e ) {\n\t\t\t\t\tif ( this.settings.debug && window.console ) {\n\t\t\t\t\t\tconsole.log( \"Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\", e );\n\t\t\t\t\t}\n\t\t\t\t\tif ( e instanceof TypeError ) {\n\t\t\t\t\t\te.message += \".  Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\";\n\t\t\t\t\t}\n\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( dependencyMismatch ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( this.objectLength( rules ) ) {\n\t\t\t\tthis.successList.push( element );\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t// Return the custom message for the given element and validation method\n\t\t// specified in the element's HTML5 data attribute\n\t\t// return the generic message if present and no method specific message is present\n\t\tcustomDataMessage: function( element, method ) {\n\t\t\treturn $( element ).data( \"msg\" + method.charAt( 0 ).toUpperCase() +\n\t\t\t\tmethod.substring( 1 ).toLowerCase() ) || $( element ).data( \"msg\" );\n\t\t},\n\n\t\t// Return the custom message for the given element name and validation method\n\t\tcustomMessage: function( name, method ) {\n\t\t\tvar m = this.settings.messages[ name ];\n\t\t\treturn m && ( m.constructor === String ? m : m[ method ] );\n\t\t},\n\n\t\t// Return the first defined argument, allowing empty strings\n\t\tfindDefined: function() {\n\t\t\tfor ( var i = 0; i < arguments.length; i++ ) {\n\t\t\t\tif ( arguments[ i ] !== undefined ) {\n\t\t\t\t\treturn arguments[ i ];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\n\t\t// The second parameter 'rule' used to be a string, and extended to an object literal\n\t\t// of the following form:\n\t\t// rule = {\n\t\t//     method: \"method name\",\n\t\t//     parameters: \"the given method parameters\"\n\t\t// }\n\t\t//\n\t\t// The old behavior still supported, kept to maintain backward compatibility with\n\t\t// old code, and will be removed in the next major release.\n\t\tdefaultMessage: function( element, rule ) {\n\t\t\tif ( typeof rule === \"string\" ) {\n\t\t\t\trule = { method: rule };\n\t\t\t}\n\n\t\t\tvar message = this.findDefined(\n\t\t\t\t\tthis.customMessage( element.name, rule.method ),\n\t\t\t\t\tthis.customDataMessage( element, rule.method ),\n\n\t\t\t\t\t// 'title' is never undefined, so handle empty string as undefined\n\t\t\t\t\t!this.settings.ignoreTitle && element.title || undefined,\n\t\t\t\t\t$.validator.messages[ rule.method ],\n\t\t\t\t\t\"<strong>Warning: No message defined for \" + element.name + \"</strong>\"\n\t\t\t\t),\n\t\t\t\ttheregex = /\\$?\\{(\\d+)\\}/g;\n\t\t\tif ( typeof message === \"function\" ) {\n\t\t\t\tmessage = message.call( this, rule.parameters, element );\n\t\t\t} else if ( theregex.test( message ) ) {\n\t\t\t\tmessage = $.validator.format( message.replace( theregex, \"{$1}\" ), rule.parameters );\n\t\t\t}\n\n\t\t\treturn message;\n\t\t},\n\n\t\tformatAndAdd: function( element, rule ) {\n\t\t\tvar message = this.defaultMessage( element, rule );\n\n\t\t\tthis.errorList.push( {\n\t\t\t\tmessage: message,\n\t\t\t\telement: element,\n\t\t\t\tmethod: rule.method\n\t\t\t} );\n\n\t\t\tthis.errorMap[ element.name ] = message;\n\t\t\tthis.submitted[ element.name ] = message;\n\t\t},\n\n\t\taddWrapper: function( toToggle ) {\n\t\t\tif ( this.settings.wrapper ) {\n\t\t\t\ttoToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );\n\t\t\t}\n\t\t\treturn toToggle;\n\t\t},\n\n\t\tdefaultShowErrors: function() {\n\t\t\tvar i, elements, error;\n\n\t\t\tfor ( i = 0; this.errorList[ i ]; i++ ) {\n\t\t\t\terror = this.errorList[ i ];\n\t\t\t\tif ( this.settings.highlight ) {\n\t\t\t\t\tthis.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t\tthis.showLabel( error.element, error.message );\n\t\t\t}\n\n\t\t\tif ( this.errorList.length ) {\n\t\t\t\tthis.toShow = this.toShow.add( this.containers );\n\t\t\t}\n\n\t\t\tif ( this.settings.success ) {\n\t\t\t\tfor ( i = 0; this.successList[ i ]; i++ ) {\n\t\t\t\t\tthis.showLabel( this.successList[ i ] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\tfor ( i = 0, elements = this.validElements(); elements[ i ]; i++ ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[ i ], this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.toHide = this.toHide.not( this.toShow );\n\t\t\tthis.hideErrors();\n\t\t\tthis.addWrapper( this.toShow ).show();\n\t\t},\n\n\t\tvalidElements: function() {\n\t\t\treturn this.currentElements.not( this.invalidElements() );\n\t\t},\n\n\t\tinvalidElements: function() {\n\t\t\treturn $( this.errorList ).map( function() {\n\t\t\t\treturn this.element;\n\t\t\t} );\n\t\t},\n\n\t\tshowLabel: function( element, message ) {\n\t\t\tvar place,\n\t\t\t\terror = this.errorsFor( element ),\n\t\t\t\telementID = this.idOrName( element ),\n\t\t\t\tdescribedBy = $( element ).attr( \"aria-describedby\" );\n\n\t\t\tif ( error.length ) {\n\n\t\t\t\t// Non-label error exists but is not currently associated with element via aria-describedby\n\t\t\t\tif ( error.closest( \"label[for='\" + this.escapeCssMeta( elementID ) + \"']\" ).length === 0 && ( describedBy === undefined || describedBy.split( \" \" ).indexOf( error.attr( \"id\" ) ) === -1 ) ) {\n\t\t\t\t\tthis.addErrorAriaDescribedBy( element, error, true );\n\t\t\t\t}\n\n\t\t\t\t// Refresh error/success class\n\t\t\t\terror.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );\n\n\t\t\t\t// Replace message on existing label\n\t\t\t\tif ( this.settings && this.settings.escapeHtml ) {\n\t\t\t\t\terror.text( message || \"\" );\n\t\t\t\t} else {\n\t\t\t\t\terror.html( message || \"\" );\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Create error element\n\t\t\t\terror = $( \"<\" + this.settings.errorElement + \">\" )\n\t\t\t\t\t.attr( \"id\", elementID + \"-error\" )\n\t\t\t\t\t.addClass( this.settings.errorClass );\n\n\t\t\t\tif ( this.settings && this.settings.escapeHtml ) {\n\t\t\t\t\terror.text( message || \"\" );\n\t\t\t\t} else {\n\t\t\t\t\terror.html( message || \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Maintain reference to the element to be placed into the DOM\n\t\t\t\tplace = error;\n\t\t\t\tif ( this.settings.wrapper ) {\n\n\t\t\t\t\t// Make sure the element is visible, even in IE\n\t\t\t\t\t// actually showing the wrapped element is handled elsewhere\n\t\t\t\t\tplace = error.hide().show().wrap( \"<\" + this.settings.wrapper + \"/>\" ).parent();\n\t\t\t\t}\n\t\t\t\tif ( this.labelContainer.length ) {\n\t\t\t\t\tthis.labelContainer.append( place );\n\t\t\t\t} else if ( this.settings.errorPlacement ) {\n\t\t\t\t\tthis.settings.errorPlacement.call( this, place, $( element ) );\n\t\t\t\t} else {\n\t\t\t\t\tplace.insertAfter( element );\n\t\t\t\t}\n\n\t\t\t\t// Link error back to the element\n\t\t\t\tif ( error.is( \"label\" ) ) {\n\n\t\t\t\t\t// If the error is a label, then associate using 'for'\n\t\t\t\t\terror.attr( \"for\", elementID );\n\n\t\t\t\t// If the element is not a child of an associated label, then it's necessary\n\t\t\t\t// to explicitly apply aria-describedby\n\t\t\t\t} else if ( error.parents( \"label[for='\" + this.escapeCssMeta( elementID ) + \"']\" ).length === 0 ) {\n\t\t\t\t\tthis.addErrorAriaDescribedBy( element, error, true );\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( !message && this.settings.success ) {\n\t\t\t\terror.text( \"\" );\n\t\t\t\tif ( typeof this.settings.success === \"string\" ) {\n\t\t\t\t\terror.addClass( this.settings.success );\n\t\t\t\t} else {\n\t\t\t\t\tthis.settings.success( error, element );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.toShow = this.toShow.add( error );\n\t\t},\n\n\t\terrorsFor: function( element ) {\n\t\t\tvar name = this.escapeCssMeta( this.idOrName( element ) ),\n\t\t\t\tdescriber = $( element ).attr( \"aria-describedby\" ),\n\t\t\t\tselector = \"label[for='\" + name + \"'], label[for='\" + name + \"'] *\";\n\n\t\t\t// 'aria-describedby' should directly reference the error element\n\t\t\tif ( describer ) {\n\t\t\t\tselector = selector + \", #\" + this.escapeCssMeta( describer )\n\t\t\t\t\t.replace( /\\s+/g, \", #\" );\n\t\t\t}\n\n\t\t\t// There may be hidden error elements not currently associated via aria-describedby (if ariaDescribedByCleanup is true)\n\t\t\tselector = selector + \", #\" + name + \"-error\";\n\n\t\t\treturn this\n\t\t\t\t.errors()\n\t\t\t\t.filter( selector );\n\t\t},\n\n\t\t// See https://api.jquery.com/category/selectors/, for CSS\n\t\t// meta-characters that should be escaped in order to be used with JQuery\n\t\t// as a literal part of a name/id or any selector.\n\t\tescapeCssMeta: function( string ) {\n\t\t\tif ( string === undefined ) {\n\t\t\t\treturn \"\";\n\t\t\t}\n\n\t\t\treturn string.replace( /([\\\\!\"#$%&'()*+,./:;<=>?@\\[\\]^`{|}~])/g, \"\\\\$1\" );\n\t\t},\n\n\t\tidOrName: function( element ) {\n\t\t\treturn this.groups[ element.name ] || ( this.checkable( element ) ? element.name : element.id || element.name );\n\t\t},\n\n\t\tvalidationTargetFor: function( element ) {\n\n\t\t\t// If radio/checkbox, validate first element in group instead\n\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\telement = this.findByName( element.name );\n\t\t\t}\n\n\t\t\t// Always apply ignore filter\n\t\t\treturn $( element ).not( this.settings.ignore )[ 0 ];\n\t\t},\n\n\t\tcheckable: function( element ) {\n\t\t\treturn ( /radio|checkbox/i ).test( element.type );\n\t\t},\n\n\t\tfindByName: function( name ) {\n\t\t\tvar formId = this.currentForm.getAttribute( \"id\" ),\n\t\t\t\tselector = \"[name='\" + this.escapeCssMeta( name ) + \"']\",\n\t\t\t\telements = $( this.currentForm ).find( selector );\n\n\t\t\t// If the form has an ID, also include elements outside the form that have\n\t\t\t// a form attribute pointing to this form\n\t\t\tif ( formId ) {\n\t\t\t\telements = elements.add(\n\t\t\t\t\t$( selector )\n\t\t\t\t\t.filter( \"[form='\" + this.escapeCssMeta( formId ) + \"']\" )\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn elements;\n\t\t},\n\n\t\tgetLength: function( value, element ) {\n\t\t\tswitch ( element.nodeName.toLowerCase() ) {\n\t\t\tcase \"select\":\n\t\t\t\treturn $( \"option:selected\", element ).length;\n\t\t\tcase \"input\":\n\t\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\t\treturn this.findByName( element.name ).filter( \":checked\" ).length;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn value.length;\n\t\t},\n\n\t\tdepend: function( param, element ) {\n\t\t\treturn this.dependTypes[ typeof param ] ? this.dependTypes[ typeof param ]( param, element ) : true;\n\t\t},\n\n\t\tdependTypes: {\n\t\t\t\"boolean\": function( param ) {\n\t\t\t\treturn param;\n\t\t\t},\n\t\t\t\"string\": function( param, element ) {\n\t\t\t\treturn !!$( param, element.form ).length;\n\t\t\t},\n\t\t\t\"function\": function( param, element ) {\n\t\t\t\treturn param( element );\n\t\t\t}\n\t\t},\n\n\t\toptional: function( element ) {\n\t\t\tvar val = this.elementValue( element );\n\t\t\treturn !$.validator.methods.required.call( this, val, element ) && \"dependency-mismatch\";\n\t\t},\n\n\t\telementAjaxPort: function( element ) {\n\t\t\treturn \"validate\" + element.name;\n\t\t},\n\n\t\tstartRequest: function( element ) {\n\t\t\tif ( !this.pending[ element.name ] ) {\n\t\t\t\tthis.pendingRequest++;\n\t\t\t\t$( element ).addClass( this.settings.pendingClass );\n\t\t\t\tthis.pending[ element.name ] = true;\n\t\t\t}\n\t\t},\n\n\t\tstopRequest: function( element, valid ) {\n\t\t\tthis.pendingRequest--;\n\n\t\t\t// Sometimes synchronization fails, make sure pendingRequest is never < 0\n\t\t\tif ( this.pendingRequest < 0 ) {\n\t\t\t\tthis.pendingRequest = 0;\n\t\t\t}\n\t\t\tdelete this.pending[ element.name ];\n\t\t\t$( element ).removeClass( this.settings.pendingClass );\n\t\t\tif ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() && this.pendingRequest === 0 ) {\n\t\t\t\t$( this.currentForm ).trigger( \"submit\" );\n\n\t\t\t\t// Remove the hidden input that was used as a replacement for the\n\t\t\t\t// missing submit button. The hidden input is added by `handle()`\n\t\t\t\t// to ensure that the value of the used submit button is passed on\n\t\t\t\t// for scripted submits triggered by this method\n\t\t\t\tif ( this.submitButton ) {\n\t\t\t\t\t$( \"input:hidden[name='\" + this.submitButton.name + \"']\", this.currentForm ).remove();\n\t\t\t\t}\n\n\t\t\t\tthis.formSubmitted = false;\n\t\t\t} else if ( !valid && this.pendingRequest === 0 && this.formSubmitted ) {\n\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ] );\n\t\t\t\tthis.formSubmitted = false;\n\t\t\t}\n\t\t},\n\n\t\tabortRequest: function( element ) {\n\t\t\tvar port;\n\n\t\t\tif ( this.pending[ element.name ] ) {\n\t\t\t\tport = this.elementAjaxPort( element );\n\t\t\t\t$.ajaxAbort( port );\n\n\t\t\t\tthis.pendingRequest--;\n\n\t\t\t\t// Sometimes synchronization fails, make sure pendingRequest is never < 0\n\t\t\t\tif ( this.pendingRequest < 0 ) {\n\t\t\t\t\tthis.pendingRequest = 0;\n\t\t\t\t}\n\n\t\t\t\tdelete this.pending[ element.name ];\n\t\t\t\t$( element ).removeClass( this.settings.pendingClass );\n\t\t\t}\n\t\t},\n\n\t\tpreviousValue: function( element, method ) {\n\t\t\tmethod = typeof method === \"string\" && method || \"remote\";\n\n\t\t\treturn $.data( element, \"previousValue\" ) || $.data( element, \"previousValue\", {\n\t\t\t\told: null,\n\t\t\t\tvalid: true,\n\t\t\t\tmessage: this.defaultMessage( element, { method: method } )\n\t\t\t} );\n\t\t},\n\n\t\t// Cleans up all forms and elements, removes validator-specific events\n\t\tdestroy: function() {\n\t\t\tthis.resetForm();\n\n\t\t\t$( this.currentForm )\n\t\t\t\t.off( \".validate\" )\n\t\t\t\t.removeData( \"validator\" )\n\t\t\t\t.find( \".validate-equalTo-blur\" )\n\t\t\t\t\t.off( \".validate-equalTo\" )\n\t\t\t\t\t.removeClass( \"validate-equalTo-blur\" )\n\t\t\t\t.find( \".validate-lessThan-blur\" )\n\t\t\t\t\t.off( \".validate-lessThan\" )\n\t\t\t\t\t.removeClass( \"validate-lessThan-blur\" )\n\t\t\t\t.find( \".validate-lessThanEqual-blur\" )\n\t\t\t\t\t.off( \".validate-lessThanEqual\" )\n\t\t\t\t\t.removeClass( \"validate-lessThanEqual-blur\" )\n\t\t\t\t.find( \".validate-greaterThanEqual-blur\" )\n\t\t\t\t\t.off( \".validate-greaterThanEqual\" )\n\t\t\t\t\t.removeClass( \"validate-greaterThanEqual-blur\" )\n\t\t\t\t.find( \".validate-greaterThan-blur\" )\n\t\t\t\t\t.off( \".validate-greaterThan\" )\n\t\t\t\t\t.removeClass( \"validate-greaterThan-blur\" );\n\t\t}\n\n\t},\n\n\tclassRuleSettings: {\n\t\trequired: { required: true },\n\t\temail: { email: true },\n\t\turl: { url: true },\n\t\tdate: { date: true },\n\t\tdateISO: { dateISO: true },\n\t\tnumber: { number: true },\n\t\tdigits: { digits: true },\n\t\tcreditcard: { creditcard: true }\n\t},\n\n\taddClassRules: function( className, rules ) {\n\t\tif ( className.constructor === String ) {\n\t\t\tthis.classRuleSettings[ className ] = rules;\n\t\t} else {\n\t\t\t$.extend( this.classRuleSettings, className );\n\t\t}\n\t},\n\n\tclassRules: function( element ) {\n\t\tvar rules = {},\n\t\t\tclasses = $( element ).attr( \"class\" );\n\n\t\tif ( classes ) {\n\t\t\t$.each( classes.split( \" \" ), function() {\n\t\t\t\tif ( this in $.validator.classRuleSettings ) {\n\t\t\t\t\t$.extend( rules, $.validator.classRuleSettings[ this ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t\treturn rules;\n\t},\n\n\tnormalizeAttributeRule: function( rules, type, method, value ) {\n\n\t\t// Convert the value to a number for number inputs, and for text for backwards compability\n\t\t// allows type=\"date\" and others to be compared as strings\n\t\tif ( /min|max|step/.test( method ) && ( type === null || /number|range|text/.test( type ) ) ) {\n\t\t\tvalue = Number( value );\n\n\t\t\t// Support Opera Mini, which returns NaN for undefined minlength\n\t\t\tif ( isNaN( value ) ) {\n\t\t\t\tvalue = undefined;\n\t\t\t}\n\t\t}\n\n\t\tif ( value || value === 0 ) {\n\t\t\trules[ method ] = value;\n\t\t} else if ( type === method && type !== \"range\" ) {\n\n\t\t\t// Exception: the jquery validate 'range' method\n\t\t\t// does not test for the html5 'range' type\n\t\t\trules[ type === \"date\" ? \"dateISO\" : method ] = true;\n\t\t}\n\t},\n\n\tattributeRules: function( element ) {\n\t\tvar rules = {},\n\t\t\t$element = $( element ),\n\t\t\ttype = element.getAttribute( \"type\" ),\n\t\t\tmethod, value;\n\n\t\tfor ( method in $.validator.methods ) {\n\n\t\t\t// Support for <input required> in both html5 and older browsers\n\t\t\tif ( method === \"required\" ) {\n\t\t\t\tvalue = element.getAttribute( method );\n\n\t\t\t\t// Some browsers return an empty string for the required attribute\n\t\t\t\t// and non-HTML5 browsers might have required=\"\" markup\n\t\t\t\tif ( value === \"\" ) {\n\t\t\t\t\tvalue = true;\n\t\t\t\t}\n\n\t\t\t\t// Force non-HTML5 browsers to return bool\n\t\t\t\tvalue = !!value;\n\t\t\t} else {\n\t\t\t\tvalue = $element.attr( method );\n\t\t\t}\n\n\t\t\tthis.normalizeAttributeRule( rules, type, method, value );\n\t\t}\n\n\t\t// 'maxlength' may be returned as -1, 2147483647 ( IE ) and 524288 ( safari ) for text inputs\n\t\tif ( rules.maxlength && /-1|2147483647|524288/.test( rules.maxlength ) ) {\n\t\t\tdelete rules.maxlength;\n\t\t}\n\n\t\treturn rules;\n\t},\n\n\tdataRules: function( element ) {\n\t\tvar rules = {},\n\t\t\t$element = $( element ),\n\t\t\ttype = element.getAttribute( \"type\" ),\n\t\t\tmethod, value;\n\n\t\tfor ( method in $.validator.methods ) {\n\t\t\tvalue = $element.data( \"rule\" + method.charAt( 0 ).toUpperCase() + method.substring( 1 ).toLowerCase() );\n\n\t\t\t// Cast empty attributes like `data-rule-required` to `true`\n\t\t\tif ( value === \"\" ) {\n\t\t\t\tvalue = true;\n\t\t\t}\n\n\t\t\tthis.normalizeAttributeRule( rules, type, method, value );\n\t\t}\n\t\treturn rules;\n\t},\n\n\tstaticRules: function( element ) {\n\t\tvar rules = {},\n\t\t\tvalidator = $.data( element.form, \"validator\" );\n\n\t\tif ( validator.settings.rules ) {\n\t\t\trules = $.validator.normalizeRule( validator.settings.rules[ element.name ] ) || {};\n\t\t}\n\t\treturn rules;\n\t},\n\n\tnormalizeRules: function( rules, element ) {\n\n\t\t// Handle dependency check\n\t\t$.each( rules, function( prop, val ) {\n\n\t\t\t// Ignore rule when param is explicitly false, eg. required:false\n\t\t\tif ( val === false ) {\n\t\t\t\tdelete rules[ prop ];\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( val.param || val.depends ) {\n\t\t\t\tvar keepRule = true;\n\t\t\t\tswitch ( typeof val.depends ) {\n\t\t\t\tcase \"string\":\n\t\t\t\t\tkeepRule = !!$( val.depends, element.form ).length;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"function\":\n\t\t\t\t\tkeepRule = val.depends.call( element, element );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif ( keepRule ) {\n\t\t\t\t\trules[ prop ] = val.param !== undefined ? val.param : true;\n\t\t\t\t} else {\n\t\t\t\t\t$.data( element.form, \"validator\" ).resetElements( $( element ) );\n\t\t\t\t\tdelete rules[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\t// Evaluate parameters\n\t\t$.each( rules, function( rule, parameter ) {\n\t\t\trules[ rule ] = typeof parameter === \"function\" && rule !== \"normalizer\" ? parameter( element ) : parameter;\n\t\t} );\n\n\t\t// Clean number parameters\n\t\t$.each( [ \"minlength\", \"maxlength\" ], function() {\n\t\t\tif ( rules[ this ] ) {\n\t\t\t\trules[ this ] = Number( rules[ this ] );\n\t\t\t}\n\t\t} );\n\t\t$.each( [ \"rangelength\", \"range\" ], function() {\n\t\t\tvar parts;\n\t\t\tif ( rules[ this ] ) {\n\t\t\t\tif ( Array.isArray( rules[ this ] ) ) {\n\t\t\t\t\trules[ this ] = [ Number( rules[ this ][ 0 ] ), Number( rules[ this ][ 1 ] ) ];\n\t\t\t\t} else if ( typeof rules[ this ] === \"string\" ) {\n\t\t\t\t\tparts = rules[ this ].replace( /[\\[\\]]/g, \"\" ).split( /[\\s,]+/ );\n\t\t\t\t\trules[ this ] = [ Number( parts[ 0 ] ), Number( parts[ 1 ] ) ];\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\tif ( $.validator.autoCreateRanges ) {\n\n\t\t\t// Auto-create ranges\n\t\t\tif ( rules.min != null && rules.max != null ) {\n\t\t\t\trules.range = [ rules.min, rules.max ];\n\t\t\t\tdelete rules.min;\n\t\t\t\tdelete rules.max;\n\t\t\t}\n\t\t\tif ( rules.minlength != null && rules.maxlength != null ) {\n\t\t\t\trules.rangelength = [ rules.minlength, rules.maxlength ];\n\t\t\t\tdelete rules.minlength;\n\t\t\t\tdelete rules.maxlength;\n\t\t\t}\n\t\t}\n\n\t\treturn rules;\n\t},\n\n\t// Converts a simple string to a {string: true} rule, e.g., \"required\" to {required:true}\n\tnormalizeRule: function( data ) {\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tvar transformed = {};\n\t\t\t$.each( data.split( /\\s/ ), function() {\n\t\t\t\ttransformed[ this ] = true;\n\t\t\t} );\n\t\t\tdata = transformed;\n\t\t}\n\t\treturn data;\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.addMethod/\n\taddMethod: function( name, method, message ) {\n\t\t$.validator.methods[ name ] = method;\n\t\t$.validator.messages[ name ] = message !== undefined ? message : $.validator.messages[ name ];\n\t\tif ( method.length < 3 ) {\n\t\t\t$.validator.addClassRules( name, $.validator.normalizeRule( name ) );\n\t\t}\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.methods/\n\tmethods: {\n\n\t\t// https://jqueryvalidation.org/required-method/\n\t\trequired: function( value, element, param ) {\n\n\t\t\t// Check if dependency is met\n\t\t\tif ( !this.depend( param, element ) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\t\t\tif ( element.nodeName.toLowerCase() === \"select\" ) {\n\n\t\t\t\t// Could be an array for select-multiple or a string, both are fine this way\n\t\t\t\tvar val = $( element ).val();\n\t\t\t\treturn val && val.length > 0;\n\t\t\t}\n\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\treturn this.getLength( value, element ) > 0;\n\t\t\t}\n\t\t\treturn value !== undefined && value !== null && value.length > 0;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/email-method/\n\t\temail: function( value, element ) {\n\n\t\t\t// From https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address\n\t\t\t// Retrieved 2014-01-14\n\t\t\t// If you have a problem with this implementation, report a bug against the above spec\n\t\t\t// Or use custom methods to implement your own email validation\n\t\t\treturn this.optional( element ) || /^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/url-method/\n\t\turl: function( value, element ) {\n\n\t\t\t// Copyright (c) 2010-2013 Diego Perini, MIT licensed\n\t\t\t// https://gist.github.com/dperini/729294\n\t\t\t// see also https://mathiasbynens.be/demo/url-regex\n\t\t\t// modified to allow protocol-relative URLs\n\t\t\treturn this.optional( element ) || /^(?:(?:(?:https?|ftp):)?\\/\\/)(?:(?:[^\\]\\[?\\/<~#`!@$^&*()+=}|:\";',>{ ]|%[0-9A-Fa-f]{2})+(?::(?:[^\\]\\[?\\/<~#`!@$^&*()+=}|:\";',>{ ]|%[0-9A-Fa-f]{2})*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|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-z0-9\\u00a1-\\uffff][a-z0-9\\u00a1-\\uffff_-]{0,62})?[a-z0-9\\u00a1-\\uffff]\\.)+(?:[a-z\\u00a1-\\uffff]{2,}\\.?))(?::\\d{2,5})?(?:[/?#]\\S*)?$/i.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/date-method/\n\t\tdate: ( function() {\n\t\t\tvar called = false;\n\n\t\t\treturn function( value, element ) {\n\t\t\t\tif ( !called ) {\n\t\t\t\t\tcalled = true;\n\t\t\t\t\tif ( this.settings.debug && window.console ) {\n\t\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t\t\"The `date` method is deprecated and will be removed in version '2.0.0'.\\n\" +\n\t\t\t\t\t\t\t\"Please don't use it, since it relies on the Date constructor, which\\n\" +\n\t\t\t\t\t\t\t\"behaves very differently across browsers and locales. Use `dateISO`\\n\" +\n\t\t\t\t\t\t\t\"instead or one of the locale specific methods in `localizations/`\\n\" +\n\t\t\t\t\t\t\t\"and `additional-methods.js`.\"\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn this.optional( element ) || !/Invalid|NaN/.test( new Date( value ).toString() );\n\t\t\t};\n\t\t}() ),\n\n\t\t// https://jqueryvalidation.org/dateISO-method/\n\t\tdateISO: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^\\d{4}[\\/\\-](0?[1-9]|1[012])[\\/\\-](0?[1-9]|[12][0-9]|3[01])$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/number-method/\n\t\tnumber: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^(?:-?\\d+|-?\\d{1,3}(?:,\\d{3})+)?(?:-?\\.\\d+)?$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/digits-method/\n\t\tdigits: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^\\d+$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/minlength-method/\n\t\tminlength: function( value, element, param ) {\n\t\t\tvar length = Array.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || length >= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/maxlength-method/\n\t\tmaxlength: function( value, element, param ) {\n\t\t\tvar length = Array.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || length <= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/rangelength-method/\n\t\trangelength: function( value, element, param ) {\n\t\t\tvar length = Array.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || ( length >= param[ 0 ] && length <= param[ 1 ] );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/min-method/\n\t\tmin: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || value >= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/max-method/\n\t\tmax: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || value <= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/range-method/\n\t\trange: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || ( value >= param[ 0 ] && value <= param[ 1 ] );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/step-method/\n\t\tstep: function( value, element, param ) {\n\t\t\tvar type = $( element ).attr( \"type\" ),\n\t\t\t\terrorMessage = \"Step attribute on input type \" + type + \" is not supported.\",\n\t\t\t\tsupportedTypes = [ \"text\", \"number\", \"range\" ],\n\t\t\t\tre = new RegExp( \"\\\\b\" + type + \"\\\\b\" ),\n\t\t\t\tnotSupported = type && !re.test( supportedTypes.join() ),\n\t\t\t\tdecimalPlaces = function( num ) {\n\t\t\t\t\tvar match = ( \"\" + num ).match( /(?:\\.(\\d+))?$/ );\n\t\t\t\t\tif ( !match ) {\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Number of digits right of decimal point.\n\t\t\t\t\treturn match[ 1 ] ? match[ 1 ].length : 0;\n\t\t\t\t},\n\t\t\t\ttoInt = function( num ) {\n\t\t\t\t\treturn Math.round( num * Math.pow( 10, decimals ) );\n\t\t\t\t},\n\t\t\t\tvalid = true,\n\t\t\t\tdecimals;\n\n\t\t\t// Works only for text, number and range input types\n\t\t\t// TODO find a way to support input types date, datetime, datetime-local, month, time and week\n\t\t\tif ( notSupported ) {\n\t\t\t\tthrow new Error( errorMessage );\n\t\t\t}\n\n\t\t\tdecimals = decimalPlaces( param );\n\n\t\t\t// Value can't have too many decimals\n\t\t\tif ( decimalPlaces( value ) > decimals || toInt( value ) % toInt( param ) !== 0 ) {\n\t\t\t\tvalid = false;\n\t\t\t}\n\n\t\t\treturn this.optional( element ) || valid;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/equalTo-method/\n\t\tequalTo: function( value, element, param ) {\n\n\t\t\t// Bind to the blur event of the target in order to revalidate whenever the target field is updated\n\t\t\tvar target = $( param );\n\t\t\tif ( this.settings.onfocusout && target.not( \".validate-equalTo-blur\" ).length ) {\n\t\t\t\ttarget.addClass( \"validate-equalTo-blur\" ).on( \"blur.validate-equalTo\", function() {\n\t\t\t\t\t$( element ).valid();\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn value === target.val();\n\t\t},\n\n\t\t// https://jqueryvalidation.org/remote-method/\n\t\tremote: function( value, element, param, method ) {\n\t\t\tif ( this.optional( element ) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\n\t\t\tmethod = typeof method === \"string\" && method || \"remote\";\n\n\t\t\tvar previous = this.previousValue( element, method ),\n\t\t\t\tvalidator, data, optionDataString;\n\n\t\t\tif ( !this.settings.messages[ element.name ] ) {\n\t\t\t\tthis.settings.messages[ element.name ] = {};\n\t\t\t}\n\t\t\tprevious.originalMessage = previous.originalMessage || this.settings.messages[ element.name ][ method ];\n\t\t\tthis.settings.messages[ element.name ][ method ] = previous.message;\n\n\t\t\tparam = typeof param === \"string\" && { url: param } || param;\n\t\t\toptionDataString = $.param( $.extend( { data: value }, param.data ) );\n\t\t\tif ( previous.valid !== null && previous.old === optionDataString ) {\n\t\t\t\treturn previous.valid;\n\t\t\t}\n\n\t\t\tprevious.old = optionDataString;\n\t\t\tprevious.valid = null;\n\t\t\tvalidator = this;\n\t\t\tthis.startRequest( element );\n\t\t\tdata = {};\n\t\t\tdata[ element.name ] = value;\n\t\t\t$.ajax( $.extend( true, {\n\t\t\t\tmode: \"abort\",\n\t\t\t\tport: this.elementAjaxPort( element ),\n\t\t\t\tdataType: \"json\",\n\t\t\t\tdata: data,\n\t\t\t\tcontext: validator.currentForm,\n\t\t\t\tsuccess: function( response ) {\n\t\t\t\t\tvar valid = response === true || response === \"true\",\n\t\t\t\t\t\terrors, message, submitted;\n\n\t\t\t\t\tvalidator.settings.messages[ element.name ][ method ] = previous.originalMessage;\n\t\t\t\t\tif ( valid ) {\n\t\t\t\t\t\tsubmitted = validator.formSubmitted;\n\t\t\t\t\t\tvalidator.toHide = validator.errorsFor( element );\n\t\t\t\t\t\tvalidator.formSubmitted = submitted;\n\t\t\t\t\t\tvalidator.successList.push( element );\n\t\t\t\t\t\tvalidator.invalid[ element.name ] = false;\n\t\t\t\t\t\tvalidator.showErrors();\n\t\t\t\t\t} else {\n\t\t\t\t\t\terrors = {};\n\t\t\t\t\t\tmessage = response || validator.defaultMessage( element, { method: method, parameters: value } );\n\t\t\t\t\t\terrors[ element.name ] = previous.message = message;\n\t\t\t\t\t\tvalidator.invalid[ element.name ] = true;\n\t\t\t\t\t\tvalidator.showErrors( errors );\n\t\t\t\t\t}\n\t\t\t\t\tprevious.valid = valid;\n\t\t\t\t\tvalidator.stopRequest( element, valid );\n\t\t\t\t}\n\t\t\t}, param ) );\n\t\t\treturn \"pending\";\n\t\t}\n\t}\n\n} );\n\n// Ajax mode: abort\n// usage: $.ajax({ mode: \"abort\"[, port: \"uniqueport\"]});\n//        $.ajaxAbort( port );\n// if mode:\"abort\" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()\n\nvar pendingRequests = {},\n\tajax;\n\n// Use a prefilter if available (1.5+)\nif ( $.ajaxPrefilter ) {\n\t$.ajaxPrefilter( function( settings, _, xhr ) {\n\t\tvar port = settings.port;\n\t\tif ( settings.mode === \"abort\" ) {\n\t\t\t$.ajaxAbort( port );\n\t\t\tpendingRequests[ port ] = xhr;\n\t\t}\n\t} );\n} else {\n\n\t// Proxy ajax\n\tajax = $.ajax;\n\t$.ajax = function( settings ) {\n\t\tvar mode = ( \"mode\" in settings ? settings : $.ajaxSettings ).mode,\n\t\t\tport = ( \"port\" in settings ? settings : $.ajaxSettings ).port;\n\t\tif ( mode === \"abort\" ) {\n\t\t\t$.ajaxAbort( port );\n\t\t\tpendingRequests[ port ] = ajax.apply( this, arguments );\n\t\t\treturn pendingRequests[ port ];\n\t\t}\n\t\treturn ajax.apply( this, arguments );\n\t};\n}\n\n// Abort the previous request without sending a new one\n$.ajaxAbort = function( port ) {\n\tif ( pendingRequests[ port ] ) {\n\t\tpendingRequests[ port ].abort();\n\t\tdelete pendingRequests[ port ];\n\t}\n};\nreturn $;\n}));","/* ========================================================================\n * Bootstrap: transition.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#transitions\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // CSS TRANSITION SUPPORT (Shoutout: https://modernizr.com/)\n  // ============================================================\n\n  function transitionEnd() {\n    var el = document.createElement('bootstrap')\n\n    var transEndEventNames = {\n      WebkitTransition : 'webkitTransitionEnd',\n      MozTransition    : 'transitionend',\n      OTransition      : 'oTransitionEnd otransitionend',\n      transition       : 'transitionend'\n    }\n\n    for (var name in transEndEventNames) {\n      if (el.style[name] !== undefined) {\n        return { end: transEndEventNames[name] }\n      }\n    }\n\n    return false // explicit for ie8 (  ._.)\n  }\n\n  // https://blog.alexmaccaw.com/css-transitions\n  $.fn.emulateTransitionEnd = function (duration) {\n    var called = false\n    var $el = this\n    $(this).one('bsTransitionEnd', function () { called = true })\n    var callback = function () { if (!called) $($el).trigger($.support.transition.end) }\n    setTimeout(callback, duration)\n    return this\n  }\n\n  $(function () {\n    $.support.transition = transitionEnd()\n\n    if (!$.support.transition) return\n\n    $.event.special.bsTransitionEnd = {\n      bindType: $.support.transition.end,\n      delegateType: $.support.transition.end,\n      handle: function (e) {\n        if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)\n      }\n    }\n  })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: alert.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#alerts\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // ALERT CLASS DEFINITION\n  // ======================\n\n  var dismiss = '[data-dismiss=\"alert\"]'\n  var Alert   = function (el) {\n    $(el).on('click', dismiss, this.close)\n  }\n\n  Alert.VERSION = '3.4.1'\n\n  Alert.TRANSITION_DURATION = 150\n\n  Alert.prototype.close = function (e) {\n    var $this    = $(this)\n    var selector = $this.attr('data-target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    selector    = selector === '#' ? [] : selector\n    var $parent = $(document).find(selector)\n\n    if (e) e.preventDefault()\n\n    if (!$parent.length) {\n      $parent = $this.closest('.alert')\n    }\n\n    $parent.trigger(e = $.Event('close.bs.alert'))\n\n    if (e.isDefaultPrevented()) return\n\n    $parent.removeClass('in')\n\n    function removeElement() {\n      // detach from parent, fire event then clean up data\n      $parent.detach().trigger('closed.bs.alert').remove()\n    }\n\n    $.support.transition && $parent.hasClass('fade') ?\n      $parent\n        .one('bsTransitionEnd', removeElement)\n        .emulateTransitionEnd(Alert.TRANSITION_DURATION) :\n      removeElement()\n  }\n\n\n  // ALERT PLUGIN DEFINITION\n  // =======================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.alert')\n\n      if (!data) $this.data('bs.alert', (data = new Alert(this)))\n      if (typeof option == 'string') data[option].call($this)\n    })\n  }\n\n  var old = $.fn.alert\n\n  $.fn.alert             = Plugin\n  $.fn.alert.Constructor = Alert\n\n\n  // ALERT NO CONFLICT\n  // =================\n\n  $.fn.alert.noConflict = function () {\n    $.fn.alert = old\n    return this\n  }\n\n\n  // ALERT DATA-API\n  // ==============\n\n  $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: collapse.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#collapse\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n/* jshint latedef: false */\n\n+function ($) {\n  'use strict';\n\n  // COLLAPSE PUBLIC CLASS DEFINITION\n  // ================================\n\n  var Collapse = function (element, options) {\n    this.$element      = $(element)\n    this.options       = $.extend({}, Collapse.DEFAULTS, options)\n    this.$trigger      = $('[data-toggle=\"collapse\"][href=\"#' + element.id + '\"],' +\n                           '[data-toggle=\"collapse\"][data-target=\"#' + element.id + '\"]')\n    this.transitioning = null\n\n    if (this.options.parent) {\n      this.$parent = this.getParent()\n    } else {\n      this.addAriaAndCollapsedClass(this.$element, this.$trigger)\n    }\n\n    if (this.options.toggle) this.toggle()\n  }\n\n  Collapse.VERSION  = '3.4.1'\n\n  Collapse.TRANSITION_DURATION = 350\n\n  Collapse.DEFAULTS = {\n    toggle: true\n  }\n\n  Collapse.prototype.dimension = function () {\n    var hasWidth = this.$element.hasClass('width')\n    return hasWidth ? 'width' : 'height'\n  }\n\n  Collapse.prototype.show = function () {\n    if (this.transitioning || this.$element.hasClass('in')) return\n\n    var activesData\n    var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')\n\n    if (actives && actives.length) {\n      activesData = actives.data('bs.collapse')\n      if (activesData && activesData.transitioning) return\n    }\n\n    var startEvent = $.Event('show.bs.collapse')\n    this.$element.trigger(startEvent)\n    if (startEvent.isDefaultPrevented()) return\n\n    if (actives && actives.length) {\n      Plugin.call(actives, 'hide')\n      activesData || actives.data('bs.collapse', null)\n    }\n\n    var dimension = this.dimension()\n\n    this.$element\n      .removeClass('collapse')\n      .addClass('collapsing')[dimension](0)\n      .attr('aria-expanded', true)\n\n    this.$trigger\n      .removeClass('collapsed')\n      .attr('aria-expanded', true)\n\n    this.transitioning = 1\n\n    var complete = function () {\n      this.$element\n        .removeClass('collapsing')\n        .addClass('collapse in')[dimension]('')\n      this.transitioning = 0\n      this.$element\n        .trigger('shown.bs.collapse')\n    }\n\n    if (!$.support.transition) return complete.call(this)\n\n    var scrollSize = $.camelCase(['scroll', dimension].join('-'))\n\n    this.$element\n      .one('bsTransitionEnd', $.proxy(complete, this))\n      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])\n  }\n\n  Collapse.prototype.hide = function () {\n    if (this.transitioning || !this.$element.hasClass('in')) return\n\n    var startEvent = $.Event('hide.bs.collapse')\n    this.$element.trigger(startEvent)\n    if (startEvent.isDefaultPrevented()) return\n\n    var dimension = this.dimension()\n\n    this.$element[dimension](this.$element[dimension]())[0].offsetHeight\n\n    this.$element\n      .addClass('collapsing')\n      .removeClass('collapse in')\n      .attr('aria-expanded', false)\n\n    this.$trigger\n      .addClass('collapsed')\n      .attr('aria-expanded', false)\n\n    this.transitioning = 1\n\n    var complete = function () {\n      this.transitioning = 0\n      this.$element\n        .removeClass('collapsing')\n        .addClass('collapse')\n        .trigger('hidden.bs.collapse')\n    }\n\n    if (!$.support.transition) return complete.call(this)\n\n    this.$element\n      [dimension](0)\n      .one('bsTransitionEnd', $.proxy(complete, this))\n      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)\n  }\n\n  Collapse.prototype.toggle = function () {\n    this[this.$element.hasClass('in') ? 'hide' : 'show']()\n  }\n\n  Collapse.prototype.getParent = function () {\n    return $(document).find(this.options.parent)\n      .find('[data-toggle=\"collapse\"][data-parent=\"' + this.options.parent + '\"]')\n      .each($.proxy(function (i, element) {\n        var $element = $(element)\n        this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)\n      }, this))\n      .end()\n  }\n\n  Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {\n    var isOpen = $element.hasClass('in')\n\n    $element.attr('aria-expanded', isOpen)\n    $trigger\n      .toggleClass('collapsed', !isOpen)\n      .attr('aria-expanded', isOpen)\n  }\n\n  function getTargetFromTrigger($trigger) {\n    var href\n    var target = $trigger.attr('data-target')\n      || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\n\n    return $(document).find(target)\n  }\n\n\n  // COLLAPSE PLUGIN DEFINITION\n  // ==========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.collapse')\n      var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n      if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false\n      if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.collapse\n\n  $.fn.collapse             = Plugin\n  $.fn.collapse.Constructor = Collapse\n\n\n  // COLLAPSE NO CONFLICT\n  // ====================\n\n  $.fn.collapse.noConflict = function () {\n    $.fn.collapse = old\n    return this\n  }\n\n\n  // COLLAPSE DATA-API\n  // =================\n\n  $(document).on('click.bs.collapse.data-api', '[data-toggle=\"collapse\"]', function (e) {\n    var $this   = $(this)\n\n    if (!$this.attr('data-target')) e.preventDefault()\n\n    var $target = getTargetFromTrigger($this)\n    var data    = $target.data('bs.collapse')\n    var option  = data ? 'toggle' : $this.data()\n\n    Plugin.call($target, option)\n  })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: dropdown.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#dropdowns\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // DROPDOWN CLASS DEFINITION\n  // =========================\n\n  var backdrop = '.dropdown-backdrop'\n  var toggle   = '[data-toggle=\"dropdown\"]'\n  var Dropdown = function (element) {\n    $(element).on('click.bs.dropdown', this.toggle)\n  }\n\n  Dropdown.VERSION = '3.4.1'\n\n  function getParent($this) {\n    var selector = $this.attr('data-target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    var $parent = selector !== '#' ? $(document).find(selector) : null\n\n    return $parent && $parent.length ? $parent : $this.parent()\n  }\n\n  function clearMenus(e) {\n    if (e && e.which === 3) return\n    $(backdrop).remove()\n    $(toggle).each(function () {\n      var $this         = $(this)\n      var $parent       = getParent($this)\n      var relatedTarget = { relatedTarget: this }\n\n      if (!$parent.hasClass('open')) return\n\n      if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return\n\n      $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))\n\n      if (e.isDefaultPrevented()) return\n\n      $this.attr('aria-expanded', 'false')\n      $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))\n    })\n  }\n\n  Dropdown.prototype.toggle = function (e) {\n    var $this = $(this)\n\n    if ($this.is('.disabled, :disabled')) return\n\n    var $parent  = getParent($this)\n    var isActive = $parent.hasClass('open')\n\n    clearMenus()\n\n    if (!isActive) {\n      if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {\n        // if mobile we use a backdrop because click events don't delegate\n        $(document.createElement('div'))\n          .addClass('dropdown-backdrop')\n          .insertAfter($(this))\n          .on('click', clearMenus)\n      }\n\n      var relatedTarget = { relatedTarget: this }\n      $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))\n\n      if (e.isDefaultPrevented()) return\n\n      $this\n        .trigger('focus')\n        .attr('aria-expanded', 'true')\n\n      $parent\n        .toggleClass('open')\n        .trigger($.Event('shown.bs.dropdown', relatedTarget))\n    }\n\n    return false\n  }\n\n  Dropdown.prototype.keydown = function (e) {\n    if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return\n\n    var $this = $(this)\n\n    e.preventDefault()\n    e.stopPropagation()\n\n    if ($this.is('.disabled, :disabled')) return\n\n    var $parent  = getParent($this)\n    var isActive = $parent.hasClass('open')\n\n    if (!isActive && e.which != 27 || isActive && e.which == 27) {\n      if (e.which == 27) $parent.find(toggle).trigger('focus')\n      return $this.trigger('click')\n    }\n\n    var desc = ' li:not(.disabled):visible a'\n    var $items = $parent.find('.dropdown-menu' + desc)\n\n    if (!$items.length) return\n\n    var index = $items.index(e.target)\n\n    if (e.which == 38 && index > 0)                 index--         // up\n    if (e.which == 40 && index < $items.length - 1) index++         // down\n    if (!~index)                                    index = 0\n\n    $items.eq(index).trigger('focus')\n  }\n\n\n  // DROPDOWN PLUGIN DEFINITION\n  // ==========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.dropdown')\n\n      if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))\n      if (typeof option == 'string') data[option].call($this)\n    })\n  }\n\n  var old = $.fn.dropdown\n\n  $.fn.dropdown             = Plugin\n  $.fn.dropdown.Constructor = Dropdown\n\n\n  // DROPDOWN NO CONFLICT\n  // ====================\n\n  $.fn.dropdown.noConflict = function () {\n    $.fn.dropdown = old\n    return this\n  }\n\n\n  // APPLY TO STANDARD DROPDOWN ELEMENTS\n  // ===================================\n\n  $(document)\n    .on('click.bs.dropdown.data-api', clearMenus)\n    .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })\n    .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)\n    .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)\n    .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: modal.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#modals\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // MODAL CLASS DEFINITION\n  // ======================\n\n  var Modal = function (element, options) {\n    this.options = options\n    this.$body = $(document.body)\n    this.$element = $(element)\n    this.$dialog = this.$element.find('.modal-dialog')\n    this.$backdrop = null\n    this.isShown = null\n    this.originalBodyPad = null\n    this.scrollbarWidth = 0\n    this.ignoreBackdropClick = false\n    this.fixedContent = '.navbar-fixed-top, .navbar-fixed-bottom'\n\n    if (this.options.remote) {\n      this.$element\n        .find('.modal-content')\n        .load(this.options.remote, $.proxy(function () {\n          this.$element.trigger('loaded.bs.modal')\n        }, this))\n    }\n  }\n\n  Modal.VERSION = '3.4.1'\n\n  Modal.TRANSITION_DURATION = 300\n  Modal.BACKDROP_TRANSITION_DURATION = 150\n\n  Modal.DEFAULTS = {\n    backdrop: true,\n    keyboard: true,\n    show: true\n  }\n\n  Modal.prototype.toggle = function (_relatedTarget) {\n    return this.isShown ? this.hide() : this.show(_relatedTarget)\n  }\n\n  Modal.prototype.show = function (_relatedTarget) {\n    var that = this\n    var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })\n\n    this.$element.trigger(e)\n\n    if (this.isShown || e.isDefaultPrevented()) return\n\n    this.isShown = true\n\n    this.checkScrollbar()\n    this.setScrollbar()\n    this.$body.addClass('modal-open')\n\n    this.escape()\n    this.resize()\n\n    this.$element.on('click.dismiss.bs.modal', '[data-dismiss=\"modal\"]', $.proxy(this.hide, this))\n\n    this.$dialog.on('mousedown.dismiss.bs.modal', function () {\n      that.$element.one('mouseup.dismiss.bs.modal', function (e) {\n        if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true\n      })\n    })\n\n    this.backdrop(function () {\n      var transition = $.support.transition && that.$element.hasClass('fade')\n\n      if (!that.$element.parent().length) {\n        that.$element.appendTo(that.$body) // don't move modals dom position\n      }\n\n      that.$element\n        .show()\n        .scrollTop(0)\n\n      that.adjustDialog()\n\n      if (transition) {\n        that.$element[0].offsetWidth // force reflow\n      }\n\n      that.$element.addClass('in')\n\n      that.enforceFocus()\n\n      var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })\n\n      transition ?\n        that.$dialog // wait for modal to slide in\n          .one('bsTransitionEnd', function () {\n            that.$element.trigger('focus').trigger(e)\n          })\n          .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n        that.$element.trigger('focus').trigger(e)\n    })\n  }\n\n  Modal.prototype.hide = function (e) {\n    if (e) e.preventDefault()\n\n    e = $.Event('hide.bs.modal')\n\n    this.$element.trigger(e)\n\n    if (!this.isShown || e.isDefaultPrevented()) return\n\n    this.isShown = false\n\n    this.escape()\n    this.resize()\n\n    $(document).off('focusin.bs.modal')\n\n    this.$element\n      .removeClass('in')\n      .off('click.dismiss.bs.modal')\n      .off('mouseup.dismiss.bs.modal')\n\n    this.$dialog.off('mousedown.dismiss.bs.modal')\n\n    $.support.transition && this.$element.hasClass('fade') ?\n      this.$element\n        .one('bsTransitionEnd', $.proxy(this.hideModal, this))\n        .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n      this.hideModal()\n  }\n\n  Modal.prototype.enforceFocus = function () {\n    $(document)\n      .off('focusin.bs.modal') // guard against infinite focus loop\n      .on('focusin.bs.modal', $.proxy(function (e) {\n        if (document !== e.target &&\n          this.$element[0] !== e.target &&\n          !this.$element.has(e.target).length) {\n          this.$element.trigger('focus')\n        }\n      }, this))\n  }\n\n  Modal.prototype.escape = function () {\n    if (this.isShown && this.options.keyboard) {\n      this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {\n        e.which == 27 && this.hide()\n      }, this))\n    } else if (!this.isShown) {\n      this.$element.off('keydown.dismiss.bs.modal')\n    }\n  }\n\n  Modal.prototype.resize = function () {\n    if (this.isShown) {\n      $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))\n    } else {\n      $(window).off('resize.bs.modal')\n    }\n  }\n\n  Modal.prototype.hideModal = function () {\n    var that = this\n    this.$element.hide()\n    this.backdrop(function () {\n      that.$body.removeClass('modal-open')\n      that.resetAdjustments()\n      that.resetScrollbar()\n      that.$element.trigger('hidden.bs.modal')\n    })\n  }\n\n  Modal.prototype.removeBackdrop = function () {\n    this.$backdrop && this.$backdrop.remove()\n    this.$backdrop = null\n  }\n\n  Modal.prototype.backdrop = function (callback) {\n    var that = this\n    var animate = this.$element.hasClass('fade') ? 'fade' : ''\n\n    if (this.isShown && this.options.backdrop) {\n      var doAnimate = $.support.transition && animate\n\n      this.$backdrop = $(document.createElement('div'))\n        .addClass('modal-backdrop ' + animate)\n        .appendTo(this.$body)\n\n      this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {\n        if (this.ignoreBackdropClick) {\n          this.ignoreBackdropClick = false\n          return\n        }\n        if (e.target !== e.currentTarget) return\n        this.options.backdrop == 'static'\n          ? this.$element[0].focus()\n          : this.hide()\n      }, this))\n\n      if (doAnimate) this.$backdrop[0].offsetWidth // force reflow\n\n      this.$backdrop.addClass('in')\n\n      if (!callback) return\n\n      doAnimate ?\n        this.$backdrop\n          .one('bsTransitionEnd', callback)\n          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n        callback()\n\n    } else if (!this.isShown && this.$backdrop) {\n      this.$backdrop.removeClass('in')\n\n      var callbackRemove = function () {\n        that.removeBackdrop()\n        callback && callback()\n      }\n      $.support.transition && this.$element.hasClass('fade') ?\n        this.$backdrop\n          .one('bsTransitionEnd', callbackRemove)\n          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n        callbackRemove()\n\n    } else if (callback) {\n      callback()\n    }\n  }\n\n  // these following methods are used to handle overflowing modals\n\n  Modal.prototype.handleUpdate = function () {\n    this.adjustDialog()\n  }\n\n  Modal.prototype.adjustDialog = function () {\n    var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight\n\n    this.$element.css({\n      paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',\n      paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''\n    })\n  }\n\n  Modal.prototype.resetAdjustments = function () {\n    this.$element.css({\n      paddingLeft: '',\n      paddingRight: ''\n    })\n  }\n\n  Modal.prototype.checkScrollbar = function () {\n    var fullWindowWidth = window.innerWidth\n    if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8\n      var documentElementRect = document.documentElement.getBoundingClientRect()\n      fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)\n    }\n    this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth\n    this.scrollbarWidth = this.measureScrollbar()\n  }\n\n  Modal.prototype.setScrollbar = function () {\n    var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)\n    this.originalBodyPad = document.body.style.paddingRight || ''\n    var scrollbarWidth = this.scrollbarWidth\n    if (this.bodyIsOverflowing) {\n      this.$body.css('padding-right', bodyPad + scrollbarWidth)\n      $(this.fixedContent).each(function (index, element) {\n        var actualPadding = element.style.paddingRight\n        var calculatedPadding = $(element).css('padding-right')\n        $(element)\n          .data('padding-right', actualPadding)\n          .css('padding-right', parseFloat(calculatedPadding) + scrollbarWidth + 'px')\n      })\n    }\n  }\n\n  Modal.prototype.resetScrollbar = function () {\n    this.$body.css('padding-right', this.originalBodyPad)\n    $(this.fixedContent).each(function (index, element) {\n      var padding = $(element).data('padding-right')\n      $(element).removeData('padding-right')\n      element.style.paddingRight = padding ? padding : ''\n    })\n  }\n\n  Modal.prototype.measureScrollbar = function () { // thx walsh\n    var scrollDiv = document.createElement('div')\n    scrollDiv.className = 'modal-scrollbar-measure'\n    this.$body.append(scrollDiv)\n    var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth\n    this.$body[0].removeChild(scrollDiv)\n    return scrollbarWidth\n  }\n\n\n  // MODAL PLUGIN DEFINITION\n  // =======================\n\n  function Plugin(option, _relatedTarget) {\n    return this.each(function () {\n      var $this = $(this)\n      var data = $this.data('bs.modal')\n      var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n      if (!data) $this.data('bs.modal', (data = new Modal(this, options)))\n      if (typeof option == 'string') data[option](_relatedTarget)\n      else if (options.show) data.show(_relatedTarget)\n    })\n  }\n\n  var old = $.fn.modal\n\n  $.fn.modal = Plugin\n  $.fn.modal.Constructor = Modal\n\n\n  // MODAL NO CONFLICT\n  // =================\n\n  $.fn.modal.noConflict = function () {\n    $.fn.modal = old\n    return this\n  }\n\n\n  // MODAL DATA-API\n  // ==============\n\n  $(document).on('click.bs.modal.data-api', '[data-toggle=\"modal\"]', function (e) {\n    var $this = $(this)\n    var href = $this.attr('href')\n    var target = $this.attr('data-target') ||\n      (href && href.replace(/.*(?=#[^\\s]+$)/, '')) // strip for ie7\n\n    var $target = $(document).find(target)\n    var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())\n\n    if ($this.is('a')) e.preventDefault()\n\n    $target.one('show.bs.modal', function (showEvent) {\n      if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown\n      $target.one('hidden.bs.modal', function () {\n        $this.is(':visible') && $this.trigger('focus')\n      })\n    })\n    Plugin.call($target, option, this)\n  })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: tab.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#tabs\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // TAB CLASS DEFINITION\n  // ====================\n\n  var Tab = function (element) {\n    // jscs:disable requireDollarBeforejQueryAssignment\n    this.element = $(element)\n    // jscs:enable requireDollarBeforejQueryAssignment\n  }\n\n  Tab.VERSION = '3.4.1'\n\n  Tab.TRANSITION_DURATION = 150\n\n  Tab.prototype.show = function () {\n    var $this    = this.element\n    var $ul      = $this.closest('ul:not(.dropdown-menu)')\n    var selector = $this.data('target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    if ($this.parent('li').hasClass('active')) return\n\n    var $previous = $ul.find('.active:last a')\n    var hideEvent = $.Event('hide.bs.tab', {\n      relatedTarget: $this[0]\n    })\n    var showEvent = $.Event('show.bs.tab', {\n      relatedTarget: $previous[0]\n    })\n\n    $previous.trigger(hideEvent)\n    $this.trigger(showEvent)\n\n    if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return\n\n    var $target = $(document).find(selector)\n\n    this.activate($this.closest('li'), $ul)\n    this.activate($target, $target.parent(), function () {\n      $previous.trigger({\n        type: 'hidden.bs.tab',\n        relatedTarget: $this[0]\n      })\n      $this.trigger({\n        type: 'shown.bs.tab',\n        relatedTarget: $previous[0]\n      })\n    })\n  }\n\n  Tab.prototype.activate = function (element, container, callback) {\n    var $active    = container.find('> .active')\n    var transition = callback\n      && $.support.transition\n      && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)\n\n    function next() {\n      $active\n        .removeClass('active')\n        .find('> .dropdown-menu > .active')\n        .removeClass('active')\n        .end()\n        .find('[data-toggle=\"tab\"]')\n        .attr('aria-expanded', false)\n\n      element\n        .addClass('active')\n        .find('[data-toggle=\"tab\"]')\n        .attr('aria-expanded', true)\n\n      if (transition) {\n        element[0].offsetWidth // reflow for transition\n        element.addClass('in')\n      } else {\n        element.removeClass('fade')\n      }\n\n      if (element.parent('.dropdown-menu').length) {\n        element\n          .closest('li.dropdown')\n          .addClass('active')\n          .end()\n          .find('[data-toggle=\"tab\"]')\n          .attr('aria-expanded', true)\n      }\n\n      callback && callback()\n    }\n\n    $active.length && transition ?\n      $active\n        .one('bsTransitionEnd', next)\n        .emulateTransitionEnd(Tab.TRANSITION_DURATION) :\n      next()\n\n    $active.removeClass('in')\n  }\n\n\n  // TAB PLUGIN DEFINITION\n  // =====================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.tab')\n\n      if (!data) $this.data('bs.tab', (data = new Tab(this)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.tab\n\n  $.fn.tab             = Plugin\n  $.fn.tab.Constructor = Tab\n\n\n  // TAB NO CONFLICT\n  // ===============\n\n  $.fn.tab.noConflict = function () {\n    $.fn.tab = old\n    return this\n  }\n\n\n  // TAB DATA-API\n  // ============\n\n  var clickHandler = function (e) {\n    e.preventDefault()\n    Plugin.call($(this), 'show')\n  }\n\n  $(document)\n    .on('click.bs.tab.data-api', '[data-toggle=\"tab\"]', clickHandler)\n    .on('click.bs.tab.data-api', '[data-toggle=\"pill\"]', clickHandler)\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: tooltip.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#tooltip\n * Inspired by the original jQuery.tipsy by Jason Frame\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n+function ($) {\n  'use strict';\n\n  var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']\n\n  var uriAttrs = [\n    'background',\n    'cite',\n    'href',\n    'itemtype',\n    'longdesc',\n    'poster',\n    'src',\n    'xlink:href'\n  ]\n\n  var ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\n  var DefaultWhitelist = {\n    // Global attributes allowed on any supplied element below.\n    '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n    a: ['target', 'href', 'title', 'rel'],\n    area: [],\n    b: [],\n    br: [],\n    col: [],\n    code: [],\n    div: [],\n    em: [],\n    hr: [],\n    h1: [],\n    h2: [],\n    h3: [],\n    h4: [],\n    h5: [],\n    h6: [],\n    i: [],\n    img: ['src', 'alt', 'title', 'width', 'height'],\n    li: [],\n    ol: [],\n    p: [],\n    pre: [],\n    s: [],\n    small: [],\n    span: [],\n    sub: [],\n    sup: [],\n    strong: [],\n    u: [],\n    ul: []\n  }\n\n  /**\n   * A pattern that recognizes a commonly useful subset of URLs that are safe.\n   *\n   * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n   */\n  var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi\n\n  /**\n   * A pattern that matches safe data URLs. Only matches image, video and audio types.\n   *\n   * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n   */\n  var DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i\n\n  function allowedAttribute(attr, allowedAttributeList) {\n    var attrName = attr.nodeName.toLowerCase()\n\n    if ($.inArray(attrName, allowedAttributeList) !== -1) {\n      if ($.inArray(attrName, uriAttrs) !== -1) {\n        return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))\n      }\n\n      return true\n    }\n\n    var regExp = $(allowedAttributeList).filter(function (index, value) {\n      return value instanceof RegExp\n    })\n\n    // Check if a regular expression validates the attribute.\n    for (var i = 0, l = regExp.length; i < l; i++) {\n      if (attrName.match(regExp[i])) {\n        return true\n      }\n    }\n\n    return false\n  }\n\n  function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n    if (unsafeHtml.length === 0) {\n      return unsafeHtml\n    }\n\n    if (sanitizeFn && typeof sanitizeFn === 'function') {\n      return sanitizeFn(unsafeHtml)\n    }\n\n    // IE 8 and below don't support createHTMLDocument\n    if (!document.implementation || !document.implementation.createHTMLDocument) {\n      return unsafeHtml\n    }\n\n    var createdDocument = document.implementation.createHTMLDocument('sanitization')\n    createdDocument.body.innerHTML = unsafeHtml\n\n    var whitelistKeys = $.map(whiteList, function (el, i) { return i })\n    var elements = $(createdDocument.body).find('*')\n\n    for (var i = 0, len = elements.length; i < len; i++) {\n      var el = elements[i]\n      var elName = el.nodeName.toLowerCase()\n\n      if ($.inArray(elName, whitelistKeys) === -1) {\n        el.parentNode.removeChild(el)\n\n        continue\n      }\n\n      var attributeList = $.map(el.attributes, function (el) { return el })\n      var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])\n\n      for (var j = 0, len2 = attributeList.length; j < len2; j++) {\n        if (!allowedAttribute(attributeList[j], whitelistedAttributes)) {\n          el.removeAttribute(attributeList[j].nodeName)\n        }\n      }\n    }\n\n    return createdDocument.body.innerHTML\n  }\n\n  // TOOLTIP PUBLIC CLASS DEFINITION\n  // ===============================\n\n  var Tooltip = function (element, options) {\n    this.type       = null\n    this.options    = null\n    this.enabled    = null\n    this.timeout    = null\n    this.hoverState = null\n    this.$element   = null\n    this.inState    = null\n\n    this.init('tooltip', element, options)\n  }\n\n  Tooltip.VERSION  = '3.4.1'\n\n  Tooltip.TRANSITION_DURATION = 150\n\n  Tooltip.DEFAULTS = {\n    animation: true,\n    placement: 'top',\n    selector: false,\n    template: '<div class=\"tooltip\" role=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>',\n    trigger: 'hover focus',\n    title: '',\n    delay: 0,\n    html: false,\n    container: false,\n    viewport: {\n      selector: 'body',\n      padding: 0\n    },\n    sanitize : true,\n    sanitizeFn : null,\n    whiteList : DefaultWhitelist\n  }\n\n  Tooltip.prototype.init = function (type, element, options) {\n    this.enabled   = true\n    this.type      = type\n    this.$element  = $(element)\n    this.options   = this.getOptions(options)\n    this.$viewport = this.options.viewport && $(document).find($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))\n    this.inState   = { click: false, hover: false, focus: false }\n\n    if (this.$element[0] instanceof document.constructor && !this.options.selector) {\n      throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')\n    }\n\n    var triggers = this.options.trigger.split(' ')\n\n    for (var i = triggers.length; i--;) {\n      var trigger = triggers[i]\n\n      if (trigger == 'click') {\n        this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))\n      } else if (trigger != 'manual') {\n        var eventIn  = trigger == 'hover' ? 'mouseenter' : 'focusin'\n        var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'\n\n        this.$element.on(eventIn  + '.' + this.type, this.options.selector, $.proxy(this.enter, this))\n        this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))\n      }\n    }\n\n    this.options.selector ?\n      (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :\n      this.fixTitle()\n  }\n\n  Tooltip.prototype.getDefaults = function () {\n    return Tooltip.DEFAULTS\n  }\n\n  Tooltip.prototype.getOptions = function (options) {\n    var dataAttributes = this.$element.data()\n\n    for (var dataAttr in dataAttributes) {\n      if (dataAttributes.hasOwnProperty(dataAttr) && $.inArray(dataAttr, DISALLOWED_ATTRIBUTES) !== -1) {\n        delete dataAttributes[dataAttr]\n      }\n    }\n\n    options = $.extend({}, this.getDefaults(), dataAttributes, options)\n\n    if (options.delay && typeof options.delay == 'number') {\n      options.delay = {\n        show: options.delay,\n        hide: options.delay\n      }\n    }\n\n    if (options.sanitize) {\n      options.template = sanitizeHtml(options.template, options.whiteList, options.sanitizeFn)\n    }\n\n    return options\n  }\n\n  Tooltip.prototype.getDelegateOptions = function () {\n    var options  = {}\n    var defaults = this.getDefaults()\n\n    this._options && $.each(this._options, function (key, value) {\n      if (defaults[key] != value) options[key] = value\n    })\n\n    return options\n  }\n\n  Tooltip.prototype.enter = function (obj) {\n    var self = obj instanceof this.constructor ?\n      obj : $(obj.currentTarget).data('bs.' + this.type)\n\n    if (!self) {\n      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n      $(obj.currentTarget).data('bs.' + this.type, self)\n    }\n\n    if (obj instanceof $.Event) {\n      self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true\n    }\n\n    if (self.tip().hasClass('in') || self.hoverState == 'in') {\n      self.hoverState = 'in'\n      return\n    }\n\n    clearTimeout(self.timeout)\n\n    self.hoverState = 'in'\n\n    if (!self.options.delay || !self.options.delay.show) return self.show()\n\n    self.timeout = setTimeout(function () {\n      if (self.hoverState == 'in') self.show()\n    }, self.options.delay.show)\n  }\n\n  Tooltip.prototype.isInStateTrue = function () {\n    for (var key in this.inState) {\n      if (this.inState[key]) return true\n    }\n\n    return false\n  }\n\n  Tooltip.prototype.leave = function (obj) {\n    var self = obj instanceof this.constructor ?\n      obj : $(obj.currentTarget).data('bs.' + this.type)\n\n    if (!self) {\n      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n      $(obj.currentTarget).data('bs.' + this.type, self)\n    }\n\n    if (obj instanceof $.Event) {\n      self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false\n    }\n\n    if (self.isInStateTrue()) return\n\n    clearTimeout(self.timeout)\n\n    self.hoverState = 'out'\n\n    if (!self.options.delay || !self.options.delay.hide) return self.hide()\n\n    self.timeout = setTimeout(function () {\n      if (self.hoverState == 'out') self.hide()\n    }, self.options.delay.hide)\n  }\n\n  Tooltip.prototype.show = function () {\n    var e = $.Event('show.bs.' + this.type)\n\n    if (this.hasContent() && this.enabled) {\n      this.$element.trigger(e)\n\n      var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])\n      if (e.isDefaultPrevented() || !inDom) return\n      var that = this\n\n      var $tip = this.tip()\n\n      var tipId = this.getUID(this.type)\n\n      this.setContent()\n      $tip.attr('id', tipId)\n      this.$element.attr('aria-describedby', tipId)\n\n      if (this.options.animation) $tip.addClass('fade')\n\n      var placement = typeof this.options.placement == 'function' ?\n        this.options.placement.call(this, $tip[0], this.$element[0]) :\n        this.options.placement\n\n      var autoToken = /\\s?auto?\\s?/i\n      var autoPlace = autoToken.test(placement)\n      if (autoPlace) placement = placement.replace(autoToken, '') || 'top'\n\n      $tip\n        .detach()\n        .css({ top: 0, left: 0, display: 'block' })\n        .addClass(placement)\n        .data('bs.' + this.type, this)\n\n      this.options.container ? $tip.appendTo($(document).find(this.options.container)) : $tip.insertAfter(this.$element)\n      this.$element.trigger('inserted.bs.' + this.type)\n\n      var pos          = this.getPosition()\n      var actualWidth  = $tip[0].offsetWidth\n      var actualHeight = $tip[0].offsetHeight\n\n      if (autoPlace) {\n        var orgPlacement = placement\n        var viewportDim = this.getPosition(this.$viewport)\n\n        placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top'    :\n                    placement == 'top'    && pos.top    - actualHeight < viewportDim.top    ? 'bottom' :\n                    placement == 'right'  && pos.right  + actualWidth  > viewportDim.width  ? 'left'   :\n                    placement == 'left'   && pos.left   - actualWidth  < viewportDim.left   ? 'right'  :\n                    placement\n\n        $tip\n          .removeClass(orgPlacement)\n          .addClass(placement)\n      }\n\n      var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)\n\n      this.applyPlacement(calculatedOffset, placement)\n\n      var complete = function () {\n        var prevHoverState = that.hoverState\n        that.$element.trigger('shown.bs.' + that.type)\n        that.hoverState = null\n\n        if (prevHoverState == 'out') that.leave(that)\n      }\n\n      $.support.transition && this.$tip.hasClass('fade') ?\n        $tip\n          .one('bsTransitionEnd', complete)\n          .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n        complete()\n    }\n  }\n\n  Tooltip.prototype.applyPlacement = function (offset, placement) {\n    var $tip   = this.tip()\n    var width  = $tip[0].offsetWidth\n    var height = $tip[0].offsetHeight\n\n    // manually read margins because getBoundingClientRect includes difference\n    var marginTop = parseInt($tip.css('margin-top'), 10)\n    var marginLeft = parseInt($tip.css('margin-left'), 10)\n\n    // we must check for NaN for ie 8/9\n    if (isNaN(marginTop))  marginTop  = 0\n    if (isNaN(marginLeft)) marginLeft = 0\n\n    offset.top  += marginTop\n    offset.left += marginLeft\n\n    // $.fn.offset doesn't round pixel values\n    // so we use setOffset directly with our own function B-0\n    $.offset.setOffset($tip[0], $.extend({\n      using: function (props) {\n        $tip.css({\n          top: Math.round(props.top),\n          left: Math.round(props.left)\n        })\n      }\n    }, offset), 0)\n\n    $tip.addClass('in')\n\n    // check to see if placing tip in new offset caused the tip to resize itself\n    var actualWidth  = $tip[0].offsetWidth\n    var actualHeight = $tip[0].offsetHeight\n\n    if (placement == 'top' && actualHeight != height) {\n      offset.top = offset.top + height - actualHeight\n    }\n\n    var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)\n\n    if (delta.left) offset.left += delta.left\n    else offset.top += delta.top\n\n    var isVertical          = /top|bottom/.test(placement)\n    var arrowDelta          = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight\n    var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'\n\n    $tip.offset(offset)\n    this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)\n  }\n\n  Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {\n    this.arrow()\n      .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')\n      .css(isVertical ? 'top' : 'left', '')\n  }\n\n  Tooltip.prototype.setContent = function () {\n    var $tip  = this.tip()\n    var title = this.getTitle()\n\n    if (this.options.html) {\n      if (this.options.sanitize) {\n        title = sanitizeHtml(title, this.options.whiteList, this.options.sanitizeFn)\n      }\n\n      $tip.find('.tooltip-inner').html(title)\n    } else {\n      $tip.find('.tooltip-inner').text(title)\n    }\n\n    $tip.removeClass('fade in top bottom left right')\n  }\n\n  Tooltip.prototype.hide = function (callback) {\n    var that = this\n    var $tip = $(this.$tip)\n    var e    = $.Event('hide.bs.' + this.type)\n\n    function complete() {\n      if (that.hoverState != 'in') $tip.detach()\n      if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.\n        that.$element\n          .removeAttr('aria-describedby')\n          .trigger('hidden.bs.' + that.type)\n      }\n      callback && callback()\n    }\n\n    this.$element.trigger(e)\n\n    if (e.isDefaultPrevented()) return\n\n    $tip.removeClass('in')\n\n    $.support.transition && $tip.hasClass('fade') ?\n      $tip\n        .one('bsTransitionEnd', complete)\n        .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n      complete()\n\n    this.hoverState = null\n\n    return this\n  }\n\n  Tooltip.prototype.fixTitle = function () {\n    var $e = this.$element\n    if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {\n      $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')\n    }\n  }\n\n  Tooltip.prototype.hasContent = function () {\n    return this.getTitle()\n  }\n\n  Tooltip.prototype.getPosition = function ($element) {\n    $element   = $element || this.$element\n\n    var el     = $element[0]\n    var isBody = el.tagName == 'BODY'\n\n    var elRect    = el.getBoundingClientRect()\n    if (elRect.width == null) {\n      // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093\n      elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })\n    }\n    var isSvg = window.SVGElement && el instanceof window.SVGElement\n    // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.\n    // See https://github.com/twbs/bootstrap/issues/20280\n    var elOffset  = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset())\n    var scroll    = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }\n    var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null\n\n    return $.extend({}, elRect, scroll, outerDims, elOffset)\n  }\n\n  Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {\n    return placement == 'bottom' ? { top: pos.top + pos.height,   left: pos.left + pos.width / 2 - actualWidth / 2 } :\n           placement == 'top'    ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n           placement == 'left'   ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :\n        /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }\n\n  }\n\n  Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {\n    var delta = { top: 0, left: 0 }\n    if (!this.$viewport) return delta\n\n    var viewportPadding = this.options.viewport && this.options.viewport.padding || 0\n    var viewportDimensions = this.getPosition(this.$viewport)\n\n    if (/right|left/.test(placement)) {\n      var topEdgeOffset    = pos.top - viewportPadding - viewportDimensions.scroll\n      var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight\n      if (topEdgeOffset < viewportDimensions.top) { // top overflow\n        delta.top = viewportDimensions.top - topEdgeOffset\n      } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow\n        delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset\n      }\n    } else {\n      var leftEdgeOffset  = pos.left - viewportPadding\n      var rightEdgeOffset = pos.left + viewportPadding + actualWidth\n      if (leftEdgeOffset < viewportDimensions.left) { // left overflow\n        delta.left = viewportDimensions.left - leftEdgeOffset\n      } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow\n        delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset\n      }\n    }\n\n    return delta\n  }\n\n  Tooltip.prototype.getTitle = function () {\n    var title\n    var $e = this.$element\n    var o  = this.options\n\n    title = $e.attr('data-original-title')\n      || (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title)\n\n    return title\n  }\n\n  Tooltip.prototype.getUID = function (prefix) {\n    do prefix += ~~(Math.random() * 1000000)\n    while (document.getElementById(prefix))\n    return prefix\n  }\n\n  Tooltip.prototype.tip = function () {\n    if (!this.$tip) {\n      this.$tip = $(this.options.template)\n      if (this.$tip.length != 1) {\n        throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')\n      }\n    }\n    return this.$tip\n  }\n\n  Tooltip.prototype.arrow = function () {\n    return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))\n  }\n\n  Tooltip.prototype.enable = function () {\n    this.enabled = true\n  }\n\n  Tooltip.prototype.disable = function () {\n    this.enabled = false\n  }\n\n  Tooltip.prototype.toggleEnabled = function () {\n    this.enabled = !this.enabled\n  }\n\n  Tooltip.prototype.toggle = function (e) {\n    var self = this\n    if (e) {\n      self = $(e.currentTarget).data('bs.' + this.type)\n      if (!self) {\n        self = new this.constructor(e.currentTarget, this.getDelegateOptions())\n        $(e.currentTarget).data('bs.' + this.type, self)\n      }\n    }\n\n    if (e) {\n      self.inState.click = !self.inState.click\n      if (self.isInStateTrue()) self.enter(self)\n      else self.leave(self)\n    } else {\n      self.tip().hasClass('in') ? self.leave(self) : self.enter(self)\n    }\n  }\n\n  Tooltip.prototype.destroy = function () {\n    var that = this\n    clearTimeout(this.timeout)\n    this.hide(function () {\n      that.$element.off('.' + that.type).removeData('bs.' + that.type)\n      if (that.$tip) {\n        that.$tip.detach()\n      }\n      that.$tip = null\n      that.$arrow = null\n      that.$viewport = null\n      that.$element = null\n    })\n  }\n\n  Tooltip.prototype.sanitizeHtml = function (unsafeHtml) {\n    return sanitizeHtml(unsafeHtml, this.options.whiteList, this.options.sanitizeFn)\n  }\n\n  // TOOLTIP PLUGIN DEFINITION\n  // =========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.tooltip')\n      var options = typeof option == 'object' && option\n\n      if (!data && /destroy|hide/.test(option)) return\n      if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.tooltip\n\n  $.fn.tooltip             = Plugin\n  $.fn.tooltip.Constructor = Tooltip\n\n\n  // TOOLTIP NO CONFLICT\n  // ===================\n\n  $.fn.tooltip.noConflict = function () {\n    $.fn.tooltip = old\n    return this\n  }\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: popover.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#popovers\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // POPOVER PUBLIC CLASS DEFINITION\n  // ===============================\n\n  var Popover = function (element, options) {\n    this.init('popover', element, options)\n  }\n\n  if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')\n\n  Popover.VERSION  = '3.4.1'\n\n  Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {\n    placement: 'right',\n    trigger: 'click',\n    content: '',\n    template: '<div class=\"popover\" role=\"tooltip\"><div class=\"arrow\"></div><h3 class=\"popover-title\"></h3><div class=\"popover-content\"></div></div>'\n  })\n\n\n  // NOTE: POPOVER EXTENDS tooltip.js\n  // ================================\n\n  Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)\n\n  Popover.prototype.constructor = Popover\n\n  Popover.prototype.getDefaults = function () {\n    return Popover.DEFAULTS\n  }\n\n  Popover.prototype.setContent = function () {\n    var $tip    = this.tip()\n    var title   = this.getTitle()\n    var content = this.getContent()\n\n    if (this.options.html) {\n      var typeContent = typeof content\n\n      if (this.options.sanitize) {\n        title = this.sanitizeHtml(title)\n\n        if (typeContent === 'string') {\n          content = this.sanitizeHtml(content)\n        }\n      }\n\n      $tip.find('.popover-title').html(title)\n      $tip.find('.popover-content').children().detach().end()[\n        typeContent === 'string' ? 'html' : 'append'\n      ](content)\n    } else {\n      $tip.find('.popover-title').text(title)\n      $tip.find('.popover-content').children().detach().end().text(content)\n    }\n\n    $tip.removeClass('fade top bottom left right in')\n\n    // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do\n    // this manually by checking the contents.\n    if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()\n  }\n\n  Popover.prototype.hasContent = function () {\n    return this.getTitle() || this.getContent()\n  }\n\n  Popover.prototype.getContent = function () {\n    var $e = this.$element\n    var o  = this.options\n\n    return $e.attr('data-content')\n      || (typeof o.content == 'function' ?\n        o.content.call($e[0]) :\n        o.content)\n  }\n\n  Popover.prototype.arrow = function () {\n    return (this.$arrow = this.$arrow || this.tip().find('.arrow'))\n  }\n\n\n  // POPOVER PLUGIN DEFINITION\n  // =========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.popover')\n      var options = typeof option == 'object' && option\n\n      if (!data && /destroy|hide/.test(option)) return\n      if (!data) $this.data('bs.popover', (data = new Popover(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.popover\n\n  $.fn.popover             = Plugin\n  $.fn.popover.Constructor = Popover\n\n\n  // POPOVER NO CONFLICT\n  // ===================\n\n  $.fn.popover.noConflict = function () {\n    $.fn.popover = old\n    return this\n  }\n\n}(jQuery);\n","(function (root, factory) {\n    if (typeof define === 'function' && define.amd) {\n        // AMD\n        define(['jquery'], factory);\n    } else if (typeof exports === 'object') {\n        // Node, CommonJS-like\n        module.exports = factory(require('jquery'));\n    } else {\n        // Browser globals (root is window)\n        root.Breakpoint = factory(root.jQuery);\n    }\n}(this, function ($) {\n    var _win = $(window);\n    var _breakpoints;\n    var _currentBreakpoint;\n    var _defaults = {\n        xs: {\n            min: 0,\n            max: 767\n        },\n        sm: {\n            min: 768,\n            max: 991\n        },\n        md: {\n            min: 992,\n            max: 1199\n        },\n        lg: {\n            min: 1200,\n            max: Infinity\n        }\n    };\n\n    var _validate = function (breakpoint) {\n        if (!_breakpoints[breakpoint]) {\n            throw new Error('Invalid breakpoint');\n        }\n    };\n\n    var _onResize = function () {\n        var oldBreakpoint = _currentBreakpoint;\n        // we need to use innerWidth because of scrollbars\n        // this is ie9 +\n        // ie8 support would require to create extra element\n        var viewport = _win[0].innerWidth;\n        for (var breakpoint in _breakpoints) {\n            if (viewport >= _breakpoints[breakpoint].min &&\n                viewport <= _breakpoints[breakpoint].max) {\n                _currentBreakpoint = breakpoint;\n                if (_currentBreakpoint !== oldBreakpoint) {\n                    _win.trigger('change:breakpoint', [_currentBreakpoint, oldBreakpoint || 'xs']);\n                }\n            }\n        }\n    };\n\n    var _initWatch = function () {\n        _win.on('resize.bootstrap.breakpoints', _onResize);\n        _onResize();\n    };\n\n    var getBreakpoints = function () {\n        return _breakpoints;\n    };\n\n    var is = function (breakpoint) {\n        _validate(breakpoint);\n        return (_currentBreakpoint === breakpoint);\n    };\n\n    var current = function () {\n        return _currentBreakpoint;\n    };\n\n    var init = function (breakpoints) {\n        _breakpoints = $.extend(true, _defaults, breakpoints);\n        //making sure that we don't have millions of handlers in case of multiple inits\n        destroy();\n        _initWatch();\n    };\n\n    var destroy = function () {\n        _win.off('resize.bootstrap.breakpoints');\n        _currentBreakpoint = undefined;\n    };\n\n    return {\n        init: init,\n        destroy: destroy,\n        is: is,\n        current: current,\n        getBreakpoints: getBreakpoints\n    };\n}));\n","import Breakpoint from 'bootstrap-breakpoints'\n\nBreakpoint.init()\n\nexport default Breakpoint\n","import $ from 'jquery'\nimport Breakpoint from './responsive'\n\nfunction preventTouchScrolling(element, namespace) {\n  element.on('touchmove.cms.preventscroll.' + namespace, function (e) {\n    e.preventDefault()\n  })\n}\n\nfunction allowTouchScrolling(element, namespace) {\n  element.off('touchmove.cms.preventscroll.' + namespace)\n}\n\nfunction isMobileMenu() {\n  return Breakpoint.is('xs') || Breakpoint.is('sm')\n}\n\nexport function initDesktopMenu() {\n  // when hovering over top level items on large screens - toggle dropdown programmatically\n  const topLevelDropdowns = $('.navbar-main > .navbar-nav > .dropdown')\n\n  topLevelDropdowns.on('mouseenter mouseleave', function (e) {\n    if (isMobileMenu()) {\n      return\n    }\n\n    if (e.type === 'mouseenter') {\n      $(this).addClass('open').attr('aria-expanded', true)\n    } else {\n      setTimeout(() => {\n        $(this).removeClass('open').removeAttr('aria-expanded')\n      }, 300)\n    }\n  })\n\n  topLevelDropdowns.on('touchstart click', function (e) {\n    if (isMobileMenu()) {\n      return\n    }\n\n    const dropdownToggle = $(this)\n\n    // touchstart normally happens before click,\n    // that's the only reliable way to detect if the device\n    // was operated with touch (normally windows tablets and ipad pro)\n    if (e.type === 'touchstart') {\n      dropdownToggle.data('just-touched', true)\n    }\n    if (e.type === 'click') {\n      if (dropdownToggle.data('just-touched')) {\n        e.preventDefault()\n        dropdownToggle.data('just-touched', false)\n      }\n    }\n  })\n\n  $(window)\n    .on('change:breakpoint', function () {\n      if (isMobileMenu()) {\n        // init dropdowns\n        topLevelDropdowns.find('> a').attr('data-toggle', 'dropdown').dropdown()\n      } else {\n        // At this point we need to destroy dropdowns because it prevents the default\n        // action on the toggle (opening a link), and since\n        // bootstrap doesn't support \"hover\" dropdowns and it doesn't have destroy\n        // method we have to do it manually\n        topLevelDropdowns.find('> a').removeAttr('data-toggle').off('click.bs.dropdown').data('bs.dropdown', null)\n      }\n    })\n    .trigger('change:breakpoint', [Breakpoint.current()])\n}\n\nexport function initMobileMenu() {\n  const toggle = $('.js-header-nav-toggle')\n  const mobileMenu = $('.js-navbar-header')\n  const html = $('html')\n\n  // close button lives outside it's normal place so we toggle it manually\n  mobileMenu.on('show.bs.collapse hide.bs.collapse', () => {\n    toggle.toggleClass('collapsed')\n    html.toggleClass('mobile-menu-open')\n\n    if (html.hasClass('mobile-menu-open')) {\n      preventTouchScrolling(html)\n    } else {\n      allowTouchScrolling(html)\n    }\n  })\n\n  $('.header .dropdown').on('show.bs.dropdown hide.bs.dropdown', (e) => {\n    const currentDropdown = $(e.target)\n\n    // by default bootstrap closes all the dropdowns, so we need to keep parents open\n    // when we are deep in it\n    currentDropdown.parents('.dropdown').addClass('open').attr('aria-expanded', true)\n  })\n\n  $('.megamenu-links-title').on('click', (e) => {\n    if (!isMobileMenu()) {\n      e.stopPropagation()\n    }\n  })\n\n  // when opening other header dropdowns - hide the mobile menu\n  $('.country-picker.dropdown, .header-top-menu-waffle.dropdown, .header-search-form.dropdown').on(\n    'show.bs.dropdown',\n    () => {\n      mobileMenu.collapse('hide')\n    }\n  )\n\n  // Back button navigation in mobile menu (delegated event)\n  $('.megamenu-mobile-title-link').on('click', '.js-megamenu-mobile-back', function (e) {\n    e.preventDefault()\n    e.stopPropagation()\n\n    const backButton = $(this)\n    const currentDropdown = backButton.closest('.dropdown')\n\n    if (currentDropdown.length) {\n      // Remove the open class and aria-expanded\n      currentDropdown.removeClass('open')\n      const dropdownToggle = currentDropdown.find('> .dropdown-toggle, > a[data-toggle=\"dropdown\"]')\n      dropdownToggle.attr('aria-expanded', 'false')\n    }\n  })\n\n  // Allow title link clicks to work in mobile menu\n  $('.megamenu-mobile-title-link').on('click', function (e) {\n    // Allow default link behavior (navigate to page)\n    // Stop propagation to prevent dropdown toggle\n    e.stopPropagation()\n  })\n\n  $('.navbar-collapse').on('touchmove', (e) => {\n    if (html.hasClass('mobile-menu-open')) {\n      e.stopPropagation()\n    }\n  })\n}\n","import { scrollTo } from './utils'\n\nexport function initAccordions(selector = '.panel .panel-collapse') {\n  $(selector).each((i, el) => {\n    $(el).on('shown.bs.collapse', (e) => {\n      const { top } = $(e.currentTarget).closest('.panel').offset()\n      let offset = 0\n\n      if ($('html').hasClass('cms-toolbar-expanded')) {\n        offset = 45\n      }\n\n      scrollTo(top - offset)\n    })\n  })\n}\n","import $ from 'jquery'\n\nfunction initPostsByAuthorLink() {\n  const link = $('.js-blog-filter-expand-link')\n\n  link.on('click', (e) => {\n    e.preventDefault()\n    e.stopPropagation()\n\n    $(e.target).hide().prev('ul').children('li').show()\n  })\n}\n\nexport function initBlog() {\n  initPostsByAuthorLink()\n}\n","/*! js-cookie v3.0.8 | MIT */\nfunction assign (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n    for (var key in source) {\n      if (key === '__proto__') continue\n      target[key] = source[key];\n    }\n  }\n  return target\n}\n\nvar defaultConverter = {\n  read: function (value) {\n    if (value[0] === '\"') {\n      value = value.slice(1, -1);\n    }\n    return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n  },\n  write: function (value) {\n    return encodeURIComponent(value).replace(\n      /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n      decodeURIComponent\n    )\n  }\n};\n\nfunction init(converter, defaultAttributes) {\n  function set(name, value, attributes) {\n    if (typeof document === 'undefined') {\n      return\n    }\n\n    attributes = assign({}, defaultAttributes, attributes);\n\n    if (typeof attributes.expires === 'number') {\n      attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n    }\n    if (attributes.expires) {\n      attributes.expires = attributes.expires.toUTCString();\n    }\n\n    name = encodeURIComponent(name)\n      .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n      .replace(/[()]/g, escape);\n\n    var stringifiedAttributes = '';\n    for (var attributeName in attributes) {\n      if (!attributes[attributeName]) {\n        continue\n      }\n\n      stringifiedAttributes += '; ' + attributeName;\n\n      if (attributes[attributeName] === true) {\n        continue\n      }\n\n      // Considers RFC 6265 section 5.2:\n      // ...\n      // 3.  If the remaining unparsed-attributes contains a %x3B (\";\")\n      //     character:\n      // Consume the characters of the unparsed-attributes up to,\n      // not including, the first %x3B (\";\") character.\n      // ...\n      stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n    }\n\n    return (document.cookie =\n      name + '=' + converter.write(value, name) + stringifiedAttributes)\n  }\n\n  function get(name) {\n    if (typeof document === 'undefined' || (arguments.length && !name)) {\n      return\n    }\n\n    // To prevent the for loop in the first place assign an empty array\n    // in case there are no cookies at all.\n    var cookies = document.cookie ? document.cookie.split('; ') : [];\n    var jar = {};\n    for (var i = 0; i < cookies.length; i++) {\n      var parts = cookies[i].split('=');\n      var value = parts.slice(1).join('=');\n\n      try {\n        var found = decodeURIComponent(parts[0]);\n        if (!(found in jar)) jar[found] = converter.read(value, found);\n        if (name === found) {\n          break\n        }\n      } catch (_e) {\n        // Do nothing...\n      }\n    }\n\n    return name ? jar[name] : jar\n  }\n\n  return Object.create(\n    {\n      set: set,\n      get: get,\n      remove: function (name, attributes) {\n        set(\n          name,\n          '',\n          assign({}, attributes, {\n            expires: -1\n          })\n        );\n      },\n      withAttributes: function (attributes) {\n        return init(this.converter, assign({}, this.attributes, attributes))\n      },\n      withConverter: function (converter) {\n        return init(assign({}, this.converter, converter), this.attributes)\n      }\n    },\n    {\n      attributes: { value: Object.freeze(defaultAttributes) },\n      converter: { value: Object.freeze(converter) }\n    }\n  )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n\nexport { api as default };\n","import $ from 'jquery'\nimport Cookies from 'js-cookie'\n\n// @TODO: Not used, can go away\nexport function initCookiePolicy() {\n  if (Cookies.get('shown-cookie-policy') && !window.location.href.match(/show-cookie-policy/)) {\n    return\n  }\n\n  const policy = $('.js-cookie-policy')\n  const close = $('.js-cookie-policy-close')\n\n  policy.show()\n  Cookies.set('shown-cookie-policy', 1)\n\n  close.on('click', (e) => {\n    e.preventDefault()\n\n    $('.js-cookie-policy').remove()\n  })\n}\n","/*!\n * jQuery Validation Plugin v1.22.1\n *\n * https://jqueryvalidation.org/\n *\n * Copyright (c) 2026 Jörn Zaefferer\n * Released under the MIT license\n */\n(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"./jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n( function() {\n\n\tfunction stripHtml( value ) {\n\n\t\t// Remove html tags and space chars\n\t\treturn value.replace( /<.[^<>]*?>/g, \" \" ).replace( /&nbsp;|&#160;/gi, \" \" )\n\n\t\t// Remove punctuation\n\t\t.replace( /[.(),;:!?%#$'\\\"_+=\\/\\-“”’]*/g, \"\" );\n\t}\n\n\t$.validator.addMethod( \"maxWords\", function( value, element, params ) {\n\t\treturn this.optional( element ) || stripHtml( value ).match( /\\b\\w+\\b/g ).length <= params;\n\t}, $.validator.format( \"Please enter {0} words or less.\" ) );\n\n\t$.validator.addMethod( \"minWords\", function( value, element, params ) {\n\t\treturn this.optional( element ) || stripHtml( value ).match( /\\b\\w+\\b/g ).length >= params;\n\t}, $.validator.format( \"Please enter at least {0} words.\" ) );\n\n\t$.validator.addMethod( \"rangeWords\", function( value, element, params ) {\n\t\tvar valueStripped = stripHtml( value ),\n\t\t\tregex = /\\b\\w+\\b/g;\n\t\treturn this.optional( element ) || valueStripped.match( regex ).length >= params[ 0 ] && valueStripped.match( regex ).length <= params[ 1 ];\n\t}, $.validator.format( \"Please enter between {0} and {1} words.\" ) );\n\n}() );\n\n/**\n * This is used in the United States to process payments, deposits,\n * or transfers using the Automated Clearing House (ACH) or Fedwire\n * systems. A very common use case would be to validate a form for\n * an ACH bill payment.\n */\n$.validator.addMethod( \"abaRoutingNumber\", function( value ) {\n\tvar checksum = 0;\n\tvar tokens = value.split( \"\" );\n\tvar length = tokens.length;\n\n\t// Length Check\n\tif ( length !== 9 ) {\n\t\treturn false;\n\t}\n\n\t// Calc the checksum\n\t// https://en.wikipedia.org/wiki/ABA_routing_transit_number\n\tfor ( var i = 0; i < length; i += 3 ) {\n\t\tchecksum +=\tparseInt( tokens[ i ], 10 )     * 3 +\n\t\t\t\t\tparseInt( tokens[ i + 1 ], 10 ) * 7 +\n\t\t\t\t\tparseInt( tokens[ i + 2 ], 10 );\n\t}\n\n\t// If not zero and divisible by 10 then valid\n\tif ( checksum !== 0 && checksum % 10 === 0 ) {\n\t\treturn true;\n\t}\n\n\treturn false;\n}, \"Please enter a valid routing number.\" );\n\n// Accept a value from a file input based on a required mimetype\n$.validator.addMethod( \"accept\", function( value, element, param ) {\n\n\t// Split mime on commas in case we have multiple types we can accept\n\tvar typeParam = typeof param === \"string\" ? param.replace( /\\s/g, \"\" ) : \"image/*\",\n\t\toptionalValue = this.optional( element ),\n\t\ti, file, regex;\n\n\t// Element is optional\n\tif ( optionalValue ) {\n\t\treturn optionalValue;\n\t}\n\n\tif ( $( element ).attr( \"type\" ) === \"file\" ) {\n\n\t\t// Escape string to be used in the regex\n\t\t// see: https://stackoverflow.com/questions/3446170/escape-string-for-use-in-javascript-regex\n\t\t// Escape also \"/*\" as \"/.*\" as a wildcard\n\t\ttypeParam = typeParam\n\t\t\t\t.replace( /[\\-\\[\\]\\/\\{\\}\\(\\)\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\" )\n\t\t\t\t.replace( /,/g, \"|\" )\n\t\t\t\t.replace( /\\/\\*/g, \"/.*\" );\n\n\t\t// Check if the element has a FileList before checking each file\n\t\tif ( element.files && element.files.length ) {\n\t\t\tregex = new RegExp( \".?(\" + typeParam + \")$\", \"i\" );\n\t\t\tfor ( i = 0; i < element.files.length; i++ ) {\n\t\t\t\tfile = element.files[ i ];\n\n\t\t\t\t// Grab the mimetype from the loaded file, verify it matches\n\t\t\t\tif ( !file.type.match( regex ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Either return true because we've validated each file, or because the\n\t// browser does not support element.files and the FileList feature\n\treturn true;\n}, $.validator.format( \"Please enter a value with a valid mimetype.\" ) );\n\n$.validator.addMethod( \"alphanumeric\", function( value, element ) {\n\treturn this.optional( element ) || /^\\w+$/i.test( value );\n}, \"Letters, numbers, and underscores only please.\" );\n\n/*\n * Dutch bank account numbers (not 'giro' numbers) have 9 digits\n * and pass the '11 check'.\n * We accept the notation with spaces, as that is common.\n * acceptable: 123456789 or 12 34 56 789\n */\n$.validator.addMethod( \"bankaccountNL\", function( value, element ) {\n\tif ( this.optional( element ) ) {\n\t\treturn true;\n\t}\n\tif ( !( /^[0-9]{9}|([0-9]{2} ){3}[0-9]{3}$/.test( value ) ) ) {\n\t\treturn false;\n\t}\n\n\t// Now '11 check'\n\tvar account = value.replace( / /g, \"\" ), // Remove spaces\n\t\tsum = 0,\n\t\tlen = account.length,\n\t\tpos, factor, digit;\n\tfor ( pos = 0; pos < len; pos++ ) {\n\t\tfactor = len - pos;\n\t\tdigit = account.substring( pos, pos + 1 );\n\t\tsum = sum + factor * digit;\n\t}\n\treturn sum % 11 === 0;\n}, \"Please specify a valid bank account number.\" );\n\n$.validator.addMethod( \"bankorgiroaccountNL\", function( value, element ) {\n\treturn this.optional( element ) ||\n\t\t\t( $.validator.methods.bankaccountNL.call( this, value, element ) ) ||\n\t\t\t( $.validator.methods.giroaccountNL.call( this, value, element ) );\n}, \"Please specify a valid bank or giro account number.\" );\n\n/**\n * BIC is the business identifier code (ISO 9362). This BIC check is not a guarantee for authenticity.\n *\n * BIC pattern: BBBBCCLLbbb (8 or 11 characters long; bbb is optional)\n *\n * Validation is case-insensitive. Please make sure to normalize input yourself.\n *\n * BIC definition in detail:\n * - First 4 characters - bank code (only letters)\n * - Next 2 characters - ISO 3166-1 alpha-2 country code (only letters)\n * - Next 2 characters - location code (letters and digits)\n *   a. shall not start with '0' or '1'\n *   b. second character must be a letter ('O' is not allowed) or digit ('0' for test (therefore not allowed), '1' denoting passive participant, '2' typically reverse-billing)\n * - Last 3 characters - branch code, optional (shall not start with 'X' except in case of 'XXX' for primary office) (letters and digits)\n */\n$.validator.addMethod( \"bic\", function( value, element ) {\n    return this.optional( element ) || /^([A-Z]{6}[A-Z2-9][A-NP-Z1-9])(X{3}|[A-WY-Z0-9][A-Z0-9]{2})?$/.test( value.toUpperCase() );\n}, \"Please specify a valid BIC code.\" );\n\n/*\n * Código de identificación fiscal ( CIF ) is the tax identification code for Spanish legal entities\n * Further rules can be found in Spanish on http://es.wikipedia.org/wiki/C%C3%B3digo_de_identificaci%C3%B3n_fiscal\n *\n * Spanish CIF structure:\n *\n * [ T ][ P ][ P ][ N ][ N ][ N ][ N ][ N ][ C ]\n *\n * Where:\n *\n * T: 1 character. Kind of Organization Letter: [ABCDEFGHJKLMNPQRSUVW]\n * P: 2 characters. Province.\n * N: 5 characters. Secuencial Number within the province.\n * C: 1 character. Control Digit: [0-9A-J].\n *\n * [ T ]: Kind of Organizations. Possible values:\n *\n *   A. Corporations\n *   B. LLCs\n *   C. General partnerships\n *   D. Companies limited partnerships\n *   E. Communities of goods\n *   F. Cooperative Societies\n *   G. Associations\n *   H. Communities of homeowners in horizontal property regime\n *   J. Civil Societies\n *   K. Old format\n *   L. Old format\n *   M. Old format\n *   N. Nonresident entities\n *   P. Local authorities\n *   Q. Autonomous bodies, state or not, and the like, and congregations and religious institutions\n *   R. Congregations and religious institutions (since 2008 ORDER EHA/451/2008)\n *   S. Organs of State Administration and regions\n *   V. Agrarian Transformation\n *   W. Permanent establishments of non-resident in Spain\n *\n * [ C ]: Control Digit. It can be a number or a letter depending on T value:\n * [ T ]  -->  [ C ]\n * ------    ----------\n *   A         Number\n *   B         Number\n *   E         Number\n *   H         Number\n *   K         Letter\n *   P         Letter\n *   Q         Letter\n *   S         Letter\n *\n */\n$.validator.addMethod( \"cifES\", function( value, element ) {\n\t\"use strict\";\n\n\tif ( this.optional( element ) ) {\n\t\treturn true;\n\t}\n\n\tvar cifRegEx = new RegExp( /^([ABCDEFGHJKLMNPQRSUVW])(\\d{7})([0-9A-J])$/gi );\n\tvar letter  = value.substring( 0, 1 ), // [ T ]\n\t\tnumber  = value.substring( 1, 8 ), // [ P ][ P ][ N ][ N ][ N ][ N ][ N ]\n\t\tcontrol = value.substring( 8, 9 ), // [ C ]\n\t\tall_sum = 0,\n\t\teven_sum = 0,\n\t\todd_sum = 0,\n\t\ti, n,\n\t\tcontrol_digit,\n\t\tcontrol_letter;\n\n\tfunction isOdd( n ) {\n\t\treturn n % 2 === 0;\n\t}\n\n\t// Quick format test\n\tif ( value.length !== 9 || !cifRegEx.test( value ) ) {\n\t\treturn false;\n\t}\n\n\tfor ( i = 0; i < number.length; i++ ) {\n\t\tn = parseInt( number[ i ], 10 );\n\n\t\t// Odd positions\n\t\tif ( isOdd( i ) ) {\n\n\t\t\t// Odd positions are multiplied first.\n\t\t\tn *= 2;\n\n\t\t\t// If the multiplication is bigger than 10 we need to adjust\n\t\t\todd_sum += n < 10 ? n : n - 9;\n\n\t\t// Even positions\n\t\t// Just sum them\n\t\t} else {\n\t\t\teven_sum += n;\n\t\t}\n\t}\n\n\tall_sum = even_sum + odd_sum;\n\tcontrol_digit = ( 10 - ( all_sum ).toString().slice( -1 ) ).toString();\n\tcontrol_digit = parseInt( control_digit, 10 ) > 9 ? \"0\" : control_digit;\n\tcontrol_letter = \"JABCDEFGHI\".charAt( control_digit ).toString();\n\n\t// Control must be a digit\n\tif ( letter.match( /[ABEH]/ ) ) {\n\t\treturn control === control_digit;\n\n\t// Control must be a letter\n\t} else if ( letter.match( /[KPQS]/ ) ) {\n\t\treturn control === control_letter;\n\t}\n\n\t// Can be either\n\treturn control === control_digit || control === control_letter;\n\n}, \"Please specify a valid CIF number.\" );\n\n/*\n * Brazillian CNH number (Carteira Nacional de Habilitacao) is the License Driver number.\n * CNH numbers have 11 digits in total: 9 numbers followed by 2 check numbers that are being used for validation.\n */\n$.validator.addMethod( \"cnhBR\", function( value ) {\n\n  // Removing special characters from value\n  value = value.replace( /([~!@#$%^&*()_+=`{}\\[\\]\\-|\\\\:;'<>,.\\/? ])+/g, \"\" );\n\n  // Checking value to have 11 digits only\n  if ( value.length !== 11 ) {\n    return false;\n  }\n\n  var sum = 0, dsc = 0, firstChar,\n\t\tfirstCN, secondCN, i, j, v;\n\n  firstChar = value.charAt( 0 );\n\n  if ( new Array( 12 ).join( firstChar ) === value ) {\n    return false;\n  }\n\n  // Step 1 - using first Check Number:\n  for ( i = 0, j = 9, v = 0; i < 9; ++i, --j ) {\n    sum += +( value.charAt( i ) * j );\n  }\n\n  firstCN = sum % 11;\n  if ( firstCN >= 10 ) {\n    firstCN = 0;\n    dsc = 2;\n  }\n\n  sum = 0;\n  for ( i = 0, j = 1, v = 0; i < 9; ++i, ++j ) {\n    sum += +( value.charAt( i ) * j );\n  }\n\n  secondCN = sum % 11;\n  if ( secondCN >= 10 ) {\n    secondCN = 0;\n  } else {\n    secondCN = secondCN - dsc;\n  }\n\n  return ( String( firstCN ).concat( secondCN ) === value.substr( -2 ) );\n\n}, \"Please specify a valid CNH number.\" );\n\n/*\n * Brazillian value number (Cadastrado de Pessoas Juridica).\n * value numbers have 14 digits in total: 12 numbers followed by 2 check numbers that are being used for validation.\n */\n$.validator.addMethod( \"cnpjBR\", function( value, element ) {\n\t\"use strict\";\n\n\tif ( this.optional( element ) ) {\n\t\treturn true;\n\t}\n\n\t// Removing no number\n\tvalue = value.replace( /[^\\d]+/g, \"\" );\n\n\t// Checking value to have 14 digits only\n\tif ( value.length !== 14 ) {\n\t\treturn false;\n\t}\n\n\t// Elimina values invalidos conhecidos\n\tif ( value === \"00000000000000\" ||\n\t\tvalue === \"11111111111111\" ||\n\t\tvalue === \"22222222222222\" ||\n\t\tvalue === \"33333333333333\" ||\n\t\tvalue === \"44444444444444\" ||\n\t\tvalue === \"55555555555555\" ||\n\t\tvalue === \"66666666666666\" ||\n\t\tvalue === \"77777777777777\" ||\n\t\tvalue === \"88888888888888\" ||\n\t\tvalue === \"99999999999999\" ) {\n\t\treturn false;\n\t}\n\n\t// Valida DVs\n\tvar tamanho = ( value.length - 2 );\n\tvar numeros = value.substring( 0, tamanho );\n\tvar digitos = value.substring( tamanho );\n\tvar soma = 0;\n\tvar pos = tamanho - 7;\n\n\tfor ( var i = tamanho; i >= 1; i-- ) {\n\t\tsoma += numeros.charAt( tamanho - i ) * pos--;\n\t\tif ( pos < 2 ) {\n\t\t\tpos = 9;\n\t\t}\n\t}\n\n\tvar resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;\n\n\tif ( resultado !== parseInt( digitos.charAt( 0 ), 10 ) ) {\n\t\treturn false;\n\t}\n\n\ttamanho = tamanho + 1;\n\tnumeros = value.substring( 0, tamanho );\n\tsoma = 0;\n\tpos = tamanho - 7;\n\n\tfor ( var il = tamanho; il >= 1; il-- ) {\n\t\tsoma += numeros.charAt( tamanho - il ) * pos--;\n\t\tif ( pos < 2 ) {\n\t\t\tpos = 9;\n\t\t}\n\t}\n\n\tresultado = soma % 11 < 2 ? 0 : 11 - soma % 11;\n\n\tif ( resultado !== parseInt( digitos.charAt( 1 ), 10 ) ) {\n\t\treturn false;\n\t}\n\n\treturn true;\n\n}, \"Please specify a CNPJ value number.\" );\n\n/*\n * Brazillian CPF number (Cadastrado de Pessoas Físicas) is the equivalent of a Brazilian tax registration number.\n * CPF numbers have 11 digits in total: 9 numbers followed by 2 check numbers that are being used for validation.\n */\n$.validator.addMethod( \"cpfBR\", function( value, element ) {\n\t\"use strict\";\n\n\tif ( this.optional( element ) ) {\n\t\treturn true;\n\t}\n\n\t// Removing special characters from value\n\tvalue = value.replace( /([~!@#$%^&*()_+=`{}\\[\\]\\-|\\\\:;'<>,.\\/? ])+/g, \"\" );\n\n\t// Checking value to have 11 digits only\n\tif ( value.length !== 11 ) {\n\t\treturn false;\n\t}\n\n\tvar sum = 0,\n\t\tfirstCN, secondCN, checkResult, i;\n\n\tfirstCN = parseInt( value.substring( 9, 10 ), 10 );\n\tsecondCN = parseInt( value.substring( 10, 11 ), 10 );\n\n\tcheckResult = function( sum, cn ) {\n\t\tvar result = ( sum * 10 ) % 11;\n\t\tif ( ( result === 10 ) || ( result === 11 ) ) {\n\t\t\tresult = 0;\n\t\t}\n\t\treturn ( result === cn );\n\t};\n\n\t// Checking for dump data\n\tif ( value === \"\" ||\n\t\tvalue === \"00000000000\" ||\n\t\tvalue === \"11111111111\" ||\n\t\tvalue === \"22222222222\" ||\n\t\tvalue === \"33333333333\" ||\n\t\tvalue === \"44444444444\" ||\n\t\tvalue === \"55555555555\" ||\n\t\tvalue === \"66666666666\" ||\n\t\tvalue === \"77777777777\" ||\n\t\tvalue === \"88888888888\" ||\n\t\tvalue === \"99999999999\"\n\t) {\n\t\treturn false;\n\t}\n\n\t// Step 1 - using first Check Number:\n\tfor ( i = 1; i <= 9; i++ ) {\n\t\tsum = sum + parseInt( value.substring( i - 1, i ), 10 ) * ( 11 - i );\n\t}\n\n\t// If first Check Number (CN) is valid, move to Step 2 - using second Check Number:\n\tif ( checkResult( sum, firstCN ) ) {\n\t\tsum = 0;\n\t\tfor ( i = 1; i <= 10; i++ ) {\n\t\t\tsum = sum + parseInt( value.substring( i - 1, i ), 10 ) * ( 12 - i );\n\t\t}\n\t\treturn checkResult( sum, secondCN );\n\t}\n\treturn false;\n\n}, \"Please specify a valid CPF number.\" );\n\n// https://jqueryvalidation.org/creditcard-method/\n// based on https://en.wikipedia.org/wiki/Luhn_algorithm\n$.validator.addMethod( \"creditcard\", function( value, element ) {\n\tif ( this.optional( element ) ) {\n\t\treturn \"dependency-mismatch\";\n\t}\n\n\t// Accept only spaces, digits and dashes\n\tif ( /[^0-9 \\-]+/.test( value ) ) {\n\t\treturn false;\n\t}\n\n\tvar nCheck = 0,\n\t\tnDigit = 0,\n\t\tbEven = false,\n\t\tn, cDigit;\n\n\tvalue = value.replace( /\\D/g, \"\" );\n\n\t// Basing min and max length on\n\t// https://dev.ean.com/general-info/valid-card-types/\n\tif ( value.length < 13 || value.length > 19 ) {\n\t\treturn false;\n\t}\n\n\tfor ( n = value.length - 1; n >= 0; n-- ) {\n\t\tcDigit = value.charAt( n );\n\t\tnDigit = parseInt( cDigit, 10 );\n\t\tif ( bEven ) {\n\t\t\tif ( ( nDigit *= 2 ) > 9 ) {\n\t\t\t\tnDigit -= 9;\n\t\t\t}\n\t\t}\n\n\t\tnCheck += nDigit;\n\t\tbEven = !bEven;\n\t}\n\n\treturn ( nCheck % 10 ) === 0;\n}, \"Please enter a valid credit card number.\" );\n\n/* NOTICE: Modified version of Castle.Components.Validator.CreditCardValidator\n * Redistributed under the Apache License 2.0 at http://www.apache.org/licenses/LICENSE-2.0\n * Valid Types: mastercard, visa, amex, dinersclub, enroute, discover, jcb, unknown, all (overrides all other settings)\n */\n$.validator.addMethod( \"creditcardtypes\", function( value, element, param ) {\n\tif ( /[^0-9\\-]+/.test( value ) ) {\n\t\treturn false;\n\t}\n\n\tvalue = value.replace( /\\D/g, \"\" );\n\n\tvar validTypes = 0x0000;\n\n\tif ( param.mastercard ) {\n\t\tvalidTypes |= 0x0001;\n\t}\n\tif ( param.visa ) {\n\t\tvalidTypes |= 0x0002;\n\t}\n\tif ( param.amex ) {\n\t\tvalidTypes |= 0x0004;\n\t}\n\tif ( param.dinersclub ) {\n\t\tvalidTypes |= 0x0008;\n\t}\n\tif ( param.enroute ) {\n\t\tvalidTypes |= 0x0010;\n\t}\n\tif ( param.discover ) {\n\t\tvalidTypes |= 0x0020;\n\t}\n\tif ( param.jcb ) {\n\t\tvalidTypes |= 0x0040;\n\t}\n\tif ( param.unknown ) {\n\t\tvalidTypes |= 0x0080;\n\t}\n\tif ( param.all ) {\n\t\tvalidTypes = 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040 | 0x0080;\n\t}\n\tif ( validTypes & 0x0001 && ( /^(5[12345])/.test( value ) || /^(2[234567])/.test( value ) ) ) { // Mastercard\n\t\treturn value.length === 16;\n\t}\n\tif ( validTypes & 0x0002 && /^(4)/.test( value ) ) { // Visa\n\t\treturn value.length === 16;\n\t}\n\tif ( validTypes & 0x0004 && /^(3[47])/.test( value ) ) { // Amex\n\t\treturn value.length === 15;\n\t}\n\tif ( validTypes & 0x0008 && /^(3(0[012345]|[68]))/.test( value ) ) { // Dinersclub\n\t\treturn value.length === 14;\n\t}\n\tif ( validTypes & 0x0010 && /^(2(014|149))/.test( value ) ) { // Enroute\n\t\treturn value.length === 15;\n\t}\n\tif ( validTypes & 0x0020 && /^(6011)/.test( value ) ) { // Discover\n\t\treturn value.length === 16;\n\t}\n\tif ( validTypes & 0x0040 && /^(3)/.test( value ) ) { // Jcb\n\t\treturn value.length === 16;\n\t}\n\tif ( validTypes & 0x0040 && /^(2131|1800)/.test( value ) ) { // Jcb\n\t\treturn value.length === 15;\n\t}\n\tif ( validTypes & 0x0080 ) { // Unknown\n\t\treturn true;\n\t}\n\treturn false;\n}, \"Please enter a valid credit card number.\" );\n\n/**\n * Validates currencies with any given symbols by @jameslouiz\n * Symbols can be optional or required. Symbols required by default\n *\n * Usage examples:\n *  currency: [\"£\", false] - Use false for soft currency validation\n *  currency: [\"$\", false]\n *  currency: [\"RM\", false] - also works with text based symbols such as \"RM\" - Malaysia Ringgit etc\n *\n *  <input class=\"currencyInput\" name=\"currencyInput\">\n *\n * Soft symbol checking\n *  currencyInput: {\n *     currency: [\"$\", false]\n *  }\n *\n * Strict symbol checking (default)\n *  currencyInput: {\n *     currency: \"$\"\n *     //OR\n *     currency: [\"$\", true]\n *  }\n *\n * Multiple Symbols\n *  currencyInput: {\n *     currency: \"$,£,¢\"\n *  }\n */\n$.validator.addMethod( \"currency\", function( value, element, param ) {\n    var isParamString = typeof param === \"string\",\n        symbol = isParamString ? param : param[ 0 ],\n        soft = isParamString ? true : param[ 1 ],\n        regex;\n\n    symbol = symbol.replace( /,/g, \"\" );\n    symbol = soft ? symbol + \"]\" : symbol + \"]?\";\n    regex = \"^[\" + symbol + \"([1-9]{1}[0-9]{0,2}(\\\\,[0-9]{3})*(\\\\.[0-9]{0,2})?|[1-9]{1}[0-9]{0,}(\\\\.[0-9]{0,2})?|0(\\\\.[0-9]{0,2})?|(\\\\.[0-9]{1,2})?)$\";\n    regex = new RegExp( regex );\n    return this.optional( element ) || regex.test( value );\n\n}, \"Please specify a valid currency.\" );\n\n$.validator.addMethod( \"dateFA\", function( value, element ) {\n\treturn this.optional( element ) || /^[1-4]\\d{3}\\/((0?[1-6]\\/((3[0-1])|([1-2][0-9])|(0?[1-9])))|((1[0-2]|(0?[7-9]))\\/(30|([1-2][0-9])|(0?[1-9]))))$/.test( value );\n}, $.validator.messages.date );\n\n/**\n * Return true, if the value is a valid date, also making this formal check dd/mm/yyyy.\n *\n * @example $.validator.methods.date(\"01/01/1900\")\n * @result true\n *\n * @example $.validator.methods.date(\"01/13/1990\")\n * @result false\n *\n * @example $.validator.methods.date(\"01.01.1900\")\n * @result false\n *\n * @example <input name=\"pippo\" class=\"{dateITA:true}\" />\n * @desc Declares an optional input element whose value must be a valid date.\n *\n * @name $.validator.methods.dateITA\n * @type Boolean\n * @cat Plugins/Validate/Methods\n */\n$.validator.addMethod( \"dateITA\", function( value, element ) {\n\tvar check = false,\n\t\tre = /^\\d{1,2}\\/\\d{1,2}\\/\\d{4}$/,\n\t\tadata, gg, mm, aaaa, xdata;\n\tif ( re.test( value ) ) {\n\t\tadata = value.split( \"/\" );\n\t\tgg = parseInt( adata[ 0 ], 10 );\n\t\tmm = parseInt( adata[ 1 ], 10 );\n\t\taaaa = parseInt( adata[ 2 ], 10 );\n\t\txdata = new Date( Date.UTC( aaaa, mm - 1, gg, 12, 0, 0, 0 ) );\n\t\tif ( ( xdata.getUTCFullYear() === aaaa ) && ( xdata.getUTCMonth() === mm - 1 ) && ( xdata.getUTCDate() === gg ) ) {\n\t\t\tcheck = true;\n\t\t} else {\n\t\t\tcheck = false;\n\t\t}\n\t} else {\n\t\tcheck = false;\n\t}\n\treturn this.optional( element ) || check;\n}, $.validator.messages.date );\n\n$.validator.addMethod( \"dateNL\", function( value, element ) {\n\treturn this.optional( element ) || /^(0?[1-9]|[12]\\d|3[01])[\\.\\/\\-](0?[1-9]|1[012])[\\.\\/\\-]([12]\\d)?(\\d\\d)$/.test( value );\n}, $.validator.messages.date );\n\n// Older \"accept\" file extension method. Old docs: http://docs.jquery.com/Plugins/Validation/Methods/accept\n$.validator.addMethod( \"extension\", function( value, element, param ) {\n\tparam = typeof param === \"string\" ? param.replace( /,/g, \"|\" ) : \"png|jpe?g|gif\";\n\treturn this.optional( element ) || value.match( new RegExp( \"\\\\.(\" + param + \")$\", \"i\" ) );\n}, $.validator.format( \"Please enter a value with a valid extension.\" ) );\n\n/**\n * Dutch giro account numbers (not bank numbers) have max 7 digits\n */\n$.validator.addMethod( \"giroaccountNL\", function( value, element ) {\n\treturn this.optional( element ) || /^[0-9]{1,7}$/.test( value );\n}, \"Please specify a valid giro account number.\" );\n\n$.validator.addMethod( \"greaterThan\", function( value, element, param ) {\n    var target = $( param );\n\n    if ( this.settings.onfocusout && target.not( \".validate-greaterThan-blur\" ).length ) {\n        target.addClass( \"validate-greaterThan-blur\" ).on( \"blur.validate-greaterThan\", function() {\n            $( element ).valid();\n        } );\n    }\n\n    return value > target.val();\n}, \"Please enter a greater value.\" );\n\n$.validator.addMethod( \"greaterThanEqual\", function( value, element, param ) {\n    var target = $( param );\n\n    if ( this.settings.onfocusout && target.not( \".validate-greaterThanEqual-blur\" ).length ) {\n        target.addClass( \"validate-greaterThanEqual-blur\" ).on( \"blur.validate-greaterThanEqual\", function() {\n            $( element ).valid();\n        } );\n    }\n\n    return value >= target.val();\n}, \"Please enter a greater value.\" );\n\n/**\n * IBAN is the international bank account number.\n * It has a country - specific format, that is checked here too\n *\n * Validation is case-insensitive. Please make sure to normalize input yourself.\n */\n$.validator.addMethod( \"iban\", function( value, element ) {\n\n\t// Some quick simple tests to prevent needless work\n\tif ( this.optional( element ) ) {\n\t\treturn true;\n\t}\n\n\t// Remove spaces and to upper case\n\tvar iban = value.replace( / /g, \"\" ).toUpperCase(),\n\t\tibancheckdigits = \"\",\n\t\tleadingZeroes = true,\n\t\tcRest = \"\",\n\t\tcOperator = \"\",\n\t\tcountrycode, ibancheck, charAt, cChar, bbanpattern, bbancountrypatterns, ibanregexp, i, p;\n\n\t// Check for IBAN code length.\n\t// It contains:\n\t// country code ISO 3166-1 - two letters,\n\t// two check digits,\n\t// Basic Bank Account Number (BBAN) - up to 30 chars\n\tvar minimalIBANlength = 5;\n\tif ( iban.length < minimalIBANlength ) {\n\t\treturn false;\n\t}\n\n\t// Check the country code and find the country specific format\n\tcountrycode = iban.substring( 0, 2 );\n\tbbancountrypatterns = {\n\t\t\"AL\": \"\\\\d{8}[\\\\dA-Z]{16}\",\n\t\t\"AD\": \"\\\\d{8}[\\\\dA-Z]{12}\",\n\t\t\"AT\": \"\\\\d{16}\",\n\t\t\"AZ\": \"[\\\\dA-Z]{4}\\\\d{20}\",\n\t\t\"BE\": \"\\\\d{12}\",\n\t\t\"BH\": \"[A-Z]{4}[\\\\dA-Z]{14}\",\n\t\t\"BA\": \"\\\\d{16}\",\n\t\t\"BR\": \"\\\\d{23}[A-Z][\\\\dA-Z]\",\n\t\t\"BG\": \"[A-Z]{4}\\\\d{6}[\\\\dA-Z]{8}\",\n\t\t\"CR\": \"\\\\d{17}\",\n\t\t\"HR\": \"\\\\d{17}\",\n\t\t\"CY\": \"\\\\d{8}[\\\\dA-Z]{16}\",\n\t\t\"CZ\": \"\\\\d{20}\",\n\t\t\"DK\": \"\\\\d{14}\",\n\t\t\"DO\": \"[A-Z]{4}\\\\d{20}\",\n\t\t\"EE\": \"\\\\d{16}\",\n\t\t\"FO\": \"\\\\d{14}\",\n\t\t\"FI\": \"\\\\d{14}\",\n\t\t\"FR\": \"\\\\d{10}[\\\\dA-Z]{11}\\\\d{2}\",\n\t\t\"GE\": \"[\\\\dA-Z]{2}\\\\d{16}\",\n\t\t\"DE\": \"\\\\d{18}\",\n\t\t\"GI\": \"[A-Z]{4}[\\\\dA-Z]{15}\",\n\t\t\"GR\": \"\\\\d{7}[\\\\dA-Z]{16}\",\n\t\t\"GL\": \"\\\\d{14}\",\n\t\t\"GT\": \"[\\\\dA-Z]{4}[\\\\dA-Z]{20}\",\n\t\t\"HU\": \"\\\\d{24}\",\n\t\t\"IS\": \"\\\\d{22}\",\n\t\t\"IE\": \"[\\\\dA-Z]{4}\\\\d{14}\",\n\t\t\"IL\": \"\\\\d{19}\",\n\t\t\"IT\": \"[A-Z]\\\\d{10}[\\\\dA-Z]{12}\",\n\t\t\"KZ\": \"\\\\d{3}[\\\\dA-Z]{13}\",\n\t\t\"KW\": \"[A-Z]{4}[\\\\dA-Z]{22}\",\n\t\t\"LV\": \"[A-Z]{4}[\\\\dA-Z]{13}\",\n\t\t\"LB\": \"\\\\d{4}[\\\\dA-Z]{20}\",\n\t\t\"LI\": \"\\\\d{5}[\\\\dA-Z]{12}\",\n\t\t\"LT\": \"\\\\d{16}\",\n\t\t\"LU\": \"\\\\d{3}[\\\\dA-Z]{13}\",\n\t\t\"MK\": \"\\\\d{3}[\\\\dA-Z]{10}\\\\d{2}\",\n\t\t\"MT\": \"[A-Z]{4}\\\\d{5}[\\\\dA-Z]{18}\",\n\t\t\"MR\": \"\\\\d{23}\",\n\t\t\"MU\": \"[A-Z]{4}\\\\d{19}[A-Z]{3}\",\n\t\t\"MC\": \"\\\\d{10}[\\\\dA-Z]{11}\\\\d{2}\",\n\t\t\"MD\": \"[\\\\dA-Z]{2}\\\\d{18}\",\n\t\t\"ME\": \"\\\\d{18}\",\n\t\t\"NL\": \"[A-Z]{4}\\\\d{10}\",\n\t\t\"NO\": \"\\\\d{11}\",\n\t\t\"PK\": \"[\\\\dA-Z]{4}\\\\d{16}\",\n\t\t\"PS\": \"[\\\\dA-Z]{4}\\\\d{21}\",\n\t\t\"PL\": \"\\\\d{24}\",\n\t\t\"PT\": \"\\\\d{21}\",\n\t\t\"RO\": \"[A-Z]{4}[\\\\dA-Z]{16}\",\n\t\t\"SM\": \"[A-Z]\\\\d{10}[\\\\dA-Z]{12}\",\n\t\t\"SA\": \"\\\\d{2}[\\\\dA-Z]{18}\",\n\t\t\"RS\": \"\\\\d{18}\",\n\t\t\"SK\": \"\\\\d{20}\",\n\t\t\"SI\": \"\\\\d{15}\",\n\t\t\"ES\": \"\\\\d{20}\",\n\t\t\"SE\": \"\\\\d{20}\",\n\t\t\"CH\": \"\\\\d{5}[\\\\dA-Z]{12}\",\n\t\t\"TN\": \"\\\\d{20}\",\n\t\t\"TR\": \"\\\\d{5}[\\\\dA-Z]{17}\",\n\t\t\"AE\": \"\\\\d{3}\\\\d{16}\",\n\t\t\"GB\": \"[A-Z]{4}\\\\d{14}\",\n\t\t\"VG\": \"[\\\\dA-Z]{4}\\\\d{16}\"\n\t};\n\n\tbbanpattern = bbancountrypatterns[ countrycode ];\n\n\t// As new countries will start using IBAN in the\n\t// future, we only check if the countrycode is known.\n\t// This prevents false negatives, while almost all\n\t// false positives introduced by this, will be caught\n\t// by the checksum validation below anyway.\n\t// Strict checking should return FALSE for unknown\n\t// countries.\n\tif ( typeof bbanpattern !== \"undefined\" ) {\n\t\tibanregexp = new RegExp( \"^[A-Z]{2}\\\\d{2}\" + bbanpattern + \"$\", \"\" );\n\t\tif ( !( ibanregexp.test( iban ) ) ) {\n\t\t\treturn false; // Invalid country specific format\n\t\t}\n\t}\n\n\t// Now check the checksum, first convert to digits\n\tibancheck = iban.substring( 4, iban.length ) + iban.substring( 0, 4 );\n\tfor ( i = 0; i < ibancheck.length; i++ ) {\n\t\tcharAt = ibancheck.charAt( i );\n\t\tif ( charAt !== \"0\" ) {\n\t\t\tleadingZeroes = false;\n\t\t}\n\t\tif ( !leadingZeroes ) {\n\t\t\tibancheckdigits += \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\".indexOf( charAt );\n\t\t}\n\t}\n\n\t// Calculate the result of: ibancheckdigits % 97\n\tfor ( p = 0; p < ibancheckdigits.length; p++ ) {\n\t\tcChar = ibancheckdigits.charAt( p );\n\t\tcOperator = \"\" + cRest + \"\" + cChar;\n\t\tcRest = cOperator % 97;\n\t}\n\treturn cRest === 1;\n}, \"Please specify a valid IBAN.\" );\n\n$.validator.addMethod( \"integer\", function( value, element ) {\n\treturn this.optional( element ) || /^-?\\d+$/.test( value );\n}, \"A positive or negative non-decimal number please.\" );\n\n$.validator.addMethod( \"ipv4\", function( value, element ) {\n\treturn this.optional( element ) || /^(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$/i.test( value );\n}, \"Please enter a valid IP v4 address.\" );\n\n$.validator.addMethod( \"ipv6\", function( value, element ) {\n\treturn this.optional( element ) || /^((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$/i.test( value );\n}, \"Please enter a valid IP v6 address.\" );\n\n$.validator.addMethod( \"lessThan\", function( value, element, param ) {\n    var target = $( param );\n\n    if ( this.settings.onfocusout && target.not( \".validate-lessThan-blur\" ).length ) {\n        target.addClass( \"validate-lessThan-blur\" ).on( \"blur.validate-lessThan\", function() {\n            $( element ).valid();\n        } );\n    }\n\n    return value < target.val();\n}, \"Please enter a lesser value.\" );\n\n$.validator.addMethod( \"lessThanEqual\", function( value, element, param ) {\n    var target = $( param );\n\n    if ( this.settings.onfocusout && target.not( \".validate-lessThanEqual-blur\" ).length ) {\n        target.addClass( \"validate-lessThanEqual-blur\" ).on( \"blur.validate-lessThanEqual\", function() {\n            $( element ).valid();\n        } );\n    }\n\n    return value <= target.val();\n}, \"Please enter a lesser value.\" );\n\n$.validator.addMethod( \"lettersonly\", function( value, element ) {\n\treturn this.optional( element ) || /^[a-z]+$/i.test( value );\n}, \"Letters only please.\" );\n\n$.validator.addMethod( \"letterswithbasicpunc\", function( value, element ) {\n\treturn this.optional( element ) || /^[a-z\\-.,()'\"\\s]+$/i.test( value );\n}, \"Letters or punctuation only please.\" );\n\n// Limit the number of files in a FileList.\n$.validator.addMethod( \"maxfiles\", function( value, element, param ) {\n\tif ( this.optional( element ) ) {\n\t\treturn true;\n\t}\n\n\tif ( $( element ).attr( \"type\" ) === \"file\" ) {\n\t\tif ( element.files && element.files.length > param ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}, $.validator.format( \"Please select no more than {0} files.\" ) );\n\n// Limit the size of each individual file in a FileList.\n$.validator.addMethod( \"maxsize\", function( value, element, param ) {\n\tif ( this.optional( element ) ) {\n\t\treturn true;\n\t}\n\n\tif ( $( element ).attr( \"type\" ) === \"file\" ) {\n\t\tif ( element.files && element.files.length ) {\n\t\t\tfor ( var i = 0; i < element.files.length; i++ ) {\n\t\t\t\tif ( element.files[ i ].size > param ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn true;\n}, $.validator.format( \"File size must not exceed {0} bytes each.\" ) );\n\n// Limit the size of all files in a FileList.\n$.validator.addMethod( \"maxsizetotal\", function( value, element, param ) {\n\tif ( this.optional( element ) ) {\n\t\treturn true;\n\t}\n\n\tif ( $( element ).attr( \"type\" ) === \"file\" ) {\n\t\tif ( element.files && element.files.length ) {\n\t\t\tvar totalSize = 0;\n\n\t\t\tfor ( var i = 0; i < element.files.length; i++ ) {\n\t\t\t\ttotalSize += element.files[ i ].size;\n\t\t\t\tif ( totalSize > param ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn true;\n}, $.validator.format( \"Total size of all files must not exceed {0} bytes.\" ) );\n\n\n$.validator.addMethod( \"mobileNL\", function( value, element ) {\n\treturn this.optional( element ) || /^((\\+|00(\\s|\\s?\\-\\s?)?)31(\\s|\\s?\\-\\s?)?(\\(0\\)[\\-\\s]?)?|0)6((\\s|\\s?\\-\\s?)?[0-9]){8}$/.test( value );\n}, \"Please specify a valid mobile number.\" );\n\n$.validator.addMethod( \"mobileRU\", function( phone_number, element ) {\n\tvar ruPhone_number = phone_number.replace( /\\(|\\)|\\s+|-/g, \"\" );\n\treturn this.optional( element ) || ruPhone_number.length > 9 && /^((\\+7|7|8)+([0-9]){10})$/.test( ruPhone_number );\n}, \"Please specify a valid mobile number.\" );\n\n/* For UK phone functions, do the following server side processing:\n * Compare original input with this RegEx pattern:\n * ^\\(?(?:(?:00\\)?[\\s\\-]?\\(?|\\+)(44)\\)?[\\s\\-]?\\(?(?:0\\)?[\\s\\-]?\\(?)?|0)([1-9]\\d{1,4}\\)?[\\s\\d\\-]+)$\n * Extract $1 and set $prefix to '+44<space>' if $1 is '44', otherwise set $prefix to '0'\n * Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2.\n * A number of very detailed GB telephone number RegEx patterns can also be found at:\n * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers\n */\n$.validator.addMethod( \"mobileUK\", function( phone_number, element ) {\n\tphone_number = phone_number.replace( /\\(|\\)|\\s+|-/g, \"\" );\n\treturn this.optional( element ) || phone_number.length > 9 &&\n\t\tphone_number.match( /^(?:(?:(?:00\\s?|\\+)44\\s?|0)7(?:[1345789]\\d{2}|624)\\s?\\d{3}\\s?\\d{3})$/ );\n}, \"Please specify a valid mobile number.\" );\n\n$.validator.addMethod( \"netmask\", function( value, element ) {\n    return this.optional( element ) || /^(254|252|248|240|224|192|128)\\.0\\.0\\.0|255\\.(254|252|248|240|224|192|128|0)\\.0\\.0|255\\.255\\.(254|252|248|240|224|192|128|0)\\.0|255\\.255\\.255\\.(254|252|248|240|224|192|128|0)/i.test( value );\n}, \"Please enter a valid netmask.\" );\n\n/*\n * The NIE (Número de Identificación de Extranjero) is a Spanish tax identification number assigned by the Spanish\n * authorities to any foreigner.\n *\n * The NIE is the equivalent of a Spaniards Número de Identificación Fiscal (NIF) which serves as a fiscal\n * identification number. The CIF number (Certificado de Identificación Fiscal) is equivalent to the NIF, but applies to\n * companies rather than individuals. The NIE consists of an 'X' or 'Y' followed by 7 or 8 digits then another letter.\n */\n$.validator.addMethod( \"nieES\", function( value, element ) {\n\t\"use strict\";\n\n\tif ( this.optional( element ) ) {\n\t\treturn true;\n\t}\n\n\tvar nieRegEx = new RegExp( /^[MXYZ]{1}[0-9]{7,8}[TRWAGMYFPDXBNJZSQVHLCKET]{1}$/gi );\n\tvar validChars = \"TRWAGMYFPDXBNJZSQVHLCKET\",\n\t\tletter = value.substr( value.length - 1 ).toUpperCase(),\n\t\tnumber;\n\n\tvalue = value.toString().toUpperCase();\n\n\t// Quick format test\n\tif ( value.length > 10 || value.length < 9 || !nieRegEx.test( value ) ) {\n\t\treturn false;\n\t}\n\n\t// X means same number\n\t// Y means number + 10000000\n\t// Z means number + 20000000\n\tvalue = value.replace( /^[X]/, \"0\" )\n\t\t.replace( /^[Y]/, \"1\" )\n\t\t.replace( /^[Z]/, \"2\" );\n\n\tnumber = value.length === 9 ? value.substr( 0, 8 ) : value.substr( 0, 9 );\n\n\treturn validChars.charAt( parseInt( number, 10 ) % 23 ) === letter;\n\n}, \"Please specify a valid NIE number.\" );\n\n/*\n * The Número de Identificación Fiscal ( NIF ) is the way tax identification used in Spain for individuals\n */\n$.validator.addMethod( \"nifES\", function( value, element ) {\n\t\"use strict\";\n\n\tif ( this.optional( element ) ) {\n\t\treturn true;\n\t}\n\n\tvalue = value.toUpperCase();\n\n\t// Basic format test\n\tif ( !value.match( \"((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)\" ) ) {\n\t\treturn false;\n\t}\n\n\t// Test NIF\n\tif ( /^[0-9]{8}[A-Z]{1}$/.test( value ) ) {\n\t\treturn ( \"TRWAGMYFPDXBNJZSQVHLCKE\".charAt( value.substring( 8, 0 ) % 23 ) === value.charAt( 8 ) );\n\t}\n\n\t// Test specials NIF (starts with K, L or M)\n\tif ( /^[KLM]{1}/.test( value ) ) {\n\t\treturn ( value[ 8 ] === \"TRWAGMYFPDXBNJZSQVHLCKE\".charAt( value.substring( 8, 1 ) % 23 ) );\n\t}\n\n\treturn false;\n\n}, \"Please specify a valid NIF number.\" );\n\n/*\n * Numer identyfikacji podatkowej ( NIP ) is the way tax identification used in Poland for companies\n */\n$.validator.addMethod( \"nipPL\", function( value ) {\n\t\"use strict\";\n\n\tvalue = value.replace( /[^0-9]/g, \"\" );\n\n\tif ( value.length !== 10 ) {\n\t\treturn false;\n\t}\n\n\tvar arrSteps = [ 6, 5, 7, 2, 3, 4, 5, 6, 7 ];\n\tvar intSum = 0;\n\tfor ( var i = 0; i < 9; i++ ) {\n\t\tintSum += arrSteps[ i ] * value[ i ];\n\t}\n\tvar int2 = intSum % 11;\n\tvar intControlNr = ( int2 === 10 ) ? 0 : int2;\n\n\treturn ( intControlNr === parseInt( value[ 9 ], 10 ) );\n}, \"Please specify a valid NIP number.\" );\n\n/**\n * Created for project jquery-validation.\n * @Description Brazillian PIS or NIS number (Número de Identificação Social Pis ou Pasep) is the equivalent of a\n * Brazilian tax registration number NIS of PIS numbers have 11 digits in total: 10 numbers followed by 1 check numbers\n * that are being used for validation.\n * @copyright (c) 21/08/2018 13:14, Cleiton da Silva Mendonça\n * @author Cleiton da Silva Mendonça <cleiton.mendonca@gmail.com>\n * @link http://gitlab.com/csmendonca Gitlab of Cleiton da Silva Mendonça\n * @link http://github.com/csmendonca Github of Cleiton da Silva Mendonça\n */\n$.validator.addMethod( \"nisBR\", function( value ) {\n\tvar number;\n\tvar cn;\n\tvar sum = 0;\n\tvar dv;\n\tvar count;\n\tvar multiplier;\n\n\t// Removing special characters from value\n\tvalue = value.replace( /([~!@#$%^&*()_+=`{}\\[\\]\\-|\\\\:;'<>,.\\/? ])+/g, \"\" );\n\n\t// Checking value to have 11 digits only\n\tif ( value.length !== 11 ) {\n\t\treturn false;\n\t}\n\n\t//Get check number of value\n\tcn = parseInt( value.substring( 10, 11 ), 10 );\n\n\t//Get number with 10 digits of the value\n\tnumber = parseInt( value.substring( 0, 10 ), 10 );\n\n\tfor ( count = 2; count < 12; count++ ) {\n\t\tmultiplier = count;\n\t\tif ( count === 10 ) {\n\t\t\tmultiplier = 2;\n\t\t}\n\t\tif ( count === 11 ) {\n\t\t\tmultiplier = 3;\n\t\t}\n\t\tsum += ( ( number % 10 ) * multiplier );\n\t\tnumber = parseInt( number / 10, 10 );\n\t}\n\tdv = ( sum % 11 );\n\n\tif ( dv > 1 ) {\n\t\tdv = ( 11 - dv );\n\t} else {\n\t\tdv = 0;\n\t}\n\n\tif ( cn === dv ) {\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n}, \"Please specify a valid NIS/PIS number.\" );\n\n$.validator.addMethod( \"notEqualTo\", function( value, element, param ) {\n\treturn this.optional( element ) || !$.validator.methods.equalTo.call( this, value, element, param );\n}, \"Please enter a different value, values must not be the same.\" );\n\n$.validator.addMethod( \"nowhitespace\", function( value, element ) {\n\treturn this.optional( element ) || /^\\S+$/i.test( value );\n}, \"No white space please.\" );\n\n/**\n* Return true if the field value matches the given format RegExp\n*\n* @example $.validator.methods.pattern(\"AR1004\",element,/^AR\\d{4}$/)\n* @result true\n*\n* @example $.validator.methods.pattern(\"BR1004\",element,/^AR\\d{4}$/)\n* @result false\n*\n* @name $.validator.methods.pattern\n* @type Boolean\n* @cat Plugins/Validate/Methods\n*/\n$.validator.addMethod( \"pattern\", function( value, element, param ) {\n\tif ( this.optional( element ) ) {\n\t\treturn true;\n\t}\n\tif ( typeof param === \"string\" ) {\n\t\tparam = new RegExp( \"^(?:\" + param + \")$\" );\n\t}\n\treturn param.test( value );\n}, \"Invalid format.\" );\n\n/**\n * Dutch phone numbers have 10 digits (or 11 and start with +31).\n */\n$.validator.addMethod( \"phoneNL\", function( value, element ) {\n\treturn this.optional( element ) || /^((\\+|00(\\s|\\s?\\-\\s?)?)31(\\s|\\s?\\-\\s?)?(\\(0\\)[\\-\\s]?)?|0)[1-9]((\\s|\\s?\\-\\s?)?[0-9]){8}$/.test( value );\n}, \"Please specify a valid phone number.\" );\n\n/**\n * Polish telephone numbers have 9 digits.\n *\n * Mobile phone numbers starts with following digits:\n * 45, 50, 51, 53, 57, 60, 66, 69, 72, 73, 78, 79, 88.\n *\n * Fixed-line numbers starts with area codes:\n * 12, 13, 14, 15, 16, 17, 18, 22, 23, 24, 25, 29, 32, 33,\n * 34, 41, 42, 43, 44, 46, 48, 52, 54, 55, 56, 58, 59, 61,\n * 62, 63, 65, 67, 68, 71, 74, 75, 76, 77, 81, 82, 83, 84,\n * 85, 86, 87, 89, 91, 94, 95.\n *\n * Ministry of National Defence numbers and VoIP numbers starts with 26 and 39.\n *\n * Excludes intelligent networks (premium rate, shared cost, free phone numbers).\n *\n * Poland National Numbering Plan http://www.itu.int/oth/T02020000A8/en\n */\n$.validator.addMethod( \"phonePL\", function( phone_number, element ) {\n\tphone_number = phone_number.replace( /\\s+/g, \"\" );\n\tvar regexp = /^(?:(?:(?:\\+|00)?48)|(?:\\(\\+?48\\)))?(?:1[2-8]|2[2-69]|3[2-49]|4[1-68]|5[0-9]|6[0-35-9]|[7-8][1-9]|9[145])\\d{7}$/;\n\treturn this.optional( element ) || regexp.test( phone_number );\n}, \"Please specify a valid phone number.\" );\n\n/* For UK phone functions, do the following server side processing:\n * Compare original input with this RegEx pattern:\n * ^\\(?(?:(?:00\\)?[\\s\\-]?\\(?|\\+)(44)\\)?[\\s\\-]?\\(?(?:0\\)?[\\s\\-]?\\(?)?|0)([1-9]\\d{1,4}\\)?[\\s\\d\\-]+)$\n * Extract $1 and set $prefix to '+44<space>' if $1 is '44', otherwise set $prefix to '0'\n * Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2.\n * A number of very detailed GB telephone number RegEx patterns can also be found at:\n * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers\n */\n\n// Matches UK landline + mobile, accepting only 01-3 for landline or 07 for mobile to exclude many premium numbers\n$.validator.addMethod( \"phonesUK\", function( phone_number, element ) {\n\tphone_number = phone_number.replace( /\\(|\\)|\\s+|-/g, \"\" );\n\treturn this.optional( element ) || phone_number.length > 9 &&\n\t\tphone_number.match( /^(?:(?:(?:00\\s?|\\+)44\\s?|0)(?:1\\d{8,9}|[23]\\d{9}|7(?:[1345789]\\d{8}|624\\d{6})))$/ );\n}, \"Please specify a valid uk phone number.\" );\n\n/* For UK phone functions, do the following server side processing:\n * Compare original input with this RegEx pattern:\n * ^\\(?(?:(?:00\\)?[\\s\\-]?\\(?|\\+)(44)\\)?[\\s\\-]?\\(?(?:0\\)?[\\s\\-]?\\(?)?|0)([1-9]\\d{1,4}\\)?[\\s\\d\\-]+)$\n * Extract $1 and set $prefix to '+44<space>' if $1 is '44', otherwise set $prefix to '0'\n * Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2.\n * A number of very detailed GB telephone number RegEx patterns can also be found at:\n * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers\n */\n$.validator.addMethod( \"phoneUK\", function( phone_number, element ) {\n\tphone_number = phone_number.replace( /\\(|\\)|\\s+|-/g, \"\" );\n\treturn this.optional( element ) || phone_number.length > 9 &&\n\t\tphone_number.match( /^(?:(?:(?:00\\s?|\\+)44\\s?)|(?:\\(?0))(?:\\d{2}\\)?\\s?\\d{4}\\s?\\d{4}|\\d{3}\\)?\\s?\\d{3}\\s?\\d{3,4}|\\d{4}\\)?\\s?(?:\\d{5}|\\d{3}\\s?\\d{3})|\\d{5}\\)?\\s?\\d{4,5})$/ );\n}, \"Please specify a valid phone number.\" );\n\n/**\n * Matches US phone number format\n *\n * where the area code may not start with 1 and the prefix may not start with 1\n * allows '-' or ' ' as a separator and allows parens around area code\n * some people may want to put a '1' in front of their number\n *\n * 1(212)-999-2345 or\n * 212 999 2344 or\n * 212-999-0983\n *\n * but not\n * 111-123-5434\n * and not\n * 212 123 4567\n */\n$.validator.addMethod( \"phoneUS\", function( phone_number, element ) {\n\tphone_number = phone_number.replace( /\\s+/g, \"\" );\n\treturn this.optional( element ) || phone_number.length > 9 &&\n\t\tphone_number.match( /^(\\+?1-?)?(\\([2-9]([02-9]\\d|1[02-9])\\)|[2-9]([02-9]\\d|1[02-9]))-?[2-9]\\d{2}-?\\d{4}$/ );\n}, \"Please specify a valid phone number.\" );\n\n/*\n* Valida CEPs do brasileiros:\n*\n* Formatos aceitos:\n* 99999-999\n* 99.999-999\n* 99999999\n*/\n$.validator.addMethod( \"postalcodeBR\", function( cep_value, element ) {\n\treturn this.optional( element ) || /^\\d{2}.\\d{3}-\\d{3}?$|^\\d{5}-?\\d{3}?$/.test( cep_value );\n}, \"Informe um CEP válido.\" );\n\n/**\n * Matches a valid Canadian Postal Code\n *\n * @example jQuery.validator.methods.postalCodeCA( \"H0H 0H0\", element )\n * @result true\n *\n * @example jQuery.validator.methods.postalCodeCA( \"H0H0H0\", element )\n * @result false\n *\n * @name jQuery.validator.methods.postalCodeCA\n * @type Boolean\n * @cat Plugins/Validate/Methods\n */\n$.validator.addMethod( \"postalCodeCA\", function( value, element ) {\n\treturn this.optional( element ) || /^[ABCEGHJKLMNPRSTVXY]\\d[ABCEGHJKLMNPRSTVWXYZ] *\\d[ABCEGHJKLMNPRSTVWXYZ]\\d$/i.test( value );\n}, \"Please specify a valid postal code.\" );\n\n/* Matches Italian postcode (CAP) */\n$.validator.addMethod( \"postalcodeIT\", function( value, element ) {\n\treturn this.optional( element ) || /^\\d{5}$/.test( value );\n}, \"Please specify a valid postal code.\" );\n\n$.validator.addMethod( \"postalcodeNL\", function( value, element ) {\n\treturn this.optional( element ) || /^[1-9][0-9]{3}\\s?[a-zA-Z]{2}$/.test( value );\n}, \"Please specify a valid postal code.\" );\n\n// Matches UK postcode. Does not match to UK Channel Islands that have their own postcodes (non standard UK)\n$.validator.addMethod( \"postcodeUK\", function( value, element ) {\n\treturn this.optional( element ) || /^((([A-PR-UWYZ][0-9])|([A-PR-UWYZ][0-9][0-9])|([A-PR-UWYZ][A-HK-Y][0-9])|([A-PR-UWYZ][A-HK-Y][0-9][0-9])|([A-PR-UWYZ][0-9][A-HJKSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY]))\\s?([0-9][ABD-HJLNP-UW-Z]{2})|(GIR)\\s?(0AA))$/i.test( value );\n}, \"Please specify a valid UK postcode.\" );\n\n/*\n * Lets you say \"at least X inputs that match selector Y must be filled.\"\n *\n * The end result is that neither of these inputs:\n *\n *\t<input class=\"productinfo\" name=\"partnumber\">\n *\t<input class=\"productinfo\" name=\"description\">\n *\n *\t...will validate unless at least one of them is filled.\n *\n * partnumber:\t{require_from_group: [1,\".productinfo\"]},\n * description: {require_from_group: [1,\".productinfo\"]}\n *\n * options[0]: number of fields that must be filled in the group\n * options[1]: CSS selector that defines the group of conditionally required fields\n */\n$.validator.addMethod( \"require_from_group\", function( value, element, options ) {\n\tvar $fields = $( options[ 1 ], element.form ),\n\t\t$fieldsFirst = $fields.eq( 0 ),\n\t\tvalidator = $fieldsFirst.data( \"valid_req_grp\" ) ? $fieldsFirst.data( \"valid_req_grp\" ) : $.extend( {}, this ),\n\t\tisValid = $fields.filter( function() {\n\t\t\treturn validator.elementValue( this );\n\t\t} ).length >= options[ 0 ];\n\n\t// Store the cloned validator for future validation\n\t$fieldsFirst.data( \"valid_req_grp\", validator );\n\n\t// If element isn't being validated, run each require_from_group field's validation rules\n\tif ( !$( element ).data( \"being_validated\" ) ) {\n\t\t$fields.data( \"being_validated\", true );\n\t\t$fields.each( function() {\n\t\t\tvalidator.element( this );\n\t\t} );\n\t\t$fields.data( \"being_validated\", false );\n\t}\n\treturn isValid;\n}, $.validator.format( \"Please fill at least {0} of these fields.\" ) );\n\n/*\n * Lets you say \"either at least X inputs that match selector Y must be filled,\n * OR they must all be skipped (left blank).\"\n *\n * The end result, is that none of these inputs:\n *\n *\t<input class=\"productinfo\" name=\"partnumber\">\n *\t<input class=\"productinfo\" name=\"description\">\n *\t<input class=\"productinfo\" name=\"color\">\n *\n *\t...will validate unless either at least two of them are filled,\n *\tOR none of them are.\n *\n * partnumber:\t{skip_or_fill_minimum: [2,\".productinfo\"]},\n * description: {skip_or_fill_minimum: [2,\".productinfo\"]},\n * color:\t\t{skip_or_fill_minimum: [2,\".productinfo\"]}\n *\n * options[0]: number of fields that must be filled in the group\n * options[1]: CSS selector that defines the group of conditionally required fields\n *\n */\n$.validator.addMethod( \"skip_or_fill_minimum\", function( value, element, options ) {\n\tvar $fields = $( options[ 1 ], element.form ),\n\t\t$fieldsFirst = $fields.eq( 0 ),\n\t\tvalidator = $fieldsFirst.data( \"valid_skip\" ) ? $fieldsFirst.data( \"valid_skip\" ) : $.extend( {}, this ),\n\t\tnumberFilled = $fields.filter( function() {\n\t\t\treturn validator.elementValue( this );\n\t\t} ).length,\n\t\tisValid = numberFilled === 0 || numberFilled >= options[ 0 ];\n\n\t// Store the cloned validator for future validation\n\t$fieldsFirst.data( \"valid_skip\", validator );\n\n\t// If element isn't being validated, run each skip_or_fill_minimum field's validation rules\n\tif ( !$( element ).data( \"being_validated\" ) ) {\n\t\t$fields.data( \"being_validated\", true );\n\t\t$fields.each( function() {\n\t\t\tvalidator.element( this );\n\t\t} );\n\t\t$fields.data( \"being_validated\", false );\n\t}\n\treturn isValid;\n}, $.validator.format( \"Please either skip these fields or fill at least {0} of them.\" ) );\n\n/* Validates US States and/or Territories by @jdforsythe\n * Can be case insensitive or require capitalization - default is case insensitive\n * Can include US Territories or not - default does not\n * Can include US Military postal abbreviations (AA, AE, AP) - default does not\n *\n * Note: \"States\" always includes DC (District of Colombia)\n *\n * Usage examples:\n *\n *  This is the default - case insensitive, no territories, no military zones\n *  stateInput: {\n *     caseSensitive: false,\n *     includeTerritories: false,\n *     includeMilitary: false\n *  }\n *\n *  Only allow capital letters, no territories, no military zones\n *  stateInput: {\n *     caseSensitive: false\n *  }\n *\n *  Case insensitive, include territories but not military zones\n *  stateInput: {\n *     includeTerritories: true\n *  }\n *\n *  Only allow capital letters, include territories and military zones\n *  stateInput: {\n *     caseSensitive: true,\n *     includeTerritories: true,\n *     includeMilitary: true\n *  }\n *\n */\n$.validator.addMethod( \"stateUS\", function( value, element, options ) {\n\tvar isDefault = typeof options === \"undefined\",\n\t\tcaseSensitive = ( isDefault || typeof options.caseSensitive === \"undefined\" ) ? false : options.caseSensitive,\n\t\tincludeTerritories = ( isDefault || typeof options.includeTerritories === \"undefined\" ) ? false : options.includeTerritories,\n\t\tincludeMilitary = ( isDefault || typeof options.includeMilitary === \"undefined\" ) ? false : options.includeMilitary,\n\t\tregex;\n\n\tif ( !includeTerritories && !includeMilitary ) {\n\t\tregex = \"^(A[KLRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])$\";\n\t} else if ( includeTerritories && includeMilitary ) {\n\t\tregex = \"^(A[AEKLPRSZ]|C[AOT]|D[CE]|FL|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEINOPST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$\";\n\t} else if ( includeTerritories ) {\n\t\tregex = \"^(A[KLRSZ]|C[AOT]|D[CE]|FL|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEINOPST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$\";\n\t} else {\n\t\tregex = \"^(A[AEKLPRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])$\";\n\t}\n\n\tregex = caseSensitive ? new RegExp( regex ) : new RegExp( regex, \"i\" );\n\treturn this.optional( element ) || regex.test( value );\n}, \"Please specify a valid state.\" );\n\n// TODO check if value starts with <, otherwise don't try stripping anything\n$.validator.addMethod( \"strippedminlength\", function( value, element, param ) {\n\treturn $( value ).text().length >= param;\n}, $.validator.format( \"Please enter at least {0} characters.\" ) );\n\n$.validator.addMethod( \"time\", function( value, element ) {\n\treturn this.optional( element ) || /^([01]\\d|2[0-3]|[0-9])(:[0-5]\\d){1,2}$/.test( value );\n}, \"Please enter a valid time, between 00:00 and 23:59.\" );\n\n$.validator.addMethod( \"time12h\", function( value, element ) {\n\treturn this.optional( element ) || /^((0?[1-9]|1[012])(:[0-5]\\d){1,2}(\\ ?[AP]M))$/i.test( value );\n}, \"Please enter a valid time in 12-hour am/pm format.\" );\n\n// Same as url, but TLD is optional\n$.validator.addMethod( \"url2\", function( value, element ) {\n\treturn this.optional( element ) || /^(?:(?:(?:https?|ftp):)?\\/\\/)(?:(?:[^\\]\\[?\\/<~#`!@$^&*()+=}|:\";',>{ ]|%[0-9A-Fa-f]{2})+(?::(?:[^\\]\\[?\\/<~#`!@$^&*()+=}|:\";',>{ ]|%[0-9A-Fa-f]{2})*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|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-z0-9\\u00a1-\\uffff][a-z0-9\\u00a1-\\uffff_-]{0,62})?[a-z0-9\\u00a1-\\uffff]\\.)+(?:[a-z\\u00a1-\\uffff]{2,}\\.?)|(?:(?:[a-z0-9\\u00a1-\\uffff][a-z0-9\\u00a1-\\uffff_-]{0,62})?[a-z0-9\\u00a1-\\uffff])|(?:(?:[a-z0-9\\u00a1-\\uffff][a-z0-9\\u00a1-\\uffff_-]{0,62}\\.)))(?::\\d{2,5})?(?:[/?#]\\S*)?$/i.test( value );\n}, $.validator.messages.url );\n\n/**\n * Return true, if the value is a valid vehicle identification number (VIN).\n *\n * Works with all kind of text inputs.\n *\n * @example <input type=\"text\" size=\"20\" name=\"VehicleID\" class=\"{required:true,vinUS:true}\" />\n * @desc Declares a required input element whose value must be a valid vehicle identification number.\n *\n * @name $.validator.methods.vinUS\n * @type Boolean\n * @cat Plugins/Validate/Methods\n */\n$.validator.addMethod( \"vinUS\", function( v ) {\n    if ( v.length !== 17 ) {\n        return false;\n    }\n\n    var LL = [ \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"J\", \"K\", \"L\", \"M\", \"N\", \"P\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\" ],\n        VL = [ 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 7, 9, 2, 3, 4, 5, 6, 7, 8, 9 ],\n        FL = [ 8, 7, 6, 5, 4, 3, 2, 10, 0, 9, 8, 7, 6, 5, 4, 3, 2 ],\n        rs = 0,\n        i, n, d, f, cd, cdv;\n\n    for ( i = 0; i < 17; i++ ) {\n        f = FL[ i ];\n        d = v.slice( i, i + 1 );\n        if ( isNaN( d ) ) {\n            d = d.toUpperCase();\n            n = VL[ LL.indexOf( d ) ];\n        } else {\n            n = parseInt( d, 10 );\n        }\n        if ( i === 8 )\n        {\n            cdv = n;\n            if ( d === \"X\" ) {\n                cdv = 10;\n            }\n        }\n        rs += n * f;\n    }\n    cd = rs % 11;\n    if ( cd === cdv ) {\n        return true;\n    }\n    return false;\n}, \"The specified vehicle identification number (VIN) is invalid.\" );\n\n$.validator.addMethod( \"zipcodeUS\", function( value, element ) {\n\treturn this.optional( element ) || /^\\d{5}(-\\d{4})?$/.test( value );\n}, \"The specified US ZIP Code is invalid.\" );\n\n$.validator.addMethod( \"ziprange\", function( value, element ) {\n\treturn this.optional( element ) || /^90[2-5]\\d\\{2\\}-\\d{4}$/.test( value );\n}, \"Your ZIP-code must be in the range 902xx-xxxx to 905xx-xxxx.\" );\nreturn $;\n}));","import $ from 'jquery';\nimport 'jquery-validation';\nimport 'jquery-validation/dist/additional-methods';\n\nconst LANGUAGES = {\n    \"en\": \"en\",\n    \"en-au\": \"en\",\n    \"en-nz\": \"en\",\n    \"en-gb\": \"en\",\n    \"en-ca\": \"en\",\n    \"en-za\": \"en\",\n    \"pt-br\": \"pt_BR\",\n    \"fr\": \"fr\",\n    \"fr-ca\": \"fr\",\n    \"zh-hans\": \"zh\",\n    \"zh-hant\": \"zh_TW\",\n    \"de\": \"de\",\n    \"de-at\": \"de\",\n    \"it\": \"it\",\n    \"ja\": \"ja\",\n    \"es\": \"es\",\n    \"es-xl\": \"es\",\n    \"pl\": \"pl\",\n    \"ru\": \"ru\",\n    \"sk\": \"sk\",\n    \"ch-de\": \"de\",\n    \"ch-fr\": \"fr\",\n    \"cs\": \"cs\",\n    \"cs-cz\": \"cs\",\n    \"da\": \"da\",\n    \"fi\": \"fi\",\n    \"nb\": \"en\",\n    \"sv\": \"sv\",\n    \"nl\": \"nl\"\n};\n\nconst addRadioOrCheckboxSelectValidity = function(inputs) {\n    if (inputs.length > 1) {\n        inputs.rules('add', {\n            require_from_group: [1, inputs],\n        });\n    }\n};\n\nfunction initCustomValidationRules(form) {\n    const requiredFields = form.find('.form-required');\n    requiredFields.toArray().forEach(el => {\n        const group = $(el);\n\n        const maybeRadios = group.find(':radio');\n\n        if (maybeRadios.length) {\n            return addRadioOrCheckboxSelectValidity(maybeRadios);\n        }\n\n        const maybeCheckboxes = group.find(':checkbox');\n\n        if (maybeCheckboxes.length) {\n            return addRadioOrCheckboxSelectValidity(maybeCheckboxes);\n        }\n    });\n}\n\nexport default function initLocale() {\n    const locale = $('html').attr('lang');\n\n    if (LANGUAGES[locale] === 'en') {\n        return;\n    }\n}\n\nwindow.IDEXX = window.IDEXX || {};\nwindow.IDEXX.initCustomValidationRules = initCustomValidationRules;\n","import $ from 'jquery'\nimport { scrollTo } from './utils'\n\nconst defaults = {\n  offset: -20,\n  scrollTime: 250\n}\n\n// @TODO: Not used, can go away\nexport function initLocalScroll() {\n  $(document).on('click', '.js-localscroll[href^=\"#\"]', function (e) {\n    e.preventDefault()\n\n    const link = $(this)\n    const href = link.attr('href')\n    const offset = link.data('offset')\n    const time = link.data('time')\n    const options = $.extend(defaults, { offset, time })\n    let target\n\n    try {\n      target = $(href)\n    } catch (e) {} // eslint-disable-line\n\n    if (!target) {\n      return\n    }\n\n    const top = target.offset().top\n\n    scrollTo(top, options.scrollTime).then(function () {\n      if (window.history.pushState) {\n        window.history.pushState('', {}, href)\n      } else {\n        window.location.hash = href\n      }\n    })\n  })\n}\n","import $ from 'jquery'\nimport Cookies from 'js-cookie'\n\nclass ModalBox {\n  constructor(element) {\n    this.cookieName = `closed-modal-box-${element.attr('id')}`\n    this.expires = element.data('expires') ? parseInt(element.data('expires'), 10) : 7\n    this._setupUI(element)\n    this._setupEvents()\n  }\n\n  _setupUI(element) {\n    this.ui = {\n      modal: element,\n      close: element.find('.js-modal-box-close'),\n      window: $(window),\n      cookiePolicy: $('.js-cookie-policy')\n    }\n  }\n\n  _setupEvents() {\n    this.ui.window.on('load', () => {\n      if (!this._checkIfCookieExists()) {\n        this.open()\n      }\n    })\n\n    this.ui.close.on('click', () => {\n      this.close()\n    })\n  }\n\n  _checkIfCookieExists() {\n    return Cookies.get(this.cookieName)\n  }\n\n  _setCookie() {\n    Cookies.set(this.cookieName, 'true', {\n      expires: this.expires,\n      path: ''\n    })\n  }\n\n  open() {\n    if (this.ui.cookiePolicy.is(':visible')) {\n      this.ui.modal.css('margin-bottom', this.ui.cookiePolicy.outerHeight())\n    }\n\n    this.ui.modal.fadeIn('fast')\n  }\n\n  close() {\n    this.ui.modal.fadeOut('fast', () => {\n      this._setCookie()\n    })\n  }\n}\n\nexport function initModalBoxes(selector = '.js-modal-box') {\n  $(selector).each((i, el) => new ModalBox($(el)))\n}\n","import $ from 'jquery'\n\nexport function initSearchFiltersForm() {\n  const form = $('.js-search-filters-form')\n  const searchContainer = $('.js-search-container')\n\n  form.on('change', ':radio, :checkbox', () => form.submit())\n\n  form.on('submit', () => {\n    searchContainer.addClass('loading')\n  })\n}\n","export function showTabFromHash() {\n  const hash = window.location.hash\n  let content = $()\n\n  try {\n    content = $(`${hash}, a[name=${hash.slice(1)}]`)\n  } catch (e) {} // eslint-disable-line\n\n  const pane = content.closest('.tab-pane')\n\n  if (!pane.length) {\n    return\n  }\n\n  const paneId = pane.attr('id')\n\n  $(`[href='#${paneId}']`).tab('show')\n}\n","/*!\n * simpleParallax.min - simpleParallax is a simple JavaScript library that gives your website parallax animations on any images or videos, \n * @date: 20-08-2020 14:0:14, \n * @version: 5.6.2,\n * @link: https://simpleparallax.com/\n */\n!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(\"simpleParallax\",[],e):\"object\"==typeof exports?exports.simpleParallax=e():t.simpleParallax=e()}(window,(function(){return function(t){var e={};function n(i){if(e[i])return e[i].exports;var r=e[i]={i:i,l:!1,exports:{}};return t[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var r in t)n.d(i,r,function(e){return t[e]}.bind(null,r));return i},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=0)}([function(t,e,n){\"use strict\";n.r(e),n.d(e,\"default\",(function(){return x}));var i=function(){return Element.prototype.closest&&\"IntersectionObserver\"in window};function r(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}var s=new(function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this.positions={top:0,bottom:0,height:0}}var e,n,i;return e=t,(n=[{key:\"setViewportTop\",value:function(t){return this.positions.top=t?t.scrollTop:window.pageYOffset,this.positions}},{key:\"setViewportBottom\",value:function(){return this.positions.bottom=this.positions.top+this.positions.height,this.positions}},{key:\"setViewportAll\",value:function(t){return this.positions.top=t?t.scrollTop:window.pageYOffset,this.positions.height=t?t.clientHeight:document.documentElement.clientHeight,this.positions.bottom=this.positions.top+this.positions.height,this.positions}}])&&r(e.prototype,n),i&&r(e,i),t}()),o=function(t){return NodeList.prototype.isPrototypeOf(t)||HTMLCollection.prototype.isPrototypeOf(t)?Array.from(t):\"string\"==typeof t||t instanceof String?document.querySelectorAll(t):[t]},a=function(){for(var t,e=\"transform webkitTransform mozTransform oTransform msTransform\".split(\" \"),n=0;void 0===t;)t=void 0!==document.createElement(\"div\").style[e[n]]?e[n]:void 0,n+=1;return t}(),l=function(t){return\"img\"!==t.tagName.toLowerCase()&&\"picture\"!==t.tagName.toLowerCase()||!!t&&(!!t.complete&&(void 0===t.naturalWidth||0!==t.naturalWidth))};function u(t){return function(t){if(Array.isArray(t))return c(t)}(t)||function(t){if(\"undefined\"!=typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)}(t)||function(t,e){if(!t)return;if(\"string\"==typeof t)return c(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);\"Object\"===n&&t.constructor&&(n=t.constructor.name);if(\"Map\"===n||\"Set\"===n)return Array.from(t);if(\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return c(t,e)}(t)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function c(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}function h(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}var f=function(){function t(e,n){var i=this;!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this.element=e,this.elementContainer=e,this.settings=n,this.isVisible=!0,this.isInit=!1,this.oldTranslateValue=-1,this.init=this.init.bind(this),this.customWrapper=this.settings.customWrapper&&this.element.closest(this.settings.customWrapper)?this.element.closest(this.settings.customWrapper):null,l(e)?this.init():this.element.addEventListener(\"load\",(function(){setTimeout((function(){i.init(!0)}),50)}))}var e,n,i;return e=t,(n=[{key:\"init\",value:function(t){var e=this;this.isInit||(t&&(this.rangeMax=null),this.element.closest(\".simpleParallax\")||(!1===this.settings.overflow&&this.wrapElement(this.element),this.setTransformCSS(),this.getElementOffset(),this.intersectionObserver(),this.getTranslateValue(),this.animate(),this.settings.delay>0?setTimeout((function(){e.setTransitionCSS(),e.elementContainer.classList.add(\"simple-parallax-initialized\")}),10):this.elementContainer.classList.add(\"simple-parallax-initialized\"),this.isInit=!0))}},{key:\"wrapElement\",value:function(){var t=this.element.closest(\"picture\")||this.element,e=this.customWrapper||document.createElement(\"div\");e.classList.add(\"simpleParallax\"),e.style.overflow=\"hidden\",this.customWrapper||(t.parentNode.insertBefore(e,t),e.appendChild(t)),this.elementContainer=e}},{key:\"unWrapElement\",value:function(){var t=this.elementContainer;this.customWrapper?(t.classList.remove(\"simpleParallax\"),t.style.overflow=\"\"):t.replaceWith.apply(t,u(t.childNodes))}},{key:\"setTransformCSS\",value:function(){!1===this.settings.overflow&&(this.element.style[a]=\"scale(\".concat(this.settings.scale,\")\")),this.element.style.willChange=\"transform\"}},{key:\"setTransitionCSS\",value:function(){this.element.style.transition=\"transform \".concat(this.settings.delay,\"s \").concat(this.settings.transition)}},{key:\"unSetStyle\",value:function(){this.element.style.willChange=\"\",this.element.style[a]=\"\",this.element.style.transition=\"\"}},{key:\"getElementOffset\",value:function(){var t=this.elementContainer.getBoundingClientRect();if(this.elementHeight=t.height,this.elementTop=t.top+s.positions.top,this.settings.customContainer){var e=this.settings.customContainer.getBoundingClientRect();this.elementTop=t.top-e.top+s.positions.top}this.elementBottom=this.elementHeight+this.elementTop}},{key:\"buildThresholdList\",value:function(){for(var t=[],e=1;e<=this.elementHeight;e++){var n=e/this.elementHeight;t.push(n)}return t}},{key:\"intersectionObserver\",value:function(){var t={root:null,threshold:this.buildThresholdList()};this.observer=new IntersectionObserver(this.intersectionObserverCallback.bind(this),t),this.observer.observe(this.element)}},{key:\"intersectionObserverCallback\",value:function(t){var e=this;t.forEach((function(t){t.isIntersecting?e.isVisible=!0:e.isVisible=!1}))}},{key:\"checkIfVisible\",value:function(){return this.elementBottom>s.positions.top&&this.elementTop<s.positions.bottom}},{key:\"getRangeMax\",value:function(){var t=this.element.clientHeight;this.rangeMax=t*this.settings.scale-t}},{key:\"getTranslateValue\",value:function(){var t=((s.positions.bottom-this.elementTop)/((s.positions.height+this.elementHeight)/100)).toFixed(1);return t=Math.min(100,Math.max(0,t)),0!==this.settings.maxTransition&&t>this.settings.maxTransition&&(t=this.settings.maxTransition),this.oldPercentage!==t&&(this.rangeMax||this.getRangeMax(),this.translateValue=(t/100*this.rangeMax-this.rangeMax/2).toFixed(0),this.oldTranslateValue!==this.translateValue&&(this.oldPercentage=t,this.oldTranslateValue=this.translateValue,!0))}},{key:\"animate\",value:function(){var t,e=0,n=0;(this.settings.orientation.includes(\"left\")||this.settings.orientation.includes(\"right\"))&&(n=\"\".concat(this.settings.orientation.includes(\"left\")?-1*this.translateValue:this.translateValue,\"px\")),(this.settings.orientation.includes(\"up\")||this.settings.orientation.includes(\"down\"))&&(e=\"\".concat(this.settings.orientation.includes(\"up\")?-1*this.translateValue:this.translateValue,\"px\")),t=!1===this.settings.overflow?\"translate3d(\".concat(n,\", \").concat(e,\", 0) scale(\").concat(this.settings.scale,\")\"):\"translate3d(\".concat(n,\", \").concat(e,\", 0)\"),this.element.style[a]=t}}])&&h(e.prototype,n),i&&h(e,i),t}();function m(t){return function(t){if(Array.isArray(t))return y(t)}(t)||function(t){if(\"undefined\"!=typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)}(t)||d(t)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function p(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){if(\"undefined\"==typeof Symbol||!(Symbol.iterator in Object(t)))return;var n=[],i=!0,r=!1,s=void 0;try{for(var o,a=t[Symbol.iterator]();!(i=(o=a.next()).done)&&(n.push(o.value),!e||n.length!==e);i=!0);}catch(t){r=!0,s=t}finally{try{i||null==a.return||a.return()}finally{if(r)throw s}}return n}(t,e)||d(t,e)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function d(t,e){if(t){if(\"string\"==typeof t)return y(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return\"Object\"===n&&t.constructor&&(n=t.constructor.name),\"Map\"===n||\"Set\"===n?Array.from(t):\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?y(t,e):void 0}}function y(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}function v(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}var g,b,w=!1,T=[],x=function(){function t(e,n){if(function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),e&&i()){if(this.elements=o(e),this.defaults={delay:0,orientation:\"up\",scale:1.3,overflow:!1,transition:\"cubic-bezier(0,0,0,1)\",customContainer:\"\",customWrapper:\"\",maxTransition:0},this.settings=Object.assign(this.defaults,n),this.settings.customContainer){var r=p(o(this.settings.customContainer),1);this.customContainer=r[0]}this.lastPosition=-1,this.resizeIsDone=this.resizeIsDone.bind(this),this.refresh=this.refresh.bind(this),this.proceedRequestAnimationFrame=this.proceedRequestAnimationFrame.bind(this),this.init()}}var e,n,r;return e=t,(n=[{key:\"init\",value:function(){var t=this;s.setViewportAll(this.customContainer),T=[].concat(m(this.elements.map((function(e){return new f(e,t.settings)}))),m(T)),w||(this.proceedRequestAnimationFrame(),window.addEventListener(\"resize\",this.resizeIsDone),w=!0)}},{key:\"resizeIsDone\",value:function(){clearTimeout(b),b=setTimeout(this.refresh,200)}},{key:\"proceedRequestAnimationFrame\",value:function(){var t=this;s.setViewportTop(this.customContainer),this.lastPosition!==s.positions.top?(s.setViewportBottom(),T.forEach((function(e){t.proceedElement(e)})),g=window.requestAnimationFrame(this.proceedRequestAnimationFrame),this.lastPosition=s.positions.top):g=window.requestAnimationFrame(this.proceedRequestAnimationFrame)}},{key:\"proceedElement\",value:function(t){(this.customContainer?t.checkIfVisible():t.isVisible)&&t.getTranslateValue()&&t.animate()}},{key:\"refresh\",value:function(){s.setViewportAll(this.customContainer),T.forEach((function(t){t.getElementOffset(),t.getRangeMax()})),this.lastPosition=-1}},{key:\"destroy\",value:function(){var t=this,e=[];T=T.filter((function(n){return t.elements.includes(n.element)?(e.push(n),!1):n})),e.forEach((function(e){e.unSetStyle(),!1===t.settings.overflow&&e.unWrapElement()})),T.length||(window.cancelAnimationFrame(g),window.removeEventListener(\"resize\",this.refresh),w=!1)}}])&&v(e.prototype,n),r&&v(e,r),t}()}]).default}));","import simpleParallax from 'simple-parallax-js'\n\nfunction initAllParallax() {\n  const parallaxElements = document.querySelectorAll('[data-parallax]')\n  new simpleParallax(parallaxElements, {\n    scale: 1.5\n  })\n}\n\nexport function initParallax() {\n  initAllParallax()\n}\n","import 'vite/modulepreload-polyfill'\nimport $ from './libs/jquery'\nimport 'jquery-validation'\nimport './libs/bootstrap'\nimport Alpine from 'alpinejs'\nimport htmx from 'htmx.org'\n\nimport {\n  initBasicSlider,\n  initImageTextSlider,\n  initProductSlider,\n  initQuotesSlider,\n  initStandardSlider\n} from './addons/slick'\nimport { initDesktopMenu, initMobileMenu } from './addons/header'\nimport { initAccordions } from './addons/accordion'\nimport { initBlog } from './addons/blog'\nimport { initCookiePolicy } from './addons/cookie-policy'\nimport initFormLocale from './addons/forms'\nimport { initLocalScroll } from './addons/localscroll'\nimport { initModalBoxes } from './addons/modal'\nimport { initSearchFiltersForm } from './addons/search'\nimport { showTabFromHash } from './addons/tabs'\nimport { initParallax } from './addons/parallax'\n\nwindow.Alpine = Alpine\nwindow.$ = $\nwindow.jQuery = $\nwindow.htmx = htmx\n\nAlpine.start()\n\n$(() => {\n  initMobileMenu()\n  initDesktopMenu()\n  initStandardSlider()\n  initProductSlider()\n  initQuotesSlider()\n  initBasicSlider()\n  initImageTextSlider()\n  initBlog()\n  initModalBoxes()\n  initCookiePolicy()\n  initAccordions()\n  initSearchFiltersForm()\n  initLocalScroll()\n  initFormLocale()\n  initParallax()\n\n  $(window)\n    .on('hashchange', () => {\n      showTabFromHash()\n    })\n    .trigger('hashchange')\n})\n\n/**\n * VSS Section Nav\n */\n$('.feature-menu .section-name button.section-nav-toggle').click(function (e) {\n  const el = $(this)\n  const container = el.closest('.container')\n  const menu = container.find('.section-menu')\n\n  if (el.hasClass('collapsed')) {\n    el.removeClass('collapsed')\n    menu.addClass('expanded')\n  } else {\n    el.addClass('collapsed')\n    menu.removeClass('expanded')\n  }\n})\n\n/**\n * Back to top Button\n */\nconst btn = $('.back-to-top')\n\n$(window).scroll(function () {\n  if ($(window).scrollTop() > 300) {\n    btn.addClass('show')\n  } else {\n    btn.removeClass('show')\n  }\n})\n\nbtn.on('click', function (e) {\n  e.preventDefault()\n  $('html, body').animate({ scrollTop: 0 }, '300')\n})\n\n/**\n * Automatically logs the user in when the webpage loads.\n */\nwindow.autologin = function () {\n  const pageEditUrl = `${window.location.pathname}?edit`\n  if (!!window.CMS) {\n    window.location.href = pageEditUrl\n  } else {\n    const nextParam = encodeURIComponent(pageEditUrl)\n    window.location.href = `/admin/login/?autologin=1&next=${nextParam}`\n  }\n}\n\n/**\n * Resize Pardot Iframes if message received.\n */\nwindow.addEventListener('message', function (event) {\n  if (event.origin !== 'https://info.idexx.com') return\n  if (event.data?.type === 'resize-iframe' && event.data.instance) {\n    console.debug('Resizing iframe', event.data)\n    const iframe = document.getElementById(`pardot-form-${event.data.instance}`)\n    if (iframe) {\n      iframe.style.height = event.data.height + 'px'\n    } else {\n      console.error(`Could not find iframe with id pardot-form-${event.data.instance}`)\n    }\n  }\n})\n"],"x_google_ignoreList":[0,9,14,16,22],"mappings":"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"}