{"version":3,"sources":["webpack:///./node_modules/select2/dist/js/i18n/nl.js","webpack:///./node_modules/select2/dist/js/select2.js"],"names":["jQuery","fn","select2","amd","e","define","errorLoading","inputTooLong","input","length","maximum","inputTooShort","minimum","loadingMore","maximumSelected","n","noResults","searching","require","S2","requirejs","undef","main","req","makeMap","handlers","defined","waiting","config","defining","hasOwn","Object","prototype","hasOwnProperty","aps","slice","jsSuffixRegExp","hasProp","obj","prop","call","normalize","name","baseName","nameParts","nameSegment","mapValue","foundMap","lastIndex","foundI","foundStarMap","starI","i","j","part","baseParts","split","map","starMap","nodeIdCompat","test","replace","charAt","concat","splice","join","makeRequire","relName","forceSync","args","arguments","push","apply","makeLoad","depName","value","callDep","Error","splitPrefix","prefix","index","indexOf","substring","makeRelParts","makeConfig","relParts","plugin","parts","relResourceName","f","pr","p","exports","module","id","uri","deps","callback","cjsModule","ret","usingExports","callbackType","load","undefined","alt","setTimeout","cfg","_defined","_$","$","console","error","Utils","getMethods","theClass","proto","methods","methodName","Extend","ChildClass","SuperClass","__hasProp","BaseConstructor","this","constructor","key","__super__","Decorate","DecoratorClass","decoratedMethods","superMethods","DecoratedClass","unshift","Array","argCount","calledConstructor","displayName","m","superMethod","calledMethod","originalMethod","decoratedMethod","d","Observable","listeners","on","event","trigger","params","_type","invoke","len","generateChars","chars","Math","floor","random","toString","bind","func","context","_convertData","data","originalKey","keys","dataLevel","k","toLowerCase","hasScroll","el","$el","overflowX","style","overflowY","innerHeight","scrollHeight","innerWidth","scrollWidth","escapeMarkup","markup","replaceMap","'","String","match","appendMany","$element","$nodes","jquery","substr","$jqNodes","node","add","append","Results","options","dataAdapter","render","$results","get","attr","clear","empty","displayMessage","hideLoading","$message","message","className","hideMessages","find","remove","$options","results","sort","item","$option","option","children","position","$dropdown","sorter","highlightFirstItem","$selected","filter","first","ensureHighlightVisible","setClasses","self","current","selected","selectedIds","s","each","element","inArray","showLoading","loading","disabled","text","$loading","prepend","document","createElement","attrs","_resultId","title","role","val","setAttribute","label","template","$children","c","child","$child","$childrenContainer","container","$container","isOpen","removeAttr","$highlighted","getHighlightedResults","currentIndex","nextIndex","$next","eq","currentOffset","offset","top","nextTop","nextOffset","scrollTop","outerHeight","nextBottom","addClass","mousewheel","bottom","deltaY","isAtTop","isAtBottom","height","preventDefault","stopPropagation","evt","$this","originalEvent","removeClass","destroy","offsetDelta","result","content","display","innerHTML","BACKSPACE","TAB","ENTER","SHIFT","CTRL","ALT","ESC","SPACE","PAGE_UP","PAGE_DOWN","END","HOME","LEFT","UP","RIGHT","DOWN","DELETE","KEYS","BaseSelection","$selection","_tabindex","resultsId","_handleBlur","which","update","_attachCloseHandler","focus","_detachCloseHandler","window","activeElement","contains","body","$select","target","closest","off","SingleSelection","html","selectionContainer","selection","$rendered","formatted","MultipleSelection","parent","$selections","Placeholder","decorated","placeholder","normalizePlaceholder","_","createPlaceholder","$placeholder","singlePlaceholder","AllowClear","_handleClear","_handleKeyboardClear","$clear","unselectData","prevented","$remove","Search","$search","$searchContainer","_transferTabIndex","_keyUpPrevented","isDefaultPrevented","$previousChoice","prev","searchRemoveChoice","msie","documentMode","disableInputEvents","type","handleSearch","searchHadFocus","resizeSearch","term","css","width","EventRelay","relayEvents","preventableEvents","Event","Translation","dict","all","extend","translation","_cache","loadPath","path","translations","BaseAdapter","query","generateResultId","SelectAdapter","select","is","currentData","unselect","removeData","matches","addOptions","textContent","innerText","normalizedData","_normalizeItem","isPlainObject","matcher","ArrayAdapter","convertToOptions","elm","$existing","existingIds","onlyItem","$existingOption","existingData","newData","$newOption","replaceWith","AjaxAdapter","ajaxOptions","_applyDefaults","processResults","defaults","q","transport","success","failure","$request","ajax","then","fail","_request","isFunction","abort","request","isArray","status","url","delay","_queryTimeout","clearTimeout","Tags","tags","createTag","insertTag","t","tag","_removeOldTags","page","wrapper","checkChildren","toUpperCase","trim","_lastTag","Tokenizer","tokenizer","dropdown","tokenData","separators","termChar","MinimumInputLength","$e","minimumInputLength","MaximumInputLength","maximumInputLength","MaximumSelectionLength","maximumSelectionLength","count","Dropdown","showSearch","HidePlaceholder","removePlaceholder","modifiedData","InfiniteScroll","lastParams","$loadingMore","createLoadingMore","showLoadingMore","isLoadMoreVisible","documentElement","loadMore","pagination","more","AttachBody","$dropdownParent","setupResultsEvents","_showDropdown","_attachPositioningHandler","_positionDropdown","_resizeDropdown","_hideDropdown","_detachPositioningHandler","$dropdownContainer","detach","scrollEvent","resizeEvent","orientationEvent","$watchers","parents","x","scrollLeft","y","ev","$window","isCurrentlyAbove","hasClass","isCurrentlyBelow","newDirection","viewport","enoughRoomAbove","enoughRoomBelow","left","$offsetParent","offsetParent","parentOffset","outerWidth","minWidth","appendTo","MinimumResultsForSearch","minimumResultsForSearch","Infinity","countResults","SelectOnClose","_handleSelectOnClose","originalSelect2Event","$highlightedResults","CloseOnSelect","_selectTriggered","ctrlKey","overChars","ResultsList","SelectionSearch","DIACRITICS","SelectData","ArrayData","AjaxData","DropdownSearch","EnglishTranslation","Defaults","reset","tokenSeparators","Query","amdBase","initSelection","InitSelection","resultsAdapter","selectOnClose","dropdownAdapter","multiple","SearchableDropdown","closeOnSelect","dropdownCssClass","dropdownCss","adaptDropdownCssClass","DropdownCSS","selectionAdapter","allowClear","containerCssClass","containerCss","adaptContainerCssClass","ContainerCSS","language","baseLanguage","languages","languageNames","l","amdLanguageBase","ex","debug","warn","baseTranslation","customTranslation","stripDiacritics","a","dropdownAutoWidth","original","templateResult","templateSelection","theme","set","camelCase","convertedData","Options","fromElement","InputCompat","excludedData","dir","dataset","Select2","_generateId","tabindex","DataAdapter","_placeContainer","SelectionAdapter","DropdownAdapter","ResultsAdapter","_bindAdapters","_registerDomEvents","_registerDataEvents","_registerSelectionEvents","_registerDropdownEvents","_registerResultsEvents","_registerEvents","initialData","_syncAttributes","insertAfter","_resolveWidth","method","WIDTH","styleWidth","elementWidth","_syncA","_syncS","_syncSubtree","attachEvent","observer","MutationObserver","WebKitMutationObserver","MozMutationObserver","_observer","mutations","observe","attributes","childList","subtree","addEventListener","nonRelayEvents","toggleDropdown","altKey","close","open","changed","nodeName","addedNodes","removedNodes","actualTrigger","preTriggerMap","preTriggerName","preTriggerArgs","hasFocus","enable","newVal","detachEvent","disconnect","removeEventListener","thisMethods","instanceOptions","instance"],"mappings":"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U,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAA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","file":"vendors-pkg-select2.c888c935.js","sourcesContent":["/*! Select2 4.0.5 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define(\"select2/i18n/nl\",[],function(){return{errorLoading:function(){return\"De resultaten konden niet worden geladen.\"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"Gelieve \"+t+\" karakters te verwijderen\";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"Gelieve \"+t+\" of meer karakters in te voeren\";return n},loadingMore:function(){return\"Meer resultaten laden…\"},maximumSelected:function(e){var t=e.maximum==1?\"kan\":\"kunnen\",n=\"Er \"+t+\" maar \"+e.maximum+\" item\";return e.maximum!=1&&(n+=\"s\"),n+=\" worden geselecteerd\",n},noResults:function(){return\"Geen resultaten gevonden…\"},searching:function(){return\"Zoeken…\"}}}),{define:e.define,require:e.require}})();","/*!\n * Select2 4.0.5\n * https://select2.github.io\n *\n * Released under the MIT license\n * https://github.com/select2/select2/blob/master/LICENSE.md\n */\n(function (factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(['jquery'], factory);\n } else if (typeof module === 'object' && module.exports) {\n // Node/CommonJS\n module.exports = function (root, jQuery) {\n if (jQuery === undefined) {\n // require('jQuery') returns a factory that requires window to\n // build a jQuery instance, we normalize how we use modules\n // that require this pattern but the window provided is a noop\n // if it's defined (how jquery works)\n if (typeof window !== 'undefined') {\n jQuery = require('jquery');\n }\n else {\n jQuery = require('jquery')(root);\n }\n }\n factory(jQuery);\n return jQuery;\n };\n } else {\n // Browser globals\n factory(jQuery);\n }\n} (function (jQuery) {\n // This is needed so we can catch the AMD loader configuration and use it\n // The inner file should be wrapped (by `banner.start.js`) in a function that\n // returns the AMD loader references.\n var S2 =(function () {\n // Restore the Select2 AMD loader so it can be used\n // Needed mostly in the language files, where the loader is not inserted\n if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) {\n var S2 = jQuery.fn.select2.amd;\n }\nvar S2;(function () { if (!S2 || !S2.requirejs) {\nif (!S2) { S2 = {}; } else { require = S2; }\n/**\n * @license almond 0.3.3 Copyright jQuery Foundation and other contributors.\n * Released under MIT license, http://github.com/requirejs/almond/LICENSE\n */\n//Going sloppy to avoid 'use strict' string cost, but strict practices should\n//be followed.\n/*global setTimeout: false */\n\nvar requirejs, require, define;\n(function (undef) {\n var main, req, makeMap, handlers,\n defined = {},\n waiting = {},\n config = {},\n defining = {},\n hasOwn = Object.prototype.hasOwnProperty,\n aps = [].slice,\n jsSuffixRegExp = /\\.js$/;\n\n function hasProp(obj, prop) {\n return hasOwn.call(obj, prop);\n }\n\n /**\n * Given a relative module name, like ./something, normalize it to\n * a real name that can be mapped to a path.\n * @param {String} name the relative name\n * @param {String} baseName a real name that the name arg is relative\n * to.\n * @returns {String} normalized name\n */\n function normalize(name, baseName) {\n var nameParts, nameSegment, mapValue, foundMap, lastIndex,\n foundI, foundStarMap, starI, i, j, part, normalizedBaseParts,\n baseParts = baseName && baseName.split(\"/\"),\n map = config.map,\n starMap = (map && map['*']) || {};\n\n //Adjust any relative paths.\n if (name) {\n name = name.split('/');\n lastIndex = name.length - 1;\n\n // If wanting node ID compatibility, strip .js from end\n // of IDs. Have to do this here, and not in nameToUrl\n // because node allows either .js or non .js to map\n // to same file.\n if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {\n name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');\n }\n\n // Starts with a '.' so need the baseName\n if (name[0].charAt(0) === '.' && baseParts) {\n //Convert baseName to array, and lop off the last part,\n //so that . matches that 'directory' and not name of the baseName's\n //module. For instance, baseName of 'one/two/three', maps to\n //'one/two/three.js', but we want the directory, 'one/two' for\n //this normalization.\n normalizedBaseParts = baseParts.slice(0, baseParts.length - 1);\n name = normalizedBaseParts.concat(name);\n }\n\n //start trimDots\n for (i = 0; i < name.length; i++) {\n part = name[i];\n if (part === '.') {\n name.splice(i, 1);\n i -= 1;\n } else if (part === '..') {\n // If at the start, or previous value is still ..,\n // keep them so that when converted to a path it may\n // still work when converted to a path, even though\n // as an ID it is less than ideal. In larger point\n // releases, may be better to just kick out an error.\n if (i === 0 || (i === 1 && name[2] === '..') || name[i - 1] === '..') {\n continue;\n } else if (i > 0) {\n name.splice(i - 1, 2);\n i -= 2;\n }\n }\n }\n //end trimDots\n\n name = name.join('/');\n }\n\n //Apply map config if available.\n if ((baseParts || starMap) && map) {\n nameParts = name.split('/');\n\n for (i = nameParts.length; i > 0; i -= 1) {\n nameSegment = nameParts.slice(0, i).join(\"/\");\n\n if (baseParts) {\n //Find the longest baseName segment match in the config.\n //So, do joins on the biggest to smallest lengths of baseParts.\n for (j = baseParts.length; j > 0; j -= 1) {\n mapValue = map[baseParts.slice(0, j).join('/')];\n\n //baseName segment has config, find if it has one for\n //this name.\n if (mapValue) {\n mapValue = mapValue[nameSegment];\n if (mapValue) {\n //Match, update name to the new value.\n foundMap = mapValue;\n foundI = i;\n break;\n }\n }\n }\n }\n\n if (foundMap) {\n break;\n }\n\n //Check for a star map match, but just hold on to it,\n //if there is a shorter segment match later in a matching\n //config, then favor over this star map.\n if (!foundStarMap && starMap && starMap[nameSegment]) {\n foundStarMap = starMap[nameSegment];\n starI = i;\n }\n }\n\n if (!foundMap && foundStarMap) {\n foundMap = foundStarMap;\n foundI = starI;\n }\n\n if (foundMap) {\n nameParts.splice(0, foundI, foundMap);\n name = nameParts.join('/');\n }\n }\n\n return name;\n }\n\n function makeRequire(relName, forceSync) {\n return function () {\n //A version of a require function that passes a moduleName\n //value for items that may need to\n //look up paths relative to the moduleName\n var args = aps.call(arguments, 0);\n\n //If first arg is not require('string'), and there is only\n //one arg, it is the array form without a callback. Insert\n //a null so that the following concat is correct.\n if (typeof args[0] !== 'string' && args.length === 1) {\n args.push(null);\n }\n return req.apply(undef, args.concat([relName, forceSync]));\n };\n }\n\n function makeNormalize(relName) {\n return function (name) {\n return normalize(name, relName);\n };\n }\n\n function makeLoad(depName) {\n return function (value) {\n defined[depName] = value;\n };\n }\n\n function callDep(name) {\n if (hasProp(waiting, name)) {\n var args = waiting[name];\n delete waiting[name];\n defining[name] = true;\n main.apply(undef, args);\n }\n\n if (!hasProp(defined, name) && !hasProp(defining, name)) {\n throw new Error('No ' + name);\n }\n return defined[name];\n }\n\n //Turns a plugin!resource to [plugin, resource]\n //with the plugin being undefined if the name\n //did not have a plugin prefix.\n function splitPrefix(name) {\n var prefix,\n index = name ? name.indexOf('!') : -1;\n if (index > -1) {\n prefix = name.substring(0, index);\n name = name.substring(index + 1, name.length);\n }\n return [prefix, name];\n }\n\n //Creates a parts array for a relName where first part is plugin ID,\n //second part is resource ID. Assumes relName has already been normalized.\n function makeRelParts(relName) {\n return relName ? splitPrefix(relName) : [];\n }\n\n /**\n * Makes a name map, normalizing the name, and using a plugin\n * for normalization if necessary. Grabs a ref to plugin\n * too, as an optimization.\n */\n makeMap = function (name, relParts) {\n var plugin,\n parts = splitPrefix(name),\n prefix = parts[0],\n relResourceName = relParts[1];\n\n name = parts[1];\n\n if (prefix) {\n prefix = normalize(prefix, relResourceName);\n plugin = callDep(prefix);\n }\n\n //Normalize according\n if (prefix) {\n if (plugin && plugin.normalize) {\n name = plugin.normalize(name, makeNormalize(relResourceName));\n } else {\n name = normalize(name, relResourceName);\n }\n } else {\n name = normalize(name, relResourceName);\n parts = splitPrefix(name);\n prefix = parts[0];\n name = parts[1];\n if (prefix) {\n plugin = callDep(prefix);\n }\n }\n\n //Using ridiculous property names for space reasons\n return {\n f: prefix ? prefix + '!' + name : name, //fullName\n n: name,\n pr: prefix,\n p: plugin\n };\n };\n\n function makeConfig(name) {\n return function () {\n return (config && config.config && config.config[name]) || {};\n };\n }\n\n handlers = {\n require: function (name) {\n return makeRequire(name);\n },\n exports: function (name) {\n var e = defined[name];\n if (typeof e !== 'undefined') {\n return e;\n } else {\n return (defined[name] = {});\n }\n },\n module: function (name) {\n return {\n id: name,\n uri: '',\n exports: defined[name],\n config: makeConfig(name)\n };\n }\n };\n\n main = function (name, deps, callback, relName) {\n var cjsModule, depName, ret, map, i, relParts,\n args = [],\n callbackType = typeof callback,\n usingExports;\n\n //Use name if no relName\n relName = relName || name;\n relParts = makeRelParts(relName);\n\n //Call the callback to define the module, if necessary.\n if (callbackType === 'undefined' || callbackType === 'function') {\n //Pull out the defined dependencies and pass the ordered\n //values to the callback.\n //Default to [require, exports, module] if no deps\n deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;\n for (i = 0; i < deps.length; i += 1) {\n map = makeMap(deps[i], relParts);\n depName = map.f;\n\n //Fast path CommonJS standard dependencies.\n if (depName === \"require\") {\n args[i] = handlers.require(name);\n } else if (depName === \"exports\") {\n //CommonJS module spec 1.1\n args[i] = handlers.exports(name);\n usingExports = true;\n } else if (depName === \"module\") {\n //CommonJS module spec 1.1\n cjsModule = args[i] = handlers.module(name);\n } else if (hasProp(defined, depName) ||\n hasProp(waiting, depName) ||\n hasProp(defining, depName)) {\n args[i] = callDep(depName);\n } else if (map.p) {\n map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});\n args[i] = defined[depName];\n } else {\n throw new Error(name + ' missing ' + depName);\n }\n }\n\n ret = callback ? callback.apply(defined[name], args) : undefined;\n\n if (name) {\n //If setting exports via \"module\" is in play,\n //favor that over return value and exports. After that,\n //favor a non-undefined return value over exports use.\n if (cjsModule && cjsModule.exports !== undef &&\n cjsModule.exports !== defined[name]) {\n defined[name] = cjsModule.exports;\n } else if (ret !== undef || !usingExports) {\n //Use the return value from the function.\n defined[name] = ret;\n }\n }\n } else if (name) {\n //May just be an object definition for the module. Only\n //worry about defining if have a module name.\n defined[name] = callback;\n }\n };\n\n requirejs = require = req = function (deps, callback, relName, forceSync, alt) {\n if (typeof deps === \"string\") {\n if (handlers[deps]) {\n //callback in this case is really relName\n return handlers[deps](callback);\n }\n //Just return the module wanted. In this scenario, the\n //deps arg is the module name, and second arg (if passed)\n //is just the relName.\n //Normalize module name, if it contains . or ..\n return callDep(makeMap(deps, makeRelParts(callback)).f);\n } else if (!deps.splice) {\n //deps is a config object, not an array.\n config = deps;\n if (config.deps) {\n req(config.deps, config.callback);\n }\n if (!callback) {\n return;\n }\n\n if (callback.splice) {\n //callback is an array, which means it is a dependency list.\n //Adjust args if there are dependencies\n deps = callback;\n callback = relName;\n relName = null;\n } else {\n deps = undef;\n }\n }\n\n //Support require(['a'])\n callback = callback || function () {};\n\n //If relName is a function, it is an errback handler,\n //so remove it.\n if (typeof relName === 'function') {\n relName = forceSync;\n forceSync = alt;\n }\n\n //Simulate async callback;\n if (forceSync) {\n main(undef, deps, callback, relName);\n } else {\n //Using a non-zero value because of concern for what old browsers\n //do, and latest browsers \"upgrade\" to 4 if lower value is used:\n //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout:\n //If want a value immediately, use require('id') instead -- something\n //that works in almond on the global level, but not guaranteed and\n //unlikely to work in other AMD implementations.\n setTimeout(function () {\n main(undef, deps, callback, relName);\n }, 4);\n }\n\n return req;\n };\n\n /**\n * Just drops the config on the floor, but returns req in case\n * the config return value is used.\n */\n req.config = function (cfg) {\n return req(cfg);\n };\n\n /**\n * Expose module registry for debugging and tooling\n */\n requirejs._defined = defined;\n\n define = function (name, deps, callback) {\n if (typeof name !== 'string') {\n throw new Error('See almond README: incorrect module build, no module name');\n }\n\n //This module may not have dependencies\n if (!deps.splice) {\n //deps is not an array, so probably means\n //an object literal or factory function for\n //the value. Adjust args.\n callback = deps;\n deps = [];\n }\n\n if (!hasProp(defined, name) && !hasProp(waiting, name)) {\n waiting[name] = [name, deps, callback];\n }\n };\n\n define.amd = {\n jQuery: true\n };\n}());\n\nS2.requirejs = requirejs;S2.require = require;S2.define = define;\n}\n}());\nS2.define(\"almond\", function(){});\n\n/* global jQuery:false, $:false */\nS2.define('jquery',[],function () {\n var _$ = jQuery || $;\n\n if (_$ == null && console && console.error) {\n console.error(\n 'Select2: An instance of jQuery or a jQuery-compatible library was not ' +\n 'found. Make sure that you are including jQuery before Select2 on your ' +\n 'web page.'\n );\n }\n\n return _$;\n});\n\nS2.define('select2/utils',[\n 'jquery'\n], function ($) {\n var Utils = {};\n\n Utils.Extend = function (ChildClass, SuperClass) {\n var __hasProp = {}.hasOwnProperty;\n\n function BaseConstructor () {\n this.constructor = ChildClass;\n }\n\n for (var key in SuperClass) {\n if (__hasProp.call(SuperClass, key)) {\n ChildClass[key] = SuperClass[key];\n }\n }\n\n BaseConstructor.prototype = SuperClass.prototype;\n ChildClass.prototype = new BaseConstructor();\n ChildClass.__super__ = SuperClass.prototype;\n\n return ChildClass;\n };\n\n function getMethods (theClass) {\n var proto = theClass.prototype;\n\n var methods = [];\n\n for (var methodName in proto) {\n var m = proto[methodName];\n\n if (typeof m !== 'function') {\n continue;\n }\n\n if (methodName === 'constructor') {\n continue;\n }\n\n methods.push(methodName);\n }\n\n return methods;\n }\n\n Utils.Decorate = function (SuperClass, DecoratorClass) {\n var decoratedMethods = getMethods(DecoratorClass);\n var superMethods = getMethods(SuperClass);\n\n function DecoratedClass () {\n var unshift = Array.prototype.unshift;\n\n var argCount = DecoratorClass.prototype.constructor.length;\n\n var calledConstructor = SuperClass.prototype.constructor;\n\n if (argCount > 0) {\n unshift.call(arguments, SuperClass.prototype.constructor);\n\n calledConstructor = DecoratorClass.prototype.constructor;\n }\n\n calledConstructor.apply(this, arguments);\n }\n\n DecoratorClass.displayName = SuperClass.displayName;\n\n function ctr () {\n this.constructor = DecoratedClass;\n }\n\n DecoratedClass.prototype = new ctr();\n\n for (var m = 0; m < superMethods.length; m++) {\n var superMethod = superMethods[m];\n\n DecoratedClass.prototype[superMethod] =\n SuperClass.prototype[superMethod];\n }\n\n var calledMethod = function (methodName) {\n // Stub out the original method if it's not decorating an actual method\n var originalMethod = function () {};\n\n if (methodName in DecoratedClass.prototype) {\n originalMethod = DecoratedClass.prototype[methodName];\n }\n\n var decoratedMethod = DecoratorClass.prototype[methodName];\n\n return function () {\n var unshift = Array.prototype.unshift;\n\n unshift.call(arguments, originalMethod);\n\n return decoratedMethod.apply(this, arguments);\n };\n };\n\n for (var d = 0; d < decoratedMethods.length; d++) {\n var decoratedMethod = decoratedMethods[d];\n\n DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod);\n }\n\n return DecoratedClass;\n };\n\n var Observable = function () {\n this.listeners = {};\n };\n\n Observable.prototype.on = function (event, callback) {\n this.listeners = this.listeners || {};\n\n if (event in this.listeners) {\n this.listeners[event].push(callback);\n } else {\n this.listeners[event] = [callback];\n }\n };\n\n Observable.prototype.trigger = function (event) {\n var slice = Array.prototype.slice;\n var params = slice.call(arguments, 1);\n\n this.listeners = this.listeners || {};\n\n // Params should always come in as an array\n if (params == null) {\n params = [];\n }\n\n // If there are no arguments to the event, use a temporary object\n if (params.length === 0) {\n params.push({});\n }\n\n // Set the `_type` of the first object to the event\n params[0]._type = event;\n\n if (event in this.listeners) {\n this.invoke(this.listeners[event], slice.call(arguments, 1));\n }\n\n if ('*' in this.listeners) {\n this.invoke(this.listeners['*'], arguments);\n }\n };\n\n Observable.prototype.invoke = function (listeners, params) {\n for (var i = 0, len = listeners.length; i < len; i++) {\n listeners[i].apply(this, params);\n }\n };\n\n Utils.Observable = Observable;\n\n Utils.generateChars = function (length) {\n var chars = '';\n\n for (var i = 0; i < length; i++) {\n var randomChar = Math.floor(Math.random() * 36);\n chars += randomChar.toString(36);\n }\n\n return chars;\n };\n\n Utils.bind = function (func, context) {\n return function () {\n func.apply(context, arguments);\n };\n };\n\n Utils._convertData = function (data) {\n for (var originalKey in data) {\n var keys = originalKey.split('-');\n\n var dataLevel = data;\n\n if (keys.length === 1) {\n continue;\n }\n\n for (var k = 0; k < keys.length; k++) {\n var key = keys[k];\n\n // Lowercase the first letter\n // By default, dash-separated becomes camelCase\n key = key.substring(0, 1).toLowerCase() + key.substring(1);\n\n if (!(key in dataLevel)) {\n dataLevel[key] = {};\n }\n\n if (k == keys.length - 1) {\n dataLevel[key] = data[originalKey];\n }\n\n dataLevel = dataLevel[key];\n }\n\n delete data[originalKey];\n }\n\n return data;\n };\n\n Utils.hasScroll = function (index, el) {\n // Adapted from the function created by @ShadowScripter\n // and adapted by @BillBarry on the Stack Exchange Code Review website.\n // The original code can be found at\n // http://codereview.stackexchange.com/q/13338\n // and was designed to be used with the Sizzle selector engine.\n\n var $el = $(el);\n var overflowX = el.style.overflowX;\n var overflowY = el.style.overflowY;\n\n //Check both x and y declarations\n if (overflowX === overflowY &&\n (overflowY === 'hidden' || overflowY === 'visible')) {\n return false;\n }\n\n if (overflowX === 'scroll' || overflowY === 'scroll') {\n return true;\n }\n\n return ($el.innerHeight() < el.scrollHeight ||\n $el.innerWidth() < el.scrollWidth);\n };\n\n Utils.escapeMarkup = function (markup) {\n var replaceMap = {\n '\\\\': '\',\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n '\\'': ''',\n '/': '/'\n };\n\n // Do not try to escape the markup if it's not a string\n if (typeof markup !== 'string') {\n return markup;\n }\n\n return String(markup).replace(/[&<>\"'\\/\\\\]/g, function (match) {\n return replaceMap[match];\n });\n };\n\n // Append an array of jQuery nodes to a given element.\n Utils.appendMany = function ($element, $nodes) {\n // jQuery 1.7.x does not support $.fn.append() with an array\n // Fall back to a jQuery object collection using $.fn.add()\n if ($.fn.jquery.substr(0, 3) === '1.7') {\n var $jqNodes = $();\n\n $.map($nodes, function (node) {\n $jqNodes = $jqNodes.add(node);\n });\n\n $nodes = $jqNodes;\n }\n\n $element.append($nodes);\n };\n\n return Utils;\n});\n\nS2.define('select2/results',[\n 'jquery',\n './utils'\n], function ($, Utils) {\n function Results ($element, options, dataAdapter) {\n this.$element = $element;\n this.data = dataAdapter;\n this.options = options;\n\n Results.__super__.constructor.call(this);\n }\n\n Utils.Extend(Results, Utils.Observable);\n\n Results.prototype.render = function () {\n var $results = $(\n ''\n );\n\n if (this.options.get('multiple')) {\n $results.attr('aria-multiselectable', 'true');\n }\n\n this.$results = $results;\n\n return $results;\n };\n\n Results.prototype.clear = function () {\n this.$results.empty();\n };\n\n Results.prototype.displayMessage = function (params) {\n var escapeMarkup = this.options.get('escapeMarkup');\n\n this.clear();\n this.hideLoading();\n\n var $message = $(\n '
  • '\n );\n\n var message = this.options.get('translations').get(params.message);\n\n $message.append(\n escapeMarkup(\n message(params.args)\n )\n );\n\n $message[0].className += ' select2-results__message';\n\n this.$results.append($message);\n };\n\n Results.prototype.hideMessages = function () {\n this.$results.find('.select2-results__message').remove();\n };\n\n Results.prototype.append = function (data) {\n this.hideLoading();\n\n var $options = [];\n\n if (data.results == null || data.results.length === 0) {\n if (this.$results.children().length === 0) {\n this.trigger('results:message', {\n message: 'noResults'\n });\n }\n\n return;\n }\n\n data.results = this.sort(data.results);\n\n for (var d = 0; d < data.results.length; d++) {\n var item = data.results[d];\n\n var $option = this.option(item);\n\n $options.push($option);\n }\n\n this.$results.append($options);\n };\n\n Results.prototype.position = function ($results, $dropdown) {\n var $resultsContainer = $dropdown.find('.select2-results');\n $resultsContainer.append($results);\n };\n\n Results.prototype.sort = function (data) {\n var sorter = this.options.get('sorter');\n\n return sorter(data);\n };\n\n Results.prototype.highlightFirstItem = function () {\n var $options = this.$results\n .find('.select2-results__option[aria-selected]');\n\n var $selected = $options.filter('[aria-selected=true]');\n\n // Check if there are any selected options\n if ($selected.length > 0) {\n // If there are selected options, highlight the first\n $selected.first().trigger('mouseenter');\n } else {\n // If there are no selected options, highlight the first option\n // in the dropdown\n $options.first().trigger('mouseenter');\n }\n\n this.ensureHighlightVisible();\n };\n\n Results.prototype.setClasses = function () {\n var self = this;\n\n this.data.current(function (selected) {\n var selectedIds = $.map(selected, function (s) {\n return s.id.toString();\n });\n\n var $options = self.$results\n .find('.select2-results__option[aria-selected]');\n\n $options.each(function () {\n var $option = $(this);\n\n var item = $.data(this, 'data');\n\n // id needs to be converted to a string when comparing\n var id = '' + item.id;\n\n if ((item.element != null && item.element.selected) ||\n (item.element == null && $.inArray(id, selectedIds) > -1)) {\n $option.attr('aria-selected', 'true');\n } else {\n $option.attr('aria-selected', 'false');\n }\n });\n\n });\n };\n\n Results.prototype.showLoading = function (params) {\n this.hideLoading();\n\n var loadingMore = this.options.get('translations').get('searching');\n\n var loading = {\n disabled: true,\n loading: true,\n text: loadingMore(params)\n };\n var $loading = this.option(loading);\n $loading.className += ' loading-results';\n\n this.$results.prepend($loading);\n };\n\n Results.prototype.hideLoading = function () {\n this.$results.find('.loading-results').remove();\n };\n\n Results.prototype.option = function (data) {\n var option = document.createElement('li');\n option.className = 'select2-results__option';\n\n var attrs = {\n 'role': 'treeitem',\n 'aria-selected': 'false'\n };\n\n if (data.disabled) {\n delete attrs['aria-selected'];\n attrs['aria-disabled'] = 'true';\n }\n\n if (data.id == null) {\n delete attrs['aria-selected'];\n }\n\n if (data._resultId != null) {\n option.id = data._resultId;\n }\n\n if (data.title) {\n option.title = data.title;\n }\n\n if (data.children) {\n attrs.role = 'group';\n attrs['aria-label'] = data.text;\n delete attrs['aria-selected'];\n }\n\n for (var attr in attrs) {\n var val = attrs[attr];\n\n option.setAttribute(attr, val);\n }\n\n if (data.children) {\n var $option = $(option);\n\n var label = document.createElement('strong');\n label.className = 'select2-results__group';\n\n var $label = $(label);\n this.template(data, label);\n\n var $children = [];\n\n for (var c = 0; c < data.children.length; c++) {\n var child = data.children[c];\n\n var $child = this.option(child);\n\n $children.push($child);\n }\n\n var $childrenContainer = $('', {\n 'class': 'select2-results__options select2-results__options--nested'\n });\n\n $childrenContainer.append($children);\n\n $option.append(label);\n $option.append($childrenContainer);\n } else {\n this.template(data, option);\n }\n\n $.data(option, 'data', data);\n\n return option;\n };\n\n Results.prototype.bind = function (container, $container) {\n var self = this;\n\n var id = container.id + '-results';\n\n this.$results.attr('id', id);\n\n container.on('results:all', function (params) {\n self.clear();\n self.append(params.data);\n\n if (container.isOpen()) {\n self.setClasses();\n self.highlightFirstItem();\n }\n });\n\n container.on('results:append', function (params) {\n self.append(params.data);\n\n if (container.isOpen()) {\n self.setClasses();\n }\n });\n\n container.on('query', function (params) {\n self.hideMessages();\n self.showLoading(params);\n });\n\n container.on('select', function () {\n if (!container.isOpen()) {\n return;\n }\n\n self.setClasses();\n self.highlightFirstItem();\n });\n\n container.on('unselect', function () {\n if (!container.isOpen()) {\n return;\n }\n\n self.setClasses();\n self.highlightFirstItem();\n });\n\n container.on('open', function () {\n // When the dropdown is open, aria-expended=\"true\"\n self.$results.attr('aria-expanded', 'true');\n self.$results.attr('aria-hidden', 'false');\n\n self.setClasses();\n self.ensureHighlightVisible();\n });\n\n container.on('close', function () {\n // When the dropdown is closed, aria-expended=\"false\"\n self.$results.attr('aria-expanded', 'false');\n self.$results.attr('aria-hidden', 'true');\n self.$results.removeAttr('aria-activedescendant');\n });\n\n container.on('results:toggle', function () {\n var $highlighted = self.getHighlightedResults();\n\n if ($highlighted.length === 0) {\n return;\n }\n\n $highlighted.trigger('mouseup');\n });\n\n container.on('results:select', function () {\n var $highlighted = self.getHighlightedResults();\n\n if ($highlighted.length === 0) {\n return;\n }\n\n var data = $highlighted.data('data');\n\n if ($highlighted.attr('aria-selected') == 'true') {\n self.trigger('close', {});\n } else {\n self.trigger('select', {\n data: data\n });\n }\n });\n\n container.on('results:previous', function () {\n var $highlighted = self.getHighlightedResults();\n\n var $options = self.$results.find('[aria-selected]');\n\n var currentIndex = $options.index($highlighted);\n\n // If we are already at te top, don't move further\n if (currentIndex === 0) {\n return;\n }\n\n var nextIndex = currentIndex - 1;\n\n // If none are highlighted, highlight the first\n if ($highlighted.length === 0) {\n nextIndex = 0;\n }\n\n var $next = $options.eq(nextIndex);\n\n $next.trigger('mouseenter');\n\n var currentOffset = self.$results.offset().top;\n var nextTop = $next.offset().top;\n var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset);\n\n if (nextIndex === 0) {\n self.$results.scrollTop(0);\n } else if (nextTop - currentOffset < 0) {\n self.$results.scrollTop(nextOffset);\n }\n });\n\n container.on('results:next', function () {\n var $highlighted = self.getHighlightedResults();\n\n var $options = self.$results.find('[aria-selected]');\n\n var currentIndex = $options.index($highlighted);\n\n var nextIndex = currentIndex + 1;\n\n // If we are at the last option, stay there\n if (nextIndex >= $options.length) {\n return;\n }\n\n var $next = $options.eq(nextIndex);\n\n $next.trigger('mouseenter');\n\n var currentOffset = self.$results.offset().top +\n self.$results.outerHeight(false);\n var nextBottom = $next.offset().top + $next.outerHeight(false);\n var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset;\n\n if (nextIndex === 0) {\n self.$results.scrollTop(0);\n } else if (nextBottom > currentOffset) {\n self.$results.scrollTop(nextOffset);\n }\n });\n\n container.on('results:focus', function (params) {\n params.element.addClass('select2-results__option--highlighted');\n });\n\n container.on('results:message', function (params) {\n self.displayMessage(params);\n });\n\n if ($.fn.mousewheel) {\n this.$results.on('mousewheel', function (e) {\n var top = self.$results.scrollTop();\n\n var bottom = self.$results.get(0).scrollHeight - top + e.deltaY;\n\n var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0;\n var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height();\n\n if (isAtTop) {\n self.$results.scrollTop(0);\n\n e.preventDefault();\n e.stopPropagation();\n } else if (isAtBottom) {\n self.$results.scrollTop(\n self.$results.get(0).scrollHeight - self.$results.height()\n );\n\n e.preventDefault();\n e.stopPropagation();\n }\n });\n }\n\n this.$results.on('mouseup', '.select2-results__option[aria-selected]',\n function (evt) {\n var $this = $(this);\n\n var data = $this.data('data');\n\n if ($this.attr('aria-selected') === 'true') {\n if (self.options.get('multiple')) {\n self.trigger('unselect', {\n originalEvent: evt,\n data: data\n });\n } else {\n self.trigger('close', {});\n }\n\n return;\n }\n\n self.trigger('select', {\n originalEvent: evt,\n data: data\n });\n });\n\n this.$results.on('mouseenter', '.select2-results__option[aria-selected]',\n function (evt) {\n var data = $(this).data('data');\n\n self.getHighlightedResults()\n .removeClass('select2-results__option--highlighted');\n\n self.trigger('results:focus', {\n data: data,\n element: $(this)\n });\n });\n };\n\n Results.prototype.getHighlightedResults = function () {\n var $highlighted = this.$results\n .find('.select2-results__option--highlighted');\n\n return $highlighted;\n };\n\n Results.prototype.destroy = function () {\n this.$results.remove();\n };\n\n Results.prototype.ensureHighlightVisible = function () {\n var $highlighted = this.getHighlightedResults();\n\n if ($highlighted.length === 0) {\n return;\n }\n\n var $options = this.$results.find('[aria-selected]');\n\n var currentIndex = $options.index($highlighted);\n\n var currentOffset = this.$results.offset().top;\n var nextTop = $highlighted.offset().top;\n var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset);\n\n var offsetDelta = nextTop - currentOffset;\n nextOffset -= $highlighted.outerHeight(false) * 2;\n\n if (currentIndex <= 2) {\n this.$results.scrollTop(0);\n } else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) {\n this.$results.scrollTop(nextOffset);\n }\n };\n\n Results.prototype.template = function (result, container) {\n var template = this.options.get('templateResult');\n var escapeMarkup = this.options.get('escapeMarkup');\n\n var content = template(result, container);\n\n if (content == null) {\n container.style.display = 'none';\n } else if (typeof content === 'string') {\n container.innerHTML = escapeMarkup(content);\n } else {\n $(container).append(content);\n }\n };\n\n return Results;\n});\n\nS2.define('select2/keys',[\n\n], function () {\n var KEYS = {\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n SHIFT: 16,\n CTRL: 17,\n ALT: 18,\n ESC: 27,\n SPACE: 32,\n PAGE_UP: 33,\n PAGE_DOWN: 34,\n END: 35,\n HOME: 36,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n DELETE: 46\n };\n\n return KEYS;\n});\n\nS2.define('select2/selection/base',[\n 'jquery',\n '../utils',\n '../keys'\n], function ($, Utils, KEYS) {\n function BaseSelection ($element, options) {\n this.$element = $element;\n this.options = options;\n\n BaseSelection.__super__.constructor.call(this);\n }\n\n Utils.Extend(BaseSelection, Utils.Observable);\n\n BaseSelection.prototype.render = function () {\n var $selection = $(\n '' +\n ''\n );\n\n this._tabindex = 0;\n\n if (this.$element.data('old-tabindex') != null) {\n this._tabindex = this.$element.data('old-tabindex');\n } else if (this.$element.attr('tabindex') != null) {\n this._tabindex = this.$element.attr('tabindex');\n }\n\n $selection.attr('title', this.$element.attr('title'));\n $selection.attr('tabindex', this._tabindex);\n\n this.$selection = $selection;\n\n return $selection;\n };\n\n BaseSelection.prototype.bind = function (container, $container) {\n var self = this;\n\n var id = container.id + '-container';\n var resultsId = container.id + '-results';\n\n this.container = container;\n\n this.$selection.on('focus', function (evt) {\n self.trigger('focus', evt);\n });\n\n this.$selection.on('blur', function (evt) {\n self._handleBlur(evt);\n });\n\n this.$selection.on('keydown', function (evt) {\n self.trigger('keypress', evt);\n\n if (evt.which === KEYS.SPACE) {\n evt.preventDefault();\n }\n });\n\n container.on('results:focus', function (params) {\n self.$selection.attr('aria-activedescendant', params.data._resultId);\n });\n\n container.on('selection:update', function (params) {\n self.update(params.data);\n });\n\n container.on('open', function () {\n // When the dropdown is open, aria-expanded=\"true\"\n self.$selection.attr('aria-expanded', 'true');\n self.$selection.attr('aria-owns', resultsId);\n\n self._attachCloseHandler(container);\n });\n\n container.on('close', function () {\n // When the dropdown is closed, aria-expanded=\"false\"\n self.$selection.attr('aria-expanded', 'false');\n self.$selection.removeAttr('aria-activedescendant');\n self.$selection.removeAttr('aria-owns');\n\n self.$selection.focus();\n\n self._detachCloseHandler(container);\n });\n\n container.on('enable', function () {\n self.$selection.attr('tabindex', self._tabindex);\n });\n\n container.on('disable', function () {\n self.$selection.attr('tabindex', '-1');\n });\n };\n\n BaseSelection.prototype._handleBlur = function (evt) {\n var self = this;\n\n // This needs to be delayed as the active element is the body when the tab\n // key is pressed, possibly along with others.\n window.setTimeout(function () {\n // Don't trigger `blur` if the focus is still in the selection\n if (\n (document.activeElement == self.$selection[0]) ||\n ($.contains(self.$selection[0], document.activeElement))\n ) {\n return;\n }\n\n self.trigger('blur', evt);\n }, 1);\n };\n\n BaseSelection.prototype._attachCloseHandler = function (container) {\n var self = this;\n\n $(document.body).on('mousedown.select2.' + container.id, function (e) {\n var $target = $(e.target);\n\n var $select = $target.closest('.select2');\n\n var $all = $('.select2.select2-container--open');\n\n $all.each(function () {\n var $this = $(this);\n\n if (this == $select[0]) {\n return;\n }\n\n var $element = $this.data('element');\n\n $element.select2('close');\n });\n });\n };\n\n BaseSelection.prototype._detachCloseHandler = function (container) {\n $(document.body).off('mousedown.select2.' + container.id);\n };\n\n BaseSelection.prototype.position = function ($selection, $container) {\n var $selectionContainer = $container.find('.selection');\n $selectionContainer.append($selection);\n };\n\n BaseSelection.prototype.destroy = function () {\n this._detachCloseHandler(this.container);\n };\n\n BaseSelection.prototype.update = function (data) {\n throw new Error('The `update` method must be defined in child classes.');\n };\n\n return BaseSelection;\n});\n\nS2.define('select2/selection/single',[\n 'jquery',\n './base',\n '../utils',\n '../keys'\n], function ($, BaseSelection, Utils, KEYS) {\n function SingleSelection () {\n SingleSelection.__super__.constructor.apply(this, arguments);\n }\n\n Utils.Extend(SingleSelection, BaseSelection);\n\n SingleSelection.prototype.render = function () {\n var $selection = SingleSelection.__super__.render.call(this);\n\n $selection.addClass('select2-selection--single');\n\n $selection.html(\n '' +\n '' +\n '' +\n ''\n );\n\n return $selection;\n };\n\n SingleSelection.prototype.bind = function (container, $container) {\n var self = this;\n\n SingleSelection.__super__.bind.apply(this, arguments);\n\n var id = container.id + '-container';\n\n this.$selection.find('.select2-selection__rendered').attr('id', id);\n this.$selection.attr('aria-labelledby', id);\n\n this.$selection.on('mousedown', function (evt) {\n // Only respond to left clicks\n if (evt.which !== 1) {\n return;\n }\n\n self.trigger('toggle', {\n originalEvent: evt\n });\n });\n\n this.$selection.on('focus', function (evt) {\n // User focuses on the container\n });\n\n this.$selection.on('blur', function (evt) {\n // User exits the container\n });\n\n container.on('focus', function (evt) {\n if (!container.isOpen()) {\n self.$selection.focus();\n }\n });\n\n container.on('selection:update', function (params) {\n self.update(params.data);\n });\n };\n\n SingleSelection.prototype.clear = function () {\n this.$selection.find('.select2-selection__rendered').empty();\n };\n\n SingleSelection.prototype.display = function (data, container) {\n var template = this.options.get('templateSelection');\n var escapeMarkup = this.options.get('escapeMarkup');\n\n return escapeMarkup(template(data, container));\n };\n\n SingleSelection.prototype.selectionContainer = function () {\n return $('');\n };\n\n SingleSelection.prototype.update = function (data) {\n if (data.length === 0) {\n this.clear();\n return;\n }\n\n var selection = data[0];\n\n var $rendered = this.$selection.find('.select2-selection__rendered');\n var formatted = this.display(selection, $rendered);\n\n $rendered.empty().append(formatted);\n $rendered.prop('title', selection.title || selection.text);\n };\n\n return SingleSelection;\n});\n\nS2.define('select2/selection/multiple',[\n 'jquery',\n './base',\n '../utils'\n], function ($, BaseSelection, Utils) {\n function MultipleSelection ($element, options) {\n MultipleSelection.__super__.constructor.apply(this, arguments);\n }\n\n Utils.Extend(MultipleSelection, BaseSelection);\n\n MultipleSelection.prototype.render = function () {\n var $selection = MultipleSelection.__super__.render.call(this);\n\n $selection.addClass('select2-selection--multiple');\n\n $selection.html(\n ''\n );\n\n return $selection;\n };\n\n MultipleSelection.prototype.bind = function (container, $container) {\n var self = this;\n\n MultipleSelection.__super__.bind.apply(this, arguments);\n\n this.$selection.on('click', function (evt) {\n self.trigger('toggle', {\n originalEvent: evt\n });\n });\n\n this.$selection.on(\n 'click',\n '.select2-selection__choice__remove',\n function (evt) {\n // Ignore the event if it is disabled\n if (self.options.get('disabled')) {\n return;\n }\n\n var $remove = $(this);\n var $selection = $remove.parent();\n\n var data = $selection.data('data');\n\n self.trigger('unselect', {\n originalEvent: evt,\n data: data\n });\n }\n );\n };\n\n MultipleSelection.prototype.clear = function () {\n this.$selection.find('.select2-selection__rendered').empty();\n };\n\n MultipleSelection.prototype.display = function (data, container) {\n var template = this.options.get('templateSelection');\n var escapeMarkup = this.options.get('escapeMarkup');\n\n return escapeMarkup(template(data, container));\n };\n\n MultipleSelection.prototype.selectionContainer = function () {\n var $container = $(\n '
  • ' +\n '' +\n '×' +\n '' +\n '
  • '\n );\n\n return $container;\n };\n\n MultipleSelection.prototype.update = function (data) {\n this.clear();\n\n if (data.length === 0) {\n return;\n }\n\n var $selections = [];\n\n for (var d = 0; d < data.length; d++) {\n var selection = data[d];\n\n var $selection = this.selectionContainer();\n var formatted = this.display(selection, $selection);\n\n $selection.append(formatted);\n $selection.prop('title', selection.title || selection.text);\n\n $selection.data('data', selection);\n\n $selections.push($selection);\n }\n\n var $rendered = this.$selection.find('.select2-selection__rendered');\n\n Utils.appendMany($rendered, $selections);\n };\n\n return MultipleSelection;\n});\n\nS2.define('select2/selection/placeholder',[\n '../utils'\n], function (Utils) {\n function Placeholder (decorated, $element, options) {\n this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n\n decorated.call(this, $element, options);\n }\n\n Placeholder.prototype.normalizePlaceholder = function (_, placeholder) {\n if (typeof placeholder === 'string') {\n placeholder = {\n id: '',\n text: placeholder\n };\n }\n\n return placeholder;\n };\n\n Placeholder.prototype.createPlaceholder = function (decorated, placeholder) {\n var $placeholder = this.selectionContainer();\n\n $placeholder.html(this.display(placeholder));\n $placeholder.addClass('select2-selection__placeholder')\n .removeClass('select2-selection__choice');\n\n return $placeholder;\n };\n\n Placeholder.prototype.update = function (decorated, data) {\n var singlePlaceholder = (\n data.length == 1 && data[0].id != this.placeholder.id\n );\n var multipleSelections = data.length > 1;\n\n if (multipleSelections || singlePlaceholder) {\n return decorated.call(this, data);\n }\n\n this.clear();\n\n var $placeholder = this.createPlaceholder(this.placeholder);\n\n this.$selection.find('.select2-selection__rendered').append($placeholder);\n };\n\n return Placeholder;\n});\n\nS2.define('select2/selection/allowClear',[\n 'jquery',\n '../keys'\n], function ($, KEYS) {\n function AllowClear () { }\n\n AllowClear.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n if (this.placeholder == null) {\n if (this.options.get('debug') && window.console && console.error) {\n console.error(\n 'Select2: The `allowClear` option should be used in combination ' +\n 'with the `placeholder` option.'\n );\n }\n }\n\n this.$selection.on('mousedown', '.select2-selection__clear',\n function (evt) {\n self._handleClear(evt);\n });\n\n container.on('keypress', function (evt) {\n self._handleKeyboardClear(evt, container);\n });\n };\n\n AllowClear.prototype._handleClear = function (_, evt) {\n // Ignore the event if it is disabled\n if (this.options.get('disabled')) {\n return;\n }\n\n var $clear = this.$selection.find('.select2-selection__clear');\n\n // Ignore the event if nothing has been selected\n if ($clear.length === 0) {\n return;\n }\n\n evt.stopPropagation();\n\n var data = $clear.data('data');\n\n for (var d = 0; d < data.length; d++) {\n var unselectData = {\n data: data[d]\n };\n\n // Trigger the `unselect` event, so people can prevent it from being\n // cleared.\n this.trigger('unselect', unselectData);\n\n // If the event was prevented, don't clear it out.\n if (unselectData.prevented) {\n return;\n }\n }\n\n this.$element.val(this.placeholder.id).trigger('change');\n\n this.trigger('toggle', {});\n };\n\n AllowClear.prototype._handleKeyboardClear = function (_, evt, container) {\n if (container.isOpen()) {\n return;\n }\n\n if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) {\n this._handleClear(evt);\n }\n };\n\n AllowClear.prototype.update = function (decorated, data) {\n decorated.call(this, data);\n\n if (this.$selection.find('.select2-selection__placeholder').length > 0 ||\n data.length === 0) {\n return;\n }\n\n var $remove = $(\n '' +\n '×' +\n ''\n );\n $remove.data('data', data);\n\n this.$selection.find('.select2-selection__rendered').prepend($remove);\n };\n\n return AllowClear;\n});\n\nS2.define('select2/selection/search',[\n 'jquery',\n '../utils',\n '../keys'\n], function ($, Utils, KEYS) {\n function Search (decorated, $element, options) {\n decorated.call(this, $element, options);\n }\n\n Search.prototype.render = function (decorated) {\n var $search = $(\n ''\n );\n\n this.$searchContainer = $search;\n this.$search = $search.find('input');\n\n var $rendered = decorated.call(this);\n\n this._transferTabIndex();\n\n return $rendered;\n };\n\n Search.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('open', function () {\n self.$search.trigger('focus');\n });\n\n container.on('close', function () {\n self.$search.val('');\n self.$search.removeAttr('aria-activedescendant');\n self.$search.trigger('focus');\n });\n\n container.on('enable', function () {\n self.$search.prop('disabled', false);\n\n self._transferTabIndex();\n });\n\n container.on('disable', function () {\n self.$search.prop('disabled', true);\n });\n\n container.on('focus', function (evt) {\n self.$search.trigger('focus');\n });\n\n container.on('results:focus', function (params) {\n self.$search.attr('aria-activedescendant', params.id);\n });\n\n this.$selection.on('focusin', '.select2-search--inline', function (evt) {\n self.trigger('focus', evt);\n });\n\n this.$selection.on('focusout', '.select2-search--inline', function (evt) {\n self._handleBlur(evt);\n });\n\n this.$selection.on('keydown', '.select2-search--inline', function (evt) {\n evt.stopPropagation();\n\n self.trigger('keypress', evt);\n\n self._keyUpPrevented = evt.isDefaultPrevented();\n\n var key = evt.which;\n\n if (key === KEYS.BACKSPACE && self.$search.val() === '') {\n var $previousChoice = self.$searchContainer\n .prev('.select2-selection__choice');\n\n if ($previousChoice.length > 0) {\n var item = $previousChoice.data('data');\n\n self.searchRemoveChoice(item);\n\n evt.preventDefault();\n }\n }\n });\n\n // Try to detect the IE version should the `documentMode` property that\n // is stored on the document. This is only implemented in IE and is\n // slightly cleaner than doing a user agent check.\n // This property is not available in Edge, but Edge also doesn't have\n // this bug.\n var msie = document.documentMode;\n var disableInputEvents = msie && msie <= 11;\n\n // Workaround for browsers which do not support the `input` event\n // This will prevent double-triggering of events for browsers which support\n // both the `keyup` and `input` events.\n this.$selection.on(\n 'input.searchcheck',\n '.select2-search--inline',\n function (evt) {\n // IE will trigger the `input` event when a placeholder is used on a\n // search box. To get around this issue, we are forced to ignore all\n // `input` events in IE and keep using `keyup`.\n if (disableInputEvents) {\n self.$selection.off('input.search input.searchcheck');\n return;\n }\n\n // Unbind the duplicated `keyup` event\n self.$selection.off('keyup.search');\n }\n );\n\n this.$selection.on(\n 'keyup.search input.search',\n '.select2-search--inline',\n function (evt) {\n // IE will trigger the `input` event when a placeholder is used on a\n // search box. To get around this issue, we are forced to ignore all\n // `input` events in IE and keep using `keyup`.\n if (disableInputEvents && evt.type === 'input') {\n self.$selection.off('input.search input.searchcheck');\n return;\n }\n\n var key = evt.which;\n\n // We can freely ignore events from modifier keys\n if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) {\n return;\n }\n\n // Tabbing will be handled during the `keydown` phase\n if (key == KEYS.TAB) {\n return;\n }\n\n self.handleSearch(evt);\n }\n );\n };\n\n /**\n * This method will transfer the tabindex attribute from the rendered\n * selection to the search box. This allows for the search box to be used as\n * the primary focus instead of the selection container.\n *\n * @private\n */\n Search.prototype._transferTabIndex = function (decorated) {\n this.$search.attr('tabindex', this.$selection.attr('tabindex'));\n this.$selection.attr('tabindex', '-1');\n };\n\n Search.prototype.createPlaceholder = function (decorated, placeholder) {\n this.$search.attr('placeholder', placeholder.text);\n };\n\n Search.prototype.update = function (decorated, data) {\n var searchHadFocus = this.$search[0] == document.activeElement;\n\n this.$search.attr('placeholder', '');\n\n decorated.call(this, data);\n\n this.$selection.find('.select2-selection__rendered')\n .append(this.$searchContainer);\n\n this.resizeSearch();\n if (searchHadFocus) {\n this.$search.focus();\n }\n };\n\n Search.prototype.handleSearch = function () {\n this.resizeSearch();\n\n if (!this._keyUpPrevented) {\n var input = this.$search.val();\n\n this.trigger('query', {\n term: input\n });\n }\n\n this._keyUpPrevented = false;\n };\n\n Search.prototype.searchRemoveChoice = function (decorated, item) {\n this.trigger('unselect', {\n data: item\n });\n\n this.$search.val(item.text);\n this.handleSearch();\n };\n\n Search.prototype.resizeSearch = function () {\n this.$search.css('width', '25px');\n\n var width = '';\n\n if (this.$search.attr('placeholder') !== '') {\n width = this.$selection.find('.select2-selection__rendered').innerWidth();\n } else {\n var minimumWidth = this.$search.val().length + 1;\n\n width = (minimumWidth * 0.75) + 'em';\n }\n\n this.$search.css('width', width);\n };\n\n return Search;\n});\n\nS2.define('select2/selection/eventRelay',[\n 'jquery'\n], function ($) {\n function EventRelay () { }\n\n EventRelay.prototype.bind = function (decorated, container, $container) {\n var self = this;\n var relayEvents = [\n 'open', 'opening',\n 'close', 'closing',\n 'select', 'selecting',\n 'unselect', 'unselecting'\n ];\n\n var preventableEvents = ['opening', 'closing', 'selecting', 'unselecting'];\n\n decorated.call(this, container, $container);\n\n container.on('*', function (name, params) {\n // Ignore events that should not be relayed\n if ($.inArray(name, relayEvents) === -1) {\n return;\n }\n\n // The parameters should always be an object\n params = params || {};\n\n // Generate the jQuery event for the Select2 event\n var evt = $.Event('select2:' + name, {\n params: params\n });\n\n self.$element.trigger(evt);\n\n // Only handle preventable events if it was one\n if ($.inArray(name, preventableEvents) === -1) {\n return;\n }\n\n params.prevented = evt.isDefaultPrevented();\n });\n };\n\n return EventRelay;\n});\n\nS2.define('select2/translation',[\n 'jquery',\n 'require'\n], function ($, require) {\n function Translation (dict) {\n this.dict = dict || {};\n }\n\n Translation.prototype.all = function () {\n return this.dict;\n };\n\n Translation.prototype.get = function (key) {\n return this.dict[key];\n };\n\n Translation.prototype.extend = function (translation) {\n this.dict = $.extend({}, translation.all(), this.dict);\n };\n\n // Static functions\n\n Translation._cache = {};\n\n Translation.loadPath = function (path) {\n if (!(path in Translation._cache)) {\n var translations = require(path);\n\n Translation._cache[path] = translations;\n }\n\n return new Translation(Translation._cache[path]);\n };\n\n return Translation;\n});\n\nS2.define('select2/diacritics',[\n\n], function () {\n var diacritics = {\n '\\u24B6': 'A',\n '\\uFF21': 'A',\n '\\u00C0': 'A',\n '\\u00C1': 'A',\n '\\u00C2': 'A',\n '\\u1EA6': 'A',\n '\\u1EA4': 'A',\n '\\u1EAA': 'A',\n '\\u1EA8': 'A',\n '\\u00C3': 'A',\n '\\u0100': 'A',\n '\\u0102': 'A',\n '\\u1EB0': 'A',\n '\\u1EAE': 'A',\n '\\u1EB4': 'A',\n '\\u1EB2': 'A',\n '\\u0226': 'A',\n '\\u01E0': 'A',\n '\\u00C4': 'A',\n '\\u01DE': 'A',\n '\\u1EA2': 'A',\n '\\u00C5': 'A',\n '\\u01FA': 'A',\n '\\u01CD': 'A',\n '\\u0200': 'A',\n '\\u0202': 'A',\n '\\u1EA0': 'A',\n '\\u1EAC': 'A',\n '\\u1EB6': 'A',\n '\\u1E00': 'A',\n '\\u0104': 'A',\n '\\u023A': 'A',\n '\\u2C6F': 'A',\n '\\uA732': 'AA',\n '\\u00C6': 'AE',\n '\\u01FC': 'AE',\n '\\u01E2': 'AE',\n '\\uA734': 'AO',\n '\\uA736': 'AU',\n '\\uA738': 'AV',\n '\\uA73A': 'AV',\n '\\uA73C': 'AY',\n '\\u24B7': 'B',\n '\\uFF22': 'B',\n '\\u1E02': 'B',\n '\\u1E04': 'B',\n '\\u1E06': 'B',\n '\\u0243': 'B',\n '\\u0182': 'B',\n '\\u0181': 'B',\n '\\u24B8': 'C',\n '\\uFF23': 'C',\n '\\u0106': 'C',\n '\\u0108': 'C',\n '\\u010A': 'C',\n '\\u010C': 'C',\n '\\u00C7': 'C',\n '\\u1E08': 'C',\n '\\u0187': 'C',\n '\\u023B': 'C',\n '\\uA73E': 'C',\n '\\u24B9': 'D',\n '\\uFF24': 'D',\n '\\u1E0A': 'D',\n '\\u010E': 'D',\n '\\u1E0C': 'D',\n '\\u1E10': 'D',\n '\\u1E12': 'D',\n '\\u1E0E': 'D',\n '\\u0110': 'D',\n '\\u018B': 'D',\n '\\u018A': 'D',\n '\\u0189': 'D',\n '\\uA779': 'D',\n '\\u01F1': 'DZ',\n '\\u01C4': 'DZ',\n '\\u01F2': 'Dz',\n '\\u01C5': 'Dz',\n '\\u24BA': 'E',\n '\\uFF25': 'E',\n '\\u00C8': 'E',\n '\\u00C9': 'E',\n '\\u00CA': 'E',\n '\\u1EC0': 'E',\n '\\u1EBE': 'E',\n '\\u1EC4': 'E',\n '\\u1EC2': 'E',\n '\\u1EBC': 'E',\n '\\u0112': 'E',\n '\\u1E14': 'E',\n '\\u1E16': 'E',\n '\\u0114': 'E',\n '\\u0116': 'E',\n '\\u00CB': 'E',\n '\\u1EBA': 'E',\n '\\u011A': 'E',\n '\\u0204': 'E',\n '\\u0206': 'E',\n '\\u1EB8': 'E',\n '\\u1EC6': 'E',\n '\\u0228': 'E',\n '\\u1E1C': 'E',\n '\\u0118': 'E',\n '\\u1E18': 'E',\n '\\u1E1A': 'E',\n '\\u0190': 'E',\n '\\u018E': 'E',\n '\\u24BB': 'F',\n '\\uFF26': 'F',\n '\\u1E1E': 'F',\n '\\u0191': 'F',\n '\\uA77B': 'F',\n '\\u24BC': 'G',\n '\\uFF27': 'G',\n '\\u01F4': 'G',\n '\\u011C': 'G',\n '\\u1E20': 'G',\n '\\u011E': 'G',\n '\\u0120': 'G',\n '\\u01E6': 'G',\n '\\u0122': 'G',\n '\\u01E4': 'G',\n '\\u0193': 'G',\n '\\uA7A0': 'G',\n '\\uA77D': 'G',\n '\\uA77E': 'G',\n '\\u24BD': 'H',\n '\\uFF28': 'H',\n '\\u0124': 'H',\n '\\u1E22': 'H',\n '\\u1E26': 'H',\n '\\u021E': 'H',\n '\\u1E24': 'H',\n '\\u1E28': 'H',\n '\\u1E2A': 'H',\n '\\u0126': 'H',\n '\\u2C67': 'H',\n '\\u2C75': 'H',\n '\\uA78D': 'H',\n '\\u24BE': 'I',\n '\\uFF29': 'I',\n '\\u00CC': 'I',\n '\\u00CD': 'I',\n '\\u00CE': 'I',\n '\\u0128': 'I',\n '\\u012A': 'I',\n '\\u012C': 'I',\n '\\u0130': 'I',\n '\\u00CF': 'I',\n '\\u1E2E': 'I',\n '\\u1EC8': 'I',\n '\\u01CF': 'I',\n '\\u0208': 'I',\n '\\u020A': 'I',\n '\\u1ECA': 'I',\n '\\u012E': 'I',\n '\\u1E2C': 'I',\n '\\u0197': 'I',\n '\\u24BF': 'J',\n '\\uFF2A': 'J',\n '\\u0134': 'J',\n '\\u0248': 'J',\n '\\u24C0': 'K',\n '\\uFF2B': 'K',\n '\\u1E30': 'K',\n '\\u01E8': 'K',\n '\\u1E32': 'K',\n '\\u0136': 'K',\n '\\u1E34': 'K',\n '\\u0198': 'K',\n '\\u2C69': 'K',\n '\\uA740': 'K',\n '\\uA742': 'K',\n '\\uA744': 'K',\n '\\uA7A2': 'K',\n '\\u24C1': 'L',\n '\\uFF2C': 'L',\n '\\u013F': 'L',\n '\\u0139': 'L',\n '\\u013D': 'L',\n '\\u1E36': 'L',\n '\\u1E38': 'L',\n '\\u013B': 'L',\n '\\u1E3C': 'L',\n '\\u1E3A': 'L',\n '\\u0141': 'L',\n '\\u023D': 'L',\n '\\u2C62': 'L',\n '\\u2C60': 'L',\n '\\uA748': 'L',\n '\\uA746': 'L',\n '\\uA780': 'L',\n '\\u01C7': 'LJ',\n '\\u01C8': 'Lj',\n '\\u24C2': 'M',\n '\\uFF2D': 'M',\n '\\u1E3E': 'M',\n '\\u1E40': 'M',\n '\\u1E42': 'M',\n '\\u2C6E': 'M',\n '\\u019C': 'M',\n '\\u24C3': 'N',\n '\\uFF2E': 'N',\n '\\u01F8': 'N',\n '\\u0143': 'N',\n '\\u00D1': 'N',\n '\\u1E44': 'N',\n '\\u0147': 'N',\n '\\u1E46': 'N',\n '\\u0145': 'N',\n '\\u1E4A': 'N',\n '\\u1E48': 'N',\n '\\u0220': 'N',\n '\\u019D': 'N',\n '\\uA790': 'N',\n '\\uA7A4': 'N',\n '\\u01CA': 'NJ',\n '\\u01CB': 'Nj',\n '\\u24C4': 'O',\n '\\uFF2F': 'O',\n '\\u00D2': 'O',\n '\\u00D3': 'O',\n '\\u00D4': 'O',\n '\\u1ED2': 'O',\n '\\u1ED0': 'O',\n '\\u1ED6': 'O',\n '\\u1ED4': 'O',\n '\\u00D5': 'O',\n '\\u1E4C': 'O',\n '\\u022C': 'O',\n '\\u1E4E': 'O',\n '\\u014C': 'O',\n '\\u1E50': 'O',\n '\\u1E52': 'O',\n '\\u014E': 'O',\n '\\u022E': 'O',\n '\\u0230': 'O',\n '\\u00D6': 'O',\n '\\u022A': 'O',\n '\\u1ECE': 'O',\n '\\u0150': 'O',\n '\\u01D1': 'O',\n '\\u020C': 'O',\n '\\u020E': 'O',\n '\\u01A0': 'O',\n '\\u1EDC': 'O',\n '\\u1EDA': 'O',\n '\\u1EE0': 'O',\n '\\u1EDE': 'O',\n '\\u1EE2': 'O',\n '\\u1ECC': 'O',\n '\\u1ED8': 'O',\n '\\u01EA': 'O',\n '\\u01EC': 'O',\n '\\u00D8': 'O',\n '\\u01FE': 'O',\n '\\u0186': 'O',\n '\\u019F': 'O',\n '\\uA74A': 'O',\n '\\uA74C': 'O',\n '\\u01A2': 'OI',\n '\\uA74E': 'OO',\n '\\u0222': 'OU',\n '\\u24C5': 'P',\n '\\uFF30': 'P',\n '\\u1E54': 'P',\n '\\u1E56': 'P',\n '\\u01A4': 'P',\n '\\u2C63': 'P',\n '\\uA750': 'P',\n '\\uA752': 'P',\n '\\uA754': 'P',\n '\\u24C6': 'Q',\n '\\uFF31': 'Q',\n '\\uA756': 'Q',\n '\\uA758': 'Q',\n '\\u024A': 'Q',\n '\\u24C7': 'R',\n '\\uFF32': 'R',\n '\\u0154': 'R',\n '\\u1E58': 'R',\n '\\u0158': 'R',\n '\\u0210': 'R',\n '\\u0212': 'R',\n '\\u1E5A': 'R',\n '\\u1E5C': 'R',\n '\\u0156': 'R',\n '\\u1E5E': 'R',\n '\\u024C': 'R',\n '\\u2C64': 'R',\n '\\uA75A': 'R',\n '\\uA7A6': 'R',\n '\\uA782': 'R',\n '\\u24C8': 'S',\n '\\uFF33': 'S',\n '\\u1E9E': 'S',\n '\\u015A': 'S',\n '\\u1E64': 'S',\n '\\u015C': 'S',\n '\\u1E60': 'S',\n '\\u0160': 'S',\n '\\u1E66': 'S',\n '\\u1E62': 'S',\n '\\u1E68': 'S',\n '\\u0218': 'S',\n '\\u015E': 'S',\n '\\u2C7E': 'S',\n '\\uA7A8': 'S',\n '\\uA784': 'S',\n '\\u24C9': 'T',\n '\\uFF34': 'T',\n '\\u1E6A': 'T',\n '\\u0164': 'T',\n '\\u1E6C': 'T',\n '\\u021A': 'T',\n '\\u0162': 'T',\n '\\u1E70': 'T',\n '\\u1E6E': 'T',\n '\\u0166': 'T',\n '\\u01AC': 'T',\n '\\u01AE': 'T',\n '\\u023E': 'T',\n '\\uA786': 'T',\n '\\uA728': 'TZ',\n '\\u24CA': 'U',\n '\\uFF35': 'U',\n '\\u00D9': 'U',\n '\\u00DA': 'U',\n '\\u00DB': 'U',\n '\\u0168': 'U',\n '\\u1E78': 'U',\n '\\u016A': 'U',\n '\\u1E7A': 'U',\n '\\u016C': 'U',\n '\\u00DC': 'U',\n '\\u01DB': 'U',\n '\\u01D7': 'U',\n '\\u01D5': 'U',\n '\\u01D9': 'U',\n '\\u1EE6': 'U',\n '\\u016E': 'U',\n '\\u0170': 'U',\n '\\u01D3': 'U',\n '\\u0214': 'U',\n '\\u0216': 'U',\n '\\u01AF': 'U',\n '\\u1EEA': 'U',\n '\\u1EE8': 'U',\n '\\u1EEE': 'U',\n '\\u1EEC': 'U',\n '\\u1EF0': 'U',\n '\\u1EE4': 'U',\n '\\u1E72': 'U',\n '\\u0172': 'U',\n '\\u1E76': 'U',\n '\\u1E74': 'U',\n '\\u0244': 'U',\n '\\u24CB': 'V',\n '\\uFF36': 'V',\n '\\u1E7C': 'V',\n '\\u1E7E': 'V',\n '\\u01B2': 'V',\n '\\uA75E': 'V',\n '\\u0245': 'V',\n '\\uA760': 'VY',\n '\\u24CC': 'W',\n '\\uFF37': 'W',\n '\\u1E80': 'W',\n '\\u1E82': 'W',\n '\\u0174': 'W',\n '\\u1E86': 'W',\n '\\u1E84': 'W',\n '\\u1E88': 'W',\n '\\u2C72': 'W',\n '\\u24CD': 'X',\n '\\uFF38': 'X',\n '\\u1E8A': 'X',\n '\\u1E8C': 'X',\n '\\u24CE': 'Y',\n '\\uFF39': 'Y',\n '\\u1EF2': 'Y',\n '\\u00DD': 'Y',\n '\\u0176': 'Y',\n '\\u1EF8': 'Y',\n '\\u0232': 'Y',\n '\\u1E8E': 'Y',\n '\\u0178': 'Y',\n '\\u1EF6': 'Y',\n '\\u1EF4': 'Y',\n '\\u01B3': 'Y',\n '\\u024E': 'Y',\n '\\u1EFE': 'Y',\n '\\u24CF': 'Z',\n '\\uFF3A': 'Z',\n '\\u0179': 'Z',\n '\\u1E90': 'Z',\n '\\u017B': 'Z',\n '\\u017D': 'Z',\n '\\u1E92': 'Z',\n '\\u1E94': 'Z',\n '\\u01B5': 'Z',\n '\\u0224': 'Z',\n '\\u2C7F': 'Z',\n '\\u2C6B': 'Z',\n '\\uA762': 'Z',\n '\\u24D0': 'a',\n '\\uFF41': 'a',\n '\\u1E9A': 'a',\n '\\u00E0': 'a',\n '\\u00E1': 'a',\n '\\u00E2': 'a',\n '\\u1EA7': 'a',\n '\\u1EA5': 'a',\n '\\u1EAB': 'a',\n '\\u1EA9': 'a',\n '\\u00E3': 'a',\n '\\u0101': 'a',\n '\\u0103': 'a',\n '\\u1EB1': 'a',\n '\\u1EAF': 'a',\n '\\u1EB5': 'a',\n '\\u1EB3': 'a',\n '\\u0227': 'a',\n '\\u01E1': 'a',\n '\\u00E4': 'a',\n '\\u01DF': 'a',\n '\\u1EA3': 'a',\n '\\u00E5': 'a',\n '\\u01FB': 'a',\n '\\u01CE': 'a',\n '\\u0201': 'a',\n '\\u0203': 'a',\n '\\u1EA1': 'a',\n '\\u1EAD': 'a',\n '\\u1EB7': 'a',\n '\\u1E01': 'a',\n '\\u0105': 'a',\n '\\u2C65': 'a',\n '\\u0250': 'a',\n '\\uA733': 'aa',\n '\\u00E6': 'ae',\n '\\u01FD': 'ae',\n '\\u01E3': 'ae',\n '\\uA735': 'ao',\n '\\uA737': 'au',\n '\\uA739': 'av',\n '\\uA73B': 'av',\n '\\uA73D': 'ay',\n '\\u24D1': 'b',\n '\\uFF42': 'b',\n '\\u1E03': 'b',\n '\\u1E05': 'b',\n '\\u1E07': 'b',\n '\\u0180': 'b',\n '\\u0183': 'b',\n '\\u0253': 'b',\n '\\u24D2': 'c',\n '\\uFF43': 'c',\n '\\u0107': 'c',\n '\\u0109': 'c',\n '\\u010B': 'c',\n '\\u010D': 'c',\n '\\u00E7': 'c',\n '\\u1E09': 'c',\n '\\u0188': 'c',\n '\\u023C': 'c',\n '\\uA73F': 'c',\n '\\u2184': 'c',\n '\\u24D3': 'd',\n '\\uFF44': 'd',\n '\\u1E0B': 'd',\n '\\u010F': 'd',\n '\\u1E0D': 'd',\n '\\u1E11': 'd',\n '\\u1E13': 'd',\n '\\u1E0F': 'd',\n '\\u0111': 'd',\n '\\u018C': 'd',\n '\\u0256': 'd',\n '\\u0257': 'd',\n '\\uA77A': 'd',\n '\\u01F3': 'dz',\n '\\u01C6': 'dz',\n '\\u24D4': 'e',\n '\\uFF45': 'e',\n '\\u00E8': 'e',\n '\\u00E9': 'e',\n '\\u00EA': 'e',\n '\\u1EC1': 'e',\n '\\u1EBF': 'e',\n '\\u1EC5': 'e',\n '\\u1EC3': 'e',\n '\\u1EBD': 'e',\n '\\u0113': 'e',\n '\\u1E15': 'e',\n '\\u1E17': 'e',\n '\\u0115': 'e',\n '\\u0117': 'e',\n '\\u00EB': 'e',\n '\\u1EBB': 'e',\n '\\u011B': 'e',\n '\\u0205': 'e',\n '\\u0207': 'e',\n '\\u1EB9': 'e',\n '\\u1EC7': 'e',\n '\\u0229': 'e',\n '\\u1E1D': 'e',\n '\\u0119': 'e',\n '\\u1E19': 'e',\n '\\u1E1B': 'e',\n '\\u0247': 'e',\n '\\u025B': 'e',\n '\\u01DD': 'e',\n '\\u24D5': 'f',\n '\\uFF46': 'f',\n '\\u1E1F': 'f',\n '\\u0192': 'f',\n '\\uA77C': 'f',\n '\\u24D6': 'g',\n '\\uFF47': 'g',\n '\\u01F5': 'g',\n '\\u011D': 'g',\n '\\u1E21': 'g',\n '\\u011F': 'g',\n '\\u0121': 'g',\n '\\u01E7': 'g',\n '\\u0123': 'g',\n '\\u01E5': 'g',\n '\\u0260': 'g',\n '\\uA7A1': 'g',\n '\\u1D79': 'g',\n '\\uA77F': 'g',\n '\\u24D7': 'h',\n '\\uFF48': 'h',\n '\\u0125': 'h',\n '\\u1E23': 'h',\n '\\u1E27': 'h',\n '\\u021F': 'h',\n '\\u1E25': 'h',\n '\\u1E29': 'h',\n '\\u1E2B': 'h',\n '\\u1E96': 'h',\n '\\u0127': 'h',\n '\\u2C68': 'h',\n '\\u2C76': 'h',\n '\\u0265': 'h',\n '\\u0195': 'hv',\n '\\u24D8': 'i',\n '\\uFF49': 'i',\n '\\u00EC': 'i',\n '\\u00ED': 'i',\n '\\u00EE': 'i',\n '\\u0129': 'i',\n '\\u012B': 'i',\n '\\u012D': 'i',\n '\\u00EF': 'i',\n '\\u1E2F': 'i',\n '\\u1EC9': 'i',\n '\\u01D0': 'i',\n '\\u0209': 'i',\n '\\u020B': 'i',\n '\\u1ECB': 'i',\n '\\u012F': 'i',\n '\\u1E2D': 'i',\n '\\u0268': 'i',\n '\\u0131': 'i',\n '\\u24D9': 'j',\n '\\uFF4A': 'j',\n '\\u0135': 'j',\n '\\u01F0': 'j',\n '\\u0249': 'j',\n '\\u24DA': 'k',\n '\\uFF4B': 'k',\n '\\u1E31': 'k',\n '\\u01E9': 'k',\n '\\u1E33': 'k',\n '\\u0137': 'k',\n '\\u1E35': 'k',\n '\\u0199': 'k',\n '\\u2C6A': 'k',\n '\\uA741': 'k',\n '\\uA743': 'k',\n '\\uA745': 'k',\n '\\uA7A3': 'k',\n '\\u24DB': 'l',\n '\\uFF4C': 'l',\n '\\u0140': 'l',\n '\\u013A': 'l',\n '\\u013E': 'l',\n '\\u1E37': 'l',\n '\\u1E39': 'l',\n '\\u013C': 'l',\n '\\u1E3D': 'l',\n '\\u1E3B': 'l',\n '\\u017F': 'l',\n '\\u0142': 'l',\n '\\u019A': 'l',\n '\\u026B': 'l',\n '\\u2C61': 'l',\n '\\uA749': 'l',\n '\\uA781': 'l',\n '\\uA747': 'l',\n '\\u01C9': 'lj',\n '\\u24DC': 'm',\n '\\uFF4D': 'm',\n '\\u1E3F': 'm',\n '\\u1E41': 'm',\n '\\u1E43': 'm',\n '\\u0271': 'm',\n '\\u026F': 'm',\n '\\u24DD': 'n',\n '\\uFF4E': 'n',\n '\\u01F9': 'n',\n '\\u0144': 'n',\n '\\u00F1': 'n',\n '\\u1E45': 'n',\n '\\u0148': 'n',\n '\\u1E47': 'n',\n '\\u0146': 'n',\n '\\u1E4B': 'n',\n '\\u1E49': 'n',\n '\\u019E': 'n',\n '\\u0272': 'n',\n '\\u0149': 'n',\n '\\uA791': 'n',\n '\\uA7A5': 'n',\n '\\u01CC': 'nj',\n '\\u24DE': 'o',\n '\\uFF4F': 'o',\n '\\u00F2': 'o',\n '\\u00F3': 'o',\n '\\u00F4': 'o',\n '\\u1ED3': 'o',\n '\\u1ED1': 'o',\n '\\u1ED7': 'o',\n '\\u1ED5': 'o',\n '\\u00F5': 'o',\n '\\u1E4D': 'o',\n '\\u022D': 'o',\n '\\u1E4F': 'o',\n '\\u014D': 'o',\n '\\u1E51': 'o',\n '\\u1E53': 'o',\n '\\u014F': 'o',\n '\\u022F': 'o',\n '\\u0231': 'o',\n '\\u00F6': 'o',\n '\\u022B': 'o',\n '\\u1ECF': 'o',\n '\\u0151': 'o',\n '\\u01D2': 'o',\n '\\u020D': 'o',\n '\\u020F': 'o',\n '\\u01A1': 'o',\n '\\u1EDD': 'o',\n '\\u1EDB': 'o',\n '\\u1EE1': 'o',\n '\\u1EDF': 'o',\n '\\u1EE3': 'o',\n '\\u1ECD': 'o',\n '\\u1ED9': 'o',\n '\\u01EB': 'o',\n '\\u01ED': 'o',\n '\\u00F8': 'o',\n '\\u01FF': 'o',\n '\\u0254': 'o',\n '\\uA74B': 'o',\n '\\uA74D': 'o',\n '\\u0275': 'o',\n '\\u01A3': 'oi',\n '\\u0223': 'ou',\n '\\uA74F': 'oo',\n '\\u24DF': 'p',\n '\\uFF50': 'p',\n '\\u1E55': 'p',\n '\\u1E57': 'p',\n '\\u01A5': 'p',\n '\\u1D7D': 'p',\n '\\uA751': 'p',\n '\\uA753': 'p',\n '\\uA755': 'p',\n '\\u24E0': 'q',\n '\\uFF51': 'q',\n '\\u024B': 'q',\n '\\uA757': 'q',\n '\\uA759': 'q',\n '\\u24E1': 'r',\n '\\uFF52': 'r',\n '\\u0155': 'r',\n '\\u1E59': 'r',\n '\\u0159': 'r',\n '\\u0211': 'r',\n '\\u0213': 'r',\n '\\u1E5B': 'r',\n '\\u1E5D': 'r',\n '\\u0157': 'r',\n '\\u1E5F': 'r',\n '\\u024D': 'r',\n '\\u027D': 'r',\n '\\uA75B': 'r',\n '\\uA7A7': 'r',\n '\\uA783': 'r',\n '\\u24E2': 's',\n '\\uFF53': 's',\n '\\u00DF': 's',\n '\\u015B': 's',\n '\\u1E65': 's',\n '\\u015D': 's',\n '\\u1E61': 's',\n '\\u0161': 's',\n '\\u1E67': 's',\n '\\u1E63': 's',\n '\\u1E69': 's',\n '\\u0219': 's',\n '\\u015F': 's',\n '\\u023F': 's',\n '\\uA7A9': 's',\n '\\uA785': 's',\n '\\u1E9B': 's',\n '\\u24E3': 't',\n '\\uFF54': 't',\n '\\u1E6B': 't',\n '\\u1E97': 't',\n '\\u0165': 't',\n '\\u1E6D': 't',\n '\\u021B': 't',\n '\\u0163': 't',\n '\\u1E71': 't',\n '\\u1E6F': 't',\n '\\u0167': 't',\n '\\u01AD': 't',\n '\\u0288': 't',\n '\\u2C66': 't',\n '\\uA787': 't',\n '\\uA729': 'tz',\n '\\u24E4': 'u',\n '\\uFF55': 'u',\n '\\u00F9': 'u',\n '\\u00FA': 'u',\n '\\u00FB': 'u',\n '\\u0169': 'u',\n '\\u1E79': 'u',\n '\\u016B': 'u',\n '\\u1E7B': 'u',\n '\\u016D': 'u',\n '\\u00FC': 'u',\n '\\u01DC': 'u',\n '\\u01D8': 'u',\n '\\u01D6': 'u',\n '\\u01DA': 'u',\n '\\u1EE7': 'u',\n '\\u016F': 'u',\n '\\u0171': 'u',\n '\\u01D4': 'u',\n '\\u0215': 'u',\n '\\u0217': 'u',\n '\\u01B0': 'u',\n '\\u1EEB': 'u',\n '\\u1EE9': 'u',\n '\\u1EEF': 'u',\n '\\u1EED': 'u',\n '\\u1EF1': 'u',\n '\\u1EE5': 'u',\n '\\u1E73': 'u',\n '\\u0173': 'u',\n '\\u1E77': 'u',\n '\\u1E75': 'u',\n '\\u0289': 'u',\n '\\u24E5': 'v',\n '\\uFF56': 'v',\n '\\u1E7D': 'v',\n '\\u1E7F': 'v',\n '\\u028B': 'v',\n '\\uA75F': 'v',\n '\\u028C': 'v',\n '\\uA761': 'vy',\n '\\u24E6': 'w',\n '\\uFF57': 'w',\n '\\u1E81': 'w',\n '\\u1E83': 'w',\n '\\u0175': 'w',\n '\\u1E87': 'w',\n '\\u1E85': 'w',\n '\\u1E98': 'w',\n '\\u1E89': 'w',\n '\\u2C73': 'w',\n '\\u24E7': 'x',\n '\\uFF58': 'x',\n '\\u1E8B': 'x',\n '\\u1E8D': 'x',\n '\\u24E8': 'y',\n '\\uFF59': 'y',\n '\\u1EF3': 'y',\n '\\u00FD': 'y',\n '\\u0177': 'y',\n '\\u1EF9': 'y',\n '\\u0233': 'y',\n '\\u1E8F': 'y',\n '\\u00FF': 'y',\n '\\u1EF7': 'y',\n '\\u1E99': 'y',\n '\\u1EF5': 'y',\n '\\u01B4': 'y',\n '\\u024F': 'y',\n '\\u1EFF': 'y',\n '\\u24E9': 'z',\n '\\uFF5A': 'z',\n '\\u017A': 'z',\n '\\u1E91': 'z',\n '\\u017C': 'z',\n '\\u017E': 'z',\n '\\u1E93': 'z',\n '\\u1E95': 'z',\n '\\u01B6': 'z',\n '\\u0225': 'z',\n '\\u0240': 'z',\n '\\u2C6C': 'z',\n '\\uA763': 'z',\n '\\u0386': '\\u0391',\n '\\u0388': '\\u0395',\n '\\u0389': '\\u0397',\n '\\u038A': '\\u0399',\n '\\u03AA': '\\u0399',\n '\\u038C': '\\u039F',\n '\\u038E': '\\u03A5',\n '\\u03AB': '\\u03A5',\n '\\u038F': '\\u03A9',\n '\\u03AC': '\\u03B1',\n '\\u03AD': '\\u03B5',\n '\\u03AE': '\\u03B7',\n '\\u03AF': '\\u03B9',\n '\\u03CA': '\\u03B9',\n '\\u0390': '\\u03B9',\n '\\u03CC': '\\u03BF',\n '\\u03CD': '\\u03C5',\n '\\u03CB': '\\u03C5',\n '\\u03B0': '\\u03C5',\n '\\u03C9': '\\u03C9',\n '\\u03C2': '\\u03C3'\n };\n\n return diacritics;\n});\n\nS2.define('select2/data/base',[\n '../utils'\n], function (Utils) {\n function BaseAdapter ($element, options) {\n BaseAdapter.__super__.constructor.call(this);\n }\n\n Utils.Extend(BaseAdapter, Utils.Observable);\n\n BaseAdapter.prototype.current = function (callback) {\n throw new Error('The `current` method must be defined in child classes.');\n };\n\n BaseAdapter.prototype.query = function (params, callback) {\n throw new Error('The `query` method must be defined in child classes.');\n };\n\n BaseAdapter.prototype.bind = function (container, $container) {\n // Can be implemented in subclasses\n };\n\n BaseAdapter.prototype.destroy = function () {\n // Can be implemented in subclasses\n };\n\n BaseAdapter.prototype.generateResultId = function (container, data) {\n var id = container.id + '-result-';\n\n id += Utils.generateChars(4);\n\n if (data.id != null) {\n id += '-' + data.id.toString();\n } else {\n id += '-' + Utils.generateChars(4);\n }\n return id;\n };\n\n return BaseAdapter;\n});\n\nS2.define('select2/data/select',[\n './base',\n '../utils',\n 'jquery'\n], function (BaseAdapter, Utils, $) {\n function SelectAdapter ($element, options) {\n this.$element = $element;\n this.options = options;\n\n SelectAdapter.__super__.constructor.call(this);\n }\n\n Utils.Extend(SelectAdapter, BaseAdapter);\n\n SelectAdapter.prototype.current = function (callback) {\n var data = [];\n var self = this;\n\n this.$element.find(':selected').each(function () {\n var $option = $(this);\n\n var option = self.item($option);\n\n data.push(option);\n });\n\n callback(data);\n };\n\n SelectAdapter.prototype.select = function (data) {\n var self = this;\n\n data.selected = true;\n\n // If data.element is a DOM node, use it instead\n if ($(data.element).is('option')) {\n data.element.selected = true;\n\n this.$element.trigger('change');\n\n return;\n }\n\n if (this.$element.prop('multiple')) {\n this.current(function (currentData) {\n var val = [];\n\n data = [data];\n data.push.apply(data, currentData);\n\n for (var d = 0; d < data.length; d++) {\n var id = data[d].id;\n\n if ($.inArray(id, val) === -1) {\n val.push(id);\n }\n }\n\n self.$element.val(val);\n self.$element.trigger('change');\n });\n } else {\n var val = data.id;\n\n this.$element.val(val);\n this.$element.trigger('change');\n }\n };\n\n SelectAdapter.prototype.unselect = function (data) {\n var self = this;\n\n if (!this.$element.prop('multiple')) {\n return;\n }\n\n data.selected = false;\n\n if ($(data.element).is('option')) {\n data.element.selected = false;\n\n this.$element.trigger('change');\n\n return;\n }\n\n this.current(function (currentData) {\n var val = [];\n\n for (var d = 0; d < currentData.length; d++) {\n var id = currentData[d].id;\n\n if (id !== data.id && $.inArray(id, val) === -1) {\n val.push(id);\n }\n }\n\n self.$element.val(val);\n\n self.$element.trigger('change');\n });\n };\n\n SelectAdapter.prototype.bind = function (container, $container) {\n var self = this;\n\n this.container = container;\n\n container.on('select', function (params) {\n self.select(params.data);\n });\n\n container.on('unselect', function (params) {\n self.unselect(params.data);\n });\n };\n\n SelectAdapter.prototype.destroy = function () {\n // Remove anything added to child elements\n this.$element.find('*').each(function () {\n // Remove any custom data set by Select2\n $.removeData(this, 'data');\n });\n };\n\n SelectAdapter.prototype.query = function (params, callback) {\n var data = [];\n var self = this;\n\n var $options = this.$element.children();\n\n $options.each(function () {\n var $option = $(this);\n\n if (!$option.is('option') && !$option.is('optgroup')) {\n return;\n }\n\n var option = self.item($option);\n\n var matches = self.matches(params, option);\n\n if (matches !== null) {\n data.push(matches);\n }\n });\n\n callback({\n results: data\n });\n };\n\n SelectAdapter.prototype.addOptions = function ($options) {\n Utils.appendMany(this.$element, $options);\n };\n\n SelectAdapter.prototype.option = function (data) {\n var option;\n\n if (data.children) {\n option = document.createElement('optgroup');\n option.label = data.text;\n } else {\n option = document.createElement('option');\n\n if (option.textContent !== undefined) {\n option.textContent = data.text;\n } else {\n option.innerText = data.text;\n }\n }\n\n if (data.id !== undefined) {\n option.value = data.id;\n }\n\n if (data.disabled) {\n option.disabled = true;\n }\n\n if (data.selected) {\n option.selected = true;\n }\n\n if (data.title) {\n option.title = data.title;\n }\n\n var $option = $(option);\n\n var normalizedData = this._normalizeItem(data);\n normalizedData.element = option;\n\n // Override the option's data with the combined data\n $.data(option, 'data', normalizedData);\n\n return $option;\n };\n\n SelectAdapter.prototype.item = function ($option) {\n var data = {};\n\n data = $.data($option[0], 'data');\n\n if (data != null) {\n return data;\n }\n\n if ($option.is('option')) {\n data = {\n id: $option.val(),\n text: $option.text(),\n disabled: $option.prop('disabled'),\n selected: $option.prop('selected'),\n title: $option.prop('title')\n };\n } else if ($option.is('optgroup')) {\n data = {\n text: $option.prop('label'),\n children: [],\n title: $option.prop('title')\n };\n\n var $children = $option.children('option');\n var children = [];\n\n for (var c = 0; c < $children.length; c++) {\n var $child = $($children[c]);\n\n var child = this.item($child);\n\n children.push(child);\n }\n\n data.children = children;\n }\n\n data = this._normalizeItem(data);\n data.element = $option[0];\n\n $.data($option[0], 'data', data);\n\n return data;\n };\n\n SelectAdapter.prototype._normalizeItem = function (item) {\n if (!$.isPlainObject(item)) {\n item = {\n id: item,\n text: item\n };\n }\n\n item = $.extend({}, {\n text: ''\n }, item);\n\n var defaults = {\n selected: false,\n disabled: false\n };\n\n if (item.id != null) {\n item.id = item.id.toString();\n }\n\n if (item.text != null) {\n item.text = item.text.toString();\n }\n\n if (item._resultId == null && item.id && this.container != null) {\n item._resultId = this.generateResultId(this.container, item);\n }\n\n return $.extend({}, defaults, item);\n };\n\n SelectAdapter.prototype.matches = function (params, data) {\n var matcher = this.options.get('matcher');\n\n return matcher(params, data);\n };\n\n return SelectAdapter;\n});\n\nS2.define('select2/data/array',[\n './select',\n '../utils',\n 'jquery'\n], function (SelectAdapter, Utils, $) {\n function ArrayAdapter ($element, options) {\n var data = options.get('data') || [];\n\n ArrayAdapter.__super__.constructor.call(this, $element, options);\n\n this.addOptions(this.convertToOptions(data));\n }\n\n Utils.Extend(ArrayAdapter, SelectAdapter);\n\n ArrayAdapter.prototype.select = function (data) {\n var $option = this.$element.find('option').filter(function (i, elm) {\n return elm.value == data.id.toString();\n });\n\n if ($option.length === 0) {\n $option = this.option(data);\n\n this.addOptions($option);\n }\n\n ArrayAdapter.__super__.select.call(this, data);\n };\n\n ArrayAdapter.prototype.convertToOptions = function (data) {\n var self = this;\n\n var $existing = this.$element.find('option');\n var existingIds = $existing.map(function () {\n return self.item($(this)).id;\n }).get();\n\n var $options = [];\n\n // Filter out all items except for the one passed in the argument\n function onlyItem (item) {\n return function () {\n return $(this).val() == item.id;\n };\n }\n\n for (var d = 0; d < data.length; d++) {\n var item = this._normalizeItem(data[d]);\n\n // Skip items which were pre-loaded, only merge the data\n if ($.inArray(item.id, existingIds) >= 0) {\n var $existingOption = $existing.filter(onlyItem(item));\n\n var existingData = this.item($existingOption);\n var newData = $.extend(true, {}, item, existingData);\n\n var $newOption = this.option(newData);\n\n $existingOption.replaceWith($newOption);\n\n continue;\n }\n\n var $option = this.option(item);\n\n if (item.children) {\n var $children = this.convertToOptions(item.children);\n\n Utils.appendMany($option, $children);\n }\n\n $options.push($option);\n }\n\n return $options;\n };\n\n return ArrayAdapter;\n});\n\nS2.define('select2/data/ajax',[\n './array',\n '../utils',\n 'jquery'\n], function (ArrayAdapter, Utils, $) {\n function AjaxAdapter ($element, options) {\n this.ajaxOptions = this._applyDefaults(options.get('ajax'));\n\n if (this.ajaxOptions.processResults != null) {\n this.processResults = this.ajaxOptions.processResults;\n }\n\n AjaxAdapter.__super__.constructor.call(this, $element, options);\n }\n\n Utils.Extend(AjaxAdapter, ArrayAdapter);\n\n AjaxAdapter.prototype._applyDefaults = function (options) {\n var defaults = {\n data: function (params) {\n return $.extend({}, params, {\n q: params.term\n });\n },\n transport: function (params, success, failure) {\n var $request = $.ajax(params);\n\n $request.then(success);\n $request.fail(failure);\n\n return $request;\n }\n };\n\n return $.extend({}, defaults, options, true);\n };\n\n AjaxAdapter.prototype.processResults = function (results) {\n return results;\n };\n\n AjaxAdapter.prototype.query = function (params, callback) {\n var matches = [];\n var self = this;\n\n if (this._request != null) {\n // JSONP requests cannot always be aborted\n if ($.isFunction(this._request.abort)) {\n this._request.abort();\n }\n\n this._request = null;\n }\n\n var options = $.extend({\n type: 'GET'\n }, this.ajaxOptions);\n\n if (typeof options.url === 'function') {\n options.url = options.url.call(this.$element, params);\n }\n\n if (typeof options.data === 'function') {\n options.data = options.data.call(this.$element, params);\n }\n\n function request () {\n var $request = options.transport(options, function (data) {\n var results = self.processResults(data, params);\n\n if (self.options.get('debug') && window.console && console.error) {\n // Check to make sure that the response included a `results` key.\n if (!results || !results.results || !$.isArray(results.results)) {\n console.error(\n 'Select2: The AJAX results did not return an array in the ' +\n '`results` key of the response.'\n );\n }\n }\n\n callback(results);\n }, function () {\n // Attempt to detect if a request was aborted\n // Only works if the transport exposes a status property\n if ($request.status && $request.status === '0') {\n return;\n }\n\n self.trigger('results:message', {\n message: 'errorLoading'\n });\n });\n\n self._request = $request;\n }\n\n if (this.ajaxOptions.delay && params.term != null) {\n if (this._queryTimeout) {\n window.clearTimeout(this._queryTimeout);\n }\n\n this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay);\n } else {\n request();\n }\n };\n\n return AjaxAdapter;\n});\n\nS2.define('select2/data/tags',[\n 'jquery'\n], function ($) {\n function Tags (decorated, $element, options) {\n var tags = options.get('tags');\n\n var createTag = options.get('createTag');\n\n if (createTag !== undefined) {\n this.createTag = createTag;\n }\n\n var insertTag = options.get('insertTag');\n\n if (insertTag !== undefined) {\n this.insertTag = insertTag;\n }\n\n decorated.call(this, $element, options);\n\n if ($.isArray(tags)) {\n for (var t = 0; t < tags.length; t++) {\n var tag = tags[t];\n var item = this._normalizeItem(tag);\n\n var $option = this.option(item);\n\n this.$element.append($option);\n }\n }\n }\n\n Tags.prototype.query = function (decorated, params, callback) {\n var self = this;\n\n this._removeOldTags();\n\n if (params.term == null || params.page != null) {\n decorated.call(this, params, callback);\n return;\n }\n\n function wrapper (obj, child) {\n var data = obj.results;\n\n for (var i = 0; i < data.length; i++) {\n var option = data[i];\n\n var checkChildren = (\n option.children != null &&\n !wrapper({\n results: option.children\n }, true)\n );\n\n var optionText = (option.text || '').toUpperCase();\n var paramsTerm = (params.term || '').toUpperCase();\n\n var checkText = optionText === paramsTerm;\n\n if (checkText || checkChildren) {\n if (child) {\n return false;\n }\n\n obj.data = data;\n callback(obj);\n\n return;\n }\n }\n\n if (child) {\n return true;\n }\n\n var tag = self.createTag(params);\n\n if (tag != null) {\n var $option = self.option(tag);\n $option.attr('data-select2-tag', true);\n\n self.addOptions([$option]);\n\n self.insertTag(data, tag);\n }\n\n obj.results = data;\n\n callback(obj);\n }\n\n decorated.call(this, params, wrapper);\n };\n\n Tags.prototype.createTag = function (decorated, params) {\n var term = $.trim(params.term);\n\n if (term === '') {\n return null;\n }\n\n return {\n id: term,\n text: term\n };\n };\n\n Tags.prototype.insertTag = function (_, data, tag) {\n data.unshift(tag);\n };\n\n Tags.prototype._removeOldTags = function (_) {\n var tag = this._lastTag;\n\n var $options = this.$element.find('option[data-select2-tag]');\n\n $options.each(function () {\n if (this.selected) {\n return;\n }\n\n $(this).remove();\n });\n };\n\n return Tags;\n});\n\nS2.define('select2/data/tokenizer',[\n 'jquery'\n], function ($) {\n function Tokenizer (decorated, $element, options) {\n var tokenizer = options.get('tokenizer');\n\n if (tokenizer !== undefined) {\n this.tokenizer = tokenizer;\n }\n\n decorated.call(this, $element, options);\n }\n\n Tokenizer.prototype.bind = function (decorated, container, $container) {\n decorated.call(this, container, $container);\n\n this.$search = container.dropdown.$search || container.selection.$search ||\n $container.find('.select2-search__field');\n };\n\n Tokenizer.prototype.query = function (decorated, params, callback) {\n var self = this;\n\n function createAndSelect (data) {\n // Normalize the data object so we can use it for checks\n var item = self._normalizeItem(data);\n\n // Check if the data object already exists as a tag\n // Select it if it doesn't\n var $existingOptions = self.$element.find('option').filter(function () {\n return $(this).val() === item.id;\n });\n\n // If an existing option wasn't found for it, create the option\n if (!$existingOptions.length) {\n var $option = self.option(item);\n $option.attr('data-select2-tag', true);\n\n self._removeOldTags();\n self.addOptions([$option]);\n }\n\n // Select the item, now that we know there is an option for it\n select(item);\n }\n\n function select (data) {\n self.trigger('select', {\n data: data\n });\n }\n\n params.term = params.term || '';\n\n var tokenData = this.tokenizer(params, this.options, createAndSelect);\n\n if (tokenData.term !== params.term) {\n // Replace the search term if we have the search box\n if (this.$search.length) {\n this.$search.val(tokenData.term);\n this.$search.focus();\n }\n\n params.term = tokenData.term;\n }\n\n decorated.call(this, params, callback);\n };\n\n Tokenizer.prototype.tokenizer = function (_, params, options, callback) {\n var separators = options.get('tokenSeparators') || [];\n var term = params.term;\n var i = 0;\n\n var createTag = this.createTag || function (params) {\n return {\n id: params.term,\n text: params.term\n };\n };\n\n while (i < term.length) {\n var termChar = term[i];\n\n if ($.inArray(termChar, separators) === -1) {\n i++;\n\n continue;\n }\n\n var part = term.substr(0, i);\n var partParams = $.extend({}, params, {\n term: part\n });\n\n var data = createTag(partParams);\n\n if (data == null) {\n i++;\n continue;\n }\n\n callback(data);\n\n // Reset the term to not include the tokenized portion\n term = term.substr(i + 1) || '';\n i = 0;\n }\n\n return {\n term: term\n };\n };\n\n return Tokenizer;\n});\n\nS2.define('select2/data/minimumInputLength',[\n\n], function () {\n function MinimumInputLength (decorated, $e, options) {\n this.minimumInputLength = options.get('minimumInputLength');\n\n decorated.call(this, $e, options);\n }\n\n MinimumInputLength.prototype.query = function (decorated, params, callback) {\n params.term = params.term || '';\n\n if (params.term.length < this.minimumInputLength) {\n this.trigger('results:message', {\n message: 'inputTooShort',\n args: {\n minimum: this.minimumInputLength,\n input: params.term,\n params: params\n }\n });\n\n return;\n }\n\n decorated.call(this, params, callback);\n };\n\n return MinimumInputLength;\n});\n\nS2.define('select2/data/maximumInputLength',[\n\n], function () {\n function MaximumInputLength (decorated, $e, options) {\n this.maximumInputLength = options.get('maximumInputLength');\n\n decorated.call(this, $e, options);\n }\n\n MaximumInputLength.prototype.query = function (decorated, params, callback) {\n params.term = params.term || '';\n\n if (this.maximumInputLength > 0 &&\n params.term.length > this.maximumInputLength) {\n this.trigger('results:message', {\n message: 'inputTooLong',\n args: {\n maximum: this.maximumInputLength,\n input: params.term,\n params: params\n }\n });\n\n return;\n }\n\n decorated.call(this, params, callback);\n };\n\n return MaximumInputLength;\n});\n\nS2.define('select2/data/maximumSelectionLength',[\n\n], function (){\n function MaximumSelectionLength (decorated, $e, options) {\n this.maximumSelectionLength = options.get('maximumSelectionLength');\n\n decorated.call(this, $e, options);\n }\n\n MaximumSelectionLength.prototype.query =\n function (decorated, params, callback) {\n var self = this;\n\n this.current(function (currentData) {\n var count = currentData != null ? currentData.length : 0;\n if (self.maximumSelectionLength > 0 &&\n count >= self.maximumSelectionLength) {\n self.trigger('results:message', {\n message: 'maximumSelected',\n args: {\n maximum: self.maximumSelectionLength\n }\n });\n return;\n }\n decorated.call(self, params, callback);\n });\n };\n\n return MaximumSelectionLength;\n});\n\nS2.define('select2/dropdown',[\n 'jquery',\n './utils'\n], function ($, Utils) {\n function Dropdown ($element, options) {\n this.$element = $element;\n this.options = options;\n\n Dropdown.__super__.constructor.call(this);\n }\n\n Utils.Extend(Dropdown, Utils.Observable);\n\n Dropdown.prototype.render = function () {\n var $dropdown = $(\n '' +\n '' +\n ''\n );\n\n $dropdown.attr('dir', this.options.get('dir'));\n\n this.$dropdown = $dropdown;\n\n return $dropdown;\n };\n\n Dropdown.prototype.bind = function () {\n // Should be implemented in subclasses\n };\n\n Dropdown.prototype.position = function ($dropdown, $container) {\n // Should be implmented in subclasses\n };\n\n Dropdown.prototype.destroy = function () {\n // Remove the dropdown from the DOM\n this.$dropdown.remove();\n };\n\n return Dropdown;\n});\n\nS2.define('select2/dropdown/search',[\n 'jquery',\n '../utils'\n], function ($, Utils) {\n function Search () { }\n\n Search.prototype.render = function (decorated) {\n var $rendered = decorated.call(this);\n\n var $search = $(\n '' +\n '' +\n ''\n );\n\n this.$searchContainer = $search;\n this.$search = $search.find('input');\n\n $rendered.prepend($search);\n\n return $rendered;\n };\n\n Search.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n this.$search.on('keydown', function (evt) {\n self.trigger('keypress', evt);\n\n self._keyUpPrevented = evt.isDefaultPrevented();\n });\n\n // Workaround for browsers which do not support the `input` event\n // This will prevent double-triggering of events for browsers which support\n // both the `keyup` and `input` events.\n this.$search.on('input', function (evt) {\n // Unbind the duplicated `keyup` event\n $(this).off('keyup');\n });\n\n this.$search.on('keyup input', function (evt) {\n self.handleSearch(evt);\n });\n\n container.on('open', function () {\n self.$search.attr('tabindex', 0);\n\n self.$search.focus();\n\n window.setTimeout(function () {\n self.$search.focus();\n }, 0);\n });\n\n container.on('close', function () {\n self.$search.attr('tabindex', -1);\n\n self.$search.val('');\n });\n\n container.on('focus', function () {\n if (!container.isOpen()) {\n self.$search.focus();\n }\n });\n\n container.on('results:all', function (params) {\n if (params.query.term == null || params.query.term === '') {\n var showSearch = self.showSearch(params);\n\n if (showSearch) {\n self.$searchContainer.removeClass('select2-search--hide');\n } else {\n self.$searchContainer.addClass('select2-search--hide');\n }\n }\n });\n };\n\n Search.prototype.handleSearch = function (evt) {\n if (!this._keyUpPrevented) {\n var input = this.$search.val();\n\n this.trigger('query', {\n term: input\n });\n }\n\n this._keyUpPrevented = false;\n };\n\n Search.prototype.showSearch = function (_, params) {\n return true;\n };\n\n return Search;\n});\n\nS2.define('select2/dropdown/hidePlaceholder',[\n\n], function () {\n function HidePlaceholder (decorated, $element, options, dataAdapter) {\n this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n\n decorated.call(this, $element, options, dataAdapter);\n }\n\n HidePlaceholder.prototype.append = function (decorated, data) {\n data.results = this.removePlaceholder(data.results);\n\n decorated.call(this, data);\n };\n\n HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) {\n if (typeof placeholder === 'string') {\n placeholder = {\n id: '',\n text: placeholder\n };\n }\n\n return placeholder;\n };\n\n HidePlaceholder.prototype.removePlaceholder = function (_, data) {\n var modifiedData = data.slice(0);\n\n for (var d = data.length - 1; d >= 0; d--) {\n var item = data[d];\n\n if (this.placeholder.id === item.id) {\n modifiedData.splice(d, 1);\n }\n }\n\n return modifiedData;\n };\n\n return HidePlaceholder;\n});\n\nS2.define('select2/dropdown/infiniteScroll',[\n 'jquery'\n], function ($) {\n function InfiniteScroll (decorated, $element, options, dataAdapter) {\n this.lastParams = {};\n\n decorated.call(this, $element, options, dataAdapter);\n\n this.$loadingMore = this.createLoadingMore();\n this.loading = false;\n }\n\n InfiniteScroll.prototype.append = function (decorated, data) {\n this.$loadingMore.remove();\n this.loading = false;\n\n decorated.call(this, data);\n\n if (this.showLoadingMore(data)) {\n this.$results.append(this.$loadingMore);\n }\n };\n\n InfiniteScroll.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('query', function (params) {\n self.lastParams = params;\n self.loading = true;\n });\n\n container.on('query:append', function (params) {\n self.lastParams = params;\n self.loading = true;\n });\n\n this.$results.on('scroll', function () {\n var isLoadMoreVisible = $.contains(\n document.documentElement,\n self.$loadingMore[0]\n );\n\n if (self.loading || !isLoadMoreVisible) {\n return;\n }\n\n var currentOffset = self.$results.offset().top +\n self.$results.outerHeight(false);\n var loadingMoreOffset = self.$loadingMore.offset().top +\n self.$loadingMore.outerHeight(false);\n\n if (currentOffset + 50 >= loadingMoreOffset) {\n self.loadMore();\n }\n });\n };\n\n InfiniteScroll.prototype.loadMore = function () {\n this.loading = true;\n\n var params = $.extend({}, {page: 1}, this.lastParams);\n\n params.page++;\n\n this.trigger('query:append', params);\n };\n\n InfiniteScroll.prototype.showLoadingMore = function (_, data) {\n return data.pagination && data.pagination.more;\n };\n\n InfiniteScroll.prototype.createLoadingMore = function () {\n var $option = $(\n '
  • '\n );\n\n var message = this.options.get('translations').get('loadingMore');\n\n $option.html(message(this.lastParams));\n\n return $option;\n };\n\n return InfiniteScroll;\n});\n\nS2.define('select2/dropdown/attachBody',[\n 'jquery',\n '../utils'\n], function ($, Utils) {\n function AttachBody (decorated, $element, options) {\n this.$dropdownParent = options.get('dropdownParent') || $(document.body);\n\n decorated.call(this, $element, options);\n }\n\n AttachBody.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n var setupResultsEvents = false;\n\n decorated.call(this, container, $container);\n\n container.on('open', function () {\n self._showDropdown();\n self._attachPositioningHandler(container);\n\n if (!setupResultsEvents) {\n setupResultsEvents = true;\n\n container.on('results:all', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n container.on('results:append', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n }\n });\n\n container.on('close', function () {\n self._hideDropdown();\n self._detachPositioningHandler(container);\n });\n\n this.$dropdownContainer.on('mousedown', function (evt) {\n evt.stopPropagation();\n });\n };\n\n AttachBody.prototype.destroy = function (decorated) {\n decorated.call(this);\n\n this.$dropdownContainer.remove();\n };\n\n AttachBody.prototype.position = function (decorated, $dropdown, $container) {\n // Clone all of the container classes\n $dropdown.attr('class', $container.attr('class'));\n\n $dropdown.removeClass('select2');\n $dropdown.addClass('select2-container--open');\n\n $dropdown.css({\n position: 'absolute',\n top: -999999\n });\n\n this.$container = $container;\n };\n\n AttachBody.prototype.render = function (decorated) {\n var $container = $('');\n\n var $dropdown = decorated.call(this);\n $container.append($dropdown);\n\n this.$dropdownContainer = $container;\n\n return $container;\n };\n\n AttachBody.prototype._hideDropdown = function (decorated) {\n this.$dropdownContainer.detach();\n };\n\n AttachBody.prototype._attachPositioningHandler =\n function (decorated, container) {\n var self = this;\n\n var scrollEvent = 'scroll.select2.' + container.id;\n var resizeEvent = 'resize.select2.' + container.id;\n var orientationEvent = 'orientationchange.select2.' + container.id;\n\n var $watchers = this.$container.parents().filter(Utils.hasScroll);\n $watchers.each(function () {\n $(this).data('select2-scroll-position', {\n x: $(this).scrollLeft(),\n y: $(this).scrollTop()\n });\n });\n\n $watchers.on(scrollEvent, function (ev) {\n var position = $(this).data('select2-scroll-position');\n $(this).scrollTop(position.y);\n });\n\n $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent,\n function (e) {\n self._positionDropdown();\n self._resizeDropdown();\n });\n };\n\n AttachBody.prototype._detachPositioningHandler =\n function (decorated, container) {\n var scrollEvent = 'scroll.select2.' + container.id;\n var resizeEvent = 'resize.select2.' + container.id;\n var orientationEvent = 'orientationchange.select2.' + container.id;\n\n var $watchers = this.$container.parents().filter(Utils.hasScroll);\n $watchers.off(scrollEvent);\n\n $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent);\n };\n\n AttachBody.prototype._positionDropdown = function () {\n var $window = $(window);\n\n var isCurrentlyAbove = this.$dropdown.hasClass('select2-dropdown--above');\n var isCurrentlyBelow = this.$dropdown.hasClass('select2-dropdown--below');\n\n var newDirection = null;\n\n var offset = this.$container.offset();\n\n offset.bottom = offset.top + this.$container.outerHeight(false);\n\n var container = {\n height: this.$container.outerHeight(false)\n };\n\n container.top = offset.top;\n container.bottom = offset.top + container.height;\n\n var dropdown = {\n height: this.$dropdown.outerHeight(false)\n };\n\n var viewport = {\n top: $window.scrollTop(),\n bottom: $window.scrollTop() + $window.height()\n };\n\n var enoughRoomAbove = viewport.top < (offset.top - dropdown.height);\n var enoughRoomBelow = viewport.bottom > (offset.bottom + dropdown.height);\n\n var css = {\n left: offset.left,\n top: container.bottom\n };\n\n // Determine what the parent element is to use for calciulating the offset\n var $offsetParent = this.$dropdownParent;\n\n // For statically positoned elements, we need to get the element\n // that is determining the offset\n if ($offsetParent.css('position') === 'static') {\n $offsetParent = $offsetParent.offsetParent();\n }\n\n var parentOffset = $offsetParent.offset();\n\n css.top -= parentOffset.top;\n css.left -= parentOffset.left;\n\n if (!isCurrentlyAbove && !isCurrentlyBelow) {\n newDirection = 'below';\n }\n\n if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) {\n newDirection = 'above';\n } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) {\n newDirection = 'below';\n }\n\n if (newDirection == 'above' ||\n (isCurrentlyAbove && newDirection !== 'below')) {\n css.top = container.top - parentOffset.top - dropdown.height;\n }\n\n if (newDirection != null) {\n this.$dropdown\n .removeClass('select2-dropdown--below select2-dropdown--above')\n .addClass('select2-dropdown--' + newDirection);\n this.$container\n .removeClass('select2-container--below select2-container--above')\n .addClass('select2-container--' + newDirection);\n }\n\n this.$dropdownContainer.css(css);\n };\n\n AttachBody.prototype._resizeDropdown = function () {\n var css = {\n width: this.$container.outerWidth(false) + 'px'\n };\n\n if (this.options.get('dropdownAutoWidth')) {\n css.minWidth = css.width;\n css.position = 'relative';\n css.width = 'auto';\n }\n\n this.$dropdown.css(css);\n };\n\n AttachBody.prototype._showDropdown = function (decorated) {\n this.$dropdownContainer.appendTo(this.$dropdownParent);\n\n this._positionDropdown();\n this._resizeDropdown();\n };\n\n return AttachBody;\n});\n\nS2.define('select2/dropdown/minimumResultsForSearch',[\n\n], function () {\n function countResults (data) {\n var count = 0;\n\n for (var d = 0; d < data.length; d++) {\n var item = data[d];\n\n if (item.children) {\n count += countResults(item.children);\n } else {\n count++;\n }\n }\n\n return count;\n }\n\n function MinimumResultsForSearch (decorated, $element, options, dataAdapter) {\n this.minimumResultsForSearch = options.get('minimumResultsForSearch');\n\n if (this.minimumResultsForSearch < 0) {\n this.minimumResultsForSearch = Infinity;\n }\n\n decorated.call(this, $element, options, dataAdapter);\n }\n\n MinimumResultsForSearch.prototype.showSearch = function (decorated, params) {\n if (countResults(params.data.results) < this.minimumResultsForSearch) {\n return false;\n }\n\n return decorated.call(this, params);\n };\n\n return MinimumResultsForSearch;\n});\n\nS2.define('select2/dropdown/selectOnClose',[\n\n], function () {\n function SelectOnClose () { }\n\n SelectOnClose.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('close', function (params) {\n self._handleSelectOnClose(params);\n });\n };\n\n SelectOnClose.prototype._handleSelectOnClose = function (_, params) {\n if (params && params.originalSelect2Event != null) {\n var event = params.originalSelect2Event;\n\n // Don't select an item if the close event was triggered from a select or\n // unselect event\n if (event._type === 'select' || event._type === 'unselect') {\n return;\n }\n }\n\n var $highlightedResults = this.getHighlightedResults();\n\n // Only select highlighted results\n if ($highlightedResults.length < 1) {\n return;\n }\n\n var data = $highlightedResults.data('data');\n\n // Don't re-select already selected resulte\n if (\n (data.element != null && data.element.selected) ||\n (data.element == null && data.selected)\n ) {\n return;\n }\n\n this.trigger('select', {\n data: data\n });\n };\n\n return SelectOnClose;\n});\n\nS2.define('select2/dropdown/closeOnSelect',[\n\n], function () {\n function CloseOnSelect () { }\n\n CloseOnSelect.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('select', function (evt) {\n self._selectTriggered(evt);\n });\n\n container.on('unselect', function (evt) {\n self._selectTriggered(evt);\n });\n };\n\n CloseOnSelect.prototype._selectTriggered = function (_, evt) {\n var originalEvent = evt.originalEvent;\n\n // Don't close if the control key is being held\n if (originalEvent && originalEvent.ctrlKey) {\n return;\n }\n\n this.trigger('close', {\n originalEvent: originalEvent,\n originalSelect2Event: evt\n });\n };\n\n return CloseOnSelect;\n});\n\nS2.define('select2/i18n/en',[],function () {\n // English\n return {\n errorLoading: function () {\n return 'The results could not be loaded.';\n },\n inputTooLong: function (args) {\n var overChars = args.input.length - args.maximum;\n\n var message = 'Please delete ' + overChars + ' character';\n\n if (overChars != 1) {\n message += 's';\n }\n\n return message;\n },\n inputTooShort: function (args) {\n var remainingChars = args.minimum - args.input.length;\n\n var message = 'Please enter ' + remainingChars + ' or more characters';\n\n return message;\n },\n loadingMore: function () {\n return 'Loading more results…';\n },\n maximumSelected: function (args) {\n var message = 'You can only select ' + args.maximum + ' item';\n\n if (args.maximum != 1) {\n message += 's';\n }\n\n return message;\n },\n noResults: function () {\n return 'No results found';\n },\n searching: function () {\n return 'Searching…';\n }\n };\n});\n\nS2.define('select2/defaults',[\n 'jquery',\n 'require',\n\n './results',\n\n './selection/single',\n './selection/multiple',\n './selection/placeholder',\n './selection/allowClear',\n './selection/search',\n './selection/eventRelay',\n\n './utils',\n './translation',\n './diacritics',\n\n './data/select',\n './data/array',\n './data/ajax',\n './data/tags',\n './data/tokenizer',\n './data/minimumInputLength',\n './data/maximumInputLength',\n './data/maximumSelectionLength',\n\n './dropdown',\n './dropdown/search',\n './dropdown/hidePlaceholder',\n './dropdown/infiniteScroll',\n './dropdown/attachBody',\n './dropdown/minimumResultsForSearch',\n './dropdown/selectOnClose',\n './dropdown/closeOnSelect',\n\n './i18n/en'\n], function ($, require,\n\n ResultsList,\n\n SingleSelection, MultipleSelection, Placeholder, AllowClear,\n SelectionSearch, EventRelay,\n\n Utils, Translation, DIACRITICS,\n\n SelectData, ArrayData, AjaxData, Tags, Tokenizer,\n MinimumInputLength, MaximumInputLength, MaximumSelectionLength,\n\n Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll,\n AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect,\n\n EnglishTranslation) {\n function Defaults () {\n this.reset();\n }\n\n Defaults.prototype.apply = function (options) {\n options = $.extend(true, {}, this.defaults, options);\n\n if (options.dataAdapter == null) {\n if (options.ajax != null) {\n options.dataAdapter = AjaxData;\n } else if (options.data != null) {\n options.dataAdapter = ArrayData;\n } else {\n options.dataAdapter = SelectData;\n }\n\n if (options.minimumInputLength > 0) {\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n MinimumInputLength\n );\n }\n\n if (options.maximumInputLength > 0) {\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n MaximumInputLength\n );\n }\n\n if (options.maximumSelectionLength > 0) {\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n MaximumSelectionLength\n );\n }\n\n if (options.tags) {\n options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags);\n }\n\n if (options.tokenSeparators != null || options.tokenizer != null) {\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n Tokenizer\n );\n }\n\n if (options.query != null) {\n var Query = require(options.amdBase + 'compat/query');\n\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n Query\n );\n }\n\n if (options.initSelection != null) {\n var InitSelection = require(options.amdBase + 'compat/initSelection');\n\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n InitSelection\n );\n }\n }\n\n if (options.resultsAdapter == null) {\n options.resultsAdapter = ResultsList;\n\n if (options.ajax != null) {\n options.resultsAdapter = Utils.Decorate(\n options.resultsAdapter,\n InfiniteScroll\n );\n }\n\n if (options.placeholder != null) {\n options.resultsAdapter = Utils.Decorate(\n options.resultsAdapter,\n HidePlaceholder\n );\n }\n\n if (options.selectOnClose) {\n options.resultsAdapter = Utils.Decorate(\n options.resultsAdapter,\n SelectOnClose\n );\n }\n }\n\n if (options.dropdownAdapter == null) {\n if (options.multiple) {\n options.dropdownAdapter = Dropdown;\n } else {\n var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch);\n\n options.dropdownAdapter = SearchableDropdown;\n }\n\n if (options.minimumResultsForSearch !== 0) {\n options.dropdownAdapter = Utils.Decorate(\n options.dropdownAdapter,\n MinimumResultsForSearch\n );\n }\n\n if (options.closeOnSelect) {\n options.dropdownAdapter = Utils.Decorate(\n options.dropdownAdapter,\n CloseOnSelect\n );\n }\n\n if (\n options.dropdownCssClass != null ||\n options.dropdownCss != null ||\n options.adaptDropdownCssClass != null\n ) {\n var DropdownCSS = require(options.amdBase + 'compat/dropdownCss');\n\n options.dropdownAdapter = Utils.Decorate(\n options.dropdownAdapter,\n DropdownCSS\n );\n }\n\n options.dropdownAdapter = Utils.Decorate(\n options.dropdownAdapter,\n AttachBody\n );\n }\n\n if (options.selectionAdapter == null) {\n if (options.multiple) {\n options.selectionAdapter = MultipleSelection;\n } else {\n options.selectionAdapter = SingleSelection;\n }\n\n // Add the placeholder mixin if a placeholder was specified\n if (options.placeholder != null) {\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n Placeholder\n );\n }\n\n if (options.allowClear) {\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n AllowClear\n );\n }\n\n if (options.multiple) {\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n SelectionSearch\n );\n }\n\n if (\n options.containerCssClass != null ||\n options.containerCss != null ||\n options.adaptContainerCssClass != null\n ) {\n var ContainerCSS = require(options.amdBase + 'compat/containerCss');\n\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n ContainerCSS\n );\n }\n\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n EventRelay\n );\n }\n\n if (typeof options.language === 'string') {\n // Check if the language is specified with a region\n if (options.language.indexOf('-') > 0) {\n // Extract the region information if it is included\n var languageParts = options.language.split('-');\n var baseLanguage = languageParts[0];\n\n options.language = [options.language, baseLanguage];\n } else {\n options.language = [options.language];\n }\n }\n\n if ($.isArray(options.language)) {\n var languages = new Translation();\n options.language.push('en');\n\n var languageNames = options.language;\n\n for (var l = 0; l < languageNames.length; l++) {\n var name = languageNames[l];\n var language = {};\n\n try {\n // Try to load it with the original name\n language = Translation.loadPath(name);\n } catch (e) {\n try {\n // If we couldn't load it, check if it wasn't the full path\n name = this.defaults.amdLanguageBase + name;\n language = Translation.loadPath(name);\n } catch (ex) {\n // The translation could not be loaded at all. Sometimes this is\n // because of a configuration problem, other times this can be\n // because of how Select2 helps load all possible translation files.\n if (options.debug && window.console && console.warn) {\n console.warn(\n 'Select2: The language file for \"' + name + '\" could not be ' +\n 'automatically loaded. A fallback will be used instead.'\n );\n }\n\n continue;\n }\n }\n\n languages.extend(language);\n }\n\n options.translations = languages;\n } else {\n var baseTranslation = Translation.loadPath(\n this.defaults.amdLanguageBase + 'en'\n );\n var customTranslation = new Translation(options.language);\n\n customTranslation.extend(baseTranslation);\n\n options.translations = customTranslation;\n }\n\n return options;\n };\n\n Defaults.prototype.reset = function () {\n function stripDiacritics (text) {\n // Used 'uni range + named function' from http://jsperf.com/diacritics/18\n function match(a) {\n return DIACRITICS[a] || a;\n }\n\n return text.replace(/[^\\u0000-\\u007E]/g, match);\n }\n\n function matcher (params, data) {\n // Always return the object if there is nothing to compare\n if ($.trim(params.term) === '') {\n return data;\n }\n\n // Do a recursive check for options with children\n if (data.children && data.children.length > 0) {\n // Clone the data object if there are children\n // This is required as we modify the object to remove any non-matches\n var match = $.extend(true, {}, data);\n\n // Check each child of the option\n for (var c = data.children.length - 1; c >= 0; c--) {\n var child = data.children[c];\n\n var matches = matcher(params, child);\n\n // If there wasn't a match, remove the object in the array\n if (matches == null) {\n match.children.splice(c, 1);\n }\n }\n\n // If any children matched, return the new object\n if (match.children.length > 0) {\n return match;\n }\n\n // If there were no matching children, check just the plain object\n return matcher(params, match);\n }\n\n var original = stripDiacritics(data.text).toUpperCase();\n var term = stripDiacritics(params.term).toUpperCase();\n\n // Check if the text contains the term\n if (original.indexOf(term) > -1) {\n return data;\n }\n\n // If it doesn't contain the term, don't return anything\n return null;\n }\n\n this.defaults = {\n amdBase: './',\n amdLanguageBase: './i18n/',\n closeOnSelect: true,\n debug: false,\n dropdownAutoWidth: false,\n escapeMarkup: Utils.escapeMarkup,\n language: EnglishTranslation,\n matcher: matcher,\n minimumInputLength: 0,\n maximumInputLength: 0,\n maximumSelectionLength: 0,\n minimumResultsForSearch: 0,\n selectOnClose: false,\n sorter: function (data) {\n return data;\n },\n templateResult: function (result) {\n return result.text;\n },\n templateSelection: function (selection) {\n return selection.text;\n },\n theme: 'default',\n width: 'resolve'\n };\n };\n\n Defaults.prototype.set = function (key, value) {\n var camelKey = $.camelCase(key);\n\n var data = {};\n data[camelKey] = value;\n\n var convertedData = Utils._convertData(data);\n\n $.extend(this.defaults, convertedData);\n };\n\n var defaults = new Defaults();\n\n return defaults;\n});\n\nS2.define('select2/options',[\n 'require',\n 'jquery',\n './defaults',\n './utils'\n], function (require, $, Defaults, Utils) {\n function Options (options, $element) {\n this.options = options;\n\n if ($element != null) {\n this.fromElement($element);\n }\n\n this.options = Defaults.apply(this.options);\n\n if ($element && $element.is('input')) {\n var InputCompat = require(this.get('amdBase') + 'compat/inputData');\n\n this.options.dataAdapter = Utils.Decorate(\n this.options.dataAdapter,\n InputCompat\n );\n }\n }\n\n Options.prototype.fromElement = function ($e) {\n var excludedData = ['select2'];\n\n if (this.options.multiple == null) {\n this.options.multiple = $e.prop('multiple');\n }\n\n if (this.options.disabled == null) {\n this.options.disabled = $e.prop('disabled');\n }\n\n if (this.options.language == null) {\n if ($e.prop('lang')) {\n this.options.language = $e.prop('lang').toLowerCase();\n } else if ($e.closest('[lang]').prop('lang')) {\n this.options.language = $e.closest('[lang]').prop('lang');\n }\n }\n\n if (this.options.dir == null) {\n if ($e.prop('dir')) {\n this.options.dir = $e.prop('dir');\n } else if ($e.closest('[dir]').prop('dir')) {\n this.options.dir = $e.closest('[dir]').prop('dir');\n } else {\n this.options.dir = 'ltr';\n }\n }\n\n $e.prop('disabled', this.options.disabled);\n $e.prop('multiple', this.options.multiple);\n\n if ($e.data('select2Tags')) {\n if (this.options.debug && window.console && console.warn) {\n console.warn(\n 'Select2: The `data-select2-tags` attribute has been changed to ' +\n 'use the `data-data` and `data-tags=\"true\"` attributes and will be ' +\n 'removed in future versions of Select2.'\n );\n }\n\n $e.data('data', $e.data('select2Tags'));\n $e.data('tags', true);\n }\n\n if ($e.data('ajaxUrl')) {\n if (this.options.debug && window.console && console.warn) {\n console.warn(\n 'Select2: The `data-ajax-url` attribute has been changed to ' +\n '`data-ajax--url` and support for the old attribute will be removed' +\n ' in future versions of Select2.'\n );\n }\n\n $e.attr('ajax--url', $e.data('ajaxUrl'));\n $e.data('ajax--url', $e.data('ajaxUrl'));\n }\n\n var dataset = {};\n\n // Prefer the element's `dataset` attribute if it exists\n // jQuery 1.x does not correctly handle data attributes with multiple dashes\n if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) {\n dataset = $.extend(true, {}, $e[0].dataset, $e.data());\n } else {\n dataset = $e.data();\n }\n\n var data = $.extend(true, {}, dataset);\n\n data = Utils._convertData(data);\n\n for (var key in data) {\n if ($.inArray(key, excludedData) > -1) {\n continue;\n }\n\n if ($.isPlainObject(this.options[key])) {\n $.extend(this.options[key], data[key]);\n } else {\n this.options[key] = data[key];\n }\n }\n\n return this;\n };\n\n Options.prototype.get = function (key) {\n return this.options[key];\n };\n\n Options.prototype.set = function (key, val) {\n this.options[key] = val;\n };\n\n return Options;\n});\n\nS2.define('select2/core',[\n 'jquery',\n './options',\n './utils',\n './keys'\n], function ($, Options, Utils, KEYS) {\n var Select2 = function ($element, options) {\n if ($element.data('select2') != null) {\n $element.data('select2').destroy();\n }\n\n this.$element = $element;\n\n this.id = this._generateId($element);\n\n options = options || {};\n\n this.options = new Options(options, $element);\n\n Select2.__super__.constructor.call(this);\n\n // Set up the tabindex\n\n var tabindex = $element.attr('tabindex') || 0;\n $element.data('old-tabindex', tabindex);\n $element.attr('tabindex', '-1');\n\n // Set up containers and adapters\n\n var DataAdapter = this.options.get('dataAdapter');\n this.dataAdapter = new DataAdapter($element, this.options);\n\n var $container = this.render();\n\n this._placeContainer($container);\n\n var SelectionAdapter = this.options.get('selectionAdapter');\n this.selection = new SelectionAdapter($element, this.options);\n this.$selection = this.selection.render();\n\n this.selection.position(this.$selection, $container);\n\n var DropdownAdapter = this.options.get('dropdownAdapter');\n this.dropdown = new DropdownAdapter($element, this.options);\n this.$dropdown = this.dropdown.render();\n\n this.dropdown.position(this.$dropdown, $container);\n\n var ResultsAdapter = this.options.get('resultsAdapter');\n this.results = new ResultsAdapter($element, this.options, this.dataAdapter);\n this.$results = this.results.render();\n\n this.results.position(this.$results, this.$dropdown);\n\n // Bind events\n\n var self = this;\n\n // Bind the container to all of the adapters\n this._bindAdapters();\n\n // Register any DOM event handlers\n this._registerDomEvents();\n\n // Register any internal event handlers\n this._registerDataEvents();\n this._registerSelectionEvents();\n this._registerDropdownEvents();\n this._registerResultsEvents();\n this._registerEvents();\n\n // Set the initial state\n this.dataAdapter.current(function (initialData) {\n self.trigger('selection:update', {\n data: initialData\n });\n });\n\n // Hide the original select\n $element.addClass('select2-hidden-accessible');\n $element.attr('aria-hidden', 'true');\n\n // Synchronize any monitored attributes\n this._syncAttributes();\n\n $element.data('select2', this);\n };\n\n Utils.Extend(Select2, Utils.Observable);\n\n Select2.prototype._generateId = function ($element) {\n var id = '';\n\n if ($element.attr('id') != null) {\n id = $element.attr('id');\n } else if ($element.attr('name') != null) {\n id = $element.attr('name') + '-' + Utils.generateChars(2);\n } else {\n id = Utils.generateChars(4);\n }\n\n id = id.replace(/(:|\\.|\\[|\\]|,)/g, '');\n id = 'select2-' + id;\n\n return id;\n };\n\n Select2.prototype._placeContainer = function ($container) {\n $container.insertAfter(this.$element);\n\n var width = this._resolveWidth(this.$element, this.options.get('width'));\n\n if (width != null) {\n $container.css('width', width);\n }\n };\n\n Select2.prototype._resolveWidth = function ($element, method) {\n var WIDTH = /^width:(([-+]?([0-9]*\\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;\n\n if (method == 'resolve') {\n var styleWidth = this._resolveWidth($element, 'style');\n\n if (styleWidth != null) {\n return styleWidth;\n }\n\n return this._resolveWidth($element, 'element');\n }\n\n if (method == 'element') {\n var elementWidth = $element.outerWidth(false);\n\n if (elementWidth <= 0) {\n return 'auto';\n }\n\n return elementWidth + 'px';\n }\n\n if (method == 'style') {\n var style = $element.attr('style');\n\n if (typeof(style) !== 'string') {\n return null;\n }\n\n var attrs = style.split(';');\n\n for (var i = 0, l = attrs.length; i < l; i = i + 1) {\n var attr = attrs[i].replace(/\\s/g, '');\n var matches = attr.match(WIDTH);\n\n if (matches !== null && matches.length >= 1) {\n return matches[1];\n }\n }\n\n return null;\n }\n\n return method;\n };\n\n Select2.prototype._bindAdapters = function () {\n this.dataAdapter.bind(this, this.$container);\n this.selection.bind(this, this.$container);\n\n this.dropdown.bind(this, this.$container);\n this.results.bind(this, this.$container);\n };\n\n Select2.prototype._registerDomEvents = function () {\n var self = this;\n\n this.$element.on('change.select2', function () {\n self.dataAdapter.current(function (data) {\n self.trigger('selection:update', {\n data: data\n });\n });\n });\n\n this.$element.on('focus.select2', function (evt) {\n self.trigger('focus', evt);\n });\n\n this._syncA = Utils.bind(this._syncAttributes, this);\n this._syncS = Utils.bind(this._syncSubtree, this);\n\n if (this.$element[0].attachEvent) {\n this.$element[0].attachEvent('onpropertychange', this._syncA);\n }\n\n var observer = window.MutationObserver ||\n window.WebKitMutationObserver ||\n window.MozMutationObserver\n ;\n\n if (observer != null) {\n this._observer = new observer(function (mutations) {\n $.each(mutations, self._syncA);\n $.each(mutations, self._syncS);\n });\n this._observer.observe(this.$element[0], {\n attributes: true,\n childList: true,\n subtree: false\n });\n } else if (this.$element[0].addEventListener) {\n this.$element[0].addEventListener(\n 'DOMAttrModified',\n self._syncA,\n false\n );\n this.$element[0].addEventListener(\n 'DOMNodeInserted',\n self._syncS,\n false\n );\n this.$element[0].addEventListener(\n 'DOMNodeRemoved',\n self._syncS,\n false\n );\n }\n };\n\n Select2.prototype._registerDataEvents = function () {\n var self = this;\n\n this.dataAdapter.on('*', function (name, params) {\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerSelectionEvents = function () {\n var self = this;\n var nonRelayEvents = ['toggle', 'focus'];\n\n this.selection.on('toggle', function () {\n self.toggleDropdown();\n });\n\n this.selection.on('focus', function (params) {\n self.focus(params);\n });\n\n this.selection.on('*', function (name, params) {\n if ($.inArray(name, nonRelayEvents) !== -1) {\n return;\n }\n\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerDropdownEvents = function () {\n var self = this;\n\n this.dropdown.on('*', function (name, params) {\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerResultsEvents = function () {\n var self = this;\n\n this.results.on('*', function (name, params) {\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerEvents = function () {\n var self = this;\n\n this.on('open', function () {\n self.$container.addClass('select2-container--open');\n });\n\n this.on('close', function () {\n self.$container.removeClass('select2-container--open');\n });\n\n this.on('enable', function () {\n self.$container.removeClass('select2-container--disabled');\n });\n\n this.on('disable', function () {\n self.$container.addClass('select2-container--disabled');\n });\n\n this.on('blur', function () {\n self.$container.removeClass('select2-container--focus');\n });\n\n this.on('query', function (params) {\n if (!self.isOpen()) {\n self.trigger('open', {});\n }\n\n this.dataAdapter.query(params, function (data) {\n self.trigger('results:all', {\n data: data,\n query: params\n });\n });\n });\n\n this.on('query:append', function (params) {\n this.dataAdapter.query(params, function (data) {\n self.trigger('results:append', {\n data: data,\n query: params\n });\n });\n });\n\n this.on('keypress', function (evt) {\n var key = evt.which;\n\n if (self.isOpen()) {\n if (key === KEYS.ESC || key === KEYS.TAB ||\n (key === KEYS.UP && evt.altKey)) {\n self.close();\n\n evt.preventDefault();\n } else if (key === KEYS.ENTER) {\n self.trigger('results:select', {});\n\n evt.preventDefault();\n } else if ((key === KEYS.SPACE && evt.ctrlKey)) {\n self.trigger('results:toggle', {});\n\n evt.preventDefault();\n } else if (key === KEYS.UP) {\n self.trigger('results:previous', {});\n\n evt.preventDefault();\n } else if (key === KEYS.DOWN) {\n self.trigger('results:next', {});\n\n evt.preventDefault();\n }\n } else {\n if (key === KEYS.ENTER || key === KEYS.SPACE ||\n (key === KEYS.DOWN && evt.altKey)) {\n self.open();\n\n evt.preventDefault();\n }\n }\n });\n };\n\n Select2.prototype._syncAttributes = function () {\n this.options.set('disabled', this.$element.prop('disabled'));\n\n if (this.options.get('disabled')) {\n if (this.isOpen()) {\n this.close();\n }\n\n this.trigger('disable', {});\n } else {\n this.trigger('enable', {});\n }\n };\n\n Select2.prototype._syncSubtree = function (evt, mutations) {\n var changed = false;\n var self = this;\n\n // Ignore any mutation events raised for elements that aren't options or\n // optgroups. This handles the case when the select element is destroyed\n if (\n evt && evt.target && (\n evt.target.nodeName !== 'OPTION' && evt.target.nodeName !== 'OPTGROUP'\n )\n ) {\n return;\n }\n\n if (!mutations) {\n // If mutation events aren't supported, then we can only assume that the\n // change affected the selections\n changed = true;\n } else if (mutations.addedNodes && mutations.addedNodes.length > 0) {\n for (var n = 0; n < mutations.addedNodes.length; n++) {\n var node = mutations.addedNodes[n];\n\n if (node.selected) {\n changed = true;\n }\n }\n } else if (mutations.removedNodes && mutations.removedNodes.length > 0) {\n changed = true;\n }\n\n // Only re-pull the data if we think there is a change\n if (changed) {\n this.dataAdapter.current(function (currentData) {\n self.trigger('selection:update', {\n data: currentData\n });\n });\n }\n };\n\n /**\n * Override the trigger method to automatically trigger pre-events when\n * there are events that can be prevented.\n */\n Select2.prototype.trigger = function (name, args) {\n var actualTrigger = Select2.__super__.trigger;\n var preTriggerMap = {\n 'open': 'opening',\n 'close': 'closing',\n 'select': 'selecting',\n 'unselect': 'unselecting'\n };\n\n if (args === undefined) {\n args = {};\n }\n\n if (name in preTriggerMap) {\n var preTriggerName = preTriggerMap[name];\n var preTriggerArgs = {\n prevented: false,\n name: name,\n args: args\n };\n\n actualTrigger.call(this, preTriggerName, preTriggerArgs);\n\n if (preTriggerArgs.prevented) {\n args.prevented = true;\n\n return;\n }\n }\n\n actualTrigger.call(this, name, args);\n };\n\n Select2.prototype.toggleDropdown = function () {\n if (this.options.get('disabled')) {\n return;\n }\n\n if (this.isOpen()) {\n this.close();\n } else {\n this.open();\n }\n };\n\n Select2.prototype.open = function () {\n if (this.isOpen()) {\n return;\n }\n\n this.trigger('query', {});\n };\n\n Select2.prototype.close = function () {\n if (!this.isOpen()) {\n return;\n }\n\n this.trigger('close', {});\n };\n\n Select2.prototype.isOpen = function () {\n return this.$container.hasClass('select2-container--open');\n };\n\n Select2.prototype.hasFocus = function () {\n return this.$container.hasClass('select2-container--focus');\n };\n\n Select2.prototype.focus = function (data) {\n // No need to re-trigger focus events if we are already focused\n if (this.hasFocus()) {\n return;\n }\n\n this.$container.addClass('select2-container--focus');\n this.trigger('focus', {});\n };\n\n Select2.prototype.enable = function (args) {\n if (this.options.get('debug') && window.console && console.warn) {\n console.warn(\n 'Select2: The `select2(\"enable\")` method has been deprecated and will' +\n ' be removed in later Select2 versions. Use $element.prop(\"disabled\")' +\n ' instead.'\n );\n }\n\n if (args == null || args.length === 0) {\n args = [true];\n }\n\n var disabled = !args[0];\n\n this.$element.prop('disabled', disabled);\n };\n\n Select2.prototype.data = function () {\n if (this.options.get('debug') &&\n arguments.length > 0 && window.console && console.warn) {\n console.warn(\n 'Select2: Data can no longer be set using `select2(\"data\")`. You ' +\n 'should consider setting the value instead using `$element.val()`.'\n );\n }\n\n var data = [];\n\n this.dataAdapter.current(function (currentData) {\n data = currentData;\n });\n\n return data;\n };\n\n Select2.prototype.val = function (args) {\n if (this.options.get('debug') && window.console && console.warn) {\n console.warn(\n 'Select2: The `select2(\"val\")` method has been deprecated and will be' +\n ' removed in later Select2 versions. Use $element.val() instead.'\n );\n }\n\n if (args == null || args.length === 0) {\n return this.$element.val();\n }\n\n var newVal = args[0];\n\n if ($.isArray(newVal)) {\n newVal = $.map(newVal, function (obj) {\n return obj.toString();\n });\n }\n\n this.$element.val(newVal).trigger('change');\n };\n\n Select2.prototype.destroy = function () {\n this.$container.remove();\n\n if (this.$element[0].detachEvent) {\n this.$element[0].detachEvent('onpropertychange', this._syncA);\n }\n\n if (this._observer != null) {\n this._observer.disconnect();\n this._observer = null;\n } else if (this.$element[0].removeEventListener) {\n this.$element[0]\n .removeEventListener('DOMAttrModified', this._syncA, false);\n this.$element[0]\n .removeEventListener('DOMNodeInserted', this._syncS, false);\n this.$element[0]\n .removeEventListener('DOMNodeRemoved', this._syncS, false);\n }\n\n this._syncA = null;\n this._syncS = null;\n\n this.$element.off('.select2');\n this.$element.attr('tabindex', this.$element.data('old-tabindex'));\n\n this.$element.removeClass('select2-hidden-accessible');\n this.$element.attr('aria-hidden', 'false');\n this.$element.removeData('select2');\n\n this.dataAdapter.destroy();\n this.selection.destroy();\n this.dropdown.destroy();\n this.results.destroy();\n\n this.dataAdapter = null;\n this.selection = null;\n this.dropdown = null;\n this.results = null;\n };\n\n Select2.prototype.render = function () {\n var $container = $(\n '' +\n '' +\n '' +\n ''\n );\n\n $container.attr('dir', this.options.get('dir'));\n\n this.$container = $container;\n\n this.$container.addClass('select2-container--' + this.options.get('theme'));\n\n $container.data('element', this.$element);\n\n return $container;\n };\n\n return Select2;\n});\n\nS2.define('jquery-mousewheel',[\n 'jquery'\n], function ($) {\n // Used to shim jQuery.mousewheel for non-full builds.\n return $;\n});\n\nS2.define('jquery.select2',[\n 'jquery',\n 'jquery-mousewheel',\n\n './select2/core',\n './select2/defaults'\n], function ($, _, Select2, Defaults) {\n if ($.fn.select2 == null) {\n // All methods that should return the element\n var thisMethods = ['open', 'close', 'destroy'];\n\n $.fn.select2 = function (options) {\n options = options || {};\n\n if (typeof options === 'object') {\n this.each(function () {\n var instanceOptions = $.extend(true, {}, options);\n\n var instance = new Select2($(this), instanceOptions);\n });\n\n return this;\n } else if (typeof options === 'string') {\n var ret;\n var args = Array.prototype.slice.call(arguments, 1);\n\n this.each(function () {\n var instance = $(this).data('select2');\n\n if (instance == null && window.console && console.error) {\n console.error(\n 'The select2(\\'' + options + '\\') method was called on an ' +\n 'element that is not using Select2.'\n );\n }\n\n ret = instance[options].apply(instance, args);\n });\n\n // Check if we should be returning `this`\n if ($.inArray(options, thisMethods) > -1) {\n return this;\n }\n\n return ret;\n } else {\n throw new Error('Invalid arguments for Select2: ' + options);\n }\n };\n }\n\n if ($.fn.select2.defaults == null) {\n $.fn.select2.defaults = Defaults;\n }\n\n return Select2;\n});\n\n // Return the AMD loader configuration so it can be used outside of this file\n return {\n define: S2.define,\n require: S2.require\n };\n}());\n\n // Autoload the jQuery bindings\n // We know that all of the modules exist above this, so we're safe\n var select2 = S2.require('jquery.select2');\n\n // Hold the AMD module references on the jQuery function that was just loaded\n // This allows Select2 to use the internal loader outside of this file, such\n // as in the language files.\n jQuery.fn.select2.amd = S2;\n\n // Return the Select2 instance for anyone who is importing it.\n return select2;\n}));\n"],"sourceRoot":""}