{"version":3,"file":"base-IIwIDaqc.js","names":["Breakpoint","Breakpoint","$","$","Cookies","$","$","$","$","Cookies","$","simpleParallax","Alpine","$","__commonJSMin","require_jquery","__toESM","initStandardSlider","initQuotesSlider","initImageTextSlider","initProductSlider","initBasicSlider","module_default","htmx","jquery_default","factory","module","$","options","validator","event","handle","hidden","result","valid","errorList","element","isContentEditable","settings","staticRules","existingRules","data","param","filtered","command","argument","method","trim","str","a","val","form","args","source","params","i","errorClass","validClass","currentForm","groups","rules","value","name","key","delegate","eventType","elements","cleanElement","checkElement","v","rs","group","testgroup","errors","count","obj","updateGroupMembers","errorID","describedBy","error","describedByIds","ind","lastActive","n","rulesCache","selectors","formId","selector","$element","type","idx","rulesCount","dependencyMismatch","rule","normalizer","m","message","theregex","toToggle","place","elementID","describer","string","port","className","classes","prop","keepRule","parameter","parts","transformed","called","length","errorMessage","supportedTypes","re","notSupported","decimalPlaces","match","num","toInt","decimals","target","previous","optionDataString","response","submitted","pendingRequests","ajax","xhr","mode","transitionEnd","el","transEndEventNames","$el","duration","e","dismiss","Alert","$this","$parent","removeElement","Plugin","option","old","Collapse","activesData","actives","startEvent","dimension","complete","scrollSize","getTargetFromTrigger","isOpen","$trigger","href","$target","toggle","Dropdown","getParent","clearMenus","relatedTarget","isActive","$items","index","Modal","_relatedTarget","that","transition","animate","doAnimate","callback","callbackRemove","modalIsOverflowing","fullWindowWidth","documentElementRect","bodyPad","scrollbarWidth","actualPadding","calculatedPadding","padding","scrollDiv","showEvent","Tab","$ul","$previous","hideEvent","$active","container","next","clickHandler","DISALLOWED_ATTRIBUTES","uriAttrs","DefaultWhitelist","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","attrName","attr","allowedAttributeList","regExp","sanitizeHtml","unsafeHtml","sanitizeFn","createdDocument","whitelistKeys","whiteList","len","elName","attributeList","whitelistedAttributes","j","len2","Tooltip","triggers","trigger","eventIn","eventOut","dataAttributes","dataAttr","defaults","self","inDom","$tip","tipId","placement","autoToken","autoPlace","pos","actualWidth","actualHeight","orgPlacement","viewportDim","calculatedOffset","prevHoverState","width","height","marginTop","marginLeft","props","offset","delta","isVertical","arrowDelta","arrowOffsetPosition","title","$e","isBody","elRect","isSvg","elOffset","scroll","outerDims","viewportPadding","viewportDimensions","topEdgeOffset","bottomEdgeOffset","leftEdgeOffset","rightEdgeOffset","o","prefix","Popover","content","typeContent","require_bootstrap_breakpoints","exports","root","_win","_breakpoints","_currentBreakpoint","_defaults","_validate","breakpoint","_onResize","oldBreakpoint","viewport","_initWatch","getBreakpoints","is","current","init","breakpoints","destroy","import_jquery","import_bootstrap_breakpoints","responsive_default","preventTouchScrolling","namespace","allowTouchScrolling","isMobileMenu","initDesktopMenu","topLevelDropdowns","dropdownToggle","initMobileMenu","mobileMenu","html","currentDropdown","initAccordions","scrollTo","top","initPostsByAuthorLink","initBlog","assign","defaultConverter","set","defaultAttributes","attributes","stringifiedAttributes","attributeName","converter","get","cookies","jar","found","_e","api","initCookiePolicy","policy","close","stripHtml","valueStripped","regex","checksum","tokens","typeParam","optionalValue","file","account","sum","factor","digit","cifRegEx","letter","number","control","all_sum","even_sum","odd_sum","control_digit","control_letter","isOdd","dsc","firstChar","firstCN","secondCN","tamanho","numeros","digitos","soma","resultado","il","checkResult","cn","nCheck","nDigit","bEven","cDigit","validTypes","isParamString","symbol","soft","check","adata","gg","mm","aaaa","xdata","iban","ibancheckdigits","leadingZeroes","cRest","cOperator","countrycode","ibancheck","charAt","cChar","bbanpattern","bbancountrypatterns","ibanregexp","p","\"AL\"","\"AD\"","\"AT\"","\"AZ\"","\"BE\"","\"BH\"","\"BA\"","\"BR\"","\"BG\"","\"CR\"","\"HR\"","\"CY\"","\"CZ\"","\"DK\"","\"DO\"","\"EE\"","\"FO\"","\"FI\"","\"FR\"","\"GE\"","\"DE\"","\"GI\"","\"GR\"","\"GL\"","\"GT\"","\"HU\"","\"IS\"","\"IE\"","\"IL\"","\"IT\"","\"KZ\"","\"KW\"","\"LV\"","\"LB\"","\"LI\"","\"LT\"","\"LU\"","\"MK\"","\"MT\"","\"MR\"","\"MU\"","\"MC\"","\"MD\"","\"ME\"","\"NL\"","\"NO\"","\"PK\"","\"PS\"","\"PL\"","\"PT\"","\"RO\"","\"SM\"","\"SA\"","\"RS\"","\"SK\"","\"SI\"","\"ES\"","\"SE\"","\"CH\"","\"TN\"","\"TR\"","\"AE\"","\"GB\"","\"VG\"","totalSize","ruPhone_number","phone_number","nieRegEx","validChars","arrSteps","intSum","int2","dv","multiplier","cep_value","$fields","$fieldsFirst","isValid","numberFilled","isDefault","caseSensitive","includeTerritories","includeMilitary","LL","VL","FL","d","f","cd","cdv","LANGUAGES","\"en\"","\"fr\"","\"de\"","\"it\"","\"ja\"","\"es\"","\"pl\"","\"ru\"","\"sk\"","\"cs\"","\"da\"","\"fi\"","\"nb\"","\"sv\"","\"nl\"","addRadioOrCheckboxSelectValidity","inputs","initCustomValidationRules","maybeRadios","maybeCheckboxes","initLocale","initLocalScroll","link","time","ModalBox","initModalBoxes","initSearchFiltersForm","searchContainer","showTabFromHash","hash","pane","paneId","import_simpleParallax_min","r","t","x","s","l","u","c","h","y","g","b","w","T","initAllParallax","parallaxElements","initParallax","menu","btn","pageEditUrl","nextParam","_event$data","iframe"],"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":"sTAQC,SAAU,EAAU,CACf,OAAO,QAAW,YAAc,OAAO,IAC3C,OAAQ,CAAC,QAAQ,EAAGyB,CAAQ,EAClB,OAAOC,GAAW,UAAYA,EAAO,QAC/C,EAAO,QAAUD,EAAAV,EAAA,CAA6B,EAE9CU,EAAS,MAAO,CAElB,EAAA,CAAE,SAAU,EAAI,CAEhBE,EAAE,OAAQA,EAAE,GAAI,CAGf,SAAU,SAAU,EAAU,CAG7B,GAAK,CAAC,KAAK,OAAS,CACdC,GAAWA,EAAQ,OAAS,OAAO,SACvC,QAAQ,KAAM,sDAAuD,EAEtE,MACD,CAGA,IAAIC,EAAYF,EAAE,KAAM,KAAM,GAAK,WAAY,EAsF/C,OArFKE,IAKL,KAAK,KAAM,aAAc,YAAa,EAEtC,EAAY,IAAIF,EAAE,UAAWC,EAAS,KAAM,EAAI,EAChDD,EAAE,KAAM,KAAM,GAAK,YAAaE,CAAU,EAErCA,EAAU,SAAS,WAEvB,KAAK,GAAI,iBAAkB,UAAW,SAAU,EAAQ,CAIvD,EAAU,aAAeC,EAAM,cAG1BH,EAAG,IAAK,CAAC,CAAC,SAAU,QAAS,IACjC,EAAU,aAAe,IAIrBA,EAAG,IAAK,CAAC,CAAC,KAAM,gBAAiB,IAAM,IAAA,KAC3C,EAAU,aAAe,GAE3B,CAAE,EAGF,KAAK,GAAI,kBAAmB,SAAU,EAAQ,CACxCE,EAAU,SAAS,OAGvBC,EAAM,eAAe,EAGtB,SAASC,GAAS,CACjB,IAAIC,EAAQC,EA0BZ,OAnBKJ,EAAU,eAAkBA,EAAU,SAAS,eAAiBA,EAAU,iBAC9E,EAASF,EAAG,wBAAyB,CAAC,CACpC,KAAM,OAAQE,EAAU,aAAa,IAAK,CAAC,CAC3C,IAAKF,EAAGE,EAAU,YAAa,CAAC,CAAC,IAAI,CAAE,CAAC,CACxC,SAAUA,EAAU,WAAY,GAG9BA,EAAU,SAAS,eAAiB,CAACA,EAAU,SAAS,OAC5D,EAASA,EAAU,SAAS,cAAc,KAAMA,EAAWA,EAAU,YAAaC,CAAM,EACnFE,GAGJA,EAAO,OAAO,EAEVC,IAAW,IAAA,IACRA,GAIF,EACR,CAeC,OAZIJ,EAAU,cACd,EAAU,aAAe,GAClBE,EAAO,GAEVF,EAAU,KAAK,EACdA,EAAU,gBACd,EAAU,cAAgB,GACnB,IAEDE,EAAO,GAEdF,EAAU,aAAa,EAChB,GAET,CAAE,GAGIA,EACR,EAGA,MAAO,UAAW,CACjB,IAAIK,EAAOL,EAAWM,EAgBtB,OAdKR,EAAG,KAAM,EAAI,CAAC,CAAC,GAAI,MAAO,EAC9B,EAAQ,KAAK,SAAS,CAAC,CAAC,KAAK,GAE7B,EAAY,CAAC,EACb,EAAQ,GACR,EAAYA,EAAG,KAAM,EAAG,CAAC,IAAK,CAAC,CAAC,SAAS,EACzC,KAAK,KAAM,UAAW,CACrB,EAAQE,EAAU,QAAS,IAAK,GAAKK,EAC/BA,IACL,EAAYC,EAAU,OAAQN,EAAU,SAAU,EAEpD,CAAE,EACF,EAAU,UAAYM,GAEhBD,CACR,EAGA,MAAO,SAAU,EAAS,EAAW,CACpC,IAAIE,EAAU,KAAM,GACnBC,EAA2B,KAAK,KAAM,iBAAkB,IAAM,QAAe,KAAK,KAAM,iBAAkB,IAAM,QAChHC,EAAUC,EAAaC,EAAeC,EAAMC,EAAOC,EAGpD,GAAKP,GAAW,OAIX,CAACA,EAAQ,MAAQC,IACrB,EAAQ,KAAO,KAAK,QAAS,MAAO,CAAC,CAAE,GACvC,EAAQ,KAAO,KAAK,KAAM,MAAO,GAG7BD,EAAQ,MAAQ,MAIrB,IAAKQ,EAIJ,OAHA,EAAWjB,EAAE,KAAMS,EAAQ,KAAM,WAAY,CAAC,CAAC,SAC/C,EAAcE,EAAS,MACvB,EAAgBX,EAAE,UAAU,YAAaS,CAAQ,EACxCQ,EAAT,CACA,IAAK,MACJjB,EAAE,OAAQa,EAAeb,EAAE,UAAU,cAAekB,CAAS,CAAE,EAG/D,OAAOL,EAAc,SACrB,EAAaJ,EAAQ,MAASI,EACzBK,EAAS,WACb,EAAS,SAAUT,EAAQ,MAAST,EAAE,OAAQW,EAAS,SAAUF,EAAQ,MAAQS,EAAS,QAAS,GAEpG,MACD,IAAK,SAUJ,OATMA,GAIN,EAAW,CAAC,EACZlB,EAAE,KAAMkB,EAAS,MAAO,IAAK,EAAG,SAAU,EAAO,EAAS,CACzD,EAAUC,GAAWN,EAAeM,GACpC,OAAON,EAAeM,EACvB,CAAE,EACKH,IARN,OAAOJ,EAAaH,EAAQ,MACrBI,EAQT,CA0BD,MAvBA,GAAOb,EAAE,UAAU,eACnBA,EAAE,OACD,CAAC,EACDA,EAAE,UAAU,WAAYS,CAAQ,EAChCT,EAAE,UAAU,eAAgBS,CAAQ,EACpCT,EAAE,UAAU,UAAWS,CAAQ,EAC/BT,EAAE,UAAU,YAAaS,CAAQ,CAClC,EAAGA,CAAQ,EAGNK,EAAK,WACT,EAAQA,EAAK,SACb,OAAOA,EAAK,SACZ,EAAOd,EAAE,OAAQ,CAAE,SAAUe,CAAM,EAAGD,CAAK,GAIvCA,EAAK,SACT,EAAQA,EAAK,OACb,OAAOA,EAAK,OACZ,EAAOd,EAAE,OAAQc,EAAM,CAAE,OAAQC,CAAM,CAAE,GAGnCD,CAzBP,CA0BD,CACD,CAAE,EAGF,IAAIM,EAAO,SAAU,EAAM,CAG1B,OAAOC,EAAI,QAAS,qCAAsC,EAAG,CAC9D,EAGArB,EAAE,OAAQA,EAAE,KAAK,SAAWA,EAAE,KAAM,KAAO,CAG1C,MAAO,SAAU,EAAI,CACpB,MAAO,CAACoB,EAAM,GAAKpB,EAAGsB,CAAE,CAAC,CAAC,IAAI,CAAE,CACjC,EAGA,OAAQ,SAAU,EAAI,CACrB,IAAIC,EAAMvB,EAAGsB,CAAE,CAAC,CAAC,IAAI,EACrB,OAAOC,IAAQ,MAAQ,CAAC,CAACH,EAAM,GAAKG,CAAI,CACzC,EAGA,UAAW,SAAU,EAAI,CACxB,MAAO,CAACvB,EAAGsB,CAAE,CAAC,CAAC,KAAM,SAAU,CAChC,CACD,CAAE,EAGF,EAAE,UAAY,SAAU,EAAS,EAAO,CACvC,KAAK,SAAWtB,EAAE,OAAQ,GAAM,CAAC,EAAGA,EAAE,UAAU,SAAUC,CAAQ,EAClE,KAAK,YAAcuB,EACnB,KAAK,KAAK,CACX,EAGA,EAAE,UAAU,OAAS,SAAU,EAAQ,EAAS,CAsB/C,OArBK,UAAU,SAAW,EAClB,UAAW,CACjB,IAAIC,EAAOzB,EAAE,UAAW,SAAU,EAElC,OADAyB,EAAK,QAASC,CAAO,EACd1B,EAAE,UAAU,OAAO,MAAO,KAAMyB,CAAK,CAC7C,EAEIE,IAAW,IAAA,GACRD,GAEH,UAAU,OAAS,GAAKC,EAAO,cAAgB,QACnD,EAAS3B,EAAE,UAAW,SAAU,CAAC,CAAC,MAAO,CAAE,GAEvC2B,EAAO,cAAgB,QAC3B,EAAS,CAAEA,CAAO,GAEnB3B,EAAE,KAAM2B,EAAQ,SAAU,EAAG,EAAI,CAChC,EAASD,EAAO,QAAa,OAAQ,MAAQE,EAAI,MAAO,GAAI,EAAG,UAAW,CACzE,OAAO,CACR,CAAE,CACH,CAAE,EACKF,EACR,EAEA1B,EAAE,OAAQA,EAAE,UAAW,CAEtB,SAAU,CACT,SAAU,CAAC,EACX,OAAQ,CAAC,EACT,MAAO,CAAC,EACR,WAAY,QACZ,aAAc,UACd,WAAY,QACZ,aAAc,QACd,aAAc,GACd,aAAc,GACd,uBAAwB,GACxB,eAAgBA,EAAG,CAAC,CAAE,EACtB,oBAAqBA,EAAG,CAAC,CAAE,EAC3B,SAAU,GACV,OAAQ,UACR,YAAa,GACb,eAAgB,CAAC,EACjB,UAAW,SAAU,EAAU,CAC9B,KAAK,WAAaS,EAGb,KAAK,SAAS,eACb,KAAK,SAAS,aAClB,KAAK,SAAS,YAAY,KAAM,KAAMA,EAAS,KAAK,SAAS,WAAY,KAAK,SAAS,UAAW,EAEnG,KAAK,UAAW,KAAK,UAAWA,CAAQ,CAAE,EAE5C,EACA,WAAY,SAAU,EAAU,CAC1B,CAAC,KAAK,UAAWA,CAAQ,IAAOA,EAAQ,QAAQ,KAAK,WAAa,CAAC,KAAK,SAAUA,CAAQ,IAC9F,KAAK,QAASA,CAAQ,CAExB,EACA,QAAS,SAAU,EAAS,EAAQ,CAqB9BN,EAAM,QAAU,GAAK,KAAK,aAAcM,CAAQ,IAAM,IAAMT,EAAE,QAASG,EAAM,QAAS,CAJ1F,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxB,GAAI,GAAI,GAAI,GAAI,IAAK,GAGgF,CAAE,IAAM,KAElGM,EAAQ,QAAQ,KAAK,WAAaA,EAAQ,QAAQ,KAAK,UAClE,KAAK,QAASA,CAAQ,CAExB,EACA,QAAS,SAAU,EAAU,CAGvBA,EAAQ,QAAQ,KAAK,UACzB,KAAK,QAASA,CAAQ,EAGXA,EAAQ,WAAW,QAAQ,KAAK,WAC3C,KAAK,QAASA,EAAQ,UAAW,CAEnC,EACA,UAAW,SAAU,EAAS,EAAY,EAAa,CACjDA,EAAQ,OAAS,QACrB,KAAK,WAAYA,EAAQ,IAAK,CAAC,CAAC,SAAUoB,CAAW,CAAC,CAAC,YAAaC,CAAW,EAE/E9B,EAAGS,CAAQ,CAAC,CAAC,SAAUoB,CAAW,CAAC,CAAC,YAAaC,CAAW,CAE9D,EACA,YAAa,SAAU,EAAS,EAAY,EAAa,CACnDrB,EAAQ,OAAS,QACrB,KAAK,WAAYA,EAAQ,IAAK,CAAC,CAAC,YAAaoB,CAAW,CAAC,CAAC,SAAUC,CAAW,EAE/E9B,EAAGS,CAAQ,CAAC,CAAC,YAAaoB,CAAW,CAAC,CAAC,SAAUC,CAAW,CAE9D,CACD,EAGA,YAAa,SAAU,EAAW,CACjC9B,EAAE,OAAQA,EAAE,UAAU,SAAUW,CAAS,CAC1C,EAEA,SAAU,CACT,SAAU,0BACV,OAAQ,yBACR,MAAO,sCACP,IAAK,4BACL,KAAM,6BACN,QAAS,mCACT,OAAQ,+BACR,OAAQ,4BACR,QAAS,qCACT,UAAWX,EAAE,UAAU,OAAQ,2CAA4C,EAC3E,UAAWA,EAAE,UAAU,OAAQ,uCAAwC,EACvE,YAAaA,EAAE,UAAU,OAAQ,2DAA4D,EAC7F,MAAOA,EAAE,UAAU,OAAQ,2CAA4C,EACvE,IAAKA,EAAE,UAAU,OAAQ,iDAAkD,EAC3E,IAAKA,EAAE,UAAU,OAAQ,oDAAqD,EAC9E,KAAMA,EAAE,UAAU,OAAQ,iCAAkC,CAC7D,EAEA,iBAAkB,GAElB,UAAW,CAEV,KAAM,UAAW,CAChB,KAAK,eAAiBA,EAAG,KAAK,SAAS,mBAAoB,EAC3D,KAAK,aAAe,KAAK,eAAe,QAAU,KAAK,gBAAkBA,EAAG,KAAK,WAAY,EAC7F,KAAK,WAAaA,EAAG,KAAK,SAAS,cAAe,CAAC,CAAC,IAAK,KAAK,SAAS,mBAAoB,EAC3F,KAAK,UAAY,CAAC,EAClB,KAAK,WAAa,CAAC,EACnB,KAAK,eAAiB,EACtB,KAAK,QAAU,CAAC,EAChB,KAAK,QAAU,CAAC,EAChB,KAAK,MAAM,EAEX,IAAI+B,EAAc,KAAK,YACtBC,EAAW,KAAK,OAAS,CAAC,EAC1BC,EACDjC,EAAE,KAAM,KAAK,SAAS,OAAQ,SAAU,EAAK,EAAQ,CAC/C,OAAOkC,GAAU,WACrB,EAAQA,EAAM,MAAO,IAAK,GAE3BlC,EAAE,KAAMkC,EAAO,SAAU,EAAO,EAAO,CACtC,EAAQC,GAASC,CAClB,CAAE,CACH,CAAE,EACF,EAAQ,KAAK,SAAS,MACtBpC,EAAE,KAAMiC,EAAO,SAAU,EAAK,EAAQ,CACrC,EAAOG,GAAQpC,EAAE,UAAU,cAAekC,CAAM,CACjD,CAAE,EAEF,SAASG,EAAU,EAAQ,CAC1B,IAAI3B,EAA2BV,EAAG,IAAK,CAAC,CAAC,KAAM,iBAAkB,IAAM,QAAeA,EAAG,IAAK,CAAC,CAAC,KAAM,iBAAkB,IAAM,QAU9H,GAPK,CAAC,KAAK,MAAQU,IAClB,KAAK,KAAOV,EAAG,IAAK,CAAC,CAAC,QAAS,MAAO,CAAC,CAAE,GACzC,KAAK,KAAOA,EAAG,IAAK,CAAC,CAAC,KAAM,MAAO,GAK/B+B,IAAgB,KAAK,KAI1B,KAAI7B,EAAYF,EAAE,KAAM,KAAK,KAAM,WAAY,EAC9CsC,EAAY,KAAOnC,EAAM,KAAK,QAAS,YAAa,EAAG,EACvDQ,EAAWT,EAAU,SACjBS,EAAU2B,IAAe,CAACtC,EAAG,IAAK,CAAC,CAAC,GAAIW,EAAS,MAAO,GAC5DA,EAAU2B,EAAW,CAAC,KAAMpC,EAAW,KAAMC,CAAM,CAF9B,CAIvB,CAMAH,EAAG,KAAK,WAAY,CAAC,CACnB,GAAI,oDAAqD,CANpC,QAAS,oBAAqB,gBAAiB,SAAU,WAAY,kBAAmB,kBAC1G,eAAgB,eAAgB,iBAAkB,oBAAqB,gBAAiB,iBACxF,gBAAiB,gBAAiB,0BAA2B,iBAAkB,iBAC/E,iBAAkB,oBAAqB,oBAAqB,iBAGO,CAAC,CAAC,OAAQ,KAAK,SAAS,cAAe,CAAC,CAAC,KAAM,IAAK,EAAGqC,CAAS,CAAC,CAIvI,GAAI,iBAAkB,CAND,SAAU,SAAU,iBAAkB,mBAMxB,CAAC,CAAC,OAAQ,KAAK,SAAS,cAAe,CAAC,CAAC,KAAM,IAAK,EAAGA,CAAS,EAEhG,KAAK,SAAS,gBAClBrC,EAAG,KAAK,WAAY,CAAC,CAAC,GAAI,wBAAyB,KAAK,SAAS,cAAe,CAElF,EAGA,KAAM,UAAW,CAQhB,OAPA,KAAK,UAAU,EACfA,EAAE,OAAQ,KAAK,UAAW,KAAK,QAAS,EACxC,KAAK,QAAUA,EAAE,OAAQ,CAAC,EAAG,KAAK,QAAS,EACrC,KAAK,MAAM,GAChBA,EAAG,KAAK,WAAY,CAAC,CAAC,eAAgB,eAAgB,CAAE,IAAK,CAAE,EAEhE,KAAK,WAAW,EACT,KAAK,MAAM,CACnB,EAEA,UAAW,UAAW,CACrB,KAAK,YAAY,EACjB,IAAM,IAAI4B,EAAI,EAAGW,EAAa,KAAK,gBAAkB,KAAK,SAAS,EAAKA,EAAUX,GAAK,IACtF,KAAK,MAAOW,EAAUX,EAAI,EAE3B,OAAO,KAAK,MAAM,CACnB,EAGA,QAAS,SAAU,EAAU,CAC5B,IAAIY,EAAe,KAAK,MAAO/B,CAAQ,EACtCgC,EAAe,KAAK,oBAAqBD,CAAa,EACtDE,EAAI,KACJpC,EAAS,GACTqC,EAAIC,EA4CL,OA1CKH,IAAiB,IAAA,GACrB,OAAO,KAAK,QAASD,EAAa,OAElC,KAAK,eAAgBC,CAAa,EAClC,KAAK,gBAAkBzC,EAAGyC,CAAa,EAIvC,EAAQ,KAAK,OAAQA,EAAa,MAC7BG,GACJ5C,EAAE,KAAM,KAAK,OAAQ,SAAU,EAAM,EAAY,CAC3C6C,IAAcD,GAAST,IAASM,EAAa,OACjD,EAAeC,EAAE,oBAAqBA,EAAE,MAAOA,EAAE,WAAYP,CAAK,CAAE,CAAE,EAGjEK,GAAgBA,EAAa,QAAQE,EAAE,UAC3CA,EAAE,gBAAgB,UAAWF,CAAa,EAC1C,EAASE,EAAE,MAAOF,CAAa,GAAKlC,GAGvC,CAAE,EAGH,EAAK,KAAK,MAAOmC,CAAa,IAAM,GACpC,EAASnC,GAAUqC,EACdA,EACJ,KAAK,QAASF,EAAa,MAAS,GAEpC,KAAK,QAASA,EAAa,MAAS,GAG/B,KAAK,iBAAiB,IAG3B,KAAK,OAAS,KAAK,OAAO,IAAK,KAAK,UAAW,GAEhD,KAAK,WAAW,EAGhBzC,EAAGS,CAAQ,CAAC,CAAC,KAAM,eAAgB,CAACkC,CAAG,GAGjCrC,CACR,EAGA,WAAY,SAAU,EAAS,CAC9B,GAAKwC,EAAS,CACb,IAAI5C,EAAY,KAGhBF,EAAE,OAAQ,KAAK,SAAU8C,CAAO,EAChC,KAAK,UAAY9C,EAAE,IAAK,KAAK,SAAU,SAAU,EAAS,EAAO,CAChE,MAAO,CACG,UACT,QAASE,EAAU,WAAYiC,CAAK,CAAC,CAAE,EACxC,CACD,CAAE,EAGF,KAAK,YAAcnC,EAAE,KAAM,KAAK,YAAa,SAAU,EAAU,CAChE,MAAO,EAAGS,EAAQ,QAAQqC,EAC3B,CAAE,CACH,CACK,KAAK,SAAS,WAClB,KAAK,SAAS,WAAW,KAAM,KAAM,KAAK,SAAU,KAAK,SAAU,EAEnE,KAAK,kBAAkB,CAEzB,EAGA,UAAW,UAAW,CAChB9C,EAAE,GAAG,WACTA,EAAG,KAAK,WAAY,CAAC,CAAC,UAAU,EAEjC,KAAK,QAAU,CAAC,EAChB,KAAK,UAAY,CAAC,EAClB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,IAAIuC,EAAW,KAAK,SAAS,CAAC,CAC5B,WAAY,eAAgB,CAAC,CAC7B,WAAY,cAAe,EAE7B,KAAK,cAAeA,CAAS,CAC9B,EAEA,cAAe,SAAU,EAAW,CACnC,IAAIX,EAEJ,GAAK,KAAK,SAAS,YAClB,IAAM,EAAI,EAAGW,EAAUX,GAAK,IAC3B,KAAK,SAAS,YAAY,KAAM,KAAMW,EAAUX,GAC/C,KAAK,SAAS,WAAY,EAAG,EAC9B,KAAK,WAAYW,EAAUX,EAAG,CAAC,IAAK,CAAC,CAAC,YAAa,KAAK,SAAS,UAAW,OAG7EW,EACE,YAAa,KAAK,SAAS,UAAW,CAAC,CACvC,YAAa,KAAK,SAAS,UAAW,CAE1C,EAEA,iBAAkB,UAAW,CAC5B,OAAO,KAAK,aAAc,KAAK,OAAQ,CACxC,EAEA,aAAc,SAAU,EAAM,CAE7B,IAAIQ,EAAQ,EACXnB,EACD,IAAMA,KAAKoB,EAILA,EAAKpB,KAAQ,IAAA,IAAaoB,EAAKpB,KAAQ,MAAQoB,EAAKpB,KAAQ,IAChE,IAGF,OAAOmB,CACR,EAEA,WAAY,UAAW,CACtB,KAAK,UAAW,KAAK,MAAO,CAC7B,EACA,wBAAyB,SAAU,EAAS,EAAO,EAAqB,CACvE,EAAuBE,IAAuB,IAAA,IAAsBA,EAEpE,IAAIC,EAASR,EAAGE,EACfO,EAAcnD,EAAGS,CAAQ,CAAC,CAAC,KAAM,kBAAmB,EACpD,EAAU2C,EAAM,KAAM,IAAK,EAGtBD,EAEOA,EAAY,MAAW,OAAQ,MAAQ,KAAK,cAAeD,CAAQ,EAAI,KAAM,CAAE,IAG3F,GAAe,IAAMA,GAJrB,EAAcA,EAOflD,EAAGS,CAAQ,CAAC,CAAC,KAAM,mBAAoB0C,CAAY,EAE9CF,IAGJ,EAAQ,KAAK,OAAQxC,EAAQ,MACxBmC,IACJ,EAAI,KACJ5C,EAAE,KAAM0C,EAAE,OAAQ,SAAU,EAAM,EAAY,CACxCG,IAAcD,GAClBF,EAAE,wBAAyB1C,EAAG,UAAY0C,EAAE,cAAeP,CAAK,EAAI,KAAMO,EAAE,WAAY,EAAGU,EAAO,EAAM,CAE1G,CAAE,GAGL,EAEA,2BAA4B,SAAU,EAAS,EAAQ,CAEtD,IACCC,EADiBrD,EAAGS,CAAQ,CAAC,CAAC,KAAM,kBACT,CAAC,CAAC,MAAO,GAAI,EACxCyC,EAAUE,EAAM,KAAM,IAAK,EAC3BE,EAAMD,EAAe,QAASH,CAAQ,EAElCI,EAAM,IACVD,EAAe,OAAQC,EAAK,CAAE,EAG1BD,EAAe,OACnBrD,EAAGS,CAAQ,CAAC,CAAC,KAAM,mBAAoB4C,EAAe,KAAM,GAAI,CAAE,EAElErD,EAAGS,CAAQ,CAAC,CAAC,WAAY,kBAAmB,CAG9C,EAEA,UAAW,SAAU,EAAS,CAE7B,IAAM,IAAImB,EAAI,EAAGkB,EAAQlB,GAAK,IAAM,CACnC,IAAIwB,EAAQpD,EAAG8C,EAAQlB,EAAI,EAC1BsB,EAAUE,EAAM,KAAM,IAAK,EAAI,KAAK,cAAeA,EAAM,KAAM,IAAK,CAAE,EAAI,IAAA,GAC1E3C,EAAYyC,EAAY,KAAK,SAAS,CAAC,CAAC,OAAQ,uBAAyBA,EAAU,IAAK,EAAI,CAAC,EAEzF,KAAK,SAAS,wBAA0BzC,EAAQ,QACpD,KAAK,2BAA4BA,EAAS2C,CAAM,EAG3CA,EAAM,GAAI,KAAK,UAAW,GAC/BA,EAAM,KAAM,EAAG,EAGhB,KAAK,WAAYA,CAAM,CAAC,CAAC,KAAK,CAC/B,CAED,EAEA,MAAO,UAAW,CACjB,OAAO,KAAK,KAAK,IAAM,CACxB,EAEA,KAAM,UAAW,CAChB,OAAO,KAAK,UAAU,MACvB,EAEA,aAAc,UAAW,CACxB,GAAK,KAAK,SAAS,aAClB,GAAI,CACHpD,EAAG,KAAK,eAAe,GAAK,KAAK,UAAU,QAAU,KAAK,UAAW,EAAG,CAAC,SAAW,CAAC,CAAE,CAAC,CACvF,OAAQ,UAAW,CAAC,CACpB,QAAS,OAAQ,CAAC,CAGlB,QAAS,SAAU,CACrB,OAAU,EAAI,CAGd,CAEF,EAEA,eAAgB,UAAW,CAC1B,IAAIuD,EAAa,KAAK,WACtB,OAAOA,GAAcvD,EAAE,KAAM,KAAK,UAAW,SAAU,EAAI,CAC1D,OAAOwD,EAAE,QAAQ,OAASD,EAAW,IACtC,CAAE,CAAC,CAAC,SAAW,GAAKA,CACrB,EAEA,SAAU,UAAW,CACpB,IAAIrD,EAAY,KACfuD,EAAa,CAAC,EACdC,EAAY,CAAE,QAAS,SAAU,WAAY,mBAAoB,EACjEC,EAAS,KAAK,YAAY,aAAc,IAAK,EAC7CpB,EAGUvC,EAAG,KAAK,WAAY,CAAC,CAC/B,KAAM0D,EAAU,OAAQ,KAAK,SAAS,cAAe,CAAC,CAAC,KAAM,IAAK,CAAE,CAAC,CACrE,IAAK,oCAAqC,CAAC,CAC3C,IAAK,KAAK,SAAS,MAAO,EAa3B,OATKC,IACJ,EAAWpB,EAAS,IACnBvC,EAAG0D,EAAU,OAAQ,KAAK,SAAS,cAAe,CAAC,CAAC,KAAM,IAAK,CAAE,CAAC,CACjE,OAAQ,UAAYxD,EAAU,cAAeyD,CAAO,EAAI,IAAK,CAAC,CAC9D,IAAK,oCAAqC,CAAC,CAC3C,IAAK,KAAK,SAAS,MAAO,CAC5B,GAGMpB,EAAS,OAAQ,UAAW,CAClC,IAAIJ,EAAO,KAAK,MAAQnC,EAAG,IAAK,CAAC,CAAC,KAAM,MAAO,EAC3CU,EAA2BV,EAAG,IAAK,CAAC,CAAC,KAAM,iBAAkB,IAAM,QAAeA,EAAG,IAAK,CAAC,CAAC,KAAM,iBAAkB,IAAM,QAuB9H,MArBK,CAACmC,GAAQjC,EAAU,SAAS,OAAS,OAAO,SAChD,QAAQ,MAAO,0BAA2B,IAAK,EAI3CQ,IACJ,KAAK,KAAOV,EAAG,IAAK,CAAC,CAAC,QAAS,MAAO,CAAC,CAAE,GACzC,KAAK,KAAOmC,GAIR,KAAK,OAASjC,EAAU,aAKxBiC,KAAQsB,GAAc,CAACvD,EAAU,aAAcF,EAAG,IAAK,CAAC,CAAC,MAAM,CAAE,EAC9D,IAGR,EAAYmC,GAAS,GACd,GACR,CAAE,CACH,EAEA,MAAO,SAAU,EAAW,CAC3B,OAAOnC,EAAG4D,CAAS,CAAC,CAAE,EACvB,EAEA,OAAQ,UAAW,CAClB,IAAI/B,EAAa,KAAK,SAAS,WAAW,MAAO,GAAI,CAAC,CAAC,KAAM,GAAI,EACjE,OAAO7B,EAAG,KAAK,SAAS,aAAe,IAAM6B,EAAY,KAAK,YAAa,CAC5E,EAEA,eAAgB,UAAW,CAC1B,KAAK,YAAc,CAAC,EACpB,KAAK,UAAY,CAAC,EAClB,KAAK,SAAW,CAAC,EACjB,KAAK,OAAS7B,EAAG,CAAC,CAAE,EACpB,KAAK,OAASA,EAAG,CAAC,CAAE,CACrB,EAEA,MAAO,UAAW,CACjB,KAAK,eAAe,EACpB,KAAK,gBAAkBA,EAAG,CAAC,CAAE,CAC9B,EAEA,YAAa,UAAW,CACvB,KAAK,MAAM,EACX,KAAK,OAAS,KAAK,OAAO,CAAC,CAAC,IAAK,KAAK,UAAW,CAClD,EAEA,eAAgB,SAAU,EAAU,CACnC,KAAK,MAAM,EACX,KAAK,OAAS,KAAK,UAAWS,CAAQ,CACvC,EAEA,aAAc,SAAU,EAAU,CACjC,IAAIoD,EAAW7D,EAAGS,CAAQ,EACzBqD,EAAOrD,EAAQ,KACfC,EAA2BmD,EAAS,KAAM,iBAAkB,IAAM,QAAeA,EAAS,KAAM,iBAAkB,IAAM,QACxHtC,EAAKwC,EAyCN,OAvCKD,IAAS,SAAWA,IAAS,WAC1B,KAAK,WAAYrD,EAAQ,IAAK,CAAC,CAAC,OAAQ,UAAW,CAAC,CAAC,IAAI,EACrDqD,IAAS,UAAmBrD,EAAQ,WAAa,OACrDA,EAAQ,SAAS,SAAW,MAAQoD,EAAS,IAAI,GAGzD,AAGCtC,EAHIb,EACEmD,EAAS,KAAK,EAEdA,EAAS,IAAI,EAGfC,IAAS,OAGRvC,EAAI,OAAQ,EAAG,EAAG,IAAM,iBACrBA,EAAI,OAAQ,EAAG,GAKvB,EAAMA,EAAI,YAAa,GAAI,EACtBwC,GAAO,IAKZ,EAAMxC,EAAI,YAAa,IAAK,EACvBwC,GAAO,GACJxC,EAAI,OAAQwC,EAAM,CAAE,EAIrBxC,GAGH,OAAOA,GAAQ,SACZA,EAAI,QAAS,MAAO,EAAG,EAExBA,EACR,EAEA,MAAO,SAAU,EAAU,CAC1B,EAAU,KAAK,oBAAqB,KAAK,MAAOd,CAAQ,CAAE,EAE1D,IAAIwB,EAAQjC,EAAGS,CAAQ,CAAC,CAAC,MAAM,EAC9BuD,EAAahE,EAAE,IAAKiC,EAAO,SAAU,EAAG,EAAI,CAC3C,OAAOL,CACR,CAAE,CAAC,CAAC,OACJqC,EAAqB,GACrB1C,EAAM,KAAK,aAAcd,CAAQ,EACjCH,EAAQa,EAAQ+C,EAAMC,EAuBvB,IAAMhD,KApBN,KAAK,aAAcV,CAAQ,EAItB,OAAOwB,EAAM,YAAe,WAChC,EAAaA,EAAM,WACR,OAAO,KAAK,SAAS,YAAe,aAC/C,EAAa,KAAK,SAAS,YAMvBkC,IACJ,EAAMA,EAAW,KAAM1D,EAASc,CAAI,EAGpC,OAAOU,EAAM,YAGEA,EAAQ,CACvB,EAAO,CAAU,SAAQ,WAAYA,EAAOd,EAAS,EACrD,GAAI,CAKH,GAJA,EAASnB,EAAE,UAAU,QAASmB,EAAQ,CAAC,KAAM,KAAMI,EAAKd,EAASyD,EAAK,UAAW,EAI5E5D,IAAW,uBAAyB0D,IAAe,EAAI,CAC3D,EAAqB,GACrB,QACD,CAGA,GAFA,EAAqB,GAEhB1D,IAAW,UAAY,CAC3B,KAAK,OAAS,KAAK,OAAO,IAAK,KAAK,UAAWG,CAAQ,CAAE,EACzD,MACD,CAEA,GAAK,CAACH,EAEL,OADA,KAAK,aAAcG,EAASyD,CAAK,EAC1B,EAET,OAAU,EAAI,CAQb,MAPK,KAAK,SAAS,OAAS,OAAO,SAClC,QAAQ,IAAK,4CAA8CzD,EAAQ,GAAK,gBAAkByD,EAAK,OAAS,YAAa,CAAE,EAEnH,aAAa,YACjB,EAAE,SAAW,+CAAiDzD,EAAQ,GAAK,gBAAkByD,EAAK,OAAS,aAGtG,CACP,CACD,CACA,GAAK,GAML,OAHK,KAAK,aAAcjC,CAAM,GAC7B,KAAK,YAAY,KAAMxB,CAAQ,EAEzB,EACR,EAKA,kBAAmB,SAAU,EAAS,EAAS,CAC9C,OAAOT,EAAGS,CAAQ,CAAC,CAAC,KAAM,MAAQU,EAAO,OAAQ,CAAE,CAAC,CAAC,YAAY,EAChEA,EAAO,UAAW,CAAE,CAAC,CAAC,YAAY,CAAE,GAAKnB,EAAGS,CAAQ,CAAC,CAAC,KAAM,KAAM,CACpE,EAGA,cAAe,SAAU,EAAM,EAAS,CACvC,IAAI2D,EAAI,KAAK,SAAS,SAAUjC,GAChC,OAAOiC,IAAOA,EAAE,cAAgB,OAASA,EAAIA,EAAGjD,GACjD,EAGA,YAAa,UAAW,CACvB,IAAM,IAAIS,EAAI,EAAGA,EAAI,UAAU,OAAQ,IACtC,GAAK,UAAWA,KAAQ,IAAA,GACvB,OAAO,UAAWA,EAIrB,EAWA,eAAgB,SAAU,EAAS,EAAO,CACpC,OAAOsC,GAAS,WACpB,EAAO,CAAE,OAAQA,CAAK,GAGvB,IAAIG,EAAU,KAAK,YACjB,KAAK,cAAe5D,EAAQ,KAAMyD,EAAK,MAAO,EAC9C,KAAK,kBAAmBzD,EAASyD,EAAK,MAAO,EAG7C,CAAC,KAAK,SAAS,aAAezD,EAAQ,OAAS,IAAA,GAC/CT,EAAE,UAAU,SAAUkE,EAAK,QAC3B,2CAA6CzD,EAAQ,KAAO,WAC7D,EACA6D,EAAW,gBAOZ,OANK,OAAOD,GAAY,WACvB,EAAUA,EAAQ,KAAM,KAAMH,EAAK,WAAYzD,CAAQ,EAC5C6D,EAAS,KAAMD,CAAQ,IAClC,EAAUrE,EAAE,UAAU,OAAQqE,EAAQ,QAASC,EAAU,MAAO,EAAGJ,EAAK,UAAW,GAG7EG,CACR,EAEA,aAAc,SAAU,EAAS,EAAO,CACvC,IAAIA,EAAU,KAAK,eAAgB5D,EAASyD,CAAK,EAEjD,KAAK,UAAU,KAAM,CACX,UACA,UACT,OAAQA,EAAK,MACd,CAAE,EAEF,KAAK,SAAUzD,EAAQ,MAAS4D,EAChC,KAAK,UAAW5D,EAAQ,MAAS4D,CAClC,EAEA,WAAY,SAAU,EAAW,CAIhC,OAHK,KAAK,SAAS,UAClB,EAAWE,EAAS,IAAKA,EAAS,OAAQ,KAAK,SAAS,OAAQ,CAAE,GAE5DA,CACR,EAEA,kBAAmB,UAAW,CAG7B,IAFA,IAAI3C,EAEM,EAFHW,EAAUa,EAEJ,KAAK,UAAWxB,GAAK,IACjC,EAAQ,KAAK,UAAWA,GACnB,KAAK,SAAS,WAClB,KAAK,SAAS,UAAU,KAAM,KAAMwB,EAAM,QAAS,KAAK,SAAS,WAAY,KAAK,SAAS,UAAW,EAEvG,KAAK,UAAWA,EAAM,QAASA,EAAM,OAAQ,EAO9C,GAJK,KAAK,UAAU,SACnB,KAAK,OAAS,KAAK,OAAO,IAAK,KAAK,UAAW,GAG3C,KAAK,SAAS,QAClB,IAAM,EAAI,EAAG,KAAK,YAAaxB,GAAK,IACnC,KAAK,UAAW,KAAK,YAAaA,EAAI,EAIxC,GAAK,KAAK,SAAS,YAClB,IAAM,EAAI,EAAG,EAAW,KAAK,cAAc,EAAGW,EAAUX,GAAK,IAC5D,KAAK,SAAS,YAAY,KAAM,KAAMW,EAAUX,GAAK,KAAK,SAAS,WAAY,KAAK,SAAS,UAAW,EAI1G,KAAK,OAAS,KAAK,OAAO,IAAK,KAAK,MAAO,EAC3C,KAAK,WAAW,EAChB,KAAK,WAAY,KAAK,MAAO,CAAC,CAAC,KAAK,CACrC,EAEA,cAAe,UAAW,CACzB,OAAO,KAAK,gBAAgB,IAAK,KAAK,gBAAgB,CAAE,CACzD,EAEA,gBAAiB,UAAW,CAC3B,OAAO5B,EAAG,KAAK,SAAU,CAAC,CAAC,IAAK,UAAW,CAC1C,OAAO,KAAK,OACb,CAAE,CACH,EAEA,UAAW,SAAU,EAAS,EAAU,CACvC,IAAIwE,EACHpB,EAAQ,KAAK,UAAW3C,CAAQ,EAChCgE,EAAY,KAAK,SAAUhE,CAAQ,EACnC0C,EAAcnD,EAAGS,CAAQ,CAAC,CAAC,KAAM,kBAAmB,EAEhD2C,EAAM,QAGLA,EAAM,QAAS,cAAgB,KAAK,cAAeqB,CAAU,EAAI,IAAK,CAAC,CAAC,SAAW,IAAOtB,IAAgB,IAAA,IAAaA,EAAY,MAAO,GAAI,CAAC,CAAC,QAASC,EAAM,KAAM,IAAK,CAAE,IAAM,KACtL,KAAK,wBAAyB3C,EAAS2C,EAAO,EAAK,EAIpDA,EAAM,YAAa,KAAK,SAAS,UAAW,CAAC,CAAC,SAAU,KAAK,SAAS,UAAW,EAG5E,KAAK,UAAY,KAAK,SAAS,WACnCA,EAAM,KAAMiB,GAAW,EAAG,EAE1BjB,EAAM,KAAMiB,GAAW,EAAG,IAK3B,EAAQrE,EAAG,IAAM,KAAK,SAAS,aAAe,GAAI,CAAC,CACjD,KAAM,KAAMyE,EAAY,QAAS,CAAC,CAClC,SAAU,KAAK,SAAS,UAAW,EAEhC,KAAK,UAAY,KAAK,SAAS,WACnCrB,EAAM,KAAMiB,GAAW,EAAG,EAE1BjB,EAAM,KAAMiB,GAAW,EAAG,EAI3B,EAAQjB,EACH,KAAK,SAAS,UAIlB,EAAQA,EAAM,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAM,IAAM,KAAK,SAAS,QAAU,IAAK,CAAC,CAAC,OAAO,GAE1E,KAAK,eAAe,OACxB,KAAK,eAAe,OAAQoB,CAAM,EACvB,KAAK,SAAS,eACzB,KAAK,SAAS,eAAe,KAAM,KAAMA,EAAOxE,EAAGS,CAAQ,CAAE,EAE7D+D,EAAM,YAAa/D,CAAQ,EAIvB2C,EAAM,GAAI,OAAQ,EAGtBA,EAAM,KAAM,MAAOqB,CAAU,EAIlBrB,EAAM,QAAS,cAAgB,KAAK,cAAeqB,CAAU,EAAI,IAAK,CAAC,CAAC,SAAW,GAC9F,KAAK,wBAAyBhE,EAAS2C,EAAO,EAAK,GAGhD,CAACiB,GAAW,KAAK,SAAS,UAC9BjB,EAAM,KAAM,EAAG,EACV,OAAO,KAAK,SAAS,SAAY,SACrCA,EAAM,SAAU,KAAK,SAAS,OAAQ,EAEtC,KAAK,SAAS,QAASA,EAAO3C,CAAQ,GAGxC,KAAK,OAAS,KAAK,OAAO,IAAK2C,CAAM,CACtC,EAEA,UAAW,SAAU,EAAU,CAC9B,IAAIjB,EAAO,KAAK,cAAe,KAAK,SAAU1B,CAAQ,CAAE,EACvDiE,EAAY1E,EAAGS,CAAQ,CAAC,CAAC,KAAM,kBAAmB,EAClDmD,EAAW,cAAgBzB,EAAO,kBAAoBA,EAAO,OAW9D,OARKuC,IACJ,EAAWd,EAAW,MAAQ,KAAK,cAAec,CAAU,CAAC,CAC3D,QAAS,OAAQ,KAAM,GAI1B,EAAWd,EAAW,MAAQzB,EAAO,SAE9B,KACL,OAAO,CAAC,CACR,OAAQyB,CAAS,CACpB,EAKA,cAAe,SAAU,EAAS,CAKjC,OAJKe,IAAW,IAAA,GACR,GAGDA,EAAO,QAAS,yCAA0C,MAAO,CACzE,EAEA,SAAU,SAAU,EAAU,CAC7B,OAAO,KAAK,OAAQlE,EAAQ,QAAY,KAAK,UAAWA,CAAQ,EAAIA,EAAQ,KAAOA,EAAQ,IAAMA,EAAQ,KAC1G,EAEA,oBAAqB,SAAU,EAAU,CAQxC,OALK,KAAK,UAAWA,CAAQ,IAC5B,EAAU,KAAK,WAAYA,EAAQ,IAAK,GAIlCT,EAAGS,CAAQ,CAAC,CAAC,IAAK,KAAK,SAAS,MAAO,CAAC,CAAE,EAClD,EAEA,UAAW,SAAU,EAAU,CAC9B,MAAS,kBAAoB,KAAMA,EAAQ,IAAK,CACjD,EAEA,WAAY,SAAU,EAAO,CAC5B,IAAIkD,EAAS,KAAK,YAAY,aAAc,IAAK,EAChDC,EAAW,UAAY,KAAK,cAAezB,CAAK,EAAI,KACpDI,EAAWvC,EAAG,KAAK,WAAY,CAAC,CAAC,KAAM4D,CAAS,EAWjD,OAPKD,IACJ,EAAWpB,EAAS,IACnBvC,EAAG4D,CAAS,CAAC,CACZ,OAAQ,UAAY,KAAK,cAAeD,CAAO,EAAI,IAAK,CAC1D,GAGMpB,CACR,EAEA,UAAW,SAAU,EAAO,EAAU,CACrC,OAAS9B,EAAQ,SAAS,YAAY,EAAtC,CACA,IAAK,SACJ,OAAOT,EAAG,kBAAmBS,CAAQ,CAAC,CAAC,OACxC,IAAK,QACJ,GAAK,KAAK,UAAWA,CAAQ,EAC5B,OAAO,KAAK,WAAYA,EAAQ,IAAK,CAAC,CAAC,OAAQ,UAAW,CAAC,CAAC,MAE9D,CACA,OAAOyB,EAAM,MACd,EAEA,OAAQ,SAAU,EAAO,EAAU,CAClC,MAAO,MAAK,YAAa,OAAOnB,IAAU,KAAK,YAAa,OAAOA,EAAO,CAAEA,EAAON,CAAQ,CAC5F,EAEA,YAAa,CACZ,QAAW,SAAU,EAAQ,CAC5B,OAAOM,CACR,EACA,OAAU,SAAU,EAAO,EAAU,CACpC,MAAO,CAAC,CAACf,EAAGe,EAAON,EAAQ,IAAK,CAAC,CAAC,MACnC,EACA,SAAY,SAAU,EAAO,EAAU,CACtC,OAAOM,EAAON,CAAQ,CACvB,CACD,EAEA,SAAU,SAAU,EAAU,CAC7B,IAAIc,EAAM,KAAK,aAAcd,CAAQ,EACrC,MAAO,CAACT,EAAE,UAAU,QAAQ,SAAS,KAAM,KAAMuB,EAAKd,CAAQ,GAAK,qBACpE,EAEA,gBAAiB,SAAU,EAAU,CACpC,MAAO,WAAaA,EAAQ,IAC7B,EAEA,aAAc,SAAU,EAAU,CAC3B,KAAK,QAASA,EAAQ,QAC3B,KAAK,iBACLT,EAAGS,CAAQ,CAAC,CAAC,SAAU,KAAK,SAAS,YAAa,EAClD,KAAK,QAASA,EAAQ,MAAS,GAEjC,EAEA,YAAa,SAAU,EAAS,EAAQ,CACvC,KAAK,iBAGA,KAAK,eAAiB,IAC1B,KAAK,eAAiB,GAEvB,OAAO,KAAK,QAASA,EAAQ,MAC7BT,EAAGS,CAAQ,CAAC,CAAC,YAAa,KAAK,SAAS,YAAa,EAChDF,GAAS,KAAK,iBAAmB,GAAK,KAAK,eAAiB,KAAK,KAAK,GAAK,KAAK,iBAAmB,GACvGP,EAAG,KAAK,WAAY,CAAC,CAAC,QAAS,QAAS,EAMnC,KAAK,cACTA,EAAG,sBAAwB,KAAK,aAAa,KAAO,KAAM,KAAK,WAAY,CAAC,CAAC,OAAO,EAGrF,KAAK,cAAgB,IACV,CAACO,GAAS,KAAK,iBAAmB,GAAK,KAAK,gBACvDP,EAAG,KAAK,WAAY,CAAC,CAAC,eAAgB,eAAgB,CAAE,IAAK,CAAE,EAC/D,KAAK,cAAgB,GAEvB,EAEA,aAAc,SAAU,EAAU,CACjC,IAAI4E,EAEC,KAAK,QAASnE,EAAQ,QAC1B,EAAO,KAAK,gBAAiBA,CAAQ,EACrCT,EAAE,UAAW4E,CAAK,EAElB,KAAK,iBAGA,KAAK,eAAiB,IAC1B,KAAK,eAAiB,GAGvB,OAAO,KAAK,QAASnE,EAAQ,MAC7BT,EAAGS,CAAQ,CAAC,CAAC,YAAa,KAAK,SAAS,YAAa,EAEvD,EAEA,cAAe,SAAU,EAAS,EAAS,CAG1C,MAFA,GAAS,OAAOU,GAAW,UAAYA,GAAU,SAE1CnB,EAAE,KAAMS,EAAS,eAAgB,GAAKT,EAAE,KAAMS,EAAS,gBAAiB,CAC9E,IAAK,KACL,MAAO,GACP,QAAS,KAAK,eAAgBA,EAAS,CAAU,QAAO,CAAE,CAC3D,CAAE,CACH,EAGA,QAAS,UAAW,CACnB,KAAK,UAAU,EAEfT,EAAG,KAAK,WAAY,CAAC,CACnB,IAAK,WAAY,CAAC,CAClB,WAAY,WAAY,CAAC,CACzB,KAAM,wBAAyB,CAAC,CAC/B,IAAK,mBAAoB,CAAC,CAC1B,YAAa,uBAAwB,CAAC,CACvC,KAAM,yBAA0B,CAAC,CAChC,IAAK,oBAAqB,CAAC,CAC3B,YAAa,wBAAyB,CAAC,CACxC,KAAM,8BAA+B,CAAC,CACrC,IAAK,yBAA0B,CAAC,CAChC,YAAa,6BAA8B,CAAC,CAC7C,KAAM,iCAAkC,CAAC,CACxC,IAAK,4BAA6B,CAAC,CACnC,YAAa,gCAAiC,CAAC,CAChD,KAAM,4BAA6B,CAAC,CACnC,IAAK,uBAAwB,CAAC,CAC9B,YAAa,2BAA4B,CAC7C,CAED,EAEA,kBAAmB,CAClB,SAAU,CAAE,SAAU,EAAK,EAC3B,MAAO,CAAE,MAAO,EAAK,EACrB,IAAK,CAAE,IAAK,EAAK,EACjB,KAAM,CAAE,KAAM,EAAK,EACnB,QAAS,CAAE,QAAS,EAAK,EACzB,OAAQ,CAAE,OAAQ,EAAK,EACvB,OAAQ,CAAE,OAAQ,EAAK,EACvB,WAAY,CAAE,WAAY,EAAK,CAChC,EAEA,cAAe,SAAU,EAAW,EAAQ,CACtC6E,EAAU,cAAgB,OAC9B,KAAK,kBAAmBA,GAAc5C,EAEtCjC,EAAE,OAAQ,KAAK,kBAAmB6E,CAAU,CAE9C,EAEA,WAAY,SAAU,EAAU,CAC/B,IAAI5C,EAAQ,CAAC,EACZ6C,EAAU9E,EAAGS,CAAQ,CAAC,CAAC,KAAM,OAAQ,EAStC,OAPKqE,GACJ9E,EAAE,KAAM8E,EAAQ,MAAO,GAAI,EAAG,UAAW,CACnC,QAAQ9E,EAAE,UAAU,mBACxBA,EAAE,OAAQiC,EAAOjC,EAAE,UAAU,kBAAmB,KAAO,CAEzD,CAAE,EAEIiC,CACR,EAEA,uBAAwB,SAAU,EAAO,EAAM,EAAQ,EAAQ,CAIzD,eAAe,KAAMd,CAAO,IAAO2C,IAAS,MAAQ,oBAAoB,KAAMA,CAAK,KACvF,EAAQ,OAAQ5B,CAAM,EAGjB,MAAOA,CAAM,IACjB,EAAQ,IAAA,KAILA,GAASA,IAAU,EACvB,EAAOf,GAAWe,EACP4B,IAAS3C,GAAU2C,IAAS,UAIvC,EAAOA,IAAS,OAAS,UAAY3C,GAAW,GAElD,EAEA,eAAgB,SAAU,EAAU,CACnC,IAAIc,EAAQ,CAAC,EACZ4B,EAAW7D,EAAGS,CAAQ,EACtBqD,EAAOrD,EAAQ,aAAc,MAAO,EACpCU,EAAQe,EAET,IAAMf,KAAUnB,EAAE,UAAU,QAGtBmB,IAAW,YACf,EAAQV,EAAQ,aAAcU,CAAO,EAIhCe,IAAU,KACd,EAAQ,IAIT,EAAQ,CAAC,CAACA,GAEV,EAAQ2B,EAAS,KAAM1C,CAAO,EAG/B,KAAK,uBAAwBc,EAAO6B,EAAM3C,EAAQe,CAAM,EAQzD,OAJKD,EAAM,WAAa,uBAAuB,KAAMA,EAAM,SAAU,GACpE,OAAOA,EAAM,UAGPA,CACR,EAEA,UAAW,SAAU,EAAU,CAC9B,IAAIA,EAAQ,CAAC,EACZ4B,EAAW7D,EAAGS,CAAQ,EACtBqD,EAAOrD,EAAQ,aAAc,MAAO,EACpCU,EAAQe,EAET,IAAMf,KAAUnB,EAAE,UAAU,QAC3B,EAAQ6D,EAAS,KAAM,OAAS1C,EAAO,OAAQ,CAAE,CAAC,CAAC,YAAY,EAAIA,EAAO,UAAW,CAAE,CAAC,CAAC,YAAY,CAAE,EAGlGe,IAAU,KACd,EAAQ,IAGT,KAAK,uBAAwBD,EAAO6B,EAAM3C,EAAQe,CAAM,EAEzD,OAAOD,CACR,EAEA,YAAa,SAAU,EAAU,CAChC,IAAIA,EAAQ,CAAC,EACZ/B,EAAYF,EAAE,KAAMS,EAAQ,KAAM,WAAY,EAK/C,OAHKP,EAAU,SAAS,QACvB,EAAQF,EAAE,UAAU,cAAeE,EAAU,SAAS,MAAOO,EAAQ,KAAO,GAAK,CAAC,GAE5EwB,CACR,EAEA,eAAgB,SAAU,EAAO,EAAU,CAmE1C,OAhEAjC,EAAE,KAAMiC,EAAO,SAAU,EAAM,EAAM,CAGpC,GAAKV,IAAQ,GAAQ,CACpB,OAAOU,EAAO8C,GACd,MACD,CACA,GAAKxD,EAAI,OAASA,EAAI,QAAU,CAC/B,IAAIyD,EAAW,GACf,OAAS,OAAOzD,EAAI,QAApB,CACA,IAAK,SACJ,EAAW,CAAC,CAACvB,EAAGuB,EAAI,QAASd,EAAQ,IAAK,CAAC,CAAC,OAC5C,MACD,IAAK,WACJ,EAAWc,EAAI,QAAQ,KAAMd,EAASA,CAAQ,CAE/C,CACKuE,EACJ,EAAOD,GAASxD,EAAI,QAAU,IAAA,IAAYA,EAAI,OAE9CvB,EAAE,KAAMS,EAAQ,KAAM,WAAY,CAAC,CAAC,cAAeT,EAAGS,CAAQ,CAAE,EAChE,OAAOwB,EAAO8C,GAEhB,CACD,CAAE,EAGF/E,EAAE,KAAMiC,EAAO,SAAU,EAAM,EAAY,CAC1C,EAAOiC,GAAS,OAAOe,GAAc,YAAcf,IAAS,aAAee,EAAWxE,CAAQ,EAAIwE,CACnG,CAAE,EAGFjF,EAAE,KAAM,CAAE,YAAa,WAAY,EAAG,UAAW,CAC3CiC,EAAO,QACX,EAAO,MAAS,OAAQA,EAAO,KAAO,EAExC,CAAE,EACFjC,EAAE,KAAM,CAAE,cAAe,OAAQ,EAAG,UAAW,CAC9C,IAAIkF,EACCjD,EAAO,QACN,MAAM,QAASA,EAAO,KAAO,EACjC,EAAO,MAAS,CAAE,OAAQA,EAAO,KAAM,CAAE,EAAI,EAAG,OAAQA,EAAO,KAAM,CAAE,EAAI,CAAE,EAClE,OAAOA,EAAO,OAAW,WACpC,EAAQA,EAAO,KAAM,CAAC,QAAS,UAAW,EAAG,CAAC,CAAC,MAAO,QAAS,EAC/D,EAAO,MAAS,CAAE,OAAQiD,EAAO,EAAI,EAAG,OAAQA,EAAO,EAAI,CAAE,GAGhE,CAAE,EAEGlF,EAAE,UAAU,mBAGXiC,EAAM,KAAO,MAAQA,EAAM,KAAO,OACtC,EAAM,MAAQ,CAAEA,EAAM,IAAKA,EAAM,GAAI,EACrC,OAAOA,EAAM,IACb,OAAOA,EAAM,KAETA,EAAM,WAAa,MAAQA,EAAM,WAAa,OAClD,EAAM,YAAc,CAAEA,EAAM,UAAWA,EAAM,SAAU,EACvD,OAAOA,EAAM,UACb,OAAOA,EAAM,YAIRA,CACR,EAGA,cAAe,SAAU,EAAO,CAC/B,GAAK,OAAOnB,GAAS,SAAW,CAC/B,IAAIqE,EAAc,CAAC,EACnBnF,EAAE,KAAMc,EAAK,MAAO,IAAK,EAAG,UAAW,CACtC,EAAa,MAAS,EACvB,CAAE,EACF,EAAOqE,CACR,CACA,OAAOrE,CACR,EAGA,UAAW,SAAU,EAAM,EAAQ,EAAU,CAC5C,EAAE,UAAU,QAASqB,GAAShB,EAC9B,EAAE,UAAU,SAAUgB,GAASkC,IAAY,IAAA,GAAsBrE,EAAE,UAAU,SAAUmC,GAAhCkC,EAClDlD,EAAO,OAAS,GACpBnB,EAAE,UAAU,cAAemC,EAAMnC,EAAE,UAAU,cAAemC,CAAK,CAAE,CAErE,EAGA,QAAS,CAGR,SAAU,SAAU,EAAO,EAAS,EAAQ,CAG3C,GAAK,CAAC,KAAK,OAAQpB,EAAON,CAAQ,EACjC,MAAO,sBAER,GAAKA,EAAQ,SAAS,YAAY,IAAM,SAAW,CAGlD,IAAIc,EAAMvB,EAAGS,CAAQ,CAAC,CAAC,IAAI,EAC3B,OAAOc,GAAOA,EAAI,OAAS,CAC5B,CAIA,OAHK,KAAK,UAAWd,CAAQ,EACrB,KAAK,UAAWyB,EAAOzB,CAAQ,EAAI,EAEpCyB,GAAiC,MAAQA,EAAM,OAAS,CAChE,EAGA,MAAO,SAAU,EAAO,EAAU,CAMjC,OAAO,KAAK,SAAUzB,CAAQ,GAAK,wIAAwI,KAAMyB,CAAM,CACxL,EAGA,IAAK,SAAU,EAAO,EAAU,CAM/B,OAAO,KAAK,SAAUzB,CAAQ,GAAK,khBAAkhB,KAAMyB,CAAM,CAClkB,EAGA,KAAQ,UAAW,CAClB,IAAIkD,EAAS,GAEb,OAAO,SAAU,EAAO,EAAU,CAcjC,OAbMA,IACL,EAAS,GACJ,KAAK,SAAS,OAAS,OAAO,SAClC,QAAQ,KACP,oTAKD,GAIK,KAAK,SAAU3E,CAAQ,GAAK,CAAC,cAAc,KAAM,IAAI,KAAMyB,CAAM,CAAC,CAAC,SAAS,CAAE,CACtF,CACD,EAAE,EAGF,QAAS,SAAU,EAAO,EAAU,CACnC,OAAO,KAAK,SAAUzB,CAAQ,GAAK,+DAA+D,KAAMyB,CAAM,CAC/G,EAGA,OAAQ,SAAU,EAAO,EAAU,CAClC,OAAO,KAAK,SAAUzB,CAAQ,GAAK,gDAAgD,KAAMyB,CAAM,CAChG,EAGA,OAAQ,SAAU,EAAO,EAAU,CAClC,OAAO,KAAK,SAAUzB,CAAQ,GAAK,QAAQ,KAAMyB,CAAM,CACxD,EAGA,UAAW,SAAU,EAAO,EAAS,EAAQ,CAC5C,IAAImD,EAAS,MAAM,QAASnD,CAAM,EAAIA,EAAM,OAAS,KAAK,UAAWA,EAAOzB,CAAQ,EACpF,OAAO,KAAK,SAAUA,CAAQ,GAAK4E,GAAUtE,CAC9C,EAGA,UAAW,SAAU,EAAO,EAAS,EAAQ,CAC5C,IAAIsE,EAAS,MAAM,QAASnD,CAAM,EAAIA,EAAM,OAAS,KAAK,UAAWA,EAAOzB,CAAQ,EACpF,OAAO,KAAK,SAAUA,CAAQ,GAAK4E,GAAUtE,CAC9C,EAGA,YAAa,SAAU,EAAO,EAAS,EAAQ,CAC9C,IAAIsE,EAAS,MAAM,QAASnD,CAAM,EAAIA,EAAM,OAAS,KAAK,UAAWA,EAAOzB,CAAQ,EACpF,OAAO,KAAK,SAAUA,CAAQ,GAAO4E,GAAUtE,EAAO,IAAOsE,GAAUtE,EAAO,EAC/E,EAGA,IAAK,SAAU,EAAO,EAAS,EAAQ,CACtC,OAAO,KAAK,SAAUN,CAAQ,GAAKyB,GAASnB,CAC7C,EAGA,IAAK,SAAU,EAAO,EAAS,EAAQ,CACtC,OAAO,KAAK,SAAUN,CAAQ,GAAKyB,GAASnB,CAC7C,EAGA,MAAO,SAAU,EAAO,EAAS,EAAQ,CACxC,OAAO,KAAK,SAAUN,CAAQ,GAAOyB,GAASnB,EAAO,IAAOmB,GAASnB,EAAO,EAC7E,EAGA,KAAM,SAAU,EAAO,EAAS,EAAQ,CACvC,IAAI+C,EAAO9D,EAAGS,CAAQ,CAAC,CAAC,KAAM,MAAO,EACpC6E,EAAe,gCAAkCxB,EAAO,qBACxDyB,EAAiB,CAAE,OAAQ,SAAU,OAAQ,EAC7CC,EAAS,OAAQ,MAAQ1B,EAAO,KAAM,EACtC2B,EAAe3B,GAAQ,CAAC0B,EAAG,KAAMD,EAAe,KAAK,CAAE,EACvDG,EAAgB,SAAU,EAAM,CAC/B,IAAIC,GAAU,GAAKC,EAAA,CAAM,MAAO,eAAgB,EAMhD,OALMD,GAKCA,EAAO,GAAMA,EAAO,EAAG,CAAC,OAAS,CACzC,EACAE,EAAQ,SAAU,EAAM,CACvB,OAAO,KAAK,MAAOD,EAAgB,IAAIE,CAAW,CACnD,EACAvF,EAAQ,GACRuF,EAID,GAAKL,EACJ,MAAU,MAAOH,CAAa,EAU/B,MAPA,GAAWI,EAAe3E,CAAM,GAG3B2E,EAAexD,CAAM,EAAI4D,GAAYD,EAAO3D,CAAM,EAAI2D,EAAO9E,CAAM,IAAM,KAC7E,EAAQ,IAGF,KAAK,SAAUN,CAAQ,GAAKF,CACpC,EAGA,QAAS,SAAU,EAAO,EAAS,EAAQ,CAG1C,IAAIwF,EAAS/F,EAAGe,CAAM,EAMtB,OALK,KAAK,SAAS,YAAcgF,EAAO,IAAK,wBAAyB,CAAC,CAAC,QACvEA,EAAO,SAAU,uBAAwB,CAAC,CAAC,GAAI,wBAAyB,UAAW,CAClF/F,EAAGS,CAAQ,CAAC,CAAC,MAAM,CACpB,CAAE,EAEIyB,IAAU6D,EAAO,IAAI,CAC7B,EAGA,OAAQ,SAAU,EAAO,EAAS,EAAO,EAAS,CACjD,GAAK,KAAK,SAAUtF,CAAQ,EAC3B,MAAO,sBAGR,EAAS,OAAOU,GAAW,UAAYA,GAAU,SAEjD,IAAI6E,EAAW,KAAK,cAAevF,EAASU,CAAO,EAClDjB,EAAWY,EAAMmF,EAiDlB,OA/CM,KAAK,SAAS,SAAUxF,EAAQ,QACrC,KAAK,SAAS,SAAUA,EAAQ,MAAS,CAAC,GAE3C,EAAS,gBAAkBuF,EAAS,iBAAmB,KAAK,SAAS,SAAUvF,EAAQ,KAAM,CAAEU,GAC/F,KAAK,SAAS,SAAUV,EAAQ,KAAM,CAAEU,GAAW6E,EAAS,QAE5D,EAAQ,OAAOjF,GAAU,UAAY,CAAE,IAAKA,CAAM,GAAKA,EACvD,EAAmBf,EAAE,MAAOA,EAAE,OAAQ,CAAE,KAAMkC,CAAM,EAAGnB,EAAM,IAAK,CAAE,EAC/DiF,EAAS,QAAU,MAAQA,EAAS,MAAQC,EACzCD,EAAS,OAGjB,EAAS,IAAMC,EACf,EAAS,MAAQ,KACjB,EAAY,KACZ,KAAK,aAAcxF,CAAQ,EAC3B,EAAO,CAAC,EACR,EAAMA,EAAQ,MAASyB,EACvBlC,EAAE,KAAMA,EAAE,OAAQ,GAAM,CACvB,KAAM,QACN,KAAM,KAAK,gBAAiBS,CAAQ,EACpC,SAAU,OACJ,OACN,QAASP,EAAU,YACnB,QAAS,SAAU,EAAW,CAC7B,IAAIK,EAAQ2F,IAAa,IAAQA,IAAa,OAC7CpD,EAAQuB,EAAS8B,EAElB,EAAU,SAAS,SAAU1F,EAAQ,KAAM,CAAEU,GAAW6E,EAAS,gBAC5DzF,GACJ,EAAYL,EAAU,cACtB,EAAU,OAASA,EAAU,UAAWO,CAAQ,EAChD,EAAU,cAAgB0F,EAC1BjG,EAAU,YAAY,KAAMO,CAAQ,EACpC,EAAU,QAASA,EAAQ,MAAS,GACpCP,EAAU,WAAW,IAErB,EAAS,CAAC,EACV,EAAUgG,GAAYhG,EAAU,eAAgBO,EAAS,CAAU,SAAQ,WAAYyB,CAAM,CAAE,EAC/F,EAAQzB,EAAQ,MAAS,EAAS,QAAU4D,EAC5C,EAAU,QAAS5D,EAAQ,MAAS,GACpCP,EAAU,WAAY4C,CAAO,GAE9B,EAAS,MAAQvC,EACjBL,EAAU,YAAaO,EAASF,CAAM,CACvC,CACD,EAAGQ,CAAM,CAAE,EACJ,UACR,CACD,CAED,CAAE,EAOF,IAAIqF,EAAkB,CAAC,EACtBC,EAkCD,OA/BKrG,EAAE,cACNA,EAAE,cAAe,SAAU,EAAU,EAAG,EAAM,CAC7C,IAAI4E,EAAOjE,EAAS,KACfA,EAAS,OAAS,UACtBX,EAAE,UAAW4E,CAAK,EAClB,EAAiBA,GAAS0B,EAE5B,CAAE,GAIF,EAAOtG,EAAE,KACT,EAAE,KAAO,SAAU,EAAW,CAC7B,IAAIuG,GAAS,SAAU5F,EAAWA,EAAWX,EAAE,aAAA,CAAe,KAC7D4E,GAAS,SAAUjE,EAAWA,EAAWX,EAAE,aAAA,CAAe,KAM3D,OALKuG,IAAS,SACbvG,EAAE,UAAW4E,CAAK,EAClB,EAAiBA,GAASyB,EAAK,MAAO,KAAM,SAAU,EAC/CD,EAAiBxB,IAElByB,EAAK,MAAO,KAAM,SAAU,CACpC,GAID,EAAE,UAAY,SAAU,EAAO,CACzBD,EAAiBxB,KACrBwB,EAAiBxB,EAAM,CAAC,MAAM,EAC9B,OAAOwB,EAAiBxB,GAE1B,EACO5E,CACP,CAAC,OCpvDD,CAAC,SAAU,EAAG,CAMZ,SAASwG,GAAgB,CACvB,IAAIC,EAAK,SAAS,cAAc,WAAW,EAEvCC,EAAqB,CACvB,iBAAmB,sBACnB,cAAmB,gBACnB,YAAmB,gCACnB,WAAmB,eACrB,EAEA,IAAK,IAAIvE,KAAQuE,EACf,GAAID,EAAG,MAAMtE,KAAU,IAAA,GACrB,MAAO,CAAE,IAAKuE,EAAmBvE,EAAM,EAI3C,MAAO,EACT,CAGA,EAAE,GAAG,qBAAuB,SAAU,EAAU,CAC9C,IAAIiD,EAAS,GACTuB,EAAM,KAIV,OAHA3G,EAAE,IAAI,CAAC,CAAC,IAAI,kBAAmB,UAAY,CAAE,EAAS,EAAK,CAAC,EAE5D,WAAW,UADgB,CAAOoF,GAAQpF,EAAE2G,CAAG,CAAC,CAAC,QAAQ3G,EAAE,QAAQ,WAAW,GAAG,CAAE,EAC9D4G,CAAQ,EACtB,IACT,EAEA5G,EAAE,UAAY,CACZ,EAAE,QAAQ,WAAawG,EAAc,EAEhCxG,EAAE,QAAQ,aAEf,EAAE,MAAM,QAAQ,gBAAkB,CAChC,SAAUA,EAAE,QAAQ,WAAW,IAC/B,aAAcA,EAAE,QAAQ,WAAW,IACnC,OAAQ,SAAU,EAAG,CACnB,GAAIA,EAAE6G,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,EAAG,OAAOA,EAAE,UAAU,QAAQ,MAAM,KAAM,SAAS,CAC5E,CACF,EACF,CAAC,CAEH,EAAE,MAAM,ECjDR,CAAC,SAAU,EAAG,CAMZ,IAAIC,EAAU,yBACVC,EAAU,SAAU,EAAI,CAC1B/G,EAAEyG,CAAE,CAAC,CAAC,GAAG,QAASK,EAAS,KAAK,KAAK,CACvC,EAEA,EAAM,QAAU,QAEhB,EAAM,oBAAsB,IAE5B,EAAM,UAAU,MAAQ,SAAU,EAAG,CACnC,IAAIE,EAAWhH,EAAE,IAAI,EACjB4D,EAAWoD,EAAM,KAAK,aAAa,EAElCpD,IACH,EAAWoD,EAAM,KAAK,MAAM,EAC5B,EAAWpD,GAAYA,EAAS,QAAQ,iBAAkB,EAAE,GAG9D,EAAcA,IAAa,IAAM,CAAC,EAAIA,EACtC,IAAIqD,EAAUjH,EAAE,QAAQ,CAAC,CAAC,KAAK4D,CAAQ,EAUvC,GARIiD,GAAGA,EAAE,eAAe,EAEnBI,EAAQ,SACX,EAAUD,EAAM,QAAQ,QAAQ,GAGlCC,EAAQ,QAAQ,EAAIjH,EAAE,MAAM,gBAAgB,CAAC,EAEzC6G,EAAE,mBAAmB,EAAG,OAE5BI,EAAQ,YAAY,IAAI,EAExB,SAASC,GAAgB,CAEvBD,EAAQ,OAAO,CAAC,CAAC,QAAQ,iBAAiB,CAAC,CAAC,OAAO,CACrD,CAEAjH,EAAE,QAAQ,YAAciH,EAAQ,SAAS,MAAM,EAC7CA,EACG,IAAI,kBAAmBC,CAAa,CAAC,CACrC,qBAAqBH,EAAM,mBAAmB,EACjDG,EAAc,CAClB,EAMA,SAASC,EAAO,EAAQ,CACtB,OAAO,KAAK,KAAK,UAAY,CAC3B,IAAIH,EAAQhH,EAAE,IAAI,EACdc,EAAQkG,EAAM,KAAK,UAAU,EAE5BlG,GAAMkG,EAAM,KAAK,WAAa,EAAO,IAAID,EAAM,IAAI,CAAE,EACtD,OAAOK,GAAU,UAAUtG,EAAKsG,EAAO,CAAC,KAAKJ,CAAK,CACxD,CAAC,CACH,CAEA,IAAIK,EAAMrH,EAAE,GAAG,MAEf,EAAE,GAAG,MAAoBmH,EACzB,EAAE,GAAG,MAAM,YAAcJ,EAMzB,EAAE,GAAG,MAAM,WAAa,UAAY,CAElC,MADA,GAAE,GAAG,MAAQM,EACN,IACT,EAMArH,EAAE,QAAQ,CAAC,CAAC,GAAG,0BAA2B8G,EAASC,EAAM,UAAU,KAAK,CAE1E,EAAE,MAAM,ECpFR,CAAC,SAAU,EAAG,CAMZ,IAAIO,EAAW,SAAU,EAAS,EAAS,CACzC,KAAK,SAAgBtH,EAAES,CAAO,EAC9B,KAAK,QAAgBT,EAAE,OAAO,CAAC,EAAGsH,EAAS,SAAUrH,CAAO,EAC5D,KAAK,SAAgBD,EAAE,mCAAqCS,EAAQ,GAAK,6CACNA,EAAQ,GAAK,IAAI,EACpF,KAAK,cAAgB,KAEjB,KAAK,QAAQ,OACf,KAAK,QAAU,KAAK,UAAU,EAE9B,KAAK,yBAAyB,KAAK,SAAU,KAAK,QAAQ,EAGxD,KAAK,QAAQ,QAAQ,KAAK,OAAO,CACvC,EAEA,EAAS,QAAW,QAEpB,EAAS,oBAAsB,IAE/B,EAAS,SAAW,CAClB,OAAQ,EACV,EAEA,EAAS,UAAU,UAAY,UAAY,CAEzC,OADe,KAAK,SAAS,SAAS,OACxB,EAAI,QAAU,QAC9B,EAEA,EAAS,UAAU,KAAO,UAAY,CACpC,GAAI,OAAK,eAAiB,KAAK,SAAS,SAAS,IAAI,GAErD,KAAI8G,EACAC,EAAU,KAAK,SAAW,KAAK,QAAQ,SAAS,QAAQ,CAAC,CAAC,SAAS,kBAAkB,EAEzF,GACE,EADEA,GAAWA,EAAQ,SACrB,EAAcA,EAAQ,KAAK,aAAa,EACpCD,GAAeA,EAAY,gBAGjC,KAAIE,EAAazH,EAAE,MAAM,kBAAkB,EAE3C,GADA,KAAK,SAAS,QAAQyH,CAAU,EAC5B,GAAW,mBAAmB,EAElC,CAAID,GAAWA,EAAQ,SACrBL,EAAO,KAAKK,EAAS,MAAM,EAC3BD,GAAeC,EAAQ,KAAK,cAAe,IAAI,GAGjD,IAAIE,EAAY,KAAK,UAAU,EAE/B,KAAK,SACF,YAAY,UAAU,CAAC,CACvB,SAAS,YAAY,CAAC,CAACA,EAAU,CAAC,CAAC,CAAC,CACpC,KAAK,gBAAiB,EAAI,EAE7B,KAAK,SACF,YAAY,WAAW,CAAC,CACxB,KAAK,gBAAiB,EAAI,EAE7B,KAAK,cAAgB,EAErB,IAAIC,EAAW,UAAY,CACzB,KAAK,SACF,YAAY,YAAY,CAAC,CACzB,SAAS,aAAa,CAAC,CAACD,EAAU,CAAC,EAAE,EACxC,KAAK,cAAgB,EACrB,KAAK,SACF,QAAQ,mBAAmB,CAChC,EAEA,GAAI,CAAC1H,EAAE,QAAQ,WAAY,OAAO2H,EAAS,KAAK,IAAI,EAEpD,IAAIC,EAAa5H,EAAE,UAAU,CAAC,SAAU0H,CAAS,CAAC,CAAC,KAAK,GAAG,CAAC,EAE5D,KAAK,SACF,IAAI,kBAAmB1H,EAAE,MAAM2H,EAAU,IAAI,CAAC,CAAC,CAC/C,qBAAqBL,EAAS,mBAAmB,CAAC,CAACI,EAAU,CAAC,KAAK,SAAS,EAAE,CAACE,EAAW,CA9B7F,CAP2C,CARvC,CA8CN,EAEA,EAAS,UAAU,KAAO,UAAY,CACpC,GAAI,MAAK,eAAkB,KAAK,SAAS,SAAS,IAAI,EAEtD,KAAIH,EAAazH,EAAE,MAAM,kBAAkB,EAE3C,GADA,KAAK,SAAS,QAAQyH,CAAU,EAC5B,GAAW,mBAAmB,EAElC,KAAIC,EAAY,KAAK,UAAU,EAE/B,KAAK,SAASA,EAAU,CAAC,KAAK,SAASA,EAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,aAExD,KAAK,SACF,SAAS,YAAY,CAAC,CACtB,YAAY,aAAa,CAAC,CAC1B,KAAK,gBAAiB,EAAK,EAE9B,KAAK,SACF,SAAS,WAAW,CAAC,CACrB,KAAK,gBAAiB,EAAK,EAE9B,KAAK,cAAgB,EAErB,IAAIC,EAAW,UAAY,CACzB,KAAK,cAAgB,EACrB,KAAK,SACF,YAAY,YAAY,CAAC,CACzB,SAAS,UAAU,CAAC,CACpB,QAAQ,oBAAoB,CACjC,EAEA,GAAI,CAAC3H,EAAE,QAAQ,WAAY,OAAO2H,EAAS,KAAK,IAAI,EAEpD,KAAK,SACFD,EAAU,CAAC,CAAC,CAAC,CACb,IAAI,kBAAmB1H,EAAE,MAAM2H,EAAU,IAAI,CAAC,CAAC,CAC/C,qBAAqBL,EAAS,mBAAmB,CA5BrB,CAJY,CAiC7C,EAEA,EAAS,UAAU,OAAS,UAAY,CACtC,KAAK,KAAK,SAAS,SAAS,IAAI,EAAI,OAAS,OAAO,CAAC,CACvD,EAEA,EAAS,UAAU,UAAY,UAAY,CACzC,OAAOtH,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,QAAQ,MAAM,CAAC,CACzC,KAAK,yCAA2C,KAAK,QAAQ,OAAS,IAAI,CAAC,CAC3E,KAAKA,EAAE,MAAM,SAAU,EAAG,EAAS,CAClC,IAAI6D,EAAW7D,EAAES,CAAO,EACxB,KAAK,yBAAyBoH,EAAqBhE,CAAQ,EAAGA,CAAQ,CACxE,EAAG,IAAI,CAAC,CAAC,CACR,IAAI,CACT,EAEA,EAAS,UAAU,yBAA2B,SAAU,EAAU,EAAU,CAC1E,IAAIiE,EAASjE,EAAS,SAAS,IAAI,EAEnCA,EAAS,KAAK,gBAAiBiE,CAAM,EACrCC,EACG,YAAY,YAAa,CAACD,CAAM,CAAC,CACjC,KAAK,gBAAiBA,CAAM,CACjC,EAEA,SAASD,EAAqB,EAAU,CACtC,IAAIG,EACAjC,EAASgC,EAAS,KAAK,aAAa,IAClC,EAAOA,EAAS,KAAK,MAAM,IAAMC,EAAK,QAAQ,iBAAkB,EAAE,EAExE,OAAOhI,EAAE,QAAQ,CAAC,CAAC,KAAK+F,CAAM,CAChC,CAMA,SAASoB,EAAO,EAAQ,CACtB,OAAO,KAAK,KAAK,UAAY,CAC3B,IAAIH,EAAUhH,EAAE,IAAI,EAChBc,EAAUkG,EAAM,KAAK,aAAa,EAClC/G,EAAUD,EAAE,OAAO,CAAC,EAAGsH,EAAS,SAAUN,EAAM,KAAK,EAAG,OAAOI,GAAU,UAAYA,CAAM,EAE3F,CAACtG,GAAQb,EAAQ,QAAU,YAAY,KAAKmH,CAAM,IAAG,EAAQ,OAAS,IACrEtG,GAAMkG,EAAM,KAAK,cAAgB,EAAO,IAAIM,EAAS,KAAMrH,CAAO,CAAE,EACrE,OAAOmH,GAAU,UAAUtG,EAAKsG,EAAO,CAAC,CAC9C,CAAC,CACH,CAEA,IAAIC,EAAMrH,EAAE,GAAG,SAEf,EAAE,GAAG,SAAuBmH,EAC5B,EAAE,GAAG,SAAS,YAAcG,EAM5B,EAAE,GAAG,SAAS,WAAa,UAAY,CAErC,MADA,GAAE,GAAG,SAAWD,EACT,IACT,EAMArH,EAAE,QAAQ,CAAC,CAAC,GAAG,6BAA8B,2BAA4B,SAAU,EAAG,CACpF,IAAIgH,EAAUhH,EAAE,IAAI,EAEfgH,EAAM,KAAK,aAAa,GAAGH,EAAE,eAAe,EAEjD,IAAIoB,EAAUJ,EAAqBb,CAAK,EAEpCI,EADUa,EAAQ,KAAK,aACV,EAAI,SAAWjB,EAAM,KAAK,EAE3CG,EAAO,KAAKc,EAASb,CAAM,CAC7B,CAAC,CAEH,EAAE,MAAM,EC1MR,CAAC,SAAU,EAAG,CAMZ,IACIc,EAAW,2BACXC,EAAW,SAAU,EAAS,CAChCnI,EAAES,CAAO,CAAC,CAAC,GAAG,oBAAqB,KAAK,MAAM,CAChD,EAEA,EAAS,QAAU,QAEnB,SAAS2H,EAAU,EAAO,CACxB,IAAIxE,EAAWoD,EAAM,KAAK,aAAa,EAElCpD,IACH,EAAWoD,EAAM,KAAK,MAAM,EAC5B,EAAWpD,GAAY,YAAY,KAAKA,CAAQ,GAAKA,EAAS,QAAQ,iBAAkB,EAAE,GAG5F,IAAIqD,EAAUrD,IAAa,IAAmC,KAA7B5D,EAAE,QAAQ,CAAC,CAAC,KAAK4D,CAAQ,EAE1D,OAAOqD,GAAWA,EAAQ,OAASA,EAAUD,EAAM,OAAO,CAC5D,CAEA,SAASqB,EAAW,EAAG,CACjBxB,GAAKA,EAAE,QAAU,IACrB7G,EAAE,oBAAQ,CAAC,CAAC,OAAO,EACnBA,EAAEkI,CAAM,CAAC,CAAC,KAAK,UAAY,CACzB,IAAIlB,EAAgBhH,EAAE,IAAI,EACtBiH,EAAgBmB,EAAUpB,CAAK,EAC/BsB,EAAgB,CAAE,cAAe,IAAK,EAErCrB,EAAQ,SAAS,MAAM,IAExBJ,GAAKA,EAAE,MAAQ,SAAW,kBAAkB,KAAKA,EAAE,OAAO,OAAO,GAAK7G,EAAE,SAASiH,EAAQ,GAAIJ,EAAE,MAAM,IAEzGI,EAAQ,QAAQ,EAAIjH,EAAE,MAAM,mBAAoBsI,CAAa,CAAC,EAE1D,GAAE,mBAAmB,IAEzBtB,EAAM,KAAK,gBAAiB,OAAO,EACnCC,EAAQ,YAAY,MAAM,CAAC,CAAC,QAAQjH,EAAE,MAAM,qBAAsBsI,CAAa,CAAC,IAClF,CAAC,EACH,CAEA,EAAS,UAAU,OAAS,SAAU,EAAG,CACvC,IAAItB,EAAQhH,EAAE,IAAI,EAElB,GAAI,GAAM,GAAG,sBAAsB,EAEnC,KAAIiH,EAAWmB,EAAUpB,CAAK,EAC1BuB,EAAWtB,EAAQ,SAAS,MAAM,EAItC,GAFAoB,EAAW,EAEP,CAACE,EAAU,CACT,iBAAkB,SAAS,iBAAmB,CAACtB,EAAQ,QAAQ,aAAa,CAAC,CAAC,QAEhFjH,EAAE,SAAS,cAAc,KAAK,CAAC,CAAC,CAC7B,SAAS,mBAAmB,CAAC,CAC7B,YAAYA,EAAE,IAAI,CAAC,CAAC,CACpB,GAAG,QAASqI,CAAU,EAG3B,IAAIC,EAAgB,CAAE,cAAe,IAAK,EAG1C,GAFArB,EAAQ,QAAQ,EAAIjH,EAAE,MAAM,mBAAoBsI,CAAa,CAAC,EAE1DzB,EAAE,mBAAmB,EAAG,OAE5BG,EACG,QAAQ,OAAO,CAAC,CAChB,KAAK,gBAAiB,MAAM,EAE/BC,EACG,YAAY,MAAM,CAAC,CACnB,QAAQjH,EAAE,MAAM,oBAAqBsI,CAAa,CAAC,CACxD,CAEA,MAAO,EA5BuB,CA6BhC,EAEA,EAAS,UAAU,QAAU,SAAU,EAAG,CACxC,GAAK,gBAAgB,KAAKzB,EAAE,KAAK,GAAK,mBAAkB,KAAKA,EAAE,OAAO,OAAO,EAE7E,KAAIG,EAAQhH,EAAE,IAAI,EAKlB,GAHA6G,EAAE,eAAe,EACjBA,EAAE,gBAAgB,EAEd,GAAM,GAAG,sBAAsB,EAEnC,KAAII,EAAWmB,EAAUpB,CAAK,EAC1BuB,EAAWtB,EAAQ,SAAS,MAAM,EAEtC,GAAI,CAACsB,GAAY1B,EAAE,OAAS,IAAM0B,GAAY1B,EAAE,OAAS,GAEvD,OADIA,EAAE,OAAS,IAAII,EAAQ,KAAKiB,CAAM,CAAC,CAAC,QAAQ,OAAO,EAChDlB,EAAM,QAAQ,OAAO,EAI9B,IAAIwB,EAASvB,EAAQ,KAAK,4CAAuB,EAEjD,GAAKuB,EAAO,OAEZ,KAAIC,EAAQD,EAAO,MAAM3B,EAAE,MAAM,EAE7BA,EAAE,OAAS,IAAM4B,EAAQ,GAAmB,IAC5C5B,EAAE,OAAS,IAAM4B,EAAQD,EAAO,OAAS,GAAG,IAC3C,CAACC,IAA0C,EAAQ,GAExDD,EAAO,GAAGC,CAAK,CAAC,CAAC,QAAQ,OAAO,CANC,CAbH,CAPZ,CA2BpB,EAMA,SAAStB,EAAO,EAAQ,CACtB,OAAO,KAAK,KAAK,UAAY,CAC3B,IAAIH,EAAQhH,EAAE,IAAI,EACdc,EAAQkG,EAAM,KAAK,aAAa,EAE/BlG,GAAMkG,EAAM,KAAK,cAAgB,EAAO,IAAImB,EAAS,IAAI,CAAE,EAC5D,OAAOf,GAAU,UAAUtG,EAAKsG,EAAO,CAAC,KAAKJ,CAAK,CACxD,CAAC,CACH,CAEA,IAAIK,EAAMrH,EAAE,GAAG,SAEf,EAAE,GAAG,SAAuBmH,EAC5B,EAAE,GAAG,SAAS,YAAcgB,EAM5B,EAAE,GAAG,SAAS,WAAa,UAAY,CAErC,MADA,GAAE,GAAG,SAAWd,EACT,IACT,EAMArH,EAAE,QAAQ,CAAC,CACR,GAAG,6BAA8BqI,CAAU,CAAC,CAC5C,GAAG,6BAA8B,iBAAkB,SAAU,EAAG,CAAE,EAAE,gBAAgB,CAAE,CAAC,CAAC,CACxF,GAAG,6BAA8BH,EAAQC,EAAS,UAAU,MAAM,CAAC,CACnE,GAAG,+BAAgCD,EAAQC,EAAS,UAAU,OAAO,CAAC,CACtE,GAAG,+BAAgC,iBAAkBA,EAAS,UAAU,OAAO,CAEpF,EAAE,MAAM,EC3JR,CAAC,SAAU,EAAG,CAMZ,IAAIO,EAAQ,SAAU,EAAS,EAAS,CACtC,KAAK,QAAUzI,EACf,KAAK,MAAQD,EAAE,SAAS,IAAI,EAC5B,KAAK,SAAWA,EAAES,CAAO,EACzB,KAAK,QAAU,KAAK,SAAS,KAAK,eAAe,EACjD,KAAK,UAAY,KACjB,KAAK,QAAU,KACf,KAAK,gBAAkB,KACvB,KAAK,eAAiB,EACtB,KAAK,oBAAsB,GAC3B,KAAK,aAAe,0CAEhB,KAAK,QAAQ,QACf,KAAK,SACF,KAAK,gBAAgB,CAAC,CACtB,KAAK,KAAK,QAAQ,OAAQT,EAAE,MAAM,UAAY,CAC7C,KAAK,SAAS,QAAQ,iBAAiB,CACzC,EAAG,IAAI,CAAC,CAEd,EAEA,EAAM,QAAU,QAEhB,EAAM,oBAAsB,IAC5B,EAAM,6BAA+B,IAErC,EAAM,SAAW,CACf,SAAU,GACV,SAAU,GACV,KAAM,EACR,EAEA,EAAM,UAAU,OAAS,SAAU,EAAgB,CACjD,OAAO,KAAK,QAAU,KAAK,KAAK,EAAI,KAAK,KAAK2I,CAAc,CAC9D,EAEA,EAAM,UAAU,KAAO,SAAU,EAAgB,CAC/C,IAAIC,EAAO,KACP/B,EAAI7G,EAAE,MAAM,gBAAiB,CAAE,cAAe2I,CAAe,CAAC,EAElE,KAAK,SAAS,QAAQ9B,CAAC,EAEnB,OAAK,SAAWA,EAAE,mBAAmB,KAEzC,KAAK,QAAU,GAEf,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,MAAM,SAAS,YAAY,EAEhC,KAAK,OAAO,EACZ,KAAK,OAAO,EAEZ,KAAK,SAAS,GAAG,yBAA0B,yBAA0B7G,EAAE,MAAM,KAAK,KAAM,IAAI,CAAC,EAE7F,KAAK,QAAQ,GAAG,6BAA8B,UAAY,CACxD4I,EAAK,SAAS,IAAI,2BAA4B,SAAU,EAAG,CACrD5I,EAAE6G,EAAE,MAAM,CAAC,CAAC,GAAG+B,EAAK,QAAQ,IAAG,EAAK,oBAAsB,GAChE,CAAC,CACH,CAAC,EAED,KAAK,SAAS,UAAY,CACxB,IAAIC,EAAa7I,EAAE,QAAQ,YAAc4I,EAAK,SAAS,SAAS,MAAM,EAEjEA,EAAK,SAAS,OAAO,CAAC,CAAC,QAC1BA,EAAK,SAAS,SAASA,EAAK,KAAK,EAGnCA,EAAK,SACF,KAAK,CAAC,CACN,UAAU,CAAC,EAEdA,EAAK,aAAa,EAEdC,GACFD,EAAK,SAAS,EAAE,CAAC,YAGnBA,EAAK,SAAS,SAAS,IAAI,EAE3BA,EAAK,aAAa,EAElB,IAAI/B,EAAI7G,EAAE,MAAM,iBAAkB,CAAE,cAAe2I,CAAe,CAAC,EAEnEE,EACED,EAAK,QACF,IAAI,kBAAmB,UAAY,CAClCA,EAAK,SAAS,QAAQ,OAAO,CAAC,CAAC,QAAQ/B,CAAC,CAC1C,CAAC,CAAC,CACD,qBAAqB6B,EAAM,mBAAmB,EACjDE,EAAK,SAAS,QAAQ,OAAO,CAAC,CAAC,QAAQ/B,CAAC,CAC5C,CAAC,EACH,EAEA,EAAM,UAAU,KAAO,SAAU,EAAG,CAC9BA,GAAGA,EAAE,eAAe,EAExB,EAAI7G,EAAE,MAAM,eAAe,EAE3B,KAAK,SAAS,QAAQ6G,CAAC,EAElB,KAAK,SAAW,GAAE,mBAAmB,IAE1C,KAAK,QAAU,GAEf,KAAK,OAAO,EACZ,KAAK,OAAO,EAEZ7G,EAAE,QAAQ,CAAC,CAAC,IAAI,kBAAkB,EAElC,KAAK,SACF,YAAY,IAAI,CAAC,CACjB,IAAI,wBAAwB,CAAC,CAC7B,IAAI,0BAA0B,EAEjC,KAAK,QAAQ,IAAI,4BAA4B,EAE7CA,EAAE,QAAQ,YAAc,KAAK,SAAS,SAAS,MAAM,EACnD,KAAK,SACF,IAAI,kBAAmBA,EAAE,MAAM,KAAK,UAAW,IAAI,CAAC,CAAC,CACrD,qBAAqB0I,EAAM,mBAAmB,EACjD,KAAK,UAAU,EACnB,EAEA,EAAM,UAAU,aAAe,UAAY,CACzC1I,EAAE,QAAQ,CAAC,CACR,IAAI,kBAAkB,CAAC,CACvB,GAAG,mBAAoBA,EAAE,MAAM,SAAU,EAAG,CACvC,WAAa,EAAE,QACjB,KAAK,SAAS,KAAO,EAAE,QACvB,CAAC,KAAK,SAAS,IAAI,EAAE,MAAM,CAAC,CAAC,QAC7B,KAAK,SAAS,QAAQ,OAAO,CAEjC,EAAG,IAAI,CAAC,CACZ,EAEA,EAAM,UAAU,OAAS,UAAY,CAC/B,KAAK,SAAW,KAAK,QAAQ,SAC/B,KAAK,SAAS,GAAG,2BAA4BA,EAAE,MAAM,SAAU,EAAG,CAChE,EAAE,OAAS,IAAM,KAAK,KAAK,CAC7B,EAAG,IAAI,CAAC,EACE,KAAK,SACf,KAAK,SAAS,IAAI,0BAA0B,CAEhD,EAEA,EAAM,UAAU,OAAS,UAAY,CAC/B,KAAK,QACPA,EAAE,MAAM,CAAC,CAAC,GAAG,kBAAmBA,EAAE,MAAM,KAAK,aAAc,IAAI,CAAC,EAEhEA,EAAE,MAAM,CAAC,CAAC,IAAI,iBAAiB,CAEnC,EAEA,EAAM,UAAU,UAAY,UAAY,CACtC,IAAI4I,EAAO,KACX,KAAK,SAAS,KAAK,EACnB,KAAK,SAAS,UAAY,CACxBA,EAAK,MAAM,YAAY,YAAY,EACnCA,EAAK,iBAAiB,EACtBA,EAAK,eAAe,EACpBA,EAAK,SAAS,QAAQ,iBAAiB,CACzC,CAAC,CACH,EAEA,EAAM,UAAU,eAAiB,UAAY,CAC3C,KAAK,WAAa,KAAK,UAAU,OAAO,EACxC,KAAK,UAAY,IACnB,EAEA,EAAM,UAAU,SAAW,SAAU,EAAU,CAC7C,IAAIA,EAAO,KACPE,EAAU,KAAK,SAAS,SAAS,MAAM,EAAI,OAAS,GAExD,GAAI,KAAK,SAAW,KAAK,QAAQ,SAAU,CACzC,IAAIC,EAAY/I,EAAE,QAAQ,YAAc8I,EAqBxC,GAnBA,KAAK,UAAY9I,EAAE,SAAS,cAAc,KAAK,CAAC,CAAC,CAC9C,SAAS,kBAAoB8I,CAAO,CAAC,CACrC,SAAS,KAAK,KAAK,EAEtB,KAAK,SAAS,GAAG,yBAA0B9I,EAAE,MAAM,SAAU,EAAG,CAC9D,GAAI,KAAK,oBAAqB,CAC5B,KAAK,oBAAsB,GAC3B,MACF,CACI,EAAE,SAAW,EAAE,gBACnB,KAAK,QAAQ,UAAY,SACrB,KAAK,SAAS,EAAE,CAAC,MAAM,EACvB,KAAK,KAAK,EAChB,EAAG,IAAI,CAAC,EAEJ+I,GAAW,KAAK,UAAU,EAAE,CAAC,YAEjC,KAAK,UAAU,SAAS,IAAI,EAExB,CAACC,EAAU,OAEfD,EACE,KAAK,UACF,IAAI,kBAAmBC,CAAQ,CAAC,CAChC,qBAAqBN,EAAM,4BAA4B,EAC1DM,EAAS,CAEb,MAAO,GAAI,CAAC,KAAK,SAAW,KAAK,UAAW,CAC1C,KAAK,UAAU,YAAY,IAAI,EAE/B,IAAIC,EAAiB,UAAY,CAC/BL,EAAK,eAAe,EACpBI,GAAYA,EAAS,CACvB,EACAhJ,EAAE,QAAQ,YAAc,KAAK,SAAS,SAAS,MAAM,EACnD,KAAK,UACF,IAAI,kBAAmBiJ,CAAc,CAAC,CACtC,qBAAqBP,EAAM,4BAA4B,EAC1DO,EAAe,CAEnB,MAAWD,GACTA,EAAS,CAEb,EAIA,EAAM,UAAU,aAAe,UAAY,CACzC,KAAK,aAAa,CACpB,EAEA,EAAM,UAAU,aAAe,UAAY,CACzC,IAAIE,EAAqB,KAAK,SAAS,EAAE,CAAC,aAAe,SAAS,gBAAgB,aAElF,KAAK,SAAS,IAAI,CAChB,YAAa,CAAC,KAAK,mBAAqBA,EAAqB,KAAK,eAAiB,GACnF,aAAc,KAAK,mBAAqB,CAACA,EAAqB,KAAK,eAAiB,EACtF,CAAC,CACH,EAEA,EAAM,UAAU,iBAAmB,UAAY,CAC7C,KAAK,SAAS,IAAI,CAChB,YAAa,GACb,aAAc,EAChB,CAAC,CACH,EAEA,EAAM,UAAU,eAAiB,UAAY,CAC3C,IAAIC,EAAkB,OAAO,WAC7B,GAAI,CAACA,EAAiB,CACpB,IAAIC,EAAsB,SAAS,gBAAgB,sBAAsB,EACzE,EAAkBA,EAAoB,MAAQ,KAAK,IAAIA,EAAoB,IAAI,CACjF,CACA,KAAK,kBAAoB,SAAS,KAAK,YAAcD,EACrD,KAAK,eAAiB,KAAK,iBAAiB,CAC9C,EAEA,EAAM,UAAU,aAAe,UAAY,CACzC,IAAIE,EAAU,SAAU,KAAK,MAAM,IAAI,eAAe,GAAK,EAAI,EAAE,EACjE,KAAK,gBAAkB,SAAS,KAAK,MAAM,cAAgB,GAC3D,IAAIC,EAAiB,KAAK,eACtB,KAAK,oBACP,KAAK,MAAM,IAAI,gBAAiBD,EAAUC,CAAc,EACxDtJ,EAAE,KAAK,YAAY,CAAC,CAAC,KAAK,SAAU,EAAO,EAAS,CAClD,IAAIuJ,EAAgB9I,EAAQ,MAAM,aAC9B+I,EAAoBxJ,EAAES,CAAO,CAAC,CAAC,IAAI,eAAe,EACtDT,EAAES,CAAO,CAAC,CACP,KAAK,gBAAiB8I,CAAa,CAAC,CACpC,IAAI,gBAAiB,WAAWC,CAAiB,EAAIF,EAAiB,IAAI,CAC/E,CAAC,EAEL,EAEA,EAAM,UAAU,eAAiB,UAAY,CAC3C,KAAK,MAAM,IAAI,gBAAiB,KAAK,eAAe,EACpDtJ,EAAE,KAAK,YAAY,CAAC,CAAC,KAAK,SAAU,EAAO,EAAS,CAClD,IAAIyJ,EAAUzJ,EAAES,CAAO,CAAC,CAAC,KAAK,eAAe,EAC7CT,EAAES,CAAO,CAAC,CAAC,WAAW,eAAe,EACrC,EAAQ,MAAM,aAAegJ,GAAoB,EACnD,CAAC,CACH,EAEA,EAAM,UAAU,iBAAmB,UAAY,CAC7C,IAAIC,EAAY,SAAS,cAAc,KAAK,EAC5C,EAAU,UAAY,0BACtB,KAAK,MAAM,OAAOA,CAAS,EAC3B,IAAIJ,EAAiBI,EAAU,YAAcA,EAAU,YAEvD,OADA,KAAK,MAAM,EAAE,CAAC,YAAYA,CAAS,EAC5BJ,CACT,EAMA,SAASnC,EAAO,EAAQ,EAAgB,CACtC,OAAO,KAAK,KAAK,UAAY,CAC3B,IAAIH,EAAQhH,EAAE,IAAI,EACdc,EAAOkG,EAAM,KAAK,UAAU,EAC5B/G,EAAUD,EAAE,OAAO,CAAC,EAAG0I,EAAM,SAAU1B,EAAM,KAAK,EAAG,OAAOI,GAAU,UAAYA,CAAM,EAEvFtG,GAAMkG,EAAM,KAAK,WAAa,EAAO,IAAI0B,EAAM,KAAMzI,CAAO,CAAE,EAC/D,OAAOmH,GAAU,SAAUtG,EAAKsG,EAAO,CAACuB,CAAc,EACjD1I,EAAQ,MAAMa,EAAK,KAAK6H,CAAc,CACjD,CAAC,CACH,CAEA,IAAItB,EAAMrH,EAAE,GAAG,MAEf,EAAE,GAAG,MAAQmH,EACb,EAAE,GAAG,MAAM,YAAcuB,EAMzB,EAAE,GAAG,MAAM,WAAa,UAAY,CAElC,MADA,GAAE,GAAG,MAAQrB,EACN,IACT,EAMArH,EAAE,QAAQ,CAAC,CAAC,GAAG,0BAA2B,wBAAyB,SAAU,EAAG,CAC9E,IAAIgH,EAAQhH,EAAE,IAAI,EACdgI,EAAOhB,EAAM,KAAK,MAAM,EACxBjB,EAASiB,EAAM,KAAK,aAAa,GAClCgB,GAAQA,EAAK,QAAQ,iBAAkB,EAAE,EAExCC,EAAUjI,EAAE,QAAQ,CAAC,CAAC,KAAK+F,CAAM,EACjCqB,EAASa,EAAQ,KAAK,UAAU,EAAI,SAAWjI,EAAE,OAAO,CAAE,OAAQ,CAAC,IAAI,KAAKgI,CAAI,GAAKA,CAAK,EAAGC,EAAQ,KAAK,EAAGjB,EAAM,KAAK,CAAC,EAEzHA,EAAM,GAAG,GAAG,GAAGH,EAAE,eAAe,EAEpCoB,EAAQ,IAAI,gBAAiB,SAAU,EAAW,CAC5C0B,EAAU,mBAAmB,GACjC1B,EAAQ,IAAI,kBAAmB,UAAY,CACzCjB,EAAM,GAAG,UAAU,GAAKA,EAAM,QAAQ,OAAO,CAC/C,CAAC,CACH,CAAC,EACDG,EAAO,KAAKc,EAASb,EAAQ,IAAI,CACnC,CAAC,CAEH,EAAE,MAAM,EC5VR,CAAC,SAAU,EAAG,CAMZ,IAAIwC,EAAM,SAAU,EAAS,CAE3B,KAAK,QAAU5J,EAAES,CAAO,CAE1B,EAEA,EAAI,QAAU,QAEd,EAAI,oBAAsB,IAE1B,EAAI,UAAU,KAAO,UAAY,CAC/B,IAAIuG,EAAW,KAAK,QAChB6C,EAAW7C,EAAM,QAAQ,wBAAwB,EACjDpD,EAAWoD,EAAM,KAAK,QAAQ,EAOlC,GALKpD,IACH,EAAWoD,EAAM,KAAK,MAAM,EAC5B,EAAWpD,GAAYA,EAAS,QAAQ,iBAAkB,EAAE,GAG1D,GAAM,OAAO,IAAI,CAAC,CAAC,SAAS,QAAQ,EAExC,KAAIkG,EAAYD,EAAI,KAAK,gBAAgB,EACrCE,EAAY/J,EAAE,MAAM,cAAe,CACrC,cAAegH,EAAM,EACvB,CAAC,EACG2C,EAAY3J,EAAE,MAAM,cAAe,CACrC,cAAe8J,EAAU,EAC3B,CAAC,EAKD,GAHAA,EAAU,QAAQC,CAAS,EAC3B/C,EAAM,QAAQ2C,CAAS,EAEnB,IAAU,mBAAmB,GAAKI,EAAU,mBAAmB,GAEnE,KAAI9B,EAAUjI,EAAE,QAAQ,CAAC,CAAC,KAAK4D,CAAQ,EAEvC,KAAK,SAASoD,EAAM,QAAQ,IAAI,EAAG6C,CAAG,EACtC,KAAK,SAAS5B,EAASA,EAAQ,OAAO,EAAG,UAAY,CACnD6B,EAAU,QAAQ,CAChB,KAAM,gBACN,cAAe9C,EAAM,EACvB,CAAC,EACDA,EAAM,QAAQ,CACZ,KAAM,eACN,cAAe8C,EAAU,EAC3B,CAAC,CACH,CAAC,CAZsC,CAbE,CA0B3C,EAEA,EAAI,UAAU,SAAW,SAAU,EAAS,EAAW,EAAU,CAC/D,IAAIE,EAAaC,EAAU,KAAK,WAAW,EACvCpB,EAAaG,GACZhJ,EAAE,QAAQ,aACTgK,EAAQ,QAAUA,EAAQ,SAAS,MAAM,GAAK,CAAC,CAACC,EAAU,KAAK,SAAS,CAAC,CAAC,QAEhF,SAASC,GAAO,CACdF,EACG,YAAY,QAAQ,CAAC,CACrB,KAAK,4BAA4B,CAAC,CAClC,YAAY,QAAQ,CAAC,CACrB,IAAI,CAAC,CACL,KAAK,qBAAqB,CAAC,CAC3B,KAAK,gBAAiB,EAAK,EAE9BvJ,EACG,SAAS,QAAQ,CAAC,CAClB,KAAK,qBAAqB,CAAC,CAC3B,KAAK,gBAAiB,EAAI,EAEzBoI,GACFpI,EAAQ,EAAE,CAAC,YACXA,EAAQ,SAAS,IAAI,GAErBA,EAAQ,YAAY,MAAM,EAGxBA,EAAQ,OAAO,gBAAgB,CAAC,CAAC,QACnCA,EACG,QAAQ,aAAa,CAAC,CACtB,SAAS,QAAQ,CAAC,CAClB,IAAI,CAAC,CACL,KAAK,qBAAqB,CAAC,CAC3B,KAAK,gBAAiB,EAAI,EAG/BuI,GAAYA,EAAS,CACvB,CAEAgB,EAAQ,QAAUnB,EAChBmB,EACG,IAAI,kBAAmBE,CAAI,CAAC,CAC5B,qBAAqBN,EAAI,mBAAmB,EAC/CM,EAAK,EAEPF,EAAQ,YAAY,IAAI,CAC1B,EAMA,SAAS7C,EAAO,EAAQ,CACtB,OAAO,KAAK,KAAK,UAAY,CAC3B,IAAIH,EAAQhH,EAAE,IAAI,EACdc,EAAQkG,EAAM,KAAK,QAAQ,EAE1BlG,GAAMkG,EAAM,KAAK,SAAW,EAAO,IAAI4C,EAAI,IAAI,CAAE,EAClD,OAAOxC,GAAU,UAAUtG,EAAKsG,EAAO,CAAC,CAC9C,CAAC,CACH,CAEA,IAAIC,EAAMrH,EAAE,GAAG,IAEf,EAAE,GAAG,IAAkBmH,EACvB,EAAE,GAAG,IAAI,YAAcyC,EAMvB,EAAE,GAAG,IAAI,WAAa,UAAY,CAEhC,MADA,GAAE,GAAG,IAAMvC,EACJ,IACT,EAMA,IAAI8C,EAAe,SAAU,EAAG,CAC9BtD,EAAE,eAAe,EACjBM,EAAO,KAAKnH,EAAE,IAAI,EAAG,MAAM,CAC7B,EAEAA,EAAE,QAAQ,CAAC,CACR,GAAG,wBAAyB,sBAAuBmK,CAAY,CAAC,CAChE,GAAG,wBAAyB,uBAAwBA,CAAY,CAErE,EAAE,MAAM,ECjJR,CAAC,SAAU,EAAG,CAGZ,IAAIC,EAAwB,CAAC,WAAY,YAAa,YAAY,EAE9DC,EAAW,CACb,aACA,OACA,OACA,WACA,WACA,SACA,MACA,YACF,EAIIC,EAAmB,CAErB,IAAK,CAAC,QAAS,MAAO,KAAM,OAAQ,OAAQ,gBAAsB,EAClE,EAAG,CAAC,SAAU,OAAQ,QAAS,KAAK,EACpC,KAAM,CAAC,EACP,EAAG,CAAC,EACJ,GAAI,CAAC,EACL,IAAK,CAAC,EACN,KAAM,CAAC,EACP,IAAK,CAAC,EACN,GAAI,CAAC,EACL,GAAI,CAAC,EACL,GAAI,CAAC,EACL,GAAI,CAAC,EACL,GAAI,CAAC,EACL,GAAI,CAAC,EACL,GAAI,CAAC,EACL,GAAI,CAAC,EACL,EAAG,CAAC,EACJ,IAAK,CAAC,MAAO,MAAO,QAAS,QAAS,QAAQ,EAC9C,GAAI,CAAC,EACL,GAAI,CAAC,EACL,EAAG,CAAC,EACJ,IAAK,CAAC,EACN,EAAG,CAAC,EACJ,MAAO,CAAC,EACR,KAAM,CAAC,EACP,IAAK,CAAC,EACN,IAAK,CAAC,EACN,OAAQ,CAAC,EACT,EAAG,CAAC,EACJ,GAAI,CAAC,CACP,EAOIC,EAAmB,8DAOnBC,EAAmB,sIAEvB,SAASC,EAAiB,EAAM,EAAsB,CACpD,IAAIC,EAAWC,EAAK,SAAS,YAAY,EAEzC,GAAI3K,EAAE,QAAQ0K,EAAUE,CAAoB,IAAM,GAKhD,OAJI5K,EAAE,QAAQ0K,EAAUL,CAAQ,IAAM,IAC7B,GAAQM,EAAK,UAAU,MAAMJ,CAAgB,GAAKI,EAAK,UAAU,MAAMH,CAAgB,GAWlG,IAAK,IALDK,EAAS7K,EAAE4K,CAAoB,CAAC,CAAC,OAAO,SAAU,EAAO,EAAO,CAClE,OAAO1I,aAAiB,MAC1B,CAAC,EAGQN,EAAI,EAAG,EAAIiJ,EAAO,OAAQjJ,EAAI,EAAG,IACxC,GAAI8I,EAAS,MAAMG,EAAOjJ,EAAE,EAC1B,MAAO,GAIX,MAAO,EACT,CAEA,SAASkJ,EAAa,EAAY,EAAW,EAAY,CACvD,GAAIC,EAAW,SAAW,EACxB,OAAOA,EAGT,GAAIC,GAAc,OAAOA,GAAe,WACtC,OAAOA,EAAWD,CAAU,EAI9B,GAAI,CAAC,SAAS,gBAAkB,CAAC,SAAS,eAAe,mBACvD,OAAOA,EAGT,IAAIE,EAAkB,SAAS,eAAe,mBAAmB,cAAc,EAC/E,EAAgB,KAAK,UAAYF,EAKjC,IAAK,IAHDG,EAAgBlL,EAAE,IAAImL,EAAW,SAAU,EAAI,EAAG,CAAE,OAAOvJ,CAAE,CAAC,EAC9DW,EAAWvC,EAAEiL,EAAgB,IAAI,CAAC,CAAC,KAAK,GAAG,EAEtCrJ,EAAI,EAAGwJ,EAAM7I,EAAS,OAAQX,EAAIwJ,EAAK,IAAK,CACnD,IAAI3E,EAAKlE,EAASX,GACdyJ,EAAS5E,EAAG,SAAS,YAAY,EAErC,GAAIzG,EAAE,QAAQqL,EAAQH,CAAa,IAAM,GAAI,CAC3CzE,EAAG,WAAW,YAAYA,CAAE,EAE5B,QACF,CAKA,IAAK,IAHD6E,EAAgBtL,EAAE,IAAIyG,EAAG,WAAY,SAAU,EAAI,CAAE,OAAOA,CAAG,CAAC,EAChE8E,EAAwB,CAAC,CAAC,CAAC,OAAOJ,EAAU,MAAQ,CAAC,EAAGA,EAAUE,IAAW,CAAC,CAAC,EAE1EG,EAAI,EAAGC,EAAOH,EAAc,OAAQE,EAAIC,EAAM,IAChDhB,EAAiBa,EAAcE,GAAID,CAAqB,GAC3D9E,EAAG,gBAAgB6E,EAAcE,EAAE,CAAC,QAAQ,CAGlD,CAEA,OAAOP,EAAgB,KAAK,SAC9B,CAKA,IAAIS,EAAU,SAAU,EAAS,EAAS,CACxC,KAAK,KAAa,KAClB,KAAK,QAAa,KAClB,KAAK,QAAa,KAClB,KAAK,QAAa,KAClB,KAAK,WAAa,KAClB,KAAK,SAAa,KAClB,KAAK,QAAa,KAElB,KAAK,KAAK,UAAWjL,EAASR,CAAO,CACvC,EAEA,EAAQ,QAAW,QAEnB,EAAQ,oBAAsB,IAE9B,EAAQ,SAAW,CACjB,UAAW,GACX,UAAW,MACX,SAAU,GACV,SAAU,+GACV,QAAS,cACT,MAAO,GACP,MAAO,EACP,KAAM,GACN,UAAW,GACX,SAAU,CACR,SAAU,OACV,QAAS,CACX,EACA,SAAW,GACX,WAAa,KACb,UAAYqK,CACd,EAEA,EAAQ,UAAU,KAAO,SAAU,EAAM,EAAS,EAAS,CAQzD,GAPA,KAAK,QAAY,GACjB,KAAK,KAAYxG,EACjB,KAAK,SAAY9D,EAAES,CAAO,EAC1B,KAAK,QAAY,KAAK,WAAWR,CAAO,EACxC,KAAK,UAAY,KAAK,QAAQ,UAAYD,EAAE,QAAQ,CAAC,CAAC,KAAKA,EAAE,WAAW,KAAK,QAAQ,QAAQ,EAAI,KAAK,QAAQ,SAAS,KAAK,KAAM,KAAK,QAAQ,EAAK,KAAK,QAAQ,SAAS,UAAY,KAAK,QAAQ,QAAS,EAC5M,KAAK,QAAY,CAAE,MAAO,GAAO,MAAO,GAAO,MAAO,EAAM,EAExD,KAAK,SAAS,aAAc,SAAS,aAAe,CAAC,KAAK,QAAQ,SACpE,MAAU,MAAM,yDAA2D,KAAK,KAAO,iCAAiC,EAK1H,IAAK,IAFD2L,EAAW,KAAK,QAAQ,QAAQ,MAAM,GAAG,EAEpC/J,EAAI+J,EAAS,OAAQ,KAAM,CAClC,IAAIC,EAAUD,EAAS/J,GAEvB,GAAIgK,GAAW,QACb,KAAK,SAAS,GAAG,SAAW,KAAK,KAAM,KAAK,QAAQ,SAAU5L,EAAE,MAAM,KAAK,OAAQ,IAAI,CAAC,OACnF,GAAI4L,GAAW,SAAU,CAC9B,IAAIC,EAAWD,GAAW,QAAU,aAAe,UAC/CE,EAAWF,GAAW,QAAU,aAAe,WAEnD,KAAK,SAAS,GAAGC,EAAW,IAAM,KAAK,KAAM,KAAK,QAAQ,SAAU7L,EAAE,MAAM,KAAK,MAAO,IAAI,CAAC,EAC7F,KAAK,SAAS,GAAG8L,EAAW,IAAM,KAAK,KAAM,KAAK,QAAQ,SAAU9L,EAAE,MAAM,KAAK,MAAO,IAAI,CAAC,CAC/F,CACF,CAEA,KAAK,QAAQ,SACV,KAAK,SAAWA,EAAE,OAAO,CAAC,EAAG,KAAK,QAAS,CAAE,QAAS,SAAU,SAAU,EAAG,CAAC,EAC/E,KAAK,SAAS,CAClB,EAEA,EAAQ,UAAU,YAAc,UAAY,CAC1C,OAAO0L,EAAQ,QACjB,EAEA,EAAQ,UAAU,WAAa,SAAU,EAAS,CAChD,IAAIK,EAAiB,KAAK,SAAS,KAAK,EAExC,IAAK,IAAIC,KAAYD,EACfA,EAAe,eAAeC,CAAQ,GAAKhM,EAAE,QAAQgM,EAAU5B,CAAqB,IAAM,IAC5F,OAAO2B,EAAeC,GAiB1B,MAbA,GAAUhM,EAAE,OAAO,CAAC,EAAG,KAAK,YAAY,EAAG+L,EAAgB9L,CAAO,EAE9DA,EAAQ,OAAS,OAAOA,EAAQ,OAAS,WAC3C,EAAQ,MAAQ,CACd,KAAMA,EAAQ,MACd,KAAMA,EAAQ,KAChB,GAGEA,EAAQ,WACV,EAAQ,SAAW6K,EAAa7K,EAAQ,SAAUA,EAAQ,UAAWA,EAAQ,UAAU,GAGlFA,CACT,EAEA,EAAQ,UAAU,mBAAqB,UAAY,CACjD,IAAIA,EAAW,CAAC,EACZgM,EAAW,KAAK,YAAY,EAMhC,OAJA,KAAK,UAAYjM,EAAE,KAAK,KAAK,SAAU,SAAU,EAAK,EAAO,CACvDiM,EAAS7J,IAAQF,IAAO,EAAQE,GAAOF,EAC7C,CAAC,EAEMjC,CACT,EAEA,EAAQ,UAAU,MAAQ,SAAU,EAAK,CACvC,IAAIiM,EAAOlJ,aAAe,KAAK,YAC7BA,EAAMhD,EAAEgD,EAAI,aAAa,CAAC,CAAC,KAAK,MAAQ,KAAK,IAAI,EAWnD,GATKkJ,IACH,EAAO,IAAI,KAAK,YAAYlJ,EAAI,cAAe,KAAK,mBAAmB,CAAC,EACxEhD,EAAEgD,EAAI,aAAa,CAAC,CAAC,KAAK,MAAQ,KAAK,KAAMkJ,CAAI,GAG/ClJ,aAAehD,EAAE,QACnB,EAAK,QAAQgD,EAAI,MAAQ,UAAY,QAAU,SAAW,IAGxDkJ,EAAK,IAAI,CAAC,CAAC,SAAS,IAAI,GAAKA,EAAK,YAAc,KAAM,CACxD,EAAK,WAAa,KAClB,MACF,CAMA,GAJA,aAAaA,EAAK,OAAO,EAEzB,EAAK,WAAa,KAEd,CAACA,EAAK,QAAQ,OAAS,CAACA,EAAK,QAAQ,MAAM,KAAM,OAAOA,EAAK,KAAK,EAEtE,EAAK,QAAU,WAAW,UAAY,CAChCA,EAAK,YAAc,MAAMA,EAAK,KAAK,CACzC,EAAGA,EAAK,QAAQ,MAAM,IAAI,CAC5B,EAEA,EAAQ,UAAU,cAAgB,UAAY,CAC5C,IAAK,IAAI9J,KAAO,KAAK,QACnB,GAAI,KAAK,QAAQA,GAAM,MAAO,GAGhC,MAAO,EACT,EAEA,EAAQ,UAAU,MAAQ,SAAU,EAAK,CACvC,IAAI8J,EAAOlJ,aAAe,KAAK,YAC7BA,EAAMhD,EAAEgD,EAAI,aAAa,CAAC,CAAC,KAAK,MAAQ,KAAK,IAAI,EAWnD,GATKkJ,IACH,EAAO,IAAI,KAAK,YAAYlJ,EAAI,cAAe,KAAK,mBAAmB,CAAC,EACxEhD,EAAEgD,EAAI,aAAa,CAAC,CAAC,KAAK,MAAQ,KAAK,KAAMkJ,CAAI,GAG/ClJ,aAAehD,EAAE,QACnB,EAAK,QAAQgD,EAAI,MAAQ,WAAa,QAAU,SAAW,IAGzD,GAAK,cAAc,EAMvB,IAJA,aAAakJ,EAAK,OAAO,EAEzB,EAAK,WAAa,MAEd,CAACA,EAAK,QAAQ,OAAS,CAACA,EAAK,QAAQ,MAAM,KAAM,OAAOA,EAAK,KAAK,EAEtE,EAAK,QAAU,WAAW,UAAY,CAChCA,EAAK,YAAc,OAAOA,EAAK,KAAK,CAC1C,EAAGA,EAAK,QAAQ,MAAM,IAAI,CAJ4C,CAKxE,EAEA,EAAQ,UAAU,KAAO,UAAY,CACnC,IAAIrF,EAAI7G,EAAE,MAAM,WAAa,KAAK,IAAI,EAEtC,GAAI,KAAK,WAAW,GAAK,KAAK,QAAS,CACrC,KAAK,SAAS,QAAQ6G,CAAC,EAEvB,IAAIsF,EAAQnM,EAAE,SAAS,KAAK,SAAS,EAAE,CAAC,cAAc,gBAAiB,KAAK,SAAS,EAAE,EACvF,GAAI6G,EAAE,mBAAmB,GAAK,CAACsF,EAAO,OACtC,IAAIvD,EAAO,KAEPwD,EAAO,KAAK,IAAI,EAEhBC,EAAQ,KAAK,OAAO,KAAK,IAAI,EAEjC,KAAK,WAAW,EAChBD,EAAK,KAAK,KAAMC,CAAK,EACrB,KAAK,SAAS,KAAK,mBAAoBA,CAAK,EAExC,KAAK,QAAQ,WAAWD,EAAK,SAAS,MAAM,EAEhD,IAAIE,EAAY,OAAO,KAAK,QAAQ,WAAa,WAC/C,KAAK,QAAQ,UAAU,KAAK,KAAMF,EAAK,GAAI,KAAK,SAAS,EAAE,EAC3D,KAAK,QAAQ,UAEXG,EAAY,eACZC,EAAYD,EAAU,KAAKD,CAAS,EACpCE,IAAW,EAAYF,EAAU,QAAQC,EAAW,EAAE,GAAK,OAE/DH,EACG,OAAO,CAAC,CACR,IAAI,CAAE,IAAK,EAAG,KAAM,EAAG,QAAS,OAAQ,CAAC,CAAC,CAC1C,SAASE,CAAS,CAAC,CACnB,KAAK,MAAQ,KAAK,KAAM,IAAI,EAE/B,KAAK,QAAQ,UAAYF,EAAK,SAASpM,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,QAAQ,SAAS,CAAC,EAAIoM,EAAK,YAAY,KAAK,QAAQ,EACjH,KAAK,SAAS,QAAQ,eAAiB,KAAK,IAAI,EAEhD,IAAIK,EAAe,KAAK,YAAY,EAChCC,EAAeN,EAAK,EAAE,CAAC,YACvBO,EAAeP,EAAK,EAAE,CAAC,aAE3B,GAAII,EAAW,CACb,IAAII,EAAeN,EACfO,EAAc,KAAK,YAAY,KAAK,SAAS,EAEjD,EAAYP,GAAa,UAAYG,EAAI,OAASE,EAAeE,EAAY,OAAS,MAC1EP,GAAa,OAAYG,EAAI,IAASE,EAAeE,EAAY,IAAS,SAC1EP,GAAa,SAAYG,EAAI,MAASC,EAAeG,EAAY,MAAS,OAC1EP,GAAa,QAAYG,EAAI,KAASC,EAAeG,EAAY,KAAS,QAC1EP,EAEZF,EACG,YAAYQ,CAAY,CAAC,CACzB,SAASN,CAAS,CACvB,CAEA,IAAIQ,EAAmB,KAAK,oBAAoBR,EAAWG,EAAKC,EAAaC,CAAY,EAEzF,KAAK,eAAeG,EAAkBR,CAAS,EAE/C,IAAI3E,EAAW,UAAY,CACzB,IAAIoF,EAAiBnE,EAAK,WAC1BA,EAAK,SAAS,QAAQ,YAAcA,EAAK,IAAI,EAC7C,EAAK,WAAa,KAEdmE,GAAkB,OAAOnE,EAAK,MAAMA,CAAI,CAC9C,EAEA5I,EAAE,QAAQ,YAAc,KAAK,KAAK,SAAS,MAAM,EAC/CoM,EACG,IAAI,kBAAmBzE,CAAQ,CAAC,CAChC,qBAAqB+D,EAAQ,mBAAmB,EACnD/D,EAAS,CACb,CACF,EAEA,EAAQ,UAAU,eAAiB,SAAU,EAAQ,EAAW,CAC9D,IAAIyE,EAAS,KAAK,IAAI,EAClBY,EAASZ,EAAK,EAAE,CAAC,YACjBa,EAASb,EAAK,EAAE,CAAC,aAGjBc,EAAY,SAASd,EAAK,IAAI,YAAY,EAAG,EAAE,EAC/Ce,EAAa,SAASf,EAAK,IAAI,aAAa,EAAG,EAAE,EAGjD,MAAMc,CAAS,IAAI,EAAa,GAChC,MAAMC,CAAU,IAAG,EAAa,GAEpC,EAAO,KAAQD,EACf,EAAO,MAAQC,EAIfnN,EAAE,OAAO,UAAUoM,EAAK,GAAIpM,EAAE,OAAO,CACnC,MAAO,SAAU,EAAO,CACtBoM,EAAK,IAAI,CACP,IAAK,KAAK,MAAMgB,EAAM,GAAG,EACzB,KAAM,KAAK,MAAMA,EAAM,IAAI,CAC7B,CAAC,CACH,CACF,EAAGC,CAAM,EAAG,CAAC,EAEbjB,EAAK,SAAS,IAAI,EAGlB,IAAIM,EAAeN,EAAK,EAAE,CAAC,YACvBO,EAAeP,EAAK,EAAE,CAAC,aAEvBE,GAAa,OAASK,GAAgBM,IACxC,EAAO,IAAMI,EAAO,IAAMJ,EAASN,GAGrC,IAAIW,EAAQ,KAAK,yBAAyBhB,EAAWe,EAAQX,EAAaC,CAAY,EAElFW,EAAM,KAAM,EAAO,MAAQA,EAAM,KAChC,EAAO,KAAOA,EAAM,IAEzB,IAAIC,EAAsB,aAAa,KAAKjB,CAAS,EACjDkB,EAAsBD,EAAaD,EAAM,KAAO,EAAIN,EAAQN,EAAcY,EAAM,IAAM,EAAIL,EAASN,EACnGc,EAAsBF,EAAa,cAAgB,eAEvDnB,EAAK,OAAOiB,CAAM,EAClB,KAAK,aAAaG,EAAYpB,EAAK,EAAE,CAACqB,GAAsBF,CAAU,CACxE,EAEA,EAAQ,UAAU,aAAe,SAAU,EAAO,EAAW,EAAY,CACvE,KAAK,MAAM,CAAC,CACT,IAAIA,EAAa,OAAS,MAAO,IAAM,EAAID,EAAQ5F,GAAa,GAAG,CAAC,CACpE,IAAI6F,EAAa,MAAQ,OAAQ,EAAE,CACxC,EAEA,EAAQ,UAAU,WAAa,UAAY,CACzC,IAAInB,EAAQ,KAAK,IAAI,EACjBsB,EAAQ,KAAK,SAAS,EAEtB,KAAK,QAAQ,MACX,KAAK,QAAQ,WACf,EAAQ5C,EAAa4C,EAAO,KAAK,QAAQ,UAAW,KAAK,QAAQ,UAAU,GAG7EtB,EAAK,KAAK,gBAAgB,CAAC,CAAC,KAAKsB,CAAK,GAEtCtB,EAAK,KAAK,gBAAgB,CAAC,CAAC,KAAKsB,CAAK,EAGxCtB,EAAK,YAAY,+BAA+B,CAClD,EAEA,EAAQ,UAAU,KAAO,SAAU,EAAU,CAC3C,IAAIxD,EAAO,KACPwD,EAAOpM,EAAE,KAAK,IAAI,EAClB6G,EAAO7G,EAAE,MAAM,WAAa,KAAK,IAAI,EAEzC,SAAS2H,GAAW,CACdiB,EAAK,YAAc,MAAMwD,EAAK,OAAO,EACrCxD,EAAK,UACPA,EAAK,SACF,WAAW,kBAAkB,CAAC,CAC9B,QAAQ,aAAeA,EAAK,IAAI,EAErCI,GAAYA,EAAS,CACvB,CAIA,GAFA,KAAK,SAAS,QAAQnC,CAAC,EAEnB,GAAE,mBAAmB,EAYzB,OAVAuF,EAAK,YAAY,IAAI,EAErBpM,EAAE,QAAQ,YAAcoM,EAAK,SAAS,MAAM,EAC1CA,EACG,IAAI,kBAAmBzE,CAAQ,CAAC,CAChC,qBAAqB+D,EAAQ,mBAAmB,EACnD/D,EAAS,EAEX,KAAK,WAAa,KAEX,IACT,EAEA,EAAQ,UAAU,SAAW,UAAY,CACvC,IAAIgG,EAAK,KAAK,UACVA,EAAG,KAAK,OAAO,GAAK,OAAOA,EAAG,KAAK,qBAAqB,GAAK,WAC/DA,EAAG,KAAK,sBAAuBA,EAAG,KAAK,OAAO,GAAK,EAAE,CAAC,CAAC,KAAK,QAAS,EAAE,CAE3E,EAEA,EAAQ,UAAU,WAAa,UAAY,CACzC,OAAO,KAAK,SAAS,CACvB,EAEA,EAAQ,UAAU,YAAc,SAAU,EAAU,CAClD,EAAa9J,GAAY,KAAK,SAE9B,IAAI4C,EAAS5C,EAAS,GAClB+J,EAASnH,EAAG,SAAW,OAEvBoH,EAAYpH,EAAG,sBAAsB,EACrCoH,EAAO,OAAS,OAElB,EAAS7N,EAAE,OAAO,CAAC,EAAG6N,EAAQ,CAAE,MAAOA,EAAO,MAAQA,EAAO,KAAM,OAAQA,EAAO,OAASA,EAAO,GAAI,CAAC,GAEzG,IAAIC,EAAQ,OAAO,YAAcrH,aAAc,OAAO,WAGlDsH,EAAYH,EAAS,CAAE,IAAK,EAAG,KAAM,CAAE,EAAKE,EAAQ,KAAOjK,EAAS,OAAO,EAC3EmK,EAAY,CAAE,OAAQJ,EAAS,SAAS,gBAAgB,WAAa,SAAS,KAAK,UAAY/J,EAAS,UAAU,CAAE,EACpHoK,EAAYL,EAAS,CAAE,MAAO5N,EAAE,MAAM,CAAC,CAAC,MAAM,EAAG,OAAQA,EAAE,MAAM,CAAC,CAAC,OAAO,CAAE,EAAI,KAEpF,OAAOA,EAAE,OAAO,CAAC,EAAG6N,EAAQG,EAAQC,EAAWF,CAAQ,CACzD,EAEA,EAAQ,UAAU,oBAAsB,SAAU,EAAW,EAAK,EAAa,EAAc,CAC3F,OAAOzB,GAAa,SAAW,CAAE,IAAKG,EAAI,IAAMA,EAAI,OAAU,KAAMA,EAAI,KAAOA,EAAI,MAAQ,EAAIC,EAAc,CAAE,EACxGJ,GAAa,MAAW,CAAE,IAAKG,EAAI,IAAME,EAAc,KAAMF,EAAI,KAAOA,EAAI,MAAQ,EAAIC,EAAc,CAAE,EACxGJ,GAAa,OAAW,CAAE,IAAKG,EAAI,IAAMA,EAAI,OAAS,EAAIE,EAAe,EAAG,KAAMF,EAAI,KAAOC,CAAY,EACjF,CAAE,IAAKD,EAAI,IAAMA,EAAI,OAAS,EAAIE,EAAe,EAAG,KAAMF,EAAI,KAAOA,EAAI,KAAM,CAEhH,EAEA,EAAQ,UAAU,yBAA2B,SAAU,EAAW,EAAK,EAAa,EAAc,CAChG,IAAIa,EAAQ,CAAE,IAAK,EAAG,KAAM,CAAE,EAC9B,GAAI,CAAC,KAAK,UAAW,OAAOA,EAE5B,IAAIY,EAAkB,KAAK,QAAQ,UAAY,KAAK,QAAQ,SAAS,SAAW,EAC5EC,EAAqB,KAAK,YAAY,KAAK,SAAS,EAExD,GAAI,aAAa,KAAK7B,CAAS,EAAG,CAChC,IAAI8B,EAAmB3B,EAAI,IAAMyB,EAAkBC,EAAmB,OAClEE,EAAmB5B,EAAI,IAAMyB,EAAkBC,EAAmB,OAASxB,EAC3EyB,EAAgBD,EAAmB,IACrC,EAAM,IAAMA,EAAmB,IAAMC,EAC5BC,EAAmBF,EAAmB,IAAMA,EAAmB,SACxE,EAAM,IAAMA,EAAmB,IAAMA,EAAmB,OAASE,EAErE,KAAO,CACL,IAAIC,EAAkB7B,EAAI,KAAOyB,EAC7BK,EAAkB9B,EAAI,KAAOyB,EAAkBxB,EAC/C4B,EAAiBH,EAAmB,KACtC,EAAM,KAAOA,EAAmB,KAAOG,EAC9BC,EAAkBJ,EAAmB,QAC9C,EAAM,KAAOA,EAAmB,KAAOA,EAAmB,MAAQI,EAEtE,CAEA,OAAOjB,CACT,EAEA,EAAQ,UAAU,SAAW,UAAY,CACvC,IAAII,EACAC,EAAK,KAAK,SACVa,EAAK,KAAK,QAKd,MAHA,GAAQb,EAAG,KAAK,qBAAqB,IAC/B,OAAOa,EAAE,OAAS,WAAaA,EAAE,MAAM,KAAKb,EAAG,EAAE,EAAKa,EAAE,OAEvDd,CACT,EAEA,EAAQ,UAAU,OAAS,SAAU,EAAQ,CAC3C,EAAG,IAAU,CAAC,EAAE,KAAK,OAAO,EAAI,WACzB,SAAS,eAAee,CAAM,GACrC,OAAOA,CACT,EAEA,EAAQ,UAAU,IAAM,UAAY,CAClC,GAAI,CAAC,KAAK,OACR,KAAK,KAAOzO,EAAE,KAAK,QAAQ,QAAQ,EAC/B,KAAK,KAAK,QAAU,GACtB,MAAU,MAAM,KAAK,KAAO,iEAAiE,EAGjG,OAAO,KAAK,IACd,EAEA,EAAQ,UAAU,MAAQ,UAAY,CACpC,MAAQ,MAAK,OAAS,KAAK,QAAU,KAAK,IAAI,CAAC,CAAC,KAAK,gBAAgB,CACvE,EAEA,EAAQ,UAAU,OAAS,UAAY,CACrC,KAAK,QAAU,EACjB,EAEA,EAAQ,UAAU,QAAU,UAAY,CACtC,KAAK,QAAU,EACjB,EAEA,EAAQ,UAAU,cAAgB,UAAY,CAC5C,KAAK,QAAU,CAAC,KAAK,OACvB,EAEA,EAAQ,UAAU,OAAS,SAAU,EAAG,CACtC,IAAIkM,EAAO,KACPrF,IACF,EAAO7G,EAAE6G,EAAE,aAAa,CAAC,CAAC,KAAK,MAAQ,KAAK,IAAI,EAC3CqF,IACH,EAAO,IAAI,KAAK,YAAYrF,EAAE,cAAe,KAAK,mBAAmB,CAAC,EACtE7G,EAAE6G,EAAE,aAAa,CAAC,CAAC,KAAK,MAAQ,KAAK,KAAMqF,CAAI,IAI/CrF,GACF,EAAK,QAAQ,MAAQ,CAACqF,EAAK,QAAQ,MAC/BA,EAAK,cAAc,EAAGA,EAAK,MAAMA,CAAI,EACpCA,EAAK,MAAMA,CAAI,GAEpBA,EAAK,IAAI,CAAC,CAAC,SAAS,IAAI,EAAIA,EAAK,MAAMA,CAAI,EAAIA,EAAK,MAAMA,CAAI,CAElE,EAEA,EAAQ,UAAU,QAAU,UAAY,CACtC,IAAItD,EAAO,KACX,aAAa,KAAK,OAAO,EACzB,KAAK,KAAK,UAAY,CACpBA,EAAK,SAAS,IAAI,IAAMA,EAAK,IAAI,CAAC,CAAC,WAAW,MAAQA,EAAK,IAAI,EAC3DA,EAAK,MACPA,EAAK,KAAK,OAAO,EAEnB,EAAK,KAAO,KACZ,EAAK,OAAS,KACd,EAAK,UAAY,KACjB,EAAK,SAAW,IAClB,CAAC,CACH,EAEA,EAAQ,UAAU,aAAe,SAAU,EAAY,CACrD,OAAOkC,EAAaC,EAAY,KAAK,QAAQ,UAAW,KAAK,QAAQ,UAAU,CACjF,EAKA,SAAS5D,EAAO,EAAQ,CACtB,OAAO,KAAK,KAAK,UAAY,CAC3B,IAAIH,EAAUhH,EAAE,IAAI,EAChBc,EAAUkG,EAAM,KAAK,YAAY,EACjC/G,EAAU,OAAOmH,GAAU,UAAYA,GAEtCtG,GAAQ,gBAAe,KAAKsG,CAAM,KAClCtG,GAAMkG,EAAM,KAAK,aAAe,EAAO,IAAI0E,EAAQ,KAAMzL,CAAO,CAAE,EACnE,OAAOmH,GAAU,UAAUtG,EAAKsG,EAAO,CAAC,EAC9C,CAAC,CACH,CAEA,IAAIC,EAAMrH,EAAE,GAAG,QAEf,EAAE,GAAG,QAAsBmH,EAC3B,EAAE,GAAG,QAAQ,YAAcuE,EAM3B,EAAE,GAAG,QAAQ,WAAa,UAAY,CAEpC,MADA,GAAE,GAAG,QAAUrE,EACR,IACT,CAEF,EAAE,MAAM,EC3pBR,CAAC,SAAU,EAAG,CAMZ,IAAIqH,EAAU,SAAU,EAAS,EAAS,CACxC,KAAK,KAAK,UAAWjO,EAASR,CAAO,CACvC,EAEA,GAAI,CAACD,EAAE,GAAG,QAAS,MAAU,MAAM,6BAA6B,EAEhE,EAAQ,QAAW,QAEnB,EAAQ,SAAWA,EAAE,OAAO,CAAC,EAAGA,EAAE,GAAG,QAAQ,YAAY,SAAU,CACjE,UAAW,QACX,QAAS,QACT,QAAS,GACT,SAAU,uIACZ,CAAC,EAMD,EAAQ,UAAYA,EAAE,OAAO,CAAC,EAAGA,EAAE,GAAG,QAAQ,YAAY,SAAS,EAEnE,EAAQ,UAAU,YAAc0O,EAEhC,EAAQ,UAAU,YAAc,UAAY,CAC1C,OAAOA,EAAQ,QACjB,EAEA,EAAQ,UAAU,WAAa,UAAY,CACzC,IAAItC,EAAU,KAAK,IAAI,EACnBsB,EAAU,KAAK,SAAS,EACxBiB,EAAU,KAAK,WAAW,EAE9B,GAAI,KAAK,QAAQ,KAAM,CACrB,IAAIC,EAAc,OAAOD,EAErB,KAAK,QAAQ,WACf,EAAQ,KAAK,aAAajB,CAAK,EAE3BkB,IAAgB,WAClB,EAAU,KAAK,aAAaD,CAAO,IAIvCvC,EAAK,KAAK,gBAAgB,CAAC,CAAC,KAAKsB,CAAK,EACtCtB,EAAK,KAAK,kBAAkB,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CACrDwC,IAAgB,SAAW,OAAS,SACrC,CAACD,CAAO,CACX,MACEvC,EAAK,KAAK,gBAAgB,CAAC,CAAC,KAAKsB,CAAK,EACtCtB,EAAK,KAAK,kBAAkB,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,KAAKuC,CAAO,EAGtEvC,EAAK,YAAY,+BAA+B,EAI3CA,EAAK,KAAK,gBAAgB,CAAC,CAAC,KAAK,GAAGA,EAAK,KAAK,gBAAgB,CAAC,CAAC,KAAK,CAC5E,EAEA,EAAQ,UAAU,WAAa,UAAY,CACzC,OAAO,KAAK,SAAS,GAAK,KAAK,WAAW,CAC5C,EAEA,EAAQ,UAAU,WAAa,UAAY,CACzC,IAAIuB,EAAK,KAAK,SACVa,EAAK,KAAK,QAEd,OAAOb,EAAG,KAAK,cAAc,IACvB,OAAOa,EAAE,SAAW,WACtBA,EAAE,QAAQ,KAAKb,EAAG,EAAE,EACpBa,EAAE,QACR,EAEA,EAAQ,UAAU,MAAQ,UAAY,CACpC,MAAQ,MAAK,OAAS,KAAK,QAAU,KAAK,IAAI,CAAC,CAAC,KAAK,QAAQ,CAC/D,EAMA,SAASrH,EAAO,EAAQ,CACtB,OAAO,KAAK,KAAK,UAAY,CAC3B,IAAIH,EAAUhH,EAAE,IAAI,EAChBc,EAAUkG,EAAM,KAAK,YAAY,EACjC/G,EAAU,OAAOmH,GAAU,UAAYA,GAEtCtG,GAAQ,gBAAe,KAAKsG,CAAM,KAClCtG,GAAMkG,EAAM,KAAK,aAAe,EAAO,IAAI0H,EAAQ,KAAMzO,CAAO,CAAE,EACnE,OAAOmH,GAAU,UAAUtG,EAAKsG,EAAO,CAAC,EAC9C,CAAC,CACH,CAEA,IAAIC,EAAMrH,EAAE,GAAG,QAEf,EAAE,GAAG,QAAsBmH,EAC3B,EAAE,GAAG,QAAQ,YAAcuH,EAM3B,EAAE,GAAG,QAAQ,WAAa,UAAY,CAEpC,MADA,GAAE,GAAG,QAAUrH,EACR,IACT,CAEF,EAAE,MAAM,oBC1HP,SAAU,EAAM,EAAS,CAClB,OAAO,QAAW,YAAc,OAAO,IAEvC,OAAO,CAAC,QAAQ,EAAGvH,CAAO,EACnB,OAAOgP,GAAY,SAE1B,EAAO,QAAUhP,EAAAV,EAAA,CAAyB,EAG1C,EAAK,WAAaU,EAAQiP,EAAK,MAAM,CAE7C,EAAA,CAACD,EAAO,SAAU,EAAG,CACjB,IAAIE,EAAOhP,EAAE,MAAM,EACfiP,EACAC,EACAC,EAAY,CACZ,GAAI,CACA,IAAK,EACL,IAAK,GACT,EACA,GAAI,CACA,IAAK,IACL,IAAK,GACT,EACA,GAAI,CACA,IAAK,IACL,IAAK,IACT,EACA,GAAI,CACA,IAAK,KACL,IAAK,GACT,CACJ,EAEIC,EAAY,SAAU,EAAY,CAClC,GAAI,CAACH,EAAaI,GACd,MAAU,MAAM,oBAAoB,CAE5C,EAEIC,EAAY,UAAY,CACxB,IAAIC,EAAgBL,EAIhBM,EAAWR,EAAK,EAAE,CAAC,WACvB,IAAK,IAAIK,KAAcJ,EACfO,GAAYP,EAAaI,EAAW,CAAC,KACrCG,GAAYP,EAAaI,EAAW,CAAC,MACrC,EAAqBA,EACjBH,IAAuBK,GACvBP,EAAK,QAAQ,oBAAqB,CAACE,EAAoBK,GAAiB,IAAI,CAAC,EAI7F,EAEIE,EAAa,UAAY,CACzBT,EAAK,GAAG,+BAAgCM,CAAS,EACjDA,EAAU,CACd,EAEII,EAAiB,UAAY,CAC7B,OAAOT,CACX,EAEIU,EAAK,SAAU,EAAY,CAE3B,OADAP,EAAUC,CAAU,EACZH,IAAuBG,CACnC,EAEIO,EAAU,UAAY,CACtB,OAAOV,CACX,EAEIW,EAAO,SAAU,EAAa,CAC9B,EAAe7P,EAAE,OAAO,GAAMmP,EAAWW,CAAW,EAEpDC,EAAQ,EACRN,EAAW,CACf,EAEIM,EAAU,UAAY,CACtBf,EAAK,IAAI,8BAA8B,EACvC,EAAqB,IAAA,EACzB,EAEA,MAAO,CACG,OACG,UACL,KACK,UACO,gBACpB,CACJ,CAAC,uBC5FD3Q,EAAAA,QAAW,KAAK,EAEhB,IAAA6R,EAAe7R,EAAAA,QCDf,SAAS8R,EAAsB,EAAS,EAAW,CACjD1P,EAAQ,GAAG,+BAAiC2P,EAAW,SAAU,EAAG,CAClE,EAAE,eAAe,CACnB,CAAC,CACH,CAEA,SAASC,EAAoB,EAAS,EAAW,CAC/C5P,EAAQ,IAAI,+BAAiC2P,CAAS,CACxD,CAEA,SAASE,GAAe,CACtB,OAAOhS,EAAW,GAAG,IAAI,GAAKA,EAAW,GAAG,IAAI,CAClD,CAEA,SAAgBiS,GAAkB,CAEhC,IAAMC,GAAA,EAAoBjS,EAAAA,QAAAA,CAAE,wCAAwC,EAEpEiS,EAAkB,GAAG,wBAAyB,SAAU,EAAG,CACrDF,EAAa,IAIb,EAAE,OAAS,cACb,EAAAN,EAAA,QAAA,CAAE,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,CAAC,KAAK,gBAAiB,EAAI,EAEnD,eAAiB,EACf,EAAAA,EAAA,QAAA,CAAE,IAAI,CAAC,CAAC,YAAY,MAAM,CAAC,CAAC,WAAW,eAAe,CACxD,EAAG,GAAG,EAEV,CAAC,EAEDQ,EAAkB,GAAG,mBAAoB,SAAU,EAAG,CACpD,GAAIF,EAAa,EACf,OAGF,IAAMG,GAAA,EAAiBlS,EAAAA,QAAAA,CAAE,IAAI,EAKzB,EAAE,OAAS,cACbkS,EAAe,KAAK,eAAgB,EAAI,EAEtC,EAAE,OAAS,SACTA,EAAe,KAAK,cAAc,IACpC,EAAE,eAAe,EACjBA,EAAe,KAAK,eAAgB,EAAK,EAG/C,CAAC,GAED,EAAAT,EAAA,QAAA,CAAE,MAAM,CAAC,CACN,GAAG,oBAAqB,UAAY,CAC/BM,EAAa,EAEfE,EAAkB,KAAK,KAAK,CAAC,CAAC,KAAK,cAAe,UAAU,CAAC,CAAC,SAAS,EAMvEA,EAAkB,KAAK,KAAK,CAAC,CAAC,WAAW,aAAa,CAAC,CAAC,IAAI,mBAAmB,CAAC,CAAC,KAAK,cAAe,IAAI,CAE7G,CAAC,CAAC,CACD,QAAQ,oBAAqB,CAAClS,EAAW,QAAQ,CAAC,CAAC,CACxD,CAEA,SAAgBoS,GAAiB,CAC/B,IAAMxI,GAAA,EAAS3J,EAAAA,QAAAA,CAAE,uBAAuB,EAClCoS,GAAA,EAAapS,EAAAA,QAAAA,CAAE,mBAAmB,EAClCqS,GAAA,EAAOrS,EAAAA,QAAAA,CAAE,MAAM,EAGrBoS,EAAW,GAAG,wCAA2C,CACvDzI,EAAO,YAAY,WAAW,EAC9B0I,EAAK,YAAY,kBAAkB,EAE/BA,EAAK,SAAS,kBAAkB,EAClCT,EAAsBS,CAAI,EAE1BP,EAAoBO,CAAI,CAE5B,CAAC,GAED,EAAAZ,EAAA,QAAA,CAAE,mBAAmB,CAAC,CAAC,GAAG,oCAAsC,GAAM,EAKpE,EAJwBzR,EAAAA,QAAAA,CAAE,EAAE,MAId,CAAC,CAAC,QAAQ,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,CAAC,KAAK,gBAAiB,EAAI,CAClF,CAAC,GAED,EAAAyR,EAAA,QAAA,CAAE,uBAAuB,CAAC,CAAC,GAAG,QAAU,GAAM,CACvCM,EAAa,GAChB,EAAE,gBAAgB,CAEtB,CAAC,GAGD,EAAAN,EAAA,QAAA,CAAE,0FAA0F,CAAC,CAAC,GAC5F,uBACM,CACJW,EAAW,SAAS,MAAM,CAC5B,CACF,GAGA,EAAAX,EAAA,QAAA,CAAE,6BAA6B,CAAC,CAAC,GAAG,QAAS,2BAA4B,SAAU,EAAG,CACpF,EAAE,eAAe,EACjB,EAAE,gBAAgB,EAGlB,IAAMa,GAAA,EADatS,EAAAA,QAAAA,CAAE,IACY,CAAC,CAAC,QAAQ,WAAW,EAElDsS,EAAgB,SAElBA,EAAgB,YAAY,MAAM,EAElCA,EADuC,KAAK,iDAC/B,CAAC,CAAC,KAAK,gBAAiB,OAAO,EAEhD,CAAC,GAGD,EAAAb,EAAA,QAAA,CAAE,6BAA6B,CAAC,CAAC,GAAG,QAAS,SAAU,EAAG,CAGxD,EAAE,gBAAgB,CACpB,CAAC,GAED,EAAAA,EAAA,QAAA,CAAE,kBAAkB,CAAC,CAAC,GAAG,YAAc,GAAM,CACvCY,EAAK,SAAS,kBAAkB,GAClC,EAAE,gBAAgB,CAEtB,CAAC,CACH,CCzIA,SAAgBE,EAAe,EAAW,yBAA0B,CAClE,EAAElN,CAAQ,CAAC,CAAC,MAAM,EAAG,IAAO,CAC1B,EAAE6C,CAAE,CAAC,CAAC,GAAG,oBAAsB,GAAM,CACnC,GAAM,CAAE,OAAQ,EAAE,EAAE,aAAa,CAAC,CAAC,QAAQ,QAAQ,CAAC,CAAC,OAAO,EACxD4G,EAAS,EAET,EAAE,MAAM,CAAC,CAAC,SAAS,sBAAsB,IAC3C,EAAS,IAGX0D,EAASC,EAAM3D,CAAM,CACvB,CAAC,CACH,CAAC,CACH,CCbA,SAAS4D,GAAwB,EAG/B,EAFazS,EAAAA,QAAAA,CAAE,6BAEZ,CAAC,CAAC,GAAG,QAAU,GAAM,CACtB,EAAE,eAAe,EACjB,EAAE,gBAAgB,GAElB,EAAAwR,EAAA,QAAA,CAAE,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,KAAK,CACpD,CAAC,CACH,CAEA,SAAgBkB,GAAW,CACzBD,EAAsB,CACxB,CCdA,SAASE,EAAQ,EAAQ,CACvB,IAAK,IAAIvP,EAAI,EAAGA,EAAI,UAAU,OAAQ,IAAK,CACzC,IAAIF,EAAS,UAAUE,GACvB,IAAK,IAAIQ,KAAOV,EACVU,IAAQ,cACZ,EAAOA,GAAOV,EAAOU,GAEzB,CACA,OAAO2D,CACT,CAEA,IAAIqL,EAAmB,CACrB,KAAM,SAAU,EAAO,CAIrB,OAHIlP,EAAM,KAAO,MACf,EAAQA,EAAM,MAAM,EAAG,EAAE,GAEpBA,EAAM,QAAQ,mBAAoB,kBAAkB,CAC7D,EACA,MAAO,SAAU,EAAO,CACtB,OAAO,mBAAmBA,CAAK,CAAC,CAAC,QAC/B,2CACA,kBACF,CACF,CACF,EAEA,SAAS2N,EAAK,EAAW,EAAmB,CAC1C,SAASwB,EAAI,EAAM,EAAO,EAAY,CACpC,GAAI,OAAO,SAAa,IAaxB,CATA,EAAaF,EAAO,CAAC,EAAGG,EAAmBC,CAAU,EAEjD,OAAOA,EAAW,SAAY,WAChC,EAAW,QAAU,IAAI,KAAK,KAAK,IAAI,EAAIA,EAAW,QAAU,KAAK,GAEnEA,EAAW,UACb,EAAW,QAAUA,EAAW,QAAQ,YAAY,GAGtD,EAAO,mBAAmBpP,CAAI,CAAC,CAC5B,QAAQ,uBAAwB,kBAAkB,CAAC,CACnD,QAAQ,QAAS,MAAM,EAE1B,IAAIqP,EAAwB,GAC5B,IAAK,IAAIC,KAAiBF,EACnBA,EAAWE,KAIhB,GAAyB,KAAOA,EAE5BF,EAAWE,KAAmB,KAWlC,GAAyB,IAAMF,EAAWE,EAAc,CAAC,MAAM,GAAG,CAAC,CAAC,KAGtE,MAAQ,UAAS,OACftP,EAAO,IAAMuP,EAAU,MAAMxP,EAAOC,CAAI,EAAIqP,CAzBpB,CA0B5B,CAEA,SAASG,EAAI,EAAM,CACjB,GAAI,SAAO,SAAa,KAAgB,UAAU,QAAU,CAACxP,GAQ7D,KAAK,IAFDyP,EAAU,SAAS,OAAS,SAAS,OAAO,MAAM,IAAI,EAAI,CAAC,EAC3DC,EAAM,CAAC,EACF,EAAI,EAAG,EAAID,EAAQ,OAAQ,IAAK,CACvC,IAAI1M,EAAQ0M,EAAQ,EAAE,CAAC,MAAM,GAAG,EAC5B1P,EAAQgD,EAAM,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAEnC,GAAI,CACF,IAAI4M,EAAQ,mBAAmB5M,EAAM,EAAE,EAEvC,GADM4M,KAASD,IAAM,EAAIC,GAASJ,EAAU,KAAKxP,EAAO4P,CAAK,GACzD3P,IAAS2P,EACX,KAEJ,OAASC,EAAI,CAEb,CACF,CAEA,OAAO5P,EAAO0P,EAAI1P,GAAQ0P,CAF1B,CAGF,CAEA,OAAO,OAAO,OACZ,CACO,MACA,MACL,OAAQ,SAAU,EAAM,EAAY,CAClCR,EACElP,EACA,GACAgP,EAAO,CAAC,EAAGI,EAAY,CACrB,QAAS,EACX,CAAC,CACH,CACF,EACA,eAAgB,SAAU,EAAY,CACpC,OAAO1B,EAAK,KAAK,UAAWsB,EAAO,CAAC,EAAG,KAAK,WAAYI,CAAU,CAAC,CACrE,EACA,cAAe,SAAU,EAAW,CAClC,OAAO1B,EAAKsB,EAAO,CAAC,EAAG,KAAK,UAAWO,CAAS,EAAG,KAAK,UAAU,CACpE,CACF,EACA,CACE,WAAY,CAAE,MAAO,OAAO,OAAOJ,CAAiB,CAAE,EACtD,UAAW,CAAE,MAAO,OAAO,OAAOI,CAAS,CAAE,CAC/C,CACF,CACF,CAEA,IAAIM,EAAMnC,EAAKuB,EAAkB,CAAE,KAAM,GAAI,CAAC,EC1H9C,SAAgBa,GAAmB,CACjC,GAAIxT,EAAQ,IAAI,qBAAqB,GAAK,CAAC,OAAO,SAAS,KAAK,MAAM,oBAAoB,EACxF,OAGF,IAAMyT,GAAA,EAASxT,EAAAA,QAAAA,CAAE,mBAAmB,EAC9ByT,GAAA,EAAQzT,EAAAA,QAAAA,CAAE,yBAAyB,EAEzCwT,EAAO,KAAK,EACZF,EAAQ,IAAI,sBAAuB,CAAC,EAEpCG,EAAM,GAAG,QAAU,GAAM,CACvB,EAAE,eAAe,GAEjB,EAAAnC,EAAA,QAAA,CAAE,mBAAmB,CAAC,CAAC,OAAO,CAChC,CAAC,CACH,aCZC,SAAU,EAAU,CACf,OAAO,QAAW,YAAc,OAAO,IAC3C,OAAQ,CAAC,SAAU,mBAAmB,EAAGlQ,CAAQ,EACvC,OAAOC,GAAW,UAAYA,EAAO,QAC/C,EAAO,QAAUD,EAAAV,EAAA,CAA6B,EAE9CU,EAAS,MAAO,CAElB,EAAA,CAAE,SAAU,EAAI,CA+8ChB,OA78CE,UAAW,CAEZ,SAASsS,EAAW,EAAQ,CAG3B,OAAOlQ,EAAM,QAAS,cAAe,GAAI,CAAC,CAAC,QAAS,kBAAmB,GAAI,CAAC,CAG3E,QAAS,+BAAgC,EAAG,CAC9C,CAEAlC,EAAE,UAAU,UAAW,WAAY,SAAU,EAAO,EAAS,EAAS,CACrE,OAAO,KAAK,SAAUS,CAAQ,GAAK2R,EAAWlQ,CAAM,CAAC,CAAC,MAAO,UAAW,CAAC,CAAC,QAAUP,CACrF,EAAG3B,EAAE,UAAU,OAAQ,iCAAkC,CAAE,EAE3DA,EAAE,UAAU,UAAW,WAAY,SAAU,EAAO,EAAS,EAAS,CACrE,OAAO,KAAK,SAAUS,CAAQ,GAAK2R,EAAWlQ,CAAM,CAAC,CAAC,MAAO,UAAW,CAAC,CAAC,QAAUP,CACrF,EAAG3B,EAAE,UAAU,OAAQ,kCAAmC,CAAE,EAE5DA,EAAE,UAAU,UAAW,aAAc,SAAU,EAAO,EAAS,EAAS,CACvE,IAAIqS,EAAgBD,EAAWlQ,CAAM,EACpCoQ,EAAQ,WACT,OAAO,KAAK,SAAU7R,CAAQ,GAAK4R,EAAc,MAAOC,CAAM,CAAC,CAAC,QAAU3Q,EAAQ,IAAO0Q,EAAc,MAAOC,CAAM,CAAC,CAAC,QAAU3Q,EAAQ,EACzI,EAAG3B,EAAE,UAAU,OAAQ,yCAA0C,CAAE,CAEpE,EAAA,CAAE,EAQFA,EAAE,UAAU,UAAW,mBAAoB,SAAU,EAAQ,CAC5D,IAAIuS,EAAW,EACXC,EAAStQ,EAAM,MAAO,EAAG,EACzBmD,EAASmN,EAAO,OAGpB,GAAKnN,IAAW,EACf,MAAO,GAKR,IAAM,IAAI,EAAI,EAAG,EAAIA,EAAQ,GAAK,EACjC,GAAY,SAAUmN,EAAQ,GAAK,EAAG,EAAQ,EAC3C,SAAUA,EAAQ,EAAI,GAAK,EAAG,EAAI,EAClC,SAAUA,EAAQ,EAAI,GAAK,EAAG,EAQlC,OAJKD,IAAa,GAAKA,EAAW,IAAO,CAK1C,EAAG,sCAAuC,EAG1CvS,EAAE,UAAU,UAAW,SAAU,SAAU,EAAO,EAAS,EAAQ,CAGlE,IAAIyS,EAAY,OAAO1R,GAAU,SAAWA,EAAM,QAAS,MAAO,EAAG,EAAI,UACxE2R,EAAgB,KAAK,SAAUjS,CAAQ,EACvCmB,EAAG+Q,EAAML,EAGV,GAAKI,EACJ,OAAOA,EAGR,GAAK1S,EAAGS,CAAQ,CAAC,CAAC,KAAM,MAAO,IAAM,SAKpC,EAAYgS,EACT,QAAS,oCAAqC,MAAO,CAAC,CACtD,QAAS,KAAM,GAAI,CAAC,CACpB,QAAS,QAAS,KAAM,EAGtBhS,EAAQ,OAASA,EAAQ,MAAM,QAEnC,KADA,EAAY,OAAQ,MAAQgS,EAAY,KAAM,GAAI,EAC5C,EAAI,EAAG7Q,EAAInB,EAAQ,MAAM,OAAQ,IAItC,GAHA,EAAOA,EAAQ,MAAOmB,GAGjB,CAAC+Q,EAAK,KAAK,MAAOL,CAAM,EAC5B,MAAO,EAET,CAMF,MAAO,EACR,EAAGtS,EAAE,UAAU,OAAQ,6CAA8C,CAAE,EAEvEA,EAAE,UAAU,UAAW,eAAgB,SAAU,EAAO,EAAU,CACjE,OAAO,KAAK,SAAUS,CAAQ,GAAK,SAAS,KAAMyB,CAAM,CACzD,EAAG,gDAAiD,EAQpDlC,EAAE,UAAU,UAAW,gBAAiB,SAAU,EAAO,EAAU,CAClE,GAAK,KAAK,SAAUS,CAAQ,EAC3B,MAAO,GAER,GAAK,CAAG,oCAAoC,KAAMyB,CAAM,EACvD,MAAO,GAQR,IAJA,IAAI0Q,EAAU1Q,EAAM,QAAS,KAAM,EAAG,EACrC2Q,EAAM,EACNzH,EAAMwH,EAAQ,OACdnG,EACW,EADNqG,EAAQC,EACCtG,EAAMrB,EAAK,IACzB,EAASA,EAAMqB,EACf,EAAQmG,EAAQ,UAAWnG,EAAKA,EAAM,CAAE,EACxC,GAAYqG,EAASC,EAEtB,OAAOF,EAAM,IAAO,CACrB,EAAG,6CAA8C,EAEjD7S,EAAE,UAAU,UAAW,sBAAuB,SAAU,EAAO,EAAU,CACxE,OAAO,KAAK,SAAUS,CAAQ,GAC1BT,EAAE,UAAU,QAAQ,cAAc,KAAM,KAAMkC,EAAOzB,CAAQ,GAC7DT,EAAE,UAAU,QAAQ,cAAc,KAAM,KAAMkC,EAAOzB,CAAQ,CAClE,EAAG,qDAAsD,EAiBzDT,EAAE,UAAU,UAAW,MAAO,SAAU,EAAO,EAAU,CACrD,OAAO,KAAK,SAAUS,CAAQ,GAAK,gEAAgE,KAAMyB,EAAM,YAAY,CAAE,CACjI,EAAG,kCAAmC,EAoDtClC,EAAE,UAAU,UAAW,QAAS,SAAU,EAAO,EAAU,CAG1D,GAAK,KAAK,SAAUS,CAAQ,EAC3B,MAAO,GAGR,IAAIuS,EAAW,IAAI,OAAQ,+CAAgD,EACvEC,EAAU/Q,EAAM,UAAW,EAAG,CAAE,EACnCgR,EAAUhR,EAAM,UAAW,EAAG,CAAE,EAChCiR,EAAUjR,EAAM,UAAW,EAAG,CAAE,EAChCkR,EAAU,EACVC,EAAW,EACXC,EAAU,EACV1R,EAAG4B,EACH+P,EACAC,EAED,SAASC,EAAO,EAAI,CACnB,OAAOjQ,EAAI,GAAM,CAClB,CAGA,GAAKtB,EAAM,SAAW,GAAK,CAAC8Q,EAAS,KAAM9Q,CAAM,EAChD,MAAO,GAGR,IAAM,EAAI,EAAGN,EAAIsR,EAAO,OAAQ,IAC/B,EAAI,SAAUA,EAAQtR,GAAK,EAAG,EAGzB6R,EAAO7R,CAAE,GAGb,GAAK,EAGL,GAAW4B,EAAI,GAAKA,EAAIA,EAAI,GAK5B,GAAYA,EAmBd,MAfA,GAAU6P,EAAWC,EACrB,GAAkB,GAAOF,EAAU,SAAS,CAAC,CAAC,MAAO,EAAG,EAAA,CAAI,SAAS,EACrE,EAAgB,SAAUG,EAAe,EAAG,EAAI,EAAI,IAAMA,EAC1D,EAAiB,aAAa,OAAQA,CAAc,CAAC,CAAC,SAAS,EAG1DN,EAAO,MAAO,QAAS,EACpBE,IAAYI,EAGRN,EAAO,MAAO,QAAS,EAC3BE,IAAYK,EAIbL,IAAYI,GAAiBJ,IAAYK,CAEjD,EAAG,oCAAqC,EAMxCxT,EAAE,UAAU,UAAW,QAAS,SAAU,EAAQ,CAMhD,GAHA,EAAQkC,EAAM,QAAS,8CAA+C,EAAG,EAGpEA,EAAM,SAAW,GACpB,MAAO,GAGT,IAAI2Q,EAAM,EAAGa,EAAM,EAAGC,EAGVzR,EAAM,OAAQ,CAAE,EAF5B0R,EAASC,EAAUjS,EAAG4J,EAItB,GAAS,MAAO,EAAG,CAAC,CAAC,KAAMmI,CAAU,IAAMzR,EACzC,MAAO,GAIT,IAAM,EAAI,EAAG,EAAI,EAAUN,EAAI,EAAG,EAAEA,EAAG,EAAE4J,EACvC,GAAO,EAAGtJ,EAAM,OAAQN,CAAE,EAAI4J,GAUhC,IAPA,EAAUqH,EAAM,GACXe,GAAW,KACd,EAAU,EACV,EAAM,GAGR,EAAM,EACA,EAAI,EAAG,EAAI,EAAUhS,EAAI,EAAG,EAAEA,EAAG,EAAE4J,EACvC,GAAO,EAAGtJ,EAAM,OAAQN,CAAE,EAAI4J,GAUhC,MAPA,GAAWqH,EAAM,GACZgB,GAAY,GACf,EAAW,EAEX,GAAsBH,EAGf,OAAQE,CAAQ,CAAC,CAAC,OAAQC,CAAS,IAAM3R,EAAM,OAAQ,EAAG,CAErE,EAAG,oCAAqC,EAMxClC,EAAE,UAAU,UAAW,SAAU,SAAU,EAAO,EAAU,CAG3D,GAAK,KAAK,SAAUS,CAAQ,EAC3B,MAAO,GAYR,GARA,EAAQyB,EAAM,QAAS,UAAW,EAAG,EAGhCA,EAAM,SAAW,IAKjBA,IAAU,kBACdA,IAAU,kBACVA,IAAU,kBACVA,IAAU,kBACVA,IAAU,kBACVA,IAAU,kBACVA,IAAU,kBACVA,IAAU,kBACVA,IAAU,kBACVA,IAAU,iBACV,MAAO,GAUR,IAAM,IANF4R,EAAY5R,EAAM,OAAS,EAC3B6R,EAAU7R,EAAM,UAAW,EAAG4R,CAAQ,EACtCE,EAAU9R,EAAM,UAAW4R,CAAQ,EACnCG,EAAO,EACPxH,EAAMqH,EAAU,EAEVlS,EAAIkS,EAASlS,GAAK,EAAG,IAC9B,GAAQmS,EAAQ,OAAQD,EAAUlS,CAAE,EAAI,IACnC6K,EAAM,IACV,EAAM,GAIR,IAAIyH,EAAYD,EAAO,GAAK,EAAI,EAAI,GAAKA,EAAO,GAEhD,GAAKC,IAAc,SAAUF,EAAQ,OAAQ,CAAE,EAAG,EAAG,EACpD,MAAO,GAGR,GAAoB,EACpB,EAAU9R,EAAM,UAAW,EAAG4R,CAAQ,EACtC,EAAO,EACP,EAAMA,EAAU,EAEhB,IAAM,IAAIK,EAAKL,EAASK,GAAM,EAAG,IAChC,GAAQJ,EAAQ,OAAQD,EAAUK,CAAG,EAAI,IACpC1H,EAAM,IACV,EAAM,GAUR,MANA,GAAYwH,EAAO,GAAK,EAAI,EAAI,GAAKA,EAAO,GAEvCC,IAAc,SAAUF,EAAQ,OAAQ,CAAE,EAAG,EAAG,CAMtD,EAAG,qCAAsC,EAMzChU,EAAE,UAAU,UAAW,QAAS,SAAU,EAAO,EAAU,CAG1D,GAAK,KAAK,SAAUS,CAAQ,EAC3B,MAAO,GAOR,GAHA,EAAQyB,EAAM,QAAS,8CAA+C,EAAG,EAGpEA,EAAM,SAAW,GACrB,MAAO,GAGR,IAAI2Q,EAAM,EACTe,EAES,SAAU1R,EAAM,UAAW,EAAG,EAAG,EAAG,EAAG,EAFvC2R,EAGC,SAAU3R,EAAM,UAAW,GAAI,EAAG,EAAG,EAAG,EAH/BkS,EAKN,SAAU,EAAK,EAAK,CACjC,IAAI9T,EAAWuS,EAAM,GAAO,GAI5B,OAHOvS,IAAW,IAAUA,IAAW,MACtC,EAAS,GAEDA,IAAW+T,CACrB,EAXiCzS,EAcjC,GAAKM,IAAU,IACdA,IAAU,eACVA,IAAU,eACVA,IAAU,eACVA,IAAU,eACVA,IAAU,eACVA,IAAU,eACVA,IAAU,eACVA,IAAU,eACVA,IAAU,eACVA,IAAU,cAEV,MAAO,GAIR,IAAM,EAAI,EAAGN,GAAK,EAAG,IACpB,GAAY,SAAUM,EAAM,UAAWN,EAAI,EAAGA,CAAE,EAAG,EAAG,GAAM,GAAKA,GAIlE,GAAKwS,EAAavB,EAAKe,CAAQ,EAAI,CAElC,IADA,EAAM,EACA,EAAI,EAAGhS,GAAK,GAAI,IACrB,GAAY,SAAUM,EAAM,UAAWN,EAAI,EAAGA,CAAE,EAAG,EAAG,GAAM,GAAKA,GAElE,OAAOwS,EAAavB,EAAKgB,CAAS,CACnC,CACA,MAAO,EAER,EAAG,oCAAqC,EAIxC7T,EAAE,UAAU,UAAW,aAAc,SAAU,EAAO,EAAU,CAC/D,GAAK,KAAK,SAAUS,CAAQ,EAC3B,MAAO,sBAIR,GAAK,aAAa,KAAMyB,CAAM,EAC7B,MAAO,GAGR,IAAIoS,EAAS,EACZC,EAAS,EACTC,EAAQ,GACRhR,EAAGiR,EAMJ,GAJA,EAAQvS,EAAM,QAAS,MAAO,EAAG,EAI5BA,EAAM,OAAS,IAAMA,EAAM,OAAS,GACxC,MAAO,GAGR,IAAM,EAAIA,EAAM,OAAS,EAAGsB,GAAK,EAAG,IACnC,EAAStB,EAAM,OAAQsB,CAAE,EACzB,EAAS,SAAUiR,EAAQ,EAAG,EACzBD,IACG,GAAU,GAAM,IACtB,GAAU,GAIZ,GAAUD,EACV,EAAQ,CAACC,EAGV,OAASF,EAAS,IAAS,CAC5B,EAAG,0CAA2C,EAM9CtU,EAAE,UAAU,UAAW,kBAAmB,SAAU,EAAO,EAAS,EAAQ,CAC3E,GAAK,YAAY,KAAMkC,CAAM,EAC5B,MAAO,GAGR,EAAQA,EAAM,QAAS,MAAO,EAAG,EAEjC,IAAIwS,EAAa,EAwDjB,OAtDK3T,EAAM,aACV,GAAc,GAEVA,EAAM,OACV,GAAc,GAEVA,EAAM,OACV,GAAc,GAEVA,EAAM,aACV,GAAc,GAEVA,EAAM,UACV,GAAc,IAEVA,EAAM,WACV,GAAc,IAEVA,EAAM,MACV,GAAc,IAEVA,EAAM,UACV,GAAc,KAEVA,EAAM,MACV,EAAa,KAET2T,EAAa,IAAY,cAAc,KAAMxS,CAAM,GAAK,eAAe,KAAMA,CAAM,IAGnFwS,EAAa,GAAU,OAAO,KAAMxS,CAAM,EACvCA,EAAM,SAAW,GAEpBwS,EAAa,GAAU,WAAW,KAAMxS,CAAM,EAC3CA,EAAM,SAAW,GAEpBwS,EAAa,GAAU,uBAAuB,KAAMxS,CAAM,EACvDA,EAAM,SAAW,GAEpBwS,EAAa,IAAU,gBAAgB,KAAMxS,CAAM,EAChDA,EAAM,SAAW,GAEpBwS,EAAa,IAAU,UAAU,KAAMxS,CAAM,GAG7CwS,EAAa,IAAU,OAAO,KAAMxS,CAAM,EACvCA,EAAM,SAAW,GAEpBwS,EAAa,IAAU,eAAe,KAAMxS,CAAM,EAC/CA,EAAM,SAAW,GAEzB,GAAKwS,EAAa,IAInB,EAAG,0CAA2C,EA8B9C1U,EAAE,UAAU,UAAW,WAAY,SAAU,EAAO,EAAS,EAAQ,CACjE,IAAI2U,EAAgB,OAAO5T,GAAU,SACjC6T,EAASD,EAAgB5T,EAAQA,EAAO,GACxC8T,EAAOF,EAAgB,GAAO5T,EAAO,GACrCuR,EAMJ,MAJA,GAASsC,EAAO,QAAS,KAAM,EAAG,EAClC,EAASC,EAAOD,EAAS,IAAMA,EAAS,KACxC,EAAQ,KAAOA,EAAS,2HACxB,EAAQ,IAAI,OAAQtC,CAAM,EACnB,KAAK,SAAU7R,CAAQ,GAAK6R,EAAM,KAAMpQ,CAAM,CAEzD,EAAG,kCAAmC,EAEtClC,EAAE,UAAU,UAAW,SAAU,SAAU,EAAO,EAAU,CAC3D,OAAO,KAAK,SAAUS,CAAQ,GAAK,iHAAiH,KAAMyB,CAAM,CACjK,EAAGlC,EAAE,UAAU,SAAS,IAAK,EAqB7BA,EAAE,UAAU,UAAW,UAAW,SAAU,EAAO,EAAU,CAC5D,IAAI8U,EAAQ,GACXtP,EAAK,4BACLuP,EAAOC,EAAIC,EAAIC,EAAMC,EAetB,OAdK3P,EAAG,KAAMtD,CAAM,GACnB,EAAQA,EAAM,MAAO,GAAI,EACzB,EAAK,SAAU6S,EAAO,GAAK,EAAG,EAC9B,EAAK,SAAUA,EAAO,GAAK,EAAG,EAC9B,EAAO,SAAUA,EAAO,GAAK,EAAG,EAChC,EAAQ,IAAI,KAAM,KAAK,IAAKG,EAAMD,EAAK,EAAGD,EAAI,GAAI,EAAG,EAAG,CAAE,CAAE,EAC5D,AAGCF,EAHMK,EAAM,eAAe,IAAMD,GAAYC,EAAM,YAAY,IAAMF,EAAK,GAASE,EAAM,WAAW,IAAMH,GAM3G,EAAQ,GAEF,KAAK,SAAUvU,CAAQ,GAAKqU,CACpC,EAAG9U,EAAE,UAAU,SAAS,IAAK,EAE7BA,EAAE,UAAU,UAAW,SAAU,SAAU,EAAO,EAAU,CAC3D,OAAO,KAAK,SAAUS,CAAQ,GAAK,0EAA0E,KAAMyB,CAAM,CAC1H,EAAGlC,EAAE,UAAU,SAAS,IAAK,EAG7BA,EAAE,UAAU,UAAW,YAAa,SAAU,EAAO,EAAS,EAAQ,CAErE,MADA,GAAQ,OAAOe,GAAU,SAAWA,EAAM,QAAS,KAAM,GAAI,EAAI,gBAC1D,KAAK,SAAUN,CAAQ,GAAKyB,EAAM,MAAW,OAAQ,OAASnB,EAAQ,KAAM,GAAI,CAAE,CAC1F,EAAGf,EAAE,UAAU,OAAQ,8CAA+C,CAAE,EAKxEA,EAAE,UAAU,UAAW,gBAAiB,SAAU,EAAO,EAAU,CAClE,OAAO,KAAK,SAAUS,CAAQ,GAAK,eAAe,KAAMyB,CAAM,CAC/D,EAAG,6CAA8C,EAEjDlC,EAAE,UAAU,UAAW,cAAe,SAAU,EAAO,EAAS,EAAQ,CACpE,IAAI+F,EAAS/F,EAAGe,CAAM,EAQtB,OANK,KAAK,SAAS,YAAcgF,EAAO,IAAK,4BAA6B,CAAC,CAAC,QACxEA,EAAO,SAAU,2BAA4B,CAAC,CAAC,GAAI,4BAA6B,UAAW,CACvF/F,EAAGS,CAAQ,CAAC,CAAC,MAAM,CACvB,CAAE,EAGCyB,EAAQ6D,EAAO,IAAI,CAC9B,EAAG,+BAAgC,EAEnC/F,EAAE,UAAU,UAAW,mBAAoB,SAAU,EAAO,EAAS,EAAQ,CACzE,IAAI+F,EAAS/F,EAAGe,CAAM,EAQtB,OANK,KAAK,SAAS,YAAcgF,EAAO,IAAK,iCAAkC,CAAC,CAAC,QAC7EA,EAAO,SAAU,gCAAiC,CAAC,CAAC,GAAI,iCAAkC,UAAW,CACjG/F,EAAGS,CAAQ,CAAC,CAAC,MAAM,CACvB,CAAE,EAGCyB,GAAS6D,EAAO,IAAI,CAC/B,EAAG,+BAAgC,EAQnC/F,EAAE,UAAU,UAAW,OAAQ,SAAU,EAAO,EAAU,CAGzD,GAAK,KAAK,SAAUS,CAAQ,EAC3B,MAAO,GAIR,IAAI2U,EAAOlT,EAAM,QAAS,KAAM,EAAG,CAAC,CAAC,YAAY,EAChDmT,EAAkB,GAClBC,EAAgB,GAChBC,EAAQ,GACRC,EAAY,GACZC,EAAaC,EAAWC,EAAQC,EAAOC,EAAaC,EAAqBC,EAAYnU,EAAGoU,EA0FzF,GAlFKZ,EAAK,OAAS,IAKnB,EAAcA,EAAK,UAAW,EAAG,CAAE,EACnC,EAAsB,CACrBa,GAAM,qBACNC,GAAM,qBACNC,GAAM,UACNC,GAAM,qBACNC,GAAM,UACNC,GAAM,uBACNC,GAAM,UACNC,GAAM,uBACNC,GAAM,4BACNC,GAAM,UACNC,GAAM,UACNC,GAAM,qBACNC,GAAM,UACNC,GAAM,UACNC,GAAM,kBACNC,GAAM,UACNC,GAAM,UACNC,GAAM,UACNC,GAAM,4BACNC,GAAM,qBACNC,GAAM,UACNC,GAAM,uBACNC,GAAM,qBACNC,GAAM,UACNC,GAAM,0BACNC,GAAM,UACNC,GAAM,UACNC,GAAM,qBACNC,GAAM,UACNC,GAAM,2BACNC,GAAM,qBACNC,GAAM,uBACNC,GAAM,uBACNC,GAAM,qBACNC,GAAM,qBACNC,GAAM,UACNC,GAAM,qBACNC,GAAM,2BACNC,GAAM,6BACNC,GAAM,UACNC,GAAM,0BACNC,GAAM,4BACNC,GAAM,qBACNC,GAAM,UACNC,GAAM,kBACNC,GAAM,UACNC,GAAM,qBACNC,GAAM,qBACNC,GAAM,UACNC,GAAM,UACNC,GAAM,uBACNC,GAAM,2BACNC,GAAM,qBACNC,GAAM,UACNC,GAAM,UACNC,GAAM,UACNC,GAAM,UACNC,GAAM,UACNC,GAAM,qBACNC,GAAM,UACNC,GAAM,qBACNC,GAAM,gBACNC,GAAM,kBACNC,GAAM,oBACP,EAEA,EAAclE,EAAqBL,GASvBI,IAAgB,SAC3B,EAAiB,OAAQ,kBAAoBA,EAAc,IAAK,EAAG,EAC9D,CAAGE,EAAW,KAAMX,CAAK,IAC7B,MAAO,GAMT,IADA,EAAYA,EAAK,UAAW,EAAGA,EAAK,MAAO,EAAIA,EAAK,UAAW,EAAG,CAAE,EAC9D,EAAI,EAAGxT,EAAI8T,EAAU,OAAQ,IAClC,EAASA,EAAU,OAAQ9T,CAAE,EACxB+T,IAAW,MACf,EAAgB,IAEXL,IACL,GAAmB,uCAAuC,QAASK,CAAO,GAK5E,IAAM,EAAI,EAAGK,EAAIX,EAAgB,OAAQ,IACxC,EAAQA,EAAgB,OAAQW,CAAE,EAClC,EAAY,GAAKT,EAAaK,EAC9B,EAAQJ,EAAY,GAErB,OAAOD,IAAU,CAClB,EAAG,8BAA+B,EAElCvV,EAAE,UAAU,UAAW,UAAW,SAAU,EAAO,EAAU,CAC5D,OAAO,KAAK,SAAUS,CAAQ,GAAK,UAAU,KAAMyB,CAAM,CAC1D,EAAG,mDAAoD,EAEvDlC,EAAE,UAAU,UAAW,OAAQ,SAAU,EAAO,EAAU,CACzD,OAAO,KAAK,SAAUS,CAAQ,GAAK,gIAAgI,KAAMyB,CAAM,CAChL,EAAG,qCAAsC,EAEzClC,EAAE,UAAU,UAAW,OAAQ,SAAU,EAAO,EAAU,CACzD,OAAO,KAAK,SAAUS,CAAQ,GAAK,q2BAAq2B,KAAMyB,CAAM,CACr5B,EAAG,qCAAsC,EAEzClC,EAAE,UAAU,UAAW,WAAY,SAAU,EAAO,EAAS,EAAQ,CACjE,IAAI+F,EAAS/F,EAAGe,CAAM,EAQtB,OANK,KAAK,SAAS,YAAcgF,EAAO,IAAK,yBAA0B,CAAC,CAAC,QACrEA,EAAO,SAAU,wBAAyB,CAAC,CAAC,GAAI,yBAA0B,UAAW,CACjF/F,EAAGS,CAAQ,CAAC,CAAC,MAAM,CACvB,CAAE,EAGCyB,EAAQ6D,EAAO,IAAI,CAC9B,EAAG,8BAA+B,EAElC/F,EAAE,UAAU,UAAW,gBAAiB,SAAU,EAAO,EAAS,EAAQ,CACtE,IAAI+F,EAAS/F,EAAGe,CAAM,EAQtB,OANK,KAAK,SAAS,YAAcgF,EAAO,IAAK,8BAA+B,CAAC,CAAC,QAC1EA,EAAO,SAAU,6BAA8B,CAAC,CAAC,GAAI,8BAA+B,UAAW,CAC3F/F,EAAGS,CAAQ,CAAC,CAAC,MAAM,CACvB,CAAE,EAGCyB,GAAS6D,EAAO,IAAI,CAC/B,EAAG,8BAA+B,EAElC/F,EAAE,UAAU,UAAW,cAAe,SAAU,EAAO,EAAU,CAChE,OAAO,KAAK,SAAUS,CAAQ,GAAK,YAAY,KAAMyB,CAAM,CAC5D,EAAG,sBAAuB,EAE1BlC,EAAE,UAAU,UAAW,uBAAwB,SAAU,EAAO,EAAU,CACzE,OAAO,KAAK,SAAUS,CAAQ,GAAK,sBAAsB,KAAMyB,CAAM,CACtE,EAAG,qCAAsC,EAGzClC,EAAE,UAAU,UAAW,WAAY,SAAU,EAAO,EAAS,EAAQ,CAWpE,OAVK,KAAK,SAAUS,CAAQ,EACpB,GAGR,EAAKT,EAAGS,CAAQ,CAAC,CAAC,KAAM,MAAO,IAAM,QAC/BA,EAAQ,OAASA,EAAQ,MAAM,OAASM,EAM/C,EAAGf,EAAE,UAAU,OAAQ,uCAAwC,CAAE,EAGjEA,EAAE,UAAU,UAAW,UAAW,SAAU,EAAO,EAAS,EAAQ,CACnE,GAAK,KAAK,SAAUS,CAAQ,EAC3B,MAAO,GAGR,GAAKT,EAAGS,CAAQ,CAAC,CAAC,KAAM,MAAO,IAAM,QAC/BA,EAAQ,OAASA,EAAQ,MAAM,OAC7B,KAAA,IAAI,EAAI,EAAG,EAAIA,EAAQ,MAAM,OAAQ,IAC1C,GAAKA,EAAQ,MAAO,EAAG,CAAC,KAAOM,EAC9B,MAAO,EAAA,CAMX,MAAO,EACR,EAAGf,EAAE,UAAU,OAAQ,2CAA4C,CAAE,EAGrEA,EAAE,UAAU,UAAW,eAAgB,SAAU,EAAO,EAAS,EAAQ,CACxE,GAAK,KAAK,SAAUS,CAAQ,EAC3B,MAAO,GAGR,GAAKT,EAAGS,CAAQ,CAAC,CAAC,KAAM,MAAO,IAAM,QAC/BA,EAAQ,OAASA,EAAQ,MAAM,OAGnC,KAAM,IAFFwZ,EAAY,EAENrY,EAAI,EAAGA,EAAInB,EAAQ,MAAM,OAAQ,IAE1C,GADA,GAAaA,EAAQ,MAAOmB,EAAG,CAAC,KAC3BqY,EAAYlZ,EAChB,MAAO,EAET,CAIF,MAAO,EACR,EAAGf,EAAE,UAAU,OAAQ,oDAAqD,CAAE,EAG9EA,EAAE,UAAU,UAAW,WAAY,SAAU,EAAO,EAAU,CAC7D,OAAO,KAAK,SAAUS,CAAQ,GAAK,sFAAsF,KAAMyB,CAAM,CACtI,EAAG,uCAAwC,EAE3ClC,EAAE,UAAU,UAAW,WAAY,SAAU,EAAc,EAAU,CACpE,IAAIka,EAAiBC,EAAa,QAAS,eAAgB,EAAG,EAC9D,OAAO,KAAK,SAAU1Z,CAAQ,GAAKyZ,EAAe,OAAS,GAAK,4BAA4B,KAAMA,CAAe,CAClH,EAAG,uCAAwC,EAU3Cla,EAAE,UAAU,UAAW,WAAY,SAAU,EAAc,EAAU,CAEpE,MADA,GAAema,EAAa,QAAS,eAAgB,EAAG,EACjD,KAAK,SAAU1Z,CAAQ,GAAK0Z,EAAa,OAAS,GACxDA,EAAa,MAAO,sEAAuE,CAC7F,EAAG,uCAAwC,EAE3Cna,EAAE,UAAU,UAAW,UAAW,SAAU,EAAO,EAAU,CACzD,OAAO,KAAK,SAAUS,CAAQ,GAAK,kLAAkL,KAAMyB,CAAM,CACrO,EAAG,+BAAgC,EAUnClC,EAAE,UAAU,UAAW,QAAS,SAAU,EAAO,EAAU,CAG1D,GAAK,KAAK,SAAUS,CAAQ,EAC3B,MAAO,GAGR,IAAI2Z,EAAW,IAAI,OAAQ,sDAAuD,EAC9EC,EAAa,2BAChBpH,EAAS/Q,EAAM,OAAQA,EAAM,OAAS,CAAE,CAAC,CAAC,YAAY,EACtDgR,EAkBD,MAhBA,GAAQhR,EAAM,SAAS,CAAC,CAAC,YAAY,EAGhCA,EAAM,OAAS,IAAMA,EAAM,OAAS,GAAK,CAACkY,EAAS,KAAMlY,CAAM,EAC5D,IAMR,EAAQA,EAAM,QAAS,OAAQ,GAAI,CAAC,CAClC,QAAS,OAAQ,GAAI,CAAC,CACtB,QAAS,OAAQ,GAAI,EAEvB,EAASA,EAAM,SAAW,EAAIA,EAAM,OAAQ,EAAG,CAAE,EAAIA,EAAM,OAAQ,EAAG,CAAE,EAEjEmY,EAAW,OAAQ,SAAUnH,EAAQ,EAAG,EAAI,EAAG,IAAMD,EAE7D,EAAG,oCAAqC,EAKxCjT,EAAE,UAAU,UAAW,QAAS,SAAU,EAAO,EAAU,CAwB1D,OArBK,KAAK,SAAUS,CAAQ,EACpB,IAGR,EAAQyB,EAAM,YAAY,EAGpBA,EAAM,MAAO,0EAA2E,EAKzF,qBAAqB,KAAMA,CAAM,EAC5B,0BAA0B,OAAQA,EAAM,UAAW,EAAG,CAAE,EAAI,EAAG,IAAMA,EAAM,OAAQ,CAAE,EAI1F,YAAY,KAAMA,CAAM,EACnBA,EAAO,KAAQ,0BAA0B,OAAQA,EAAM,UAAW,EAAG,CAAE,EAAI,EAAG,EAGjF,GAbC,GAeT,EAAG,oCAAqC,EAKxClC,EAAE,UAAU,UAAW,QAAS,SAAU,EAAQ,CAKjD,GAFA,EAAQkC,EAAM,QAAS,UAAW,EAAG,EAEhCA,EAAM,SAAW,GACrB,MAAO,GAKR,IAAM,IAFFoY,EAAW,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAE,EACvCC,EAAS,EACH3Y,EAAI,EAAGA,EAAI,EAAG,IACvB,GAAU0Y,EAAU1Y,GAAMM,EAAON,GAElC,IAAI4Y,EAAOD,EAAS,GAGpB,OAFqBC,IAAS,GAAO,EAAIA,KAEf,SAAUtY,EAAO,GAAK,EAAG,CACpD,EAAG,oCAAqC,EAYxClC,EAAE,UAAU,UAAW,QAAS,SAAU,EAAQ,CACjD,IAAIkT,EACAmB,EACAxB,EAAM,EACN4H,EACA1X,EACA2X,EAMJ,GAHA,EAAQxY,EAAM,QAAS,8CAA+C,EAAG,EAGpEA,EAAM,SAAW,GACrB,MAAO,GASR,IALA,EAAK,SAAUA,EAAM,UAAW,GAAI,EAAG,EAAG,EAAG,EAG7C,EAAS,SAAUA,EAAM,UAAW,EAAG,EAAG,EAAG,EAAG,EAE1C,EAAQ,EAAGa,EAAQ,GAAI,IAC5B,EAAaA,EACRA,IAAU,KACd,EAAa,GAETA,IAAU,KACd,EAAa,GAEd,GAAWmQ,EAAS,GAAOwH,EAC3B,EAAS,SAAUxH,EAAS,GAAI,EAAG,EAanC,MAXD,GAAOL,EAAM,GAEb,AAGC4H,EAHIA,EAAK,EACF,GAAKA,EAEP,EAGDpG,IAAOoG,CAKb,EAAG,wCAAyC,EAE5Cza,EAAE,UAAU,UAAW,aAAc,SAAU,EAAO,EAAS,EAAQ,CACtE,OAAO,KAAK,SAAUS,CAAQ,GAAK,CAACT,EAAE,UAAU,QAAQ,QAAQ,KAAM,KAAMkC,EAAOzB,EAASM,CAAM,CACnG,EAAG,8DAA+D,EAElEf,EAAE,UAAU,UAAW,eAAgB,SAAU,EAAO,EAAU,CACjE,OAAO,KAAK,SAAUS,CAAQ,GAAK,SAAS,KAAMyB,CAAM,CACzD,EAAG,wBAAyB,EAe5BlC,EAAE,UAAU,UAAW,UAAW,SAAU,EAAO,EAAS,EAAQ,CAOnE,OANK,KAAK,SAAUS,CAAQ,EACpB,IAEH,OAAOM,GAAU,WACrB,EAAY,OAAQ,OAASA,EAAQ,IAAK,GAEpCA,EAAM,KAAMmB,CAAM,EAC1B,EAAG,iBAAkB,EAKrBlC,EAAE,UAAU,UAAW,UAAW,SAAU,EAAO,EAAU,CAC5D,OAAO,KAAK,SAAUS,CAAQ,GAAK,0FAA0F,KAAMyB,CAAM,CAC1I,EAAG,sCAAuC,EAoB1ClC,EAAE,UAAU,UAAW,UAAW,SAAU,EAAc,EAAU,CAGnE,MAFA,GAAema,EAAa,QAAS,OAAQ,EAAG,EAEzC,KAAK,SAAU1Z,CAAQ,GAAK,kHAAO,KAAM0Z,CAAa,CAC9D,EAAG,sCAAuC,EAY1Cna,EAAE,UAAU,UAAW,WAAY,SAAU,EAAc,EAAU,CAEpE,MADA,GAAema,EAAa,QAAS,eAAgB,EAAG,EACjD,KAAK,SAAU1Z,CAAQ,GAAK0Z,EAAa,OAAS,GACxDA,EAAa,MAAO,kFAAmF,CACzG,EAAG,yCAA0C,EAU7Cna,EAAE,UAAU,UAAW,UAAW,SAAU,EAAc,EAAU,CAEnE,MADA,GAAema,EAAa,QAAS,eAAgB,EAAG,EACjD,KAAK,SAAU1Z,CAAQ,GAAK0Z,EAAa,OAAS,GACxDA,EAAa,MAAO,mJAAoJ,CAC1K,EAAG,sCAAuC,EAkB1Cna,EAAE,UAAU,UAAW,UAAW,SAAU,EAAc,EAAU,CAEnE,MADA,GAAema,EAAa,QAAS,OAAQ,EAAG,EACzC,KAAK,SAAU1Z,CAAQ,GAAK0Z,EAAa,OAAS,GACxDA,EAAa,MAAO,qFAAsF,CAC5G,EAAG,sCAAuC,EAU1Cna,EAAE,UAAU,UAAW,eAAgB,SAAU,EAAW,EAAU,CACrE,OAAO,KAAK,SAAUS,CAAQ,GAAK,uCAAuC,KAAMka,CAAU,CAC3F,EAAG,wBAAyB,EAe5B3a,EAAE,UAAU,UAAW,eAAgB,SAAU,EAAO,EAAU,CACjE,OAAO,KAAK,SAAUS,CAAQ,GAAK,8EAA8E,KAAMyB,CAAM,CAC9H,EAAG,qCAAsC,EAGzClC,EAAE,UAAU,UAAW,eAAgB,SAAU,EAAO,EAAU,CACjE,OAAO,KAAK,SAAUS,CAAQ,GAAK,UAAU,KAAMyB,CAAM,CAC1D,EAAG,qCAAsC,EAEzClC,EAAE,UAAU,UAAW,eAAgB,SAAU,EAAO,EAAU,CACjE,OAAO,KAAK,SAAUS,CAAQ,GAAK,gCAAgC,KAAMyB,CAAM,CAChF,EAAG,qCAAsC,EAGzClC,EAAE,UAAU,UAAW,aAAc,SAAU,EAAO,EAAU,CAC/D,OAAO,KAAK,SAAUS,CAAQ,GAAK,iOAAiO,KAAMyB,CAAM,CACjR,EAAG,qCAAsC,EAkBzClC,EAAE,UAAU,UAAW,qBAAsB,SAAU,EAAO,EAAS,EAAU,CAChF,IAAI4a,EAAU5a,EAAGC,EAAS,GAAKQ,EAAQ,IAAK,EAC3Coa,EAAeD,EAAQ,GAAI,CAAE,EAC7B1a,EAAY2a,EAAa,KAAM,eAAgB,EAAIA,EAAa,KAAM,eAAgB,EAAI7a,EAAE,OAAQ,CAAC,EAAG,IAAK,EAC7G8a,EAAUF,EAAQ,OAAQ,UAAW,CACpC,OAAO1a,EAAU,aAAc,IAAK,CACrC,CAAE,CAAC,CAAC,QAAUD,EAAS,GAaxB,OAVA4a,EAAa,KAAM,gBAAiB3a,CAAU,EAGxCF,EAAGS,CAAQ,CAAC,CAAC,KAAM,iBAAkB,IAC1Cma,EAAQ,KAAM,kBAAmB,EAAK,EACtCA,EAAQ,KAAM,UAAW,CACxB1a,EAAU,QAAS,IAAK,CACzB,CAAE,EACF0a,EAAQ,KAAM,kBAAmB,EAAM,GAEjCE,CACR,EAAG9a,EAAE,UAAU,OAAQ,2CAA4C,CAAE,EAuBrEA,EAAE,UAAU,UAAW,uBAAwB,SAAU,EAAO,EAAS,EAAU,CAClF,IAAI4a,EAAU5a,EAAGC,EAAS,GAAKQ,EAAQ,IAAK,EAC3Coa,EAAeD,EAAQ,GAAI,CAAE,EAC7B1a,EAAY2a,EAAa,KAAM,YAAa,EAAIA,EAAa,KAAM,YAAa,EAAI7a,EAAE,OAAQ,CAAC,EAAG,IAAK,EACvG+a,EAAeH,EAAQ,OAAQ,UAAW,CACzC,OAAO1a,EAAU,aAAc,IAAK,CACrC,CAAE,CAAC,CAAC,OACJ4a,EAAUC,IAAiB,GAAKA,GAAgB9a,EAAS,GAa1D,OAVA4a,EAAa,KAAM,aAAc3a,CAAU,EAGrCF,EAAGS,CAAQ,CAAC,CAAC,KAAM,iBAAkB,IAC1Cma,EAAQ,KAAM,kBAAmB,EAAK,EACtCA,EAAQ,KAAM,UAAW,CACxB1a,EAAU,QAAS,IAAK,CACzB,CAAE,EACF0a,EAAQ,KAAM,kBAAmB,EAAM,GAEjCE,CACR,EAAG9a,EAAE,UAAU,OAAQ,+DAAgE,CAAE,EAoCzFA,EAAE,UAAU,UAAW,UAAW,SAAU,EAAO,EAAS,EAAU,CACrE,IAAIgb,EAAmB/a,IAAY,OAClCgb,EAAkBD,GAAoB/a,EAAQ,gBAAkB,OAAgB,GAAQA,EAAQ,cAChGib,EAAuBF,GAAoB/a,EAAQ,qBAAuB,OAAgB,GAAQA,EAAQ,mBAC1Gkb,EAAoBH,GAAoB/a,EAAQ,kBAAoB,OAAgB,GAAQA,EAAQ,gBACpGqS,EAEI,CAAC4I,GAAsB,CAACC,EACpB,uHACGD,GAAsBC,EACzB,mIACGD,EACH,gIAEA,0HAIT,MADA,GAAQD,EAAgB,IAAI,OAAQ3I,CAAM,EAAI,IAAI,OAAQA,EAAO,GAAI,EAC9D,KAAK,SAAU7R,CAAQ,GAAK6R,EAAM,KAAMpQ,CAAM,CACtD,EAAG,+BAAgC,EAGnClC,EAAE,UAAU,UAAW,oBAAqB,SAAU,EAAO,EAAS,EAAQ,CAC7E,OAAOA,EAAGkC,CAAM,CAAC,CAAC,KAAK,CAAC,CAAC,QAAUnB,CACpC,EAAGf,EAAE,UAAU,OAAQ,uCAAwC,CAAE,EAEjEA,EAAE,UAAU,UAAW,OAAQ,SAAU,EAAO,EAAU,CACzD,OAAO,KAAK,SAAUS,CAAQ,GAAK,yCAAyC,KAAMyB,CAAM,CACzF,EAAG,qDAAsD,EAEzDlC,EAAE,UAAU,UAAW,UAAW,SAAU,EAAO,EAAU,CAC5D,OAAO,KAAK,SAAUS,CAAQ,GAAK,iDAAiD,KAAMyB,CAAM,CACjG,EAAG,oDAAqD,EAGxDlC,EAAE,UAAU,UAAW,OAAQ,SAAU,EAAO,EAAU,CACzD,OAAO,KAAK,SAAUS,CAAQ,GAAK,gqBAAgqB,KAAMyB,CAAM,CAChtB,EAAGlC,EAAE,UAAU,SAAS,GAAI,EAc5BA,EAAE,UAAU,UAAW,QAAS,SAAU,EAAI,CAC1C,GAAK0C,EAAE,SAAW,GACd,MAAO,GASX,IANA,IAAI0Y,EAAK,CAAE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EACzHC,EAAK,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAE,EAC3EC,EAAK,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAE,EAC1D3Y,EAAK,EACLf,EAEM,EAFH4B,EAAG+X,EAAGC,EAAGC,EAAIC,EAEP9Z,EAAI,GAAI,IACjB,EAAI0Z,EAAI1Z,GACR,EAAIc,EAAE,MAAOd,EAAGA,EAAI,CAAE,EACjB,MAAO2Z,CAAE,GACV,EAAIA,EAAE,YAAY,EAClB,EAAIF,EAAID,EAAG,QAASG,CAAE,IAEtB,EAAI,SAAUA,EAAG,EAAG,EAEnB3Z,IAAM,IAEP,EAAM4B,EACD+X,IAAM,MACP,EAAM,KAGd,GAAM/X,EAAIgY,EAMd,MAJA,GAAK7Y,EAAK,GACL8Y,IAAOC,CAIhB,EAAG,+DAAgE,EAEnE1b,EAAE,UAAU,UAAW,YAAa,SAAU,EAAO,EAAU,CAC9D,OAAO,KAAK,SAAUS,CAAQ,GAAK,mBAAmB,KAAMyB,CAAM,CACnE,EAAG,uCAAwC,EAE3ClC,EAAE,UAAU,UAAW,WAAY,SAAU,EAAO,EAAU,CAC7D,OAAO,KAAK,SAAUS,CAAQ,GAAK,yBAAyB,KAAMyB,CAAM,CACzE,EAAG,8DAA+D,EAC3DlC,CACP,CAAC,OC59CD,IAAM2b,EAAY,CACdC,GAAM,KACN,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,KACT,QAAS,QACTC,GAAM,KACN,QAAS,KACT,UAAW,KACX,UAAW,QACXC,GAAM,KACN,QAAS,KACTC,GAAM,KACNC,GAAM,KACNC,GAAM,KACN,QAAS,KACTC,GAAM,KACNC,GAAM,KACNC,GAAM,KACN,QAAS,KACT,QAAS,KACTC,GAAM,KACN,QAAS,KACTC,GAAM,KACNC,GAAM,KACNC,GAAM,KACNC,GAAM,KACNC,GAAM,IACV,EAEMC,EAAmC,SAAS,EAAQ,CAClDC,EAAO,OAAS,GAChBA,EAAO,MAAM,MAAO,CAChB,mBAAoB,CAAC,EAAGA,CAAM,CAClC,CAAC,CAET,EAEA,SAASC,EAA0B,EAAM,CAErCrb,EAD4B,KAAK,gBACpB,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,GAAM,CACnC,IAAMoB,GAAA,EAAQjE,EAAAA,QAAAA,CAAE8H,CAAE,EAEZqW,EAAcla,EAAM,KAAK,QAAQ,EAEvC,GAAIka,EAAY,OACZ,OAAOH,EAAiCG,CAAW,EAGvD,IAAMC,EAAkBna,EAAM,KAAK,WAAW,EAE9C,GAAIma,EAAgB,OAChB,OAAOJ,EAAiCI,CAAe,CAE/D,CAAC,CACL,CAEA,SAAwBC,GAAa,CAG7BrB,GAFE,EAAShd,EAAAA,QAAAA,CAAE,MAAM,CAAC,CAAC,KAAK,MAEhB,EAGlB,CAEA,OAAO,MAAQ,OAAO,OAAS,CAAC,EAChC,OAAO,MAAM,0BAA4Bke,ECrEzC,IAAM5Q,EAAW,CACf,OAAQ,IACR,WAAY,GACd,EAGA,SAAgBgR,GAAkB,EAChC,EAAAjN,EAAA,QAAA,CAAE,QAAQ,CAAC,CAAC,GAAG,QAAS,6BAA8B,SAAU,EAAG,CACjE,EAAE,eAAe,EAEjB,IAAMkN,GAAA,EAAOte,EAAAA,QAAAA,CAAE,IAAI,EACboJ,EAAOkV,EAAK,KAAK,MAAM,EACvB7P,EAAS6P,EAAK,KAAK,QAAQ,EAC3BC,EAAOD,EAAK,KAAK,MAAM,EACvBjd,EAAUrB,EAAAA,QAAE,OAAOqN,EAAU,CAAE,SAAQ,MAAK,CAAC,EAC/ClG,EAEJ,GAAI,CACF,GAAA,EAASnH,EAAAA,QAAAA,CAAEoJ,CAAI,CACjB,OAAS,EAAG,CAAC,CAEb,GAAI,CAACjC,EACH,OAGF,IAAMiL,EAAMjL,EAAO,OAAO,CAAC,CAAC,IAE5BgL,EAASC,EAAK/Q,EAAQ,UAAU,CAAC,CAAC,KAAK,UAAY,CAC7C,OAAO,QAAQ,UACjB,OAAO,QAAQ,UAAU,GAAI,CAAC,EAAG+H,CAAI,EAErC,OAAO,SAAS,KAAOA,CAE3B,CAAC,CACH,CAAC,CACH,CCnCA,IAAMoV,EAAN,KAAe,CACb,YAAY,EAAS,CACnB,KAAK,WAAa,oBAAoB3c,EAAQ,KAAK,IAAI,IACvD,KAAK,QAAUA,EAAQ,KAAK,SAAS,EAAI,SAASA,EAAQ,KAAK,SAAS,EAAG,EAAE,EAAI,EACjF,KAAK,SAASA,CAAO,EACrB,KAAK,aAAa,CACpB,CAEA,SAAS,EAAS,CAChB,KAAK,GAAK,CACR,MAAOA,EACP,MAAOA,EAAQ,KAAK,qBAAqB,EACzC,QAAA,EAAQ5B,EAAAA,QAAAA,CAAE,MAAM,EAChB,cAAA,EAAcA,EAAAA,QAAAA,CAAE,mBAAmB,CACrC,CACF,CAEA,cAAe,CACb,KAAK,GAAG,OAAO,GAAG,WAAc,CACzB,KAAK,qBAAqB,GAC7B,KAAK,KAAK,CAEd,CAAC,EAED,KAAK,GAAG,MAAM,GAAG,YAAe,CAC9B,KAAK,MAAM,CACb,CAAC,CACH,CAEA,sBAAuB,CACrB,OAAOC,EAAQ,IAAI,KAAK,UAAU,CACpC,CAEA,YAAa,CACXkT,EAAQ,IAAI,KAAK,WAAY,OAAQ,CACnC,QAAS,KAAK,QACd,KAAM,EACR,CAAC,CACH,CAEA,MAAO,CACD,KAAK,GAAG,aAAa,GAAG,UAAU,GACpC,KAAK,GAAG,MAAM,IAAI,gBAAiB,KAAK,GAAG,aAAa,YAAY,CAAC,EAGvE,KAAK,GAAG,MAAM,OAAO,MAAM,CAC7B,CAEA,OAAQ,CACN,KAAK,GAAG,MAAM,QAAQ,WAAc,CAClC,KAAK,WAAW,CAClB,CAAC,CACH,CACF,EAEA,SAAgBqL,EAAe,EAAW,gBAAiB,EACzD,EAAArN,EAAA,QAAA,CAAEpM,CAAQ,CAAC,CAAC,MAAM,EAAG,IAAO,IAAIwZ,GAAA,EAASve,EAAAA,QAAAA,CAAE4H,CAAE,CAAC,CAAC,CACjD,CC1DA,SAAgB6W,GAAwB,CACtC,IAAM9b,GAAA,EAAOzC,EAAAA,QAAAA,CAAE,yBAAyB,EAClCwe,GAAA,EAAkBxe,EAAAA,QAAAA,CAAE,sBAAsB,EAEhDyC,EAAK,GAAG,SAAU,wBAA2BA,EAAK,OAAO,CAAC,EAE1DA,EAAK,GAAG,aAAgB,CACtB+b,EAAgB,SAAS,SAAS,CACpC,CAAC,CACH,CCXA,SAAgBC,GAAkB,CAChC,IAAMC,EAAO,OAAO,SAAS,KACzB9O,EAAU,EAAE,EAEhB,GAAI,CACF,EAAU,EAAE,GAAG8O,EAAK,WAAWA,EAAK,MAAM,CAAC,EAAE,EAAE,CACjD,OAAS,EAAG,CAAC,CAEb,IAAMC,EAAO/O,EAAQ,QAAQ,WAAW,EAExC,GAAI,CAAC+O,EAAK,OACR,OAGF,IAAMC,EAASD,EAAK,KAAK,IAAI,EAE7B,EAAE,WAAWC,EAAO,GAAG,CAAC,CAAC,IAAI,MAAM,CACrC,qBCXC,SAAS,EAAE,EAAE,CAAW,OAAO7O,GAAjB,UAAoC,OAAO/O,GAAjB,SAAwB,EAAO,QAAQ8G,EAAE,EAAc,OAAO,QAAnB,YAA2B,OAAO,IAAI,OAAO,iBAAiB,CAAC,EAAEA,CAAC,EAAY,OAAOiI,GAAjB,SAAyB,EAAQ,eAAejI,EAAE,EAAE,EAAE,eAAeA,EAAE,CAAC,EAAA,CAAE,QAAQ,UAAU,CAAC,OAAO,SAAS,EAAE,CAAC,IAAIA,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC,GAAGA,EAAEjF,GAAG,OAAOiF,EAAEjF,EAAE,CAAC,QAAQ,IAAIic,EAAE,EAAEjc,GAAG,CAAG,IAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,OAAOkc,EAAElc,EAAE,CAAC,KAAKic,EAAE,QAAQA,EAAEA,EAAE,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,EAAEA,EAAE,OAAO,CAAC,MAAO,GAAE,EAAEC,EAAE,EAAE,EAAEjX,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,EAAE,EAAEiX,EAAEjX,CAAC,GAAG,OAAO,eAAeiX,EAAEjX,EAAE,CAAC,WAAW,CAAC,EAAE,IAAIjF,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,CAAc,OAAO,OAApB,KAA4B,OAAO,aAAa,OAAO,eAAekc,EAAE,OAAO,YAAY,CAAC,MAAM,QAAQ,CAAC,EAAE,OAAO,eAAeA,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,CAA+B,GAA3B,EAAEjX,IAAI,EAAE,EAAEiX,CAAC,GAAG,EAAEjX,GAAc,EAAEA,GAAa,OAAOiX,GAAjB,UAAoBA,GAAGA,EAAE,WAAW,OAAOA,EAAE,IAAIlc,EAAE,OAAO,OAAO,IAAI,EAAE,GAAG,EAAE,EAAEA,CAAC,EAAE,OAAO,eAAeA,EAAE,UAAU,CAAC,WAAW,CAAC,EAAE,MAAMkc,CAAC,CAAC,EAAE,EAAEjX,GAAa,OAAOiX,GAAjB,SAAmB,IAAI,IAAID,KAAKC,EAAE,EAAE,EAAElc,EAAEic,EAAE,SAAS,EAAE,CAAC,OAAOC,EAAEjX,EAAE,EAAE,KAAK,KAAKgX,CAAC,CAAC,EAAE,OAAOjc,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,IAAIiF,EAAEiX,GAAGA,EAAE,WAAW,UAAU,CAAC,OAAOA,EAAE,OAAO,EAAE,UAAU,CAAC,OAAOA,CAAC,EAAE,OAAO,EAAE,EAAEjX,EAAE,IAAIA,CAAC,EAAEA,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,CAAC,OAAO,OAAO,UAAU,eAAe,KAAKiX,EAAEjX,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,EAAE,CAAc,EAAE,EAAEA,CAAC,EAAE,EAAE,EAAEA,EAAE,WAAW,UAAU,CAAC,OAAOkX,CAAC,EAAE,EAAE,IAAInc,EAAE,UAAU,CAAC,OAAO,QAAQ,UAAU,SAAS,yBAAyB,MAAM,EAAE,SAASic,EAAE,EAAE,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,EAAEhX,EAAE,OAAO,IAAI,CAAC,IAAIjF,EAAEiF,EAAE,GAAG,EAAE,WAAWjF,EAAE,YAAY,CAAC,EAAE,EAAE,aAAa,CAAC,EAAE,UAAUA,IAAI,EAAE,SAAS,CAAC,GAAG,OAAO,eAAekc,EAAElc,EAAE,IAAIA,CAAC,CAAC,CAAC,CAAC,IAAIoc,EAAE,IAAI,UAAU,CAAC,SAASF,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,GAAG,EAAEA,aAAajX,GAAG,MAAU,UAAU,mCAAmC,CAAC,EAAA,CAAE,KAAKiX,CAAC,EAAE,KAAK,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,IAAIjX,EAAeiX,EAAb,EAAElc,EAAE,OAAY,EAAE,CAAC,CAAC,IAAI,iBAAiB,MAAM,SAAS,EAAE,CAAC,MAAO,MAAK,UAAU,IAAIkc,EAAEA,EAAE,UAAU,OAAO,YAAY,KAAK,SAAS,CAAC,EAAE,CAAC,IAAI,oBAAoB,MAAM,UAAU,CAAC,MAAO,MAAK,UAAU,OAAO,KAAK,UAAU,IAAI,KAAK,UAAU,OAAO,KAAK,SAAS,CAAC,EAAE,CAAC,IAAI,iBAAiB,MAAM,SAAS,EAAE,CAAC,MAAO,MAAK,UAAU,IAAIA,EAAEA,EAAE,UAAU,OAAO,YAAY,KAAK,UAAU,OAAOA,EAAEA,EAAE,aAAa,SAAS,gBAAgB,aAAa,KAAK,UAAU,OAAO,KAAK,UAAU,IAAI,KAAK,UAAU,OAAO,KAAK,SAAS,CAAC,CAAC,IAAID,EAAEhX,EAAE,UAAU,CAAC,EAAEjF,GAAGic,EAAEhX,EAAEjF,CAAC,EAAEkc,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,OAAO,SAAS,UAAU,cAAcA,CAAC,GAAG,eAAe,UAAU,cAAcA,CAAC,EAAE,MAAM,KAAKA,CAAC,EAAY,OAAOA,GAAjB,UAAoBA,aAAa,OAAO,SAAS,iBAAiBA,CAAC,EAAE,CAACA,CAAC,CAAC,EAAExc,EAAE,UAAU,CAAC,IAAI,IAAIwc,EAAEjX,EAAE,gEAAgE,MAAM,GAAG,EAAE,EAAE,EAAWiX,IAAT,IAAK,IAAO,EAAW,SAAS,cAAc,KAAK,CAAC,CAAC,MAAMjX,EAAE,MAA/C,IAAK,GAAmD,IAAK,GAAVA,EAAE,GAAU,GAAG,EAAE,OAAOiX,CAAC,EAAE,EAAEG,EAAE,SAAS,EAAE,CAAC,OAAcH,EAAE,QAAQ,YAAY,IAA9B,OAA6CA,EAAE,QAAQ,YAAY,IAAlC,WAAqC,CAAC,CAACA,GAAI,CAAC,CAACA,EAAE,WAAoBA,EAAE,eAAX,IAAK,IAAwBA,EAAE,eAAN,EAAoB,EAAE,SAASI,EAAE,EAAE,CAAC,OAAO,SAAS,EAAE,CAAC,GAAG,MAAM,QAAQJ,CAAC,EAAE,OAAOK,EAAEL,CAAC,CAAC,EAAEA,CAAC,GAAG,SAAS,EAAE,CAAC,GAAgB,OAAO,OAApB,KAA4B,OAAO,YAAY,OAAOA,CAAC,EAAE,OAAO,MAAM,KAAKA,CAAC,CAAC,EAAEA,CAAC,GAAG,SAAS,EAAE,EAAE,CAAC,GAAIA,EAAS,IAAa,OAAOA,GAAjB,SAAmB,OAAOK,EAAEL,EAAEjX,CAAC,EAAE,IAAI,EAAE,OAAO,UAAU,SAAS,KAAKiX,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,EAAsD,GAAzC,IAAX,UAAcA,EAAE,cAAc,EAAEA,EAAE,YAAY,MAAiB,IAAR,OAAmB,IAAR,MAAU,OAAO,MAAM,KAAKA,CAAC,EAAE,GAAiB,IAAd,aAAiB,2CAA2C,KAAK,CAAC,EAAE,OAAOK,EAAEL,EAAEjX,CAAC,CAA1O,CAA2O,EAAEiX,CAAC,GAAG,UAAU,CAAC,MAAU,UAAU;mFAAsI,CAAC,EAAE,CAAC,CAAC,SAASK,EAAE,EAAE,EAAE,EAAQtX,GAAN,MAASA,EAAEiX,EAAE,UAAU,EAAEA,EAAE,QAAQ,IAAI,IAAI,EAAE,EAAElc,EAAM,MAAMiF,CAAC,EAAE,EAAEA,EAAE,IAAI,EAAE,GAAGiX,EAAE,GAAG,OAAOlc,CAAC,CAAC,SAASwc,EAAE,EAAE,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,EAAEvX,EAAE,OAAO,IAAI,CAAC,IAAIjF,EAAEiF,EAAE,GAAG,EAAE,WAAWjF,EAAE,YAAY,CAAC,EAAE,EAAE,aAAa,CAAC,EAAE,UAAUA,IAAI,EAAE,SAAS,CAAC,GAAG,OAAO,eAAekc,EAAElc,EAAE,IAAIA,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,SAASkc,EAAE,EAAE,EAAE,CAAC,IAAIlc,EAAE,MAAM,SAAS,EAAE,EAAE,CAAC,GAAG,EAAEkc,aAAajX,GAAG,MAAU,UAAU,mCAAmC,CAAC,EAAA,CAAE,KAAKiX,CAAC,EAAE,KAAK,QAAQjX,EAAE,KAAK,iBAAiBA,EAAE,KAAK,SAAS,EAAE,KAAK,UAAU,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,KAAK,kBAAkB,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,EAAE,KAAK,cAAc,KAAK,SAAS,eAAe,KAAK,QAAQ,QAAQ,KAAK,SAAS,aAAa,EAAE,KAAK,QAAQ,QAAQ,KAAK,SAAS,aAAa,EAAE,KAAKoX,EAAEpX,CAAC,EAAE,KAAK,KAAK,EAAE,KAAK,QAAQ,iBAAiB,QAAQ,UAAU,CAAC,YAAY,UAAU,CAACjF,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,IAAIiF,EAAeiX,EAAb,EAAElc,EAAE,OAAY,EAAE,CAAC,CAAC,IAAI,OAAO,MAAM,SAAS,EAAE,CAAC,IAAIiF,EAAE,KAAK,KAAK,SAASiX,IAAI,KAAK,SAAS,MAAM,KAAK,QAAQ,QAAQ,iBAAiB,IAAI,CAAC,IAAI,KAAK,SAAS,UAAU,KAAK,YAAY,KAAK,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,iBAAiB,EAAE,KAAK,qBAAqB,EAAE,KAAK,kBAAkB,EAAE,KAAK,QAAQ,EAAE,KAAK,SAAS,MAAM,EAAE,YAAY,UAAU,CAACjX,EAAE,iBAAiB,EAAEA,EAAE,iBAAiB,UAAU,IAAI,6BAA6B,CAAC,GAAG,EAAE,EAAE,KAAK,iBAAiB,UAAU,IAAI,6BAA6B,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,cAAc,MAAM,UAAU,CAAC,IAAIiX,EAAE,KAAK,QAAQ,QAAQ,SAAS,GAAG,KAAK,QAAQjX,EAAE,KAAK,eAAe,SAAS,cAAc,KAAK,EAAEA,EAAE,UAAU,IAAI,gBAAgB,EAAE,EAAE,MAAM,SAAS,SAAS,KAAK,gBAAgBiX,EAAE,WAAW,aAAajX,EAAEiX,CAAC,EAAEjX,EAAE,YAAYiX,CAAC,GAAG,KAAK,iBAAiBjX,CAAC,CAAC,EAAE,CAAC,IAAI,gBAAgB,MAAM,UAAU,CAAC,IAAIiX,EAAE,KAAK,iBAAiB,KAAK,eAAeA,EAAE,UAAU,OAAO,gBAAgB,EAAE,EAAE,MAAM,SAAS,IAAIA,EAAE,YAAY,MAAMA,EAAEI,EAAEJ,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,kBAAkB,MAAM,UAAU,CAAC,CAAC,IAAI,KAAK,SAAS,WAAW,KAAK,QAAQ,MAAMxc,GAAG,SAAgB,KAAK,SAAS,UAAY,KAAK,QAAQ,MAAM,WAAW,WAAW,CAAC,EAAE,CAAC,IAAI,mBAAmB,MAAM,UAAU,CAAC,KAAK,QAAQ,MAAM,WAAW,aAAoB,KAAK,SAAS,UAAmB,KAAK,SAAS,YAAW,CAAC,EAAE,CAAC,IAAI,aAAa,MAAM,UAAU,CAAC,KAAK,QAAQ,MAAM,WAAW,GAAG,KAAK,QAAQ,MAAMA,GAAG,GAAG,KAAK,QAAQ,MAAM,WAAW,EAAE,CAAC,EAAE,CAAC,IAAI,mBAAmB,MAAM,UAAU,CAAC,IAAIwc,EAAE,KAAK,iBAAiB,sBAAsB,EAAE,GAAG,KAAK,cAAcA,EAAE,OAAO,KAAK,WAAWA,EAAE,IAAIE,EAAE,UAAU,IAAI,KAAK,SAAS,gBAAgB,CAAC,IAAInX,EAAE,KAAK,SAAS,gBAAgB,sBAAsB,EAAE,KAAK,WAAWiX,EAAE,IAAIjX,EAAE,IAAImX,EAAE,UAAU,GAAG,CAAC,KAAK,cAAc,KAAK,cAAc,KAAK,UAAU,CAAC,EAAE,CAAC,IAAI,qBAAqB,MAAM,UAAU,CAAC,IAAI,IAAIF,EAAE,CAAC,EAAEjX,EAAE,EAAEA,GAAG,KAAK,cAAc,IAAI,CAAC,IAAI,EAAEA,EAAE,KAAK,cAAciX,EAAE,KAAK,CAAC,CAAC,CAAC,OAAOA,CAAC,CAAC,EAAE,CAAC,IAAI,uBAAuB,MAAM,UAAU,CAAC,IAAIA,EAAE,CAAC,KAAK,KAAK,UAAU,KAAK,mBAAmB,CAAC,EAAE,KAAK,SAAS,IAAI,qBAAqB,KAAK,6BAA6B,KAAK,IAAI,EAAEA,CAAC,EAAE,KAAK,SAAS,QAAQ,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,+BAA+B,MAAM,SAAS,EAAE,CAAC,IAAIjX,EAAE,KAAKiX,EAAE,SAAS,SAAS,EAAE,CAAC,AAAgCjX,EAAE,UAAlC,IAAE,cAA4C,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,iBAAiB,MAAM,UAAU,CAAC,OAAO,KAAK,cAAcmX,EAAE,UAAU,KAAK,KAAK,WAAWA,EAAE,UAAU,MAAM,CAAC,EAAE,CAAC,IAAI,cAAc,MAAM,UAAU,CAAC,IAAIF,EAAE,KAAK,QAAQ,aAAa,KAAK,SAASA,EAAE,KAAK,SAAS,MAAMA,CAAC,CAAC,EAAE,CAAC,IAAI,oBAAoB,MAAM,UAAU,CAAC,IAAIA,IAAIE,EAAE,UAAU,OAAO,KAAK,cAAcA,EAAE,UAAU,OAAO,KAAK,eAAe,KAAA,CAAM,QAAQ,CAAC,EAAE,MAAO,GAAE,KAAK,IAAI,IAAI,KAAK,IAAI,EAAEF,CAAC,CAAC,EAAM,KAAK,SAAS,gBAAlB,GAAiCA,EAAE,KAAK,SAAS,gBAAgB,EAAE,KAAK,SAAS,eAAe,KAAK,gBAAgBA,IAAI,KAAK,UAAU,KAAK,YAAY,EAAE,KAAK,gBAAgBA,EAAE,IAAI,KAAK,SAAS,KAAK,SAAS,EAAA,CAAG,QAAQ,CAAC,EAAE,KAAK,oBAAoB,KAAK,iBAAiB,KAAK,cAAcA,EAAE,KAAK,kBAAkB,KAAK,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,UAAU,MAAM,UAAU,CAAC,IAAIA,EAAEjX,EAAE,EAAE,EAAE,GAAG,KAAK,SAAS,YAAY,SAAS,MAAM,GAAG,KAAK,SAAS,YAAY,SAAS,OAAO,KAAK,EAAE,GAAU,KAAK,SAAS,YAAY,SAAS,MAAM,EAAE,GAAG,KAAK,eAAe,KAAK,qBAAuB,KAAK,SAAS,YAAY,SAAS,IAAI,GAAG,KAAK,SAAS,YAAY,SAAS,MAAM,KAAK,EAAE,GAAU,KAAK,SAAS,YAAY,SAAS,IAAI,EAAE,GAAG,KAAK,eAAe,KAAK,oBAAsB,EAAE,CAAC,IAAI,KAAK,SAAS,SAAS,eAAsB,MAAeA,eAAwB,KAAK,SAAS,SAAW,eAAsB,MAAeA,QAAU,KAAK,QAAQ,MAAMvF,GAAGwc,CAAC,CAAC,CAAC,IAAIM,EAAEvX,EAAE,UAAU,CAAC,EAAEjF,GAAGwc,EAAEvX,EAAEjF,CAAC,EAAEkc,CAAC,EAAE,EAAE,SAAS1Z,EAAE,EAAE,CAAC,OAAO,SAAS,EAAE,CAAC,GAAG,MAAM,QAAQ0Z,CAAC,EAAE,OAAOO,EAAEP,CAAC,CAAC,EAAEA,CAAC,GAAG,SAAS,EAAE,CAAC,GAAgB,OAAO,OAApB,KAA4B,OAAO,YAAY,OAAOA,CAAC,EAAE,OAAO,MAAM,KAAKA,CAAC,CAAC,EAAEA,CAAC,GAAGvC,EAAEuC,CAAC,GAAG,UAAU,CAAC,MAAU,UAAU;mFAAsI,CAAC,EAAE,CAAC,CAAC,SAAS9H,EAAE,EAAE,EAAE,CAAC,OAAO,SAAS,EAAE,CAAC,GAAG,MAAM,QAAQ8H,CAAC,EAAE,OAAOA,CAAC,EAAEA,CAAC,GAAG,SAAS,EAAE,EAAE,CAAC,GAAgB,OAAO,OAApB,KAA8B,OAAO,YAAY,OAAOA,CAAC,EAAU,KAAI,EAAE,CAAC,EAAElc,EAAE,CAAC,EAAEic,EAAE,CAAC,EAAEG,EAAE,IAAK,GAAE,GAAG,CAAC,IAAI,IAAI,EAAE1c,EAAEwc,EAAE,OAAO,SAAS,CAAC,EAAE,EAAE,GAAG,EAAExc,EAAE,KAAK,EAAA,CAAG,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,CAACuF,GAAG,EAAE,SAASA,GAAG,EAAE,CAAC,GAAG,OAAOiX,EAAE,CAAC,EAAE,CAAC,EAAE,EAAEA,CAAC,QAAQ,CAAC,GAAG,CAAClc,GAASN,EAAE,QAAR,MAAgBA,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAGuc,EAAE,MAAMG,CAAC,CAAC,CAAC,OAAO,CAAlM,CAAmM,EAAEF,EAAEjX,CAAC,GAAG0U,EAAEuC,EAAEjX,CAAC,GAAG,UAAU,CAAC,MAAU,UAAU;mFAA2I,CAAC,EAAE,CAAC,CAAC,SAAS0U,EAAE,EAAE,EAAE,CAAC,GAAGuC,EAAE,CAAC,GAAa,OAAOA,GAAjB,SAAmB,OAAOO,EAAEP,EAAEjX,CAAC,EAAE,IAAI,EAAE,OAAO,UAAU,SAAS,KAAKiX,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,OAAiB,IAAX,UAAcA,EAAE,cAAc,EAAEA,EAAE,YAAY,MAAc,IAAR,OAAmB,IAAR,MAAU,MAAM,KAAKA,CAAC,EAAgB,IAAd,aAAiB,2CAA2C,KAAK,CAAC,EAAEO,EAAEP,EAAEjX,CAAC,EAAE,IAAK,EAAC,CAAC,CAAC,SAASwX,EAAE,EAAE,EAAE,EAAQxX,GAAN,MAASA,EAAEiX,EAAE,UAAU,EAAEA,EAAE,QAAQ,IAAI,IAAI,EAAE,EAAElc,EAAM,MAAMiF,CAAC,EAAE,EAAEA,EAAE,IAAI,EAAE,GAAGiX,EAAE,GAAG,OAAOlc,CAAC,CAAC,SAASc,EAAE,EAAE,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,EAAEmE,EAAE,OAAO,IAAI,CAAC,IAAIjF,EAAEiF,EAAE,GAAG,EAAE,WAAWjF,EAAE,YAAY,CAAC,EAAE,EAAE,aAAa,CAAC,EAAE,UAAUA,IAAI,EAAE,SAAS,CAAC,GAAG,OAAO,eAAekc,EAAElc,EAAE,IAAIA,CAAC,CAAC,CAAC,CAAC,IAAI0c,EAAEC,EAAEC,EAAE,CAAC,EAAEC,EAAE,CAAC,EAAEV,EAAE,UAAU,CAAC,SAASD,EAAE,EAAE,EAAE,CAAC,GAAG,SAAS,EAAE,EAAE,CAAC,GAAG,EAAEA,aAAajX,GAAG,MAAU,UAAU,mCAAmC,CAAC,EAAE,KAAKiX,CAAC,EAAEjX,GAAGjF,EAAE,EAAE,CAAC,GAAG,KAAK,SAAS,EAAEiF,CAAC,EAAE,KAAK,SAAS,CAAC,MAAM,EAAE,YAAY,KAAK,MAAM,IAAI,SAAS,CAAC,EAAE,WAAW,wBAAwB,gBAAgB,GAAG,cAAc,GAAG,cAAc,CAAC,EAAE,KAAK,SAAS,OAAO,OAAO,KAAK,SAAS,CAAC,EAAE,KAAK,SAAS,gBAAgB,CAAC,IAAIgX,EAAE7H,EAAE,EAAE,KAAK,SAAS,eAAe,EAAE,CAAC,EAAE,KAAK,gBAAgB6H,EAAE,EAAE,CAAC,KAAK,aAAa,GAAG,KAAK,aAAa,KAAK,aAAa,KAAK,IAAI,EAAE,KAAK,QAAQ,KAAK,QAAQ,KAAK,IAAI,EAAE,KAAK,6BAA6B,KAAK,6BAA6B,KAAK,IAAI,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,IAAIhX,EAAeiX,EAAb,EAAED,EAAE,OAAY,EAAE,CAAC,CAAC,IAAI,OAAO,MAAM,UAAU,CAAC,IAAIC,EAAE,KAAKE,EAAE,eAAe,KAAK,eAAe,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO5Z,EAAE,KAAK,SAAS,KAAK,SAAS,EAAE,CAAC,OAAO,IAAI,EAAEyC,EAAEiX,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE1Z,EAAEqa,CAAC,CAAC,EAAED,IAAI,KAAK,6BAA6B,EAAE,OAAO,iBAAiB,SAAS,KAAK,YAAY,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,eAAe,MAAM,UAAU,CAAC,aAAaD,CAAC,EAAE,EAAE,WAAW,KAAK,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,+BAA+B,MAAM,UAAU,CAAC,IAAIT,EAAE,KAAKE,EAAE,eAAe,KAAK,eAAe,EAAE,KAAK,eAAeA,EAAE,UAAU,IAA8K,EAAE,OAAO,sBAAsB,KAAK,4BAA4B,GAAzOA,EAAE,kBAAkB,EAAES,EAAE,SAAS,SAAS,EAAE,CAACX,EAAE,eAAejX,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,sBAAsB,KAAK,4BAA4B,EAAE,KAAK,aAAamX,EAAE,UAAU,IAAsE,CAAC,EAAE,CAAC,IAAI,iBAAiB,MAAM,SAAS,EAAE,EAAE,KAAK,gBAAgBF,EAAE,eAAe,EAAEA,EAAE,YAAYA,EAAE,kBAAkB,GAAGA,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,UAAU,MAAM,UAAU,CAACE,EAAE,eAAe,KAAK,eAAe,EAAES,EAAE,SAAS,SAAS,EAAE,CAACX,EAAE,iBAAiB,EAAEA,EAAE,YAAY,CAAC,EAAE,EAAE,KAAK,aAAa,EAAE,CAAC,EAAE,CAAC,IAAI,UAAU,MAAM,UAAU,CAAC,IAAIA,EAAE,KAAKjX,EAAE,CAAC,EAAE,EAAE4X,EAAE,QAAQ,SAAS,EAAE,CAAC,OAAOX,EAAE,SAAS,SAAS,EAAE,OAAO,GAAGjX,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAEA,EAAE,SAAS,SAAS,EAAE,CAACA,EAAE,WAAW,EAAE,CAAC,IAAIiX,EAAE,SAAS,UAAUjX,EAAE,cAAc,CAAC,EAAE,EAAE4X,EAAE,SAAS,OAAO,qBAAqBH,CAAC,EAAE,OAAO,oBAAoB,SAAS,KAAK,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI5b,EAAEmE,EAAE,UAAU,CAAC,EAAEgX,GAAGnb,EAAEmE,EAAEgX,CAAC,EAAEC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,QCJxwW,SAASY,GAAkB,CACzB,IAAMC,EAAmB,SAAS,iBAAiB,iBAAiB,EACpE,IAAI3f,EAAAA,QAAe2f,EAAkB,CACnC,MAAO,GACT,CAAC,CACH,CAEA,SAAgBC,GAAe,CAC7BF,EAAgB,CAClB,CCcA,OAAO,OAASzf,EAChB,OAAO,EAAIC,EACX,OAAO,OAASA,EAChB,OAAO,KAAOU,EAEdX,EAAO,MAAM,EAEbC,MAAQ,CACNwR,EAAe,EACfH,EAAgB,EAChBjR,EAAmB,EACnBG,EAAkB,EAClBF,EAAiB,EACjBG,EAAgB,EAChBF,EAAoB,EACpB0R,EAAS,EACTmM,EAAe,EACfpL,EAAiB,EACjBnB,EAAe,EACfwM,EAAsB,EACtBL,EAAgB,EAChBD,EAAe,EACf4B,EAAa,EAEb/e,EAAE,MAAM,CAAC,CACN,GAAG,iBAAoB,CACtB2d,EAAgB,CAClB,CAAC,CAAC,CACD,QAAQ,YAAY,CACzB,CAAC,EAKDte,EAAE,uDAAuD,CAAC,CAAC,MAAM,SAAU,EAAG,CAC5E,IAAMuH,EAAKvH,EAAE,IAAI,EAEX2f,EADYpY,EAAG,QAAQ,YACR,CAAC,CAAC,KAAK,eAAe,EAEvCA,EAAG,SAAS,WAAW,GACzBA,EAAG,YAAY,WAAW,EAC1BoY,EAAK,SAAS,UAAU,IAExBpY,EAAG,SAAS,WAAW,EACvBoY,EAAK,YAAY,UAAU,EAE/B,CAAC,EAKD,IAAMC,EAAM5f,EAAE,cAAc,EAE5BA,EAAE,MAAM,CAAC,CAAC,OAAO,UAAY,CACvBA,EAAE,MAAM,CAAC,CAAC,UAAU,EAAI,IAC1B4f,EAAI,SAAS,MAAM,EAEnBA,EAAI,YAAY,MAAM,CAE1B,CAAC,EAEDA,EAAI,GAAG,QAAS,SAAU,EAAG,CAC3B,EAAE,eAAe,EACjBjf,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAE,UAAW,CAAE,EAAG,KAAK,CACjD,CAAC,EAKD,OAAO,UAAY,UAAY,CAC7B,IAAMkf,EAAc,GAAG,OAAO,SAAS,SAAS,OAChD,GAAM,OAAO,IACX,OAAO,SAAS,KAAOA,MAClB,CACL,IAAMC,EAAY,mBAAmBD,CAAW,EAChD,OAAO,SAAS,KAAO,kCAAkCC,GAC3D,CACF,EAKA,OAAO,iBAAiB,UAAW,SAAU,EAAO,OAClD,GAAI7e,EAAM,SAAW,4BACrB,EAAIA,EAAM,OAAA,KAAA,IAAA,GAAA8e,EAAM,QAAS,iBAAmB9e,EAAM,KAAK,SAAU,CAC/D,QAAQ,MAAM,kBAAmBA,EAAM,IAAI,EAC3C,IAAM+e,EAAS,SAAS,eAAe,eAAe/e,EAAM,KAAK,UAAU,EACvE+e,EACF,EAAO,MAAM,OAAS/e,EAAM,KAAK,OAAS,KAE1C,QAAQ,MAAM,6CAA6CA,EAAM,KAAK,UAAU,CAEpF,CACF,CAAC"}