{"version":3,"sources":["../assets/scripts/global.js","../bower_components/bootstrap-sass/assets/javascripts/bootstrap/transition.js","../bower_components/bootstrap-sass/assets/javascripts/bootstrap/alert.js","../bower_components/bootstrap-sass/assets/javascripts/bootstrap/button.js","../bower_components/bootstrap-sass/assets/javascripts/bootstrap/carousel.js","../bower_components/bootstrap-sass/assets/javascripts/bootstrap/collapse.js","../bower_components/bootstrap-sass/assets/javascripts/bootstrap/dropdown.js","../bower_components/bootstrap-sass/assets/javascripts/bootstrap/modal.js","../bower_components/bootstrap-sass/assets/javascripts/bootstrap/tooltip.js","../bower_components/bootstrap-sass/assets/javascripts/bootstrap/popover.js","../bower_components/bootstrap-sass/assets/javascripts/bootstrap/scrollspy.js","../bower_components/bootstrap-sass/assets/javascripts/bootstrap/tab.js","../bower_components/bootstrap-sass/assets/javascripts/bootstrap/affix.js","../assets/scripts/main.js","../assets/scripts/mobile.js","../assets/scripts/video.js","../assets/scripts/scroll.js","../assets/scripts/vendor/flickity/flickity.js","../assets/scripts/vendor/jquery-ui-accordion/jquery-ui.js","../assets/scripts/vendor/typed/typed.js","../assets/scripts/vendor/select2/select2.js","../assets/scripts/vendor/jquery-validation/jquery.validate.js","../assets/scripts/vendor/jquery-validation/additional-methods.js","../assets/scripts/vendor/crypto-js/crypto-js.js","../assets/scripts/vendor/FitText/jquery.fittext.js","../assets/scripts/departments.js","../assets/scripts/job-results.js","../assets/scripts/dropdown-category.js","../assets/scripts/featured-jobs.js","../assets/scripts/form.js","../assets/scripts/faq.js","../assets/scripts/news.js","../assets/scripts/mobile-slider.js","../assets/scripts/job.js","../assets/scripts/toggler.js","../assets/scripts/image-switch.js","../assets/scripts/banner.js","../assets/scripts/filter.js","../assets/scripts/menu.js","../assets/scripts/listing.js","../assets/scripts/cookie.js","../assets/scripts/slider.js"],"names":["keydownClick","etype","e","keyCode","$","transitionEnd","el","document","createElement","transEndEventNames","WebkitTransition","MozTransition","OTransition","transition","name","undefined","style","end","fn","emulateTransitionEnd","duration","called","$el","this","one","callback","trigger","support","setTimeout","event","special","bsTransitionEnd","bindType","delegateType","handle","target","is","handleObj","handler","apply","arguments","jQuery","Plugin","option","each","$this","data","Alert","call","dismiss","on","close","VERSION","TRANSITION_DURATION","prototype","removeElement","$parent","detach","remove","selector","attr","replace","preventDefault","length","closest","Event","isDefaultPrevented","removeClass","hasClass","old","alert","Constructor","noConflict","options","Button","toggle","setState","element","$element","extend","DEFAULTS","isLoading","loadingText","state","d","val","resetText","proxy","addClass","removeAttr","changed","$input","find","prop","toggleClass","button","$btn","test","type","Carousel","action","slide","to","interval","pause","cycle","$indicators","paused","sliding","$active","$items","keyboard","keydown","documentElement","wrap","tagName","which","prev","next","clearInterval","setInterval","getItemIndex","item","parent","children","index","getItemForDirection","direction","active","activeIndex","willWrap","delta","itemIndex","eq","pos","that","$next","isCycling","relatedTarget","slideEvent","$nextIndicator","slidEvent","offsetWidth","join","carousel","clickHandler","href","$target","slideIndex","window","$carousel","getTargetFromTrigger","$trigger","Collapse","id","transitioning","getParent","addAriaAndCollapsedClass","dimension","hasWidth","show","activesData","actives","startEvent","complete","scrollSize","camelCase","hide","offsetHeight","i","isOpen","collapse","clearMenus","backdrop","contains","Dropdown","isActive","insertAfter","stopPropagation","desc","dropdown","_relatedTarget","Modal","$body","body","$dialog","$backdrop","isShown","originalBodyPad","scrollbarWidth","ignoreBackdropClick","remote","load","BACKDROP_TRANSITION_DURATION","checkScrollbar","setScrollbar","escape","resize","appendTo","scrollTop","adjustDialog","enforceFocus","off","hideModal","has","handleUpdate","resetAdjustments","resetScrollbar","removeBackdrop","animate","doAnimate","currentTarget","focus","callbackRemove","modalIsOverflowing","scrollHeight","clientHeight","css","paddingLeft","bodyIsOverflowing","paddingRight","fullWindowWidth","innerWidth","documentElementRect","getBoundingClientRect","right","Math","abs","left","clientWidth","measureScrollbar","bodyPad","parseInt","scrollDiv","className","append","removeChild","modal","showEvent","Tooltip","enabled","timeout","hoverState","inState","init","animation","placement","template","title","delay","html","container","viewport","padding","getOptions","$viewport","isFunction","click","hover","constructor","Error","triggers","split","eventIn","eventOut","enter","leave","_options","fixTitle","getDefaults","getDelegateOptions","defaults","key","value","obj","self","tip","clearTimeout","isInStateTrue","hasContent","inDom","ownerDocument","$tip","tipId","getUID","setContent","autoToken","autoPlace","top","display","getPosition","actualWidth","actualHeight","orgPlacement","viewportDim","bottom","width","calculatedOffset","getCalculatedOffset","applyPlacement","prevHoverState","offset","height","marginTop","marginLeft","isNaN","setOffset","using","props","round","getViewportAdjustedDelta","isVertical","arrowDelta","arrowOffsetPosition","replaceArrow","arrow","getTitle","$e","isBody","elRect","elOffset","scroll","outerDims","viewportPadding","viewportDimensions","topEdgeOffset","bottomEdgeOffset","leftEdgeOffset","rightEdgeOffset","o","prefix","random","getElementById","$arrow","enable","disable","toggleEnabled","destroy","removeData","tooltip","Popover","content","getContent","popover","ScrollSpy","$scrollElement","offsets","targets","activeTarget","process","refresh","getScrollHeight","max","offsetMethod","offsetBase","isWindow","map","$href","sort","a","b","push","maxScroll","activate","clear","parents","parentsUntil","scrollspy","$spy","Tab","$ul","$previous","hideEvent","tab","Affix","checkPosition","checkPositionWithEventLoop","affixed","unpin","pinnedOffset","RESET","getState","offsetTop","offsetBottom","position","targetHeight","initializing","colliderTop","colliderHeight","getPinnedOffset","affix","affixType","Sage","common","finalize","home","about_us","UTIL","fire","func","funcname","args","namespace","loadEvents","classnm","ready","Mobile","isMobile","result","navigator","userAgent","vendor","opera","globalFnc","imageIE","ActiveXObject","$container","imgUrl","sectionTitle","$height","innerHeight","checkTitleHeight","resizedFinished","Video","play","_this","checkIfUrl","iframe","url","fadeOut","Scroll","To","adjHeight","navBar","subnav","wpAdminBar","stop","factory","define","amd","module","exports","require","jQueryBridget","PluginClass","methodCall","$elems","methodName","returnValue","pluginMethodStr","elem","instance","logError","method","charAt","plainCall","_init","opts","isPlainObject","arg0","arraySlice","updateJQuery","bridget","Array","slice","console","message","error","global","EvEmitter","proto","eventName","listener","events","_events","listeners","indexOf","once","onceEvents","_onceEvents","onceListeners","splice","emitEvent","isOnce","allOff","getSize","getStyleSize","num","parseFloat","isValid","noop","getZeroSize","size","outerWidth","outerHeight","measurementsLength","measurement","measurements","getStyle","getComputedStyle","setup","isSetup","div","borderStyle","borderWidth","boxSizing","appendChild","isBoxSizeOuter","querySelector","nodeType","isBorderBox","paddingWidth","paddingHeight","paddingTop","paddingBottom","marginWidth","marginRight","marginHeight","marginBottom","borderLeftWidth","borderRightWidth","borderHeight","borderTopWidth","borderBottomWidth","isBorderBoxSizeOuter","styleWidth","styleHeight","matchesSelector","matchesMethod","ElemProto","Element","matches","prefixes","fizzyUIUtils","utils","modulo","makeArray","isArray","isArrayLike","removeFrom","ary","parentNode","getQueryElement","handleEvent","filterFindElements","elems","ffElems","forEach","HTMLElement","childElems","querySelectorAll","debounceMethod","_class","threshold","timeoutName","docReady","readyState","addEventListener","toDashed","str","match","$1","$2","toLowerCase","htmlInit","WidgetClass","dashedNamespace","dataAttr","dataAttrElems","jsDashElems","concat","dataOptionsAttr","getAttribute","JSON","parse","Flickity","Cell","create","setAttribute","x","shift","side","originSide","removeAttribute","setPosition","updateTarget","renderPosition","setDefaultTarget","marginProperty","cellAlign","getPositionValue","wrapShift","slideableWidth","Slide","isOriginLeft","cells","addCell","cell","beginMargin","firstMargin","endMargin","lastCell","getLastCell","lastMargin","slideWidth","select","changeSelected","unselect","isSelected","classMethod","classList","toString","getCellElements","animatePrototype","startAnimation","isAnimating","restingFrames","applyDragForce","applySelectedAttraction","previousX","integratePhysics","positionSlider","settle","requestAnimationFrame","wrapAround","shiftWrapCells","cursorPosition","rightToLeft","slider","transform","firstSlide","slides","positionX","progress","slidesWidth","dispatchEvent","positionSliderAtSelected","selectedSlide","velocity","percentPosition","isPointerDown","isFreeScrolling","selectedIndex","beforeGap","_shiftCells","beforeShiftCells","afterGap","afterShiftCells","gap","cellShift","_unshiftCells","getFrictionFactor","applyForce","force","getRestingPosition","isDraggable","dragVelocity","dragX","dragForce","dragDown","distance","selectedAttraction","_Flickity","moveElements","toElem","queryElement","flickityGUID","instances","_create","GUID","accessibility","freeScrollFriction","friction","namespaceJQueryEvents","setGallerySize","createMethods","guid","_createSlider","watchCSS","add","cellElems","_filterFindCellElements","reloadCells","tabIndex","initialIndex","isInitActivated","cellSelector","_makeCells","positionCells","_getWrapShiftCells","cellElem","getLastSlide","_sizeCells","_positionCells","maxCellHeight","cellX","startCell","len","updateSlides","_containSlides","nextMargin","canCellFit","_getCanCellFit","updateSelectedSlide","groupCells","number","percentMatch","percent","reposition","setCellAlign","cellAlignShorthands","center","shorthand","adaptiveHeight","gapX","cellIndex","_getGapCells","increment","contain","isRightToLeft","contentWidth","isContentSmaller","beginBound","endBound","min","emitArgs","$event","jQEvent","isWrap","isInstant","_wrapSelect","prevIndex","isWrapping","wrapIndex","backWrapDelta","forewardWrapDelta","isDragSelect","previous","unselectSelectedSlide","selectedCells","selectedElements","selectedCell","selectedElement","selectCell","queryCell","getCellSlideIndex","getCell","getCells","getParentCell","getAdjacentCellElements","adjCount","uiChange","childUIPointerDown","onresize","watchOption","afterContent","deactivate","onkeydown","isNotFocused","activeElement","keyboardHandlers","37","leftMethod","39","rightMethod","prevScrollY","pageYOffset","preventScroll","scrollTo","pageXOffset","removeEventListener","setJQuery","jq","Unipointer","Object","bindStartEvent","_bindStartEvent","unbindStartEvent","isAdd","bindMethod","PointerEvent","getTouch","touches","touch","identifier","pointerIdentifier","onmousedown","_pointerDown","ontouchstart","changedTouches","onpointerdown","pointer","pointerId","pointerDown","_bindPostStartEvents","postStartEvents","mousedown","touchstart","pointerdown","_boundPointerEvents","_unbindPostStartEvents","onmousemove","_pointerMove","onpointermove","ontouchmove","pointerMove","onmouseup","_pointerUp","onpointerup","ontouchend","_pointerDone","pointerUp","_pointerReset","pointerDone","onpointercancel","_pointerCancel","ontouchcancel","pointerCancel","getPointerPoint","pageX","y","pageY","Unidragger","bindHandles","_bindHandles","unbindHandles","touchAction","_touchActionValue","handles","isOkay","okayPointerDown","pointerDownPointer","pointerDownBlur","cursorNodes","TEXTAREA","INPUT","SELECT","OPTION","clickTypes","radio","checkbox","submit","image","file","isCursorNode","nodeName","isClickType","focused","canBlur","blur","moveVector","_dragPointerMove","_dragMove","isDragging","hasDragStarted","_dragStart","_dragPointerUp","_dragEnd","_staticClick","isPreventingClicks","dragStart","dragMove","bind","dragEnd","onclick","isIgnoringMouseUp","staticClick","getScrollPosition","draggable","dragThreshold","isTouch","isTouchmoveScrollCanceled","_createDrag","onActivateDrag","_uiChangeDrag","_childUIPointerDownDrag","onDeactivateDrag","updateDraggable","bindDrag","unbindDrag","pointerDownFocus","_pointerDownDefault","_pointerDownPreventDefault","pointerDownScroll","focusNodes","isFocusNode","isTouchStart","isTouchPointer","pointerType","isTouchScrolling","dragStartPosition","previousDragX","originBound","dragMoveTime","Date","freeScroll","dragEndRestingSelect","restingX","dragEndBoostSelect","getSlideDistance","positiveResting","_getClosestResting","negativeResting","minDistance","Infinity","condition","md","isWrapAround","floor","clickedCell","onscroll","scrollMoveX","scrollMoveY","TapListener","bindTap","unbindTap","tapElement","pointerPoint","boundingRect","scrollX","scrollY","isInside","PrevNextButton","getArrowMovements","shape","x0","x1","y1","x2","y2","x3","svgURI","isEnabled","isPrevious","leftDirection","isLeft","svg","createSVG","onTap","update","createElementNS","path","pathMovements","arrowShape","disabled","lastIndex","boundIndex","prevNextButtons","_createPrevNextButtons","prevButton","nextButton","activatePrevNextButtons","deactivatePrevNextButtons","PageDots","holder","dots","setDots","addDots","removeDots","count","fragment","createDocumentFragment","newDots","dot","updateSelected","selectedDot","pageDots","_createPageDots","activatePageDots","updateSelectedPageDots","updatePageDots","deactivatePageDots","Player","onVisibilityChange","visibilityChange","onVisibilityPlay","visibilityPlay","isPageHidden","hidden","tick","time","autoPlay","unpause","pauseAutoPlayOnHover","_createPlayer","player","activatePlayer","stopPlayer","deactivatePlayer","playPlayer","pausePlayer","unpausePlayer","onmouseenter","onmouseleave","getCellsFragment","insert","isAppend","insertCellElement","insertBefore","endCells","cellChange","prepend","minCellIndex","cellSizeChange","changedCellIndex","isPositioningSlider","prevSelectedElem","getCellLazyImages","lazyloadAttr","srcAttr","srcsetAttr","lazySelector","imgs","LazyLoader","img","flickity","_createLazyload","lazyLoad","lazyImages","lazyCellImages","src","srcset","onload","onerror","lerp","t","_createAsNavFor","activateAsNavFor","deactivateAsNavFor","destroyAsNavFor","asNavForOption","asNavFor","setNavCompanion","companion","navCompanion","onNavCompanionSelect","navCompanionSelect","onNavStaticClick","firstIndex","selectIndex","removeNavSelectedElements","navSelectedElements","changeNavSelectedClass","navElem","cellElement","imagesLoaded","ImagesLoaded","onAlways","queryElem","elements","getImages","jqDeferred","Deferred","check","LoadingImage","Background","Image","images","addElementImages","addImage","background","addElementBackgroundImages","elementNodeTypes","childImgs","child","1","9","11","reURL","exec","backgroundImage","addBackground","loadingImage","onProgress","progressedCount","hasAnyBroken","isLoaded","notify","debug","log","isComplete","jqMethod","getIsImageComplete","confirm","naturalWidth","proxyImage","unbindEvents","makeJQueryPlugin","promise","_createImagesLoaded","onImagesLoadedProgress","ui","widgetUuid","version","widgetSlice","cleanData","orig","_data","triggerHandler","widget","base","existingConstructor","basePrototype","proxiedPrototype","fullName","Widget","expr","_createWidget","_proto","_childConstructors","_super","_superApply","__super","__superApply","widgetEventPrefix","widgetName","widgetFullName","childPrototype","bridge","input","inputIndex","inputLength","hasOwnProperty","object","isMethodCall","methodValue","jquery","pushStack","get","defaultElement","classes","uuid","eventNamespace","bindings","hoverable","focusable","classesElementLookup","_on","defaultView","parentWindow","_getCreateOptions","_setOptionDisabled","_trigger","_getCreateEventData","_destroy","_removeClass","parts","curOption","pop","_setOptions","_setOption","_setOptionClasses","classKey","currentElements","_classes","keys","_toggleClass","processClassString","checkOption","current","unique","not","full","extra","_untrackClassesElement","inArray","_addClass","suppressDisabledCheck","handlers","delegateElement","handlerProxy","_off","_delay","_hoverable","mouseenter","mouseleave","_focusable","focusin","focusout","originalEvent","defaultEffect","effect","hasOptions","effectName","isEmptyObject","effects","easing","queue","BACKSPACE","COMMA","DELETE","DOWN","END","ENTER","ESCAPE","HOME","LEFT","PAGE_DOWN","PAGE_UP","PERIOD","RIGHT","SPACE","TAB","UP","uniqueId","removeUniqueId","ui-accordion-header","ui-accordion-header-collapsed","ui-accordion-content","collapsible","header","heightStyle","icons","activeHeader","beforeActivate","hideProps","showProps","prevShow","prevHide","_processPanels","headers","_refresh","panel","_createIcons","icon","prependTo","_destroyIcons","contents","_activate","_setupEvents","_keydown","altKey","ctrlKey","currentIndex","toFocus","_eventHandler","_panelKeyDown","prevHeaders","prevPanels","panels","filter","maxHeight","_findActive","headerId","panelId","aria-selected","aria-expanded","aria-hidden","siblings","isVisible","activeChildren","clickedChildren","clicked","clickedIsActive","collapsing","toShow","toHide","eventData","oldHeader","oldPanel","newHeader","newPanel","_toggle","_animate","_toggleComplete","total","adjust","down","step","now","fx","root","modules","__webpack_require__","moduleId","installedModules","loaded","m","c","p","_classCallCheck","TypeError","defineProperty","_createClass","defineProperties","descriptor","enumerable","configurable","writable","protoProps","staticProps","_initializerJs","_htmlParserJs","Typed","elementId","initializer","begin","status","start","typingComplete","toggleBlinking","onStop","arrayPos","typewrite","curString","curStrPos","backspace","onStart","reset","onDestroy","restart","replaceText","cursor","strPos","curLoop","insertCursor","onReset","shuffleStringsIfNeeded","bindInputFocusEvents","bindFocusEvents","currentElContent","strings","sequence","startDelay","_this2","fadeOutClass","humanize","humanizer","typeSpeed","numChars","setPauseStatus","htmlParser","typeHtmlChars","pauseTime","substr","skip","temporaryPause","onTypingPaused","substring","stringBeforeSkip","stringSkipped","stringAfterSkip","doneTyping","keepTyping","onTypingResumed","preStringTyped","nextString","_this3","onStringTyped","loop","loopCount","backDelay","_this4","initFadeOut","backSpeed","backSpaceHtmlChars","curStringAtPosition","smartBackspace","stopNum","onLastStringBackspaced","onComplete","isTyping","isBlinking","cursorBlinking","speed","shuffle","_this5","fadeOutDelay","isInput","contentType","innerHTML","textContent","_this6","showCursor","cursorChar","nextSibling","_interopRequireDefault","__esModule","default","_extends","assign","source","_defaultsJs","_defaultsJs2","Initializer","elContent","isPaused","s","trim","stringsElement","stringsLength","stringEl","getCurrentElContent","autoInsertCss","appendAnimationCss","cssDataName","innerCss","HTMLParser","curChar","endTag","S2","select2","requirejs","undef","hasProp","hasOwn","normalize","baseName","nameParts","nameSegment","mapValue","foundMap","foundI","foundStarMap","starI","j","part","normalizedBaseParts","baseParts","config","starMap","nodeIdCompat","jsSuffixRegExp","makeRequire","relName","forceSync","aps","req","makeNormalize","makeLoad","depName","defined","callDep","waiting","defining","main","splitPrefix","makeRelParts","makeConfig","makeMap","relParts","plugin","relResourceName","f","n","pr","uri","deps","cjsModule","ret","usingExports","callbackType","alt","cfg","_defined","_$","getMethods","theClass","methods","Utils","Extend","ChildClass","SuperClass","BaseConstructor","__hasProp","__super__","Decorate","DecoratorClass","DecoratedClass","unshift","argCount","calledConstructor","ctr","decoratedMethods","superMethods","displayName","superMethod","calledMethod","originalMethod","decoratedMethod","Observable","params","_type","invoke","generateChars","chars","randomChar","context","_convertData","originalKey","dataLevel","k","hasScroll","overflowX","overflowY","scrollWidth","escapeMarkup","markup","replaceMap","\\","&","<",">","\"","'","/","String","appendMany","$nodes","$jqNodes","node","__cache","GetUniqueElementId","select2Id","StoreData","GetData","RemoveData","Results","dataAdapter","render","$results","empty","displayMessage","hideLoading","$message","hideMessages","$options","results","$option","$dropdown","$resultsContainer","sorter","highlightFirstItem","$selected","first","ensureHighlightVisible","setClasses","selected","selectedIds","showLoading","loadingMore","loading","text","$loading","attrs","role","_resultId","label","$children","$child","$childrenContainer","class","$highlighted","getHighlightedResults","nextIndex","currentOffset","nextTop","nextOffset","nextBottom","mousewheel","deltaY","isAtTop","isAtBottom","evt","offsetDelta","KEYS","SHIFT","CTRL","ALT","ESC","BaseSelection","$selection","_tabindex","resultsId","_handleBlur","_attachCloseHandler","_detachCloseHandler","$select","$all","$selectionContainer","SingleSelection","$rendered","selectionContainer","selection","formatted","MultipleSelection","$remove","$selections","Placeholder","decorated","placeholder","normalizePlaceholder","_","createPlaceholder","$placeholder","singlePlaceholder","multipleSelections","AllowClear","_handleClear","_handleKeyboardClear","$clear","previousVal","unselectData","prevented","Search","$search","$searchContainer","_transferTabIndex","_keyUpPrevented","$previousChoice","searchRemoveChoice","msie","documentMode","disableInputEvents","handleSearch","searchHadFocus","resizeSearch","isTagInput","term","minimumWidth","EventRelay","relayEvents","preventableEvents","Translation","dict","all","translation","_cache","loadPath","translations","diacritics","Ⓐ","A","À","Á","Â","Ầ","Ấ","Ẫ","Ẩ","Ã","Ā","Ă","Ằ","Ắ","Ẵ","Ẳ","Ȧ","Ǡ","Ä","Ǟ","Ả","Å","Ǻ","Ǎ","Ȁ","Ȃ","Ạ","Ậ","Ặ","Ḁ","Ą","Ⱥ","Ɐ","Ꜳ","Æ","Ǽ","Ǣ","Ꜵ","Ꜷ","Ꜹ","Ꜻ","Ꜽ","Ⓑ","B","Ḃ","Ḅ","Ḇ","Ƀ","Ƃ","Ɓ","Ⓒ","C","Ć","Ĉ","Ċ","Č","Ç","Ḉ","Ƈ","Ȼ","Ꜿ","Ⓓ","D","Ḋ","Ď","Ḍ","Ḑ","Ḓ","Ḏ","Đ","Ƌ","Ɗ","Ɖ","Ꝺ","DZ","DŽ","Dz","Dž","Ⓔ","E","È","É","Ê","Ề","Ế","Ễ","Ể","Ẽ","Ē","Ḕ","Ḗ","Ĕ","Ė","Ë","Ẻ","Ě","Ȅ","Ȇ","Ẹ","Ệ","Ȩ","Ḝ","Ę","Ḙ","Ḛ","Ɛ","Ǝ","Ⓕ","F","Ḟ","Ƒ","Ꝼ","Ⓖ","G","Ǵ","Ĝ","Ḡ","Ğ","Ġ","Ǧ","Ģ","Ǥ","Ɠ","Ꞡ","Ᵹ","Ꝿ","Ⓗ","H","Ĥ","Ḣ","Ḧ","Ȟ","Ḥ","Ḩ","Ḫ","Ħ","Ⱨ","Ⱶ","Ɥ","Ⓘ","I","Ì","Í","Î","Ĩ","Ī","Ĭ","İ","Ï","Ḯ","Ỉ","Ǐ","Ȉ","Ȋ","Ị","Į","Ḭ","Ɨ","Ⓙ","J","Ĵ","Ɉ","Ⓚ","K","Ḱ","Ǩ","Ḳ","Ķ","Ḵ","Ƙ","Ⱪ","Ꝁ","Ꝃ","Ꝅ","Ꞣ","Ⓛ","L","Ŀ","Ĺ","Ľ","Ḷ","Ḹ","Ļ","Ḽ","Ḻ","Ł","Ƚ","Ɫ","Ⱡ","Ꝉ","Ꝇ","Ꞁ","LJ","Lj","Ⓜ","M","Ḿ","Ṁ","Ṃ","Ɱ","Ɯ","Ⓝ","N","Ǹ","Ń","Ñ","Ṅ","Ň","Ṇ","Ņ","Ṋ","Ṉ","Ƞ","Ɲ","Ꞑ","Ꞥ","NJ","Nj","Ⓞ","O","Ò","Ó","Ô","Ồ","Ố","Ỗ","Ổ","Õ","Ṍ","Ȭ","Ṏ","Ō","Ṑ","Ṓ","Ŏ","Ȯ","Ȱ","Ö","Ȫ","Ỏ","Ő","Ǒ","Ȍ","Ȏ","Ơ","Ờ","Ớ","Ỡ","Ở","Ợ","Ọ","Ộ","Ǫ","Ǭ","Ø","Ǿ","Ɔ","Ɵ","Ꝋ","Ꝍ","Ƣ","Ꝏ","Ȣ","Ⓟ","P","Ṕ","Ṗ","Ƥ","Ᵽ","Ꝑ","Ꝓ","Ꝕ","Ⓠ","Q","Ꝗ","Ꝙ","Ɋ","Ⓡ","R","Ŕ","Ṙ","Ř","Ȑ","Ȓ","Ṛ","Ṝ","Ŗ","Ṟ","Ɍ","Ɽ","Ꝛ","Ꞧ","Ꞃ","Ⓢ","S","ẞ","Ś","Ṥ","Ŝ","Ṡ","Š","Ṧ","Ṣ","Ṩ","Ș","Ş","Ȿ","Ꞩ","Ꞅ","Ⓣ","T","Ṫ","Ť","Ṭ","Ț","Ţ","Ṱ","Ṯ","Ŧ","Ƭ","Ʈ","Ⱦ","Ꞇ","Ꜩ","Ⓤ","U","Ù","Ú","Û","Ũ","Ṹ","Ū","Ṻ","Ŭ","Ü","Ǜ","Ǘ","Ǖ","Ǚ","Ủ","Ů","Ű","Ǔ","Ȕ","Ȗ","Ư","Ừ","Ứ","Ữ","Ử","Ự","Ụ","Ṳ","Ų","Ṷ","Ṵ","Ʉ","Ⓥ","V","Ṽ","Ṿ","Ʋ","Ꝟ","Ʌ","Ꝡ","Ⓦ","W","Ẁ","Ẃ","Ŵ","Ẇ","Ẅ","Ẉ","Ⱳ","Ⓧ","X","Ẋ","Ẍ","Ⓨ","Y","Ỳ","Ý","Ŷ","Ỹ","Ȳ","Ẏ","Ÿ","Ỷ","Ỵ","Ƴ","Ɏ","Ỿ","Ⓩ","Z","Ź","Ẑ","Ż","Ž","Ẓ","Ẕ","Ƶ","Ȥ","Ɀ","Ⱬ","Ꝣ","ⓐ","a","ẚ","à","á","â","ầ","ấ","ẫ","ẩ","ã","ā","ă","ằ","ắ","ẵ","ẳ","ȧ","ǡ","ä","ǟ","ả","å","ǻ","ǎ","ȁ","ȃ","ạ","ậ","ặ","ḁ","ą","ⱥ","ɐ","ꜳ","æ","ǽ","ǣ","ꜵ","ꜷ","ꜹ","ꜻ","ꜽ","ⓑ","b","ḃ","ḅ","ḇ","ƀ","ƃ","ɓ","ⓒ","c","ć","ĉ","ċ","č","ç","ḉ","ƈ","ȼ","ꜿ","ↄ","ⓓ","d","ḋ","ď","ḍ","ḑ","ḓ","ḏ","đ","ƌ","ɖ","ɗ","ꝺ","dz","dž","ⓔ","e","è","é","ê","ề","ế","ễ","ể","ẽ","ē","ḕ","ḗ","ĕ","ė","ë","ẻ","ě","ȅ","ȇ","ẹ","ệ","ȩ","ḝ","ę","ḙ","ḛ","ɇ","ɛ","ǝ","ⓕ","f","ḟ","ƒ","ꝼ","ⓖ","g","ǵ","ĝ","ḡ","ğ","ġ","ǧ","ģ","ǥ","ɠ","ꞡ","ᵹ","ꝿ","ⓗ","h","ĥ","ḣ","ḧ","ȟ","ḥ","ḩ","ḫ","ẖ","ħ","ⱨ","ⱶ","ɥ","ƕ","ⓘ","i","ì","í","î","ĩ","ī","ĭ","ï","ḯ","ỉ","ǐ","ȉ","ȋ","ị","į","ḭ","ɨ","ı","ⓙ","j","ĵ","ǰ","ɉ","ⓚ","k","ḱ","ǩ","ḳ","ķ","ḵ","ƙ","ⱪ","ꝁ","ꝃ","ꝅ","ꞣ","ⓛ","l","ŀ","ĺ","ľ","ḷ","ḹ","ļ","ḽ","ḻ","ſ","ł","ƚ","ɫ","ⱡ","ꝉ","ꞁ","ꝇ","lj","ⓜ","m","ḿ","ṁ","ṃ","ɱ","ɯ","ⓝ","n","ǹ","ń","ñ","ṅ","ň","ṇ","ņ","ṋ","ṉ","ƞ","ɲ","ʼn","ꞑ","ꞥ","nj","ⓞ","o","ò","ó","ô","ồ","ố","ỗ","ổ","õ","ṍ","ȭ","ṏ","ō","ṑ","ṓ","ŏ","ȯ","ȱ","ö","ȫ","ỏ","ő","ǒ","ȍ","ȏ","ơ","ờ","ớ","ỡ","ở","ợ","ọ","ộ","ǫ","ǭ","ø","ǿ","ɔ","ꝋ","ꝍ","ɵ","ƣ","ȣ","ꝏ","ⓟ","p","ṕ","ṗ","ƥ","ᵽ","ꝑ","ꝓ","ꝕ","ⓠ","q","ɋ","ꝗ","ꝙ","ⓡ","r","ŕ","ṙ","ř","ȑ","ȓ","ṛ","ṝ","ŗ","ṟ","ɍ","ɽ","ꝛ","ꞧ","ꞃ","ⓢ","s","ß","ś","ṥ","ŝ","ṡ","š","ṧ","ṣ","ṩ","ș","ş","ȿ","ꞩ","ꞅ","ẛ","ⓣ","t","ṫ","ẗ","ť","ṭ","ț","ţ","ṱ","ṯ","ŧ","ƭ","ʈ","ⱦ","ꞇ","ꜩ","ⓤ","u","ù","ú","û","ũ","ṹ","ū","ṻ","ŭ","ü","ǜ","ǘ","ǖ","ǚ","ủ","ů","ű","ǔ","ȕ","ȗ","ư","ừ","ứ","ữ","ử","ự","ụ","ṳ","ų","ṷ","ṵ","ʉ","ⓥ","v","ṽ","ṿ","ʋ","ꝟ","ʌ","ꝡ","ⓦ","w","ẁ","ẃ","ŵ","ẇ","ẅ","ẘ","ẉ","ⱳ","ⓧ","x","ẋ","ẍ","ⓨ","y","ỳ","ý","ŷ","ỹ","ȳ","ẏ","ÿ","ỷ","ẙ","ỵ","ƴ","ɏ","ỿ","ⓩ","z","ź","ẑ","ż","ž","ẓ","ẕ","ƶ","ȥ","ɀ","ⱬ","ꝣ","Ά","Έ","Ή","Ί","Ϊ","Ό","Ύ","Ϋ","Ώ","ά","έ","ή","ί","ϊ","ΐ","ό","ύ","ϋ","ΰ","ω","ς","BaseAdapter","query","generateResultId","SelectAdapter","currentData","addOptions","innerText","normalizedData","_normalizeItem","matcher","ArrayAdapter","convertToOptions","elm","onlyItem","$existing","existingIds","$existingOption","existingData","newData","$newOption","replaceWith","AjaxAdapter","ajaxOptions","_applyDefaults","processResults","q","transport","success","failure","$request","ajax","then","fail","request","_request","abort","_queryTimeout","Tags","tags","createTag","insertTag","tag","wrapper","checkChildren","optionText","toUpperCase","paramsTerm","checkText","_removeOldTags","page","_lastTag","Tokenizer","tokenizer","createAndSelect","$existingOptions","tokenData","separators","termChar","partParams","MinimumInputLength","minimumInputLength","minimum","MaximumInputLength","maximumInputLength","maximum","MaximumSelectionLength","maximumSelectionLength","showSearch","HidePlaceholder","removePlaceholder","modifiedData","InfiniteScroll","lastParams","$loadingMore","createLoadingMore","showLoadingMore","isLoadMoreVisible","loadingMoreOffset","loadMore","pagination","more","AttachBody","$dropdownParent","setupResultsEvents","_showDropdown","_attachPositioningHandler","_positionDropdown","_resizeDropdown","_hideDropdown","_detachPositioningHandler","$dropdownContainer","scrollEvent","resizeEvent","orientationEvent","$watchers","scrollLeft","ev","$window","isCurrentlyAbove","isCurrentlyBelow","newDirection","enoughRoomAbove","enoughRoomBelow","$offsetParent","offsetParent","parentOffset","minWidth","countResults","MinimumResultsForSearch","minimumResultsForSearch","SelectOnClose","_handleSelectOnClose","originalSelect2Event","$highlightedResults","CloseOnSelect","_selectTriggered","errorLoading","inputTooLong","overChars","inputTooShort","remainingChars","maximumSelected","noResults","searching","ResultsList","SelectionSearch","DIACRITICS","SelectData","ArrayData","AjaxData","DropdownSearch","EnglishTranslation","Defaults","tokenSeparators","Query","amdBase","initSelection","InitSelection","resultsAdapter","selectOnClose","dropdownAdapter","multiple","SearchableDropdown","closeOnSelect","dropdownCssClass","dropdownCss","adaptDropdownCssClass","DropdownCSS","selectionAdapter","allowClear","containerCssClass","containerCss","adaptContainerCssClass","ContainerCSS","language","languageParts","baseLanguage","languages","languageNames","l","amdLanguageBase","ex","warn","baseTranslation","customTranslation","stripDiacritics","original","dropdownAutoWidth","templateResult","templateSelection","theme","set","camelKey","convertedData","Options","fromElement","InputCompat","excludedData","dir","dataset","Select2","_generateId","tabindex","DataAdapter","_placeContainer","SelectionAdapter","DropdownAdapter","ResultsAdapter","_bindAdapters","_registerDomEvents","_registerDataEvents","_registerSelectionEvents","_registerDropdownEvents","_registerResultsEvents","_registerEvents","initialData","_syncAttributes","_resolveWidth","WIDTH","elementWidth","_syncA","_syncS","_syncSubtree","attachEvent","observer","MutationObserver","WebKitMutationObserver","MozMutationObserver","_observer","mutations","observe","attributes","childList","subtree","nonRelayEvents","toggleDropdown","open","addedNodes","removedNodes","actualTrigger","preTriggerMap","preTriggerName","preTriggerArgs","hasFocus","newVal","detachEvent","disconnect","thisMethods","instanceOptions","validate","validator","settings","onsubmit","submitButton","cancelSubmit","submitHandler","formSubmitted","currentForm","form","pendingRequest","focusInvalid","valid","errorList","rules","command","argument","staticRules","existingRules","param","filtered","hasAttribute","normalizeRule","messages","normalizeRules","classRules","attributeRules","dataRules","required","pseudos","blank","filled","unchecked","format","RegExp","groups","errorClass","pendingClass","validClass","errorElement","focusCleanup","errorContainer","errorLabelContainer","ignore","ignoreTitle","onfocusin","lastActive","unhighlight","hideThese","errorsFor","onfocusout","checkable","submitted","optional","onkeyup","excludedKeys","elementValue","invalid","highlight","findByName","setDefaults","email","date","dateISO","digits","equalTo","maxlength","minlength","rangelength","range","autoCreateRanges","delegate","eventType","labelContainer","errorContext","containers","valueCache","pending","invalidHandler","checkForm","errorMap","showErrors","prepareForm","rs","group","cleanElement","clean","checkElement","validationTargetFor","v","prepareElement","testgroup","numberOfInvalids","errors","successList","grep","defaultShowErrors","resetForm","hideErrors","resetElements","objectLength","addWrapper","findLastActive","rulesCache","resetInternals","idx","validity","badInput","lastIndexOf","rule","normalizer","rulesCount","dependencyMismatch","parameters","formatAndAdd","customDataMessage","customMessage","findDefined","defaultMessage","theregex","toToggle","showLabel","validElements","invalidElements","place","errorID","elementID","idOrName","describedBy","errorPlacement","escapeCssMeta","describer","string","getLength","depend","dependTypes","boolean","function","startRequest","stopRequest","previousValue","classRuleSettings","creditcard","addClassRules","normalizeAttributeRule","Number","depends","keepRule","parameter","transformed","addMethod","decimals","errorMessage","supportedTypes","re","notSupported","decimalPlaces","toInt","pow","optionDataString","originalMessage","mode","port","dataType","response","pendingRequests","ajaxPrefilter","xhr","ajaxSettings","stripHtml","valueStripped","regex","typeParam","optionalValue","files","factor","digit","account","sum","bankaccountNL","giroaccountNL","isOdd","control_digit","control_letter","cifRegEx","letter","control","all_sum","even_sum","odd_sum","firstCN","secondCN","checkResult","cn","cDigit","nCheck","nDigit","bEven","validTypes","mastercard","visa","amex","dinersclub","enroute","discover","jcb","unknown","isParamString","symbol","soft","adata","gg","mm","aaaa","xdata","UTC","getUTCFullYear","getUTCMonth","getUTCDate","countrycode","ibancheck","cChar","bbanpattern","bbancountrypatterns","ibanregexp","iban","ibancheckdigits","leadingZeroes","cRest","cOperator","minimalIBANlength","AL","AD","AT","AZ","BE","BH","BA","BR","BG","CR","HR","CY","CZ","DK","DO","EE","FO","FI","FR","GE","DE","GI","GR","GL","GT","HU","IS","IE","IL","IT","KZ","KW","LV","LB","LI","LT","LU","MK","MT","MR","MU","MC","MD","ME","NL","NO","PK","PS","PL","PT","RO","SM","SA","RS","SK","SI","ES","SE","CH","TN","TR","AE","GB","VG","phone_number","nieRegEx","validChars","arrSteps","intSum","int2","intControlNr","cep_value","$fields","$fieldsFirst","numberFilled","isDefault","caseSensitive","includeTerritories","includeMilitary","cd","cdv","LL","VL","FL","CryptoJS","F","subtype","C","C_lib","lib","Base","overrides","mixIn","$super","properties","propertyName","clone","WordArray","words","sigBytes","encoder","Hex","stringify","wordArray","thisWords","thatWords","thisSigBytes","thatSigBytes","clamp","thatByte","ceil","nBytes","rcache","r","m_w","m_z","mask","_r","C_enc","enc","hexChars","bite","hexStr","hexStrLength","Latin1","latin1Chars","fromCharCode","latin1Str","latin1StrLength","charCodeAt","Utf8","decodeURIComponent","utf8Str","unescape","encodeURIComponent","BufferedBlockAlgorithm","_nDataBytes","_append","_process","doFlush","dataWords","dataSigBytes","blockSize","blockSizeBytes","nBlocksReady","_minBufferSize","nWordsReady","nBytesReady","_doProcessBlock","processedWords","C_algo","Hasher","_doReset","messageUpdate","hash","_doFinalize","_createHelper","hasher","_createHmacHelper","HMAC","algo","parseLoop","base64Str","base64StrLength","reverseMap","bits1","bits2","Base64","_map","base64Chars","byte1","byte2","byte3","triplet","paddingChar","_reverseMap","paddingIndex","FF","GG","HH","II","T","sin","MD5","_hash","M","offset_i","M_offset_i","H","M_offset_0","M_offset_1","M_offset_2","M_offset_3","M_offset_4","M_offset_5","M_offset_6","M_offset_7","M_offset_8","M_offset_9","M_offset_10","M_offset_11","M_offset_12","M_offset_13","M_offset_14","M_offset_15","nBitsTotal","nBitsLeft","nBitsTotalH","nBitsTotalL","H_i","HmacMD5","W","SHA1","HmacSHA1","K","isPrime","sqrtN","sqrt","getFractionalBits","nPrime","SHA256","g","h","gamma0x","gamma0","gamma1x","gamma1","ch","maj","sigma0","sigma1","t1","t2","HmacSHA256","swapEndian","word","Utf16","Utf16BE","utf16Chars","codePoint","utf16Str","utf16StrLength","Utf16LE","ArrayBuffer","superInit","subInit","typedArray","Uint8Array","Int8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","buffer","byteOffset","byteLength","typedArrayByteLength","f1","z","f2","f3","f4","f5","rotl","_zl","_zr","_sl","_sr","_hl","_hr","RIPEMD160","al","bl","cl","dl","ar","br","cr","dr","er","hl","hr","zl","zr","sl","sr","HmacRIPEMD160","_hasher","hasherBlockSize","hasherBlockSizeBytes","oKey","_oKey","iKey","_iKey","oKeyWords","iKeyWords","innerHash","hmac","PBKDF2","keySize","iterations","compute","password","salt","derivedKey","blockIndex","derivedKeyWords","blockIndexWords","block","blockWords","blockWordsLength","intermediate","intermediateWords","EvpKDF","SHA224","HmacSHA224","X32WordArray","C_x64","x64","Word","high","low","toX32","x64Words","x64WordsLength","x32Words","x64Word","wordsLength","X64Word","RHO_OFFSETS","PI_INDEXES","ROUND_CONSTANTS","newX","newY","LFSR","roundConstantMsw","roundConstantLsw","bitPosition","SHA3","outputLength","_state","nBlockSizeLanes","M2i","M2i1","lane","tMsw","tLsw","Tx","Tx4","Tx1","Tx1Msw","Tx1Lsw","laneIndex","laneMsw","laneLsw","rhoOffset","TPiLane","T0","state0","TLane","Tx1Lane","Tx2Lane","roundConstant","blockSizeBits","outputLengthBytes","outputLengthLanes","hashWords","HmacSHA3","X64Word_create","X64WordArray","SHA512","H0","H1","H2","H3","H4","H5","H6","H7","H0h","H0l","H1h","H1l","H2h","H2l","H3h","H3l","H4h","H4l","H5h","H5l","H6h","H6l","H7h","H7l","ah","bh","dh","eh","fh","fl","gh","gl","hh","Wi","Wih","Wil","gamma0xh","gamma0xl","gamma0h","gamma0l","gamma1xh","gamma1xl","gamma1h","gamma1l","Wi7","Wi7h","Wi7l","Wi16","Wi16h","Wi16l","chh","chl","majh","majl","sigma0h","sigma0l","sigma1h","sigma1l","Ki","Kih","Kil","t1l","t1h","t2l","t2h","HmacSHA512","SHA384","HmacSHA384","Cipher","createEncryptor","_ENC_XFORM_MODE","createDecryptor","_DEC_XFORM_MODE","xformMode","_xformMode","_key","dataUpdate","finalProcessedData","ivSize","selectCipherStrategy","PasswordBasedCipher","SerializableCipher","cipher","encrypt","decrypt","ciphertext","C_mode","StreamCipher","finalProcessedBlocks","BlockCipherMode","iv","Encryptor","Decryptor","_cipher","_iv","CBC","xorBlock","_prevBlock","processBlock","encryptBlock","thisBlock","decryptBlock","C_pad","pad","Pkcs7","nPaddingBytes","paddingWord","paddingWords","unpad","CipherParams","BlockCipher","modeCreator","_mode","__creator","cipherParams","formatter","C_format","OpenSSLFormatter","OpenSSL","openSSLStr","ciphertextWords","encryptor","cipherCfg","algorithm","_parse","plaintext","C_kdf","kdf","OpenSSLKdf","execute","derivedParams","CFB","generateKeystreamAndEncrypt","keystream","ECB","AnsiX923","lastBytePos","Iso10126","Iso97971","ZeroPadding","OFB","_keystream","NoPadding","SBOX","INV_SBOX","SUB_MIX_0","SUB_MIX_1","SUB_MIX_2","SUB_MIX_3","INV_SUB_MIX_0","INV_SUB_MIX_1","INV_SUB_MIX_2","INV_SUB_MIX_3","xi","sx","x4","x8","RCON","AES","_nRounds","_keyPriorReset","keyWords","nRounds","ksRows","keySchedule","_keySchedule","ksRow","invKeySchedule","_invKeySchedule","invKsRow","_doCryptBlock","s0","s1","s2","s3","t0","t3","exchangeLR","_lBlock","_rBlock","exchangeRL","PC1","PC2","BIT_SHIFTS","SBOX_P","0","268435456","536870912","805306368","1073741824","1342177280","1610612736","1879048192","2147483648","2415919104","2684354560","2952790016","3221225472","3489660928","3758096384","4026531840","134217728","402653184","671088640","939524096","1207959552","1476395008","1744830464","2013265920","2281701376","2550136832","2818572288","3087007744","3355443200","3623878656","3892314112","4160749568","268435457","536870913","805306369","1073741825","1342177281","1610612737","1879048193","2147483649","2415919105","2684354561","2952790017","3221225473","3489660929","3758096385","4026531841","134217729","402653185","671088641","939524097","1207959553","1476395009","1744830465","2013265921","2281701377","2550136833","2818572289","3087007745","3355443201","3623878657","3892314113","4160749569","16777216","33554432","50331648","67108864","83886080","100663296","117440512","150994944","167772160","184549376","201326592","218103808","234881024","251658240","8388608","25165824","41943040","58720256","75497472","92274688","109051904","125829120","142606336","159383552","176160768","192937984","209715200","226492416","243269632","260046848","285212672","301989888","318767104","335544320","352321536","369098752","385875968","419430400","436207616","452984832","469762048","486539264","503316480","520093696","276824064","293601280","310378496","327155712","343932928","360710144","377487360","394264576","411041792","427819008","444596224","461373440","478150656","494927872","511705088","528482304","1048576","2097152","3145728","4194304","5242880","6291456","7340032","9437184","10485760","11534336","12582912","13631488","14680064","15728640","524288","1572864","2621440","3670016","4718592","5767168","6815744","7864320","8912896","9961472","11010048","12058624","13107200","14155776","15204352","16252928","17825792","18874368","19922944","20971520","22020096","23068672","24117248","26214400","27262976","28311552","29360128","30408704","31457280","32505856","17301504","18350080","19398656","20447232","21495808","22544384","23592960","24641536","25690112","26738688","27787264","28835840","29884416","30932992","31981568","33030144","65536","131072","196608","262144","327680","393216","458752","589824","655360","720896","786432","851968","917504","983040","32768","98304","163840","229376","294912","360448","425984","491520","557056","622592","688128","753664","819200","884736","950272","1015808","1114112","1179648","1245184","1310720","1376256","1441792","1507328","1638400","1703936","1769472","1835008","1900544","1966080","2031616","1081344","1146880","1212416","1277952","1343488","1409024","1474560","1540096","1605632","1671168","1736704","1802240","1867776","1933312","1998848","2064384","4096","8192","12288","16384","20480","24576","28672","36864","40960","45056","49152","53248","57344","61440","2048","6144","10240","14336","18432","22528","26624","30720","34816","38912","43008","47104","51200","55296","59392","63488","69632","73728","77824","81920","86016","90112","94208","102400","106496","110592","114688","118784","122880","126976","67584","71680","75776","79872","83968","88064","92160","96256","100352","104448","108544","112640","116736","120832","124928","129024","256","512","768","1024","1280","1536","1792","2304","2560","2816","3072","3328","3584","3840","128","384","640","896","1152","1408","1664","1920","2176","2432","2688","2944","3200","3456","3712","3968","4352","4608","4864","5120","5376","5632","5888","6400","6656","6912","7168","7424","7680","7936","4224","4480","4736","4992","5248","5504","5760","6016","6272","6528","6784","7040","7296","7552","7808","8064","16","32","48","64","80","96","112","144","160","176","192","208","224","240","8","24","40","56","72","88","104","120","136","152","168","184","200","216","232","248","272","288","304","320","336","352","368","400","416","432","448","464","480","496","264","280","296","312","328","344","360","376","392","408","424","440","456","472","488","504","2","3","4","5","6","7","10","12","13","14","15","2147483650","2147483651","2147483652","2147483653","2147483654","2147483655","2147483656","2147483657","2147483658","2147483659","2147483660","2147483661","2147483662","2147483663","17","18","19","20","21","22","23","25","26","27","28","29","30","31","2147483664","2147483665","2147483666","2147483667","2147483668","2147483669","2147483670","2147483671","2147483672","2147483673","2147483674","2147483675","2147483676","2147483677","2147483678","2147483679","SBOX_MASK","DES","keyBits","keyBitPos","subKeys","_subKeys","nSubKey","subKey","bitShift","invSubKeys","_invSubKeys","lBlock","rBlock","TripleDES","_des1","_des2","_des3","generateKeystreamWord","S","_S","_i","_j","keystreamWord","RC4","keySigBytes","keyByteIndex","keyByte","RC4Drop","drop","CTRGladman","incWord","b1","b2","b3","incCounter","counter","_counter","nextState","X","_X","_C","C_","_b","gx","ga","gb","G","Rabbit","IV","IV_0","IV_1","i0","i2","i1","i3","CTR","RabbitLegacy","fitText","kompressor","compressor","minFontSize","NEGATIVE_INFINITY","maxFontSize","POSITIVE_INFINITY","resizer","departmentId","departments","baseURL","JobResults","location","jobsContainer","subscribeButton","jobsCount","jobsForm","jobsShowMore","excludedIds","loader","subscribeModal","loadJobs","keyword","category","locations","hasFilter","excluded_ids","beforeSend","found_posts","has_more","showValues","jobData","categoryNames","categoryId","items","adjustSubscribeModal","instructions","modalBody","helperViewport","documentWidth","after","post","serialize","serializeArray","change","arr","department","FeaturedJobs","updateApplyBtn","typedStrings","applyBtn","currentUrl","typedInit","typedContainer","typedEl","isLinkUpdated","fileUploadSelected","numFiles","FAQ","accordion","newsSection","newsData","showMoreButton","newsContainer","updateColumns","bigIndex1","bigIndex2","bigIndex3","isBig","tax_query","mobiSlider","showMobileFormButton","toFixed","resume","extension","accept","filesize","cover_letter","Job","notARobot","fbq","recaptchaCallback","token","fetch","json","from","checked","err","toggler","slideUp","slideDown","ImageSwitch","updateImage","targetEl","currentEl","wrapperEl","scrollBtn","excludedClass","scrollToSection","targetSection","targetElClass","mainContainer","nextElClassAttr","nextElClasses","intersect","searchContainer","navmenu","menuMobile","primaryMenu","secondaryMenu","toggleMenu","menuScroll","locationX","locationWin","bannerHeight","targetOffset","adminbar","topCss","subMenuMobile","ListingPagination","scope","ajaxRequestEnable","hasMore","btnDelay","showAllButton","listingLoader","buttonEl","postType","taxonomy","excluded","outputResult","textStatus","fadeIn","listingContainer","betssonCookie","cname","cvalue","exdays","setTime","getTime","expires","toUTCString","cookie","decodedCookie","ca","addListener","eventNames","wrapperClass","btnClass","wrappers","cookieName","cookieEnabled","buttons","thisWrapper","Slider","ios_fix","touchStartCoords","touchingCarousel","cancelable","passive"],"mappings":"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A,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC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","file":"main.js","sourcesContent":["var e = {};\r\nvar etype = e.type;\r\n\r\nfunction keydownClick() {\r\n\tif ( etype === 'keydown' && ( e.keyCode !== 13 || e.keyCode !== 32 ) ) {\r\n\t\treturn true;\r\n\t}\r\n}\r\n\r\n\r\nvar globalFnc = {};\r\n\r\n( function( $ ) {\r\n\r\n\tglobalFnc.imageIE = function() {\r\n\t\tif ( window.ActiveXObject || \"ActiveXObject\" in window ) {\r\n\t\t\t$( '.center-image' ).each( function () {\r\n\t\t\t\tvar $container = $( this ),\r\n\t\t\t\t\timgUrl = $container.find( 'img' ).prop( 'src' );\r\n\t\t\t\tif ( imgUrl ) {\r\n\t\t\t\t\t$container\r\n\t\t\t\t\t\t.css( 'backgroundImage', 'url(' + imgUrl + ')' )\r\n\t\t\t\t\t\t.addClass( 'compat-cover' );\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t\t}\r\n\t};\r\n\r\n\tglobalFnc.sectionTitle = function(){\r\n\t\tif ($(window).width() < 768) {\r\n\t\t\t$('.section-title').each(function() {\r\n\t\t\t\tvar $height = $( this ).find('.h2').innerHeight();\r\n\t\t\t\tif($height > 50){\r\n\t\t\t\t\t$( this ).removeClass('is-one-liner');\r\n\t\t\t\t\t$( this ).addClass('is-two-liner');\r\n\r\n\t\t\t\t}else{\r\n\t\t\t\t\t$( this ).removeClass('is-two-liner');\r\n\t\t\t\t\t$( this ).addClass('is-one-liner');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tglobalFnc.checkTitleHeight = function(){\r\n\r\n\t\tglobalFnc.sectionTitle();\r\n\r\n\t\t$(window).resize(function() {\r\n\t\t\tclearTimeout(window.resizedFinished);\r\n\t\t\twindow.resizedFinished = setTimeout(function(){\r\n\t\t\t\tglobalFnc.sectionTitle();\r\n\t\t\t}, 250);\r\n\t\t});\r\n\r\n\t}\r\n\r\n\tglobalFnc.imageIE();\r\n\tglobalFnc.checkTitleHeight();\r\n\r\n\r\n\r\n} )( jQuery );\r\n","/* ========================================================================\n * Bootstrap: transition.js v3.3.6\n * http://getbootstrap.com/javascript/#transitions\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)\n // ============================================================\n\n function transitionEnd() {\n var el = document.createElement('bootstrap')\n\n var transEndEventNames = {\n WebkitTransition : 'webkitTransitionEnd',\n MozTransition : 'transitionend',\n OTransition : 'oTransitionEnd otransitionend',\n transition : 'transitionend'\n }\n\n for (var name in transEndEventNames) {\n if (el.style[name] !== undefined) {\n return { end: transEndEventNames[name] }\n }\n }\n\n return false // explicit for ie8 ( ._.)\n }\n\n // http://blog.alexmaccaw.com/css-transitions\n $.fn.emulateTransitionEnd = function (duration) {\n var called = false\n var $el = this\n $(this).one('bsTransitionEnd', function () { called = true })\n var callback = function () { if (!called) $($el).trigger($.support.transition.end) }\n setTimeout(callback, duration)\n return this\n }\n\n $(function () {\n $.support.transition = transitionEnd()\n\n if (!$.support.transition) return\n\n $.event.special.bsTransitionEnd = {\n bindType: $.support.transition.end,\n delegateType: $.support.transition.end,\n handle: function (e) {\n if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)\n }\n }\n })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: alert.js v3.3.6\n * http://getbootstrap.com/javascript/#alerts\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // ALERT CLASS DEFINITION\n // ======================\n\n var dismiss = '[data-dismiss=\"alert\"]'\n var Alert = function (el) {\n $(el).on('click', dismiss, this.close)\n }\n\n Alert.VERSION = '3.3.6'\n\n Alert.TRANSITION_DURATION = 150\n\n Alert.prototype.close = function (e) {\n var $this = $(this)\n var selector = $this.attr('data-target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n var $parent = $(selector)\n\n if (e) e.preventDefault()\n\n if (!$parent.length) {\n $parent = $this.closest('.alert')\n }\n\n $parent.trigger(e = $.Event('close.bs.alert'))\n\n if (e.isDefaultPrevented()) return\n\n $parent.removeClass('in')\n\n function removeElement() {\n // detach from parent, fire event then clean up data\n $parent.detach().trigger('closed.bs.alert').remove()\n }\n\n $.support.transition && $parent.hasClass('fade') ?\n $parent\n .one('bsTransitionEnd', removeElement)\n .emulateTransitionEnd(Alert.TRANSITION_DURATION) :\n removeElement()\n }\n\n\n // ALERT PLUGIN DEFINITION\n // =======================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.alert')\n\n if (!data) $this.data('bs.alert', (data = new Alert(this)))\n if (typeof option == 'string') data[option].call($this)\n })\n }\n\n var old = $.fn.alert\n\n $.fn.alert = Plugin\n $.fn.alert.Constructor = Alert\n\n\n // ALERT NO CONFLICT\n // =================\n\n $.fn.alert.noConflict = function () {\n $.fn.alert = old\n return this\n }\n\n\n // ALERT DATA-API\n // ==============\n\n $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: button.js v3.3.6\n * http://getbootstrap.com/javascript/#buttons\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // BUTTON PUBLIC CLASS DEFINITION\n // ==============================\n\n var Button = function (element, options) {\n this.$element = $(element)\n this.options = $.extend({}, Button.DEFAULTS, options)\n this.isLoading = false\n }\n\n Button.VERSION = '3.3.6'\n\n Button.DEFAULTS = {\n loadingText: 'loading...'\n }\n\n Button.prototype.setState = function (state) {\n var d = 'disabled'\n var $el = this.$element\n var val = $el.is('input') ? 'val' : 'html'\n var data = $el.data()\n\n state += 'Text'\n\n if (data.resetText == null) $el.data('resetText', $el[val]())\n\n // push to event loop to allow forms to submit\n setTimeout($.proxy(function () {\n $el[val](data[state] == null ? this.options[state] : data[state])\n\n if (state == 'loadingText') {\n this.isLoading = true\n $el.addClass(d).attr(d, d)\n } else if (this.isLoading) {\n this.isLoading = false\n $el.removeClass(d).removeAttr(d)\n }\n }, this), 0)\n }\n\n Button.prototype.toggle = function () {\n var changed = true\n var $parent = this.$element.closest('[data-toggle=\"buttons\"]')\n\n if ($parent.length) {\n var $input = this.$element.find('input')\n if ($input.prop('type') == 'radio') {\n if ($input.prop('checked')) changed = false\n $parent.find('.active').removeClass('active')\n this.$element.addClass('active')\n } else if ($input.prop('type') == 'checkbox') {\n if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false\n this.$element.toggleClass('active')\n }\n $input.prop('checked', this.$element.hasClass('active'))\n if (changed) $input.trigger('change')\n } else {\n this.$element.attr('aria-pressed', !this.$element.hasClass('active'))\n this.$element.toggleClass('active')\n }\n }\n\n\n // BUTTON PLUGIN DEFINITION\n // ========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.button')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.button', (data = new Button(this, options)))\n\n if (option == 'toggle') data.toggle()\n else if (option) data.setState(option)\n })\n }\n\n var old = $.fn.button\n\n $.fn.button = Plugin\n $.fn.button.Constructor = Button\n\n\n // BUTTON NO CONFLICT\n // ==================\n\n $.fn.button.noConflict = function () {\n $.fn.button = old\n return this\n }\n\n\n // BUTTON DATA-API\n // ===============\n\n $(document)\n .on('click.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n var $btn = $(e.target)\n if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')\n Plugin.call($btn, 'toggle')\n if (!($(e.target).is('input[type=\"radio\"]') || $(e.target).is('input[type=\"checkbox\"]'))) e.preventDefault()\n })\n .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))\n })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: carousel.js v3.3.6\n * http://getbootstrap.com/javascript/#carousel\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // CAROUSEL CLASS DEFINITION\n // =========================\n\n var Carousel = function (element, options) {\n this.$element = $(element)\n this.$indicators = this.$element.find('.carousel-indicators')\n this.options = options\n this.paused = null\n this.sliding = null\n this.interval = null\n this.$active = null\n this.$items = null\n\n this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))\n\n this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element\n .on('mouseenter.bs.carousel', $.proxy(this.pause, this))\n .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))\n }\n\n Carousel.VERSION = '3.3.6'\n\n Carousel.TRANSITION_DURATION = 600\n\n Carousel.DEFAULTS = {\n interval: 5000,\n pause: 'hover',\n wrap: true,\n keyboard: true\n }\n\n Carousel.prototype.keydown = function (e) {\n if (/input|textarea/i.test(e.target.tagName)) return\n switch (e.which) {\n case 37: this.prev(); break\n case 39: this.next(); break\n default: return\n }\n\n e.preventDefault()\n }\n\n Carousel.prototype.cycle = function (e) {\n e || (this.paused = false)\n\n this.interval && clearInterval(this.interval)\n\n this.options.interval\n && !this.paused\n && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))\n\n return this\n }\n\n Carousel.prototype.getItemIndex = function (item) {\n this.$items = item.parent().children('.item')\n return this.$items.index(item || this.$active)\n }\n\n Carousel.prototype.getItemForDirection = function (direction, active) {\n var activeIndex = this.getItemIndex(active)\n var willWrap = (direction == 'prev' && activeIndex === 0)\n || (direction == 'next' && activeIndex == (this.$items.length - 1))\n if (willWrap && !this.options.wrap) return active\n var delta = direction == 'prev' ? -1 : 1\n var itemIndex = (activeIndex + delta) % this.$items.length\n return this.$items.eq(itemIndex)\n }\n\n Carousel.prototype.to = function (pos) {\n var that = this\n var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))\n\n if (pos > (this.$items.length - 1) || pos < 0) return\n\n if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, \"slid\"\n if (activeIndex == pos) return this.pause().cycle()\n\n return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))\n }\n\n Carousel.prototype.pause = function (e) {\n e || (this.paused = true)\n\n if (this.$element.find('.next, .prev').length && $.support.transition) {\n this.$element.trigger($.support.transition.end)\n this.cycle(true)\n }\n\n this.interval = clearInterval(this.interval)\n\n return this\n }\n\n Carousel.prototype.next = function () {\n if (this.sliding) return\n return this.slide('next')\n }\n\n Carousel.prototype.prev = function () {\n if (this.sliding) return\n return this.slide('prev')\n }\n\n Carousel.prototype.slide = function (type, next) {\n var $active = this.$element.find('.item.active')\n var $next = next || this.getItemForDirection(type, $active)\n var isCycling = this.interval\n var direction = type == 'next' ? 'left' : 'right'\n var that = this\n\n if ($next.hasClass('active')) return (this.sliding = false)\n\n var relatedTarget = $next[0]\n var slideEvent = $.Event('slide.bs.carousel', {\n relatedTarget: relatedTarget,\n direction: direction\n })\n this.$element.trigger(slideEvent)\n if (slideEvent.isDefaultPrevented()) return\n\n this.sliding = true\n\n isCycling && this.pause()\n\n if (this.$indicators.length) {\n this.$indicators.find('.active').removeClass('active')\n var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])\n $nextIndicator && $nextIndicator.addClass('active')\n }\n\n var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, \"slid\"\n if ($.support.transition && this.$element.hasClass('slide')) {\n $next.addClass(type)\n $next[0].offsetWidth // force reflow\n $active.addClass(direction)\n $next.addClass(direction)\n $active\n .one('bsTransitionEnd', function () {\n $next.removeClass([type, direction].join(' ')).addClass('active')\n $active.removeClass(['active', direction].join(' '))\n that.sliding = false\n setTimeout(function () {\n that.$element.trigger(slidEvent)\n }, 0)\n })\n .emulateTransitionEnd(Carousel.TRANSITION_DURATION)\n } else {\n $active.removeClass('active')\n $next.addClass('active')\n this.sliding = false\n this.$element.trigger(slidEvent)\n }\n\n isCycling && this.cycle()\n\n return this\n }\n\n\n // CAROUSEL PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.carousel')\n var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)\n var action = typeof option == 'string' ? option : options.slide\n\n if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))\n if (typeof option == 'number') data.to(option)\n else if (action) data[action]()\n else if (options.interval) data.pause().cycle()\n })\n }\n\n var old = $.fn.carousel\n\n $.fn.carousel = Plugin\n $.fn.carousel.Constructor = Carousel\n\n\n // CAROUSEL NO CONFLICT\n // ====================\n\n $.fn.carousel.noConflict = function () {\n $.fn.carousel = old\n return this\n }\n\n\n // CAROUSEL DATA-API\n // =================\n\n var clickHandler = function (e) {\n var href\n var $this = $(this)\n var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '')) // strip for ie7\n if (!$target.hasClass('carousel')) return\n var options = $.extend({}, $target.data(), $this.data())\n var slideIndex = $this.attr('data-slide-to')\n if (slideIndex) options.interval = false\n\n Plugin.call($target, options)\n\n if (slideIndex) {\n $target.data('bs.carousel').to(slideIndex)\n }\n\n e.preventDefault()\n }\n\n $(document)\n .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)\n .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)\n\n $(window).on('load', function () {\n $('[data-ride=\"carousel\"]').each(function () {\n var $carousel = $(this)\n Plugin.call($carousel, $carousel.data())\n })\n })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: collapse.js v3.3.6\n * http://getbootstrap.com/javascript/#collapse\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // COLLAPSE PUBLIC CLASS DEFINITION\n // ================================\n\n var Collapse = function (element, options) {\n this.$element = $(element)\n this.options = $.extend({}, Collapse.DEFAULTS, options)\n this.$trigger = $('[data-toggle=\"collapse\"][href=\"#' + element.id + '\"],' +\n '[data-toggle=\"collapse\"][data-target=\"#' + element.id + '\"]')\n this.transitioning = null\n\n if (this.options.parent) {\n this.$parent = this.getParent()\n } else {\n this.addAriaAndCollapsedClass(this.$element, this.$trigger)\n }\n\n if (this.options.toggle) this.toggle()\n }\n\n Collapse.VERSION = '3.3.6'\n\n Collapse.TRANSITION_DURATION = 350\n\n Collapse.DEFAULTS = {\n toggle: true\n }\n\n Collapse.prototype.dimension = function () {\n var hasWidth = this.$element.hasClass('width')\n return hasWidth ? 'width' : 'height'\n }\n\n Collapse.prototype.show = function () {\n if (this.transitioning || this.$element.hasClass('in')) return\n\n var activesData\n var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')\n\n if (actives && actives.length) {\n activesData = actives.data('bs.collapse')\n if (activesData && activesData.transitioning) return\n }\n\n var startEvent = $.Event('show.bs.collapse')\n this.$element.trigger(startEvent)\n if (startEvent.isDefaultPrevented()) return\n\n if (actives && actives.length) {\n Plugin.call(actives, 'hide')\n activesData || actives.data('bs.collapse', null)\n }\n\n var dimension = this.dimension()\n\n this.$element\n .removeClass('collapse')\n .addClass('collapsing')[dimension](0)\n .attr('aria-expanded', true)\n\n this.$trigger\n .removeClass('collapsed')\n .attr('aria-expanded', true)\n\n this.transitioning = 1\n\n var complete = function () {\n this.$element\n .removeClass('collapsing')\n .addClass('collapse in')[dimension]('')\n this.transitioning = 0\n this.$element\n .trigger('shown.bs.collapse')\n }\n\n if (!$.support.transition) return complete.call(this)\n\n var scrollSize = $.camelCase(['scroll', dimension].join('-'))\n\n this.$element\n .one('bsTransitionEnd', $.proxy(complete, this))\n .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])\n }\n\n Collapse.prototype.hide = function () {\n if (this.transitioning || !this.$element.hasClass('in')) return\n\n var startEvent = $.Event('hide.bs.collapse')\n this.$element.trigger(startEvent)\n if (startEvent.isDefaultPrevented()) return\n\n var dimension = this.dimension()\n\n this.$element[dimension](this.$element[dimension]())[0].offsetHeight\n\n this.$element\n .addClass('collapsing')\n .removeClass('collapse in')\n .attr('aria-expanded', false)\n\n this.$trigger\n .addClass('collapsed')\n .attr('aria-expanded', false)\n\n this.transitioning = 1\n\n var complete = function () {\n this.transitioning = 0\n this.$element\n .removeClass('collapsing')\n .addClass('collapse')\n .trigger('hidden.bs.collapse')\n }\n\n if (!$.support.transition) return complete.call(this)\n\n this.$element\n [dimension](0)\n .one('bsTransitionEnd', $.proxy(complete, this))\n .emulateTransitionEnd(Collapse.TRANSITION_DURATION)\n }\n\n Collapse.prototype.toggle = function () {\n this[this.$element.hasClass('in') ? 'hide' : 'show']()\n }\n\n Collapse.prototype.getParent = function () {\n return $(this.options.parent)\n .find('[data-toggle=\"collapse\"][data-parent=\"' + this.options.parent + '\"]')\n .each($.proxy(function (i, element) {\n var $element = $(element)\n this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)\n }, this))\n .end()\n }\n\n Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {\n var isOpen = $element.hasClass('in')\n\n $element.attr('aria-expanded', isOpen)\n $trigger\n .toggleClass('collapsed', !isOpen)\n .attr('aria-expanded', isOpen)\n }\n\n function getTargetFromTrigger($trigger) {\n var href\n var target = $trigger.attr('data-target')\n || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\n\n return $(target)\n }\n\n\n // COLLAPSE PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.collapse')\n var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false\n if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.collapse\n\n $.fn.collapse = Plugin\n $.fn.collapse.Constructor = Collapse\n\n\n // COLLAPSE NO CONFLICT\n // ====================\n\n $.fn.collapse.noConflict = function () {\n $.fn.collapse = old\n return this\n }\n\n\n // COLLAPSE DATA-API\n // =================\n\n $(document).on('click.bs.collapse.data-api', '[data-toggle=\"collapse\"]', function (e) {\n var $this = $(this)\n\n if (!$this.attr('data-target')) e.preventDefault()\n\n var $target = getTargetFromTrigger($this)\n var data = $target.data('bs.collapse')\n var option = data ? 'toggle' : $this.data()\n\n Plugin.call($target, option)\n })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: dropdown.js v3.3.6\n * http://getbootstrap.com/javascript/#dropdowns\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // DROPDOWN CLASS DEFINITION\n // =========================\n\n var backdrop = '.dropdown-backdrop'\n var toggle = '[data-toggle=\"dropdown\"]'\n var Dropdown = function (element) {\n $(element).on('click.bs.dropdown', this.toggle)\n }\n\n Dropdown.VERSION = '3.3.6'\n\n function getParent($this) {\n var selector = $this.attr('data-target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n var $parent = selector && $(selector)\n\n return $parent && $parent.length ? $parent : $this.parent()\n }\n\n function clearMenus(e) {\n if (e && e.which === 3) return\n $(backdrop).remove()\n $(toggle).each(function () {\n var $this = $(this)\n var $parent = getParent($this)\n var relatedTarget = { relatedTarget: this }\n\n if (!$parent.hasClass('open')) return\n\n if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return\n\n $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))\n\n if (e.isDefaultPrevented()) return\n\n $this.attr('aria-expanded', 'false')\n $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))\n })\n }\n\n Dropdown.prototype.toggle = function (e) {\n var $this = $(this)\n\n if ($this.is('.disabled, :disabled')) return\n\n var $parent = getParent($this)\n var isActive = $parent.hasClass('open')\n\n clearMenus()\n\n if (!isActive) {\n if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {\n // if mobile we use a backdrop because click events don't delegate\n $(document.createElement('div'))\n .addClass('dropdown-backdrop')\n .insertAfter($(this))\n .on('click', clearMenus)\n }\n\n var relatedTarget = { relatedTarget: this }\n $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))\n\n if (e.isDefaultPrevented()) return\n\n $this\n .trigger('focus')\n .attr('aria-expanded', 'true')\n\n $parent\n .toggleClass('open')\n .trigger($.Event('shown.bs.dropdown', relatedTarget))\n }\n\n return false\n }\n\n Dropdown.prototype.keydown = function (e) {\n if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return\n\n var $this = $(this)\n\n e.preventDefault()\n e.stopPropagation()\n\n if ($this.is('.disabled, :disabled')) return\n\n var $parent = getParent($this)\n var isActive = $parent.hasClass('open')\n\n if (!isActive && e.which != 27 || isActive && e.which == 27) {\n if (e.which == 27) $parent.find(toggle).trigger('focus')\n return $this.trigger('click')\n }\n\n var desc = ' li:not(.disabled):visible a'\n var $items = $parent.find('.dropdown-menu' + desc)\n\n if (!$items.length) return\n\n var index = $items.index(e.target)\n\n if (e.which == 38 && index > 0) index-- // up\n if (e.which == 40 && index < $items.length - 1) index++ // down\n if (!~index) index = 0\n\n $items.eq(index).trigger('focus')\n }\n\n\n // DROPDOWN PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.dropdown')\n\n if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))\n if (typeof option == 'string') data[option].call($this)\n })\n }\n\n var old = $.fn.dropdown\n\n $.fn.dropdown = Plugin\n $.fn.dropdown.Constructor = Dropdown\n\n\n // DROPDOWN NO CONFLICT\n // ====================\n\n $.fn.dropdown.noConflict = function () {\n $.fn.dropdown = old\n return this\n }\n\n\n // APPLY TO STANDARD DROPDOWN ELEMENTS\n // ===================================\n\n $(document)\n .on('click.bs.dropdown.data-api', clearMenus)\n .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })\n .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)\n .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)\n .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: modal.js v3.3.6\n * http://getbootstrap.com/javascript/#modals\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // MODAL CLASS DEFINITION\n // ======================\n\n var Modal = function (element, options) {\n this.options = options\n this.$body = $(document.body)\n this.$element = $(element)\n this.$dialog = this.$element.find('.modal-dialog')\n this.$backdrop = null\n this.isShown = null\n this.originalBodyPad = null\n this.scrollbarWidth = 0\n this.ignoreBackdropClick = false\n\n if (this.options.remote) {\n this.$element\n .find('.modal-content')\n .load(this.options.remote, $.proxy(function () {\n this.$element.trigger('loaded.bs.modal')\n }, this))\n }\n }\n\n Modal.VERSION = '3.3.6'\n\n Modal.TRANSITION_DURATION = 300\n Modal.BACKDROP_TRANSITION_DURATION = 150\n\n Modal.DEFAULTS = {\n backdrop: true,\n keyboard: true,\n show: true\n }\n\n Modal.prototype.toggle = function (_relatedTarget) {\n return this.isShown ? this.hide() : this.show(_relatedTarget)\n }\n\n Modal.prototype.show = function (_relatedTarget) {\n var that = this\n var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })\n\n this.$element.trigger(e)\n\n if (this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = true\n\n this.checkScrollbar()\n this.setScrollbar()\n this.$body.addClass('modal-open')\n\n this.escape()\n this.resize()\n\n this.$element.on('click.dismiss.bs.modal', '[data-dismiss=\"modal\"]', $.proxy(this.hide, this))\n\n this.$dialog.on('mousedown.dismiss.bs.modal', function () {\n that.$element.one('mouseup.dismiss.bs.modal', function (e) {\n if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true\n })\n })\n\n this.backdrop(function () {\n var transition = $.support.transition && that.$element.hasClass('fade')\n\n if (!that.$element.parent().length) {\n that.$element.appendTo(that.$body) // don't move modals dom position\n }\n\n that.$element\n .show()\n .scrollTop(0)\n\n that.adjustDialog()\n\n if (transition) {\n that.$element[0].offsetWidth // force reflow\n }\n\n that.$element.addClass('in')\n\n that.enforceFocus()\n\n var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })\n\n transition ?\n that.$dialog // wait for modal to slide in\n .one('bsTransitionEnd', function () {\n that.$element.trigger('focus').trigger(e)\n })\n .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n that.$element.trigger('focus').trigger(e)\n })\n }\n\n Modal.prototype.hide = function (e) {\n if (e) e.preventDefault()\n\n e = $.Event('hide.bs.modal')\n\n this.$element.trigger(e)\n\n if (!this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = false\n\n this.escape()\n this.resize()\n\n $(document).off('focusin.bs.modal')\n\n this.$element\n .removeClass('in')\n .off('click.dismiss.bs.modal')\n .off('mouseup.dismiss.bs.modal')\n\n this.$dialog.off('mousedown.dismiss.bs.modal')\n\n $.support.transition && this.$element.hasClass('fade') ?\n this.$element\n .one('bsTransitionEnd', $.proxy(this.hideModal, this))\n .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n this.hideModal()\n }\n\n Modal.prototype.enforceFocus = function () {\n $(document)\n .off('focusin.bs.modal') // guard against infinite focus loop\n .on('focusin.bs.modal', $.proxy(function (e) {\n if (this.$element[0] !== e.target && !this.$element.has(e.target).length) {\n this.$element.trigger('focus')\n }\n }, this))\n }\n\n Modal.prototype.escape = function () {\n if (this.isShown && this.options.keyboard) {\n this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {\n e.which == 27 && this.hide()\n }, this))\n } else if (!this.isShown) {\n this.$element.off('keydown.dismiss.bs.modal')\n }\n }\n\n Modal.prototype.resize = function () {\n if (this.isShown) {\n $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))\n } else {\n $(window).off('resize.bs.modal')\n }\n }\n\n Modal.prototype.hideModal = function () {\n var that = this\n this.$element.hide()\n this.backdrop(function () {\n that.$body.removeClass('modal-open')\n that.resetAdjustments()\n that.resetScrollbar()\n that.$element.trigger('hidden.bs.modal')\n })\n }\n\n Modal.prototype.removeBackdrop = function () {\n this.$backdrop && this.$backdrop.remove()\n this.$backdrop = null\n }\n\n Modal.prototype.backdrop = function (callback) {\n var that = this\n var animate = this.$element.hasClass('fade') ? 'fade' : ''\n\n if (this.isShown && this.options.backdrop) {\n var doAnimate = $.support.transition && animate\n\n this.$backdrop = $(document.createElement('div'))\n .addClass('modal-backdrop ' + animate)\n .appendTo(this.$body)\n\n this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {\n if (this.ignoreBackdropClick) {\n this.ignoreBackdropClick = false\n return\n }\n if (e.target !== e.currentTarget) return\n this.options.backdrop == 'static'\n ? this.$element[0].focus()\n : this.hide()\n }, this))\n\n if (doAnimate) this.$backdrop[0].offsetWidth // force reflow\n\n this.$backdrop.addClass('in')\n\n if (!callback) return\n\n doAnimate ?\n this.$backdrop\n .one('bsTransitionEnd', callback)\n .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n callback()\n\n } else if (!this.isShown && this.$backdrop) {\n this.$backdrop.removeClass('in')\n\n var callbackRemove = function () {\n that.removeBackdrop()\n callback && callback()\n }\n $.support.transition && this.$element.hasClass('fade') ?\n this.$backdrop\n .one('bsTransitionEnd', callbackRemove)\n .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n callbackRemove()\n\n } else if (callback) {\n callback()\n }\n }\n\n // these following methods are used to handle overflowing modals\n\n Modal.prototype.handleUpdate = function () {\n this.adjustDialog()\n }\n\n Modal.prototype.adjustDialog = function () {\n var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight\n\n this.$element.css({\n paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',\n paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''\n })\n }\n\n Modal.prototype.resetAdjustments = function () {\n this.$element.css({\n paddingLeft: '',\n paddingRight: ''\n })\n }\n\n Modal.prototype.checkScrollbar = function () {\n var fullWindowWidth = window.innerWidth\n if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8\n var documentElementRect = document.documentElement.getBoundingClientRect()\n fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)\n }\n this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth\n this.scrollbarWidth = this.measureScrollbar()\n }\n\n Modal.prototype.setScrollbar = function () {\n var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)\n this.originalBodyPad = document.body.style.paddingRight || ''\n if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)\n }\n\n Modal.prototype.resetScrollbar = function () {\n this.$body.css('padding-right', this.originalBodyPad)\n }\n\n Modal.prototype.measureScrollbar = function () { // thx walsh\n var scrollDiv = document.createElement('div')\n scrollDiv.className = 'modal-scrollbar-measure'\n this.$body.append(scrollDiv)\n var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth\n this.$body[0].removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n\n // MODAL PLUGIN DEFINITION\n // =======================\n\n function Plugin(option, _relatedTarget) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.modal')\n var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n if (!data) $this.data('bs.modal', (data = new Modal(this, options)))\n if (typeof option == 'string') data[option](_relatedTarget)\n else if (options.show) data.show(_relatedTarget)\n })\n }\n\n var old = $.fn.modal\n\n $.fn.modal = Plugin\n $.fn.modal.Constructor = Modal\n\n\n // MODAL NO CONFLICT\n // =================\n\n $.fn.modal.noConflict = function () {\n $.fn.modal = old\n return this\n }\n\n\n // MODAL DATA-API\n // ==============\n\n $(document).on('click.bs.modal.data-api', '[data-toggle=\"modal\"]', function (e) {\n var $this = $(this)\n var href = $this.attr('href')\n var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\\s]+$)/, ''))) // strip for ie7\n var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())\n\n if ($this.is('a')) e.preventDefault()\n\n $target.one('show.bs.modal', function (showEvent) {\n if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown\n $target.one('hidden.bs.modal', function () {\n $this.is(':visible') && $this.trigger('focus')\n })\n })\n Plugin.call($target, option, this)\n })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: tooltip.js v3.3.6\n * http://getbootstrap.com/javascript/#tooltip\n * Inspired by the original jQuery.tipsy by Jason Frame\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // TOOLTIP PUBLIC CLASS DEFINITION\n // ===============================\n\n var Tooltip = function (element, options) {\n this.type = null\n this.options = null\n this.enabled = null\n this.timeout = null\n this.hoverState = null\n this.$element = null\n this.inState = null\n\n this.init('tooltip', element, options)\n }\n\n Tooltip.VERSION = '3.3.6'\n\n Tooltip.TRANSITION_DURATION = 150\n\n Tooltip.DEFAULTS = {\n animation: true,\n placement: 'top',\n selector: false,\n template: '
',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n container: false,\n viewport: {\n selector: 'body',\n padding: 0\n }\n }\n\n Tooltip.prototype.init = function (type, element, options) {\n this.enabled = true\n this.type = type\n this.$element = $(element)\n this.options = this.getOptions(options)\n this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))\n this.inState = { click: false, hover: false, focus: false }\n\n if (this.$element[0] instanceof document.constructor && !this.options.selector) {\n throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')\n }\n\n var triggers = this.options.trigger.split(' ')\n\n for (var i = triggers.length; i--;) {\n var trigger = triggers[i]\n\n if (trigger == 'click') {\n this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))\n } else if (trigger != 'manual') {\n var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin'\n var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'\n\n this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))\n this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))\n }\n }\n\n this.options.selector ?\n (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :\n this.fixTitle()\n }\n\n Tooltip.prototype.getDefaults = function () {\n return Tooltip.DEFAULTS\n }\n\n Tooltip.prototype.getOptions = function (options) {\n options = $.extend({}, this.getDefaults(), this.$element.data(), options)\n\n if (options.delay && typeof options.delay == 'number') {\n options.delay = {\n show: options.delay,\n hide: options.delay\n }\n }\n\n return options\n }\n\n Tooltip.prototype.getDelegateOptions = function () {\n var options = {}\n var defaults = this.getDefaults()\n\n this._options && $.each(this._options, function (key, value) {\n if (defaults[key] != value) options[key] = value\n })\n\n return options\n }\n\n Tooltip.prototype.enter = function (obj) {\n var self = obj instanceof this.constructor ?\n obj : $(obj.currentTarget).data('bs.' + this.type)\n\n if (!self) {\n self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n $(obj.currentTarget).data('bs.' + this.type, self)\n }\n\n if (obj instanceof $.Event) {\n self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true\n }\n\n if (self.tip().hasClass('in') || self.hoverState == 'in') {\n self.hoverState = 'in'\n return\n }\n\n clearTimeout(self.timeout)\n\n self.hoverState = 'in'\n\n if (!self.options.delay || !self.options.delay.show) return self.show()\n\n self.timeout = setTimeout(function () {\n if (self.hoverState == 'in') self.show()\n }, self.options.delay.show)\n }\n\n Tooltip.prototype.isInStateTrue = function () {\n for (var key in this.inState) {\n if (this.inState[key]) return true\n }\n\n return false\n }\n\n Tooltip.prototype.leave = function (obj) {\n var self = obj instanceof this.constructor ?\n obj : $(obj.currentTarget).data('bs.' + this.type)\n\n if (!self) {\n self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n $(obj.currentTarget).data('bs.' + this.type, self)\n }\n\n if (obj instanceof $.Event) {\n self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false\n }\n\n if (self.isInStateTrue()) return\n\n clearTimeout(self.timeout)\n\n self.hoverState = 'out'\n\n if (!self.options.delay || !self.options.delay.hide) return self.hide()\n\n self.timeout = setTimeout(function () {\n if (self.hoverState == 'out') self.hide()\n }, self.options.delay.hide)\n }\n\n Tooltip.prototype.show = function () {\n var e = $.Event('show.bs.' + this.type)\n\n if (this.hasContent() && this.enabled) {\n this.$element.trigger(e)\n\n var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])\n if (e.isDefaultPrevented() || !inDom) return\n var that = this\n\n var $tip = this.tip()\n\n var tipId = this.getUID(this.type)\n\n this.setContent()\n $tip.attr('id', tipId)\n this.$element.attr('aria-describedby', tipId)\n\n if (this.options.animation) $tip.addClass('fade')\n\n var placement = typeof this.options.placement == 'function' ?\n this.options.placement.call(this, $tip[0], this.$element[0]) :\n this.options.placement\n\n var autoToken = /\\s?auto?\\s?/i\n var autoPlace = autoToken.test(placement)\n if (autoPlace) placement = placement.replace(autoToken, '') || 'top'\n\n $tip\n .detach()\n .css({ top: 0, left: 0, display: 'block' })\n .addClass(placement)\n .data('bs.' + this.type, this)\n\n this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)\n this.$element.trigger('inserted.bs.' + this.type)\n\n var pos = this.getPosition()\n var actualWidth = $tip[0].offsetWidth\n var actualHeight = $tip[0].offsetHeight\n\n if (autoPlace) {\n var orgPlacement = placement\n var viewportDim = this.getPosition(this.$viewport)\n\n placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' :\n placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' :\n placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' :\n placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' :\n placement\n\n $tip\n .removeClass(orgPlacement)\n .addClass(placement)\n }\n\n var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)\n\n this.applyPlacement(calculatedOffset, placement)\n\n var complete = function () {\n var prevHoverState = that.hoverState\n that.$element.trigger('shown.bs.' + that.type)\n that.hoverState = null\n\n if (prevHoverState == 'out') that.leave(that)\n }\n\n $.support.transition && this.$tip.hasClass('fade') ?\n $tip\n .one('bsTransitionEnd', complete)\n .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n complete()\n }\n }\n\n Tooltip.prototype.applyPlacement = function (offset, placement) {\n var $tip = this.tip()\n var width = $tip[0].offsetWidth\n var height = $tip[0].offsetHeight\n\n // manually read margins because getBoundingClientRect includes difference\n var marginTop = parseInt($tip.css('margin-top'), 10)\n var marginLeft = parseInt($tip.css('margin-left'), 10)\n\n // we must check for NaN for ie 8/9\n if (isNaN(marginTop)) marginTop = 0\n if (isNaN(marginLeft)) marginLeft = 0\n\n offset.top += marginTop\n offset.left += marginLeft\n\n // $.fn.offset doesn't round pixel values\n // so we use setOffset directly with our own function B-0\n $.offset.setOffset($tip[0], $.extend({\n using: function (props) {\n $tip.css({\n top: Math.round(props.top),\n left: Math.round(props.left)\n })\n }\n }, offset), 0)\n\n $tip.addClass('in')\n\n // check to see if placing tip in new offset caused the tip to resize itself\n var actualWidth = $tip[0].offsetWidth\n var actualHeight = $tip[0].offsetHeight\n\n if (placement == 'top' && actualHeight != height) {\n offset.top = offset.top + height - actualHeight\n }\n\n var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)\n\n if (delta.left) offset.left += delta.left\n else offset.top += delta.top\n\n var isVertical = /top|bottom/.test(placement)\n var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight\n var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'\n\n $tip.offset(offset)\n this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)\n }\n\n Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {\n this.arrow()\n .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')\n .css(isVertical ? 'top' : 'left', '')\n }\n\n Tooltip.prototype.setContent = function () {\n var $tip = this.tip()\n var title = this.getTitle()\n\n $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)\n $tip.removeClass('fade in top bottom left right')\n }\n\n Tooltip.prototype.hide = function (callback) {\n var that = this\n var $tip = $(this.$tip)\n var e = $.Event('hide.bs.' + this.type)\n\n function complete() {\n if (that.hoverState != 'in') $tip.detach()\n that.$element\n .removeAttr('aria-describedby')\n .trigger('hidden.bs.' + that.type)\n callback && callback()\n }\n\n this.$element.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n $tip.removeClass('in')\n\n $.support.transition && $tip.hasClass('fade') ?\n $tip\n .one('bsTransitionEnd', complete)\n .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n complete()\n\n this.hoverState = null\n\n return this\n }\n\n Tooltip.prototype.fixTitle = function () {\n var $e = this.$element\n if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {\n $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')\n }\n }\n\n Tooltip.prototype.hasContent = function () {\n return this.getTitle()\n }\n\n Tooltip.prototype.getPosition = function ($element) {\n $element = $element || this.$element\n\n var el = $element[0]\n var isBody = el.tagName == 'BODY'\n\n var elRect = el.getBoundingClientRect()\n if (elRect.width == null) {\n // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093\n elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })\n }\n var elOffset = isBody ? { top: 0, left: 0 } : $element.offset()\n var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }\n var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null\n\n return $.extend({}, elRect, scroll, outerDims, elOffset)\n }\n\n Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {\n return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :\n /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }\n\n }\n\n Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {\n var delta = { top: 0, left: 0 }\n if (!this.$viewport) return delta\n\n var viewportPadding = this.options.viewport && this.options.viewport.padding || 0\n var viewportDimensions = this.getPosition(this.$viewport)\n\n if (/right|left/.test(placement)) {\n var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll\n var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight\n if (topEdgeOffset < viewportDimensions.top) { // top overflow\n delta.top = viewportDimensions.top - topEdgeOffset\n } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow\n delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset\n }\n } else {\n var leftEdgeOffset = pos.left - viewportPadding\n var rightEdgeOffset = pos.left + viewportPadding + actualWidth\n if (leftEdgeOffset < viewportDimensions.left) { // left overflow\n delta.left = viewportDimensions.left - leftEdgeOffset\n } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow\n delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset\n }\n }\n\n return delta\n }\n\n Tooltip.prototype.getTitle = function () {\n var title\n var $e = this.$element\n var o = this.options\n\n title = $e.attr('data-original-title')\n || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)\n\n return title\n }\n\n Tooltip.prototype.getUID = function (prefix) {\n do prefix += ~~(Math.random() * 1000000)\n while (document.getElementById(prefix))\n return prefix\n }\n\n Tooltip.prototype.tip = function () {\n if (!this.$tip) {\n this.$tip = $(this.options.template)\n if (this.$tip.length != 1) {\n throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')\n }\n }\n return this.$tip\n }\n\n Tooltip.prototype.arrow = function () {\n return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))\n }\n\n Tooltip.prototype.enable = function () {\n this.enabled = true\n }\n\n Tooltip.prototype.disable = function () {\n this.enabled = false\n }\n\n Tooltip.prototype.toggleEnabled = function () {\n this.enabled = !this.enabled\n }\n\n Tooltip.prototype.toggle = function (e) {\n var self = this\n if (e) {\n self = $(e.currentTarget).data('bs.' + this.type)\n if (!self) {\n self = new this.constructor(e.currentTarget, this.getDelegateOptions())\n $(e.currentTarget).data('bs.' + this.type, self)\n }\n }\n\n if (e) {\n self.inState.click = !self.inState.click\n if (self.isInStateTrue()) self.enter(self)\n else self.leave(self)\n } else {\n self.tip().hasClass('in') ? self.leave(self) : self.enter(self)\n }\n }\n\n Tooltip.prototype.destroy = function () {\n var that = this\n clearTimeout(this.timeout)\n this.hide(function () {\n that.$element.off('.' + that.type).removeData('bs.' + that.type)\n if (that.$tip) {\n that.$tip.detach()\n }\n that.$tip = null\n that.$arrow = null\n that.$viewport = null\n })\n }\n\n\n // TOOLTIP PLUGIN DEFINITION\n // =========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.tooltip')\n var options = typeof option == 'object' && option\n\n if (!data && /destroy|hide/.test(option)) return\n if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.tooltip\n\n $.fn.tooltip = Plugin\n $.fn.tooltip.Constructor = Tooltip\n\n\n // TOOLTIP NO CONFLICT\n // ===================\n\n $.fn.tooltip.noConflict = function () {\n $.fn.tooltip = old\n return this\n }\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: popover.js v3.3.6\n * http://getbootstrap.com/javascript/#popovers\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // POPOVER PUBLIC CLASS DEFINITION\n // ===============================\n\n var Popover = function (element, options) {\n this.init('popover', element, options)\n }\n\n if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')\n\n Popover.VERSION = '3.3.6'\n\n Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '

'\n })\n\n\n // NOTE: POPOVER EXTENDS tooltip.js\n // ================================\n\n Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)\n\n Popover.prototype.constructor = Popover\n\n Popover.prototype.getDefaults = function () {\n return Popover.DEFAULTS\n }\n\n Popover.prototype.setContent = function () {\n var $tip = this.tip()\n var title = this.getTitle()\n var content = this.getContent()\n\n $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)\n $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events\n this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'\n ](content)\n\n $tip.removeClass('fade top bottom left right in')\n\n // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do\n // this manually by checking the contents.\n if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()\n }\n\n Popover.prototype.hasContent = function () {\n return this.getTitle() || this.getContent()\n }\n\n Popover.prototype.getContent = function () {\n var $e = this.$element\n var o = this.options\n\n return $e.attr('data-content')\n || (typeof o.content == 'function' ?\n o.content.call($e[0]) :\n o.content)\n }\n\n Popover.prototype.arrow = function () {\n return (this.$arrow = this.$arrow || this.tip().find('.arrow'))\n }\n\n\n // POPOVER PLUGIN DEFINITION\n // =========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.popover')\n var options = typeof option == 'object' && option\n\n if (!data && /destroy|hide/.test(option)) return\n if (!data) $this.data('bs.popover', (data = new Popover(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.popover\n\n $.fn.popover = Plugin\n $.fn.popover.Constructor = Popover\n\n\n // POPOVER NO CONFLICT\n // ===================\n\n $.fn.popover.noConflict = function () {\n $.fn.popover = old\n return this\n }\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: scrollspy.js v3.3.6\n * http://getbootstrap.com/javascript/#scrollspy\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // SCROLLSPY CLASS DEFINITION\n // ==========================\n\n function ScrollSpy(element, options) {\n this.$body = $(document.body)\n this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)\n this.options = $.extend({}, ScrollSpy.DEFAULTS, options)\n this.selector = (this.options.target || '') + ' .nav li > a'\n this.offsets = []\n this.targets = []\n this.activeTarget = null\n this.scrollHeight = 0\n\n this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))\n this.refresh()\n this.process()\n }\n\n ScrollSpy.VERSION = '3.3.6'\n\n ScrollSpy.DEFAULTS = {\n offset: 10\n }\n\n ScrollSpy.prototype.getScrollHeight = function () {\n return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)\n }\n\n ScrollSpy.prototype.refresh = function () {\n var that = this\n var offsetMethod = 'offset'\n var offsetBase = 0\n\n this.offsets = []\n this.targets = []\n this.scrollHeight = this.getScrollHeight()\n\n if (!$.isWindow(this.$scrollElement[0])) {\n offsetMethod = 'position'\n offsetBase = this.$scrollElement.scrollTop()\n }\n\n this.$body\n .find(this.selector)\n .map(function () {\n var $el = $(this)\n var href = $el.data('target') || $el.attr('href')\n var $href = /^#./.test(href) && $(href)\n\n return ($href\n && $href.length\n && $href.is(':visible')\n && [[$href[offsetMethod]().top + offsetBase, href]]) || null\n })\n .sort(function (a, b) { return a[0] - b[0] })\n .each(function () {\n that.offsets.push(this[0])\n that.targets.push(this[1])\n })\n }\n\n ScrollSpy.prototype.process = function () {\n var scrollTop = this.$scrollElement.scrollTop() + this.options.offset\n var scrollHeight = this.getScrollHeight()\n var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height()\n var offsets = this.offsets\n var targets = this.targets\n var activeTarget = this.activeTarget\n var i\n\n if (this.scrollHeight != scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)\n }\n\n if (activeTarget && scrollTop < offsets[0]) {\n this.activeTarget = null\n return this.clear()\n }\n\n for (i = offsets.length; i--;) {\n activeTarget != targets[i]\n && scrollTop >= offsets[i]\n && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])\n && this.activate(targets[i])\n }\n }\n\n ScrollSpy.prototype.activate = function (target) {\n this.activeTarget = target\n\n this.clear()\n\n var selector = this.selector +\n '[data-target=\"' + target + '\"],' +\n this.selector + '[href=\"' + target + '\"]'\n\n var active = $(selector)\n .parents('li')\n .addClass('active')\n\n if (active.parent('.dropdown-menu').length) {\n active = active\n .closest('li.dropdown')\n .addClass('active')\n }\n\n active.trigger('activate.bs.scrollspy')\n }\n\n ScrollSpy.prototype.clear = function () {\n $(this.selector)\n .parentsUntil(this.options.target, '.active')\n .removeClass('active')\n }\n\n\n // SCROLLSPY PLUGIN DEFINITION\n // ===========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.scrollspy')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.scrollspy\n\n $.fn.scrollspy = Plugin\n $.fn.scrollspy.Constructor = ScrollSpy\n\n\n // SCROLLSPY NO CONFLICT\n // =====================\n\n $.fn.scrollspy.noConflict = function () {\n $.fn.scrollspy = old\n return this\n }\n\n\n // SCROLLSPY DATA-API\n // ==================\n\n $(window).on('load.bs.scrollspy.data-api', function () {\n $('[data-spy=\"scroll\"]').each(function () {\n var $spy = $(this)\n Plugin.call($spy, $spy.data())\n })\n })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: tab.js v3.3.6\n * http://getbootstrap.com/javascript/#tabs\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // TAB CLASS DEFINITION\n // ====================\n\n var Tab = function (element) {\n // jscs:disable requireDollarBeforejQueryAssignment\n this.element = $(element)\n // jscs:enable requireDollarBeforejQueryAssignment\n }\n\n Tab.VERSION = '3.3.6'\n\n Tab.TRANSITION_DURATION = 150\n\n Tab.prototype.show = function () {\n var $this = this.element\n var $ul = $this.closest('ul:not(.dropdown-menu)')\n var selector = $this.data('target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n if ($this.parent('li').hasClass('active')) return\n\n var $previous = $ul.find('.active:last a')\n var hideEvent = $.Event('hide.bs.tab', {\n relatedTarget: $this[0]\n })\n var showEvent = $.Event('show.bs.tab', {\n relatedTarget: $previous[0]\n })\n\n $previous.trigger(hideEvent)\n $this.trigger(showEvent)\n\n if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return\n\n var $target = $(selector)\n\n this.activate($this.closest('li'), $ul)\n this.activate($target, $target.parent(), function () {\n $previous.trigger({\n type: 'hidden.bs.tab',\n relatedTarget: $this[0]\n })\n $this.trigger({\n type: 'shown.bs.tab',\n relatedTarget: $previous[0]\n })\n })\n }\n\n Tab.prototype.activate = function (element, container, callback) {\n var $active = container.find('> .active')\n var transition = callback\n && $.support.transition\n && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)\n\n function next() {\n $active\n .removeClass('active')\n .find('> .dropdown-menu > .active')\n .removeClass('active')\n .end()\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', false)\n\n element\n .addClass('active')\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', true)\n\n if (transition) {\n element[0].offsetWidth // reflow for transition\n element.addClass('in')\n } else {\n element.removeClass('fade')\n }\n\n if (element.parent('.dropdown-menu').length) {\n element\n .closest('li.dropdown')\n .addClass('active')\n .end()\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', true)\n }\n\n callback && callback()\n }\n\n $active.length && transition ?\n $active\n .one('bsTransitionEnd', next)\n .emulateTransitionEnd(Tab.TRANSITION_DURATION) :\n next()\n\n $active.removeClass('in')\n }\n\n\n // TAB PLUGIN DEFINITION\n // =====================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.tab')\n\n if (!data) $this.data('bs.tab', (data = new Tab(this)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.tab\n\n $.fn.tab = Plugin\n $.fn.tab.Constructor = Tab\n\n\n // TAB NO CONFLICT\n // ===============\n\n $.fn.tab.noConflict = function () {\n $.fn.tab = old\n return this\n }\n\n\n // TAB DATA-API\n // ============\n\n var clickHandler = function (e) {\n e.preventDefault()\n Plugin.call($(this), 'show')\n }\n\n $(document)\n .on('click.bs.tab.data-api', '[data-toggle=\"tab\"]', clickHandler)\n .on('click.bs.tab.data-api', '[data-toggle=\"pill\"]', clickHandler)\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: affix.js v3.3.6\n * http://getbootstrap.com/javascript/#affix\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // AFFIX CLASS DEFINITION\n // ======================\n\n var Affix = function (element, options) {\n this.options = $.extend({}, Affix.DEFAULTS, options)\n\n this.$target = $(this.options.target)\n .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))\n .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))\n\n this.$element = $(element)\n this.affixed = null\n this.unpin = null\n this.pinnedOffset = null\n\n this.checkPosition()\n }\n\n Affix.VERSION = '3.3.6'\n\n Affix.RESET = 'affix affix-top affix-bottom'\n\n Affix.DEFAULTS = {\n offset: 0,\n target: window\n }\n\n Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {\n var scrollTop = this.$target.scrollTop()\n var position = this.$element.offset()\n var targetHeight = this.$target.height()\n\n if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false\n\n if (this.affixed == 'bottom') {\n if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'\n return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'\n }\n\n var initializing = this.affixed == null\n var colliderTop = initializing ? scrollTop : position.top\n var colliderHeight = initializing ? targetHeight : height\n\n if (offsetTop != null && scrollTop <= offsetTop) return 'top'\n if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'\n\n return false\n }\n\n Affix.prototype.getPinnedOffset = function () {\n if (this.pinnedOffset) return this.pinnedOffset\n this.$element.removeClass(Affix.RESET).addClass('affix')\n var scrollTop = this.$target.scrollTop()\n var position = this.$element.offset()\n return (this.pinnedOffset = position.top - scrollTop)\n }\n\n Affix.prototype.checkPositionWithEventLoop = function () {\n setTimeout($.proxy(this.checkPosition, this), 1)\n }\n\n Affix.prototype.checkPosition = function () {\n if (!this.$element.is(':visible')) return\n\n var height = this.$element.height()\n var offset = this.options.offset\n var offsetTop = offset.top\n var offsetBottom = offset.bottom\n var scrollHeight = Math.max($(document).height(), $(document.body).height())\n\n if (typeof offset != 'object') offsetBottom = offsetTop = offset\n if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element)\n if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)\n\n var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)\n\n if (this.affixed != affix) {\n if (this.unpin != null) this.$element.css('top', '')\n\n var affixType = 'affix' + (affix ? '-' + affix : '')\n var e = $.Event(affixType + '.bs.affix')\n\n this.$element.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n this.affixed = affix\n this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null\n\n this.$element\n .removeClass(Affix.RESET)\n .addClass(affixType)\n .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')\n }\n\n if (affix == 'bottom') {\n this.$element.offset({\n top: scrollHeight - height - offsetBottom\n })\n }\n }\n\n\n // AFFIX PLUGIN DEFINITION\n // =======================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.affix')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.affix', (data = new Affix(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.affix\n\n $.fn.affix = Plugin\n $.fn.affix.Constructor = Affix\n\n\n // AFFIX NO CONFLICT\n // =================\n\n $.fn.affix.noConflict = function () {\n $.fn.affix = old\n return this\n }\n\n\n // AFFIX DATA-API\n // ==============\n\n $(window).on('load', function () {\n $('[data-spy=\"affix\"]').each(function () {\n var $spy = $(this)\n var data = $spy.data()\n\n data.offset = data.offset || {}\n\n if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom\n if (data.offsetTop != null) data.offset.top = data.offsetTop\n\n Plugin.call($spy, data)\n })\n })\n\n}(jQuery);\n","/* ========================================================================\r\n * DOM-based Routing\r\n * Based on http://goo.gl/EUTi53 by Paul Irish\r\n *\r\n * Only fires on body classes that match. If a body class contains a dash,\r\n * replace the dash with an underscore when adding it to the object below.\r\n *\r\n * .noConflict()\r\n * The routing is enclosed within an anonymous function so that you can\r\n * always reference jQuery with $, even when in .noConflict() mode.\r\n * ======================================================================== */\r\n\r\n(function($) {\r\n\r\n // Use this variable to set up the common and page specific functions. If you\r\n // rename this variable, you will also need to rename the namespace below.\r\n var Sage = {\r\n // All pages\r\n 'common': {\r\n init: function() {\r\n // JavaScript to be fired on all pages\r\n },\r\n finalize: function() {\r\n // JavaScript to be fired on all pages, after page specific JS is fired\r\n }\r\n },\r\n // Home page\r\n 'home': {\r\n init: function() {\r\n // JavaScript to be fired on the home page\r\n },\r\n finalize: function() {\r\n // JavaScript to be fired on the home page, after the init JS\r\n }\r\n },\r\n // About us page, note the change from about-us to about_us.\r\n 'about_us': {\r\n init: function() {\r\n // JavaScript to be fired on the about us page\r\n }\r\n }\r\n };\r\n\r\n // The routing fires all common scripts, followed by the page specific scripts.\r\n // Add additional events for more control over timing e.g. a finalize event\r\n var UTIL = {\r\n fire: function(func, funcname, args) {\r\n var fire;\r\n var namespace = Sage;\r\n funcname = (funcname === undefined) ? 'init' : funcname;\r\n fire = func !== '';\r\n fire = fire && namespace[func];\r\n fire = fire && typeof namespace[func][funcname] === 'function';\r\n\r\n if (fire) {\r\n namespace[func][funcname](args);\r\n }\r\n },\r\n loadEvents: function() {\r\n // Fire common init JS\r\n UTIL.fire('common');\r\n\r\n // Fire page-specific init JS, and then finalize JS\r\n $.each(document.body.className.replace(/-/g, '_').split(/\\s+/), function(i, classnm) {\r\n UTIL.fire(classnm);\r\n UTIL.fire(classnm, 'finalize');\r\n });\r\n\r\n // Fire common finalize JS\r\n UTIL.fire('common', 'finalize');\r\n }\r\n };\r\n\r\n // Load Events\r\n $(document).ready(UTIL.loadEvents);\r\n\r\n})(jQuery); // Fully reference jQuery after this point.\r\n","var Mobile = {\r\n\tisMobile: function () {\r\n\t\tvar result = false;\r\n\r\n\t\t( function ( a ) {\r\n\t\t\tresult = /Android|webOS|iPhone|iPad|BlackBerry|Windows Phone|Opera Mini|IEMobile|Mobile/i.test( a );\r\n\t\t} )( navigator.userAgent || navigator.vendor || window.opera );\r\n\r\n\t\treturn result;\r\n\t}\r\n};","var Video = {};\r\n\r\n( function ( $ ) {\r\n\tvar trigger = $( '.js-play-video' );\r\n\r\n\tVideo.play = function( _this, checkIfUrl ) {\r\n\t\tvar iframe = _this.find( 'iframe' );\r\n\t\tvar url = iframe.data( 'url' );\r\n\r\n\t\t// Remove the play button\r\n\t\t_this.find( '.icon-play' ).remove();\r\n\r\n\t\tif( checkIfUrl && !url ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Show the iframe\r\n\t\tiframe.prop( 'src', url ).show();\r\n\t\t_this.find( '.video-image' ).fadeOut();\r\n\t};\r\n\r\n\tVideo.init = function () {\r\n\r\n\t\tif( trigger.find( 'iframe' ).data( 'autoplay' ) && !Mobile.isMobile() ) {\r\n\t\t\tVideo.play( trigger, false );\r\n\t\t}\r\n\r\n\t\ttrigger.on( 'click keydown', function () {\r\n\t\t\tvar _this = $( this );\r\n\r\n\t\t\tkeydownClick();\r\n\r\n\t\t\tvar checkIfUrl = ( Mobile.isMobile() ) ? true : false;\r\n\t\t\tVideo.play( _this, checkIfUrl );\r\n\r\n\t\t} );\r\n\r\n\t\t// On mobile, always show preview image and play button of hero video\r\n\t\t// if ( Mobile.isMobile() ) {\r\n\t\t// \theroVideo.find( '.video-iframe' ).hide();\r\n\t\t// }\r\n\t};\r\n\r\n\tif ( trigger.length ) {\r\n\t\t$( Video.init() );\r\n\t}\r\n\r\n} )( jQuery );\r\n","var Scroll = {};\r\n\r\n( function ( $ ) {\r\n\tScroll.To = function ( target, adjHeight ) {\r\n\t\ttarget = $( target );\r\n\r\n\t\tif( typeof adjHeight === \"undefined\" || adjHeight === null ) { \r\n\t\t\tadjHeight = 0; \r\n\t\t}\t\t\r\n\r\n\t\tif ( target.length === 0 ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvar scrollTop = target.offset().top;\r\n\r\n\t\t// Get nav height and subtract to top offset of target element\r\n\t\tvar navBar = $( 'header' );\r\n\t\tif ( navBar.length > 0 ) {\r\n\t\t\tscrollTop -= parseInt( navBar.css( 'height' ) );\r\n\t\t}\r\n\r\n\t\t// Get subnav height and subtract it also\r\n\t\tvar subnav = $( '.submenu-nav' );\r\n\t\tif ( subnav.length > 0 ) {\r\n\t\t\tscrollTop -= parseInt( subnav.css( 'height' ) );\r\n\t\t}\t\t\r\n\r\n\t\t// Get wpadminbar height and subtract to top offset of target element\r\n\t\tvar wpAdminBar = $( '#wpadminbar' );\r\n\t\tif ( wpAdminBar.length > 0 ) {\r\n\t\t\tscrollTop -= parseInt( wpAdminBar.css( 'height' ) );\r\n\t\t}\r\n\r\n\t\tif( adjHeight > 0 ) {\r\n\t\t\tscrollTop -= parseInt( adjHeight );\r\n\t\t}\r\n\r\n\t\t// Call stop() to avoid shaking behavior in Chrome\r\n\t\t$( 'html, body' ).stop( true ).animate( {\r\n\t\t\tscrollTop: scrollTop\r\n\t\t}, 1000 );\r\n\t};\r\n} )( jQuery );","/*!\r\n * Flickity PACKAGED v2.1.2\r\n * Touch, responsive, flickable carousels\r\n *\r\n * Licensed GPLv3 for open source use\r\n * or Flickity Commercial License for commercial use\r\n *\r\n * https://flickity.metafizzy.co\r\n * Copyright 2015-2018 Metafizzy\r\n */\r\n\r\n/**\r\n * Bridget makes jQuery widgets\r\n * v2.0.1\r\n * MIT license\r\n */\r\n\r\n/* jshint browser: true, strict: true, undef: true, unused: true */\r\n\r\n( function( window, factory ) {\r\n\t// universal module definition\r\n\t/*jshint strict: false */ /* globals define, module, require */\r\n\tif ( typeof define == 'function' && define.amd ) {\r\n\t // AMD\r\n\t define( 'jquery-bridget/jquery-bridget',[ 'jquery' ], function( jQuery ) {\r\n\t\treturn factory( window, jQuery );\r\n\t });\r\n\t} else if ( typeof module == 'object' && module.exports ) {\r\n\t // CommonJS\r\n\t module.exports = factory(\r\n\t\twindow,\r\n\t\trequire('jquery')\r\n\t );\r\n\t} else {\r\n\t // browser global\r\n\t window.jQueryBridget = factory(\r\n\t\twindow,\r\n\t\twindow.jQuery\r\n\t );\r\n\t}\r\n\r\n }( window, function factory( window, jQuery ) {\r\n 'use strict';\r\n\r\n // ----- utils ----- //\r\n\r\n var arraySlice = Array.prototype.slice;\r\n\r\n // helper function for logging errors\r\n // $.error breaks jQuery chaining\r\n var console = window.console;\r\n var logError = typeof console == 'undefined' ? function() {} :\r\n\tfunction( message ) {\r\n\t console.error( message );\r\n\t};\r\n\r\n // ----- jQueryBridget ----- //\r\n\r\n function jQueryBridget( namespace, PluginClass, $ ) {\r\n\t$ = $ || jQuery || window.jQuery;\r\n\tif ( !$ ) {\r\n\t return;\r\n\t}\r\n\r\n\t// add option method -> $().plugin('option', {...})\r\n\tif ( !PluginClass.prototype.option ) {\r\n\t // option setter\r\n\t PluginClass.prototype.option = function( opts ) {\r\n\t\t// bail out if not an object\r\n\t\tif ( !$.isPlainObject( opts ) ){\r\n\t\t return;\r\n\t\t}\r\n\t\tthis.options = $.extend( true, this.options, opts );\r\n\t };\r\n\t}\r\n\r\n\t// make jQuery plugin\r\n\t$.fn[ namespace ] = function( arg0 /*, arg1 */ ) {\r\n\t if ( typeof arg0 == 'string' ) {\r\n\t\t// method call $().plugin( 'methodName', { options } )\r\n\t\t// shift arguments by 1\r\n\t\tvar args = arraySlice.call( arguments, 1 );\r\n\t\treturn methodCall( this, arg0, args );\r\n\t }\r\n\t // just $().plugin({ options })\r\n\t plainCall( this, arg0 );\r\n\t return this;\r\n\t};\r\n\r\n\t// $().plugin('methodName')\r\n\tfunction methodCall( $elems, methodName, args ) {\r\n\t var returnValue;\r\n\t var pluginMethodStr = '$().' + namespace + '(\"' + methodName + '\")';\r\n\r\n\t $elems.each( function( i, elem ) {\r\n\t\t// get instance\r\n\t\tvar instance = $.data( elem, namespace );\r\n\t\tif ( !instance ) {\r\n\t\t logError( namespace + ' not initialized. Cannot call methods, i.e. ' +\r\n\t\t\tpluginMethodStr );\r\n\t\t return;\r\n\t\t}\r\n\r\n\t\tvar method = instance[ methodName ];\r\n\t\tif ( !method || methodName.charAt(0) == '_' ) {\r\n\t\t logError( pluginMethodStr + ' is not a valid method' );\r\n\t\t return;\r\n\t\t}\r\n\r\n\t\t// apply method, get return value\r\n\t\tvar value = method.apply( instance, args );\r\n\t\t// set return value if value is returned, use only first value\r\n\t\treturnValue = returnValue === undefined ? value : returnValue;\r\n\t });\r\n\r\n\t return returnValue !== undefined ? returnValue : $elems;\r\n\t}\r\n\r\n\tfunction plainCall( $elems, options ) {\r\n\t $elems.each( function( i, elem ) {\r\n\t\tvar instance = $.data( elem, namespace );\r\n\t\tif ( instance ) {\r\n\t\t // set options & init\r\n\t\t instance.option( options );\r\n\t\t instance._init();\r\n\t\t} else {\r\n\t\t // initialize new instance\r\n\t\t instance = new PluginClass( elem, options );\r\n\t\t $.data( elem, namespace, instance );\r\n\t\t}\r\n\t });\r\n\t}\r\n\r\n\tupdateJQuery( $ );\r\n\r\n }\r\n\r\n // ----- updateJQuery ----- //\r\n\r\n // set $.bridget for v1 backwards compatibility\r\n function updateJQuery( $ ) {\r\n\tif ( !$ || ( $ && $.bridget ) ) {\r\n\t return;\r\n\t}\r\n\t$.bridget = jQueryBridget;\r\n }\r\n\r\n updateJQuery( jQuery || window.jQuery );\r\n\r\n // ----- ----- //\r\n\r\n return jQueryBridget;\r\n\r\n }));\r\n\r\n /**\r\n * EvEmitter v1.1.0\r\n * Lil' event emitter\r\n * MIT License\r\n */\r\n\r\n /* jshint unused: true, undef: true, strict: true */\r\n\r\n ( function( global, factory ) {\r\n\t// universal module definition\r\n\t/* jshint strict: false */ /* globals define, module, window */\r\n\tif ( typeof define == 'function' && define.amd ) {\r\n\t // AMD - RequireJS\r\n\t define( 'ev-emitter/ev-emitter',factory );\r\n\t} else if ( typeof module == 'object' && module.exports ) {\r\n\t // CommonJS - Browserify, Webpack\r\n\t module.exports = factory();\r\n\t} else {\r\n\t // Browser globals\r\n\t global.EvEmitter = factory();\r\n\t}\r\n\r\n }( typeof window != 'undefined' ? window : this, function() {\r\n\r\n\r\n\r\n function EvEmitter() {}\r\n\r\n var proto = EvEmitter.prototype;\r\n\r\n proto.on = function( eventName, listener ) {\r\n\tif ( !eventName || !listener ) {\r\n\t return;\r\n\t}\r\n\t// set events hash\r\n\tvar events = this._events = this._events || {};\r\n\t// set listeners array\r\n\tvar listeners = events[ eventName ] = events[ eventName ] || [];\r\n\t// only add once\r\n\tif ( listeners.indexOf( listener ) == -1 ) {\r\n\t listeners.push( listener );\r\n\t}\r\n\r\n\treturn this;\r\n };\r\n\r\n proto.once = function( eventName, listener ) {\r\n\tif ( !eventName || !listener ) {\r\n\t return;\r\n\t}\r\n\t// add event\r\n\tthis.on( eventName, listener );\r\n\t// set once flag\r\n\t// set onceEvents hash\r\n\tvar onceEvents = this._onceEvents = this._onceEvents || {};\r\n\t// set onceListeners object\r\n\tvar onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || {};\r\n\t// set flag\r\n\tonceListeners[ listener ] = true;\r\n\r\n\treturn this;\r\n };\r\n\r\n proto.off = function( eventName, listener ) {\r\n\tvar listeners = this._events && this._events[ eventName ];\r\n\tif ( !listeners || !listeners.length ) {\r\n\t return;\r\n\t}\r\n\tvar index = listeners.indexOf( listener );\r\n\tif ( index != -1 ) {\r\n\t listeners.splice( index, 1 );\r\n\t}\r\n\r\n\treturn this;\r\n };\r\n\r\n proto.emitEvent = function( eventName, args ) {\r\n\tvar listeners = this._events && this._events[ eventName ];\r\n\tif ( !listeners || !listeners.length ) {\r\n\t return;\r\n\t}\r\n\t// copy over to avoid interference if .off() in listener\r\n\tlisteners = listeners.slice(0);\r\n\targs = args || [];\r\n\t// once stuff\r\n\tvar onceListeners = this._onceEvents && this._onceEvents[ eventName ];\r\n\r\n\tfor ( var i=0; i < listeners.length; i++ ) {\r\n\t var listener = listeners[i]\r\n\t var isOnce = onceListeners && onceListeners[ listener ];\r\n\t if ( isOnce ) {\r\n\t\t// remove listener\r\n\t\t// remove before trigger to prevent recursion\r\n\t\tthis.off( eventName, listener );\r\n\t\t// unset once flag\r\n\t\tdelete onceListeners[ listener ];\r\n\t }\r\n\t // trigger listener\r\n\t listener.apply( this, args );\r\n\t}\r\n\r\n\treturn this;\r\n };\r\n\r\n proto.allOff = function() {\r\n\tdelete this._events;\r\n\tdelete this._onceEvents;\r\n };\r\n\r\n return EvEmitter;\r\n\r\n }));\r\n\r\n /*!\r\n * getSize v2.0.3\r\n * measure size of elements\r\n * MIT license\r\n */\r\n\r\n /* jshint browser: true, strict: true, undef: true, unused: true */\r\n /* globals console: false */\r\n\r\n ( function( window, factory ) {\r\n\t/* jshint strict: false */ /* globals define, module */\r\n\tif ( typeof define == 'function' && define.amd ) {\r\n\t // AMD\r\n\t define( 'get-size/get-size',factory );\r\n\t} else if ( typeof module == 'object' && module.exports ) {\r\n\t // CommonJS\r\n\t module.exports = factory();\r\n\t} else {\r\n\t // browser global\r\n\t window.getSize = factory();\r\n\t}\r\n\r\n })( window, function factory() {\r\n 'use strict';\r\n\r\n // -------------------------- helpers -------------------------- //\r\n\r\n // get a number from a string, not a percentage\r\n function getStyleSize( value ) {\r\n\tvar num = parseFloat( value );\r\n\t// not a percent like '100%', and a number\r\n\tvar isValid = value.indexOf('%') == -1 && !isNaN( num );\r\n\treturn isValid && num;\r\n }\r\n\r\n function noop() {}\r\n\r\n var logError = typeof console == 'undefined' ? noop :\r\n\tfunction( message ) {\r\n\t console.error( message );\r\n\t};\r\n\r\n // -------------------------- measurements -------------------------- //\r\n\r\n var measurements = [\r\n\t'paddingLeft',\r\n\t'paddingRight',\r\n\t'paddingTop',\r\n\t'paddingBottom',\r\n\t'marginLeft',\r\n\t'marginRight',\r\n\t'marginTop',\r\n\t'marginBottom',\r\n\t'borderLeftWidth',\r\n\t'borderRightWidth',\r\n\t'borderTopWidth',\r\n\t'borderBottomWidth'\r\n ];\r\n\r\n var measurementsLength = measurements.length;\r\n\r\n function getZeroSize() {\r\n\tvar size = {\r\n\t width: 0,\r\n\t height: 0,\r\n\t innerWidth: 0,\r\n\t innerHeight: 0,\r\n\t outerWidth: 0,\r\n\t outerHeight: 0\r\n\t};\r\n\tfor ( var i=0; i < measurementsLength; i++ ) {\r\n\t var measurement = measurements[i];\r\n\t size[ measurement ] = 0;\r\n\t}\r\n\treturn size;\r\n }\r\n\r\n // -------------------------- getStyle -------------------------- //\r\n\r\n /**\r\n * getStyle, get style of element, check for Firefox bug\r\n * https://bugzilla.mozilla.org/show_bug.cgi?id=548397\r\n */\r\n function getStyle( elem ) {\r\n\tvar style = getComputedStyle( elem );\r\n\tif ( !style ) {\r\n\t logError( 'Style returned ' + style +\r\n\t\t'. Are you running this code in a hidden iframe on Firefox? ' +\r\n\t\t'See https://bit.ly/getsizebug1' );\r\n\t}\r\n\treturn style;\r\n }\r\n\r\n // -------------------------- setup -------------------------- //\r\n\r\n var isSetup = false;\r\n\r\n var isBoxSizeOuter;\r\n\r\n /**\r\n * setup\r\n * check isBoxSizerOuter\r\n * do on first getSize() rather than on page load for Firefox bug\r\n */\r\n function setup() {\r\n\t// setup once\r\n\tif ( isSetup ) {\r\n\t return;\r\n\t}\r\n\tisSetup = true;\r\n\r\n\t// -------------------------- box sizing -------------------------- //\r\n\r\n\t/**\r\n\t * Chrome & Safari measure the outer-width on style.width on border-box elems\r\n\t * IE11 & Firefox<29 measures the inner-width\r\n\t */\r\n\tvar div = document.createElement('div');\r\n\tdiv.style.width = '200px';\r\n\tdiv.style.padding = '1px 2px 3px 4px';\r\n\tdiv.style.borderStyle = 'solid';\r\n\tdiv.style.borderWidth = '1px 2px 3px 4px';\r\n\tdiv.style.boxSizing = 'border-box';\r\n\r\n\tvar body = document.body || document.documentElement;\r\n\tbody.appendChild( div );\r\n\tvar style = getStyle( div );\r\n\t// round value for browser zoom. desandro/masonry#928\r\n\tisBoxSizeOuter = Math.round( getStyleSize( style.width ) ) == 200;\r\n\tgetSize.isBoxSizeOuter = isBoxSizeOuter;\r\n\r\n\tbody.removeChild( div );\r\n }\r\n\r\n // -------------------------- getSize -------------------------- //\r\n\r\n function getSize( elem ) {\r\n\tsetup();\r\n\r\n\t// use querySeletor if elem is string\r\n\tif ( typeof elem == 'string' ) {\r\n\t elem = document.querySelector( elem );\r\n\t}\r\n\r\n\t// do not proceed on non-objects\r\n\tif ( !elem || typeof elem != 'object' || !elem.nodeType ) {\r\n\t return;\r\n\t}\r\n\r\n\tvar style = getStyle( elem );\r\n\r\n\t// if hidden, everything is 0\r\n\tif ( style.display == 'none' ) {\r\n\t return getZeroSize();\r\n\t}\r\n\r\n\tvar size = {};\r\n\tsize.width = elem.offsetWidth;\r\n\tsize.height = elem.offsetHeight;\r\n\r\n\tvar isBorderBox = size.isBorderBox = style.boxSizing == 'border-box';\r\n\r\n\t// get all measurements\r\n\tfor ( var i=0; i < measurementsLength; i++ ) {\r\n\t var measurement = measurements[i];\r\n\t var value = style[ measurement ];\r\n\t var num = parseFloat( value );\r\n\t // any 'auto', 'medium' value will be 0\r\n\t size[ measurement ] = !isNaN( num ) ? num : 0;\r\n\t}\r\n\r\n\tvar paddingWidth = size.paddingLeft + size.paddingRight;\r\n\tvar paddingHeight = size.paddingTop + size.paddingBottom;\r\n\tvar marginWidth = size.marginLeft + size.marginRight;\r\n\tvar marginHeight = size.marginTop + size.marginBottom;\r\n\tvar borderWidth = size.borderLeftWidth + size.borderRightWidth;\r\n\tvar borderHeight = size.borderTopWidth + size.borderBottomWidth;\r\n\r\n\tvar isBorderBoxSizeOuter = isBorderBox && isBoxSizeOuter;\r\n\r\n\t// overwrite width and height if we can get it from style\r\n\tvar styleWidth = getStyleSize( style.width );\r\n\tif ( styleWidth !== false ) {\r\n\t size.width = styleWidth +\r\n\t\t// add padding and border unless it's already including it\r\n\t\t( isBorderBoxSizeOuter ? 0 : paddingWidth + borderWidth );\r\n\t}\r\n\r\n\tvar styleHeight = getStyleSize( style.height );\r\n\tif ( styleHeight !== false ) {\r\n\t size.height = styleHeight +\r\n\t\t// add padding and border unless it's already including it\r\n\t\t( isBorderBoxSizeOuter ? 0 : paddingHeight + borderHeight );\r\n\t}\r\n\r\n\tsize.innerWidth = size.width - ( paddingWidth + borderWidth );\r\n\tsize.innerHeight = size.height - ( paddingHeight + borderHeight );\r\n\r\n\tsize.outerWidth = size.width + marginWidth;\r\n\tsize.outerHeight = size.height + marginHeight;\r\n\r\n\treturn size;\r\n }\r\n\r\n return getSize;\r\n\r\n });\r\n\r\n /**\r\n * matchesSelector v2.0.2\r\n * matchesSelector( element, '.selector' )\r\n * MIT license\r\n */\r\n\r\n /*jshint browser: true, strict: true, undef: true, unused: true */\r\n\r\n ( function( window, factory ) {\r\n\t/*global define: false, module: false */\r\n\t'use strict';\r\n\t// universal module definition\r\n\tif ( typeof define == 'function' && define.amd ) {\r\n\t // AMD\r\n\t define( 'desandro-matches-selector/matches-selector',factory );\r\n\t} else if ( typeof module == 'object' && module.exports ) {\r\n\t // CommonJS\r\n\t module.exports = factory();\r\n\t} else {\r\n\t // browser global\r\n\t window.matchesSelector = factory();\r\n\t}\r\n\r\n }( window, function factory() {\r\n\t'use strict';\r\n\r\n\tvar matchesMethod = ( function() {\r\n\t var ElemProto = window.Element.prototype;\r\n\t // check for the standard method name first\r\n\t if ( ElemProto.matches ) {\r\n\t\treturn 'matches';\r\n\t }\r\n\t // check un-prefixed\r\n\t if ( ElemProto.matchesSelector ) {\r\n\t\treturn 'matchesSelector';\r\n\t }\r\n\t // check vendor prefixes\r\n\t var prefixes = [ 'webkit', 'moz', 'ms', 'o' ];\r\n\r\n\t for ( var i=0; i < prefixes.length; i++ ) {\r\n\t\tvar prefix = prefixes[i];\r\n\t\tvar method = prefix + 'MatchesSelector';\r\n\t\tif ( ElemProto[ method ] ) {\r\n\t\t return method;\r\n\t\t}\r\n\t }\r\n\t})();\r\n\r\n\treturn function matchesSelector( elem, selector ) {\r\n\t return elem[ matchesMethod ]( selector );\r\n\t};\r\n\r\n }));\r\n\r\n /**\r\n * Fizzy UI utils v2.0.7\r\n * MIT license\r\n */\r\n\r\n /*jshint browser: true, undef: true, unused: true, strict: true */\r\n\r\n ( function( window, factory ) {\r\n\t// universal module definition\r\n\t/*jshint strict: false */ /*globals define, module, require */\r\n\r\n\tif ( typeof define == 'function' && define.amd ) {\r\n\t // AMD\r\n\t define( 'fizzy-ui-utils/utils',[\r\n\t\t'desandro-matches-selector/matches-selector'\r\n\t ], function( matchesSelector ) {\r\n\t\treturn factory( window, matchesSelector );\r\n\t });\r\n\t} else if ( typeof module == 'object' && module.exports ) {\r\n\t // CommonJS\r\n\t module.exports = factory(\r\n\t\twindow,\r\n\t\trequire('desandro-matches-selector')\r\n\t );\r\n\t} else {\r\n\t // browser global\r\n\t window.fizzyUIUtils = factory(\r\n\t\twindow,\r\n\t\twindow.matchesSelector\r\n\t );\r\n\t}\r\n\r\n }( window, function factory( window, matchesSelector ) {\r\n\r\n\r\n\r\n var utils = {};\r\n\r\n // ----- extend ----- //\r\n\r\n // extends objects\r\n utils.extend = function( a, b ) {\r\n\tfor ( var prop in b ) {\r\n\t a[ prop ] = b[ prop ];\r\n\t}\r\n\treturn a;\r\n };\r\n\r\n // ----- modulo ----- //\r\n\r\n utils.modulo = function( num, div ) {\r\n\treturn ( ( num % div ) + div ) % div;\r\n };\r\n\r\n // ----- makeArray ----- //\r\n\r\n var arraySlice = Array.prototype.slice;\r\n\r\n // turn element or nodeList into an array\r\n utils.makeArray = function( obj ) {\r\n\tif ( Array.isArray( obj ) ) {\r\n\t // use object if already an array\r\n\t return obj;\r\n\t}\r\n\t// return empty array if undefined or null. #6\r\n\tif ( obj === null || obj === undefined ) {\r\n\t return [];\r\n\t}\r\n\r\n\tvar isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';\r\n\tif ( isArrayLike ) {\r\n\t // convert nodeList to array\r\n\t return arraySlice.call( obj );\r\n\t}\r\n\r\n\t// array of single index\r\n\treturn [ obj ];\r\n };\r\n\r\n // ----- removeFrom ----- //\r\n\r\n utils.removeFrom = function( ary, obj ) {\r\n\tvar index = ary.indexOf( obj );\r\n\tif ( index != -1 ) {\r\n\t ary.splice( index, 1 );\r\n\t}\r\n };\r\n\r\n // ----- getParent ----- //\r\n\r\n utils.getParent = function( elem, selector ) {\r\n\twhile ( elem.parentNode && elem != document.body ) {\r\n\t elem = elem.parentNode;\r\n\t if ( matchesSelector( elem, selector ) ) {\r\n\t\treturn elem;\r\n\t }\r\n\t}\r\n };\r\n\r\n // ----- getQueryElement ----- //\r\n\r\n // use element as selector string\r\n utils.getQueryElement = function( elem ) {\r\n\tif ( typeof elem == 'string' ) {\r\n\t return document.querySelector( elem );\r\n\t}\r\n\treturn elem;\r\n };\r\n\r\n // ----- handleEvent ----- //\r\n\r\n // enable .ontype to trigger from .addEventListener( elem, 'type' )\r\n utils.handleEvent = function( event ) {\r\n\tvar method = 'on' + event.type;\r\n\tif ( this[ method ] ) {\r\n\t this[ method ]( event );\r\n\t}\r\n };\r\n\r\n // ----- filterFindElements ----- //\r\n\r\n utils.filterFindElements = function( elems, selector ) {\r\n\t// make array of elems\r\n\telems = utils.makeArray( elems );\r\n\tvar ffElems = [];\r\n\r\n\telems.forEach( function( elem ) {\r\n\t // check that elem is an actual element\r\n\t if ( !( elem instanceof HTMLElement ) ) {\r\n\t\treturn;\r\n\t }\r\n\t // add elem if no selector\r\n\t if ( !selector ) {\r\n\t\tffElems.push( elem );\r\n\t\treturn;\r\n\t }\r\n\t // filter & find items if we have a selector\r\n\t // filter\r\n\t if ( matchesSelector( elem, selector ) ) {\r\n\t\tffElems.push( elem );\r\n\t }\r\n\t // find children\r\n\t var childElems = elem.querySelectorAll( selector );\r\n\t // concat childElems to filterFound array\r\n\t for ( var i=0; i < childElems.length; i++ ) {\r\n\t\tffElems.push( childElems[i] );\r\n\t }\r\n\t});\r\n\r\n\treturn ffElems;\r\n };\r\n\r\n // ----- debounceMethod ----- //\r\n\r\n utils.debounceMethod = function( _class, methodName, threshold ) {\r\n\tthreshold = threshold || 100;\r\n\t// original method\r\n\tvar method = _class.prototype[ methodName ];\r\n\tvar timeoutName = methodName + 'Timeout';\r\n\r\n\t_class.prototype[ methodName ] = function() {\r\n\t var timeout = this[ timeoutName ];\r\n\t clearTimeout( timeout );\r\n\r\n\t var args = arguments;\r\n\t var _this = this;\r\n\t this[ timeoutName ] = setTimeout( function() {\r\n\t\tmethod.apply( _this, args );\r\n\t\tdelete _this[ timeoutName ];\r\n\t }, threshold );\r\n\t};\r\n };\r\n\r\n // ----- docReady ----- //\r\n\r\n utils.docReady = function( callback ) {\r\n\tvar readyState = document.readyState;\r\n\tif ( readyState == 'complete' || readyState == 'interactive' ) {\r\n\t // do async to allow for other scripts to run. metafizzy/flickity#441\r\n\t setTimeout( callback );\r\n\t} else {\r\n\t document.addEventListener( 'DOMContentLoaded', callback );\r\n\t}\r\n };\r\n\r\n // ----- htmlInit ----- //\r\n\r\n // http://jamesroberts.name/blog/2010/02/22/string-functions-for-javascript-trim-to-camel-case-to-dashed-and-to-underscore/\r\n utils.toDashed = function( str ) {\r\n\treturn str.replace( /(.)([A-Z])/g, function( match, $1, $2 ) {\r\n\t return $1 + '-' + $2;\r\n\t}).toLowerCase();\r\n };\r\n\r\n var console = window.console;\r\n /**\r\n * allow user to initialize classes via [data-namespace] or .js-namespace class\r\n * htmlInit( Widget, 'widgetName' )\r\n * options are parsed from data-namespace-options\r\n */\r\n utils.htmlInit = function( WidgetClass, namespace ) {\r\n\tutils.docReady( function() {\r\n\t var dashedNamespace = utils.toDashed( namespace );\r\n\t var dataAttr = 'data-' + dashedNamespace;\r\n\t var dataAttrElems = document.querySelectorAll( '[' + dataAttr + ']' );\r\n\t var jsDashElems = document.querySelectorAll( '.js-' + dashedNamespace );\r\n\t var elems = utils.makeArray( dataAttrElems )\r\n\t\t.concat( utils.makeArray( jsDashElems ) );\r\n\t var dataOptionsAttr = dataAttr + '-options';\r\n\t var jQuery = window.jQuery;\r\n\r\n\t elems.forEach( function( elem ) {\r\n\t\tvar attr = elem.getAttribute( dataAttr ) ||\r\n\t\t elem.getAttribute( dataOptionsAttr );\r\n\t\tvar options;\r\n\t\ttry {\r\n\t\t options = attr && JSON.parse( attr );\r\n\t\t} catch ( error ) {\r\n\t\t // log error, do not initialize\r\n\t\t if ( console ) {\r\n\t\t\tconsole.error( 'Error parsing ' + dataAttr + ' on ' + elem.className +\r\n\t\t\t': ' + error );\r\n\t\t }\r\n\t\t return;\r\n\t\t}\r\n\t\t// initialize\r\n\t\tvar instance = new WidgetClass( elem, options );\r\n\t\t// make available via $().data('namespace')\r\n\t\tif ( jQuery ) {\r\n\t\t jQuery.data( elem, namespace, instance );\r\n\t\t}\r\n\t });\r\n\r\n\t});\r\n };\r\n\r\n // ----- ----- //\r\n\r\n return utils;\r\n\r\n }));\r\n\r\n // Flickity.Cell\r\n ( function( window, factory ) {\r\n\t// universal module definition\r\n\t/* jshint strict: false */\r\n\tif ( typeof define == 'function' && define.amd ) {\r\n\t // AMD\r\n\t define( 'flickity/js/cell',[\r\n\t\t'get-size/get-size'\r\n\t ], function( getSize ) {\r\n\t\treturn factory( window, getSize );\r\n\t });\r\n\t} else if ( typeof module == 'object' && module.exports ) {\r\n\t // CommonJS\r\n\t module.exports = factory(\r\n\t\twindow,\r\n\t\trequire('get-size')\r\n\t );\r\n\t} else {\r\n\t // browser global\r\n\t window.Flickity = window.Flickity || {};\r\n\t window.Flickity.Cell = factory(\r\n\t\twindow,\r\n\t\twindow.getSize\r\n\t );\r\n\t}\r\n\r\n }( window, function factory( window, getSize ) {\r\n\r\n\r\n\r\n function Cell( elem, parent ) {\r\n\tthis.element = elem;\r\n\tthis.parent = parent;\r\n\r\n\tthis.create();\r\n }\r\n\r\n var proto = Cell.prototype;\r\n\r\n proto.create = function() {\r\n\tthis.element.style.position = 'absolute';\r\n\tthis.element.setAttribute( 'aria-selected', 'false' );\r\n\tthis.x = 0;\r\n\tthis.shift = 0;\r\n };\r\n\r\n proto.destroy = function() {\r\n\t// reset style\r\n\tthis.element.style.position = '';\r\n\tvar side = this.parent.originSide;\r\n\tthis.element.removeAttribute('aria-selected');\r\n\tthis.element.style[ side ] = '';\r\n };\r\n\r\n proto.getSize = function() {\r\n\tthis.size = getSize( this.element );\r\n };\r\n\r\n proto.setPosition = function( x ) {\r\n\tthis.x = x;\r\n\tthis.updateTarget();\r\n\tthis.renderPosition( x );\r\n };\r\n\r\n // setDefaultTarget v1 method, backwards compatibility, remove in v3\r\n proto.updateTarget = proto.setDefaultTarget = function() {\r\n\tvar marginProperty = this.parent.originSide == 'left' ? 'marginLeft' : 'marginRight';\r\n\tthis.target = this.x + this.size[ marginProperty ] +\r\n\t this.size.width * this.parent.cellAlign;\r\n };\r\n\r\n proto.renderPosition = function( x ) {\r\n\t// render position of cell with in slider\r\n\tvar side = this.parent.originSide;\r\n\tthis.element.style[ side ] = this.parent.getPositionValue( x );\r\n };\r\n\r\n /**\r\n * @param {Integer} factor - 0, 1, or -1\r\n **/\r\n proto.wrapShift = function( shift ) {\r\n\tthis.shift = shift;\r\n\tthis.renderPosition( this.x + this.parent.slideableWidth * shift );\r\n };\r\n\r\n proto.remove = function() {\r\n\tthis.element.parentNode.removeChild( this.element );\r\n };\r\n\r\n return Cell;\r\n\r\n }));\r\n\r\n // slide\r\n ( function( window, factory ) {\r\n\t// universal module definition\r\n\t/* jshint strict: false */\r\n\tif ( typeof define == 'function' && define.amd ) {\r\n\t // AMD\r\n\t define( 'flickity/js/slide',factory );\r\n\t} else if ( typeof module == 'object' && module.exports ) {\r\n\t // CommonJS\r\n\t module.exports = factory();\r\n\t} else {\r\n\t // browser global\r\n\t window.Flickity = window.Flickity || {};\r\n\t window.Flickity.Slide = factory();\r\n\t}\r\n\r\n }( window, function factory() {\r\n 'use strict';\r\n\r\n function Slide( parent ) {\r\n\tthis.parent = parent;\r\n\tthis.isOriginLeft = parent.originSide == 'left';\r\n\tthis.cells = [];\r\n\tthis.outerWidth = 0;\r\n\tthis.height = 0;\r\n }\r\n\r\n var proto = Slide.prototype;\r\n\r\n proto.addCell = function( cell ) {\r\n\tthis.cells.push( cell );\r\n\tthis.outerWidth += cell.size.outerWidth;\r\n\tthis.height = Math.max( cell.size.outerHeight, this.height );\r\n\t// first cell stuff\r\n\tif ( this.cells.length == 1 ) {\r\n\t this.x = cell.x; // x comes from first cell\r\n\t var beginMargin = this.isOriginLeft ? 'marginLeft' : 'marginRight';\r\n\t this.firstMargin = cell.size[ beginMargin ];\r\n\t}\r\n };\r\n\r\n proto.updateTarget = function() {\r\n\tvar endMargin = this.isOriginLeft ? 'marginRight' : 'marginLeft';\r\n\tvar lastCell = this.getLastCell();\r\n\tvar lastMargin = lastCell ? lastCell.size[ endMargin ] : 0;\r\n\tvar slideWidth = this.outerWidth - ( this.firstMargin + lastMargin );\r\n\tthis.target = this.x + this.firstMargin + slideWidth * this.parent.cellAlign;\r\n };\r\n\r\n proto.getLastCell = function() {\r\n\treturn this.cells[ this.cells.length - 1 ];\r\n };\r\n\r\n proto.select = function() {\r\n\tthis.changeSelected( true );\r\n };\r\n\r\n proto.unselect = function() {\r\n\tthis.changeSelected( false );\r\n };\r\n\r\n proto.changeSelected = function( isSelected ) {\r\n\tvar classMethod = isSelected ? 'add' : 'remove';\r\n\tthis.cells.forEach( function( cell ) {\r\n\t cell.element.classList[ classMethod ]('is-selected');\r\n\t cell.element.setAttribute( 'aria-selected', isSelected.toString() );\r\n\t});\r\n };\r\n\r\n proto.getCellElements = function() {\r\n\treturn this.cells.map( function( cell ) {\r\n\t return cell.element;\r\n\t});\r\n };\r\n\r\n return Slide;\r\n\r\n }));\r\n\r\n // animate\r\n ( function( window, factory ) {\r\n\t// universal module definition\r\n\t/* jshint strict: false */\r\n\tif ( typeof define == 'function' && define.amd ) {\r\n\t // AMD\r\n\t define( 'flickity/js/animate',[\r\n\t\t'fizzy-ui-utils/utils'\r\n\t ], function( utils ) {\r\n\t\treturn factory( window, utils );\r\n\t });\r\n\t} else if ( typeof module == 'object' && module.exports ) {\r\n\t // CommonJS\r\n\t module.exports = factory(\r\n\t\twindow,\r\n\t\trequire('fizzy-ui-utils')\r\n\t );\r\n\t} else {\r\n\t // browser global\r\n\t window.Flickity = window.Flickity || {};\r\n\t window.Flickity.animatePrototype = factory(\r\n\t\twindow,\r\n\t\twindow.fizzyUIUtils\r\n\t );\r\n\t}\r\n\r\n }( window, function factory( window, utils ) {\r\n\r\n\r\n\r\n // -------------------------- animate -------------------------- //\r\n\r\n var proto = {};\r\n\r\n proto.startAnimation = function() {\r\n\tif ( this.isAnimating ) {\r\n\t return;\r\n\t}\r\n\r\n\tthis.isAnimating = true;\r\n\tthis.restingFrames = 0;\r\n\tthis.animate();\r\n };\r\n\r\n proto.animate = function() {\r\n\tthis.applyDragForce();\r\n\tthis.applySelectedAttraction();\r\n\r\n\tvar previousX = this.x;\r\n\r\n\tthis.integratePhysics();\r\n\tthis.positionSlider();\r\n\tthis.settle( previousX );\r\n\t// animate next frame\r\n\tif ( this.isAnimating ) {\r\n\t var _this = this;\r\n\t requestAnimationFrame( function animateFrame() {\r\n\t\t_this.animate();\r\n\t });\r\n\t}\r\n };\r\n\r\n proto.positionSlider = function() {\r\n\tvar x = this.x;\r\n\t// wrap position around\r\n\tif ( this.options.wrapAround && this.cells.length > 1 ) {\r\n\t x = utils.modulo( x, this.slideableWidth );\r\n\t x = x - this.slideableWidth;\r\n\t this.shiftWrapCells( x );\r\n\t}\r\n\r\n\tx = x + this.cursorPosition;\r\n\t// reverse if right-to-left and using transform\r\n\tx = this.options.rightToLeft ? -x : x;\r\n\tvar value = this.getPositionValue( x );\r\n\t// use 3D tranforms for hardware acceleration on iOS\r\n\t// but use 2D when settled, for better font-rendering\r\n\tthis.slider.style.transform = this.isAnimating ?\r\n\t 'translate3d(' + value + ',0,0)' : 'translateX(' + value + ')';\r\n\r\n\t// scroll event\r\n\tvar firstSlide = this.slides[0];\r\n\tif ( firstSlide ) {\r\n\t var positionX = -this.x - firstSlide.target;\r\n\t var progress = positionX / this.slidesWidth;\r\n\t this.dispatchEvent( 'scroll', null, [ progress, positionX ] );\r\n\t}\r\n };\r\n\r\n proto.positionSliderAtSelected = function() {\r\n\tif ( !this.cells.length ) {\r\n\t return;\r\n\t}\r\n\tthis.x = -this.selectedSlide.target;\r\n\tthis.velocity = 0; // stop wobble\r\n\tthis.positionSlider();\r\n };\r\n\r\n proto.getPositionValue = function( position ) {\r\n\tif ( this.options.percentPosition ) {\r\n\t // percent position, round to 2 digits, like 12.34%\r\n\t return ( Math.round( ( position / this.size.innerWidth ) * 10000 ) * 0.01 )+ '%';\r\n\t} else {\r\n\t // pixel positioning\r\n\t return Math.round( position ) + 'px';\r\n\t}\r\n };\r\n\r\n proto.settle = function( previousX ) {\r\n\t// keep track of frames where x hasn't moved\r\n\tif ( !this.isPointerDown && Math.round( this.x * 100 ) == Math.round( previousX * 100 ) ) {\r\n\t this.restingFrames++;\r\n\t}\r\n\t// stop animating if resting for 3 or more frames\r\n\tif ( this.restingFrames > 2 ) {\r\n\t this.isAnimating = false;\r\n\t delete this.isFreeScrolling;\r\n\t // render position with translateX when settled\r\n\t this.positionSlider();\r\n\t this.dispatchEvent( 'settle', null, [ this.selectedIndex ] );\r\n\t}\r\n };\r\n\r\n proto.shiftWrapCells = function( x ) {\r\n\t// shift before cells\r\n\tvar beforeGap = this.cursorPosition + x;\r\n\tthis._shiftCells( this.beforeShiftCells, beforeGap, -1 );\r\n\t// shift after cells\r\n\tvar afterGap = this.size.innerWidth - ( x + this.slideableWidth + this.cursorPosition );\r\n\tthis._shiftCells( this.afterShiftCells, afterGap, 1 );\r\n };\r\n\r\n proto._shiftCells = function( cells, gap, shift ) {\r\n\tfor ( var i=0; i < cells.length; i++ ) {\r\n\t var cell = cells[i];\r\n\t var cellShift = gap > 0 ? shift : 0;\r\n\t cell.wrapShift( cellShift );\r\n\t gap -= cell.size.outerWidth;\r\n\t}\r\n };\r\n\r\n proto._unshiftCells = function( cells ) {\r\n\tif ( !cells || !cells.length ) {\r\n\t return;\r\n\t}\r\n\tfor ( var i=0; i < cells.length; i++ ) {\r\n\t cells[i].wrapShift( 0 );\r\n\t}\r\n };\r\n\r\n // -------------------------- physics -------------------------- //\r\n\r\n proto.integratePhysics = function() {\r\n\tthis.x += this.velocity;\r\n\tthis.velocity *= this.getFrictionFactor();\r\n };\r\n\r\n proto.applyForce = function( force ) {\r\n\tthis.velocity += force;\r\n };\r\n\r\n proto.getFrictionFactor = function() {\r\n\treturn 1 - this.options[ this.isFreeScrolling ? 'freeScrollFriction' : 'friction' ];\r\n };\r\n\r\n proto.getRestingPosition = function() {\r\n\t// my thanks to Steven Wittens, who simplified this math greatly\r\n\treturn this.x + this.velocity / ( 1 - this.getFrictionFactor() );\r\n };\r\n\r\n proto.applyDragForce = function() {\r\n\tif ( !this.isDraggable || !this.isPointerDown ) {\r\n\t return;\r\n\t}\r\n\t// change the position to drag position by applying force\r\n\tvar dragVelocity = this.dragX - this.x;\r\n\tvar dragForce = dragVelocity - this.velocity;\r\n\tthis.applyForce( dragForce );\r\n };\r\n\r\n proto.applySelectedAttraction = function() {\r\n\t// do not attract if pointer down or no slides\r\n\tvar dragDown = this.isDraggable && this.isPointerDown;\r\n\tif ( dragDown || this.isFreeScrolling || !this.slides.length ) {\r\n\t return;\r\n\t}\r\n\tvar distance = this.selectedSlide.target * -1 - this.x;\r\n\tvar force = distance * this.options.selectedAttraction;\r\n\tthis.applyForce( force );\r\n };\r\n\r\n return proto;\r\n\r\n }));\r\n\r\n // Flickity main\r\n ( function( window, factory ) {\r\n\t// universal module definition\r\n\t/* jshint strict: false */\r\n\tif ( typeof define == 'function' && define.amd ) {\r\n\t // AMD\r\n\t define( 'flickity/js/flickity',[\r\n\t\t'ev-emitter/ev-emitter',\r\n\t\t'get-size/get-size',\r\n\t\t'fizzy-ui-utils/utils',\r\n\t\t'./cell',\r\n\t\t'./slide',\r\n\t\t'./animate'\r\n\t ], function( EvEmitter, getSize, utils, Cell, Slide, animatePrototype ) {\r\n\t\treturn factory( window, EvEmitter, getSize, utils, Cell, Slide, animatePrototype );\r\n\t });\r\n\t} else if ( typeof module == 'object' && module.exports ) {\r\n\t // CommonJS\r\n\t module.exports = factory(\r\n\t\twindow,\r\n\t\trequire('ev-emitter'),\r\n\t\trequire('get-size'),\r\n\t\trequire('fizzy-ui-utils'),\r\n\t\trequire('./cell'),\r\n\t\trequire('./slide'),\r\n\t\trequire('./animate')\r\n\t );\r\n\t} else {\r\n\t // browser global\r\n\t var _Flickity = window.Flickity;\r\n\r\n\t window.Flickity = factory(\r\n\t\twindow,\r\n\t\twindow.EvEmitter,\r\n\t\twindow.getSize,\r\n\t\twindow.fizzyUIUtils,\r\n\t\t_Flickity.Cell,\r\n\t\t_Flickity.Slide,\r\n\t\t_Flickity.animatePrototype\r\n\t );\r\n\t}\r\n\r\n }( window, function factory( window, EvEmitter, getSize,\r\n\tutils, Cell, Slide, animatePrototype ) {\r\n\r\n\r\n\r\n // vars\r\n var jQuery = window.jQuery;\r\n var getComputedStyle = window.getComputedStyle;\r\n var console = window.console;\r\n\r\n function moveElements( elems, toElem ) {\r\n\telems = utils.makeArray( elems );\r\n\twhile ( elems.length ) {\r\n\t toElem.appendChild( elems.shift() );\r\n\t}\r\n }\r\n\r\n // -------------------------- Flickity -------------------------- //\r\n\r\n // globally unique identifiers\r\n var GUID = 0;\r\n // internal store of all Flickity intances\r\n var instances = {};\r\n\r\n function Flickity( element, options ) {\r\n\tvar queryElement = utils.getQueryElement( element );\r\n\tif ( !queryElement ) {\r\n\t if ( console ) {\r\n\t\tconsole.error( 'Bad element for Flickity: ' + ( queryElement || element ) );\r\n\t }\r\n\t return;\r\n\t}\r\n\tthis.element = queryElement;\r\n\t// do not initialize twice on same element\r\n\tif ( this.element.flickityGUID ) {\r\n\t var instance = instances[ this.element.flickityGUID ];\r\n\t instance.option( options );\r\n\t return instance;\r\n\t}\r\n\r\n\t// add jQuery\r\n\tif ( jQuery ) {\r\n\t this.$element = jQuery( this.element );\r\n\t}\r\n\t// options\r\n\tthis.options = utils.extend( {}, this.constructor.defaults );\r\n\tthis.option( options );\r\n\r\n\t// kick things off\r\n\tthis._create();\r\n }\r\n\r\n Flickity.defaults = {\r\n\taccessibility: true,\r\n\t// adaptiveHeight: false,\r\n\tcellAlign: 'center',\r\n\t// cellSelector: undefined,\r\n\t// contain: false,\r\n\tfreeScrollFriction: 0.075, // friction when free-scrolling\r\n\tfriction: 0.28, // friction when selecting\r\n\tnamespaceJQueryEvents: true,\r\n\t// initialIndex: 0,\r\n\tpercentPosition: true,\r\n\tresize: true,\r\n\tselectedAttraction: 0.025,\r\n\tsetGallerySize: true\r\n\t// watchCSS: false,\r\n\t// wrapAround: false\r\n };\r\n\r\n // hash of methods triggered on _create()\r\n Flickity.createMethods = [];\r\n\r\n var proto = Flickity.prototype;\r\n // inherit EventEmitter\r\n utils.extend( proto, EvEmitter.prototype );\r\n\r\n proto._create = function() {\r\n\t// add id for Flickity.data\r\n\tvar id = this.guid = ++GUID;\r\n\tthis.element.flickityGUID = id; // expando\r\n\tinstances[ id ] = this; // associate via id\r\n\t// initial properties\r\n\tthis.selectedIndex = 0;\r\n\t// how many frames slider has been in same position\r\n\tthis.restingFrames = 0;\r\n\t// initial physics properties\r\n\tthis.x = 0;\r\n\tthis.velocity = 0;\r\n\tthis.originSide = this.options.rightToLeft ? 'right' : 'left';\r\n\t// create viewport & slider\r\n\tthis.viewport = document.createElement('div');\r\n\tthis.viewport.className = 'flickity-viewport';\r\n\tthis._createSlider();\r\n\r\n\tif ( this.options.resize || this.options.watchCSS ) {\r\n\t window.addEventListener( 'resize', this );\r\n\t}\r\n\r\n\t// add listeners from on option\r\n\tfor ( var eventName in this.options.on ) {\r\n\t var listener = this.options.on[ eventName ];\r\n\t this.on( eventName, listener );\r\n\t}\r\n\r\n\tFlickity.createMethods.forEach( function( method ) {\r\n\t this[ method ]();\r\n\t}, this );\r\n\r\n\tif ( this.options.watchCSS ) {\r\n\t this.watchCSS();\r\n\t} else {\r\n\t this.activate();\r\n\t}\r\n\r\n };\r\n\r\n /**\r\n * set options\r\n * @param {Object} opts\r\n */\r\n proto.option = function( opts ) {\r\n\tutils.extend( this.options, opts );\r\n };\r\n\r\n proto.activate = function() {\r\n\tif ( this.isActive ) {\r\n\t return;\r\n\t}\r\n\tthis.isActive = true;\r\n\tthis.element.classList.add('flickity-enabled');\r\n\tif ( this.options.rightToLeft ) {\r\n\t this.element.classList.add('flickity-rtl');\r\n\t}\r\n\r\n\tthis.getSize();\r\n\t// move initial cell elements so they can be loaded as cells\r\n\tvar cellElems = this._filterFindCellElements( this.element.children );\r\n\tmoveElements( cellElems, this.slider );\r\n\tthis.viewport.appendChild( this.slider );\r\n\tthis.element.appendChild( this.viewport );\r\n\t// get cells from children\r\n\tthis.reloadCells();\r\n\r\n\tif ( this.options.accessibility ) {\r\n\t // allow element to focusable\r\n\t this.element.tabIndex = 0;\r\n\t // listen for key presses\r\n\t this.element.addEventListener( 'keydown', this );\r\n\t}\r\n\r\n\tthis.emitEvent('activate');\r\n\r\n\tvar index;\r\n\tvar initialIndex = this.options.initialIndex;\r\n\tif ( this.isInitActivated ) {\r\n\t index = this.selectedIndex;\r\n\t} else if ( initialIndex !== undefined ) {\r\n\t index = this.cells[ initialIndex ] ? initialIndex : 0;\r\n\t} else {\r\n\t index = 0;\r\n\t}\r\n\t// select instantly\r\n\tthis.select( index, false, true );\r\n\t// flag for initial activation, for using initialIndex\r\n\tthis.isInitActivated = true;\r\n\t// ready event. #493\r\n\tthis.dispatchEvent('ready');\r\n };\r\n\r\n // slider positions the cells\r\n proto._createSlider = function() {\r\n\t// slider element does all the positioning\r\n\tvar slider = document.createElement('div');\r\n\tslider.className = 'flickity-slider';\r\n\tslider.style[ this.originSide ] = 0;\r\n\tthis.slider = slider;\r\n };\r\n\r\n proto._filterFindCellElements = function( elems ) {\r\n\treturn utils.filterFindElements( elems, this.options.cellSelector );\r\n };\r\n\r\n // goes through all children\r\n proto.reloadCells = function() {\r\n\t// collection of item elements\r\n\tthis.cells = this._makeCells( this.slider.children );\r\n\tthis.positionCells();\r\n\tthis._getWrapShiftCells();\r\n\tthis.setGallerySize();\r\n };\r\n\r\n /**\r\n * turn elements into Flickity.Cells\r\n * @param {Array or NodeList or HTMLElement} elems\r\n * @returns {Array} items - collection of new Flickity Cells\r\n */\r\n proto._makeCells = function( elems ) {\r\n\tvar cellElems = this._filterFindCellElements( elems );\r\n\r\n\t// create new Flickity for collection\r\n\tvar cells = cellElems.map( function( cellElem ) {\r\n\t return new Cell( cellElem, this );\r\n\t}, this );\r\n\r\n\treturn cells;\r\n };\r\n\r\n proto.getLastCell = function() {\r\n\treturn this.cells[ this.cells.length - 1 ];\r\n };\r\n\r\n proto.getLastSlide = function() {\r\n\treturn this.slides[ this.slides.length - 1 ];\r\n };\r\n\r\n // positions all cells\r\n proto.positionCells = function() {\r\n\t// size all cells\r\n\tthis._sizeCells( this.cells );\r\n\t// position all cells\r\n\tthis._positionCells( 0 );\r\n };\r\n\r\n /**\r\n * position certain cells\r\n * @param {Integer} index - which cell to start with\r\n */\r\n proto._positionCells = function( index ) {\r\n\tindex = index || 0;\r\n\t// also measure maxCellHeight\r\n\t// start 0 if positioning all cells\r\n\tthis.maxCellHeight = index ? this.maxCellHeight || 0 : 0;\r\n\tvar cellX = 0;\r\n\t// get cellX\r\n\tif ( index > 0 ) {\r\n\t var startCell = this.cells[ index - 1 ];\r\n\t cellX = startCell.x + startCell.size.outerWidth;\r\n\t}\r\n\tvar len = this.cells.length;\r\n\tfor ( var i=index; i < len; i++ ) {\r\n\t var cell = this.cells[i];\r\n\t cell.setPosition( cellX );\r\n\t cellX += cell.size.outerWidth;\r\n\t this.maxCellHeight = Math.max( cell.size.outerHeight, this.maxCellHeight );\r\n\t}\r\n\t// keep track of cellX for wrap-around\r\n\tthis.slideableWidth = cellX;\r\n\t// slides\r\n\tthis.updateSlides();\r\n\t// contain slides target\r\n\tthis._containSlides();\r\n\t// update slidesWidth\r\n\tthis.slidesWidth = len ? this.getLastSlide().target - this.slides[0].target : 0;\r\n };\r\n\r\n /**\r\n * cell.getSize() on multiple cells\r\n * @param {Array} cells\r\n */\r\n proto._sizeCells = function( cells ) {\r\n\tcells.forEach( function( cell ) {\r\n\t cell.getSize();\r\n\t});\r\n };\r\n\r\n // -------------------------- -------------------------- //\r\n\r\n proto.updateSlides = function() {\r\n\tthis.slides = [];\r\n\tif ( !this.cells.length ) {\r\n\t return;\r\n\t}\r\n\r\n\tvar slide = new Slide( this );\r\n\tthis.slides.push( slide );\r\n\tvar isOriginLeft = this.originSide == 'left';\r\n\tvar nextMargin = isOriginLeft ? 'marginRight' : 'marginLeft';\r\n\r\n\tvar canCellFit = this._getCanCellFit();\r\n\r\n\tthis.cells.forEach( function( cell, i ) {\r\n\t // just add cell if first cell in slide\r\n\t if ( !slide.cells.length ) {\r\n\t\tslide.addCell( cell );\r\n\t\treturn;\r\n\t }\r\n\r\n\t var slideWidth = ( slide.outerWidth - slide.firstMargin ) +\r\n\t\t( cell.size.outerWidth - cell.size[ nextMargin ] );\r\n\r\n\t if ( canCellFit.call( this, i, slideWidth ) ) {\r\n\t\tslide.addCell( cell );\r\n\t } else {\r\n\t\t// doesn't fit, new slide\r\n\t\tslide.updateTarget();\r\n\r\n\t\tslide = new Slide( this );\r\n\t\tthis.slides.push( slide );\r\n\t\tslide.addCell( cell );\r\n\t }\r\n\t}, this );\r\n\t// last slide\r\n\tslide.updateTarget();\r\n\t// update .selectedSlide\r\n\tthis.updateSelectedSlide();\r\n };\r\n\r\n proto._getCanCellFit = function() {\r\n\tvar groupCells = this.options.groupCells;\r\n\tif ( !groupCells ) {\r\n\t return function() {\r\n\t\treturn false;\r\n\t };\r\n\t} else if ( typeof groupCells == 'number' ) {\r\n\t // group by number. 3 -> [0,1,2], [3,4,5], ...\r\n\t var number = parseInt( groupCells, 10 );\r\n\t return function( i ) {\r\n\t\treturn ( i % number ) !== 0;\r\n\t };\r\n\t}\r\n\t// default, group by width of slide\r\n\t// parse '75%\r\n\tvar percentMatch = typeof groupCells == 'string' &&\r\n\t groupCells.match(/^(\\d+)%$/);\r\n\tvar percent = percentMatch ? parseInt( percentMatch[1], 10 ) / 100 : 1;\r\n\treturn function( i, slideWidth ) {\r\n\t return slideWidth <= ( this.size.innerWidth + 1 ) * percent;\r\n\t};\r\n };\r\n\r\n // alias _init for jQuery plugin .flickity()\r\n proto._init =\r\n proto.reposition = function() {\r\n\tthis.positionCells();\r\n\tthis.positionSliderAtSelected();\r\n };\r\n\r\n proto.getSize = function() {\r\n\tthis.size = getSize( this.element );\r\n\tthis.setCellAlign();\r\n\tthis.cursorPosition = this.size.innerWidth * this.cellAlign;\r\n };\r\n\r\n var cellAlignShorthands = {\r\n\t// cell align, then based on origin side\r\n\tcenter: {\r\n\t left: 0.5,\r\n\t right: 0.5\r\n\t},\r\n\tleft: {\r\n\t left: 0,\r\n\t right: 1\r\n\t},\r\n\tright: {\r\n\t right: 0,\r\n\t left: 1\r\n\t}\r\n };\r\n\r\n proto.setCellAlign = function() {\r\n\tvar shorthand = cellAlignShorthands[ this.options.cellAlign ];\r\n\tthis.cellAlign = shorthand ? shorthand[ this.originSide ] : this.options.cellAlign;\r\n };\r\n\r\n proto.setGallerySize = function() {\r\n\tif ( this.options.setGallerySize ) {\r\n\t var height = this.options.adaptiveHeight && this.selectedSlide ?\r\n\t\tthis.selectedSlide.height : this.maxCellHeight;\r\n\t this.viewport.style.height = height + 'px';\r\n\t}\r\n };\r\n\r\n proto._getWrapShiftCells = function() {\r\n\t// only for wrap-around\r\n\tif ( !this.options.wrapAround ) {\r\n\t return;\r\n\t}\r\n\t// unshift previous cells\r\n\tthis._unshiftCells( this.beforeShiftCells );\r\n\tthis._unshiftCells( this.afterShiftCells );\r\n\t// get before cells\r\n\t// initial gap\r\n\tvar gapX = this.cursorPosition;\r\n\tvar cellIndex = this.cells.length - 1;\r\n\tthis.beforeShiftCells = this._getGapCells( gapX, cellIndex, -1 );\r\n\t// get after cells\r\n\t// ending gap between last cell and end of gallery viewport\r\n\tgapX = this.size.innerWidth - this.cursorPosition;\r\n\t// start cloning at first cell, working forwards\r\n\tthis.afterShiftCells = this._getGapCells( gapX, 0, 1 );\r\n };\r\n\r\n proto._getGapCells = function( gapX, cellIndex, increment ) {\r\n\t// keep adding cells until the cover the initial gap\r\n\tvar cells = [];\r\n\twhile ( gapX > 0 ) {\r\n\t var cell = this.cells[ cellIndex ];\r\n\t if ( !cell ) {\r\n\t\tbreak;\r\n\t }\r\n\t cells.push( cell );\r\n\t cellIndex += increment;\r\n\t gapX -= cell.size.outerWidth;\r\n\t}\r\n\treturn cells;\r\n };\r\n\r\n // ----- contain ----- //\r\n\r\n // contain cell targets so no excess sliding\r\n proto._containSlides = function() {\r\n\tif ( !this.options.contain || this.options.wrapAround || !this.cells.length ) {\r\n\t return;\r\n\t}\r\n\tvar isRightToLeft = this.options.rightToLeft;\r\n\tvar beginMargin = isRightToLeft ? 'marginRight' : 'marginLeft';\r\n\tvar endMargin = isRightToLeft ? 'marginLeft' : 'marginRight';\r\n\tvar contentWidth = this.slideableWidth - this.getLastCell().size[ endMargin ];\r\n\t// content is less than gallery size\r\n\tvar isContentSmaller = contentWidth < this.size.innerWidth;\r\n\t// bounds\r\n\tvar beginBound = this.cursorPosition + this.cells[0].size[ beginMargin ];\r\n\tvar endBound = contentWidth - this.size.innerWidth * ( 1 - this.cellAlign );\r\n\t// contain each cell target\r\n\tthis.slides.forEach( function( slide ) {\r\n\t if ( isContentSmaller ) {\r\n\t\t// all cells fit inside gallery\r\n\t\tslide.target = contentWidth * this.cellAlign;\r\n\t } else {\r\n\t\t// contain to bounds\r\n\t\tslide.target = Math.max( slide.target, beginBound );\r\n\t\tslide.target = Math.min( slide.target, endBound );\r\n\t }\r\n\t}, this );\r\n };\r\n\r\n // ----- ----- //\r\n\r\n /**\r\n * emits events via eventEmitter and jQuery events\r\n * @param {String} type - name of event\r\n * @param {Event} event - original event\r\n * @param {Array} args - extra arguments\r\n */\r\n proto.dispatchEvent = function( type, event, args ) {\r\n\tvar emitArgs = event ? [ event ].concat( args ) : args;\r\n\tthis.emitEvent( type, emitArgs );\r\n\r\n\tif ( jQuery && this.$element ) {\r\n\t // default trigger with type if no event\r\n\t type += this.options.namespaceJQueryEvents ? '.flickity' : '';\r\n\t var $event = type;\r\n\t if ( event ) {\r\n\t\t// create jQuery event\r\n\t\tvar jQEvent = jQuery.Event( event );\r\n\t\tjQEvent.type = type;\r\n\t\t$event = jQEvent;\r\n\t }\r\n\t this.$element.trigger( $event, args );\r\n\t}\r\n };\r\n\r\n // -------------------------- select -------------------------- //\r\n\r\n /**\r\n * @param {Integer} index - index of the slide\r\n * @param {Boolean} isWrap - will wrap-around to last/first if at the end\r\n * @param {Boolean} isInstant - will immediately set position at selected cell\r\n */\r\n proto.select = function( index, isWrap, isInstant ) {\r\n\tif ( !this.isActive ) {\r\n\t return;\r\n\t}\r\n\tindex = parseInt( index, 10 );\r\n\tthis._wrapSelect( index );\r\n\r\n\tif ( this.options.wrapAround || isWrap ) {\r\n\t index = utils.modulo( index, this.slides.length );\r\n\t}\r\n\t// bail if invalid index\r\n\tif ( !this.slides[ index ] ) {\r\n\t return;\r\n\t}\r\n\tvar prevIndex = this.selectedIndex;\r\n\tthis.selectedIndex = index;\r\n\tthis.updateSelectedSlide();\r\n\tif ( isInstant ) {\r\n\t this.positionSliderAtSelected();\r\n\t} else {\r\n\t this.startAnimation();\r\n\t}\r\n\tif ( this.options.adaptiveHeight ) {\r\n\t this.setGallerySize();\r\n\t}\r\n\t// events\r\n\tthis.dispatchEvent( 'select', null, [ index ] );\r\n\t// change event if new index\r\n\tif ( index != prevIndex ) {\r\n\t this.dispatchEvent( 'change', null, [ index ] );\r\n\t}\r\n\t// old v1 event name, remove in v3\r\n\tthis.dispatchEvent('cellSelect');\r\n };\r\n\r\n // wraps position for wrapAround, to move to closest slide. #113\r\n proto._wrapSelect = function( index ) {\r\n\tvar len = this.slides.length;\r\n\tvar isWrapping = this.options.wrapAround && len > 1;\r\n\tif ( !isWrapping ) {\r\n\t return index;\r\n\t}\r\n\tvar wrapIndex = utils.modulo( index, len );\r\n\t// go to shortest\r\n\tvar delta = Math.abs( wrapIndex - this.selectedIndex );\r\n\tvar backWrapDelta = Math.abs( ( wrapIndex + len ) - this.selectedIndex );\r\n\tvar forewardWrapDelta = Math.abs( ( wrapIndex - len ) - this.selectedIndex );\r\n\tif ( !this.isDragSelect && backWrapDelta < delta ) {\r\n\t index += len;\r\n\t} else if ( !this.isDragSelect && forewardWrapDelta < delta ) {\r\n\t index -= len;\r\n\t}\r\n\t// wrap position so slider is within normal area\r\n\tif ( index < 0 ) {\r\n\t this.x -= this.slideableWidth;\r\n\t} else if ( index >= len ) {\r\n\t this.x += this.slideableWidth;\r\n\t}\r\n };\r\n\r\n proto.previous = function( isWrap, isInstant ) {\r\n\tthis.select( this.selectedIndex - 1, isWrap, isInstant );\r\n };\r\n\r\n proto.next = function( isWrap, isInstant ) {\r\n\tthis.select( this.selectedIndex + 1, isWrap, isInstant );\r\n };\r\n\r\n proto.updateSelectedSlide = function() {\r\n\tvar slide = this.slides[ this.selectedIndex ];\r\n\t// selectedIndex could be outside of slides, if triggered before resize()\r\n\tif ( !slide ) {\r\n\t return;\r\n\t}\r\n\t// unselect previous selected slide\r\n\tthis.unselectSelectedSlide();\r\n\t// update new selected slide\r\n\tthis.selectedSlide = slide;\r\n\tslide.select();\r\n\tthis.selectedCells = slide.cells;\r\n\tthis.selectedElements = slide.getCellElements();\r\n\t// HACK: selectedCell & selectedElement is first cell in slide, backwards compatibility\r\n\t// Remove in v3?\r\n\tthis.selectedCell = slide.cells[0];\r\n\tthis.selectedElement = this.selectedElements[0];\r\n };\r\n\r\n proto.unselectSelectedSlide = function() {\r\n\tif ( this.selectedSlide ) {\r\n\t this.selectedSlide.unselect();\r\n\t}\r\n };\r\n\r\n /**\r\n * select slide from number or cell element\r\n * @param {Element or Number} elem\r\n */\r\n proto.selectCell = function( value, isWrap, isInstant ) {\r\n\t// get cell\r\n\tvar cell = this.queryCell( value );\r\n\tif ( !cell ) {\r\n\t return;\r\n\t}\r\n\r\n\tvar index = this.getCellSlideIndex( cell );\r\n\tthis.select( index, isWrap, isInstant );\r\n };\r\n\r\n proto.getCellSlideIndex = function( cell ) {\r\n\t// get index of slides that has cell\r\n\tfor ( var i=0; i < this.slides.length; i++ ) {\r\n\t var slide = this.slides[i];\r\n\t var index = slide.cells.indexOf( cell );\r\n\t if ( index != -1 ) {\r\n\t\treturn i;\r\n\t }\r\n\t}\r\n };\r\n\r\n // -------------------------- get cells -------------------------- //\r\n\r\n /**\r\n * get Flickity.Cell, given an Element\r\n * @param {Element} elem\r\n * @returns {Flickity.Cell} item\r\n */\r\n proto.getCell = function( elem ) {\r\n\t// loop through cells to get the one that matches\r\n\tfor ( var i=0; i < this.cells.length; i++ ) {\r\n\t var cell = this.cells[i];\r\n\t if ( cell.element == elem ) {\r\n\t\treturn cell;\r\n\t }\r\n\t}\r\n };\r\n\r\n /**\r\n * get collection of Flickity.Cells, given Elements\r\n * @param {Element, Array, NodeList} elems\r\n * @returns {Array} cells - Flickity.Cells\r\n */\r\n proto.getCells = function( elems ) {\r\n\telems = utils.makeArray( elems );\r\n\tvar cells = [];\r\n\telems.forEach( function( elem ) {\r\n\t var cell = this.getCell( elem );\r\n\t if ( cell ) {\r\n\t\tcells.push( cell );\r\n\t }\r\n\t}, this );\r\n\treturn cells;\r\n };\r\n\r\n /**\r\n * get cell elements\r\n * @returns {Array} cellElems\r\n */\r\n proto.getCellElements = function() {\r\n\treturn this.cells.map( function( cell ) {\r\n\t return cell.element;\r\n\t});\r\n };\r\n\r\n /**\r\n * get parent cell from an element\r\n * @param {Element} elem\r\n * @returns {Flickit.Cell} cell\r\n */\r\n proto.getParentCell = function( elem ) {\r\n\t// first check if elem is cell\r\n\tvar cell = this.getCell( elem );\r\n\tif ( cell ) {\r\n\t return cell;\r\n\t}\r\n\t// try to get parent cell elem\r\n\telem = utils.getParent( elem, '.flickity-slider > *' );\r\n\treturn this.getCell( elem );\r\n };\r\n\r\n /**\r\n * get cells adjacent to a slide\r\n * @param {Integer} adjCount - number of adjacent slides\r\n * @param {Integer} index - index of slide to start\r\n * @returns {Array} cells - array of Flickity.Cells\r\n */\r\n proto.getAdjacentCellElements = function( adjCount, index ) {\r\n\tif ( !adjCount ) {\r\n\t return this.selectedSlide.getCellElements();\r\n\t}\r\n\tindex = index === undefined ? this.selectedIndex : index;\r\n\r\n\tvar len = this.slides.length;\r\n\tif ( 1 + ( adjCount * 2 ) >= len ) {\r\n\t return this.getCellElements();\r\n\t}\r\n\r\n\tvar cellElems = [];\r\n\tfor ( var i = index - adjCount; i <= index + adjCount ; i++ ) {\r\n\t var slideIndex = this.options.wrapAround ? utils.modulo( i, len ) : i;\r\n\t var slide = this.slides[ slideIndex ];\r\n\t if ( slide ) {\r\n\t\tcellElems = cellElems.concat( slide.getCellElements() );\r\n\t }\r\n\t}\r\n\treturn cellElems;\r\n };\r\n\r\n /**\r\n * select slide from number or cell element\r\n * @param {Element, Selector String, or Number} selector\r\n */\r\n proto.queryCell = function( selector ) {\r\n\tif ( typeof selector == 'number' ) {\r\n\t // use number as index\r\n\t return this.cells[ selector ];\r\n\t}\r\n\tif ( typeof selector == 'string' ) {\r\n\t // use string as selector, get element\r\n\t selector = this.element.querySelector( selector );\r\n\t}\r\n\t// get cell from element\r\n\treturn this.getCell( selector );\r\n };\r\n\r\n // -------------------------- events -------------------------- //\r\n\r\n proto.uiChange = function() {\r\n\tthis.emitEvent('uiChange');\r\n };\r\n\r\n proto.childUIPointerDown = function( event ) {\r\n\tthis.emitEvent( 'childUIPointerDown', [ event ] );\r\n };\r\n\r\n // ----- resize ----- //\r\n\r\n proto.onresize = function() {\r\n\tthis.watchCSS();\r\n\tthis.resize();\r\n };\r\n\r\n utils.debounceMethod( Flickity, 'onresize', 150 );\r\n\r\n proto.resize = function() {\r\n\tif ( !this.isActive ) {\r\n\t return;\r\n\t}\r\n\tthis.getSize();\r\n\t// wrap values\r\n\tif ( this.options.wrapAround ) {\r\n\t this.x = utils.modulo( this.x, this.slideableWidth );\r\n\t}\r\n\tthis.positionCells();\r\n\tthis._getWrapShiftCells();\r\n\tthis.setGallerySize();\r\n\tthis.emitEvent('resize');\r\n\t// update selected index for group slides, instant\r\n\t// TODO: position can be lost between groups of various numbers\r\n\tvar selectedElement = this.selectedElements && this.selectedElements[0];\r\n\tthis.selectCell( selectedElement, false, true );\r\n };\r\n\r\n // watches the :after property, activates/deactivates\r\n proto.watchCSS = function() {\r\n\tvar watchOption = this.options.watchCSS;\r\n\tif ( !watchOption ) {\r\n\t return;\r\n\t}\r\n\r\n\tvar afterContent = getComputedStyle( this.element, ':after' ).content;\r\n\t// activate if :after { content: 'flickity' }\r\n\tif ( afterContent.indexOf('flickity') != -1 ) {\r\n\t this.activate();\r\n\t} else {\r\n\t this.deactivate();\r\n\t}\r\n };\r\n\r\n // ----- keydown ----- //\r\n\r\n // go previous/next if left/right keys pressed\r\n proto.onkeydown = function( event ) {\r\n\t// only work if element is in focus\r\n\tvar isNotFocused = document.activeElement && document.activeElement != this.element;\r\n\tif ( !this.options.accessibility ||isNotFocused ) {\r\n\t return;\r\n\t}\r\n\r\n\tvar handler = Flickity.keyboardHandlers[ event.keyCode ];\r\n\tif ( handler ) {\r\n\t handler.call( this );\r\n\t}\r\n };\r\n\r\n Flickity.keyboardHandlers = {\r\n\t// left arrow\r\n\t37: function() {\r\n\t var leftMethod = this.options.rightToLeft ? 'next' : 'previous';\r\n\t this.uiChange();\r\n\t this[ leftMethod ]();\r\n\t},\r\n\t// right arrow\r\n\t39: function() {\r\n\t var rightMethod = this.options.rightToLeft ? 'previous' : 'next';\r\n\t this.uiChange();\r\n\t this[ rightMethod ]();\r\n\t},\r\n };\r\n\r\n // ----- focus ----- //\r\n\r\n proto.focus = function() {\r\n\t// TODO remove scrollTo once focus options gets more support\r\n\t// https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus#Browser_compatibility\r\n\tvar prevScrollY = window.pageYOffset;\r\n\tthis.element.focus({ preventScroll: true });\r\n\t// hack to fix scroll jump after focus, #76\r\n\tif ( window.pageYOffset != prevScrollY ) {\r\n\t window.scrollTo( window.pageXOffset, prevScrollY );\r\n\t}\r\n };\r\n\r\n // -------------------------- destroy -------------------------- //\r\n\r\n // deactivate all Flickity functionality, but keep stuff available\r\n proto.deactivate = function() {\r\n\tif ( !this.isActive ) {\r\n\t return;\r\n\t}\r\n\tthis.element.classList.remove('flickity-enabled');\r\n\tthis.element.classList.remove('flickity-rtl');\r\n\tthis.unselectSelectedSlide();\r\n\t// destroy cells\r\n\tthis.cells.forEach( function( cell ) {\r\n\t cell.destroy();\r\n\t});\r\n\tthis.element.removeChild( this.viewport );\r\n\t// move child elements back into element\r\n\tmoveElements( this.slider.children, this.element );\r\n\tif ( this.options.accessibility ) {\r\n\t this.element.removeAttribute('tabIndex');\r\n\t this.element.removeEventListener( 'keydown', this );\r\n\t}\r\n\t// set flags\r\n\tthis.isActive = false;\r\n\tthis.emitEvent('deactivate');\r\n };\r\n\r\n proto.destroy = function() {\r\n\tthis.deactivate();\r\n\twindow.removeEventListener( 'resize', this );\r\n\tthis.emitEvent('destroy');\r\n\tif ( jQuery && this.$element ) {\r\n\t jQuery.removeData( this.element, 'flickity' );\r\n\t}\r\n\tdelete this.element.flickityGUID;\r\n\tdelete instances[ this.guid ];\r\n };\r\n\r\n // -------------------------- prototype -------------------------- //\r\n\r\n utils.extend( proto, animatePrototype );\r\n\r\n // -------------------------- extras -------------------------- //\r\n\r\n /**\r\n * get Flickity instance from element\r\n * @param {Element} elem\r\n * @returns {Flickity}\r\n */\r\n Flickity.data = function( elem ) {\r\n\telem = utils.getQueryElement( elem );\r\n\tvar id = elem && elem.flickityGUID;\r\n\treturn id && instances[ id ];\r\n };\r\n\r\n utils.htmlInit( Flickity, 'flickity' );\r\n\r\n if ( jQuery && jQuery.bridget ) {\r\n\tjQuery.bridget( 'flickity', Flickity );\r\n }\r\n\r\n // set internal jQuery, for Webpack + jQuery v3, #478\r\n Flickity.setJQuery = function( jq ) {\r\n\tjQuery = jq;\r\n };\r\n\r\n Flickity.Cell = Cell;\r\n\r\n return Flickity;\r\n\r\n }));\r\n\r\n /*!\r\n * Unipointer v2.3.0\r\n * base class for doing one thing with pointer event\r\n * MIT license\r\n */\r\n\r\n /*jshint browser: true, undef: true, unused: true, strict: true */\r\n\r\n ( function( window, factory ) {\r\n\t// universal module definition\r\n\t/* jshint strict: false */ /*global define, module, require */\r\n\tif ( typeof define == 'function' && define.amd ) {\r\n\t // AMD\r\n\t define( 'unipointer/unipointer',[\r\n\t\t'ev-emitter/ev-emitter'\r\n\t ], function( EvEmitter ) {\r\n\t\treturn factory( window, EvEmitter );\r\n\t });\r\n\t} else if ( typeof module == 'object' && module.exports ) {\r\n\t // CommonJS\r\n\t module.exports = factory(\r\n\t\twindow,\r\n\t\trequire('ev-emitter')\r\n\t );\r\n\t} else {\r\n\t // browser global\r\n\t window.Unipointer = factory(\r\n\t\twindow,\r\n\t\twindow.EvEmitter\r\n\t );\r\n\t}\r\n\r\n }( window, function factory( window, EvEmitter ) {\r\n\r\n\r\n\r\n function noop() {}\r\n\r\n function Unipointer() {}\r\n\r\n // inherit EvEmitter\r\n var proto = Unipointer.prototype = Object.create( EvEmitter.prototype );\r\n\r\n proto.bindStartEvent = function( elem ) {\r\n\tthis._bindStartEvent( elem, true );\r\n };\r\n\r\n proto.unbindStartEvent = function( elem ) {\r\n\tthis._bindStartEvent( elem, false );\r\n };\r\n\r\n /**\r\n * Add or remove start event\r\n * @param {Boolean} isAdd - remove if falsey\r\n */\r\n proto._bindStartEvent = function( elem, isAdd ) {\r\n\t// munge isAdd, default to true\r\n\tisAdd = isAdd === undefined ? true : isAdd;\r\n\tvar bindMethod = isAdd ? 'addEventListener' : 'removeEventListener';\r\n\r\n\t// default to mouse events\r\n\tvar startEvent = 'mousedown';\r\n\tif ( window.PointerEvent ) {\r\n\t // Pointer Events\r\n\t startEvent = 'pointerdown';\r\n\t} else if ( 'ontouchstart' in window ) {\r\n\t // Touch Events. iOS Safari\r\n\t startEvent = 'touchstart';\r\n\t}\r\n\telem[ bindMethod ]( startEvent, this );\r\n };\r\n\r\n // trigger handler methods for events\r\n proto.handleEvent = function( event ) {\r\n\tvar method = 'on' + event.type;\r\n\tif ( this[ method ] ) {\r\n\t this[ method ]( event );\r\n\t}\r\n };\r\n\r\n // returns the touch that we're keeping track of\r\n proto.getTouch = function( touches ) {\r\n\tfor ( var i=0; i < touches.length; i++ ) {\r\n\t var touch = touches[i];\r\n\t if ( touch.identifier == this.pointerIdentifier ) {\r\n\t\treturn touch;\r\n\t }\r\n\t}\r\n };\r\n\r\n // ----- start event ----- //\r\n\r\n proto.onmousedown = function( event ) {\r\n\t// dismiss clicks from right or middle buttons\r\n\tvar button = event.button;\r\n\tif ( button && ( button !== 0 && button !== 1 ) ) {\r\n\t return;\r\n\t}\r\n\tthis._pointerDown( event, event );\r\n };\r\n\r\n proto.ontouchstart = function( event ) {\r\n\tthis._pointerDown( event, event.changedTouches[0] );\r\n };\r\n\r\n proto.onpointerdown = function( event ) {\r\n\tthis._pointerDown( event, event );\r\n };\r\n\r\n /**\r\n * pointer start\r\n * @param {Event} event\r\n * @param {Event or Touch} pointer\r\n */\r\n proto._pointerDown = function( event, pointer ) {\r\n\t// dismiss right click and other pointers\r\n\t// button = 0 is okay, 1-4 not\r\n\tif ( event.button || this.isPointerDown ) {\r\n\t return;\r\n\t}\r\n\r\n\tthis.isPointerDown = true;\r\n\t// save pointer identifier to match up touch events\r\n\tthis.pointerIdentifier = pointer.pointerId !== undefined ?\r\n\t // pointerId for pointer events, touch.indentifier for touch events\r\n\t pointer.pointerId : pointer.identifier;\r\n\r\n\tthis.pointerDown( event, pointer );\r\n };\r\n\r\n proto.pointerDown = function( event, pointer ) {\r\n\tthis._bindPostStartEvents( event );\r\n\tthis.emitEvent( 'pointerDown', [ event, pointer ] );\r\n };\r\n\r\n // hash of events to be bound after start event\r\n var postStartEvents = {\r\n\tmousedown: [ 'mousemove', 'mouseup' ],\r\n\ttouchstart: [ 'touchmove', 'touchend', 'touchcancel' ],\r\n\tpointerdown: [ 'pointermove', 'pointerup', 'pointercancel' ],\r\n };\r\n\r\n proto._bindPostStartEvents = function( event ) {\r\n\tif ( !event ) {\r\n\t return;\r\n\t}\r\n\t// get proper events to match start event\r\n\tvar events = postStartEvents[ event.type ];\r\n\t// bind events to node\r\n\tevents.forEach( function( eventName ) {\r\n\t window.addEventListener( eventName, this );\r\n\t}, this );\r\n\t// save these arguments\r\n\tthis._boundPointerEvents = events;\r\n };\r\n\r\n proto._unbindPostStartEvents = function() {\r\n\t// check for _boundEvents, in case dragEnd triggered twice (old IE8 bug)\r\n\tif ( !this._boundPointerEvents ) {\r\n\t return;\r\n\t}\r\n\tthis._boundPointerEvents.forEach( function( eventName ) {\r\n\t window.removeEventListener( eventName, this );\r\n\t}, this );\r\n\r\n\tdelete this._boundPointerEvents;\r\n };\r\n\r\n // ----- move event ----- //\r\n\r\n proto.onmousemove = function( event ) {\r\n\tthis._pointerMove( event, event );\r\n };\r\n\r\n proto.onpointermove = function( event ) {\r\n\tif ( event.pointerId == this.pointerIdentifier ) {\r\n\t this._pointerMove( event, event );\r\n\t}\r\n };\r\n\r\n proto.ontouchmove = function( event ) {\r\n\tvar touch = this.getTouch( event.changedTouches );\r\n\tif ( touch ) {\r\n\t this._pointerMove( event, touch );\r\n\t}\r\n };\r\n\r\n /**\r\n * pointer move\r\n * @param {Event} event\r\n * @param {Event or Touch} pointer\r\n * @private\r\n */\r\n proto._pointerMove = function( event, pointer ) {\r\n\tthis.pointerMove( event, pointer );\r\n };\r\n\r\n // public\r\n proto.pointerMove = function( event, pointer ) {\r\n\tthis.emitEvent( 'pointerMove', [ event, pointer ] );\r\n };\r\n\r\n // ----- end event ----- //\r\n\r\n\r\n proto.onmouseup = function( event ) {\r\n\tthis._pointerUp( event, event );\r\n };\r\n\r\n proto.onpointerup = function( event ) {\r\n\tif ( event.pointerId == this.pointerIdentifier ) {\r\n\t this._pointerUp( event, event );\r\n\t}\r\n };\r\n\r\n proto.ontouchend = function( event ) {\r\n\tvar touch = this.getTouch( event.changedTouches );\r\n\tif ( touch ) {\r\n\t this._pointerUp( event, touch );\r\n\t}\r\n };\r\n\r\n /**\r\n * pointer up\r\n * @param {Event} event\r\n * @param {Event or Touch} pointer\r\n * @private\r\n */\r\n proto._pointerUp = function( event, pointer ) {\r\n\tthis._pointerDone();\r\n\tthis.pointerUp( event, pointer );\r\n };\r\n\r\n // public\r\n proto.pointerUp = function( event, pointer ) {\r\n\tthis.emitEvent( 'pointerUp', [ event, pointer ] );\r\n };\r\n\r\n // ----- pointer done ----- //\r\n\r\n // triggered on pointer up & pointer cancel\r\n proto._pointerDone = function() {\r\n\tthis._pointerReset();\r\n\tthis._unbindPostStartEvents();\r\n\tthis.pointerDone();\r\n };\r\n\r\n proto._pointerReset = function() {\r\n\t// reset properties\r\n\tthis.isPointerDown = false;\r\n\tdelete this.pointerIdentifier;\r\n };\r\n\r\n proto.pointerDone = noop;\r\n\r\n // ----- pointer cancel ----- //\r\n\r\n proto.onpointercancel = function( event ) {\r\n\tif ( event.pointerId == this.pointerIdentifier ) {\r\n\t this._pointerCancel( event, event );\r\n\t}\r\n };\r\n\r\n proto.ontouchcancel = function( event ) {\r\n\tvar touch = this.getTouch( event.changedTouches );\r\n\tif ( touch ) {\r\n\t this._pointerCancel( event, touch );\r\n\t}\r\n };\r\n\r\n /**\r\n * pointer cancel\r\n * @param {Event} event\r\n * @param {Event or Touch} pointer\r\n * @private\r\n */\r\n proto._pointerCancel = function( event, pointer ) {\r\n\tthis._pointerDone();\r\n\tthis.pointerCancel( event, pointer );\r\n };\r\n\r\n // public\r\n proto.pointerCancel = function( event, pointer ) {\r\n\tthis.emitEvent( 'pointerCancel', [ event, pointer ] );\r\n };\r\n\r\n // ----- ----- //\r\n\r\n // utility function for getting x/y coords from event\r\n Unipointer.getPointerPoint = function( pointer ) {\r\n\treturn {\r\n\t x: pointer.pageX,\r\n\t y: pointer.pageY\r\n\t};\r\n };\r\n\r\n // ----- ----- //\r\n\r\n return Unipointer;\r\n\r\n }));\r\n\r\n /*!\r\n * Unidragger v2.3.0\r\n * Draggable base class\r\n * MIT license\r\n */\r\n\r\n /*jshint browser: true, unused: true, undef: true, strict: true */\r\n\r\n ( function( window, factory ) {\r\n\t// universal module definition\r\n\t/*jshint strict: false */ /*globals define, module, require */\r\n\r\n\tif ( typeof define == 'function' && define.amd ) {\r\n\t // AMD\r\n\t define( 'unidragger/unidragger',[\r\n\t\t'unipointer/unipointer'\r\n\t ], function( Unipointer ) {\r\n\t\treturn factory( window, Unipointer );\r\n\t });\r\n\t} else if ( typeof module == 'object' && module.exports ) {\r\n\t // CommonJS\r\n\t module.exports = factory(\r\n\t\twindow,\r\n\t\trequire('unipointer')\r\n\t );\r\n\t} else {\r\n\t // browser global\r\n\t window.Unidragger = factory(\r\n\t\twindow,\r\n\t\twindow.Unipointer\r\n\t );\r\n\t}\r\n\r\n }( window, function factory( window, Unipointer ) {\r\n\r\n\r\n\r\n // -------------------------- Unidragger -------------------------- //\r\n\r\n function Unidragger() {}\r\n\r\n // inherit Unipointer & EvEmitter\r\n var proto = Unidragger.prototype = Object.create( Unipointer.prototype );\r\n\r\n // ----- bind start ----- //\r\n\r\n proto.bindHandles = function() {\r\n\tthis._bindHandles( true );\r\n };\r\n\r\n proto.unbindHandles = function() {\r\n\tthis._bindHandles( false );\r\n };\r\n\r\n /**\r\n * Add or remove start event\r\n * @param {Boolean} isAdd\r\n */\r\n proto._bindHandles = function( isAdd ) {\r\n\t// munge isAdd, default to true\r\n\tisAdd = isAdd === undefined ? true : isAdd;\r\n\t// bind each handle\r\n\tvar bindMethod = isAdd ? 'addEventListener' : 'removeEventListener';\r\n\tvar touchAction = isAdd ? this._touchActionValue : '';\r\n\tfor ( var i=0; i < this.handles.length; i++ ) {\r\n\t var handle = this.handles[i];\r\n\t this._bindStartEvent( handle, isAdd );\r\n\t handle[ bindMethod ]( 'click', this );\r\n\t // touch-action: none to override browser touch gestures. metafizzy/flickity#540\r\n\t if ( window.PointerEvent ) {\r\n\t\thandle.style.touchAction = touchAction;\r\n\t }\r\n\t}\r\n };\r\n\r\n // prototype so it can be overwriteable by Flickity\r\n proto._touchActionValue = 'none';\r\n\r\n // ----- start event ----- //\r\n\r\n /**\r\n * pointer start\r\n * @param {Event} event\r\n * @param {Event or Touch} pointer\r\n */\r\n proto.pointerDown = function( event, pointer ) {\r\n\tvar isOkay = this.okayPointerDown( event );\r\n\tif ( !isOkay ) {\r\n\t return;\r\n\t}\r\n\t// track start event position\r\n\tthis.pointerDownPointer = pointer;\r\n\r\n\tevent.preventDefault();\r\n\tthis.pointerDownBlur();\r\n\t// bind move and end events\r\n\tthis._bindPostStartEvents( event );\r\n\tthis.emitEvent( 'pointerDown', [ event, pointer ] );\r\n };\r\n\r\n // nodes that have text fields\r\n var cursorNodes = {\r\n\tTEXTAREA: true,\r\n\tINPUT: true,\r\n\tSELECT: true,\r\n\tOPTION: true,\r\n };\r\n\r\n // input types that do not have text fields\r\n var clickTypes = {\r\n\tradio: true,\r\n\tcheckbox: true,\r\n\tbutton: true,\r\n\tsubmit: true,\r\n\timage: true,\r\n\tfile: true,\r\n };\r\n\r\n // dismiss inputs with text fields. flickity#403, flickity#404\r\n proto.okayPointerDown = function( event ) {\r\n\tvar isCursorNode = cursorNodes[ event.target.nodeName ];\r\n\tvar isClickType = clickTypes[ event.target.type ];\r\n\tvar isOkay = !isCursorNode || isClickType;\r\n\tif ( !isOkay ) {\r\n\t this._pointerReset();\r\n\t}\r\n\treturn isOkay;\r\n };\r\n\r\n // kludge to blur previously focused input\r\n proto.pointerDownBlur = function() {\r\n\tvar focused = document.activeElement;\r\n\t// do not blur body for IE10, metafizzy/flickity#117\r\n\tvar canBlur = focused && focused.blur && focused != document.body;\r\n\tif ( canBlur ) {\r\n\t focused.blur();\r\n\t}\r\n };\r\n\r\n // ----- move event ----- //\r\n\r\n /**\r\n * drag move\r\n * @param {Event} event\r\n * @param {Event or Touch} pointer\r\n */\r\n proto.pointerMove = function( event, pointer ) {\r\n\tvar moveVector = this._dragPointerMove( event, pointer );\r\n\tthis.emitEvent( 'pointerMove', [ event, pointer, moveVector ] );\r\n\tthis._dragMove( event, pointer, moveVector );\r\n };\r\n\r\n // base pointer move logic\r\n proto._dragPointerMove = function( event, pointer ) {\r\n\tvar moveVector = {\r\n\t x: pointer.pageX - this.pointerDownPointer.pageX,\r\n\t y: pointer.pageY - this.pointerDownPointer.pageY\r\n\t};\r\n\t// start drag if pointer has moved far enough to start drag\r\n\tif ( !this.isDragging && this.hasDragStarted( moveVector ) ) {\r\n\t this._dragStart( event, pointer );\r\n\t}\r\n\treturn moveVector;\r\n };\r\n\r\n // condition if pointer has moved far enough to start drag\r\n proto.hasDragStarted = function( moveVector ) {\r\n\treturn Math.abs( moveVector.x ) > 3 || Math.abs( moveVector.y ) > 3;\r\n };\r\n\r\n // ----- end event ----- //\r\n\r\n /**\r\n * pointer up\r\n * @param {Event} event\r\n * @param {Event or Touch} pointer\r\n */\r\n proto.pointerUp = function( event, pointer ) {\r\n\tthis.emitEvent( 'pointerUp', [ event, pointer ] );\r\n\tthis._dragPointerUp( event, pointer );\r\n };\r\n\r\n proto._dragPointerUp = function( event, pointer ) {\r\n\tif ( this.isDragging ) {\r\n\t this._dragEnd( event, pointer );\r\n\t} else {\r\n\t // pointer didn't move enough for drag to start\r\n\t this._staticClick( event, pointer );\r\n\t}\r\n };\r\n\r\n // -------------------------- drag -------------------------- //\r\n\r\n // dragStart\r\n proto._dragStart = function( event, pointer ) {\r\n\tthis.isDragging = true;\r\n\t// prevent clicks\r\n\tthis.isPreventingClicks = true;\r\n\tthis.dragStart( event, pointer );\r\n };\r\n\r\n proto.dragStart = function( event, pointer ) {\r\n\tthis.emitEvent( 'dragStart', [ event, pointer ] );\r\n };\r\n\r\n // dragMove\r\n proto._dragMove = function( event, pointer, moveVector ) {\r\n\t// do not drag if not dragging yet\r\n\tif ( !this.isDragging ) {\r\n\t return;\r\n\t}\r\n\r\n\tthis.dragMove( event, pointer, moveVector );\r\n };\r\n\r\n proto.dragMove = function( event, pointer, moveVector ) {\r\n\tevent.preventDefault();\r\n\tthis.emitEvent( 'dragMove', [ event, pointer, moveVector ] );\r\n };\r\n\r\n // dragEnd\r\n proto._dragEnd = function( event, pointer ) {\r\n\t// set flags\r\n\tthis.isDragging = false;\r\n\t// re-enable clicking async\r\n\tsetTimeout( function() {\r\n\t delete this.isPreventingClicks;\r\n\t}.bind( this ) );\r\n\r\n\tthis.dragEnd( event, pointer );\r\n };\r\n\r\n proto.dragEnd = function( event, pointer ) {\r\n\tthis.emitEvent( 'dragEnd', [ event, pointer ] );\r\n };\r\n\r\n // ----- onclick ----- //\r\n\r\n // handle all clicks and prevent clicks when dragging\r\n proto.onclick = function( event ) {\r\n\tif ( this.isPreventingClicks ) {\r\n\t event.preventDefault();\r\n\t}\r\n };\r\n\r\n // ----- staticClick ----- //\r\n\r\n // triggered after pointer down & up with no/tiny movement\r\n proto._staticClick = function( event, pointer ) {\r\n\t// ignore emulated mouse up clicks\r\n\tif ( this.isIgnoringMouseUp && event.type == 'mouseup' ) {\r\n\t return;\r\n\t}\r\n\r\n\tthis.staticClick( event, pointer );\r\n\r\n\t// set flag for emulated clicks 300ms after touchend\r\n\tif ( event.type != 'mouseup' ) {\r\n\t this.isIgnoringMouseUp = true;\r\n\t // reset flag after 300ms\r\n\t setTimeout( function() {\r\n\t\tdelete this.isIgnoringMouseUp;\r\n\t }.bind( this ), 400 );\r\n\t}\r\n };\r\n\r\n proto.staticClick = function( event, pointer ) {\r\n\tthis.emitEvent( 'staticClick', [ event, pointer ] );\r\n };\r\n\r\n // ----- utils ----- //\r\n\r\n Unidragger.getPointerPoint = Unipointer.getPointerPoint;\r\n\r\n // ----- ----- //\r\n\r\n return Unidragger;\r\n\r\n }));\r\n\r\n // drag\r\n ( function( window, factory ) {\r\n\t// universal module definition\r\n\t/* jshint strict: false */\r\n\tif ( typeof define == 'function' && define.amd ) {\r\n\t // AMD\r\n\t define( 'flickity/js/drag',[\r\n\t\t'./flickity',\r\n\t\t'unidragger/unidragger',\r\n\t\t'fizzy-ui-utils/utils'\r\n\t ], function( Flickity, Unidragger, utils ) {\r\n\t\treturn factory( window, Flickity, Unidragger, utils );\r\n\t });\r\n\t} else if ( typeof module == 'object' && module.exports ) {\r\n\t // CommonJS\r\n\t module.exports = factory(\r\n\t\twindow,\r\n\t\trequire('./flickity'),\r\n\t\trequire('unidragger'),\r\n\t\trequire('fizzy-ui-utils')\r\n\t );\r\n\t} else {\r\n\t // browser global\r\n\t window.Flickity = factory(\r\n\t\twindow,\r\n\t\twindow.Flickity,\r\n\t\twindow.Unidragger,\r\n\t\twindow.fizzyUIUtils\r\n\t );\r\n\t}\r\n\r\n }( window, function factory( window, Flickity, Unidragger, utils ) {\r\n\r\n\r\n\r\n // ----- defaults ----- //\r\n\r\n utils.extend( Flickity.defaults, {\r\n\tdraggable: '>1',\r\n\tdragThreshold: 3,\r\n });\r\n\r\n // ----- create ----- //\r\n\r\n Flickity.createMethods.push('_createDrag');\r\n\r\n // -------------------------- drag prototype -------------------------- //\r\n\r\n var proto = Flickity.prototype;\r\n utils.extend( proto, Unidragger.prototype );\r\n proto._touchActionValue = 'pan-y';\r\n\r\n // -------------------------- -------------------------- //\r\n\r\n var isTouch = 'createTouch' in document;\r\n var isTouchmoveScrollCanceled = false;\r\n\r\n proto._createDrag = function() {\r\n\tthis.on( 'activate', this.onActivateDrag );\r\n\tthis.on( 'uiChange', this._uiChangeDrag );\r\n\tthis.on( 'childUIPointerDown', this._childUIPointerDownDrag );\r\n\tthis.on( 'deactivate', this.onDeactivateDrag );\r\n\tthis.on( 'cellChange', this.updateDraggable );\r\n\t// TODO updateDraggable on resize? if groupCells & slides change\r\n\t// HACK - add seemingly innocuous handler to fix iOS 10 scroll behavior\r\n\t// #457, RubaXa/Sortable#973\r\n\tif ( isTouch && !isTouchmoveScrollCanceled ) {\r\n\t window.addEventListener( 'touchmove', function() {});\r\n\t isTouchmoveScrollCanceled = true;\r\n\t}\r\n };\r\n\r\n proto.onActivateDrag = function() {\r\n\tthis.handles = [ this.viewport ];\r\n\tthis.bindHandles();\r\n\tthis.updateDraggable();\r\n };\r\n\r\n proto.onDeactivateDrag = function() {\r\n\tthis.unbindHandles();\r\n\tthis.element.classList.remove('is-draggable');\r\n };\r\n\r\n proto.updateDraggable = function() {\r\n\t// disable dragging if less than 2 slides. #278\r\n\tif ( this.options.draggable == '>1' ) {\r\n\t this.isDraggable = this.slides.length > 1;\r\n\t} else {\r\n\t this.isDraggable = this.options.draggable;\r\n\t}\r\n\tif ( this.isDraggable ) {\r\n\t this.element.classList.add('is-draggable');\r\n\t} else {\r\n\t this.element.classList.remove('is-draggable');\r\n\t}\r\n };\r\n\r\n // backwards compatibility\r\n proto.bindDrag = function() {\r\n\tthis.options.draggable = true;\r\n\tthis.updateDraggable();\r\n };\r\n\r\n proto.unbindDrag = function() {\r\n\tthis.options.draggable = false;\r\n\tthis.updateDraggable();\r\n };\r\n\r\n proto._uiChangeDrag = function() {\r\n\tdelete this.isFreeScrolling;\r\n };\r\n\r\n proto._childUIPointerDownDrag = function( event ) {\r\n\t// allow focus & preventDefault even when not draggable\r\n\t// so child UI elements keep focus on carousel. #721\r\n\tevent.preventDefault();\r\n\tthis.pointerDownFocus( event );\r\n };\r\n\r\n // -------------------------- pointer events -------------------------- //\r\n\r\n proto.pointerDown = function( event, pointer ) {\r\n\tif ( !this.isDraggable ) {\r\n\t this._pointerDownDefault( event, pointer );\r\n\t return;\r\n\t}\r\n\tvar isOkay = this.okayPointerDown( event );\r\n\tif ( !isOkay ) {\r\n\t return;\r\n\t}\r\n\r\n\tthis._pointerDownPreventDefault( event );\r\n\tthis.pointerDownFocus( event );\r\n\t// blur\r\n\tif ( document.activeElement != this.element ) {\r\n\t // do not blur if already focused\r\n\t this.pointerDownBlur();\r\n\t}\r\n\r\n\t// stop if it was moving\r\n\tthis.dragX = this.x;\r\n\tthis.viewport.classList.add('is-pointer-down');\r\n\t// track scrolling\r\n\tthis.pointerDownScroll = getScrollPosition();\r\n\twindow.addEventListener( 'scroll', this );\r\n\r\n\tthis._pointerDownDefault( event, pointer );\r\n };\r\n\r\n // default pointerDown logic, used for staticClick\r\n proto._pointerDownDefault = function( event, pointer ) {\r\n\t// track start event position\r\n\tthis.pointerDownPointer = pointer;\r\n\t// bind move and end events\r\n\tthis._bindPostStartEvents( event );\r\n\tthis.dispatchEvent( 'pointerDown', event, [ pointer ] );\r\n };\r\n\r\n var focusNodes = {\r\n\tINPUT: true,\r\n\tTEXTAREA: true,\r\n\tSELECT: true,\r\n };\r\n\r\n proto.pointerDownFocus = function( event ) {\r\n\tvar isFocusNode = focusNodes[ event.target.nodeName ];\r\n\tif ( !isFocusNode ) {\r\n\t this.focus();\r\n\t}\r\n };\r\n\r\n proto._pointerDownPreventDefault = function( event ) {\r\n\tvar isTouchStart = event.type == 'touchstart';\r\n\tvar isTouchPointer = event.pointerType == 'touch';\r\n\tvar isFocusNode = focusNodes[ event.target.nodeName ];\r\n\tif ( !isTouchStart && !isTouchPointer && !isFocusNode ) {\r\n\t event.preventDefault();\r\n\t}\r\n };\r\n\r\n // ----- move ----- //\r\n\r\n proto.hasDragStarted = function( moveVector ) {\r\n\treturn Math.abs( moveVector.x ) > this.options.dragThreshold;\r\n };\r\n\r\n // ----- up ----- //\r\n\r\n proto.pointerUp = function( event, pointer ) {\r\n\tdelete this.isTouchScrolling;\r\n\tthis.viewport.classList.remove('is-pointer-down');\r\n\tthis.dispatchEvent( 'pointerUp', event, [ pointer ] );\r\n\tthis._dragPointerUp( event, pointer );\r\n };\r\n\r\n proto.pointerDone = function() {\r\n\twindow.removeEventListener( 'scroll', this );\r\n\tdelete this.pointerDownScroll;\r\n };\r\n\r\n // -------------------------- dragging -------------------------- //\r\n\r\n proto.dragStart = function( event, pointer ) {\r\n\tif ( !this.isDraggable ) {\r\n\t return;\r\n\t}\r\n\tthis.dragStartPosition = this.x;\r\n\tthis.startAnimation();\r\n\twindow.removeEventListener( 'scroll', this );\r\n\tthis.dispatchEvent( 'dragStart', event, [ pointer ] );\r\n };\r\n\r\n proto.pointerMove = function( event, pointer ) {\r\n\tvar moveVector = this._dragPointerMove( event, pointer );\r\n\tthis.dispatchEvent( 'pointerMove', event, [ pointer, moveVector ] );\r\n\tthis._dragMove( event, pointer, moveVector );\r\n };\r\n\r\n proto.dragMove = function( event, pointer, moveVector ) {\r\n\tif ( !this.isDraggable ) {\r\n\t return;\r\n\t}\r\n\tevent.preventDefault();\r\n\r\n\tthis.previousDragX = this.dragX;\r\n\t// reverse if right-to-left\r\n\tvar direction = this.options.rightToLeft ? -1 : 1;\r\n\tif ( this.options.wrapAround ) {\r\n\t // wrap around move. #589\r\n\t moveVector.x = moveVector.x % this.slideableWidth;\r\n\t}\r\n\tvar dragX = this.dragStartPosition + moveVector.x * direction;\r\n\r\n\tif ( !this.options.wrapAround && this.slides.length ) {\r\n\t // slow drag\r\n\t var originBound = Math.max( -this.slides[0].target, this.dragStartPosition );\r\n\t dragX = dragX > originBound ? ( dragX + originBound ) * 0.5 : dragX;\r\n\t var endBound = Math.min( -this.getLastSlide().target, this.dragStartPosition );\r\n\t dragX = dragX < endBound ? ( dragX + endBound ) * 0.5 : dragX;\r\n\t}\r\n\r\n\tthis.dragX = dragX;\r\n\r\n\tthis.dragMoveTime = new Date();\r\n\tthis.dispatchEvent( 'dragMove', event, [ pointer, moveVector ] );\r\n };\r\n\r\n proto.dragEnd = function( event, pointer ) {\r\n\tif ( !this.isDraggable ) {\r\n\t return;\r\n\t}\r\n\tif ( this.options.freeScroll ) {\r\n\t this.isFreeScrolling = true;\r\n\t}\r\n\t// set selectedIndex based on where flick will end up\r\n\tvar index = this.dragEndRestingSelect();\r\n\r\n\tif ( this.options.freeScroll && !this.options.wrapAround ) {\r\n\t // if free-scroll & not wrap around\r\n\t // do not free-scroll if going outside of bounding slides\r\n\t // so bounding slides can attract slider, and keep it in bounds\r\n\t var restingX = this.getRestingPosition();\r\n\t this.isFreeScrolling = -restingX > this.slides[0].target &&\r\n\t\t-restingX < this.getLastSlide().target;\r\n\t} else if ( !this.options.freeScroll && index == this.selectedIndex ) {\r\n\t // boost selection if selected index has not changed\r\n\t index += this.dragEndBoostSelect();\r\n\t}\r\n\tdelete this.previousDragX;\r\n\t// apply selection\r\n\t// TODO refactor this, selecting here feels weird\r\n\t// HACK, set flag so dragging stays in correct direction\r\n\tthis.isDragSelect = this.options.wrapAround;\r\n\tthis.select( index );\r\n\tdelete this.isDragSelect;\r\n\tthis.dispatchEvent( 'dragEnd', event, [ pointer ] );\r\n };\r\n\r\n proto.dragEndRestingSelect = function() {\r\n\tvar restingX = this.getRestingPosition();\r\n\t// how far away from selected slide\r\n\tvar distance = Math.abs( this.getSlideDistance( -restingX, this.selectedIndex ) );\r\n\t// get closet resting going up and going down\r\n\tvar positiveResting = this._getClosestResting( restingX, distance, 1 );\r\n\tvar negativeResting = this._getClosestResting( restingX, distance, -1 );\r\n\t// use closer resting for wrap-around\r\n\tvar index = positiveResting.distance < negativeResting.distance ?\r\n\t positiveResting.index : negativeResting.index;\r\n\treturn index;\r\n };\r\n\r\n /**\r\n * given resting X and distance to selected cell\r\n * get the distance and index of the closest cell\r\n * @param {Number} restingX - estimated post-flick resting position\r\n * @param {Number} distance - distance to selected cell\r\n * @param {Integer} increment - +1 or -1, going up or down\r\n * @returns {Object} - { distance: {Number}, index: {Integer} }\r\n */\r\n proto._getClosestResting = function( restingX, distance, increment ) {\r\n\tvar index = this.selectedIndex;\r\n\tvar minDistance = Infinity;\r\n\tvar condition = this.options.contain && !this.options.wrapAround ?\r\n\t // if contain, keep going if distance is equal to minDistance\r\n\t function( d, md ) { return d <= md; } : function( d, md ) { return d < md; };\r\n\twhile ( condition( distance, minDistance ) ) {\r\n\t // measure distance to next cell\r\n\t index += increment;\r\n\t minDistance = distance;\r\n\t distance = this.getSlideDistance( -restingX, index );\r\n\t if ( distance === null ) {\r\n\t\tbreak;\r\n\t }\r\n\t distance = Math.abs( distance );\r\n\t}\r\n\treturn {\r\n\t distance: minDistance,\r\n\t // selected was previous index\r\n\t index: index - increment\r\n\t};\r\n };\r\n\r\n /**\r\n * measure distance between x and a slide target\r\n * @param {Number} x\r\n * @param {Integer} index - slide index\r\n */\r\n proto.getSlideDistance = function( x, index ) {\r\n\tvar len = this.slides.length;\r\n\t// wrap around if at least 2 slides\r\n\tvar isWrapAround = this.options.wrapAround && len > 1;\r\n\tvar slideIndex = isWrapAround ? utils.modulo( index, len ) : index;\r\n\tvar slide = this.slides[ slideIndex ];\r\n\tif ( !slide ) {\r\n\t return null;\r\n\t}\r\n\t// add distance for wrap-around slides\r\n\tvar wrap = isWrapAround ? this.slideableWidth * Math.floor( index / len ) : 0;\r\n\treturn x - ( slide.target + wrap );\r\n };\r\n\r\n proto.dragEndBoostSelect = function() {\r\n\t// do not boost if no previousDragX or dragMoveTime\r\n\tif ( this.previousDragX === undefined || !this.dragMoveTime ||\r\n\t // or if drag was held for 100 ms\r\n\t new Date() - this.dragMoveTime > 100 ) {\r\n\t return 0;\r\n\t}\r\n\r\n\tvar distance = this.getSlideDistance( -this.dragX, this.selectedIndex );\r\n\tvar delta = this.previousDragX - this.dragX;\r\n\tif ( distance > 0 && delta > 0 ) {\r\n\t // boost to next if moving towards the right, and positive velocity\r\n\t return 1;\r\n\t} else if ( distance < 0 && delta < 0 ) {\r\n\t // boost to previous if moving towards the left, and negative velocity\r\n\t return -1;\r\n\t}\r\n\treturn 0;\r\n };\r\n\r\n // ----- staticClick ----- //\r\n\r\n proto.staticClick = function( event, pointer ) {\r\n\t// get clickedCell, if cell was clicked\r\n\tvar clickedCell = this.getParentCell( event.target );\r\n\tvar cellElem = clickedCell && clickedCell.element;\r\n\tvar cellIndex = clickedCell && this.cells.indexOf( clickedCell );\r\n\tthis.dispatchEvent( 'staticClick', event, [ pointer, cellElem, cellIndex ] );\r\n };\r\n\r\n // ----- scroll ----- //\r\n\r\n proto.onscroll = function() {\r\n\tvar scroll = getScrollPosition();\r\n\tvar scrollMoveX = this.pointerDownScroll.x - scroll.x;\r\n\tvar scrollMoveY = this.pointerDownScroll.y - scroll.y;\r\n\t// cancel click/tap if scroll is too much\r\n\tif ( Math.abs( scrollMoveX ) > 3 || Math.abs( scrollMoveY ) > 3 ) {\r\n\t this._pointerDone();\r\n\t}\r\n };\r\n\r\n // ----- utils ----- //\r\n\r\n function getScrollPosition() {\r\n\treturn {\r\n\t x: window.pageXOffset,\r\n\t y: window.pageYOffset\r\n\t};\r\n }\r\n\r\n // ----- ----- //\r\n\r\n return Flickity;\r\n\r\n }));\r\n\r\n /*!\r\n * Tap listener v2.0.0\r\n * listens to taps\r\n * MIT license\r\n */\r\n\r\n /*jshint browser: true, unused: true, undef: true, strict: true */\r\n\r\n ( function( window, factory ) {\r\n\t// universal module definition\r\n\t/*jshint strict: false*/ /*globals define, module, require */\r\n\r\n\tif ( typeof define == 'function' && define.amd ) {\r\n\t // AMD\r\n\t define( 'tap-listener/tap-listener',[\r\n\t\t'unipointer/unipointer'\r\n\t ], function( Unipointer ) {\r\n\t\treturn factory( window, Unipointer );\r\n\t });\r\n\t} else if ( typeof module == 'object' && module.exports ) {\r\n\t // CommonJS\r\n\t module.exports = factory(\r\n\t\twindow,\r\n\t\trequire('unipointer')\r\n\t );\r\n\t} else {\r\n\t // browser global\r\n\t window.TapListener = factory(\r\n\t\twindow,\r\n\t\twindow.Unipointer\r\n\t );\r\n\t}\r\n\r\n }( window, function factory( window, Unipointer ) {\r\n\r\n\r\n\r\n // -------------------------- TapListener -------------------------- //\r\n\r\n function TapListener( elem ) {\r\n\tthis.bindTap( elem );\r\n }\r\n\r\n // inherit Unipointer & EventEmitter\r\n var proto = TapListener.prototype = Object.create( Unipointer.prototype );\r\n\r\n /**\r\n * bind tap event to element\r\n * @param {Element} elem\r\n */\r\n proto.bindTap = function( elem ) {\r\n\tif ( !elem ) {\r\n\t return;\r\n\t}\r\n\tthis.unbindTap();\r\n\tthis.tapElement = elem;\r\n\tthis._bindStartEvent( elem, true );\r\n };\r\n\r\n proto.unbindTap = function() {\r\n\tif ( !this.tapElement ) {\r\n\t return;\r\n\t}\r\n\tthis._bindStartEvent( this.tapElement, true );\r\n\tdelete this.tapElement;\r\n };\r\n\r\n /**\r\n * pointer up\r\n * @param {Event} event\r\n * @param {Event or Touch} pointer\r\n */\r\n proto.pointerUp = function( event, pointer ) {\r\n\t// ignore emulated mouse up clicks\r\n\tif ( this.isIgnoringMouseUp && event.type == 'mouseup' ) {\r\n\t return;\r\n\t}\r\n\r\n\tvar pointerPoint = Unipointer.getPointerPoint( pointer );\r\n\tvar boundingRect = this.tapElement.getBoundingClientRect();\r\n\tvar scrollX = window.pageXOffset;\r\n\tvar scrollY = window.pageYOffset;\r\n\t// calculate if pointer is inside tapElement\r\n\tvar isInside = pointerPoint.x >= boundingRect.left + scrollX &&\r\n\t pointerPoint.x <= boundingRect.right + scrollX &&\r\n\t pointerPoint.y >= boundingRect.top + scrollY &&\r\n\t pointerPoint.y <= boundingRect.bottom + scrollY;\r\n\t// trigger callback if pointer is inside element\r\n\tif ( isInside ) {\r\n\t this.emitEvent( 'tap', [ event, pointer ] );\r\n\t}\r\n\r\n\t// set flag for emulated clicks 300ms after touchend\r\n\tif ( event.type != 'mouseup' ) {\r\n\t this.isIgnoringMouseUp = true;\r\n\t // reset flag after 300ms\r\n\t var _this = this;\r\n\t setTimeout( function() {\r\n\t\tdelete _this.isIgnoringMouseUp;\r\n\t }, 400 );\r\n\t}\r\n };\r\n\r\n proto.destroy = function() {\r\n\tthis.pointerDone();\r\n\tthis.unbindTap();\r\n };\r\n\r\n // ----- ----- //\r\n\r\n return TapListener;\r\n\r\n }));\r\n\r\n // prev/next buttons\r\n ( function( window, factory ) {\r\n\t// universal module definition\r\n\t/* jshint strict: false */\r\n\tif ( typeof define == 'function' && define.amd ) {\r\n\t // AMD\r\n\t define( 'flickity/js/prev-next-button',[\r\n\t\t'./flickity',\r\n\t\t'tap-listener/tap-listener',\r\n\t\t'fizzy-ui-utils/utils'\r\n\t ], function( Flickity, TapListener, utils ) {\r\n\t\treturn factory( window, Flickity, TapListener, utils );\r\n\t });\r\n\t} else if ( typeof module == 'object' && module.exports ) {\r\n\t // CommonJS\r\n\t module.exports = factory(\r\n\t\twindow,\r\n\t\trequire('./flickity'),\r\n\t\trequire('tap-listener'),\r\n\t\trequire('fizzy-ui-utils')\r\n\t );\r\n\t} else {\r\n\t // browser global\r\n\t factory(\r\n\t\twindow,\r\n\t\twindow.Flickity,\r\n\t\twindow.TapListener,\r\n\t\twindow.fizzyUIUtils\r\n\t );\r\n\t}\r\n\r\n }( window, function factory( window, Flickity, TapListener, utils ) {\r\n 'use strict';\r\n\r\n var svgURI = 'http://www.w3.org/2000/svg';\r\n\r\n // -------------------------- PrevNextButton -------------------------- //\r\n\r\n function PrevNextButton( direction, parent ) {\r\n\tthis.direction = direction;\r\n\tthis.parent = parent;\r\n\tthis._create();\r\n }\r\n\r\n PrevNextButton.prototype = Object.create( TapListener.prototype );\r\n\r\n PrevNextButton.prototype._create = function() {\r\n\t// properties\r\n\tthis.isEnabled = true;\r\n\tthis.isPrevious = this.direction == -1;\r\n\tvar leftDirection = this.parent.options.rightToLeft ? 1 : -1;\r\n\tthis.isLeft = this.direction == leftDirection;\r\n\r\n\tvar element = this.element = document.createElement('button');\r\n\telement.className = 'flickity-button flickity-prev-next-button';\r\n\telement.className += this.isPrevious ? ' previous' : ' next';\r\n\t// prevent button from submitting form http://stackoverflow.com/a/10836076/182183\r\n\telement.setAttribute( 'type', 'button' );\r\n\t// init as disabled\r\n\tthis.disable();\r\n\r\n\telement.setAttribute( 'aria-label', this.isPrevious ? 'Previous' : 'Next' );\r\n\r\n\t// create arrow\r\n\tvar svg = this.createSVG();\r\n\telement.appendChild( svg );\r\n\t// events\r\n\tthis.on( 'tap', this.onTap );\r\n\tthis.parent.on( 'select', this.update.bind( this ) );\r\n\tthis.on( 'pointerDown', this.parent.childUIPointerDown.bind( this.parent ) );\r\n };\r\n\r\n PrevNextButton.prototype.activate = function() {\r\n\tthis.bindTap( this.element );\r\n\t// click events from keyboard\r\n\tthis.element.addEventListener( 'click', this );\r\n\t// add to DOM\r\n\tthis.parent.element.appendChild( this.element );\r\n };\r\n\r\n PrevNextButton.prototype.deactivate = function() {\r\n\t// remove from DOM\r\n\tthis.parent.element.removeChild( this.element );\r\n\t// do regular TapListener destroy\r\n\tTapListener.prototype.destroy.call( this );\r\n\t// click events from keyboard\r\n\tthis.element.removeEventListener( 'click', this );\r\n };\r\n\r\n PrevNextButton.prototype.createSVG = function() {\r\n\tvar svg = document.createElementNS( svgURI, 'svg');\r\n\tsvg.setAttribute( 'class', 'flickity-button-icon' );\r\n\tsvg.setAttribute( 'viewBox', '0 0 100 100' );\r\n\tvar path = document.createElementNS( svgURI, 'path');\r\n\tvar pathMovements = getArrowMovements( this.parent.options.arrowShape );\r\n\tpath.setAttribute( 'd', pathMovements );\r\n\tpath.setAttribute( 'class', 'arrow' );\r\n\t// rotate arrow\r\n\tif ( !this.isLeft ) {\r\n\t path.setAttribute( 'transform', 'translate(100, 100) rotate(180) ' );\r\n\t}\r\n\tsvg.appendChild( path );\r\n\treturn svg;\r\n };\r\n\r\n // get SVG path movmement\r\n function getArrowMovements( shape ) {\r\n\t// use shape as movement if string\r\n\tif ( typeof shape == 'string' ) {\r\n\t return shape;\r\n\t}\r\n\t// create movement string\r\n\treturn 'M ' + shape.x0 + ',50' +\r\n\t ' L ' + shape.x1 + ',' + ( shape.y1 + 50 ) +\r\n\t ' L ' + shape.x2 + ',' + ( shape.y2 + 50 ) +\r\n\t ' L ' + shape.x3 + ',50 ' +\r\n\t ' L ' + shape.x2 + ',' + ( 50 - shape.y2 ) +\r\n\t ' L ' + shape.x1 + ',' + ( 50 - shape.y1 ) +\r\n\t ' Z';\r\n }\r\n\r\n PrevNextButton.prototype.onTap = function() {\r\n\tif ( !this.isEnabled ) {\r\n\t return;\r\n\t}\r\n\tthis.parent.uiChange();\r\n\tvar method = this.isPrevious ? 'previous' : 'next';\r\n\tthis.parent[ method ]();\r\n };\r\n\r\n PrevNextButton.prototype.handleEvent = utils.handleEvent;\r\n\r\n PrevNextButton.prototype.onclick = function( event ) {\r\n\t// only allow clicks from keyboard\r\n\tvar focused = document.activeElement;\r\n\tif ( focused && focused == this.element ) {\r\n\t this.onTap( event, event );\r\n\t}\r\n };\r\n\r\n // ----- ----- //\r\n\r\n PrevNextButton.prototype.enable = function() {\r\n\tif ( this.isEnabled ) {\r\n\t return;\r\n\t}\r\n\tthis.element.disabled = false;\r\n\tthis.isEnabled = true;\r\n };\r\n\r\n PrevNextButton.prototype.disable = function() {\r\n\tif ( !this.isEnabled ) {\r\n\t return;\r\n\t}\r\n\tthis.element.disabled = true;\r\n\tthis.isEnabled = false;\r\n };\r\n\r\n PrevNextButton.prototype.update = function() {\r\n\t// index of first or last slide, if previous or next\r\n\tvar slides = this.parent.slides;\r\n\t// enable is wrapAround and at least 2 slides\r\n\tif ( this.parent.options.wrapAround && slides.length > 1 ) {\r\n\t this.enable();\r\n\t return;\r\n\t}\r\n\tvar lastIndex = slides.length ? slides.length - 1 : 0;\r\n\tvar boundIndex = this.isPrevious ? 0 : lastIndex;\r\n\tvar method = this.parent.selectedIndex == boundIndex ? 'disable' : 'enable';\r\n\tthis[ method ]();\r\n };\r\n\r\n PrevNextButton.prototype.destroy = function() {\r\n\tthis.deactivate();\r\n };\r\n\r\n // -------------------------- Flickity prototype -------------------------- //\r\n\r\n utils.extend( Flickity.defaults, {\r\n\tprevNextButtons: true,\r\n\tarrowShape: {\r\n\t x0: 10,\r\n\t x1: 60, y1: 50,\r\n\t x2: 70, y2: 40,\r\n\t x3: 30\r\n\t}\r\n });\r\n\r\n Flickity.createMethods.push('_createPrevNextButtons');\r\n var proto = Flickity.prototype;\r\n\r\n proto._createPrevNextButtons = function() {\r\n\tif ( !this.options.prevNextButtons ) {\r\n\t return;\r\n\t}\r\n\r\n\tthis.prevButton = new PrevNextButton( -1, this );\r\n\tthis.nextButton = new PrevNextButton( 1, this );\r\n\r\n\tthis.on( 'activate', this.activatePrevNextButtons );\r\n };\r\n\r\n proto.activatePrevNextButtons = function() {\r\n\tthis.prevButton.activate();\r\n\tthis.nextButton.activate();\r\n\tthis.on( 'deactivate', this.deactivatePrevNextButtons );\r\n };\r\n\r\n proto.deactivatePrevNextButtons = function() {\r\n\tthis.prevButton.deactivate();\r\n\tthis.nextButton.deactivate();\r\n\tthis.off( 'deactivate', this.deactivatePrevNextButtons );\r\n };\r\n\r\n // -------------------------- -------------------------- //\r\n\r\n Flickity.PrevNextButton = PrevNextButton;\r\n\r\n return Flickity;\r\n\r\n }));\r\n\r\n // page dots\r\n ( function( window, factory ) {\r\n\t// universal module definition\r\n\t/* jshint strict: false */\r\n\tif ( typeof define == 'function' && define.amd ) {\r\n\t // AMD\r\n\t define( 'flickity/js/page-dots',[\r\n\t\t'./flickity',\r\n\t\t'tap-listener/tap-listener',\r\n\t\t'fizzy-ui-utils/utils'\r\n\t ], function( Flickity, TapListener, utils ) {\r\n\t\treturn factory( window, Flickity, TapListener, utils );\r\n\t });\r\n\t} else if ( typeof module == 'object' && module.exports ) {\r\n\t // CommonJS\r\n\t module.exports = factory(\r\n\t\twindow,\r\n\t\trequire('./flickity'),\r\n\t\trequire('tap-listener'),\r\n\t\trequire('fizzy-ui-utils')\r\n\t );\r\n\t} else {\r\n\t // browser global\r\n\t factory(\r\n\t\twindow,\r\n\t\twindow.Flickity,\r\n\t\twindow.TapListener,\r\n\t\twindow.fizzyUIUtils\r\n\t );\r\n\t}\r\n\r\n }( window, function factory( window, Flickity, TapListener, utils ) {\r\n\r\n // -------------------------- PageDots -------------------------- //\r\n\r\n\r\n\r\n function PageDots( parent ) {\r\n\tthis.parent = parent;\r\n\tthis._create();\r\n }\r\n\r\n PageDots.prototype = new TapListener();\r\n\r\n PageDots.prototype._create = function() {\r\n\t// create holder element\r\n\tthis.holder = document.createElement('ol');\r\n\tthis.holder.className = 'flickity-page-dots';\r\n\t// create dots, array of elements\r\n\tthis.dots = [];\r\n\t// events\r\n\tthis.on( 'tap', this.onTap );\r\n\tthis.on( 'pointerDown', this.parent.childUIPointerDown.bind( this.parent ) );\r\n };\r\n\r\n PageDots.prototype.activate = function() {\r\n\tthis.setDots();\r\n\tthis.bindTap( this.holder );\r\n\t// add to DOM\r\n\tthis.parent.element.appendChild( this.holder );\r\n };\r\n\r\n PageDots.prototype.deactivate = function() {\r\n\t// remove from DOM\r\n\tthis.parent.element.removeChild( this.holder );\r\n\tTapListener.prototype.destroy.call( this );\r\n };\r\n\r\n PageDots.prototype.setDots = function() {\r\n\t// get difference between number of slides and number of dots\r\n\tvar delta = this.parent.slides.length - this.dots.length;\r\n\tif ( delta > 0 ) {\r\n\t this.addDots( delta );\r\n\t} else if ( delta < 0 ) {\r\n\t this.removeDots( -delta );\r\n\t}\r\n };\r\n\r\n PageDots.prototype.addDots = function( count ) {\r\n\tvar fragment = document.createDocumentFragment();\r\n\tvar newDots = [];\r\n\tvar length = this.dots.length;\r\n\tvar max = length + count;\r\n\r\n\tfor ( var i = length; i < max; i++ ) {\r\n\t var dot = document.createElement('li');\r\n\t dot.className = 'dot';\r\n\t dot.setAttribute( 'aria-label', 'Page dot ' + ( i + 1 ) );\r\n\t fragment.appendChild( dot );\r\n\t newDots.push( dot );\r\n\t}\r\n\r\n\tthis.holder.appendChild( fragment );\r\n\tthis.dots = this.dots.concat( newDots );\r\n };\r\n\r\n PageDots.prototype.removeDots = function( count ) {\r\n\t// remove from this.dots collection\r\n\tvar removeDots = this.dots.splice( this.dots.length - count, count );\r\n\t// remove from DOM\r\n\tremoveDots.forEach( function( dot ) {\r\n\t this.holder.removeChild( dot );\r\n\t}, this );\r\n };\r\n\r\n PageDots.prototype.updateSelected = function() {\r\n\t// remove selected class on previous\r\n\tif ( this.selectedDot ) {\r\n\t this.selectedDot.className = 'dot';\r\n\t this.selectedDot.removeAttribute('aria-current');\r\n\t}\r\n\t// don't proceed if no dots\r\n\tif ( !this.dots.length ) {\r\n\t return;\r\n\t}\r\n\tthis.selectedDot = this.dots[ this.parent.selectedIndex ];\r\n\tthis.selectedDot.className = 'dot is-selected';\r\n\tthis.selectedDot.setAttribute( 'aria-current', 'step' );\r\n };\r\n\r\n PageDots.prototype.onTap = function( event ) {\r\n\tvar target = event.target;\r\n\t// only care about dot clicks\r\n\tif ( target.nodeName != 'LI' ) {\r\n\t return;\r\n\t}\r\n\r\n\tthis.parent.uiChange();\r\n\tvar index = this.dots.indexOf( target );\r\n\tthis.parent.select( index );\r\n };\r\n\r\n PageDots.prototype.destroy = function() {\r\n\tthis.deactivate();\r\n };\r\n\r\n Flickity.PageDots = PageDots;\r\n\r\n // -------------------------- Flickity -------------------------- //\r\n\r\n utils.extend( Flickity.defaults, {\r\n\tpageDots: true\r\n });\r\n\r\n Flickity.createMethods.push('_createPageDots');\r\n\r\n var proto = Flickity.prototype;\r\n\r\n proto._createPageDots = function() {\r\n\tif ( !this.options.pageDots ) {\r\n\t return;\r\n\t}\r\n\tthis.pageDots = new PageDots( this );\r\n\t// events\r\n\tthis.on( 'activate', this.activatePageDots );\r\n\tthis.on( 'select', this.updateSelectedPageDots );\r\n\tthis.on( 'cellChange', this.updatePageDots );\r\n\tthis.on( 'resize', this.updatePageDots );\r\n\tthis.on( 'deactivate', this.deactivatePageDots );\r\n };\r\n\r\n proto.activatePageDots = function() {\r\n\tthis.pageDots.activate();\r\n };\r\n\r\n proto.updateSelectedPageDots = function() {\r\n\tthis.pageDots.updateSelected();\r\n };\r\n\r\n proto.updatePageDots = function() {\r\n\tthis.pageDots.setDots();\r\n };\r\n\r\n proto.deactivatePageDots = function() {\r\n\tthis.pageDots.deactivate();\r\n };\r\n\r\n // ----- ----- //\r\n\r\n Flickity.PageDots = PageDots;\r\n\r\n return Flickity;\r\n\r\n }));\r\n\r\n // player & autoPlay\r\n ( function( window, factory ) {\r\n\t// universal module definition\r\n\t/* jshint strict: false */\r\n\tif ( typeof define == 'function' && define.amd ) {\r\n\t // AMD\r\n\t define( 'flickity/js/player',[\r\n\t\t'ev-emitter/ev-emitter',\r\n\t\t'fizzy-ui-utils/utils',\r\n\t\t'./flickity'\r\n\t ], function( EvEmitter, utils, Flickity ) {\r\n\t\treturn factory( EvEmitter, utils, Flickity );\r\n\t });\r\n\t} else if ( typeof module == 'object' && module.exports ) {\r\n\t // CommonJS\r\n\t module.exports = factory(\r\n\t\trequire('ev-emitter'),\r\n\t\trequire('fizzy-ui-utils'),\r\n\t\trequire('./flickity')\r\n\t );\r\n\t} else {\r\n\t // browser global\r\n\t factory(\r\n\t\twindow.EvEmitter,\r\n\t\twindow.fizzyUIUtils,\r\n\t\twindow.Flickity\r\n\t );\r\n\t}\r\n\r\n }( window, function factory( EvEmitter, utils, Flickity ) {\r\n\r\n\r\n\r\n // -------------------------- Player -------------------------- //\r\n\r\n function Player( parent ) {\r\n\tthis.parent = parent;\r\n\tthis.state = 'stopped';\r\n\t// visibility change event handler\r\n\tthis.onVisibilityChange = this.visibilityChange.bind( this );\r\n\tthis.onVisibilityPlay = this.visibilityPlay.bind( this );\r\n }\r\n\r\n Player.prototype = Object.create( EvEmitter.prototype );\r\n\r\n // start play\r\n Player.prototype.play = function() {\r\n\tif ( this.state == 'playing' ) {\r\n\t return;\r\n\t}\r\n\t// do not play if page is hidden, start playing when page is visible\r\n\tvar isPageHidden = document.hidden;\r\n\tif ( isPageHidden ) {\r\n\t document.addEventListener( 'visibilitychange', this.onVisibilityPlay );\r\n\t return;\r\n\t}\r\n\r\n\tthis.state = 'playing';\r\n\t// listen to visibility change\r\n\tdocument.addEventListener( 'visibilitychange', this.onVisibilityChange );\r\n\t// start ticking\r\n\tthis.tick();\r\n };\r\n\r\n Player.prototype.tick = function() {\r\n\t// do not tick if not playing\r\n\tif ( this.state != 'playing' ) {\r\n\t return;\r\n\t}\r\n\r\n\tvar time = this.parent.options.autoPlay;\r\n\t// default to 3 seconds\r\n\ttime = typeof time == 'number' ? time : 3000;\r\n\tvar _this = this;\r\n\t// HACK: reset ticks if stopped and started within interval\r\n\tthis.clear();\r\n\tthis.timeout = setTimeout( function() {\r\n\t _this.parent.next( true );\r\n\t _this.tick();\r\n\t}, time );\r\n };\r\n\r\n Player.prototype.stop = function() {\r\n\tthis.state = 'stopped';\r\n\tthis.clear();\r\n\t// remove visibility change event\r\n\tdocument.removeEventListener( 'visibilitychange', this.onVisibilityChange );\r\n };\r\n\r\n Player.prototype.clear = function() {\r\n\tclearTimeout( this.timeout );\r\n };\r\n\r\n Player.prototype.pause = function() {\r\n\tif ( this.state == 'playing' ) {\r\n\t this.state = 'paused';\r\n\t this.clear();\r\n\t}\r\n };\r\n\r\n Player.prototype.unpause = function() {\r\n\t// re-start play if paused\r\n\tif ( this.state == 'paused' ) {\r\n\t this.play();\r\n\t}\r\n };\r\n\r\n // pause if page visibility is hidden, unpause if visible\r\n Player.prototype.visibilityChange = function() {\r\n\tvar isPageHidden = document.hidden;\r\n\tthis[ isPageHidden ? 'pause' : 'unpause' ]();\r\n };\r\n\r\n Player.prototype.visibilityPlay = function() {\r\n\tthis.play();\r\n\tdocument.removeEventListener( 'visibilitychange', this.onVisibilityPlay );\r\n };\r\n\r\n // -------------------------- Flickity -------------------------- //\r\n\r\n utils.extend( Flickity.defaults, {\r\n\tpauseAutoPlayOnHover: true\r\n });\r\n\r\n Flickity.createMethods.push('_createPlayer');\r\n var proto = Flickity.prototype;\r\n\r\n proto._createPlayer = function() {\r\n\tthis.player = new Player( this );\r\n\r\n\tthis.on( 'activate', this.activatePlayer );\r\n\tthis.on( 'uiChange', this.stopPlayer );\r\n\tthis.on( 'pointerDown', this.stopPlayer );\r\n\tthis.on( 'deactivate', this.deactivatePlayer );\r\n };\r\n\r\n proto.activatePlayer = function() {\r\n\tif ( !this.options.autoPlay ) {\r\n\t return;\r\n\t}\r\n\tthis.player.play();\r\n\tthis.element.addEventListener( 'mouseenter', this );\r\n };\r\n\r\n // Player API, don't hate the ... thanks I know where the door is\r\n\r\n proto.playPlayer = function() {\r\n\tthis.player.play();\r\n };\r\n\r\n proto.stopPlayer = function() {\r\n\tthis.player.stop();\r\n };\r\n\r\n proto.pausePlayer = function() {\r\n\tthis.player.pause();\r\n };\r\n\r\n proto.unpausePlayer = function() {\r\n\tthis.player.unpause();\r\n };\r\n\r\n proto.deactivatePlayer = function() {\r\n\tthis.player.stop();\r\n\tthis.element.removeEventListener( 'mouseenter', this );\r\n };\r\n\r\n // ----- mouseenter/leave ----- //\r\n\r\n // pause auto-play on hover\r\n proto.onmouseenter = function() {\r\n\tif ( !this.options.pauseAutoPlayOnHover ) {\r\n\t return;\r\n\t}\r\n\tthis.player.pause();\r\n\tthis.element.addEventListener( 'mouseleave', this );\r\n };\r\n\r\n // resume auto-play on hover off\r\n proto.onmouseleave = function() {\r\n\tthis.player.unpause();\r\n\tthis.element.removeEventListener( 'mouseleave', this );\r\n };\r\n\r\n // ----- ----- //\r\n\r\n Flickity.Player = Player;\r\n\r\n return Flickity;\r\n\r\n }));\r\n\r\n // add, remove cell\r\n ( function( window, factory ) {\r\n\t// universal module definition\r\n\t/* jshint strict: false */\r\n\tif ( typeof define == 'function' && define.amd ) {\r\n\t // AMD\r\n\t define( 'flickity/js/add-remove-cell',[\r\n\t\t'./flickity',\r\n\t\t'fizzy-ui-utils/utils'\r\n\t ], function( Flickity, utils ) {\r\n\t\treturn factory( window, Flickity, utils );\r\n\t });\r\n\t} else if ( typeof module == 'object' && module.exports ) {\r\n\t // CommonJS\r\n\t module.exports = factory(\r\n\t\twindow,\r\n\t\trequire('./flickity'),\r\n\t\trequire('fizzy-ui-utils')\r\n\t );\r\n\t} else {\r\n\t // browser global\r\n\t factory(\r\n\t\twindow,\r\n\t\twindow.Flickity,\r\n\t\twindow.fizzyUIUtils\r\n\t );\r\n\t}\r\n\r\n }( window, function factory( window, Flickity, utils ) {\r\n\r\n\r\n\r\n // append cells to a document fragment\r\n function getCellsFragment( cells ) {\r\n\tvar fragment = document.createDocumentFragment();\r\n\tcells.forEach( function( cell ) {\r\n\t fragment.appendChild( cell.element );\r\n\t});\r\n\treturn fragment;\r\n }\r\n\r\n // -------------------------- add/remove cell prototype -------------------------- //\r\n\r\n var proto = Flickity.prototype;\r\n\r\n /**\r\n * Insert, prepend, or append cells\r\n * @param {Element, Array, NodeList} elems\r\n * @param {Integer} index\r\n */\r\n proto.insert = function( elems, index ) {\r\n\tvar cells = this._makeCells( elems );\r\n\tif ( !cells || !cells.length ) {\r\n\t return;\r\n\t}\r\n\tvar len = this.cells.length;\r\n\t// default to append\r\n\tindex = index === undefined ? len : index;\r\n\t// add cells with document fragment\r\n\tvar fragment = getCellsFragment( cells );\r\n\t// append to slider\r\n\tvar isAppend = index == len;\r\n\tif ( isAppend ) {\r\n\t this.slider.appendChild( fragment );\r\n\t} else {\r\n\t var insertCellElement = this.cells[ index ].element;\r\n\t this.slider.insertBefore( fragment, insertCellElement );\r\n\t}\r\n\t// add to this.cells\r\n\tif ( index === 0 ) {\r\n\t // prepend, add to start\r\n\t this.cells = cells.concat( this.cells );\r\n\t} else if ( isAppend ) {\r\n\t // append, add to end\r\n\t this.cells = this.cells.concat( cells );\r\n\t} else {\r\n\t // insert in this.cells\r\n\t var endCells = this.cells.splice( index, len - index );\r\n\t this.cells = this.cells.concat( cells ).concat( endCells );\r\n\t}\r\n\r\n\tthis._sizeCells( cells );\r\n\tthis.cellChange( index, true );\r\n };\r\n\r\n proto.append = function( elems ) {\r\n\tthis.insert( elems, this.cells.length );\r\n };\r\n\r\n proto.prepend = function( elems ) {\r\n\tthis.insert( elems, 0 );\r\n };\r\n\r\n /**\r\n * Remove cells\r\n * @param {Element, Array, NodeList} elems\r\n */\r\n proto.remove = function( elems ) {\r\n\tvar cells = this.getCells( elems );\r\n\tif ( !cells || !cells.length ) {\r\n\t return;\r\n\t}\r\n\r\n\tvar minCellIndex = this.cells.length - 1;\r\n\t// remove cells from collection & DOM\r\n\tcells.forEach( function( cell ) {\r\n\t cell.remove();\r\n\t var index = this.cells.indexOf( cell );\r\n\t minCellIndex = Math.min( index, minCellIndex );\r\n\t utils.removeFrom( this.cells, cell );\r\n\t}, this );\r\n\r\n\tthis.cellChange( minCellIndex, true );\r\n };\r\n\r\n /**\r\n * logic to be run after a cell's size changes\r\n * @param {Element} elem - cell's element\r\n */\r\n proto.cellSizeChange = function( elem ) {\r\n\tvar cell = this.getCell( elem );\r\n\tif ( !cell ) {\r\n\t return;\r\n\t}\r\n\tcell.getSize();\r\n\r\n\tvar index = this.cells.indexOf( cell );\r\n\tthis.cellChange( index );\r\n };\r\n\r\n /**\r\n * logic any time a cell is changed: added, removed, or size changed\r\n * @param {Integer} changedCellIndex - index of the changed cell, optional\r\n */\r\n proto.cellChange = function( changedCellIndex, isPositioningSlider ) {\r\n\tvar prevSelectedElem = this.selectedElement;\r\n\tthis._positionCells( changedCellIndex );\r\n\tthis._getWrapShiftCells();\r\n\tthis.setGallerySize();\r\n\t// update selectedIndex\r\n\t// try to maintain position & select previous selected element\r\n\tvar cell = this.getCell( prevSelectedElem );\r\n\tif ( cell ) {\r\n\t this.selectedIndex = this.getCellSlideIndex( cell );\r\n\t}\r\n\tthis.selectedIndex = Math.min( this.slides.length - 1, this.selectedIndex );\r\n\r\n\tthis.emitEvent( 'cellChange', [ changedCellIndex ] );\r\n\t// position slider\r\n\tthis.select( this.selectedIndex );\r\n\t// do not position slider after lazy load\r\n\tif ( isPositioningSlider ) {\r\n\t this.positionSliderAtSelected();\r\n\t}\r\n };\r\n\r\n // ----- ----- //\r\n\r\n return Flickity;\r\n\r\n }));\r\n\r\n // lazyload\r\n ( function( window, factory ) {\r\n\t// universal module definition\r\n\t/* jshint strict: false */\r\n\tif ( typeof define == 'function' && define.amd ) {\r\n\t // AMD\r\n\t define( 'flickity/js/lazyload',[\r\n\t\t'./flickity',\r\n\t\t'fizzy-ui-utils/utils'\r\n\t ], function( Flickity, utils ) {\r\n\t\treturn factory( window, Flickity, utils );\r\n\t });\r\n\t} else if ( typeof module == 'object' && module.exports ) {\r\n\t // CommonJS\r\n\t module.exports = factory(\r\n\t\twindow,\r\n\t\trequire('./flickity'),\r\n\t\trequire('fizzy-ui-utils')\r\n\t );\r\n\t} else {\r\n\t // browser global\r\n\t factory(\r\n\t\twindow,\r\n\t\twindow.Flickity,\r\n\t\twindow.fizzyUIUtils\r\n\t );\r\n\t}\r\n\r\n }( window, function factory( window, Flickity, utils ) {\r\n 'use strict';\r\n\r\n Flickity.createMethods.push('_createLazyload');\r\n var proto = Flickity.prototype;\r\n\r\n proto._createLazyload = function() {\r\n\tthis.on( 'select', this.lazyLoad );\r\n };\r\n\r\n proto.lazyLoad = function() {\r\n\tvar lazyLoad = this.options.lazyLoad;\r\n\tif ( !lazyLoad ) {\r\n\t return;\r\n\t}\r\n\t// get adjacent cells, use lazyLoad option for adjacent count\r\n\tvar adjCount = typeof lazyLoad == 'number' ? lazyLoad : 0;\r\n\tvar cellElems = this.getAdjacentCellElements( adjCount );\r\n\t// get lazy images in those cells\r\n\tvar lazyImages = [];\r\n\tcellElems.forEach( function( cellElem ) {\r\n\t var lazyCellImages = getCellLazyImages( cellElem );\r\n\t lazyImages = lazyImages.concat( lazyCellImages );\r\n\t});\r\n\t// load lazy images\r\n\tlazyImages.forEach( function( img ) {\r\n\t new LazyLoader( img, this );\r\n\t}, this );\r\n };\r\n\r\n function getCellLazyImages( cellElem ) {\r\n\t// check if cell element is lazy image\r\n\tif ( cellElem.nodeName == 'IMG' ) {\r\n\t var lazyloadAttr = cellElem.getAttribute('data-flickity-lazyload');\r\n\t var srcAttr = cellElem.getAttribute('data-flickity-lazyload-src');\r\n\t var srcsetAttr = cellElem.getAttribute('data-flickity-lazyload-srcset');\r\n\t if ( lazyloadAttr || srcAttr || srcsetAttr ) {\r\n\t\treturn [ cellElem ];\r\n\t }\r\n\t}\r\n\t// select lazy images in cell\r\n\tvar lazySelector = 'img[data-flickity-lazyload], ' +\r\n\t 'img[data-flickity-lazyload-src], img[data-flickity-lazyload-srcset]';\r\n\tvar imgs = cellElem.querySelectorAll( lazySelector );\r\n\treturn utils.makeArray( imgs );\r\n }\r\n\r\n // -------------------------- LazyLoader -------------------------- //\r\n\r\n /**\r\n * class to handle loading images\r\n */\r\n function LazyLoader( img, flickity ) {\r\n\tthis.img = img;\r\n\tthis.flickity = flickity;\r\n\tthis.load();\r\n }\r\n\r\n LazyLoader.prototype.handleEvent = utils.handleEvent;\r\n\r\n LazyLoader.prototype.load = function() {\r\n\tthis.img.addEventListener( 'load', this );\r\n\tthis.img.addEventListener( 'error', this );\r\n\t// get src & srcset\r\n\tvar src = this.img.getAttribute('data-flickity-lazyload') ||\r\n\t this.img.getAttribute('data-flickity-lazyload-src');\r\n\tvar srcset = this.img.getAttribute('data-flickity-lazyload-srcset');\r\n\t// set src & serset\r\n\tthis.img.src = src;\r\n\tif ( srcset ) {\r\n\t this.img.setAttribute( 'srcset', srcset );\r\n\t}\r\n\t// remove attr\r\n\tthis.img.removeAttribute('data-flickity-lazyload');\r\n\tthis.img.removeAttribute('data-flickity-lazyload-src');\r\n\tthis.img.removeAttribute('data-flickity-lazyload-srcset');\r\n };\r\n\r\n LazyLoader.prototype.onload = function( event ) {\r\n\tthis.complete( event, 'flickity-lazyloaded' );\r\n };\r\n\r\n LazyLoader.prototype.onerror = function( event ) {\r\n\tthis.complete( event, 'flickity-lazyerror' );\r\n };\r\n\r\n LazyLoader.prototype.complete = function( event, className ) {\r\n\t// unbind events\r\n\tthis.img.removeEventListener( 'load', this );\r\n\tthis.img.removeEventListener( 'error', this );\r\n\r\n\tvar cell = this.flickity.getParentCell( this.img );\r\n\tvar cellElem = cell && cell.element;\r\n\tthis.flickity.cellSizeChange( cellElem );\r\n\r\n\tthis.img.classList.add( className );\r\n\tthis.flickity.dispatchEvent( 'lazyLoad', event, cellElem );\r\n };\r\n\r\n // ----- ----- //\r\n\r\n Flickity.LazyLoader = LazyLoader;\r\n\r\n return Flickity;\r\n\r\n }));\r\n\r\n /*!\r\n * Flickity v2.1.2\r\n * Touch, responsive, flickable carousels\r\n *\r\n * Licensed GPLv3 for open source use\r\n * or Flickity Commercial License for commercial use\r\n *\r\n * https://flickity.metafizzy.co\r\n * Copyright 2015-2018 Metafizzy\r\n */\r\n\r\n ( function( window, factory ) {\r\n\t// universal module definition\r\n\t/* jshint strict: false */\r\n\tif ( typeof define == 'function' && define.amd ) {\r\n\t // AMD\r\n\t define( 'flickity/js/index',[\r\n\t\t'./flickity',\r\n\t\t'./drag',\r\n\t\t'./prev-next-button',\r\n\t\t'./page-dots',\r\n\t\t'./player',\r\n\t\t'./add-remove-cell',\r\n\t\t'./lazyload'\r\n\t ], factory );\r\n\t} else if ( typeof module == 'object' && module.exports ) {\r\n\t // CommonJS\r\n\t module.exports = factory(\r\n\t\trequire('./flickity'),\r\n\t\trequire('./drag'),\r\n\t\trequire('./prev-next-button'),\r\n\t\trequire('./page-dots'),\r\n\t\trequire('./player'),\r\n\t\trequire('./add-remove-cell'),\r\n\t\trequire('./lazyload')\r\n\t );\r\n\t}\r\n\r\n })( window, function factory( Flickity ) {\r\n\t/*jshint strict: false*/\r\n\treturn Flickity;\r\n });\r\n\r\n /*!\r\n * Flickity asNavFor v2.0.1\r\n * enable asNavFor for Flickity\r\n */\r\n\r\n /*jshint browser: true, undef: true, unused: true, strict: true*/\r\n\r\n ( function( window, factory ) {\r\n\t// universal module definition\r\n\t/*jshint strict: false */ /*globals define, module, require */\r\n\tif ( typeof define == 'function' && define.amd ) {\r\n\t // AMD\r\n\t define( 'flickity-as-nav-for/as-nav-for',[\r\n\t\t'flickity/js/index',\r\n\t\t'fizzy-ui-utils/utils'\r\n\t ], factory );\r\n\t} else if ( typeof module == 'object' && module.exports ) {\r\n\t // CommonJS\r\n\t module.exports = factory(\r\n\t\trequire('flickity'),\r\n\t\trequire('fizzy-ui-utils')\r\n\t );\r\n\t} else {\r\n\t // browser global\r\n\t window.Flickity = factory(\r\n\t\twindow.Flickity,\r\n\t\twindow.fizzyUIUtils\r\n\t );\r\n\t}\r\n\r\n }( window, function factory( Flickity, utils ) {\r\n\r\n\r\n\r\n // -------------------------- asNavFor prototype -------------------------- //\r\n\r\n // Flickity.defaults.asNavFor = null;\r\n\r\n Flickity.createMethods.push('_createAsNavFor');\r\n\r\n var proto = Flickity.prototype;\r\n\r\n proto._createAsNavFor = function() {\r\n\tthis.on( 'activate', this.activateAsNavFor );\r\n\tthis.on( 'deactivate', this.deactivateAsNavFor );\r\n\tthis.on( 'destroy', this.destroyAsNavFor );\r\n\r\n\tvar asNavForOption = this.options.asNavFor;\r\n\tif ( !asNavForOption ) {\r\n\t return;\r\n\t}\r\n\t// HACK do async, give time for other flickity to be initalized\r\n\tvar _this = this;\r\n\tsetTimeout( function initNavCompanion() {\r\n\t _this.setNavCompanion( asNavForOption );\r\n\t});\r\n };\r\n\r\n proto.setNavCompanion = function( elem ) {\r\n\telem = utils.getQueryElement( elem );\r\n\tvar companion = Flickity.data( elem );\r\n\t// stop if no companion or companion is self\r\n\tif ( !companion || companion == this ) {\r\n\t return;\r\n\t}\r\n\r\n\tthis.navCompanion = companion;\r\n\t// companion select\r\n\tvar _this = this;\r\n\tthis.onNavCompanionSelect = function() {\r\n\t _this.navCompanionSelect();\r\n\t};\r\n\tcompanion.on( 'select', this.onNavCompanionSelect );\r\n\t// click\r\n\tthis.on( 'staticClick', this.onNavStaticClick );\r\n\r\n\tthis.navCompanionSelect( true );\r\n };\r\n\r\n proto.navCompanionSelect = function( isInstant ) {\r\n\tif ( !this.navCompanion ) {\r\n\t return;\r\n\t}\r\n\t// select slide that matches first cell of slide\r\n\tvar selectedCell = this.navCompanion.selectedCells[0];\r\n\tvar firstIndex = this.navCompanion.cells.indexOf( selectedCell );\r\n\tvar lastIndex = firstIndex + this.navCompanion.selectedCells.length - 1;\r\n\tvar selectIndex = Math.floor( lerp( firstIndex, lastIndex,\r\n\t this.navCompanion.cellAlign ) );\r\n\tthis.selectCell( selectIndex, false, isInstant );\r\n\t// set nav selected class\r\n\tthis.removeNavSelectedElements();\r\n\t// stop if companion has more cells than this one\r\n\tif ( selectIndex >= this.cells.length ) {\r\n\t return;\r\n\t}\r\n\r\n\tvar selectedCells = this.cells.slice( firstIndex, lastIndex + 1 );\r\n\tthis.navSelectedElements = selectedCells.map( function( cell ) {\r\n\t return cell.element;\r\n\t});\r\n\tthis.changeNavSelectedClass('add');\r\n };\r\n\r\n function lerp( a, b, t ) {\r\n\treturn ( b - a ) * t + a;\r\n }\r\n\r\n proto.changeNavSelectedClass = function( method ) {\r\n\tthis.navSelectedElements.forEach( function( navElem ) {\r\n\t navElem.classList[ method ]('is-nav-selected');\r\n\t});\r\n };\r\n\r\n proto.activateAsNavFor = function() {\r\n\tthis.navCompanionSelect( true );\r\n };\r\n\r\n proto.removeNavSelectedElements = function() {\r\n\tif ( !this.navSelectedElements ) {\r\n\t return;\r\n\t}\r\n\tthis.changeNavSelectedClass('remove');\r\n\tdelete this.navSelectedElements;\r\n };\r\n\r\n proto.onNavStaticClick = function( event, pointer, cellElement, cellIndex ) {\r\n\tif ( typeof cellIndex == 'number' ) {\r\n\t this.navCompanion.selectCell( cellIndex );\r\n\t}\r\n };\r\n\r\n proto.deactivateAsNavFor = function() {\r\n\tthis.removeNavSelectedElements();\r\n };\r\n\r\n proto.destroyAsNavFor = function() {\r\n\tif ( !this.navCompanion ) {\r\n\t return;\r\n\t}\r\n\tthis.navCompanion.off( 'select', this.onNavCompanionSelect );\r\n\tthis.off( 'staticClick', this.onNavStaticClick );\r\n\tdelete this.navCompanion;\r\n };\r\n\r\n // ----- ----- //\r\n\r\n return Flickity;\r\n\r\n }));\r\n\r\n /*!\r\n * imagesLoaded v4.1.4\r\n * JavaScript is all like \"You images are done yet or what?\"\r\n * MIT License\r\n */\r\n\r\n ( function( window, factory ) { 'use strict';\r\n\t// universal module definition\r\n\r\n\t/*global define: false, module: false, require: false */\r\n\r\n\tif ( typeof define == 'function' && define.amd ) {\r\n\t // AMD\r\n\t define( 'imagesloaded/imagesloaded',[\r\n\t\t'ev-emitter/ev-emitter'\r\n\t ], function( EvEmitter ) {\r\n\t\treturn factory( window, EvEmitter );\r\n\t });\r\n\t} else if ( typeof module == 'object' && module.exports ) {\r\n\t // CommonJS\r\n\t module.exports = factory(\r\n\t\twindow,\r\n\t\trequire('ev-emitter')\r\n\t );\r\n\t} else {\r\n\t // browser global\r\n\t window.imagesLoaded = factory(\r\n\t\twindow,\r\n\t\twindow.EvEmitter\r\n\t );\r\n\t}\r\n\r\n })( typeof window !== 'undefined' ? window : this,\r\n\r\n // -------------------------- factory -------------------------- //\r\n\r\n function factory( window, EvEmitter ) {\r\n\r\n\r\n\r\n var $ = window.jQuery;\r\n var console = window.console;\r\n\r\n // -------------------------- helpers -------------------------- //\r\n\r\n // extend objects\r\n function extend( a, b ) {\r\n\tfor ( var prop in b ) {\r\n\t a[ prop ] = b[ prop ];\r\n\t}\r\n\treturn a;\r\n }\r\n\r\n var arraySlice = Array.prototype.slice;\r\n\r\n // turn element or nodeList into an array\r\n function makeArray( obj ) {\r\n\tif ( Array.isArray( obj ) ) {\r\n\t // use object if already an array\r\n\t return obj;\r\n\t}\r\n\r\n\tvar isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';\r\n\tif ( isArrayLike ) {\r\n\t // convert nodeList to array\r\n\t return arraySlice.call( obj );\r\n\t}\r\n\r\n\t// array of single index\r\n\treturn [ obj ];\r\n }\r\n\r\n // -------------------------- imagesLoaded -------------------------- //\r\n\r\n /**\r\n * @param {Array, Element, NodeList, String} elem\r\n * @param {Object or Function} options - if function, use as callback\r\n * @param {Function} onAlways - callback function\r\n */\r\n function ImagesLoaded( elem, options, onAlways ) {\r\n\t// coerce ImagesLoaded() without new, to be new ImagesLoaded()\r\n\tif ( !( this instanceof ImagesLoaded ) ) {\r\n\t return new ImagesLoaded( elem, options, onAlways );\r\n\t}\r\n\t// use elem as selector string\r\n\tvar queryElem = elem;\r\n\tif ( typeof elem == 'string' ) {\r\n\t queryElem = document.querySelectorAll( elem );\r\n\t}\r\n\t// bail if bad element\r\n\tif ( !queryElem ) {\r\n\t console.error( 'Bad element for imagesLoaded ' + ( queryElem || elem ) );\r\n\t return;\r\n\t}\r\n\r\n\tthis.elements = makeArray( queryElem );\r\n\tthis.options = extend( {}, this.options );\r\n\t// shift arguments if no options set\r\n\tif ( typeof options == 'function' ) {\r\n\t onAlways = options;\r\n\t} else {\r\n\t extend( this.options, options );\r\n\t}\r\n\r\n\tif ( onAlways ) {\r\n\t this.on( 'always', onAlways );\r\n\t}\r\n\r\n\tthis.getImages();\r\n\r\n\tif ( $ ) {\r\n\t // add jQuery Deferred object\r\n\t this.jqDeferred = new $.Deferred();\r\n\t}\r\n\r\n\t// HACK check async to allow time to bind listeners\r\n\tsetTimeout( this.check.bind( this ) );\r\n }\r\n\r\n ImagesLoaded.prototype = Object.create( EvEmitter.prototype );\r\n\r\n ImagesLoaded.prototype.options = {};\r\n\r\n ImagesLoaded.prototype.getImages = function() {\r\n\tthis.images = [];\r\n\r\n\t// filter & find items if we have an item selector\r\n\tthis.elements.forEach( this.addElementImages, this );\r\n };\r\n\r\n /**\r\n * @param {Node} element\r\n */\r\n ImagesLoaded.prototype.addElementImages = function( elem ) {\r\n\t// filter siblings\r\n\tif ( elem.nodeName == 'IMG' ) {\r\n\t this.addImage( elem );\r\n\t}\r\n\t// get background image on element\r\n\tif ( this.options.background === true ) {\r\n\t this.addElementBackgroundImages( elem );\r\n\t}\r\n\r\n\t// find children\r\n\t// no non-element nodes, #143\r\n\tvar nodeType = elem.nodeType;\r\n\tif ( !nodeType || !elementNodeTypes[ nodeType ] ) {\r\n\t return;\r\n\t}\r\n\tvar childImgs = elem.querySelectorAll('img');\r\n\t// concat childElems to filterFound array\r\n\tfor ( var i=0; i < childImgs.length; i++ ) {\r\n\t var img = childImgs[i];\r\n\t this.addImage( img );\r\n\t}\r\n\r\n\t// get child background images\r\n\tif ( typeof this.options.background == 'string' ) {\r\n\t var children = elem.querySelectorAll( this.options.background );\r\n\t for ( i=0; i < children.length; i++ ) {\r\n\t\tvar child = children[i];\r\n\t\tthis.addElementBackgroundImages( child );\r\n\t }\r\n\t}\r\n };\r\n\r\n var elementNodeTypes = {\r\n\t1: true,\r\n\t9: true,\r\n\t11: true\r\n };\r\n\r\n ImagesLoaded.prototype.addElementBackgroundImages = function( elem ) {\r\n\tvar style = getComputedStyle( elem );\r\n\tif ( !style ) {\r\n\t // Firefox returns null if in a hidden iframe https://bugzil.la/548397\r\n\t return;\r\n\t}\r\n\t// get url inside url(\"...\")\r\n\tvar reURL = /url\\((['\"])?(.*?)\\1\\)/gi;\r\n\tvar matches = reURL.exec( style.backgroundImage );\r\n\twhile ( matches !== null ) {\r\n\t var url = matches && matches[2];\r\n\t if ( url ) {\r\n\t\tthis.addBackground( url, elem );\r\n\t }\r\n\t matches = reURL.exec( style.backgroundImage );\r\n\t}\r\n };\r\n\r\n /**\r\n * @param {Image} img\r\n */\r\n ImagesLoaded.prototype.addImage = function( img ) {\r\n\tvar loadingImage = new LoadingImage( img );\r\n\tthis.images.push( loadingImage );\r\n };\r\n\r\n ImagesLoaded.prototype.addBackground = function( url, elem ) {\r\n\tvar background = new Background( url, elem );\r\n\tthis.images.push( background );\r\n };\r\n\r\n ImagesLoaded.prototype.check = function() {\r\n\tvar _this = this;\r\n\tthis.progressedCount = 0;\r\n\tthis.hasAnyBroken = false;\r\n\t// complete if no images\r\n\tif ( !this.images.length ) {\r\n\t this.complete();\r\n\t return;\r\n\t}\r\n\r\n\tfunction onProgress( image, elem, message ) {\r\n\t // HACK - Chrome triggers event before object properties have changed. #83\r\n\t setTimeout( function() {\r\n\t\t_this.progress( image, elem, message );\r\n\t });\r\n\t}\r\n\r\n\tthis.images.forEach( function( loadingImage ) {\r\n\t loadingImage.once( 'progress', onProgress );\r\n\t loadingImage.check();\r\n\t});\r\n };\r\n\r\n ImagesLoaded.prototype.progress = function( image, elem, message ) {\r\n\tthis.progressedCount++;\r\n\tthis.hasAnyBroken = this.hasAnyBroken || !image.isLoaded;\r\n\t// progress event\r\n\tthis.emitEvent( 'progress', [ this, image, elem ] );\r\n\tif ( this.jqDeferred && this.jqDeferred.notify ) {\r\n\t this.jqDeferred.notify( this, image );\r\n\t}\r\n\t// check if completed\r\n\tif ( this.progressedCount == this.images.length ) {\r\n\t this.complete();\r\n\t}\r\n\r\n\tif ( this.options.debug && console ) {\r\n\t console.log( 'progress: ' + message, image, elem );\r\n\t}\r\n };\r\n\r\n ImagesLoaded.prototype.complete = function() {\r\n\tvar eventName = this.hasAnyBroken ? 'fail' : 'done';\r\n\tthis.isComplete = true;\r\n\tthis.emitEvent( eventName, [ this ] );\r\n\tthis.emitEvent( 'always', [ this ] );\r\n\tif ( this.jqDeferred ) {\r\n\t var jqMethod = this.hasAnyBroken ? 'reject' : 'resolve';\r\n\t this.jqDeferred[ jqMethod ]( this );\r\n\t}\r\n };\r\n\r\n // -------------------------- -------------------------- //\r\n\r\n function LoadingImage( img ) {\r\n\tthis.img = img;\r\n }\r\n\r\n LoadingImage.prototype = Object.create( EvEmitter.prototype );\r\n\r\n LoadingImage.prototype.check = function() {\r\n\t// If complete is true and browser supports natural sizes,\r\n\t// try to check for image status manually.\r\n\tvar isComplete = this.getIsImageComplete();\r\n\tif ( isComplete ) {\r\n\t // report based on naturalWidth\r\n\t this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' );\r\n\t return;\r\n\t}\r\n\r\n\t// If none of the checks above matched, simulate loading on detached element.\r\n\tthis.proxyImage = new Image();\r\n\tthis.proxyImage.addEventListener( 'load', this );\r\n\tthis.proxyImage.addEventListener( 'error', this );\r\n\t// bind to image as well for Firefox. #191\r\n\tthis.img.addEventListener( 'load', this );\r\n\tthis.img.addEventListener( 'error', this );\r\n\tthis.proxyImage.src = this.img.src;\r\n };\r\n\r\n LoadingImage.prototype.getIsImageComplete = function() {\r\n\t// check for non-zero, non-undefined naturalWidth\r\n\t// fixes Safari+InfiniteScroll+Masonry bug infinite-scroll#671\r\n\treturn this.img.complete && this.img.naturalWidth;\r\n };\r\n\r\n LoadingImage.prototype.confirm = function( isLoaded, message ) {\r\n\tthis.isLoaded = isLoaded;\r\n\tthis.emitEvent( 'progress', [ this, this.img, message ] );\r\n };\r\n\r\n // ----- events ----- //\r\n\r\n // trigger specified handler for event type\r\n LoadingImage.prototype.handleEvent = function( event ) {\r\n\tvar method = 'on' + event.type;\r\n\tif ( this[ method ] ) {\r\n\t this[ method ]( event );\r\n\t}\r\n };\r\n\r\n LoadingImage.prototype.onload = function() {\r\n\tthis.confirm( true, 'onload' );\r\n\tthis.unbindEvents();\r\n };\r\n\r\n LoadingImage.prototype.onerror = function() {\r\n\tthis.confirm( false, 'onerror' );\r\n\tthis.unbindEvents();\r\n };\r\n\r\n LoadingImage.prototype.unbindEvents = function() {\r\n\tthis.proxyImage.removeEventListener( 'load', this );\r\n\tthis.proxyImage.removeEventListener( 'error', this );\r\n\tthis.img.removeEventListener( 'load', this );\r\n\tthis.img.removeEventListener( 'error', this );\r\n };\r\n\r\n // -------------------------- Background -------------------------- //\r\n\r\n function Background( url, element ) {\r\n\tthis.url = url;\r\n\tthis.element = element;\r\n\tthis.img = new Image();\r\n }\r\n\r\n // inherit LoadingImage prototype\r\n Background.prototype = Object.create( LoadingImage.prototype );\r\n\r\n Background.prototype.check = function() {\r\n\tthis.img.addEventListener( 'load', this );\r\n\tthis.img.addEventListener( 'error', this );\r\n\tthis.img.src = this.url;\r\n\t// check if image is already complete\r\n\tvar isComplete = this.getIsImageComplete();\r\n\tif ( isComplete ) {\r\n\t this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' );\r\n\t this.unbindEvents();\r\n\t}\r\n };\r\n\r\n Background.prototype.unbindEvents = function() {\r\n\tthis.img.removeEventListener( 'load', this );\r\n\tthis.img.removeEventListener( 'error', this );\r\n };\r\n\r\n Background.prototype.confirm = function( isLoaded, message ) {\r\n\tthis.isLoaded = isLoaded;\r\n\tthis.emitEvent( 'progress', [ this, this.element, message ] );\r\n };\r\n\r\n // -------------------------- jQuery -------------------------- //\r\n\r\n ImagesLoaded.makeJQueryPlugin = function( jQuery ) {\r\n\tjQuery = jQuery || window.jQuery;\r\n\tif ( !jQuery ) {\r\n\t return;\r\n\t}\r\n\t// set local variable\r\n\t$ = jQuery;\r\n\t// $().imagesLoaded()\r\n\t$.fn.imagesLoaded = function( options, callback ) {\r\n\t var instance = new ImagesLoaded( this, options, callback );\r\n\t return instance.jqDeferred.promise( $(this) );\r\n\t};\r\n };\r\n // try making plugin\r\n ImagesLoaded.makeJQueryPlugin();\r\n\r\n // -------------------------- -------------------------- //\r\n\r\n return ImagesLoaded;\r\n\r\n });\r\n\r\n /*!\r\n * Flickity imagesLoaded v2.0.0\r\n * enables imagesLoaded option for Flickity\r\n */\r\n\r\n /*jshint browser: true, strict: true, undef: true, unused: true */\r\n\r\n ( function( window, factory ) {\r\n\t// universal module definition\r\n\t/*jshint strict: false */ /*globals define, module, require */\r\n\tif ( typeof define == 'function' && define.amd ) {\r\n\t // AMD\r\n\t define( [\r\n\t\t'flickity/js/index',\r\n\t\t'imagesloaded/imagesloaded'\r\n\t ], function( Flickity, imagesLoaded ) {\r\n\t\treturn factory( window, Flickity, imagesLoaded );\r\n\t });\r\n\t} else if ( typeof module == 'object' && module.exports ) {\r\n\t // CommonJS\r\n\t module.exports = factory(\r\n\t\twindow,\r\n\t\trequire('flickity'),\r\n\t\trequire('imagesloaded')\r\n\t );\r\n\t} else {\r\n\t // browser global\r\n\t window.Flickity = factory(\r\n\t\twindow,\r\n\t\twindow.Flickity,\r\n\t\twindow.imagesLoaded\r\n\t );\r\n\t}\r\n\r\n }( window, function factory( window, Flickity, imagesLoaded ) {\r\n 'use strict';\r\n\r\n Flickity.createMethods.push('_createImagesLoaded');\r\n\r\n var proto = Flickity.prototype;\r\n\r\n proto._createImagesLoaded = function() {\r\n\tthis.on( 'activate', this.imagesLoaded );\r\n };\r\n\r\n proto.imagesLoaded = function() {\r\n\tif ( !this.options.imagesLoaded ) {\r\n\t return;\r\n\t}\r\n\tvar _this = this;\r\n\tfunction onImagesLoadedProgress( instance, image ) {\r\n\t var cell = _this.getParentCell( image.img );\r\n\t _this.cellSizeChange( cell && cell.element );\r\n\t if ( !_this.options.freeScroll ) {\r\n\t\t_this.positionSliderAtSelected();\r\n\t }\r\n\t}\r\n\timagesLoaded( this.slider ).on( 'progress', onImagesLoadedProgress );\r\n };\r\n\r\n return Flickity;\r\n\r\n }));\r\n","/*! jQuery UI - v1.12.1 - 2018-07-11\r\n* http://jqueryui.com\r\n* Includes: widget.js, keycode.js, unique-id.js, widgets/accordion.js\r\n* Copyright jQuery Foundation and other contributors; Licensed MIT */\r\n\r\n(function( factory ) {\r\n\tif ( typeof define === \"function\" && define.amd ) {\r\n\r\n\t\t// AMD. Register as an anonymous module.\r\n\t\tdefine([ \"jquery\" ], factory );\r\n\t} else {\r\n\r\n\t\t// Browser globals\r\n\t\tfactory( jQuery );\r\n\t}\r\n}(function( $ ) {\r\n\r\n$.ui = $.ui || {};\r\n\r\nvar version = $.ui.version = \"1.12.1\";\r\n\r\n\r\n/*!\r\n * jQuery UI Widget 1.12.1\r\n * http://jqueryui.com\r\n *\r\n * Copyright jQuery Foundation and other contributors\r\n * Released under the MIT license.\r\n * http://jquery.org/license\r\n */\r\n\r\n//>>label: Widget\r\n//>>group: Core\r\n//>>description: Provides a factory for creating stateful widgets with a common API.\r\n//>>docs: http://api.jqueryui.com/jQuery.widget/\r\n//>>demos: http://jqueryui.com/widget/\r\n\r\n\r\n\r\nvar widgetUuid = 0;\r\nvar widgetSlice = Array.prototype.slice;\r\n\r\n$.cleanData = ( function( orig ) {\r\n\treturn function( elems ) {\r\n\t\tvar events, elem, i;\r\n\t\tfor ( i = 0; ( elem = elems[ i ] ) != null; i++ ) {\r\n\t\t\ttry {\r\n\r\n\t\t\t\t// Only trigger remove when necessary to save time\r\n\t\t\t\tevents = $._data( elem, \"events\" );\r\n\t\t\t\tif ( events && events.remove ) {\r\n\t\t\t\t\t$( elem ).triggerHandler( \"remove\" );\r\n\t\t\t\t}\r\n\r\n\t\t\t// Http://bugs.jquery.com/ticket/8235\r\n\t\t\t} catch ( e ) {}\r\n\t\t}\r\n\t\torig( elems );\r\n\t};\r\n} )( $.cleanData );\r\n\r\n$.widget = function( name, base, prototype ) {\r\n\tvar existingConstructor, constructor, basePrototype;\r\n\r\n\t// ProxiedPrototype allows the provided prototype to remain unmodified\r\n\t// so that it can be used as a mixin for multiple widgets (#8876)\r\n\tvar proxiedPrototype = {};\r\n\r\n\tvar namespace = name.split( \".\" )[ 0 ];\r\n\tname = name.split( \".\" )[ 1 ];\r\n\tvar fullName = namespace + \"-\" + name;\r\n\r\n\tif ( !prototype ) {\r\n\t\tprototype = base;\r\n\t\tbase = $.Widget;\r\n\t}\r\n\r\n\tif ( $.isArray( prototype ) ) {\r\n\t\tprototype = $.extend.apply( null, [ {} ].concat( prototype ) );\r\n\t}\r\n\r\n\t// Create selector for plugin\r\n\t$.expr[ \":\" ][ fullName.toLowerCase() ] = function( elem ) {\r\n\t\treturn !!$.data( elem, fullName );\r\n\t};\r\n\r\n\t$[ namespace ] = $[ namespace ] || {};\r\n\texistingConstructor = $[ namespace ][ name ];\r\n\tconstructor = $[ namespace ][ name ] = function( options, element ) {\r\n\r\n\t\t// Allow instantiation without \"new\" keyword\r\n\t\tif ( !this._createWidget ) {\r\n\t\t\treturn new constructor( options, element );\r\n\t\t}\r\n\r\n\t\t// Allow instantiation without initializing for simple inheritance\r\n\t\t// must use \"new\" keyword (the code above always passes args)\r\n\t\tif ( arguments.length ) {\r\n\t\t\tthis._createWidget( options, element );\r\n\t\t}\r\n\t};\r\n\r\n\t// Extend with the existing constructor to carry over any static properties\r\n\t$.extend( constructor, existingConstructor, {\r\n\t\tversion: prototype.version,\r\n\r\n\t\t// Copy the object used to create the prototype in case we need to\r\n\t\t// redefine the widget later\r\n\t\t_proto: $.extend( {}, prototype ),\r\n\r\n\t\t// Track widgets that inherit from this widget in case this widget is\r\n\t\t// redefined after a widget inherits from it\r\n\t\t_childConstructors: []\r\n\t} );\r\n\r\n\tbasePrototype = new base();\r\n\r\n\t// We need to make the options hash a property directly on the new instance\r\n\t// otherwise we'll modify the options hash on the prototype that we're\r\n\t// inheriting from\r\n\tbasePrototype.options = $.widget.extend( {}, basePrototype.options );\r\n\t$.each( prototype, function( prop, value ) {\r\n\t\tif ( !$.isFunction( value ) ) {\r\n\t\t\tproxiedPrototype[ prop ] = value;\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tproxiedPrototype[ prop ] = ( function() {\r\n\t\t\tfunction _super() {\r\n\t\t\t\treturn base.prototype[ prop ].apply( this, arguments );\r\n\t\t\t}\r\n\r\n\t\t\tfunction _superApply( args ) {\r\n\t\t\t\treturn base.prototype[ prop ].apply( this, args );\r\n\t\t\t}\r\n\r\n\t\t\treturn function() {\r\n\t\t\t\tvar __super = this._super;\r\n\t\t\t\tvar __superApply = this._superApply;\r\n\t\t\t\tvar returnValue;\r\n\r\n\t\t\t\tthis._super = _super;\r\n\t\t\t\tthis._superApply = _superApply;\r\n\r\n\t\t\t\treturnValue = value.apply( this, arguments );\r\n\r\n\t\t\t\tthis._super = __super;\r\n\t\t\t\tthis._superApply = __superApply;\r\n\r\n\t\t\t\treturn returnValue;\r\n\t\t\t};\r\n\t\t} )();\r\n\t} );\r\n\tconstructor.prototype = $.widget.extend( basePrototype, {\r\n\r\n\t\t// TODO: remove support for widgetEventPrefix\r\n\t\t// always use the name + a colon as the prefix, e.g., draggable:start\r\n\t\t// don't prefix for widgets that aren't DOM-based\r\n\t\twidgetEventPrefix: existingConstructor ? ( basePrototype.widgetEventPrefix || name ) : name\r\n\t}, proxiedPrototype, {\r\n\t\tconstructor: constructor,\r\n\t\tnamespace: namespace,\r\n\t\twidgetName: name,\r\n\t\twidgetFullName: fullName\r\n\t} );\r\n\r\n\t// If this widget is being redefined then we need to find all widgets that\r\n\t// are inheriting from it and redefine all of them so that they inherit from\r\n\t// the new version of this widget. We're essentially trying to replace one\r\n\t// level in the prototype chain.\r\n\tif ( existingConstructor ) {\r\n\t\t$.each( existingConstructor._childConstructors, function( i, child ) {\r\n\t\t\tvar childPrototype = child.prototype;\r\n\r\n\t\t\t// Redefine the child widget using the same prototype that was\r\n\t\t\t// originally used, but inherit from the new version of the base\r\n\t\t\t$.widget( childPrototype.namespace + \".\" + childPrototype.widgetName, constructor,\r\n\t\t\t\tchild._proto );\r\n\t\t} );\r\n\r\n\t\t// Remove the list of existing child constructors from the old constructor\r\n\t\t// so the old child constructors can be garbage collected\r\n\t\tdelete existingConstructor._childConstructors;\r\n\t} else {\r\n\t\tbase._childConstructors.push( constructor );\r\n\t}\r\n\r\n\t$.widget.bridge( name, constructor );\r\n\r\n\treturn constructor;\r\n};\r\n\r\n$.widget.extend = function( target ) {\r\n\tvar input = widgetSlice.call( arguments, 1 );\r\n\tvar inputIndex = 0;\r\n\tvar inputLength = input.length;\r\n\tvar key;\r\n\tvar value;\r\n\r\n\tfor ( ; inputIndex < inputLength; inputIndex++ ) {\r\n\t\tfor ( key in input[ inputIndex ] ) {\r\n\t\t\tvalue = input[ inputIndex ][ key ];\r\n\t\t\tif ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) {\r\n\r\n\t\t\t\t// Clone objects\r\n\t\t\t\tif ( $.isPlainObject( value ) ) {\r\n\t\t\t\t\ttarget[ key ] = $.isPlainObject( target[ key ] ) ?\r\n\t\t\t\t\t\t$.widget.extend( {}, target[ key ], value ) :\r\n\r\n\t\t\t\t\t\t// Don't extend strings, arrays, etc. with objects\r\n\t\t\t\t\t\t$.widget.extend( {}, value );\r\n\r\n\t\t\t\t// Copy everything else by reference\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttarget[ key ] = value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn target;\r\n};\r\n\r\n$.widget.bridge = function( name, object ) {\r\n\tvar fullName = object.prototype.widgetFullName || name;\r\n\t$.fn[ name ] = function( options ) {\r\n\t\tvar isMethodCall = typeof options === \"string\";\r\n\t\tvar args = widgetSlice.call( arguments, 1 );\r\n\t\tvar returnValue = this;\r\n\r\n\t\tif ( isMethodCall ) {\r\n\r\n\t\t\t// If this is an empty collection, we need to have the instance method\r\n\t\t\t// return undefined instead of the jQuery instance\r\n\t\t\tif ( !this.length && options === \"instance\" ) {\r\n\t\t\t\treturnValue = undefined;\r\n\t\t\t} else {\r\n\t\t\t\tthis.each( function() {\r\n\t\t\t\t\tvar methodValue;\r\n\t\t\t\t\tvar instance = $.data( this, fullName );\r\n\r\n\t\t\t\t\tif ( options === \"instance\" ) {\r\n\t\t\t\t\t\treturnValue = instance;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif ( !instance ) {\r\n\t\t\t\t\t\treturn $.error( \"cannot call methods on \" + name +\r\n\t\t\t\t\t\t\t\" prior to initialization; \" +\r\n\t\t\t\t\t\t\t\"attempted to call method '\" + options + \"'\" );\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif ( !$.isFunction( instance[ options ] ) || options.charAt( 0 ) === \"_\" ) {\r\n\t\t\t\t\t\treturn $.error( \"no such method '\" + options + \"' for \" + name +\r\n\t\t\t\t\t\t\t\" widget instance\" );\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tmethodValue = instance[ options ].apply( instance, args );\r\n\r\n\t\t\t\t\tif ( methodValue !== instance && methodValue !== undefined ) {\r\n\t\t\t\t\t\treturnValue = methodValue && methodValue.jquery ?\r\n\t\t\t\t\t\t\treturnValue.pushStack( methodValue.get() ) :\r\n\t\t\t\t\t\t\tmethodValue;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t} );\r\n\t\t\t}\r\n\t\t} else {\r\n\r\n\t\t\t// Allow multiple hashes to be passed on init\r\n\t\t\tif ( args.length ) {\r\n\t\t\t\toptions = $.widget.extend.apply( null, [ options ].concat( args ) );\r\n\t\t\t}\r\n\r\n\t\t\tthis.each( function() {\r\n\t\t\t\tvar instance = $.data( this, fullName );\r\n\t\t\t\tif ( instance ) {\r\n\t\t\t\t\tinstance.option( options || {} );\r\n\t\t\t\t\tif ( instance._init ) {\r\n\t\t\t\t\t\tinstance._init();\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$.data( this, fullName, new object( options, this ) );\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t\t}\r\n\r\n\t\treturn returnValue;\r\n\t};\r\n};\r\n\r\n$.Widget = function( /* options, element */ ) {};\r\n$.Widget._childConstructors = [];\r\n\r\n$.Widget.prototype = {\r\n\twidgetName: \"widget\",\r\n\twidgetEventPrefix: \"\",\r\n\tdefaultElement: \"
\",\r\n\r\n\toptions: {\r\n\t\tclasses: {},\r\n\t\tdisabled: false,\r\n\r\n\t\t// Callbacks\r\n\t\tcreate: null\r\n\t},\r\n\r\n\t_createWidget: function( options, element ) {\r\n\t\telement = $( element || this.defaultElement || this )[ 0 ];\r\n\t\tthis.element = $( element );\r\n\t\tthis.uuid = widgetUuid++;\r\n\t\tthis.eventNamespace = \".\" + this.widgetName + this.uuid;\r\n\r\n\t\tthis.bindings = $();\r\n\t\tthis.hoverable = $();\r\n\t\tthis.focusable = $();\r\n\t\tthis.classesElementLookup = {};\r\n\r\n\t\tif ( element !== this ) {\r\n\t\t\t$.data( element, this.widgetFullName, this );\r\n\t\t\tthis._on( true, this.element, {\r\n\t\t\t\tremove: function( event ) {\r\n\t\t\t\t\tif ( event.target === element ) {\r\n\t\t\t\t\t\tthis.destroy();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t\t\tthis.document = $( element.style ?\r\n\r\n\t\t\t\t// Element within the document\r\n\t\t\t\telement.ownerDocument :\r\n\r\n\t\t\t\t// Element is window or document\r\n\t\t\t\telement.document || element );\r\n\t\t\tthis.window = $( this.document[ 0 ].defaultView || this.document[ 0 ].parentWindow );\r\n\t\t}\r\n\r\n\t\tthis.options = $.widget.extend( {},\r\n\t\t\tthis.options,\r\n\t\t\tthis._getCreateOptions(),\r\n\t\t\toptions );\r\n\r\n\t\tthis._create();\r\n\r\n\t\tif ( this.options.disabled ) {\r\n\t\t\tthis._setOptionDisabled( this.options.disabled );\r\n\t\t}\r\n\r\n\t\tthis._trigger( \"create\", null, this._getCreateEventData() );\r\n\t\tthis._init();\r\n\t},\r\n\r\n\t_getCreateOptions: function() {\r\n\t\treturn {};\r\n\t},\r\n\r\n\t_getCreateEventData: $.noop,\r\n\r\n\t_create: $.noop,\r\n\r\n\t_init: $.noop,\r\n\r\n\tdestroy: function() {\r\n\t\tvar that = this;\r\n\r\n\t\tthis._destroy();\r\n\t\t$.each( this.classesElementLookup, function( key, value ) {\r\n\t\t\tthat._removeClass( value, key );\r\n\t\t} );\r\n\r\n\t\t// We can probably remove the unbind calls in 2.0\r\n\t\t// all event bindings should go through this._on()\r\n\t\tthis.element\r\n\t\t\t.off( this.eventNamespace )\r\n\t\t\t.removeData( this.widgetFullName );\r\n\t\tthis.widget()\r\n\t\t\t.off( this.eventNamespace )\r\n\t\t\t.removeAttr( \"aria-disabled\" );\r\n\r\n\t\t// Clean up events and states\r\n\t\tthis.bindings.off( this.eventNamespace );\r\n\t},\r\n\r\n\t_destroy: $.noop,\r\n\r\n\twidget: function() {\r\n\t\treturn this.element;\r\n\t},\r\n\r\n\toption: function( key, value ) {\r\n\t\tvar options = key;\r\n\t\tvar parts;\r\n\t\tvar curOption;\r\n\t\tvar i;\r\n\r\n\t\tif ( arguments.length === 0 ) {\r\n\r\n\t\t\t// Don't return a reference to the internal hash\r\n\t\t\treturn $.widget.extend( {}, this.options );\r\n\t\t}\r\n\r\n\t\tif ( typeof key === \"string\" ) {\r\n\r\n\t\t\t// Handle nested keys, e.g., \"foo.bar\" => { foo: { bar: ___ } }\r\n\t\t\toptions = {};\r\n\t\t\tparts = key.split( \".\" );\r\n\t\t\tkey = parts.shift();\r\n\t\t\tif ( parts.length ) {\r\n\t\t\t\tcurOption = options[ key ] = $.widget.extend( {}, this.options[ key ] );\r\n\t\t\t\tfor ( i = 0; i < parts.length - 1; i++ ) {\r\n\t\t\t\t\tcurOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};\r\n\t\t\t\t\tcurOption = curOption[ parts[ i ] ];\r\n\t\t\t\t}\r\n\t\t\t\tkey = parts.pop();\r\n\t\t\t\tif ( arguments.length === 1 ) {\r\n\t\t\t\t\treturn curOption[ key ] === undefined ? null : curOption[ key ];\r\n\t\t\t\t}\r\n\t\t\t\tcurOption[ key ] = value;\r\n\t\t\t} else {\r\n\t\t\t\tif ( arguments.length === 1 ) {\r\n\t\t\t\t\treturn this.options[ key ] === undefined ? null : this.options[ key ];\r\n\t\t\t\t}\r\n\t\t\t\toptions[ key ] = value;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._setOptions( options );\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_setOptions: function( options ) {\r\n\t\tvar key;\r\n\r\n\t\tfor ( key in options ) {\r\n\t\t\tthis._setOption( key, options[ key ] );\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_setOption: function( key, value ) {\r\n\t\tif ( key === \"classes\" ) {\r\n\t\t\tthis._setOptionClasses( value );\r\n\t\t}\r\n\r\n\t\tthis.options[ key ] = value;\r\n\r\n\t\tif ( key === \"disabled\" ) {\r\n\t\t\tthis._setOptionDisabled( value );\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_setOptionClasses: function( value ) {\r\n\t\tvar classKey, elements, currentElements;\r\n\r\n\t\tfor ( classKey in value ) {\r\n\t\t\tcurrentElements = this.classesElementLookup[ classKey ];\r\n\t\t\tif ( value[ classKey ] === this.options.classes[ classKey ] ||\r\n\t\t\t\t\t!currentElements ||\r\n\t\t\t\t\t!currentElements.length ) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\t// We are doing this to create a new jQuery object because the _removeClass() call\r\n\t\t\t// on the next line is going to destroy the reference to the current elements being\r\n\t\t\t// tracked. We need to save a copy of this collection so that we can add the new classes\r\n\t\t\t// below.\r\n\t\t\telements = $( currentElements.get() );\r\n\t\t\tthis._removeClass( currentElements, classKey );\r\n\r\n\t\t\t// We don't use _addClass() here, because that uses this.options.classes\r\n\t\t\t// for generating the string of classes. We want to use the value passed in from\r\n\t\t\t// _setOption(), this is the new value of the classes option which was passed to\r\n\t\t\t// _setOption(). We pass this value directly to _classes().\r\n\t\t\telements.addClass( this._classes( {\r\n\t\t\t\telement: elements,\r\n\t\t\t\tkeys: classKey,\r\n\t\t\t\tclasses: value,\r\n\t\t\t\tadd: true\r\n\t\t\t} ) );\r\n\t\t}\r\n\t},\r\n\r\n\t_setOptionDisabled: function( value ) {\r\n\t\tthis._toggleClass( this.widget(), this.widgetFullName + \"-disabled\", null, !!value );\r\n\r\n\t\t// If the widget is becoming disabled, then nothing is interactive\r\n\t\tif ( value ) {\r\n\t\t\tthis._removeClass( this.hoverable, null, \"ui-state-hover\" );\r\n\t\t\tthis._removeClass( this.focusable, null, \"ui-state-focus\" );\r\n\t\t}\r\n\t},\r\n\r\n\tenable: function() {\r\n\t\treturn this._setOptions( { disabled: false } );\r\n\t},\r\n\r\n\tdisable: function() {\r\n\t\treturn this._setOptions( { disabled: true } );\r\n\t},\r\n\r\n\t_classes: function( options ) {\r\n\t\tvar full = [];\r\n\t\tvar that = this;\r\n\r\n\t\toptions = $.extend( {\r\n\t\t\telement: this.element,\r\n\t\t\tclasses: this.options.classes || {}\r\n\t\t}, options );\r\n\r\n\t\tfunction processClassString( classes, checkOption ) {\r\n\t\t\tvar current, i;\r\n\t\t\tfor ( i = 0; i < classes.length; i++ ) {\r\n\t\t\t\tcurrent = that.classesElementLookup[ classes[ i ] ] || $();\r\n\t\t\t\tif ( options.add ) {\r\n\t\t\t\t\tcurrent = $( $.unique( current.get().concat( options.element.get() ) ) );\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcurrent = $( current.not( options.element ).get() );\r\n\t\t\t\t}\r\n\t\t\t\tthat.classesElementLookup[ classes[ i ] ] = current;\r\n\t\t\t\tfull.push( classes[ i ] );\r\n\t\t\t\tif ( checkOption && options.classes[ classes[ i ] ] ) {\r\n\t\t\t\t\tfull.push( options.classes[ classes[ i ] ] );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._on( options.element, {\r\n\t\t\t\"remove\": \"_untrackClassesElement\"\r\n\t\t} );\r\n\r\n\t\tif ( options.keys ) {\r\n\t\t\tprocessClassString( options.keys.match( /\\S+/g ) || [], true );\r\n\t\t}\r\n\t\tif ( options.extra ) {\r\n\t\t\tprocessClassString( options.extra.match( /\\S+/g ) || [] );\r\n\t\t}\r\n\r\n\t\treturn full.join( \" \" );\r\n\t},\r\n\r\n\t_untrackClassesElement: function( event ) {\r\n\t\tvar that = this;\r\n\t\t$.each( that.classesElementLookup, function( key, value ) {\r\n\t\t\tif ( $.inArray( event.target, value ) !== -1 ) {\r\n\t\t\t\tthat.classesElementLookup[ key ] = $( value.not( event.target ).get() );\r\n\t\t\t}\r\n\t\t} );\r\n\t},\r\n\r\n\t_removeClass: function( element, keys, extra ) {\r\n\t\treturn this._toggleClass( element, keys, extra, false );\r\n\t},\r\n\r\n\t_addClass: function( element, keys, extra ) {\r\n\t\treturn this._toggleClass( element, keys, extra, true );\r\n\t},\r\n\r\n\t_toggleClass: function( element, keys, extra, add ) {\r\n\t\tadd = ( typeof add === \"boolean\" ) ? add : extra;\r\n\t\tvar shift = ( typeof element === \"string\" || element === null ),\r\n\t\t\toptions = {\r\n\t\t\t\textra: shift ? keys : extra,\r\n\t\t\t\tkeys: shift ? element : keys,\r\n\t\t\t\telement: shift ? this.element : element,\r\n\t\t\t\tadd: add\r\n\t\t\t};\r\n\t\toptions.element.toggleClass( this._classes( options ), add );\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_on: function( suppressDisabledCheck, element, handlers ) {\r\n\t\tvar delegateElement;\r\n\t\tvar instance = this;\r\n\r\n\t\t// No suppressDisabledCheck flag, shuffle arguments\r\n\t\tif ( typeof suppressDisabledCheck !== \"boolean\" ) {\r\n\t\t\thandlers = element;\r\n\t\t\telement = suppressDisabledCheck;\r\n\t\t\tsuppressDisabledCheck = false;\r\n\t\t}\r\n\r\n\t\t// No element argument, shuffle and use this.element\r\n\t\tif ( !handlers ) {\r\n\t\t\thandlers = element;\r\n\t\t\telement = this.element;\r\n\t\t\tdelegateElement = this.widget();\r\n\t\t} else {\r\n\t\t\telement = delegateElement = $( element );\r\n\t\t\tthis.bindings = this.bindings.add( element );\r\n\t\t}\r\n\r\n\t\t$.each( handlers, function( event, handler ) {\r\n\t\t\tfunction handlerProxy() {\r\n\r\n\t\t\t\t// Allow widgets to customize the disabled handling\r\n\t\t\t\t// - disabled as an array instead of boolean\r\n\t\t\t\t// - disabled class as method for disabling individual parts\r\n\t\t\t\tif ( !suppressDisabledCheck &&\r\n\t\t\t\t\t\t( instance.options.disabled === true ||\r\n\t\t\t\t\t\t$( this ).hasClass( \"ui-state-disabled\" ) ) ) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\r\n\t\t\t\t\t.apply( instance, arguments );\r\n\t\t\t}\r\n\r\n\t\t\t// Copy the guid so direct unbinding works\r\n\t\t\tif ( typeof handler !== \"string\" ) {\r\n\t\t\t\thandlerProxy.guid = handler.guid =\r\n\t\t\t\t\thandler.guid || handlerProxy.guid || $.guid++;\r\n\t\t\t}\r\n\r\n\t\t\tvar match = event.match( /^([\\w:-]*)\\s*(.*)$/ );\r\n\t\t\tvar eventName = match[ 1 ] + instance.eventNamespace;\r\n\t\t\tvar selector = match[ 2 ];\r\n\r\n\t\t\tif ( selector ) {\r\n\t\t\t\tdelegateElement.on( eventName, selector, handlerProxy );\r\n\t\t\t} else {\r\n\t\t\t\telement.on( eventName, handlerProxy );\r\n\t\t\t}\r\n\t\t} );\r\n\t},\r\n\r\n\t_off: function( element, eventName ) {\r\n\t\teventName = ( eventName || \"\" ).split( \" \" ).join( this.eventNamespace + \" \" ) +\r\n\t\t\tthis.eventNamespace;\r\n\t\telement.off( eventName ).off( eventName );\r\n\r\n\t\t// Clear the stack to avoid memory leaks (#10056)\r\n\t\tthis.bindings = $( this.bindings.not( element ).get() );\r\n\t\tthis.focusable = $( this.focusable.not( element ).get() );\r\n\t\tthis.hoverable = $( this.hoverable.not( element ).get() );\r\n\t},\r\n\r\n\t_delay: function( handler, delay ) {\r\n\t\tfunction handlerProxy() {\r\n\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\r\n\t\t\t\t.apply( instance, arguments );\r\n\t\t}\r\n\t\tvar instance = this;\r\n\t\treturn setTimeout( handlerProxy, delay || 0 );\r\n\t},\r\n\r\n\t_hoverable: function( element ) {\r\n\t\tthis.hoverable = this.hoverable.add( element );\r\n\t\tthis._on( element, {\r\n\t\t\tmouseenter: function( event ) {\r\n\t\t\t\tthis._addClass( $( event.currentTarget ), null, \"ui-state-hover\" );\r\n\t\t\t},\r\n\t\t\tmouseleave: function( event ) {\r\n\t\t\t\tthis._removeClass( $( event.currentTarget ), null, \"ui-state-hover\" );\r\n\t\t\t}\r\n\t\t} );\r\n\t},\r\n\r\n\t_focusable: function( element ) {\r\n\t\tthis.focusable = this.focusable.add( element );\r\n\t\tthis._on( element, {\r\n\t\t\tfocusin: function( event ) {\r\n\t\t\t\tthis._addClass( $( event.currentTarget ), null, \"ui-state-focus\" );\r\n\t\t\t},\r\n\t\t\tfocusout: function( event ) {\r\n\t\t\t\tthis._removeClass( $( event.currentTarget ), null, \"ui-state-focus\" );\r\n\t\t\t}\r\n\t\t} );\r\n\t},\r\n\r\n\t_trigger: function( type, event, data ) {\r\n\t\tvar prop, orig;\r\n\t\tvar callback = this.options[ type ];\r\n\r\n\t\tdata = data || {};\r\n\t\tevent = $.Event( event );\r\n\t\tevent.type = ( type === this.widgetEventPrefix ?\r\n\t\t\ttype :\r\n\t\t\tthis.widgetEventPrefix + type ).toLowerCase();\r\n\r\n\t\t// The original event may come from any element\r\n\t\t// so we need to reset the target on the new event\r\n\t\tevent.target = this.element[ 0 ];\r\n\r\n\t\t// Copy original event properties over to the new event\r\n\t\torig = event.originalEvent;\r\n\t\tif ( orig ) {\r\n\t\t\tfor ( prop in orig ) {\r\n\t\t\t\tif ( !( prop in event ) ) {\r\n\t\t\t\t\tevent[ prop ] = orig[ prop ];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.element.trigger( event, data );\r\n\t\treturn !( $.isFunction( callback ) &&\r\n\t\t\tcallback.apply( this.element[ 0 ], [ event ].concat( data ) ) === false ||\r\n\t\t\tevent.isDefaultPrevented() );\r\n\t}\r\n};\r\n\r\n$.each( { show: \"fadeIn\", hide: \"fadeOut\" }, function( method, defaultEffect ) {\r\n\t$.Widget.prototype[ \"_\" + method ] = function( element, options, callback ) {\r\n\t\tif ( typeof options === \"string\" ) {\r\n\t\t\toptions = { effect: options };\r\n\t\t}\r\n\r\n\t\tvar hasOptions;\r\n\t\tvar effectName = !options ?\r\n\t\t\tmethod :\r\n\t\t\toptions === true || typeof options === \"number\" ?\r\n\t\t\t\tdefaultEffect :\r\n\t\t\t\toptions.effect || defaultEffect;\r\n\r\n\t\toptions = options || {};\r\n\t\tif ( typeof options === \"number\" ) {\r\n\t\t\toptions = { duration: options };\r\n\t\t}\r\n\r\n\t\thasOptions = !$.isEmptyObject( options );\r\n\t\toptions.complete = callback;\r\n\r\n\t\tif ( options.delay ) {\r\n\t\t\telement.delay( options.delay );\r\n\t\t}\r\n\r\n\t\tif ( hasOptions && $.effects && $.effects.effect[ effectName ] ) {\r\n\t\t\telement[ method ]( options );\r\n\t\t} else if ( effectName !== method && element[ effectName ] ) {\r\n\t\t\telement[ effectName ]( options.duration, options.easing, callback );\r\n\t\t} else {\r\n\t\t\telement.queue( function( next ) {\r\n\t\t\t\t$( this )[ method ]();\r\n\t\t\t\tif ( callback ) {\r\n\t\t\t\t\tcallback.call( element[ 0 ] );\r\n\t\t\t\t}\r\n\t\t\t\tnext();\r\n\t\t\t} );\r\n\t\t}\r\n\t};\r\n} );\r\n\r\nvar widget = $.widget;\r\n\r\n\r\n/*!\r\n * jQuery UI Keycode 1.12.1\r\n * http://jqueryui.com\r\n *\r\n * Copyright jQuery Foundation and other contributors\r\n * Released under the MIT license.\r\n * http://jquery.org/license\r\n */\r\n\r\n//>>label: Keycode\r\n//>>group: Core\r\n//>>description: Provide keycodes as keynames\r\n//>>docs: http://api.jqueryui.com/jQuery.ui.keyCode/\r\n\r\n\r\nvar keycode = $.ui.keyCode = {\r\n\tBACKSPACE: 8,\r\n\tCOMMA: 188,\r\n\tDELETE: 46,\r\n\tDOWN: 40,\r\n\tEND: 35,\r\n\tENTER: 13,\r\n\tESCAPE: 27,\r\n\tHOME: 36,\r\n\tLEFT: 37,\r\n\tPAGE_DOWN: 34,\r\n\tPAGE_UP: 33,\r\n\tPERIOD: 190,\r\n\tRIGHT: 39,\r\n\tSPACE: 32,\r\n\tTAB: 9,\r\n\tUP: 38\r\n};\r\n\r\n\r\n/*!\r\n * jQuery UI Unique ID 1.12.1\r\n * http://jqueryui.com\r\n *\r\n * Copyright jQuery Foundation and other contributors\r\n * Released under the MIT license.\r\n * http://jquery.org/license\r\n */\r\n\r\n//>>label: uniqueId\r\n//>>group: Core\r\n//>>description: Functions to generate and remove uniqueId's\r\n//>>docs: http://api.jqueryui.com/uniqueId/\r\n\r\n\r\n\r\nvar uniqueId = $.fn.extend( {\r\n\tuniqueId: ( function() {\r\n\t\tvar uuid = 0;\r\n\r\n\t\treturn function() {\r\n\t\t\treturn this.each( function() {\r\n\t\t\t\tif ( !this.id ) {\r\n\t\t\t\t\tthis.id = \"ui-id-\" + ( ++uuid );\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t\t};\r\n\t} )(),\r\n\r\n\tremoveUniqueId: function() {\r\n\t\treturn this.each( function() {\r\n\t\t\tif ( /^ui-id-\\d+$/.test( this.id ) ) {\r\n\t\t\t\t$( this ).removeAttr( \"id\" );\r\n\t\t\t}\r\n\t\t} );\r\n\t}\r\n} );\r\n\r\n\r\n/*!\r\n * jQuery UI Accordion 1.12.1\r\n * http://jqueryui.com\r\n *\r\n * Copyright jQuery Foundation and other contributors\r\n * Released under the MIT license.\r\n * http://jquery.org/license\r\n */\r\n\r\n//>>label: Accordion\r\n//>>group: Widgets\r\n// jscs:disable maximumLineLength\r\n//>>description: Displays collapsible content panels for presenting information in a limited amount of space.\r\n// jscs:enable maximumLineLength\r\n//>>docs: http://api.jqueryui.com/accordion/\r\n//>>demos: http://jqueryui.com/accordion/\r\n//>>css.structure: ../../themes/base/core.css\r\n//>>css.structure: ../../themes/base/accordion.css\r\n//>>css.theme: ../../themes/base/theme.css\r\n\r\n\r\n\r\nvar widgetsAccordion = $.widget( \"ui.accordion\", {\r\n\tversion: \"1.12.1\",\r\n\toptions: {\r\n\t\tactive: 0,\r\n\t\tanimate: {},\r\n\t\tclasses: {\r\n\t\t\t\"ui-accordion-header\": \"ui-corner-top\",\r\n\t\t\t\"ui-accordion-header-collapsed\": \"ui-corner-all\",\r\n\t\t\t\"ui-accordion-content\": \"ui-corner-bottom\"\r\n\t\t},\r\n\t\tcollapsible: false,\r\n\t\tevent: \"click\",\r\n\t\theader: \"> li > :first-child, > :not(li):even\",\r\n\t\theightStyle: \"auto\",\r\n\t\ticons: {\r\n\t\t\tactiveHeader: \"ui-icon-triangle-1-s\",\r\n\t\t\theader: \"ui-icon-triangle-1-e\"\r\n\t\t},\r\n\r\n\t\t// Callbacks\r\n\t\tactivate: null,\r\n\t\tbeforeActivate: null\r\n\t},\r\n\r\n\thideProps: {\r\n\t\tborderTopWidth: \"hide\",\r\n\t\tborderBottomWidth: \"hide\",\r\n\t\tpaddingTop: \"hide\",\r\n\t\tpaddingBottom: \"hide\",\r\n\t\theight: \"hide\"\r\n\t},\r\n\r\n\tshowProps: {\r\n\t\tborderTopWidth: \"show\",\r\n\t\tborderBottomWidth: \"show\",\r\n\t\tpaddingTop: \"show\",\r\n\t\tpaddingBottom: \"show\",\r\n\t\theight: \"show\"\r\n\t},\r\n\r\n\t_create: function() {\r\n\t\tvar options = this.options;\r\n\r\n\t\tthis.prevShow = this.prevHide = $();\r\n\t\tthis._addClass( \"ui-accordion\", \"ui-widget ui-helper-reset\" );\r\n\t\tthis.element.attr( \"role\", \"tablist\" );\r\n\r\n\t\t// Don't allow collapsible: false and active: false / null\r\n\t\tif ( !options.collapsible && ( options.active === false || options.active == null ) ) {\r\n\t\t\toptions.active = 0;\r\n\t\t}\r\n\r\n\t\tthis._processPanels();\r\n\r\n\t\t// handle negative values\r\n\t\tif ( options.active < 0 ) {\r\n\t\t\toptions.active += this.headers.length;\r\n\t\t}\r\n\t\tthis._refresh();\r\n\t},\r\n\r\n\t_getCreateEventData: function() {\r\n\t\treturn {\r\n\t\t\theader: this.active,\r\n\t\t\tpanel: !this.active.length ? $() : this.active.next()\r\n\t\t};\r\n\t},\r\n\r\n\t_createIcons: function() {\r\n\t\tvar icon, children,\r\n\t\t\ticons = this.options.icons;\r\n\r\n\t\tif ( icons ) {\r\n\t\t\ticon = $( \"\" );\r\n\t\t\tthis._addClass( icon, \"ui-accordion-header-icon\", \"ui-icon \" + icons.header );\r\n\t\t\ticon.prependTo( this.headers );\r\n\t\t\tchildren = this.active.children( \".ui-accordion-header-icon\" );\r\n\t\t\tthis._removeClass( children, icons.header )\r\n\t\t\t\t._addClass( children, null, icons.activeHeader )\r\n\t\t\t\t._addClass( this.headers, \"ui-accordion-icons\" );\r\n\t\t}\r\n\t},\r\n\r\n\t_destroyIcons: function() {\r\n\t\tthis._removeClass( this.headers, \"ui-accordion-icons\" );\r\n\t\tthis.headers.children( \".ui-accordion-header-icon\" ).remove();\r\n\t},\r\n\r\n\t_destroy: function() {\r\n\t\tvar contents;\r\n\r\n\t\t// Clean up main element\r\n\t\tthis.element.removeAttr( \"role\" );\r\n\r\n\t\t// Clean up headers\r\n\t\tthis.headers\r\n\t\t\t.removeAttr( \"role aria-expanded aria-selected aria-controls tabIndex\" )\r\n\t\t\t.removeUniqueId();\r\n\r\n\t\tthis._destroyIcons();\r\n\r\n\t\t// Clean up content panels\r\n\t\tcontents = this.headers.next()\r\n\t\t\t.css( \"display\", \"\" )\r\n\t\t\t.removeAttr( \"role aria-hidden aria-labelledby\" )\r\n\t\t\t.removeUniqueId();\r\n\r\n\t\tif ( this.options.heightStyle !== \"content\" ) {\r\n\t\t\tcontents.css( \"height\", \"\" );\r\n\t\t}\r\n\t},\r\n\r\n\t_setOption: function( key, value ) {\r\n\t\tif ( key === \"active\" ) {\r\n\r\n\t\t\t// _activate() will handle invalid values and update this.options\r\n\t\t\tthis._activate( value );\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif ( key === \"event\" ) {\r\n\t\t\tif ( this.options.event ) {\r\n\t\t\t\tthis._off( this.headers, this.options.event );\r\n\t\t\t}\r\n\t\t\tthis._setupEvents( value );\r\n\t\t}\r\n\r\n\t\tthis._super( key, value );\r\n\r\n\t\t// Setting collapsible: false while collapsed; open first panel\r\n\t\tif ( key === \"collapsible\" && !value && this.options.active === false ) {\r\n\t\t\tthis._activate( 0 );\r\n\t\t}\r\n\r\n\t\tif ( key === \"icons\" ) {\r\n\t\t\tthis._destroyIcons();\r\n\t\t\tif ( value ) {\r\n\t\t\t\tthis._createIcons();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t_setOptionDisabled: function( value ) {\r\n\t\tthis._super( value );\r\n\r\n\t\tthis.element.attr( \"aria-disabled\", value );\r\n\r\n\t\t// Support: IE8 Only\r\n\t\t// #5332 / #6059 - opacity doesn't cascade to positioned elements in IE\r\n\t\t// so we need to add the disabled class to the headers and panels\r\n\t\tthis._toggleClass( null, \"ui-state-disabled\", !!value );\r\n\t\tthis._toggleClass( this.headers.add( this.headers.next() ), null, \"ui-state-disabled\",\r\n\t\t\t!!value );\r\n\t},\r\n\r\n\t_keydown: function( event ) {\r\n\t\tif ( event.altKey || event.ctrlKey ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar keyCode = $.ui.keyCode,\r\n\t\t\tlength = this.headers.length,\r\n\t\t\tcurrentIndex = this.headers.index( event.target ),\r\n\t\t\ttoFocus = false;\r\n\r\n\t\tswitch ( event.keyCode ) {\r\n\t\tcase keyCode.RIGHT:\r\n\t\tcase keyCode.DOWN:\r\n\t\t\ttoFocus = this.headers[ ( currentIndex + 1 ) % length ];\r\n\t\t\tbreak;\r\n\t\tcase keyCode.LEFT:\r\n\t\tcase keyCode.UP:\r\n\t\t\ttoFocus = this.headers[ ( currentIndex - 1 + length ) % length ];\r\n\t\t\tbreak;\r\n\t\tcase keyCode.SPACE:\r\n\t\tcase keyCode.ENTER:\r\n\t\t\tthis._eventHandler( event );\r\n\t\t\tbreak;\r\n\t\tcase keyCode.HOME:\r\n\t\t\ttoFocus = this.headers[ 0 ];\r\n\t\t\tbreak;\r\n\t\tcase keyCode.END:\r\n\t\t\ttoFocus = this.headers[ length - 1 ];\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif ( toFocus ) {\r\n\t\t\t$( event.target ).attr( \"tabIndex\", -1 );\r\n\t\t\t$( toFocus ).attr( \"tabIndex\", 0 );\r\n\t\t\t$( toFocus ).trigger( \"focus\" );\r\n\t\t\tevent.preventDefault();\r\n\t\t}\r\n\t},\r\n\r\n\t_panelKeyDown: function( event ) {\r\n\t\tif ( event.keyCode === $.ui.keyCode.UP && event.ctrlKey ) {\r\n\t\t\t$( event.currentTarget ).prev().trigger( \"focus\" );\r\n\t\t}\r\n\t},\r\n\r\n\trefresh: function() {\r\n\t\tvar options = this.options;\r\n\t\tthis._processPanels();\r\n\r\n\t\t// Was collapsed or no panel\r\n\t\tif ( ( options.active === false && options.collapsible === true ) ||\r\n\t\t\t\t!this.headers.length ) {\r\n\t\t\toptions.active = false;\r\n\t\t\tthis.active = $();\r\n\r\n\t\t// active false only when collapsible is true\r\n\t\t} else if ( options.active === false ) {\r\n\t\t\tthis._activate( 0 );\r\n\r\n\t\t// was active, but active panel is gone\r\n\t\t} else if ( this.active.length && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {\r\n\r\n\t\t\t// all remaining panel are disabled\r\n\t\t\tif ( this.headers.length === this.headers.find( \".ui-state-disabled\" ).length ) {\r\n\t\t\t\toptions.active = false;\r\n\t\t\t\tthis.active = $();\r\n\r\n\t\t\t// activate previous panel\r\n\t\t\t} else {\r\n\t\t\t\tthis._activate( Math.max( 0, options.active - 1 ) );\r\n\t\t\t}\r\n\r\n\t\t// was active, active panel still exists\r\n\t\t} else {\r\n\r\n\t\t\t// make sure active index is correct\r\n\t\t\toptions.active = this.headers.index( this.active );\r\n\t\t}\r\n\r\n\t\tthis._destroyIcons();\r\n\r\n\t\tthis._refresh();\r\n\t},\r\n\r\n\t_processPanels: function() {\r\n\t\tvar prevHeaders = this.headers,\r\n\t\t\tprevPanels = this.panels;\r\n\r\n\t\tthis.headers = this.element.find( this.options.header );\r\n\t\tthis._addClass( this.headers, \"ui-accordion-header ui-accordion-header-collapsed\",\r\n\t\t\t\"ui-state-default\" );\r\n\r\n\t\tthis.panels = this.headers.next().filter( \":not(.ui-accordion-content-active)\" ).hide();\r\n\t\tthis._addClass( this.panels, \"ui-accordion-content\", \"ui-helper-reset ui-widget-content\" );\r\n\r\n\t\t// Avoid memory leaks (#10056)\r\n\t\tif ( prevPanels ) {\r\n\t\t\tthis._off( prevHeaders.not( this.headers ) );\r\n\t\t\tthis._off( prevPanels.not( this.panels ) );\r\n\t\t}\r\n\t},\r\n\r\n\t_refresh: function() {\r\n\t\tvar maxHeight,\r\n\t\t\toptions = this.options,\r\n\t\t\theightStyle = options.heightStyle,\r\n\t\t\tparent = this.element.parent();\r\n\r\n\t\tthis.active = this._findActive( options.active );\r\n\t\tthis._addClass( this.active, \"ui-accordion-header-active\", \"ui-state-active\" )\r\n\t\t\t._removeClass( this.active, \"ui-accordion-header-collapsed\" );\r\n\t\tthis._addClass( this.active.next(), \"ui-accordion-content-active\" );\r\n\t\tthis.active.next().show();\r\n\r\n\t\tthis.headers\r\n\t\t\t.attr( \"role\", \"tab\" )\r\n\t\t\t.each( function() {\r\n\t\t\t\tvar header = $( this ),\r\n\t\t\t\t\theaderId = header.uniqueId().attr( \"id\" ),\r\n\t\t\t\t\tpanel = header.next(),\r\n\t\t\t\t\tpanelId = panel.uniqueId().attr( \"id\" );\r\n\t\t\t\theader.attr( \"aria-controls\", panelId );\r\n\t\t\t\tpanel.attr( \"aria-labelledby\", headerId );\r\n\t\t\t} )\r\n\t\t\t.next()\r\n\t\t\t\t.attr( \"role\", \"tabpanel\" );\r\n\r\n\t\tthis.headers\r\n\t\t\t.not( this.active )\r\n\t\t\t\t.attr( {\r\n\t\t\t\t\t\"aria-selected\": \"false\",\r\n\t\t\t\t\t\"aria-expanded\": \"false\",\r\n\t\t\t\t\ttabIndex: -1\r\n\t\t\t\t} )\r\n\t\t\t\t.next()\r\n\t\t\t\t\t.attr( {\r\n\t\t\t\t\t\t\"aria-hidden\": \"true\"\r\n\t\t\t\t\t} )\r\n\t\t\t\t\t.hide();\r\n\r\n\t\t// Make sure at least one header is in the tab order\r\n\t\tif ( !this.active.length ) {\r\n\t\t\tthis.headers.eq( 0 ).attr( \"tabIndex\", 0 );\r\n\t\t} else {\r\n\t\t\tthis.active.attr( {\r\n\t\t\t\t\"aria-selected\": \"true\",\r\n\t\t\t\t\"aria-expanded\": \"true\",\r\n\t\t\t\ttabIndex: 0\r\n\t\t\t} )\r\n\t\t\t\t.next()\r\n\t\t\t\t\t.attr( {\r\n\t\t\t\t\t\t\"aria-hidden\": \"false\"\r\n\t\t\t\t\t} );\r\n\t\t}\r\n\r\n\t\tthis._createIcons();\r\n\r\n\t\tthis._setupEvents( options.event );\r\n\r\n\t\tif ( heightStyle === \"fill\" ) {\r\n\t\t\tmaxHeight = parent.height();\r\n\t\t\tthis.element.siblings( \":visible\" ).each( function() {\r\n\t\t\t\tvar elem = $( this ),\r\n\t\t\t\t\tposition = elem.css( \"position\" );\r\n\r\n\t\t\t\tif ( position === \"absolute\" || position === \"fixed\" ) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tmaxHeight -= elem.outerHeight( true );\r\n\t\t\t} );\r\n\r\n\t\t\tthis.headers.each( function() {\r\n\t\t\t\tmaxHeight -= $( this ).outerHeight( true );\r\n\t\t\t} );\r\n\r\n\t\t\tthis.headers.next()\r\n\t\t\t\t.each( function() {\r\n\t\t\t\t\t$( this ).height( Math.max( 0, maxHeight -\r\n\t\t\t\t\t\t$( this ).innerHeight() + $( this ).height() ) );\r\n\t\t\t\t} )\r\n\t\t\t\t.css( \"overflow\", \"auto\" );\r\n\t\t} else if ( heightStyle === \"auto\" ) {\r\n\t\t\tmaxHeight = 0;\r\n\t\t\tthis.headers.next()\r\n\t\t\t\t.each( function() {\r\n\t\t\t\t\tvar isVisible = $( this ).is( \":visible\" );\r\n\t\t\t\t\tif ( !isVisible ) {\r\n\t\t\t\t\t\t$( this ).show();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tmaxHeight = Math.max( maxHeight, $( this ).css( \"height\", \"\" ).height() );\r\n\t\t\t\t\tif ( !isVisible ) {\r\n\t\t\t\t\t\t$( this ).hide();\r\n\t\t\t\t\t}\r\n\t\t\t\t} )\r\n\t\t\t\t.height( maxHeight );\r\n\t\t}\r\n\t},\r\n\r\n\t_activate: function( index ) {\r\n\t\tvar active = this._findActive( index )[ 0 ];\r\n\r\n\t\t// Trying to activate the already active panel\r\n\t\tif ( active === this.active[ 0 ] ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Trying to collapse, simulate a click on the currently active header\r\n\t\tactive = active || this.active[ 0 ];\r\n\r\n\t\tthis._eventHandler( {\r\n\t\t\ttarget: active,\r\n\t\t\tcurrentTarget: active,\r\n\t\t\tpreventDefault: $.noop\r\n\t\t} );\r\n\t},\r\n\r\n\t_findActive: function( selector ) {\r\n\t\treturn typeof selector === \"number\" ? this.headers.eq( selector ) : $();\r\n\t},\r\n\r\n\t_setupEvents: function( event ) {\r\n\t\tvar events = {\r\n\t\t\tkeydown: \"_keydown\"\r\n\t\t};\r\n\t\tif ( event ) {\r\n\t\t\t$.each( event.split( \" \" ), function( index, eventName ) {\r\n\t\t\t\tevents[ eventName ] = \"_eventHandler\";\r\n\t\t\t} );\r\n\t\t}\r\n\r\n\t\tthis._off( this.headers.add( this.headers.next() ) );\r\n\t\tthis._on( this.headers, events );\r\n\t\tthis._on( this.headers.next(), { keydown: \"_panelKeyDown\" } );\r\n\t\tthis._hoverable( this.headers );\r\n\t\tthis._focusable( this.headers );\r\n\t},\r\n\r\n\t_eventHandler: function( event ) {\r\n\t\tvar activeChildren, clickedChildren,\r\n\t\t\toptions = this.options,\r\n\t\t\tactive = this.active,\r\n\t\t\tclicked = $( event.currentTarget ),\r\n\t\t\tclickedIsActive = clicked[ 0 ] === active[ 0 ],\r\n\t\t\tcollapsing = clickedIsActive && options.collapsible,\r\n\t\t\ttoShow = collapsing ? $() : clicked.next(),\r\n\t\t\ttoHide = active.next(),\r\n\t\t\teventData = {\r\n\t\t\t\toldHeader: active,\r\n\t\t\t\toldPanel: toHide,\r\n\t\t\t\tnewHeader: collapsing ? $() : clicked,\r\n\t\t\t\tnewPanel: toShow\r\n\t\t\t};\r\n\r\n\t\tevent.preventDefault();\r\n\r\n\t\tif (\r\n\r\n\t\t\t\t// click on active header, but not collapsible\r\n\t\t\t\t( clickedIsActive && !options.collapsible ) ||\r\n\r\n\t\t\t\t// allow canceling activation\r\n\t\t\t\t( this._trigger( \"beforeActivate\", event, eventData ) === false ) ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\toptions.active = collapsing ? false : this.headers.index( clicked );\r\n\r\n\t\t// When the call to ._toggle() comes after the class changes\r\n\t\t// it causes a very odd bug in IE 8 (see #6720)\r\n\t\tthis.active = clickedIsActive ? $() : clicked;\r\n\t\tthis._toggle( eventData );\r\n\r\n\t\t// Switch classes\r\n\t\t// corner classes on the previously active header stay after the animation\r\n\t\tthis._removeClass( active, \"ui-accordion-header-active\", \"ui-state-active\" );\r\n\t\tif ( options.icons ) {\r\n\t\t\tactiveChildren = active.children( \".ui-accordion-header-icon\" );\r\n\t\t\tthis._removeClass( activeChildren, null, options.icons.activeHeader )\r\n\t\t\t\t._addClass( activeChildren, null, options.icons.header );\r\n\t\t}\r\n\r\n\t\tif ( !clickedIsActive ) {\r\n\t\t\tthis._removeClass( clicked, \"ui-accordion-header-collapsed\" )\r\n\t\t\t\t._addClass( clicked, \"ui-accordion-header-active\", \"ui-state-active\" );\r\n\t\t\tif ( options.icons ) {\r\n\t\t\t\tclickedChildren = clicked.children( \".ui-accordion-header-icon\" );\r\n\t\t\t\tthis._removeClass( clickedChildren, null, options.icons.header )\r\n\t\t\t\t\t._addClass( clickedChildren, null, options.icons.activeHeader );\r\n\t\t\t}\r\n\r\n\t\t\tthis._addClass( clicked.next(), \"ui-accordion-content-active\" );\r\n\t\t}\r\n\t},\r\n\r\n\t_toggle: function( data ) {\r\n\t\tvar toShow = data.newPanel,\r\n\t\t\ttoHide = this.prevShow.length ? this.prevShow : data.oldPanel;\r\n\r\n\t\t// Handle activating a panel during the animation for another activation\r\n\t\tthis.prevShow.add( this.prevHide ).stop( true, true );\r\n\t\tthis.prevShow = toShow;\r\n\t\tthis.prevHide = toHide;\r\n\r\n\t\tif ( this.options.animate ) {\r\n\t\t\tthis._animate( toShow, toHide, data );\r\n\t\t} else {\r\n\t\t\ttoHide.hide();\r\n\t\t\ttoShow.show();\r\n\t\t\tthis._toggleComplete( data );\r\n\t\t}\r\n\r\n\t\ttoHide.attr( {\r\n\t\t\t\"aria-hidden\": \"true\"\r\n\t\t} );\r\n\t\ttoHide.prev().attr( {\r\n\t\t\t\"aria-selected\": \"false\",\r\n\t\t\t\"aria-expanded\": \"false\"\r\n\t\t} );\r\n\r\n\t\t// if we're switching panels, remove the old header from the tab order\r\n\t\t// if we're opening from collapsed state, remove the previous header from the tab order\r\n\t\t// if we're collapsing, then keep the collapsing header in the tab order\r\n\t\tif ( toShow.length && toHide.length ) {\r\n\t\t\ttoHide.prev().attr( {\r\n\t\t\t\t\"tabIndex\": -1,\r\n\t\t\t\t\"aria-expanded\": \"false\"\r\n\t\t\t} );\r\n\t\t} else if ( toShow.length ) {\r\n\t\t\tthis.headers.filter( function() {\r\n\t\t\t\treturn parseInt( $( this ).attr( \"tabIndex\" ), 10 ) === 0;\r\n\t\t\t} )\r\n\t\t\t\t.attr( \"tabIndex\", -1 );\r\n\t\t}\r\n\r\n\t\ttoShow\r\n\t\t\t.attr( \"aria-hidden\", \"false\" )\r\n\t\t\t.prev()\r\n\t\t\t\t.attr( {\r\n\t\t\t\t\t\"aria-selected\": \"true\",\r\n\t\t\t\t\t\"aria-expanded\": \"true\",\r\n\t\t\t\t\ttabIndex: 0\r\n\t\t\t\t} );\r\n\t},\r\n\r\n\t_animate: function( toShow, toHide, data ) {\r\n\t\tvar total, easing, duration,\r\n\t\t\tthat = this,\r\n\t\t\tadjust = 0,\r\n\t\t\tboxSizing = toShow.css( \"box-sizing\" ),\r\n\t\t\tdown = toShow.length &&\r\n\t\t\t\t( !toHide.length || ( toShow.index() < toHide.index() ) ),\r\n\t\t\tanimate = this.options.animate || {},\r\n\t\t\toptions = down && animate.down || animate,\r\n\t\t\tcomplete = function() {\r\n\t\t\t\tthat._toggleComplete( data );\r\n\t\t\t};\r\n\r\n\t\tif ( typeof options === \"number\" ) {\r\n\t\t\tduration = options;\r\n\t\t}\r\n\t\tif ( typeof options === \"string\" ) {\r\n\t\t\teasing = options;\r\n\t\t}\r\n\r\n\t\t// fall back from options to animation in case of partial down settings\r\n\t\teasing = easing || options.easing || animate.easing;\r\n\t\tduration = duration || options.duration || animate.duration;\r\n\r\n\t\tif ( !toHide.length ) {\r\n\t\t\treturn toShow.animate( this.showProps, duration, easing, complete );\r\n\t\t}\r\n\t\tif ( !toShow.length ) {\r\n\t\t\treturn toHide.animate( this.hideProps, duration, easing, complete );\r\n\t\t}\r\n\r\n\t\ttotal = toShow.show().outerHeight();\r\n\t\ttoHide.animate( this.hideProps, {\r\n\t\t\tduration: duration,\r\n\t\t\teasing: easing,\r\n\t\t\tstep: function( now, fx ) {\r\n\t\t\t\tfx.now = Math.round( now );\r\n\t\t\t}\r\n\t\t} );\r\n\t\ttoShow\r\n\t\t\t.hide()\r\n\t\t\t.animate( this.showProps, {\r\n\t\t\t\tduration: duration,\r\n\t\t\t\teasing: easing,\r\n\t\t\t\tcomplete: complete,\r\n\t\t\t\tstep: function( now, fx ) {\r\n\t\t\t\t\tfx.now = Math.round( now );\r\n\t\t\t\t\tif ( fx.prop !== \"height\" ) {\r\n\t\t\t\t\t\tif ( boxSizing === \"content-box\" ) {\r\n\t\t\t\t\t\t\tadjust += fx.now;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else if ( that.options.heightStyle !== \"content\" ) {\r\n\t\t\t\t\t\tfx.now = Math.round( total - toHide.outerHeight() - adjust );\r\n\t\t\t\t\t\tadjust = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t},\r\n\r\n\t_toggleComplete: function( data ) {\r\n\t\tvar toHide = data.oldPanel,\r\n\t\t\tprev = toHide.prev();\r\n\r\n\t\tthis._removeClass( toHide, \"ui-accordion-content-active\" );\r\n\t\tthis._removeClass( prev, \"ui-accordion-header-active\" )\r\n\t\t\t._addClass( prev, \"ui-accordion-header-collapsed\" );\r\n\r\n\t\t// Work around for rendering bug in IE (#5421)\r\n\t\tif ( toHide.length ) {\r\n\t\t\ttoHide.parent()[ 0 ].className = toHide.parent()[ 0 ].className;\r\n\t\t}\r\n\t\tthis._trigger( \"activate\", null, data );\r\n\t}\r\n} );\r\n\r\n\r\n\r\n\r\n}));","/*!\r\n *\r\n * typed.js - A JavaScript Typing Animation Library\r\n * Author: Matt Boldt \r\n * Version: v2.0.8\r\n * Url: https://github.com/mattboldt/typed.js\r\n * License(s): MIT\r\n *\r\n */\r\n(function webpackUniversalModuleDefinition(root, factory) {\r\n\tif(typeof exports === 'object' && typeof module === 'object')\r\n\t\tmodule.exports = factory();\r\n\telse if(typeof define === 'function' && define.amd)\r\n\t\tdefine([], factory);\r\n\telse if(typeof exports === 'object')\r\n\t\texports[\"Typed\"] = factory();\r\n\telse\r\n\t\troot[\"Typed\"] = factory();\r\n})(this, function() {\r\nreturn /******/ (function(modules) { // webpackBootstrap\r\n/******/ \t// The module cache\r\n/******/ \tvar installedModules = {};\r\n/******/\r\n/******/ \t// The require function\r\n/******/ \tfunction __webpack_require__(moduleId) {\r\n/******/\r\n/******/ \t\t// Check if module is in cache\r\n/******/ \t\tif(installedModules[moduleId])\r\n/******/ \t\t\treturn installedModules[moduleId].exports;\r\n/******/\r\n/******/ \t\t// Create a new module (and put it into the cache)\r\n/******/ \t\tvar module = installedModules[moduleId] = {\r\n/******/ \t\t\texports: {},\r\n/******/ \t\t\tid: moduleId,\r\n/******/ \t\t\tloaded: false\r\n/******/ \t\t};\r\n/******/\r\n/******/ \t\t// Execute the module function\r\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\r\n/******/\r\n/******/ \t\t// Flag the module as loaded\r\n/******/ \t\tmodule.loaded = true;\r\n/******/\r\n/******/ \t\t// Return the exports of the module\r\n/******/ \t\treturn module.exports;\r\n/******/ \t}\r\n/******/\r\n/******/\r\n/******/ \t// expose the modules object (__webpack_modules__)\r\n/******/ \t__webpack_require__.m = modules;\r\n/******/\r\n/******/ \t// expose the module cache\r\n/******/ \t__webpack_require__.c = installedModules;\r\n/******/\r\n/******/ \t// __webpack_public_path__\r\n/******/ \t__webpack_require__.p = \"\";\r\n/******/\r\n/******/ \t// Load entry module and return exports\r\n/******/ \treturn __webpack_require__(0);\r\n/******/ })\r\n/************************************************************************/\r\n/******/ ([\r\n/* 0 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\t'use strict';\r\n\r\n\tObject.defineProperty(exports, '__esModule', {\r\n\t value: true\r\n\t});\r\n\r\n\tvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\r\n\r\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\r\n\r\n\tvar _initializerJs = __webpack_require__(1);\r\n\r\n\tvar _htmlParserJs = __webpack_require__(3);\r\n\r\n\t/**\r\n\t * Welcome to Typed.js!\r\n\t * @param {string} elementId HTML element ID _OR_ HTML element\r\n\t * @param {object} options options object\r\n\t * @returns {object} a new Typed object\r\n\t */\r\n\r\n\tvar Typed = (function () {\r\n\t function Typed(elementId, options) {\r\n\t _classCallCheck(this, Typed);\r\n\r\n\t // Initialize it up\r\n\t _initializerJs.initializer.load(this, options, elementId);\r\n\t // All systems go!\r\n\t this.begin();\r\n\t }\r\n\r\n\t /**\r\n\t * Toggle start() and stop() of the Typed instance\r\n\t * @public\r\n\t */\r\n\r\n\t _createClass(Typed, [{\r\n\t key: 'toggle',\r\n\t value: function toggle() {\r\n\t this.pause.status ? this.start() : this.stop();\r\n\t }\r\n\r\n\t /**\r\n\t * Stop typing / backspacing and enable cursor blinking\r\n\t * @public\r\n\t */\r\n\t }, {\r\n\t key: 'stop',\r\n\t value: function stop() {\r\n\t if (this.typingComplete) return;\r\n\t if (this.pause.status) return;\r\n\t this.toggleBlinking(true);\r\n\t this.pause.status = true;\r\n\t this.options.onStop(this.arrayPos, this);\r\n\t }\r\n\r\n\t /**\r\n\t * Start typing / backspacing after being stopped\r\n\t * @public\r\n\t */\r\n\t }, {\r\n\t key: 'start',\r\n\t value: function start() {\r\n\t if (this.typingComplete) return;\r\n\t if (!this.pause.status) return;\r\n\t this.pause.status = false;\r\n\t if (this.pause.typewrite) {\r\n\t this.typewrite(this.pause.curString, this.pause.curStrPos);\r\n\t } else {\r\n\t this.backspace(this.pause.curString, this.pause.curStrPos);\r\n\t }\r\n\t this.options.onStart(this.arrayPos, this);\r\n\t }\r\n\r\n\t /**\r\n\t * Destroy this instance of Typed\r\n\t * @public\r\n\t */\r\n\t }, {\r\n\t key: 'destroy',\r\n\t value: function destroy() {\r\n\t this.reset(false);\r\n\t this.options.onDestroy(this);\r\n\t }\r\n\r\n\t /**\r\n\t * Reset Typed and optionally restarts\r\n\t * @param {boolean} restart\r\n\t * @public\r\n\t */\r\n\t }, {\r\n\t key: 'reset',\r\n\t value: function reset() {\r\n\t var restart = arguments.length <= 0 || arguments[0] === undefined ? true : arguments[0];\r\n\r\n\t clearInterval(this.timeout);\r\n\t this.replaceText('');\r\n\t if (this.cursor && this.cursor.parentNode) {\r\n\t this.cursor.parentNode.removeChild(this.cursor);\r\n\t this.cursor = null;\r\n\t }\r\n\t this.strPos = 0;\r\n\t this.arrayPos = 0;\r\n\t this.curLoop = 0;\r\n\t if (restart) {\r\n\t this.insertCursor();\r\n\t this.options.onReset(this);\r\n\t this.begin();\r\n\t }\r\n\t }\r\n\r\n\t /**\r\n\t * Begins the typing animation\r\n\t * @private\r\n\t */\r\n\t }, {\r\n\t key: 'begin',\r\n\t value: function begin() {\r\n\t var _this = this;\r\n\r\n\t this.typingComplete = false;\r\n\t this.shuffleStringsIfNeeded(this);\r\n\t this.insertCursor();\r\n\t if (this.bindInputFocusEvents) this.bindFocusEvents();\r\n\t this.timeout = setTimeout(function () {\r\n\t // Check if there is some text in the element, if yes start by backspacing the default message\r\n\t if (!_this.currentElContent || _this.currentElContent.length === 0) {\r\n\t _this.typewrite(_this.strings[_this.sequence[_this.arrayPos]], _this.strPos);\r\n\t } else {\r\n\t // Start typing\r\n\t _this.backspace(_this.currentElContent, _this.currentElContent.length);\r\n\t }\r\n\t }, this.startDelay);\r\n\t }\r\n\r\n\t /**\r\n\t * Called for each character typed\r\n\t * @param {string} curString the current string in the strings array\r\n\t * @param {number} curStrPos the current position in the curString\r\n\t * @private\r\n\t */\r\n\t }, {\r\n\t key: 'typewrite',\r\n\t value: function typewrite(curString, curStrPos) {\r\n\t var _this2 = this;\r\n\r\n\t if (this.fadeOut && this.el.classList.contains(this.fadeOutClass)) {\r\n\t this.el.classList.remove(this.fadeOutClass);\r\n\t if (this.cursor) this.cursor.classList.remove(this.fadeOutClass);\r\n\t }\r\n\r\n\t var humanize = this.humanizer(this.typeSpeed);\r\n\t var numChars = 1;\r\n\r\n\t if (this.pause.status === true) {\r\n\t this.setPauseStatus(curString, curStrPos, true);\r\n\t return;\r\n\t }\r\n\r\n\t // contain typing function in a timeout humanize'd delay\r\n\t this.timeout = setTimeout(function () {\r\n\t // skip over any HTML chars\r\n\t curStrPos = _htmlParserJs.htmlParser.typeHtmlChars(curString, curStrPos, _this2);\r\n\r\n\t var pauseTime = 0;\r\n\t var substr = curString.substr(curStrPos);\r\n\t // check for an escape character before a pause value\r\n\t // format: \\^\\d+ .. eg: ^1000 .. should be able to print the ^ too using ^^\r\n\t // single ^ are removed from string\r\n\t if (substr.charAt(0) === '^') {\r\n\t if (/^\\^\\d+/.test(substr)) {\r\n\t var skip = 1; // skip at least 1\r\n\t substr = /\\d+/.exec(substr)[0];\r\n\t skip += substr.length;\r\n\t pauseTime = parseInt(substr);\r\n\t _this2.temporaryPause = true;\r\n\t _this2.options.onTypingPaused(_this2.arrayPos, _this2);\r\n\t // strip out the escape character and pause value so they're not printed\r\n\t curString = curString.substring(0, curStrPos) + curString.substring(curStrPos + skip);\r\n\t _this2.toggleBlinking(true);\r\n\t }\r\n\t }\r\n\r\n\t // check for skip characters formatted as\r\n\t // \"this is a `string to print NOW` ...\"\r\n\t if (substr.charAt(0) === '`') {\r\n\t while (curString.substr(curStrPos + numChars).charAt(0) !== '`') {\r\n\t numChars++;\r\n\t if (curStrPos + numChars > curString.length) break;\r\n\t }\r\n\t // strip out the escape characters and append all the string in between\r\n\t var stringBeforeSkip = curString.substring(0, curStrPos);\r\n\t var stringSkipped = curString.substring(stringBeforeSkip.length + 1, curStrPos + numChars);\r\n\t var stringAfterSkip = curString.substring(curStrPos + numChars + 1);\r\n\t curString = stringBeforeSkip + stringSkipped + stringAfterSkip;\r\n\t numChars--;\r\n\t }\r\n\r\n\t // timeout for any pause after a character\r\n\t _this2.timeout = setTimeout(function () {\r\n\t // Accounts for blinking while paused\r\n\t _this2.toggleBlinking(false);\r\n\r\n\t // We're done with this sentence!\r\n\t if (curStrPos === curString.length) {\r\n\t _this2.doneTyping(curString, curStrPos);\r\n\t } else {\r\n\t _this2.keepTyping(curString, curStrPos, numChars);\r\n\t }\r\n\t // end of character pause\r\n\t if (_this2.temporaryPause) {\r\n\t _this2.temporaryPause = false;\r\n\t _this2.options.onTypingResumed(_this2.arrayPos, _this2);\r\n\t }\r\n\t }, pauseTime);\r\n\r\n\t // humanized value for typing\r\n\t }, humanize);\r\n\t }\r\n\r\n\t /**\r\n\t * Continue to the next string & begin typing\r\n\t * @param {string} curString the current string in the strings array\r\n\t * @param {number} curStrPos the current position in the curString\r\n\t * @private\r\n\t */\r\n\t }, {\r\n\t key: 'keepTyping',\r\n\t value: function keepTyping(curString, curStrPos, numChars) {\r\n\t // call before functions if applicable\r\n\t if (curStrPos === 0) {\r\n\t this.toggleBlinking(false);\r\n\t this.options.preStringTyped(this.arrayPos, this);\r\n\t }\r\n\t // start typing each new char into existing string\r\n\t // curString: arg, this.el.html: original text inside element\r\n\t curStrPos += numChars;\r\n\t var nextString = curString.substr(0, curStrPos);\r\n\t this.replaceText(nextString);\r\n\t // loop the function\r\n\t this.typewrite(curString, curStrPos);\r\n\t }\r\n\r\n\t /**\r\n\t * We're done typing all strings\r\n\t * @param {string} curString the current string in the strings array\r\n\t * @param {number} curStrPos the current position in the curString\r\n\t * @private\r\n\t */\r\n\t }, {\r\n\t key: 'doneTyping',\r\n\t value: function doneTyping(curString, curStrPos) {\r\n\t var _this3 = this;\r\n\r\n\t // fires callback function\r\n\t this.options.onStringTyped(this.arrayPos, this);\r\n\t this.toggleBlinking(true);\r\n\t // is this the final string\r\n\t if (this.arrayPos === this.strings.length - 1) {\r\n\t // callback that occurs on the last typed string\r\n\t this.complete();\r\n\t // quit if we wont loop back\r\n\t if (this.loop === false || this.curLoop === this.loopCount) {\r\n\t return;\r\n\t }\r\n\t }\r\n\t this.timeout = setTimeout(function () {\r\n\t _this3.backspace(curString, curStrPos);\r\n\t }, this.backDelay);\r\n\t }\r\n\r\n\t /**\r\n\t * Backspaces 1 character at a time\r\n\t * @param {string} curString the current string in the strings array\r\n\t * @param {number} curStrPos the current position in the curString\r\n\t * @private\r\n\t */\r\n\t }, {\r\n\t key: 'backspace',\r\n\t value: function backspace(curString, curStrPos) {\r\n\t var _this4 = this;\r\n\r\n\t if (this.pause.status === true) {\r\n\t this.setPauseStatus(curString, curStrPos, true);\r\n\t return;\r\n\t }\r\n\t if (this.fadeOut) return this.initFadeOut();\r\n\r\n\t this.toggleBlinking(false);\r\n\t var humanize = this.humanizer(this.backSpeed);\r\n\r\n\t this.timeout = setTimeout(function () {\r\n\t curStrPos = _htmlParserJs.htmlParser.backSpaceHtmlChars(curString, curStrPos, _this4);\r\n\t // replace text with base text + typed characters\r\n\t var curStringAtPosition = curString.substr(0, curStrPos);\r\n\t _this4.replaceText(curStringAtPosition);\r\n\r\n\t // if smartBack is enabled\r\n\t if (_this4.smartBackspace) {\r\n\t // the remaining part of the current string is equal of the same part of the new string\r\n\t var nextString = _this4.strings[_this4.arrayPos + 1];\r\n\t if (nextString && curStringAtPosition === nextString.substr(0, curStrPos)) {\r\n\t _this4.stopNum = curStrPos;\r\n\t } else {\r\n\t _this4.stopNum = 0;\r\n\t }\r\n\t }\r\n\r\n\t // if the number (id of character in current string) is\r\n\t // less than the stop number, keep going\r\n\t if (curStrPos > _this4.stopNum) {\r\n\t // subtract characters one by one\r\n\t curStrPos--;\r\n\t // loop the function\r\n\t _this4.backspace(curString, curStrPos);\r\n\t } else if (curStrPos <= _this4.stopNum) {\r\n\t // if the stop number has been reached, increase\r\n\t // array position to next string\r\n\t _this4.arrayPos++;\r\n\t // When looping, begin at the beginning after backspace complete\r\n\t if (_this4.arrayPos === _this4.strings.length) {\r\n\t _this4.arrayPos = 0;\r\n\t _this4.options.onLastStringBackspaced();\r\n\t _this4.shuffleStringsIfNeeded();\r\n\t _this4.begin();\r\n\t } else {\r\n\t _this4.typewrite(_this4.strings[_this4.sequence[_this4.arrayPos]], curStrPos);\r\n\t }\r\n\t }\r\n\t // humanized value for typing\r\n\t }, humanize);\r\n\t }\r\n\r\n\t /**\r\n\t * Full animation is complete\r\n\t * @private\r\n\t */\r\n\t }, {\r\n\t key: 'complete',\r\n\t value: function complete() {\r\n\t this.options.onComplete(this);\r\n\t if (this.loop) {\r\n\t this.curLoop++;\r\n\t } else {\r\n\t this.typingComplete = true;\r\n\t }\r\n\t }\r\n\r\n\t /**\r\n\t * Has the typing been stopped\r\n\t * @param {string} curString the current string in the strings array\r\n\t * @param {number} curStrPos the current position in the curString\r\n\t * @param {boolean} isTyping\r\n\t * @private\r\n\t */\r\n\t }, {\r\n\t key: 'setPauseStatus',\r\n\t value: function setPauseStatus(curString, curStrPos, isTyping) {\r\n\t this.pause.typewrite = isTyping;\r\n\t this.pause.curString = curString;\r\n\t this.pause.curStrPos = curStrPos;\r\n\t }\r\n\r\n\t /**\r\n\t * Toggle the blinking cursor\r\n\t * @param {boolean} isBlinking\r\n\t * @private\r\n\t */\r\n\t }, {\r\n\t key: 'toggleBlinking',\r\n\t value: function toggleBlinking(isBlinking) {\r\n\t if (!this.cursor) return;\r\n\t // if in paused state, don't toggle blinking a 2nd time\r\n\t if (this.pause.status) return;\r\n\t if (this.cursorBlinking === isBlinking) return;\r\n\t this.cursorBlinking = isBlinking;\r\n\t if (isBlinking) {\r\n\t this.cursor.classList.add('typed-cursor--blink');\r\n\t } else {\r\n\t this.cursor.classList.remove('typed-cursor--blink');\r\n\t }\r\n\t }\r\n\r\n\t /**\r\n\t * Speed in MS to type\r\n\t * @param {number} speed\r\n\t * @private\r\n\t */\r\n\t }, {\r\n\t key: 'humanizer',\r\n\t value: function humanizer(speed) {\r\n\t return Math.round(Math.random() * speed / 2) + speed;\r\n\t }\r\n\r\n\t /**\r\n\t * Shuffle the sequence of the strings array\r\n\t * @private\r\n\t */\r\n\t }, {\r\n\t key: 'shuffleStringsIfNeeded',\r\n\t value: function shuffleStringsIfNeeded() {\r\n\t if (!this.shuffle) return;\r\n\t this.sequence = this.sequence.sort(function () {\r\n\t return Math.random() - 0.5;\r\n\t });\r\n\t }\r\n\r\n\t /**\r\n\t * Adds a CSS class to fade out current string\r\n\t * @private\r\n\t */\r\n\t }, {\r\n\t key: 'initFadeOut',\r\n\t value: function initFadeOut() {\r\n\t var _this5 = this;\r\n\r\n\t this.el.className += ' ' + this.fadeOutClass;\r\n\t if (this.cursor) this.cursor.className += ' ' + this.fadeOutClass;\r\n\t return setTimeout(function () {\r\n\t _this5.arrayPos++;\r\n\t _this5.replaceText('');\r\n\r\n\t // Resets current string if end of loop reached\r\n\t if (_this5.strings.length > _this5.arrayPos) {\r\n\t _this5.typewrite(_this5.strings[_this5.sequence[_this5.arrayPos]], 0);\r\n\t } else {\r\n\t _this5.typewrite(_this5.strings[0], 0);\r\n\t _this5.arrayPos = 0;\r\n\t }\r\n\t }, this.fadeOutDelay);\r\n\t }\r\n\r\n\t /**\r\n\t * Replaces current text in the HTML element\r\n\t * depending on element type\r\n\t * @param {string} str\r\n\t * @private\r\n\t */\r\n\t }, {\r\n\t key: 'replaceText',\r\n\t value: function replaceText(str) {\r\n\t if (this.attr) {\r\n\t this.el.setAttribute(this.attr, str);\r\n\t } else {\r\n\t if (this.isInput) {\r\n\t this.el.value = str;\r\n\t } else if (this.contentType === 'html') {\r\n\t this.el.innerHTML = str;\r\n\t } else {\r\n\t this.el.textContent = str;\r\n\t }\r\n\t }\r\n\t }\r\n\r\n\t /**\r\n\t * If using input elements, bind focus in order to\r\n\t * start and stop the animation\r\n\t * @private\r\n\t */\r\n\t }, {\r\n\t key: 'bindFocusEvents',\r\n\t value: function bindFocusEvents() {\r\n\t var _this6 = this;\r\n\r\n\t if (!this.isInput) return;\r\n\t this.el.addEventListener('focus', function (e) {\r\n\t _this6.stop();\r\n\t });\r\n\t this.el.addEventListener('blur', function (e) {\r\n\t if (_this6.el.value && _this6.el.value.length !== 0) {\r\n\t return;\r\n\t }\r\n\t _this6.start();\r\n\t });\r\n\t }\r\n\r\n\t /**\r\n\t * On init, insert the cursor element\r\n\t * @private\r\n\t */\r\n\t }, {\r\n\t key: 'insertCursor',\r\n\t value: function insertCursor() {\r\n\t if (!this.showCursor) return;\r\n\t if (this.cursor) return;\r\n\t this.cursor = document.createElement('span');\r\n\t this.cursor.className = 'typed-cursor';\r\n\t this.cursor.innerHTML = this.cursorChar;\r\n\t this.el.parentNode && this.el.parentNode.insertBefore(this.cursor, this.el.nextSibling);\r\n\t }\r\n\t }]);\r\n\r\n\t return Typed;\r\n\t})();\r\n\r\n\texports['default'] = Typed;\r\n\tmodule.exports = exports['default'];\r\n\r\n/***/ }),\r\n/* 1 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\t'use strict';\r\n\r\n\tObject.defineProperty(exports, '__esModule', {\r\n\t value: true\r\n\t});\r\n\r\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\r\n\r\n\tvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\r\n\r\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\r\n\r\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\r\n\r\n\tvar _defaultsJs = __webpack_require__(2);\r\n\r\n\tvar _defaultsJs2 = _interopRequireDefault(_defaultsJs);\r\n\r\n\t/**\r\n\t * Initialize the Typed object\r\n\t */\r\n\r\n\tvar Initializer = (function () {\r\n\t function Initializer() {\r\n\t _classCallCheck(this, Initializer);\r\n\t }\r\n\r\n\t _createClass(Initializer, [{\r\n\t key: 'load',\r\n\r\n\t /**\r\n\t * Load up defaults & options on the Typed instance\r\n\t * @param {Typed} self instance of Typed\r\n\t * @param {object} options options object\r\n\t * @param {string} elementId HTML element ID _OR_ instance of HTML element\r\n\t * @private\r\n\t */\r\n\r\n\t value: function load(self, options, elementId) {\r\n\t // chosen element to manipulate text\r\n\t if (typeof elementId === 'string') {\r\n\t self.el = document.querySelector(elementId);\r\n\t } else {\r\n\t self.el = elementId;\r\n\t }\r\n\r\n\t self.options = _extends({}, _defaultsJs2['default'], options);\r\n\r\n\t // attribute to type into\r\n\t self.isInput = self.el.tagName.toLowerCase() === 'input';\r\n\t self.attr = self.options.attr;\r\n\t self.bindInputFocusEvents = self.options.bindInputFocusEvents;\r\n\r\n\t // show cursor\r\n\t self.showCursor = self.isInput ? false : self.options.showCursor;\r\n\r\n\t // custom cursor\r\n\t self.cursorChar = self.options.cursorChar;\r\n\r\n\t // Is the cursor blinking\r\n\t self.cursorBlinking = true;\r\n\r\n\t // text content of element\r\n\t self.elContent = self.attr ? self.el.getAttribute(self.attr) : self.el.textContent;\r\n\r\n\t // html or plain text\r\n\t self.contentType = self.options.contentType;\r\n\r\n\t // typing speed\r\n\t self.typeSpeed = self.options.typeSpeed;\r\n\r\n\t // add a delay before typing starts\r\n\t self.startDelay = self.options.startDelay;\r\n\r\n\t // backspacing speed\r\n\t self.backSpeed = self.options.backSpeed;\r\n\r\n\t // only backspace what doesn't match the previous string\r\n\t self.smartBackspace = self.options.smartBackspace;\r\n\r\n\t // amount of time to wait before backspacing\r\n\t self.backDelay = self.options.backDelay;\r\n\r\n\t // Fade out instead of backspace\r\n\t self.fadeOut = self.options.fadeOut;\r\n\t self.fadeOutClass = self.options.fadeOutClass;\r\n\t self.fadeOutDelay = self.options.fadeOutDelay;\r\n\r\n\t // variable to check whether typing is currently paused\r\n\t self.isPaused = false;\r\n\r\n\t // input strings of text\r\n\t self.strings = self.options.strings.map(function (s) {\r\n\t return s.trim();\r\n\t });\r\n\r\n\t // div containing strings\r\n\t if (typeof self.options.stringsElement === 'string') {\r\n\t self.stringsElement = document.querySelector(self.options.stringsElement);\r\n\t } else {\r\n\t self.stringsElement = self.options.stringsElement;\r\n\t }\r\n\r\n\t if (self.stringsElement) {\r\n\t self.strings = [];\r\n\t self.stringsElement.style.display = 'none';\r\n\t var strings = Array.prototype.slice.apply(self.stringsElement.children);\r\n\t var stringsLength = strings.length;\r\n\r\n\t if (stringsLength) {\r\n\t for (var i = 0; i < stringsLength; i += 1) {\r\n\t var stringEl = strings[i];\r\n\t self.strings.push(stringEl.innerHTML.trim());\r\n\t }\r\n\t }\r\n\t }\r\n\r\n\t // character number position of current string\r\n\t self.strPos = 0;\r\n\r\n\t // current array position\r\n\t self.arrayPos = 0;\r\n\r\n\t // index of string to stop backspacing on\r\n\t self.stopNum = 0;\r\n\r\n\t // Looping logic\r\n\t self.loop = self.options.loop;\r\n\t self.loopCount = self.options.loopCount;\r\n\t self.curLoop = 0;\r\n\r\n\t // shuffle the strings\r\n\t self.shuffle = self.options.shuffle;\r\n\t // the order of strings\r\n\t self.sequence = [];\r\n\r\n\t self.pause = {\r\n\t status: false,\r\n\t typewrite: true,\r\n\t curString: '',\r\n\t curStrPos: 0\r\n\t };\r\n\r\n\t // When the typing is complete (when not looped)\r\n\t self.typingComplete = false;\r\n\r\n\t // Set the order in which the strings are typed\r\n\t for (var i in self.strings) {\r\n\t self.sequence[i] = i;\r\n\t }\r\n\r\n\t // If there is some text in the element\r\n\t self.currentElContent = this.getCurrentElContent(self);\r\n\r\n\t self.autoInsertCss = self.options.autoInsertCss;\r\n\r\n\t this.appendAnimationCss(self);\r\n\t }\r\n\t }, {\r\n\t key: 'getCurrentElContent',\r\n\t value: function getCurrentElContent(self) {\r\n\t var elContent = '';\r\n\t if (self.attr) {\r\n\t elContent = self.el.getAttribute(self.attr);\r\n\t } else if (self.isInput) {\r\n\t elContent = self.el.value;\r\n\t } else if (self.contentType === 'html') {\r\n\t elContent = self.el.innerHTML;\r\n\t } else {\r\n\t elContent = self.el.textContent;\r\n\t }\r\n\t return elContent;\r\n\t }\r\n\t }, {\r\n\t key: 'appendAnimationCss',\r\n\t value: function appendAnimationCss(self) {\r\n\t var cssDataName = 'data-typed-js-css';\r\n\t if (!self.autoInsertCss) {\r\n\t return;\r\n\t }\r\n\t if (!self.showCursor && !self.fadeOut) {\r\n\t return;\r\n\t }\r\n\t if (document.querySelector('[' + cssDataName + ']')) {\r\n\t return;\r\n\t }\r\n\r\n\t var css = document.createElement('style');\r\n\t css.type = 'text/css';\r\n\t css.setAttribute(cssDataName, true);\r\n\r\n\t var innerCss = '';\r\n\t if (self.showCursor) {\r\n\t innerCss += '\\n .typed-cursor{\\n opacity: 1;\\n }\\n .typed-cursor.typed-cursor--blink{\\n animation: typedjsBlink 0.7s infinite;\\n -webkit-animation: typedjsBlink 0.7s infinite;\\n animation: typedjsBlink 0.7s infinite;\\n }\\n @keyframes typedjsBlink{\\n 50% { opacity: 0.0; }\\n }\\n @-webkit-keyframes typedjsBlink{\\n 0% { opacity: 1; }\\n 50% { opacity: 0.0; }\\n 100% { opacity: 1; }\\n }\\n ';\r\n\t }\r\n\t if (self.fadeOut) {\r\n\t innerCss += '\\n .typed-fade-out{\\n opacity: 0;\\n transition: opacity .25s;\\n }\\n .typed-cursor.typed-cursor--blink.typed-fade-out{\\n -webkit-animation: 0;\\n animation: 0;\\n }\\n ';\r\n\t }\r\n\t if (css.length === 0) {\r\n\t return;\r\n\t }\r\n\t css.innerHTML = innerCss;\r\n\t document.body.appendChild(css);\r\n\t }\r\n\t }]);\r\n\r\n\t return Initializer;\r\n\t})();\r\n\r\n\texports['default'] = Initializer;\r\n\tvar initializer = new Initializer();\r\n\texports.initializer = initializer;\r\n\r\n/***/ }),\r\n/* 2 */\r\n/***/ (function(module, exports) {\r\n\r\n\t/**\r\n\t * Defaults & options\r\n\t * @returns {object} Typed defaults & options\r\n\t * @public\r\n\t */\r\n\r\n\t'use strict';\r\n\r\n\tObject.defineProperty(exports, '__esModule', {\r\n\t value: true\r\n\t});\r\n\tvar defaults = {\r\n\t /**\r\n\t * @property {array} strings strings to be typed\r\n\t * @property {string} stringsElement ID of element containing string children\r\n\t */\r\n\t strings: ['These are the default values...', 'You know what you should do?', 'Use your own!', 'Have a great day!'],\r\n\t stringsElement: null,\r\n\r\n\t /**\r\n\t * @property {number} typeSpeed type speed in milliseconds\r\n\t */\r\n\t typeSpeed: 0,\r\n\r\n\t /**\r\n\t * @property {number} startDelay time before typing starts in milliseconds\r\n\t */\r\n\t startDelay: 0,\r\n\r\n\t /**\r\n\t * @property {number} backSpeed backspacing speed in milliseconds\r\n\t */\r\n\t backSpeed: 0,\r\n\r\n\t /**\r\n\t * @property {boolean} smartBackspace only backspace what doesn't match the previous string\r\n\t */\r\n\t smartBackspace: true,\r\n\r\n\t /**\r\n\t * @property {boolean} shuffle shuffle the strings\r\n\t */\r\n\t shuffle: false,\r\n\r\n\t /**\r\n\t * @property {number} backDelay time before backspacing in milliseconds\r\n\t */\r\n\t backDelay: 700,\r\n\r\n\t /**\r\n\t * @property {boolean} fadeOut Fade out instead of backspace\r\n\t * @property {string} fadeOutClass css class for fade animation\r\n\t * @property {boolean} fadeOutDelay Fade out delay in milliseconds\r\n\t */\r\n\t fadeOut: false,\r\n\t fadeOutClass: 'typed-fade-out',\r\n\t fadeOutDelay: 500,\r\n\r\n\t /**\r\n\t * @property {boolean} loop loop strings\r\n\t * @property {number} loopCount amount of loops\r\n\t */\r\n\t loop: false,\r\n\t loopCount: Infinity,\r\n\r\n\t /**\r\n\t * @property {boolean} showCursor show cursor\r\n\t * @property {string} cursorChar character for cursor\r\n\t * @property {boolean} autoInsertCss insert CSS for cursor and fadeOut into HTML \r\n\t */\r\n\t showCursor: true,\r\n\t cursorChar: '|',\r\n\t autoInsertCss: true,\r\n\r\n\t /**\r\n\t * @property {string} attr attribute for typing\r\n\t * Ex: input placeholder, value, or just HTML text\r\n\t */\r\n\t attr: null,\r\n\r\n\t /**\r\n\t * @property {boolean} bindInputFocusEvents bind to focus and blur if el is text input\r\n\t */\r\n\t bindInputFocusEvents: false,\r\n\r\n\t /**\r\n\t * @property {string} contentType 'html' or 'null' for plaintext\r\n\t */\r\n\t contentType: 'html',\r\n\r\n\t /**\r\n\t * All typing is complete\r\n\t * @param {Typed} self\r\n\t */\r\n\t onComplete: function onComplete(self) {},\r\n\r\n\t /**\r\n\t * Before each string is typed\r\n\t * @param {number} arrayPos\r\n\t * @param {Typed} self\r\n\t */\r\n\t preStringTyped: function preStringTyped(arrayPos, self) {},\r\n\r\n\t /**\r\n\t * After each string is typed\r\n\t * @param {number} arrayPos\r\n\t * @param {Typed} self\r\n\t */\r\n\t onStringTyped: function onStringTyped(arrayPos, self) {},\r\n\r\n\t /**\r\n\t * During looping, after last string is typed\r\n\t * @param {Typed} self\r\n\t */\r\n\t onLastStringBackspaced: function onLastStringBackspaced(self) {},\r\n\r\n\t /**\r\n\t * Typing has been stopped\r\n\t * @param {number} arrayPos\r\n\t * @param {Typed} self\r\n\t */\r\n\t onTypingPaused: function onTypingPaused(arrayPos, self) {},\r\n\r\n\t /**\r\n\t * Typing has been started after being stopped\r\n\t * @param {number} arrayPos\r\n\t * @param {Typed} self\r\n\t */\r\n\t onTypingResumed: function onTypingResumed(arrayPos, self) {},\r\n\r\n\t /**\r\n\t * After reset\r\n\t * @param {Typed} self\r\n\t */\r\n\t onReset: function onReset(self) {},\r\n\r\n\t /**\r\n\t * After stop\r\n\t * @param {number} arrayPos\r\n\t * @param {Typed} self\r\n\t */\r\n\t onStop: function onStop(arrayPos, self) {},\r\n\r\n\t /**\r\n\t * After start\r\n\t * @param {number} arrayPos\r\n\t * @param {Typed} self\r\n\t */\r\n\t onStart: function onStart(arrayPos, self) {},\r\n\r\n\t /**\r\n\t * After destroy\r\n\t * @param {Typed} self\r\n\t */\r\n\t onDestroy: function onDestroy(self) {}\r\n\t};\r\n\r\n\texports['default'] = defaults;\r\n\tmodule.exports = exports['default'];\r\n\r\n/***/ }),\r\n/* 3 */\r\n/***/ (function(module, exports) {\r\n\r\n\r\n\t/**\r\n\t * TODO: These methods can probably be combined somehow\r\n\t * Parse HTML tags & HTML Characters\r\n\t */\r\n\r\n\t'use strict';\r\n\r\n\tObject.defineProperty(exports, '__esModule', {\r\n\t value: true\r\n\t});\r\n\r\n\tvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\r\n\r\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\r\n\r\n\tvar HTMLParser = (function () {\r\n\t function HTMLParser() {\r\n\t _classCallCheck(this, HTMLParser);\r\n\t }\r\n\r\n\t _createClass(HTMLParser, [{\r\n\t key: 'typeHtmlChars',\r\n\r\n\t /**\r\n\t * Type HTML tags & HTML Characters\r\n\t * @param {string} curString Current string\r\n\t * @param {number} curStrPos Position in current string\r\n\t * @param {Typed} self instance of Typed\r\n\t * @returns {number} a new string position\r\n\t * @private\r\n\t */\r\n\r\n\t value: function typeHtmlChars(curString, curStrPos, self) {\r\n\t if (self.contentType !== 'html') return curStrPos;\r\n\t var curChar = curString.substr(curStrPos).charAt(0);\r\n\t if (curChar === '<' || curChar === '&') {\r\n\t var endTag = '';\r\n\t if (curChar === '<') {\r\n\t endTag = '>';\r\n\t } else {\r\n\t endTag = ';';\r\n\t }\r\n\t while (curString.substr(curStrPos + 1).charAt(0) !== endTag) {\r\n\t curStrPos++;\r\n\t if (curStrPos + 1 > curString.length) {\r\n\t break;\r\n\t }\r\n\t }\r\n\t curStrPos++;\r\n\t }\r\n\t return curStrPos;\r\n\t }\r\n\r\n\t /**\r\n\t * Backspace HTML tags and HTML Characters\r\n\t * @param {string} curString Current string\r\n\t * @param {number} curStrPos Position in current string\r\n\t * @param {Typed} self instance of Typed\r\n\t * @returns {number} a new string position\r\n\t * @private\r\n\t */\r\n\t }, {\r\n\t key: 'backSpaceHtmlChars',\r\n\t value: function backSpaceHtmlChars(curString, curStrPos, self) {\r\n\t if (self.contentType !== 'html') return curStrPos;\r\n\t var curChar = curString.substr(curStrPos).charAt(0);\r\n\t if (curChar === '>' || curChar === ';') {\r\n\t var endTag = '';\r\n\t if (curChar === '>') {\r\n\t endTag = '<';\r\n\t } else {\r\n\t endTag = '&';\r\n\t }\r\n\t while (curString.substr(curStrPos - 1).charAt(0) !== endTag) {\r\n\t curStrPos--;\r\n\t if (curStrPos < 0) {\r\n\t break;\r\n\t }\r\n\t }\r\n\t curStrPos--;\r\n\t }\r\n\t return curStrPos;\r\n\t }\r\n\t }]);\r\n\r\n\t return HTMLParser;\r\n\t})();\r\n\r\n\texports['default'] = HTMLParser;\r\n\tvar htmlParser = new HTMLParser();\r\n\texports.htmlParser = htmlParser;\r\n\r\n/***/ })\r\n/******/ ])\r\n});\r\n;\r\n","/*!\r\n * Select2 4.0.6-rc.1\r\n * https://select2.github.io\r\n *\r\n * Released under the MIT license\r\n * https://github.com/select2/select2/blob/master/LICENSE.md\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'], factory);\r\n } else if (typeof module === 'object' && module.exports) {\r\n // Node/CommonJS\r\n module.exports = function (root, jQuery) {\r\n if (jQuery === undefined) {\r\n // require('jQuery') returns a factory that requires window to\r\n // build a jQuery instance, we normalize how we use modules\r\n // that require this pattern but the window provided is a noop\r\n // if it's defined (how jquery works)\r\n if (typeof window !== 'undefined') {\r\n jQuery = require('jquery');\r\n }\r\n else {\r\n jQuery = require('jquery')(root);\r\n }\r\n }\r\n factory(jQuery);\r\n return jQuery;\r\n };\r\n } else {\r\n // Browser globals\r\n factory(jQuery);\r\n }\r\n} (function (jQuery) {\r\n // This is needed so we can catch the AMD loader configuration and use it\r\n // The inner file should be wrapped (by `banner.start.js`) in a function that\r\n // returns the AMD loader references.\r\n var S2 =(function () {\r\n // Restore the Select2 AMD loader so it can be used\r\n // Needed mostly in the language files, where the loader is not inserted\r\n if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) {\r\n var S2 = jQuery.fn.select2.amd;\r\n }\r\nvar S2;(function () { if (!S2 || !S2.requirejs) {\r\nif (!S2) { S2 = {}; } else { require = S2; }\r\n/**\r\n * @license almond 0.3.3 Copyright jQuery Foundation and other contributors.\r\n * Released under MIT license, http://github.com/requirejs/almond/LICENSE\r\n */\r\n//Going sloppy to avoid 'use strict' string cost, but strict practices should\r\n//be followed.\r\n/*global setTimeout: false */\r\n\r\nvar requirejs, require, define;\r\n(function (undef) {\r\n var main, req, makeMap, handlers,\r\n defined = {},\r\n waiting = {},\r\n config = {},\r\n defining = {},\r\n hasOwn = Object.prototype.hasOwnProperty,\r\n aps = [].slice,\r\n jsSuffixRegExp = /\\.js$/;\r\n\r\n function hasProp(obj, prop) {\r\n return hasOwn.call(obj, prop);\r\n }\r\n\r\n /**\r\n * Given a relative module name, like ./something, normalize it to\r\n * a real name that can be mapped to a path.\r\n * @param {String} name the relative name\r\n * @param {String} baseName a real name that the name arg is relative\r\n * to.\r\n * @returns {String} normalized name\r\n */\r\n function normalize(name, baseName) {\r\n var nameParts, nameSegment, mapValue, foundMap, lastIndex,\r\n foundI, foundStarMap, starI, i, j, part, normalizedBaseParts,\r\n baseParts = baseName && baseName.split(\"/\"),\r\n map = config.map,\r\n starMap = (map && map['*']) || {};\r\n\r\n //Adjust any relative paths.\r\n if (name) {\r\n name = name.split('/');\r\n lastIndex = name.length - 1;\r\n\r\n // If wanting node ID compatibility, strip .js from end\r\n // of IDs. Have to do this here, and not in nameToUrl\r\n // because node allows either .js or non .js to map\r\n // to same file.\r\n if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {\r\n name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');\r\n }\r\n\r\n // Starts with a '.' so need the baseName\r\n if (name[0].charAt(0) === '.' && baseParts) {\r\n //Convert baseName to array, and lop off the last part,\r\n //so that . matches that 'directory' and not name of the baseName's\r\n //module. For instance, baseName of 'one/two/three', maps to\r\n //'one/two/three.js', but we want the directory, 'one/two' for\r\n //this normalization.\r\n normalizedBaseParts = baseParts.slice(0, baseParts.length - 1);\r\n name = normalizedBaseParts.concat(name);\r\n }\r\n\r\n //start trimDots\r\n for (i = 0; i < name.length; i++) {\r\n part = name[i];\r\n if (part === '.') {\r\n name.splice(i, 1);\r\n i -= 1;\r\n } else if (part === '..') {\r\n // If at the start, or previous value is still ..,\r\n // keep them so that when converted to a path it may\r\n // still work when converted to a path, even though\r\n // as an ID it is less than ideal. In larger point\r\n // releases, may be better to just kick out an error.\r\n if (i === 0 || (i === 1 && name[2] === '..') || name[i - 1] === '..') {\r\n continue;\r\n } else if (i > 0) {\r\n name.splice(i - 1, 2);\r\n i -= 2;\r\n }\r\n }\r\n }\r\n //end trimDots\r\n\r\n name = name.join('/');\r\n }\r\n\r\n //Apply map config if available.\r\n if ((baseParts || starMap) && map) {\r\n nameParts = name.split('/');\r\n\r\n for (i = nameParts.length; i > 0; i -= 1) {\r\n nameSegment = nameParts.slice(0, i).join(\"/\");\r\n\r\n if (baseParts) {\r\n //Find the longest baseName segment match in the config.\r\n //So, do joins on the biggest to smallest lengths of baseParts.\r\n for (j = baseParts.length; j > 0; j -= 1) {\r\n mapValue = map[baseParts.slice(0, j).join('/')];\r\n\r\n //baseName segment has config, find if it has one for\r\n //this name.\r\n if (mapValue) {\r\n mapValue = mapValue[nameSegment];\r\n if (mapValue) {\r\n //Match, update name to the new value.\r\n foundMap = mapValue;\r\n foundI = i;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (foundMap) {\r\n break;\r\n }\r\n\r\n //Check for a star map match, but just hold on to it,\r\n //if there is a shorter segment match later in a matching\r\n //config, then favor over this star map.\r\n if (!foundStarMap && starMap && starMap[nameSegment]) {\r\n foundStarMap = starMap[nameSegment];\r\n starI = i;\r\n }\r\n }\r\n\r\n if (!foundMap && foundStarMap) {\r\n foundMap = foundStarMap;\r\n foundI = starI;\r\n }\r\n\r\n if (foundMap) {\r\n nameParts.splice(0, foundI, foundMap);\r\n name = nameParts.join('/');\r\n }\r\n }\r\n\r\n return name;\r\n }\r\n\r\n function makeRequire(relName, forceSync) {\r\n return function () {\r\n //A version of a require function that passes a moduleName\r\n //value for items that may need to\r\n //look up paths relative to the moduleName\r\n var args = aps.call(arguments, 0);\r\n\r\n //If first arg is not require('string'), and there is only\r\n //one arg, it is the array form without a callback. Insert\r\n //a null so that the following concat is correct.\r\n if (typeof args[0] !== 'string' && args.length === 1) {\r\n args.push(null);\r\n }\r\n return req.apply(undef, args.concat([relName, forceSync]));\r\n };\r\n }\r\n\r\n function makeNormalize(relName) {\r\n return function (name) {\r\n return normalize(name, relName);\r\n };\r\n }\r\n\r\n function makeLoad(depName) {\r\n return function (value) {\r\n defined[depName] = value;\r\n };\r\n }\r\n\r\n function callDep(name) {\r\n if (hasProp(waiting, name)) {\r\n var args = waiting[name];\r\n delete waiting[name];\r\n defining[name] = true;\r\n main.apply(undef, args);\r\n }\r\n\r\n if (!hasProp(defined, name) && !hasProp(defining, name)) {\r\n throw new Error('No ' + name);\r\n }\r\n return defined[name];\r\n }\r\n\r\n //Turns a plugin!resource to [plugin, resource]\r\n //with the plugin being undefined if the name\r\n //did not have a plugin prefix.\r\n function splitPrefix(name) {\r\n var prefix,\r\n index = name ? name.indexOf('!') : -1;\r\n if (index > -1) {\r\n prefix = name.substring(0, index);\r\n name = name.substring(index + 1, name.length);\r\n }\r\n return [prefix, name];\r\n }\r\n\r\n //Creates a parts array for a relName where first part is plugin ID,\r\n //second part is resource ID. Assumes relName has already been normalized.\r\n function makeRelParts(relName) {\r\n return relName ? splitPrefix(relName) : [];\r\n }\r\n\r\n /**\r\n * Makes a name map, normalizing the name, and using a plugin\r\n * for normalization if necessary. Grabs a ref to plugin\r\n * too, as an optimization.\r\n */\r\n makeMap = function (name, relParts) {\r\n var plugin,\r\n parts = splitPrefix(name),\r\n prefix = parts[0],\r\n relResourceName = relParts[1];\r\n\r\n name = parts[1];\r\n\r\n if (prefix) {\r\n prefix = normalize(prefix, relResourceName);\r\n plugin = callDep(prefix);\r\n }\r\n\r\n //Normalize according\r\n if (prefix) {\r\n if (plugin && plugin.normalize) {\r\n name = plugin.normalize(name, makeNormalize(relResourceName));\r\n } else {\r\n name = normalize(name, relResourceName);\r\n }\r\n } else {\r\n name = normalize(name, relResourceName);\r\n parts = splitPrefix(name);\r\n prefix = parts[0];\r\n name = parts[1];\r\n if (prefix) {\r\n plugin = callDep(prefix);\r\n }\r\n }\r\n\r\n //Using ridiculous property names for space reasons\r\n return {\r\n f: prefix ? prefix + '!' + name : name, //fullName\r\n n: name,\r\n pr: prefix,\r\n p: plugin\r\n };\r\n };\r\n\r\n function makeConfig(name) {\r\n return function () {\r\n return (config && config.config && config.config[name]) || {};\r\n };\r\n }\r\n\r\n handlers = {\r\n require: function (name) {\r\n return makeRequire(name);\r\n },\r\n exports: function (name) {\r\n var e = defined[name];\r\n if (typeof e !== 'undefined') {\r\n return e;\r\n } else {\r\n return (defined[name] = {});\r\n }\r\n },\r\n module: function (name) {\r\n return {\r\n id: name,\r\n uri: '',\r\n exports: defined[name],\r\n config: makeConfig(name)\r\n };\r\n }\r\n };\r\n\r\n main = function (name, deps, callback, relName) {\r\n var cjsModule, depName, ret, map, i, relParts,\r\n args = [],\r\n callbackType = typeof callback,\r\n usingExports;\r\n\r\n //Use name if no relName\r\n relName = relName || name;\r\n relParts = makeRelParts(relName);\r\n\r\n //Call the callback to define the module, if necessary.\r\n if (callbackType === 'undefined' || callbackType === 'function') {\r\n //Pull out the defined dependencies and pass the ordered\r\n //values to the callback.\r\n //Default to [require, exports, module] if no deps\r\n deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;\r\n for (i = 0; i < deps.length; i += 1) {\r\n map = makeMap(deps[i], relParts);\r\n depName = map.f;\r\n\r\n //Fast path CommonJS standard dependencies.\r\n if (depName === \"require\") {\r\n args[i] = handlers.require(name);\r\n } else if (depName === \"exports\") {\r\n //CommonJS module spec 1.1\r\n args[i] = handlers.exports(name);\r\n usingExports = true;\r\n } else if (depName === \"module\") {\r\n //CommonJS module spec 1.1\r\n cjsModule = args[i] = handlers.module(name);\r\n } else if (hasProp(defined, depName) ||\r\n hasProp(waiting, depName) ||\r\n hasProp(defining, depName)) {\r\n args[i] = callDep(depName);\r\n } else if (map.p) {\r\n map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});\r\n args[i] = defined[depName];\r\n } else {\r\n throw new Error(name + ' missing ' + depName);\r\n }\r\n }\r\n\r\n ret = callback ? callback.apply(defined[name], args) : undefined;\r\n\r\n if (name) {\r\n //If setting exports via \"module\" is in play,\r\n //favor that over return value and exports. After that,\r\n //favor a non-undefined return value over exports use.\r\n if (cjsModule && cjsModule.exports !== undef &&\r\n cjsModule.exports !== defined[name]) {\r\n defined[name] = cjsModule.exports;\r\n } else if (ret !== undef || !usingExports) {\r\n //Use the return value from the function.\r\n defined[name] = ret;\r\n }\r\n }\r\n } else if (name) {\r\n //May just be an object definition for the module. Only\r\n //worry about defining if have a module name.\r\n defined[name] = callback;\r\n }\r\n };\r\n\r\n requirejs = require = req = function (deps, callback, relName, forceSync, alt) {\r\n if (typeof deps === \"string\") {\r\n if (handlers[deps]) {\r\n //callback in this case is really relName\r\n return handlers[deps](callback);\r\n }\r\n //Just return the module wanted. In this scenario, the\r\n //deps arg is the module name, and second arg (if passed)\r\n //is just the relName.\r\n //Normalize module name, if it contains . or ..\r\n return callDep(makeMap(deps, makeRelParts(callback)).f);\r\n } else if (!deps.splice) {\r\n //deps is a config object, not an array.\r\n config = deps;\r\n if (config.deps) {\r\n req(config.deps, config.callback);\r\n }\r\n if (!callback) {\r\n return;\r\n }\r\n\r\n if (callback.splice) {\r\n //callback is an array, which means it is a dependency list.\r\n //Adjust args if there are dependencies\r\n deps = callback;\r\n callback = relName;\r\n relName = null;\r\n } else {\r\n deps = undef;\r\n }\r\n }\r\n\r\n //Support require(['a'])\r\n callback = callback || function () {};\r\n\r\n //If relName is a function, it is an errback handler,\r\n //so remove it.\r\n if (typeof relName === 'function') {\r\n relName = forceSync;\r\n forceSync = alt;\r\n }\r\n\r\n //Simulate async callback;\r\n if (forceSync) {\r\n main(undef, deps, callback, relName);\r\n } else {\r\n //Using a non-zero value because of concern for what old browsers\r\n //do, and latest browsers \"upgrade\" to 4 if lower value is used:\r\n //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout:\r\n //If want a value immediately, use require('id') instead -- something\r\n //that works in almond on the global level, but not guaranteed and\r\n //unlikely to work in other AMD implementations.\r\n setTimeout(function () {\r\n main(undef, deps, callback, relName);\r\n }, 4);\r\n }\r\n\r\n return req;\r\n };\r\n\r\n /**\r\n * Just drops the config on the floor, but returns req in case\r\n * the config return value is used.\r\n */\r\n req.config = function (cfg) {\r\n return req(cfg);\r\n };\r\n\r\n /**\r\n * Expose module registry for debugging and tooling\r\n */\r\n requirejs._defined = defined;\r\n\r\n define = function (name, deps, callback) {\r\n if (typeof name !== 'string') {\r\n throw new Error('See almond README: incorrect module build, no module name');\r\n }\r\n\r\n //This module may not have dependencies\r\n if (!deps.splice) {\r\n //deps is not an array, so probably means\r\n //an object literal or factory function for\r\n //the value. Adjust args.\r\n callback = deps;\r\n deps = [];\r\n }\r\n\r\n if (!hasProp(defined, name) && !hasProp(waiting, name)) {\r\n waiting[name] = [name, deps, callback];\r\n }\r\n };\r\n\r\n define.amd = {\r\n jQuery: true\r\n };\r\n}());\r\n\r\nS2.requirejs = requirejs;S2.require = require;S2.define = define;\r\n}\r\n}());\r\nS2.define(\"almond\", function(){});\r\n\r\n/* global jQuery:false, $:false */\r\nS2.define('jquery',[],function () {\r\n var _$ = jQuery || $;\r\n\r\n if (_$ == null && console && console.error) {\r\n console.error(\r\n 'Select2: An instance of jQuery or a jQuery-compatible library was not ' +\r\n 'found. Make sure that you are including jQuery before Select2 on your ' +\r\n 'web page.'\r\n );\r\n }\r\n\r\n return _$;\r\n});\r\n\r\nS2.define('select2/utils',[\r\n 'jquery'\r\n], function ($) {\r\n var Utils = {};\r\n\r\n Utils.Extend = function (ChildClass, SuperClass) {\r\n var __hasProp = {}.hasOwnProperty;\r\n\r\n function BaseConstructor () {\r\n this.constructor = ChildClass;\r\n }\r\n\r\n for (var key in SuperClass) {\r\n if (__hasProp.call(SuperClass, key)) {\r\n ChildClass[key] = SuperClass[key];\r\n }\r\n }\r\n\r\n BaseConstructor.prototype = SuperClass.prototype;\r\n ChildClass.prototype = new BaseConstructor();\r\n ChildClass.__super__ = SuperClass.prototype;\r\n\r\n return ChildClass;\r\n };\r\n\r\n function getMethods (theClass) {\r\n var proto = theClass.prototype;\r\n\r\n var methods = [];\r\n\r\n for (var methodName in proto) {\r\n var m = proto[methodName];\r\n\r\n if (typeof m !== 'function') {\r\n continue;\r\n }\r\n\r\n if (methodName === 'constructor') {\r\n continue;\r\n }\r\n\r\n methods.push(methodName);\r\n }\r\n\r\n return methods;\r\n }\r\n\r\n Utils.Decorate = function (SuperClass, DecoratorClass) {\r\n var decoratedMethods = getMethods(DecoratorClass);\r\n var superMethods = getMethods(SuperClass);\r\n\r\n function DecoratedClass () {\r\n var unshift = Array.prototype.unshift;\r\n\r\n var argCount = DecoratorClass.prototype.constructor.length;\r\n\r\n var calledConstructor = SuperClass.prototype.constructor;\r\n\r\n if (argCount > 0) {\r\n unshift.call(arguments, SuperClass.prototype.constructor);\r\n\r\n calledConstructor = DecoratorClass.prototype.constructor;\r\n }\r\n\r\n calledConstructor.apply(this, arguments);\r\n }\r\n\r\n DecoratorClass.displayName = SuperClass.displayName;\r\n\r\n function ctr () {\r\n this.constructor = DecoratedClass;\r\n }\r\n\r\n DecoratedClass.prototype = new ctr();\r\n\r\n for (var m = 0; m < superMethods.length; m++) {\r\n var superMethod = superMethods[m];\r\n\r\n DecoratedClass.prototype[superMethod] =\r\n SuperClass.prototype[superMethod];\r\n }\r\n\r\n var calledMethod = function (methodName) {\r\n // Stub out the original method if it's not decorating an actual method\r\n var originalMethod = function () {};\r\n\r\n if (methodName in DecoratedClass.prototype) {\r\n originalMethod = DecoratedClass.prototype[methodName];\r\n }\r\n\r\n var decoratedMethod = DecoratorClass.prototype[methodName];\r\n\r\n return function () {\r\n var unshift = Array.prototype.unshift;\r\n\r\n unshift.call(arguments, originalMethod);\r\n\r\n return decoratedMethod.apply(this, arguments);\r\n };\r\n };\r\n\r\n for (var d = 0; d < decoratedMethods.length; d++) {\r\n var decoratedMethod = decoratedMethods[d];\r\n\r\n DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod);\r\n }\r\n\r\n return DecoratedClass;\r\n };\r\n\r\n var Observable = function () {\r\n this.listeners = {};\r\n };\r\n\r\n Observable.prototype.on = function (event, callback) {\r\n this.listeners = this.listeners || {};\r\n\r\n if (event in this.listeners) {\r\n this.listeners[event].push(callback);\r\n } else {\r\n this.listeners[event] = [callback];\r\n }\r\n };\r\n\r\n Observable.prototype.trigger = function (event) {\r\n var slice = Array.prototype.slice;\r\n var params = slice.call(arguments, 1);\r\n\r\n this.listeners = this.listeners || {};\r\n\r\n // Params should always come in as an array\r\n if (params == null) {\r\n params = [];\r\n }\r\n\r\n // If there are no arguments to the event, use a temporary object\r\n if (params.length === 0) {\r\n params.push({});\r\n }\r\n\r\n // Set the `_type` of the first object to the event\r\n params[0]._type = event;\r\n\r\n if (event in this.listeners) {\r\n this.invoke(this.listeners[event], slice.call(arguments, 1));\r\n }\r\n\r\n if ('*' in this.listeners) {\r\n this.invoke(this.listeners['*'], arguments);\r\n }\r\n };\r\n\r\n Observable.prototype.invoke = function (listeners, params) {\r\n for (var i = 0, len = listeners.length; i < len; i++) {\r\n listeners[i].apply(this, params);\r\n }\r\n };\r\n\r\n Utils.Observable = Observable;\r\n\r\n Utils.generateChars = function (length) {\r\n var chars = '';\r\n\r\n for (var i = 0; i < length; i++) {\r\n var randomChar = Math.floor(Math.random() * 36);\r\n chars += randomChar.toString(36);\r\n }\r\n\r\n return chars;\r\n };\r\n\r\n Utils.bind = function (func, context) {\r\n return function () {\r\n func.apply(context, arguments);\r\n };\r\n };\r\n\r\n Utils._convertData = function (data) {\r\n for (var originalKey in data) {\r\n var keys = originalKey.split('-');\r\n\r\n var dataLevel = data;\r\n\r\n if (keys.length === 1) {\r\n continue;\r\n }\r\n\r\n for (var k = 0; k < keys.length; k++) {\r\n var key = keys[k];\r\n\r\n // Lowercase the first letter\r\n // By default, dash-separated becomes camelCase\r\n key = key.substring(0, 1).toLowerCase() + key.substring(1);\r\n\r\n if (!(key in dataLevel)) {\r\n dataLevel[key] = {};\r\n }\r\n\r\n if (k == keys.length - 1) {\r\n dataLevel[key] = data[originalKey];\r\n }\r\n\r\n dataLevel = dataLevel[key];\r\n }\r\n\r\n delete data[originalKey];\r\n }\r\n\r\n return data;\r\n };\r\n\r\n Utils.hasScroll = function (index, el) {\r\n // Adapted from the function created by @ShadowScripter\r\n // and adapted by @BillBarry on the Stack Exchange Code Review website.\r\n // The original code can be found at\r\n // http://codereview.stackexchange.com/q/13338\r\n // and was designed to be used with the Sizzle selector engine.\r\n\r\n var $el = $(el);\r\n var overflowX = el.style.overflowX;\r\n var overflowY = el.style.overflowY;\r\n\r\n //Check both x and y declarations\r\n if (overflowX === overflowY &&\r\n (overflowY === 'hidden' || overflowY === 'visible')) {\r\n return false;\r\n }\r\n\r\n if (overflowX === 'scroll' || overflowY === 'scroll') {\r\n return true;\r\n }\r\n\r\n return ($el.innerHeight() < el.scrollHeight ||\r\n $el.innerWidth() < el.scrollWidth);\r\n };\r\n\r\n Utils.escapeMarkup = function (markup) {\r\n var replaceMap = {\r\n '\\\\': '\',\r\n '&': '&',\r\n '<': '<',\r\n '>': '>',\r\n '\"': '"',\r\n '\\'': ''',\r\n '/': '/'\r\n };\r\n\r\n // Do not try to escape the markup if it's not a string\r\n if (typeof markup !== 'string') {\r\n return markup;\r\n }\r\n\r\n return String(markup).replace(/[&<>\"'\\/\\\\]/g, function (match) {\r\n return replaceMap[match];\r\n });\r\n };\r\n\r\n // Append an array of jQuery nodes to a given element.\r\n Utils.appendMany = function ($element, $nodes) {\r\n // jQuery 1.7.x does not support $.fn.append() with an array\r\n // Fall back to a jQuery object collection using $.fn.add()\r\n if ($.fn.jquery.substr(0, 3) === '1.7') {\r\n var $jqNodes = $();\r\n\r\n $.map($nodes, function (node) {\r\n $jqNodes = $jqNodes.add(node);\r\n });\r\n\r\n $nodes = $jqNodes;\r\n }\r\n\r\n $element.append($nodes);\r\n };\r\n\r\n // Cache objects in Utils.__cache instead of $.data (see #4346)\r\n Utils.__cache = {};\r\n\r\n var id = 0;\r\n Utils.GetUniqueElementId = function (element) {\r\n // Get a unique element Id. If element has no id, \r\n // creates a new unique number, stores it in the id \r\n // attribute and returns the new id. \r\n // If an id already exists, it simply returns it.\r\n\r\n var select2Id = element.getAttribute('data-select2-id');\r\n if (select2Id == null) {\r\n // If element has id, use it.\r\n if (element.id) {\r\n select2Id = element.id;\r\n element.setAttribute('data-select2-id', select2Id);\r\n } else {\r\n element.setAttribute('data-select2-id', ++id);\r\n select2Id = id.toString();\r\n }\r\n }\r\n return select2Id;\r\n };\r\n\r\n Utils.StoreData = function (element, name, value) {\r\n // Stores an item in the cache for a specified element.\r\n // name is the cache key. \r\n var id = Utils.GetUniqueElementId(element);\r\n if (!Utils.__cache[id]) {\r\n Utils.__cache[id] = {};\r\n }\r\n\r\n Utils.__cache[id][name] = value;\r\n };\r\n\r\n Utils.GetData = function (element, name) {\r\n // Retrieves a value from the cache by its key (name)\r\n // name is optional. If no name specified, return \r\n // all cache items for the specified element.\r\n // and for a specified element.\r\n var id = Utils.GetUniqueElementId(element);\r\n if (name) {\r\n if (Utils.__cache[id]) {\r\n return Utils.__cache[id][name] != null ? \r\n\t Utils.__cache[id][name]:\r\n\t $(element).data(name); // Fallback to HTML5 data attribs.\r\n }\r\n return $(element).data(name); // Fallback to HTML5 data attribs.\r\n } else {\r\n return Utils.__cache[id];\t\t\t \r\n }\r\n };\r\n\r\n Utils.RemoveData = function (element) {\r\n // Removes all cached items for a specified element.\r\n var id = Utils.GetUniqueElementId(element);\r\n if (Utils.__cache[id] != null) {\r\n delete Utils.__cache[id];\r\n }\r\n };\r\n\r\n return Utils;\r\n});\r\n\r\nS2.define('select2/results',[\r\n 'jquery',\r\n './utils'\r\n], function ($, Utils) {\r\n function Results ($element, options, dataAdapter) {\r\n this.$element = $element;\r\n this.data = dataAdapter;\r\n this.options = options;\r\n\r\n Results.__super__.constructor.call(this);\r\n }\r\n\r\n Utils.Extend(Results, Utils.Observable);\r\n\r\n Results.prototype.render = function () {\r\n var $results = $(\r\n '
    '\r\n );\r\n\r\n if (this.options.get('multiple')) {\r\n $results.attr('aria-multiselectable', 'true');\r\n }\r\n\r\n this.$results = $results;\r\n\r\n return $results;\r\n };\r\n\r\n Results.prototype.clear = function () {\r\n this.$results.empty();\r\n };\r\n\r\n Results.prototype.displayMessage = function (params) {\r\n var escapeMarkup = this.options.get('escapeMarkup');\r\n\r\n this.clear();\r\n this.hideLoading();\r\n\r\n var $message = $(\r\n '
  • '\r\n );\r\n\r\n var message = this.options.get('translations').get(params.message);\r\n\r\n $message.append(\r\n escapeMarkup(\r\n message(params.args)\r\n )\r\n );\r\n\r\n $message[0].className += ' select2-results__message';\r\n\r\n this.$results.append($message);\r\n };\r\n\r\n Results.prototype.hideMessages = function () {\r\n this.$results.find('.select2-results__message').remove();\r\n };\r\n\r\n Results.prototype.append = function (data) {\r\n this.hideLoading();\r\n\r\n var $options = [];\r\n\r\n if (data.results == null || data.results.length === 0) {\r\n if (this.$results.children().length === 0) {\r\n this.trigger('results:message', {\r\n message: 'noResults'\r\n });\r\n }\r\n\r\n return;\r\n }\r\n\r\n data.results = this.sort(data.results);\r\n\r\n for (var d = 0; d < data.results.length; d++) {\r\n var item = data.results[d];\r\n\r\n var $option = this.option(item);\r\n\r\n $options.push($option);\r\n }\r\n\r\n this.$results.append($options);\r\n };\r\n\r\n Results.prototype.position = function ($results, $dropdown) {\r\n var $resultsContainer = $dropdown.find('.select2-results');\r\n $resultsContainer.append($results);\r\n };\r\n\r\n Results.prototype.sort = function (data) {\r\n var sorter = this.options.get('sorter');\r\n\r\n return sorter(data);\r\n };\r\n\r\n Results.prototype.highlightFirstItem = function () {\r\n var $options = this.$results\r\n .find('.select2-results__option[aria-selected]');\r\n\r\n var $selected = $options.filter('[aria-selected=true]');\r\n\r\n // Check if there are any selected options\r\n if ($selected.length > 0) {\r\n // If there are selected options, highlight the first\r\n $selected.first().trigger('mouseenter');\r\n } else {\r\n // If there are no selected options, highlight the first option\r\n // in the dropdown\r\n $options.first().trigger('mouseenter');\r\n }\r\n\r\n this.ensureHighlightVisible();\r\n };\r\n\r\n Results.prototype.setClasses = function () {\r\n var self = this;\r\n\r\n this.data.current(function (selected) {\r\n var selectedIds = $.map(selected, function (s) {\r\n return s.id.toString();\r\n });\r\n\r\n var $options = self.$results\r\n .find('.select2-results__option[aria-selected]');\r\n\r\n $options.each(function () {\r\n var $option = $(this);\r\n\r\n var item = Utils.GetData(this, 'data');\r\n\r\n // id needs to be converted to a string when comparing\r\n var id = '' + item.id;\r\n\r\n if ((item.element != null && item.element.selected) ||\r\n (item.element == null && $.inArray(id, selectedIds) > -1)) {\r\n $option.attr('aria-selected', 'true');\r\n } else {\r\n $option.attr('aria-selected', 'false');\r\n }\r\n });\r\n\r\n });\r\n };\r\n\r\n Results.prototype.showLoading = function (params) {\r\n this.hideLoading();\r\n\r\n var loadingMore = this.options.get('translations').get('searching');\r\n\r\n var loading = {\r\n disabled: true,\r\n loading: true,\r\n text: loadingMore(params)\r\n };\r\n var $loading = this.option(loading);\r\n $loading.className += ' loading-results';\r\n\r\n this.$results.prepend($loading);\r\n };\r\n\r\n Results.prototype.hideLoading = function () {\r\n this.$results.find('.loading-results').remove();\r\n };\r\n\r\n Results.prototype.option = function (data) {\r\n var option = document.createElement('li');\r\n option.className = 'select2-results__option';\r\n\r\n var attrs = {\r\n 'role': 'treeitem',\r\n 'aria-selected': 'false'\r\n };\r\n\r\n if (data.disabled) {\r\n delete attrs['aria-selected'];\r\n attrs['aria-disabled'] = 'true';\r\n }\r\n\r\n if (data.id == null) {\r\n delete attrs['aria-selected'];\r\n }\r\n\r\n if (data._resultId != null) {\r\n option.id = data._resultId;\r\n }\r\n\r\n if (data.title) {\r\n option.title = data.title;\r\n }\r\n\r\n if (data.children) {\r\n attrs.role = 'group';\r\n attrs['aria-label'] = data.text;\r\n delete attrs['aria-selected'];\r\n }\r\n\r\n for (var attr in attrs) {\r\n var val = attrs[attr];\r\n\r\n option.setAttribute(attr, val);\r\n }\r\n\r\n if (data.children) {\r\n var $option = $(option);\r\n\r\n var label = document.createElement('strong');\r\n label.className = 'select2-results__group';\r\n\r\n var $label = $(label);\r\n this.template(data, label);\r\n\r\n var $children = [];\r\n\r\n for (var c = 0; c < data.children.length; c++) {\r\n var child = data.children[c];\r\n\r\n var $child = this.option(child);\r\n\r\n $children.push($child);\r\n }\r\n\r\n var $childrenContainer = $('
      ', {\r\n 'class': 'select2-results__options select2-results__options--nested'\r\n });\r\n\r\n $childrenContainer.append($children);\r\n\r\n $option.append(label);\r\n $option.append($childrenContainer);\r\n } else {\r\n this.template(data, option);\r\n }\r\n\r\n Utils.StoreData(option, 'data', data);\r\n\r\n return option;\r\n };\r\n\r\n Results.prototype.bind = function (container, $container) {\r\n var self = this;\r\n\r\n var id = container.id + '-results';\r\n\r\n this.$results.attr('id', id);\r\n\r\n container.on('results:all', function (params) {\r\n self.clear();\r\n self.append(params.data);\r\n\r\n if (container.isOpen()) {\r\n self.setClasses();\r\n self.highlightFirstItem();\r\n }\r\n });\r\n\r\n container.on('results:append', function (params) {\r\n self.append(params.data);\r\n\r\n if (container.isOpen()) {\r\n self.setClasses();\r\n }\r\n });\r\n\r\n container.on('query', function (params) {\r\n self.hideMessages();\r\n self.showLoading(params);\r\n });\r\n\r\n container.on('select', function () {\r\n if (!container.isOpen()) {\r\n return;\r\n }\r\n\r\n self.setClasses();\r\n self.highlightFirstItem();\r\n });\r\n\r\n container.on('unselect', function () {\r\n if (!container.isOpen()) {\r\n return;\r\n }\r\n\r\n self.setClasses();\r\n self.highlightFirstItem();\r\n });\r\n\r\n container.on('open', function () {\r\n // When the dropdown is open, aria-expended=\"true\"\r\n self.$results.attr('aria-expanded', 'true');\r\n self.$results.attr('aria-hidden', 'false');\r\n\r\n self.setClasses();\r\n self.ensureHighlightVisible();\r\n });\r\n\r\n container.on('close', function () {\r\n // When the dropdown is closed, aria-expended=\"false\"\r\n self.$results.attr('aria-expanded', 'false');\r\n self.$results.attr('aria-hidden', 'true');\r\n self.$results.removeAttr('aria-activedescendant');\r\n });\r\n\r\n container.on('results:toggle', function () {\r\n var $highlighted = self.getHighlightedResults();\r\n\r\n if ($highlighted.length === 0) {\r\n return;\r\n }\r\n\r\n $highlighted.trigger('mouseup');\r\n });\r\n\r\n container.on('results:select', function () {\r\n var $highlighted = self.getHighlightedResults();\r\n\r\n if ($highlighted.length === 0) {\r\n return;\r\n }\r\n\r\n var data = Utils.GetData($highlighted[0], 'data');\r\n\r\n if ($highlighted.attr('aria-selected') == 'true') {\r\n self.trigger('close', {});\r\n } else {\r\n self.trigger('select', {\r\n data: data\r\n });\r\n }\r\n });\r\n\r\n container.on('results:previous', function () {\r\n var $highlighted = self.getHighlightedResults();\r\n\r\n var $options = self.$results.find('[aria-selected]');\r\n\r\n var currentIndex = $options.index($highlighted);\r\n\r\n // If we are already at te top, don't move further\r\n // If no options, currentIndex will be -1\r\n if (currentIndex <= 0) {\r\n return;\r\n }\r\n\r\n var nextIndex = currentIndex - 1;\r\n\r\n // If none are highlighted, highlight the first\r\n if ($highlighted.length === 0) {\r\n nextIndex = 0;\r\n }\r\n\r\n var $next = $options.eq(nextIndex);\r\n\r\n $next.trigger('mouseenter');\r\n\r\n var currentOffset = self.$results.offset().top;\r\n var nextTop = $next.offset().top;\r\n var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset);\r\n\r\n if (nextIndex === 0) {\r\n self.$results.scrollTop(0);\r\n } else if (nextTop - currentOffset < 0) {\r\n self.$results.scrollTop(nextOffset);\r\n }\r\n });\r\n\r\n container.on('results:next', function () {\r\n var $highlighted = self.getHighlightedResults();\r\n\r\n var $options = self.$results.find('[aria-selected]');\r\n\r\n var currentIndex = $options.index($highlighted);\r\n\r\n var nextIndex = currentIndex + 1;\r\n\r\n // If we are at the last option, stay there\r\n if (nextIndex >= $options.length) {\r\n return;\r\n }\r\n\r\n var $next = $options.eq(nextIndex);\r\n\r\n $next.trigger('mouseenter');\r\n\r\n var currentOffset = self.$results.offset().top +\r\n self.$results.outerHeight(false);\r\n var nextBottom = $next.offset().top + $next.outerHeight(false);\r\n var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset;\r\n\r\n if (nextIndex === 0) {\r\n self.$results.scrollTop(0);\r\n } else if (nextBottom > currentOffset) {\r\n self.$results.scrollTop(nextOffset);\r\n }\r\n });\r\n\r\n container.on('results:focus', function (params) {\r\n params.element.addClass('select2-results__option--highlighted');\r\n });\r\n\r\n container.on('results:message', function (params) {\r\n self.displayMessage(params);\r\n });\r\n\r\n if ($.fn.mousewheel) {\r\n this.$results.on('mousewheel', function (e) {\r\n var top = self.$results.scrollTop();\r\n\r\n var bottom = self.$results.get(0).scrollHeight - top + e.deltaY;\r\n\r\n var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0;\r\n var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height();\r\n\r\n if (isAtTop) {\r\n self.$results.scrollTop(0);\r\n\r\n e.preventDefault();\r\n e.stopPropagation();\r\n } else if (isAtBottom) {\r\n self.$results.scrollTop(\r\n self.$results.get(0).scrollHeight - self.$results.height()\r\n );\r\n\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n });\r\n }\r\n\r\n this.$results.on('mouseup', '.select2-results__option[aria-selected]',\r\n function (evt) {\r\n var $this = $(this);\r\n\r\n var data = Utils.GetData(this, 'data');\r\n\r\n if ($this.attr('aria-selected') === 'true') {\r\n if (self.options.get('multiple')) {\r\n self.trigger('unselect', {\r\n originalEvent: evt,\r\n data: data\r\n });\r\n } else {\r\n self.trigger('close', {});\r\n }\r\n\r\n return;\r\n }\r\n\r\n self.trigger('select', {\r\n originalEvent: evt,\r\n data: data\r\n });\r\n });\r\n\r\n this.$results.on('mouseenter', '.select2-results__option[aria-selected]',\r\n function (evt) {\r\n var data = Utils.GetData(this, 'data');\r\n\r\n self.getHighlightedResults()\r\n .removeClass('select2-results__option--highlighted');\r\n\r\n self.trigger('results:focus', {\r\n data: data,\r\n element: $(this)\r\n });\r\n });\r\n };\r\n\r\n Results.prototype.getHighlightedResults = function () {\r\n var $highlighted = this.$results\r\n .find('.select2-results__option--highlighted');\r\n\r\n return $highlighted;\r\n };\r\n\r\n Results.prototype.destroy = function () {\r\n this.$results.remove();\r\n };\r\n\r\n Results.prototype.ensureHighlightVisible = function () {\r\n var $highlighted = this.getHighlightedResults();\r\n\r\n if ($highlighted.length === 0) {\r\n return;\r\n }\r\n\r\n var $options = this.$results.find('[aria-selected]');\r\n\r\n var currentIndex = $options.index($highlighted);\r\n\r\n var currentOffset = this.$results.offset().top;\r\n var nextTop = $highlighted.offset().top;\r\n var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset);\r\n\r\n var offsetDelta = nextTop - currentOffset;\r\n nextOffset -= $highlighted.outerHeight(false) * 2;\r\n\r\n if (currentIndex <= 2) {\r\n this.$results.scrollTop(0);\r\n } else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) {\r\n this.$results.scrollTop(nextOffset);\r\n }\r\n };\r\n\r\n Results.prototype.template = function (result, container) {\r\n var template = this.options.get('templateResult');\r\n var escapeMarkup = this.options.get('escapeMarkup');\r\n\r\n var content = template(result, container);\r\n\r\n if (content == null) {\r\n container.style.display = 'none';\r\n } else if (typeof content === 'string') {\r\n container.innerHTML = escapeMarkup(content);\r\n } else {\r\n $(container).append(content);\r\n }\r\n };\r\n\r\n return Results;\r\n});\r\n\r\nS2.define('select2/keys',[\r\n\r\n], function () {\r\n var KEYS = {\r\n BACKSPACE: 8,\r\n TAB: 9,\r\n ENTER: 13,\r\n SHIFT: 16,\r\n CTRL: 17,\r\n ALT: 18,\r\n ESC: 27,\r\n SPACE: 32,\r\n PAGE_UP: 33,\r\n PAGE_DOWN: 34,\r\n END: 35,\r\n HOME: 36,\r\n LEFT: 37,\r\n UP: 38,\r\n RIGHT: 39,\r\n DOWN: 40,\r\n DELETE: 46\r\n };\r\n\r\n return KEYS;\r\n});\r\n\r\nS2.define('select2/selection/base',[\r\n 'jquery',\r\n '../utils',\r\n '../keys'\r\n], function ($, Utils, KEYS) {\r\n function BaseSelection ($element, options) {\r\n this.$element = $element;\r\n this.options = options;\r\n\r\n BaseSelection.__super__.constructor.call(this);\r\n }\r\n\r\n Utils.Extend(BaseSelection, Utils.Observable);\r\n\r\n BaseSelection.prototype.render = function () {\r\n var $selection = $(\r\n '' +\r\n ''\r\n );\r\n\r\n this._tabindex = 0;\r\n\r\n if (Utils.GetData(this.$element[0], 'old-tabindex') != null) {\r\n this._tabindex = Utils.GetData(this.$element[0], 'old-tabindex');\r\n } else if (this.$element.attr('tabindex') != null) {\r\n this._tabindex = this.$element.attr('tabindex');\r\n }\r\n\r\n $selection.attr('title', this.$element.attr('title'));\r\n $selection.attr('tabindex', this._tabindex);\r\n\r\n this.$selection = $selection;\r\n\r\n return $selection;\r\n };\r\n\r\n BaseSelection.prototype.bind = function (container, $container) {\r\n var self = this;\r\n\r\n var id = container.id + '-container';\r\n var resultsId = container.id + '-results';\r\n\r\n this.container = container;\r\n\r\n this.$selection.on('focus', function (evt) {\r\n self.trigger('focus', evt);\r\n });\r\n\r\n this.$selection.on('blur', function (evt) {\r\n self._handleBlur(evt);\r\n });\r\n\r\n this.$selection.on('keydown', function (evt) {\r\n self.trigger('keypress', evt);\r\n\r\n if (evt.which === KEYS.SPACE) {\r\n evt.preventDefault();\r\n }\r\n });\r\n\r\n container.on('results:focus', function (params) {\r\n self.$selection.attr('aria-activedescendant', params.data._resultId);\r\n });\r\n\r\n container.on('selection:update', function (params) {\r\n self.update(params.data);\r\n });\r\n\r\n container.on('open', function () {\r\n // When the dropdown is open, aria-expanded=\"true\"\r\n self.$selection.attr('aria-expanded', 'true');\r\n self.$selection.attr('aria-owns', resultsId);\r\n\r\n self._attachCloseHandler(container);\r\n });\r\n\r\n container.on('close', function () {\r\n // When the dropdown is closed, aria-expanded=\"false\"\r\n self.$selection.attr('aria-expanded', 'false');\r\n self.$selection.removeAttr('aria-activedescendant');\r\n self.$selection.removeAttr('aria-owns');\r\n\r\n self.$selection.focus();\r\n window.setTimeout(function () {\r\n self.$selection.focus();\r\n }, 0);\r\n\r\n self._detachCloseHandler(container);\r\n });\r\n\r\n container.on('enable', function () {\r\n self.$selection.attr('tabindex', self._tabindex);\r\n });\r\n\r\n container.on('disable', function () {\r\n self.$selection.attr('tabindex', '-1');\r\n });\r\n };\r\n\r\n BaseSelection.prototype._handleBlur = function (evt) {\r\n var self = this;\r\n\r\n // This needs to be delayed as the active element is the body when the tab\r\n // key is pressed, possibly along with others.\r\n window.setTimeout(function () {\r\n // Don't trigger `blur` if the focus is still in the selection\r\n if (\r\n (document.activeElement == self.$selection[0]) ||\r\n ($.contains(self.$selection[0], document.activeElement))\r\n ) {\r\n return;\r\n }\r\n\r\n self.trigger('blur', evt);\r\n }, 1);\r\n };\r\n\r\n BaseSelection.prototype._attachCloseHandler = function (container) {\r\n var self = this;\r\n\r\n $(document.body).on('mousedown.select2.' + container.id, function (e) {\r\n var $target = $(e.target);\r\n\r\n var $select = $target.closest('.select2');\r\n\r\n var $all = $('.select2.select2-container--open');\r\n\r\n $all.each(function () {\r\n var $this = $(this);\r\n\r\n if (this == $select[0]) {\r\n return;\r\n }\r\n\r\n var $element = Utils.GetData(this, 'element');\r\n\r\n $element.select2('close');\r\n });\r\n });\r\n };\r\n\r\n BaseSelection.prototype._detachCloseHandler = function (container) {\r\n $(document.body).off('mousedown.select2.' + container.id);\r\n };\r\n\r\n BaseSelection.prototype.position = function ($selection, $container) {\r\n var $selectionContainer = $container.find('.selection');\r\n $selectionContainer.append($selection);\r\n };\r\n\r\n BaseSelection.prototype.destroy = function () {\r\n this._detachCloseHandler(this.container);\r\n };\r\n\r\n BaseSelection.prototype.update = function (data) {\r\n throw new Error('The `update` method must be defined in child classes.');\r\n };\r\n\r\n return BaseSelection;\r\n});\r\n\r\nS2.define('select2/selection/single',[\r\n 'jquery',\r\n './base',\r\n '../utils',\r\n '../keys'\r\n], function ($, BaseSelection, Utils, KEYS) {\r\n function SingleSelection () {\r\n SingleSelection.__super__.constructor.apply(this, arguments);\r\n }\r\n\r\n Utils.Extend(SingleSelection, BaseSelection);\r\n\r\n SingleSelection.prototype.render = function () {\r\n var $selection = SingleSelection.__super__.render.call(this);\r\n\r\n $selection.addClass('select2-selection--single');\r\n\r\n $selection.html(\r\n '' +\r\n '' +\r\n '' +\r\n ''\r\n );\r\n\r\n return $selection;\r\n };\r\n\r\n SingleSelection.prototype.bind = function (container, $container) {\r\n var self = this;\r\n\r\n SingleSelection.__super__.bind.apply(this, arguments);\r\n\r\n var id = container.id + '-container';\r\n\r\n this.$selection.find('.select2-selection__rendered')\r\n .attr('id', id)\r\n .attr('role', 'textbox')\r\n .attr('aria-readonly', 'true');\r\n this.$selection.attr('aria-labelledby', id);\r\n\r\n this.$selection.on('mousedown', function (evt) {\r\n // Only respond to left clicks\r\n if (evt.which !== 1) {\r\n return;\r\n }\r\n\r\n self.trigger('toggle', {\r\n originalEvent: evt\r\n });\r\n });\r\n\r\n this.$selection.on('focus', function (evt) {\r\n // User focuses on the container\r\n });\r\n\r\n this.$selection.on('blur', function (evt) {\r\n // User exits the container\r\n });\r\n\r\n container.on('focus', function (evt) {\r\n if (!container.isOpen()) {\r\n self.$selection.focus();\r\n }\r\n });\r\n };\r\n\r\n SingleSelection.prototype.clear = function () {\r\n var $rendered = this.$selection.find('.select2-selection__rendered');\r\n $rendered.empty();\r\n $rendered.removeAttr('title'); // clear tooltip on empty\r\n };\r\n\r\n SingleSelection.prototype.display = function (data, container) {\r\n var template = this.options.get('templateSelection');\r\n var escapeMarkup = this.options.get('escapeMarkup');\r\n\r\n return escapeMarkup(template(data, container));\r\n };\r\n\r\n SingleSelection.prototype.selectionContainer = function () {\r\n return $('');\r\n };\r\n\r\n SingleSelection.prototype.update = function (data) {\r\n if (data.length === 0) {\r\n this.clear();\r\n return;\r\n }\r\n\r\n var selection = data[0];\r\n\r\n var $rendered = this.$selection.find('.select2-selection__rendered');\r\n var formatted = this.display(selection, $rendered);\r\n\r\n $rendered.empty().append(formatted);\r\n $rendered.attr('title', selection.title || selection.text);\r\n };\r\n\r\n return SingleSelection;\r\n});\r\n\r\nS2.define('select2/selection/multiple',[\r\n 'jquery',\r\n './base',\r\n '../utils'\r\n], function ($, BaseSelection, Utils) {\r\n function MultipleSelection ($element, options) {\r\n MultipleSelection.__super__.constructor.apply(this, arguments);\r\n }\r\n\r\n Utils.Extend(MultipleSelection, BaseSelection);\r\n\r\n MultipleSelection.prototype.render = function () {\r\n var $selection = MultipleSelection.__super__.render.call(this);\r\n\r\n $selection.addClass('select2-selection--multiple');\r\n\r\n $selection.html(\r\n '
        '\r\n );\r\n\r\n return $selection;\r\n };\r\n\r\n MultipleSelection.prototype.bind = function (container, $container) {\r\n var self = this;\r\n\r\n MultipleSelection.__super__.bind.apply(this, arguments);\r\n\r\n this.$selection.on('click', function (evt) {\r\n self.trigger('toggle', {\r\n originalEvent: evt\r\n });\r\n });\r\n\r\n this.$selection.on(\r\n 'click',\r\n '.select2-selection__choice__remove',\r\n function (evt) {\r\n // Ignore the event if it is disabled\r\n if (self.options.get('disabled')) {\r\n return;\r\n }\r\n\r\n var $remove = $(this);\r\n var $selection = $remove.parent();\r\n\r\n var data = Utils.GetData($selection[0], 'data');\r\n\r\n self.trigger('unselect', {\r\n originalEvent: evt,\r\n data: data\r\n });\r\n }\r\n );\r\n };\r\n\r\n MultipleSelection.prototype.clear = function () {\r\n var $rendered = this.$selection.find('.select2-selection__rendered');\r\n $rendered.empty();\r\n $rendered.removeAttr('title');\r\n };\r\n\r\n MultipleSelection.prototype.display = function (data, container) {\r\n var template = this.options.get('templateSelection');\r\n var escapeMarkup = this.options.get('escapeMarkup');\r\n\r\n return escapeMarkup(template(data, container));\r\n };\r\n\r\n MultipleSelection.prototype.selectionContainer = function () {\r\n var $container = $(\r\n '
      • ' +\r\n '' +\r\n '×' +\r\n '' +\r\n '
      • '\r\n );\r\n\r\n return $container;\r\n };\r\n\r\n MultipleSelection.prototype.update = function (data) {\r\n this.clear();\r\n\r\n if (data.length === 0) {\r\n return;\r\n }\r\n\r\n var $selections = [];\r\n\r\n for (var d = 0; d < data.length; d++) {\r\n var selection = data[d];\r\n\r\n var $selection = this.selectionContainer();\r\n var formatted = this.display(selection, $selection);\r\n\r\n $selection.append(formatted);\r\n $selection.attr('title', selection.title || selection.text);\r\n\r\n Utils.StoreData($selection[0], 'data', selection);\r\n\r\n $selections.push($selection);\r\n }\r\n\r\n var $rendered = this.$selection.find('.select2-selection__rendered');\r\n\r\n Utils.appendMany($rendered, $selections);\r\n };\r\n\r\n return MultipleSelection;\r\n});\r\n\r\nS2.define('select2/selection/placeholder',[\r\n '../utils'\r\n], function (Utils) {\r\n function Placeholder (decorated, $element, options) {\r\n this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\r\n\r\n decorated.call(this, $element, options);\r\n }\r\n\r\n Placeholder.prototype.normalizePlaceholder = function (_, placeholder) {\r\n if (typeof placeholder === 'string') {\r\n placeholder = {\r\n id: '',\r\n text: placeholder\r\n };\r\n }\r\n\r\n return placeholder;\r\n };\r\n\r\n Placeholder.prototype.createPlaceholder = function (decorated, placeholder) {\r\n var $placeholder = this.selectionContainer();\r\n\r\n $placeholder.html(this.display(placeholder));\r\n $placeholder.addClass('select2-selection__placeholder')\r\n .removeClass('select2-selection__choice');\r\n\r\n return $placeholder;\r\n };\r\n\r\n Placeholder.prototype.update = function (decorated, data) {\r\n var singlePlaceholder = (\r\n data.length == 1 && data[0].id != this.placeholder.id\r\n );\r\n var multipleSelections = data.length > 1;\r\n\r\n if (multipleSelections || singlePlaceholder) {\r\n return decorated.call(this, data);\r\n }\r\n\r\n this.clear();\r\n\r\n var $placeholder = this.createPlaceholder(this.placeholder);\r\n\r\n this.$selection.find('.select2-selection__rendered').append($placeholder);\r\n };\r\n\r\n return Placeholder;\r\n});\r\n\r\nS2.define('select2/selection/allowClear',[\r\n 'jquery',\r\n '../keys',\r\n '../utils'\r\n], function ($, KEYS, Utils) {\r\n function AllowClear () { }\r\n\r\n AllowClear.prototype.bind = function (decorated, container, $container) {\r\n var self = this;\r\n\r\n decorated.call(this, container, $container);\r\n\r\n if (this.placeholder == null) {\r\n if (this.options.get('debug') && window.console && console.error) {\r\n console.error(\r\n 'Select2: The `allowClear` option should be used in combination ' +\r\n 'with the `placeholder` option.'\r\n );\r\n }\r\n }\r\n\r\n this.$selection.on('mousedown', '.select2-selection__clear',\r\n function (evt) {\r\n self._handleClear(evt);\r\n });\r\n\r\n container.on('keypress', function (evt) {\r\n self._handleKeyboardClear(evt, container);\r\n });\r\n };\r\n\r\n AllowClear.prototype._handleClear = function (_, evt) {\r\n // Ignore the event if it is disabled\r\n if (this.options.get('disabled')) {\r\n return;\r\n }\r\n\r\n var $clear = this.$selection.find('.select2-selection__clear');\r\n\r\n // Ignore the event if nothing has been selected\r\n if ($clear.length === 0) {\r\n return;\r\n }\r\n\r\n evt.stopPropagation();\r\n\r\n var data = Utils.GetData($clear[0], 'data');\r\n\r\n var previousVal = this.$element.val();\r\n this.$element.val(this.placeholder.id);\r\n\r\n var unselectData = {\r\n data: data\r\n };\r\n this.trigger('clear', unselectData);\r\n if (unselectData.prevented) {\r\n this.$element.val(previousVal);\r\n return;\r\n }\r\n\r\n for (var d = 0; d < data.length; d++) {\r\n unselectData = {\r\n data: data[d]\r\n };\r\n\r\n // Trigger the `unselect` event, so people can prevent it from being\r\n // cleared.\r\n this.trigger('unselect', unselectData);\r\n\r\n // If the event was prevented, don't clear it out.\r\n if (unselectData.prevented) {\r\n this.$element.val(previousVal);\r\n return;\r\n }\r\n }\r\n\r\n this.$element.trigger('change');\r\n\r\n this.trigger('toggle', {});\r\n };\r\n\r\n AllowClear.prototype._handleKeyboardClear = function (_, evt, container) {\r\n if (container.isOpen()) {\r\n return;\r\n }\r\n\r\n if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) {\r\n this._handleClear(evt);\r\n }\r\n };\r\n\r\n AllowClear.prototype.update = function (decorated, data) {\r\n decorated.call(this, data);\r\n\r\n if (this.$selection.find('.select2-selection__placeholder').length > 0 ||\r\n data.length === 0) {\r\n return;\r\n }\r\n\r\n var $remove = $(\r\n '' +\r\n '×' +\r\n ''\r\n );\r\n Utils.StoreData($remove[0], 'data', data);\r\n\r\n this.$selection.find('.select2-selection__rendered').prepend($remove);\r\n };\r\n\r\n return AllowClear;\r\n});\r\n\r\nS2.define('select2/selection/search',[\r\n 'jquery',\r\n '../utils',\r\n '../keys'\r\n], function ($, Utils, KEYS) {\r\n function Search (decorated, $element, options) {\r\n decorated.call(this, $element, options);\r\n }\r\n\r\n Search.prototype.render = function (decorated) {\r\n var $search = $(\r\n ''\r\n );\r\n\r\n this.$searchContainer = $search;\r\n this.$search = $search.find('input');\r\n\r\n var $rendered = decorated.call(this);\r\n\r\n this._transferTabIndex();\r\n\r\n return $rendered;\r\n };\r\n\r\n Search.prototype.bind = function (decorated, container, $container) {\r\n var self = this;\r\n\r\n decorated.call(this, container, $container);\r\n\r\n container.on('open', function () {\r\n self.$search.trigger('focus');\r\n });\r\n\r\n container.on('close', function () {\r\n self.$search.val('');\r\n self.$search.removeAttr('aria-activedescendant');\r\n self.$search.trigger('focus');\r\n });\r\n\r\n container.on('enable', function () {\r\n self.$search.prop('disabled', false);\r\n\r\n self._transferTabIndex();\r\n });\r\n\r\n container.on('disable', function () {\r\n self.$search.prop('disabled', true);\r\n });\r\n\r\n container.on('focus', function (evt) {\r\n self.$search.trigger('focus');\r\n });\r\n\r\n container.on('results:focus', function (params) {\r\n self.$search.attr('aria-activedescendant', params.id);\r\n });\r\n\r\n this.$selection.on('focusin', '.select2-search--inline', function (evt) {\r\n self.trigger('focus', evt);\r\n });\r\n\r\n this.$selection.on('focusout', '.select2-search--inline', function (evt) {\r\n self._handleBlur(evt);\r\n });\r\n\r\n this.$selection.on('keydown', '.select2-search--inline', function (evt) {\r\n evt.stopPropagation();\r\n\r\n self.trigger('keypress', evt);\r\n\r\n self._keyUpPrevented = evt.isDefaultPrevented();\r\n\r\n var key = evt.which;\r\n\r\n if (key === KEYS.BACKSPACE && self.$search.val() === '') {\r\n var $previousChoice = self.$searchContainer\r\n .prev('.select2-selection__choice');\r\n\r\n if ($previousChoice.length > 0) {\r\n var item = Utils.GetData($previousChoice[0], 'data');\r\n\r\n self.searchRemoveChoice(item);\r\n\r\n evt.preventDefault();\r\n }\r\n }\r\n });\r\n\r\n // Try to detect the IE version should the `documentMode` property that\r\n // is stored on the document. This is only implemented in IE and is\r\n // slightly cleaner than doing a user agent check.\r\n // This property is not available in Edge, but Edge also doesn't have\r\n // this bug.\r\n var msie = document.documentMode;\r\n var disableInputEvents = msie && msie <= 11;\r\n\r\n // Workaround for browsers which do not support the `input` event\r\n // This will prevent double-triggering of events for browsers which support\r\n // both the `keyup` and `input` events.\r\n this.$selection.on(\r\n 'input.searchcheck',\r\n '.select2-search--inline',\r\n function (evt) {\r\n // IE will trigger the `input` event when a placeholder is used on a\r\n // search box. To get around this issue, we are forced to ignore all\r\n // `input` events in IE and keep using `keyup`.\r\n if (disableInputEvents) {\r\n self.$selection.off('input.search input.searchcheck');\r\n return;\r\n }\r\n\r\n // Unbind the duplicated `keyup` event\r\n self.$selection.off('keyup.search');\r\n }\r\n );\r\n\r\n this.$selection.on(\r\n 'keyup.search input.search',\r\n '.select2-search--inline',\r\n function (evt) {\r\n // IE will trigger the `input` event when a placeholder is used on a\r\n // search box. To get around this issue, we are forced to ignore all\r\n // `input` events in IE and keep using `keyup`.\r\n if (disableInputEvents && evt.type === 'input') {\r\n self.$selection.off('input.search input.searchcheck');\r\n return;\r\n }\r\n\r\n var key = evt.which;\r\n\r\n // We can freely ignore events from modifier keys\r\n if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) {\r\n return;\r\n }\r\n\r\n // Tabbing will be handled during the `keydown` phase\r\n if (key == KEYS.TAB) {\r\n return;\r\n }\r\n\r\n self.handleSearch(evt);\r\n }\r\n );\r\n };\r\n\r\n /**\r\n * This method will transfer the tabindex attribute from the rendered\r\n * selection to the search box. This allows for the search box to be used as\r\n * the primary focus instead of the selection container.\r\n *\r\n * @private\r\n */\r\n Search.prototype._transferTabIndex = function (decorated) {\r\n this.$search.attr('tabindex', this.$selection.attr('tabindex'));\r\n this.$selection.attr('tabindex', '-1');\r\n };\r\n\r\n Search.prototype.createPlaceholder = function (decorated, placeholder) {\r\n this.$search.attr('placeholder', placeholder.text);\r\n };\r\n\r\n Search.prototype.update = function (decorated, data) {\r\n var searchHadFocus = this.$search[0] == document.activeElement;\r\n\r\n this.$search.attr('placeholder', '');\r\n\r\n decorated.call(this, data);\r\n\r\n this.$selection.find('.select2-selection__rendered')\r\n .append(this.$searchContainer);\r\n\r\n this.resizeSearch();\r\n if (searchHadFocus) {\r\n var isTagInput = this.$element.find('[data-select2-tag]').length;\r\n if (isTagInput) {\r\n // fix IE11 bug where tag input lost focus\r\n this.$element.focus();\r\n } else {\r\n this.$search.focus();\r\n }\r\n }\r\n };\r\n\r\n Search.prototype.handleSearch = function () {\r\n this.resizeSearch();\r\n\r\n if (!this._keyUpPrevented) {\r\n var input = this.$search.val();\r\n\r\n this.trigger('query', {\r\n term: input\r\n });\r\n }\r\n\r\n this._keyUpPrevented = false;\r\n };\r\n\r\n Search.prototype.searchRemoveChoice = function (decorated, item) {\r\n this.trigger('unselect', {\r\n data: item\r\n });\r\n\r\n this.$search.val(item.text);\r\n this.handleSearch();\r\n };\r\n\r\n Search.prototype.resizeSearch = function () {\r\n this.$search.css('width', '25px');\r\n\r\n var width = '';\r\n\r\n if (this.$search.attr('placeholder') !== '') {\r\n width = this.$selection.find('.select2-selection__rendered').innerWidth();\r\n } else {\r\n var minimumWidth = this.$search.val().length + 1;\r\n\r\n width = (minimumWidth * 0.75) + 'em';\r\n }\r\n\r\n this.$search.css('width', width);\r\n };\r\n\r\n return Search;\r\n});\r\n\r\nS2.define('select2/selection/eventRelay',[\r\n 'jquery'\r\n], function ($) {\r\n function EventRelay () { }\r\n\r\n EventRelay.prototype.bind = function (decorated, container, $container) {\r\n var self = this;\r\n var relayEvents = [\r\n 'open', 'opening',\r\n 'close', 'closing',\r\n 'select', 'selecting',\r\n 'unselect', 'unselecting',\r\n 'clear', 'clearing'\r\n ];\r\n\r\n var preventableEvents = [\r\n 'opening', 'closing', 'selecting', 'unselecting', 'clearing'\r\n ];\r\n\r\n decorated.call(this, container, $container);\r\n\r\n container.on('*', function (name, params) {\r\n // Ignore events that should not be relayed\r\n if ($.inArray(name, relayEvents) === -1) {\r\n return;\r\n }\r\n\r\n // The parameters should always be an object\r\n params = params || {};\r\n\r\n // Generate the jQuery event for the Select2 event\r\n var evt = $.Event('select2:' + name, {\r\n params: params\r\n });\r\n\r\n self.$element.trigger(evt);\r\n\r\n // Only handle preventable events if it was one\r\n if ($.inArray(name, preventableEvents) === -1) {\r\n return;\r\n }\r\n\r\n params.prevented = evt.isDefaultPrevented();\r\n });\r\n };\r\n\r\n return EventRelay;\r\n});\r\n\r\nS2.define('select2/translation',[\r\n 'jquery',\r\n 'require'\r\n], function ($, require) {\r\n function Translation (dict) {\r\n this.dict = dict || {};\r\n }\r\n\r\n Translation.prototype.all = function () {\r\n return this.dict;\r\n };\r\n\r\n Translation.prototype.get = function (key) {\r\n return this.dict[key];\r\n };\r\n\r\n Translation.prototype.extend = function (translation) {\r\n this.dict = $.extend({}, translation.all(), this.dict);\r\n };\r\n\r\n // Static functions\r\n\r\n Translation._cache = {};\r\n\r\n Translation.loadPath = function (path) {\r\n if (!(path in Translation._cache)) {\r\n var translations = require(path);\r\n\r\n Translation._cache[path] = translations;\r\n }\r\n\r\n return new Translation(Translation._cache[path]);\r\n };\r\n\r\n return Translation;\r\n});\r\n\r\nS2.define('select2/diacritics',[\r\n\r\n], function () {\r\n var diacritics = {\r\n '\\u24B6': 'A',\r\n '\\uFF21': 'A',\r\n '\\u00C0': 'A',\r\n '\\u00C1': 'A',\r\n '\\u00C2': 'A',\r\n '\\u1EA6': 'A',\r\n '\\u1EA4': 'A',\r\n '\\u1EAA': 'A',\r\n '\\u1EA8': 'A',\r\n '\\u00C3': 'A',\r\n '\\u0100': 'A',\r\n '\\u0102': 'A',\r\n '\\u1EB0': 'A',\r\n '\\u1EAE': 'A',\r\n '\\u1EB4': 'A',\r\n '\\u1EB2': 'A',\r\n '\\u0226': 'A',\r\n '\\u01E0': 'A',\r\n '\\u00C4': 'A',\r\n '\\u01DE': 'A',\r\n '\\u1EA2': 'A',\r\n '\\u00C5': 'A',\r\n '\\u01FA': 'A',\r\n '\\u01CD': 'A',\r\n '\\u0200': 'A',\r\n '\\u0202': 'A',\r\n '\\u1EA0': 'A',\r\n '\\u1EAC': 'A',\r\n '\\u1EB6': 'A',\r\n '\\u1E00': 'A',\r\n '\\u0104': 'A',\r\n '\\u023A': 'A',\r\n '\\u2C6F': 'A',\r\n '\\uA732': 'AA',\r\n '\\u00C6': 'AE',\r\n '\\u01FC': 'AE',\r\n '\\u01E2': 'AE',\r\n '\\uA734': 'AO',\r\n '\\uA736': 'AU',\r\n '\\uA738': 'AV',\r\n '\\uA73A': 'AV',\r\n '\\uA73C': 'AY',\r\n '\\u24B7': 'B',\r\n '\\uFF22': 'B',\r\n '\\u1E02': 'B',\r\n '\\u1E04': 'B',\r\n '\\u1E06': 'B',\r\n '\\u0243': 'B',\r\n '\\u0182': 'B',\r\n '\\u0181': 'B',\r\n '\\u24B8': 'C',\r\n '\\uFF23': 'C',\r\n '\\u0106': 'C',\r\n '\\u0108': 'C',\r\n '\\u010A': 'C',\r\n '\\u010C': 'C',\r\n '\\u00C7': 'C',\r\n '\\u1E08': 'C',\r\n '\\u0187': 'C',\r\n '\\u023B': 'C',\r\n '\\uA73E': 'C',\r\n '\\u24B9': 'D',\r\n '\\uFF24': 'D',\r\n '\\u1E0A': 'D',\r\n '\\u010E': 'D',\r\n '\\u1E0C': 'D',\r\n '\\u1E10': 'D',\r\n '\\u1E12': 'D',\r\n '\\u1E0E': 'D',\r\n '\\u0110': 'D',\r\n '\\u018B': 'D',\r\n '\\u018A': 'D',\r\n '\\u0189': 'D',\r\n '\\uA779': 'D',\r\n '\\u01F1': 'DZ',\r\n '\\u01C4': 'DZ',\r\n '\\u01F2': 'Dz',\r\n '\\u01C5': 'Dz',\r\n '\\u24BA': 'E',\r\n '\\uFF25': 'E',\r\n '\\u00C8': 'E',\r\n '\\u00C9': 'E',\r\n '\\u00CA': 'E',\r\n '\\u1EC0': 'E',\r\n '\\u1EBE': 'E',\r\n '\\u1EC4': 'E',\r\n '\\u1EC2': 'E',\r\n '\\u1EBC': 'E',\r\n '\\u0112': 'E',\r\n '\\u1E14': 'E',\r\n '\\u1E16': 'E',\r\n '\\u0114': 'E',\r\n '\\u0116': 'E',\r\n '\\u00CB': 'E',\r\n '\\u1EBA': 'E',\r\n '\\u011A': 'E',\r\n '\\u0204': 'E',\r\n '\\u0206': 'E',\r\n '\\u1EB8': 'E',\r\n '\\u1EC6': 'E',\r\n '\\u0228': 'E',\r\n '\\u1E1C': 'E',\r\n '\\u0118': 'E',\r\n '\\u1E18': 'E',\r\n '\\u1E1A': 'E',\r\n '\\u0190': 'E',\r\n '\\u018E': 'E',\r\n '\\u24BB': 'F',\r\n '\\uFF26': 'F',\r\n '\\u1E1E': 'F',\r\n '\\u0191': 'F',\r\n '\\uA77B': 'F',\r\n '\\u24BC': 'G',\r\n '\\uFF27': 'G',\r\n '\\u01F4': 'G',\r\n '\\u011C': 'G',\r\n '\\u1E20': 'G',\r\n '\\u011E': 'G',\r\n '\\u0120': 'G',\r\n '\\u01E6': 'G',\r\n '\\u0122': 'G',\r\n '\\u01E4': 'G',\r\n '\\u0193': 'G',\r\n '\\uA7A0': 'G',\r\n '\\uA77D': 'G',\r\n '\\uA77E': 'G',\r\n '\\u24BD': 'H',\r\n '\\uFF28': 'H',\r\n '\\u0124': 'H',\r\n '\\u1E22': 'H',\r\n '\\u1E26': 'H',\r\n '\\u021E': 'H',\r\n '\\u1E24': 'H',\r\n '\\u1E28': 'H',\r\n '\\u1E2A': 'H',\r\n '\\u0126': 'H',\r\n '\\u2C67': 'H',\r\n '\\u2C75': 'H',\r\n '\\uA78D': 'H',\r\n '\\u24BE': 'I',\r\n '\\uFF29': 'I',\r\n '\\u00CC': 'I',\r\n '\\u00CD': 'I',\r\n '\\u00CE': 'I',\r\n '\\u0128': 'I',\r\n '\\u012A': 'I',\r\n '\\u012C': 'I',\r\n '\\u0130': 'I',\r\n '\\u00CF': 'I',\r\n '\\u1E2E': 'I',\r\n '\\u1EC8': 'I',\r\n '\\u01CF': 'I',\r\n '\\u0208': 'I',\r\n '\\u020A': 'I',\r\n '\\u1ECA': 'I',\r\n '\\u012E': 'I',\r\n '\\u1E2C': 'I',\r\n '\\u0197': 'I',\r\n '\\u24BF': 'J',\r\n '\\uFF2A': 'J',\r\n '\\u0134': 'J',\r\n '\\u0248': 'J',\r\n '\\u24C0': 'K',\r\n '\\uFF2B': 'K',\r\n '\\u1E30': 'K',\r\n '\\u01E8': 'K',\r\n '\\u1E32': 'K',\r\n '\\u0136': 'K',\r\n '\\u1E34': 'K',\r\n '\\u0198': 'K',\r\n '\\u2C69': 'K',\r\n '\\uA740': 'K',\r\n '\\uA742': 'K',\r\n '\\uA744': 'K',\r\n '\\uA7A2': 'K',\r\n '\\u24C1': 'L',\r\n '\\uFF2C': 'L',\r\n '\\u013F': 'L',\r\n '\\u0139': 'L',\r\n '\\u013D': 'L',\r\n '\\u1E36': 'L',\r\n '\\u1E38': 'L',\r\n '\\u013B': 'L',\r\n '\\u1E3C': 'L',\r\n '\\u1E3A': 'L',\r\n '\\u0141': 'L',\r\n '\\u023D': 'L',\r\n '\\u2C62': 'L',\r\n '\\u2C60': 'L',\r\n '\\uA748': 'L',\r\n '\\uA746': 'L',\r\n '\\uA780': 'L',\r\n '\\u01C7': 'LJ',\r\n '\\u01C8': 'Lj',\r\n '\\u24C2': 'M',\r\n '\\uFF2D': 'M',\r\n '\\u1E3E': 'M',\r\n '\\u1E40': 'M',\r\n '\\u1E42': 'M',\r\n '\\u2C6E': 'M',\r\n '\\u019C': 'M',\r\n '\\u24C3': 'N',\r\n '\\uFF2E': 'N',\r\n '\\u01F8': 'N',\r\n '\\u0143': 'N',\r\n '\\u00D1': 'N',\r\n '\\u1E44': 'N',\r\n '\\u0147': 'N',\r\n '\\u1E46': 'N',\r\n '\\u0145': 'N',\r\n '\\u1E4A': 'N',\r\n '\\u1E48': 'N',\r\n '\\u0220': 'N',\r\n '\\u019D': 'N',\r\n '\\uA790': 'N',\r\n '\\uA7A4': 'N',\r\n '\\u01CA': 'NJ',\r\n '\\u01CB': 'Nj',\r\n '\\u24C4': 'O',\r\n '\\uFF2F': 'O',\r\n '\\u00D2': 'O',\r\n '\\u00D3': 'O',\r\n '\\u00D4': 'O',\r\n '\\u1ED2': 'O',\r\n '\\u1ED0': 'O',\r\n '\\u1ED6': 'O',\r\n '\\u1ED4': 'O',\r\n '\\u00D5': 'O',\r\n '\\u1E4C': 'O',\r\n '\\u022C': 'O',\r\n '\\u1E4E': 'O',\r\n '\\u014C': 'O',\r\n '\\u1E50': 'O',\r\n '\\u1E52': 'O',\r\n '\\u014E': 'O',\r\n '\\u022E': 'O',\r\n '\\u0230': 'O',\r\n '\\u00D6': 'O',\r\n '\\u022A': 'O',\r\n '\\u1ECE': 'O',\r\n '\\u0150': 'O',\r\n '\\u01D1': 'O',\r\n '\\u020C': 'O',\r\n '\\u020E': 'O',\r\n '\\u01A0': 'O',\r\n '\\u1EDC': 'O',\r\n '\\u1EDA': 'O',\r\n '\\u1EE0': 'O',\r\n '\\u1EDE': 'O',\r\n '\\u1EE2': 'O',\r\n '\\u1ECC': 'O',\r\n '\\u1ED8': 'O',\r\n '\\u01EA': 'O',\r\n '\\u01EC': 'O',\r\n '\\u00D8': 'O',\r\n '\\u01FE': 'O',\r\n '\\u0186': 'O',\r\n '\\u019F': 'O',\r\n '\\uA74A': 'O',\r\n '\\uA74C': 'O',\r\n '\\u01A2': 'OI',\r\n '\\uA74E': 'OO',\r\n '\\u0222': 'OU',\r\n '\\u24C5': 'P',\r\n '\\uFF30': 'P',\r\n '\\u1E54': 'P',\r\n '\\u1E56': 'P',\r\n '\\u01A4': 'P',\r\n '\\u2C63': 'P',\r\n '\\uA750': 'P',\r\n '\\uA752': 'P',\r\n '\\uA754': 'P',\r\n '\\u24C6': 'Q',\r\n '\\uFF31': 'Q',\r\n '\\uA756': 'Q',\r\n '\\uA758': 'Q',\r\n '\\u024A': 'Q',\r\n '\\u24C7': 'R',\r\n '\\uFF32': 'R',\r\n '\\u0154': 'R',\r\n '\\u1E58': 'R',\r\n '\\u0158': 'R',\r\n '\\u0210': 'R',\r\n '\\u0212': 'R',\r\n '\\u1E5A': 'R',\r\n '\\u1E5C': 'R',\r\n '\\u0156': 'R',\r\n '\\u1E5E': 'R',\r\n '\\u024C': 'R',\r\n '\\u2C64': 'R',\r\n '\\uA75A': 'R',\r\n '\\uA7A6': 'R',\r\n '\\uA782': 'R',\r\n '\\u24C8': 'S',\r\n '\\uFF33': 'S',\r\n '\\u1E9E': 'S',\r\n '\\u015A': 'S',\r\n '\\u1E64': 'S',\r\n '\\u015C': 'S',\r\n '\\u1E60': 'S',\r\n '\\u0160': 'S',\r\n '\\u1E66': 'S',\r\n '\\u1E62': 'S',\r\n '\\u1E68': 'S',\r\n '\\u0218': 'S',\r\n '\\u015E': 'S',\r\n '\\u2C7E': 'S',\r\n '\\uA7A8': 'S',\r\n '\\uA784': 'S',\r\n '\\u24C9': 'T',\r\n '\\uFF34': 'T',\r\n '\\u1E6A': 'T',\r\n '\\u0164': 'T',\r\n '\\u1E6C': 'T',\r\n '\\u021A': 'T',\r\n '\\u0162': 'T',\r\n '\\u1E70': 'T',\r\n '\\u1E6E': 'T',\r\n '\\u0166': 'T',\r\n '\\u01AC': 'T',\r\n '\\u01AE': 'T',\r\n '\\u023E': 'T',\r\n '\\uA786': 'T',\r\n '\\uA728': 'TZ',\r\n '\\u24CA': 'U',\r\n '\\uFF35': 'U',\r\n '\\u00D9': 'U',\r\n '\\u00DA': 'U',\r\n '\\u00DB': 'U',\r\n '\\u0168': 'U',\r\n '\\u1E78': 'U',\r\n '\\u016A': 'U',\r\n '\\u1E7A': 'U',\r\n '\\u016C': 'U',\r\n '\\u00DC': 'U',\r\n '\\u01DB': 'U',\r\n '\\u01D7': 'U',\r\n '\\u01D5': 'U',\r\n '\\u01D9': 'U',\r\n '\\u1EE6': 'U',\r\n '\\u016E': 'U',\r\n '\\u0170': 'U',\r\n '\\u01D3': 'U',\r\n '\\u0214': 'U',\r\n '\\u0216': 'U',\r\n '\\u01AF': 'U',\r\n '\\u1EEA': 'U',\r\n '\\u1EE8': 'U',\r\n '\\u1EEE': 'U',\r\n '\\u1EEC': 'U',\r\n '\\u1EF0': 'U',\r\n '\\u1EE4': 'U',\r\n '\\u1E72': 'U',\r\n '\\u0172': 'U',\r\n '\\u1E76': 'U',\r\n '\\u1E74': 'U',\r\n '\\u0244': 'U',\r\n '\\u24CB': 'V',\r\n '\\uFF36': 'V',\r\n '\\u1E7C': 'V',\r\n '\\u1E7E': 'V',\r\n '\\u01B2': 'V',\r\n '\\uA75E': 'V',\r\n '\\u0245': 'V',\r\n '\\uA760': 'VY',\r\n '\\u24CC': 'W',\r\n '\\uFF37': 'W',\r\n '\\u1E80': 'W',\r\n '\\u1E82': 'W',\r\n '\\u0174': 'W',\r\n '\\u1E86': 'W',\r\n '\\u1E84': 'W',\r\n '\\u1E88': 'W',\r\n '\\u2C72': 'W',\r\n '\\u24CD': 'X',\r\n '\\uFF38': 'X',\r\n '\\u1E8A': 'X',\r\n '\\u1E8C': 'X',\r\n '\\u24CE': 'Y',\r\n '\\uFF39': 'Y',\r\n '\\u1EF2': 'Y',\r\n '\\u00DD': 'Y',\r\n '\\u0176': 'Y',\r\n '\\u1EF8': 'Y',\r\n '\\u0232': 'Y',\r\n '\\u1E8E': 'Y',\r\n '\\u0178': 'Y',\r\n '\\u1EF6': 'Y',\r\n '\\u1EF4': 'Y',\r\n '\\u01B3': 'Y',\r\n '\\u024E': 'Y',\r\n '\\u1EFE': 'Y',\r\n '\\u24CF': 'Z',\r\n '\\uFF3A': 'Z',\r\n '\\u0179': 'Z',\r\n '\\u1E90': 'Z',\r\n '\\u017B': 'Z',\r\n '\\u017D': 'Z',\r\n '\\u1E92': 'Z',\r\n '\\u1E94': 'Z',\r\n '\\u01B5': 'Z',\r\n '\\u0224': 'Z',\r\n '\\u2C7F': 'Z',\r\n '\\u2C6B': 'Z',\r\n '\\uA762': 'Z',\r\n '\\u24D0': 'a',\r\n '\\uFF41': 'a',\r\n '\\u1E9A': 'a',\r\n '\\u00E0': 'a',\r\n '\\u00E1': 'a',\r\n '\\u00E2': 'a',\r\n '\\u1EA7': 'a',\r\n '\\u1EA5': 'a',\r\n '\\u1EAB': 'a',\r\n '\\u1EA9': 'a',\r\n '\\u00E3': 'a',\r\n '\\u0101': 'a',\r\n '\\u0103': 'a',\r\n '\\u1EB1': 'a',\r\n '\\u1EAF': 'a',\r\n '\\u1EB5': 'a',\r\n '\\u1EB3': 'a',\r\n '\\u0227': 'a',\r\n '\\u01E1': 'a',\r\n '\\u00E4': 'a',\r\n '\\u01DF': 'a',\r\n '\\u1EA3': 'a',\r\n '\\u00E5': 'a',\r\n '\\u01FB': 'a',\r\n '\\u01CE': 'a',\r\n '\\u0201': 'a',\r\n '\\u0203': 'a',\r\n '\\u1EA1': 'a',\r\n '\\u1EAD': 'a',\r\n '\\u1EB7': 'a',\r\n '\\u1E01': 'a',\r\n '\\u0105': 'a',\r\n '\\u2C65': 'a',\r\n '\\u0250': 'a',\r\n '\\uA733': 'aa',\r\n '\\u00E6': 'ae',\r\n '\\u01FD': 'ae',\r\n '\\u01E3': 'ae',\r\n '\\uA735': 'ao',\r\n '\\uA737': 'au',\r\n '\\uA739': 'av',\r\n '\\uA73B': 'av',\r\n '\\uA73D': 'ay',\r\n '\\u24D1': 'b',\r\n '\\uFF42': 'b',\r\n '\\u1E03': 'b',\r\n '\\u1E05': 'b',\r\n '\\u1E07': 'b',\r\n '\\u0180': 'b',\r\n '\\u0183': 'b',\r\n '\\u0253': 'b',\r\n '\\u24D2': 'c',\r\n '\\uFF43': 'c',\r\n '\\u0107': 'c',\r\n '\\u0109': 'c',\r\n '\\u010B': 'c',\r\n '\\u010D': 'c',\r\n '\\u00E7': 'c',\r\n '\\u1E09': 'c',\r\n '\\u0188': 'c',\r\n '\\u023C': 'c',\r\n '\\uA73F': 'c',\r\n '\\u2184': 'c',\r\n '\\u24D3': 'd',\r\n '\\uFF44': 'd',\r\n '\\u1E0B': 'd',\r\n '\\u010F': 'd',\r\n '\\u1E0D': 'd',\r\n '\\u1E11': 'd',\r\n '\\u1E13': 'd',\r\n '\\u1E0F': 'd',\r\n '\\u0111': 'd',\r\n '\\u018C': 'd',\r\n '\\u0256': 'd',\r\n '\\u0257': 'd',\r\n '\\uA77A': 'd',\r\n '\\u01F3': 'dz',\r\n '\\u01C6': 'dz',\r\n '\\u24D4': 'e',\r\n '\\uFF45': 'e',\r\n '\\u00E8': 'e',\r\n '\\u00E9': 'e',\r\n '\\u00EA': 'e',\r\n '\\u1EC1': 'e',\r\n '\\u1EBF': 'e',\r\n '\\u1EC5': 'e',\r\n '\\u1EC3': 'e',\r\n '\\u1EBD': 'e',\r\n '\\u0113': 'e',\r\n '\\u1E15': 'e',\r\n '\\u1E17': 'e',\r\n '\\u0115': 'e',\r\n '\\u0117': 'e',\r\n '\\u00EB': 'e',\r\n '\\u1EBB': 'e',\r\n '\\u011B': 'e',\r\n '\\u0205': 'e',\r\n '\\u0207': 'e',\r\n '\\u1EB9': 'e',\r\n '\\u1EC7': 'e',\r\n '\\u0229': 'e',\r\n '\\u1E1D': 'e',\r\n '\\u0119': 'e',\r\n '\\u1E19': 'e',\r\n '\\u1E1B': 'e',\r\n '\\u0247': 'e',\r\n '\\u025B': 'e',\r\n '\\u01DD': 'e',\r\n '\\u24D5': 'f',\r\n '\\uFF46': 'f',\r\n '\\u1E1F': 'f',\r\n '\\u0192': 'f',\r\n '\\uA77C': 'f',\r\n '\\u24D6': 'g',\r\n '\\uFF47': 'g',\r\n '\\u01F5': 'g',\r\n '\\u011D': 'g',\r\n '\\u1E21': 'g',\r\n '\\u011F': 'g',\r\n '\\u0121': 'g',\r\n '\\u01E7': 'g',\r\n '\\u0123': 'g',\r\n '\\u01E5': 'g',\r\n '\\u0260': 'g',\r\n '\\uA7A1': 'g',\r\n '\\u1D79': 'g',\r\n '\\uA77F': 'g',\r\n '\\u24D7': 'h',\r\n '\\uFF48': 'h',\r\n '\\u0125': 'h',\r\n '\\u1E23': 'h',\r\n '\\u1E27': 'h',\r\n '\\u021F': 'h',\r\n '\\u1E25': 'h',\r\n '\\u1E29': 'h',\r\n '\\u1E2B': 'h',\r\n '\\u1E96': 'h',\r\n '\\u0127': 'h',\r\n '\\u2C68': 'h',\r\n '\\u2C76': 'h',\r\n '\\u0265': 'h',\r\n '\\u0195': 'hv',\r\n '\\u24D8': 'i',\r\n '\\uFF49': 'i',\r\n '\\u00EC': 'i',\r\n '\\u00ED': 'i',\r\n '\\u00EE': 'i',\r\n '\\u0129': 'i',\r\n '\\u012B': 'i',\r\n '\\u012D': 'i',\r\n '\\u00EF': 'i',\r\n '\\u1E2F': 'i',\r\n '\\u1EC9': 'i',\r\n '\\u01D0': 'i',\r\n '\\u0209': 'i',\r\n '\\u020B': 'i',\r\n '\\u1ECB': 'i',\r\n '\\u012F': 'i',\r\n '\\u1E2D': 'i',\r\n '\\u0268': 'i',\r\n '\\u0131': 'i',\r\n '\\u24D9': 'j',\r\n '\\uFF4A': 'j',\r\n '\\u0135': 'j',\r\n '\\u01F0': 'j',\r\n '\\u0249': 'j',\r\n '\\u24DA': 'k',\r\n '\\uFF4B': 'k',\r\n '\\u1E31': 'k',\r\n '\\u01E9': 'k',\r\n '\\u1E33': 'k',\r\n '\\u0137': 'k',\r\n '\\u1E35': 'k',\r\n '\\u0199': 'k',\r\n '\\u2C6A': 'k',\r\n '\\uA741': 'k',\r\n '\\uA743': 'k',\r\n '\\uA745': 'k',\r\n '\\uA7A3': 'k',\r\n '\\u24DB': 'l',\r\n '\\uFF4C': 'l',\r\n '\\u0140': 'l',\r\n '\\u013A': 'l',\r\n '\\u013E': 'l',\r\n '\\u1E37': 'l',\r\n '\\u1E39': 'l',\r\n '\\u013C': 'l',\r\n '\\u1E3D': 'l',\r\n '\\u1E3B': 'l',\r\n '\\u017F': 'l',\r\n '\\u0142': 'l',\r\n '\\u019A': 'l',\r\n '\\u026B': 'l',\r\n '\\u2C61': 'l',\r\n '\\uA749': 'l',\r\n '\\uA781': 'l',\r\n '\\uA747': 'l',\r\n '\\u01C9': 'lj',\r\n '\\u24DC': 'm',\r\n '\\uFF4D': 'm',\r\n '\\u1E3F': 'm',\r\n '\\u1E41': 'm',\r\n '\\u1E43': 'm',\r\n '\\u0271': 'm',\r\n '\\u026F': 'm',\r\n '\\u24DD': 'n',\r\n '\\uFF4E': 'n',\r\n '\\u01F9': 'n',\r\n '\\u0144': 'n',\r\n '\\u00F1': 'n',\r\n '\\u1E45': 'n',\r\n '\\u0148': 'n',\r\n '\\u1E47': 'n',\r\n '\\u0146': 'n',\r\n '\\u1E4B': 'n',\r\n '\\u1E49': 'n',\r\n '\\u019E': 'n',\r\n '\\u0272': 'n',\r\n '\\u0149': 'n',\r\n '\\uA791': 'n',\r\n '\\uA7A5': 'n',\r\n '\\u01CC': 'nj',\r\n '\\u24DE': 'o',\r\n '\\uFF4F': 'o',\r\n '\\u00F2': 'o',\r\n '\\u00F3': 'o',\r\n '\\u00F4': 'o',\r\n '\\u1ED3': 'o',\r\n '\\u1ED1': 'o',\r\n '\\u1ED7': 'o',\r\n '\\u1ED5': 'o',\r\n '\\u00F5': 'o',\r\n '\\u1E4D': 'o',\r\n '\\u022D': 'o',\r\n '\\u1E4F': 'o',\r\n '\\u014D': 'o',\r\n '\\u1E51': 'o',\r\n '\\u1E53': 'o',\r\n '\\u014F': 'o',\r\n '\\u022F': 'o',\r\n '\\u0231': 'o',\r\n '\\u00F6': 'o',\r\n '\\u022B': 'o',\r\n '\\u1ECF': 'o',\r\n '\\u0151': 'o',\r\n '\\u01D2': 'o',\r\n '\\u020D': 'o',\r\n '\\u020F': 'o',\r\n '\\u01A1': 'o',\r\n '\\u1EDD': 'o',\r\n '\\u1EDB': 'o',\r\n '\\u1EE1': 'o',\r\n '\\u1EDF': 'o',\r\n '\\u1EE3': 'o',\r\n '\\u1ECD': 'o',\r\n '\\u1ED9': 'o',\r\n '\\u01EB': 'o',\r\n '\\u01ED': 'o',\r\n '\\u00F8': 'o',\r\n '\\u01FF': 'o',\r\n '\\u0254': 'o',\r\n '\\uA74B': 'o',\r\n '\\uA74D': 'o',\r\n '\\u0275': 'o',\r\n '\\u01A3': 'oi',\r\n '\\u0223': 'ou',\r\n '\\uA74F': 'oo',\r\n '\\u24DF': 'p',\r\n '\\uFF50': 'p',\r\n '\\u1E55': 'p',\r\n '\\u1E57': 'p',\r\n '\\u01A5': 'p',\r\n '\\u1D7D': 'p',\r\n '\\uA751': 'p',\r\n '\\uA753': 'p',\r\n '\\uA755': 'p',\r\n '\\u24E0': 'q',\r\n '\\uFF51': 'q',\r\n '\\u024B': 'q',\r\n '\\uA757': 'q',\r\n '\\uA759': 'q',\r\n '\\u24E1': 'r',\r\n '\\uFF52': 'r',\r\n '\\u0155': 'r',\r\n '\\u1E59': 'r',\r\n '\\u0159': 'r',\r\n '\\u0211': 'r',\r\n '\\u0213': 'r',\r\n '\\u1E5B': 'r',\r\n '\\u1E5D': 'r',\r\n '\\u0157': 'r',\r\n '\\u1E5F': 'r',\r\n '\\u024D': 'r',\r\n '\\u027D': 'r',\r\n '\\uA75B': 'r',\r\n '\\uA7A7': 'r',\r\n '\\uA783': 'r',\r\n '\\u24E2': 's',\r\n '\\uFF53': 's',\r\n '\\u00DF': 's',\r\n '\\u015B': 's',\r\n '\\u1E65': 's',\r\n '\\u015D': 's',\r\n '\\u1E61': 's',\r\n '\\u0161': 's',\r\n '\\u1E67': 's',\r\n '\\u1E63': 's',\r\n '\\u1E69': 's',\r\n '\\u0219': 's',\r\n '\\u015F': 's',\r\n '\\u023F': 's',\r\n '\\uA7A9': 's',\r\n '\\uA785': 's',\r\n '\\u1E9B': 's',\r\n '\\u24E3': 't',\r\n '\\uFF54': 't',\r\n '\\u1E6B': 't',\r\n '\\u1E97': 't',\r\n '\\u0165': 't',\r\n '\\u1E6D': 't',\r\n '\\u021B': 't',\r\n '\\u0163': 't',\r\n '\\u1E71': 't',\r\n '\\u1E6F': 't',\r\n '\\u0167': 't',\r\n '\\u01AD': 't',\r\n '\\u0288': 't',\r\n '\\u2C66': 't',\r\n '\\uA787': 't',\r\n '\\uA729': 'tz',\r\n '\\u24E4': 'u',\r\n '\\uFF55': 'u',\r\n '\\u00F9': 'u',\r\n '\\u00FA': 'u',\r\n '\\u00FB': 'u',\r\n '\\u0169': 'u',\r\n '\\u1E79': 'u',\r\n '\\u016B': 'u',\r\n '\\u1E7B': 'u',\r\n '\\u016D': 'u',\r\n '\\u00FC': 'u',\r\n '\\u01DC': 'u',\r\n '\\u01D8': 'u',\r\n '\\u01D6': 'u',\r\n '\\u01DA': 'u',\r\n '\\u1EE7': 'u',\r\n '\\u016F': 'u',\r\n '\\u0171': 'u',\r\n '\\u01D4': 'u',\r\n '\\u0215': 'u',\r\n '\\u0217': 'u',\r\n '\\u01B0': 'u',\r\n '\\u1EEB': 'u',\r\n '\\u1EE9': 'u',\r\n '\\u1EEF': 'u',\r\n '\\u1EED': 'u',\r\n '\\u1EF1': 'u',\r\n '\\u1EE5': 'u',\r\n '\\u1E73': 'u',\r\n '\\u0173': 'u',\r\n '\\u1E77': 'u',\r\n '\\u1E75': 'u',\r\n '\\u0289': 'u',\r\n '\\u24E5': 'v',\r\n '\\uFF56': 'v',\r\n '\\u1E7D': 'v',\r\n '\\u1E7F': 'v',\r\n '\\u028B': 'v',\r\n '\\uA75F': 'v',\r\n '\\u028C': 'v',\r\n '\\uA761': 'vy',\r\n '\\u24E6': 'w',\r\n '\\uFF57': 'w',\r\n '\\u1E81': 'w',\r\n '\\u1E83': 'w',\r\n '\\u0175': 'w',\r\n '\\u1E87': 'w',\r\n '\\u1E85': 'w',\r\n '\\u1E98': 'w',\r\n '\\u1E89': 'w',\r\n '\\u2C73': 'w',\r\n '\\u24E7': 'x',\r\n '\\uFF58': 'x',\r\n '\\u1E8B': 'x',\r\n '\\u1E8D': 'x',\r\n '\\u24E8': 'y',\r\n '\\uFF59': 'y',\r\n '\\u1EF3': 'y',\r\n '\\u00FD': 'y',\r\n '\\u0177': 'y',\r\n '\\u1EF9': 'y',\r\n '\\u0233': 'y',\r\n '\\u1E8F': 'y',\r\n '\\u00FF': 'y',\r\n '\\u1EF7': 'y',\r\n '\\u1E99': 'y',\r\n '\\u1EF5': 'y',\r\n '\\u01B4': 'y',\r\n '\\u024F': 'y',\r\n '\\u1EFF': 'y',\r\n '\\u24E9': 'z',\r\n '\\uFF5A': 'z',\r\n '\\u017A': 'z',\r\n '\\u1E91': 'z',\r\n '\\u017C': 'z',\r\n '\\u017E': 'z',\r\n '\\u1E93': 'z',\r\n '\\u1E95': 'z',\r\n '\\u01B6': 'z',\r\n '\\u0225': 'z',\r\n '\\u0240': 'z',\r\n '\\u2C6C': 'z',\r\n '\\uA763': 'z',\r\n '\\u0386': '\\u0391',\r\n '\\u0388': '\\u0395',\r\n '\\u0389': '\\u0397',\r\n '\\u038A': '\\u0399',\r\n '\\u03AA': '\\u0399',\r\n '\\u038C': '\\u039F',\r\n '\\u038E': '\\u03A5',\r\n '\\u03AB': '\\u03A5',\r\n '\\u038F': '\\u03A9',\r\n '\\u03AC': '\\u03B1',\r\n '\\u03AD': '\\u03B5',\r\n '\\u03AE': '\\u03B7',\r\n '\\u03AF': '\\u03B9',\r\n '\\u03CA': '\\u03B9',\r\n '\\u0390': '\\u03B9',\r\n '\\u03CC': '\\u03BF',\r\n '\\u03CD': '\\u03C5',\r\n '\\u03CB': '\\u03C5',\r\n '\\u03B0': '\\u03C5',\r\n '\\u03C9': '\\u03C9',\r\n '\\u03C2': '\\u03C3'\r\n };\r\n\r\n return diacritics;\r\n});\r\n\r\nS2.define('select2/data/base',[\r\n '../utils'\r\n], function (Utils) {\r\n function BaseAdapter ($element, options) {\r\n BaseAdapter.__super__.constructor.call(this);\r\n }\r\n\r\n Utils.Extend(BaseAdapter, Utils.Observable);\r\n\r\n BaseAdapter.prototype.current = function (callback) {\r\n throw new Error('The `current` method must be defined in child classes.');\r\n };\r\n\r\n BaseAdapter.prototype.query = function (params, callback) {\r\n throw new Error('The `query` method must be defined in child classes.');\r\n };\r\n\r\n BaseAdapter.prototype.bind = function (container, $container) {\r\n // Can be implemented in subclasses\r\n };\r\n\r\n BaseAdapter.prototype.destroy = function () {\r\n // Can be implemented in subclasses\r\n };\r\n\r\n BaseAdapter.prototype.generateResultId = function (container, data) {\r\n var id = container.id + '-result-';\r\n\r\n id += Utils.generateChars(4);\r\n\r\n if (data.id != null) {\r\n id += '-' + data.id.toString();\r\n } else {\r\n id += '-' + Utils.generateChars(4);\r\n }\r\n return id;\r\n };\r\n\r\n return BaseAdapter;\r\n});\r\n\r\nS2.define('select2/data/select',[\r\n './base',\r\n '../utils',\r\n 'jquery'\r\n], function (BaseAdapter, Utils, $) {\r\n function SelectAdapter ($element, options) {\r\n this.$element = $element;\r\n this.options = options;\r\n\r\n SelectAdapter.__super__.constructor.call(this);\r\n }\r\n\r\n Utils.Extend(SelectAdapter, BaseAdapter);\r\n\r\n SelectAdapter.prototype.current = function (callback) {\r\n var data = [];\r\n var self = this;\r\n\r\n this.$element.find(':selected').each(function () {\r\n var $option = $(this);\r\n\r\n var option = self.item($option);\r\n\r\n data.push(option);\r\n });\r\n\r\n callback(data);\r\n };\r\n\r\n SelectAdapter.prototype.select = function (data) {\r\n var self = this;\r\n\r\n data.selected = true;\r\n\r\n // If data.element is a DOM node, use it instead\r\n if ($(data.element).is('option')) {\r\n data.element.selected = true;\r\n\r\n this.$element.trigger('change');\r\n\r\n return;\r\n }\r\n\r\n if (this.$element.prop('multiple')) {\r\n this.current(function (currentData) {\r\n var val = [];\r\n\r\n data = [data];\r\n data.push.apply(data, currentData);\r\n\r\n for (var d = 0; d < data.length; d++) {\r\n var id = data[d].id;\r\n\r\n if ($.inArray(id, val) === -1) {\r\n val.push(id);\r\n }\r\n }\r\n\r\n self.$element.val(val);\r\n self.$element.trigger('change');\r\n });\r\n } else {\r\n var val = data.id;\r\n\r\n this.$element.val(val);\r\n this.$element.trigger('change');\r\n }\r\n };\r\n\r\n SelectAdapter.prototype.unselect = function (data) {\r\n var self = this;\r\n\r\n if (!this.$element.prop('multiple')) {\r\n return;\r\n }\r\n\r\n data.selected = false;\r\n\r\n if ($(data.element).is('option')) {\r\n data.element.selected = false;\r\n\r\n this.$element.trigger('change');\r\n\r\n return;\r\n }\r\n\r\n this.current(function (currentData) {\r\n var val = [];\r\n\r\n for (var d = 0; d < currentData.length; d++) {\r\n var id = currentData[d].id;\r\n\r\n if (id !== data.id && $.inArray(id, val) === -1) {\r\n val.push(id);\r\n }\r\n }\r\n\r\n self.$element.val(val);\r\n\r\n self.$element.trigger('change');\r\n });\r\n };\r\n\r\n SelectAdapter.prototype.bind = function (container, $container) {\r\n var self = this;\r\n\r\n this.container = container;\r\n\r\n container.on('select', function (params) {\r\n self.select(params.data);\r\n });\r\n\r\n container.on('unselect', function (params) {\r\n self.unselect(params.data);\r\n });\r\n };\r\n\r\n SelectAdapter.prototype.destroy = function () {\r\n // Remove anything added to child elements\r\n this.$element.find('*').each(function () {\r\n // Remove any custom data set by Select2\r\n Utils.RemoveData(this);\r\n });\r\n };\r\n\r\n SelectAdapter.prototype.query = function (params, callback) {\r\n var data = [];\r\n var self = this;\r\n\r\n var $options = this.$element.children();\r\n\r\n $options.each(function () {\r\n var $option = $(this);\r\n\r\n if (!$option.is('option') && !$option.is('optgroup')) {\r\n return;\r\n }\r\n\r\n var option = self.item($option);\r\n\r\n var matches = self.matches(params, option);\r\n\r\n if (matches !== null) {\r\n data.push(matches);\r\n }\r\n });\r\n\r\n callback({\r\n results: data\r\n });\r\n };\r\n\r\n SelectAdapter.prototype.addOptions = function ($options) {\r\n Utils.appendMany(this.$element, $options);\r\n };\r\n\r\n SelectAdapter.prototype.option = function (data) {\r\n var option;\r\n\r\n if (data.children) {\r\n option = document.createElement('optgroup');\r\n option.label = data.text;\r\n } else {\r\n option = document.createElement('option');\r\n\r\n if (option.textContent !== undefined) {\r\n option.textContent = data.text;\r\n } else {\r\n option.innerText = data.text;\r\n }\r\n }\r\n\r\n if (data.id !== undefined) {\r\n option.value = data.id;\r\n }\r\n\r\n if (data.disabled) {\r\n option.disabled = true;\r\n }\r\n\r\n if (data.selected) {\r\n option.selected = true;\r\n }\r\n\r\n if (data.title) {\r\n option.title = data.title;\r\n }\r\n\r\n var $option = $(option);\r\n\r\n var normalizedData = this._normalizeItem(data);\r\n normalizedData.element = option;\r\n\r\n // Override the option's data with the combined data\r\n Utils.StoreData(option, 'data', normalizedData);\r\n\r\n return $option;\r\n };\r\n\r\n SelectAdapter.prototype.item = function ($option) {\r\n var data = {};\r\n\r\n data = Utils.GetData($option[0], 'data');\r\n\r\n if (data != null) {\r\n return data;\r\n }\r\n\r\n if ($option.is('option')) {\r\n data = {\r\n id: $option.val(),\r\n text: $option.text(),\r\n disabled: $option.prop('disabled'),\r\n selected: $option.prop('selected'),\r\n title: $option.prop('title')\r\n };\r\n } else if ($option.is('optgroup')) {\r\n data = {\r\n text: $option.prop('label'),\r\n children: [],\r\n title: $option.prop('title')\r\n };\r\n\r\n var $children = $option.children('option');\r\n var children = [];\r\n\r\n for (var c = 0; c < $children.length; c++) {\r\n var $child = $($children[c]);\r\n\r\n var child = this.item($child);\r\n\r\n children.push(child);\r\n }\r\n\r\n data.children = children;\r\n }\r\n\r\n data = this._normalizeItem(data);\r\n data.element = $option[0];\r\n\r\n Utils.StoreData($option[0], 'data', data);\r\n\r\n return data;\r\n };\r\n\r\n SelectAdapter.prototype._normalizeItem = function (item) {\r\n if (item !== Object(item)) {\r\n item = {\r\n id: item,\r\n text: item\r\n };\r\n }\r\n\r\n item = $.extend({}, {\r\n text: ''\r\n }, item);\r\n\r\n var defaults = {\r\n selected: false,\r\n disabled: false\r\n };\r\n\r\n if (item.id != null) {\r\n item.id = item.id.toString();\r\n }\r\n\r\n if (item.text != null) {\r\n item.text = item.text.toString();\r\n }\r\n\r\n if (item._resultId == null && item.id && this.container != null) {\r\n item._resultId = this.generateResultId(this.container, item);\r\n }\r\n\r\n return $.extend({}, defaults, item);\r\n };\r\n\r\n SelectAdapter.prototype.matches = function (params, data) {\r\n var matcher = this.options.get('matcher');\r\n\r\n return matcher(params, data);\r\n };\r\n\r\n return SelectAdapter;\r\n});\r\n\r\nS2.define('select2/data/array',[\r\n './select',\r\n '../utils',\r\n 'jquery'\r\n], function (SelectAdapter, Utils, $) {\r\n function ArrayAdapter ($element, options) {\r\n var data = options.get('data') || [];\r\n\r\n ArrayAdapter.__super__.constructor.call(this, $element, options);\r\n\r\n this.addOptions(this.convertToOptions(data));\r\n }\r\n\r\n Utils.Extend(ArrayAdapter, SelectAdapter);\r\n\r\n ArrayAdapter.prototype.select = function (data) {\r\n var $option = this.$element.find('option').filter(function (i, elm) {\r\n return elm.value == data.id.toString();\r\n });\r\n\r\n if ($option.length === 0) {\r\n $option = this.option(data);\r\n\r\n this.addOptions($option);\r\n }\r\n\r\n ArrayAdapter.__super__.select.call(this, data);\r\n };\r\n\r\n ArrayAdapter.prototype.convertToOptions = function (data) {\r\n var self = this;\r\n\r\n var $existing = this.$element.find('option');\r\n var existingIds = $existing.map(function () {\r\n return self.item($(this)).id;\r\n }).get();\r\n\r\n var $options = [];\r\n\r\n // Filter out all items except for the one passed in the argument\r\n function onlyItem (item) {\r\n return function () {\r\n return $(this).val() == item.id;\r\n };\r\n }\r\n\r\n for (var d = 0; d < data.length; d++) {\r\n var item = this._normalizeItem(data[d]);\r\n\r\n // Skip items which were pre-loaded, only merge the data\r\n if ($.inArray(item.id, existingIds) >= 0) {\r\n var $existingOption = $existing.filter(onlyItem(item));\r\n\r\n var existingData = this.item($existingOption);\r\n var newData = $.extend(true, {}, item, existingData);\r\n\r\n var $newOption = this.option(newData);\r\n\r\n $existingOption.replaceWith($newOption);\r\n\r\n continue;\r\n }\r\n\r\n var $option = this.option(item);\r\n\r\n if (item.children) {\r\n var $children = this.convertToOptions(item.children);\r\n\r\n Utils.appendMany($option, $children);\r\n }\r\n\r\n $options.push($option);\r\n }\r\n\r\n return $options;\r\n };\r\n\r\n return ArrayAdapter;\r\n});\r\n\r\nS2.define('select2/data/ajax',[\r\n './array',\r\n '../utils',\r\n 'jquery'\r\n], function (ArrayAdapter, Utils, $) {\r\n function AjaxAdapter ($element, options) {\r\n this.ajaxOptions = this._applyDefaults(options.get('ajax'));\r\n\r\n if (this.ajaxOptions.processResults != null) {\r\n this.processResults = this.ajaxOptions.processResults;\r\n }\r\n\r\n AjaxAdapter.__super__.constructor.call(this, $element, options);\r\n }\r\n\r\n Utils.Extend(AjaxAdapter, ArrayAdapter);\r\n\r\n AjaxAdapter.prototype._applyDefaults = function (options) {\r\n var defaults = {\r\n data: function (params) {\r\n return $.extend({}, params, {\r\n q: params.term\r\n });\r\n },\r\n transport: function (params, success, failure) {\r\n var $request = $.ajax(params);\r\n\r\n $request.then(success);\r\n $request.fail(failure);\r\n\r\n return $request;\r\n }\r\n };\r\n\r\n return $.extend({}, defaults, options, true);\r\n };\r\n\r\n AjaxAdapter.prototype.processResults = function (results) {\r\n return results;\r\n };\r\n\r\n AjaxAdapter.prototype.query = function (params, callback) {\r\n var matches = [];\r\n var self = this;\r\n\r\n if (this._request != null) {\r\n // JSONP requests cannot always be aborted\r\n if ($.isFunction(this._request.abort)) {\r\n this._request.abort();\r\n }\r\n\r\n this._request = null;\r\n }\r\n\r\n var options = $.extend({\r\n type: 'GET'\r\n }, this.ajaxOptions);\r\n\r\n if (typeof options.url === 'function') {\r\n options.url = options.url.call(this.$element, params);\r\n }\r\n\r\n if (typeof options.data === 'function') {\r\n options.data = options.data.call(this.$element, params);\r\n }\r\n\r\n function request () {\r\n var $request = options.transport(options, function (data) {\r\n var results = self.processResults(data, params);\r\n\r\n if (self.options.get('debug') && window.console && console.error) {\r\n // Check to make sure that the response included a `results` key.\r\n if (!results || !results.results || !$.isArray(results.results)) {\r\n console.error(\r\n 'Select2: The AJAX results did not return an array in the ' +\r\n '`results` key of the response.'\r\n );\r\n }\r\n }\r\n\r\n callback(results);\r\n }, function () {\r\n // Attempt to detect if a request was aborted\r\n // Only works if the transport exposes a status property\r\n if ('status' in $request &&\r\n ($request.status === 0 || $request.status === '0')) {\r\n return;\r\n }\r\n\r\n self.trigger('results:message', {\r\n message: 'errorLoading'\r\n });\r\n });\r\n\r\n self._request = $request;\r\n }\r\n\r\n if (this.ajaxOptions.delay && params.term != null) {\r\n if (this._queryTimeout) {\r\n window.clearTimeout(this._queryTimeout);\r\n }\r\n\r\n this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay);\r\n } else {\r\n request();\r\n }\r\n };\r\n\r\n return AjaxAdapter;\r\n});\r\n\r\nS2.define('select2/data/tags',[\r\n 'jquery'\r\n], function ($) {\r\n function Tags (decorated, $element, options) {\r\n var tags = options.get('tags');\r\n\r\n var createTag = options.get('createTag');\r\n\r\n if (createTag !== undefined) {\r\n this.createTag = createTag;\r\n }\r\n\r\n var insertTag = options.get('insertTag');\r\n\r\n if (insertTag !== undefined) {\r\n this.insertTag = insertTag;\r\n }\r\n\r\n decorated.call(this, $element, options);\r\n\r\n if ($.isArray(tags)) {\r\n for (var t = 0; t < tags.length; t++) {\r\n var tag = tags[t];\r\n var item = this._normalizeItem(tag);\r\n\r\n var $option = this.option(item);\r\n\r\n this.$element.append($option);\r\n }\r\n }\r\n }\r\n\r\n Tags.prototype.query = function (decorated, params, callback) {\r\n var self = this;\r\n\r\n this._removeOldTags();\r\n\r\n if (params.term == null || params.page != null) {\r\n decorated.call(this, params, callback);\r\n return;\r\n }\r\n\r\n function wrapper (obj, child) {\r\n var data = obj.results;\r\n\r\n for (var i = 0; i < data.length; i++) {\r\n var option = data[i];\r\n\r\n var checkChildren = (\r\n option.children != null &&\r\n !wrapper({\r\n results: option.children\r\n }, true)\r\n );\r\n\r\n var optionText = (option.text || '').toUpperCase();\r\n var paramsTerm = (params.term || '').toUpperCase();\r\n\r\n var checkText = optionText === paramsTerm;\r\n\r\n if (checkText || checkChildren) {\r\n if (child) {\r\n return false;\r\n }\r\n\r\n obj.data = data;\r\n callback(obj);\r\n\r\n return;\r\n }\r\n }\r\n\r\n if (child) {\r\n return true;\r\n }\r\n\r\n var tag = self.createTag(params);\r\n\r\n if (tag != null) {\r\n var $option = self.option(tag);\r\n $option.attr('data-select2-tag', true);\r\n\r\n self.addOptions([$option]);\r\n\r\n self.insertTag(data, tag);\r\n }\r\n\r\n obj.results = data;\r\n\r\n callback(obj);\r\n }\r\n\r\n decorated.call(this, params, wrapper);\r\n };\r\n\r\n Tags.prototype.createTag = function (decorated, params) {\r\n var term = $.trim(params.term);\r\n\r\n if (term === '') {\r\n return null;\r\n }\r\n\r\n return {\r\n id: term,\r\n text: term\r\n };\r\n };\r\n\r\n Tags.prototype.insertTag = function (_, data, tag) {\r\n data.unshift(tag);\r\n };\r\n\r\n Tags.prototype._removeOldTags = function (_) {\r\n var tag = this._lastTag;\r\n\r\n var $options = this.$element.find('option[data-select2-tag]');\r\n\r\n $options.each(function () {\r\n if (this.selected) {\r\n return;\r\n }\r\n\r\n $(this).remove();\r\n });\r\n };\r\n\r\n return Tags;\r\n});\r\n\r\nS2.define('select2/data/tokenizer',[\r\n 'jquery'\r\n], function ($) {\r\n function Tokenizer (decorated, $element, options) {\r\n var tokenizer = options.get('tokenizer');\r\n\r\n if (tokenizer !== undefined) {\r\n this.tokenizer = tokenizer;\r\n }\r\n\r\n decorated.call(this, $element, options);\r\n }\r\n\r\n Tokenizer.prototype.bind = function (decorated, container, $container) {\r\n decorated.call(this, container, $container);\r\n\r\n this.$search = container.dropdown.$search || container.selection.$search ||\r\n $container.find('.select2-search__field');\r\n };\r\n\r\n Tokenizer.prototype.query = function (decorated, params, callback) {\r\n var self = this;\r\n\r\n function createAndSelect (data) {\r\n // Normalize the data object so we can use it for checks\r\n var item = self._normalizeItem(data);\r\n\r\n // Check if the data object already exists as a tag\r\n // Select it if it doesn't\r\n var $existingOptions = self.$element.find('option').filter(function () {\r\n return $(this).val() === item.id;\r\n });\r\n\r\n // If an existing option wasn't found for it, create the option\r\n if (!$existingOptions.length) {\r\n var $option = self.option(item);\r\n $option.attr('data-select2-tag', true);\r\n\r\n self._removeOldTags();\r\n self.addOptions([$option]);\r\n }\r\n\r\n // Select the item, now that we know there is an option for it\r\n select(item);\r\n }\r\n\r\n function select (data) {\r\n self.trigger('select', {\r\n data: data\r\n });\r\n }\r\n\r\n params.term = params.term || '';\r\n\r\n var tokenData = this.tokenizer(params, this.options, createAndSelect);\r\n\r\n if (tokenData.term !== params.term) {\r\n // Replace the search term if we have the search box\r\n if (this.$search.length) {\r\n this.$search.val(tokenData.term);\r\n this.$search.focus();\r\n }\r\n\r\n params.term = tokenData.term;\r\n }\r\n\r\n decorated.call(this, params, callback);\r\n };\r\n\r\n Tokenizer.prototype.tokenizer = function (_, params, options, callback) {\r\n var separators = options.get('tokenSeparators') || [];\r\n var term = params.term;\r\n var i = 0;\r\n\r\n var createTag = this.createTag || function (params) {\r\n return {\r\n id: params.term,\r\n text: params.term\r\n };\r\n };\r\n\r\n while (i < term.length) {\r\n var termChar = term[i];\r\n\r\n if ($.inArray(termChar, separators) === -1) {\r\n i++;\r\n\r\n continue;\r\n }\r\n\r\n var part = term.substr(0, i);\r\n var partParams = $.extend({}, params, {\r\n term: part\r\n });\r\n\r\n var data = createTag(partParams);\r\n\r\n if (data == null) {\r\n i++;\r\n continue;\r\n }\r\n\r\n callback(data);\r\n\r\n // Reset the term to not include the tokenized portion\r\n term = term.substr(i + 1) || '';\r\n i = 0;\r\n }\r\n\r\n return {\r\n term: term\r\n };\r\n };\r\n\r\n return Tokenizer;\r\n});\r\n\r\nS2.define('select2/data/minimumInputLength',[\r\n\r\n], function () {\r\n function MinimumInputLength (decorated, $e, options) {\r\n this.minimumInputLength = options.get('minimumInputLength');\r\n\r\n decorated.call(this, $e, options);\r\n }\r\n\r\n MinimumInputLength.prototype.query = function (decorated, params, callback) {\r\n params.term = params.term || '';\r\n\r\n if (params.term.length < this.minimumInputLength) {\r\n this.trigger('results:message', {\r\n message: 'inputTooShort',\r\n args: {\r\n minimum: this.minimumInputLength,\r\n input: params.term,\r\n params: params\r\n }\r\n });\r\n\r\n return;\r\n }\r\n\r\n decorated.call(this, params, callback);\r\n };\r\n\r\n return MinimumInputLength;\r\n});\r\n\r\nS2.define('select2/data/maximumInputLength',[\r\n\r\n], function () {\r\n function MaximumInputLength (decorated, $e, options) {\r\n this.maximumInputLength = options.get('maximumInputLength');\r\n\r\n decorated.call(this, $e, options);\r\n }\r\n\r\n MaximumInputLength.prototype.query = function (decorated, params, callback) {\r\n params.term = params.term || '';\r\n\r\n if (this.maximumInputLength > 0 &&\r\n params.term.length > this.maximumInputLength) {\r\n this.trigger('results:message', {\r\n message: 'inputTooLong',\r\n args: {\r\n maximum: this.maximumInputLength,\r\n input: params.term,\r\n params: params\r\n }\r\n });\r\n\r\n return;\r\n }\r\n\r\n decorated.call(this, params, callback);\r\n };\r\n\r\n return MaximumInputLength;\r\n});\r\n\r\nS2.define('select2/data/maximumSelectionLength',[\r\n\r\n], function (){\r\n function MaximumSelectionLength (decorated, $e, options) {\r\n this.maximumSelectionLength = options.get('maximumSelectionLength');\r\n\r\n decorated.call(this, $e, options);\r\n }\r\n\r\n MaximumSelectionLength.prototype.query =\r\n function (decorated, params, callback) {\r\n var self = this;\r\n\r\n this.current(function (currentData) {\r\n var count = currentData != null ? currentData.length : 0;\r\n if (self.maximumSelectionLength > 0 &&\r\n count >= self.maximumSelectionLength) {\r\n self.trigger('results:message', {\r\n message: 'maximumSelected',\r\n args: {\r\n maximum: self.maximumSelectionLength\r\n }\r\n });\r\n return;\r\n }\r\n decorated.call(self, params, callback);\r\n });\r\n };\r\n\r\n return MaximumSelectionLength;\r\n});\r\n\r\nS2.define('select2/dropdown',[\r\n 'jquery',\r\n './utils'\r\n], function ($, Utils) {\r\n function Dropdown ($element, options) {\r\n this.$element = $element;\r\n this.options = options;\r\n\r\n Dropdown.__super__.constructor.call(this);\r\n }\r\n\r\n Utils.Extend(Dropdown, Utils.Observable);\r\n\r\n Dropdown.prototype.render = function () {\r\n var $dropdown = $(\r\n '' +\r\n '' +\r\n ''\r\n );\r\n\r\n $dropdown.attr('dir', this.options.get('dir'));\r\n\r\n this.$dropdown = $dropdown;\r\n\r\n return $dropdown;\r\n };\r\n\r\n Dropdown.prototype.bind = function () {\r\n // Should be implemented in subclasses\r\n };\r\n\r\n Dropdown.prototype.position = function ($dropdown, $container) {\r\n // Should be implmented in subclasses\r\n };\r\n\r\n Dropdown.prototype.destroy = function () {\r\n // Remove the dropdown from the DOM\r\n this.$dropdown.remove();\r\n };\r\n\r\n return Dropdown;\r\n});\r\n\r\nS2.define('select2/dropdown/search',[\r\n 'jquery',\r\n '../utils'\r\n], function ($, Utils) {\r\n function Search () { }\r\n\r\n Search.prototype.render = function (decorated) {\r\n var $rendered = decorated.call(this);\r\n\r\n var $search = $(\r\n '' +\r\n '' +\r\n ''\r\n );\r\n\r\n this.$searchContainer = $search;\r\n this.$search = $search.find('input');\r\n\r\n $rendered.prepend($search);\r\n\r\n return $rendered;\r\n };\r\n\r\n Search.prototype.bind = function (decorated, container, $container) {\r\n var self = this;\r\n\r\n decorated.call(this, container, $container);\r\n\r\n this.$search.on('keydown', function (evt) {\r\n self.trigger('keypress', evt);\r\n\r\n self._keyUpPrevented = evt.isDefaultPrevented();\r\n });\r\n\r\n // Workaround for browsers which do not support the `input` event\r\n // This will prevent double-triggering of events for browsers which support\r\n // both the `keyup` and `input` events.\r\n this.$search.on('input', function (evt) {\r\n // Unbind the duplicated `keyup` event\r\n $(this).off('keyup');\r\n });\r\n\r\n this.$search.on('keyup input', function (evt) {\r\n self.handleSearch(evt);\r\n });\r\n\r\n container.on('open', function () {\r\n self.$search.attr('tabindex', 0);\r\n\r\n self.$search.focus();\r\n\r\n window.setTimeout(function () {\r\n self.$search.focus();\r\n }, 0);\r\n });\r\n\r\n container.on('close', function () {\r\n self.$search.attr('tabindex', -1);\r\n\r\n self.$search.val('');\r\n self.$search.blur();\r\n });\r\n\r\n container.on('focus', function () {\r\n if (!container.isOpen()) {\r\n self.$search.focus();\r\n }\r\n });\r\n\r\n container.on('results:all', function (params) {\r\n if (params.query.term == null || params.query.term === '') {\r\n var showSearch = self.showSearch(params);\r\n\r\n if (showSearch) {\r\n self.$searchContainer.removeClass('select2-search--hide');\r\n } else {\r\n self.$searchContainer.addClass('select2-search--hide');\r\n }\r\n }\r\n });\r\n };\r\n\r\n Search.prototype.handleSearch = function (evt) {\r\n if (!this._keyUpPrevented) {\r\n var input = this.$search.val();\r\n\r\n this.trigger('query', {\r\n term: input\r\n });\r\n }\r\n\r\n this._keyUpPrevented = false;\r\n };\r\n\r\n Search.prototype.showSearch = function (_, params) {\r\n return true;\r\n };\r\n\r\n return Search;\r\n});\r\n\r\nS2.define('select2/dropdown/hidePlaceholder',[\r\n\r\n], function () {\r\n function HidePlaceholder (decorated, $element, options, dataAdapter) {\r\n this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\r\n\r\n decorated.call(this, $element, options, dataAdapter);\r\n }\r\n\r\n HidePlaceholder.prototype.append = function (decorated, data) {\r\n data.results = this.removePlaceholder(data.results);\r\n\r\n decorated.call(this, data);\r\n };\r\n\r\n HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) {\r\n if (typeof placeholder === 'string') {\r\n placeholder = {\r\n id: '',\r\n text: placeholder\r\n };\r\n }\r\n\r\n return placeholder;\r\n };\r\n\r\n HidePlaceholder.prototype.removePlaceholder = function (_, data) {\r\n var modifiedData = data.slice(0);\r\n\r\n for (var d = data.length - 1; d >= 0; d--) {\r\n var item = data[d];\r\n\r\n if (this.placeholder.id === item.id) {\r\n modifiedData.splice(d, 1);\r\n }\r\n }\r\n\r\n return modifiedData;\r\n };\r\n\r\n return HidePlaceholder;\r\n});\r\n\r\nS2.define('select2/dropdown/infiniteScroll',[\r\n 'jquery'\r\n], function ($) {\r\n function InfiniteScroll (decorated, $element, options, dataAdapter) {\r\n this.lastParams = {};\r\n\r\n decorated.call(this, $element, options, dataAdapter);\r\n\r\n this.$loadingMore = this.createLoadingMore();\r\n this.loading = false;\r\n }\r\n\r\n InfiniteScroll.prototype.append = function (decorated, data) {\r\n this.$loadingMore.remove();\r\n this.loading = false;\r\n\r\n decorated.call(this, data);\r\n\r\n if (this.showLoadingMore(data)) {\r\n this.$results.append(this.$loadingMore);\r\n }\r\n };\r\n\r\n InfiniteScroll.prototype.bind = function (decorated, container, $container) {\r\n var self = this;\r\n\r\n decorated.call(this, container, $container);\r\n\r\n container.on('query', function (params) {\r\n self.lastParams = params;\r\n self.loading = true;\r\n });\r\n\r\n container.on('query:append', function (params) {\r\n self.lastParams = params;\r\n self.loading = true;\r\n });\r\n\r\n this.$results.on('scroll', function () {\r\n var isLoadMoreVisible = $.contains(\r\n document.documentElement,\r\n self.$loadingMore[0]\r\n );\r\n\r\n if (self.loading || !isLoadMoreVisible) {\r\n return;\r\n }\r\n\r\n var currentOffset = self.$results.offset().top +\r\n self.$results.outerHeight(false);\r\n var loadingMoreOffset = self.$loadingMore.offset().top +\r\n self.$loadingMore.outerHeight(false);\r\n\r\n if (currentOffset + 50 >= loadingMoreOffset) {\r\n self.loadMore();\r\n }\r\n });\r\n };\r\n\r\n InfiniteScroll.prototype.loadMore = function () {\r\n this.loading = true;\r\n\r\n var params = $.extend({}, {page: 1}, this.lastParams);\r\n\r\n params.page++;\r\n\r\n this.trigger('query:append', params);\r\n };\r\n\r\n InfiniteScroll.prototype.showLoadingMore = function (_, data) {\r\n return data.pagination && data.pagination.more;\r\n };\r\n\r\n InfiniteScroll.prototype.createLoadingMore = function () {\r\n var $option = $(\r\n '
      • '\r\n );\r\n\r\n var message = this.options.get('translations').get('loadingMore');\r\n\r\n $option.html(message(this.lastParams));\r\n\r\n return $option;\r\n };\r\n\r\n return InfiniteScroll;\r\n});\r\n\r\nS2.define('select2/dropdown/attachBody',[\r\n 'jquery',\r\n '../utils'\r\n], function ($, Utils) {\r\n function AttachBody (decorated, $element, options) {\r\n this.$dropdownParent = options.get('dropdownParent') || $(document.body);\r\n\r\n decorated.call(this, $element, options);\r\n }\r\n\r\n AttachBody.prototype.bind = function (decorated, container, $container) {\r\n var self = this;\r\n\r\n var setupResultsEvents = false;\r\n\r\n decorated.call(this, container, $container);\r\n\r\n container.on('open', function () {\r\n self._showDropdown();\r\n self._attachPositioningHandler(container);\r\n\r\n if (!setupResultsEvents) {\r\n setupResultsEvents = true;\r\n\r\n container.on('results:all', function () {\r\n self._positionDropdown();\r\n self._resizeDropdown();\r\n });\r\n\r\n container.on('results:append', function () {\r\n self._positionDropdown();\r\n self._resizeDropdown();\r\n });\r\n }\r\n });\r\n\r\n container.on('close', function () {\r\n self._hideDropdown();\r\n self._detachPositioningHandler(container);\r\n });\r\n\r\n this.$dropdownContainer.on('mousedown', function (evt) {\r\n evt.stopPropagation();\r\n });\r\n };\r\n\r\n AttachBody.prototype.destroy = function (decorated) {\r\n decorated.call(this);\r\n\r\n this.$dropdownContainer.remove();\r\n };\r\n\r\n AttachBody.prototype.position = function (decorated, $dropdown, $container) {\r\n // Clone all of the container classes\r\n $dropdown.attr('class', $container.attr('class'));\r\n\r\n $dropdown.removeClass('select2');\r\n $dropdown.addClass('select2-container--open');\r\n\r\n $dropdown.css({\r\n position: 'absolute',\r\n top: -999999\r\n });\r\n\r\n this.$container = $container;\r\n };\r\n\r\n AttachBody.prototype.render = function (decorated) {\r\n var $container = $('');\r\n\r\n var $dropdown = decorated.call(this);\r\n $container.append($dropdown);\r\n\r\n this.$dropdownContainer = $container;\r\n\r\n return $container;\r\n };\r\n\r\n AttachBody.prototype._hideDropdown = function (decorated) {\r\n this.$dropdownContainer.detach();\r\n };\r\n\r\n AttachBody.prototype._attachPositioningHandler =\r\n function (decorated, container) {\r\n var self = this;\r\n\r\n var scrollEvent = 'scroll.select2.' + container.id;\r\n var resizeEvent = 'resize.select2.' + container.id;\r\n var orientationEvent = 'orientationchange.select2.' + container.id;\r\n\r\n var $watchers = this.$container.parents().filter(Utils.hasScroll);\r\n $watchers.each(function () {\r\n Utils.StoreData(this, 'select2-scroll-position', {\r\n x: $(this).scrollLeft(),\r\n y: $(this).scrollTop()\r\n });\r\n });\r\n\r\n $watchers.on(scrollEvent, function (ev) {\r\n var position = Utils.GetData(this, 'select2-scroll-position');\r\n $(this).scrollTop(position.y);\r\n });\r\n\r\n $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent,\r\n function (e) {\r\n self._positionDropdown();\r\n self._resizeDropdown();\r\n });\r\n };\r\n\r\n AttachBody.prototype._detachPositioningHandler =\r\n function (decorated, container) {\r\n var scrollEvent = 'scroll.select2.' + container.id;\r\n var resizeEvent = 'resize.select2.' + container.id;\r\n var orientationEvent = 'orientationchange.select2.' + container.id;\r\n\r\n var $watchers = this.$container.parents().filter(Utils.hasScroll);\r\n $watchers.off(scrollEvent);\r\n\r\n $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent);\r\n };\r\n\r\n AttachBody.prototype._positionDropdown = function () {\r\n var $window = $(window);\r\n\r\n var isCurrentlyAbove = this.$dropdown.hasClass('select2-dropdown--above');\r\n var isCurrentlyBelow = this.$dropdown.hasClass('select2-dropdown--below');\r\n\r\n var newDirection = null;\r\n\r\n var offset = this.$container.offset();\r\n\r\n offset.bottom = offset.top + this.$container.outerHeight(false);\r\n\r\n var container = {\r\n height: this.$container.outerHeight(false)\r\n };\r\n\r\n container.top = offset.top;\r\n container.bottom = offset.top + container.height;\r\n\r\n var dropdown = {\r\n height: this.$dropdown.outerHeight(false)\r\n };\r\n\r\n var viewport = {\r\n top: $window.scrollTop(),\r\n bottom: $window.scrollTop() + $window.height()\r\n };\r\n\r\n var enoughRoomAbove = viewport.top < (offset.top - dropdown.height);\r\n var enoughRoomBelow = viewport.bottom > (offset.bottom + dropdown.height);\r\n\r\n var css = {\r\n left: offset.left,\r\n top: container.bottom\r\n };\r\n\r\n // Determine what the parent element is to use for calciulating the offset\r\n var $offsetParent = this.$dropdownParent;\r\n\r\n // For statically positoned elements, we need to get the element\r\n // that is determining the offset\r\n if ($offsetParent.css('position') === 'static') {\r\n $offsetParent = $offsetParent.offsetParent();\r\n }\r\n\r\n var parentOffset = $offsetParent.offset();\r\n\r\n css.top -= parentOffset.top;\r\n css.left -= parentOffset.left;\r\n\r\n if (!isCurrentlyAbove && !isCurrentlyBelow) {\r\n newDirection = 'below';\r\n }\r\n\r\n if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) {\r\n newDirection = 'above';\r\n } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) {\r\n newDirection = 'below';\r\n }\r\n\r\n if (newDirection == 'above' ||\r\n (isCurrentlyAbove && newDirection !== 'below')) {\r\n css.top = container.top - parentOffset.top - dropdown.height;\r\n }\r\n\r\n if (newDirection != null) {\r\n this.$dropdown\r\n .removeClass('select2-dropdown--below select2-dropdown--above')\r\n .addClass('select2-dropdown--' + newDirection);\r\n this.$container\r\n .removeClass('select2-container--below select2-container--above')\r\n .addClass('select2-container--' + newDirection);\r\n }\r\n\r\n this.$dropdownContainer.css(css);\r\n };\r\n\r\n AttachBody.prototype._resizeDropdown = function () {\r\n var css = {\r\n width: this.$container.outerWidth(false) + 'px'\r\n };\r\n\r\n if (this.options.get('dropdownAutoWidth')) {\r\n css.minWidth = css.width;\r\n css.position = 'relative';\r\n css.width = 'auto';\r\n }\r\n\r\n this.$dropdown.css(css);\r\n };\r\n\r\n AttachBody.prototype._showDropdown = function (decorated) {\r\n this.$dropdownContainer.appendTo(this.$dropdownParent);\r\n\r\n this._positionDropdown();\r\n this._resizeDropdown();\r\n };\r\n\r\n return AttachBody;\r\n});\r\n\r\nS2.define('select2/dropdown/minimumResultsForSearch',[\r\n\r\n], function () {\r\n function countResults (data) {\r\n var count = 0;\r\n\r\n for (var d = 0; d < data.length; d++) {\r\n var item = data[d];\r\n\r\n if (item.children) {\r\n count += countResults(item.children);\r\n } else {\r\n count++;\r\n }\r\n }\r\n\r\n return count;\r\n }\r\n\r\n function MinimumResultsForSearch (decorated, $element, options, dataAdapter) {\r\n this.minimumResultsForSearch = options.get('minimumResultsForSearch');\r\n\r\n if (this.minimumResultsForSearch < 0) {\r\n this.minimumResultsForSearch = Infinity;\r\n }\r\n\r\n decorated.call(this, $element, options, dataAdapter);\r\n }\r\n\r\n MinimumResultsForSearch.prototype.showSearch = function (decorated, params) {\r\n if (countResults(params.data.results) < this.minimumResultsForSearch) {\r\n return false;\r\n }\r\n\r\n return decorated.call(this, params);\r\n };\r\n\r\n return MinimumResultsForSearch;\r\n});\r\n\r\nS2.define('select2/dropdown/selectOnClose',[\r\n '../utils'\r\n], function (Utils) {\r\n function SelectOnClose () { }\r\n\r\n SelectOnClose.prototype.bind = function (decorated, container, $container) {\r\n var self = this;\r\n\r\n decorated.call(this, container, $container);\r\n\r\n container.on('close', function (params) {\r\n self._handleSelectOnClose(params);\r\n });\r\n };\r\n\r\n SelectOnClose.prototype._handleSelectOnClose = function (_, params) {\r\n if (params && params.originalSelect2Event != null) {\r\n var event = params.originalSelect2Event;\r\n\r\n // Don't select an item if the close event was triggered from a select or\r\n // unselect event\r\n if (event._type === 'select' || event._type === 'unselect') {\r\n return;\r\n }\r\n }\r\n\r\n var $highlightedResults = this.getHighlightedResults();\r\n\r\n // Only select highlighted results\r\n if ($highlightedResults.length < 1) {\r\n return;\r\n }\r\n\r\n var data = Utils.GetData($highlightedResults[0], 'data');\r\n\r\n // Don't re-select already selected resulte\r\n if (\r\n (data.element != null && data.element.selected) ||\r\n (data.element == null && data.selected)\r\n ) {\r\n return;\r\n }\r\n\r\n this.trigger('select', {\r\n data: data\r\n });\r\n };\r\n\r\n return SelectOnClose;\r\n});\r\n\r\nS2.define('select2/dropdown/closeOnSelect',[\r\n\r\n], function () {\r\n function CloseOnSelect () { }\r\n\r\n CloseOnSelect.prototype.bind = function (decorated, container, $container) {\r\n var self = this;\r\n\r\n decorated.call(this, container, $container);\r\n\r\n container.on('select', function (evt) {\r\n self._selectTriggered(evt);\r\n });\r\n\r\n container.on('unselect', function (evt) {\r\n self._selectTriggered(evt);\r\n });\r\n };\r\n\r\n CloseOnSelect.prototype._selectTriggered = function (_, evt) {\r\n var originalEvent = evt.originalEvent;\r\n\r\n // Don't close if the control key is being held\r\n if (originalEvent && originalEvent.ctrlKey) {\r\n return;\r\n }\r\n\r\n this.trigger('close', {\r\n originalEvent: originalEvent,\r\n originalSelect2Event: evt\r\n });\r\n };\r\n\r\n return CloseOnSelect;\r\n});\r\n\r\nS2.define('select2/i18n/en',[],function () {\r\n // English\r\n return {\r\n errorLoading: function () {\r\n return 'The results could not be loaded.';\r\n },\r\n inputTooLong: function (args) {\r\n var overChars = args.input.length - args.maximum;\r\n\r\n var message = 'Please delete ' + overChars + ' character';\r\n\r\n if (overChars != 1) {\r\n message += 's';\r\n }\r\n\r\n return message;\r\n },\r\n inputTooShort: function (args) {\r\n var remainingChars = args.minimum - args.input.length;\r\n\r\n var message = 'Please enter ' + remainingChars + ' or more characters';\r\n\r\n return message;\r\n },\r\n loadingMore: function () {\r\n return 'Loading more results…';\r\n },\r\n maximumSelected: function (args) {\r\n var message = 'You can only select ' + args.maximum + ' item';\r\n\r\n if (args.maximum != 1) {\r\n message += 's';\r\n }\r\n\r\n return message;\r\n },\r\n noResults: function () {\r\n return 'No results found';\r\n },\r\n searching: function () {\r\n return 'Searching…';\r\n }\r\n };\r\n});\r\n\r\nS2.define('select2/defaults',[\r\n 'jquery',\r\n 'require',\r\n\r\n './results',\r\n\r\n './selection/single',\r\n './selection/multiple',\r\n './selection/placeholder',\r\n './selection/allowClear',\r\n './selection/search',\r\n './selection/eventRelay',\r\n\r\n './utils',\r\n './translation',\r\n './diacritics',\r\n\r\n './data/select',\r\n './data/array',\r\n './data/ajax',\r\n './data/tags',\r\n './data/tokenizer',\r\n './data/minimumInputLength',\r\n './data/maximumInputLength',\r\n './data/maximumSelectionLength',\r\n\r\n './dropdown',\r\n './dropdown/search',\r\n './dropdown/hidePlaceholder',\r\n './dropdown/infiniteScroll',\r\n './dropdown/attachBody',\r\n './dropdown/minimumResultsForSearch',\r\n './dropdown/selectOnClose',\r\n './dropdown/closeOnSelect',\r\n\r\n './i18n/en'\r\n], function ($, require,\r\n\r\n ResultsList,\r\n\r\n SingleSelection, MultipleSelection, Placeholder, AllowClear,\r\n SelectionSearch, EventRelay,\r\n\r\n Utils, Translation, DIACRITICS,\r\n\r\n SelectData, ArrayData, AjaxData, Tags, Tokenizer,\r\n MinimumInputLength, MaximumInputLength, MaximumSelectionLength,\r\n\r\n Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll,\r\n AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect,\r\n\r\n EnglishTranslation) {\r\n function Defaults () {\r\n this.reset();\r\n }\r\n\r\n Defaults.prototype.apply = function (options) {\r\n options = $.extend(true, {}, this.defaults, options);\r\n\r\n if (options.dataAdapter == null) {\r\n if (options.ajax != null) {\r\n options.dataAdapter = AjaxData;\r\n } else if (options.data != null) {\r\n options.dataAdapter = ArrayData;\r\n } else {\r\n options.dataAdapter = SelectData;\r\n }\r\n\r\n if (options.minimumInputLength > 0) {\r\n options.dataAdapter = Utils.Decorate(\r\n options.dataAdapter,\r\n MinimumInputLength\r\n );\r\n }\r\n\r\n if (options.maximumInputLength > 0) {\r\n options.dataAdapter = Utils.Decorate(\r\n options.dataAdapter,\r\n MaximumInputLength\r\n );\r\n }\r\n\r\n if (options.maximumSelectionLength > 0) {\r\n options.dataAdapter = Utils.Decorate(\r\n options.dataAdapter,\r\n MaximumSelectionLength\r\n );\r\n }\r\n\r\n if (options.tags) {\r\n options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags);\r\n }\r\n\r\n if (options.tokenSeparators != null || options.tokenizer != null) {\r\n options.dataAdapter = Utils.Decorate(\r\n options.dataAdapter,\r\n Tokenizer\r\n );\r\n }\r\n\r\n if (options.query != null) {\r\n var Query = require(options.amdBase + 'compat/query');\r\n\r\n options.dataAdapter = Utils.Decorate(\r\n options.dataAdapter,\r\n Query\r\n );\r\n }\r\n\r\n if (options.initSelection != null) {\r\n var InitSelection = require(options.amdBase + 'compat/initSelection');\r\n\r\n options.dataAdapter = Utils.Decorate(\r\n options.dataAdapter,\r\n InitSelection\r\n );\r\n }\r\n }\r\n\r\n if (options.resultsAdapter == null) {\r\n options.resultsAdapter = ResultsList;\r\n\r\n if (options.ajax != null) {\r\n options.resultsAdapter = Utils.Decorate(\r\n options.resultsAdapter,\r\n InfiniteScroll\r\n );\r\n }\r\n\r\n if (options.placeholder != null) {\r\n options.resultsAdapter = Utils.Decorate(\r\n options.resultsAdapter,\r\n HidePlaceholder\r\n );\r\n }\r\n\r\n if (options.selectOnClose) {\r\n options.resultsAdapter = Utils.Decorate(\r\n options.resultsAdapter,\r\n SelectOnClose\r\n );\r\n }\r\n }\r\n\r\n if (options.dropdownAdapter == null) {\r\n if (options.multiple) {\r\n options.dropdownAdapter = Dropdown;\r\n } else {\r\n var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch);\r\n\r\n options.dropdownAdapter = SearchableDropdown;\r\n }\r\n\r\n if (options.minimumResultsForSearch !== 0) {\r\n options.dropdownAdapter = Utils.Decorate(\r\n options.dropdownAdapter,\r\n MinimumResultsForSearch\r\n );\r\n }\r\n\r\n if (options.closeOnSelect) {\r\n options.dropdownAdapter = Utils.Decorate(\r\n options.dropdownAdapter,\r\n CloseOnSelect\r\n );\r\n }\r\n\r\n if (\r\n options.dropdownCssClass != null ||\r\n options.dropdownCss != null ||\r\n options.adaptDropdownCssClass != null\r\n ) {\r\n var DropdownCSS = require(options.amdBase + 'compat/dropdownCss');\r\n\r\n options.dropdownAdapter = Utils.Decorate(\r\n options.dropdownAdapter,\r\n DropdownCSS\r\n );\r\n }\r\n\r\n options.dropdownAdapter = Utils.Decorate(\r\n options.dropdownAdapter,\r\n AttachBody\r\n );\r\n }\r\n\r\n if (options.selectionAdapter == null) {\r\n if (options.multiple) {\r\n options.selectionAdapter = MultipleSelection;\r\n } else {\r\n options.selectionAdapter = SingleSelection;\r\n }\r\n\r\n // Add the placeholder mixin if a placeholder was specified\r\n if (options.placeholder != null) {\r\n options.selectionAdapter = Utils.Decorate(\r\n options.selectionAdapter,\r\n Placeholder\r\n );\r\n }\r\n\r\n if (options.allowClear) {\r\n options.selectionAdapter = Utils.Decorate(\r\n options.selectionAdapter,\r\n AllowClear\r\n );\r\n }\r\n\r\n if (options.multiple) {\r\n options.selectionAdapter = Utils.Decorate(\r\n options.selectionAdapter,\r\n SelectionSearch\r\n );\r\n }\r\n\r\n if (\r\n options.containerCssClass != null ||\r\n options.containerCss != null ||\r\n options.adaptContainerCssClass != null\r\n ) {\r\n var ContainerCSS = require(options.amdBase + 'compat/containerCss');\r\n\r\n options.selectionAdapter = Utils.Decorate(\r\n options.selectionAdapter,\r\n ContainerCSS\r\n );\r\n }\r\n\r\n options.selectionAdapter = Utils.Decorate(\r\n options.selectionAdapter,\r\n EventRelay\r\n );\r\n }\r\n\r\n if (typeof options.language === 'string') {\r\n // Check if the language is specified with a region\r\n if (options.language.indexOf('-') > 0) {\r\n // Extract the region information if it is included\r\n var languageParts = options.language.split('-');\r\n var baseLanguage = languageParts[0];\r\n\r\n options.language = [options.language, baseLanguage];\r\n } else {\r\n options.language = [options.language];\r\n }\r\n }\r\n\r\n if ($.isArray(options.language)) {\r\n var languages = new Translation();\r\n options.language.push('en');\r\n\r\n var languageNames = options.language;\r\n\r\n for (var l = 0; l < languageNames.length; l++) {\r\n var name = languageNames[l];\r\n var language = {};\r\n\r\n try {\r\n // Try to load it with the original name\r\n language = Translation.loadPath(name);\r\n } catch (e) {\r\n try {\r\n // If we couldn't load it, check if it wasn't the full path\r\n name = this.defaults.amdLanguageBase + name;\r\n language = Translation.loadPath(name);\r\n } catch (ex) {\r\n // The translation could not be loaded at all. Sometimes this is\r\n // because of a configuration problem, other times this can be\r\n // because of how Select2 helps load all possible translation files.\r\n if (options.debug && window.console && console.warn) {\r\n console.warn(\r\n 'Select2: The language file for \"' + name + '\" could not be ' +\r\n 'automatically loaded. A fallback will be used instead.'\r\n );\r\n }\r\n\r\n continue;\r\n }\r\n }\r\n\r\n languages.extend(language);\r\n }\r\n\r\n options.translations = languages;\r\n } else {\r\n var baseTranslation = Translation.loadPath(\r\n this.defaults.amdLanguageBase + 'en'\r\n );\r\n var customTranslation = new Translation(options.language);\r\n\r\n customTranslation.extend(baseTranslation);\r\n\r\n options.translations = customTranslation;\r\n }\r\n\r\n return options;\r\n };\r\n\r\n Defaults.prototype.reset = function () {\r\n function stripDiacritics (text) {\r\n // Used 'uni range + named function' from http://jsperf.com/diacritics/18\r\n function match(a) {\r\n return DIACRITICS[a] || a;\r\n }\r\n\r\n return text.replace(/[^\\u0000-\\u007E]/g, match);\r\n }\r\n\r\n function matcher (params, data) {\r\n // Always return the object if there is nothing to compare\r\n if ($.trim(params.term) === '') {\r\n return data;\r\n }\r\n\r\n // Do a recursive check for options with children\r\n if (data.children && data.children.length > 0) {\r\n // Clone the data object if there are children\r\n // This is required as we modify the object to remove any non-matches\r\n var match = $.extend(true, {}, data);\r\n\r\n // Check each child of the option\r\n for (var c = data.children.length - 1; c >= 0; c--) {\r\n var child = data.children[c];\r\n\r\n var matches = matcher(params, child);\r\n\r\n // If there wasn't a match, remove the object in the array\r\n if (matches == null) {\r\n match.children.splice(c, 1);\r\n }\r\n }\r\n\r\n // If any children matched, return the new object\r\n if (match.children.length > 0) {\r\n return match;\r\n }\r\n\r\n // If there were no matching children, check just the plain object\r\n return matcher(params, match);\r\n }\r\n\r\n var original = stripDiacritics(data.text).toUpperCase();\r\n var term = stripDiacritics(params.term).toUpperCase();\r\n\r\n // Check if the text contains the term\r\n if (original.indexOf(term) > -1) {\r\n return data;\r\n }\r\n\r\n // If it doesn't contain the term, don't return anything\r\n return null;\r\n }\r\n\r\n this.defaults = {\r\n amdBase: './',\r\n amdLanguageBase: './i18n/',\r\n closeOnSelect: true,\r\n debug: false,\r\n dropdownAutoWidth: false,\r\n escapeMarkup: Utils.escapeMarkup,\r\n language: EnglishTranslation,\r\n matcher: matcher,\r\n minimumInputLength: 0,\r\n maximumInputLength: 0,\r\n maximumSelectionLength: 0,\r\n minimumResultsForSearch: 0,\r\n selectOnClose: false,\r\n sorter: function (data) {\r\n return data;\r\n },\r\n templateResult: function (result) {\r\n return result.text;\r\n },\r\n templateSelection: function (selection) {\r\n return selection.text;\r\n },\r\n theme: 'default',\r\n width: 'resolve'\r\n };\r\n };\r\n\r\n Defaults.prototype.set = function (key, value) {\r\n var camelKey = $.camelCase(key);\r\n\r\n var data = {};\r\n data[camelKey] = value;\r\n\r\n var convertedData = Utils._convertData(data);\r\n\r\n $.extend(true, this.defaults, convertedData);\r\n };\r\n\r\n var defaults = new Defaults();\r\n\r\n return defaults;\r\n});\r\n\r\nS2.define('select2/options',[\r\n 'require',\r\n 'jquery',\r\n './defaults',\r\n './utils'\r\n], function (require, $, Defaults, Utils) {\r\n function Options (options, $element) {\r\n this.options = options;\r\n\r\n if ($element != null) {\r\n this.fromElement($element);\r\n }\r\n\r\n this.options = Defaults.apply(this.options);\r\n\r\n if ($element && $element.is('input')) {\r\n var InputCompat = require(this.get('amdBase') + 'compat/inputData');\r\n\r\n this.options.dataAdapter = Utils.Decorate(\r\n this.options.dataAdapter,\r\n InputCompat\r\n );\r\n }\r\n }\r\n\r\n Options.prototype.fromElement = function ($e) {\r\n var excludedData = ['select2'];\r\n\r\n if (this.options.multiple == null) {\r\n this.options.multiple = $e.prop('multiple');\r\n }\r\n\r\n if (this.options.disabled == null) {\r\n this.options.disabled = $e.prop('disabled');\r\n }\r\n\r\n if (this.options.language == null) {\r\n if ($e.prop('lang')) {\r\n this.options.language = $e.prop('lang').toLowerCase();\r\n } else if ($e.closest('[lang]').prop('lang')) {\r\n this.options.language = $e.closest('[lang]').prop('lang');\r\n }\r\n }\r\n\r\n if (this.options.dir == null) {\r\n if ($e.prop('dir')) {\r\n this.options.dir = $e.prop('dir');\r\n } else if ($e.closest('[dir]').prop('dir')) {\r\n this.options.dir = $e.closest('[dir]').prop('dir');\r\n } else {\r\n this.options.dir = 'ltr';\r\n }\r\n }\r\n\r\n $e.prop('disabled', this.options.disabled);\r\n $e.prop('multiple', this.options.multiple);\r\n\r\n if (Utils.GetData($e[0], 'select2Tags')) {\r\n if (this.options.debug && window.console && console.warn) {\r\n console.warn(\r\n 'Select2: The `data-select2-tags` attribute has been changed to ' +\r\n 'use the `data-data` and `data-tags=\"true\"` attributes and will be ' +\r\n 'removed in future versions of Select2.'\r\n );\r\n }\r\n\r\n Utils.StoreData($e[0], 'data', Utils.GetData($e[0], 'select2Tags'));\r\n Utils.StoreData($e[0], 'tags', true);\r\n }\r\n\r\n if (Utils.GetData($e[0], 'ajaxUrl')) {\r\n if (this.options.debug && window.console && console.warn) {\r\n console.warn(\r\n 'Select2: The `data-ajax-url` attribute has been changed to ' +\r\n '`data-ajax--url` and support for the old attribute will be removed' +\r\n ' in future versions of Select2.'\r\n );\r\n }\r\n\r\n $e.attr('ajax--url', Utils.GetData($e[0], 'ajaxUrl'));\r\n Utils.StoreData($e[0], 'ajax-Url', Utils.GetData($e[0], 'ajaxUrl'));\r\n\t \r\n }\r\n\r\n var dataset = {};\r\n\r\n // Prefer the element's `dataset` attribute if it exists\r\n // jQuery 1.x does not correctly handle data attributes with multiple dashes\r\n if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) {\r\n dataset = $.extend(true, {}, $e[0].dataset, Utils.GetData($e[0]));\r\n } else {\r\n dataset = Utils.GetData($e[0]);\r\n }\r\n\r\n var data = $.extend(true, {}, dataset);\r\n\r\n data = Utils._convertData(data);\r\n\r\n for (var key in data) {\r\n if ($.inArray(key, excludedData) > -1) {\r\n continue;\r\n }\r\n\r\n if ($.isPlainObject(this.options[key])) {\r\n $.extend(this.options[key], data[key]);\r\n } else {\r\n this.options[key] = data[key];\r\n }\r\n }\r\n\r\n return this;\r\n };\r\n\r\n Options.prototype.get = function (key) {\r\n return this.options[key];\r\n };\r\n\r\n Options.prototype.set = function (key, val) {\r\n this.options[key] = val;\r\n };\r\n\r\n return Options;\r\n});\r\n\r\nS2.define('select2/core',[\r\n 'jquery',\r\n './options',\r\n './utils',\r\n './keys'\r\n], function ($, Options, Utils, KEYS) {\r\n var Select2 = function ($element, options) {\r\n if (Utils.GetData($element[0], 'select2') != null) {\r\n Utils.GetData($element[0], 'select2').destroy();\r\n }\r\n\r\n this.$element = $element;\r\n\r\n this.id = this._generateId($element);\r\n\r\n options = options || {};\r\n\r\n this.options = new Options(options, $element);\r\n\r\n Select2.__super__.constructor.call(this);\r\n\r\n // Set up the tabindex\r\n\r\n var tabindex = $element.attr('tabindex') || 0;\r\n Utils.StoreData($element[0], 'old-tabindex', tabindex);\r\n $element.attr('tabindex', '-1');\r\n\r\n // Set up containers and adapters\r\n\r\n var DataAdapter = this.options.get('dataAdapter');\r\n this.dataAdapter = new DataAdapter($element, this.options);\r\n\r\n var $container = this.render();\r\n\r\n this._placeContainer($container);\r\n\r\n var SelectionAdapter = this.options.get('selectionAdapter');\r\n this.selection = new SelectionAdapter($element, this.options);\r\n this.$selection = this.selection.render();\r\n\r\n this.selection.position(this.$selection, $container);\r\n\r\n var DropdownAdapter = this.options.get('dropdownAdapter');\r\n this.dropdown = new DropdownAdapter($element, this.options);\r\n this.$dropdown = this.dropdown.render();\r\n\r\n this.dropdown.position(this.$dropdown, $container);\r\n\r\n var ResultsAdapter = this.options.get('resultsAdapter');\r\n this.results = new ResultsAdapter($element, this.options, this.dataAdapter);\r\n this.$results = this.results.render();\r\n\r\n this.results.position(this.$results, this.$dropdown);\r\n\r\n // Bind events\r\n\r\n var self = this;\r\n\r\n // Bind the container to all of the adapters\r\n this._bindAdapters();\r\n\r\n // Register any DOM event handlers\r\n this._registerDomEvents();\r\n\r\n // Register any internal event handlers\r\n this._registerDataEvents();\r\n this._registerSelectionEvents();\r\n this._registerDropdownEvents();\r\n this._registerResultsEvents();\r\n this._registerEvents();\r\n\r\n // Set the initial state\r\n this.dataAdapter.current(function (initialData) {\r\n self.trigger('selection:update', {\r\n data: initialData\r\n });\r\n });\r\n\r\n // Hide the original select\r\n $element.addClass('select2-hidden-accessible');\r\n $element.attr('aria-hidden', 'true');\r\n\r\n // Synchronize any monitored attributes\r\n this._syncAttributes();\r\n\r\n Utils.StoreData($element[0], 'select2', this);\r\n\r\n // Ensure backwards compatibility with $element.data('select2').\r\n $element.data('select2', this);\r\n };\r\n\r\n Utils.Extend(Select2, Utils.Observable);\r\n\r\n Select2.prototype._generateId = function ($element) {\r\n var id = '';\r\n\r\n if ($element.attr('id') != null) {\r\n id = $element.attr('id');\r\n } else if ($element.attr('name') != null) {\r\n id = $element.attr('name') + '-' + Utils.generateChars(2);\r\n } else {\r\n id = Utils.generateChars(4);\r\n }\r\n\r\n id = id.replace(/(:|\\.|\\[|\\]|,)/g, '');\r\n id = 'select2-' + id;\r\n\r\n return id;\r\n };\r\n\r\n Select2.prototype._placeContainer = function ($container) {\r\n $container.insertAfter(this.$element);\r\n\r\n var width = this._resolveWidth(this.$element, this.options.get('width'));\r\n\r\n if (width != null) {\r\n $container.css('width', width);\r\n }\r\n };\r\n\r\n Select2.prototype._resolveWidth = function ($element, method) {\r\n var WIDTH = /^width:(([-+]?([0-9]*\\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;\r\n\r\n if (method == 'resolve') {\r\n var styleWidth = this._resolveWidth($element, 'style');\r\n\r\n if (styleWidth != null) {\r\n return styleWidth;\r\n }\r\n\r\n return this._resolveWidth($element, 'element');\r\n }\r\n\r\n if (method == 'element') {\r\n var elementWidth = $element.outerWidth(false);\r\n\r\n if (elementWidth <= 0) {\r\n return 'auto';\r\n }\r\n\r\n return elementWidth + 'px';\r\n }\r\n\r\n if (method == 'style') {\r\n var style = $element.attr('style');\r\n\r\n if (typeof(style) !== 'string') {\r\n return null;\r\n }\r\n\r\n var attrs = style.split(';');\r\n\r\n for (var i = 0, l = attrs.length; i < l; i = i + 1) {\r\n var attr = attrs[i].replace(/\\s/g, '');\r\n var matches = attr.match(WIDTH);\r\n\r\n if (matches !== null && matches.length >= 1) {\r\n return matches[1];\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n return method;\r\n };\r\n\r\n Select2.prototype._bindAdapters = function () {\r\n this.dataAdapter.bind(this, this.$container);\r\n this.selection.bind(this, this.$container);\r\n\r\n this.dropdown.bind(this, this.$container);\r\n this.results.bind(this, this.$container);\r\n };\r\n\r\n Select2.prototype._registerDomEvents = function () {\r\n var self = this;\r\n\r\n this.$element.on('change.select2', function () {\r\n self.dataAdapter.current(function (data) {\r\n self.trigger('selection:update', {\r\n data: data\r\n });\r\n });\r\n });\r\n\r\n this.$element.on('focus.select2', function (evt) {\r\n self.trigger('focus', evt);\r\n });\r\n\r\n this._syncA = Utils.bind(this._syncAttributes, this);\r\n this._syncS = Utils.bind(this._syncSubtree, this);\r\n\r\n if (this.$element[0].attachEvent) {\r\n this.$element[0].attachEvent('onpropertychange', this._syncA);\r\n }\r\n\r\n var observer = window.MutationObserver ||\r\n window.WebKitMutationObserver ||\r\n window.MozMutationObserver\r\n ;\r\n\r\n if (observer != null) {\r\n this._observer = new observer(function (mutations) {\r\n $.each(mutations, self._syncA);\r\n $.each(mutations, self._syncS);\r\n });\r\n this._observer.observe(this.$element[0], {\r\n attributes: true,\r\n childList: true,\r\n subtree: false\r\n });\r\n } else if (this.$element[0].addEventListener) {\r\n this.$element[0].addEventListener(\r\n 'DOMAttrModified',\r\n self._syncA,\r\n false\r\n );\r\n this.$element[0].addEventListener(\r\n 'DOMNodeInserted',\r\n self._syncS,\r\n false\r\n );\r\n this.$element[0].addEventListener(\r\n 'DOMNodeRemoved',\r\n self._syncS,\r\n false\r\n );\r\n }\r\n };\r\n\r\n Select2.prototype._registerDataEvents = function () {\r\n var self = this;\r\n\r\n this.dataAdapter.on('*', function (name, params) {\r\n self.trigger(name, params);\r\n });\r\n };\r\n\r\n Select2.prototype._registerSelectionEvents = function () {\r\n var self = this;\r\n var nonRelayEvents = ['toggle', 'focus'];\r\n\r\n this.selection.on('toggle', function () {\r\n self.toggleDropdown();\r\n });\r\n\r\n this.selection.on('focus', function (params) {\r\n self.focus(params);\r\n });\r\n\r\n this.selection.on('*', function (name, params) {\r\n if ($.inArray(name, nonRelayEvents) !== -1) {\r\n return;\r\n }\r\n\r\n self.trigger(name, params);\r\n });\r\n };\r\n\r\n Select2.prototype._registerDropdownEvents = function () {\r\n var self = this;\r\n\r\n this.dropdown.on('*', function (name, params) {\r\n self.trigger(name, params);\r\n });\r\n };\r\n\r\n Select2.prototype._registerResultsEvents = function () {\r\n var self = this;\r\n\r\n this.results.on('*', function (name, params) {\r\n self.trigger(name, params);\r\n });\r\n };\r\n\r\n Select2.prototype._registerEvents = function () {\r\n var self = this;\r\n\r\n this.on('open', function () {\r\n self.$container.addClass('select2-container--open');\r\n });\r\n\r\n this.on('close', function () {\r\n self.$container.removeClass('select2-container--open');\r\n });\r\n\r\n this.on('enable', function () {\r\n self.$container.removeClass('select2-container--disabled');\r\n });\r\n\r\n this.on('disable', function () {\r\n self.$container.addClass('select2-container--disabled');\r\n });\r\n\r\n this.on('blur', function () {\r\n self.$container.removeClass('select2-container--focus');\r\n });\r\n\r\n this.on('query', function (params) {\r\n if (!self.isOpen()) {\r\n self.trigger('open', {});\r\n }\r\n\r\n this.dataAdapter.query(params, function (data) {\r\n self.trigger('results:all', {\r\n data: data,\r\n query: params\r\n });\r\n });\r\n });\r\n\r\n this.on('query:append', function (params) {\r\n this.dataAdapter.query(params, function (data) {\r\n self.trigger('results:append', {\r\n data: data,\r\n query: params\r\n });\r\n });\r\n });\r\n\r\n this.on('keypress', function (evt) {\r\n var key = evt.which;\r\n\r\n if (self.isOpen()) {\r\n if (key === KEYS.ESC || key === KEYS.TAB ||\r\n (key === KEYS.UP && evt.altKey)) {\r\n self.close();\r\n\r\n evt.preventDefault();\r\n } else if (key === KEYS.ENTER) {\r\n self.trigger('results:select', {});\r\n\r\n evt.preventDefault();\r\n } else if ((key === KEYS.SPACE && evt.ctrlKey)) {\r\n self.trigger('results:toggle', {});\r\n\r\n evt.preventDefault();\r\n } else if (key === KEYS.UP) {\r\n self.trigger('results:previous', {});\r\n\r\n evt.preventDefault();\r\n } else if (key === KEYS.DOWN) {\r\n self.trigger('results:next', {});\r\n\r\n evt.preventDefault();\r\n }\r\n } else {\r\n if (key === KEYS.ENTER || key === KEYS.SPACE ||\r\n (key === KEYS.DOWN && evt.altKey)) {\r\n self.open();\r\n\r\n evt.preventDefault();\r\n }\r\n }\r\n });\r\n };\r\n\r\n Select2.prototype._syncAttributes = function () {\r\n this.options.set('disabled', this.$element.prop('disabled'));\r\n\r\n if (this.options.get('disabled')) {\r\n if (this.isOpen()) {\r\n this.close();\r\n }\r\n\r\n this.trigger('disable', {});\r\n } else {\r\n this.trigger('enable', {});\r\n }\r\n };\r\n\r\n Select2.prototype._syncSubtree = function (evt, mutations) {\r\n var changed = false;\r\n var self = this;\r\n\r\n // Ignore any mutation events raised for elements that aren't options or\r\n // optgroups. This handles the case when the select element is destroyed\r\n if (\r\n evt && evt.target && (\r\n evt.target.nodeName !== 'OPTION' && evt.target.nodeName !== 'OPTGROUP'\r\n )\r\n ) {\r\n return;\r\n }\r\n\r\n if (!mutations) {\r\n // If mutation events aren't supported, then we can only assume that the\r\n // change affected the selections\r\n changed = true;\r\n } else if (mutations.addedNodes && mutations.addedNodes.length > 0) {\r\n for (var n = 0; n < mutations.addedNodes.length; n++) {\r\n var node = mutations.addedNodes[n];\r\n\r\n if (node.selected) {\r\n changed = true;\r\n }\r\n }\r\n } else if (mutations.removedNodes && mutations.removedNodes.length > 0) {\r\n changed = true;\r\n }\r\n\r\n // Only re-pull the data if we think there is a change\r\n if (changed) {\r\n this.dataAdapter.current(function (currentData) {\r\n self.trigger('selection:update', {\r\n data: currentData\r\n });\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * Override the trigger method to automatically trigger pre-events when\r\n * there are events that can be prevented.\r\n */\r\n Select2.prototype.trigger = function (name, args) {\r\n var actualTrigger = Select2.__super__.trigger;\r\n var preTriggerMap = {\r\n 'open': 'opening',\r\n 'close': 'closing',\r\n 'select': 'selecting',\r\n 'unselect': 'unselecting',\r\n 'clear': 'clearing'\r\n };\r\n\r\n if (args === undefined) {\r\n args = {};\r\n }\r\n\r\n if (name in preTriggerMap) {\r\n var preTriggerName = preTriggerMap[name];\r\n var preTriggerArgs = {\r\n prevented: false,\r\n name: name,\r\n args: args\r\n };\r\n\r\n actualTrigger.call(this, preTriggerName, preTriggerArgs);\r\n\r\n if (preTriggerArgs.prevented) {\r\n args.prevented = true;\r\n\r\n return;\r\n }\r\n }\r\n\r\n actualTrigger.call(this, name, args);\r\n };\r\n\r\n Select2.prototype.toggleDropdown = function () {\r\n if (this.options.get('disabled')) {\r\n return;\r\n }\r\n\r\n if (this.isOpen()) {\r\n this.close();\r\n } else {\r\n this.open();\r\n }\r\n };\r\n\r\n Select2.prototype.open = function () {\r\n if (this.isOpen()) {\r\n return;\r\n }\r\n\r\n this.trigger('query', {});\r\n };\r\n\r\n Select2.prototype.close = function () {\r\n if (!this.isOpen()) {\r\n return;\r\n }\r\n\r\n this.trigger('close', {});\r\n };\r\n\r\n Select2.prototype.isOpen = function () {\r\n return this.$container.hasClass('select2-container--open');\r\n };\r\n\r\n Select2.prototype.hasFocus = function () {\r\n return this.$container.hasClass('select2-container--focus');\r\n };\r\n\r\n Select2.prototype.focus = function (data) {\r\n // No need to re-trigger focus events if we are already focused\r\n if (this.hasFocus()) {\r\n return;\r\n }\r\n\r\n this.$container.addClass('select2-container--focus');\r\n this.trigger('focus', {});\r\n };\r\n\r\n Select2.prototype.enable = function (args) {\r\n if (this.options.get('debug') && window.console && console.warn) {\r\n console.warn(\r\n 'Select2: The `select2(\"enable\")` method has been deprecated and will' +\r\n ' be removed in later Select2 versions. Use $element.prop(\"disabled\")' +\r\n ' instead.'\r\n );\r\n }\r\n\r\n if (args == null || args.length === 0) {\r\n args = [true];\r\n }\r\n\r\n var disabled = !args[0];\r\n\r\n this.$element.prop('disabled', disabled);\r\n };\r\n\r\n Select2.prototype.data = function () {\r\n if (this.options.get('debug') &&\r\n arguments.length > 0 && window.console && console.warn) {\r\n console.warn(\r\n 'Select2: Data can no longer be set using `select2(\"data\")`. You ' +\r\n 'should consider setting the value instead using `$element.val()`.'\r\n );\r\n }\r\n\r\n var data = [];\r\n\r\n this.dataAdapter.current(function (currentData) {\r\n data = currentData;\r\n });\r\n\r\n return data;\r\n };\r\n\r\n Select2.prototype.val = function (args) {\r\n if (this.options.get('debug') && window.console && console.warn) {\r\n console.warn(\r\n 'Select2: The `select2(\"val\")` method has been deprecated and will be' +\r\n ' removed in later Select2 versions. Use $element.val() instead.'\r\n );\r\n }\r\n\r\n if (args == null || args.length === 0) {\r\n return this.$element.val();\r\n }\r\n\r\n var newVal = args[0];\r\n\r\n if ($.isArray(newVal)) {\r\n newVal = $.map(newVal, function (obj) {\r\n return obj.toString();\r\n });\r\n }\r\n\r\n this.$element.val(newVal).trigger('change');\r\n };\r\n\r\n Select2.prototype.destroy = function () {\r\n this.$container.remove();\r\n\r\n if (this.$element[0].detachEvent) {\r\n this.$element[0].detachEvent('onpropertychange', this._syncA);\r\n }\r\n\r\n if (this._observer != null) {\r\n this._observer.disconnect();\r\n this._observer = null;\r\n } else if (this.$element[0].removeEventListener) {\r\n this.$element[0]\r\n .removeEventListener('DOMAttrModified', this._syncA, false);\r\n this.$element[0]\r\n .removeEventListener('DOMNodeInserted', this._syncS, false);\r\n this.$element[0]\r\n .removeEventListener('DOMNodeRemoved', this._syncS, false);\r\n }\r\n\r\n this._syncA = null;\r\n this._syncS = null;\r\n\r\n this.$element.off('.select2');\r\n this.$element.attr('tabindex',\r\n Utils.GetData(this.$element[0], 'old-tabindex'));\r\n\r\n this.$element.removeClass('select2-hidden-accessible');\r\n this.$element.attr('aria-hidden', 'false');\r\n Utils.RemoveData(this.$element[0]);\r\n this.$element.removeData('select2');\r\n\r\n this.dataAdapter.destroy();\r\n this.selection.destroy();\r\n this.dropdown.destroy();\r\n this.results.destroy();\r\n\r\n this.dataAdapter = null;\r\n this.selection = null;\r\n this.dropdown = null;\r\n this.results = null;\r\n };\r\n\r\n Select2.prototype.render = function () {\r\n var $container = $(\r\n '' +\r\n '' +\r\n '' +\r\n ''\r\n );\r\n\r\n $container.attr('dir', this.options.get('dir'));\r\n\r\n this.$container = $container;\r\n\r\n this.$container.addClass('select2-container--' + this.options.get('theme'));\r\n\r\n Utils.StoreData($container[0], 'element', this.$element);\r\n\r\n return $container;\r\n };\r\n\r\n return Select2;\r\n});\r\n\r\nS2.define('jquery-mousewheel',[\r\n 'jquery'\r\n], function ($) {\r\n // Used to shim jQuery.mousewheel for non-full builds.\r\n return $;\r\n});\r\n\r\nS2.define('jquery.select2',[\r\n 'jquery',\r\n 'jquery-mousewheel',\r\n\r\n './select2/core',\r\n './select2/defaults',\r\n './select2/utils'\r\n], function ($, _, Select2, Defaults, Utils) {\r\n if ($.fn.select2 == null) {\r\n // All methods that should return the element\r\n var thisMethods = ['open', 'close', 'destroy'];\r\n\r\n $.fn.select2 = function (options) {\r\n options = options || {};\r\n\r\n if (typeof options === 'object') {\r\n this.each(function () {\r\n var instanceOptions = $.extend(true, {}, options);\r\n\r\n var instance = new Select2($(this), instanceOptions);\r\n });\r\n\r\n return this;\r\n } else if (typeof options === 'string') {\r\n var ret;\r\n var args = Array.prototype.slice.call(arguments, 1);\r\n\r\n this.each(function () {\r\n var instance = Utils.GetData(this, 'select2');\r\n\r\n if (instance == null && window.console && console.error) {\r\n console.error(\r\n 'The select2(\\'' + options + '\\') method was called on an ' +\r\n 'element that is not using Select2.'\r\n );\r\n }\r\n\r\n ret = instance[options].apply(instance, args);\r\n });\r\n\r\n // Check if we should be returning `this`\r\n if ($.inArray(options, thisMethods) > -1) {\r\n return this;\r\n }\r\n\r\n return ret;\r\n } else {\r\n throw new Error('Invalid arguments for Select2: ' + options);\r\n }\r\n };\r\n }\r\n\r\n if ($.fn.select2.defaults == null) {\r\n $.fn.select2.defaults = Defaults;\r\n }\r\n\r\n return Select2;\r\n});\r\n\r\n // Return the AMD loader configuration so it can be used outside of this file\r\n return {\r\n define: S2.define,\r\n require: S2.require\r\n };\r\n}());\r\n\r\n // Autoload the jQuery bindings\r\n // We know that all of the modules exist above this, so we're safe\r\n var select2 = S2.require('jquery.select2');\r\n\r\n // Hold the AMD module references on the jQuery function that was just loaded\r\n // This allows Select2 to use the internal loader outside of this file, such\r\n // as in the language files.\r\n jQuery.fn.select2.amd = S2;\r\n\r\n // Return the Select2 instance for anyone who is importing it.\r\n return select2;\r\n}));\r\n","/*!\r\n * jQuery Validation Plugin v1.17.0\r\n *\r\n * https://jqueryvalidation.org/\r\n *\r\n * Copyright (c) 2017 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\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 ) {\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\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 && element.hasAttribute( \"contenteditable\" ) ) {\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 groups = ( 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\r\n\t\t\t\t// Set form expando on contenteditable\r\n\t\t\t\tif ( !this.form && this.hasAttribute( \"contenteditable\" ) ) {\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\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\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 ( this.hasAttribute( \"contenteditable\" ) ) {\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// 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\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 ( element.hasAttribute( \"contenteditable\" ) ) {\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\tif ( typeof val !== \"string\" ) {\r\n\t\t\t\t\tthrow new TypeError( \"The normalizer should return a string value.\" );\r\n\t\t\t\t}\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}\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\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.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( value, element ) {\r\n\t\t\treturn this.optional( element ) || !/Invalid|NaN/.test( new Date( value ).toString() );\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}));","/*!\r\n * jQuery Validation Plugin v1.17.0\r\n *\r\n * https://jqueryvalidation.org/\r\n *\r\n * Copyright (c) 2017 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\", \"./jquery.validate\"], 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( function() {\r\n\r\n\tfunction stripHtml( value ) {\r\n\r\n\t\t// Remove html tags and space chars\r\n\t\treturn value.replace( /<.[^<>]*?>/g, \" \" ).replace( / | /gi, \" \" )\r\n\r\n\t\t// Remove punctuation\r\n\t\t.replace( /[.(),;:!?%#$'\\\"_+=\\/\\-“”’]*/g, \"\" );\r\n\t}\r\n\r\n\t$.validator.addMethod( \"maxWords\", function( value, element, params ) {\r\n\t\treturn this.optional( element ) || stripHtml( value ).match( /\\b\\w+\\b/g ).length <= params;\r\n\t}, $.validator.format( \"Please enter {0} words or less.\" ) );\r\n\r\n\t$.validator.addMethod( \"minWords\", function( value, element, params ) {\r\n\t\treturn this.optional( element ) || stripHtml( value ).match( /\\b\\w+\\b/g ).length >= params;\r\n\t}, $.validator.format( \"Please enter at least {0} words.\" ) );\r\n\r\n\t$.validator.addMethod( \"rangeWords\", function( value, element, params ) {\r\n\t\tvar valueStripped = stripHtml( value ),\r\n\t\t\tregex = /\\b\\w+\\b/g;\r\n\t\treturn this.optional( element ) || valueStripped.match( regex ).length >= params[ 0 ] && valueStripped.match( regex ).length <= params[ 1 ];\r\n\t}, $.validator.format( \"Please enter between {0} and {1} words.\" ) );\r\n\r\n}() );\r\n\r\n// Accept a value from a file input based on a required mimetype\r\n$.validator.addMethod( \"accept\", function( value, element, param ) {\r\n\r\n\t// Split mime on commas in case we have multiple types we can accept\r\n\tvar typeParam = typeof param === \"string\" ? param.replace( /\\s/g, \"\" ) : \"image/*\",\r\n\t\toptionalValue = this.optional( element ),\r\n\t\ti, file, regex;\r\n\r\n\t// Element is optional\r\n\tif ( optionalValue ) {\r\n\t\treturn optionalValue;\r\n\t}\r\n\r\n\tif ( $( element ).attr( \"type\" ) === \"file\" ) {\r\n\r\n\t\t// Escape string to be used in the regex\r\n\t\t// see: https://stackoverflow.com/questions/3446170/escape-string-for-use-in-javascript-regex\r\n\t\t// Escape also \"/*\" as \"/.*\" as a wildcard\r\n\t\ttypeParam = typeParam\r\n\t\t\t\t.replace( /[\\-\\[\\]\\/\\{\\}\\(\\)\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\" )\r\n\t\t\t\t.replace( /,/g, \"|\" )\r\n\t\t\t\t.replace( /\\/\\*/g, \"/.*\" );\r\n\r\n\t\t// Check if the element has a FileList before checking each file\r\n\t\tif ( element.files && element.files.length ) {\r\n\t\t\tregex = new RegExp( \".?(\" + typeParam + \")$\", \"i\" );\r\n\t\t\tfor ( i = 0; i < element.files.length; i++ ) {\r\n\t\t\t\tfile = element.files[ i ];\r\n\r\n\t\t\t\t// Grab the mimetype from the loaded file, verify it matches\r\n\t\t\t\tif ( !file.type.match( regex ) ) {\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\t}\r\n\r\n\t// Either return true because we've validated each file, or because the\r\n\t// browser does not support element.files and the FileList feature\r\n\treturn true;\r\n}, $.validator.format( \"Please enter a value with a valid mimetype.\" ) );\r\n\r\n$.validator.addMethod( \"alphanumeric\", function( value, element ) {\r\n\treturn this.optional( element ) || /^\\w+$/i.test( value );\r\n}, \"Letters, numbers, and underscores only please\" );\r\n\r\n/*\r\n * Dutch bank account numbers (not 'giro' numbers) have 9 digits\r\n * and pass the '11 check'.\r\n * We accept the notation with spaces, as that is common.\r\n * acceptable: 123456789 or 12 34 56 789\r\n */\r\n$.validator.addMethod( \"bankaccountNL\", function( value, element ) {\r\n\tif ( this.optional( element ) ) {\r\n\t\treturn true;\r\n\t}\r\n\tif ( !( /^[0-9]{9}|([0-9]{2} ){3}[0-9]{3}$/.test( value ) ) ) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\t// Now '11 check'\r\n\tvar account = value.replace( / /g, \"\" ), // Remove spaces\r\n\t\tsum = 0,\r\n\t\tlen = account.length,\r\n\t\tpos, factor, digit;\r\n\tfor ( pos = 0; pos < len; pos++ ) {\r\n\t\tfactor = len - pos;\r\n\t\tdigit = account.substring( pos, pos + 1 );\r\n\t\tsum = sum + factor * digit;\r\n\t}\r\n\treturn sum % 11 === 0;\r\n}, \"Please specify a valid bank account number\" );\r\n\r\n$.validator.addMethod( \"bankorgiroaccountNL\", function( value, element ) {\r\n\treturn this.optional( element ) ||\r\n\t\t\t( $.validator.methods.bankaccountNL.call( this, value, element ) ) ||\r\n\t\t\t( $.validator.methods.giroaccountNL.call( this, value, element ) );\r\n}, \"Please specify a valid bank or giro account number\" );\r\n\r\n/**\r\n * BIC is the business identifier code (ISO 9362). This BIC check is not a guarantee for authenticity.\r\n *\r\n * BIC pattern: BBBBCCLLbbb (8 or 11 characters long; bbb is optional)\r\n *\r\n * Validation is case-insensitive. Please make sure to normalize input yourself.\r\n *\r\n * BIC definition in detail:\r\n * - First 4 characters - bank code (only letters)\r\n * - Next 2 characters - ISO 3166-1 alpha-2 country code (only letters)\r\n * - Next 2 characters - location code (letters and digits)\r\n * a. shall not start with '0' or '1'\r\n * b. second character must be a letter ('O' is not allowed) or digit ('0' for test (therefore not allowed), '1' denoting passive participant, '2' typically reverse-billing)\r\n * - Last 3 characters - branch code, optional (shall not start with 'X' except in case of 'XXX' for primary office) (letters and digits)\r\n */\r\n$.validator.addMethod( \"bic\", function( value, element ) {\r\n return this.optional( element ) || /^([A-Z]{6}[A-Z2-9][A-NP-Z1-9])(X{3}|[A-WY-Z0-9][A-Z0-9]{2})?$/.test( value.toUpperCase() );\r\n}, \"Please specify a valid BIC code\" );\r\n\r\n/*\r\n * Código de identificación fiscal ( CIF ) is the tax identification code for Spanish legal entities\r\n * Further rules can be found in Spanish on http://es.wikipedia.org/wiki/C%C3%B3digo_de_identificaci%C3%B3n_fiscal\r\n *\r\n * Spanish CIF structure:\r\n *\r\n * [ T ][ P ][ P ][ N ][ N ][ N ][ N ][ N ][ C ]\r\n *\r\n * Where:\r\n *\r\n * T: 1 character. Kind of Organization Letter: [ABCDEFGHJKLMNPQRSUVW]\r\n * P: 2 characters. Province.\r\n * N: 5 characters. Secuencial Number within the province.\r\n * C: 1 character. Control Digit: [0-9A-J].\r\n *\r\n * [ T ]: Kind of Organizations. Possible values:\r\n *\r\n * A. Corporations\r\n * B. LLCs\r\n * C. General partnerships\r\n * D. Companies limited partnerships\r\n * E. Communities of goods\r\n * F. Cooperative Societies\r\n * G. Associations\r\n * H. Communities of homeowners in horizontal property regime\r\n * J. Civil Societies\r\n * K. Old format\r\n * L. Old format\r\n * M. Old format\r\n * N. Nonresident entities\r\n * P. Local authorities\r\n * Q. Autonomous bodies, state or not, and the like, and congregations and religious institutions\r\n * R. Congregations and religious institutions (since 2008 ORDER EHA/451/2008)\r\n * S. Organs of State Administration and regions\r\n * V. Agrarian Transformation\r\n * W. Permanent establishments of non-resident in Spain\r\n *\r\n * [ C ]: Control Digit. It can be a number or a letter depending on T value:\r\n * [ T ] --> [ C ]\r\n * ------ ----------\r\n * A Number\r\n * B Number\r\n * E Number\r\n * H Number\r\n * K Letter\r\n * P Letter\r\n * Q Letter\r\n * S Letter\r\n *\r\n */\r\n$.validator.addMethod( \"cifES\", function( value, element ) {\r\n\t\"use strict\";\r\n\r\n\tif ( this.optional( element ) ) {\r\n\t\treturn true;\r\n\t}\r\n\r\n\tvar cifRegEx = new RegExp( /^([ABCDEFGHJKLMNPQRSUVW])(\\d{7})([0-9A-J])$/gi );\r\n\tvar letter = value.substring( 0, 1 ), // [ T ]\r\n\t\tnumber = value.substring( 1, 8 ), // [ P ][ P ][ N ][ N ][ N ][ N ][ N ]\r\n\t\tcontrol = value.substring( 8, 9 ), // [ C ]\r\n\t\tall_sum = 0,\r\n\t\teven_sum = 0,\r\n\t\todd_sum = 0,\r\n\t\ti, n,\r\n\t\tcontrol_digit,\r\n\t\tcontrol_letter;\r\n\r\n\tfunction isOdd( n ) {\r\n\t\treturn n % 2 === 0;\r\n\t}\r\n\r\n\t// Quick format test\r\n\tif ( value.length !== 9 || !cifRegEx.test( value ) ) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tfor ( i = 0; i < number.length; i++ ) {\r\n\t\tn = parseInt( number[ i ], 10 );\r\n\r\n\t\t// Odd positions\r\n\t\tif ( isOdd( i ) ) {\r\n\r\n\t\t\t// Odd positions are multiplied first.\r\n\t\t\tn *= 2;\r\n\r\n\t\t\t// If the multiplication is bigger than 10 we need to adjust\r\n\t\t\todd_sum += n < 10 ? n : n - 9;\r\n\r\n\t\t// Even positions\r\n\t\t// Just sum them\r\n\t\t} else {\r\n\t\t\teven_sum += n;\r\n\t\t}\r\n\t}\r\n\r\n\tall_sum = even_sum + odd_sum;\r\n\tcontrol_digit = ( 10 - ( all_sum ).toString().substr( -1 ) ).toString();\r\n\tcontrol_digit = parseInt( control_digit, 10 ) > 9 ? \"0\" : control_digit;\r\n\tcontrol_letter = \"JABCDEFGHI\".substr( control_digit, 1 ).toString();\r\n\r\n\t// Control must be a digit\r\n\tif ( letter.match( /[ABEH]/ ) ) {\r\n\t\treturn control === control_digit;\r\n\r\n\t// Control must be a letter\r\n\t} else if ( letter.match( /[KPQS]/ ) ) {\r\n\t\treturn control === control_letter;\r\n\t}\r\n\r\n\t// Can be either\r\n\treturn control === control_digit || control === control_letter;\r\n\r\n}, \"Please specify a valid CIF number.\" );\r\n\r\n/*\r\n * Brazillian CPF number (Cadastrado de Pessoas Físicas) is the equivalent of a Brazilian tax registration number.\r\n * CPF numbers have 11 digits in total: 9 numbers followed by 2 check numbers that are being used for validation.\r\n */\r\n$.validator.addMethod( \"cpfBR\", function( value ) {\r\n\r\n\t// Removing special characters from value\r\n\tvalue = value.replace( /([~!@#$%^&*()_+=`{}\\[\\]\\-|\\\\:;'<>,.\\/? ])+/g, \"\" );\r\n\r\n\t// Checking value to have 11 digits only\r\n\tif ( value.length !== 11 ) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tvar sum = 0,\r\n\t\tfirstCN, secondCN, checkResult, i;\r\n\r\n\tfirstCN = parseInt( value.substring( 9, 10 ), 10 );\r\n\tsecondCN = parseInt( value.substring( 10, 11 ), 10 );\r\n\r\n\tcheckResult = function( sum, cn ) {\r\n\t\tvar result = ( sum * 10 ) % 11;\r\n\t\tif ( ( result === 10 ) || ( result === 11 ) ) {\r\n\t\t\tresult = 0;\r\n\t\t}\r\n\t\treturn ( result === cn );\r\n\t};\r\n\r\n\t// Checking for dump data\r\n\tif ( value === \"\" ||\r\n\t\tvalue === \"00000000000\" ||\r\n\t\tvalue === \"11111111111\" ||\r\n\t\tvalue === \"22222222222\" ||\r\n\t\tvalue === \"33333333333\" ||\r\n\t\tvalue === \"44444444444\" ||\r\n\t\tvalue === \"55555555555\" ||\r\n\t\tvalue === \"66666666666\" ||\r\n\t\tvalue === \"77777777777\" ||\r\n\t\tvalue === \"88888888888\" ||\r\n\t\tvalue === \"99999999999\"\r\n\t) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\t// Step 1 - using first Check Number:\r\n\tfor ( i = 1; i <= 9; i++ ) {\r\n\t\tsum = sum + parseInt( value.substring( i - 1, i ), 10 ) * ( 11 - i );\r\n\t}\r\n\r\n\t// If first Check Number (CN) is valid, move to Step 2 - using second Check Number:\r\n\tif ( checkResult( sum, firstCN ) ) {\r\n\t\tsum = 0;\r\n\t\tfor ( i = 1; i <= 10; i++ ) {\r\n\t\t\tsum = sum + parseInt( value.substring( i - 1, i ), 10 ) * ( 12 - i );\r\n\t\t}\r\n\t\treturn checkResult( sum, secondCN );\r\n\t}\r\n\treturn false;\r\n\r\n}, \"Please specify a valid CPF number\" );\r\n\r\n// https://jqueryvalidation.org/creditcard-method/\r\n// based on https://en.wikipedia.org/wiki/Luhn_algorithm\r\n$.validator.addMethod( \"creditcard\", function( value, element ) {\r\n\tif ( this.optional( element ) ) {\r\n\t\treturn \"dependency-mismatch\";\r\n\t}\r\n\r\n\t// Accept only spaces, digits and dashes\r\n\tif ( /[^0-9 \\-]+/.test( value ) ) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tvar nCheck = 0,\r\n\t\tnDigit = 0,\r\n\t\tbEven = false,\r\n\t\tn, cDigit;\r\n\r\n\tvalue = value.replace( /\\D/g, \"\" );\r\n\r\n\t// Basing min and max length on\r\n\t// https://developer.ean.com/general_info/Valid_Credit_Card_Types\r\n\tif ( value.length < 13 || value.length > 19 ) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tfor ( n = value.length - 1; n >= 0; n-- ) {\r\n\t\tcDigit = value.charAt( n );\r\n\t\tnDigit = parseInt( cDigit, 10 );\r\n\t\tif ( bEven ) {\r\n\t\t\tif ( ( nDigit *= 2 ) > 9 ) {\r\n\t\t\t\tnDigit -= 9;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tnCheck += nDigit;\r\n\t\tbEven = !bEven;\r\n\t}\r\n\r\n\treturn ( nCheck % 10 ) === 0;\r\n}, \"Please enter a valid credit card number.\" );\r\n\r\n/* NOTICE: Modified version of Castle.Components.Validator.CreditCardValidator\r\n * Redistributed under the the Apache License 2.0 at http://www.apache.org/licenses/LICENSE-2.0\r\n * Valid Types: mastercard, visa, amex, dinersclub, enroute, discover, jcb, unknown, all (overrides all other settings)\r\n */\r\n$.validator.addMethod( \"creditcardtypes\", function( value, element, param ) {\r\n\tif ( /[^0-9\\-]+/.test( value ) ) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tvalue = value.replace( /\\D/g, \"\" );\r\n\r\n\tvar validTypes = 0x0000;\r\n\r\n\tif ( param.mastercard ) {\r\n\t\tvalidTypes |= 0x0001;\r\n\t}\r\n\tif ( param.visa ) {\r\n\t\tvalidTypes |= 0x0002;\r\n\t}\r\n\tif ( param.amex ) {\r\n\t\tvalidTypes |= 0x0004;\r\n\t}\r\n\tif ( param.dinersclub ) {\r\n\t\tvalidTypes |= 0x0008;\r\n\t}\r\n\tif ( param.enroute ) {\r\n\t\tvalidTypes |= 0x0010;\r\n\t}\r\n\tif ( param.discover ) {\r\n\t\tvalidTypes |= 0x0020;\r\n\t}\r\n\tif ( param.jcb ) {\r\n\t\tvalidTypes |= 0x0040;\r\n\t}\r\n\tif ( param.unknown ) {\r\n\t\tvalidTypes |= 0x0080;\r\n\t}\r\n\tif ( param.all ) {\r\n\t\tvalidTypes = 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040 | 0x0080;\r\n\t}\r\n\tif ( validTypes & 0x0001 && /^(5[12345])/.test( value ) ) { // Mastercard\r\n\t\treturn value.length === 16;\r\n\t}\r\n\tif ( validTypes & 0x0002 && /^(4)/.test( value ) ) { // Visa\r\n\t\treturn value.length === 16;\r\n\t}\r\n\tif ( validTypes & 0x0004 && /^(3[47])/.test( value ) ) { // Amex\r\n\t\treturn value.length === 15;\r\n\t}\r\n\tif ( validTypes & 0x0008 && /^(3(0[012345]|[68]))/.test( value ) ) { // Dinersclub\r\n\t\treturn value.length === 14;\r\n\t}\r\n\tif ( validTypes & 0x0010 && /^(2(014|149))/.test( value ) ) { // Enroute\r\n\t\treturn value.length === 15;\r\n\t}\r\n\tif ( validTypes & 0x0020 && /^(6011)/.test( value ) ) { // Discover\r\n\t\treturn value.length === 16;\r\n\t}\r\n\tif ( validTypes & 0x0040 && /^(3)/.test( value ) ) { // Jcb\r\n\t\treturn value.length === 16;\r\n\t}\r\n\tif ( validTypes & 0x0040 && /^(2131|1800)/.test( value ) ) { // Jcb\r\n\t\treturn value.length === 15;\r\n\t}\r\n\tif ( validTypes & 0x0080 ) { // Unknown\r\n\t\treturn true;\r\n\t}\r\n\treturn false;\r\n}, \"Please enter a valid credit card number.\" );\r\n\r\n/**\r\n * Validates currencies with any given symbols by @jameslouiz\r\n * Symbols can be optional or required. Symbols required by default\r\n *\r\n * Usage examples:\r\n * currency: [\"£\", false] - Use false for soft currency validation\r\n * currency: [\"$\", false]\r\n * currency: [\"RM\", false] - also works with text based symbols such as \"RM\" - Malaysia Ringgit etc\r\n *\r\n * \r\n *\r\n * Soft symbol checking\r\n * currencyInput: {\r\n * currency: [\"$\", false]\r\n * }\r\n *\r\n * Strict symbol checking (default)\r\n * currencyInput: {\r\n * currency: \"$\"\r\n * //OR\r\n * currency: [\"$\", true]\r\n * }\r\n *\r\n * Multiple Symbols\r\n * currencyInput: {\r\n * currency: \"$,£,¢\"\r\n * }\r\n */\r\n$.validator.addMethod( \"currency\", function( value, element, param ) {\r\n var isParamString = typeof param === \"string\",\r\n symbol = isParamString ? param : param[ 0 ],\r\n soft = isParamString ? true : param[ 1 ],\r\n regex;\r\n\r\n symbol = symbol.replace( /,/g, \"\" );\r\n symbol = soft ? symbol + \"]\" : symbol + \"]?\";\r\n regex = \"^[\" + symbol + \"([1-9]{1}[0-9]{0,2}(\\\\,[0-9]{3})*(\\\\.[0-9]{0,2})?|[1-9]{1}[0-9]{0,}(\\\\.[0-9]{0,2})?|0(\\\\.[0-9]{0,2})?|(\\\\.[0-9]{1,2})?)$\";\r\n regex = new RegExp( regex );\r\n return this.optional( element ) || regex.test( value );\r\n\r\n}, \"Please specify a valid currency\" );\r\n\r\n$.validator.addMethod( \"dateFA\", function( value, element ) {\r\n\treturn this.optional( element ) || /^[1-4]\\d{3}\\/((0?[1-6]\\/((3[0-1])|([1-2][0-9])|(0?[1-9])))|((1[0-2]|(0?[7-9]))\\/(30|([1-2][0-9])|(0?[1-9]))))$/.test( value );\r\n}, $.validator.messages.date );\r\n\r\n/**\r\n * Return true, if the value is a valid date, also making this formal check dd/mm/yyyy.\r\n *\r\n * @example $.validator.methods.date(\"01/01/1900\")\r\n * @result true\r\n *\r\n * @example $.validator.methods.date(\"01/13/1990\")\r\n * @result false\r\n *\r\n * @example $.validator.methods.date(\"01.01.1900\")\r\n * @result false\r\n *\r\n * @example \r\n * @desc Declares an optional input element whose value must be a valid date.\r\n *\r\n * @name $.validator.methods.dateITA\r\n * @type Boolean\r\n * @cat Plugins/Validate/Methods\r\n */\r\n$.validator.addMethod( \"dateITA\", function( value, element ) {\r\n\tvar check = false,\r\n\t\tre = /^\\d{1,2}\\/\\d{1,2}\\/\\d{4}$/,\r\n\t\tadata, gg, mm, aaaa, xdata;\r\n\tif ( re.test( value ) ) {\r\n\t\tadata = value.split( \"/\" );\r\n\t\tgg = parseInt( adata[ 0 ], 10 );\r\n\t\tmm = parseInt( adata[ 1 ], 10 );\r\n\t\taaaa = parseInt( adata[ 2 ], 10 );\r\n\t\txdata = new Date( Date.UTC( aaaa, mm - 1, gg, 12, 0, 0, 0 ) );\r\n\t\tif ( ( xdata.getUTCFullYear() === aaaa ) && ( xdata.getUTCMonth() === mm - 1 ) && ( xdata.getUTCDate() === gg ) ) {\r\n\t\t\tcheck = true;\r\n\t\t} else {\r\n\t\t\tcheck = false;\r\n\t\t}\r\n\t} else {\r\n\t\tcheck = false;\r\n\t}\r\n\treturn this.optional( element ) || check;\r\n}, $.validator.messages.date );\r\n\r\n$.validator.addMethod( \"dateNL\", function( value, element ) {\r\n\treturn this.optional( element ) || /^(0?[1-9]|[12]\\d|3[01])[\\.\\/\\-](0?[1-9]|1[012])[\\.\\/\\-]([12]\\d)?(\\d\\d)$/.test( value );\r\n}, $.validator.messages.date );\r\n\r\n// Older \"accept\" file extension method. Old docs: http://docs.jquery.com/Plugins/Validation/Methods/accept\r\n$.validator.addMethod( \"extension\", function( value, element, param ) {\r\n\tparam = typeof param === \"string\" ? param.replace( /,/g, \"|\" ) : \"png|jpe?g|gif\";\r\n\treturn this.optional( element ) || value.match( new RegExp( \"\\\\.(\" + param + \")$\", \"i\" ) );\r\n}, $.validator.format( \"Please enter a value with a valid extension.\" ) );\r\n\r\n/**\r\n * Dutch giro account numbers (not bank numbers) have max 7 digits\r\n */\r\n$.validator.addMethod( \"giroaccountNL\", function( value, element ) {\r\n\treturn this.optional( element ) || /^[0-9]{1,7}$/.test( value );\r\n}, \"Please specify a valid giro account number\" );\r\n\r\n/**\r\n * IBAN is the international bank account number.\r\n * It has a country - specific format, that is checked here too\r\n *\r\n * Validation is case-insensitive. Please make sure to normalize input yourself.\r\n */\r\n$.validator.addMethod( \"iban\", function( value, element ) {\r\n\r\n\t// Some quick simple tests to prevent needless work\r\n\tif ( this.optional( element ) ) {\r\n\t\treturn true;\r\n\t}\r\n\r\n\t// Remove spaces and to upper case\r\n\tvar iban = value.replace( / /g, \"\" ).toUpperCase(),\r\n\t\tibancheckdigits = \"\",\r\n\t\tleadingZeroes = true,\r\n\t\tcRest = \"\",\r\n\t\tcOperator = \"\",\r\n\t\tcountrycode, ibancheck, charAt, cChar, bbanpattern, bbancountrypatterns, ibanregexp, i, p;\r\n\r\n\t// Check for IBAN code length.\r\n\t// It contains:\r\n\t// country code ISO 3166-1 - two letters,\r\n\t// two check digits,\r\n\t// Basic Bank Account Number (BBAN) - up to 30 chars\r\n\tvar minimalIBANlength = 5;\r\n\tif ( iban.length < minimalIBANlength ) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\t// Check the country code and find the country specific format\r\n\tcountrycode = iban.substring( 0, 2 );\r\n\tbbancountrypatterns = {\r\n\t\t\"AL\": \"\\\\d{8}[\\\\dA-Z]{16}\",\r\n\t\t\"AD\": \"\\\\d{8}[\\\\dA-Z]{12}\",\r\n\t\t\"AT\": \"\\\\d{16}\",\r\n\t\t\"AZ\": \"[\\\\dA-Z]{4}\\\\d{20}\",\r\n\t\t\"BE\": \"\\\\d{12}\",\r\n\t\t\"BH\": \"[A-Z]{4}[\\\\dA-Z]{14}\",\r\n\t\t\"BA\": \"\\\\d{16}\",\r\n\t\t\"BR\": \"\\\\d{23}[A-Z][\\\\dA-Z]\",\r\n\t\t\"BG\": \"[A-Z]{4}\\\\d{6}[\\\\dA-Z]{8}\",\r\n\t\t\"CR\": \"\\\\d{17}\",\r\n\t\t\"HR\": \"\\\\d{17}\",\r\n\t\t\"CY\": \"\\\\d{8}[\\\\dA-Z]{16}\",\r\n\t\t\"CZ\": \"\\\\d{20}\",\r\n\t\t\"DK\": \"\\\\d{14}\",\r\n\t\t\"DO\": \"[A-Z]{4}\\\\d{20}\",\r\n\t\t\"EE\": \"\\\\d{16}\",\r\n\t\t\"FO\": \"\\\\d{14}\",\r\n\t\t\"FI\": \"\\\\d{14}\",\r\n\t\t\"FR\": \"\\\\d{10}[\\\\dA-Z]{11}\\\\d{2}\",\r\n\t\t\"GE\": \"[\\\\dA-Z]{2}\\\\d{16}\",\r\n\t\t\"DE\": \"\\\\d{18}\",\r\n\t\t\"GI\": \"[A-Z]{4}[\\\\dA-Z]{15}\",\r\n\t\t\"GR\": \"\\\\d{7}[\\\\dA-Z]{16}\",\r\n\t\t\"GL\": \"\\\\d{14}\",\r\n\t\t\"GT\": \"[\\\\dA-Z]{4}[\\\\dA-Z]{20}\",\r\n\t\t\"HU\": \"\\\\d{24}\",\r\n\t\t\"IS\": \"\\\\d{22}\",\r\n\t\t\"IE\": \"[\\\\dA-Z]{4}\\\\d{14}\",\r\n\t\t\"IL\": \"\\\\d{19}\",\r\n\t\t\"IT\": \"[A-Z]\\\\d{10}[\\\\dA-Z]{12}\",\r\n\t\t\"KZ\": \"\\\\d{3}[\\\\dA-Z]{13}\",\r\n\t\t\"KW\": \"[A-Z]{4}[\\\\dA-Z]{22}\",\r\n\t\t\"LV\": \"[A-Z]{4}[\\\\dA-Z]{13}\",\r\n\t\t\"LB\": \"\\\\d{4}[\\\\dA-Z]{20}\",\r\n\t\t\"LI\": \"\\\\d{5}[\\\\dA-Z]{12}\",\r\n\t\t\"LT\": \"\\\\d{16}\",\r\n\t\t\"LU\": \"\\\\d{3}[\\\\dA-Z]{13}\",\r\n\t\t\"MK\": \"\\\\d{3}[\\\\dA-Z]{10}\\\\d{2}\",\r\n\t\t\"MT\": \"[A-Z]{4}\\\\d{5}[\\\\dA-Z]{18}\",\r\n\t\t\"MR\": \"\\\\d{23}\",\r\n\t\t\"MU\": \"[A-Z]{4}\\\\d{19}[A-Z]{3}\",\r\n\t\t\"MC\": \"\\\\d{10}[\\\\dA-Z]{11}\\\\d{2}\",\r\n\t\t\"MD\": \"[\\\\dA-Z]{2}\\\\d{18}\",\r\n\t\t\"ME\": \"\\\\d{18}\",\r\n\t\t\"NL\": \"[A-Z]{4}\\\\d{10}\",\r\n\t\t\"NO\": \"\\\\d{11}\",\r\n\t\t\"PK\": \"[\\\\dA-Z]{4}\\\\d{16}\",\r\n\t\t\"PS\": \"[\\\\dA-Z]{4}\\\\d{21}\",\r\n\t\t\"PL\": \"\\\\d{24}\",\r\n\t\t\"PT\": \"\\\\d{21}\",\r\n\t\t\"RO\": \"[A-Z]{4}[\\\\dA-Z]{16}\",\r\n\t\t\"SM\": \"[A-Z]\\\\d{10}[\\\\dA-Z]{12}\",\r\n\t\t\"SA\": \"\\\\d{2}[\\\\dA-Z]{18}\",\r\n\t\t\"RS\": \"\\\\d{18}\",\r\n\t\t\"SK\": \"\\\\d{20}\",\r\n\t\t\"SI\": \"\\\\d{15}\",\r\n\t\t\"ES\": \"\\\\d{20}\",\r\n\t\t\"SE\": \"\\\\d{20}\",\r\n\t\t\"CH\": \"\\\\d{5}[\\\\dA-Z]{12}\",\r\n\t\t\"TN\": \"\\\\d{20}\",\r\n\t\t\"TR\": \"\\\\d{5}[\\\\dA-Z]{17}\",\r\n\t\t\"AE\": \"\\\\d{3}\\\\d{16}\",\r\n\t\t\"GB\": \"[A-Z]{4}\\\\d{14}\",\r\n\t\t\"VG\": \"[\\\\dA-Z]{4}\\\\d{16}\"\r\n\t};\r\n\r\n\tbbanpattern = bbancountrypatterns[ countrycode ];\r\n\r\n\t// As new countries will start using IBAN in the\r\n\t// future, we only check if the countrycode is known.\r\n\t// This prevents false negatives, while almost all\r\n\t// false positives introduced by this, will be caught\r\n\t// by the checksum validation below anyway.\r\n\t// Strict checking should return FALSE for unknown\r\n\t// countries.\r\n\tif ( typeof bbanpattern !== \"undefined\" ) {\r\n\t\tibanregexp = new RegExp( \"^[A-Z]{2}\\\\d{2}\" + bbanpattern + \"$\", \"\" );\r\n\t\tif ( !( ibanregexp.test( iban ) ) ) {\r\n\t\t\treturn false; // Invalid country specific format\r\n\t\t}\r\n\t}\r\n\r\n\t// Now check the checksum, first convert to digits\r\n\tibancheck = iban.substring( 4, iban.length ) + iban.substring( 0, 4 );\r\n\tfor ( i = 0; i < ibancheck.length; i++ ) {\r\n\t\tcharAt = ibancheck.charAt( i );\r\n\t\tif ( charAt !== \"0\" ) {\r\n\t\t\tleadingZeroes = false;\r\n\t\t}\r\n\t\tif ( !leadingZeroes ) {\r\n\t\t\tibancheckdigits += \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\".indexOf( charAt );\r\n\t\t}\r\n\t}\r\n\r\n\t// Calculate the result of: ibancheckdigits % 97\r\n\tfor ( p = 0; p < ibancheckdigits.length; p++ ) {\r\n\t\tcChar = ibancheckdigits.charAt( p );\r\n\t\tcOperator = \"\" + cRest + \"\" + cChar;\r\n\t\tcRest = cOperator % 97;\r\n\t}\r\n\treturn cRest === 1;\r\n}, \"Please specify a valid IBAN\" );\r\n\r\n$.validator.addMethod( \"integer\", function( value, element ) {\r\n\treturn this.optional( element ) || /^-?\\d+$/.test( value );\r\n}, \"A positive or negative non-decimal number please\" );\r\n\r\n$.validator.addMethod( \"ipv4\", function( value, element ) {\r\n\treturn this.optional( element ) || /^(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$/i.test( value );\r\n}, \"Please enter a valid IP v4 address.\" );\r\n\r\n$.validator.addMethod( \"ipv6\", function( value, element ) {\r\n\treturn this.optional( element ) || /^((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$/i.test( value );\r\n}, \"Please enter a valid IP v6 address.\" );\r\n\r\n$.validator.addMethod( \"lettersonly\", function( value, element ) {\r\n\treturn this.optional( element ) || /^[a-z]+$/i.test( value );\r\n}, \"Letters only please\" );\r\n\r\n$.validator.addMethod( \"letterswithbasicpunc\", function( value, element ) {\r\n\treturn this.optional( element ) || /^[a-z\\-.,()'\"\\s]+$/i.test( value );\r\n}, \"Letters or punctuation only please\" );\r\n\r\n$.validator.addMethod( \"mobileNL\", function( value, element ) {\r\n\treturn this.optional( element ) || /^((\\+|00(\\s|\\s?\\-\\s?)?)31(\\s|\\s?\\-\\s?)?(\\(0\\)[\\-\\s]?)?|0)6((\\s|\\s?\\-\\s?)?[0-9]){8}$/.test( value );\r\n}, \"Please specify a valid mobile number\" );\r\n\r\n/* For UK phone functions, do the following server side processing:\r\n * Compare original input with this RegEx pattern:\r\n * ^\\(?(?:(?:00\\)?[\\s\\-]?\\(?|\\+)(44)\\)?[\\s\\-]?\\(?(?:0\\)?[\\s\\-]?\\(?)?|0)([1-9]\\d{1,4}\\)?[\\s\\d\\-]+)$\r\n * Extract $1 and set $prefix to '+44' if $1 is '44', otherwise set $prefix to '0'\r\n * Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2.\r\n * A number of very detailed GB telephone number RegEx patterns can also be found at:\r\n * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers\r\n */\r\n$.validator.addMethod( \"mobileUK\", function( phone_number, element ) {\r\n\tphone_number = phone_number.replace( /\\(|\\)|\\s+|-/g, \"\" );\r\n\treturn this.optional( element ) || phone_number.length > 9 &&\r\n\t\tphone_number.match( /^(?:(?:(?:00\\s?|\\+)44\\s?|0)7(?:[1345789]\\d{2}|624)\\s?\\d{3}\\s?\\d{3})$/ );\r\n}, \"Please specify a valid mobile number\" );\r\n\r\n$.validator.addMethod( \"netmask\", function( value, element ) {\r\n return this.optional( element ) || /^(254|252|248|240|224|192|128)\\.0\\.0\\.0|255\\.(254|252|248|240|224|192|128|0)\\.0\\.0|255\\.255\\.(254|252|248|240|224|192|128|0)\\.0|255\\.255\\.255\\.(254|252|248|240|224|192|128|0)/i.test( value );\r\n}, \"Please enter a valid netmask.\" );\r\n\r\n/*\r\n * The NIE (Número de Identificación de Extranjero) is a Spanish tax identification number assigned by the Spanish\r\n * authorities to any foreigner.\r\n *\r\n * The NIE is the equivalent of a Spaniards Número de Identificación Fiscal (NIF) which serves as a fiscal\r\n * identification number. The CIF number (Certificado de Identificación Fiscal) is equivalent to the NIF, but applies to\r\n * companies rather than individuals. The NIE consists of an 'X' or 'Y' followed by 7 or 8 digits then another letter.\r\n */\r\n$.validator.addMethod( \"nieES\", function( value, element ) {\r\n\t\"use strict\";\r\n\r\n\tif ( this.optional( element ) ) {\r\n\t\treturn true;\r\n\t}\r\n\r\n\tvar nieRegEx = new RegExp( /^[MXYZ]{1}[0-9]{7,8}[TRWAGMYFPDXBNJZSQVHLCKET]{1}$/gi );\r\n\tvar validChars = \"TRWAGMYFPDXBNJZSQVHLCKET\",\r\n\t\tletter = value.substr( value.length - 1 ).toUpperCase(),\r\n\t\tnumber;\r\n\r\n\tvalue = value.toString().toUpperCase();\r\n\r\n\t// Quick format test\r\n\tif ( value.length > 10 || value.length < 9 || !nieRegEx.test( value ) ) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\t// X means same number\r\n\t// Y means number + 10000000\r\n\t// Z means number + 20000000\r\n\tvalue = value.replace( /^[X]/, \"0\" )\r\n\t\t.replace( /^[Y]/, \"1\" )\r\n\t\t.replace( /^[Z]/, \"2\" );\r\n\r\n\tnumber = value.length === 9 ? value.substr( 0, 8 ) : value.substr( 0, 9 );\r\n\r\n\treturn validChars.charAt( parseInt( number, 10 ) % 23 ) === letter;\r\n\r\n}, \"Please specify a valid NIE number.\" );\r\n\r\n/*\r\n * The Número de Identificación Fiscal ( NIF ) is the way tax identification used in Spain for individuals\r\n */\r\n$.validator.addMethod( \"nifES\", function( value, element ) {\r\n\t\"use strict\";\r\n\r\n\tif ( this.optional( element ) ) {\r\n\t\treturn true;\r\n\t}\r\n\r\n\tvalue = value.toUpperCase();\r\n\r\n\t// Basic format test\r\n\tif ( !value.match( \"((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)\" ) ) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\t// Test NIF\r\n\tif ( /^[0-9]{8}[A-Z]{1}$/.test( value ) ) {\r\n\t\treturn ( \"TRWAGMYFPDXBNJZSQVHLCKE\".charAt( value.substring( 8, 0 ) % 23 ) === value.charAt( 8 ) );\r\n\t}\r\n\r\n\t// Test specials NIF (starts with K, L or M)\r\n\tif ( /^[KLM]{1}/.test( value ) ) {\r\n\t\treturn ( value[ 8 ] === \"TRWAGMYFPDXBNJZSQVHLCKE\".charAt( value.substring( 8, 1 ) % 23 ) );\r\n\t}\r\n\r\n\treturn false;\r\n\r\n}, \"Please specify a valid NIF number.\" );\r\n\r\n/*\r\n * Numer identyfikacji podatkowej ( NIP ) is the way tax identification used in Poland for companies\r\n */\r\n$.validator.addMethod( \"nipPL\", function( value ) {\r\n\t\"use strict\";\r\n\r\n\tvalue = value.replace( /[^0-9]/g, \"\" );\r\n\r\n\tif ( value.length !== 10 ) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tvar arrSteps = [ 6, 5, 7, 2, 3, 4, 5, 6, 7 ];\r\n\tvar intSum = 0;\r\n\tfor ( var i = 0; i < 9; i++ ) {\r\n\t\tintSum += arrSteps[ i ] * value[ i ];\r\n\t}\r\n\tvar int2 = intSum % 11;\r\n\tvar intControlNr = ( int2 === 10 ) ? 0 : int2;\r\n\r\n\treturn ( intControlNr === parseInt( value[ 9 ], 10 ) );\r\n}, \"Please specify a valid NIP number.\" );\r\n\r\n$.validator.addMethod( \"notEqualTo\", function( value, element, param ) {\r\n\treturn this.optional( element ) || !$.validator.methods.equalTo.call( this, value, element, param );\r\n}, \"Please enter a different value, values must not be the same.\" );\r\n\r\n$.validator.addMethod( \"nowhitespace\", function( value, element ) {\r\n\treturn this.optional( element ) || /^\\S+$/i.test( value );\r\n}, \"No white space please\" );\r\n\r\n/**\r\n* Return true if the field value matches the given format RegExp\r\n*\r\n* @example $.validator.methods.pattern(\"AR1004\",element,/^AR\\d{4}$/)\r\n* @result true\r\n*\r\n* @example $.validator.methods.pattern(\"BR1004\",element,/^AR\\d{4}$/)\r\n* @result false\r\n*\r\n* @name $.validator.methods.pattern\r\n* @type Boolean\r\n* @cat Plugins/Validate/Methods\r\n*/\r\n$.validator.addMethod( \"pattern\", function( value, element, param ) {\r\n\tif ( this.optional( element ) ) {\r\n\t\treturn true;\r\n\t}\r\n\tif ( typeof param === \"string\" ) {\r\n\t\tparam = new RegExp( \"^(?:\" + param + \")$\" );\r\n\t}\r\n\treturn param.test( value );\r\n}, \"Invalid format.\" );\r\n\r\n/**\r\n * Dutch phone numbers have 10 digits (or 11 and start with +31).\r\n */\r\n$.validator.addMethod( \"phoneNL\", function( value, element ) {\r\n\treturn this.optional( element ) || /^((\\+|00(\\s|\\s?\\-\\s?)?)31(\\s|\\s?\\-\\s?)?(\\(0\\)[\\-\\s]?)?|0)[1-9]((\\s|\\s?\\-\\s?)?[0-9]){8}$/.test( value );\r\n}, \"Please specify a valid phone number.\" );\r\n\r\n/* For UK phone functions, do the following server side processing:\r\n * Compare original input with this RegEx pattern:\r\n * ^\\(?(?:(?:00\\)?[\\s\\-]?\\(?|\\+)(44)\\)?[\\s\\-]?\\(?(?:0\\)?[\\s\\-]?\\(?)?|0)([1-9]\\d{1,4}\\)?[\\s\\d\\-]+)$\r\n * Extract $1 and set $prefix to '+44' if $1 is '44', otherwise set $prefix to '0'\r\n * Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2.\r\n * A number of very detailed GB telephone number RegEx patterns can also be found at:\r\n * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers\r\n */\r\n\r\n// Matches UK landline + mobile, accepting only 01-3 for landline or 07 for mobile to exclude many premium numbers\r\n$.validator.addMethod( \"phonesUK\", function( phone_number, element ) {\r\n\tphone_number = phone_number.replace( /\\(|\\)|\\s+|-/g, \"\" );\r\n\treturn this.optional( element ) || phone_number.length > 9 &&\r\n\t\tphone_number.match( /^(?:(?:(?:00\\s?|\\+)44\\s?|0)(?:1\\d{8,9}|[23]\\d{9}|7(?:[1345789]\\d{8}|624\\d{6})))$/ );\r\n}, \"Please specify a valid uk phone number\" );\r\n\r\n/* For UK phone functions, do the following server side processing:\r\n * Compare original input with this RegEx pattern:\r\n * ^\\(?(?:(?:00\\)?[\\s\\-]?\\(?|\\+)(44)\\)?[\\s\\-]?\\(?(?:0\\)?[\\s\\-]?\\(?)?|0)([1-9]\\d{1,4}\\)?[\\s\\d\\-]+)$\r\n * Extract $1 and set $prefix to '+44' if $1 is '44', otherwise set $prefix to '0'\r\n * Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2.\r\n * A number of very detailed GB telephone number RegEx patterns can also be found at:\r\n * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers\r\n */\r\n$.validator.addMethod( \"phoneUK\", function( phone_number, element ) {\r\n\tphone_number = phone_number.replace( /\\(|\\)|\\s+|-/g, \"\" );\r\n\treturn this.optional( element ) || phone_number.length > 9 &&\r\n\t\tphone_number.match( /^(?:(?:(?:00\\s?|\\+)44\\s?)|(?:\\(?0))(?:\\d{2}\\)?\\s?\\d{4}\\s?\\d{4}|\\d{3}\\)?\\s?\\d{3}\\s?\\d{3,4}|\\d{4}\\)?\\s?(?:\\d{5}|\\d{3}\\s?\\d{3})|\\d{5}\\)?\\s?\\d{4,5})$/ );\r\n}, \"Please specify a valid phone number\" );\r\n\r\n/**\r\n * Matches US phone number format\r\n *\r\n * where the area code may not start with 1 and the prefix may not start with 1\r\n * allows '-' or ' ' as a separator and allows parens around area code\r\n * some people may want to put a '1' in front of their number\r\n *\r\n * 1(212)-999-2345 or\r\n * 212 999 2344 or\r\n * 212-999-0983\r\n *\r\n * but not\r\n * 111-123-5434\r\n * and not\r\n * 212 123 4567\r\n */\r\n$.validator.addMethod( \"phoneUS\", function( phone_number, element ) {\r\n\tphone_number = phone_number.replace( /\\s+/g, \"\" );\r\n\treturn this.optional( element ) || phone_number.length > 9 &&\r\n\t\tphone_number.match( /^(\\+?1-?)?(\\([2-9]([02-9]\\d|1[02-9])\\)|[2-9]([02-9]\\d|1[02-9]))-?[2-9]([02-9]\\d|1[02-9])-?\\d{4}$/ );\r\n}, \"Please specify a valid phone number\" );\r\n\r\n/*\r\n* Valida CEPs do brasileiros:\r\n*\r\n* Formatos aceitos:\r\n* 99999-999\r\n* 99.999-999\r\n* 99999999\r\n*/\r\n$.validator.addMethod( \"postalcodeBR\", function( cep_value, element ) {\r\n\treturn this.optional( element ) || /^\\d{2}.\\d{3}-\\d{3}?$|^\\d{5}-?\\d{3}?$/.test( cep_value );\r\n}, \"Informe um CEP válido.\" );\r\n\r\n/**\r\n * Matches a valid Canadian Postal Code\r\n *\r\n * @example jQuery.validator.methods.postalCodeCA( \"H0H 0H0\", element )\r\n * @result true\r\n *\r\n * @example jQuery.validator.methods.postalCodeCA( \"H0H0H0\", element )\r\n * @result false\r\n *\r\n * @name jQuery.validator.methods.postalCodeCA\r\n * @type Boolean\r\n * @cat Plugins/Validate/Methods\r\n */\r\n$.validator.addMethod( \"postalCodeCA\", function( value, element ) {\r\n\treturn this.optional( element ) || /^[ABCEGHJKLMNPRSTVXY]\\d[ABCEGHJKLMNPRSTVWXYZ] *\\d[ABCEGHJKLMNPRSTVWXYZ]\\d$/i.test( value );\r\n}, \"Please specify a valid postal code\" );\r\n\r\n/* Matches Italian postcode (CAP) */\r\n$.validator.addMethod( \"postalcodeIT\", function( value, element ) {\r\n\treturn this.optional( element ) || /^\\d{5}$/.test( value );\r\n}, \"Please specify a valid postal code\" );\r\n\r\n$.validator.addMethod( \"postalcodeNL\", function( value, element ) {\r\n\treturn this.optional( element ) || /^[1-9][0-9]{3}\\s?[a-zA-Z]{2}$/.test( value );\r\n}, \"Please specify a valid postal code\" );\r\n\r\n// Matches UK postcode. Does not match to UK Channel Islands that have their own postcodes (non standard UK)\r\n$.validator.addMethod( \"postcodeUK\", function( value, element ) {\r\n\treturn this.optional( element ) || /^((([A-PR-UWYZ][0-9])|([A-PR-UWYZ][0-9][0-9])|([A-PR-UWYZ][A-HK-Y][0-9])|([A-PR-UWYZ][A-HK-Y][0-9][0-9])|([A-PR-UWYZ][0-9][A-HJKSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY]))\\s?([0-9][ABD-HJLNP-UW-Z]{2})|(GIR)\\s?(0AA))$/i.test( value );\r\n}, \"Please specify a valid UK postcode\" );\r\n\r\n/*\r\n * Lets you say \"at least X inputs that match selector Y must be filled.\"\r\n *\r\n * The end result is that neither of these inputs:\r\n *\r\n *\t\r\n *\t\r\n *\r\n *\t...will validate unless at least one of them is filled.\r\n *\r\n * partnumber:\t{require_from_group: [1,\".productinfo\"]},\r\n * description: {require_from_group: [1,\".productinfo\"]}\r\n *\r\n * options[0]: number of fields that must be filled in the group\r\n * options[1]: CSS selector that defines the group of conditionally required fields\r\n */\r\n$.validator.addMethod( \"require_from_group\", function( value, element, options ) {\r\n\tvar $fields = $( options[ 1 ], element.form ),\r\n\t\t$fieldsFirst = $fields.eq( 0 ),\r\n\t\tvalidator = $fieldsFirst.data( \"valid_req_grp\" ) ? $fieldsFirst.data( \"valid_req_grp\" ) : $.extend( {}, this ),\r\n\t\tisValid = $fields.filter( function() {\r\n\t\t\treturn validator.elementValue( this );\r\n\t\t} ).length >= options[ 0 ];\r\n\r\n\t// Store the cloned validator for future validation\r\n\t$fieldsFirst.data( \"valid_req_grp\", validator );\r\n\r\n\t// If element isn't being validated, run each require_from_group field's validation rules\r\n\tif ( !$( element ).data( \"being_validated\" ) ) {\r\n\t\t$fields.data( \"being_validated\", true );\r\n\t\t$fields.each( function() {\r\n\t\t\tvalidator.element( this );\r\n\t\t} );\r\n\t\t$fields.data( \"being_validated\", false );\r\n\t}\r\n\treturn isValid;\r\n}, $.validator.format( \"Please fill at least {0} of these fields.\" ) );\r\n\r\n/*\r\n * Lets you say \"either at least X inputs that match selector Y must be filled,\r\n * OR they must all be skipped (left blank).\"\r\n *\r\n * The end result, is that none of these inputs:\r\n *\r\n *\t\r\n *\t\r\n *\t\r\n *\r\n *\t...will validate unless either at least two of them are filled,\r\n *\tOR none of them are.\r\n *\r\n * partnumber:\t{skip_or_fill_minimum: [2,\".productinfo\"]},\r\n * description: {skip_or_fill_minimum: [2,\".productinfo\"]},\r\n * color:\t\t{skip_or_fill_minimum: [2,\".productinfo\"]}\r\n *\r\n * options[0]: number of fields that must be filled in the group\r\n * options[1]: CSS selector that defines the group of conditionally required fields\r\n *\r\n */\r\n$.validator.addMethod( \"skip_or_fill_minimum\", function( value, element, options ) {\r\n\tvar $fields = $( options[ 1 ], element.form ),\r\n\t\t$fieldsFirst = $fields.eq( 0 ),\r\n\t\tvalidator = $fieldsFirst.data( \"valid_skip\" ) ? $fieldsFirst.data( \"valid_skip\" ) : $.extend( {}, this ),\r\n\t\tnumberFilled = $fields.filter( function() {\r\n\t\t\treturn validator.elementValue( this );\r\n\t\t} ).length,\r\n\t\tisValid = numberFilled === 0 || numberFilled >= options[ 0 ];\r\n\r\n\t// Store the cloned validator for future validation\r\n\t$fieldsFirst.data( \"valid_skip\", validator );\r\n\r\n\t// If element isn't being validated, run each skip_or_fill_minimum field's validation rules\r\n\tif ( !$( element ).data( \"being_validated\" ) ) {\r\n\t\t$fields.data( \"being_validated\", true );\r\n\t\t$fields.each( function() {\r\n\t\t\tvalidator.element( this );\r\n\t\t} );\r\n\t\t$fields.data( \"being_validated\", false );\r\n\t}\r\n\treturn isValid;\r\n}, $.validator.format( \"Please either skip these fields or fill at least {0} of them.\" ) );\r\n\r\n/* Validates US States and/or Territories by @jdforsythe\r\n * Can be case insensitive or require capitalization - default is case insensitive\r\n * Can include US Territories or not - default does not\r\n * Can include US Military postal abbreviations (AA, AE, AP) - default does not\r\n *\r\n * Note: \"States\" always includes DC (District of Colombia)\r\n *\r\n * Usage examples:\r\n *\r\n * This is the default - case insensitive, no territories, no military zones\r\n * stateInput: {\r\n * caseSensitive: false,\r\n * includeTerritories: false,\r\n * includeMilitary: false\r\n * }\r\n *\r\n * Only allow capital letters, no territories, no military zones\r\n * stateInput: {\r\n * caseSensitive: false\r\n * }\r\n *\r\n * Case insensitive, include territories but not military zones\r\n * stateInput: {\r\n * includeTerritories: true\r\n * }\r\n *\r\n * Only allow capital letters, include territories and military zones\r\n * stateInput: {\r\n * caseSensitive: true,\r\n * includeTerritories: true,\r\n * includeMilitary: true\r\n * }\r\n *\r\n */\r\n$.validator.addMethod( \"stateUS\", function( value, element, options ) {\r\n\tvar isDefault = typeof options === \"undefined\",\r\n\t\tcaseSensitive = ( isDefault || typeof options.caseSensitive === \"undefined\" ) ? false : options.caseSensitive,\r\n\t\tincludeTerritories = ( isDefault || typeof options.includeTerritories === \"undefined\" ) ? false : options.includeTerritories,\r\n\t\tincludeMilitary = ( isDefault || typeof options.includeMilitary === \"undefined\" ) ? false : options.includeMilitary,\r\n\t\tregex;\r\n\r\n\tif ( !includeTerritories && !includeMilitary ) {\r\n\t\tregex = \"^(A[KLRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])$\";\r\n\t} else if ( includeTerritories && includeMilitary ) {\r\n\t\tregex = \"^(A[AEKLPRSZ]|C[AOT]|D[CE]|FL|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEINOPST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$\";\r\n\t} else if ( includeTerritories ) {\r\n\t\tregex = \"^(A[KLRSZ]|C[AOT]|D[CE]|FL|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEINOPST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$\";\r\n\t} else {\r\n\t\tregex = \"^(A[AEKLPRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])$\";\r\n\t}\r\n\r\n\tregex = caseSensitive ? new RegExp( regex ) : new RegExp( regex, \"i\" );\r\n\treturn this.optional( element ) || regex.test( value );\r\n}, \"Please specify a valid state\" );\r\n\r\n// TODO check if value starts with <, otherwise don't try stripping anything\r\n$.validator.addMethod( \"strippedminlength\", function( value, element, param ) {\r\n\treturn $( value ).text().length >= param;\r\n}, $.validator.format( \"Please enter at least {0} characters\" ) );\r\n\r\n$.validator.addMethod( \"time\", function( value, element ) {\r\n\treturn this.optional( element ) || /^([01]\\d|2[0-3]|[0-9])(:[0-5]\\d){1,2}$/.test( value );\r\n}, \"Please enter a valid time, between 00:00 and 23:59\" );\r\n\r\n$.validator.addMethod( \"time12h\", function( value, element ) {\r\n\treturn this.optional( element ) || /^((0?[1-9]|1[012])(:[0-5]\\d){1,2}(\\ ?[AP]M))$/i.test( value );\r\n}, \"Please enter a valid time in 12-hour am/pm format\" );\r\n\r\n// Same as url, but TLD is optional\r\n$.validator.addMethod( \"url2\", function( value, element ) {\r\n\treturn this.optional( element ) || /^(https?|ftp):\\/\\/(((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:)*@)?(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]))|((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)*(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?)(:\\d*)?)(\\/((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)+(\\/(([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)*)*)?)?(\\?((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|[\\uE000-\\uF8FF]|\\/|\\?)*)?(#((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|\\/|\\?)*)?$/i.test( value );\r\n}, $.validator.messages.url );\r\n\r\n/**\r\n * Return true, if the value is a valid vehicle identification number (VIN).\r\n *\r\n * Works with all kind of text inputs.\r\n *\r\n * @example \r\n * @desc Declares a required input element whose value must be a valid vehicle identification number.\r\n *\r\n * @name $.validator.methods.vinUS\r\n * @type Boolean\r\n * @cat Plugins/Validate/Methods\r\n */\r\n$.validator.addMethod( \"vinUS\", function( v ) {\r\n\tif ( v.length !== 17 ) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tvar LL = [ \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"J\", \"K\", \"L\", \"M\", \"N\", \"P\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\" ],\r\n\t\tVL = [ 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 7, 9, 2, 3, 4, 5, 6, 7, 8, 9 ],\r\n\t\tFL = [ 8, 7, 6, 5, 4, 3, 2, 10, 0, 9, 8, 7, 6, 5, 4, 3, 2 ],\r\n\t\trs = 0,\r\n\t\ti, n, d, f, cd, cdv;\r\n\r\n\tfor ( i = 0; i < 17; i++ ) {\r\n\t\tf = FL[ i ];\r\n\t\td = v.slice( i, i + 1 );\r\n\t\tif ( i === 8 ) {\r\n\t\t\tcdv = d;\r\n\t\t}\r\n\t\tif ( !isNaN( d ) ) {\r\n\t\t\td *= f;\r\n\t\t} else {\r\n\t\t\tfor ( n = 0; n < LL.length; n++ ) {\r\n\t\t\t\tif ( d.toUpperCase() === LL[ n ] ) {\r\n\t\t\t\t\td = VL[ n ];\r\n\t\t\t\t\td *= f;\r\n\t\t\t\t\tif ( isNaN( cdv ) && n === 8 ) {\r\n\t\t\t\t\t\tcdv = LL[ n ];\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\trs += d;\r\n\t}\r\n\tcd = rs % 11;\r\n\tif ( cd === 10 ) {\r\n\t\tcd = \"X\";\r\n\t}\r\n\tif ( cd === cdv ) {\r\n\t\treturn true;\r\n\t}\r\n\treturn false;\r\n}, \"The specified vehicle identification number (VIN) is invalid.\" );\r\n\r\n$.validator.addMethod( \"zipcodeUS\", function( value, element ) {\r\n\treturn this.optional( element ) || /^\\d{5}(-\\d{4})?$/.test( value );\r\n}, \"The specified US ZIP Code is invalid\" );\r\n\r\n$.validator.addMethod( \"ziprange\", function( value, element ) {\r\n\treturn this.optional( element ) || /^90[2-5]\\d\\{2\\}-\\d{4}$/.test( value );\r\n}, \"Your ZIP-code must be in the range 902xx-xxxx to 905xx-xxxx\" );\r\nreturn $;\r\n}));",";(function (root, factory) {\r\n\tif (typeof exports === \"object\") {\r\n\t\t// CommonJS\r\n\t\tmodule.exports = exports = factory();\r\n\t}\r\n\telse if (typeof define === \"function\" && define.amd) {\r\n\t\t// AMD\r\n\t\tdefine([], factory);\r\n\t}\r\n\telse {\r\n\t\t// Global (browser)\r\n\t\troot.CryptoJS = factory();\r\n\t}\r\n}(this, function () {\r\n\r\n\t/**\r\n\t * CryptoJS core components.\r\n\t */\r\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\r\n\t /*\r\n\t * Local polyfil of Object.create\r\n\t */\r\n\t var create = Object.create || (function () {\r\n\t function F() {};\r\n\r\n\t return function (obj) {\r\n\t var subtype;\r\n\r\n\t F.prototype = obj;\r\n\r\n\t subtype = new F();\r\n\r\n\t F.prototype = null;\r\n\r\n\t return subtype;\r\n\t };\r\n\t }())\r\n\r\n\t /**\r\n\t * CryptoJS namespace.\r\n\t */\r\n\t var C = {};\r\n\r\n\t /**\r\n\t * Library namespace.\r\n\t */\r\n\t var C_lib = C.lib = {};\r\n\r\n\t /**\r\n\t * Base object for prototypal inheritance.\r\n\t */\r\n\t var Base = C_lib.Base = (function () {\r\n\r\n\r\n\t return {\r\n\t /**\r\n\t * Creates a new object that inherits from this object.\r\n\t *\r\n\t * @param {Object} overrides Properties to copy into the new object.\r\n\t *\r\n\t * @return {Object} The new object.\r\n\t *\r\n\t * @static\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var MyType = CryptoJS.lib.Base.extend({\r\n\t * field: 'value',\r\n\t *\r\n\t * method: function () {\r\n\t * }\r\n\t * });\r\n\t */\r\n\t extend: function (overrides) {\r\n\t // Spawn\r\n\t var subtype = create(this);\r\n\r\n\t // Augment\r\n\t if (overrides) {\r\n\t subtype.mixIn(overrides);\r\n\t }\r\n\r\n\t // Create default initializer\r\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\r\n\t subtype.init = function () {\r\n\t subtype.$super.init.apply(this, arguments);\r\n\t };\r\n\t }\r\n\r\n\t // Initializer's prototype is the subtype object\r\n\t subtype.init.prototype = subtype;\r\n\r\n\t // Reference supertype\r\n\t subtype.$super = this;\r\n\r\n\t return subtype;\r\n\t },\r\n\r\n\t /**\r\n\t * Extends this object and runs the init method.\r\n\t * Arguments to create() will be passed to init().\r\n\t *\r\n\t * @return {Object} The new object.\r\n\t *\r\n\t * @static\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var instance = MyType.create();\r\n\t */\r\n\t create: function () {\r\n\t var instance = this.extend();\r\n\t instance.init.apply(instance, arguments);\r\n\r\n\t return instance;\r\n\t },\r\n\r\n\t /**\r\n\t * Initializes a newly created object.\r\n\t * Override this method to add some logic when your objects are created.\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var MyType = CryptoJS.lib.Base.extend({\r\n\t * init: function () {\r\n\t * // ...\r\n\t * }\r\n\t * });\r\n\t */\r\n\t init: function () {\r\n\t },\r\n\r\n\t /**\r\n\t * Copies properties into this object.\r\n\t *\r\n\t * @param {Object} properties The properties to mix in.\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * MyType.mixIn({\r\n\t * field: 'value'\r\n\t * });\r\n\t */\r\n\t mixIn: function (properties) {\r\n\t for (var propertyName in properties) {\r\n\t if (properties.hasOwnProperty(propertyName)) {\r\n\t this[propertyName] = properties[propertyName];\r\n\t }\r\n\t }\r\n\r\n\t // IE won't copy toString using the loop above\r\n\t if (properties.hasOwnProperty('toString')) {\r\n\t this.toString = properties.toString;\r\n\t }\r\n\t },\r\n\r\n\t /**\r\n\t * Creates a copy of this object.\r\n\t *\r\n\t * @return {Object} The clone.\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var clone = instance.clone();\r\n\t */\r\n\t clone: function () {\r\n\t return this.init.prototype.extend(this);\r\n\t }\r\n\t };\r\n\t }());\r\n\r\n\t /**\r\n\t * An array of 32-bit words.\r\n\t *\r\n\t * @property {Array} words The array of 32-bit words.\r\n\t * @property {number} sigBytes The number of significant bytes in this word array.\r\n\t */\r\n\t var WordArray = C_lib.WordArray = Base.extend({\r\n\t /**\r\n\t * Initializes a newly created word array.\r\n\t *\r\n\t * @param {Array} words (Optional) An array of 32-bit words.\r\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var wordArray = CryptoJS.lib.WordArray.create();\r\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\r\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\r\n\t */\r\n\t init: function (words, sigBytes) {\r\n\t words = this.words = words || [];\r\n\r\n\t if (sigBytes != undefined) {\r\n\t this.sigBytes = sigBytes;\r\n\t } else {\r\n\t this.sigBytes = words.length * 4;\r\n\t }\r\n\t },\r\n\r\n\t /**\r\n\t * Converts this word array to a string.\r\n\t *\r\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\r\n\t *\r\n\t * @return {string} The stringified word array.\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var string = wordArray + '';\r\n\t * var string = wordArray.toString();\r\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\r\n\t */\r\n\t toString: function (encoder) {\r\n\t return (encoder || Hex).stringify(this);\r\n\t },\r\n\r\n\t /**\r\n\t * Concatenates a word array to this word array.\r\n\t *\r\n\t * @param {WordArray} wordArray The word array to append.\r\n\t *\r\n\t * @return {WordArray} This word array.\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * wordArray1.concat(wordArray2);\r\n\t */\r\n\t concat: function (wordArray) {\r\n\t // Shortcuts\r\n\t var thisWords = this.words;\r\n\t var thatWords = wordArray.words;\r\n\t var thisSigBytes = this.sigBytes;\r\n\t var thatSigBytes = wordArray.sigBytes;\r\n\r\n\t // Clamp excess bits\r\n\t this.clamp();\r\n\r\n\t // Concat\r\n\t if (thisSigBytes % 4) {\r\n\t // Copy one byte at a time\r\n\t for (var i = 0; i < thatSigBytes; i++) {\r\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\r\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\r\n\t }\r\n\t } else {\r\n\t // Copy one word at a time\r\n\t for (var i = 0; i < thatSigBytes; i += 4) {\r\n\t thisWords[(thisSigBytes + i) >>> 2] = thatWords[i >>> 2];\r\n\t }\r\n\t }\r\n\t this.sigBytes += thatSigBytes;\r\n\r\n\t // Chainable\r\n\t return this;\r\n\t },\r\n\r\n\t /**\r\n\t * Removes insignificant bits.\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * wordArray.clamp();\r\n\t */\r\n\t clamp: function () {\r\n\t // Shortcuts\r\n\t var words = this.words;\r\n\t var sigBytes = this.sigBytes;\r\n\r\n\t // Clamp\r\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\r\n\t words.length = Math.ceil(sigBytes / 4);\r\n\t },\r\n\r\n\t /**\r\n\t * Creates a copy of this word array.\r\n\t *\r\n\t * @return {WordArray} The clone.\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var clone = wordArray.clone();\r\n\t */\r\n\t clone: function () {\r\n\t var clone = Base.clone.call(this);\r\n\t clone.words = this.words.slice(0);\r\n\r\n\t return clone;\r\n\t },\r\n\r\n\t /**\r\n\t * Creates a word array filled with random bytes.\r\n\t *\r\n\t * @param {number} nBytes The number of random bytes to generate.\r\n\t *\r\n\t * @return {WordArray} The random word array.\r\n\t *\r\n\t * @static\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\r\n\t */\r\n\t random: function (nBytes) {\r\n\t var words = [];\r\n\r\n\t var r = (function (m_w) {\r\n\t var m_w = m_w;\r\n\t var m_z = 0x3ade68b1;\r\n\t var mask = 0xffffffff;\r\n\r\n\t return function () {\r\n\t m_z = (0x9069 * (m_z & 0xFFFF) + (m_z >> 0x10)) & mask;\r\n\t m_w = (0x4650 * (m_w & 0xFFFF) + (m_w >> 0x10)) & mask;\r\n\t var result = ((m_z << 0x10) + m_w) & mask;\r\n\t result /= 0x100000000;\r\n\t result += 0.5;\r\n\t return result * (Math.random() > .5 ? 1 : -1);\r\n\t }\r\n\t });\r\n\r\n\t for (var i = 0, rcache; i < nBytes; i += 4) {\r\n\t var _r = r((rcache || Math.random()) * 0x100000000);\r\n\r\n\t rcache = _r() * 0x3ade67b7;\r\n\t words.push((_r() * 0x100000000) | 0);\r\n\t }\r\n\r\n\t return new WordArray.init(words, nBytes);\r\n\t }\r\n\t });\r\n\r\n\t /**\r\n\t * Encoder namespace.\r\n\t */\r\n\t var C_enc = C.enc = {};\r\n\r\n\t /**\r\n\t * Hex encoding strategy.\r\n\t */\r\n\t var Hex = C_enc.Hex = {\r\n\t /**\r\n\t * Converts a word array to a hex string.\r\n\t *\r\n\t * @param {WordArray} wordArray The word array.\r\n\t *\r\n\t * @return {string} The hex string.\r\n\t *\r\n\t * @static\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\r\n\t */\r\n\t stringify: function (wordArray) {\r\n\t // Shortcuts\r\n\t var words = wordArray.words;\r\n\t var sigBytes = wordArray.sigBytes;\r\n\r\n\t // Convert\r\n\t var hexChars = [];\r\n\t for (var i = 0; i < sigBytes; i++) {\r\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\r\n\t hexChars.push((bite >>> 4).toString(16));\r\n\t hexChars.push((bite & 0x0f).toString(16));\r\n\t }\r\n\r\n\t return hexChars.join('');\r\n\t },\r\n\r\n\t /**\r\n\t * Converts a hex string to a word array.\r\n\t *\r\n\t * @param {string} hexStr The hex string.\r\n\t *\r\n\t * @return {WordArray} The word array.\r\n\t *\r\n\t * @static\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\r\n\t */\r\n\t parse: function (hexStr) {\r\n\t // Shortcut\r\n\t var hexStrLength = hexStr.length;\r\n\r\n\t // Convert\r\n\t var words = [];\r\n\t for (var i = 0; i < hexStrLength; i += 2) {\r\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\r\n\t }\r\n\r\n\t return new WordArray.init(words, hexStrLength / 2);\r\n\t }\r\n\t };\r\n\r\n\t /**\r\n\t * Latin1 encoding strategy.\r\n\t */\r\n\t var Latin1 = C_enc.Latin1 = {\r\n\t /**\r\n\t * Converts a word array to a Latin1 string.\r\n\t *\r\n\t * @param {WordArray} wordArray The word array.\r\n\t *\r\n\t * @return {string} The Latin1 string.\r\n\t *\r\n\t * @static\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\r\n\t */\r\n\t stringify: function (wordArray) {\r\n\t // Shortcuts\r\n\t var words = wordArray.words;\r\n\t var sigBytes = wordArray.sigBytes;\r\n\r\n\t // Convert\r\n\t var latin1Chars = [];\r\n\t for (var i = 0; i < sigBytes; i++) {\r\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\r\n\t latin1Chars.push(String.fromCharCode(bite));\r\n\t }\r\n\r\n\t return latin1Chars.join('');\r\n\t },\r\n\r\n\t /**\r\n\t * Converts a Latin1 string to a word array.\r\n\t *\r\n\t * @param {string} latin1Str The Latin1 string.\r\n\t *\r\n\t * @return {WordArray} The word array.\r\n\t *\r\n\t * @static\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\r\n\t */\r\n\t parse: function (latin1Str) {\r\n\t // Shortcut\r\n\t var latin1StrLength = latin1Str.length;\r\n\r\n\t // Convert\r\n\t var words = [];\r\n\t for (var i = 0; i < latin1StrLength; i++) {\r\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\r\n\t }\r\n\r\n\t return new WordArray.init(words, latin1StrLength);\r\n\t }\r\n\t };\r\n\r\n\t /**\r\n\t * UTF-8 encoding strategy.\r\n\t */\r\n\t var Utf8 = C_enc.Utf8 = {\r\n\t /**\r\n\t * Converts a word array to a UTF-8 string.\r\n\t *\r\n\t * @param {WordArray} wordArray The word array.\r\n\t *\r\n\t * @return {string} The UTF-8 string.\r\n\t *\r\n\t * @static\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\r\n\t */\r\n\t stringify: function (wordArray) {\r\n\t try {\r\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\r\n\t } catch (e) {\r\n\t throw new Error('Malformed UTF-8 data');\r\n\t }\r\n\t },\r\n\r\n\t /**\r\n\t * Converts a UTF-8 string to a word array.\r\n\t *\r\n\t * @param {string} utf8Str The UTF-8 string.\r\n\t *\r\n\t * @return {WordArray} The word array.\r\n\t *\r\n\t * @static\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\r\n\t */\r\n\t parse: function (utf8Str) {\r\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\r\n\t }\r\n\t };\r\n\r\n\t /**\r\n\t * Abstract buffered block algorithm template.\r\n\t *\r\n\t * The property blockSize must be implemented in a concrete subtype.\r\n\t *\r\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\r\n\t */\r\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\r\n\t /**\r\n\t * Resets this block algorithm's data buffer to its initial state.\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * bufferedBlockAlgorithm.reset();\r\n\t */\r\n\t reset: function () {\r\n\t // Initial values\r\n\t this._data = new WordArray.init();\r\n\t this._nDataBytes = 0;\r\n\t },\r\n\r\n\t /**\r\n\t * Adds new data to this block algorithm's buffer.\r\n\t *\r\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * bufferedBlockAlgorithm._append('data');\r\n\t * bufferedBlockAlgorithm._append(wordArray);\r\n\t */\r\n\t _append: function (data) {\r\n\t // Convert string to WordArray, else assume WordArray already\r\n\t if (typeof data == 'string') {\r\n\t data = Utf8.parse(data);\r\n\t }\r\n\r\n\t // Append\r\n\t this._data.concat(data);\r\n\t this._nDataBytes += data.sigBytes;\r\n\t },\r\n\r\n\t /**\r\n\t * Processes available data blocks.\r\n\t *\r\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\r\n\t *\r\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\r\n\t *\r\n\t * @return {WordArray} The processed data.\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var processedData = bufferedBlockAlgorithm._process();\r\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\r\n\t */\r\n\t _process: function (doFlush) {\r\n\t // Shortcuts\r\n\t var data = this._data;\r\n\t var dataWords = data.words;\r\n\t var dataSigBytes = data.sigBytes;\r\n\t var blockSize = this.blockSize;\r\n\t var blockSizeBytes = blockSize * 4;\r\n\r\n\t // Count blocks ready\r\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\r\n\t if (doFlush) {\r\n\t // Round up to include partial blocks\r\n\t nBlocksReady = Math.ceil(nBlocksReady);\r\n\t } else {\r\n\t // Round down to include only full blocks,\r\n\t // less the number of blocks that must remain in the buffer\r\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\r\n\t }\r\n\r\n\t // Count words ready\r\n\t var nWordsReady = nBlocksReady * blockSize;\r\n\r\n\t // Count bytes ready\r\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\r\n\r\n\t // Process blocks\r\n\t if (nWordsReady) {\r\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\r\n\t // Perform concrete-algorithm logic\r\n\t this._doProcessBlock(dataWords, offset);\r\n\t }\r\n\r\n\t // Remove processed words\r\n\t var processedWords = dataWords.splice(0, nWordsReady);\r\n\t data.sigBytes -= nBytesReady;\r\n\t }\r\n\r\n\t // Return processed words\r\n\t return new WordArray.init(processedWords, nBytesReady);\r\n\t },\r\n\r\n\t /**\r\n\t * Creates a copy of this object.\r\n\t *\r\n\t * @return {Object} The clone.\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var clone = bufferedBlockAlgorithm.clone();\r\n\t */\r\n\t clone: function () {\r\n\t var clone = Base.clone.call(this);\r\n\t clone._data = this._data.clone();\r\n\r\n\t return clone;\r\n\t },\r\n\r\n\t _minBufferSize: 0\r\n\t });\r\n\r\n\t /**\r\n\t * Abstract hasher template.\r\n\t *\r\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\r\n\t */\r\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\r\n\t /**\r\n\t * Configuration options.\r\n\t */\r\n\t cfg: Base.extend(),\r\n\r\n\t /**\r\n\t * Initializes a newly created hasher.\r\n\t *\r\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var hasher = CryptoJS.algo.SHA256.create();\r\n\t */\r\n\t init: function (cfg) {\r\n\t // Apply config defaults\r\n\t this.cfg = this.cfg.extend(cfg);\r\n\r\n\t // Set initial values\r\n\t this.reset();\r\n\t },\r\n\r\n\t /**\r\n\t * Resets this hasher to its initial state.\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * hasher.reset();\r\n\t */\r\n\t reset: function () {\r\n\t // Reset data buffer\r\n\t BufferedBlockAlgorithm.reset.call(this);\r\n\r\n\t // Perform concrete-hasher logic\r\n\t this._doReset();\r\n\t },\r\n\r\n\t /**\r\n\t * Updates this hasher with a message.\r\n\t *\r\n\t * @param {WordArray|string} messageUpdate The message to append.\r\n\t *\r\n\t * @return {Hasher} This hasher.\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * hasher.update('message');\r\n\t * hasher.update(wordArray);\r\n\t */\r\n\t update: function (messageUpdate) {\r\n\t // Append\r\n\t this._append(messageUpdate);\r\n\r\n\t // Update the hash\r\n\t this._process();\r\n\r\n\t // Chainable\r\n\t return this;\r\n\t },\r\n\r\n\t /**\r\n\t * Finalizes the hash computation.\r\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\r\n\t *\r\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\r\n\t *\r\n\t * @return {WordArray} The hash.\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var hash = hasher.finalize();\r\n\t * var hash = hasher.finalize('message');\r\n\t * var hash = hasher.finalize(wordArray);\r\n\t */\r\n\t finalize: function (messageUpdate) {\r\n\t // Final message update\r\n\t if (messageUpdate) {\r\n\t this._append(messageUpdate);\r\n\t }\r\n\r\n\t // Perform concrete-hasher logic\r\n\t var hash = this._doFinalize();\r\n\r\n\t return hash;\r\n\t },\r\n\r\n\t blockSize: 512/32,\r\n\r\n\t /**\r\n\t * Creates a shortcut function to a hasher's object interface.\r\n\t *\r\n\t * @param {Hasher} hasher The hasher to create a helper for.\r\n\t *\r\n\t * @return {Function} The shortcut function.\r\n\t *\r\n\t * @static\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\r\n\t */\r\n\t _createHelper: function (hasher) {\r\n\t return function (message, cfg) {\r\n\t return new hasher.init(cfg).finalize(message);\r\n\t };\r\n\t },\r\n\r\n\t /**\r\n\t * Creates a shortcut function to the HMAC's object interface.\r\n\t *\r\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\r\n\t *\r\n\t * @return {Function} The shortcut function.\r\n\t *\r\n\t * @static\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\r\n\t */\r\n\t _createHmacHelper: function (hasher) {\r\n\t return function (message, key) {\r\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\r\n\t };\r\n\t }\r\n\t });\r\n\r\n\t /**\r\n\t * Algorithm namespace.\r\n\t */\r\n\t var C_algo = C.algo = {};\r\n\r\n\t return C;\r\n\t}(Math));\r\n\r\n\r\n\t(function () {\r\n\t // Shortcuts\r\n\t var C = CryptoJS;\r\n\t var C_lib = C.lib;\r\n\t var WordArray = C_lib.WordArray;\r\n\t var C_enc = C.enc;\r\n\r\n\t /**\r\n\t * Base64 encoding strategy.\r\n\t */\r\n\t var Base64 = C_enc.Base64 = {\r\n\t /**\r\n\t * Converts a word array to a Base64 string.\r\n\t *\r\n\t * @param {WordArray} wordArray The word array.\r\n\t *\r\n\t * @return {string} The Base64 string.\r\n\t *\r\n\t * @static\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\r\n\t */\r\n\t stringify: function (wordArray) {\r\n\t // Shortcuts\r\n\t var words = wordArray.words;\r\n\t var sigBytes = wordArray.sigBytes;\r\n\t var map = this._map;\r\n\r\n\t // Clamp excess bits\r\n\t wordArray.clamp();\r\n\r\n\t // Convert\r\n\t var base64Chars = [];\r\n\t for (var i = 0; i < sigBytes; i += 3) {\r\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\r\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\r\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\r\n\r\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\r\n\r\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\r\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\r\n\t }\r\n\t }\r\n\r\n\t // Add padding\r\n\t var paddingChar = map.charAt(64);\r\n\t if (paddingChar) {\r\n\t while (base64Chars.length % 4) {\r\n\t base64Chars.push(paddingChar);\r\n\t }\r\n\t }\r\n\r\n\t return base64Chars.join('');\r\n\t },\r\n\r\n\t /**\r\n\t * Converts a Base64 string to a word array.\r\n\t *\r\n\t * @param {string} base64Str The Base64 string.\r\n\t *\r\n\t * @return {WordArray} The word array.\r\n\t *\r\n\t * @static\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var wordArray = CryptoJS.enc.Base64.parse(base64String);\r\n\t */\r\n\t parse: function (base64Str) {\r\n\t // Shortcuts\r\n\t var base64StrLength = base64Str.length;\r\n\t var map = this._map;\r\n\t var reverseMap = this._reverseMap;\r\n\r\n\t if (!reverseMap) {\r\n\t reverseMap = this._reverseMap = [];\r\n\t for (var j = 0; j < map.length; j++) {\r\n\t reverseMap[map.charCodeAt(j)] = j;\r\n\t }\r\n\t }\r\n\r\n\t // Ignore padding\r\n\t var paddingChar = map.charAt(64);\r\n\t if (paddingChar) {\r\n\t var paddingIndex = base64Str.indexOf(paddingChar);\r\n\t if (paddingIndex !== -1) {\r\n\t base64StrLength = paddingIndex;\r\n\t }\r\n\t }\r\n\r\n\t // Convert\r\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\r\n\r\n\t },\r\n\r\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\r\n\t };\r\n\r\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\r\n\t var words = [];\r\n\t var nBytes = 0;\r\n\t for (var i = 0; i < base64StrLength; i++) {\r\n\t if (i % 4) {\r\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\r\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\r\n\t words[nBytes >>> 2] |= (bits1 | bits2) << (24 - (nBytes % 4) * 8);\r\n\t nBytes++;\r\n\t }\r\n\t }\r\n\t return WordArray.create(words, nBytes);\r\n\t }\r\n\t}());\r\n\r\n\r\n\t(function (Math) {\r\n\t // Shortcuts\r\n\t var C = CryptoJS;\r\n\t var C_lib = C.lib;\r\n\t var WordArray = C_lib.WordArray;\r\n\t var Hasher = C_lib.Hasher;\r\n\t var C_algo = C.algo;\r\n\r\n\t // Constants table\r\n\t var T = [];\r\n\r\n\t // Compute constants\r\n\t (function () {\r\n\t for (var i = 0; i < 64; i++) {\r\n\t T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\r\n\t }\r\n\t }());\r\n\r\n\t /**\r\n\t * MD5 hash algorithm.\r\n\t */\r\n\t var MD5 = C_algo.MD5 = Hasher.extend({\r\n\t _doReset: function () {\r\n\t this._hash = new WordArray.init([\r\n\t 0x67452301, 0xefcdab89,\r\n\t 0x98badcfe, 0x10325476\r\n\t ]);\r\n\t },\r\n\r\n\t _doProcessBlock: function (M, offset) {\r\n\t // Swap endian\r\n\t for (var i = 0; i < 16; i++) {\r\n\t // Shortcuts\r\n\t var offset_i = offset + i;\r\n\t var M_offset_i = M[offset_i];\r\n\r\n\t M[offset_i] = (\r\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\r\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\r\n\t );\r\n\t }\r\n\r\n\t // Shortcuts\r\n\t var H = this._hash.words;\r\n\r\n\t var M_offset_0 = M[offset + 0];\r\n\t var M_offset_1 = M[offset + 1];\r\n\t var M_offset_2 = M[offset + 2];\r\n\t var M_offset_3 = M[offset + 3];\r\n\t var M_offset_4 = M[offset + 4];\r\n\t var M_offset_5 = M[offset + 5];\r\n\t var M_offset_6 = M[offset + 6];\r\n\t var M_offset_7 = M[offset + 7];\r\n\t var M_offset_8 = M[offset + 8];\r\n\t var M_offset_9 = M[offset + 9];\r\n\t var M_offset_10 = M[offset + 10];\r\n\t var M_offset_11 = M[offset + 11];\r\n\t var M_offset_12 = M[offset + 12];\r\n\t var M_offset_13 = M[offset + 13];\r\n\t var M_offset_14 = M[offset + 14];\r\n\t var M_offset_15 = M[offset + 15];\r\n\r\n\t // Working varialbes\r\n\t var a = H[0];\r\n\t var b = H[1];\r\n\t var c = H[2];\r\n\t var d = H[3];\r\n\r\n\t // Computation\r\n\t a = FF(a, b, c, d, M_offset_0, 7, T[0]);\r\n\t d = FF(d, a, b, c, M_offset_1, 12, T[1]);\r\n\t c = FF(c, d, a, b, M_offset_2, 17, T[2]);\r\n\t b = FF(b, c, d, a, M_offset_3, 22, T[3]);\r\n\t a = FF(a, b, c, d, M_offset_4, 7, T[4]);\r\n\t d = FF(d, a, b, c, M_offset_5, 12, T[5]);\r\n\t c = FF(c, d, a, b, M_offset_6, 17, T[6]);\r\n\t b = FF(b, c, d, a, M_offset_7, 22, T[7]);\r\n\t a = FF(a, b, c, d, M_offset_8, 7, T[8]);\r\n\t d = FF(d, a, b, c, M_offset_9, 12, T[9]);\r\n\t c = FF(c, d, a, b, M_offset_10, 17, T[10]);\r\n\t b = FF(b, c, d, a, M_offset_11, 22, T[11]);\r\n\t a = FF(a, b, c, d, M_offset_12, 7, T[12]);\r\n\t d = FF(d, a, b, c, M_offset_13, 12, T[13]);\r\n\t c = FF(c, d, a, b, M_offset_14, 17, T[14]);\r\n\t b = FF(b, c, d, a, M_offset_15, 22, T[15]);\r\n\r\n\t a = GG(a, b, c, d, M_offset_1, 5, T[16]);\r\n\t d = GG(d, a, b, c, M_offset_6, 9, T[17]);\r\n\t c = GG(c, d, a, b, M_offset_11, 14, T[18]);\r\n\t b = GG(b, c, d, a, M_offset_0, 20, T[19]);\r\n\t a = GG(a, b, c, d, M_offset_5, 5, T[20]);\r\n\t d = GG(d, a, b, c, M_offset_10, 9, T[21]);\r\n\t c = GG(c, d, a, b, M_offset_15, 14, T[22]);\r\n\t b = GG(b, c, d, a, M_offset_4, 20, T[23]);\r\n\t a = GG(a, b, c, d, M_offset_9, 5, T[24]);\r\n\t d = GG(d, a, b, c, M_offset_14, 9, T[25]);\r\n\t c = GG(c, d, a, b, M_offset_3, 14, T[26]);\r\n\t b = GG(b, c, d, a, M_offset_8, 20, T[27]);\r\n\t a = GG(a, b, c, d, M_offset_13, 5, T[28]);\r\n\t d = GG(d, a, b, c, M_offset_2, 9, T[29]);\r\n\t c = GG(c, d, a, b, M_offset_7, 14, T[30]);\r\n\t b = GG(b, c, d, a, M_offset_12, 20, T[31]);\r\n\r\n\t a = HH(a, b, c, d, M_offset_5, 4, T[32]);\r\n\t d = HH(d, a, b, c, M_offset_8, 11, T[33]);\r\n\t c = HH(c, d, a, b, M_offset_11, 16, T[34]);\r\n\t b = HH(b, c, d, a, M_offset_14, 23, T[35]);\r\n\t a = HH(a, b, c, d, M_offset_1, 4, T[36]);\r\n\t d = HH(d, a, b, c, M_offset_4, 11, T[37]);\r\n\t c = HH(c, d, a, b, M_offset_7, 16, T[38]);\r\n\t b = HH(b, c, d, a, M_offset_10, 23, T[39]);\r\n\t a = HH(a, b, c, d, M_offset_13, 4, T[40]);\r\n\t d = HH(d, a, b, c, M_offset_0, 11, T[41]);\r\n\t c = HH(c, d, a, b, M_offset_3, 16, T[42]);\r\n\t b = HH(b, c, d, a, M_offset_6, 23, T[43]);\r\n\t a = HH(a, b, c, d, M_offset_9, 4, T[44]);\r\n\t d = HH(d, a, b, c, M_offset_12, 11, T[45]);\r\n\t c = HH(c, d, a, b, M_offset_15, 16, T[46]);\r\n\t b = HH(b, c, d, a, M_offset_2, 23, T[47]);\r\n\r\n\t a = II(a, b, c, d, M_offset_0, 6, T[48]);\r\n\t d = II(d, a, b, c, M_offset_7, 10, T[49]);\r\n\t c = II(c, d, a, b, M_offset_14, 15, T[50]);\r\n\t b = II(b, c, d, a, M_offset_5, 21, T[51]);\r\n\t a = II(a, b, c, d, M_offset_12, 6, T[52]);\r\n\t d = II(d, a, b, c, M_offset_3, 10, T[53]);\r\n\t c = II(c, d, a, b, M_offset_10, 15, T[54]);\r\n\t b = II(b, c, d, a, M_offset_1, 21, T[55]);\r\n\t a = II(a, b, c, d, M_offset_8, 6, T[56]);\r\n\t d = II(d, a, b, c, M_offset_15, 10, T[57]);\r\n\t c = II(c, d, a, b, M_offset_6, 15, T[58]);\r\n\t b = II(b, c, d, a, M_offset_13, 21, T[59]);\r\n\t a = II(a, b, c, d, M_offset_4, 6, T[60]);\r\n\t d = II(d, a, b, c, M_offset_11, 10, T[61]);\r\n\t c = II(c, d, a, b, M_offset_2, 15, T[62]);\r\n\t b = II(b, c, d, a, M_offset_9, 21, T[63]);\r\n\r\n\t // Intermediate hash value\r\n\t H[0] = (H[0] + a) | 0;\r\n\t H[1] = (H[1] + b) | 0;\r\n\t H[2] = (H[2] + c) | 0;\r\n\t H[3] = (H[3] + d) | 0;\r\n\t },\r\n\r\n\t _doFinalize: function () {\r\n\t // Shortcuts\r\n\t var data = this._data;\r\n\t var dataWords = data.words;\r\n\r\n\t var nBitsTotal = this._nDataBytes * 8;\r\n\t var nBitsLeft = data.sigBytes * 8;\r\n\r\n\t // Add padding\r\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\r\n\r\n\t var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\r\n\t var nBitsTotalL = nBitsTotal;\r\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\r\n\t (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\r\n\t (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)\r\n\t );\r\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\r\n\t (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\r\n\t (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)\r\n\t );\r\n\r\n\t data.sigBytes = (dataWords.length + 1) * 4;\r\n\r\n\t // Hash final blocks\r\n\t this._process();\r\n\r\n\t // Shortcuts\r\n\t var hash = this._hash;\r\n\t var H = hash.words;\r\n\r\n\t // Swap endian\r\n\t for (var i = 0; i < 4; i++) {\r\n\t // Shortcut\r\n\t var H_i = H[i];\r\n\r\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\r\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\r\n\t }\r\n\r\n\t // Return final computed hash\r\n\t return hash;\r\n\t },\r\n\r\n\t clone: function () {\r\n\t var clone = Hasher.clone.call(this);\r\n\t clone._hash = this._hash.clone();\r\n\r\n\t return clone;\r\n\t }\r\n\t });\r\n\r\n\t function FF(a, b, c, d, x, s, t) {\r\n\t var n = a + ((b & c) | (~b & d)) + x + t;\r\n\t return ((n << s) | (n >>> (32 - s))) + b;\r\n\t }\r\n\r\n\t function GG(a, b, c, d, x, s, t) {\r\n\t var n = a + ((b & d) | (c & ~d)) + x + t;\r\n\t return ((n << s) | (n >>> (32 - s))) + b;\r\n\t }\r\n\r\n\t function HH(a, b, c, d, x, s, t) {\r\n\t var n = a + (b ^ c ^ d) + x + t;\r\n\t return ((n << s) | (n >>> (32 - s))) + b;\r\n\t }\r\n\r\n\t function II(a, b, c, d, x, s, t) {\r\n\t var n = a + (c ^ (b | ~d)) + x + t;\r\n\t return ((n << s) | (n >>> (32 - s))) + b;\r\n\t }\r\n\r\n\t /**\r\n\t * Shortcut function to the hasher's object interface.\r\n\t *\r\n\t * @param {WordArray|string} message The message to hash.\r\n\t *\r\n\t * @return {WordArray} The hash.\r\n\t *\r\n\t * @static\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var hash = CryptoJS.MD5('message');\r\n\t * var hash = CryptoJS.MD5(wordArray);\r\n\t */\r\n\t C.MD5 = Hasher._createHelper(MD5);\r\n\r\n\t /**\r\n\t * Shortcut function to the HMAC's object interface.\r\n\t *\r\n\t * @param {WordArray|string} message The message to hash.\r\n\t * @param {WordArray|string} key The secret key.\r\n\t *\r\n\t * @return {WordArray} The HMAC.\r\n\t *\r\n\t * @static\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var hmac = CryptoJS.HmacMD5(message, key);\r\n\t */\r\n\t C.HmacMD5 = Hasher._createHmacHelper(MD5);\r\n\t}(Math));\r\n\r\n\r\n\t(function () {\r\n\t // Shortcuts\r\n\t var C = CryptoJS;\r\n\t var C_lib = C.lib;\r\n\t var WordArray = C_lib.WordArray;\r\n\t var Hasher = C_lib.Hasher;\r\n\t var C_algo = C.algo;\r\n\r\n\t // Reusable object\r\n\t var W = [];\r\n\r\n\t /**\r\n\t * SHA-1 hash algorithm.\r\n\t */\r\n\t var SHA1 = C_algo.SHA1 = Hasher.extend({\r\n\t _doReset: function () {\r\n\t this._hash = new WordArray.init([\r\n\t 0x67452301, 0xefcdab89,\r\n\t 0x98badcfe, 0x10325476,\r\n\t 0xc3d2e1f0\r\n\t ]);\r\n\t },\r\n\r\n\t _doProcessBlock: function (M, offset) {\r\n\t // Shortcut\r\n\t var H = this._hash.words;\r\n\r\n\t // Working variables\r\n\t var a = H[0];\r\n\t var b = H[1];\r\n\t var c = H[2];\r\n\t var d = H[3];\r\n\t var e = H[4];\r\n\r\n\t // Computation\r\n\t for (var i = 0; i < 80; i++) {\r\n\t if (i < 16) {\r\n\t W[i] = M[offset + i] | 0;\r\n\t } else {\r\n\t var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\r\n\t W[i] = (n << 1) | (n >>> 31);\r\n\t }\r\n\r\n\t var t = ((a << 5) | (a >>> 27)) + e + W[i];\r\n\t if (i < 20) {\r\n\t t += ((b & c) | (~b & d)) + 0x5a827999;\r\n\t } else if (i < 40) {\r\n\t t += (b ^ c ^ d) + 0x6ed9eba1;\r\n\t } else if (i < 60) {\r\n\t t += ((b & c) | (b & d) | (c & d)) - 0x70e44324;\r\n\t } else /* if (i < 80) */ {\r\n\t t += (b ^ c ^ d) - 0x359d3e2a;\r\n\t }\r\n\r\n\t e = d;\r\n\t d = c;\r\n\t c = (b << 30) | (b >>> 2);\r\n\t b = a;\r\n\t a = t;\r\n\t }\r\n\r\n\t // Intermediate hash value\r\n\t H[0] = (H[0] + a) | 0;\r\n\t H[1] = (H[1] + b) | 0;\r\n\t H[2] = (H[2] + c) | 0;\r\n\t H[3] = (H[3] + d) | 0;\r\n\t H[4] = (H[4] + e) | 0;\r\n\t },\r\n\r\n\t _doFinalize: function () {\r\n\t // Shortcuts\r\n\t var data = this._data;\r\n\t var dataWords = data.words;\r\n\r\n\t var nBitsTotal = this._nDataBytes * 8;\r\n\t var nBitsLeft = data.sigBytes * 8;\r\n\r\n\t // Add padding\r\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\r\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\r\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\r\n\t data.sigBytes = dataWords.length * 4;\r\n\r\n\t // Hash final blocks\r\n\t this._process();\r\n\r\n\t // Return final computed hash\r\n\t return this._hash;\r\n\t },\r\n\r\n\t clone: function () {\r\n\t var clone = Hasher.clone.call(this);\r\n\t clone._hash = this._hash.clone();\r\n\r\n\t return clone;\r\n\t }\r\n\t });\r\n\r\n\t /**\r\n\t * Shortcut function to the hasher's object interface.\r\n\t *\r\n\t * @param {WordArray|string} message The message to hash.\r\n\t *\r\n\t * @return {WordArray} The hash.\r\n\t *\r\n\t * @static\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var hash = CryptoJS.SHA1('message');\r\n\t * var hash = CryptoJS.SHA1(wordArray);\r\n\t */\r\n\t C.SHA1 = Hasher._createHelper(SHA1);\r\n\r\n\t /**\r\n\t * Shortcut function to the HMAC's object interface.\r\n\t *\r\n\t * @param {WordArray|string} message The message to hash.\r\n\t * @param {WordArray|string} key The secret key.\r\n\t *\r\n\t * @return {WordArray} The HMAC.\r\n\t *\r\n\t * @static\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var hmac = CryptoJS.HmacSHA1(message, key);\r\n\t */\r\n\t C.HmacSHA1 = Hasher._createHmacHelper(SHA1);\r\n\t}());\r\n\r\n\r\n\t(function (Math) {\r\n\t // Shortcuts\r\n\t var C = CryptoJS;\r\n\t var C_lib = C.lib;\r\n\t var WordArray = C_lib.WordArray;\r\n\t var Hasher = C_lib.Hasher;\r\n\t var C_algo = C.algo;\r\n\r\n\t // Initialization and round constants tables\r\n\t var H = [];\r\n\t var K = [];\r\n\r\n\t // Compute constants\r\n\t (function () {\r\n\t function isPrime(n) {\r\n\t var sqrtN = Math.sqrt(n);\r\n\t for (var factor = 2; factor <= sqrtN; factor++) {\r\n\t if (!(n % factor)) {\r\n\t return false;\r\n\t }\r\n\t }\r\n\r\n\t return true;\r\n\t }\r\n\r\n\t function getFractionalBits(n) {\r\n\t return ((n - (n | 0)) * 0x100000000) | 0;\r\n\t }\r\n\r\n\t var n = 2;\r\n\t var nPrime = 0;\r\n\t while (nPrime < 64) {\r\n\t if (isPrime(n)) {\r\n\t if (nPrime < 8) {\r\n\t H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));\r\n\t }\r\n\t K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));\r\n\r\n\t nPrime++;\r\n\t }\r\n\r\n\t n++;\r\n\t }\r\n\t }());\r\n\r\n\t // Reusable object\r\n\t var W = [];\r\n\r\n\t /**\r\n\t * SHA-256 hash algorithm.\r\n\t */\r\n\t var SHA256 = C_algo.SHA256 = Hasher.extend({\r\n\t _doReset: function () {\r\n\t this._hash = new WordArray.init(H.slice(0));\r\n\t },\r\n\r\n\t _doProcessBlock: function (M, offset) {\r\n\t // Shortcut\r\n\t var H = this._hash.words;\r\n\r\n\t // Working variables\r\n\t var a = H[0];\r\n\t var b = H[1];\r\n\t var c = H[2];\r\n\t var d = H[3];\r\n\t var e = H[4];\r\n\t var f = H[5];\r\n\t var g = H[6];\r\n\t var h = H[7];\r\n\r\n\t // Computation\r\n\t for (var i = 0; i < 64; i++) {\r\n\t if (i < 16) {\r\n\t W[i] = M[offset + i] | 0;\r\n\t } else {\r\n\t var gamma0x = W[i - 15];\r\n\t var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^\r\n\t ((gamma0x << 14) | (gamma0x >>> 18)) ^\r\n\t (gamma0x >>> 3);\r\n\r\n\t var gamma1x = W[i - 2];\r\n\t var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^\r\n\t ((gamma1x << 13) | (gamma1x >>> 19)) ^\r\n\t (gamma1x >>> 10);\r\n\r\n\t W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\r\n\t }\r\n\r\n\t var ch = (e & f) ^ (~e & g);\r\n\t var maj = (a & b) ^ (a & c) ^ (b & c);\r\n\r\n\t var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));\r\n\t var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25));\r\n\r\n\t var t1 = h + sigma1 + ch + K[i] + W[i];\r\n\t var t2 = sigma0 + maj;\r\n\r\n\t h = g;\r\n\t g = f;\r\n\t f = e;\r\n\t e = (d + t1) | 0;\r\n\t d = c;\r\n\t c = b;\r\n\t b = a;\r\n\t a = (t1 + t2) | 0;\r\n\t }\r\n\r\n\t // Intermediate hash value\r\n\t H[0] = (H[0] + a) | 0;\r\n\t H[1] = (H[1] + b) | 0;\r\n\t H[2] = (H[2] + c) | 0;\r\n\t H[3] = (H[3] + d) | 0;\r\n\t H[4] = (H[4] + e) | 0;\r\n\t H[5] = (H[5] + f) | 0;\r\n\t H[6] = (H[6] + g) | 0;\r\n\t H[7] = (H[7] + h) | 0;\r\n\t },\r\n\r\n\t _doFinalize: function () {\r\n\t // Shortcuts\r\n\t var data = this._data;\r\n\t var dataWords = data.words;\r\n\r\n\t var nBitsTotal = this._nDataBytes * 8;\r\n\t var nBitsLeft = data.sigBytes * 8;\r\n\r\n\t // Add padding\r\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\r\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\r\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\r\n\t data.sigBytes = dataWords.length * 4;\r\n\r\n\t // Hash final blocks\r\n\t this._process();\r\n\r\n\t // Return final computed hash\r\n\t return this._hash;\r\n\t },\r\n\r\n\t clone: function () {\r\n\t var clone = Hasher.clone.call(this);\r\n\t clone._hash = this._hash.clone();\r\n\r\n\t return clone;\r\n\t }\r\n\t });\r\n\r\n\t /**\r\n\t * Shortcut function to the hasher's object interface.\r\n\t *\r\n\t * @param {WordArray|string} message The message to hash.\r\n\t *\r\n\t * @return {WordArray} The hash.\r\n\t *\r\n\t * @static\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var hash = CryptoJS.SHA256('message');\r\n\t * var hash = CryptoJS.SHA256(wordArray);\r\n\t */\r\n\t C.SHA256 = Hasher._createHelper(SHA256);\r\n\r\n\t /**\r\n\t * Shortcut function to the HMAC's object interface.\r\n\t *\r\n\t * @param {WordArray|string} message The message to hash.\r\n\t * @param {WordArray|string} key The secret key.\r\n\t *\r\n\t * @return {WordArray} The HMAC.\r\n\t *\r\n\t * @static\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var hmac = CryptoJS.HmacSHA256(message, key);\r\n\t */\r\n\t C.HmacSHA256 = Hasher._createHmacHelper(SHA256);\r\n\t}(Math));\r\n\r\n\r\n\t(function () {\r\n\t // Shortcuts\r\n\t var C = CryptoJS;\r\n\t var C_lib = C.lib;\r\n\t var WordArray = C_lib.WordArray;\r\n\t var C_enc = C.enc;\r\n\r\n\t /**\r\n\t * UTF-16 BE encoding strategy.\r\n\t */\r\n\t var Utf16BE = C_enc.Utf16 = C_enc.Utf16BE = {\r\n\t /**\r\n\t * Converts a word array to a UTF-16 BE string.\r\n\t *\r\n\t * @param {WordArray} wordArray The word array.\r\n\t *\r\n\t * @return {string} The UTF-16 BE string.\r\n\t *\r\n\t * @static\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var utf16String = CryptoJS.enc.Utf16.stringify(wordArray);\r\n\t */\r\n\t stringify: function (wordArray) {\r\n\t // Shortcuts\r\n\t var words = wordArray.words;\r\n\t var sigBytes = wordArray.sigBytes;\r\n\r\n\t // Convert\r\n\t var utf16Chars = [];\r\n\t for (var i = 0; i < sigBytes; i += 2) {\r\n\t var codePoint = (words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff;\r\n\t utf16Chars.push(String.fromCharCode(codePoint));\r\n\t }\r\n\r\n\t return utf16Chars.join('');\r\n\t },\r\n\r\n\t /**\r\n\t * Converts a UTF-16 BE string to a word array.\r\n\t *\r\n\t * @param {string} utf16Str The UTF-16 BE string.\r\n\t *\r\n\t * @return {WordArray} The word array.\r\n\t *\r\n\t * @static\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var wordArray = CryptoJS.enc.Utf16.parse(utf16String);\r\n\t */\r\n\t parse: function (utf16Str) {\r\n\t // Shortcut\r\n\t var utf16StrLength = utf16Str.length;\r\n\r\n\t // Convert\r\n\t var words = [];\r\n\t for (var i = 0; i < utf16StrLength; i++) {\r\n\t words[i >>> 1] |= utf16Str.charCodeAt(i) << (16 - (i % 2) * 16);\r\n\t }\r\n\r\n\t return WordArray.create(words, utf16StrLength * 2);\r\n\t }\r\n\t };\r\n\r\n\t /**\r\n\t * UTF-16 LE encoding strategy.\r\n\t */\r\n\t C_enc.Utf16LE = {\r\n\t /**\r\n\t * Converts a word array to a UTF-16 LE string.\r\n\t *\r\n\t * @param {WordArray} wordArray The word array.\r\n\t *\r\n\t * @return {string} The UTF-16 LE string.\r\n\t *\r\n\t * @static\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray);\r\n\t */\r\n\t stringify: function (wordArray) {\r\n\t // Shortcuts\r\n\t var words = wordArray.words;\r\n\t var sigBytes = wordArray.sigBytes;\r\n\r\n\t // Convert\r\n\t var utf16Chars = [];\r\n\t for (var i = 0; i < sigBytes; i += 2) {\r\n\t var codePoint = swapEndian((words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff);\r\n\t utf16Chars.push(String.fromCharCode(codePoint));\r\n\t }\r\n\r\n\t return utf16Chars.join('');\r\n\t },\r\n\r\n\t /**\r\n\t * Converts a UTF-16 LE string to a word array.\r\n\t *\r\n\t * @param {string} utf16Str The UTF-16 LE string.\r\n\t *\r\n\t * @return {WordArray} The word array.\r\n\t *\r\n\t * @static\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str);\r\n\t */\r\n\t parse: function (utf16Str) {\r\n\t // Shortcut\r\n\t var utf16StrLength = utf16Str.length;\r\n\r\n\t // Convert\r\n\t var words = [];\r\n\t for (var i = 0; i < utf16StrLength; i++) {\r\n\t words[i >>> 1] |= swapEndian(utf16Str.charCodeAt(i) << (16 - (i % 2) * 16));\r\n\t }\r\n\r\n\t return WordArray.create(words, utf16StrLength * 2);\r\n\t }\r\n\t };\r\n\r\n\t function swapEndian(word) {\r\n\t return ((word << 8) & 0xff00ff00) | ((word >>> 8) & 0x00ff00ff);\r\n\t }\r\n\t}());\r\n\r\n\r\n\t(function () {\r\n\t // Check if typed arrays are supported\r\n\t if (typeof ArrayBuffer != 'function') {\r\n\t return;\r\n\t }\r\n\r\n\t // Shortcuts\r\n\t var C = CryptoJS;\r\n\t var C_lib = C.lib;\r\n\t var WordArray = C_lib.WordArray;\r\n\r\n\t // Reference original init\r\n\t var superInit = WordArray.init;\r\n\r\n\t // Augment WordArray.init to handle typed arrays\r\n\t var subInit = WordArray.init = function (typedArray) {\r\n\t // Convert buffers to uint8\r\n\t if (typedArray instanceof ArrayBuffer) {\r\n\t typedArray = new Uint8Array(typedArray);\r\n\t }\r\n\r\n\t // Convert other array views to uint8\r\n\t if (\r\n\t typedArray instanceof Int8Array ||\r\n\t (typeof Uint8ClampedArray !== \"undefined\" && typedArray instanceof Uint8ClampedArray) ||\r\n\t typedArray instanceof Int16Array ||\r\n\t typedArray instanceof Uint16Array ||\r\n\t typedArray instanceof Int32Array ||\r\n\t typedArray instanceof Uint32Array ||\r\n\t typedArray instanceof Float32Array ||\r\n\t typedArray instanceof Float64Array\r\n\t ) {\r\n\t typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);\r\n\t }\r\n\r\n\t // Handle Uint8Array\r\n\t if (typedArray instanceof Uint8Array) {\r\n\t // Shortcut\r\n\t var typedArrayByteLength = typedArray.byteLength;\r\n\r\n\t // Extract bytes\r\n\t var words = [];\r\n\t for (var i = 0; i < typedArrayByteLength; i++) {\r\n\t words[i >>> 2] |= typedArray[i] << (24 - (i % 4) * 8);\r\n\t }\r\n\r\n\t // Initialize this word array\r\n\t superInit.call(this, words, typedArrayByteLength);\r\n\t } else {\r\n\t // Else call normal init\r\n\t superInit.apply(this, arguments);\r\n\t }\r\n\t };\r\n\r\n\t subInit.prototype = WordArray;\r\n\t}());\r\n\r\n\r\n\t/** @preserve\r\n\t(c) 2012 by Cédric Mesnil. All rights reserved.\r\n\r\n\tRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\r\n\r\n\t - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\r\n\t - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\r\n\r\n\tTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r\n\t*/\r\n\r\n\t(function (Math) {\r\n\t // Shortcuts\r\n\t var C = CryptoJS;\r\n\t var C_lib = C.lib;\r\n\t var WordArray = C_lib.WordArray;\r\n\t var Hasher = C_lib.Hasher;\r\n\t var C_algo = C.algo;\r\n\r\n\t // Constants table\r\n\t var _zl = WordArray.create([\r\n\t 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\r\n\t 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\r\n\t 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\r\n\t 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\r\n\t 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]);\r\n\t var _zr = WordArray.create([\r\n\t 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\r\n\t 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\r\n\t 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\r\n\t 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\r\n\t 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]);\r\n\t var _sl = WordArray.create([\r\n\t 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\r\n\t 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\r\n\t 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\r\n\t 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\r\n\t 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 ]);\r\n\t var _sr = WordArray.create([\r\n\t 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\r\n\t 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\r\n\t 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\r\n\t 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\r\n\t 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 ]);\r\n\r\n\t var _hl = WordArray.create([ 0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]);\r\n\t var _hr = WordArray.create([ 0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]);\r\n\r\n\t /**\r\n\t * RIPEMD160 hash algorithm.\r\n\t */\r\n\t var RIPEMD160 = C_algo.RIPEMD160 = Hasher.extend({\r\n\t _doReset: function () {\r\n\t this._hash = WordArray.create([0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]);\r\n\t },\r\n\r\n\t _doProcessBlock: function (M, offset) {\r\n\r\n\t // Swap endian\r\n\t for (var i = 0; i < 16; i++) {\r\n\t // Shortcuts\r\n\t var offset_i = offset + i;\r\n\t var M_offset_i = M[offset_i];\r\n\r\n\t // Swap\r\n\t M[offset_i] = (\r\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\r\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\r\n\t );\r\n\t }\r\n\t // Shortcut\r\n\t var H = this._hash.words;\r\n\t var hl = _hl.words;\r\n\t var hr = _hr.words;\r\n\t var zl = _zl.words;\r\n\t var zr = _zr.words;\r\n\t var sl = _sl.words;\r\n\t var sr = _sr.words;\r\n\r\n\t // Working variables\r\n\t var al, bl, cl, dl, el;\r\n\t var ar, br, cr, dr, er;\r\n\r\n\t ar = al = H[0];\r\n\t br = bl = H[1];\r\n\t cr = cl = H[2];\r\n\t dr = dl = H[3];\r\n\t er = el = H[4];\r\n\t // Computation\r\n\t var t;\r\n\t for (var i = 0; i < 80; i += 1) {\r\n\t t = (al + M[offset+zl[i]])|0;\r\n\t if (i<16){\r\n\t\t t += f1(bl,cl,dl) + hl[0];\r\n\t } else if (i<32) {\r\n\t\t t += f2(bl,cl,dl) + hl[1];\r\n\t } else if (i<48) {\r\n\t\t t += f3(bl,cl,dl) + hl[2];\r\n\t } else if (i<64) {\r\n\t\t t += f4(bl,cl,dl) + hl[3];\r\n\t } else {// if (i<80) {\r\n\t\t t += f5(bl,cl,dl) + hl[4];\r\n\t }\r\n\t t = t|0;\r\n\t t = rotl(t,sl[i]);\r\n\t t = (t+el)|0;\r\n\t al = el;\r\n\t el = dl;\r\n\t dl = rotl(cl, 10);\r\n\t cl = bl;\r\n\t bl = t;\r\n\r\n\t t = (ar + M[offset+zr[i]])|0;\r\n\t if (i<16){\r\n\t\t t += f5(br,cr,dr) + hr[0];\r\n\t } else if (i<32) {\r\n\t\t t += f4(br,cr,dr) + hr[1];\r\n\t } else if (i<48) {\r\n\t\t t += f3(br,cr,dr) + hr[2];\r\n\t } else if (i<64) {\r\n\t\t t += f2(br,cr,dr) + hr[3];\r\n\t } else {// if (i<80) {\r\n\t\t t += f1(br,cr,dr) + hr[4];\r\n\t }\r\n\t t = t|0;\r\n\t t = rotl(t,sr[i]) ;\r\n\t t = (t+er)|0;\r\n\t ar = er;\r\n\t er = dr;\r\n\t dr = rotl(cr, 10);\r\n\t cr = br;\r\n\t br = t;\r\n\t }\r\n\t // Intermediate hash value\r\n\t t = (H[1] + cl + dr)|0;\r\n\t H[1] = (H[2] + dl + er)|0;\r\n\t H[2] = (H[3] + el + ar)|0;\r\n\t H[3] = (H[4] + al + br)|0;\r\n\t H[4] = (H[0] + bl + cr)|0;\r\n\t H[0] = t;\r\n\t },\r\n\r\n\t _doFinalize: function () {\r\n\t // Shortcuts\r\n\t var data = this._data;\r\n\t var dataWords = data.words;\r\n\r\n\t var nBitsTotal = this._nDataBytes * 8;\r\n\t var nBitsLeft = data.sigBytes * 8;\r\n\r\n\t // Add padding\r\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\r\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\r\n\t (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |\r\n\t (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)\r\n\t );\r\n\t data.sigBytes = (dataWords.length + 1) * 4;\r\n\r\n\t // Hash final blocks\r\n\t this._process();\r\n\r\n\t // Shortcuts\r\n\t var hash = this._hash;\r\n\t var H = hash.words;\r\n\r\n\t // Swap endian\r\n\t for (var i = 0; i < 5; i++) {\r\n\t // Shortcut\r\n\t var H_i = H[i];\r\n\r\n\t // Swap\r\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\r\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\r\n\t }\r\n\r\n\t // Return final computed hash\r\n\t return hash;\r\n\t },\r\n\r\n\t clone: function () {\r\n\t var clone = Hasher.clone.call(this);\r\n\t clone._hash = this._hash.clone();\r\n\r\n\t return clone;\r\n\t }\r\n\t });\r\n\r\n\r\n\t function f1(x, y, z) {\r\n\t return ((x) ^ (y) ^ (z));\r\n\r\n\t }\r\n\r\n\t function f2(x, y, z) {\r\n\t return (((x)&(y)) | ((~x)&(z)));\r\n\t }\r\n\r\n\t function f3(x, y, z) {\r\n\t return (((x) | (~(y))) ^ (z));\r\n\t }\r\n\r\n\t function f4(x, y, z) {\r\n\t return (((x) & (z)) | ((y)&(~(z))));\r\n\t }\r\n\r\n\t function f5(x, y, z) {\r\n\t return ((x) ^ ((y) |(~(z))));\r\n\r\n\t }\r\n\r\n\t function rotl(x,n) {\r\n\t return (x<>>(32-n));\r\n\t }\r\n\r\n\r\n\t /**\r\n\t * Shortcut function to the hasher's object interface.\r\n\t *\r\n\t * @param {WordArray|string} message The message to hash.\r\n\t *\r\n\t * @return {WordArray} The hash.\r\n\t *\r\n\t * @static\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var hash = CryptoJS.RIPEMD160('message');\r\n\t * var hash = CryptoJS.RIPEMD160(wordArray);\r\n\t */\r\n\t C.RIPEMD160 = Hasher._createHelper(RIPEMD160);\r\n\r\n\t /**\r\n\t * Shortcut function to the HMAC's object interface.\r\n\t *\r\n\t * @param {WordArray|string} message The message to hash.\r\n\t * @param {WordArray|string} key The secret key.\r\n\t *\r\n\t * @return {WordArray} The HMAC.\r\n\t *\r\n\t * @static\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var hmac = CryptoJS.HmacRIPEMD160(message, key);\r\n\t */\r\n\t C.HmacRIPEMD160 = Hasher._createHmacHelper(RIPEMD160);\r\n\t}(Math));\r\n\r\n\r\n\t(function () {\r\n\t // Shortcuts\r\n\t var C = CryptoJS;\r\n\t var C_lib = C.lib;\r\n\t var Base = C_lib.Base;\r\n\t var C_enc = C.enc;\r\n\t var Utf8 = C_enc.Utf8;\r\n\t var C_algo = C.algo;\r\n\r\n\t /**\r\n\t * HMAC algorithm.\r\n\t */\r\n\t var HMAC = C_algo.HMAC = Base.extend({\r\n\t /**\r\n\t * Initializes a newly created HMAC.\r\n\t *\r\n\t * @param {Hasher} hasher The hash algorithm to use.\r\n\t * @param {WordArray|string} key The secret key.\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\r\n\t */\r\n\t init: function (hasher, key) {\r\n\t // Init hasher\r\n\t hasher = this._hasher = new hasher.init();\r\n\r\n\t // Convert string to WordArray, else assume WordArray already\r\n\t if (typeof key == 'string') {\r\n\t key = Utf8.parse(key);\r\n\t }\r\n\r\n\t // Shortcuts\r\n\t var hasherBlockSize = hasher.blockSize;\r\n\t var hasherBlockSizeBytes = hasherBlockSize * 4;\r\n\r\n\t // Allow arbitrary length keys\r\n\t if (key.sigBytes > hasherBlockSizeBytes) {\r\n\t key = hasher.finalize(key);\r\n\t }\r\n\r\n\t // Clamp excess bits\r\n\t key.clamp();\r\n\r\n\t // Clone key for inner and outer pads\r\n\t var oKey = this._oKey = key.clone();\r\n\t var iKey = this._iKey = key.clone();\r\n\r\n\t // Shortcuts\r\n\t var oKeyWords = oKey.words;\r\n\t var iKeyWords = iKey.words;\r\n\r\n\t // XOR keys with pad constants\r\n\t for (var i = 0; i < hasherBlockSize; i++) {\r\n\t oKeyWords[i] ^= 0x5c5c5c5c;\r\n\t iKeyWords[i] ^= 0x36363636;\r\n\t }\r\n\t oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;\r\n\r\n\t // Set initial values\r\n\t this.reset();\r\n\t },\r\n\r\n\t /**\r\n\t * Resets this HMAC to its initial state.\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * hmacHasher.reset();\r\n\t */\r\n\t reset: function () {\r\n\t // Shortcut\r\n\t var hasher = this._hasher;\r\n\r\n\t // Reset\r\n\t hasher.reset();\r\n\t hasher.update(this._iKey);\r\n\t },\r\n\r\n\t /**\r\n\t * Updates this HMAC with a message.\r\n\t *\r\n\t * @param {WordArray|string} messageUpdate The message to append.\r\n\t *\r\n\t * @return {HMAC} This HMAC instance.\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * hmacHasher.update('message');\r\n\t * hmacHasher.update(wordArray);\r\n\t */\r\n\t update: function (messageUpdate) {\r\n\t this._hasher.update(messageUpdate);\r\n\r\n\t // Chainable\r\n\t return this;\r\n\t },\r\n\r\n\t /**\r\n\t * Finalizes the HMAC computation.\r\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\r\n\t *\r\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\r\n\t *\r\n\t * @return {WordArray} The HMAC.\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var hmac = hmacHasher.finalize();\r\n\t * var hmac = hmacHasher.finalize('message');\r\n\t * var hmac = hmacHasher.finalize(wordArray);\r\n\t */\r\n\t finalize: function (messageUpdate) {\r\n\t // Shortcut\r\n\t var hasher = this._hasher;\r\n\r\n\t // Compute HMAC\r\n\t var innerHash = hasher.finalize(messageUpdate);\r\n\t hasher.reset();\r\n\t var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));\r\n\r\n\t return hmac;\r\n\t }\r\n\t });\r\n\t}());\r\n\r\n\r\n\t(function () {\r\n\t // Shortcuts\r\n\t var C = CryptoJS;\r\n\t var C_lib = C.lib;\r\n\t var Base = C_lib.Base;\r\n\t var WordArray = C_lib.WordArray;\r\n\t var C_algo = C.algo;\r\n\t var SHA1 = C_algo.SHA1;\r\n\t var HMAC = C_algo.HMAC;\r\n\r\n\t /**\r\n\t * Password-Based Key Derivation Function 2 algorithm.\r\n\t */\r\n\t var PBKDF2 = C_algo.PBKDF2 = Base.extend({\r\n\t /**\r\n\t * Configuration options.\r\n\t *\r\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\r\n\t * @property {Hasher} hasher The hasher to use. Default: SHA1\r\n\t * @property {number} iterations The number of iterations to perform. Default: 1\r\n\t */\r\n\t cfg: Base.extend({\r\n\t keySize: 128/32,\r\n\t hasher: SHA1,\r\n\t iterations: 1\r\n\t }),\r\n\r\n\t /**\r\n\t * Initializes a newly created key derivation function.\r\n\t *\r\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var kdf = CryptoJS.algo.PBKDF2.create();\r\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });\r\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });\r\n\t */\r\n\t init: function (cfg) {\r\n\t this.cfg = this.cfg.extend(cfg);\r\n\t },\r\n\r\n\t /**\r\n\t * Computes the Password-Based Key Derivation Function 2.\r\n\t *\r\n\t * @param {WordArray|string} password The password.\r\n\t * @param {WordArray|string} salt A salt.\r\n\t *\r\n\t * @return {WordArray} The derived key.\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var key = kdf.compute(password, salt);\r\n\t */\r\n\t compute: function (password, salt) {\r\n\t // Shortcut\r\n\t var cfg = this.cfg;\r\n\r\n\t // Init HMAC\r\n\t var hmac = HMAC.create(cfg.hasher, password);\r\n\r\n\t // Initial values\r\n\t var derivedKey = WordArray.create();\r\n\t var blockIndex = WordArray.create([0x00000001]);\r\n\r\n\t // Shortcuts\r\n\t var derivedKeyWords = derivedKey.words;\r\n\t var blockIndexWords = blockIndex.words;\r\n\t var keySize = cfg.keySize;\r\n\t var iterations = cfg.iterations;\r\n\r\n\t // Generate key\r\n\t while (derivedKeyWords.length < keySize) {\r\n\t var block = hmac.update(salt).finalize(blockIndex);\r\n\t hmac.reset();\r\n\r\n\t // Shortcuts\r\n\t var blockWords = block.words;\r\n\t var blockWordsLength = blockWords.length;\r\n\r\n\t // Iterations\r\n\t var intermediate = block;\r\n\t for (var i = 1; i < iterations; i++) {\r\n\t intermediate = hmac.finalize(intermediate);\r\n\t hmac.reset();\r\n\r\n\t // Shortcut\r\n\t var intermediateWords = intermediate.words;\r\n\r\n\t // XOR intermediate with block\r\n\t for (var j = 0; j < blockWordsLength; j++) {\r\n\t blockWords[j] ^= intermediateWords[j];\r\n\t }\r\n\t }\r\n\r\n\t derivedKey.concat(block);\r\n\t blockIndexWords[0]++;\r\n\t }\r\n\t derivedKey.sigBytes = keySize * 4;\r\n\r\n\t return derivedKey;\r\n\t }\r\n\t });\r\n\r\n\t /**\r\n\t * Computes the Password-Based Key Derivation Function 2.\r\n\t *\r\n\t * @param {WordArray|string} password The password.\r\n\t * @param {WordArray|string} salt A salt.\r\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\r\n\t *\r\n\t * @return {WordArray} The derived key.\r\n\t *\r\n\t * @static\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var key = CryptoJS.PBKDF2(password, salt);\r\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 });\r\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 });\r\n\t */\r\n\t C.PBKDF2 = function (password, salt, cfg) {\r\n\t return PBKDF2.create(cfg).compute(password, salt);\r\n\t };\r\n\t}());\r\n\r\n\r\n\t(function () {\r\n\t // Shortcuts\r\n\t var C = CryptoJS;\r\n\t var C_lib = C.lib;\r\n\t var Base = C_lib.Base;\r\n\t var WordArray = C_lib.WordArray;\r\n\t var C_algo = C.algo;\r\n\t var MD5 = C_algo.MD5;\r\n\r\n\t /**\r\n\t * This key derivation function is meant to conform with EVP_BytesToKey.\r\n\t * www.openssl.org/docs/crypto/EVP_BytesToKey.html\r\n\t */\r\n\t var EvpKDF = C_algo.EvpKDF = Base.extend({\r\n\t /**\r\n\t * Configuration options.\r\n\t *\r\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\r\n\t * @property {Hasher} hasher The hash algorithm to use. Default: MD5\r\n\t * @property {number} iterations The number of iterations to perform. Default: 1\r\n\t */\r\n\t cfg: Base.extend({\r\n\t keySize: 128/32,\r\n\t hasher: MD5,\r\n\t iterations: 1\r\n\t }),\r\n\r\n\t /**\r\n\t * Initializes a newly created key derivation function.\r\n\t *\r\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var kdf = CryptoJS.algo.EvpKDF.create();\r\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\r\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\r\n\t */\r\n\t init: function (cfg) {\r\n\t this.cfg = this.cfg.extend(cfg);\r\n\t },\r\n\r\n\t /**\r\n\t * Derives a key from a password.\r\n\t *\r\n\t * @param {WordArray|string} password The password.\r\n\t * @param {WordArray|string} salt A salt.\r\n\t *\r\n\t * @return {WordArray} The derived key.\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var key = kdf.compute(password, salt);\r\n\t */\r\n\t compute: function (password, salt) {\r\n\t // Shortcut\r\n\t var cfg = this.cfg;\r\n\r\n\t // Init hasher\r\n\t var hasher = cfg.hasher.create();\r\n\r\n\t // Initial values\r\n\t var derivedKey = WordArray.create();\r\n\r\n\t // Shortcuts\r\n\t var derivedKeyWords = derivedKey.words;\r\n\t var keySize = cfg.keySize;\r\n\t var iterations = cfg.iterations;\r\n\r\n\t // Generate key\r\n\t while (derivedKeyWords.length < keySize) {\r\n\t if (block) {\r\n\t hasher.update(block);\r\n\t }\r\n\t var block = hasher.update(password).finalize(salt);\r\n\t hasher.reset();\r\n\r\n\t // Iterations\r\n\t for (var i = 1; i < iterations; i++) {\r\n\t block = hasher.finalize(block);\r\n\t hasher.reset();\r\n\t }\r\n\r\n\t derivedKey.concat(block);\r\n\t }\r\n\t derivedKey.sigBytes = keySize * 4;\r\n\r\n\t return derivedKey;\r\n\t }\r\n\t });\r\n\r\n\t /**\r\n\t * Derives a key from a password.\r\n\t *\r\n\t * @param {WordArray|string} password The password.\r\n\t * @param {WordArray|string} salt A salt.\r\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\r\n\t *\r\n\t * @return {WordArray} The derived key.\r\n\t *\r\n\t * @static\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var key = CryptoJS.EvpKDF(password, salt);\r\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\r\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\r\n\t */\r\n\t C.EvpKDF = function (password, salt, cfg) {\r\n\t return EvpKDF.create(cfg).compute(password, salt);\r\n\t };\r\n\t}());\r\n\r\n\r\n\t(function () {\r\n\t // Shortcuts\r\n\t var C = CryptoJS;\r\n\t var C_lib = C.lib;\r\n\t var WordArray = C_lib.WordArray;\r\n\t var C_algo = C.algo;\r\n\t var SHA256 = C_algo.SHA256;\r\n\r\n\t /**\r\n\t * SHA-224 hash algorithm.\r\n\t */\r\n\t var SHA224 = C_algo.SHA224 = SHA256.extend({\r\n\t _doReset: function () {\r\n\t this._hash = new WordArray.init([\r\n\t 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\r\n\t 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4\r\n\t ]);\r\n\t },\r\n\r\n\t _doFinalize: function () {\r\n\t var hash = SHA256._doFinalize.call(this);\r\n\r\n\t hash.sigBytes -= 4;\r\n\r\n\t return hash;\r\n\t }\r\n\t });\r\n\r\n\t /**\r\n\t * Shortcut function to the hasher's object interface.\r\n\t *\r\n\t * @param {WordArray|string} message The message to hash.\r\n\t *\r\n\t * @return {WordArray} The hash.\r\n\t *\r\n\t * @static\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var hash = CryptoJS.SHA224('message');\r\n\t * var hash = CryptoJS.SHA224(wordArray);\r\n\t */\r\n\t C.SHA224 = SHA256._createHelper(SHA224);\r\n\r\n\t /**\r\n\t * Shortcut function to the HMAC's object interface.\r\n\t *\r\n\t * @param {WordArray|string} message The message to hash.\r\n\t * @param {WordArray|string} key The secret key.\r\n\t *\r\n\t * @return {WordArray} The HMAC.\r\n\t *\r\n\t * @static\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var hmac = CryptoJS.HmacSHA224(message, key);\r\n\t */\r\n\t C.HmacSHA224 = SHA256._createHmacHelper(SHA224);\r\n\t}());\r\n\r\n\r\n\t(function (undefined) {\r\n\t // Shortcuts\r\n\t var C = CryptoJS;\r\n\t var C_lib = C.lib;\r\n\t var Base = C_lib.Base;\r\n\t var X32WordArray = C_lib.WordArray;\r\n\r\n\t /**\r\n\t * x64 namespace.\r\n\t */\r\n\t var C_x64 = C.x64 = {};\r\n\r\n\t /**\r\n\t * A 64-bit word.\r\n\t */\r\n\t var X64Word = C_x64.Word = Base.extend({\r\n\t /**\r\n\t * Initializes a newly created 64-bit word.\r\n\t *\r\n\t * @param {number} high The high 32 bits.\r\n\t * @param {number} low The low 32 bits.\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var x64Word = CryptoJS.x64.Word.create(0x00010203, 0x04050607);\r\n\t */\r\n\t init: function (high, low) {\r\n\t this.high = high;\r\n\t this.low = low;\r\n\t }\r\n\r\n\t /**\r\n\t * Bitwise NOTs this word.\r\n\t *\r\n\t * @return {X64Word} A new x64-Word object after negating.\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var negated = x64Word.not();\r\n\t */\r\n\t // not: function () {\r\n\t // var high = ~this.high;\r\n\t // var low = ~this.low;\r\n\r\n\t // return X64Word.create(high, low);\r\n\t // },\r\n\r\n\t /**\r\n\t * Bitwise ANDs this word with the passed word.\r\n\t *\r\n\t * @param {X64Word} word The x64-Word to AND with this word.\r\n\t *\r\n\t * @return {X64Word} A new x64-Word object after ANDing.\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var anded = x64Word.and(anotherX64Word);\r\n\t */\r\n\t // and: function (word) {\r\n\t // var high = this.high & word.high;\r\n\t // var low = this.low & word.low;\r\n\r\n\t // return X64Word.create(high, low);\r\n\t // },\r\n\r\n\t /**\r\n\t * Bitwise ORs this word with the passed word.\r\n\t *\r\n\t * @param {X64Word} word The x64-Word to OR with this word.\r\n\t *\r\n\t * @return {X64Word} A new x64-Word object after ORing.\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var ored = x64Word.or(anotherX64Word);\r\n\t */\r\n\t // or: function (word) {\r\n\t // var high = this.high | word.high;\r\n\t // var low = this.low | word.low;\r\n\r\n\t // return X64Word.create(high, low);\r\n\t // },\r\n\r\n\t /**\r\n\t * Bitwise XORs this word with the passed word.\r\n\t *\r\n\t * @param {X64Word} word The x64-Word to XOR with this word.\r\n\t *\r\n\t * @return {X64Word} A new x64-Word object after XORing.\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var xored = x64Word.xor(anotherX64Word);\r\n\t */\r\n\t // xor: function (word) {\r\n\t // var high = this.high ^ word.high;\r\n\t // var low = this.low ^ word.low;\r\n\r\n\t // return X64Word.create(high, low);\r\n\t // },\r\n\r\n\t /**\r\n\t * Shifts this word n bits to the left.\r\n\t *\r\n\t * @param {number} n The number of bits to shift.\r\n\t *\r\n\t * @return {X64Word} A new x64-Word object after shifting.\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var shifted = x64Word.shiftL(25);\r\n\t */\r\n\t // shiftL: function (n) {\r\n\t // if (n < 32) {\r\n\t // var high = (this.high << n) | (this.low >>> (32 - n));\r\n\t // var low = this.low << n;\r\n\t // } else {\r\n\t // var high = this.low << (n - 32);\r\n\t // var low = 0;\r\n\t // }\r\n\r\n\t // return X64Word.create(high, low);\r\n\t // },\r\n\r\n\t /**\r\n\t * Shifts this word n bits to the right.\r\n\t *\r\n\t * @param {number} n The number of bits to shift.\r\n\t *\r\n\t * @return {X64Word} A new x64-Word object after shifting.\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var shifted = x64Word.shiftR(7);\r\n\t */\r\n\t // shiftR: function (n) {\r\n\t // if (n < 32) {\r\n\t // var low = (this.low >>> n) | (this.high << (32 - n));\r\n\t // var high = this.high >>> n;\r\n\t // } else {\r\n\t // var low = this.high >>> (n - 32);\r\n\t // var high = 0;\r\n\t // }\r\n\r\n\t // return X64Word.create(high, low);\r\n\t // },\r\n\r\n\t /**\r\n\t * Rotates this word n bits to the left.\r\n\t *\r\n\t * @param {number} n The number of bits to rotate.\r\n\t *\r\n\t * @return {X64Word} A new x64-Word object after rotating.\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var rotated = x64Word.rotL(25);\r\n\t */\r\n\t // rotL: function (n) {\r\n\t // return this.shiftL(n).or(this.shiftR(64 - n));\r\n\t // },\r\n\r\n\t /**\r\n\t * Rotates this word n bits to the right.\r\n\t *\r\n\t * @param {number} n The number of bits to rotate.\r\n\t *\r\n\t * @return {X64Word} A new x64-Word object after rotating.\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var rotated = x64Word.rotR(7);\r\n\t */\r\n\t // rotR: function (n) {\r\n\t // return this.shiftR(n).or(this.shiftL(64 - n));\r\n\t // },\r\n\r\n\t /**\r\n\t * Adds this word with the passed word.\r\n\t *\r\n\t * @param {X64Word} word The x64-Word to add with this word.\r\n\t *\r\n\t * @return {X64Word} A new x64-Word object after adding.\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var added = x64Word.add(anotherX64Word);\r\n\t */\r\n\t // add: function (word) {\r\n\t // var low = (this.low + word.low) | 0;\r\n\t // var carry = (low >>> 0) < (this.low >>> 0) ? 1 : 0;\r\n\t // var high = (this.high + word.high + carry) | 0;\r\n\r\n\t // return X64Word.create(high, low);\r\n\t // }\r\n\t });\r\n\r\n\t /**\r\n\t * An array of 64-bit words.\r\n\t *\r\n\t * @property {Array} words The array of CryptoJS.x64.Word objects.\r\n\t * @property {number} sigBytes The number of significant bytes in this word array.\r\n\t */\r\n\t var X64WordArray = C_x64.WordArray = Base.extend({\r\n\t /**\r\n\t * Initializes a newly created word array.\r\n\t *\r\n\t * @param {Array} words (Optional) An array of CryptoJS.x64.Word objects.\r\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var wordArray = CryptoJS.x64.WordArray.create();\r\n\t *\r\n\t * var wordArray = CryptoJS.x64.WordArray.create([\r\n\t * CryptoJS.x64.Word.create(0x00010203, 0x04050607),\r\n\t * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\r\n\t * ]);\r\n\t *\r\n\t * var wordArray = CryptoJS.x64.WordArray.create([\r\n\t * CryptoJS.x64.Word.create(0x00010203, 0x04050607),\r\n\t * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\r\n\t * ], 10);\r\n\t */\r\n\t init: function (words, sigBytes) {\r\n\t words = this.words = words || [];\r\n\r\n\t if (sigBytes != undefined) {\r\n\t this.sigBytes = sigBytes;\r\n\t } else {\r\n\t this.sigBytes = words.length * 8;\r\n\t }\r\n\t },\r\n\r\n\t /**\r\n\t * Converts this 64-bit word array to a 32-bit word array.\r\n\t *\r\n\t * @return {CryptoJS.lib.WordArray} This word array's data as a 32-bit word array.\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var x32WordArray = x64WordArray.toX32();\r\n\t */\r\n\t toX32: function () {\r\n\t // Shortcuts\r\n\t var x64Words = this.words;\r\n\t var x64WordsLength = x64Words.length;\r\n\r\n\t // Convert\r\n\t var x32Words = [];\r\n\t for (var i = 0; i < x64WordsLength; i++) {\r\n\t var x64Word = x64Words[i];\r\n\t x32Words.push(x64Word.high);\r\n\t x32Words.push(x64Word.low);\r\n\t }\r\n\r\n\t return X32WordArray.create(x32Words, this.sigBytes);\r\n\t },\r\n\r\n\t /**\r\n\t * Creates a copy of this word array.\r\n\t *\r\n\t * @return {X64WordArray} The clone.\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var clone = x64WordArray.clone();\r\n\t */\r\n\t clone: function () {\r\n\t var clone = Base.clone.call(this);\r\n\r\n\t // Clone \"words\" array\r\n\t var words = clone.words = this.words.slice(0);\r\n\r\n\t // Clone each X64Word object\r\n\t var wordsLength = words.length;\r\n\t for (var i = 0; i < wordsLength; i++) {\r\n\t words[i] = words[i].clone();\r\n\t }\r\n\r\n\t return clone;\r\n\t }\r\n\t });\r\n\t}());\r\n\r\n\r\n\t(function (Math) {\r\n\t // Shortcuts\r\n\t var C = CryptoJS;\r\n\t var C_lib = C.lib;\r\n\t var WordArray = C_lib.WordArray;\r\n\t var Hasher = C_lib.Hasher;\r\n\t var C_x64 = C.x64;\r\n\t var X64Word = C_x64.Word;\r\n\t var C_algo = C.algo;\r\n\r\n\t // Constants tables\r\n\t var RHO_OFFSETS = [];\r\n\t var PI_INDEXES = [];\r\n\t var ROUND_CONSTANTS = [];\r\n\r\n\t // Compute Constants\r\n\t (function () {\r\n\t // Compute rho offset constants\r\n\t var x = 1, y = 0;\r\n\t for (var t = 0; t < 24; t++) {\r\n\t RHO_OFFSETS[x + 5 * y] = ((t + 1) * (t + 2) / 2) % 64;\r\n\r\n\t var newX = y % 5;\r\n\t var newY = (2 * x + 3 * y) % 5;\r\n\t x = newX;\r\n\t y = newY;\r\n\t }\r\n\r\n\t // Compute pi index constants\r\n\t for (var x = 0; x < 5; x++) {\r\n\t for (var y = 0; y < 5; y++) {\r\n\t PI_INDEXES[x + 5 * y] = y + ((2 * x + 3 * y) % 5) * 5;\r\n\t }\r\n\t }\r\n\r\n\t // Compute round constants\r\n\t var LFSR = 0x01;\r\n\t for (var i = 0; i < 24; i++) {\r\n\t var roundConstantMsw = 0;\r\n\t var roundConstantLsw = 0;\r\n\r\n\t for (var j = 0; j < 7; j++) {\r\n\t if (LFSR & 0x01) {\r\n\t var bitPosition = (1 << j) - 1;\r\n\t if (bitPosition < 32) {\r\n\t roundConstantLsw ^= 1 << bitPosition;\r\n\t } else /* if (bitPosition >= 32) */ {\r\n\t roundConstantMsw ^= 1 << (bitPosition - 32);\r\n\t }\r\n\t }\r\n\r\n\t // Compute next LFSR\r\n\t if (LFSR & 0x80) {\r\n\t // Primitive polynomial over GF(2): x^8 + x^6 + x^5 + x^4 + 1\r\n\t LFSR = (LFSR << 1) ^ 0x71;\r\n\t } else {\r\n\t LFSR <<= 1;\r\n\t }\r\n\t }\r\n\r\n\t ROUND_CONSTANTS[i] = X64Word.create(roundConstantMsw, roundConstantLsw);\r\n\t }\r\n\t }());\r\n\r\n\t // Reusable objects for temporary values\r\n\t var T = [];\r\n\t (function () {\r\n\t for (var i = 0; i < 25; i++) {\r\n\t T[i] = X64Word.create();\r\n\t }\r\n\t }());\r\n\r\n\t /**\r\n\t * SHA-3 hash algorithm.\r\n\t */\r\n\t var SHA3 = C_algo.SHA3 = Hasher.extend({\r\n\t /**\r\n\t * Configuration options.\r\n\t *\r\n\t * @property {number} outputLength\r\n\t * The desired number of bits in the output hash.\r\n\t * Only values permitted are: 224, 256, 384, 512.\r\n\t * Default: 512\r\n\t */\r\n\t cfg: Hasher.cfg.extend({\r\n\t outputLength: 512\r\n\t }),\r\n\r\n\t _doReset: function () {\r\n\t var state = this._state = []\r\n\t for (var i = 0; i < 25; i++) {\r\n\t state[i] = new X64Word.init();\r\n\t }\r\n\r\n\t this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32;\r\n\t },\r\n\r\n\t _doProcessBlock: function (M, offset) {\r\n\t // Shortcuts\r\n\t var state = this._state;\r\n\t var nBlockSizeLanes = this.blockSize / 2;\r\n\r\n\t // Absorb\r\n\t for (var i = 0; i < nBlockSizeLanes; i++) {\r\n\t // Shortcuts\r\n\t var M2i = M[offset + 2 * i];\r\n\t var M2i1 = M[offset + 2 * i + 1];\r\n\r\n\t // Swap endian\r\n\t M2i = (\r\n\t (((M2i << 8) | (M2i >>> 24)) & 0x00ff00ff) |\r\n\t (((M2i << 24) | (M2i >>> 8)) & 0xff00ff00)\r\n\t );\r\n\t M2i1 = (\r\n\t (((M2i1 << 8) | (M2i1 >>> 24)) & 0x00ff00ff) |\r\n\t (((M2i1 << 24) | (M2i1 >>> 8)) & 0xff00ff00)\r\n\t );\r\n\r\n\t // Absorb message into state\r\n\t var lane = state[i];\r\n\t lane.high ^= M2i1;\r\n\t lane.low ^= M2i;\r\n\t }\r\n\r\n\t // Rounds\r\n\t for (var round = 0; round < 24; round++) {\r\n\t // Theta\r\n\t for (var x = 0; x < 5; x++) {\r\n\t // Mix column lanes\r\n\t var tMsw = 0, tLsw = 0;\r\n\t for (var y = 0; y < 5; y++) {\r\n\t var lane = state[x + 5 * y];\r\n\t tMsw ^= lane.high;\r\n\t tLsw ^= lane.low;\r\n\t }\r\n\r\n\t // Temporary values\r\n\t var Tx = T[x];\r\n\t Tx.high = tMsw;\r\n\t Tx.low = tLsw;\r\n\t }\r\n\t for (var x = 0; x < 5; x++) {\r\n\t // Shortcuts\r\n\t var Tx4 = T[(x + 4) % 5];\r\n\t var Tx1 = T[(x + 1) % 5];\r\n\t var Tx1Msw = Tx1.high;\r\n\t var Tx1Lsw = Tx1.low;\r\n\r\n\t // Mix surrounding columns\r\n\t var tMsw = Tx4.high ^ ((Tx1Msw << 1) | (Tx1Lsw >>> 31));\r\n\t var tLsw = Tx4.low ^ ((Tx1Lsw << 1) | (Tx1Msw >>> 31));\r\n\t for (var y = 0; y < 5; y++) {\r\n\t var lane = state[x + 5 * y];\r\n\t lane.high ^= tMsw;\r\n\t lane.low ^= tLsw;\r\n\t }\r\n\t }\r\n\r\n\t // Rho Pi\r\n\t for (var laneIndex = 1; laneIndex < 25; laneIndex++) {\r\n\t // Shortcuts\r\n\t var lane = state[laneIndex];\r\n\t var laneMsw = lane.high;\r\n\t var laneLsw = lane.low;\r\n\t var rhoOffset = RHO_OFFSETS[laneIndex];\r\n\r\n\t // Rotate lanes\r\n\t if (rhoOffset < 32) {\r\n\t var tMsw = (laneMsw << rhoOffset) | (laneLsw >>> (32 - rhoOffset));\r\n\t var tLsw = (laneLsw << rhoOffset) | (laneMsw >>> (32 - rhoOffset));\r\n\t } else /* if (rhoOffset >= 32) */ {\r\n\t var tMsw = (laneLsw << (rhoOffset - 32)) | (laneMsw >>> (64 - rhoOffset));\r\n\t var tLsw = (laneMsw << (rhoOffset - 32)) | (laneLsw >>> (64 - rhoOffset));\r\n\t }\r\n\r\n\t // Transpose lanes\r\n\t var TPiLane = T[PI_INDEXES[laneIndex]];\r\n\t TPiLane.high = tMsw;\r\n\t TPiLane.low = tLsw;\r\n\t }\r\n\r\n\t // Rho pi at x = y = 0\r\n\t var T0 = T[0];\r\n\t var state0 = state[0];\r\n\t T0.high = state0.high;\r\n\t T0.low = state0.low;\r\n\r\n\t // Chi\r\n\t for (var x = 0; x < 5; x++) {\r\n\t for (var y = 0; y < 5; y++) {\r\n\t // Shortcuts\r\n\t var laneIndex = x + 5 * y;\r\n\t var lane = state[laneIndex];\r\n\t var TLane = T[laneIndex];\r\n\t var Tx1Lane = T[((x + 1) % 5) + 5 * y];\r\n\t var Tx2Lane = T[((x + 2) % 5) + 5 * y];\r\n\r\n\t // Mix rows\r\n\t lane.high = TLane.high ^ (~Tx1Lane.high & Tx2Lane.high);\r\n\t lane.low = TLane.low ^ (~Tx1Lane.low & Tx2Lane.low);\r\n\t }\r\n\t }\r\n\r\n\t // Iota\r\n\t var lane = state[0];\r\n\t var roundConstant = ROUND_CONSTANTS[round];\r\n\t lane.high ^= roundConstant.high;\r\n\t lane.low ^= roundConstant.low;;\r\n\t }\r\n\t },\r\n\r\n\t _doFinalize: function () {\r\n\t // Shortcuts\r\n\t var data = this._data;\r\n\t var dataWords = data.words;\r\n\t var nBitsTotal = this._nDataBytes * 8;\r\n\t var nBitsLeft = data.sigBytes * 8;\r\n\t var blockSizeBits = this.blockSize * 32;\r\n\r\n\t // Add padding\r\n\t dataWords[nBitsLeft >>> 5] |= 0x1 << (24 - nBitsLeft % 32);\r\n\t dataWords[((Math.ceil((nBitsLeft + 1) / blockSizeBits) * blockSizeBits) >>> 5) - 1] |= 0x80;\r\n\t data.sigBytes = dataWords.length * 4;\r\n\r\n\t // Hash final blocks\r\n\t this._process();\r\n\r\n\t // Shortcuts\r\n\t var state = this._state;\r\n\t var outputLengthBytes = this.cfg.outputLength / 8;\r\n\t var outputLengthLanes = outputLengthBytes / 8;\r\n\r\n\t // Squeeze\r\n\t var hashWords = [];\r\n\t for (var i = 0; i < outputLengthLanes; i++) {\r\n\t // Shortcuts\r\n\t var lane = state[i];\r\n\t var laneMsw = lane.high;\r\n\t var laneLsw = lane.low;\r\n\r\n\t // Swap endian\r\n\t laneMsw = (\r\n\t (((laneMsw << 8) | (laneMsw >>> 24)) & 0x00ff00ff) |\r\n\t (((laneMsw << 24) | (laneMsw >>> 8)) & 0xff00ff00)\r\n\t );\r\n\t laneLsw = (\r\n\t (((laneLsw << 8) | (laneLsw >>> 24)) & 0x00ff00ff) |\r\n\t (((laneLsw << 24) | (laneLsw >>> 8)) & 0xff00ff00)\r\n\t );\r\n\r\n\t // Squeeze state to retrieve hash\r\n\t hashWords.push(laneLsw);\r\n\t hashWords.push(laneMsw);\r\n\t }\r\n\r\n\t // Return final computed hash\r\n\t return new WordArray.init(hashWords, outputLengthBytes);\r\n\t },\r\n\r\n\t clone: function () {\r\n\t var clone = Hasher.clone.call(this);\r\n\r\n\t var state = clone._state = this._state.slice(0);\r\n\t for (var i = 0; i < 25; i++) {\r\n\t state[i] = state[i].clone();\r\n\t }\r\n\r\n\t return clone;\r\n\t }\r\n\t });\r\n\r\n\t /**\r\n\t * Shortcut function to the hasher's object interface.\r\n\t *\r\n\t * @param {WordArray|string} message The message to hash.\r\n\t *\r\n\t * @return {WordArray} The hash.\r\n\t *\r\n\t * @static\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var hash = CryptoJS.SHA3('message');\r\n\t * var hash = CryptoJS.SHA3(wordArray);\r\n\t */\r\n\t C.SHA3 = Hasher._createHelper(SHA3);\r\n\r\n\t /**\r\n\t * Shortcut function to the HMAC's object interface.\r\n\t *\r\n\t * @param {WordArray|string} message The message to hash.\r\n\t * @param {WordArray|string} key The secret key.\r\n\t *\r\n\t * @return {WordArray} The HMAC.\r\n\t *\r\n\t * @static\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var hmac = CryptoJS.HmacSHA3(message, key);\r\n\t */\r\n\t C.HmacSHA3 = Hasher._createHmacHelper(SHA3);\r\n\t}(Math));\r\n\r\n\r\n\t(function () {\r\n\t // Shortcuts\r\n\t var C = CryptoJS;\r\n\t var C_lib = C.lib;\r\n\t var Hasher = C_lib.Hasher;\r\n\t var C_x64 = C.x64;\r\n\t var X64Word = C_x64.Word;\r\n\t var X64WordArray = C_x64.WordArray;\r\n\t var C_algo = C.algo;\r\n\r\n\t function X64Word_create() {\r\n\t return X64Word.create.apply(X64Word, arguments);\r\n\t }\r\n\r\n\t // Constants\r\n\t var K = [\r\n\t X64Word_create(0x428a2f98, 0xd728ae22), X64Word_create(0x71374491, 0x23ef65cd),\r\n\t X64Word_create(0xb5c0fbcf, 0xec4d3b2f), X64Word_create(0xe9b5dba5, 0x8189dbbc),\r\n\t X64Word_create(0x3956c25b, 0xf348b538), X64Word_create(0x59f111f1, 0xb605d019),\r\n\t X64Word_create(0x923f82a4, 0xaf194f9b), X64Word_create(0xab1c5ed5, 0xda6d8118),\r\n\t X64Word_create(0xd807aa98, 0xa3030242), X64Word_create(0x12835b01, 0x45706fbe),\r\n\t X64Word_create(0x243185be, 0x4ee4b28c), X64Word_create(0x550c7dc3, 0xd5ffb4e2),\r\n\t X64Word_create(0x72be5d74, 0xf27b896f), X64Word_create(0x80deb1fe, 0x3b1696b1),\r\n\t X64Word_create(0x9bdc06a7, 0x25c71235), X64Word_create(0xc19bf174, 0xcf692694),\r\n\t X64Word_create(0xe49b69c1, 0x9ef14ad2), X64Word_create(0xefbe4786, 0x384f25e3),\r\n\t X64Word_create(0x0fc19dc6, 0x8b8cd5b5), X64Word_create(0x240ca1cc, 0x77ac9c65),\r\n\t X64Word_create(0x2de92c6f, 0x592b0275), X64Word_create(0x4a7484aa, 0x6ea6e483),\r\n\t X64Word_create(0x5cb0a9dc, 0xbd41fbd4), X64Word_create(0x76f988da, 0x831153b5),\r\n\t X64Word_create(0x983e5152, 0xee66dfab), X64Word_create(0xa831c66d, 0x2db43210),\r\n\t X64Word_create(0xb00327c8, 0x98fb213f), X64Word_create(0xbf597fc7, 0xbeef0ee4),\r\n\t X64Word_create(0xc6e00bf3, 0x3da88fc2), X64Word_create(0xd5a79147, 0x930aa725),\r\n\t X64Word_create(0x06ca6351, 0xe003826f), X64Word_create(0x14292967, 0x0a0e6e70),\r\n\t X64Word_create(0x27b70a85, 0x46d22ffc), X64Word_create(0x2e1b2138, 0x5c26c926),\r\n\t X64Word_create(0x4d2c6dfc, 0x5ac42aed), X64Word_create(0x53380d13, 0x9d95b3df),\r\n\t X64Word_create(0x650a7354, 0x8baf63de), X64Word_create(0x766a0abb, 0x3c77b2a8),\r\n\t X64Word_create(0x81c2c92e, 0x47edaee6), X64Word_create(0x92722c85, 0x1482353b),\r\n\t X64Word_create(0xa2bfe8a1, 0x4cf10364), X64Word_create(0xa81a664b, 0xbc423001),\r\n\t X64Word_create(0xc24b8b70, 0xd0f89791), X64Word_create(0xc76c51a3, 0x0654be30),\r\n\t X64Word_create(0xd192e819, 0xd6ef5218), X64Word_create(0xd6990624, 0x5565a910),\r\n\t X64Word_create(0xf40e3585, 0x5771202a), X64Word_create(0x106aa070, 0x32bbd1b8),\r\n\t X64Word_create(0x19a4c116, 0xb8d2d0c8), X64Word_create(0x1e376c08, 0x5141ab53),\r\n\t X64Word_create(0x2748774c, 0xdf8eeb99), X64Word_create(0x34b0bcb5, 0xe19b48a8),\r\n\t X64Word_create(0x391c0cb3, 0xc5c95a63), X64Word_create(0x4ed8aa4a, 0xe3418acb),\r\n\t X64Word_create(0x5b9cca4f, 0x7763e373), X64Word_create(0x682e6ff3, 0xd6b2b8a3),\r\n\t X64Word_create(0x748f82ee, 0x5defb2fc), X64Word_create(0x78a5636f, 0x43172f60),\r\n\t X64Word_create(0x84c87814, 0xa1f0ab72), X64Word_create(0x8cc70208, 0x1a6439ec),\r\n\t X64Word_create(0x90befffa, 0x23631e28), X64Word_create(0xa4506ceb, 0xde82bde9),\r\n\t X64Word_create(0xbef9a3f7, 0xb2c67915), X64Word_create(0xc67178f2, 0xe372532b),\r\n\t X64Word_create(0xca273ece, 0xea26619c), X64Word_create(0xd186b8c7, 0x21c0c207),\r\n\t X64Word_create(0xeada7dd6, 0xcde0eb1e), X64Word_create(0xf57d4f7f, 0xee6ed178),\r\n\t X64Word_create(0x06f067aa, 0x72176fba), X64Word_create(0x0a637dc5, 0xa2c898a6),\r\n\t X64Word_create(0x113f9804, 0xbef90dae), X64Word_create(0x1b710b35, 0x131c471b),\r\n\t X64Word_create(0x28db77f5, 0x23047d84), X64Word_create(0x32caab7b, 0x40c72493),\r\n\t X64Word_create(0x3c9ebe0a, 0x15c9bebc), X64Word_create(0x431d67c4, 0x9c100d4c),\r\n\t X64Word_create(0x4cc5d4be, 0xcb3e42b6), X64Word_create(0x597f299c, 0xfc657e2a),\r\n\t X64Word_create(0x5fcb6fab, 0x3ad6faec), X64Word_create(0x6c44198c, 0x4a475817)\r\n\t ];\r\n\r\n\t // Reusable objects\r\n\t var W = [];\r\n\t (function () {\r\n\t for (var i = 0; i < 80; i++) {\r\n\t W[i] = X64Word_create();\r\n\t }\r\n\t }());\r\n\r\n\t /**\r\n\t * SHA-512 hash algorithm.\r\n\t */\r\n\t var SHA512 = C_algo.SHA512 = Hasher.extend({\r\n\t _doReset: function () {\r\n\t this._hash = new X64WordArray.init([\r\n\t new X64Word.init(0x6a09e667, 0xf3bcc908), new X64Word.init(0xbb67ae85, 0x84caa73b),\r\n\t new X64Word.init(0x3c6ef372, 0xfe94f82b), new X64Word.init(0xa54ff53a, 0x5f1d36f1),\r\n\t new X64Word.init(0x510e527f, 0xade682d1), new X64Word.init(0x9b05688c, 0x2b3e6c1f),\r\n\t new X64Word.init(0x1f83d9ab, 0xfb41bd6b), new X64Word.init(0x5be0cd19, 0x137e2179)\r\n\t ]);\r\n\t },\r\n\r\n\t _doProcessBlock: function (M, offset) {\r\n\t // Shortcuts\r\n\t var H = this._hash.words;\r\n\r\n\t var H0 = H[0];\r\n\t var H1 = H[1];\r\n\t var H2 = H[2];\r\n\t var H3 = H[3];\r\n\t var H4 = H[4];\r\n\t var H5 = H[5];\r\n\t var H6 = H[6];\r\n\t var H7 = H[7];\r\n\r\n\t var H0h = H0.high;\r\n\t var H0l = H0.low;\r\n\t var H1h = H1.high;\r\n\t var H1l = H1.low;\r\n\t var H2h = H2.high;\r\n\t var H2l = H2.low;\r\n\t var H3h = H3.high;\r\n\t var H3l = H3.low;\r\n\t var H4h = H4.high;\r\n\t var H4l = H4.low;\r\n\t var H5h = H5.high;\r\n\t var H5l = H5.low;\r\n\t var H6h = H6.high;\r\n\t var H6l = H6.low;\r\n\t var H7h = H7.high;\r\n\t var H7l = H7.low;\r\n\r\n\t // Working variables\r\n\t var ah = H0h;\r\n\t var al = H0l;\r\n\t var bh = H1h;\r\n\t var bl = H1l;\r\n\t var ch = H2h;\r\n\t var cl = H2l;\r\n\t var dh = H3h;\r\n\t var dl = H3l;\r\n\t var eh = H4h;\r\n\t var el = H4l;\r\n\t var fh = H5h;\r\n\t var fl = H5l;\r\n\t var gh = H6h;\r\n\t var gl = H6l;\r\n\t var hh = H7h;\r\n\t var hl = H7l;\r\n\r\n\t // Rounds\r\n\t for (var i = 0; i < 80; i++) {\r\n\t // Shortcut\r\n\t var Wi = W[i];\r\n\r\n\t // Extend message\r\n\t if (i < 16) {\r\n\t var Wih = Wi.high = M[offset + i * 2] | 0;\r\n\t var Wil = Wi.low = M[offset + i * 2 + 1] | 0;\r\n\t } else {\r\n\t // Gamma0\r\n\t var gamma0x = W[i - 15];\r\n\t var gamma0xh = gamma0x.high;\r\n\t var gamma0xl = gamma0x.low;\r\n\t var gamma0h = ((gamma0xh >>> 1) | (gamma0xl << 31)) ^ ((gamma0xh >>> 8) | (gamma0xl << 24)) ^ (gamma0xh >>> 7);\r\n\t var gamma0l = ((gamma0xl >>> 1) | (gamma0xh << 31)) ^ ((gamma0xl >>> 8) | (gamma0xh << 24)) ^ ((gamma0xl >>> 7) | (gamma0xh << 25));\r\n\r\n\t // Gamma1\r\n\t var gamma1x = W[i - 2];\r\n\t var gamma1xh = gamma1x.high;\r\n\t var gamma1xl = gamma1x.low;\r\n\t var gamma1h = ((gamma1xh >>> 19) | (gamma1xl << 13)) ^ ((gamma1xh << 3) | (gamma1xl >>> 29)) ^ (gamma1xh >>> 6);\r\n\t var gamma1l = ((gamma1xl >>> 19) | (gamma1xh << 13)) ^ ((gamma1xl << 3) | (gamma1xh >>> 29)) ^ ((gamma1xl >>> 6) | (gamma1xh << 26));\r\n\r\n\t // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\r\n\t var Wi7 = W[i - 7];\r\n\t var Wi7h = Wi7.high;\r\n\t var Wi7l = Wi7.low;\r\n\r\n\t var Wi16 = W[i - 16];\r\n\t var Wi16h = Wi16.high;\r\n\t var Wi16l = Wi16.low;\r\n\r\n\t var Wil = gamma0l + Wi7l;\r\n\t var Wih = gamma0h + Wi7h + ((Wil >>> 0) < (gamma0l >>> 0) ? 1 : 0);\r\n\t var Wil = Wil + gamma1l;\r\n\t var Wih = Wih + gamma1h + ((Wil >>> 0) < (gamma1l >>> 0) ? 1 : 0);\r\n\t var Wil = Wil + Wi16l;\r\n\t var Wih = Wih + Wi16h + ((Wil >>> 0) < (Wi16l >>> 0) ? 1 : 0);\r\n\r\n\t Wi.high = Wih;\r\n\t Wi.low = Wil;\r\n\t }\r\n\r\n\t var chh = (eh & fh) ^ (~eh & gh);\r\n\t var chl = (el & fl) ^ (~el & gl);\r\n\t var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);\r\n\t var majl = (al & bl) ^ (al & cl) ^ (bl & cl);\r\n\r\n\t var sigma0h = ((ah >>> 28) | (al << 4)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7));\r\n\t var sigma0l = ((al >>> 28) | (ah << 4)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7));\r\n\t var sigma1h = ((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9));\r\n\t var sigma1l = ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9));\r\n\r\n\t // t1 = h + sigma1 + ch + K[i] + W[i]\r\n\t var Ki = K[i];\r\n\t var Kih = Ki.high;\r\n\t var Kil = Ki.low;\r\n\r\n\t var t1l = hl + sigma1l;\r\n\t var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0);\r\n\t var t1l = t1l + chl;\r\n\t var t1h = t1h + chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0);\r\n\t var t1l = t1l + Kil;\r\n\t var t1h = t1h + Kih + ((t1l >>> 0) < (Kil >>> 0) ? 1 : 0);\r\n\t var t1l = t1l + Wil;\r\n\t var t1h = t1h + Wih + ((t1l >>> 0) < (Wil >>> 0) ? 1 : 0);\r\n\r\n\t // t2 = sigma0 + maj\r\n\t var t2l = sigma0l + majl;\r\n\t var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0);\r\n\r\n\t // Update working variables\r\n\t hh = gh;\r\n\t hl = gl;\r\n\t gh = fh;\r\n\t gl = fl;\r\n\t fh = eh;\r\n\t fl = el;\r\n\t el = (dl + t1l) | 0;\r\n\t eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;\r\n\t dh = ch;\r\n\t dl = cl;\r\n\t ch = bh;\r\n\t cl = bl;\r\n\t bh = ah;\r\n\t bl = al;\r\n\t al = (t1l + t2l) | 0;\r\n\t ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0;\r\n\t }\r\n\r\n\t // Intermediate hash value\r\n\t H0l = H0.low = (H0l + al);\r\n\t H0.high = (H0h + ah + ((H0l >>> 0) < (al >>> 0) ? 1 : 0));\r\n\t H1l = H1.low = (H1l + bl);\r\n\t H1.high = (H1h + bh + ((H1l >>> 0) < (bl >>> 0) ? 1 : 0));\r\n\t H2l = H2.low = (H2l + cl);\r\n\t H2.high = (H2h + ch + ((H2l >>> 0) < (cl >>> 0) ? 1 : 0));\r\n\t H3l = H3.low = (H3l + dl);\r\n\t H3.high = (H3h + dh + ((H3l >>> 0) < (dl >>> 0) ? 1 : 0));\r\n\t H4l = H4.low = (H4l + el);\r\n\t H4.high = (H4h + eh + ((H4l >>> 0) < (el >>> 0) ? 1 : 0));\r\n\t H5l = H5.low = (H5l + fl);\r\n\t H5.high = (H5h + fh + ((H5l >>> 0) < (fl >>> 0) ? 1 : 0));\r\n\t H6l = H6.low = (H6l + gl);\r\n\t H6.high = (H6h + gh + ((H6l >>> 0) < (gl >>> 0) ? 1 : 0));\r\n\t H7l = H7.low = (H7l + hl);\r\n\t H7.high = (H7h + hh + ((H7l >>> 0) < (hl >>> 0) ? 1 : 0));\r\n\t },\r\n\r\n\t _doFinalize: function () {\r\n\t // Shortcuts\r\n\t var data = this._data;\r\n\t var dataWords = data.words;\r\n\r\n\t var nBitsTotal = this._nDataBytes * 8;\r\n\t var nBitsLeft = data.sigBytes * 8;\r\n\r\n\t // Add padding\r\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\r\n\t dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 30] = Math.floor(nBitsTotal / 0x100000000);\r\n\t dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 31] = nBitsTotal;\r\n\t data.sigBytes = dataWords.length * 4;\r\n\r\n\t // Hash final blocks\r\n\t this._process();\r\n\r\n\t // Convert hash to 32-bit word array before returning\r\n\t var hash = this._hash.toX32();\r\n\r\n\t // Return final computed hash\r\n\t return hash;\r\n\t },\r\n\r\n\t clone: function () {\r\n\t var clone = Hasher.clone.call(this);\r\n\t clone._hash = this._hash.clone();\r\n\r\n\t return clone;\r\n\t },\r\n\r\n\t blockSize: 1024/32\r\n\t });\r\n\r\n\t /**\r\n\t * Shortcut function to the hasher's object interface.\r\n\t *\r\n\t * @param {WordArray|string} message The message to hash.\r\n\t *\r\n\t * @return {WordArray} The hash.\r\n\t *\r\n\t * @static\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var hash = CryptoJS.SHA512('message');\r\n\t * var hash = CryptoJS.SHA512(wordArray);\r\n\t */\r\n\t C.SHA512 = Hasher._createHelper(SHA512);\r\n\r\n\t /**\r\n\t * Shortcut function to the HMAC's object interface.\r\n\t *\r\n\t * @param {WordArray|string} message The message to hash.\r\n\t * @param {WordArray|string} key The secret key.\r\n\t *\r\n\t * @return {WordArray} The HMAC.\r\n\t *\r\n\t * @static\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var hmac = CryptoJS.HmacSHA512(message, key);\r\n\t */\r\n\t C.HmacSHA512 = Hasher._createHmacHelper(SHA512);\r\n\t}());\r\n\r\n\r\n\t(function () {\r\n\t // Shortcuts\r\n\t var C = CryptoJS;\r\n\t var C_x64 = C.x64;\r\n\t var X64Word = C_x64.Word;\r\n\t var X64WordArray = C_x64.WordArray;\r\n\t var C_algo = C.algo;\r\n\t var SHA512 = C_algo.SHA512;\r\n\r\n\t /**\r\n\t * SHA-384 hash algorithm.\r\n\t */\r\n\t var SHA384 = C_algo.SHA384 = SHA512.extend({\r\n\t _doReset: function () {\r\n\t this._hash = new X64WordArray.init([\r\n\t new X64Word.init(0xcbbb9d5d, 0xc1059ed8), new X64Word.init(0x629a292a, 0x367cd507),\r\n\t new X64Word.init(0x9159015a, 0x3070dd17), new X64Word.init(0x152fecd8, 0xf70e5939),\r\n\t new X64Word.init(0x67332667, 0xffc00b31), new X64Word.init(0x8eb44a87, 0x68581511),\r\n\t new X64Word.init(0xdb0c2e0d, 0x64f98fa7), new X64Word.init(0x47b5481d, 0xbefa4fa4)\r\n\t ]);\r\n\t },\r\n\r\n\t _doFinalize: function () {\r\n\t var hash = SHA512._doFinalize.call(this);\r\n\r\n\t hash.sigBytes -= 16;\r\n\r\n\t return hash;\r\n\t }\r\n\t });\r\n\r\n\t /**\r\n\t * Shortcut function to the hasher's object interface.\r\n\t *\r\n\t * @param {WordArray|string} message The message to hash.\r\n\t *\r\n\t * @return {WordArray} The hash.\r\n\t *\r\n\t * @static\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var hash = CryptoJS.SHA384('message');\r\n\t * var hash = CryptoJS.SHA384(wordArray);\r\n\t */\r\n\t C.SHA384 = SHA512._createHelper(SHA384);\r\n\r\n\t /**\r\n\t * Shortcut function to the HMAC's object interface.\r\n\t *\r\n\t * @param {WordArray|string} message The message to hash.\r\n\t * @param {WordArray|string} key The secret key.\r\n\t *\r\n\t * @return {WordArray} The HMAC.\r\n\t *\r\n\t * @static\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var hmac = CryptoJS.HmacSHA384(message, key);\r\n\t */\r\n\t C.HmacSHA384 = SHA512._createHmacHelper(SHA384);\r\n\t}());\r\n\r\n\r\n\t/**\r\n\t * Cipher core components.\r\n\t */\r\n\tCryptoJS.lib.Cipher || (function (undefined) {\r\n\t // Shortcuts\r\n\t var C = CryptoJS;\r\n\t var C_lib = C.lib;\r\n\t var Base = C_lib.Base;\r\n\t var WordArray = C_lib.WordArray;\r\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\r\n\t var C_enc = C.enc;\r\n\t var Utf8 = C_enc.Utf8;\r\n\t var Base64 = C_enc.Base64;\r\n\t var C_algo = C.algo;\r\n\t var EvpKDF = C_algo.EvpKDF;\r\n\r\n\t /**\r\n\t * Abstract base cipher template.\r\n\t *\r\n\t * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\r\n\t * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\r\n\t * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\r\n\t * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\r\n\t */\r\n\t var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\r\n\t /**\r\n\t * Configuration options.\r\n\t *\r\n\t * @property {WordArray} iv The IV to use for this operation.\r\n\t */\r\n\t cfg: Base.extend(),\r\n\r\n\t /**\r\n\t * Creates this cipher in encryption mode.\r\n\t *\r\n\t * @param {WordArray} key The key.\r\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\r\n\t *\r\n\t * @return {Cipher} A cipher instance.\r\n\t *\r\n\t * @static\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\r\n\t */\r\n\t createEncryptor: function (key, cfg) {\r\n\t return this.create(this._ENC_XFORM_MODE, key, cfg);\r\n\t },\r\n\r\n\t /**\r\n\t * Creates this cipher in decryption mode.\r\n\t *\r\n\t * @param {WordArray} key The key.\r\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\r\n\t *\r\n\t * @return {Cipher} A cipher instance.\r\n\t *\r\n\t * @static\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\r\n\t */\r\n\t createDecryptor: function (key, cfg) {\r\n\t return this.create(this._DEC_XFORM_MODE, key, cfg);\r\n\t },\r\n\r\n\t /**\r\n\t * Initializes a newly created cipher.\r\n\t *\r\n\t * @param {number} xformMode Either the encryption or decryption transormation mode constant.\r\n\t * @param {WordArray} key The key.\r\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\r\n\t */\r\n\t init: function (xformMode, key, cfg) {\r\n\t // Apply config defaults\r\n\t this.cfg = this.cfg.extend(cfg);\r\n\r\n\t // Store transform mode and key\r\n\t this._xformMode = xformMode;\r\n\t this._key = key;\r\n\r\n\t // Set initial values\r\n\t this.reset();\r\n\t },\r\n\r\n\t /**\r\n\t * Resets this cipher to its initial state.\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * cipher.reset();\r\n\t */\r\n\t reset: function () {\r\n\t // Reset data buffer\r\n\t BufferedBlockAlgorithm.reset.call(this);\r\n\r\n\t // Perform concrete-cipher logic\r\n\t this._doReset();\r\n\t },\r\n\r\n\t /**\r\n\t * Adds data to be encrypted or decrypted.\r\n\t *\r\n\t * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\r\n\t *\r\n\t * @return {WordArray} The data after processing.\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var encrypted = cipher.process('data');\r\n\t * var encrypted = cipher.process(wordArray);\r\n\t */\r\n\t process: function (dataUpdate) {\r\n\t // Append\r\n\t this._append(dataUpdate);\r\n\r\n\t // Process available blocks\r\n\t return this._process();\r\n\t },\r\n\r\n\t /**\r\n\t * Finalizes the encryption or decryption process.\r\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\r\n\t *\r\n\t * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\r\n\t *\r\n\t * @return {WordArray} The data after final processing.\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var encrypted = cipher.finalize();\r\n\t * var encrypted = cipher.finalize('data');\r\n\t * var encrypted = cipher.finalize(wordArray);\r\n\t */\r\n\t finalize: function (dataUpdate) {\r\n\t // Final data update\r\n\t if (dataUpdate) {\r\n\t this._append(dataUpdate);\r\n\t }\r\n\r\n\t // Perform concrete-cipher logic\r\n\t var finalProcessedData = this._doFinalize();\r\n\r\n\t return finalProcessedData;\r\n\t },\r\n\r\n\t keySize: 128/32,\r\n\r\n\t ivSize: 128/32,\r\n\r\n\t _ENC_XFORM_MODE: 1,\r\n\r\n\t _DEC_XFORM_MODE: 2,\r\n\r\n\t /**\r\n\t * Creates shortcut functions to a cipher's object interface.\r\n\t *\r\n\t * @param {Cipher} cipher The cipher to create a helper for.\r\n\t *\r\n\t * @return {Object} An object with encrypt and decrypt shortcut functions.\r\n\t *\r\n\t * @static\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\r\n\t */\r\n\t _createHelper: (function () {\r\n\t function selectCipherStrategy(key) {\r\n\t if (typeof key == 'string') {\r\n\t return PasswordBasedCipher;\r\n\t } else {\r\n\t return SerializableCipher;\r\n\t }\r\n\t }\r\n\r\n\t return function (cipher) {\r\n\t return {\r\n\t encrypt: function (message, key, cfg) {\r\n\t return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\r\n\t },\r\n\r\n\t decrypt: function (ciphertext, key, cfg) {\r\n\t return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\r\n\t }\r\n\t };\r\n\t };\r\n\t }())\r\n\t });\r\n\r\n\t /**\r\n\t * Abstract base stream cipher template.\r\n\t *\r\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\r\n\t */\r\n\t var StreamCipher = C_lib.StreamCipher = Cipher.extend({\r\n\t _doFinalize: function () {\r\n\t // Process partial blocks\r\n\t var finalProcessedBlocks = this._process(!!'flush');\r\n\r\n\t return finalProcessedBlocks;\r\n\t },\r\n\r\n\t blockSize: 1\r\n\t });\r\n\r\n\t /**\r\n\t * Mode namespace.\r\n\t */\r\n\t var C_mode = C.mode = {};\r\n\r\n\t /**\r\n\t * Abstract base block cipher mode template.\r\n\t */\r\n\t var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\r\n\t /**\r\n\t * Creates this mode for encryption.\r\n\t *\r\n\t * @param {Cipher} cipher A block cipher instance.\r\n\t * @param {Array} iv The IV words.\r\n\t *\r\n\t * @static\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\r\n\t */\r\n\t createEncryptor: function (cipher, iv) {\r\n\t return this.Encryptor.create(cipher, iv);\r\n\t },\r\n\r\n\t /**\r\n\t * Creates this mode for decryption.\r\n\t *\r\n\t * @param {Cipher} cipher A block cipher instance.\r\n\t * @param {Array} iv The IV words.\r\n\t *\r\n\t * @static\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\r\n\t */\r\n\t createDecryptor: function (cipher, iv) {\r\n\t return this.Decryptor.create(cipher, iv);\r\n\t },\r\n\r\n\t /**\r\n\t * Initializes a newly created mode.\r\n\t *\r\n\t * @param {Cipher} cipher A block cipher instance.\r\n\t * @param {Array} iv The IV words.\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\r\n\t */\r\n\t init: function (cipher, iv) {\r\n\t this._cipher = cipher;\r\n\t this._iv = iv;\r\n\t }\r\n\t });\r\n\r\n\t /**\r\n\t * Cipher Block Chaining mode.\r\n\t */\r\n\t var CBC = C_mode.CBC = (function () {\r\n\t /**\r\n\t * Abstract base CBC mode.\r\n\t */\r\n\t var CBC = BlockCipherMode.extend();\r\n\r\n\t /**\r\n\t * CBC encryptor.\r\n\t */\r\n\t CBC.Encryptor = CBC.extend({\r\n\t /**\r\n\t * Processes the data block at offset.\r\n\t *\r\n\t * @param {Array} words The data words to operate on.\r\n\t * @param {number} offset The offset where the block starts.\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * mode.processBlock(data.words, offset);\r\n\t */\r\n\t processBlock: function (words, offset) {\r\n\t // Shortcuts\r\n\t var cipher = this._cipher;\r\n\t var blockSize = cipher.blockSize;\r\n\r\n\t // XOR and encrypt\r\n\t xorBlock.call(this, words, offset, blockSize);\r\n\t cipher.encryptBlock(words, offset);\r\n\r\n\t // Remember this block to use with next block\r\n\t this._prevBlock = words.slice(offset, offset + blockSize);\r\n\t }\r\n\t });\r\n\r\n\t /**\r\n\t * CBC decryptor.\r\n\t */\r\n\t CBC.Decryptor = CBC.extend({\r\n\t /**\r\n\t * Processes the data block at offset.\r\n\t *\r\n\t * @param {Array} words The data words to operate on.\r\n\t * @param {number} offset The offset where the block starts.\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * mode.processBlock(data.words, offset);\r\n\t */\r\n\t processBlock: function (words, offset) {\r\n\t // Shortcuts\r\n\t var cipher = this._cipher;\r\n\t var blockSize = cipher.blockSize;\r\n\r\n\t // Remember this block to use with next block\r\n\t var thisBlock = words.slice(offset, offset + blockSize);\r\n\r\n\t // Decrypt and XOR\r\n\t cipher.decryptBlock(words, offset);\r\n\t xorBlock.call(this, words, offset, blockSize);\r\n\r\n\t // This block becomes the previous block\r\n\t this._prevBlock = thisBlock;\r\n\t }\r\n\t });\r\n\r\n\t function xorBlock(words, offset, blockSize) {\r\n\t // Shortcut\r\n\t var iv = this._iv;\r\n\r\n\t // Choose mixing block\r\n\t if (iv) {\r\n\t var block = iv;\r\n\r\n\t // Remove IV for subsequent blocks\r\n\t this._iv = undefined;\r\n\t } else {\r\n\t var block = this._prevBlock;\r\n\t }\r\n\r\n\t // XOR blocks\r\n\t for (var i = 0; i < blockSize; i++) {\r\n\t words[offset + i] ^= block[i];\r\n\t }\r\n\t }\r\n\r\n\t return CBC;\r\n\t }());\r\n\r\n\t /**\r\n\t * Padding namespace.\r\n\t */\r\n\t var C_pad = C.pad = {};\r\n\r\n\t /**\r\n\t * PKCS #5/7 padding strategy.\r\n\t */\r\n\t var Pkcs7 = C_pad.Pkcs7 = {\r\n\t /**\r\n\t * Pads data using the algorithm defined in PKCS #5/7.\r\n\t *\r\n\t * @param {WordArray} data The data to pad.\r\n\t * @param {number} blockSize The multiple that the data should be padded to.\r\n\t *\r\n\t * @static\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * CryptoJS.pad.Pkcs7.pad(wordArray, 4);\r\n\t */\r\n\t pad: function (data, blockSize) {\r\n\t // Shortcut\r\n\t var blockSizeBytes = blockSize * 4;\r\n\r\n\t // Count padding bytes\r\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\r\n\r\n\t // Create padding word\r\n\t var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;\r\n\r\n\t // Create padding\r\n\t var paddingWords = [];\r\n\t for (var i = 0; i < nPaddingBytes; i += 4) {\r\n\t paddingWords.push(paddingWord);\r\n\t }\r\n\t var padding = WordArray.create(paddingWords, nPaddingBytes);\r\n\r\n\t // Add padding\r\n\t data.concat(padding);\r\n\t },\r\n\r\n\t /**\r\n\t * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\r\n\t *\r\n\t * @param {WordArray} data The data to unpad.\r\n\t *\r\n\t * @static\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * CryptoJS.pad.Pkcs7.unpad(wordArray);\r\n\t */\r\n\t unpad: function (data) {\r\n\t // Get number of padding bytes from last byte\r\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\r\n\r\n\t // Remove padding\r\n\t data.sigBytes -= nPaddingBytes;\r\n\t }\r\n\t };\r\n\r\n\t /**\r\n\t * Abstract base block cipher template.\r\n\t *\r\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\r\n\t */\r\n\t var BlockCipher = C_lib.BlockCipher = Cipher.extend({\r\n\t /**\r\n\t * Configuration options.\r\n\t *\r\n\t * @property {Mode} mode The block mode to use. Default: CBC\r\n\t * @property {Padding} padding The padding strategy to use. Default: Pkcs7\r\n\t */\r\n\t cfg: Cipher.cfg.extend({\r\n\t mode: CBC,\r\n\t padding: Pkcs7\r\n\t }),\r\n\r\n\t reset: function () {\r\n\t // Reset cipher\r\n\t Cipher.reset.call(this);\r\n\r\n\t // Shortcuts\r\n\t var cfg = this.cfg;\r\n\t var iv = cfg.iv;\r\n\t var mode = cfg.mode;\r\n\r\n\t // Reset block mode\r\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\r\n\t var modeCreator = mode.createEncryptor;\r\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\r\n\t var modeCreator = mode.createDecryptor;\r\n\t // Keep at least one block in the buffer for unpadding\r\n\t this._minBufferSize = 1;\r\n\t }\r\n\r\n\t if (this._mode && this._mode.__creator == modeCreator) {\r\n\t this._mode.init(this, iv && iv.words);\r\n\t } else {\r\n\t this._mode = modeCreator.call(mode, this, iv && iv.words);\r\n\t this._mode.__creator = modeCreator;\r\n\t }\r\n\t },\r\n\r\n\t _doProcessBlock: function (words, offset) {\r\n\t this._mode.processBlock(words, offset);\r\n\t },\r\n\r\n\t _doFinalize: function () {\r\n\t // Shortcut\r\n\t var padding = this.cfg.padding;\r\n\r\n\t // Finalize\r\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\r\n\t // Pad data\r\n\t padding.pad(this._data, this.blockSize);\r\n\r\n\t // Process final blocks\r\n\t var finalProcessedBlocks = this._process(!!'flush');\r\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\r\n\t // Process final blocks\r\n\t var finalProcessedBlocks = this._process(!!'flush');\r\n\r\n\t // Unpad data\r\n\t padding.unpad(finalProcessedBlocks);\r\n\t }\r\n\r\n\t return finalProcessedBlocks;\r\n\t },\r\n\r\n\t blockSize: 128/32\r\n\t });\r\n\r\n\t /**\r\n\t * A collection of cipher parameters.\r\n\t *\r\n\t * @property {WordArray} ciphertext The raw ciphertext.\r\n\t * @property {WordArray} key The key to this ciphertext.\r\n\t * @property {WordArray} iv The IV used in the ciphering operation.\r\n\t * @property {WordArray} salt The salt used with a key derivation function.\r\n\t * @property {Cipher} algorithm The cipher algorithm.\r\n\t * @property {Mode} mode The block mode used in the ciphering operation.\r\n\t * @property {Padding} padding The padding scheme used in the ciphering operation.\r\n\t * @property {number} blockSize The block size of the cipher.\r\n\t * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\r\n\t */\r\n\t var CipherParams = C_lib.CipherParams = Base.extend({\r\n\t /**\r\n\t * Initializes a newly created cipher params object.\r\n\t *\r\n\t * @param {Object} cipherParams An object with any of the possible cipher parameters.\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var cipherParams = CryptoJS.lib.CipherParams.create({\r\n\t * ciphertext: ciphertextWordArray,\r\n\t * key: keyWordArray,\r\n\t * iv: ivWordArray,\r\n\t * salt: saltWordArray,\r\n\t * algorithm: CryptoJS.algo.AES,\r\n\t * mode: CryptoJS.mode.CBC,\r\n\t * padding: CryptoJS.pad.PKCS7,\r\n\t * blockSize: 4,\r\n\t * formatter: CryptoJS.format.OpenSSL\r\n\t * });\r\n\t */\r\n\t init: function (cipherParams) {\r\n\t this.mixIn(cipherParams);\r\n\t },\r\n\r\n\t /**\r\n\t * Converts this cipher params object to a string.\r\n\t *\r\n\t * @param {Format} formatter (Optional) The formatting strategy to use.\r\n\t *\r\n\t * @return {string} The stringified cipher params.\r\n\t *\r\n\t * @throws Error If neither the formatter nor the default formatter is set.\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var string = cipherParams + '';\r\n\t * var string = cipherParams.toString();\r\n\t * var string = cipherParams.toString(CryptoJS.format.OpenSSL);\r\n\t */\r\n\t toString: function (formatter) {\r\n\t return (formatter || this.formatter).stringify(this);\r\n\t }\r\n\t });\r\n\r\n\t /**\r\n\t * Format namespace.\r\n\t */\r\n\t var C_format = C.format = {};\r\n\r\n\t /**\r\n\t * OpenSSL formatting strategy.\r\n\t */\r\n\t var OpenSSLFormatter = C_format.OpenSSL = {\r\n\t /**\r\n\t * Converts a cipher params object to an OpenSSL-compatible string.\r\n\t *\r\n\t * @param {CipherParams} cipherParams The cipher params object.\r\n\t *\r\n\t * @return {string} The OpenSSL-compatible string.\r\n\t *\r\n\t * @static\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\r\n\t */\r\n\t stringify: function (cipherParams) {\r\n\t // Shortcuts\r\n\t var ciphertext = cipherParams.ciphertext;\r\n\t var salt = cipherParams.salt;\r\n\r\n\t // Format\r\n\t if (salt) {\r\n\t var wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\r\n\t } else {\r\n\t var wordArray = ciphertext;\r\n\t }\r\n\r\n\t return wordArray.toString(Base64);\r\n\t },\r\n\r\n\t /**\r\n\t * Converts an OpenSSL-compatible string to a cipher params object.\r\n\t *\r\n\t * @param {string} openSSLStr The OpenSSL-compatible string.\r\n\t *\r\n\t * @return {CipherParams} The cipher params object.\r\n\t *\r\n\t * @static\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\r\n\t */\r\n\t parse: function (openSSLStr) {\r\n\t // Parse base64\r\n\t var ciphertext = Base64.parse(openSSLStr);\r\n\r\n\t // Shortcut\r\n\t var ciphertextWords = ciphertext.words;\r\n\r\n\t // Test for salt\r\n\t if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\r\n\t // Extract salt\r\n\t var salt = WordArray.create(ciphertextWords.slice(2, 4));\r\n\r\n\t // Remove salt from ciphertext\r\n\t ciphertextWords.splice(0, 4);\r\n\t ciphertext.sigBytes -= 16;\r\n\t }\r\n\r\n\t return CipherParams.create({ ciphertext: ciphertext, salt: salt });\r\n\t }\r\n\t };\r\n\r\n\t /**\r\n\t * A cipher wrapper that returns ciphertext as a serializable cipher params object.\r\n\t */\r\n\t var SerializableCipher = C_lib.SerializableCipher = Base.extend({\r\n\t /**\r\n\t * Configuration options.\r\n\t *\r\n\t * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\r\n\t */\r\n\t cfg: Base.extend({\r\n\t format: OpenSSLFormatter\r\n\t }),\r\n\r\n\t /**\r\n\t * Encrypts a message.\r\n\t *\r\n\t * @param {Cipher} cipher The cipher algorithm to use.\r\n\t * @param {WordArray|string} message The message to encrypt.\r\n\t * @param {WordArray} key The key.\r\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\r\n\t *\r\n\t * @return {CipherParams} A cipher params object.\r\n\t *\r\n\t * @static\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\r\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\r\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\r\n\t */\r\n\t encrypt: function (cipher, message, key, cfg) {\r\n\t // Apply config defaults\r\n\t cfg = this.cfg.extend(cfg);\r\n\r\n\t // Encrypt\r\n\t var encryptor = cipher.createEncryptor(key, cfg);\r\n\t var ciphertext = encryptor.finalize(message);\r\n\r\n\t // Shortcut\r\n\t var cipherCfg = encryptor.cfg;\r\n\r\n\t // Create and return serializable cipher params\r\n\t return CipherParams.create({\r\n\t ciphertext: ciphertext,\r\n\t key: key,\r\n\t iv: cipherCfg.iv,\r\n\t algorithm: cipher,\r\n\t mode: cipherCfg.mode,\r\n\t padding: cipherCfg.padding,\r\n\t blockSize: cipher.blockSize,\r\n\t formatter: cfg.format\r\n\t });\r\n\t },\r\n\r\n\t /**\r\n\t * Decrypts serialized ciphertext.\r\n\t *\r\n\t * @param {Cipher} cipher The cipher algorithm to use.\r\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\r\n\t * @param {WordArray} key The key.\r\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\r\n\t *\r\n\t * @return {WordArray} The plaintext.\r\n\t *\r\n\t * @static\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\r\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\r\n\t */\r\n\t decrypt: function (cipher, ciphertext, key, cfg) {\r\n\t // Apply config defaults\r\n\t cfg = this.cfg.extend(cfg);\r\n\r\n\t // Convert string to CipherParams\r\n\t ciphertext = this._parse(ciphertext, cfg.format);\r\n\r\n\t // Decrypt\r\n\t var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\r\n\r\n\t return plaintext;\r\n\t },\r\n\r\n\t /**\r\n\t * Converts serialized ciphertext to CipherParams,\r\n\t * else assumed CipherParams already and returns ciphertext unchanged.\r\n\t *\r\n\t * @param {CipherParams|string} ciphertext The ciphertext.\r\n\t * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\r\n\t *\r\n\t * @return {CipherParams} The unserialized ciphertext.\r\n\t *\r\n\t * @static\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\r\n\t */\r\n\t _parse: function (ciphertext, format) {\r\n\t if (typeof ciphertext == 'string') {\r\n\t return format.parse(ciphertext, this);\r\n\t } else {\r\n\t return ciphertext;\r\n\t }\r\n\t }\r\n\t });\r\n\r\n\t /**\r\n\t * Key derivation function namespace.\r\n\t */\r\n\t var C_kdf = C.kdf = {};\r\n\r\n\t /**\r\n\t * OpenSSL key derivation function.\r\n\t */\r\n\t var OpenSSLKdf = C_kdf.OpenSSL = {\r\n\t /**\r\n\t * Derives a key and IV from a password.\r\n\t *\r\n\t * @param {string} password The password to derive from.\r\n\t * @param {number} keySize The size in words of the key to generate.\r\n\t * @param {number} ivSize The size in words of the IV to generate.\r\n\t * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\r\n\t *\r\n\t * @return {CipherParams} A cipher params object with the key, IV, and salt.\r\n\t *\r\n\t * @static\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\r\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\r\n\t */\r\n\t execute: function (password, keySize, ivSize, salt) {\r\n\t // Generate random salt\r\n\t if (!salt) {\r\n\t salt = WordArray.random(64/8);\r\n\t }\r\n\r\n\t // Derive key and IV\r\n\t var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);\r\n\r\n\t // Separate key and IV\r\n\t var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\r\n\t key.sigBytes = keySize * 4;\r\n\r\n\t // Return params\r\n\t return CipherParams.create({ key: key, iv: iv, salt: salt });\r\n\t }\r\n\t };\r\n\r\n\t /**\r\n\t * A serializable cipher wrapper that derives the key from a password,\r\n\t * and returns ciphertext as a serializable cipher params object.\r\n\t */\r\n\t var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\r\n\t /**\r\n\t * Configuration options.\r\n\t *\r\n\t * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\r\n\t */\r\n\t cfg: SerializableCipher.cfg.extend({\r\n\t kdf: OpenSSLKdf\r\n\t }),\r\n\r\n\t /**\r\n\t * Encrypts a message using a password.\r\n\t *\r\n\t * @param {Cipher} cipher The cipher algorithm to use.\r\n\t * @param {WordArray|string} message The message to encrypt.\r\n\t * @param {string} password The password.\r\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\r\n\t *\r\n\t * @return {CipherParams} A cipher params object.\r\n\t *\r\n\t * @static\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\r\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\r\n\t */\r\n\t encrypt: function (cipher, message, password, cfg) {\r\n\t // Apply config defaults\r\n\t cfg = this.cfg.extend(cfg);\r\n\r\n\t // Derive key and other params\r\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize);\r\n\r\n\t // Add IV to config\r\n\t cfg.iv = derivedParams.iv;\r\n\r\n\t // Encrypt\r\n\t var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);\r\n\r\n\t // Mix in derived params\r\n\t ciphertext.mixIn(derivedParams);\r\n\r\n\t return ciphertext;\r\n\t },\r\n\r\n\t /**\r\n\t * Decrypts serialized ciphertext using a password.\r\n\t *\r\n\t * @param {Cipher} cipher The cipher algorithm to use.\r\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\r\n\t * @param {string} password The password.\r\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\r\n\t *\r\n\t * @return {WordArray} The plaintext.\r\n\t *\r\n\t * @static\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\r\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\r\n\t */\r\n\t decrypt: function (cipher, ciphertext, password, cfg) {\r\n\t // Apply config defaults\r\n\t cfg = this.cfg.extend(cfg);\r\n\r\n\t // Convert string to CipherParams\r\n\t ciphertext = this._parse(ciphertext, cfg.format);\r\n\r\n\t // Derive key and other params\r\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt);\r\n\r\n\t // Add IV to config\r\n\t cfg.iv = derivedParams.iv;\r\n\r\n\t // Decrypt\r\n\t var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\r\n\r\n\t return plaintext;\r\n\t }\r\n\t });\r\n\t}());\r\n\r\n\r\n\t/**\r\n\t * Cipher Feedback block mode.\r\n\t */\r\n\tCryptoJS.mode.CFB = (function () {\r\n\t var CFB = CryptoJS.lib.BlockCipherMode.extend();\r\n\r\n\t CFB.Encryptor = CFB.extend({\r\n\t processBlock: function (words, offset) {\r\n\t // Shortcuts\r\n\t var cipher = this._cipher;\r\n\t var blockSize = cipher.blockSize;\r\n\r\n\t generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\r\n\r\n\t // Remember this block to use with next block\r\n\t this._prevBlock = words.slice(offset, offset + blockSize);\r\n\t }\r\n\t });\r\n\r\n\t CFB.Decryptor = CFB.extend({\r\n\t processBlock: function (words, offset) {\r\n\t // Shortcuts\r\n\t var cipher = this._cipher;\r\n\t var blockSize = cipher.blockSize;\r\n\r\n\t // Remember this block to use with next block\r\n\t var thisBlock = words.slice(offset, offset + blockSize);\r\n\r\n\t generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\r\n\r\n\t // This block becomes the previous block\r\n\t this._prevBlock = thisBlock;\r\n\t }\r\n\t });\r\n\r\n\t function generateKeystreamAndEncrypt(words, offset, blockSize, cipher) {\r\n\t // Shortcut\r\n\t var iv = this._iv;\r\n\r\n\t // Generate keystream\r\n\t if (iv) {\r\n\t var keystream = iv.slice(0);\r\n\r\n\t // Remove IV for subsequent blocks\r\n\t this._iv = undefined;\r\n\t } else {\r\n\t var keystream = this._prevBlock;\r\n\t }\r\n\t cipher.encryptBlock(keystream, 0);\r\n\r\n\t // Encrypt\r\n\t for (var i = 0; i < blockSize; i++) {\r\n\t words[offset + i] ^= keystream[i];\r\n\t }\r\n\t }\r\n\r\n\t return CFB;\r\n\t}());\r\n\r\n\r\n\t/**\r\n\t * Electronic Codebook block mode.\r\n\t */\r\n\tCryptoJS.mode.ECB = (function () {\r\n\t var ECB = CryptoJS.lib.BlockCipherMode.extend();\r\n\r\n\t ECB.Encryptor = ECB.extend({\r\n\t processBlock: function (words, offset) {\r\n\t this._cipher.encryptBlock(words, offset);\r\n\t }\r\n\t });\r\n\r\n\t ECB.Decryptor = ECB.extend({\r\n\t processBlock: function (words, offset) {\r\n\t this._cipher.decryptBlock(words, offset);\r\n\t }\r\n\t });\r\n\r\n\t return ECB;\r\n\t}());\r\n\r\n\r\n\t/**\r\n\t * ANSI X.923 padding strategy.\r\n\t */\r\n\tCryptoJS.pad.AnsiX923 = {\r\n\t pad: function (data, blockSize) {\r\n\t // Shortcuts\r\n\t var dataSigBytes = data.sigBytes;\r\n\t var blockSizeBytes = blockSize * 4;\r\n\r\n\t // Count padding bytes\r\n\t var nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes;\r\n\r\n\t // Compute last byte position\r\n\t var lastBytePos = dataSigBytes + nPaddingBytes - 1;\r\n\r\n\t // Pad\r\n\t data.clamp();\r\n\t data.words[lastBytePos >>> 2] |= nPaddingBytes << (24 - (lastBytePos % 4) * 8);\r\n\t data.sigBytes += nPaddingBytes;\r\n\t },\r\n\r\n\t unpad: function (data) {\r\n\t // Get number of padding bytes from last byte\r\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\r\n\r\n\t // Remove padding\r\n\t data.sigBytes -= nPaddingBytes;\r\n\t }\r\n\t};\r\n\r\n\r\n\t/**\r\n\t * ISO 10126 padding strategy.\r\n\t */\r\n\tCryptoJS.pad.Iso10126 = {\r\n\t pad: function (data, blockSize) {\r\n\t // Shortcut\r\n\t var blockSizeBytes = blockSize * 4;\r\n\r\n\t // Count padding bytes\r\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\r\n\r\n\t // Pad\r\n\t data.concat(CryptoJS.lib.WordArray.random(nPaddingBytes - 1)).\r\n\t concat(CryptoJS.lib.WordArray.create([nPaddingBytes << 24], 1));\r\n\t },\r\n\r\n\t unpad: function (data) {\r\n\t // Get number of padding bytes from last byte\r\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\r\n\r\n\t // Remove padding\r\n\t data.sigBytes -= nPaddingBytes;\r\n\t }\r\n\t};\r\n\r\n\r\n\t/**\r\n\t * ISO/IEC 9797-1 Padding Method 2.\r\n\t */\r\n\tCryptoJS.pad.Iso97971 = {\r\n\t pad: function (data, blockSize) {\r\n\t // Add 0x80 byte\r\n\t data.concat(CryptoJS.lib.WordArray.create([0x80000000], 1));\r\n\r\n\t // Zero pad the rest\r\n\t CryptoJS.pad.ZeroPadding.pad(data, blockSize);\r\n\t },\r\n\r\n\t unpad: function (data) {\r\n\t // Remove zero padding\r\n\t CryptoJS.pad.ZeroPadding.unpad(data);\r\n\r\n\t // Remove one more byte -- the 0x80 byte\r\n\t data.sigBytes--;\r\n\t }\r\n\t};\r\n\r\n\r\n\t/**\r\n\t * Output Feedback block mode.\r\n\t */\r\n\tCryptoJS.mode.OFB = (function () {\r\n\t var OFB = CryptoJS.lib.BlockCipherMode.extend();\r\n\r\n\t var Encryptor = OFB.Encryptor = OFB.extend({\r\n\t processBlock: function (words, offset) {\r\n\t // Shortcuts\r\n\t var cipher = this._cipher\r\n\t var blockSize = cipher.blockSize;\r\n\t var iv = this._iv;\r\n\t var keystream = this._keystream;\r\n\r\n\t // Generate keystream\r\n\t if (iv) {\r\n\t keystream = this._keystream = iv.slice(0);\r\n\r\n\t // Remove IV for subsequent blocks\r\n\t this._iv = undefined;\r\n\t }\r\n\t cipher.encryptBlock(keystream, 0);\r\n\r\n\t // Encrypt\r\n\t for (var i = 0; i < blockSize; i++) {\r\n\t words[offset + i] ^= keystream[i];\r\n\t }\r\n\t }\r\n\t });\r\n\r\n\t OFB.Decryptor = Encryptor;\r\n\r\n\t return OFB;\r\n\t}());\r\n\r\n\r\n\t/**\r\n\t * A noop padding strategy.\r\n\t */\r\n\tCryptoJS.pad.NoPadding = {\r\n\t pad: function () {\r\n\t },\r\n\r\n\t unpad: function () {\r\n\t }\r\n\t};\r\n\r\n\r\n\t(function (undefined) {\r\n\t // Shortcuts\r\n\t var C = CryptoJS;\r\n\t var C_lib = C.lib;\r\n\t var CipherParams = C_lib.CipherParams;\r\n\t var C_enc = C.enc;\r\n\t var Hex = C_enc.Hex;\r\n\t var C_format = C.format;\r\n\r\n\t var HexFormatter = C_format.Hex = {\r\n\t /**\r\n\t * Converts the ciphertext of a cipher params object to a hexadecimally encoded string.\r\n\t *\r\n\t * @param {CipherParams} cipherParams The cipher params object.\r\n\t *\r\n\t * @return {string} The hexadecimally encoded string.\r\n\t *\r\n\t * @static\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var hexString = CryptoJS.format.Hex.stringify(cipherParams);\r\n\t */\r\n\t stringify: function (cipherParams) {\r\n\t return cipherParams.ciphertext.toString(Hex);\r\n\t },\r\n\r\n\t /**\r\n\t * Converts a hexadecimally encoded ciphertext string to a cipher params object.\r\n\t *\r\n\t * @param {string} input The hexadecimally encoded string.\r\n\t *\r\n\t * @return {CipherParams} The cipher params object.\r\n\t *\r\n\t * @static\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var cipherParams = CryptoJS.format.Hex.parse(hexString);\r\n\t */\r\n\t parse: function (input) {\r\n\t var ciphertext = Hex.parse(input);\r\n\t return CipherParams.create({ ciphertext: ciphertext });\r\n\t }\r\n\t };\r\n\t}());\r\n\r\n\r\n\t(function () {\r\n\t // Shortcuts\r\n\t var C = CryptoJS;\r\n\t var C_lib = C.lib;\r\n\t var BlockCipher = C_lib.BlockCipher;\r\n\t var C_algo = C.algo;\r\n\r\n\t // Lookup tables\r\n\t var SBOX = [];\r\n\t var INV_SBOX = [];\r\n\t var SUB_MIX_0 = [];\r\n\t var SUB_MIX_1 = [];\r\n\t var SUB_MIX_2 = [];\r\n\t var SUB_MIX_3 = [];\r\n\t var INV_SUB_MIX_0 = [];\r\n\t var INV_SUB_MIX_1 = [];\r\n\t var INV_SUB_MIX_2 = [];\r\n\t var INV_SUB_MIX_3 = [];\r\n\r\n\t // Compute lookup tables\r\n\t (function () {\r\n\t // Compute double table\r\n\t var d = [];\r\n\t for (var i = 0; i < 256; i++) {\r\n\t if (i < 128) {\r\n\t d[i] = i << 1;\r\n\t } else {\r\n\t d[i] = (i << 1) ^ 0x11b;\r\n\t }\r\n\t }\r\n\r\n\t // Walk GF(2^8)\r\n\t var x = 0;\r\n\t var xi = 0;\r\n\t for (var i = 0; i < 256; i++) {\r\n\t // Compute sbox\r\n\t var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);\r\n\t sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;\r\n\t SBOX[x] = sx;\r\n\t INV_SBOX[sx] = x;\r\n\r\n\t // Compute multiplication\r\n\t var x2 = d[x];\r\n\t var x4 = d[x2];\r\n\t var x8 = d[x4];\r\n\r\n\t // Compute sub bytes, mix columns tables\r\n\t var t = (d[sx] * 0x101) ^ (sx * 0x1010100);\r\n\t SUB_MIX_0[x] = (t << 24) | (t >>> 8);\r\n\t SUB_MIX_1[x] = (t << 16) | (t >>> 16);\r\n\t SUB_MIX_2[x] = (t << 8) | (t >>> 24);\r\n\t SUB_MIX_3[x] = t;\r\n\r\n\t // Compute inv sub bytes, inv mix columns tables\r\n\t var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);\r\n\t INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);\r\n\t INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);\r\n\t INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24);\r\n\t INV_SUB_MIX_3[sx] = t;\r\n\r\n\t // Compute next counter\r\n\t if (!x) {\r\n\t x = xi = 1;\r\n\t } else {\r\n\t x = x2 ^ d[d[d[x8 ^ x2]]];\r\n\t xi ^= d[d[xi]];\r\n\t }\r\n\t }\r\n\t }());\r\n\r\n\t // Precomputed Rcon lookup\r\n\t var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\r\n\r\n\t /**\r\n\t * AES block cipher algorithm.\r\n\t */\r\n\t var AES = C_algo.AES = BlockCipher.extend({\r\n\t _doReset: function () {\r\n\t // Skip reset of nRounds has been set before and key did not change\r\n\t if (this._nRounds && this._keyPriorReset === this._key) {\r\n\t return;\r\n\t }\r\n\r\n\t // Shortcuts\r\n\t var key = this._keyPriorReset = this._key;\r\n\t var keyWords = key.words;\r\n\t var keySize = key.sigBytes / 4;\r\n\r\n\t // Compute number of rounds\r\n\t var nRounds = this._nRounds = keySize + 6;\r\n\r\n\t // Compute number of key schedule rows\r\n\t var ksRows = (nRounds + 1) * 4;\r\n\r\n\t // Compute key schedule\r\n\t var keySchedule = this._keySchedule = [];\r\n\t for (var ksRow = 0; ksRow < ksRows; ksRow++) {\r\n\t if (ksRow < keySize) {\r\n\t keySchedule[ksRow] = keyWords[ksRow];\r\n\t } else {\r\n\t var t = keySchedule[ksRow - 1];\r\n\r\n\t if (!(ksRow % keySize)) {\r\n\t // Rot word\r\n\t t = (t << 8) | (t >>> 24);\r\n\r\n\t // Sub word\r\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\r\n\r\n\t // Mix Rcon\r\n\t t ^= RCON[(ksRow / keySize) | 0] << 24;\r\n\t } else if (keySize > 6 && ksRow % keySize == 4) {\r\n\t // Sub word\r\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\r\n\t }\r\n\r\n\t keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\r\n\t }\r\n\t }\r\n\r\n\t // Compute inv key schedule\r\n\t var invKeySchedule = this._invKeySchedule = [];\r\n\t for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {\r\n\t var ksRow = ksRows - invKsRow;\r\n\r\n\t if (invKsRow % 4) {\r\n\t var t = keySchedule[ksRow];\r\n\t } else {\r\n\t var t = keySchedule[ksRow - 4];\r\n\t }\r\n\r\n\t if (invKsRow < 4 || ksRow <= 4) {\r\n\t invKeySchedule[invKsRow] = t;\r\n\t } else {\r\n\t invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^\r\n\t INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];\r\n\t }\r\n\t }\r\n\t },\r\n\r\n\t encryptBlock: function (M, offset) {\r\n\t this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);\r\n\t },\r\n\r\n\t decryptBlock: function (M, offset) {\r\n\t // Swap 2nd and 4th rows\r\n\t var t = M[offset + 1];\r\n\t M[offset + 1] = M[offset + 3];\r\n\t M[offset + 3] = t;\r\n\r\n\t this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);\r\n\r\n\t // Inv swap 2nd and 4th rows\r\n\t var t = M[offset + 1];\r\n\t M[offset + 1] = M[offset + 3];\r\n\t M[offset + 3] = t;\r\n\t },\r\n\r\n\t _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {\r\n\t // Shortcut\r\n\t var nRounds = this._nRounds;\r\n\r\n\t // Get input, add round key\r\n\t var s0 = M[offset] ^ keySchedule[0];\r\n\t var s1 = M[offset + 1] ^ keySchedule[1];\r\n\t var s2 = M[offset + 2] ^ keySchedule[2];\r\n\t var s3 = M[offset + 3] ^ keySchedule[3];\r\n\r\n\t // Key schedule row counter\r\n\t var ksRow = 4;\r\n\r\n\t // Rounds\r\n\t for (var round = 1; round < nRounds; round++) {\r\n\t // Shift rows, sub bytes, mix columns, add round key\r\n\t var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];\r\n\t var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];\r\n\t var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];\r\n\t var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];\r\n\r\n\t // Update state\r\n\t s0 = t0;\r\n\t s1 = t1;\r\n\t s2 = t2;\r\n\t s3 = t3;\r\n\t }\r\n\r\n\t // Shift rows, sub bytes, add round key\r\n\t var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\r\n\t var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\r\n\t var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\r\n\t var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\r\n\r\n\t // Set output\r\n\t M[offset] = t0;\r\n\t M[offset + 1] = t1;\r\n\t M[offset + 2] = t2;\r\n\t M[offset + 3] = t3;\r\n\t },\r\n\r\n\t keySize: 256/32\r\n\t });\r\n\r\n\t /**\r\n\t * Shortcut functions to the cipher's object interface.\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\r\n\t * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);\r\n\t */\r\n\t C.AES = BlockCipher._createHelper(AES);\r\n\t}());\r\n\r\n\r\n\t(function () {\r\n\t // Shortcuts\r\n\t var C = CryptoJS;\r\n\t var C_lib = C.lib;\r\n\t var WordArray = C_lib.WordArray;\r\n\t var BlockCipher = C_lib.BlockCipher;\r\n\t var C_algo = C.algo;\r\n\r\n\t // Permuted Choice 1 constants\r\n\t var PC1 = [\r\n\t 57, 49, 41, 33, 25, 17, 9, 1,\r\n\t 58, 50, 42, 34, 26, 18, 10, 2,\r\n\t 59, 51, 43, 35, 27, 19, 11, 3,\r\n\t 60, 52, 44, 36, 63, 55, 47, 39,\r\n\t 31, 23, 15, 7, 62, 54, 46, 38,\r\n\t 30, 22, 14, 6, 61, 53, 45, 37,\r\n\t 29, 21, 13, 5, 28, 20, 12, 4\r\n\t ];\r\n\r\n\t // Permuted Choice 2 constants\r\n\t var PC2 = [\r\n\t 14, 17, 11, 24, 1, 5,\r\n\t 3, 28, 15, 6, 21, 10,\r\n\t 23, 19, 12, 4, 26, 8,\r\n\t 16, 7, 27, 20, 13, 2,\r\n\t 41, 52, 31, 37, 47, 55,\r\n\t 30, 40, 51, 45, 33, 48,\r\n\t 44, 49, 39, 56, 34, 53,\r\n\t 46, 42, 50, 36, 29, 32\r\n\t ];\r\n\r\n\t // Cumulative bit shift constants\r\n\t var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];\r\n\r\n\t // SBOXes and round permutation constants\r\n\t var SBOX_P = [\r\n\t {\r\n\t 0x0: 0x808200,\r\n\t 0x10000000: 0x8000,\r\n\t 0x20000000: 0x808002,\r\n\t 0x30000000: 0x2,\r\n\t 0x40000000: 0x200,\r\n\t 0x50000000: 0x808202,\r\n\t 0x60000000: 0x800202,\r\n\t 0x70000000: 0x800000,\r\n\t 0x80000000: 0x202,\r\n\t 0x90000000: 0x800200,\r\n\t 0xa0000000: 0x8200,\r\n\t 0xb0000000: 0x808000,\r\n\t 0xc0000000: 0x8002,\r\n\t 0xd0000000: 0x800002,\r\n\t 0xe0000000: 0x0,\r\n\t 0xf0000000: 0x8202,\r\n\t 0x8000000: 0x0,\r\n\t 0x18000000: 0x808202,\r\n\t 0x28000000: 0x8202,\r\n\t 0x38000000: 0x8000,\r\n\t 0x48000000: 0x808200,\r\n\t 0x58000000: 0x200,\r\n\t 0x68000000: 0x808002,\r\n\t 0x78000000: 0x2,\r\n\t 0x88000000: 0x800200,\r\n\t 0x98000000: 0x8200,\r\n\t 0xa8000000: 0x808000,\r\n\t 0xb8000000: 0x800202,\r\n\t 0xc8000000: 0x800002,\r\n\t 0xd8000000: 0x8002,\r\n\t 0xe8000000: 0x202,\r\n\t 0xf8000000: 0x800000,\r\n\t 0x1: 0x8000,\r\n\t 0x10000001: 0x2,\r\n\t 0x20000001: 0x808200,\r\n\t 0x30000001: 0x800000,\r\n\t 0x40000001: 0x808002,\r\n\t 0x50000001: 0x8200,\r\n\t 0x60000001: 0x200,\r\n\t 0x70000001: 0x800202,\r\n\t 0x80000001: 0x808202,\r\n\t 0x90000001: 0x808000,\r\n\t 0xa0000001: 0x800002,\r\n\t 0xb0000001: 0x8202,\r\n\t 0xc0000001: 0x202,\r\n\t 0xd0000001: 0x800200,\r\n\t 0xe0000001: 0x8002,\r\n\t 0xf0000001: 0x0,\r\n\t 0x8000001: 0x808202,\r\n\t 0x18000001: 0x808000,\r\n\t 0x28000001: 0x800000,\r\n\t 0x38000001: 0x200,\r\n\t 0x48000001: 0x8000,\r\n\t 0x58000001: 0x800002,\r\n\t 0x68000001: 0x2,\r\n\t 0x78000001: 0x8202,\r\n\t 0x88000001: 0x8002,\r\n\t 0x98000001: 0x800202,\r\n\t 0xa8000001: 0x202,\r\n\t 0xb8000001: 0x808200,\r\n\t 0xc8000001: 0x800200,\r\n\t 0xd8000001: 0x0,\r\n\t 0xe8000001: 0x8200,\r\n\t 0xf8000001: 0x808002\r\n\t },\r\n\t {\r\n\t 0x0: 0x40084010,\r\n\t 0x1000000: 0x4000,\r\n\t 0x2000000: 0x80000,\r\n\t 0x3000000: 0x40080010,\r\n\t 0x4000000: 0x40000010,\r\n\t 0x5000000: 0x40084000,\r\n\t 0x6000000: 0x40004000,\r\n\t 0x7000000: 0x10,\r\n\t 0x8000000: 0x84000,\r\n\t 0x9000000: 0x40004010,\r\n\t 0xa000000: 0x40000000,\r\n\t 0xb000000: 0x84010,\r\n\t 0xc000000: 0x80010,\r\n\t 0xd000000: 0x0,\r\n\t 0xe000000: 0x4010,\r\n\t 0xf000000: 0x40080000,\r\n\t 0x800000: 0x40004000,\r\n\t 0x1800000: 0x84010,\r\n\t 0x2800000: 0x10,\r\n\t 0x3800000: 0x40004010,\r\n\t 0x4800000: 0x40084010,\r\n\t 0x5800000: 0x40000000,\r\n\t 0x6800000: 0x80000,\r\n\t 0x7800000: 0x40080010,\r\n\t 0x8800000: 0x80010,\r\n\t 0x9800000: 0x0,\r\n\t 0xa800000: 0x4000,\r\n\t 0xb800000: 0x40080000,\r\n\t 0xc800000: 0x40000010,\r\n\t 0xd800000: 0x84000,\r\n\t 0xe800000: 0x40084000,\r\n\t 0xf800000: 0x4010,\r\n\t 0x10000000: 0x0,\r\n\t 0x11000000: 0x40080010,\r\n\t 0x12000000: 0x40004010,\r\n\t 0x13000000: 0x40084000,\r\n\t 0x14000000: 0x40080000,\r\n\t 0x15000000: 0x10,\r\n\t 0x16000000: 0x84010,\r\n\t 0x17000000: 0x4000,\r\n\t 0x18000000: 0x4010,\r\n\t 0x19000000: 0x80000,\r\n\t 0x1a000000: 0x80010,\r\n\t 0x1b000000: 0x40000010,\r\n\t 0x1c000000: 0x84000,\r\n\t 0x1d000000: 0x40004000,\r\n\t 0x1e000000: 0x40000000,\r\n\t 0x1f000000: 0x40084010,\r\n\t 0x10800000: 0x84010,\r\n\t 0x11800000: 0x80000,\r\n\t 0x12800000: 0x40080000,\r\n\t 0x13800000: 0x4000,\r\n\t 0x14800000: 0x40004000,\r\n\t 0x15800000: 0x40084010,\r\n\t 0x16800000: 0x10,\r\n\t 0x17800000: 0x40000000,\r\n\t 0x18800000: 0x40084000,\r\n\t 0x19800000: 0x40000010,\r\n\t 0x1a800000: 0x40004010,\r\n\t 0x1b800000: 0x80010,\r\n\t 0x1c800000: 0x0,\r\n\t 0x1d800000: 0x4010,\r\n\t 0x1e800000: 0x40080010,\r\n\t 0x1f800000: 0x84000\r\n\t },\r\n\t {\r\n\t 0x0: 0x104,\r\n\t 0x100000: 0x0,\r\n\t 0x200000: 0x4000100,\r\n\t 0x300000: 0x10104,\r\n\t 0x400000: 0x10004,\r\n\t 0x500000: 0x4000004,\r\n\t 0x600000: 0x4010104,\r\n\t 0x700000: 0x4010000,\r\n\t 0x800000: 0x4000000,\r\n\t 0x900000: 0x4010100,\r\n\t 0xa00000: 0x10100,\r\n\t 0xb00000: 0x4010004,\r\n\t 0xc00000: 0x4000104,\r\n\t 0xd00000: 0x10000,\r\n\t 0xe00000: 0x4,\r\n\t 0xf00000: 0x100,\r\n\t 0x80000: 0x4010100,\r\n\t 0x180000: 0x4010004,\r\n\t 0x280000: 0x0,\r\n\t 0x380000: 0x4000100,\r\n\t 0x480000: 0x4000004,\r\n\t 0x580000: 0x10000,\r\n\t 0x680000: 0x10004,\r\n\t 0x780000: 0x104,\r\n\t 0x880000: 0x4,\r\n\t 0x980000: 0x100,\r\n\t 0xa80000: 0x4010000,\r\n\t 0xb80000: 0x10104,\r\n\t 0xc80000: 0x10100,\r\n\t 0xd80000: 0x4000104,\r\n\t 0xe80000: 0x4010104,\r\n\t 0xf80000: 0x4000000,\r\n\t 0x1000000: 0x4010100,\r\n\t 0x1100000: 0x10004,\r\n\t 0x1200000: 0x10000,\r\n\t 0x1300000: 0x4000100,\r\n\t 0x1400000: 0x100,\r\n\t 0x1500000: 0x4010104,\r\n\t 0x1600000: 0x4000004,\r\n\t 0x1700000: 0x0,\r\n\t 0x1800000: 0x4000104,\r\n\t 0x1900000: 0x4000000,\r\n\t 0x1a00000: 0x4,\r\n\t 0x1b00000: 0x10100,\r\n\t 0x1c00000: 0x4010000,\r\n\t 0x1d00000: 0x104,\r\n\t 0x1e00000: 0x10104,\r\n\t 0x1f00000: 0x4010004,\r\n\t 0x1080000: 0x4000000,\r\n\t 0x1180000: 0x104,\r\n\t 0x1280000: 0x4010100,\r\n\t 0x1380000: 0x0,\r\n\t 0x1480000: 0x10004,\r\n\t 0x1580000: 0x4000100,\r\n\t 0x1680000: 0x100,\r\n\t 0x1780000: 0x4010004,\r\n\t 0x1880000: 0x10000,\r\n\t 0x1980000: 0x4010104,\r\n\t 0x1a80000: 0x10104,\r\n\t 0x1b80000: 0x4000004,\r\n\t 0x1c80000: 0x4000104,\r\n\t 0x1d80000: 0x4010000,\r\n\t 0x1e80000: 0x4,\r\n\t 0x1f80000: 0x10100\r\n\t },\r\n\t {\r\n\t 0x0: 0x80401000,\r\n\t 0x10000: 0x80001040,\r\n\t 0x20000: 0x401040,\r\n\t 0x30000: 0x80400000,\r\n\t 0x40000: 0x0,\r\n\t 0x50000: 0x401000,\r\n\t 0x60000: 0x80000040,\r\n\t 0x70000: 0x400040,\r\n\t 0x80000: 0x80000000,\r\n\t 0x90000: 0x400000,\r\n\t 0xa0000: 0x40,\r\n\t 0xb0000: 0x80001000,\r\n\t 0xc0000: 0x80400040,\r\n\t 0xd0000: 0x1040,\r\n\t 0xe0000: 0x1000,\r\n\t 0xf0000: 0x80401040,\r\n\t 0x8000: 0x80001040,\r\n\t 0x18000: 0x40,\r\n\t 0x28000: 0x80400040,\r\n\t 0x38000: 0x80001000,\r\n\t 0x48000: 0x401000,\r\n\t 0x58000: 0x80401040,\r\n\t 0x68000: 0x0,\r\n\t 0x78000: 0x80400000,\r\n\t 0x88000: 0x1000,\r\n\t 0x98000: 0x80401000,\r\n\t 0xa8000: 0x400000,\r\n\t 0xb8000: 0x1040,\r\n\t 0xc8000: 0x80000000,\r\n\t 0xd8000: 0x400040,\r\n\t 0xe8000: 0x401040,\r\n\t 0xf8000: 0x80000040,\r\n\t 0x100000: 0x400040,\r\n\t 0x110000: 0x401000,\r\n\t 0x120000: 0x80000040,\r\n\t 0x130000: 0x0,\r\n\t 0x140000: 0x1040,\r\n\t 0x150000: 0x80400040,\r\n\t 0x160000: 0x80401000,\r\n\t 0x170000: 0x80001040,\r\n\t 0x180000: 0x80401040,\r\n\t 0x190000: 0x80000000,\r\n\t 0x1a0000: 0x80400000,\r\n\t 0x1b0000: 0x401040,\r\n\t 0x1c0000: 0x80001000,\r\n\t 0x1d0000: 0x400000,\r\n\t 0x1e0000: 0x40,\r\n\t 0x1f0000: 0x1000,\r\n\t 0x108000: 0x80400000,\r\n\t 0x118000: 0x80401040,\r\n\t 0x128000: 0x0,\r\n\t 0x138000: 0x401000,\r\n\t 0x148000: 0x400040,\r\n\t 0x158000: 0x80000000,\r\n\t 0x168000: 0x80001040,\r\n\t 0x178000: 0x40,\r\n\t 0x188000: 0x80000040,\r\n\t 0x198000: 0x1000,\r\n\t 0x1a8000: 0x80001000,\r\n\t 0x1b8000: 0x80400040,\r\n\t 0x1c8000: 0x1040,\r\n\t 0x1d8000: 0x80401000,\r\n\t 0x1e8000: 0x400000,\r\n\t 0x1f8000: 0x401040\r\n\t },\r\n\t {\r\n\t 0x0: 0x80,\r\n\t 0x1000: 0x1040000,\r\n\t 0x2000: 0x40000,\r\n\t 0x3000: 0x20000000,\r\n\t 0x4000: 0x20040080,\r\n\t 0x5000: 0x1000080,\r\n\t 0x6000: 0x21000080,\r\n\t 0x7000: 0x40080,\r\n\t 0x8000: 0x1000000,\r\n\t 0x9000: 0x20040000,\r\n\t 0xa000: 0x20000080,\r\n\t 0xb000: 0x21040080,\r\n\t 0xc000: 0x21040000,\r\n\t 0xd000: 0x0,\r\n\t 0xe000: 0x1040080,\r\n\t 0xf000: 0x21000000,\r\n\t 0x800: 0x1040080,\r\n\t 0x1800: 0x21000080,\r\n\t 0x2800: 0x80,\r\n\t 0x3800: 0x1040000,\r\n\t 0x4800: 0x40000,\r\n\t 0x5800: 0x20040080,\r\n\t 0x6800: 0x21040000,\r\n\t 0x7800: 0x20000000,\r\n\t 0x8800: 0x20040000,\r\n\t 0x9800: 0x0,\r\n\t 0xa800: 0x21040080,\r\n\t 0xb800: 0x1000080,\r\n\t 0xc800: 0x20000080,\r\n\t 0xd800: 0x21000000,\r\n\t 0xe800: 0x1000000,\r\n\t 0xf800: 0x40080,\r\n\t 0x10000: 0x40000,\r\n\t 0x11000: 0x80,\r\n\t 0x12000: 0x20000000,\r\n\t 0x13000: 0x21000080,\r\n\t 0x14000: 0x1000080,\r\n\t 0x15000: 0x21040000,\r\n\t 0x16000: 0x20040080,\r\n\t 0x17000: 0x1000000,\r\n\t 0x18000: 0x21040080,\r\n\t 0x19000: 0x21000000,\r\n\t 0x1a000: 0x1040000,\r\n\t 0x1b000: 0x20040000,\r\n\t 0x1c000: 0x40080,\r\n\t 0x1d000: 0x20000080,\r\n\t 0x1e000: 0x0,\r\n\t 0x1f000: 0x1040080,\r\n\t 0x10800: 0x21000080,\r\n\t 0x11800: 0x1000000,\r\n\t 0x12800: 0x1040000,\r\n\t 0x13800: 0x20040080,\r\n\t 0x14800: 0x20000000,\r\n\t 0x15800: 0x1040080,\r\n\t 0x16800: 0x80,\r\n\t 0x17800: 0x21040000,\r\n\t 0x18800: 0x40080,\r\n\t 0x19800: 0x21040080,\r\n\t 0x1a800: 0x0,\r\n\t 0x1b800: 0x21000000,\r\n\t 0x1c800: 0x1000080,\r\n\t 0x1d800: 0x40000,\r\n\t 0x1e800: 0x20040000,\r\n\t 0x1f800: 0x20000080\r\n\t },\r\n\t {\r\n\t 0x0: 0x10000008,\r\n\t 0x100: 0x2000,\r\n\t 0x200: 0x10200000,\r\n\t 0x300: 0x10202008,\r\n\t 0x400: 0x10002000,\r\n\t 0x500: 0x200000,\r\n\t 0x600: 0x200008,\r\n\t 0x700: 0x10000000,\r\n\t 0x800: 0x0,\r\n\t 0x900: 0x10002008,\r\n\t 0xa00: 0x202000,\r\n\t 0xb00: 0x8,\r\n\t 0xc00: 0x10200008,\r\n\t 0xd00: 0x202008,\r\n\t 0xe00: 0x2008,\r\n\t 0xf00: 0x10202000,\r\n\t 0x80: 0x10200000,\r\n\t 0x180: 0x10202008,\r\n\t 0x280: 0x8,\r\n\t 0x380: 0x200000,\r\n\t 0x480: 0x202008,\r\n\t 0x580: 0x10000008,\r\n\t 0x680: 0x10002000,\r\n\t 0x780: 0x2008,\r\n\t 0x880: 0x200008,\r\n\t 0x980: 0x2000,\r\n\t 0xa80: 0x10002008,\r\n\t 0xb80: 0x10200008,\r\n\t 0xc80: 0x0,\r\n\t 0xd80: 0x10202000,\r\n\t 0xe80: 0x202000,\r\n\t 0xf80: 0x10000000,\r\n\t 0x1000: 0x10002000,\r\n\t 0x1100: 0x10200008,\r\n\t 0x1200: 0x10202008,\r\n\t 0x1300: 0x2008,\r\n\t 0x1400: 0x200000,\r\n\t 0x1500: 0x10000000,\r\n\t 0x1600: 0x10000008,\r\n\t 0x1700: 0x202000,\r\n\t 0x1800: 0x202008,\r\n\t 0x1900: 0x0,\r\n\t 0x1a00: 0x8,\r\n\t 0x1b00: 0x10200000,\r\n\t 0x1c00: 0x2000,\r\n\t 0x1d00: 0x10002008,\r\n\t 0x1e00: 0x10202000,\r\n\t 0x1f00: 0x200008,\r\n\t 0x1080: 0x8,\r\n\t 0x1180: 0x202000,\r\n\t 0x1280: 0x200000,\r\n\t 0x1380: 0x10000008,\r\n\t 0x1480: 0x10002000,\r\n\t 0x1580: 0x2008,\r\n\t 0x1680: 0x10202008,\r\n\t 0x1780: 0x10200000,\r\n\t 0x1880: 0x10202000,\r\n\t 0x1980: 0x10200008,\r\n\t 0x1a80: 0x2000,\r\n\t 0x1b80: 0x202008,\r\n\t 0x1c80: 0x200008,\r\n\t 0x1d80: 0x0,\r\n\t 0x1e80: 0x10000000,\r\n\t 0x1f80: 0x10002008\r\n\t },\r\n\t {\r\n\t 0x0: 0x100000,\r\n\t 0x10: 0x2000401,\r\n\t 0x20: 0x400,\r\n\t 0x30: 0x100401,\r\n\t 0x40: 0x2100401,\r\n\t 0x50: 0x0,\r\n\t 0x60: 0x1,\r\n\t 0x70: 0x2100001,\r\n\t 0x80: 0x2000400,\r\n\t 0x90: 0x100001,\r\n\t 0xa0: 0x2000001,\r\n\t 0xb0: 0x2100400,\r\n\t 0xc0: 0x2100000,\r\n\t 0xd0: 0x401,\r\n\t 0xe0: 0x100400,\r\n\t 0xf0: 0x2000000,\r\n\t 0x8: 0x2100001,\r\n\t 0x18: 0x0,\r\n\t 0x28: 0x2000401,\r\n\t 0x38: 0x2100400,\r\n\t 0x48: 0x100000,\r\n\t 0x58: 0x2000001,\r\n\t 0x68: 0x2000000,\r\n\t 0x78: 0x401,\r\n\t 0x88: 0x100401,\r\n\t 0x98: 0x2000400,\r\n\t 0xa8: 0x2100000,\r\n\t 0xb8: 0x100001,\r\n\t 0xc8: 0x400,\r\n\t 0xd8: 0x2100401,\r\n\t 0xe8: 0x1,\r\n\t 0xf8: 0x100400,\r\n\t 0x100: 0x2000000,\r\n\t 0x110: 0x100000,\r\n\t 0x120: 0x2000401,\r\n\t 0x130: 0x2100001,\r\n\t 0x140: 0x100001,\r\n\t 0x150: 0x2000400,\r\n\t 0x160: 0x2100400,\r\n\t 0x170: 0x100401,\r\n\t 0x180: 0x401,\r\n\t 0x190: 0x2100401,\r\n\t 0x1a0: 0x100400,\r\n\t 0x1b0: 0x1,\r\n\t 0x1c0: 0x0,\r\n\t 0x1d0: 0x2100000,\r\n\t 0x1e0: 0x2000001,\r\n\t 0x1f0: 0x400,\r\n\t 0x108: 0x100400,\r\n\t 0x118: 0x2000401,\r\n\t 0x128: 0x2100001,\r\n\t 0x138: 0x1,\r\n\t 0x148: 0x2000000,\r\n\t 0x158: 0x100000,\r\n\t 0x168: 0x401,\r\n\t 0x178: 0x2100400,\r\n\t 0x188: 0x2000001,\r\n\t 0x198: 0x2100000,\r\n\t 0x1a8: 0x0,\r\n\t 0x1b8: 0x2100401,\r\n\t 0x1c8: 0x100401,\r\n\t 0x1d8: 0x400,\r\n\t 0x1e8: 0x2000400,\r\n\t 0x1f8: 0x100001\r\n\t },\r\n\t {\r\n\t 0x0: 0x8000820,\r\n\t 0x1: 0x20000,\r\n\t 0x2: 0x8000000,\r\n\t 0x3: 0x20,\r\n\t 0x4: 0x20020,\r\n\t 0x5: 0x8020820,\r\n\t 0x6: 0x8020800,\r\n\t 0x7: 0x800,\r\n\t 0x8: 0x8020000,\r\n\t 0x9: 0x8000800,\r\n\t 0xa: 0x20800,\r\n\t 0xb: 0x8020020,\r\n\t 0xc: 0x820,\r\n\t 0xd: 0x0,\r\n\t 0xe: 0x8000020,\r\n\t 0xf: 0x20820,\r\n\t 0x80000000: 0x800,\r\n\t 0x80000001: 0x8020820,\r\n\t 0x80000002: 0x8000820,\r\n\t 0x80000003: 0x8000000,\r\n\t 0x80000004: 0x8020000,\r\n\t 0x80000005: 0x20800,\r\n\t 0x80000006: 0x20820,\r\n\t 0x80000007: 0x20,\r\n\t 0x80000008: 0x8000020,\r\n\t 0x80000009: 0x820,\r\n\t 0x8000000a: 0x20020,\r\n\t 0x8000000b: 0x8020800,\r\n\t 0x8000000c: 0x0,\r\n\t 0x8000000d: 0x8020020,\r\n\t 0x8000000e: 0x8000800,\r\n\t 0x8000000f: 0x20000,\r\n\t 0x10: 0x20820,\r\n\t 0x11: 0x8020800,\r\n\t 0x12: 0x20,\r\n\t 0x13: 0x800,\r\n\t 0x14: 0x8000800,\r\n\t 0x15: 0x8000020,\r\n\t 0x16: 0x8020020,\r\n\t 0x17: 0x20000,\r\n\t 0x18: 0x0,\r\n\t 0x19: 0x20020,\r\n\t 0x1a: 0x8020000,\r\n\t 0x1b: 0x8000820,\r\n\t 0x1c: 0x8020820,\r\n\t 0x1d: 0x20800,\r\n\t 0x1e: 0x820,\r\n\t 0x1f: 0x8000000,\r\n\t 0x80000010: 0x20000,\r\n\t 0x80000011: 0x800,\r\n\t 0x80000012: 0x8020020,\r\n\t 0x80000013: 0x20820,\r\n\t 0x80000014: 0x20,\r\n\t 0x80000015: 0x8020000,\r\n\t 0x80000016: 0x8000000,\r\n\t 0x80000017: 0x8000820,\r\n\t 0x80000018: 0x8020820,\r\n\t 0x80000019: 0x8000020,\r\n\t 0x8000001a: 0x8000800,\r\n\t 0x8000001b: 0x0,\r\n\t 0x8000001c: 0x20800,\r\n\t 0x8000001d: 0x820,\r\n\t 0x8000001e: 0x20020,\r\n\t 0x8000001f: 0x8020800\r\n\t }\r\n\t ];\r\n\r\n\t // Masks that select the SBOX input\r\n\t var SBOX_MASK = [\r\n\t 0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000,\r\n\t 0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f\r\n\t ];\r\n\r\n\t /**\r\n\t * DES block cipher algorithm.\r\n\t */\r\n\t var DES = C_algo.DES = BlockCipher.extend({\r\n\t _doReset: function () {\r\n\t // Shortcuts\r\n\t var key = this._key;\r\n\t var keyWords = key.words;\r\n\r\n\t // Select 56 bits according to PC1\r\n\t var keyBits = [];\r\n\t for (var i = 0; i < 56; i++) {\r\n\t var keyBitPos = PC1[i] - 1;\r\n\t keyBits[i] = (keyWords[keyBitPos >>> 5] >>> (31 - keyBitPos % 32)) & 1;\r\n\t }\r\n\r\n\t // Assemble 16 subkeys\r\n\t var subKeys = this._subKeys = [];\r\n\t for (var nSubKey = 0; nSubKey < 16; nSubKey++) {\r\n\t // Create subkey\r\n\t var subKey = subKeys[nSubKey] = [];\r\n\r\n\t // Shortcut\r\n\t var bitShift = BIT_SHIFTS[nSubKey];\r\n\r\n\t // Select 48 bits according to PC2\r\n\t for (var i = 0; i < 24; i++) {\r\n\t // Select from the left 28 key bits\r\n\t subKey[(i / 6) | 0] |= keyBits[((PC2[i] - 1) + bitShift) % 28] << (31 - i % 6);\r\n\r\n\t // Select from the right 28 key bits\r\n\t subKey[4 + ((i / 6) | 0)] |= keyBits[28 + (((PC2[i + 24] - 1) + bitShift) % 28)] << (31 - i % 6);\r\n\t }\r\n\r\n\t // Since each subkey is applied to an expanded 32-bit input,\r\n\t // the subkey can be broken into 8 values scaled to 32-bits,\r\n\t // which allows the key to be used without expansion\r\n\t subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31);\r\n\t for (var i = 1; i < 7; i++) {\r\n\t subKey[i] = subKey[i] >>> ((i - 1) * 4 + 3);\r\n\t }\r\n\t subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27);\r\n\t }\r\n\r\n\t // Compute inverse subkeys\r\n\t var invSubKeys = this._invSubKeys = [];\r\n\t for (var i = 0; i < 16; i++) {\r\n\t invSubKeys[i] = subKeys[15 - i];\r\n\t }\r\n\t },\r\n\r\n\t encryptBlock: function (M, offset) {\r\n\t this._doCryptBlock(M, offset, this._subKeys);\r\n\t },\r\n\r\n\t decryptBlock: function (M, offset) {\r\n\t this._doCryptBlock(M, offset, this._invSubKeys);\r\n\t },\r\n\r\n\t _doCryptBlock: function (M, offset, subKeys) {\r\n\t // Get input\r\n\t this._lBlock = M[offset];\r\n\t this._rBlock = M[offset + 1];\r\n\r\n\t // Initial permutation\r\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\r\n\t exchangeLR.call(this, 16, 0x0000ffff);\r\n\t exchangeRL.call(this, 2, 0x33333333);\r\n\t exchangeRL.call(this, 8, 0x00ff00ff);\r\n\t exchangeLR.call(this, 1, 0x55555555);\r\n\r\n\t // Rounds\r\n\t for (var round = 0; round < 16; round++) {\r\n\t // Shortcuts\r\n\t var subKey = subKeys[round];\r\n\t var lBlock = this._lBlock;\r\n\t var rBlock = this._rBlock;\r\n\r\n\t // Feistel function\r\n\t var f = 0;\r\n\t for (var i = 0; i < 8; i++) {\r\n\t f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0];\r\n\t }\r\n\t this._lBlock = rBlock;\r\n\t this._rBlock = lBlock ^ f;\r\n\t }\r\n\r\n\t // Undo swap from last round\r\n\t var t = this._lBlock;\r\n\t this._lBlock = this._rBlock;\r\n\t this._rBlock = t;\r\n\r\n\t // Final permutation\r\n\t exchangeLR.call(this, 1, 0x55555555);\r\n\t exchangeRL.call(this, 8, 0x00ff00ff);\r\n\t exchangeRL.call(this, 2, 0x33333333);\r\n\t exchangeLR.call(this, 16, 0x0000ffff);\r\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\r\n\r\n\t // Set output\r\n\t M[offset] = this._lBlock;\r\n\t M[offset + 1] = this._rBlock;\r\n\t },\r\n\r\n\t keySize: 64/32,\r\n\r\n\t ivSize: 64/32,\r\n\r\n\t blockSize: 64/32\r\n\t });\r\n\r\n\t // Swap bits across the left and right words\r\n\t function exchangeLR(offset, mask) {\r\n\t var t = ((this._lBlock >>> offset) ^ this._rBlock) & mask;\r\n\t this._rBlock ^= t;\r\n\t this._lBlock ^= t << offset;\r\n\t }\r\n\r\n\t function exchangeRL(offset, mask) {\r\n\t var t = ((this._rBlock >>> offset) ^ this._lBlock) & mask;\r\n\t this._lBlock ^= t;\r\n\t this._rBlock ^= t << offset;\r\n\t }\r\n\r\n\t /**\r\n\t * Shortcut functions to the cipher's object interface.\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var ciphertext = CryptoJS.DES.encrypt(message, key, cfg);\r\n\t * var plaintext = CryptoJS.DES.decrypt(ciphertext, key, cfg);\r\n\t */\r\n\t C.DES = BlockCipher._createHelper(DES);\r\n\r\n\t /**\r\n\t * Triple-DES block cipher algorithm.\r\n\t */\r\n\t var TripleDES = C_algo.TripleDES = BlockCipher.extend({\r\n\t _doReset: function () {\r\n\t // Shortcuts\r\n\t var key = this._key;\r\n\t var keyWords = key.words;\r\n\r\n\t // Create DES instances\r\n\t this._des1 = DES.createEncryptor(WordArray.create(keyWords.slice(0, 2)));\r\n\t this._des2 = DES.createEncryptor(WordArray.create(keyWords.slice(2, 4)));\r\n\t this._des3 = DES.createEncryptor(WordArray.create(keyWords.slice(4, 6)));\r\n\t },\r\n\r\n\t encryptBlock: function (M, offset) {\r\n\t this._des1.encryptBlock(M, offset);\r\n\t this._des2.decryptBlock(M, offset);\r\n\t this._des3.encryptBlock(M, offset);\r\n\t },\r\n\r\n\t decryptBlock: function (M, offset) {\r\n\t this._des3.decryptBlock(M, offset);\r\n\t this._des2.encryptBlock(M, offset);\r\n\t this._des1.decryptBlock(M, offset);\r\n\t },\r\n\r\n\t keySize: 192/32,\r\n\r\n\t ivSize: 64/32,\r\n\r\n\t blockSize: 64/32\r\n\t });\r\n\r\n\t /**\r\n\t * Shortcut functions to the cipher's object interface.\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg);\r\n\t * var plaintext = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg);\r\n\t */\r\n\t C.TripleDES = BlockCipher._createHelper(TripleDES);\r\n\t}());\r\n\r\n\r\n\t(function () {\r\n\t // Shortcuts\r\n\t var C = CryptoJS;\r\n\t var C_lib = C.lib;\r\n\t var StreamCipher = C_lib.StreamCipher;\r\n\t var C_algo = C.algo;\r\n\r\n\t /**\r\n\t * RC4 stream cipher algorithm.\r\n\t */\r\n\t var RC4 = C_algo.RC4 = StreamCipher.extend({\r\n\t _doReset: function () {\r\n\t // Shortcuts\r\n\t var key = this._key;\r\n\t var keyWords = key.words;\r\n\t var keySigBytes = key.sigBytes;\r\n\r\n\t // Init sbox\r\n\t var S = this._S = [];\r\n\t for (var i = 0; i < 256; i++) {\r\n\t S[i] = i;\r\n\t }\r\n\r\n\t // Key setup\r\n\t for (var i = 0, j = 0; i < 256; i++) {\r\n\t var keyByteIndex = i % keySigBytes;\r\n\t var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff;\r\n\r\n\t j = (j + S[i] + keyByte) % 256;\r\n\r\n\t // Swap\r\n\t var t = S[i];\r\n\t S[i] = S[j];\r\n\t S[j] = t;\r\n\t }\r\n\r\n\t // Counters\r\n\t this._i = this._j = 0;\r\n\t },\r\n\r\n\t _doProcessBlock: function (M, offset) {\r\n\t M[offset] ^= generateKeystreamWord.call(this);\r\n\t },\r\n\r\n\t keySize: 256/32,\r\n\r\n\t ivSize: 0\r\n\t });\r\n\r\n\t function generateKeystreamWord() {\r\n\t // Shortcuts\r\n\t var S = this._S;\r\n\t var i = this._i;\r\n\t var j = this._j;\r\n\r\n\t // Generate keystream word\r\n\t var keystreamWord = 0;\r\n\t for (var n = 0; n < 4; n++) {\r\n\t i = (i + 1) % 256;\r\n\t j = (j + S[i]) % 256;\r\n\r\n\t // Swap\r\n\t var t = S[i];\r\n\t S[i] = S[j];\r\n\t S[j] = t;\r\n\r\n\t keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8);\r\n\t }\r\n\r\n\t // Update counters\r\n\t this._i = i;\r\n\t this._j = j;\r\n\r\n\t return keystreamWord;\r\n\t }\r\n\r\n\t /**\r\n\t * Shortcut functions to the cipher's object interface.\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);\r\n\t * var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg);\r\n\t */\r\n\t C.RC4 = StreamCipher._createHelper(RC4);\r\n\r\n\t /**\r\n\t * Modified RC4 stream cipher algorithm.\r\n\t */\r\n\t var RC4Drop = C_algo.RC4Drop = RC4.extend({\r\n\t /**\r\n\t * Configuration options.\r\n\t *\r\n\t * @property {number} drop The number of keystream words to drop. Default 192\r\n\t */\r\n\t cfg: RC4.cfg.extend({\r\n\t drop: 192\r\n\t }),\r\n\r\n\t _doReset: function () {\r\n\t RC4._doReset.call(this);\r\n\r\n\t // Drop\r\n\t for (var i = this.cfg.drop; i > 0; i--) {\r\n\t generateKeystreamWord.call(this);\r\n\t }\r\n\t }\r\n\t });\r\n\r\n\t /**\r\n\t * Shortcut functions to the cipher's object interface.\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg);\r\n\t * var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg);\r\n\t */\r\n\t C.RC4Drop = StreamCipher._createHelper(RC4Drop);\r\n\t}());\r\n\r\n\r\n\t/** @preserve\r\n\t * Counter block mode compatible with Dr Brian Gladman fileenc.c\r\n\t * derived from CryptoJS.mode.CTR\r\n\t * Jan Hruby jhruby.web@gmail.com\r\n\t */\r\n\tCryptoJS.mode.CTRGladman = (function () {\r\n\t var CTRGladman = CryptoJS.lib.BlockCipherMode.extend();\r\n\r\n\t\tfunction incWord(word)\r\n\t\t{\r\n\t\t\tif (((word >> 24) & 0xff) === 0xff) { //overflow\r\n\t\t\tvar b1 = (word >> 16)&0xff;\r\n\t\t\tvar b2 = (word >> 8)&0xff;\r\n\t\t\tvar b3 = word & 0xff;\r\n\r\n\t\t\tif (b1 === 0xff) // overflow b1\r\n\t\t\t{\r\n\t\t\tb1 = 0;\r\n\t\t\tif (b2 === 0xff)\r\n\t\t\t{\r\n\t\t\t\tb2 = 0;\r\n\t\t\t\tif (b3 === 0xff)\r\n\t\t\t\t{\r\n\t\t\t\t\tb3 = 0;\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\t++b3;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\t++b2;\r\n\t\t\t}\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t++b1;\r\n\t\t\t}\r\n\r\n\t\t\tword = 0;\r\n\t\t\tword += (b1 << 16);\r\n\t\t\tword += (b2 << 8);\r\n\t\t\tword += b3;\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\tword += (0x01 << 24);\r\n\t\t\t}\r\n\t\t\treturn word;\r\n\t\t}\r\n\r\n\t\tfunction incCounter(counter)\r\n\t\t{\r\n\t\t\tif ((counter[0] = incWord(counter[0])) === 0)\r\n\t\t\t{\r\n\t\t\t\t// encr_data in fileenc.c from Dr Brian Gladman's counts only with DWORD j < 8\r\n\t\t\t\tcounter[1] = incWord(counter[1]);\r\n\t\t\t}\r\n\t\t\treturn counter;\r\n\t\t}\r\n\r\n\t var Encryptor = CTRGladman.Encryptor = CTRGladman.extend({\r\n\t processBlock: function (words, offset) {\r\n\t // Shortcuts\r\n\t var cipher = this._cipher\r\n\t var blockSize = cipher.blockSize;\r\n\t var iv = this._iv;\r\n\t var counter = this._counter;\r\n\r\n\t // Generate keystream\r\n\t if (iv) {\r\n\t counter = this._counter = iv.slice(0);\r\n\r\n\t // Remove IV for subsequent blocks\r\n\t this._iv = undefined;\r\n\t }\r\n\r\n\t\t\t\tincCounter(counter);\r\n\r\n\t\t\t\tvar keystream = counter.slice(0);\r\n\t cipher.encryptBlock(keystream, 0);\r\n\r\n\t // Encrypt\r\n\t for (var i = 0; i < blockSize; i++) {\r\n\t words[offset + i] ^= keystream[i];\r\n\t }\r\n\t }\r\n\t });\r\n\r\n\t CTRGladman.Decryptor = Encryptor;\r\n\r\n\t return CTRGladman;\r\n\t}());\r\n\r\n\r\n\r\n\r\n\t(function () {\r\n\t // Shortcuts\r\n\t var C = CryptoJS;\r\n\t var C_lib = C.lib;\r\n\t var StreamCipher = C_lib.StreamCipher;\r\n\t var C_algo = C.algo;\r\n\r\n\t // Reusable objects\r\n\t var S = [];\r\n\t var C_ = [];\r\n\t var G = [];\r\n\r\n\t /**\r\n\t * Rabbit stream cipher algorithm\r\n\t */\r\n\t var Rabbit = C_algo.Rabbit = StreamCipher.extend({\r\n\t _doReset: function () {\r\n\t // Shortcuts\r\n\t var K = this._key.words;\r\n\t var iv = this.cfg.iv;\r\n\r\n\t // Swap endian\r\n\t for (var i = 0; i < 4; i++) {\r\n\t K[i] = (((K[i] << 8) | (K[i] >>> 24)) & 0x00ff00ff) |\r\n\t (((K[i] << 24) | (K[i] >>> 8)) & 0xff00ff00);\r\n\t }\r\n\r\n\t // Generate initial state values\r\n\t var X = this._X = [\r\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\r\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\r\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\r\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\r\n\t ];\r\n\r\n\t // Generate initial counter values\r\n\t var C = this._C = [\r\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\r\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\r\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\r\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\r\n\t ];\r\n\r\n\t // Carry bit\r\n\t this._b = 0;\r\n\r\n\t // Iterate the system four times\r\n\t for (var i = 0; i < 4; i++) {\r\n\t nextState.call(this);\r\n\t }\r\n\r\n\t // Modify the counters\r\n\t for (var i = 0; i < 8; i++) {\r\n\t C[i] ^= X[(i + 4) & 7];\r\n\t }\r\n\r\n\t // IV setup\r\n\t if (iv) {\r\n\t // Shortcuts\r\n\t var IV = iv.words;\r\n\t var IV_0 = IV[0];\r\n\t var IV_1 = IV[1];\r\n\r\n\t // Generate four subvectors\r\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\r\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\r\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\r\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\r\n\r\n\t // Modify counter values\r\n\t C[0] ^= i0;\r\n\t C[1] ^= i1;\r\n\t C[2] ^= i2;\r\n\t C[3] ^= i3;\r\n\t C[4] ^= i0;\r\n\t C[5] ^= i1;\r\n\t C[6] ^= i2;\r\n\t C[7] ^= i3;\r\n\r\n\t // Iterate the system four times\r\n\t for (var i = 0; i < 4; i++) {\r\n\t nextState.call(this);\r\n\t }\r\n\t }\r\n\t },\r\n\r\n\t _doProcessBlock: function (M, offset) {\r\n\t // Shortcut\r\n\t var X = this._X;\r\n\r\n\t // Iterate the system\r\n\t nextState.call(this);\r\n\r\n\t // Generate four keystream words\r\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\r\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\r\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\r\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\r\n\r\n\t for (var i = 0; i < 4; i++) {\r\n\t // Swap endian\r\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\r\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\r\n\r\n\t // Encrypt\r\n\t M[offset + i] ^= S[i];\r\n\t }\r\n\t },\r\n\r\n\t blockSize: 128/32,\r\n\r\n\t ivSize: 64/32\r\n\t });\r\n\r\n\t function nextState() {\r\n\t // Shortcuts\r\n\t var X = this._X;\r\n\t var C = this._C;\r\n\r\n\t // Save old counter values\r\n\t for (var i = 0; i < 8; i++) {\r\n\t C_[i] = C[i];\r\n\t }\r\n\r\n\t // Calculate new counter values\r\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\r\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\r\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\r\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\r\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\r\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\r\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\r\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\r\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\r\n\r\n\t // Calculate the g-values\r\n\t for (var i = 0; i < 8; i++) {\r\n\t var gx = X[i] + C[i];\r\n\r\n\t // Construct high and low argument for squaring\r\n\t var ga = gx & 0xffff;\r\n\t var gb = gx >>> 16;\r\n\r\n\t // Calculate high and low result of squaring\r\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\r\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\r\n\r\n\t // High XOR low\r\n\t G[i] = gh ^ gl;\r\n\t }\r\n\r\n\t // Calculate new state values\r\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\r\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\r\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\r\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\r\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\r\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\r\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\r\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\r\n\t }\r\n\r\n\t /**\r\n\t * Shortcut functions to the cipher's object interface.\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg);\r\n\t * var plaintext = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg);\r\n\t */\r\n\t C.Rabbit = StreamCipher._createHelper(Rabbit);\r\n\t}());\r\n\r\n\r\n\t/**\r\n\t * Counter block mode.\r\n\t */\r\n\tCryptoJS.mode.CTR = (function () {\r\n\t var CTR = CryptoJS.lib.BlockCipherMode.extend();\r\n\r\n\t var Encryptor = CTR.Encryptor = CTR.extend({\r\n\t processBlock: function (words, offset) {\r\n\t // Shortcuts\r\n\t var cipher = this._cipher\r\n\t var blockSize = cipher.blockSize;\r\n\t var iv = this._iv;\r\n\t var counter = this._counter;\r\n\r\n\t // Generate keystream\r\n\t if (iv) {\r\n\t counter = this._counter = iv.slice(0);\r\n\r\n\t // Remove IV for subsequent blocks\r\n\t this._iv = undefined;\r\n\t }\r\n\t var keystream = counter.slice(0);\r\n\t cipher.encryptBlock(keystream, 0);\r\n\r\n\t // Increment counter\r\n\t counter[blockSize - 1] = (counter[blockSize - 1] + 1) | 0\r\n\r\n\t // Encrypt\r\n\t for (var i = 0; i < blockSize; i++) {\r\n\t words[offset + i] ^= keystream[i];\r\n\t }\r\n\t }\r\n\t });\r\n\r\n\t CTR.Decryptor = Encryptor;\r\n\r\n\t return CTR;\r\n\t}());\r\n\r\n\r\n\t(function () {\r\n\t // Shortcuts\r\n\t var C = CryptoJS;\r\n\t var C_lib = C.lib;\r\n\t var StreamCipher = C_lib.StreamCipher;\r\n\t var C_algo = C.algo;\r\n\r\n\t // Reusable objects\r\n\t var S = [];\r\n\t var C_ = [];\r\n\t var G = [];\r\n\r\n\t /**\r\n\t * Rabbit stream cipher algorithm.\r\n\t *\r\n\t * This is a legacy version that neglected to convert the key to little-endian.\r\n\t * This error doesn't affect the cipher's security,\r\n\t * but it does affect its compatibility with other implementations.\r\n\t */\r\n\t var RabbitLegacy = C_algo.RabbitLegacy = StreamCipher.extend({\r\n\t _doReset: function () {\r\n\t // Shortcuts\r\n\t var K = this._key.words;\r\n\t var iv = this.cfg.iv;\r\n\r\n\t // Generate initial state values\r\n\t var X = this._X = [\r\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\r\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\r\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\r\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\r\n\t ];\r\n\r\n\t // Generate initial counter values\r\n\t var C = this._C = [\r\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\r\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\r\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\r\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\r\n\t ];\r\n\r\n\t // Carry bit\r\n\t this._b = 0;\r\n\r\n\t // Iterate the system four times\r\n\t for (var i = 0; i < 4; i++) {\r\n\t nextState.call(this);\r\n\t }\r\n\r\n\t // Modify the counters\r\n\t for (var i = 0; i < 8; i++) {\r\n\t C[i] ^= X[(i + 4) & 7];\r\n\t }\r\n\r\n\t // IV setup\r\n\t if (iv) {\r\n\t // Shortcuts\r\n\t var IV = iv.words;\r\n\t var IV_0 = IV[0];\r\n\t var IV_1 = IV[1];\r\n\r\n\t // Generate four subvectors\r\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\r\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\r\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\r\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\r\n\r\n\t // Modify counter values\r\n\t C[0] ^= i0;\r\n\t C[1] ^= i1;\r\n\t C[2] ^= i2;\r\n\t C[3] ^= i3;\r\n\t C[4] ^= i0;\r\n\t C[5] ^= i1;\r\n\t C[6] ^= i2;\r\n\t C[7] ^= i3;\r\n\r\n\t // Iterate the system four times\r\n\t for (var i = 0; i < 4; i++) {\r\n\t nextState.call(this);\r\n\t }\r\n\t }\r\n\t },\r\n\r\n\t _doProcessBlock: function (M, offset) {\r\n\t // Shortcut\r\n\t var X = this._X;\r\n\r\n\t // Iterate the system\r\n\t nextState.call(this);\r\n\r\n\t // Generate four keystream words\r\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\r\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\r\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\r\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\r\n\r\n\t for (var i = 0; i < 4; i++) {\r\n\t // Swap endian\r\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\r\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\r\n\r\n\t // Encrypt\r\n\t M[offset + i] ^= S[i];\r\n\t }\r\n\t },\r\n\r\n\t blockSize: 128/32,\r\n\r\n\t ivSize: 64/32\r\n\t });\r\n\r\n\t function nextState() {\r\n\t // Shortcuts\r\n\t var X = this._X;\r\n\t var C = this._C;\r\n\r\n\t // Save old counter values\r\n\t for (var i = 0; i < 8; i++) {\r\n\t C_[i] = C[i];\r\n\t }\r\n\r\n\t // Calculate new counter values\r\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\r\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\r\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\r\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\r\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\r\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\r\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\r\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\r\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\r\n\r\n\t // Calculate the g-values\r\n\t for (var i = 0; i < 8; i++) {\r\n\t var gx = X[i] + C[i];\r\n\r\n\t // Construct high and low argument for squaring\r\n\t var ga = gx & 0xffff;\r\n\t var gb = gx >>> 16;\r\n\r\n\t // Calculate high and low result of squaring\r\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\r\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\r\n\r\n\t // High XOR low\r\n\t G[i] = gh ^ gl;\r\n\t }\r\n\r\n\t // Calculate new state values\r\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\r\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\r\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\r\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\r\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\r\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\r\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\r\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\r\n\t }\r\n\r\n\t /**\r\n\t * Shortcut functions to the cipher's object interface.\r\n\t *\r\n\t * @example\r\n\t *\r\n\t * var ciphertext = CryptoJS.RabbitLegacy.encrypt(message, key, cfg);\r\n\t * var plaintext = CryptoJS.RabbitLegacy.decrypt(ciphertext, key, cfg);\r\n\t */\r\n\t C.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy);\r\n\t}());\r\n\r\n\r\n\t/**\r\n\t * Zero padding strategy.\r\n\t */\r\n\tCryptoJS.pad.ZeroPadding = {\r\n\t pad: function (data, blockSize) {\r\n\t // Shortcut\r\n\t var blockSizeBytes = blockSize * 4;\r\n\r\n\t // Pad\r\n\t data.clamp();\r\n\t data.sigBytes += blockSizeBytes - ((data.sigBytes % blockSizeBytes) || blockSizeBytes);\r\n\t },\r\n\r\n\t unpad: function (data) {\r\n\t // Shortcut\r\n\t var dataWords = data.words;\r\n\r\n\t // Unpad\r\n\t var i = data.sigBytes - 1;\r\n\t while (!((dataWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff)) {\r\n\t i--;\r\n\t }\r\n\t data.sigBytes = i + 1;\r\n\t }\r\n\t};\r\n\r\n\r\n\treturn CryptoJS;\r\n\r\n}));","/*global jQuery */\r\n/*!\r\n* FitText.js 1.2\r\n*\r\n* Copyright 2011, Dave Rupert http://daverupert.com\r\n* Released under the WTFPL license\r\n* http://sam.zoy.org/wtfpl/\r\n*\r\n* Date: Thu May 05 14:23:00 2011 -0600\r\n*/\r\n\r\n(function( $ ){\r\n\r\n $.fn.fitText = function( kompressor, options ) {\r\n\r\n // Setup options\r\n var compressor = kompressor || 1,\r\n settings = $.extend({\r\n 'minFontSize' : Number.NEGATIVE_INFINITY,\r\n 'maxFontSize' : Number.POSITIVE_INFINITY\r\n }, options);\r\n\r\n return this.each(function(){\r\n\r\n // Store the object\r\n var $this = $(this);\r\n\r\n // Resizer() resizes items based on the object width divided by the compressor * 10\r\n var resizer = function () {\r\n $this.css('font-size', Math.max(Math.min($this.width() / (compressor*10), parseFloat(settings.maxFontSize)), parseFloat(settings.minFontSize)));\r\n };\r\n\r\n // Call once to set.\r\n resizer();\r\n\r\n // Call on resize. Opera debounces their resize by default.\r\n $(window).on('resize.fittext orientationchange.fittext', resizer);\r\n\r\n });\r\n\r\n };\r\n\r\n})( jQuery );\r\n","( function ( $ ) {\r\n\t$( 'a.js-department-filter' ).each( function () {\r\n\t\tvar element = $( this );\r\n\r\n\t\t// Get departent id and prepare data\r\n\t\tvar departmentId = element.data( 'id' );\r\n\t\tvar data = { departments: [departmentId] };\r\n\r\n\t\t// Generate hash\r\n\t\thash = CryptoJS.AES.encrypt( JSON.stringify( data ), 'betsson' ).toString();\r\n\r\n\t\t// Update link\r\n\t\tvar baseURL = element.data( 'baseUrl' );\r\n\t\telement.prop( 'href', baseURL + '#' + hash );\r\n\t} );\r\n} )( jQuery );","var JobResults = {};\r\n\r\n( function ( $ ) {\r\n\tJobResults.init = function () {\r\n\t\tvar hash = window.location.hash.substr( 1 ),\r\n\t\t\tjobsContainer = $( '#jobs-container' ),\r\n\t\t\tsubscribeButton = $( '.js-subscribe-button' ),\r\n\t\t\tjobsCount = $( '.js-jobs-count' ),\r\n\t\t\tjobsForm = $( '.js-jobs-search-form' ),\r\n\t\t\tjobsShowMore = $( '#jobs-show-more' ),\r\n\t\t\texcludedIds = null,\r\n\t\t\tloader = $( '.loader' ),\r\n\t\t\tsubscribeModal = $( '#subscribe-modal' );\r\n\r\n\t\tvar loadJobs = function ( keyword, departments, category, locations, page ) {\r\n\t\t\tif ( jobsContainer.length === 0 ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif ( page === 1 ) {\r\n\t\t\t\texcludedIds = null;\r\n\t\t\t}\r\n\r\n\t\t\tvar hasFilter = keyword || ( departments && departments.length ) || ( category && category.length ) || ( locations && locations.length );\r\n\r\n\t\t\t// Modify query parameters if there are filters\r\n\t\t\tif ( hasFilter ) {\r\n\t\t\t\tvar data = {\r\n\t\t\t\t\tkeyword: keyword,\r\n\t\t\t\t\tdepartments: departments,\r\n\t\t\t\t\tcategory: category,\r\n\t\t\t\t\tlocations: locations\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\t$.ajax( {\r\n\t\t\t\turl: '/wp-admin/admin-ajax.php',\r\n\t\t\t\tdata: {\r\n\t\t\t\t\taction: 'get_jobs',\r\n\t\t\t\t\tkeyword: keyword,\r\n\t\t\t\t\tdepartments: departments,\r\n\t\t\t\t\tcategory: category,\r\n\t\t\t\t\tlocations: locations,\r\n\t\t\t\t\tpage: page,\r\n\t\t\t\t\texcluded_ids: excludedIds\r\n\t\t\t\t},\r\n\t\t\t\tmethod: 'get',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\tbeforeSend: function () {\r\n\t\t\t\t\tjobsShowMore.hide();\r\n\t\t\t\t\tloader.show();\r\n\r\n\t\t\t\t\tif ( page === 1 ) {\r\n\t\t\t\t\t\tjobsContainer.parents( '.table-container' ).hide();\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tsuccess: function ( result ) {\r\n\t\t\t\t\tif ( result.success ) {\r\n\t\t\t\t\t\tif ( page === 1 ) {\r\n\t\t\t\t\t\t\tjobsContainer.html( result.data.html );\r\n\t\t\t\t\t\t\tjobsContainer.parents( 'section' ).show();\r\n\t\t\t\t\t\t\texcludedIds = result.data.excluded_ids;\r\n\r\n\t\t\t\t\t\t\tif ( hasFilter ) {\r\n\t\t\t\t\t\t\t\tjobsCount.html( result.data.found_posts );\r\n\t\t\t\t\t\t\t\tjobsCount.parent().show();\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tjobsCount.parent().hide();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tjobsContainer.append( result.data.html );\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif ( result.data.found_posts > 0 ) {\r\n\t\t\t\t\t\t\tsubscribeButton.hide();\r\n\t\t\t\t\t\t\tjobsContainer.parents( '.table-container' ).show();\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tsubscribeButton.show();\r\n\t\t\t\t\t\t\tjobsContainer.parents( '.table-container' ).hide();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif ( result.data.has_more ) {\r\n\t\t\t\t\t\t\tjobsShowMore.show();\r\n\r\n\t\t\t\t\t\t\tjobsShowMore.off( 'click' );\r\n\t\t\t\t\t\t\tjobsShowMore.click( function () {\r\n\t\t\t\t\t\t\t\tloadJobs( keyword, departments, category, locations, 2 );\r\n\t\t\t\t\t\t\t} );\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tjobsShowMore.hide();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif ( hasFilter && page === 1 ) {\r\n\t\t\t\t\t\t$( function () {\r\n\t\t\t\t\t\t\tvar jobsContainer = $( '.job-subscribe:visible' );\r\n\t\t\t\t\t\t\tScroll.To( jobsContainer, jobsContainer.hasClass( 'visible-xs' ) ? 40 : 100 );\r\n\t\t\t\t\t\t} );\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tloader.hide();\r\n\t\t\t\t},\r\n\t\t\t\terror: function ( result ) {\r\n\t\t\t\t\tconsole.log( result );\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t\t};\r\n\r\n\t\t// Show data to form fields\r\n\t\tvar showValues = function ( jobData ) {\r\n\t\t\tif ( jobData.hasOwnProperty( 'keyword' ) ) {\r\n\t\t\t\tjobsForm.find( '[name=keyword]' ).val( jobData.keyword );\r\n\t\t\t\tsubscribeModal.find( '.js-modal-search' ).val( jobData.keyword );\r\n\t\t\t} else {\r\n\t\t\t\tjobsForm.find( '[name=keyword]' ).val( '' );\r\n\t\t\t\tsubscribeModal.find( '.js-modal-search' ).val( '' );\r\n\t\t\t}\r\n\r\n\t\t\tif ( jobData.hasOwnProperty( 'category' ) ) {\r\n\t\t\t\tvar categoryNames = [];\r\n\t\t\t\r\n\t\t\t\tjobsForm.find( '[name=\"category[]\"] option' ).prop( 'selected', false );\r\n\t\t\t\tjobData.category.forEach( function ( categoryId ) {\r\n\t\t\t\t\tvar items = jobsForm.find( '[name=\"category[]\"] option[value=' + categoryId + ']' );\r\n\t\t\t\t\titems.prop( 'selected', true );\r\n\t\t\t\r\n\t\t\t\t\tcategoryNames.push( $( items[0] ).text() );\r\n\t\t\t\t} );\r\n\t\t\t\r\n\t\t\t\tsubscribeModal.find( '.js-modal-category' ).val( categoryNames.join( ',' ) );\r\n\t\t\t} else {\r\n\t\t\t\tjobsForm.find( '[name=\"category[]\"] option' ).prop( 'selected', false );\r\n\t\t\t\tjobsForm.find( '[name=\"category[]\"]' ).trigger( 'change' );\r\n\t\t\t\tsubscribeModal.find( '.js-modal-category' ).val( '' );\r\n\t\t\t}\r\n\r\n\t\t\t// if ( jobData.hasOwnProperty( 'departments' ) ) {\r\n\t\t\t// \twindow.departmentDropdown(jobData);\r\n\t\t\t// } else {\r\n\t\t\t// \tjobsForm.find( '[name=\"departments[]\"] option' ).prop( 'selected', false );\r\n\t\t\t// \tjobsForm.find( '[name=\"departments[]\"]' ).trigger( 'change' );\r\n\t\t\t// \tsubscribeModal.find( '.js-modal-departments' ).val( '' );\r\n\t\t\t// }\r\n\r\n\t\t\tif ( jobData.hasOwnProperty( 'locations' ) ) {\r\n\t\t\t\t// nothing to do here, window.locationDropdown will execute inside window.departmentDropdown\r\n\t\t\t} else {\r\n\t\t\t\tjobsForm.find( '[name=\"locations[]\"] option' ).prop( 'selected', false );\r\n\t\t\t\tjobsForm.find( '[name=\"locations[]\"]' ).trigger( 'change' );\r\n\t\t\t\tsubscribeModal.find( '.js-modal-locations' ).val( '' );\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tvar adjustSubscribeModal = function () {\r\n\t\t\tvar instructions = $( '.vfb-fieldType-instructions' ),\r\n\t\t\t\tmodalBody = $( '.modal-body' );\r\n\r\n\t\t\tif ( instructions.length === 0 ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif ( helperViewport.documentWidth().width < 767 ) {\r\n\t\t\t\tmodalBody.removeAttr( 'style' );\r\n\t\t\t} else {\r\n\t\t\t\tmodalBody.css( 'padding-bottom', instructions.height() + 40 + 'px' );\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// Check if search action comes from another page\r\n\t\tif ( hash ) {\r\n\t\t\t// Decrypt the hash\r\n\t\t\thash = CryptoJS.AES.decrypt( hash, 'betsson' ).toString( CryptoJS.enc.Utf8 );\r\n\r\n\t\t\t// Get job data\r\n\t\t\tjobData = JSON.parse( hash );\r\n\r\n\t\t\tshowValues( jobData );\r\n\r\n\t\t\tvar keyword = jobData.hasOwnProperty( 'keyword' ) ? jobData.keyword : null,\r\n\t\t\t\tdepartments = jobData.hasOwnProperty( 'departments' ) ? jobData.departments : null,\r\n\t\t\t\tcategory = jobData.hasOwnProperty( 'category' ) ? jobData.category : null,\r\n\t\t\t\tlocations = jobData.hasOwnProperty( 'locations' ) ? jobData.locations : null;\r\n\r\n\t\t\t// Load initial jobs\r\n\t\t\tloadJobs( keyword, departments, category, locations, 1 );\r\n\t\t} else {\r\n\t\t\t// Load initial jobs\r\n\t\t\tloadJobs( null, null, null, null, 1 );\r\n\t\t}\r\n\r\n\t\t// Add markup to subscribe modal\r\n\t\t$( '.js-modal-checkmark' ).after( '' );\r\n\r\n\t\t// Subscribe modal adjustments\r\n\t\twindow.addEventListener( 'resize', adjustSubscribeModal );\r\n\t\tadjustSubscribeModal();\r\n\r\n\t\t// Initialize subscribe button\r\n\t\tsubscribeButton.click( function () {\r\n\t\t\tsubscribeModal.modal( 'show' );\r\n\r\n\t\t\tsetTimeout( function () {\r\n\t\t\t\tadjustSubscribeModal();\r\n\t\t\t}, 200 );\r\n\t\t} );\r\n\r\n\t\t// Submit subscribe form thru AJAX\r\n\t\tsubscribeModal.find( 'form' ).submit( function ( e ) {\r\n\t\t\tvar form = $( this );\r\n\t\t\te.preventDefault();\r\n\r\n\t\t\t// Delay the checking to make this execute last\r\n\t\t\tsetTimeout( function () {\r\n\t\t\t\tif ( form.find( '.vfb-has-error' ).length === 0 ) {\r\n\t\t\t\t\t$.post( '', form.serialize(), function () {\r\n\t\t\t\t\t\tform.hide();\r\n\t\t\t\t\t\tsubscribeModal.find( '.js-modal-subscribe-success' ).show();\r\n\t\t\t\t\t\tsubscribeModal.find( '.modal-dialog' ).addClass( 'is-success' );\r\n\t\t\t\t\t\tsubscribeModal.find( '.modal-body' ).removeAttr( 'style' );\r\n\t\t\t\t\t} );\r\n\t\t\t\t}\r\n\t\t\t}, 200 );\r\n\t\t} );\r\n\r\n\t\t// On form submit, if there is a jobs container, load result via ajax\t\r\n\t\tjobsForm.submit( function ( e ) {\r\n\t\t\tvar keyword = null, departments = [], category = [], locations = [];\r\n\t\t\tvar form = $( this );\r\n\r\n\t\t\tform.serializeArray().forEach( function ( item ) {\r\n\t\t\t\tif ( item.name === 'keyword' ) {\r\n\t\t\t\t\tkeyword = item.value;\r\n\t\t\t\t} else if ( item.name === 'departments[]' ) {\r\n\t\t\t\t\tdepartments.push( item.value );\r\n\t\t\t\t} else if ( item.name === 'category[]' ) {\r\n\t\t\t\t\tcategory.push( item.value );\r\n\t\t\t\t} else if ( item.name === 'locations[]' ) {\r\n\t\t\t\t\tlocations.push( item.value );\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\r\n\t\t\tvar hasFilter = keyword || departments.length || category.length || locations.length;\r\n\r\n\t\t\tif ( !hasFilter ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tvar data = {\r\n\t\t\t\tkeyword: keyword,\r\n\t\t\t\tdepartments: departments,\r\n\t\t\t\tcategory: category,\r\n\t\t\t\tlocations: locations\r\n\t\t\t};\r\n\r\n\t\t\tshowValues( data );\r\n\r\n\t\t\t// If jobs container is existing, load results via AJAX, else add search info to URL and redirect\r\n\t\t\tif ( jobsContainer.length > 0 ) {\r\n\t\t\t\t// Load initial jobs\r\n\t\t\t\tloadJobs( keyword, departments, category, locations, 1 );\r\n\r\n\t\t\t\t// Update URL hash\r\n\t\t\t\thash = CryptoJS.AES.encrypt( JSON.stringify( data ), 'betsson' ).toString();\r\n\t\t\t\twindow.location.hash = '#' + hash;\r\n\t\t\t} else {\r\n\t\t\t\thash = CryptoJS.AES.encrypt( JSON.stringify( data ), 'betsson' ).toString();\r\n\t\t\t\twindow.location.href = form.prop( 'action' ) + '#' + hash;\r\n\t\t\t}\r\n\r\n\t\t\treturn false;\r\n\t\t} );\r\n\r\n\t\t// Jobs department filter\r\n\t\t$( '.js-job-department' ).click( function ( e ) {\r\n\t\t\te.preventDefault();\r\n\r\n\t\t\tvar element = $( this );\r\n\t\t\tvar departmentId = element.data( 'id' );\r\n\r\n\t\t\tif ( !departmentId ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvar data = { departments: [departmentId] };\r\n\r\n\t\t\tloadJobs( null, [departmentId], null, null, 1 );\r\n\r\n\t\t\t// Update URL hash\r\n\t\t\tvar hash = CryptoJS.AES.encrypt( JSON.stringify( data ), 'betsson' ).toString();\r\n\t\t\twindow.location.hash = '#' + hash;\r\n\r\n\t\t\tshowValues( data );\r\n\t\t} );\r\n\t};\r\n\r\n\t$( JobResults.init );\r\n} )( jQuery );","( function ( $ ) {\r\n $( 'a.js-category-filter' ).each( function () {\r\n\t\tvar element = $( this );\r\n\r\n\t\t// Get departent id and prepare data\r\n\t\tvar categoryId = element.data( 'id' );\r\n\t\tvar data = { category: [categoryId] };\r\n\r\n\t\t// Generate hash\r\n\t\thash = CryptoJS.AES.encrypt( JSON.stringify( data ), 'betsson' ).toString();\r\n\r\n\t\t// Update link\r\n\t\tvar baseURL = element.data( 'baseUrl' );\r\n\t\telement.prop( 'href', baseURL + '#' + hash );\r\n\t} );\r\n\r\n\t$( '.category-multiple' ).change( function () {\r\n $('.department-multiple').html('');\r\n //$('.location-multiple').html('');\r\n var category = new Array();\r\n $(this).find(\"option:selected\").each(function() {\r\n category.push( $(this).val() );\r\n });\r\n\r\n $(this).on('select2:select', function (e) {\r\n // this will remove other categories and retain all only\r\n if(e.params.data.id == 'all') {\r\n $(this).val('all').trigger(\"change\");\r\n } else {\r\n if(category.indexOf(\"all\") == 0) {\r\n var filtered = category.filter(function(value, index, arr) { \r\n return value != 'all';\r\n });\r\n category = filtered;\r\n $(this).val(category).trigger(\"change\");\r\n }\r\n }\r\n });\r\n\r\n // window.departmentDropdown(category);\r\n // window.locationDropdown(category, '', '');\r\n } );\r\n\r\n $( '.department-multiple' ).change( function () {\r\n var category = new Array();\r\n var department = new Array();\r\n // category\r\n $('.category-multiple').find(\"option:selected\").each(function() {\r\n category.push( $(this).val() );\r\n });\r\n // department\r\n $(this).find(\"option:selected\").each(function() {\r\n department.push( $(this).val() );\r\n });\r\n\r\n //window.locationDropdown(category, department, '');\r\n } );\r\n\r\n // window.departmentDropdown = function(jobData) {\r\n // var category = jobData;\r\n // // use jobData as category if jobData.category is undefined\r\n // if(jobData.category != undefined) {\r\n // category = jobData.category;\r\n // }\r\n\r\n // $.ajax( {\r\n // url: '/wp-admin/admin-ajax.php',\r\n // data: {\r\n // action: 'get_department_dropdown',\r\n // category: category,\r\n // },\r\n // method: 'get',\r\n // dataType: 'json',\r\n // beforeSend: function () {\r\n // $('.department-multiple').attr('disabled', true);\r\n // $('.department-multiple').select2({\r\n // allowClear: true,\r\n // placeholder: {\r\n // id: 0,\r\n // text: 'Loading. . .'\r\n // }\r\n // });\r\n // },\r\n // success: function ( result ) {\r\n // $('.department-multiple').attr('disabled', false);\r\n // $('.department-multiple').addClass('has-data');\r\n // $('.department-multiple').html('').select2({data: result.rows});\r\n\r\n // if(jobData.category != undefined) {\r\n // var departmentNames = [];\r\n // $( '.js-jobs-search-form' ).find( '[name=\"departments[]\"] option' ).prop( 'selected', false );\r\n // jobData.departments.forEach( function ( departmentId ) {\r\n // var items = $( '.js-jobs-search-form' ).find( '[name=\"departments[]\"] option[value=' + departmentId + ']' );\r\n // items.prop( 'selected', true );\r\n\r\n // departmentNames.push( $( items[0] ).text() );\r\n // } );\r\n // $( '.js-jobs-search-form' ).find( '[name=\"departments[]\"]' ).trigger( 'change' );\r\n // $( '#subscribe-modal' ).find( '.js-modal-departments' ).val( departmentNames.join( ',' ) );\r\n\r\n // window.locationDropdown(jobData.category, jobData.departments, jobData.locations);\r\n // }\r\n // },\r\n // error: function ( result ) {\r\n // console.log( result );\r\n // }\r\n // } );\r\n // };\r\n\r\n // window.locationDropdown = function(category, department, locations) {\r\n // $.ajax( {\r\n // url: '/wp-admin/admin-ajax.php',\r\n // data: {\r\n // action: 'get_hub_dropdown',\r\n // category: category,\r\n // department: department,\r\n // },\r\n // method: 'get',\r\n // dataType: 'json',\r\n // beforeSend: function () {\r\n // $('.location-multiple').attr('disabled', true);\r\n // $('.location-multiple').select2({\r\n // allowClear: true,\r\n // placeholder: {\r\n // id: 0,\r\n // text: 'Loading. . .'\r\n // }\r\n // });\r\n // },\r\n // success: function ( result ) {\r\n // $('.location-multiple').attr('disabled', false);\r\n // $('.location-multiple').html('').select2({data: result.rows});\r\n\r\n // if(locations != '') {\r\n // var locationNames = [];\r\n\t// \t\t\t\t$( '.js-jobs-search-form' ).find( '[name=\"locations[]\"] option' ).prop( 'selected', false );\r\n\t// \t\t\t\tlocations.forEach( function ( locationId ) {\r\n\t// \t\t\t\t\tvar items = $( '.js-jobs-search-form' ).find( '[name=\"locations[]\"] option[value=' + locationId + ']' );\r\n\t// \t\t\t\t\titems.prop( 'selected', true );\r\n\r\n\t// \t\t\t\t\tlocationNames.push( $( items[0] ).text() );\r\n\t// \t\t\t\t} );\r\n\t// \t\t\t\t$( '.js-jobs-search-form' ).find( '[name=\"locations[]\"]' ).trigger( 'change' );\r\n\r\n\t// \t\t\t\t$( '#subscribe-modal' ).find( '.js-modal-locations' ).val( locationNames.join( ',' ) );\r\n // }\r\n // },\r\n // error: function ( result ) {\r\n // console.log( result );\r\n // }\r\n // } );\r\n // };\r\n} )( jQuery );","/*\r\n * To change this license header, choose License Headers in Project Properties.\r\n * To change this template file, choose Tools | Templates\r\n * and open the template in the editor.\r\n */\r\n\r\nvar FeaturedJobs = {};\r\n\r\n( function( $ ) {\r\n\r\n\tFeaturedJobs.updateApplyBtn = function( typedStrings, pos, applyBtn ) {\r\n\t\tvar currentUrl = $( typedStrings + ' p' ).eq( pos ).data( 'url' );\r\n\t\tapplyBtn.attr( 'href', currentUrl );\r\n\t};\r\n\r\n\tFeaturedJobs.typedInit = function( typedContainer, typedEl, typedStrings ) {\r\n\t\tvar applyBtn = $( typedStrings ).parent().parent().find( '.js-apply-btn' );\r\n\t\tvar isLinkUpdated = false;\r\n\r\n\t\tvar typed = new Typed( typedEl, {\r\n\t\t\tstringsElement: typedStrings,\r\n\t\t\ttypeSpeed: 100,\r\n\t\t\tbackSpeed: 60,\r\n\t\t\tloop: !0,\r\n\t\t\tpreStringTyped: function(pos, self) { \r\n\t\t\t\tisLinkUpdated = true;\r\n\t\t\t\tFeaturedJobs.updateApplyBtn( typedStrings, pos, applyBtn );\r\n\t\t\t},\r\n\t\t\tonStringTyped: function(pos, self) { \r\n\t\t\t\tif( !isLinkUpdated ) {\r\n\t\t\t\t\tFeaturedJobs.updateApplyBtn( typedStrings, pos, applyBtn );\r\n\t\t\t\t}\r\n\r\n\t\t\t\tisLinkUpdated = false;\r\n\t\t\t},\t\t\t\r\n\t\t});\t\t\r\n\t};\r\n\r\n\tFeaturedJobs.init = function ( typedContainer ) {\r\n\t\tif( !typedContainer ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t$.each( typedContainer, function() {\r\n\t\t\tvar _this = $( this );\r\n\t\t\tvar typedStrings = '#' + _this.find( '.typed-strings' ).attr( 'id' );\r\n\t\t\tvar typedEl = '#' + _this.find( '.typed' ).attr( 'id' );\r\n\r\n\t\t\tFeaturedJobs.typedInit( typedContainer, typedEl, typedStrings );\r\n\t\t} );\r\n\t};\r\n\r\n\t$( document ).ready(function() {\r\n\t\tFeaturedJobs.init( $( '.typed-container' ) );\r\n\t});\r\n\r\n} )( jQuery );\r\n","/*\n * To change this license header, choose License Headers in Project Properties.\n * To change this template file, choose Tools | Templates\n * and open the template in the editor.\n */\n\nvar form = {};\n\nform.fileUploadSelected = function () {\n\tif (jQuery(\".section.form\").length) {\n\t\tjQuery(document).on(\"change\", \":file\", function () {\n\t\t\tvar input = jQuery(this),\n\t\t\t\tnumFiles = input.get(0).files ? input.get(0).files.length : 1,\n\t\t\t\tlabel = input.val().replace(/\\\\/g, \"/\").replace(/.*\\//, \"\");\n\t\t\tinput.trigger(\"fileselect\", [numFiles, label]);\n\t\t});\n\n\t\tjQuery(\":file\").on(\"fileselect\", function (event, numFiles, label) {\n\t\t\tjQuery(this)\n\t\t\t\t.closest(\"div.form-group\")\n\t\t\t\t.find(\"div.selected-file\")\n\t\t\t\t.html(label);\n\t\t});\n\t}\n};\n\nform.select = function () {\n\tjQuery(\"select\").select2({\n\t\twidth: \"100%\",\n\t});\n};\n\n(function ($) {\n\tform.fileUploadSelected();\n\tform.select();\n})(jQuery);\n","/*\r\n * To change this license header, choose License Headers in Project Properties.\r\n * To change this template file, choose Tools | Templates\r\n * and open the template in the editor.\r\n */\r\n\r\nvar FAQ = {};\r\n\r\n( function( $ ) {\r\n\r\n\tFAQ.init = function () {\r\n $(\".accordion\" ).accordion({\r\n\t\theightStyle: \"content\",\r\n\t\tcollapsible: true,\r\n\t\tactive: false,\r\n\t\theader: '> div.faq-item >h6'\r\n\t});\r\n\t};\r\n\r\n\t$( document ).ready(function() {\r\n FAQ.init();\r\n\t});\r\n\r\n} )( jQuery );\r\n","( function ( $ ) {\r\n\t$( 'section.latest-news' ).each( function () {\r\n\t\tvar newsSection = $( this );\r\n\r\n\t\tvar newsData = newsSection.find( '#news-data' ),\r\n\t\t\tshowMoreButton = newsSection.find( '#news-show-more' ),\r\n\t\t\tloader = newsSection.find( '.loader' ),\r\n\t\t\tnewsContainer = newsSection.find( '#news-container' );\r\n\r\n\t\tif ( newsContainer.length === 0 ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * Add big cards\r\n\t\t */\r\n\t\tvar updateColumns = function () {\r\n\t\t\tvar bigIndex1 = 3,\r\n\t\t\t\tbigIndex2 = 5,\r\n\t\t\t\tbigIndex3 = 7,\r\n\t\t\t\tnextIndex = 9;\r\n\r\n\t\t\tnewsContainer.find( '.col' ).each( function ( index, item ) {\r\n\t\t\t\tvar isBig = false;\r\n\t\t\t\tindex++;\r\n\r\n\t\t\t\tif ( index === bigIndex1 ) {\r\n\t\t\t\t\tisBig = true;\r\n\t\t\t\t\tbigIndex1 += nextIndex;\r\n\t\t\t\t} else if ( index === bigIndex2 ) {\r\n\t\t\t\t\tisBig = true;\r\n\t\t\t\t\tbigIndex2 += nextIndex;\r\n\t\t\t\t} else if ( index === bigIndex3 ) {\r\n\t\t\t\t\tisBig = true;\r\n\t\t\t\t\tbigIndex3 += nextIndex;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar img = $( item ).find( 'figure img' );\r\n\r\n\t\t\t\tif ( isBig ) {\r\n\t\t\t\t\t$( item ).addClass( 'is-landscape' );\r\n\r\n\t\t\t\t\tif( img.data( 'src-landscape' ) ) {\r\n\t\t\t\t\t\timg.attr( 'src', img.data( 'src-landscape' ) );\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$( item ).removeClass( 'is-landscape' );\r\n\t\t\t\t\t\r\n\t\t\t\t\tif( img.data( 'src-portrait' ) ) {\r\n\t\t\t\t\t\timg.attr( 'src', img.data( 'src-portrait' ) );\t\r\n\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};\r\n\r\n\t\tupdateColumns();\r\n\r\n\t\tif ( newsData.length === 0 || showMoreButton.length === 0 ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Get news data\r\n\t\tnewsData = JSON.parse( newsData.text() );\r\n\r\n\t\t// Show the rest of the news items\r\n\t\tshowMoreButton.click( function ( e ) {\r\n\t\t\te.preventDefault();\r\n\r\n\t\t\t$.ajax( {\r\n\t\t\t\turl: '/wp-admin/admin-ajax.php',\r\n\t\t\t\tdata: {\r\n\t\t\t\t\taction: 'get_more_news',\r\n\t\t\t\t\ttax_query: newsData.tax_query,\r\n\t\t\t\t\texcluded_ids: newsData.excluded_ids\r\n\t\t\t\t},\r\n\t\t\t\tmethod: 'get',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\tbeforeSend: function () {\r\n\t\t\t\t\tshowMoreButton.hide();\r\n\t\t\t\t\tloader.show();\r\n\t\t\t\t},\r\n\t\t\t\tsuccess: function ( result ) {\r\n\t\t\t\t\tnewsContainer.append( result.data.html );\r\n\t\t\t\t\tupdateColumns();\r\n\t\t\t\t\tloader.hide();\r\n\t\t\t\t\t\r\n\t\t\t\t\tglobalFnc.imageIE();\r\n\t\t\t\t},\r\n\t\t\t\terror: function ( result ) {\r\n\t\t\t\t\tconsole.log( result );\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t\t} );\r\n\t} );\r\n} )( jQuery );","/*\r\n * To change this license header, choose License Headers in Project Properties.\r\n * To change this template file, choose Tools | Templates\r\n * and open the template in the editor.\r\n */\r\n\r\nvar mobiSlider = {};\r\n\r\nmobiSlider.init = function () {\r\n\tjQuery('.mobile-carousel').flickity({\r\n\t\twrapAround: true,\r\n\t\tinitialIndex: 2,\r\n\t\tadaptiveHeight: true,\r\n\t\tprevNextButtons: false,\r\n\t\tpageDots: false,\r\n\t\tlazyLoad: true\r\n\t});\r\n\r\n\tjQuery('.slider-carousel').flickity({\r\n\t\twrapAround: true,\r\n\t\tinitialIndex: 1,\r\n\t\tadaptiveHeight: true,\r\n\t\tprevNextButtons: false,\r\n\t\tpageDots: true,\r\n\t\tlazyLoad: true\r\n\t});\r\n\r\n\tjQuery('.cards-carousel').flickity({\r\n\t\t//wrapAround: true,\r\n\t\t// initialIndex: 2,\r\n\t\tadaptiveHeight: true,\r\n\t\tprevNextButtons: false,\r\n\t\tpageDots: false,\r\n\t\tlazyLoad: true,\r\n\t\tcontain: true\r\n\t});\r\n};\r\n\r\n( function( $ ) {\r\n\tmobiSlider.init();\r\n} )( jQuery );\r\n","( function ( $ ) {\n\tvar showMobileFormButton = $( '.js-toggle-mobile-form' );\n\n\t// Add filesize validator\n\t$.validator.addMethod( 'filesize', function ( value, element, param ) {\n\t\treturn this.optional( element ) || ( ( ( element.files[0].size / 1024 ) / 1024 ).toFixed( 4 ) <= param );\n\t}, 'File size must be less than {0} MB' );\n\n\t// Desktop scroll to form\n\t$( '.js-scroll-to-desktop-form' ).click( function ( e ) {\n\t\te.preventDefault();\n\n\t\tScroll.To( '#job-application-form-container' );\n\t} );\n\n\t// Mobile scroll to form\n\tshowMobileFormButton.click( function ( e ) {\n\t\te.preventDefault();\n\n\t\tvar target = $( '#job-application-form-mobile-container > div' );\n\t\ttarget.toggle();\n\t} );\n\n\t// Show mobile form\n\t$( '.js-scroll-show-mobile-form' ).click( function ( e ) {\n\t\te.preventDefault();\n\n\t\tif ( !showMobileFormButton.parent().hasClass( 'active' ) ) {\n\t\t\tshowMobileFormButton.click();\n\t\t}\n\n\t\tScroll.To( '#job-application-form-mobile-container' );\n\t} );\n\n\t// Application form submission\n\t$( '.js-job-application-form' ).each( function () {\n\t\t$( this ).validate( {\n\t\t\trules: {\n\t\t\t\tresume: {\n\t\t\t\t\trequired: true,\n\t\t\t\t\textension: 'pdf|doc|docx',\n\t\t\t\t\taccept: '',\n\t\t\t\t\tfilesize: 5\n\t\t\t\t},\n\t\t\t\tcover_letter: {\n\t\t\t\t\textension: 'pdf|doc|docx',\n\t\t\t\t\taccept: '',\n\t\t\t\t\tfilesize: 5\n\t\t\t\t}\n\t\t\t},\n\t\t\tmessages: {\n\t\t\t\tresume: {\n\t\t\t\t\textension: 'Invalid file type. Acceptable types are *.pdf, *.doc, *.docx.'\n\t\t\t\t},\n\t\t\t\tcover_letter: {\n\t\t\t\t\textension: 'Invalid file type. Acceptable types are *.pdf, *.doc, *.docx.'\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n\n\t// Application form submit tracking\n\t$( '.js-job-application-form' ).submit( function () {\n\t\tif ( !Job.notARobot ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( !$( this ).valid() ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( typeof fbq !== 'undefined' ) {\n\t\t\tfbq( 'track', 'SubmitApplication' );\n\t\t}\n\t} );\n\n\t$( '.job-template-default .selected-page-header h1' ).fitText( 1.6 );\n} )( jQuery );\n\nwindow.Job = {\n\tnotARobot: false,\n\trecaptchaCallback: function ( token ) {\n\t\tfetch( '/wp-admin/admin-ajax.php?action=get_captcha_result&token=' + token )\n\t\t\t.then( function ( response ) { return response.json(); } )\n\t\t\t.then( function ( data ) {\n\t\t\t\tvar response = JSON.parse( data.data.response.body );\n\t\t\t\tJob.notARobot = response.success;\n\n\t\t\t\tArray.from( document.querySelectorAll( '.js-not-robot-field' ) ).forEach( function ( element ) {\n\t\t\t\t\telement.checked = response.success;\n\t\t\t\t\tvar error = document.getElementById( 'not_robot-field-error' );\n\n\t\t\t\t\tif ( response.success && error ) {\n\t\t\t\t\t\terror.style.display = 'none';\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} )\n\t\t\t.catch( function ( err ) { console.log( err ) } )\n\t}\n};","\r\nvar toggler = {};\r\n\r\n( function( $ ) {\r\n\r\n\ttoggler.init = function () {\r\n\r\n\t\t$('.toggler').click(function(e) {\r\n\t\t\te.preventDefault();\r\n\r\n\t\t\tvar $this = $(this);\r\n\r\n\t\t\tif ($this.next().hasClass('show')) {\r\n\t\t\t\t$this.removeClass('active');\r\n\t\t\t\t$this.next().removeClass('show');\r\n\t\t\t\t$this.next().slideUp(350);\r\n\t\t\t} else {\r\n\t\t\t\t$this.addClass('active');\r\n\t\t\t\t$this.next().addClass('show');\r\n\t\t\t\t$this.next().slideDown(350);\r\n\t\t\t}\r\n\t\t});\r\n };\r\n\r\n $( document ).ready(function() {\r\n toggler.init();\r\n });\r\n\r\n} )( jQuery );\r\n","var helperViewport = {};\r\n\r\nhelperViewport.documentWidth = function(){\r\n\tvar e = window, a = 'inner';\r\n\r\n\tif( !( 'innerWidth' in window ) ) {\r\n\t\ta = 'client';\r\n\t\te = document.documentElement || document.body;\r\n\t}\r\n\r\n\treturn { width : e[ a+'Width' ] , height : e[ a+'Height' ] };\r\n};\r\n\r\n\r\nvar ImageSwitch = {};\r\n\r\nImageSwitch.updateImage = function( targetEl ) {\r\n\tfor( var i = 0; i < targetEl.length; i++ ) {\r\n\t\tvar background = null;\r\n\t\tvar currentEl = targetEl[i];\r\n\r\n\t\tif( helperViewport.documentWidth().width < 767 ) {\r\n\t\t\tbackground = currentEl.getAttribute( 'data-mobileBackground' );\r\n\t\t} else {\r\n\t\t\tbackground = currentEl.getAttribute( 'data-desktopBackground' );\r\n\t\t}\r\n\r\n\t\tif( currentEl.getAttribute( 'data-change-type' ) === 'src' ) {\r\n\t\t\tcurrentEl.src = background;\r\n\t\t} else {\r\n\t\t\tcurrentEl.style.backgroundImage = 'url('+ background +')';\r\n\t\t}\r\n\t}\r\n};\r\n\r\nImageSwitch.init = function( wrapperEl ) {\r\n\tvar target = document.querySelectorAll( wrapperEl );\r\n\r\n\tif( target.length === 0 ) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tImageSwitch.updateImage( target );\r\n\r\n\twindow.addEventListener( 'resize', function() { \r\n\t\tImageSwitch.updateImage( target );\r\n\t});\t\r\n};\r\n\r\nImageSwitch.init( '.js-image-switch' );","( function ( $ ) {\r\n\tvar scrollBtn = $( '.js-scrollTo-next-section' );\r\n\tvar excludedClass = [ 'is-primary', 'is-secondary', 'is-first', 'location-grids' ];\r\n\r\n\tvar scrollToSection = function( targetSection, adjHeight ) {\r\n\t\tScroll.To( targetSection, adjHeight );\r\n\t};\r\n\r\n\tif( scrollBtn.length > 0 ) {\r\n\t\tscrollBtn.on( 'click', function(e) {\r\n\t\t\te.preventDefault();\r\n\r\n\t\t\tvar targetElClass = null;\r\n\t\t\tvar mainContainer = $( this ).parents().eq(2);\r\n\t\t\tvar adjHeight = 100;\r\n\r\n\t\t\tif( mainContainer.children().length > 1 ) {\r\n\t\t\t\tvar nextElClassAttr = $.trim( mainContainer.children().eq(1).attr('class') );\r\n\t\t\t\tvar nextElClasses = nextElClassAttr.split(/\\s+/);\r\n\t\t\t\tvar intersect = $( nextElClasses ).not( $( nextElClasses ).not( excludedClass ) );\r\n\r\n\t\t\t\tif( intersect.length > 0 ) {\r\n\t\t\t\t\tadjHeight = 0;\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttargetElClass = '.'+ nextElClasses.join('.');\r\n\t\t\t} else {\r\n\t\t\t\ttargetElClass = 'footer';\r\n\t\t\t}\r\n\r\n\t\t\tif( targetElClass ) {\r\n\t\t\t\tscrollToSection( targetElClass, adjHeight );\r\n\t\t\t}\r\n\t\t} );\r\n\t}\r\n} )( jQuery );","/*\r\n * To change this license header, choose License Headers in Project Properties.\r\n * To change this template file, choose Tools | Templates\r\n * and open the template in the editor.\r\n */\r\n\r\nvar filter = {};\r\n\r\n( function ( $ ) {\r\n\tfilter.init = function () {\r\n\t\t$( '.job-search' ).each( function () {\r\n\t\t\tvar searchContainer = $( this );\r\n\r\n\t\t\tsearchContainer.find( '.department-multiple' ).select2( {\r\n\t\t\t\tplaceholder: 'Choose Department'\r\n\t\t\t} );\r\n\r\n\t\t\tsearchContainer.find( '.category-multiple' ).select2( {\r\n\t\t\t\tplaceholder: 'Choose Category'\r\n\t\t\t} );\r\n\r\n\t\t\tsearchContainer.find( '.location-multiple' ).select2( {\r\n\t\t\t\tplaceholder: 'Choose Location'\r\n\t\t\t} );\r\n\r\n\t\t\tsearchContainer.css( 'visibility', 'visible' );\r\n\t\t} );\r\n\t};\r\n\r\n\t$( filter.init );\r\n} )( jQuery );","var navmenu = {};\r\n\r\n( function( $ ) {\r\n\r\n\tnavmenu.menuMobile = function () {\r\n var primaryMenu = $('.nav-primary .nav').html();\r\n var secondaryMenu = $('.nav-secondary .nav').html();\r\n $('.js-menu-toggle ul').html( [ primaryMenu, secondaryMenu ] );\r\n };\r\n\r\n navmenu.toggleMenu = function () {\r\n $( \".js-toggle-menu\" ).click(function() {\r\n $( \".nav-mobile-toggle\" ).toggleClass( \"menu-open\" );\r\n $( \".main-body\" ).toggleClass( \"menu-open\" );\r\n });\r\n };\r\n\r\n navmenu.menuScroll = function (locationX) {\r\n var locationWin = locationX;\r\n\r\n if( $('.js-hero').length ) {\r\n\r\n var bannerHeight = $('.banner').height();\r\n\r\n if( locationWin >= bannerHeight ){\r\n $('.banner').removeClass('has-hero');\r\n }\r\n else {\r\n $('.banner').addClass('has-hero');\r\n }\r\n }\r\n\r\n if( $('.js-submenu-banner').length ) {\r\n\r\n var targetOffset = $('.hero-banner').outerHeight() - $('.js-submenu-banner').children('.submenu-nav').outerHeight();\r\n\t\t\tvar adminbar = $('#wpadminbar').length ? $('#wpadminbar').outerHeight() : 0;\r\n var topCss = $('.banner').outerHeight() + adminbar - 1;\r\n var targetHeight = locationWin + $('.banner').outerHeight();\r\n\r\n if( targetHeight >= targetOffset ) {\r\n $('.js-submenu-banner').children('.submenu-nav').addClass('submenu-fix');\r\n $('.js-submenu-banner').children('.submenu-nav').css(\"top\", topCss+\"px\");\r\n }\r\n else {\r\n $('.js-submenu-banner').children('.submenu-nav').removeClass('submenu-fix');\r\n $('.js-submenu-banner').children('.submenu-nav').removeAttr(\"style\");\r\n }\r\n }\r\n };\r\n\r\n\r\n navmenu.subMenuMobile = function() {\r\n $('.js-submenu-carousel').flickity({\r\n cellAlign: 'center',\r\n contain: true,\r\n prevNextButtons: false,\r\n pageDots: false\r\n });\r\n };\r\n\r\n\r\n navmenu.toggleMenu();\r\n navmenu.menuMobile();\r\n navmenu.menuScroll();\r\n\r\n $(window).load(function(){\r\n navmenu.subMenuMobile();\r\n });\r\n\r\n $(window).scroll(function () {\r\n navmenu.menuScroll($(window).scrollTop());\r\n });\r\n\r\n $( window ).resize(function() {\r\n navmenu.menuScroll($(window).scrollTop());\r\n });\r\n\r\n} )( jQuery );\r\n","var ListingPagination = {};\r\n\r\n(function ( $ ) {\r\n\r\n var scope = $( '.js-listing' );\r\n var currentPage = 1;\r\n var ajaxRequestEnable = true;\r\n var container = null;\r\n var hasMore = false;\r\n var btnDelay = 0;\r\n var showAllButton = $( '.js-show-all' );\r\n var listingLoader = '.loader';\r\n\r\n ListingPagination.load = function ( data, buttonEl ) {\r\n\r\n // To avoid double send of ajax request\r\n if( !ajaxRequestEnable ) {\r\n return;\r\n }\r\n\r\n $.ajax( {\r\n url: '/wp-admin/admin-ajax.php',\r\n dataType: 'json',\r\n data: {\r\n action: 'get_posts',\r\n postType: data.postType,\r\n term: data.term,\r\n taxonomy: data.taxonomy,\r\n excluded: data.excluded\r\n },\r\n beforeSend: function () {\r\n ajaxRequestEnable = false;\r\n buttonEl.hide();\r\n container.parent().find( listingLoader ).show();\r\n },\r\n success: function ( result ) {\r\n ListingPagination.outputResult( result.html );\r\n\t\t\t\thasMore = result.hasMore;\r\n\t\t\t\t\r\n\t\t\t\tglobalFnc.imageIE();\r\n },\r\n complete: function() {\r\n container.parent().find( listingLoader ).hide();\r\n ajaxRequestEnable = true; \r\n\r\n if( !hasMore ) {\r\n buttonEl.hide(); \r\n }\r\n },\r\n error: function( xhr, textStatus, error ) {\r\n console.log( error );\r\n }\r\n } );\r\n };\r\n\r\n ListingPagination.outputResult = function( items ) {\r\n var item = null;\r\n\r\n $.each( items, function( i, val ) {\r\n btnDelay = 100*i;\r\n\r\n setTimeout( function(){\r\n item = $( val ).hide();\r\n container.append( item );\r\n item.fadeIn( 'slow' );\r\n\r\n // re-initialized accordion\r\n $( '.accordion' ).accordion('destroy');\r\n FAQ.init(); \r\n }, btnDelay );\r\n } );\r\n };\r\n\r\n showAllButton.on('click', function ( e ) {\r\n e.preventDefault();\r\n\r\n var data = $( this ).data( 'listing' );\r\n container = $( data.listingContainer );\r\n\r\n if ( data.hasMore ) {\r\n ListingPagination.load( data, $( this ) );\r\n }\r\n } );\r\n\r\n ListingPagination.init = function () {\r\n if( showAllButton.length === 0 ) { return; }\r\n\r\n $.each( showAllButton, function( i, val ) {\r\n if( !$( this ).data( 'listing' ).hasMore ) {\r\n $( this ).hide();\r\n }\r\n });\r\n };\r\n\r\n if( scope.length > 0 ) {\r\n ListingPagination.init();\r\n }\r\n\r\n})( jQuery );","/* COOKIES */\r\nvar betssonCookie = {};\r\n\r\nbetssonCookie.set = function ( cname, cvalue, exdays ) {\r\n var d = new Date();\r\n d.setTime( d.getTime() + (exdays * 24 * 60 * 60 * 1000) );\r\n var expires = \"expires=\" + d.toUTCString();\r\n document.cookie = cname + \"=\" + cvalue + \";\" + expires + \";path=/\";\r\n};\r\n\r\nbetssonCookie.get = function ( cname ) {\r\n var name = cname + \"=\";\r\n var decodedCookie = decodeURIComponent( document.cookie );\r\n var ca = decodedCookie.split( ';' );\r\n\r\n for ( var i = 0; i < ca.length; i++ ) {\r\n var c = ca[ i ];\r\n while ( c.charAt( 0 ) === ' ' ) {\r\n c = c.substring( 1 );\r\n }\r\n\r\n if ( c.indexOf( name ) === 0 ) {\r\n return c.substring( name.length, c.length );\r\n }\r\n }\r\n return \"\";\r\n};\r\n\r\nbetssonCookie.addListener = function ( element, eventNames, listener ) {\r\n var events = eventNames.split( ' ' );\r\n for ( var i = 0; i < events.length; i++ ) {\r\n element.addEventListener( events[ i ], listener );\r\n }\r\n};\r\n\r\nbetssonCookie.init = function ( wrapperClass, btnClass ) {\r\n var wrappers = document.querySelectorAll( wrapperClass );\r\n\r\n for ( var i = 0; i < wrappers.length; i++ ) {\r\n var cookieName = wrappers[ i ].getAttribute( 'data-cookie' );\r\n\r\n // if cookies allowed but not yet saved\r\n if ( document.cookie.indexOf( cookieName ) < 0 && navigator.cookieEnabled ) {\r\n //show cookie\r\n wrappers[ i ].style.display = \"block\";\r\n\r\n //init approval buttons\r\n var buttons = wrappers[ i ].querySelectorAll( btnClass );\r\n var thisWrapper = wrappers[ i ];\r\n\r\n for ( var j = 0; j < buttons.length; j++ ) {\r\n\r\n betssonCookie.addListener( buttons[ j ], 'click keydown', function ( e ) {\r\n var etype = e.type;\r\n\r\n if ( etype === 'keydown' && (e.keyCode !== 13 && e.keyCode !== 32) ) {\r\n return true;\r\n }\r\n\r\n e.preventDefault();\r\n betssonCookie.set( cookieName, true, 365 );\r\n thisWrapper.parentNode.removeChild( thisWrapper );\r\n } );\r\n }\r\n } else {\r\n wrappers[ i ].parentNode.removeChild( wrappers[ i ] );\r\n }\r\n }\r\n};\r\n\r\nbetssonCookie.init( '.js-cookie', '.js-cookie-approve' );","var Slider = {};\r\n\r\nSlider.init = function () {\r\n\tSlider.ios_fix();\r\n};\r\n\r\n// IOS 13.1.3 Flickity Swipe Fix\r\nSlider.ios_fix = function() {\r\n var touchingCarousel = false;\r\n var touchStartCoords;\r\n\r\n document.body.addEventListener('touchstart', function(e) {\r\n if (e.target.closest('.flickity-slider')) {\r\n touchingCarousel = true;\r\n } else {\r\n touchingCarousel = false;\r\n return;\r\n }\r\n\r\n touchStartCoords = {\r\n x: e.touches[0].pageX,\r\n y: e.touches[0].pageY,\r\n }\r\n });\r\n\r\n document.body.addEventListener('touchmove', function(e) {\r\n if (!(touchingCarousel && e.cancelable)) {\r\n return;\r\n }\r\n\r\n var moveVector = {\r\n x: e.touches[0].pageX - touchStartCoords.x,\r\n y: e.touches[0].pageY - touchStartCoords.y,\r\n };\r\n\r\n if (Math.abs(moveVector.x) > 7)\r\n e.preventDefault()\r\n\r\n }, {passive: false});\r\n};\r\n\r\n( function( $ ) {\r\n\tSlider.init();\r\n} )( jQuery );\r\n"],"sourceRoot":"assets/scripts/"}