{"version":3,"sources":["pointer_events_polyfill.js","jquery.validate.js","jquery.validate.unobtrusive.js","jquery.unobtrusive-ajax.js","lightwidget.js","site.js"],"names":["PointerEventsPolyfill","options","this","selector","mouseEvents","usePolyfillIf","navigator","appName","userAgent","match","parseFloat","RegExp","$1","obj","$","each","k","v","register_mouse_events","initialize","singleton","prototype","document","on","join","e","css","origDisplayAttribute","underneathElem","elementFromPoint","clientX","clientY","target","trigger","factory","define","amd","module","exports","require","jQuery","called","extend","fn","validate","length","validator","data","attr","settings","onsubmit","event","submitButton","currentTarget","hasClass","cancelSubmit","undefined","handle","hidden","result","submitHandler","formSubmitted","name","val","appendTo","currentForm","debug","call","remove","preventDefault","form","pendingRequest","focusInvalid","window","console","warn","valid","errorList","is","element","concat","rules","command","argument","staticRules","existingRules","param","filtered","isContentEditable","closest","normalizeRule","messages","split","index","method","normalizeRules","classRules","attributeRules","dataRules","required","remote","expr","pseudos","blank","a","trim","filled","unchecked","prop","defaults","init","format","source","params","arguments","args","makeArray","unshift","apply","constructor","Array","slice","i","n","replace","groups","errorClass","pendingClass","validClass","errorElement","focusCleanup","errorContainer","errorLabelContainer","ignore","ignoreTitle","onfocusin","lastActive","unhighlight","hideThese","errorsFor","onfocusout","checkable","submitted","optional","onkeyup","which","elementValue","inArray","keyCode","invalid","onclick","parentNode","highlight","type","findByName","addClass","removeClass","setDefaults","email","url","date","dateISO","number","digits","equalTo","maxlength","minlength","rangelength","range","max","min","step","autoCreateRanges","labelContainer","errorContext","containers","add","valueCache","pending","reset","delegate","eventType","key","value","invalidHandler","checkForm","errorMap","triggerHandler","showErrors","prepareForm","elements","currentElements","check","rs","group","cleanElement","clean","checkElement","validationTargetFor","prepareElement","testgroup","push","numberOfInvalids","toHide","errors","map","message","successList","grep","defaultShowErrors","resetForm","hideErrors","removeData","removeAttr","resetElements","objectLength","count","not","text","addWrapper","hide","size","findLastActive","filter","focus","rulesCache","find","error","resetInternals","toShow","idx","$element","validity","badInput","substr","lastIndexOf","rule","normalizer","rulesCount","dependencyMismatch","parameters","methods","formatAndAdd","log","id","TypeError","customDataMessage","charAt","toUpperCase","substring","toLowerCase","customMessage","m","String","findDefined","defaultMessage","title","theregex","test","toToggle","wrapper","parent","showLabel","success","validElements","show","invalidElements","place","errorID","elementID","idOrName","describedBy","html","wrap","append","errorPlacement","insertAfter","parents","escapeCssMeta","describer","string","getLength","nodeName","depend","dependTypes","boolean","function","startRequest","stopRequest","submit","previousValue","old","destroy","off","classRuleSettings","creditcard","addClassRules","className","classes","normalizeAttributeRule","Number","isNaN","getAttribute","depends","keepRule","parameter","isFunction","parts","isArray","transformed","addMethod","Date","toString","decimalPlaces","num","toInt","Math","round","pow","decimals","errorMessage","re","Error","optionDataString","previous","originalMessage","ajax","mode","port","dataType","context","response","pendingRequests","ajaxPrefilter","_","xhr","abort","ajaxSettings","unobtrusive","adapters","$jQval","data_validation","setValidationValues","ruleName","escapeAttributeValue","getModelPrefix","fieldName","appendModelPrefix","prefix","indexOf","onReset","$form","validationInfo","execInContext","func","defaultOptions","onResetProxy","proxy","inputElement","container","replaceAttrValue","parseJSON","empty","list","attachValidation","parseElement","skipAttach","valInfo","paramValues","adapt","__dummy__","parse","$selector","$forms","addBack","has","info","adapterName","addBool","addMinMax","minRuleName","maxRuleName","minMaxRuleName","minAttribute","maxAttribute","addSingleVal","attribute","exec","nonalphamin","extension","fullOtherName","other","tagName","splitAndTrim","additionalfields","paramName","field","regex","extensions","data_click","data_target","getFunction","code","argNames","shift","Function","isMethodProxySafe","asyncRequest","confirm","loading","duration","parseInt","cache","beforeSend","setRequestHeader","asyncOnBeforeSend","complete","status","contentType","update","prepend","replaceWith","asyncOnSuccess","getResponseHeader","formdata","FormData","file","files","processData","evt","href","offset","pageX","left","pageY","top","setTimeout","clickInfo","clickTarget","isCancel","action","serializeArray","t","hasOwnProperty","addEventListener","origin","JSON","widgetId","forEach","querySelectorAll","style","height","lightwidget","SignUpModal","NewsletterSignupBegin","NewsletterSignupComplete","responseJSON","vouchercode","get","modal","EmailAddress","popover","sessionStorage","getItem","setItem","Modernizr","last_known_scroll_position","ticking","scrollTop","requestAnimationFrame","scroll_pos","first","resizeHeader","lastTime","vendors","x","cancelAnimationFrame","callback","currTime","getTime","timeToCall","clearTimeout","u","o","_config","classPrefix","A","baseVal","enableJSClass","enableClasses","s","c","Boolean","_trigger","r","l","f","_version","usePrefixes","_q","addTest","addAsyncTest","documentElement","_l","Image","onerror","onload","width","src","aliases","p"],"mappings":"AAOA,SAAAA,sBAAAC,GAoBA,GAlBAC,KAAAD,QAAA,CACAE,SAAA,IACAC,YAAA,CAAA,QAAA,WAAA,YAAA,WACAC,cAAA,WACA,GAAA,+BAAAC,UAAAC,UAIA,MADAD,UAAAE,UACAC,MAAA,gCACAC,WAAAC,OAAAC,IACA,IACA,OAAA,EAIA,OAAA,IAGAX,EAAA,CACA,IAAAY,EAAAX,KACAY,EAAAC,KAAAd,EAAA,SAAAe,EAAAC,GACAJ,EAAAZ,QAAAe,GAAAC,IAIAf,KAAAD,QAAAI,iBACAH,KAAAgB,wBAWAlB,sBAAAmB,WAAA,SAAAlB,GAKA,OAHA,MAAAD,sBAAAoB,YACApB,sBAAAoB,UAAA,IAAApB,sBAAAC,IAEAD,sBAAAoB,WAOApB,sBAAAqB,UAAAH,sBAAA,WAEAJ,EAAAQ,UAAAC,GACArB,KAAAD,QAAAG,YAAAoB,KAAA,KACAtB,KAAAD,QAAAE,SACA,SAAAsB,GACA,GAAA,QAAAX,EAAAZ,MAAAwB,IAAA,kBAqBA,OAAA,EAnBA,IAAAC,EAAAb,EAAAZ,MAAAwB,IAAA,WACAZ,EAAAZ,MAAAwB,IAAA,UAAA,QAEA,IAAAE,EAAAN,SAAAO,iBACAJ,EAAAK,QACAL,EAAAM,SAYA,OAVAJ,EACAb,EAAAZ,MACAwB,IAAA,UAAAC,GAEAb,EAAAZ,MAAAwB,IAAA,UAAA,IAGAD,EAAAO,OAAAJ,EACAd,EAAAc,GAAAK,QAAAR,IAEA,KC3EA,SAAAS,GACA,mBAAAC,QAAAA,OAAAC,IACAD,OAAA,CAAA,UAAAD,GACA,iBAAAG,QAAAA,OAAAC,QACAD,OAAAC,QAAAJ,EAAAK,QAAA,WAEAL,EAAAM,QANA,CAQA,SAAA1B,GAq4CA,IACA2B,EAp4CA3B,EAAA4B,OAAA5B,EAAA6B,GAAA,CAGAC,SAAA,SAAA3C,GAGA,GAAAC,KAAA2C,OAAA,CAQA,IAAAC,EAAAhC,EAAAiC,KAAA7C,KAAA,GAAA,aACA,OAAA4C,IAKA5C,KAAA8C,KAAA,aAAA,cAEAF,EAAA,IAAAhC,EAAAgC,UAAA7C,EAAAC,KAAA,IACAY,EAAAiC,KAAA7C,KAAA,GAAA,YAAA4C,GAEAA,EAAAG,SAAAC,WAEAhD,KAAAqB,GAAA,iBAAA,UAAA,SAAA4B,GAIAL,EAAAM,aAAAD,EAAAE,cAGAvC,EAAAZ,MAAAoD,SAAA,YACAR,EAAAS,cAAA,QAIAC,IAAA1C,EAAAZ,MAAA8C,KAAA,oBACAF,EAAAS,cAAA,KAKArD,KAAAqB,GAAA,kBAAA,SAAA4B,GAOA,SAAAM,IACA,IAAAC,EAAAC,EAcA,OAPAb,EAAAM,eAAAN,EAAAG,SAAAW,eAAAd,EAAAe,iBACAH,EAAA5C,EAAA,0BACAkC,KAAA,OAAAF,EAAAM,aAAAU,MACAC,IAAAjD,EAAAgC,EAAAM,cAAAW,OACAC,SAAAlB,EAAAmB,gBAGAnB,EAAAG,SAAAW,gBAAAd,EAAAG,SAAAiB,SACAP,EAAAb,EAAAG,SAAAW,cAAAO,KAAArB,EAAAA,EAAAmB,YAAAd,GACAO,GAGAA,EAAAU,cAEAZ,IAAAG,GACAA,GAQA,OArCAb,EAAAG,SAAAiB,OAGAf,EAAAkB,iBAkCAvB,EAAAS,cACAT,EAAAS,cAAA,EACAE,KAEAX,EAAAwB,OACAxB,EAAAyB,iBACAzB,EAAAe,eAAA,GAGAJ,KAEAX,EAAA0B,gBACA,MAKA1B,GA7FA7C,GAAAA,EAAAiE,OAAAO,OAAAC,SACAA,QAAAC,KAAA,yDAgGAC,MAAA,WACA,IAAAA,EAAA9B,EAAA+B,EAgBA,OAdA/D,EAAAZ,KAAA,IAAA4E,GAAA,QACAF,EAAA1E,KAAA0C,WAAA0B,QAEAO,EAAA,GACAD,GAAA,EACA9B,EAAAhC,EAAAZ,KAAA,GAAAoE,MAAA1B,WACA1C,KAAAa,KAAA,YACA6D,EAAA9B,EAAAiC,QAAA7E,OAAA0E,KAEAC,EAAAA,EAAAG,OAAAlC,EAAA+B,cAGA/B,EAAA+B,UAAAA,GAEAD,GAIAK,MAAA,SAAAC,EAAAC,GACA,IAEAlC,EAAAmC,EAAAC,EAAAtC,EAAAuC,EAAAC,EAFAR,EAAA7E,KAAA,GACAsF,OAAA,IAAAtF,KAAA8C,KAAA,oBAAA,UAAA9C,KAAA8C,KAAA,mBAIA,GAAA,MAAA+B,KAIAA,EAAAT,MAAAkB,IACAT,EAAAT,KAAApE,KAAAuF,QAAA,QAAA,GACAV,EAAAjB,KAAA5D,KAAA8C,KAAA,SAGA,MAAA+B,EAAAT,MAAA,CAIA,GAAAY,EAIA,OAFAE,GADAnC,EAAAnC,EAAAiC,KAAAgC,EAAAT,KAAA,aAAArB,UACAgC,MACAI,EAAAvE,EAAAgC,UAAAsC,YAAAL,GACAG,GACA,IAAA,MACApE,EAAA4B,OAAA2C,EAAAvE,EAAAgC,UAAA4C,cAAAP,WAGAE,EAAAM,SACAP,EAAAL,EAAAjB,MAAAuB,EACAF,EAAAQ,WACA1C,EAAA0C,SAAAZ,EAAAjB,MAAAhD,EAAA4B,OAAAO,EAAA0C,SAAAZ,EAAAjB,MAAAqB,EAAAQ,WAEA,MACA,IAAA,SACA,OAAAR,GAIAI,EAAA,GACAzE,EAAAC,KAAAoE,EAAAS,MAAA,MAAA,SAAAC,EAAAC,GACAP,EAAAO,GAAAT,EAAAS,UACAT,EAAAS,KAEAP,WARAH,EAAAL,EAAAjB,MACAuB,GAkCA,OAvBAtC,EAAAjC,EAAAgC,UAAAiD,eACAjF,EAAA4B,OACA,GACA5B,EAAAgC,UAAAkD,WAAAjB,GACAjE,EAAAgC,UAAAmD,eAAAlB,GACAjE,EAAAgC,UAAAoD,UAAAnB,GACAjE,EAAAgC,UAAAsC,YAAAL,IACAA,IAGAoB,WACAb,EAAAvC,EAAAoD,gBACApD,EAAAoD,SACApD,EAAAjC,EAAA4B,OAAA,CAAAyD,SAAAb,GAAAvC,IAIAA,EAAAqD,SACAd,EAAAvC,EAAAqD,cACArD,EAAAqD,OACArD,EAAAjC,EAAA4B,OAAAK,EAAA,CAAAqD,OAAAd,KAGAvC,MAKAjC,EAAA4B,OAAA5B,EAAAuF,KAAAC,SAAAxF,EAAAuF,KAAA,KAAA,CAGAE,MAAA,SAAAC,GACA,OAAA1F,EAAA2F,KAAA,GAAA3F,EAAA0F,GAAAzC,QAIA2C,OAAA,SAAAF,GACA,IAAAzC,EAAAjD,EAAA0F,GAAAzC,MACA,OAAA,OAAAA,KAAAjD,EAAA2F,KAAA,GAAA1C,IAIA4C,UAAA,SAAAH,GACA,OAAA1F,EAAA0F,GAAAI,KAAA,cAKA9F,EAAAgC,UAAA,SAAA7C,EAAAqE,GACApE,KAAA+C,SAAAnC,EAAA4B,QAAA,EAAA,GAAA5B,EAAAgC,UAAA+D,SAAA5G,GACAC,KAAA+D,YAAAK,EACApE,KAAA4G,QAIAhG,EAAAgC,UAAAiE,OAAA,SAAAC,EAAAC,GACA,OAAA,IAAAC,UAAArE,OACA,WACA,IAAAsE,EAAArG,EAAAsG,UAAAF,WAEA,OADAC,EAAAE,QAAAL,GACAlG,EAAAgC,UAAAiE,OAAAO,MAAApH,KAAAiH,UAGA3D,IAAAyD,IAGA,EAAAC,UAAArE,QAAAoE,EAAAM,cAAAC,QACAP,EAAAnG,EAAAsG,UAAAF,WAAAO,MAAA,IAEAR,EAAAM,cAAAC,QACAP,EAAA,CAAAA,IAEAnG,EAAAC,KAAAkG,EAAA,SAAAS,EAAAC,GACAX,EAAAA,EAAAY,QAAA,IAAAjH,OAAA,MAAA+G,EAAA,MAAA,KAAA,WACA,OAAAC,OAVAX,IAgBAlG,EAAA4B,OAAA5B,EAAAgC,UAAA,CAEA+D,SAAA,CACAlB,SAAA,GACAkC,OAAA,GACA5C,MAAA,GACA6C,WAAA,QACAC,aAAA,UACAC,WAAA,QACAC,aAAA,QACAC,cAAA,EACA1D,cAAA,EACA2D,eAAArH,EAAA,IACAsH,oBAAAtH,EAAA,IACAoC,UAAA,EACAmF,OAAA,UACAC,aAAA,EACAC,UAAA,SAAAxD,GACA7E,KAAAsI,WAAAzD,EAGA7E,KAAA+C,SAAAiF,eACAhI,KAAA+C,SAAAwF,aACAvI,KAAA+C,SAAAwF,YAAAtE,KAAAjE,KAAA6E,EAAA7E,KAAA+C,SAAA6E,WAAA5H,KAAA+C,SAAA+E,YAEA9H,KAAAwI,UAAAxI,KAAAyI,UAAA5D,MAGA6D,WAAA,SAAA7D,GACA7E,KAAA2I,UAAA9D,MAAAA,EAAAjB,QAAA5D,KAAA4I,YAAA5I,KAAA6I,SAAAhE,IACA7E,KAAA6E,QAAAA,IAGAiE,QAAA,SAAAjE,EAAA5B,GAqBA,IAAAA,EAAA8F,OAAA,KAAA/I,KAAAgJ,aAAAnE,KAAA,IAAAjE,EAAAqI,QAAAhG,EAAAiG,QALA,CACA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GACA,GAAA,GAAA,GAAA,GAAA,IAAA,QAKArE,EAAAjB,QAAA5D,KAAA4I,WAAA/D,EAAAjB,QAAA5D,KAAAmJ,UACAnJ,KAAA6E,QAAAA,IAGAuE,QAAA,SAAAvE,GAGAA,EAAAjB,QAAA5D,KAAA4I,UACA5I,KAAA6E,QAAAA,GAGAA,EAAAwE,WAAAzF,QAAA5D,KAAA4I,WACA5I,KAAA6E,QAAAA,EAAAwE,aAGAC,UAAA,SAAAzE,EAAA+C,EAAAE,GACA,UAAAjD,EAAA0E,KACAvJ,KAAAwJ,WAAA3E,EAAAjB,MAAA6F,SAAA7B,GAAA8B,YAAA5B,GAEAlH,EAAAiE,GAAA4E,SAAA7B,GAAA8B,YAAA5B,IAGAS,YAAA,SAAA1D,EAAA+C,EAAAE,GACA,UAAAjD,EAAA0E,KACAvJ,KAAAwJ,WAAA3E,EAAAjB,MAAA8F,YAAA9B,GAAA6B,SAAA3B,GAEAlH,EAAAiE,GAAA6E,YAAA9B,GAAA6B,SAAA3B,KAMA6B,YAAA,SAAA5G,GACAnC,EAAA4B,OAAA5B,EAAAgC,UAAA+D,SAAA5D,IAGA0C,SAAA,CACAQ,SAAA,0BACAC,OAAA,yBACA0D,MAAA,sCACAC,IAAA,4BACAC,KAAA,6BACAC,QAAA,mCACAC,OAAA,+BACAC,OAAA,4BACAC,QAAA,qCACAC,UAAAvJ,EAAAgC,UAAAiE,OAAA,6CACAuD,UAAAxJ,EAAAgC,UAAAiE,OAAA,yCACAwD,YAAAzJ,EAAAgC,UAAAiE,OAAA,6DACAyD,MAAA1J,EAAAgC,UAAAiE,OAAA,6CACA0D,IAAA3J,EAAAgC,UAAAiE,OAAA,mDACA2D,IAAA5J,EAAAgC,UAAAiE,OAAA,sDACA4D,KAAA7J,EAAAgC,UAAAiE,OAAA,oCAGA6D,kBAAA,EAEAvJ,UAAA,CAEAyF,KAAA,WACA5G,KAAA2K,eAAA/J,EAAAZ,KAAA+C,SAAAmF,qBACAlI,KAAA4K,aAAA5K,KAAA2K,eAAAhI,QAAA3C,KAAA2K,gBAAA/J,EAAAZ,KAAA+D,aACA/D,KAAA6K,WAAAjK,EAAAZ,KAAA+C,SAAAkF,gBAAA6C,IAAA9K,KAAA+C,SAAAmF,qBACAlI,KAAA4I,UAAA,GACA5I,KAAA+K,WAAA,GACA/K,KAAAqE,eAAA,EACArE,KAAAgL,QAAA,GACAhL,KAAAmJ,QAAA,GACAnJ,KAAAiL,QAEA,IAEAlG,EAFAhB,EAAA/D,KAAA+D,YACA4D,EAAA3H,KAAA2H,OAAA,GAeA,SAAAuD,EAAAjI,GACA,IAAAqC,OAAA,IAAA1E,EAAAZ,MAAA8C,KAAA,oBAAA,UAAAlC,EAAAZ,MAAA8C,KAAA,mBAUA,IAPA9C,KAAAoE,MAAAkB,IACAtF,KAAAoE,KAAAxD,EAAAZ,MAAAuF,QAAA,QAAA,GACAvF,KAAA4D,KAAAhD,EAAAZ,MAAA8C,KAAA,SAKAiB,IAAA/D,KAAAoE,KAAA,CAIA,IAAAxB,EAAAhC,EAAAiC,KAAA7C,KAAAoE,KAAA,aACA+G,EAAA,KAAAlI,EAAAsG,KAAA7B,QAAA,YAAA,IACA3E,EAAAH,EAAAG,SACAA,EAAAoI,KAAAvK,EAAAZ,MAAA4E,GAAA7B,EAAAoF,SACApF,EAAAoI,GAAAlH,KAAArB,EAAA5C,KAAAiD,IAhCArC,EAAAC,KAAAb,KAAA+C,SAAA4E,OAAA,SAAAyD,EAAAC,GACA,iBAAAA,IACAA,EAAAA,EAAA3F,MAAA,OAEA9E,EAAAC,KAAAwK,EAAA,SAAA1F,EAAA/B,GACA+D,EAAA/D,GAAAwH,MAGArG,EAAA/E,KAAA+C,SAAAgC,MACAnE,EAAAC,KAAAkE,EAAA,SAAAqG,EAAAC,GACAtG,EAAAqG,GAAAxK,EAAAgC,UAAA4C,cAAA6F,KA0BAzK,EAAAZ,KAAA+D,aACA1C,GAAA,oDACA,0VAGA6J,GAIA7J,GAAA,iBAAA,oDAAA6J,GAEAlL,KAAA+C,SAAAuI,gBACA1K,EAAAZ,KAAA+D,aAAA1C,GAAA,wBAAArB,KAAA+C,SAAAuI,iBAKAlH,KAAA,WAQA,OAPApE,KAAAuL,YACA3K,EAAA4B,OAAAxC,KAAA4I,UAAA5I,KAAAwL,UACAxL,KAAAmJ,QAAAvI,EAAA4B,OAAA,GAAAxC,KAAAwL,UACAxL,KAAA0E,SACA9D,EAAAZ,KAAA+D,aAAA0H,eAAA,eAAA,CAAAzL,OAEAA,KAAA0L,aACA1L,KAAA0E,SAGA6G,UAAA,WACAvL,KAAA2L,cACA,IAAA,IAAAnE,EAAA,EAAAoE,EAAA5L,KAAA6L,gBAAA7L,KAAA4L,WAAAA,EAAApE,GAAAA,IACAxH,KAAA8L,MAAAF,EAAApE,IAEA,OAAAxH,KAAA0E,SAIAG,QAAA,SAAAA,GACA,IAIAkH,EAAAC,EAJAC,EAAAjM,KAAAkM,MAAArH,GACAsH,EAAAnM,KAAAoM,oBAAAH,GACAlL,EAAAf,KACAyD,GAAA,EA2CA,YAxCAH,IAAA6I,SACAnM,KAAAmJ,QAAA8C,EAAArI,OAEA5D,KAAAqM,eAAAF,GACAnM,KAAA6L,gBAAAjL,EAAAuL,IAIAH,EAAAhM,KAAA2H,OAAAwE,EAAAvI,QAEAhD,EAAAC,KAAAb,KAAA2H,OAAA,SAAA/D,EAAA0I,GACAA,IAAAN,GAAApI,IAAAuI,EAAAvI,OACAqI,EAAAlL,EAAAqL,oBAAArL,EAAAmL,MAAAnL,EAAAyI,WAAA5F,OACAqI,EAAArI,QAAA7C,EAAAoI,UACApI,EAAA8K,gBAAAU,KAAAN,GACAxI,EAAA1C,EAAA+K,MAAAG,IAAAxI,KAMAsI,GAAA,IAAA/L,KAAA8L,MAAAK,GACA1I,EAAAA,GAAAsI,EAEA/L,KAAAmJ,QAAAgD,EAAAvI,OADAmI,EAMA/L,KAAAwM,qBAGAxM,KAAAyM,OAAAzM,KAAAyM,OAAA3B,IAAA9K,KAAA6K,aAEA7K,KAAA0L,aAGA9K,EAAAiE,GAAA/B,KAAA,gBAAAiJ,IAGAtI,GAIAiI,WAAA,SAAAgB,GACA,GAAAA,EAAA,CACA,IAAA9J,EAAA5C,KAGAY,EAAA4B,OAAAxC,KAAAwL,SAAAkB,GACA1M,KAAA2E,UAAA/D,EAAA+L,IAAA3M,KAAAwL,SAAA,SAAAoB,EAAAhJ,GACA,MAAA,CACAgJ,QAAAA,EACA/H,QAAAjC,EAAA4G,WAAA5F,GAAA,MAKA5D,KAAA6M,YAAAjM,EAAAkM,KAAA9M,KAAA6M,YAAA,SAAAhI,GACA,QAAAA,EAAAjB,QAAA8I,KAGA1M,KAAA+C,SAAA2I,WACA1L,KAAA+C,SAAA2I,WAAAzH,KAAAjE,KAAAA,KAAAwL,SAAAxL,KAAA2E,WAEA3E,KAAA+M,qBAKAC,UAAA,WACApM,EAAA6B,GAAAuK,WACApM,EAAAZ,KAAA+D,aAAAiJ,YAEAhN,KAAAmJ,QAAA,GACAnJ,KAAA4I,UAAA,GACA5I,KAAA2L,cACA3L,KAAAiN,aACA,IAAArB,EAAA5L,KAAA4L,WACAsB,WAAA,iBACAC,WAAA,gBAEAnN,KAAAoN,cAAAxB,IAGAwB,cAAA,SAAAxB,GACA,IAAApE,EAEA,GAAAxH,KAAA+C,SAAAwF,YACA,IAAAf,EAAA,EAAAoE,EAAApE,GAAAA,IACAxH,KAAA+C,SAAAwF,YAAAtE,KAAAjE,KAAA4L,EAAApE,GACAxH,KAAA+C,SAAA6E,WAAA,IACA5H,KAAAwJ,WAAAoC,EAAApE,GAAA5D,MAAA8F,YAAA1J,KAAA+C,SAAA+E,iBAGA8D,EACAlC,YAAA1J,KAAA+C,SAAA6E,YACA8B,YAAA1J,KAAA+C,SAAA+E,aAIA0E,iBAAA,WACA,OAAAxM,KAAAqN,aAAArN,KAAAmJ,UAGAkE,aAAA,SAAA1M,GAEA,IACA6G,EADA8F,EAAA,EAEA,IAAA9F,KAAA7G,OAIA2C,IAAA3C,EAAA6G,IAAA,OAAA7G,EAAA6G,KAAA,IAAA7G,EAAA6G,IACA8F,IAGA,OAAAA,GAGAL,WAAA,WACAjN,KAAAwI,UAAAxI,KAAAyM,SAGAjE,UAAA,SAAAkE,GACAA,EAAAa,IAAAvN,KAAA6K,YAAA2C,KAAA,IACAxN,KAAAyN,WAAAf,GAAAgB,QAGAhJ,MAAA,WACA,OAAA,IAAA1E,KAAA2N,QAGAA,KAAA,WACA,OAAA3N,KAAA2E,UAAAhC,QAGA2B,aAAA,WACA,GAAAtE,KAAA+C,SAAAuB,aACA,IACA1D,EAAAZ,KAAA4N,kBAAA5N,KAAA2E,UAAAhC,QAAA3C,KAAA2E,UAAA,GAAAE,SAAA,IACAgJ,OAAA,YACAC,QAGA/L,QAAA,WACA,MAAAR,MAOAqM,eAAA,WACA,IAAAtF,EAAAtI,KAAAsI,WACA,OAAAA,GAEA,IAFA1H,EAAAkM,KAAA9M,KAAA2E,UAAA,SAAA8C,GACA,OAAAA,EAAA5C,QAAAjB,OAAA0E,EAAA1E,OACAjB,QAAA2F,GAGAsD,SAAA,WACA,IAAAhJ,EAAA5C,KACA+N,EAAA,GAGA,OAAAnN,EAAAZ,KAAA+D,aACAiK,KAAA,8CACAT,IAAA,sCACAA,IAAAvN,KAAA+C,SAAAoF,QACA0F,OAAA,WACA,IAAAjK,EAAA5D,KAAA4D,MAAAhD,EAAAZ,MAAA8C,KAAA,QACAwC,OAAA,IAAA1E,EAAAZ,MAAA8C,KAAA,oBAAA,UAAAlC,EAAAZ,MAAA8C,KAAA,mBAaA,OAXAc,GAAAhB,EAAAG,SAAAiB,OAAAO,OAAAC,SACAA,QAAAyJ,MAAA,0BAAAjO,MAIAsF,IACAtF,KAAAoE,KAAAxD,EAAAZ,MAAAuF,QAAA,QAAA,GACAvF,KAAA4D,KAAAA,GAIA5D,KAAAoE,OAAAxB,EAAAmB,gBAKAH,KAAAmK,IAAAnL,EAAAyK,aAAAzM,EAAAZ,MAAA+E,YAIAgJ,EAAAnK,IAAA,OAKAsI,MAAA,SAAAjM,GACA,OAAAW,EAAAX,GAAA,IAGAyM,OAAA,WACA,IAAA9E,EAAA5H,KAAA+C,SAAA6E,WAAAlC,MAAA,KAAApE,KAAA,KACA,OAAAV,EAAAZ,KAAA+C,SAAAgF,aAAA,IAAAH,EAAA5H,KAAA4K,eAGAsD,eAAA,WACAlO,KAAA6M,YAAA,GACA7M,KAAA2E,UAAA,GACA3E,KAAAwL,SAAA,GACAxL,KAAAmO,OAAAvN,EAAA,IACAZ,KAAAyM,OAAA7L,EAAA,KAGAqK,MAAA,WACAjL,KAAAkO,iBACAlO,KAAA6L,gBAAAjL,EAAA,KAGA+K,YAAA,WACA3L,KAAAiL,QACAjL,KAAAyM,OAAAzM,KAAA0M,SAAA5B,IAAA9K,KAAA6K,aAGAwB,eAAA,SAAAxH,GACA7E,KAAAiL,QACAjL,KAAAyM,OAAAzM,KAAAyI,UAAA5D,IAGAmE,aAAA,SAAAnE,GACA,IAGAhB,EAAAuK,EAHAC,EAAAzN,EAAAiE,GACA0E,EAAA1E,EAAA0E,KACAjE,OAAA,IAAA+I,EAAAvL,KAAA,oBAAA,UAAAuL,EAAAvL,KAAA,mBAGA,MAAA,UAAAyG,GAAA,aAAAA,EACAvJ,KAAAwJ,WAAA3E,EAAAjB,MAAAiK,OAAA,YAAAhK,MACA,WAAA0F,QAAA,IAAA1E,EAAAyJ,SACAzJ,EAAAyJ,SAAAC,SAAA,MAAAF,EAAAxK,OAIAA,EADAyB,EACA+I,EAAAb,OAEAa,EAAAxK,MAGA,SAAA0F,EAGA,mBAAA1F,EAAA2K,OAAA,EAAA,IACA3K,EAAA2K,OAAA,IAMA,IADAJ,EAAAvK,EAAA4K,YAAA,MAEA5K,EAAA2K,OAAAJ,EAAA,GAKA,IADAA,EAAAvK,EAAA4K,YAAA,OAEA5K,EAAA2K,OAAAJ,EAAA,GAIAvK,EAGA,iBAAAA,EACAA,EAAA6D,QAAA,MAAA,IAEA7D,IAGAiI,MAAA,SAAAjH,GACAA,EAAA7E,KAAAoM,oBAAApM,KAAAkM,MAAArH,IAEA,IAMApB,EAAAmC,EAAA8I,EAAAC,EANA5J,EAAAnE,EAAAiE,GAAAE,QACA6J,EAAAhO,EAAA+L,IAAA5H,EAAA,SAAA0C,EAAAD,GACA,OAAAA,IACA7E,OACAkM,GAAA,EACAhL,EAAA7D,KAAAgJ,aAAAnE,GAqBA,IAAAe,IAhBA,mBAAAb,EAAA4J,WACAA,EAAA5J,EAAA4J,WACA,mBAAA3O,KAAA+C,SAAA4L,aACAA,EAAA3O,KAAA+C,SAAA4L,YAMAA,IACA9K,EAAA8K,EAAA1K,KAAAY,EAAAhB,UAGAkB,EAAA4J,YAGA5J,EAAA,CACA2J,EAAA,CAAA9I,OAAAA,EAAAkJ,WAAA/J,EAAAa,IACA,IAKA,GAAA,yBAJAnC,EAAA7C,EAAAgC,UAAAmM,QAAAnJ,GAAA3B,KAAAjE,KAAA6D,EAAAgB,EAAA6J,EAAAI,cAIA,IAAAF,EAAA,CACAC,GAAA,EACA,SAIA,GAFAA,GAAA,EAEA,YAAApL,EAEA,YADAzD,KAAAyM,OAAAzM,KAAAyM,OAAAc,IAAAvN,KAAAyI,UAAA5D,KAIA,IAAApB,EAEA,OADAzD,KAAAgP,aAAAnK,EAAA6J,IACA,EAEA,MAAAnN,GAQA,MAPAvB,KAAA+C,SAAAiB,OAAAO,OAAAC,SACAA,QAAAyK,IAAA,4CAAApK,EAAAqK,GAAA,gBAAAR,EAAA9I,OAAA,YAAArE,GAEAA,aAAA4N,YACA5N,EAAAqL,SAAA,+CAAA/H,EAAAqK,GAAA,gBAAAR,EAAA9I,OAAA,aAGArE,GAGA,IAAAsN,EAMA,OAHA7O,KAAAqN,aAAAtI,IACA/E,KAAA6M,YAAAN,KAAA1H,IAEA,GAMAuK,kBAAA,SAAAvK,EAAAe,GACA,OAAAhF,EAAAiE,GAAAhC,KAAA,MAAA+C,EAAAyJ,OAAA,GAAAC,cACA1J,EAAA2J,UAAA,GAAAC,gBAAA5O,EAAAiE,GAAAhC,KAAA,QAIA4M,cAAA,SAAA7L,EAAAgC,GACA,IAAA8J,EAAA1P,KAAA+C,SAAA0C,SAAA7B,GACA,OAAA8L,IAAAA,EAAArI,cAAAsI,OAAAD,EAAAA,EAAA9J,KAIAgK,YAAA,WACA,IAAA,IAAApI,EAAA,EAAAA,EAAAR,UAAArE,OAAA6E,IACA,QAAAlE,IAAA0D,UAAAQ,GACA,OAAAR,UAAAQ,IAeAqI,eAAA,SAAAhL,EAAA6J,GACA,iBAAAA,IACAA,EAAA,CAAA9I,OAAA8I,IAGA,IAAA9B,EAAA5M,KAAA4P,YACA5P,KAAAyP,cAAA5K,EAAAjB,KAAA8K,EAAA9I,QACA5F,KAAAoP,kBAAAvK,EAAA6J,EAAA9I,SAGA5F,KAAA+C,SAAAqF,aAAAvD,EAAAiL,YAAAxM,EACA1C,EAAAgC,UAAA6C,SAAAiJ,EAAA9I,QACA,2CAAAf,EAAAjB,KAAA,aAEAmM,EAAA,gBAOA,MANA,mBAAAnD,EACAA,EAAAA,EAAA3I,KAAAjE,KAAA0O,EAAAI,WAAAjK,GACAkL,EAAAC,KAAApD,KACAA,EAAAhM,EAAAgC,UAAAiE,OAAA+F,EAAAlF,QAAAqI,EAAA,QAAArB,EAAAI,aAGAlC,GAGAoC,aAAA,SAAAnK,EAAA6J,GACA,IAAA9B,EAAA5M,KAAA6P,eAAAhL,EAAA6J,GAEA1O,KAAA2E,UAAA4H,KAAA,CACAK,QAAAA,EACA/H,QAAAA,EACAe,OAAA8I,EAAA9I,SAGA5F,KAAAwL,SAAA3G,EAAAjB,MAAAgJ,EACA5M,KAAA4I,UAAA/D,EAAAjB,MAAAgJ,GAGAa,WAAA,SAAAwC,GAIA,OAHAjQ,KAAA+C,SAAAmN,UACAD,EAAAA,EAAAnF,IAAAmF,EAAAE,OAAAnQ,KAAA+C,SAAAmN,WAEAD,GAGAlD,kBAAA,WACA,IAAAvF,EAAAoE,EAAAqC,EACA,IAAAzG,EAAA,EAAAxH,KAAA2E,UAAA6C,GAAAA,IACAyG,EAAAjO,KAAA2E,UAAA6C,GACAxH,KAAA+C,SAAAuG,WACAtJ,KAAA+C,SAAAuG,UAAArF,KAAAjE,KAAAiO,EAAApJ,QAAA7E,KAAA+C,SAAA6E,WAAA5H,KAAA+C,SAAA+E,YAEA9H,KAAAoQ,UAAAnC,EAAApJ,QAAAoJ,EAAArB,SAKA,GAHA5M,KAAA2E,UAAAhC,SACA3C,KAAAmO,OAAAnO,KAAAmO,OAAArD,IAAA9K,KAAA6K,aAEA7K,KAAA+C,SAAAsN,QACA,IAAA7I,EAAA,EAAAxH,KAAA6M,YAAArF,GAAAA,IACAxH,KAAAoQ,UAAApQ,KAAA6M,YAAArF,IAGA,GAAAxH,KAAA+C,SAAAwF,YACA,IAAAf,EAAA,EAAAoE,EAAA5L,KAAAsQ,gBAAA1E,EAAApE,GAAAA,IACAxH,KAAA+C,SAAAwF,YAAAtE,KAAAjE,KAAA4L,EAAApE,GAAAxH,KAAA+C,SAAA6E,WAAA5H,KAAA+C,SAAA+E,YAGA9H,KAAAyM,OAAAzM,KAAAyM,OAAAc,IAAAvN,KAAAmO,QACAnO,KAAAiN,aACAjN,KAAAyN,WAAAzN,KAAAmO,QAAAoC,QAGAD,cAAA,WACA,OAAAtQ,KAAA6L,gBAAA0B,IAAAvN,KAAAwQ,oBAGAA,gBAAA,WACA,OAAA5P,EAAAZ,KAAA2E,WAAAgI,IAAA,WACA,OAAA3M,KAAA6E,WAIAuL,UAAA,SAAAvL,EAAA+H,GACA,IAAA6D,EAAAzE,EAAA0E,EAAA3P,EACAkN,EAAAjO,KAAAyI,UAAA5D,GACA8L,EAAA3Q,KAAA4Q,SAAA/L,GACAgM,EAAAjQ,EAAAiE,GAAA/B,KAAA,oBAEAmL,EAAAtL,QAGAsL,EAAAvE,YAAA1J,KAAA+C,SAAA+E,YAAA2B,SAAAzJ,KAAA+C,SAAA6E,YAGAqG,EAAA6C,KAAAlE,KAUA6D,EANAxC,EAAArN,EAAA,IAAAZ,KAAA+C,SAAAgF,aAAA,KACAjF,KAAA,KAAA6N,EAAA,UACAlH,SAAAzJ,KAAA+C,SAAA6E,YACAkJ,KAAAlE,GAAA,IAIA5M,KAAA+C,SAAAmN,UAIAO,EAAAxC,EAAAP,OAAA6C,OAAAQ,KAAA,IAAA/Q,KAAA+C,SAAAmN,QAAA,MAAAC,UAEAnQ,KAAA2K,eAAAhI,OACA3C,KAAA2K,eAAAqG,OAAAP,GACAzQ,KAAA+C,SAAAkO,eACAjR,KAAA+C,SAAAkO,eAAAhN,KAAAjE,KAAAyQ,EAAA7P,EAAAiE,IAEA4L,EAAAS,YAAArM,GAIAoJ,EAAArJ,GAAA,SAGAqJ,EAAAnL,KAAA,MAAA6N,GAIA,IAAA1C,EAAAkD,QAAA,cAAAnR,KAAAoR,cAAAT,GAAA,MAAAhO,SACA+N,EAAAzC,EAAAnL,KAAA,MAGA+N,EAEAA,EAAAtQ,MAAA,IAAAE,OAAA,MAAAT,KAAAoR,cAAAV,GAAA,UAGAG,GAAA,IAAAH,GAJAG,EAAAH,EAMA9P,EAAAiE,GAAA/B,KAAA,mBAAA+N,IAGA7E,EAAAhM,KAAA2H,OAAA9C,EAAAjB,SAEA7C,EAAAf,KACAY,EAAAC,KAAAE,EAAA4G,OAAA,SAAA/D,EAAA0I,GACAA,IAAAN,GACApL,EAAA,UAAAG,EAAAqQ,cAAAxN,GAAA,KAAA7C,EAAAgD,aACAjB,KAAA,mBAAAmL,EAAAnL,KAAA,aAMA8J,GAAA5M,KAAA+C,SAAAsN,UACApC,EAAAT,KAAA,IACA,iBAAAxN,KAAA+C,SAAAsN,QACApC,EAAAxE,SAAAzJ,KAAA+C,SAAAsN,SAEArQ,KAAA+C,SAAAsN,QAAApC,EAAApJ,IAGA7E,KAAAmO,OAAAnO,KAAAmO,OAAArD,IAAAmD,IAGAxF,UAAA,SAAA5D,GACA,IAAAjB,EAAA5D,KAAAoR,cAAApR,KAAA4Q,SAAA/L,IACAwM,EAAAzQ,EAAAiE,GAAA/B,KAAA,oBACA7C,EAAA,cAAA2D,EAAA,kBAAAA,EAAA,OAQA,OALAyN,IACApR,EAAAA,EAAA,MAAAD,KAAAoR,cAAAC,GACA3J,QAAA,OAAA,QAGA1H,KACA0M,SACAmB,OAAA5N,IAMAmR,cAAA,SAAAE,GACA,OAAAA,EAAA5J,QAAA,yCAAA,SAGAkJ,SAAA,SAAA/L,GACA,OAAA7E,KAAA2H,OAAA9C,EAAAjB,QAAA5D,KAAA2I,UAAA9D,GAAAA,EAAAjB,KAAAiB,EAAAqK,IAAArK,EAAAjB,OAGAwI,oBAAA,SAAAvH,GAQA,OALA7E,KAAA2I,UAAA9D,KACAA,EAAA7E,KAAAwJ,WAAA3E,EAAAjB,OAIAhD,EAAAiE,GAAA0I,IAAAvN,KAAA+C,SAAAoF,QAAA,IAGAQ,UAAA,SAAA9D,GACA,MAAA,kBAAAmL,KAAAnL,EAAA0E,OAGAC,WAAA,SAAA5F,GACA,OAAAhD,EAAAZ,KAAA+D,aAAAiK,KAAA,UAAAhO,KAAAoR,cAAAxN,GAAA,OAGA2N,UAAA,SAAAlG,EAAAxG,GACA,OAAAA,EAAA2M,SAAAhC,eACA,IAAA,SACA,OAAA5O,EAAA,kBAAAiE,GAAAlC,OACA,IAAA,QACA,GAAA3C,KAAA2I,UAAA9D,GACA,OAAA7E,KAAAwJ,WAAA3E,EAAAjB,MAAAiK,OAAA,YAAAlL,OAGA,OAAA0I,EAAA1I,QAGA8O,OAAA,SAAArM,EAAAP,GACA,OAAA7E,KAAA0R,mBAAAtM,IAAApF,KAAA0R,mBAAAtM,GAAAA,EAAAP,IAGA6M,YAAA,CACAC,QAAA,SAAAvM,GACA,OAAAA,GAEAkM,OAAA,SAAAlM,EAAAP,GACA,QAAAjE,EAAAwE,EAAAP,EAAAT,MAAAzB,QAEAiP,SAAA,SAAAxM,EAAAP,GACA,OAAAO,EAAAP,KAIAgE,SAAA,SAAAhE,GACA,IAAAhB,EAAA7D,KAAAgJ,aAAAnE,GACA,OAAAjE,EAAAgC,UAAAmM,QAAA9I,SAAAhC,KAAAjE,KAAA6D,EAAAgB,IAAA,uBAGAgN,aAAA,SAAAhN,GACA7E,KAAAgL,QAAAnG,EAAAjB,QACA5D,KAAAqE,iBACAzD,EAAAiE,GAAA4E,SAAAzJ,KAAA+C,SAAA8E,cACA7H,KAAAgL,QAAAnG,EAAAjB,OAAA,IAIAkO,YAAA,SAAAjN,EAAAH,GACA1E,KAAAqE,iBAGArE,KAAAqE,eAAA,IACArE,KAAAqE,eAAA,UAEArE,KAAAgL,QAAAnG,EAAAjB,MACAhD,EAAAiE,GAAA6E,YAAA1J,KAAA+C,SAAA8E,cACAnD,GAAA,IAAA1E,KAAAqE,gBAAArE,KAAA2D,eAAA3D,KAAAoE,QACAxD,EAAAZ,KAAA+D,aAAAgO,SAMA/R,KAAAkD,cACAtC,EAAA,sBAAAZ,KAAAkD,aAAAU,KAAA,KAAA5D,KAAA+D,aAAAG,SAGAlE,KAAA2D,eAAA,IACAe,GAAA,IAAA1E,KAAAqE,gBAAArE,KAAA2D,gBACA/C,EAAAZ,KAAA+D,aAAA0H,eAAA,eAAA,CAAAzL,OACAA,KAAA2D,eAAA,IAIAqO,cAAA,SAAAnN,EAAAe,GAGA,OAFAA,EAAA,iBAAAA,GAAAA,GAAA,SAEAhF,EAAAiC,KAAAgC,EAAA,kBAAAjE,EAAAiC,KAAAgC,EAAA,gBAAA,CACAoN,IAAA,KACAvN,OAAA,EACAkI,QAAA5M,KAAA6P,eAAAhL,EAAA,CAAAe,OAAAA,OAKAsM,QAAA,WACAlS,KAAAgN,YAEApM,EAAAZ,KAAA+D,aACAoO,IAAA,aACAjF,WAAA,aACAc,KAAA,0BACAmE,IAAA,qBACAzI,YAAA,yBACAsE,KAAA,2BACAmE,IAAA,sBACAzI,YAAA,0BACAsE,KAAA,gCACAmE,IAAA,2BACAzI,YAAA,+BACAsE,KAAA,mCACAmE,IAAA,8BACAzI,YAAA,kCACAsE,KAAA,8BACAmE,IAAA,yBACAzI,YAAA,+BAKA0I,kBAAA,CACAnM,SAAA,CAAAA,UAAA,GACA2D,MAAA,CAAAA,OAAA,GACAC,IAAA,CAAAA,KAAA,GACAC,KAAA,CAAAA,MAAA,GACAC,QAAA,CAAAA,SAAA,GACAC,OAAA,CAAAA,QAAA,GACAC,OAAA,CAAAA,QAAA,GACAoI,WAAA,CAAAA,YAAA,IAGAC,cAAA,SAAAC,EAAAxN,GACAwN,EAAAlL,cAAAsI,OACA3P,KAAAoS,kBAAAG,GAAAxN,EAEAnE,EAAA4B,OAAAxC,KAAAoS,kBAAAG,IAIAzM,WAAA,SAAAjB,GACA,IAAAE,EAAA,GACAyN,EAAA5R,EAAAiE,GAAA/B,KAAA,SASA,OAPA0P,GACA5R,EAAAC,KAAA2R,EAAA9M,MAAA,KAAA,WACA1F,QAAAY,EAAAgC,UAAAwP,mBACAxR,EAAA4B,OAAAuC,EAAAnE,EAAAgC,UAAAwP,kBAAApS,SAIA+E,GAGA0N,uBAAA,SAAA1N,EAAAwE,EAAA3D,EAAAyF,GAIA,eAAA2E,KAAApK,KAAA,OAAA2D,GAAA,oBAAAyG,KAAAzG,MACA8B,EAAAqH,OAAArH,GAGAsH,MAAAtH,KACAA,OAAA/H,IAIA+H,GAAA,IAAAA,EACAtG,EAAAa,GAAAyF,EACA9B,IAAA3D,GAAA,UAAA2D,IAIAxE,EAAAa,IAAA,IAIAG,eAAA,SAAAlB,GACA,IAGAe,EAAAyF,EAHAtG,EAAA,GACAsJ,EAAAzN,EAAAiE,GACA0E,EAAA1E,EAAA+N,aAAA,QAGA,IAAAhN,KAAAhF,EAAAgC,UAAAmM,QAaA1D,EAVA,aAAAzF,GAKA,MAJAyF,EAAAxG,EAAA+N,aAAAhN,MAKAyF,GAAA,KAIAA,GAEAgD,EAAAvL,KAAA8C,GAGA5F,KAAAyS,uBAAA1N,EAAAwE,EAAA3D,EAAAyF,GAQA,OAJAtG,EAAAoF,WAAA,uBAAA6F,KAAAjL,EAAAoF,mBACApF,EAAAoF,UAGApF,GAGAiB,UAAA,SAAAnB,GACA,IAGAe,EAAAyF,EAHAtG,EAAA,GACAsJ,EAAAzN,EAAAiE,GACA0E,EAAA1E,EAAA+N,aAAA,QAGA,IAAAhN,KAAAhF,EAAAgC,UAAAmM,QAIA,MAHA1D,EAAAgD,EAAAxL,KAAA,OAAA+C,EAAAyJ,OAAA,GAAAC,cAAA1J,EAAA2J,UAAA,GAAAC,kBAIAnE,GAAA,GAGArL,KAAAyS,uBAAA1N,EAAAwE,EAAA3D,EAAAyF,GAEA,OAAAtG,GAGAG,YAAA,SAAAL,GACA,IAAAE,EAAA,GACAnC,EAAAhC,EAAAiC,KAAAgC,EAAAT,KAAA,aAKA,OAHAxB,EAAAG,SAAAgC,QACAA,EAAAnE,EAAAgC,UAAA4C,cAAA5C,EAAAG,SAAAgC,MAAAF,EAAAjB,QAAA,IAEAmB,GAGAc,eAAA,SAAAd,EAAAF,GAmEA,OAhEAjE,EAAAC,KAAAkE,EAAA,SAAA2B,EAAA7C,GAGA,IAAA,IAAAA,GAIA,GAAAA,EAAAuB,OAAAvB,EAAAgP,QAAA,CACA,IAAAC,GAAA,EACA,cAAAjP,EAAAgP,SACA,IAAA,SACAC,IAAAlS,EAAAiD,EAAAgP,QAAAhO,EAAAT,MAAAzB,OACA,MACA,IAAA,WACAmQ,EAAAjP,EAAAgP,QAAA5O,KAAAY,EAAAA,GAGAiO,EACA/N,EAAA2B,QAAApD,IAAAO,EAAAuB,OAAAvB,EAAAuB,OAEAxE,EAAAiC,KAAAgC,EAAAT,KAAA,aAAAgJ,cAAAxM,EAAAiE,WACAE,EAAA2B,iBAjBA3B,EAAA2B,KAuBA9F,EAAAC,KAAAkE,EAAA,SAAA2J,EAAAqE,GACAhO,EAAA2J,GAAA9N,EAAAoS,WAAAD,IAAA,eAAArE,EAAAqE,EAAAlO,GAAAkO,IAIAnS,EAAAC,KAAA,CAAA,YAAA,aAAA,WACAkE,EAAA/E,QACA+E,EAAA/E,MAAA0S,OAAA3N,EAAA/E,UAGAY,EAAAC,KAAA,CAAA,cAAA,SAAA,WACA,IAAAoS,EACAlO,EAAA/E,QACAY,EAAAsS,QAAAnO,EAAA/E,OACA+E,EAAA/E,MAAA,CAAA0S,OAAA3N,EAAA/E,MAAA,IAAA0S,OAAA3N,EAAA/E,MAAA,KACA,iBAAA+E,EAAA/E,QACAiT,EAAAlO,EAAA/E,MAAA0H,QAAA,UAAA,IAAAhC,MAAA,UACAX,EAAA/E,MAAA,CAAA0S,OAAAO,EAAA,IAAAP,OAAAO,EAAA,SAKArS,EAAAgC,UAAA8H,mBAGA,MAAA3F,EAAAyF,KAAA,MAAAzF,EAAAwF,MACAxF,EAAAuF,MAAA,CAAAvF,EAAAyF,IAAAzF,EAAAwF,YACAxF,EAAAyF,WACAzF,EAAAwF,KAEA,MAAAxF,EAAAqF,WAAA,MAAArF,EAAAoF,YACApF,EAAAsF,YAAA,CAAAtF,EAAAqF,UAAArF,EAAAoF,kBACApF,EAAAqF,iBACArF,EAAAoF,YAIApF,GAIAS,cAAA,SAAA3C,GACA,GAAA,iBAAAA,EAAA,CACA,IAAAsQ,EAAA,GACAvS,EAAAC,KAAAgC,EAAA6C,MAAA,MAAA,WACAyN,EAAAnT,OAAA,IAEA6C,EAAAsQ,EAEA,OAAAtQ,GAIAuQ,UAAA,SAAAxP,EAAAgC,EAAAgH,GACAhM,EAAAgC,UAAAmM,QAAAnL,GAAAgC,EACAhF,EAAAgC,UAAA6C,SAAA7B,QAAAN,IAAAsJ,EAAAA,EAAAhM,EAAAgC,UAAA6C,SAAA7B,GACAgC,EAAAjD,OAAA,GACA/B,EAAAgC,UAAA0P,cAAA1O,EAAAhD,EAAAgC,UAAA4C,cAAA5B,KAKAmL,QAAA,CAGA9I,SAAA,SAAAoF,EAAAxG,EAAAO,GAGA,IAAApF,KAAAyR,OAAArM,EAAAP,GACA,MAAA,sBAEA,GAAA,WAAAA,EAAA2M,SAAAhC,cAMA,OAAAxP,KAAA2I,UAAA9D,GACA,EAAA7E,KAAAuR,UAAAlG,EAAAxG,GAEAwG,MAAAA,GAAA,EAAAA,EAAA1I,OANA,IAAAkB,EAAAjD,EAAAiE,GAAAhB,MACA,OAAAA,GAAA,EAAAA,EAAAlB,QASAiH,MAAA,SAAAyB,EAAAxG,GAMA,OAAA7E,KAAA6I,SAAAhE,IAAA,wIAAAmL,KAAA3E,IAIAxB,IAAA,SAAAwB,EAAAxG,GAMA,OAAA7E,KAAA6I,SAAAhE,IAAA,2cAAAmL,KAAA3E,IAIAvB,MACAvH,GAAA,EAEA,SAAA8I,EAAAxG,GAcA,OAbAtC,IACAA,GAAA,EACAvC,KAAA+C,SAAAiB,OAAAO,OAAAC,SACAA,QAAAC,KACA,uTASAzE,KAAA6I,SAAAhE,KAAA,cAAAmL,KAAA,IAAAqD,KAAAhI,GAAAiI,cAKAvJ,QAAA,SAAAsB,EAAAxG,GACA,OAAA7E,KAAA6I,SAAAhE,IAAA,+DAAAmL,KAAA3E,IAIArB,OAAA,SAAAqB,EAAAxG,GACA,OAAA7E,KAAA6I,SAAAhE,IAAA,8CAAAmL,KAAA3E,IAIApB,OAAA,SAAAoB,EAAAxG,GACA,OAAA7E,KAAA6I,SAAAhE,IAAA,QAAAmL,KAAA3E,IAIAjB,UAAA,SAAAiB,EAAAxG,EAAAO,GACA,IAAAzC,EAAA/B,EAAAsS,QAAA7H,GAAAA,EAAA1I,OAAA3C,KAAAuR,UAAAlG,EAAAxG,GACA,OAAA7E,KAAA6I,SAAAhE,IAAAO,GAAAzC,GAIAwH,UAAA,SAAAkB,EAAAxG,EAAAO,GACA,IAAAzC,EAAA/B,EAAAsS,QAAA7H,GAAAA,EAAA1I,OAAA3C,KAAAuR,UAAAlG,EAAAxG,GACA,OAAA7E,KAAA6I,SAAAhE,IAAAlC,GAAAyC,GAIAiF,YAAA,SAAAgB,EAAAxG,EAAAO,GACA,IAAAzC,EAAA/B,EAAAsS,QAAA7H,GAAAA,EAAA1I,OAAA3C,KAAAuR,UAAAlG,EAAAxG,GACA,OAAA7E,KAAA6I,SAAAhE,IAAAlC,GAAAyC,EAAA,IAAAzC,GAAAyC,EAAA,IAIAoF,IAAA,SAAAa,EAAAxG,EAAAO,GACA,OAAApF,KAAA6I,SAAAhE,IAAAO,GAAAiG,GAIAd,IAAA,SAAAc,EAAAxG,EAAAO,GACA,OAAApF,KAAA6I,SAAAhE,IAAAwG,GAAAjG,GAIAkF,MAAA,SAAAe,EAAAxG,EAAAO,GACA,OAAApF,KAAA6I,SAAAhE,IAAAwG,GAAAjG,EAAA,IAAAiG,GAAAjG,EAAA,IAIAqF,KAAA,SAAAY,EAAAxG,EAAAO,GAMA,SAAAmO,EAAAC,GACA,IAAAjT,GAAA,GAAAiT,GAAAjT,MAAA,iBACA,OAAAA,GAKAA,EAAA,GAAAA,EAAA,GAAAoC,OAJA,EAMA,SAAA8Q,EAAAD,GACA,OAAAE,KAAAC,MAAAH,EAAAE,KAAAE,IAAA,GAAAC,IAfA,IAkBAA,EAlBAtK,EAAA3I,EAAAiE,GAAA/B,KAAA,QACAgR,EAAA,gCAAAvK,EAAA,qBAEAwK,EAAA,IAAAtT,OAAA,MAAA8I,EAAA,OAcA7E,GAAA,EAKA,GAlBA6E,IAAAwK,EAAA/D,KAFA,CAAA,OAAA,SAAA,SAEA1O,QAmBA,MAAA,IAAA0S,MAAAF,GAUA,OAPAD,EAAAN,EAAAnO,IAGAmO,EAAAlI,GAAAwI,GAAAJ,EAAApI,GAAAoI,EAAArO,IAAA,KACAV,GAAA,GAGA1E,KAAA6I,SAAAhE,IAAAH,GAIAwF,QAAA,SAAAmB,EAAAxG,EAAAO,GAGA,IAAAtD,EAAAlB,EAAAwE,GAMA,OALApF,KAAA+C,SAAA2F,YAAA5G,EAAAyL,IAAA,0BAAA5K,QACAb,EAAA2H,SAAA,yBAAApI,GAAA,wBAAA,WACAT,EAAAiE,GAAAH,UAGA2G,IAAAvJ,EAAA+B,OAIAqC,OAAA,SAAAmF,EAAAxG,EAAAO,EAAAQ,GACA,GAAA5F,KAAA6I,SAAAhE,GACA,MAAA,sBAGAe,EAAA,iBAAAA,GAAAA,GAAA,SAEA,IACAhD,EAAAC,EAAAoR,EADAC,EAAAlU,KAAAgS,cAAAnN,EAAAe,GAWA,OARA5F,KAAA+C,SAAA0C,SAAAZ,EAAAjB,QACA5D,KAAA+C,SAAA0C,SAAAZ,EAAAjB,MAAA,IAEAsQ,EAAAC,gBAAAD,EAAAC,iBAAAnU,KAAA+C,SAAA0C,SAAAZ,EAAAjB,MAAAgC,GACA5F,KAAA+C,SAAA0C,SAAAZ,EAAAjB,MAAAgC,GAAAsO,EAAAtH,QAEAxH,EAAA,iBAAAA,GAAA,CAAAyE,IAAAzE,IAAAA,EACA6O,EAAArT,EAAAwE,MAAAxE,EAAA4B,OAAA,CAAAK,KAAAwI,GAAAjG,EAAAvC,OACAqR,EAAAjC,MAAAgC,EACAC,EAAAxP,OAGAwP,EAAAjC,IAAAgC,GACArR,EAAA5C,MACA6R,aAAAhN,IACAhC,EAAA,IACAgC,EAAAjB,MAAAyH,EACAzK,EAAAwT,KAAAxT,EAAA4B,QAAA,EAAA,CACA6R,KAAA,QACAC,KAAA,WAAAzP,EAAAjB,KACA2Q,SAAA,OACA1R,KAAAA,EACA2R,QAAA5R,EAAAmB,YACAsM,QAAA,SAAAoE,GACA,IACA/H,EAAAE,EAAAhE,EADAlE,GAAA,IAAA+P,GAAA,SAAAA,EAGA7R,EAAAG,SAAA0C,SAAAZ,EAAAjB,MAAAgC,GAAAsO,EAAAC,gBACAzP,GACAkE,EAAAhG,EAAAe,cACAf,EAAAsL,iBACAtL,EAAA6J,OAAA7J,EAAA6F,UAAA5D,GACAjC,EAAAe,cAAAiF,EACAhG,EAAAiK,YAAAN,KAAA1H,GACAjC,EAAAuG,QAAAtE,EAAAjB,OAAA,EACAhB,EAAA8I,eAEAgB,EAAA,GACAE,EAAA6H,GAAA7R,EAAAiN,eAAAhL,EAAA,CAAAe,OAAAA,EAAAkJ,WAAAzD,IACAqB,EAAA7H,EAAAjB,MAAAsQ,EAAAtH,QAAAA,EACAhK,EAAAuG,QAAAtE,EAAAjB,OAAA,EACAhB,EAAA8I,WAAAgB,IAEAwH,EAAAxP,MAAAA,EACA9B,EAAAkP,YAAAjN,EAAAH,KAEAU,IACA,eAUA,IACAgP,EADAM,EAAA,GA+BA,OA3BA9T,EAAA+T,cACA/T,EAAA+T,cAAA,SAAA5R,EAAA6R,EAAAC,GACA,IAAAP,EAAAvR,EAAAuR,KACA,UAAAvR,EAAAsR,OACAK,EAAAJ,IACAI,EAAAJ,GAAAQ,QAEAJ,EAAAJ,GAAAO,MAMAT,EAAAxT,EAAAwT,KACAxT,EAAAwT,KAAA,SAAArR,GACA,IAAAsR,GAAA,SAAAtR,EAAAA,EAAAnC,EAAAmU,cAAAV,KACAC,GAAA,SAAAvR,EAAAA,EAAAnC,EAAAmU,cAAAT,KACA,MAAA,UAAAD,GACAK,EAAAJ,IACAI,EAAAJ,GAAAQ,QAEAJ,EAAAJ,GAAAF,EAAAhN,MAAApH,KAAAgH,WACA0N,EAAAJ,IAEAF,EAAAhN,MAAApH,KAAAgH,aAGApG,ICxmDA,SAAAoB,GACA,mBAAAC,QAAAA,OAAAC,IAEAD,OAAA,8BAAA,CAAA,qBAAAD,GACA,iBAAAG,QAAAA,OAAAC,QAEAD,OAAAC,QAAAJ,EAAAK,QAAA,sBAGAC,OAAAM,UAAAoS,YAAAhT,EAAAM,QATA,CAWA,SAAA1B,GACA,IACAqU,EADAC,EAAAtU,EAAAgC,UAEAuS,EAAA,wBAEA,SAAAC,EAAArV,EAAAsV,EAAAhK,GACAtL,EAAAgF,MAAAsQ,GAAAhK,EACAtL,EAAA6M,UACA7M,EAAA0F,SAAA4P,GAAAtV,EAAA6M,SAQA,SAAA0I,EAAAjK,GAEA,OAAAA,EAAA3D,QAAA,yCAAA,QAGA,SAAA6N,EAAAC,GACA,OAAAA,EAAAhH,OAAA,EAAAgH,EAAA/G,YAAA,KAAA,GAGA,SAAAgH,EAAApK,EAAAqK,GAIA,OAHA,IAAArK,EAAAsK,QAAA,QACAtK,EAAAA,EAAA3D,QAAA,KAAAgO,IAEArK,EAkDA,SAAAuK,EAAA3S,GACA,IAAA4S,EAAAjV,EAAAZ,MACAoL,EAAA,6CACA,IAAAyK,EAAAhT,KAAAuI,GAAA,CAIAyK,EAAAhT,KAAAuI,GAAA,GACA,IACAyK,EAAAhT,KAAA,aAAAmK,YACA,QACA6I,EAAA3I,WAAA9B,GAGAyK,EAAA7H,KAAA,8BACAvE,SAAA,4BACAC,YAAA,6BACAmM,EAAA7H,KAAA,2BACAvE,SAAA,0BACAC,YAAA,0BACAwD,WAAA,wBACAc,KAAA,MACAd,WAAA,yBAGA,SAAA4I,EAAA1R,GAKA,SAAA2R,EAAAnS,EAAAqD,GACA,IAAA+O,EAAAC,EAAArS,GACAoS,GAAApV,EAAAoS,WAAAgD,IAAAA,EAAA5O,MAAAhD,EAAA6C,GANA,IAAA4O,EAAAjV,EAAAwD,GACAX,EAAAoS,EAAAhT,KAAAsS,GACAe,EAAAtV,EAAAuV,MAAAP,EAAAxR,GACA6R,EAAAf,EAAAF,YAAAjV,SAAA,GAwCA,OAlCA0D,IACAA,EAAA,CACA1D,QAAA,CACA6H,WAAAqO,EAAArO,YAAA,yBACAG,aAAAkO,EAAAlO,cAAA,OACAkJ,eAAA,YAvFA,SAAAhD,EAAAmI,GACA,IAAAC,EAAAzV,EAAAZ,MAAAgO,KAAA,qBAAAsH,EAAAc,EAAA,GAAAxS,MAAA,MACA0S,EAAAD,EAAAvT,KAAA,uBACA4E,EAAA4O,GAAA,IAAA1V,EAAA2V,UAAAD,GAAA,KAEAD,EAAA3M,YAAA,0BAAAD,SAAA,0BACAwE,EAAApL,KAAA,uBAAAwT,GAEA3O,GACA2O,EAAAG,QACAvI,EAAAvE,YAAA,0BAAA5F,SAAAuS,IAGApI,EAAAP,SA2EAtG,MAAAhD,EAAA4C,WACA+O,EAAA,iBAAA/O,YAEAsE,eAAA,YA1EA,SAAArI,EAAAL,GACA,IAAAyT,EAAAzV,EAAAZ,MAAAgO,KAAA,8BACAyI,EAAAJ,EAAArI,KAAA,MAEAyI,GAAAA,EAAA9T,QAAAC,EAAA+B,UAAAhC,SACA8T,EAAAD,QACAH,EAAA5M,SAAA,6BAAAC,YAAA,4BAEA9I,EAAAC,KAAA+B,EAAA+B,UAAA,WACA/D,EAAA,UAAAkQ,KAAA9Q,KAAA4M,SAAA9I,SAAA2S,QAkEArP,MAAAhD,EAAA4C,WACA+O,EAAA,iBAAA/O,YAEAvB,SAAA,GACAV,MAAA,GACAsL,QAAA,YAlEA,SAAApC,GACA,IAAAoI,EAAApI,EAAApL,KAAA,wBAEA,GAAAwT,EAAA,CACA,IAAAC,EAAAD,EAAAvT,KAAA,uBACA4E,EAAA4O,EAAA1V,EAAA2V,UAAAD,GAAA,KAEAD,EAAA5M,SAAA,0BAAAC,YAAA,0BACAuE,EAAAf,WAAA,wBAEAxF,GACA2O,EAAAG,WAwDApP,MAAAhD,EAAA4C,WACA+O,EAAA,UAAA/O,aAGA0P,iBAAA,WACAb,EACA1D,IAAA,SAAAgD,EAAAe,GACA7U,GAAA,SAAA8T,EAAAe,GACAxT,SAAA1C,KAAAD,UAEA2C,SAAA,WAEA,OADAmT,EAAAnT,WACAmT,EAAAnR,UAGAmR,EAAAhT,KAAAsS,EAAA1R,IAGAA,EAuQA,OApQAyR,EAAAF,YAAA,CACAC,SAAA,GAEA0B,aAAA,SAAA9R,EAAA+R,GASA,IAEAC,EAAA9R,EAAAU,EAFA4I,EAAAzN,EAAAiE,GACAT,EAAAiK,EAAA8C,QAAA,QAAA,GAGA/M,KAIAyS,EAAAf,EAAA1R,IACArE,QAAAgF,MAAAF,EAAAjB,MAAAmB,EAAA,GACA8R,EAAA9W,QAAA0F,SAAAZ,EAAAjB,MAAA6B,EAAA,GAEA7E,EAAAC,KAAAb,KAAAiV,SAAA,WACA,IAAAS,EAAA,YAAA1V,KAAA4D,KACAgJ,EAAAyB,EAAAvL,KAAA4S,GACAoB,EAAA,QAEAxT,IAAAsJ,IACA8I,GAAA,IAEA9U,EAAAC,KAAAb,KAAA+G,OAAA,WACA+P,EAAA9W,MAAAqO,EAAAvL,KAAA4S,EAAA1V,QAGAA,KAAA+W,MAAA,CACAlS,QAAAA,EACAT,KAAAA,EACAwI,QAAAA,EACA7F,OAAA+P,EACA/R,MAAAA,EACAU,SAAAA,OAKA7E,EAAA4B,OAAAuC,EAAA,CAAAiS,WAAA,IAEAJ,GACAC,EAAAH,qBAIAO,MAAA,SAAAhX,GAUA,IAAAiX,EAAAtW,EAAAX,GACAkX,EAAAD,EAAA/F,UACAiG,UACAvJ,OAAA,QACA/C,IAAAoM,EAAAlJ,KAAA,SACAqJ,IAAA,mBAEAH,EAAAlJ,KAAA,mBAAAnN,KAAA,WACAqU,EAAAF,YAAA2B,aAAA3W,MAAA,KAGAmX,EAAAtW,KAAA,WACA,IAAAyW,EAAAxB,EAAA9V,MACAsX,GACAA,EAAAZ,wBAMAzB,EAAAC,EAAAF,YAAAC,UAEAnK,IAAA,SAAAyM,EAAAxQ,EAAAtE,GAeA,OALAA,IACAA,EAAAsE,EACAA,EAAA,IAEA/G,KAAAuM,KAAA,CAAA3I,KAAA2T,EAAAxQ,OAAAA,EAAAgQ,MAAAtU,IACAzC,MAGAiV,EAAAuC,QAAA,SAAAD,EAAAlC,GAQA,OAAArV,KAAA8K,IAAAyM,EAAA,SAAAxX,GACAqV,EAAArV,EAAAsV,GAAAkC,GAAA,MAIAtC,EAAAwC,UAAA,SAAAF,EAAAG,EAAAC,EAAAC,EAAAC,EAAAC,GAiBA,OAAA9X,KAAA8K,IAAAyM,EAAA,CAAAM,GAAA,MAAAC,GAAA,OAAA,SAAA/X,GACA,IAAAyK,EAAAzK,EAAAgH,OAAAyD,IACAD,EAAAxK,EAAAgH,OAAAwD,IAEAC,GAAAD,EACA6K,EAAArV,EAAA6X,EAAA,CAAApN,EAAAD,IAEAC,EACA4K,EAAArV,EAAA2X,EAAAlN,GAEAD,GACA6K,EAAArV,EAAA4X,EAAApN,MAKA0K,EAAA8C,aAAA,SAAAR,EAAAS,EAAA3C,GAUA,OAAArV,KAAA8K,IAAAyM,EAAA,CAAAS,GAAA,OAAA,SAAAjY,GACAqV,EAAArV,EAAAsV,GAAAkC,EAAAxX,EAAAgH,OAAAiR,OAIA9C,EAAA9B,UAAA,YAAA,SAAA/H,EAAAxG,EAAAkC,GACA,OAAA,IAGAmO,EAAA9B,UAAA,QAAA,SAAA/H,EAAAxG,EAAAkC,GACA,IAAAxG,EACA,QAAAP,KAAA6I,SAAAhE,KAIAtE,EAAA,IAAAE,OAAAsG,GAAAkR,KAAA5M,KACA,IAAA9K,EAAAoF,OAAApF,EAAA,GAAAoC,SAAA0I,EAAA1I,SAGAuS,EAAA9B,UAAA,cAAA,SAAA/H,EAAAxG,EAAAqT,GACA,IAAA3X,EAKA,OAJA2X,IAEA3X,GADAA,EAAA8K,EAAA9K,MAAA,SACAA,EAAAoC,QAAAuV,GAEA3X,IAGA2U,EAAAnG,QAAAoJ,WACAlD,EAAA8C,aAAA,SAAA,WACA9C,EAAA8C,aAAA,YAAA,cAKA9C,EAAA8C,aAAA,YAAA,YAAA,UAGA9C,EAAA8C,aAAA,QAAA,WACA9C,EAAAuC,QAAA,cAAAA,QAAA,QAAAA,QAAA,UAAAA,QAAA,SAAAA,QAAA,UAAAA,QAAA,OACAvC,EAAAwC,UAAA,SAAA,YAAA,YAAA,eAAAA,UAAA,QAAA,MAAA,MAAA,SACAxC,EAAAwC,UAAA,YAAA,aAAAA,UAAA,YAAA,YAAA,aACAxC,EAAAnK,IAAA,UAAA,CAAA,SAAA,SAAA/K,GACA,IAAA2V,EAAAH,EAAAxV,EAAA8E,QAAAjB,MAEAwU,EAAA3C,EADA1V,EAAAgH,OAAAsR,MACA3C,GAGAN,EAAArV,EAAA,UAFAa,EAAAb,EAAAqE,MAAA4J,KAAA,UAAAH,OAAA,UAAAyH,EAAA8C,GAAA,MAAA,MAIAnD,EAAAnK,IAAA,WAAA,SAAA/K,GAEA,UAAAA,EAAA8E,QAAAyT,QAAAhJ,eAAA,aAAAvP,EAAA8E,QAAA0E,KAAA+F,eACA8F,EAAArV,EAAA,YAAA,KAGAkV,EAAAnK,IAAA,SAAA,CAAA,MAAA,OAAA,oBAAA,SAAA/K,GACA,IAAAsL,EAAA,CACAxB,IAAA9J,EAAAgH,OAAA8C,IACAN,KAAAxJ,EAAAgH,OAAAwC,MAAA,MACA1G,KAAA,IAEA6S,EAAAH,EAAAxV,EAAA8E,QAAAjB,MAEAhD,EAAAC,KA3WA,SAAAwK,GACA,OAAAA,EAAA3D,QAAA,aAAA,IAAAhC,MAAA,YA0WA6S,CAAAxY,EAAAgH,OAAAyR,kBAAAzY,EAAA8E,QAAAjB,MAAA,SAAA4D,EAAAgO,GACA,IAAAiD,EAAAhD,EAAAD,EAAAE,GACArK,EAAAxI,KAAA4V,GAAA,WACA,IAAAC,EAAA9X,EAAAb,EAAAqE,MAAA4J,KAAA,UAAAH,OAAA,UAAAyH,EAAAmD,GAAA,MAEA,OAAAC,EAAA9T,GAAA,aACA8T,EAAA7K,OAAA,YAAAhK,OAAA6U,EAAA7K,OAAA,WAAAhK,OAAA,GAEA6U,EAAA9T,GAAA,UACA8T,EAAA7K,OAAA,YAAAhK,OAAA,GAEA6U,EAAA7U,SAIAuR,EAAArV,EAAA,SAAAsL,KAEA4J,EAAAnK,IAAA,WAAA,CAAA,MAAA,cAAA,SAAA,SAAA/K,GACAA,EAAAgH,OAAAyD,KACA4K,EAAArV,EAAA,YAAAA,EAAAgH,OAAAyD,KAEAzK,EAAAgH,OAAAmR,aACA9C,EAAArV,EAAA,cAAAA,EAAAgH,OAAAmR,aAEAnY,EAAAgH,OAAA4R,OACAvD,EAAArV,EAAA,QAAAA,EAAAgH,OAAA4R,SAGA1D,EAAAnK,IAAA,iBAAA,CAAA,cAAA,SAAA/K,GACAqV,EAAArV,EAAA,YAAAA,EAAAgH,OAAA6R,cAGAhY,EAAA,WACAsU,EAAAF,YAAAiC,MAAA7V,YAGA8T,EAAAF,cC3ZA,SAAApU,GACA,IAAAiY,EAAA,uBACAC,EAAA,6BAGA,SAAAC,EAAAC,EAAAC,GAEA,IADA,IAAAxW,EAAA8B,OAAA0O,GAAA+F,GAAA,IAAAtT,MAAA,KACAjD,GAAAwQ,EAAAtQ,QACAF,EAAAA,EAAAwQ,EAAAiG,SAEA,MAAA,mBAAA,EACAzW,GAEAwW,EAAA1M,KAAAyM,GACAG,SAAA9R,YAAAD,MAAA,KAAA6R,IAGA,SAAAG,EAAAxT,GACA,MAAA,QAAAA,GAAA,SAAAA,EAqCA,SAAAyT,EAAAxU,EAAA9E,GACA,IAAAuZ,EAAAC,EAAA3T,EAAA4T,EAGA,KADAF,EAAAzU,EAAA+N,aAAA,uBACArO,OAAA+U,QAAAA,GAAA,CAIAC,EAAA3Y,EAAAiE,EAAA+N,aAAA,sBACA4G,EAAAC,SAAA5U,EAAA+N,aAAA,8BAAA,KAAA,EAEAhS,EAAA4B,OAAAzC,EAAA,CACAwJ,KAAA1E,EAAA+N,aAAA,0BAAAtP,EACAuG,IAAAhF,EAAA+N,aAAA,uBAAAtP,EACAoW,MAAA,UAAA7U,EAAA+N,aAAA,oBAAA,IAAApD,cACAmK,WAAA,SAAA9E,GACA,IAAApR,EAMA,OAxDA,SAAAoR,EAAAjP,GACAwT,EAAAxT,IACAiP,EAAA+E,iBAAA,yBAAAhU,GAiDAiU,CAAAhF,EAAAjP,IAEA,KADAnC,EAAAsV,EAAAlU,EAAA+N,aAAA,mBAAA,CAAA,QAAAxL,MAAAvC,EAAAmC,aAEAuS,EAAAhJ,KAAAiJ,GAEA/V,GAEAqW,SAAA,WACAP,EAAA7L,KAAA8L,GACAT,EAAAlU,EAAA+N,aAAA,sBAAA,CAAA,MAAA,WAAAxL,MAAAvC,EAAAmC,YAEAqJ,QAAA,SAAAxN,EAAAkX,EAAAlF,IAxDA,SAAAhQ,EAAAhC,EAAAmX,GACA,IAAA3F,GAEA,IAAA2F,EAAArE,QAAA,8BAIAtB,GAAAxP,EAAA+N,aAAA,mBAAA,IAAAtD,cACA1O,EAAAiE,EAAA+N,aAAA,qBAAA/R,KAAA,SAAA2G,EAAAyS,GAGA,OAAA5F,GACA,IAAA,SACAzT,EAAAqZ,GAAAC,QAAArX,GACA,MACA,IAAA,QACAjC,EAAAqZ,GAAAjJ,OAAAnO,GACA,MACA,IAAA,eACAjC,EAAAqZ,GAAAE,YAAAtX,GACA,MACA,QACAjC,EAAAqZ,GAAAnJ,KAAAjO,OAmCAuX,CAAAvV,EAAAhC,EAAAgS,EAAAwF,kBAAA,iBAAA,aACAtB,EAAAlU,EAAA+N,aAAA,qBAAA,CAAA,OAAA,SAAA,QAAAxL,MAAAvC,EAAAmC,YAEAiH,MAAA,WACA8K,EAAAlU,EAAA+N,aAAA,qBAAA,CAAA,MAAA,SAAA,UAAAxL,MAAAvC,EAAAmC,cAIAjH,EAAA8C,KAAA0J,KAAA,CAAA3I,KAAA,mBAAAyH,MAAA,mBAGA+N,EADAxT,EAAA7F,EAAAwJ,KAAA+F,iBAEAvP,EAAAwJ,KAAA,OACAxJ,EAAA8C,KAAA0J,KAAA,CAAA3I,KAAA,yBAAAyH,MAAAzF,KAOA,IAAAyI,EAAAzN,EAAAiE,GACA,GAAAwJ,EAAAzJ,GAAA,SAAA,uBAAAyJ,EAAAvL,KAAA,WAAA,CACA,IAAAwX,EAAA,IAAAC,SACA3Z,EAAAC,KAAAd,EAAA8C,KAAA,SAAA2E,EAAAzG,GACAuZ,EAAAtJ,OAAAjQ,EAAA6C,KAAA7C,EAAAsK,SAEAzK,EAAA,mBAAAyN,GAAAxN,KAAA,WACA,IAAA2Z,EAAAxa,KACAY,EAAAC,KAAA2Z,EAAAC,MAAA,SAAAhT,EAAA1G,GACAuZ,EAAAtJ,OAAAwJ,EAAA5W,KAAA7C,OAGAH,EAAA4B,OAAAzC,EAAA,CACA2a,aAAA,EACAV,aAAA,EACAnX,KAAAyX,IAKA1Z,EAAAwT,KAAArU,IAQAa,EAAAQ,UAAAC,GAAA,QAAA,oBAAA,SAAAsZ,GACAA,EAAAxW,iBACAkV,EAAArZ,KAAA,CACA6J,IAAA7J,KAAA4a,KACArR,KAAA,MACA1G,KAAA,OAIAjC,EAAAQ,UAAAC,GAAA,QAAA,yCAAA,SAAAsZ,GACA,IAAA/W,EAAA+W,EAAA7Y,OAAA8B,KACA9B,EAAAlB,EAAA+Z,EAAA7Y,QACAsC,EAAAxD,EAAAkB,EAAAqP,QAAA,QAAA,IACA0J,EAAA/Y,EAAA+Y,SAEAzW,EAAAvB,KAAAgW,EAAA,CACA,CAAAjV,KAAAA,EAAA,KAAAyH,MAAAqI,KAAAC,MAAAgH,EAAAG,MAAAD,EAAAE,OACA,CAAAnX,KAAAA,EAAA,KAAAyH,MAAAqI,KAAAC,MAAAgH,EAAAK,MAAAH,EAAAI,QAGAC,WAAA,WACA9W,EAAA8I,WAAA2L,IACA,KAGAjY,EAAAQ,UAAAC,GAAA,QAAA,+BAAA,SAAAsZ,GACA,IAAA/W,EAAA+W,EAAAxX,cAAAS,KACA9B,EAAAlB,EAAA+Z,EAAA7Y,QACAsC,EAAAxD,EAAAkB,EAAAqP,QAAA,QAAA,IAEA/M,EAAAvB,KAAAgW,EAAAjV,EAAA,CAAA,CAAAA,KAAAA,EAAAyH,MAAAsP,EAAAxX,cAAAkI,QAAA,IACAjH,EAAAvB,KAAAiW,EAAAhX,GAEAoZ,WAAA,WACA9W,EAAA8I,WAAA2L,GACAzU,EAAA8I,WAAA4L,IACA,KAGAlY,EAAAQ,UAAAC,GAAA,SAAA,uBAAA,SAAAsZ,GACA,IAAAQ,EAAAva,EAAAZ,MAAA6C,KAAAgW,IAAA,GACAuC,EAAAxa,EAAAZ,MAAA6C,KAAAiW,GACAuC,EAAAD,IAAAA,EAAAhY,SAAA,gBAAAE,IAAA8X,EAAAtY,KAAA,mBACA6X,EAAAxW,kBACAkX,GAjDA,SAAAjX,GACA,IAAA0R,EAAAlV,EAAAwD,GAAAvB,KA7HA,yBA8HA,OAAAiT,IAAAA,EAAApT,UAAAoT,EAAApT,WA+CAA,CAAA1C,QAGAqZ,EAAArZ,KAAA,CACA6J,IAAA7J,KAAAsb,OACA/R,KAAAvJ,KAAA4F,QAAA,MACA/C,KAAAsY,EAAArW,OAAAlE,EAAAZ,MAAAub,sBAtLA,CAyLAjZ,QC3MA,SAAAf,EAAAia,GAAA,aAAAja,EAAAka,eAAA,iBAAAla,EAAAma,iBAAA,UAAA,SAAAna,GAAA,IAAA,IAAA,CAAA,kBAAA,sBAAA,sBAAA,kBAAAoU,QAAApU,EAAAoa,OAAAjU,QAAA,gBAAA,KAAA,OAAA,EAAA,IAAAF,EAAA,SAAAjG,GAAA,IAAA,EAAAA,EAAAoU,QAAA,KAAA,OAAAiG,KAAA3E,MAAA1V,GAAA,IAAAiG,EAAAjG,EAAAmE,MAAA,KAAA,MAAA,CAAAmW,SAAArU,EAAA,GAAAE,QAAA,cAAA,IAAAA,QAAA,gBAAAiG,KAAAnG,EAAA,IAAA,CAAAjG,EAAAsB,MAAA,GAAA2E,EAAAmG,MAAA,EAAA,OAAA,EAAA,GAAAmO,QAAA7X,KAAAuX,EAAAO,iBAAA,wCAAAvU,EAAAqU,SAAA,0CAAArU,EAAAqU,SAAA,MAAA,SAAAta,GAAAA,EAAAya,MAAAC,OAAAzU,EAAAmG,KAAA,SAAA,GAAApM,EAAA2a,YAAA,IAAA,CAAA3X,OAAAnD,UC6BA,IAAA+a,aAAA,EA+HA,SAAAC,wBACAxb,EAAA,sCAAA8F,KAAA,YAAA,GAGA,SAAA2V,yBAAAxZ,GACAjC,EAAA,sCAAA8F,KAAA,YAAA,GACA9F,EAAA,qCAAAiD,IAAA,IACAhB,EAAAyZ,aAAAjM,UACAzP,EAAA,yBAAA6I,SAAA,UACA7I,EAAA,iBAAA8I,YAAA,UACA9I,EAAA,2BAAA4M,KAAA3K,EAAAyZ,aAAA1P,SACAhM,EAAA,wBAAA4M,KAAA3K,EAAAyZ,aAAAC,cAMAJ,aAAA,EA9IAvb,EAAA,WAgBA,GAAAA,EAAA,QAAAiC,KAAA,iBACAsZ,aAAA,GAGA5X,OAAAmX,iBAAA,WAAA,SAAAna,GACAA,EAAAM,QANA,IAQAsa,cAAAvb,EAAA,2BAAAgE,GAAA,cACAhE,EAAA,oBAAA8I,YAAA,UACA9I,EAAA,yBAAA6I,SAAA,UACA0S,aAAA,EACAvb,EAAA4b,IAAA,eAEA5b,EAAA,gBAAA6b,MAAA,WAGA,GAEA7b,EAAA,2DAAAS,GAAA,SAAA,WACA,IAAAqb,EAAA9b,EAAAZ,MAAAgO,KAAA,SAAAnK,MAWA,OATAjD,EAAA,qBAAAiD,IAAA6Y,GACA9b,EAAA,iBAAA6I,SAAA,UACA7I,EAAA,oBAAA6I,SAAA,UACA7I,EAAA,yBAAA8I,YAAA,UACA9I,EAAA,gBAAA6b,MAAA,QACA7b,EAAA,yBAAAkN,QACAlN,EAAAZ,MAAAgO,KAAA,UAAA5K,SAAA,iBACAxC,EAAA,+CAAAiD,IAAA,SAEA,IA0BAjD,EAAA,2BAAA+b,UAEAC,eAAAC,QAAA,2BACAjc,EAAA,sBAAAS,GAAA,iBAAA,WACAT,EAAA,mBAAA6I,SAAA,gCACAgT,MAAA,QACAG,eAAAE,QAAA,wBAAA,SAGAC,UAAA1b,GAAA,YAAA,SAAAoC,GACAA,GACA7C,EAAA,mBAAAC,KAAA,WACA,KAAAD,EAAAZ,MAAA6C,KAAA,cACAjC,EAAAZ,MAAAoD,SAAA,QACAxC,EAAAZ,MAAA8C,KAAA,WAAAlC,EAAAZ,MAAA6C,KAAA,aAEAjC,EAAAZ,MAAA8C,KAAA,MAAAlC,EAAAZ,MAAA6C,KAAA,cAGAjC,EAAAZ,MAAAmN,WAAA,qBAKA,IAAA6P,EAAA,EACAC,GAAA,EAYA1Y,OAAAmX,iBAAA,SAAA,SAAAna,GACAyb,EAAApc,EAAAQ,UAAA8b,YAEAD,IACA1Y,OAAA4Y,sBAAA,YAdA,SAAAC,GACA,IAAAA,GAAAA,GAAAxc,EAAA,kBAAAyc,QAAAxC,SAAAI,KACAra,EAAA,WAAA8I,YAAA,aAAAD,SAAA,UACA7I,EAAA,iBAAA6I,SAAA,SACA,GAAA2T,IACAxc,EAAA,WAAA8I,YAAA,UAAAD,SAAA,aACA7I,EAAA,iBAAA8I,YAAA,SASA4T,CAAAN,GACAC,GAAA,IAGAA,GAAA,KAIAnd,sBAAAmB,WAAA,MA0BA,WAGA,IAFA,IAAAsc,EAAA,EACAC,EAAA,CAAA,KAAA,MAAA,SAAA,KACAC,EAAA,EAAAA,EAAAD,EAAA7a,SAAA4B,OAAA4Y,wBAAAM,EACAlZ,OAAA4Y,sBAAA5Y,OAAAiZ,EAAAC,GAAA,yBACAlZ,OAAAmZ,qBAAAnZ,OAAAiZ,EAAAC,GAAA,yBACAlZ,OAAAiZ,EAAAC,GAAA,+BAGAlZ,OAAA4Y,wBACA5Y,OAAA4Y,sBAAA,SAAAQ,EAAA9Y,GACA,IAAA+Y,GAAA,IAAAvK,MAAAwK,UACAC,EAAApK,KAAAnJ,IAAA,EAAA,IAAAqT,EAAAL,IACArO,EAAA3K,OAAA2W,WAAA,WAAAyC,EAAAC,EAAAE,IACAA,GAEA,OADAP,EAAAK,EAAAE,EACA5O,IAGA3K,OAAAmZ,uBACAnZ,OAAAmZ,qBAAA,SAAAxO,GACA6O,aAAA7O,KArBA,GA4BA,SAAAzH,EAAAlG,GAAA,SAAAia,EAAA/T,GAAA,IAAAlG,EAAAyc,EAAAzL,UAAA0L,EAAAlB,EAAAmB,QAAAC,aAAA,GAAA,GAAAC,IAAA7c,EAAAA,EAAA8c,SAAAtB,EAAAmB,QAAAI,cAAA,CAAA,IAAA9C,EAAA,IAAA/a,OAAA,UAAAwd,EAAA,gBAAA1c,EAAAA,EAAAmG,QAAA8T,EAAA,KAAAyC,EAAA,QAAAlB,EAAAmB,QAAAK,gBAAAhd,GAAA,IAAA0c,EAAAxW,EAAAnG,KAAA,IAAA2c,GAAAG,EAAAJ,EAAAzL,UAAA8L,QAAA9c,EAAAyc,EAAAzL,UAAAhR,GAAA,SAAAid,EAAA/W,EAAAlG,GAAA,cAAAkG,IAAAlG,EAAA,SAAAiG,EAAAC,EAAAlG,GAAA,GAAA,iBAAAkG,EAAA,IAAA,IAAAwW,KAAAxW,EAAAgX,EAAAhX,EAAAwW,IAAAzW,EAAAyW,EAAAxW,EAAAwW,QAAA,CAAA,IAAAO,GAAA/W,EAAAA,EAAA+H,eAAA9J,MAAA,KAAAY,EAAAyW,EAAAyB,EAAA,IAAA,GAAA,GAAAA,EAAA7b,SAAA2D,EAAAA,EAAAkY,EAAA,UAAA,IAAAlY,EAAA,OAAAyW,EAAAxb,EAAA,mBAAAA,EAAAA,IAAAA,EAAA,GAAAid,EAAA7b,OAAAoa,EAAAyB,EAAA,IAAAjd,IAAAwb,EAAAyB,EAAA,KAAAzB,EAAAyB,EAAA,cAAAE,UAAA3B,EAAAyB,EAAA,IAAA,IAAAE,QAAA3B,EAAAyB,EAAA,MAAAzB,EAAAyB,EAAA,IAAAA,EAAA,IAAAjd,GAAAia,EAAA,EAAAja,GAAA,GAAAA,EAAA,GAAA,OAAAid,EAAAld,KAAA,OAAAyb,EAAA4B,SAAAlX,EAAAlG,GAAA,OAAAwb,EAAA,IAAA6B,EAAA,GAAAC,EAAA,GAAAC,EAAA,CAAAC,SAAA,QAAAb,QAAA,CAAAC,YAAA,GAAAI,eAAA,EAAAD,eAAA,EAAAU,aAAA,GAAAC,GAAA,GAAA5d,GAAA,SAAAoG,EAAAlG,GAAA,IAAA0c,EAAAje,KAAAkb,WAAA,WAAA3Z,EAAA0c,EAAAxW,KAAA,IAAAyX,QAAA,SAAAzX,EAAAlG,EAAA0c,GAAAY,EAAAtS,KAAA,CAAA3I,KAAA6D,EAAAhF,GAAAlB,EAAAxB,QAAAke,KAAAkB,aAAA,SAAA1X,GAAAoX,EAAAtS,KAAA,CAAA3I,KAAA,KAAAnB,GAAAgF,MAAAsV,EAAA,aAAAA,EAAA5b,UAAA2d,EAAA/B,EAAA,IAAAA,EAAA,IAAA0B,EAAAhX,EAAAuW,EAAAzc,EAAA6d,gBAAAhB,EAAA,QAAAJ,EAAAxM,SAAAhC,cAAAiP,EAAAD,EAAA/W,EAAA,GAAAgU,eAAA,cAAA+C,EAAA/W,EAAAxD,KAAA,aAAA,SAAAwD,EAAAlG,GAAA,OAAAA,KAAAkG,GAAA+W,EAAA/W,EAAAJ,YAAAlG,UAAAI,GAAA,cAAA,SAAAA,EAAA0c,GAAA,OAAAxW,EAAAxD,KAAA1C,EAAA0c,IAAAa,EAAAO,GAAA,GAAAP,EAAAzd,GAAA,SAAAoG,EAAAlG,GAAAvB,KAAAqf,GAAA5X,KAAAzH,KAAAqf,GAAA5X,GAAA,IAAAzH,KAAAqf,GAAA5X,GAAA8E,KAAAhL,GAAAwb,EAAAtB,eAAAhU,IAAAyT,WAAA,WAAA6B,EAAA4B,SAAAlX,EAAAsV,EAAAtV,KAAA,IAAAqX,EAAAH,SAAA,SAAAlX,EAAAlG,GAAA,GAAAvB,KAAAqf,GAAA5X,GAAA,CAAA,IAAAwW,EAAAje,KAAAqf,GAAA5X,GAAAyT,WAAA,WAAA,IAAAzT,EAAA,IAAAA,EAAA,EAAAA,EAAAwW,EAAAtb,OAAA8E,KAAA,EAAAwW,EAAAxW,IAAAlG,IAAA,UAAAvB,KAAAqf,GAAA5X,KAAAsV,EAAAkC,GAAA1S,KAAA,WAAAuS,EAAAI,QAAA1X,IAAAuV,EAAAoC,aAAA,WAAA,IAAA1X,EAAA,IAAA6X,MAAA7X,EAAA8X,QAAA,WAAA/X,EAAA,aAAA,IAAAC,EAAA+X,OAAA,WAAAhY,EAAA,YAAA,GAAAC,EAAAgY,QAAAhY,EAAAiY,IAAA,4IAAA,WAAA,IAAAjY,EAAAlG,EAAA0c,EAAAzC,EAAAlV,EAAAwY,EAAA,IAAA,IAAAL,KAAAI,EAAA,GAAAA,EAAApD,eAAAgD,GAAA,CAAA,GAAAhX,EAAA,IAAAlG,EAAAsd,EAAAJ,IAAA7a,OAAA6D,EAAA8E,KAAAhL,EAAAqC,KAAA4L,eAAAjO,EAAAxB,SAAAwB,EAAAxB,QAAA4f,SAAApe,EAAAxB,QAAA4f,QAAAhd,QAAA,IAAAsb,EAAA,EAAAA,EAAA1c,EAAAxB,QAAA4f,QAAAhd,OAAAsb,IAAAxW,EAAA8E,KAAAhL,EAAAxB,QAAA4f,QAAA1B,GAAAzO,eAAA,IAAAgM,EAAAgD,EAAAjd,EAAAkB,GAAA,YAAAlB,EAAAkB,KAAAlB,EAAAkB,GAAA6D,EAAA,EAAAA,EAAAmB,EAAA9E,OAAA2D,IAAA,KAAAwY,EAAArX,EAAAnB,GAAAZ,MAAA,MAAA/C,OAAAoa,EAAA+B,EAAA,IAAAtD,IAAAuB,EAAA+B,EAAA,KAAA/B,EAAA+B,EAAA,cAAAJ,UAAA3B,EAAA+B,EAAA,IAAA,IAAAJ,QAAA3B,EAAA+B,EAAA,MAAA/B,EAAA+B,EAAA,IAAAA,EAAA,IAAAtD,GAAAoD,EAAArS,MAAAiP,EAAA,GAAA,OAAAsD,EAAAxd,KAAA,OAAAgF,GAAAkV,EAAAoD,UAAAE,EAAAI,eAAAJ,EAAAK,aAAA,IAAA,IAAAS,EAAA,EAAAA,EAAA7C,EAAAkC,GAAAtc,OAAAid,IAAA7C,EAAAkC,GAAAW,KAAAnY,EAAAsV,UAAAA,EAAA,CAAAxY,OAAAnD","file":"site-light.min.js","sourcesContent":["/*\r\n * Pointer Events Polyfill: Adds support for the style attribute\r\n * \"pointer-events: none\" to browsers without this feature (namely, IE).\r\n * (c) 2013, Kent Mewhort, licensed under BSD. See LICENSE.txt for details.\r\n */\r\n\r\n// constructor\r\nfunction PointerEventsPolyfill(options) {\r\n // set defaults\r\n this.options = {\r\n selector: '*',\r\n mouseEvents: ['click', 'dblclick', 'mousedown', 'mouseup'],\r\n usePolyfillIf: function() {\r\n if (navigator.appName == 'Microsoft Internet Explorer')\r\n {\r\n /* jshint ignore:start */\r\n var agent = navigator.userAgent;\r\n if (agent.match(/MSIE ([0-9]{1,}[\\.0-9]{0,})/) != null) {\r\n var version = parseFloat(RegExp.$1);\r\n if (version < 11)\r\n return true;\r\n }\r\n /* jshint ignore:end */\r\n }\r\n return false;\r\n }\r\n };\r\n if (options) {\r\n var obj = this;\r\n $.each(options, function(k, v) {\r\n obj.options[k] = v;\r\n });\r\n }\r\n\r\n if (this.options.usePolyfillIf())\r\n this.register_mouse_events();\r\n}\r\n\r\n\r\n/**\r\n * singleton initializer\r\n *\r\n * @param {object} options Polyfill options.\r\n * @return {object} The polyfill object.\r\n */\r\n\r\nPointerEventsPolyfill.initialize = function(options) {\r\n/* jshint ignore:start */\r\n if (PointerEventsPolyfill.singleton == null)\r\n PointerEventsPolyfill.singleton = new PointerEventsPolyfill(options);\r\n/* jshint ignore:end */\r\n return PointerEventsPolyfill.singleton;\r\n};\r\n\r\n\r\n/**\r\n * handle mouse events w/ support for pointer-events: none\r\n */\r\nPointerEventsPolyfill.prototype.register_mouse_events = function() {\r\n // register on all elements (and all future elements) matching the selector\r\n $(document).on(\r\n this.options.mouseEvents.join(' '),\r\n this.options.selector,\r\n function(e) {\r\n if ($(this).css('pointer-events') == 'none') {\r\n // peak at the element below\r\n var origDisplayAttribute = $(this).css('display');\r\n $(this).css('display', 'none');\r\n\r\n var underneathElem = document.elementFromPoint(\r\n e.clientX,\r\n e.clientY);\r\n\r\n if (origDisplayAttribute)\r\n $(this)\r\n .css('display', origDisplayAttribute);\r\n else\r\n $(this).css('display', '');\r\n\r\n // fire the mouse event on the element below\r\n e.target = underneathElem;\r\n $(underneathElem).trigger(e);\r\n\r\n return false;\r\n }\r\n return true;\r\n });\r\n};\r\n","/*!\r\n * jQuery Validation Plugin v1.19.0\r\n *\r\n * https://jqueryvalidation.org/\r\n *\r\n * Copyright (c) 2018 Jörn Zaefferer\r\n * Released under the MIT license\r\n */\r\n(function( factory ) {\r\n\tif ( typeof define === \"function\" && define.amd ) {\r\n\t\tdefine( [\"jquery\"], factory );\r\n\t} else if (typeof module === \"object\" && module.exports) {\r\n\t\tmodule.exports = factory( require( \"jquery\" ) );\r\n\t} else {\r\n\t\tfactory( jQuery );\r\n\t}\r\n}(function( $ ) {\r\n\r\n$.extend( $.fn, {\r\n\r\n\t// https://jqueryvalidation.org/validate/\r\n\tvalidate: function( options ) {\r\n\r\n\t\t// If nothing is selected, return nothing; can't chain anyway\r\n\t\tif ( !this.length ) {\r\n\t\t\tif ( options && options.debug && window.console ) {\r\n\t\t\t\tconsole.warn( \"Nothing selected, can't validate, returning nothing.\" );\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Check if a validator for this form was already created\r\n\t\tvar validator = $.data( this[ 0 ], \"validator\" );\r\n\t\tif ( validator ) {\r\n\t\t\treturn validator;\r\n\t\t}\r\n\r\n\t\t// Add novalidate tag if HTML5.\r\n\t\tthis.attr( \"novalidate\", \"novalidate\" );\r\n\r\n\t\tvalidator = new $.validator( options, this[ 0 ] );\r\n\t\t$.data( this[ 0 ], \"validator\", validator );\r\n\r\n\t\tif ( validator.settings.onsubmit ) {\r\n\r\n\t\t\tthis.on( \"click.validate\", \":submit\", function( event ) {\r\n\r\n\t\t\t\t// Track the used submit button to properly handle scripted\r\n\t\t\t\t// submits later.\r\n\t\t\t\tvalidator.submitButton = event.currentTarget;\r\n\r\n\t\t\t\t// Allow suppressing validation by adding a cancel class to the submit button\r\n\t\t\t\tif ( $( this ).hasClass( \"cancel\" ) ) {\r\n\t\t\t\t\tvalidator.cancelSubmit = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Allow suppressing validation by adding the html5 formnovalidate attribute to the submit button\r\n\t\t\t\tif ( $( this ).attr( \"formnovalidate\" ) !== undefined ) {\r\n\t\t\t\t\tvalidator.cancelSubmit = true;\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\r\n\t\t\t// Validate the form on submit\r\n\t\t\tthis.on( \"submit.validate\", function( event ) {\r\n\t\t\t\tif ( validator.settings.debug ) {\r\n\r\n\t\t\t\t\t// Prevent form submit to be able to see console output\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfunction handle() {\r\n\t\t\t\t\tvar hidden, result;\r\n\r\n\t\t\t\t\t// Insert a hidden input as a replacement for the missing submit button\r\n\t\t\t\t\t// The hidden input is inserted in two cases:\r\n\t\t\t\t\t// - A user defined a `submitHandler`\r\n\t\t\t\t\t// - There was a pending request due to `remote` method and `stopRequest()`\r\n\t\t\t\t\t// was called to submit the form in case it's valid\r\n\t\t\t\t\tif ( validator.submitButton && ( validator.settings.submitHandler || validator.formSubmitted ) ) {\r\n\t\t\t\t\t\thidden = $( \"\" )\r\n\t\t\t\t\t\t\t.attr( \"name\", validator.submitButton.name )\r\n\t\t\t\t\t\t\t.val( $( validator.submitButton ).val() )\r\n\t\t\t\t\t\t\t.appendTo( validator.currentForm );\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif ( validator.settings.submitHandler && !validator.settings.debug ) {\r\n\t\t\t\t\t\tresult = validator.settings.submitHandler.call( validator, validator.currentForm, event );\r\n\t\t\t\t\t\tif ( hidden ) {\r\n\r\n\t\t\t\t\t\t\t// And clean up afterwards; thanks to no-block-scope, hidden can be referenced\r\n\t\t\t\t\t\t\thidden.remove();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif ( result !== undefined ) {\r\n\t\t\t\t\t\t\treturn result;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Prevent submit for invalid forms or custom submit handlers\r\n\t\t\t\tif ( validator.cancelSubmit ) {\r\n\t\t\t\t\tvalidator.cancelSubmit = false;\r\n\t\t\t\t\treturn handle();\r\n\t\t\t\t}\r\n\t\t\t\tif ( validator.form() ) {\r\n\t\t\t\t\tif ( validator.pendingRequest ) {\r\n\t\t\t\t\t\tvalidator.formSubmitted = true;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn handle();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvalidator.focusInvalid();\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t\t}\r\n\r\n\t\treturn validator;\r\n\t},\r\n\r\n\t// https://jqueryvalidation.org/valid/\r\n\tvalid: function() {\r\n\t\tvar valid, validator, errorList;\r\n\r\n\t\tif ( $( this[ 0 ] ).is( \"form\" ) ) {\r\n\t\t\tvalid = this.validate().form();\r\n\t\t} else {\r\n\t\t\terrorList = [];\r\n\t\t\tvalid = true;\r\n\t\t\tvalidator = $( this[ 0 ].form ).validate();\r\n\t\t\tthis.each( function() {\r\n\t\t\t\tvalid = validator.element( this ) && valid;\r\n\t\t\t\tif ( !valid ) {\r\n\t\t\t\t\terrorList = errorList.concat( validator.errorList );\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t\t\tvalidator.errorList = errorList;\r\n\t\t}\r\n\t\treturn valid;\r\n\t},\r\n\r\n\t// https://jqueryvalidation.org/rules/\r\n\trules: function( command, argument ) {\r\n\t\tvar element = this[ 0 ],\r\n\t\t\tisContentEditable = typeof this.attr( \"contenteditable\" ) !== \"undefined\" && this.attr( \"contenteditable\" ) !== \"false\",\r\n\t\t\tsettings, staticRules, existingRules, data, param, filtered;\r\n\r\n\t\t// If nothing is selected, return empty object; can't chain anyway\r\n\t\tif ( element == null ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif ( !element.form && isContentEditable ) {\r\n\t\t\telement.form = this.closest( \"form\" )[ 0 ];\r\n\t\t\telement.name = this.attr( \"name\" );\r\n\t\t}\r\n\r\n\t\tif ( element.form == null ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif ( command ) {\r\n\t\t\tsettings = $.data( element.form, \"validator\" ).settings;\r\n\t\t\tstaticRules = settings.rules;\r\n\t\t\texistingRules = $.validator.staticRules( element );\r\n\t\t\tswitch ( command ) {\r\n\t\t\tcase \"add\":\r\n\t\t\t\t$.extend( existingRules, $.validator.normalizeRule( argument ) );\r\n\r\n\t\t\t\t// Remove messages from rules, but allow them to be set separately\r\n\t\t\t\tdelete existingRules.messages;\r\n\t\t\t\tstaticRules[ element.name ] = existingRules;\r\n\t\t\t\tif ( argument.messages ) {\r\n\t\t\t\t\tsettings.messages[ element.name ] = $.extend( settings.messages[ element.name ], argument.messages );\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"remove\":\r\n\t\t\t\tif ( !argument ) {\r\n\t\t\t\t\tdelete staticRules[ element.name ];\r\n\t\t\t\t\treturn existingRules;\r\n\t\t\t\t}\r\n\t\t\t\tfiltered = {};\r\n\t\t\t\t$.each( argument.split( /\\s/ ), function( index, method ) {\r\n\t\t\t\t\tfiltered[ method ] = existingRules[ method ];\r\n\t\t\t\t\tdelete existingRules[ method ];\r\n\t\t\t\t} );\r\n\t\t\t\treturn filtered;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tdata = $.validator.normalizeRules(\r\n\t\t$.extend(\r\n\t\t\t{},\r\n\t\t\t$.validator.classRules( element ),\r\n\t\t\t$.validator.attributeRules( element ),\r\n\t\t\t$.validator.dataRules( element ),\r\n\t\t\t$.validator.staticRules( element )\r\n\t\t), element );\r\n\r\n\t\t// Make sure required is at front\r\n\t\tif ( data.required ) {\r\n\t\t\tparam = data.required;\r\n\t\t\tdelete data.required;\r\n\t\t\tdata = $.extend( { required: param }, data );\r\n\t\t}\r\n\r\n\t\t// Make sure remote is at back\r\n\t\tif ( data.remote ) {\r\n\t\t\tparam = data.remote;\r\n\t\t\tdelete data.remote;\r\n\t\t\tdata = $.extend( data, { remote: param } );\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n} );\r\n\r\n// Custom selectors\r\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\r\n\r\n\t// https://jqueryvalidation.org/blank-selector/\r\n\tblank: function( a ) {\r\n\t\treturn !$.trim( \"\" + $( a ).val() );\r\n\t},\r\n\r\n\t// https://jqueryvalidation.org/filled-selector/\r\n\tfilled: function( a ) {\r\n\t\tvar val = $( a ).val();\r\n\t\treturn val !== null && !!$.trim( \"\" + val );\r\n\t},\r\n\r\n\t// https://jqueryvalidation.org/unchecked-selector/\r\n\tunchecked: function( a ) {\r\n\t\treturn !$( a ).prop( \"checked\" );\r\n\t}\r\n} );\r\n\r\n// Constructor for validator\r\n$.validator = function( options, form ) {\r\n\tthis.settings = $.extend( true, {}, $.validator.defaults, options );\r\n\tthis.currentForm = form;\r\n\tthis.init();\r\n};\r\n\r\n// https://jqueryvalidation.org/jQuery.validator.format/\r\n$.validator.format = function( source, params ) {\r\n\tif ( arguments.length === 1 ) {\r\n\t\treturn function() {\r\n\t\t\tvar args = $.makeArray( arguments );\r\n\t\t\targs.unshift( source );\r\n\t\t\treturn $.validator.format.apply( this, args );\r\n\t\t};\r\n\t}\r\n\tif ( params === undefined ) {\r\n\t\treturn source;\r\n\t}\r\n\tif ( arguments.length > 2 && params.constructor !== Array ) {\r\n\t\tparams = $.makeArray( arguments ).slice( 1 );\r\n\t}\r\n\tif ( params.constructor !== Array ) {\r\n\t\tparams = [ params ];\r\n\t}\r\n\t$.each( params, function( i, n ) {\r\n\t\tsource = source.replace( new RegExp( \"\\\\{\" + i + \"\\\\}\", \"g\" ), function() {\r\n\t\t\treturn n;\r\n\t\t} );\r\n\t} );\r\n\treturn source;\r\n};\r\n\r\n$.extend( $.validator, {\r\n\r\n\tdefaults: {\r\n\t\tmessages: {},\r\n\t\tgroups: {},\r\n\t\trules: {},\r\n\t\terrorClass: \"error\",\r\n\t\tpendingClass: \"pending\",\r\n\t\tvalidClass: \"valid\",\r\n\t\terrorElement: \"label\",\r\n\t\tfocusCleanup: false,\r\n\t\tfocusInvalid: true,\r\n\t\terrorContainer: $( [] ),\r\n\t\terrorLabelContainer: $( [] ),\r\n\t\tonsubmit: true,\r\n\t\tignore: \":hidden\",\r\n\t\tignoreTitle: false,\r\n\t\tonfocusin: function( element ) {\r\n\t\t\tthis.lastActive = element;\r\n\r\n\t\t\t// Hide error label and remove error class on focus if enabled\r\n\t\t\tif ( this.settings.focusCleanup ) {\r\n\t\t\t\tif ( this.settings.unhighlight ) {\r\n\t\t\t\t\tthis.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );\r\n\t\t\t\t}\r\n\t\t\t\tthis.hideThese( this.errorsFor( element ) );\r\n\t\t\t}\r\n\t\t},\r\n\t\tonfocusout: function( element ) {\r\n\t\t\tif ( !this.checkable( element ) && ( element.name in this.submitted || !this.optional( element ) ) ) {\r\n\t\t\t\tthis.element( element );\r\n\t\t\t}\r\n\t\t},\r\n\t\tonkeyup: function( element, event ) {\r\n\r\n\t\t\t// Avoid revalidate the field when pressing one of the following keys\r\n\t\t\t// Shift => 16\r\n\t\t\t// Ctrl => 17\r\n\t\t\t// Alt => 18\r\n\t\t\t// Caps lock => 20\r\n\t\t\t// End => 35\r\n\t\t\t// Home => 36\r\n\t\t\t// Left arrow => 37\r\n\t\t\t// Up arrow => 38\r\n\t\t\t// Right arrow => 39\r\n\t\t\t// Down arrow => 40\r\n\t\t\t// Insert => 45\r\n\t\t\t// Num lock => 144\r\n\t\t\t// AltGr key => 225\r\n\t\t\tvar excludedKeys = [\r\n\t\t\t\t16, 17, 18, 20, 35, 36, 37,\r\n\t\t\t\t38, 39, 40, 45, 144, 225\r\n\t\t\t];\r\n\r\n\t\t\tif ( event.which === 9 && this.elementValue( element ) === \"\" || $.inArray( event.keyCode, excludedKeys ) !== -1 ) {\r\n\t\t\t\treturn;\r\n\t\t\t} else if ( element.name in this.submitted || element.name in this.invalid ) {\r\n\t\t\t\tthis.element( element );\r\n\t\t\t}\r\n\t\t},\r\n\t\tonclick: function( element ) {\r\n\r\n\t\t\t// Click on selects, radiobuttons and checkboxes\r\n\t\t\tif ( element.name in this.submitted ) {\r\n\t\t\t\tthis.element( element );\r\n\r\n\t\t\t// Or option elements, check parent select in that case\r\n\t\t\t} else if ( element.parentNode.name in this.submitted ) {\r\n\t\t\t\tthis.element( element.parentNode );\r\n\t\t\t}\r\n\t\t},\r\n\t\thighlight: function( element, errorClass, validClass ) {\r\n\t\t\tif ( element.type === \"radio\" ) {\r\n\t\t\t\tthis.findByName( element.name ).addClass( errorClass ).removeClass( validClass );\r\n\t\t\t} else {\r\n\t\t\t\t$( element ).addClass( errorClass ).removeClass( validClass );\r\n\t\t\t}\r\n\t\t},\r\n\t\tunhighlight: function( element, errorClass, validClass ) {\r\n\t\t\tif ( element.type === \"radio\" ) {\r\n\t\t\t\tthis.findByName( element.name ).removeClass( errorClass ).addClass( validClass );\r\n\t\t\t} else {\r\n\t\t\t\t$( element ).removeClass( errorClass ).addClass( validClass );\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t// https://jqueryvalidation.org/jQuery.validator.setDefaults/\r\n\tsetDefaults: function( settings ) {\r\n\t\t$.extend( $.validator.defaults, settings );\r\n\t},\r\n\r\n\tmessages: {\r\n\t\trequired: \"This field is required.\",\r\n\t\tremote: \"Please fix this field.\",\r\n\t\temail: \"Please enter a valid email address.\",\r\n\t\turl: \"Please enter a valid URL.\",\r\n\t\tdate: \"Please enter a valid date.\",\r\n\t\tdateISO: \"Please enter a valid date (ISO).\",\r\n\t\tnumber: \"Please enter a valid number.\",\r\n\t\tdigits: \"Please enter only digits.\",\r\n\t\tequalTo: \"Please enter the same value again.\",\r\n\t\tmaxlength: $.validator.format( \"Please enter no more than {0} characters.\" ),\r\n\t\tminlength: $.validator.format( \"Please enter at least {0} characters.\" ),\r\n\t\trangelength: $.validator.format( \"Please enter a value between {0} and {1} characters long.\" ),\r\n\t\trange: $.validator.format( \"Please enter a value between {0} and {1}.\" ),\r\n\t\tmax: $.validator.format( \"Please enter a value less than or equal to {0}.\" ),\r\n\t\tmin: $.validator.format( \"Please enter a value greater than or equal to {0}.\" ),\r\n\t\tstep: $.validator.format( \"Please enter a multiple of {0}.\" )\r\n\t},\r\n\r\n\tautoCreateRanges: false,\r\n\r\n\tprototype: {\r\n\r\n\t\tinit: function() {\r\n\t\t\tthis.labelContainer = $( this.settings.errorLabelContainer );\r\n\t\t\tthis.errorContext = this.labelContainer.length && this.labelContainer || $( this.currentForm );\r\n\t\t\tthis.containers = $( this.settings.errorContainer ).add( this.settings.errorLabelContainer );\r\n\t\t\tthis.submitted = {};\r\n\t\t\tthis.valueCache = {};\r\n\t\t\tthis.pendingRequest = 0;\r\n\t\t\tthis.pending = {};\r\n\t\t\tthis.invalid = {};\r\n\t\t\tthis.reset();\r\n\r\n\t\t\tvar currentForm = this.currentForm,\r\n\t\t\t\tgroups = ( this.groups = {} ),\r\n\t\t\t\trules;\r\n\t\t\t$.each( this.settings.groups, function( key, value ) {\r\n\t\t\t\tif ( typeof value === \"string\" ) {\r\n\t\t\t\t\tvalue = value.split( /\\s/ );\r\n\t\t\t\t}\r\n\t\t\t\t$.each( value, function( index, name ) {\r\n\t\t\t\t\tgroups[ name ] = key;\r\n\t\t\t\t} );\r\n\t\t\t} );\r\n\t\t\trules = this.settings.rules;\r\n\t\t\t$.each( rules, function( key, value ) {\r\n\t\t\t\trules[ key ] = $.validator.normalizeRule( value );\r\n\t\t\t} );\r\n\r\n\t\t\tfunction delegate( event ) {\r\n\t\t\t\tvar isContentEditable = typeof $( this ).attr( \"contenteditable\" ) !== \"undefined\" && $( this ).attr( \"contenteditable\" ) !== \"false\";\r\n\r\n\t\t\t\t// Set form expando on contenteditable\r\n\t\t\t\tif ( !this.form && isContentEditable ) {\r\n\t\t\t\t\tthis.form = $( this ).closest( \"form\" )[ 0 ];\r\n\t\t\t\t\tthis.name = $( this ).attr( \"name\" );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Ignore the element if it belongs to another form. This will happen mainly\r\n\t\t\t\t// when setting the `form` attribute of an input to the id of another form.\r\n\t\t\t\tif ( currentForm !== this.form ) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar validator = $.data( this.form, \"validator\" ),\r\n\t\t\t\t\teventType = \"on\" + event.type.replace( /^validate/, \"\" ),\r\n\t\t\t\t\tsettings = validator.settings;\r\n\t\t\t\tif ( settings[ eventType ] && !$( this ).is( settings.ignore ) ) {\r\n\t\t\t\t\tsettings[ eventType ].call( validator, this, event );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t$( this.currentForm )\r\n\t\t\t\t.on( \"focusin.validate focusout.validate keyup.validate\",\r\n\t\t\t\t\t\":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], \" +\r\n\t\t\t\t\t\"[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], \" +\r\n\t\t\t\t\t\"[type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], \" +\r\n\t\t\t\t\t\"[type='radio'], [type='checkbox'], [contenteditable], [type='button']\", delegate )\r\n\r\n\t\t\t\t// Support: Chrome, oldIE\r\n\t\t\t\t// \"select\" is provided as event.target when clicking a option\r\n\t\t\t\t.on( \"click.validate\", \"select, option, [type='radio'], [type='checkbox']\", delegate );\r\n\r\n\t\t\tif ( this.settings.invalidHandler ) {\r\n\t\t\t\t$( this.currentForm ).on( \"invalid-form.validate\", this.settings.invalidHandler );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/Validator.form/\r\n\t\tform: function() {\r\n\t\t\tthis.checkForm();\r\n\t\t\t$.extend( this.submitted, this.errorMap );\r\n\t\t\tthis.invalid = $.extend( {}, this.errorMap );\r\n\t\t\tif ( !this.valid() ) {\r\n\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ] );\r\n\t\t\t}\r\n\t\t\tthis.showErrors();\r\n\t\t\treturn this.valid();\r\n\t\t},\r\n\r\n\t\tcheckForm: function() {\r\n\t\t\tthis.prepareForm();\r\n\t\t\tfor ( var i = 0, elements = ( this.currentElements = this.elements() ); elements[ i ]; i++ ) {\r\n\t\t\t\tthis.check( elements[ i ] );\r\n\t\t\t}\r\n\t\t\treturn this.valid();\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/Validator.element/\r\n\t\telement: function( element ) {\r\n\t\t\tvar cleanElement = this.clean( element ),\r\n\t\t\t\tcheckElement = this.validationTargetFor( cleanElement ),\r\n\t\t\t\tv = this,\r\n\t\t\t\tresult = true,\r\n\t\t\t\trs, group;\r\n\r\n\t\t\tif ( checkElement === undefined ) {\r\n\t\t\t\tdelete this.invalid[ cleanElement.name ];\r\n\t\t\t} else {\r\n\t\t\t\tthis.prepareElement( checkElement );\r\n\t\t\t\tthis.currentElements = $( checkElement );\r\n\r\n\t\t\t\t// If this element is grouped, then validate all group elements already\r\n\t\t\t\t// containing a value\r\n\t\t\t\tgroup = this.groups[ checkElement.name ];\r\n\t\t\t\tif ( group ) {\r\n\t\t\t\t\t$.each( this.groups, function( name, testgroup ) {\r\n\t\t\t\t\t\tif ( testgroup === group && name !== checkElement.name ) {\r\n\t\t\t\t\t\t\tcleanElement = v.validationTargetFor( v.clean( v.findByName( name ) ) );\r\n\t\t\t\t\t\t\tif ( cleanElement && cleanElement.name in v.invalid ) {\r\n\t\t\t\t\t\t\t\tv.currentElements.push( cleanElement );\r\n\t\t\t\t\t\t\t\tresult = v.check( cleanElement ) && result;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} );\r\n\t\t\t\t}\r\n\r\n\t\t\t\trs = this.check( checkElement ) !== false;\r\n\t\t\t\tresult = result && rs;\r\n\t\t\t\tif ( rs ) {\r\n\t\t\t\t\tthis.invalid[ checkElement.name ] = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.invalid[ checkElement.name ] = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( !this.numberOfInvalids() ) {\r\n\r\n\t\t\t\t\t// Hide error containers on last error\r\n\t\t\t\t\tthis.toHide = this.toHide.add( this.containers );\r\n\t\t\t\t}\r\n\t\t\t\tthis.showErrors();\r\n\r\n\t\t\t\t// Add aria-invalid status for screen readers\r\n\t\t\t\t$( element ).attr( \"aria-invalid\", !rs );\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/Validator.showErrors/\r\n\t\tshowErrors: function( errors ) {\r\n\t\t\tif ( errors ) {\r\n\t\t\t\tvar validator = this;\r\n\r\n\t\t\t\t// Add items to error list and map\r\n\t\t\t\t$.extend( this.errorMap, errors );\r\n\t\t\t\tthis.errorList = $.map( this.errorMap, function( message, name ) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tmessage: message,\r\n\t\t\t\t\t\telement: validator.findByName( name )[ 0 ]\r\n\t\t\t\t\t};\r\n\t\t\t\t} );\r\n\r\n\t\t\t\t// Remove items from success list\r\n\t\t\t\tthis.successList = $.grep( this.successList, function( element ) {\r\n\t\t\t\t\treturn !( element.name in errors );\r\n\t\t\t\t} );\r\n\t\t\t}\r\n\t\t\tif ( this.settings.showErrors ) {\r\n\t\t\t\tthis.settings.showErrors.call( this, this.errorMap, this.errorList );\r\n\t\t\t} else {\r\n\t\t\t\tthis.defaultShowErrors();\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/Validator.resetForm/\r\n\t\tresetForm: function() {\r\n\t\t\tif ( $.fn.resetForm ) {\r\n\t\t\t\t$( this.currentForm ).resetForm();\r\n\t\t\t}\r\n\t\t\tthis.invalid = {};\r\n\t\t\tthis.submitted = {};\r\n\t\t\tthis.prepareForm();\r\n\t\t\tthis.hideErrors();\r\n\t\t\tvar elements = this.elements()\r\n\t\t\t\t.removeData( \"previousValue\" )\r\n\t\t\t\t.removeAttr( \"aria-invalid\" );\r\n\r\n\t\t\tthis.resetElements( elements );\r\n\t\t},\r\n\r\n\t\tresetElements: function( elements ) {\r\n\t\t\tvar i;\r\n\r\n\t\t\tif ( this.settings.unhighlight ) {\r\n\t\t\t\tfor ( i = 0; elements[ i ]; i++ ) {\r\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[ i ],\r\n\t\t\t\t\t\tthis.settings.errorClass, \"\" );\r\n\t\t\t\t\tthis.findByName( elements[ i ].name ).removeClass( this.settings.validClass );\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\telements\r\n\t\t\t\t\t.removeClass( this.settings.errorClass )\r\n\t\t\t\t\t.removeClass( this.settings.validClass );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tnumberOfInvalids: function() {\r\n\t\t\treturn this.objectLength( this.invalid );\r\n\t\t},\r\n\r\n\t\tobjectLength: function( obj ) {\r\n\t\t\t/* jshint unused: false */\r\n\t\t\tvar count = 0,\r\n\t\t\t\ti;\r\n\t\t\tfor ( i in obj ) {\r\n\r\n\t\t\t\t// This check allows counting elements with empty error\r\n\t\t\t\t// message as invalid elements\r\n\t\t\t\tif ( obj[ i ] !== undefined && obj[ i ] !== null && obj[ i ] !== false ) {\r\n\t\t\t\t\tcount++;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn count;\r\n\t\t},\r\n\r\n\t\thideErrors: function() {\r\n\t\t\tthis.hideThese( this.toHide );\r\n\t\t},\r\n\r\n\t\thideThese: function( errors ) {\r\n\t\t\terrors.not( this.containers ).text( \"\" );\r\n\t\t\tthis.addWrapper( errors ).hide();\r\n\t\t},\r\n\r\n\t\tvalid: function() {\r\n\t\t\treturn this.size() === 0;\r\n\t\t},\r\n\r\n\t\tsize: function() {\r\n\t\t\treturn this.errorList.length;\r\n\t\t},\r\n\r\n\t\tfocusInvalid: function() {\r\n\t\t\tif ( this.settings.focusInvalid ) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\t$( this.findLastActive() || this.errorList.length && this.errorList[ 0 ].element || [] )\r\n\t\t\t\t\t.filter( \":visible\" )\r\n\t\t\t\t\t.focus()\r\n\r\n\t\t\t\t\t// Manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find\r\n\t\t\t\t\t.trigger( \"focusin\" );\r\n\t\t\t\t} catch ( e ) {\r\n\r\n\t\t\t\t\t// Ignore IE throwing errors when focusing hidden elements\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tfindLastActive: function() {\r\n\t\t\tvar lastActive = this.lastActive;\r\n\t\t\treturn lastActive && $.grep( this.errorList, function( n ) {\r\n\t\t\t\treturn n.element.name === lastActive.name;\r\n\t\t\t} ).length === 1 && lastActive;\r\n\t\t},\r\n\r\n\t\telements: function() {\r\n\t\t\tvar validator = this,\r\n\t\t\t\trulesCache = {};\r\n\r\n\t\t\t// Select all valid inputs inside the form (no submit or reset buttons)\r\n\t\t\treturn $( this.currentForm )\r\n\t\t\t.find( \"input, select, textarea, [contenteditable]\" )\r\n\t\t\t.not( \":submit, :reset, :image, :disabled\" )\r\n\t\t\t.not( this.settings.ignore )\r\n\t\t\t.filter( function() {\r\n\t\t\t\tvar name = this.name || $( this ).attr( \"name\" ); // For contenteditable\r\n\t\t\t\tvar isContentEditable = typeof $( this ).attr( \"contenteditable\" ) !== \"undefined\" && $( this ).attr( \"contenteditable\" ) !== \"false\";\r\n\r\n\t\t\t\tif ( !name && validator.settings.debug && window.console ) {\r\n\t\t\t\t\tconsole.error( \"%o has no name assigned\", this );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Set form expando on contenteditable\r\n\t\t\t\tif ( isContentEditable ) {\r\n\t\t\t\t\tthis.form = $( this ).closest( \"form\" )[ 0 ];\r\n\t\t\t\t\tthis.name = name;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Ignore elements that belong to other/nested forms\r\n\t\t\t\tif ( this.form !== validator.currentForm ) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Select only the first element for each name, and only those with rules specified\r\n\t\t\t\tif ( name in rulesCache || !validator.objectLength( $( this ).rules() ) ) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\trulesCache[ name ] = true;\r\n\t\t\t\treturn true;\r\n\t\t\t} );\r\n\t\t},\r\n\r\n\t\tclean: function( selector ) {\r\n\t\t\treturn $( selector )[ 0 ];\r\n\t\t},\r\n\r\n\t\terrors: function() {\r\n\t\t\tvar errorClass = this.settings.errorClass.split( \" \" ).join( \".\" );\r\n\t\t\treturn $( this.settings.errorElement + \".\" + errorClass, this.errorContext );\r\n\t\t},\r\n\r\n\t\tresetInternals: function() {\r\n\t\t\tthis.successList = [];\r\n\t\t\tthis.errorList = [];\r\n\t\t\tthis.errorMap = {};\r\n\t\t\tthis.toShow = $( [] );\r\n\t\t\tthis.toHide = $( [] );\r\n\t\t},\r\n\r\n\t\treset: function() {\r\n\t\t\tthis.resetInternals();\r\n\t\t\tthis.currentElements = $( [] );\r\n\t\t},\r\n\r\n\t\tprepareForm: function() {\r\n\t\t\tthis.reset();\r\n\t\t\tthis.toHide = this.errors().add( this.containers );\r\n\t\t},\r\n\r\n\t\tprepareElement: function( element ) {\r\n\t\t\tthis.reset();\r\n\t\t\tthis.toHide = this.errorsFor( element );\r\n\t\t},\r\n\r\n\t\telementValue: function( element ) {\r\n\t\t\tvar $element = $( element ),\r\n\t\t\t\ttype = element.type,\r\n\t\t\t\tisContentEditable = typeof $element.attr( \"contenteditable\" ) !== \"undefined\" && $element.attr( \"contenteditable\" ) !== \"false\",\r\n\t\t\t\tval, idx;\r\n\r\n\t\t\tif ( type === \"radio\" || type === \"checkbox\" ) {\r\n\t\t\t\treturn this.findByName( element.name ).filter( \":checked\" ).val();\r\n\t\t\t} else if ( type === \"number\" && typeof element.validity !== \"undefined\" ) {\r\n\t\t\t\treturn element.validity.badInput ? \"NaN\" : $element.val();\r\n\t\t\t}\r\n\r\n\t\t\tif ( isContentEditable ) {\r\n\t\t\t\tval = $element.text();\r\n\t\t\t} else {\r\n\t\t\t\tval = $element.val();\r\n\t\t\t}\r\n\r\n\t\t\tif ( type === \"file\" ) {\r\n\r\n\t\t\t\t// Modern browser (chrome & safari)\r\n\t\t\t\tif ( val.substr( 0, 12 ) === \"C:\\\\fakepath\\\\\" ) {\r\n\t\t\t\t\treturn val.substr( 12 );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Legacy browsers\r\n\t\t\t\t// Unix-based path\r\n\t\t\t\tidx = val.lastIndexOf( \"/\" );\r\n\t\t\t\tif ( idx >= 0 ) {\r\n\t\t\t\t\treturn val.substr( idx + 1 );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Windows-based path\r\n\t\t\t\tidx = val.lastIndexOf( \"\\\\\" );\r\n\t\t\t\tif ( idx >= 0 ) {\r\n\t\t\t\t\treturn val.substr( idx + 1 );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Just the file name\r\n\t\t\t\treturn val;\r\n\t\t\t}\r\n\r\n\t\t\tif ( typeof val === \"string\" ) {\r\n\t\t\t\treturn val.replace( /\\r/g, \"\" );\r\n\t\t\t}\r\n\t\t\treturn val;\r\n\t\t},\r\n\r\n\t\tcheck: function( element ) {\r\n\t\t\telement = this.validationTargetFor( this.clean( element ) );\r\n\r\n\t\t\tvar rules = $( element ).rules(),\r\n\t\t\t\trulesCount = $.map( rules, function( n, i ) {\r\n\t\t\t\t\treturn i;\r\n\t\t\t\t} ).length,\r\n\t\t\t\tdependencyMismatch = false,\r\n\t\t\t\tval = this.elementValue( element ),\r\n\t\t\t\tresult, method, rule, normalizer;\r\n\r\n\t\t\t// Prioritize the local normalizer defined for this element over the global one\r\n\t\t\t// if the former exists, otherwise user the global one in case it exists.\r\n\t\t\tif ( typeof rules.normalizer === \"function\" ) {\r\n\t\t\t\tnormalizer = rules.normalizer;\r\n\t\t\t} else if (\ttypeof this.settings.normalizer === \"function\" ) {\r\n\t\t\t\tnormalizer = this.settings.normalizer;\r\n\t\t\t}\r\n\r\n\t\t\t// If normalizer is defined, then call it to retreive the changed value instead\r\n\t\t\t// of using the real one.\r\n\t\t\t// Note that `this` in the normalizer is `element`.\r\n\t\t\tif ( normalizer ) {\r\n\t\t\t\tval = normalizer.call( element, val );\r\n\r\n\t\t\t\t// Delete the normalizer from rules to avoid treating it as a pre-defined method.\r\n\t\t\t\tdelete rules.normalizer;\r\n\t\t\t}\r\n\r\n\t\t\tfor ( method in rules ) {\r\n\t\t\t\trule = { method: method, parameters: rules[ method ] };\r\n\t\t\t\ttry {\r\n\t\t\t\t\tresult = $.validator.methods[ method ].call( this, val, element, rule.parameters );\r\n\r\n\t\t\t\t\t// If a method indicates that the field is optional and therefore valid,\r\n\t\t\t\t\t// don't mark it as valid when there are no other rules\r\n\t\t\t\t\tif ( result === \"dependency-mismatch\" && rulesCount === 1 ) {\r\n\t\t\t\t\t\tdependencyMismatch = true;\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdependencyMismatch = false;\r\n\r\n\t\t\t\t\tif ( result === \"pending\" ) {\r\n\t\t\t\t\t\tthis.toHide = this.toHide.not( this.errorsFor( element ) );\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif ( !result ) {\r\n\t\t\t\t\t\tthis.formatAndAdd( element, rule );\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t} catch ( e ) {\r\n\t\t\t\t\tif ( this.settings.debug && window.console ) {\r\n\t\t\t\t\t\tconsole.log( \"Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\", e );\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ( e instanceof TypeError ) {\r\n\t\t\t\t\t\te.message += \". Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\";\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthrow e;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif ( dependencyMismatch ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif ( this.objectLength( rules ) ) {\r\n\t\t\t\tthis.successList.push( element );\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t},\r\n\r\n\t\t// Return the custom message for the given element and validation method\r\n\t\t// specified in the element's HTML5 data attribute\r\n\t\t// return the generic message if present and no method specific message is present\r\n\t\tcustomDataMessage: function( element, method ) {\r\n\t\t\treturn $( element ).data( \"msg\" + method.charAt( 0 ).toUpperCase() +\r\n\t\t\t\tmethod.substring( 1 ).toLowerCase() ) || $( element ).data( \"msg\" );\r\n\t\t},\r\n\r\n\t\t// Return the custom message for the given element name and validation method\r\n\t\tcustomMessage: function( name, method ) {\r\n\t\t\tvar m = this.settings.messages[ name ];\r\n\t\t\treturn m && ( m.constructor === String ? m : m[ method ] );\r\n\t\t},\r\n\r\n\t\t// Return the first defined argument, allowing empty strings\r\n\t\tfindDefined: function() {\r\n\t\t\tfor ( var i = 0; i < arguments.length; i++ ) {\r\n\t\t\t\tif ( arguments[ i ] !== undefined ) {\r\n\t\t\t\t\treturn arguments[ i ];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn undefined;\r\n\t\t},\r\n\r\n\t\t// The second parameter 'rule' used to be a string, and extended to an object literal\r\n\t\t// of the following form:\r\n\t\t// rule = {\r\n\t\t// method: \"method name\",\r\n\t\t// parameters: \"the given method parameters\"\r\n\t\t// }\r\n\t\t//\r\n\t\t// The old behavior still supported, kept to maintain backward compatibility with\r\n\t\t// old code, and will be removed in the next major release.\r\n\t\tdefaultMessage: function( element, rule ) {\r\n\t\t\tif ( typeof rule === \"string\" ) {\r\n\t\t\t\trule = { method: rule };\r\n\t\t\t}\r\n\r\n\t\t\tvar message = this.findDefined(\r\n\t\t\t\t\tthis.customMessage( element.name, rule.method ),\r\n\t\t\t\t\tthis.customDataMessage( element, rule.method ),\r\n\r\n\t\t\t\t\t// 'title' is never undefined, so handle empty string as undefined\r\n\t\t\t\t\t!this.settings.ignoreTitle && element.title || undefined,\r\n\t\t\t\t\t$.validator.messages[ rule.method ],\r\n\t\t\t\t\t\"Warning: No message defined for \" + element.name + \"\"\r\n\t\t\t\t),\r\n\t\t\t\ttheregex = /\\$?\\{(\\d+)\\}/g;\r\n\t\t\tif ( typeof message === \"function\" ) {\r\n\t\t\t\tmessage = message.call( this, rule.parameters, element );\r\n\t\t\t} else if ( theregex.test( message ) ) {\r\n\t\t\t\tmessage = $.validator.format( message.replace( theregex, \"{$1}\" ), rule.parameters );\r\n\t\t\t}\r\n\r\n\t\t\treturn message;\r\n\t\t},\r\n\r\n\t\tformatAndAdd: function( element, rule ) {\r\n\t\t\tvar message = this.defaultMessage( element, rule );\r\n\r\n\t\t\tthis.errorList.push( {\r\n\t\t\t\tmessage: message,\r\n\t\t\t\telement: element,\r\n\t\t\t\tmethod: rule.method\r\n\t\t\t} );\r\n\r\n\t\t\tthis.errorMap[ element.name ] = message;\r\n\t\t\tthis.submitted[ element.name ] = message;\r\n\t\t},\r\n\r\n\t\taddWrapper: function( toToggle ) {\r\n\t\t\tif ( this.settings.wrapper ) {\r\n\t\t\t\ttoToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );\r\n\t\t\t}\r\n\t\t\treturn toToggle;\r\n\t\t},\r\n\r\n\t\tdefaultShowErrors: function() {\r\n\t\t\tvar i, elements, error;\r\n\t\t\tfor ( i = 0; this.errorList[ i ]; i++ ) {\r\n\t\t\t\terror = this.errorList[ i ];\r\n\t\t\t\tif ( this.settings.highlight ) {\r\n\t\t\t\t\tthis.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );\r\n\t\t\t\t}\r\n\t\t\t\tthis.showLabel( error.element, error.message );\r\n\t\t\t}\r\n\t\t\tif ( this.errorList.length ) {\r\n\t\t\t\tthis.toShow = this.toShow.add( this.containers );\r\n\t\t\t}\r\n\t\t\tif ( this.settings.success ) {\r\n\t\t\t\tfor ( i = 0; this.successList[ i ]; i++ ) {\r\n\t\t\t\t\tthis.showLabel( this.successList[ i ] );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif ( this.settings.unhighlight ) {\r\n\t\t\t\tfor ( i = 0, elements = this.validElements(); elements[ i ]; i++ ) {\r\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[ i ], this.settings.errorClass, this.settings.validClass );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.toHide = this.toHide.not( this.toShow );\r\n\t\t\tthis.hideErrors();\r\n\t\t\tthis.addWrapper( this.toShow ).show();\r\n\t\t},\r\n\r\n\t\tvalidElements: function() {\r\n\t\t\treturn this.currentElements.not( this.invalidElements() );\r\n\t\t},\r\n\r\n\t\tinvalidElements: function() {\r\n\t\t\treturn $( this.errorList ).map( function() {\r\n\t\t\t\treturn this.element;\r\n\t\t\t} );\r\n\t\t},\r\n\r\n\t\tshowLabel: function( element, message ) {\r\n\t\t\tvar place, group, errorID, v,\r\n\t\t\t\terror = this.errorsFor( element ),\r\n\t\t\t\telementID = this.idOrName( element ),\r\n\t\t\t\tdescribedBy = $( element ).attr( \"aria-describedby\" );\r\n\r\n\t\t\tif ( error.length ) {\r\n\r\n\t\t\t\t// Refresh error/success class\r\n\t\t\t\terror.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );\r\n\r\n\t\t\t\t// Replace message on existing label\r\n\t\t\t\terror.html( message );\r\n\t\t\t} else {\r\n\r\n\t\t\t\t// Create error element\r\n\t\t\t\terror = $( \"<\" + this.settings.errorElement + \">\" )\r\n\t\t\t\t\t.attr( \"id\", elementID + \"-error\" )\r\n\t\t\t\t\t.addClass( this.settings.errorClass )\r\n\t\t\t\t\t.html( message || \"\" );\r\n\r\n\t\t\t\t// Maintain reference to the element to be placed into the DOM\r\n\t\t\t\tplace = error;\r\n\t\t\t\tif ( this.settings.wrapper ) {\r\n\r\n\t\t\t\t\t// Make sure the element is visible, even in IE\r\n\t\t\t\t\t// actually showing the wrapped element is handled elsewhere\r\n\t\t\t\t\tplace = error.hide().show().wrap( \"<\" + this.settings.wrapper + \"/>\" ).parent();\r\n\t\t\t\t}\r\n\t\t\t\tif ( this.labelContainer.length ) {\r\n\t\t\t\t\tthis.labelContainer.append( place );\r\n\t\t\t\t} else if ( this.settings.errorPlacement ) {\r\n\t\t\t\t\tthis.settings.errorPlacement.call( this, place, $( element ) );\r\n\t\t\t\t} else {\r\n\t\t\t\t\tplace.insertAfter( element );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Link error back to the element\r\n\t\t\t\tif ( error.is( \"label\" ) ) {\r\n\r\n\t\t\t\t\t// If the error is a label, then associate using 'for'\r\n\t\t\t\t\terror.attr( \"for\", elementID );\r\n\r\n\t\t\t\t\t// If the element is not a child of an associated label, then it's necessary\r\n\t\t\t\t\t// to explicitly apply aria-describedby\r\n\t\t\t\t} else if ( error.parents( \"label[for='\" + this.escapeCssMeta( elementID ) + \"']\" ).length === 0 ) {\r\n\t\t\t\t\terrorID = error.attr( \"id\" );\r\n\r\n\t\t\t\t\t// Respect existing non-error aria-describedby\r\n\t\t\t\t\tif ( !describedBy ) {\r\n\t\t\t\t\t\tdescribedBy = errorID;\r\n\t\t\t\t\t} else if ( !describedBy.match( new RegExp( \"\\\\b\" + this.escapeCssMeta( errorID ) + \"\\\\b\" ) ) ) {\r\n\r\n\t\t\t\t\t\t// Add to end of list if not already present\r\n\t\t\t\t\t\tdescribedBy += \" \" + errorID;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t$( element ).attr( \"aria-describedby\", describedBy );\r\n\r\n\t\t\t\t\t// If this element is grouped, then assign to all elements in the same group\r\n\t\t\t\t\tgroup = this.groups[ element.name ];\r\n\t\t\t\t\tif ( group ) {\r\n\t\t\t\t\t\tv = this;\r\n\t\t\t\t\t\t$.each( v.groups, function( name, testgroup ) {\r\n\t\t\t\t\t\t\tif ( testgroup === group ) {\r\n\t\t\t\t\t\t\t\t$( \"[name='\" + v.escapeCssMeta( name ) + \"']\", v.currentForm )\r\n\t\t\t\t\t\t\t\t\t.attr( \"aria-describedby\", error.attr( \"id\" ) );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif ( !message && this.settings.success ) {\r\n\t\t\t\terror.text( \"\" );\r\n\t\t\t\tif ( typeof this.settings.success === \"string\" ) {\r\n\t\t\t\t\terror.addClass( this.settings.success );\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.settings.success( error, element );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.toShow = this.toShow.add( error );\r\n\t\t},\r\n\r\n\t\terrorsFor: function( element ) {\r\n\t\t\tvar name = this.escapeCssMeta( this.idOrName( element ) ),\r\n\t\t\t\tdescriber = $( element ).attr( \"aria-describedby\" ),\r\n\t\t\t\tselector = \"label[for='\" + name + \"'], label[for='\" + name + \"'] *\";\r\n\r\n\t\t\t// 'aria-describedby' should directly reference the error element\r\n\t\t\tif ( describer ) {\r\n\t\t\t\tselector = selector + \", #\" + this.escapeCssMeta( describer )\r\n\t\t\t\t\t.replace( /\\s+/g, \", #\" );\r\n\t\t\t}\r\n\r\n\t\t\treturn this\r\n\t\t\t\t.errors()\r\n\t\t\t\t.filter( selector );\r\n\t\t},\r\n\r\n\t\t// See https://api.jquery.com/category/selectors/, for CSS\r\n\t\t// meta-characters that should be escaped in order to be used with JQuery\r\n\t\t// as a literal part of a name/id or any selector.\r\n\t\tescapeCssMeta: function( string ) {\r\n\t\t\treturn string.replace( /([\\\\!\"#$%&'()*+,./:;<=>?@\\[\\]^`{|}~])/g, \"\\\\$1\" );\r\n\t\t},\r\n\r\n\t\tidOrName: function( element ) {\r\n\t\t\treturn this.groups[ element.name ] || ( this.checkable( element ) ? element.name : element.id || element.name );\r\n\t\t},\r\n\r\n\t\tvalidationTargetFor: function( element ) {\r\n\r\n\t\t\t// If radio/checkbox, validate first element in group instead\r\n\t\t\tif ( this.checkable( element ) ) {\r\n\t\t\t\telement = this.findByName( element.name );\r\n\t\t\t}\r\n\r\n\t\t\t// Always apply ignore filter\r\n\t\t\treturn $( element ).not( this.settings.ignore )[ 0 ];\r\n\t\t},\r\n\r\n\t\tcheckable: function( element ) {\r\n\t\t\treturn ( /radio|checkbox/i ).test( element.type );\r\n\t\t},\r\n\r\n\t\tfindByName: function( name ) {\r\n\t\t\treturn $( this.currentForm ).find( \"[name='\" + this.escapeCssMeta( name ) + \"']\" );\r\n\t\t},\r\n\r\n\t\tgetLength: function( value, element ) {\r\n\t\t\tswitch ( element.nodeName.toLowerCase() ) {\r\n\t\t\tcase \"select\":\r\n\t\t\t\treturn $( \"option:selected\", element ).length;\r\n\t\t\tcase \"input\":\r\n\t\t\t\tif ( this.checkable( element ) ) {\r\n\t\t\t\t\treturn this.findByName( element.name ).filter( \":checked\" ).length;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn value.length;\r\n\t\t},\r\n\r\n\t\tdepend: function( param, element ) {\r\n\t\t\treturn this.dependTypes[ typeof param ] ? this.dependTypes[ typeof param ]( param, element ) : true;\r\n\t\t},\r\n\r\n\t\tdependTypes: {\r\n\t\t\t\"boolean\": function( param ) {\r\n\t\t\t\treturn param;\r\n\t\t\t},\r\n\t\t\t\"string\": function( param, element ) {\r\n\t\t\t\treturn !!$( param, element.form ).length;\r\n\t\t\t},\r\n\t\t\t\"function\": function( param, element ) {\r\n\t\t\t\treturn param( element );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\toptional: function( element ) {\r\n\t\t\tvar val = this.elementValue( element );\r\n\t\t\treturn !$.validator.methods.required.call( this, val, element ) && \"dependency-mismatch\";\r\n\t\t},\r\n\r\n\t\tstartRequest: function( element ) {\r\n\t\t\tif ( !this.pending[ element.name ] ) {\r\n\t\t\t\tthis.pendingRequest++;\r\n\t\t\t\t$( element ).addClass( this.settings.pendingClass );\r\n\t\t\t\tthis.pending[ element.name ] = true;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tstopRequest: function( element, valid ) {\r\n\t\t\tthis.pendingRequest--;\r\n\r\n\t\t\t// Sometimes synchronization fails, make sure pendingRequest is never < 0\r\n\t\t\tif ( this.pendingRequest < 0 ) {\r\n\t\t\t\tthis.pendingRequest = 0;\r\n\t\t\t}\r\n\t\t\tdelete this.pending[ element.name ];\r\n\t\t\t$( element ).removeClass( this.settings.pendingClass );\r\n\t\t\tif ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() ) {\r\n\t\t\t\t$( this.currentForm ).submit();\r\n\r\n\t\t\t\t// Remove the hidden input that was used as a replacement for the\r\n\t\t\t\t// missing submit button. The hidden input is added by `handle()`\r\n\t\t\t\t// to ensure that the value of the used submit button is passed on\r\n\t\t\t\t// for scripted submits triggered by this method\r\n\t\t\t\tif ( this.submitButton ) {\r\n\t\t\t\t\t$( \"input:hidden[name='\" + this.submitButton.name + \"']\", this.currentForm ).remove();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.formSubmitted = false;\r\n\t\t\t} else if ( !valid && this.pendingRequest === 0 && this.formSubmitted ) {\r\n\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ] );\r\n\t\t\t\tthis.formSubmitted = false;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tpreviousValue: function( element, method ) {\r\n\t\t\tmethod = typeof method === \"string\" && method || \"remote\";\r\n\r\n\t\t\treturn $.data( element, \"previousValue\" ) || $.data( element, \"previousValue\", {\r\n\t\t\t\told: null,\r\n\t\t\t\tvalid: true,\r\n\t\t\t\tmessage: this.defaultMessage( element, { method: method } )\r\n\t\t\t} );\r\n\t\t},\r\n\r\n\t\t// Cleans up all forms and elements, removes validator-specific events\r\n\t\tdestroy: function() {\r\n\t\t\tthis.resetForm();\r\n\r\n\t\t\t$( this.currentForm )\r\n\t\t\t\t.off( \".validate\" )\r\n\t\t\t\t.removeData( \"validator\" )\r\n\t\t\t\t.find( \".validate-equalTo-blur\" )\r\n\t\t\t\t\t.off( \".validate-equalTo\" )\r\n\t\t\t\t\t.removeClass( \"validate-equalTo-blur\" )\r\n\t\t\t\t.find( \".validate-lessThan-blur\" )\r\n\t\t\t\t\t.off( \".validate-lessThan\" )\r\n\t\t\t\t\t.removeClass( \"validate-lessThan-blur\" )\r\n\t\t\t\t.find( \".validate-lessThanEqual-blur\" )\r\n\t\t\t\t\t.off( \".validate-lessThanEqual\" )\r\n\t\t\t\t\t.removeClass( \"validate-lessThanEqual-blur\" )\r\n\t\t\t\t.find( \".validate-greaterThanEqual-blur\" )\r\n\t\t\t\t\t.off( \".validate-greaterThanEqual\" )\r\n\t\t\t\t\t.removeClass( \"validate-greaterThanEqual-blur\" )\r\n\t\t\t\t.find( \".validate-greaterThan-blur\" )\r\n\t\t\t\t\t.off( \".validate-greaterThan\" )\r\n\t\t\t\t\t.removeClass( \"validate-greaterThan-blur\" );\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tclassRuleSettings: {\r\n\t\trequired: { required: true },\r\n\t\temail: { email: true },\r\n\t\turl: { url: true },\r\n\t\tdate: { date: true },\r\n\t\tdateISO: { dateISO: true },\r\n\t\tnumber: { number: true },\r\n\t\tdigits: { digits: true },\r\n\t\tcreditcard: { creditcard: true }\r\n\t},\r\n\r\n\taddClassRules: function( className, rules ) {\r\n\t\tif ( className.constructor === String ) {\r\n\t\t\tthis.classRuleSettings[ className ] = rules;\r\n\t\t} else {\r\n\t\t\t$.extend( this.classRuleSettings, className );\r\n\t\t}\r\n\t},\r\n\r\n\tclassRules: function( element ) {\r\n\t\tvar rules = {},\r\n\t\t\tclasses = $( element ).attr( \"class\" );\r\n\r\n\t\tif ( classes ) {\r\n\t\t\t$.each( classes.split( \" \" ), function() {\r\n\t\t\t\tif ( this in $.validator.classRuleSettings ) {\r\n\t\t\t\t\t$.extend( rules, $.validator.classRuleSettings[ this ] );\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t\t}\r\n\t\treturn rules;\r\n\t},\r\n\r\n\tnormalizeAttributeRule: function( rules, type, method, value ) {\r\n\r\n\t\t// Convert the value to a number for number inputs, and for text for backwards compability\r\n\t\t// allows type=\"date\" and others to be compared as strings\r\n\t\tif ( /min|max|step/.test( method ) && ( type === null || /number|range|text/.test( type ) ) ) {\r\n\t\t\tvalue = Number( value );\r\n\r\n\t\t\t// Support Opera Mini, which returns NaN for undefined minlength\r\n\t\t\tif ( isNaN( value ) ) {\r\n\t\t\t\tvalue = undefined;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ( value || value === 0 ) {\r\n\t\t\trules[ method ] = value;\r\n\t\t} else if ( type === method && type !== \"range\" ) {\r\n\r\n\t\t\t// Exception: the jquery validate 'range' method\r\n\t\t\t// does not test for the html5 'range' type\r\n\t\t\trules[ method ] = true;\r\n\t\t}\r\n\t},\r\n\r\n\tattributeRules: function( element ) {\r\n\t\tvar rules = {},\r\n\t\t\t$element = $( element ),\r\n\t\t\ttype = element.getAttribute( \"type\" ),\r\n\t\t\tmethod, value;\r\n\r\n\t\tfor ( method in $.validator.methods ) {\r\n\r\n\t\t\t// Support for in both html5 and older browsers\r\n\t\t\tif ( method === \"required\" ) {\r\n\t\t\t\tvalue = element.getAttribute( method );\r\n\r\n\t\t\t\t// Some browsers return an empty string for the required attribute\r\n\t\t\t\t// and non-HTML5 browsers might have required=\"\" markup\r\n\t\t\t\tif ( value === \"\" ) {\r\n\t\t\t\t\tvalue = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Force non-HTML5 browsers to return bool\r\n\t\t\t\tvalue = !!value;\r\n\t\t\t} else {\r\n\t\t\t\tvalue = $element.attr( method );\r\n\t\t\t}\r\n\r\n\t\t\tthis.normalizeAttributeRule( rules, type, method, value );\r\n\t\t}\r\n\r\n\t\t// 'maxlength' may be returned as -1, 2147483647 ( IE ) and 524288 ( safari ) for text inputs\r\n\t\tif ( rules.maxlength && /-1|2147483647|524288/.test( rules.maxlength ) ) {\r\n\t\t\tdelete rules.maxlength;\r\n\t\t}\r\n\r\n\t\treturn rules;\r\n\t},\r\n\r\n\tdataRules: function( element ) {\r\n\t\tvar rules = {},\r\n\t\t\t$element = $( element ),\r\n\t\t\ttype = element.getAttribute( \"type\" ),\r\n\t\t\tmethod, value;\r\n\r\n\t\tfor ( method in $.validator.methods ) {\r\n\t\t\tvalue = $element.data( \"rule\" + method.charAt( 0 ).toUpperCase() + method.substring( 1 ).toLowerCase() );\r\n\r\n\t\t\t// Cast empty attributes like `data-rule-required` to `true`\r\n\t\t\tif ( value === \"\" ) {\r\n\t\t\t\tvalue = true;\r\n\t\t\t}\r\n\r\n\t\t\tthis.normalizeAttributeRule( rules, type, method, value );\r\n\t\t}\r\n\t\treturn rules;\r\n\t},\r\n\r\n\tstaticRules: function( element ) {\r\n\t\tvar rules = {},\r\n\t\t\tvalidator = $.data( element.form, \"validator\" );\r\n\r\n\t\tif ( validator.settings.rules ) {\r\n\t\t\trules = $.validator.normalizeRule( validator.settings.rules[ element.name ] ) || {};\r\n\t\t}\r\n\t\treturn rules;\r\n\t},\r\n\r\n\tnormalizeRules: function( rules, element ) {\r\n\r\n\t\t// Handle dependency check\r\n\t\t$.each( rules, function( prop, val ) {\r\n\r\n\t\t\t// Ignore rule when param is explicitly false, eg. required:false\r\n\t\t\tif ( val === false ) {\r\n\t\t\t\tdelete rules[ prop ];\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif ( val.param || val.depends ) {\r\n\t\t\t\tvar keepRule = true;\r\n\t\t\t\tswitch ( typeof val.depends ) {\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\t\tkeepRule = !!$( val.depends, element.form ).length;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\t\tkeepRule = val.depends.call( element, element );\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tif ( keepRule ) {\r\n\t\t\t\t\trules[ prop ] = val.param !== undefined ? val.param : true;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$.data( element.form, \"validator\" ).resetElements( $( element ) );\r\n\t\t\t\t\tdelete rules[ prop ];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} );\r\n\r\n\t\t// Evaluate parameters\r\n\t\t$.each( rules, function( rule, parameter ) {\r\n\t\t\trules[ rule ] = $.isFunction( parameter ) && rule !== \"normalizer\" ? parameter( element ) : parameter;\r\n\t\t} );\r\n\r\n\t\t// Clean number parameters\r\n\t\t$.each( [ \"minlength\", \"maxlength\" ], function() {\r\n\t\t\tif ( rules[ this ] ) {\r\n\t\t\t\trules[ this ] = Number( rules[ this ] );\r\n\t\t\t}\r\n\t\t} );\r\n\t\t$.each( [ \"rangelength\", \"range\" ], function() {\r\n\t\t\tvar parts;\r\n\t\t\tif ( rules[ this ] ) {\r\n\t\t\t\tif ( $.isArray( rules[ this ] ) ) {\r\n\t\t\t\t\trules[ this ] = [ Number( rules[ this ][ 0 ] ), Number( rules[ this ][ 1 ] ) ];\r\n\t\t\t\t} else if ( typeof rules[ this ] === \"string\" ) {\r\n\t\t\t\t\tparts = rules[ this ].replace( /[\\[\\]]/g, \"\" ).split( /[\\s,]+/ );\r\n\t\t\t\t\trules[ this ] = [ Number( parts[ 0 ] ), Number( parts[ 1 ] ) ];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} );\r\n\r\n\t\tif ( $.validator.autoCreateRanges ) {\r\n\r\n\t\t\t// Auto-create ranges\r\n\t\t\tif ( rules.min != null && rules.max != null ) {\r\n\t\t\t\trules.range = [ rules.min, rules.max ];\r\n\t\t\t\tdelete rules.min;\r\n\t\t\t\tdelete rules.max;\r\n\t\t\t}\r\n\t\t\tif ( rules.minlength != null && rules.maxlength != null ) {\r\n\t\t\t\trules.rangelength = [ rules.minlength, rules.maxlength ];\r\n\t\t\t\tdelete rules.minlength;\r\n\t\t\t\tdelete rules.maxlength;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn rules;\r\n\t},\r\n\r\n\t// Converts a simple string to a {string: true} rule, e.g., \"required\" to {required:true}\r\n\tnormalizeRule: function( data ) {\r\n\t\tif ( typeof data === \"string\" ) {\r\n\t\t\tvar transformed = {};\r\n\t\t\t$.each( data.split( /\\s/ ), function() {\r\n\t\t\t\ttransformed[ this ] = true;\r\n\t\t\t} );\r\n\t\t\tdata = transformed;\r\n\t\t}\r\n\t\treturn data;\r\n\t},\r\n\r\n\t// https://jqueryvalidation.org/jQuery.validator.addMethod/\r\n\taddMethod: function( name, method, message ) {\r\n\t\t$.validator.methods[ name ] = method;\r\n\t\t$.validator.messages[ name ] = message !== undefined ? message : $.validator.messages[ name ];\r\n\t\tif ( method.length < 3 ) {\r\n\t\t\t$.validator.addClassRules( name, $.validator.normalizeRule( name ) );\r\n\t\t}\r\n\t},\r\n\r\n\t// https://jqueryvalidation.org/jQuery.validator.methods/\r\n\tmethods: {\r\n\r\n\t\t// https://jqueryvalidation.org/required-method/\r\n\t\trequired: function( value, element, param ) {\r\n\r\n\t\t\t// Check if dependency is met\r\n\t\t\tif ( !this.depend( param, element ) ) {\r\n\t\t\t\treturn \"dependency-mismatch\";\r\n\t\t\t}\r\n\t\t\tif ( element.nodeName.toLowerCase() === \"select\" ) {\r\n\r\n\t\t\t\t// Could be an array for select-multiple or a string, both are fine this way\r\n\t\t\t\tvar val = $( element ).val();\r\n\t\t\t\treturn val && val.length > 0;\r\n\t\t\t}\r\n\t\t\tif ( this.checkable( element ) ) {\r\n\t\t\t\treturn this.getLength( value, element ) > 0;\r\n\t\t\t}\r\n\t\t\treturn value !== undefined && value !== null && value.length > 0;\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/email-method/\r\n\t\temail: function( value, element ) {\r\n\r\n\t\t\t// From https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address\r\n\t\t\t// Retrieved 2014-01-14\r\n\t\t\t// If you have a problem with this implementation, report a bug against the above spec\r\n\t\t\t// Or use custom methods to implement your own email validation\r\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 );\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/url-method/\r\n\t\turl: function( value, element ) {\r\n\r\n\t\t\t// Copyright (c) 2010-2013 Diego Perini, MIT licensed\r\n\t\t\t// https://gist.github.com/dperini/729294\r\n\t\t\t// see also https://mathiasbynens.be/demo/url-regex\r\n\t\t\t// modified to allow protocol-relative URLs\r\n\t\t\treturn this.optional( element ) || /^(?:(?:(?:https?|ftp):)?\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?!(?: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-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})).?)(?::\\d{2,5})?(?:[/?#]\\S*)?$/i.test( value );\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/date-method/\r\n\t\tdate: ( function() {\r\n\t\t\tvar called = false;\r\n\r\n\t\t\treturn function( value, element ) {\r\n\t\t\t\tif ( !called ) {\r\n\t\t\t\t\tcalled = true;\r\n\t\t\t\t\tif ( this.settings.debug && window.console ) {\r\n\t\t\t\t\t\tconsole.warn(\r\n\t\t\t\t\t\t\t\"The `date` method is deprecated and will be removed in version '2.0.0'.\\n\" +\r\n\t\t\t\t\t\t\t\"Please don't use it, since it relies on the Date constructor, which\\n\" +\r\n\t\t\t\t\t\t\t\"behaves very differently across browsers and locales. Use `dateISO`\\n\" +\r\n\t\t\t\t\t\t\t\"instead or one of the locale specific methods in `localizations/`\\n\" +\r\n\t\t\t\t\t\t\t\"and `additional-methods.js`.\"\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn this.optional( element ) || !/Invalid|NaN/.test( new Date( value ).toString() );\r\n\t\t\t};\r\n\t\t}() ),\r\n\r\n\t\t// https://jqueryvalidation.org/dateISO-method/\r\n\t\tdateISO: function( value, element ) {\r\n\t\t\treturn this.optional( element ) || /^\\d{4}[\\/\\-](0?[1-9]|1[012])[\\/\\-](0?[1-9]|[12][0-9]|3[01])$/.test( value );\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/number-method/\r\n\t\tnumber: function( value, element ) {\r\n\t\t\treturn this.optional( element ) || /^(?:-?\\d+|-?\\d{1,3}(?:,\\d{3})+)?(?:\\.\\d+)?$/.test( value );\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/digits-method/\r\n\t\tdigits: function( value, element ) {\r\n\t\t\treturn this.optional( element ) || /^\\d+$/.test( value );\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/minlength-method/\r\n\t\tminlength: function( value, element, param ) {\r\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength( value, element );\r\n\t\t\treturn this.optional( element ) || length >= param;\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/maxlength-method/\r\n\t\tmaxlength: function( value, element, param ) {\r\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength( value, element );\r\n\t\t\treturn this.optional( element ) || length <= param;\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/rangelength-method/\r\n\t\trangelength: function( value, element, param ) {\r\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength( value, element );\r\n\t\t\treturn this.optional( element ) || ( length >= param[ 0 ] && length <= param[ 1 ] );\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/min-method/\r\n\t\tmin: function( value, element, param ) {\r\n\t\t\treturn this.optional( element ) || value >= param;\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/max-method/\r\n\t\tmax: function( value, element, param ) {\r\n\t\t\treturn this.optional( element ) || value <= param;\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/range-method/\r\n\t\trange: function( value, element, param ) {\r\n\t\t\treturn this.optional( element ) || ( value >= param[ 0 ] && value <= param[ 1 ] );\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/step-method/\r\n\t\tstep: function( value, element, param ) {\r\n\t\t\tvar type = $( element ).attr( \"type\" ),\r\n\t\t\t\terrorMessage = \"Step attribute on input type \" + type + \" is not supported.\",\r\n\t\t\t\tsupportedTypes = [ \"text\", \"number\", \"range\" ],\r\n\t\t\t\tre = new RegExp( \"\\\\b\" + type + \"\\\\b\" ),\r\n\t\t\t\tnotSupported = type && !re.test( supportedTypes.join() ),\r\n\t\t\t\tdecimalPlaces = function( num ) {\r\n\t\t\t\t\tvar match = ( \"\" + num ).match( /(?:\\.(\\d+))?$/ );\r\n\t\t\t\t\tif ( !match ) {\r\n\t\t\t\t\t\treturn 0;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Number of digits right of decimal point.\r\n\t\t\t\t\treturn match[ 1 ] ? match[ 1 ].length : 0;\r\n\t\t\t\t},\r\n\t\t\t\ttoInt = function( num ) {\r\n\t\t\t\t\treturn Math.round( num * Math.pow( 10, decimals ) );\r\n\t\t\t\t},\r\n\t\t\t\tvalid = true,\r\n\t\t\t\tdecimals;\r\n\r\n\t\t\t// Works only for text, number and range input types\r\n\t\t\t// TODO find a way to support input types date, datetime, datetime-local, month, time and week\r\n\t\t\tif ( notSupported ) {\r\n\t\t\t\tthrow new Error( errorMessage );\r\n\t\t\t}\r\n\r\n\t\t\tdecimals = decimalPlaces( param );\r\n\r\n\t\t\t// Value can't have too many decimals\r\n\t\t\tif ( decimalPlaces( value ) > decimals || toInt( value ) % toInt( param ) !== 0 ) {\r\n\t\t\t\tvalid = false;\r\n\t\t\t}\r\n\r\n\t\t\treturn this.optional( element ) || valid;\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/equalTo-method/\r\n\t\tequalTo: function( value, element, param ) {\r\n\r\n\t\t\t// Bind to the blur event of the target in order to revalidate whenever the target field is updated\r\n\t\t\tvar target = $( param );\r\n\t\t\tif ( this.settings.onfocusout && target.not( \".validate-equalTo-blur\" ).length ) {\r\n\t\t\t\ttarget.addClass( \"validate-equalTo-blur\" ).on( \"blur.validate-equalTo\", function() {\r\n\t\t\t\t\t$( element ).valid();\r\n\t\t\t\t} );\r\n\t\t\t}\r\n\t\t\treturn value === target.val();\r\n\t\t},\r\n\r\n\t\t// https://jqueryvalidation.org/remote-method/\r\n\t\tremote: function( value, element, param, method ) {\r\n\t\t\tif ( this.optional( element ) ) {\r\n\t\t\t\treturn \"dependency-mismatch\";\r\n\t\t\t}\r\n\r\n\t\t\tmethod = typeof method === \"string\" && method || \"remote\";\r\n\r\n\t\t\tvar previous = this.previousValue( element, method ),\r\n\t\t\t\tvalidator, data, optionDataString;\r\n\r\n\t\t\tif ( !this.settings.messages[ element.name ] ) {\r\n\t\t\t\tthis.settings.messages[ element.name ] = {};\r\n\t\t\t}\r\n\t\t\tprevious.originalMessage = previous.originalMessage || this.settings.messages[ element.name ][ method ];\r\n\t\t\tthis.settings.messages[ element.name ][ method ] = previous.message;\r\n\r\n\t\t\tparam = typeof param === \"string\" && { url: param } || param;\r\n\t\t\toptionDataString = $.param( $.extend( { data: value }, param.data ) );\r\n\t\t\tif ( previous.old === optionDataString ) {\r\n\t\t\t\treturn previous.valid;\r\n\t\t\t}\r\n\r\n\t\t\tprevious.old = optionDataString;\r\n\t\t\tvalidator = this;\r\n\t\t\tthis.startRequest( element );\r\n\t\t\tdata = {};\r\n\t\t\tdata[ element.name ] = value;\r\n\t\t\t$.ajax( $.extend( true, {\r\n\t\t\t\tmode: \"abort\",\r\n\t\t\t\tport: \"validate\" + element.name,\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\tdata: data,\r\n\t\t\t\tcontext: validator.currentForm,\r\n\t\t\t\tsuccess: function( response ) {\r\n\t\t\t\t\tvar valid = response === true || response === \"true\",\r\n\t\t\t\t\t\terrors, message, submitted;\r\n\r\n\t\t\t\t\tvalidator.settings.messages[ element.name ][ method ] = previous.originalMessage;\r\n\t\t\t\t\tif ( valid ) {\r\n\t\t\t\t\t\tsubmitted = validator.formSubmitted;\r\n\t\t\t\t\t\tvalidator.resetInternals();\r\n\t\t\t\t\t\tvalidator.toHide = validator.errorsFor( element );\r\n\t\t\t\t\t\tvalidator.formSubmitted = submitted;\r\n\t\t\t\t\t\tvalidator.successList.push( element );\r\n\t\t\t\t\t\tvalidator.invalid[ element.name ] = false;\r\n\t\t\t\t\t\tvalidator.showErrors();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\terrors = {};\r\n\t\t\t\t\t\tmessage = response || validator.defaultMessage( element, { method: method, parameters: value } );\r\n\t\t\t\t\t\terrors[ element.name ] = previous.message = message;\r\n\t\t\t\t\t\tvalidator.invalid[ element.name ] = true;\r\n\t\t\t\t\t\tvalidator.showErrors( errors );\r\n\t\t\t\t\t}\r\n\t\t\t\t\tprevious.valid = valid;\r\n\t\t\t\t\tvalidator.stopRequest( element, valid );\r\n\t\t\t\t}\r\n\t\t\t}, param ) );\r\n\t\t\treturn \"pending\";\r\n\t\t}\r\n\t}\r\n\r\n} );\r\n\r\n// Ajax mode: abort\r\n// usage: $.ajax({ mode: \"abort\"[, port: \"uniqueport\"]});\r\n// if mode:\"abort\" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()\r\n\r\nvar pendingRequests = {},\r\n\tajax;\r\n\r\n// Use a prefilter if available (1.5+)\r\nif ( $.ajaxPrefilter ) {\r\n\t$.ajaxPrefilter( function( settings, _, xhr ) {\r\n\t\tvar port = settings.port;\r\n\t\tif ( settings.mode === \"abort\" ) {\r\n\t\t\tif ( pendingRequests[ port ] ) {\r\n\t\t\t\tpendingRequests[ port ].abort();\r\n\t\t\t}\r\n\t\t\tpendingRequests[ port ] = xhr;\r\n\t\t}\r\n\t} );\r\n} else {\r\n\r\n\t// Proxy ajax\r\n\tajax = $.ajax;\r\n\t$.ajax = function( settings ) {\r\n\t\tvar mode = ( \"mode\" in settings ? settings : $.ajaxSettings ).mode,\r\n\t\t\tport = ( \"port\" in settings ? settings : $.ajaxSettings ).port;\r\n\t\tif ( mode === \"abort\" ) {\r\n\t\t\tif ( pendingRequests[ port ] ) {\r\n\t\t\t\tpendingRequests[ port ].abort();\r\n\t\t\t}\r\n\t\t\tpendingRequests[ port ] = ajax.apply( this, arguments );\r\n\t\t\treturn pendingRequests[ port ];\r\n\t\t}\r\n\t\treturn ajax.apply( this, arguments );\r\n\t};\r\n}\r\nreturn $;\r\n}));","// Unobtrusive validation support library for jQuery and jQuery Validate\r\n// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n// @version \r\n\r\n/*jslint white: true, browser: true, onevar: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: true, newcap: true, immed: true, strict: false */\r\n/*global document: false, jQuery: false */\r\n\r\n(function (factory) {\r\n if (typeof define === 'function' && define.amd) {\r\n // AMD. Register as an anonymous module.\r\n define(\"jquery.validate.unobtrusive\", ['jquery-validation'], factory);\r\n } else if (typeof module === 'object' && module.exports) {\r\n // CommonJS-like environments that support module.exports \r\n module.exports = factory(require('jquery-validation'));\r\n } else {\r\n // Browser global\r\n jQuery.validator.unobtrusive = factory(jQuery);\r\n }\r\n}(function ($) {\r\n var $jQval = $.validator,\r\n adapters,\r\n data_validation = \"unobtrusiveValidation\";\r\n\r\n function setValidationValues(options, ruleName, value) {\r\n options.rules[ruleName] = value;\r\n if (options.message) {\r\n options.messages[ruleName] = options.message;\r\n }\r\n }\r\n\r\n function splitAndTrim(value) {\r\n return value.replace(/^\\s+|\\s+$/g, \"\").split(/\\s*,\\s*/g);\r\n }\r\n\r\n function escapeAttributeValue(value) {\r\n // As mentioned on http://api.jquery.com/category/selectors/\r\n return value.replace(/([!\"#$%&'()*+,./:;<=>?@\\[\\\\\\]^`{|}~])/g, \"\\\\$1\");\r\n }\r\n\r\n function getModelPrefix(fieldName) {\r\n return fieldName.substr(0, fieldName.lastIndexOf(\".\") + 1);\r\n }\r\n\r\n function appendModelPrefix(value, prefix) {\r\n if (value.indexOf(\"*.\") === 0) {\r\n value = value.replace(\"*.\", prefix);\r\n }\r\n return value;\r\n }\r\n\r\n function onError(error, inputElement) { // 'this' is the form element\r\n var container = $(this).find(\"[data-valmsg-for='\" + escapeAttributeValue(inputElement[0].name) + \"']\"),\r\n replaceAttrValue = container.attr(\"data-valmsg-replace\"),\r\n replace = replaceAttrValue ? $.parseJSON(replaceAttrValue) !== false : null;\r\n\r\n container.removeClass(\"field-validation-valid\").addClass(\"field-validation-error\");\r\n error.data(\"unobtrusiveContainer\", container);\r\n\r\n if (replace) {\r\n container.empty();\r\n error.removeClass(\"input-validation-error\").appendTo(container);\r\n }\r\n else {\r\n error.hide();\r\n }\r\n }\r\n\r\n function onErrors(event, validator) { // 'this' is the form element\r\n var container = $(this).find(\"[data-valmsg-summary=true]\"),\r\n list = container.find(\"ul\");\r\n\r\n if (list && list.length && validator.errorList.length) {\r\n list.empty();\r\n container.addClass(\"validation-summary-errors\").removeClass(\"validation-summary-valid\");\r\n\r\n $.each(validator.errorList, function () {\r\n $(\"
  • \").html(this.message).appendTo(list);\r\n });\r\n }\r\n }\r\n\r\n function onSuccess(error) { // 'this' is the form element\r\n var container = error.data(\"unobtrusiveContainer\");\r\n\r\n if (container) {\r\n var replaceAttrValue = container.attr(\"data-valmsg-replace\"),\r\n replace = replaceAttrValue ? $.parseJSON(replaceAttrValue) : null;\r\n\r\n container.addClass(\"field-validation-valid\").removeClass(\"field-validation-error\");\r\n error.removeData(\"unobtrusiveContainer\");\r\n\r\n if (replace) {\r\n container.empty();\r\n }\r\n }\r\n }\r\n\r\n function onReset(event) { // 'this' is the form element\r\n var $form = $(this),\r\n key = '__jquery_unobtrusive_validation_form_reset';\r\n if ($form.data(key)) {\r\n return;\r\n }\r\n // Set a flag that indicates we're currently resetting the form.\r\n $form.data(key, true);\r\n try {\r\n $form.data(\"validator\").resetForm();\r\n } finally {\r\n $form.removeData(key);\r\n }\r\n\r\n $form.find(\".validation-summary-errors\")\r\n .addClass(\"validation-summary-valid\")\r\n .removeClass(\"validation-summary-errors\");\r\n $form.find(\".field-validation-error\")\r\n .addClass(\"field-validation-valid\")\r\n .removeClass(\"field-validation-error\")\r\n .removeData(\"unobtrusiveContainer\")\r\n .find(\">*\") // If we were using valmsg-replace, get the underlying error\r\n .removeData(\"unobtrusiveContainer\");\r\n }\r\n\r\n function validationInfo(form) {\r\n var $form = $(form),\r\n result = $form.data(data_validation),\r\n onResetProxy = $.proxy(onReset, form),\r\n defaultOptions = $jQval.unobtrusive.options || {},\r\n execInContext = function (name, args) {\r\n var func = defaultOptions[name];\r\n func && $.isFunction(func) && func.apply(form, args);\r\n };\r\n\r\n if (!result) {\r\n result = {\r\n options: { // options structure passed to jQuery Validate's validate() method\r\n errorClass: defaultOptions.errorClass || \"input-validation-error\",\r\n errorElement: defaultOptions.errorElement || \"span\",\r\n errorPlacement: function () {\r\n onError.apply(form, arguments);\r\n execInContext(\"errorPlacement\", arguments);\r\n },\r\n invalidHandler: function () {\r\n onErrors.apply(form, arguments);\r\n execInContext(\"invalidHandler\", arguments);\r\n },\r\n messages: {},\r\n rules: {},\r\n success: function () {\r\n onSuccess.apply(form, arguments);\r\n execInContext(\"success\", arguments);\r\n }\r\n },\r\n attachValidation: function () {\r\n $form\r\n .off(\"reset.\" + data_validation, onResetProxy)\r\n .on(\"reset.\" + data_validation, onResetProxy)\r\n .validate(this.options);\r\n },\r\n validate: function () { // a validation function that is called by unobtrusive Ajax\r\n $form.validate();\r\n return $form.valid();\r\n }\r\n };\r\n $form.data(data_validation, result);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n $jQval.unobtrusive = {\r\n adapters: [],\r\n\r\n parseElement: function (element, skipAttach) {\r\n /// \r\n /// Parses a single HTML element for unobtrusive validation attributes.\r\n /// \r\n /// The HTML element to be parsed.\r\n /// [Optional] true to skip attaching the\r\n /// validation to the form. If parsing just this single element, you should specify true.\r\n /// If parsing several elements, you should specify false, and manually attach the validation\r\n /// to the form when you are finished. The default is false.\r\n var $element = $(element),\r\n form = $element.parents(\"form\")[0],\r\n valInfo, rules, messages;\r\n\r\n if (!form) { // Cannot do client-side validation without a form\r\n return;\r\n }\r\n\r\n valInfo = validationInfo(form);\r\n valInfo.options.rules[element.name] = rules = {};\r\n valInfo.options.messages[element.name] = messages = {};\r\n\r\n $.each(this.adapters, function () {\r\n var prefix = \"data-val-\" + this.name,\r\n message = $element.attr(prefix),\r\n paramValues = {};\r\n\r\n if (message !== undefined) { // Compare against undefined, because an empty message is legal (and falsy)\r\n prefix += \"-\";\r\n\r\n $.each(this.params, function () {\r\n paramValues[this] = $element.attr(prefix + this);\r\n });\r\n\r\n this.adapt({\r\n element: element,\r\n form: form,\r\n message: message,\r\n params: paramValues,\r\n rules: rules,\r\n messages: messages\r\n });\r\n }\r\n });\r\n\r\n $.extend(rules, { \"__dummy__\": true });\r\n\r\n if (!skipAttach) {\r\n valInfo.attachValidation();\r\n }\r\n },\r\n\r\n parse: function (selector) {\r\n /// \r\n /// Parses all the HTML elements in the specified selector. It looks for input elements decorated\r\n /// with the [data-val=true] attribute value and enables validation according to the data-val-*\r\n /// attribute values.\r\n /// \r\n /// Any valid jQuery selector.\r\n\r\n // $forms includes all forms in selector's DOM hierarchy (parent, children and self) that have at least one\r\n // element with data-val=true\r\n var $selector = $(selector),\r\n $forms = $selector.parents()\r\n .addBack()\r\n .filter(\"form\")\r\n .add($selector.find(\"form\"))\r\n .has(\"[data-val=true]\");\r\n\r\n $selector.find(\"[data-val=true]\").each(function () {\r\n $jQval.unobtrusive.parseElement(this, true);\r\n });\r\n\r\n $forms.each(function () {\r\n var info = validationInfo(this);\r\n if (info) {\r\n info.attachValidation();\r\n }\r\n });\r\n }\r\n };\r\n\r\n adapters = $jQval.unobtrusive.adapters;\r\n\r\n adapters.add = function (adapterName, params, fn) {\r\n /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation.\r\n /// The name of the adapter to be added. This matches the name used\r\n /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).\r\n /// [Optional] An array of parameter names (strings) that will\r\n /// be extracted from the data-val-nnnn-mmmm HTML attributes (where nnnn is the adapter name, and\r\n /// mmmm is the parameter name).\r\n /// The function to call, which adapts the values from the HTML\r\n /// attributes into jQuery Validate rules and/or messages.\r\n /// \r\n if (!fn) { // Called with no params, just a function\r\n fn = params;\r\n params = [];\r\n }\r\n this.push({ name: adapterName, params: params, adapt: fn });\r\n return this;\r\n };\r\n\r\n adapters.addBool = function (adapterName, ruleName) {\r\n /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where\r\n /// the jQuery Validate validation rule has no parameter values.\r\n /// The name of the adapter to be added. This matches the name used\r\n /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).\r\n /// [Optional] The name of the jQuery Validate rule. If not provided, the value\r\n /// of adapterName will be used instead.\r\n /// \r\n return this.add(adapterName, function (options) {\r\n setValidationValues(options, ruleName || adapterName, true);\r\n });\r\n };\r\n\r\n adapters.addMinMax = function (adapterName, minRuleName, maxRuleName, minMaxRuleName, minAttribute, maxAttribute) {\r\n /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where\r\n /// the jQuery Validate validation has three potential rules (one for min-only, one for max-only, and\r\n /// one for min-and-max). The HTML parameters are expected to be named -min and -max.\r\n /// The name of the adapter to be added. This matches the name used\r\n /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).\r\n /// The name of the jQuery Validate rule to be used when you only\r\n /// have a minimum value.\r\n /// The name of the jQuery Validate rule to be used when you only\r\n /// have a maximum value.\r\n /// The name of the jQuery Validate rule to be used when you\r\n /// have both a minimum and maximum value.\r\n /// [Optional] The name of the HTML attribute that\r\n /// contains the minimum value. The default is \"min\".\r\n /// [Optional] The name of the HTML attribute that\r\n /// contains the maximum value. The default is \"max\".\r\n /// \r\n return this.add(adapterName, [minAttribute || \"min\", maxAttribute || \"max\"], function (options) {\r\n var min = options.params.min,\r\n max = options.params.max;\r\n\r\n if (min && max) {\r\n setValidationValues(options, minMaxRuleName, [min, max]);\r\n }\r\n else if (min) {\r\n setValidationValues(options, minRuleName, min);\r\n }\r\n else if (max) {\r\n setValidationValues(options, maxRuleName, max);\r\n }\r\n });\r\n };\r\n\r\n adapters.addSingleVal = function (adapterName, attribute, ruleName) {\r\n /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where\r\n /// the jQuery Validate validation rule has a single value.\r\n /// The name of the adapter to be added. This matches the name used\r\n /// in the data-val-nnnn HTML attribute(where nnnn is the adapter name).\r\n /// [Optional] The name of the HTML attribute that contains the value.\r\n /// The default is \"val\".\r\n /// [Optional] The name of the jQuery Validate rule. If not provided, the value\r\n /// of adapterName will be used instead.\r\n /// \r\n return this.add(adapterName, [attribute || \"val\"], function (options) {\r\n setValidationValues(options, ruleName || adapterName, options.params[attribute]);\r\n });\r\n };\r\n\r\n $jQval.addMethod(\"__dummy__\", function (value, element, params) {\r\n return true;\r\n });\r\n\r\n $jQval.addMethod(\"regex\", function (value, element, params) {\r\n var match;\r\n if (this.optional(element)) {\r\n return true;\r\n }\r\n\r\n match = new RegExp(params).exec(value);\r\n return (match && (match.index === 0) && (match[0].length === value.length));\r\n });\r\n\r\n $jQval.addMethod(\"nonalphamin\", function (value, element, nonalphamin) {\r\n var match;\r\n if (nonalphamin) {\r\n match = value.match(/\\W/g);\r\n match = match && match.length >= nonalphamin;\r\n }\r\n return match;\r\n });\r\n\r\n if ($jQval.methods.extension) {\r\n adapters.addSingleVal(\"accept\", \"mimtype\");\r\n adapters.addSingleVal(\"extension\", \"extension\");\r\n } else {\r\n // for backward compatibility, when the 'extension' validation method does not exist, such as with versions\r\n // of JQuery Validation plugin prior to 1.10, we should use the 'accept' method for\r\n // validating the extension, and ignore mime-type validations as they are not supported.\r\n adapters.addSingleVal(\"extension\", \"extension\", \"accept\");\r\n }\r\n\r\n adapters.addSingleVal(\"regex\", \"pattern\");\r\n adapters.addBool(\"creditcard\").addBool(\"date\").addBool(\"digits\").addBool(\"email\").addBool(\"number\").addBool(\"url\");\r\n adapters.addMinMax(\"length\", \"minlength\", \"maxlength\", \"rangelength\").addMinMax(\"range\", \"min\", \"max\", \"range\");\r\n adapters.addMinMax(\"minlength\", \"minlength\").addMinMax(\"maxlength\", \"minlength\", \"maxlength\");\r\n adapters.add(\"equalto\", [\"other\"], function (options) {\r\n var prefix = getModelPrefix(options.element.name),\r\n other = options.params.other,\r\n fullOtherName = appendModelPrefix(other, prefix),\r\n element = $(options.form).find(\":input\").filter(\"[name='\" + escapeAttributeValue(fullOtherName) + \"']\")[0];\r\n\r\n setValidationValues(options, \"equalTo\", element);\r\n });\r\n adapters.add(\"required\", function (options) {\r\n // jQuery Validate equates \"required\" with \"mandatory\" for checkbox elements\r\n if (options.element.tagName.toUpperCase() !== \"INPUT\" || options.element.type.toUpperCase() !== \"CHECKBOX\") {\r\n setValidationValues(options, \"required\", true);\r\n }\r\n });\r\n adapters.add(\"remote\", [\"url\", \"type\", \"additionalfields\"], function (options) {\r\n var value = {\r\n url: options.params.url,\r\n type: options.params.type || \"GET\",\r\n data: {}\r\n },\r\n prefix = getModelPrefix(options.element.name);\r\n\r\n $.each(splitAndTrim(options.params.additionalfields || options.element.name), function (i, fieldName) {\r\n var paramName = appendModelPrefix(fieldName, prefix);\r\n value.data[paramName] = function () {\r\n var field = $(options.form).find(\":input\").filter(\"[name='\" + escapeAttributeValue(paramName) + \"']\");\r\n // For checkboxes and radio buttons, only pick up values from checked fields.\r\n if (field.is(\":checkbox\")) {\r\n return field.filter(\":checked\").val() || field.filter(\":hidden\").val() || '';\r\n }\r\n else if (field.is(\":radio\")) {\r\n return field.filter(\":checked\").val() || '';\r\n }\r\n return field.val();\r\n };\r\n });\r\n\r\n setValidationValues(options, \"remote\", value);\r\n });\r\n adapters.add(\"password\", [\"min\", \"nonalphamin\", \"regex\"], function (options) {\r\n if (options.params.min) {\r\n setValidationValues(options, \"minlength\", options.params.min);\r\n }\r\n if (options.params.nonalphamin) {\r\n setValidationValues(options, \"nonalphamin\", options.params.nonalphamin);\r\n }\r\n if (options.params.regex) {\r\n setValidationValues(options, \"regex\", options.params.regex);\r\n }\r\n });\r\n adapters.add(\"fileextensions\", [\"extensions\"], function (options) {\r\n setValidationValues(options, \"extension\", options.params.extensions);\r\n });\r\n\r\n $(function () {\r\n $jQval.unobtrusive.parse(document);\r\n });\r\n\r\n return $jQval.unobtrusive;\r\n}));\r\n","// Unobtrusive Ajax support library for jQuery\r\n// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n// @version \r\n// \r\n// Microsoft grants you the right to use these script files for the sole\r\n// purpose of either: (i) interacting through your browser with the Microsoft\r\n// website or online service, subject to the applicable licensing or use\r\n// terms; or (ii) using the files as included with a Microsoft product subject\r\n// to that product's license terms. Microsoft reserves all other rights to the\r\n// files not expressly granted by Microsoft, whether by implication, estoppel\r\n// or otherwise. Insofar as a script file is dual licensed under GPL,\r\n// Microsoft neither took the code under GPL nor distributes it thereunder but\r\n// under the terms set out in this paragraph. All notices and licenses\r\n// below are for informational purposes only.\r\n\r\n/*jslint white: true, browser: true, onevar: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: true, newcap: true, immed: true, strict: false */\r\n/*global window: false, jQuery: false */\r\n\r\n(function ($) {\r\n var data_click = \"unobtrusiveAjaxClick\",\r\n data_target = \"unobtrusiveAjaxClickTarget\",\r\n data_validation = \"unobtrusiveValidation\";\r\n\r\n function getFunction(code, argNames) {\r\n var fn = window, parts = (code || \"\").split(\".\");\r\n while (fn && parts.length) {\r\n fn = fn[parts.shift()];\r\n }\r\n if (typeof (fn) === \"function\") {\r\n return fn;\r\n }\r\n argNames.push(code);\r\n return Function.constructor.apply(null, argNames);\r\n }\r\n\r\n function isMethodProxySafe(method) {\r\n return method === \"GET\" || method === \"POST\";\r\n }\r\n\r\n function asyncOnBeforeSend(xhr, method) {\r\n if (!isMethodProxySafe(method)) {\r\n xhr.setRequestHeader(\"X-HTTP-Method-Override\", method);\r\n }\r\n }\r\n\r\n function asyncOnSuccess(element, data, contentType) {\r\n var mode;\r\n\r\n if (contentType.indexOf(\"application/x-javascript\") !== -1) { // jQuery already executes JavaScript for us\r\n return;\r\n }\r\n\r\n mode = (element.getAttribute(\"data-ajax-mode\") || \"\").toUpperCase();\r\n $(element.getAttribute(\"data-ajax-update\")).each(function (i, update) {\r\n var top;\r\n\r\n switch (mode) {\r\n case \"BEFORE\":\r\n $(update).prepend(data);\r\n break;\r\n case \"AFTER\":\r\n $(update).append(data);\r\n break;\r\n case \"REPLACE-WITH\":\r\n $(update).replaceWith(data);\r\n break;\r\n default:\r\n $(update).html(data);\r\n break;\r\n }\r\n });\r\n }\r\n\r\n function asyncRequest(element, options) {\r\n var confirm, loading, method, duration;\r\n\r\n confirm = element.getAttribute(\"data-ajax-confirm\");\r\n if (confirm && !window.confirm(confirm)) {\r\n return;\r\n }\r\n\r\n loading = $(element.getAttribute(\"data-ajax-loading\"));\r\n duration = parseInt(element.getAttribute(\"data-ajax-loading-duration\"), 10) || 0;\r\n\r\n $.extend(options, {\r\n type: element.getAttribute(\"data-ajax-method\") || undefined,\r\n url: element.getAttribute(\"data-ajax-url\") || undefined,\r\n cache: (element.getAttribute(\"data-ajax-cache\") || \"\").toLowerCase() === \"true\",\r\n beforeSend: function (xhr) {\r\n var result;\r\n asyncOnBeforeSend(xhr, method);\r\n result = getFunction(element.getAttribute(\"data-ajax-begin\"), [\"xhr\"]).apply(element, arguments);\r\n if (result !== false) {\r\n loading.show(duration);\r\n }\r\n return result;\r\n },\r\n complete: function () {\r\n loading.hide(duration);\r\n getFunction(element.getAttribute(\"data-ajax-complete\"), [\"xhr\", \"status\"]).apply(element, arguments);\r\n },\r\n success: function (data, status, xhr) {\r\n asyncOnSuccess(element, data, xhr.getResponseHeader(\"Content-Type\") || \"text/html\");\r\n getFunction(element.getAttribute(\"data-ajax-success\"), [\"data\", \"status\", \"xhr\"]).apply(element, arguments);\r\n },\r\n error: function () {\r\n getFunction(element.getAttribute(\"data-ajax-failure\"), [\"xhr\", \"status\", \"error\"]).apply(element, arguments);\r\n }\r\n });\r\n\r\n options.data.push({ name: \"X-Requested-With\", value: \"XMLHttpRequest\" });\r\n\r\n method = options.type.toUpperCase();\r\n if (!isMethodProxySafe(method)) {\r\n options.type = \"POST\";\r\n options.data.push({ name: \"X-HTTP-Method-Override\", value: method });\r\n }\r\n\r\n // change here:\r\n // Check for a Form POST with enctype=multipart/form-data\r\n // add the input file that were not previously included in the serializeArray()\r\n // set processData and contentType to false\r\n var $element = $(element);\r\n if ($element.is(\"form\") && $element.attr(\"enctype\") == \"multipart/form-data\") {\r\n var formdata = new FormData();\r\n $.each(options.data, function (i, v) {\r\n formdata.append(v.name, v.value);\r\n });\r\n $(\"input[type=file]\", $element).each(function () {\r\n var file = this;\r\n $.each(file.files, function (n, v) {\r\n formdata.append(file.name, v);\r\n });\r\n });\r\n $.extend(options, {\r\n processData: false,\r\n contentType: false,\r\n data: formdata\r\n });\r\n }\r\n // end change\r\n\r\n $.ajax(options);\r\n }\r\n\r\n function validate(form) {\r\n var validationInfo = $(form).data(data_validation);\r\n return !validationInfo || !validationInfo.validate || validationInfo.validate();\r\n }\r\n\r\n $(document).on(\"click\", \"a[data-ajax=true]\", function (evt) {\r\n evt.preventDefault();\r\n asyncRequest(this, {\r\n url: this.href,\r\n type: \"GET\",\r\n data: []\r\n });\r\n });\r\n\r\n $(document).on(\"click\", \"form[data-ajax=true] input[type=image]\", function (evt) {\r\n var name = evt.target.name,\r\n target = $(evt.target),\r\n form = $(target.parents(\"form\")[0]),\r\n offset = target.offset();\r\n\r\n form.data(data_click, [\r\n { name: name + \".x\", value: Math.round(evt.pageX - offset.left) },\r\n { name: name + \".y\", value: Math.round(evt.pageY - offset.top) }\r\n ]);\r\n\r\n setTimeout(function () {\r\n form.removeData(data_click);\r\n }, 0);\r\n });\r\n\r\n $(document).on(\"click\", \"form[data-ajax=true] :submit\", function (evt) {\r\n var name = evt.currentTarget.name,\r\n target = $(evt.target),\r\n form = $(target.parents(\"form\")[0]);\r\n\r\n form.data(data_click, name ? [{ name: name, value: evt.currentTarget.value }] : []);\r\n form.data(data_target, target);\r\n\r\n setTimeout(function () {\r\n form.removeData(data_click);\r\n form.removeData(data_target);\r\n }, 0);\r\n });\r\n\r\n $(document).on(\"submit\", \"form[data-ajax=true]\", function (evt) {\r\n var clickInfo = $(this).data(data_click) || [],\r\n clickTarget = $(this).data(data_target),\r\n isCancel = clickTarget && (clickTarget.hasClass(\"cancel\") || clickTarget.attr('formnovalidate') !== undefined);\r\n evt.preventDefault();\r\n if (!isCancel && !validate(this)) {\r\n return;\r\n }\r\n asyncRequest(this, {\r\n url: this.action,\r\n type: this.method || \"GET\",\r\n data: clickInfo.concat($(this).serializeArray())\r\n });\r\n });\r\n}(jQuery));\r\n","//https://cdn.lightwidget.com/widgets/lightwidget.js\r\n!function (e, t) { \"use strict\"; if (e.hasOwnProperty(\"lightwidget\")) return; e.addEventListener(\"message\", function (e) { if (-1 === [\"lightwidget.com\", \"dev.lightwidget.com\", \"cdn.lightwidget.com\", \"instansive.com\"].indexOf(e.origin.replace(/^https?:\\/\\//i, \"\"))) return !1; var i = function (e) { if (-1 < e.indexOf(\"{\")) return JSON.parse(e); var i = e.split(\":\"); return { widgetId: i[2].replace(\"instansive_\", \"\").replace(\"lightwidget_\"), size: i[1] } }(e.data); if (i.size <= 0) return !1;[].forEach.call(t.querySelectorAll('iframe[src*=\"lightwidget.com/widgets/' + i.widgetId + '\"],iframe[src*=\"instansive.com/widgets/' + i.widgetId + '\"]'), function (e) { e.style.height = i.size + \"px\" }) }, !1), e.lightwidget = {} }(window, document);","//var CaptchaCallback = function () {\r\n// $('.g-recaptcha').each(function (index, el) {\r\n// grecaptcha.render(el, {\r\n// 'sitekey': $(el).attr('data-sitekey')\r\n// , 'theme': $(el).attr('data-theme')\r\n// , 'size': $(el).attr('data-size')\r\n// , 'tabindex': $(el).attr('data-tabindex')\r\n// , 'callback': $(el).attr('data-callback')\r\n// , 'expired-callback': $(el).attr('data-expired-callback')\r\n// , 'error-callback': $(el).attr('data-error-callback')\r\n// });\r\n// });\r\n//};\r\n\r\n//var captchaValid = false;\r\n//function captchaFilled() {\r\n// captchaValid = true;\r\n// $('.g-recaptcha-validation').addClass('d-none');\r\n//}\r\n\r\n//function captchaExpired() {\r\n// captchaValid = false;\r\n// $('.g-recaptcha-validation').removeClass('d-none');\r\n//}\r\n\r\n//var newsletterCaptchaValid = false;\r\n//function newsletterCaptchaSucceeded() {\r\n// newsletterCaptchaValid = true;\r\n// $('#NewsletterSignupForm').submit();\r\n//}\r\nvar SignUpModal = false;\r\n\r\n$(function () {\r\n //if ($('.g-recaptcha').length) {\r\n // $('.g-recaptcha').parents('form').not('#NewsletterSignupForm').on('submit', function (e) {\r\n // if (!captchaValid) {\r\n // e.preventDefault();\r\n // $(this).find('.g-recaptcha-validation').removeClass('d-none');\r\n // return false;\r\n // } else {\r\n // $(this).find('.g-recaptcha-validation').addClass('d-none');\r\n // return true;\r\n // }\r\n // });\r\n //}\r\n\r\n var mouseY = 0;\r\n var topValue = 0;\r\n if ($('body').data('signupmodal') == 0) {\r\n SignUpModal = true;\r\n }\r\n\r\n window.addEventListener(\"mouseout\", function (e) {\r\n mouseY = e.clientY;\r\n/* console.log(SignUpModal);*/\r\n if (mouseY < topValue && !SignUpModal && !$('#SetUpSubscriptionModal').is(':visible')) {\r\n $('.mouseleave-pane').removeClass('d-none');\r\n $('#NewsletterSignupForm').addClass('d-none');\r\n SignUpModal = true;\r\n $.get(\"/modalshown\");\r\n //setCookie('SignUpModal', '1', 60);\r\n $('#signUpModal').modal('show');\r\n }\r\n },\r\n false);\r\n\r\n $('#NewsletterSignupFormFooter, #NewsletterSignupFormModal').on('submit', function () {\r\n var EmailAddress = $(this).find('input').val();\r\n //console.log(EmailAddress);\r\n $('#SignUpModalEmail').val(EmailAddress);\r\n $('.voucher-pane').addClass('d-none');\r\n $('.mouseleave-pane').addClass('d-none');\r\n $('#NewsletterSignupForm').removeClass('d-none');\r\n $('#signUpModal').modal('show');\r\n $('#SignUpModalFirstName').focus();\r\n if ($(this).find('button').hasClass('modal-signup')) {\r\n $('#NewsletterSignupForm input[name=\"IsModal\"]').val('true');\r\n }\r\n return false;\r\n });\r\n\r\n //$('#NewsletterSignupForm input').on('focus', function () {\r\n // // trigger loading api.js (recaptcha.js) script\r\n // //var head = document.getElementsByTagName('head')[0];\r\n // //var script = document.createElement('script');\r\n // //script.type = 'text/javascript';\r\n // //script.src = 'https://www.google.com/recaptcha/api.js?onload=CaptchaCallback&render=explicit';\r\n // //head.appendChild(script);\r\n\r\n // // remove focus to avoid js error:\r\n // // Uncaught Error: reCAPTCHA has already been rendered in this element at Object.kh\r\n // $('#NewsletterSignupForm input').off('focus');\r\n //});\r\n\r\n //$('#NewsletterSignupForm').on('submit', function (e) {\r\n // if (!newsletterCaptchaValid) {\r\n // e.preventDefault();\r\n // //grecaptcha.execute($('#NewsletterCaptcha').index('.g-recaptcha'));\r\n // return false;\r\n // } else {\r\n // return true;\r\n // }\r\n //});\r\n\r\n $('[data-toggle=\"popover\"]').popover();\r\n\r\n if (!sessionStorage.getItem('BlackFridayModalShown')) {\r\n $('#blackfriday-modal').on('shown.bs.modal', function () {\r\n $('.modal-backdrop').addClass('modal-backdrop-blackfriday')\r\n }).modal('show');\r\n sessionStorage.setItem('BlackFridayModalShown', 'true');\r\n }\r\n\r\n Modernizr.on('webpalpha', function (result) {\r\n if (result) {\r\n $('[data-src-webp]').each(function () {\r\n if ($(this).data('src-webp') !== '') {\r\n if ($(this).hasClass('lazy')) {\r\n $(this).attr('data-src', $(this).data('src-webp'));\r\n } else {\r\n $(this).attr('src', $(this).data('src-webp'));\r\n }\r\n }\r\n $(this).removeAttr('data-src-webp');\r\n });\r\n }\r\n });\r\n\r\n var last_known_scroll_position = 0;\r\n var ticking = false;\r\n\r\n function resizeHeader(scroll_pos) {\r\n if (scroll_pos > 100 && scroll_pos == $('.sticky-lg-top').first().offset().top) {\r\n $('.navbar').removeClass('shadow-sm').addClass('shadow');\r\n $('.navbar-brand').addClass('py-0');\r\n } else if (scroll_pos == 0) {\r\n $('.navbar').removeClass('shadow').addClass('shadow-sm');\r\n $('.navbar-brand').removeClass('py-0');\r\n }\r\n }\r\n\r\n window.addEventListener('scroll', function (e) {\r\n last_known_scroll_position = $(document).scrollTop();\r\n\r\n if (!ticking) {\r\n window.requestAnimationFrame(function () {\r\n resizeHeader(last_known_scroll_position);\r\n ticking = false;\r\n });\r\n\r\n ticking = true;\r\n }\r\n });\r\n\r\n PointerEventsPolyfill.initialize({});\r\n});\r\n\r\nfunction NewsletterSignupBegin() {\r\n $('#NewsletterSignupFormFooter button').prop('disabled', true);\r\n}\r\n\r\nfunction NewsletterSignupComplete(data) {\r\n $('#NewsletterSignupFormFooter button').prop('disabled', false);\r\n $('#NewsletterSignupFormFooter input').val('');\r\n if (data.responseJSON.success) {\r\n $('#NewsletterSignupForm').addClass('d-none');\r\n $('.voucher-pane').removeClass('d-none');\r\n $('.signup-voucher-message').text(data.responseJSON.message);\r\n $('.signup-voucher-code').text(data.responseJSON.vouchercode);\r\n //} else {\r\n // $('#NewsletterSignupForm #Email').addClass('input-validation-error');\r\n // $('#NewsletterSignupForm [data-valmsg-for=\"Email\"]').removeClass('field-validation-valid').addClass('field-validation-error').html(data.responseJSON.message);\r\n }\r\n\r\n SignUpModal = true;\r\n}\r\n\r\n/* requestAnimationFrame polyfill by Erik Möller. fixes from Paul Irish and Tino Zijdel | MIT license\r\n * http://paulirish.com/2011/requestanimationframe-for-smart-animating/\r\n * http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating */\r\n(function () {\r\n var lastTime = 0;\r\n var vendors = ['ms', 'moz', 'webkit', 'o'];\r\n for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {\r\n window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];\r\n window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame']\r\n || window[vendors[x] + 'CancelRequestAnimationFrame'];\r\n }\r\n\r\n if (!window.requestAnimationFrame)\r\n window.requestAnimationFrame = function (callback, element) {\r\n var currTime = new Date().getTime();\r\n var timeToCall = Math.max(0, 16 - (currTime - lastTime));\r\n var id = window.setTimeout(function () { callback(currTime + timeToCall); },\r\n timeToCall);\r\n lastTime = currTime + timeToCall;\r\n return id;\r\n };\r\n\r\n if (!window.cancelAnimationFrame)\r\n window.cancelAnimationFrame = function (id) {\r\n clearTimeout(id);\r\n };\r\n}());\r\n\r\n\r\n/*! modernizr 3.6.0 (Custom Build) | MIT *\r\n * https://modernizr.com/download/?-webpalpha-setclasses !*/\r\n!function (n, e, o) { function t(n) { var e = u.className, o = Modernizr._config.classPrefix || \"\"; if (A && (e = e.baseVal), Modernizr._config.enableJSClass) { var t = new RegExp(\"(^|\\\\s)\" + o + \"no-js(\\\\s|$)\"); e = e.replace(t, \"$1\" + o + \"js$2\") } Modernizr._config.enableClasses && (e += \" \" + o + n.join(\" \" + o), A ? u.className.baseVal = e : u.className = e) } function s(n, e) { return typeof n === e } function a() { var n, e, o, t, a, i, f; for (var c in l) if (l.hasOwnProperty(c)) { if (n = [], e = l[c], e.name && (n.push(e.name.toLowerCase()), e.options && e.options.aliases && e.options.aliases.length)) for (o = 0; o < e.options.aliases.length; o++)n.push(e.options.aliases[o].toLowerCase()); for (t = s(e.fn, \"function\") ? e.fn() : e.fn, a = 0; a < n.length; a++)i = n[a], f = i.split(\".\"), 1 === f.length ? Modernizr[f[0]] = t : (!Modernizr[f[0]] || Modernizr[f[0]] instanceof Boolean || (Modernizr[f[0]] = new Boolean(Modernizr[f[0]])), Modernizr[f[0]][f[1]] = t), r.push((t ? \"\" : \"no-\") + f.join(\"-\")) } } function i(n, e) { if (\"object\" == typeof n) for (var o in n) c(n, o) && i(o, n[o]); else { n = n.toLowerCase(); var s = n.split(\".\"), a = Modernizr[s[0]]; if (2 == s.length && (a = a[s[1]]), \"undefined\" != typeof a) return Modernizr; e = \"function\" == typeof e ? e() : e, 1 == s.length ? Modernizr[s[0]] = e : (!Modernizr[s[0]] || Modernizr[s[0]] instanceof Boolean || (Modernizr[s[0]] = new Boolean(Modernizr[s[0]])), Modernizr[s[0]][s[1]] = e), t([(e && 0 != e ? \"\" : \"no-\") + s.join(\"-\")]), Modernizr._trigger(n, e) } return Modernizr } var r = [], l = [], f = { _version: \"3.6.0\", _config: { classPrefix: \"\", enableClasses: !0, enableJSClass: !0, usePrefixes: !0 }, _q: [], on: function (n, e) { var o = this; setTimeout(function () { e(o[n]) }, 0) }, addTest: function (n, e, o) { l.push({ name: n, fn: e, options: o }) }, addAsyncTest: function (n) { l.push({ name: null, fn: n }) } }, Modernizr = function () { }; Modernizr.prototype = f, Modernizr = new Modernizr; var c, u = e.documentElement, A = \"svg\" === u.nodeName.toLowerCase(); !function () { var n = {}.hasOwnProperty; c = s(n, \"undefined\") || s(n.call, \"undefined\") ? function (n, e) { return e in n && s(n.constructor.prototype[e], \"undefined\") } : function (e, o) { return n.call(e, o) } }(), f._l = {}, f.on = function (n, e) { this._l[n] || (this._l[n] = []), this._l[n].push(e), Modernizr.hasOwnProperty(n) && setTimeout(function () { Modernizr._trigger(n, Modernizr[n]) }, 0) }, f._trigger = function (n, e) { if (this._l[n]) { var o = this._l[n]; setTimeout(function () { var n, t; for (n = 0; n < o.length; n++)(t = o[n])(e) }, 0), delete this._l[n] } }, Modernizr._q.push(function () { f.addTest = i }), Modernizr.addAsyncTest(function () { var n = new Image; n.onerror = function () { i(\"webpalpha\", !1, { aliases: [\"webp-alpha\"] }) }, n.onload = function () { i(\"webpalpha\", 1 == n.width, { aliases: [\"webp-alpha\"] }) }, n.src = \"data:image/webp;base64,UklGRkoAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAwAAAABBxAR/Q9ERP8DAABWUDggGAAAADABAJ0BKgEAAQADADQlpAADcAD++/1QAA==\" }), a(), t(r), delete f.addTest, delete f.addAsyncTest; for (var p = 0; p < Modernizr._q.length; p++)Modernizr._q[p](); n.Modernizr = Modernizr }(window, document);"]}