{"version":3,"sources":["webpack:///./node_modules/select2/dist/js/select2.js"],"names":["jQuery","S2","fn","select2","amd","requirejs","require","define","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","length","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","n","pr","p","exports","e","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","__cache","GetUniqueElementId","element","select2Id","getAttribute","setAttribute","StoreData","GetData","RemoveData","removeAttribute","copyNonInternalCssClasses","dest","src","destinationClasses","trim","filter","clazz","sourceClasses","replacements","Results","$element","options","dataAdapter","render","$results","get","attr","clear","empty","displayMessage","hideLoading","$message","message","append","className","hideMessages","find","remove","$options","results","sort","item","$option","option","children","position","$dropdown","sorter","highlightFirstItem","$selected","first","ensureHighlightVisible","setClasses","self","current","selected","selectedIds","s","each","classList","add","showLoading","loading","disabled","text","loadingMore","$loading","prepend","document","createElement","attrs","matches","window","Element","msMatchesSelector","webkitMatchesSelector","_resultId","title","role","val","label","template","$children","c","child","$child","$childrenContainer","container","$container","isOpen","removeAttr","$highlighted","getHighlightedResults","hasClass","currentIndex","nextIndex","$next","eq","currentOffset","offset","top","nextTop","nextOffset","scrollTop","outerHeight","nextBottom","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","_detachCloseHandler","activeElement","contains","body","$select","target","closest","off","isEnabled","isDisabled","SingleSelection","html","$rendered","selectionContainer","selection","formatted","MultipleSelection","parent","$selections","selectionIdPrefix","selectionId","removeItem","$remove","Placeholder","decorated","placeholder","normalizePlaceholder","_","createPlaceholder","$placeholder","placeholderTitle","singlePlaceholder","AllowClear","_handleClear","_handleKeyboardClear","$clear","previousVal","unselectData","prevented","removeAll","Search","searchLabel","$search","$searchContainer","_transferTabIndex","resizeSearch","_keyUpPrevented","isDefaultPrevented","$previousChoice","last","searchRemoveChoice","msie","documentMode","disableInputEvents","type","handleSearch","searchHadFocus","input","term","css","width","SelectionCSS","selectionCssClass","addClass","EventRelay","relayEvents","preventableEvents","Event","Translation","dict","all","extend","translation","_cache","loadPath","path","translations","BaseAdapter","query","generateResultId","SelectAdapter","querySelectorAll","selectedElement","select","tagName","currentData","unselect","addOptions","textContent","innerText","normalizedData","_normalizeItem","matcher","ArrayAdapter","_dataToConvert","convertToOptions","elm","$existing","existingIds","onlyItem","$existingOption","existingData","newData","$newOption","replaceWith","AjaxAdapter","ajaxOptions","_applyDefaults","processResults","defaults","q","transport","success","failure","$request","ajax","then","fail","_request","abort","request","isArray","status","url","delay","_queryTimeout","clearTimeout","Tags","tags","createTag","insertTag","t","tag","_removeOldTags","page","wrapper","checkChildren","toUpperCase","Tokenizer","tokenizer","dropdown","tokenData","separators","termChar","substr","MinimumInputLength","$e","minimumInputLength","minimum","MaximumInputLength","maximumInputLength","maximum","MaximumSelectionLength","maximumSelectionLength","_checkIfMaximumSelected","successCallback","count","Dropdown","showSearch","HidePlaceholder","removePlaceholder","modifiedData","InfiniteScroll","lastParams","$loadingMore","createLoadingMore","showLoadingMore","loadMoreIfNeeded","isLoadMoreVisible","documentElement","loadMore","pagination","more","AttachBody","$dropdownParent","_showDropdown","_attachPositioningHandler","_bindContainerResultHandlers","_hideDropdown","_detachPositioningHandler","$dropdownContainer","detach","_containerResultsHandlersBound","_positionDropdown","_resizeDropdown","scrollEvent","resizeEvent","orientationEvent","$watchers","parents","x","scrollLeft","y","ev","$window","isCurrentlyAbove","isCurrentlyBelow","newDirection","viewport","enoughRoomAbove","enoughRoomBelow","left","$offsetParent","offsetParent","parentOffset","isConnected","outerWidth","minWidth","appendTo","MinimumResultsForSearch","minimumResultsForSearch","Infinity","countResults","SelectOnClose","_handleSelectOnClose","originalSelect2Event","$highlightedResults","CloseOnSelect","_selectTriggered","ctrlKey","metaKey","DropdownCSS","dropdownCssClass","TagsSearchHighlight","$firstOption","firstElement","errorLoading","inputTooLong","overChars","inputTooShort","maximumSelected","noResults","searching","removeAllItems","search","ResultsList","SelectionSearch","DIACRITICS","SelectData","ArrayData","AjaxData","DropdownSearch","EnglishTranslation","Defaults","reset","tokenSeparators","resultsAdapter","selectOnClose","dropdownAdapter","multiple","SearchableDropdown","closeOnSelect","selectionAdapter","allowClear","language","_resolveLanguage","uniqueLanguages","l","_processTranslations","debug","stripDiacritics","a","amdLanguageBase","autocomplete","dropdownAutoWidth","original","scrollAfterSelect","templateResult","templateSelection","theme","applyFromElement","optionLanguage","defaultLanguage","elementLanguage","parentLanguage","languages","isEmptyObject","isPlainObject","resolvedLanguages","baseLanguage","languageData","ex","warn","set","camelCase","convertedData","Options","fromElement","excludedData","dir","dataset","upperCaseLetter","letter","attributes","attributeName","dataName","dataValue","jquery","Select2","_generateId","tabindex","DataAdapter","_placeContainer","SelectionAdapter","DropdownAdapter","ResultsAdapter","_bindAdapters","_registerDomEvents","_registerDataEvents","_registerSelectionEvents","_registerDropdownEvents","_registerResultsEvents","_registerEvents","initialData","_syncAttributes","insertAfter","_resolveWidth","method","WIDTH","styleWidth","elementWidth","getComputedStyle","_syncA","_syncS","_syncSubtree","_observer","MutationObserver","mutations","observe","childList","subtree","nonRelayEvents","toggleDropdown","focus","altKey","close","open","_isChangeMutation","addedNodes","removedNodes","some","mutation","changed","actualTrigger","preTriggerMap","preTriggerName","preTriggerArgs","hasFocus","enable","newVal","disconnect","removeData","thisMethods","instanceOptions","instance"],"mappings":"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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,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,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,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,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","file":"scripts/35.fb71c.chunk.js","sourcesContent":["/*!\n * Select2 4.1.0-rc.0\n * https://select2.github.io\n *\n * Released under the MIT license\n * https://github.com/select2/select2/blob/master/LICENSE.md\n */\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 } 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 }\n var S2;\n (function () {\n if (!S2 || !S2.requirejs) {\n if (!S2) {\n S2 = {};\n } else {\n require = S2;\n }\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\n var requirejs, require, define;\n (function (undef) {\n var main,\n req,\n makeMap,\n handlers,\n defined = {},\n waiting = {},\n config = {},\n defining = {},\n hasOwn = Object.prototype.hasOwnProperty,\n aps = [].slice,\n jsSuffixRegExp = /\\.js$/;\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,\n nameSegment,\n mapValue,\n foundMap,\n lastIndex,\n foundI,\n foundStarMap,\n starI,\n i,\n j,\n part,\n 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 for (i = nameParts.length; i > 0; i -= 1) {\n nameSegment = nameParts.slice(0, i).join(\"/\");\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 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 if (!foundMap && foundStarMap) {\n foundMap = foundStarMap;\n foundI = starI;\n }\n if (foundMap) {\n nameParts.splice(0, foundI, foundMap);\n name = nameParts.join('/');\n }\n }\n return name;\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 function makeNormalize(relName) {\n return function (name) {\n return normalize(name, relName);\n };\n }\n function makeLoad(depName) {\n return function (value) {\n defined[depName] = value;\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 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 name = parts[1];\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,\n //fullName\n n: name,\n pr: prefix,\n p: plugin\n };\n };\n function makeConfig(name) {\n return function () {\n return config && config.config && config.config[name] || {};\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 main = function (name, deps, callback, relName) {\n var cjsModule,\n depName,\n ret,\n map,\n i,\n 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) || hasProp(waiting, depName) || 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 ret = callback ? callback.apply(defined[name], args) : undefined;\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 && 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 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 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 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 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 if (!hasProp(defined, name) && !hasProp(waiting, name)) {\n waiting[name] = [name, deps, callback];\n }\n };\n define.amd = {\n jQuery: true\n };\n })();\n S2.requirejs = requirejs;\n S2.require = require;\n S2.define = define;\n }\n })();\n S2.define(\"almond\", function () {});\n\n /* global jQuery:false, $:false */\n S2.define('jquery', [], function () {\n var _$ = jQuery || $;\n if (_$ == null && console && console.error) {\n console.error('Select2: An instance of jQuery or a jQuery-compatible library was not ' + 'found. Make sure that you are including jQuery before Select2 on your ' + 'web page.');\n }\n return _$;\n });\n S2.define('select2/utils', ['jquery'], function ($) {\n var Utils = {};\n Utils.Extend = function (ChildClass, SuperClass) {\n var __hasProp = {}.hasOwnProperty;\n function BaseConstructor() {\n this.constructor = ChildClass;\n }\n for (var key in SuperClass) {\n if (__hasProp.call(SuperClass, key)) {\n ChildClass[key] = SuperClass[key];\n }\n }\n BaseConstructor.prototype = SuperClass.prototype;\n ChildClass.prototype = new BaseConstructor();\n ChildClass.__super__ = SuperClass.prototype;\n return ChildClass;\n };\n function getMethods(theClass) {\n var proto = theClass.prototype;\n var methods = [];\n for (var methodName in proto) {\n var m = proto[methodName];\n if (typeof m !== 'function') {\n continue;\n }\n if (methodName === 'constructor') {\n continue;\n }\n methods.push(methodName);\n }\n return methods;\n }\n Utils.Decorate = function (SuperClass, DecoratorClass) {\n var decoratedMethods = getMethods(DecoratorClass);\n var superMethods = getMethods(SuperClass);\n function DecoratedClass() {\n var unshift = Array.prototype.unshift;\n var argCount = DecoratorClass.prototype.constructor.length;\n var calledConstructor = SuperClass.prototype.constructor;\n if (argCount > 0) {\n unshift.call(arguments, SuperClass.prototype.constructor);\n calledConstructor = DecoratorClass.prototype.constructor;\n }\n calledConstructor.apply(this, arguments);\n }\n DecoratorClass.displayName = SuperClass.displayName;\n function ctr() {\n this.constructor = DecoratedClass;\n }\n DecoratedClass.prototype = new ctr();\n for (var m = 0; m < superMethods.length; m++) {\n var superMethod = superMethods[m];\n DecoratedClass.prototype[superMethod] = SuperClass.prototype[superMethod];\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 if (methodName in DecoratedClass.prototype) {\n originalMethod = DecoratedClass.prototype[methodName];\n }\n var decoratedMethod = DecoratorClass.prototype[methodName];\n return function () {\n var unshift = Array.prototype.unshift;\n unshift.call(arguments, originalMethod);\n return decoratedMethod.apply(this, arguments);\n };\n };\n for (var d = 0; d < decoratedMethods.length; d++) {\n var decoratedMethod = decoratedMethods[d];\n DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod);\n }\n return DecoratedClass;\n };\n var Observable = function () {\n this.listeners = {};\n };\n Observable.prototype.on = function (event, callback) {\n this.listeners = this.listeners || {};\n if (event in this.listeners) {\n this.listeners[event].push(callback);\n } else {\n this.listeners[event] = [callback];\n }\n };\n Observable.prototype.trigger = function (event) {\n var slice = Array.prototype.slice;\n var params = slice.call(arguments, 1);\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 if (event in this.listeners) {\n this.invoke(this.listeners[event], slice.call(arguments, 1));\n }\n if ('*' in this.listeners) {\n this.invoke(this.listeners['*'], arguments);\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 Utils.Observable = Observable;\n Utils.generateChars = function (length) {\n var chars = '';\n for (var i = 0; i < length; i++) {\n var randomChar = Math.floor(Math.random() * 36);\n chars += randomChar.toString(36);\n }\n return chars;\n };\n Utils.bind = function (func, context) {\n return function () {\n func.apply(context, arguments);\n };\n };\n Utils._convertData = function (data) {\n for (var originalKey in data) {\n var keys = originalKey.split('-');\n var dataLevel = data;\n if (keys.length === 1) {\n continue;\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 if (!(key in dataLevel)) {\n dataLevel[key] = {};\n }\n if (k == keys.length - 1) {\n dataLevel[key] = data[originalKey];\n }\n dataLevel = dataLevel[key];\n }\n delete data[originalKey];\n }\n return data;\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 && (overflowY === 'hidden' || overflowY === 'visible')) {\n return false;\n }\n if (overflowX === 'scroll' || overflowY === 'scroll') {\n return true;\n }\n return $el.innerHeight() < el.scrollHeight || $el.innerWidth() < el.scrollWidth;\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 return String(markup).replace(/[&<>\"'\\/\\\\]/g, function (match) {\n return replaceMap[match];\n });\n };\n\n // Cache objects in Utils.__cache instead of $.data (see #4346)\n Utils.__cache = {};\n var id = 0;\n Utils.GetUniqueElementId = function (element) {\n // Get a unique element Id. If element has no id,\n // creates a new unique number, stores it in the id\n // attribute and returns the new id with a prefix.\n // If an id already exists, it simply returns it with a prefix.\n\n var select2Id = element.getAttribute('data-select2-id');\n if (select2Id != null) {\n return select2Id;\n }\n\n // If element has id, use it.\n if (element.id) {\n select2Id = 'select2-data-' + element.id;\n } else {\n select2Id = 'select2-data-' + (++id).toString() + '-' + Utils.generateChars(4);\n }\n element.setAttribute('data-select2-id', select2Id);\n return select2Id;\n };\n Utils.StoreData = function (element, name, value) {\n // Stores an item in the cache for a specified element.\n // name is the cache key.\n var id = Utils.GetUniqueElementId(element);\n if (!Utils.__cache[id]) {\n Utils.__cache[id] = {};\n }\n Utils.__cache[id][name] = value;\n };\n Utils.GetData = function (element, name) {\n // Retrieves a value from the cache by its key (name)\n // name is optional. If no name specified, return\n // all cache items for the specified element.\n // and for a specified element.\n var id = Utils.GetUniqueElementId(element);\n if (name) {\n if (Utils.__cache[id]) {\n if (Utils.__cache[id][name] != null) {\n return Utils.__cache[id][name];\n }\n return $(element).data(name); // Fallback to HTML5 data attribs.\n }\n\n return $(element).data(name); // Fallback to HTML5 data attribs.\n } else {\n return Utils.__cache[id];\n }\n };\n Utils.RemoveData = function (element) {\n // Removes all cached items for a specified element.\n var id = Utils.GetUniqueElementId(element);\n if (Utils.__cache[id] != null) {\n delete Utils.__cache[id];\n }\n element.removeAttribute('data-select2-id');\n };\n Utils.copyNonInternalCssClasses = function (dest, src) {\n var classes;\n var destinationClasses = dest.getAttribute('class').trim().split(/\\s+/);\n destinationClasses = destinationClasses.filter(function (clazz) {\n // Save all Select2 classes\n return clazz.indexOf('select2-') === 0;\n });\n var sourceClasses = src.getAttribute('class').trim().split(/\\s+/);\n sourceClasses = sourceClasses.filter(function (clazz) {\n // Only copy non-Select2 classes\n return clazz.indexOf('select2-') !== 0;\n });\n var replacements = destinationClasses.concat(sourceClasses);\n dest.setAttribute('class', replacements.join(' '));\n };\n return Utils;\n });\n S2.define('select2/results', ['jquery', './utils'], function ($, Utils) {\n function Results($element, options, dataAdapter) {\n this.$element = $element;\n this.data = dataAdapter;\n this.options = options;\n Results.__super__.constructor.call(this);\n }\n Utils.Extend(Results, Utils.Observable);\n Results.prototype.render = function () {\n var $results = $('');\n if (this.options.get('multiple')) {\n $results.attr('aria-multiselectable', 'true');\n }\n this.$results = $results;\n return $results;\n };\n Results.prototype.clear = function () {\n this.$results.empty();\n };\n Results.prototype.displayMessage = function (params) {\n var escapeMarkup = this.options.get('escapeMarkup');\n this.clear();\n this.hideLoading();\n var $message = $('
  • ');\n var message = this.options.get('translations').get(params.message);\n $message.append(escapeMarkup(message(params.args)));\n $message[0].className += ' select2-results__message';\n this.$results.append($message);\n };\n Results.prototype.hideMessages = function () {\n this.$results.find('.select2-results__message').remove();\n };\n Results.prototype.append = function (data) {\n this.hideLoading();\n var $options = [];\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 return;\n }\n data.results = this.sort(data.results);\n for (var d = 0; d < data.results.length; d++) {\n var item = data.results[d];\n var $option = this.option(item);\n $options.push($option);\n }\n this.$results.append($options);\n };\n Results.prototype.position = function ($results, $dropdown) {\n var $resultsContainer = $dropdown.find('.select2-results');\n $resultsContainer.append($results);\n };\n Results.prototype.sort = function (data) {\n var sorter = this.options.get('sorter');\n return sorter(data);\n };\n Results.prototype.highlightFirstItem = function () {\n var $options = this.$results.find('.select2-results__option--selectable');\n var $selected = $options.filter('.select2-results__option--selected');\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 this.ensureHighlightVisible();\n };\n Results.prototype.setClasses = function () {\n var self = this;\n this.data.current(function (selected) {\n var selectedIds = selected.map(function (s) {\n return s.id.toString();\n });\n var $options = self.$results.find('.select2-results__option--selectable');\n $options.each(function () {\n var $option = $(this);\n var item = Utils.GetData(this, 'data');\n\n // id needs to be converted to a string when comparing\n var id = '' + item.id;\n if (item.element != null && item.element.selected || item.element == null && selectedIds.indexOf(id) > -1) {\n this.classList.add('select2-results__option--selected');\n $option.attr('aria-selected', 'true');\n } else {\n this.classList.remove('select2-results__option--selected');\n $option.attr('aria-selected', 'false');\n }\n });\n });\n };\n Results.prototype.showLoading = function (params) {\n this.hideLoading();\n var loadingMore = this.options.get('translations').get('searching');\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 this.$results.prepend($loading);\n };\n Results.prototype.hideLoading = function () {\n this.$results.find('.loading-results').remove();\n };\n Results.prototype.option = function (data) {\n var option = document.createElement('li');\n option.classList.add('select2-results__option');\n option.classList.add('select2-results__option--selectable');\n var attrs = {\n 'role': 'option'\n };\n var matches = window.Element.prototype.matches || window.Element.prototype.msMatchesSelector || window.Element.prototype.webkitMatchesSelector;\n if (data.element != null && matches.call(data.element, ':disabled') || data.element == null && data.disabled) {\n attrs['aria-disabled'] = 'true';\n option.classList.remove('select2-results__option--selectable');\n option.classList.add('select2-results__option--disabled');\n }\n if (data.id == null) {\n option.classList.remove('select2-results__option--selectable');\n }\n if (data._resultId != null) {\n option.id = data._resultId;\n }\n if (data.title) {\n option.title = data.title;\n }\n if (data.children) {\n attrs.role = 'group';\n attrs['aria-label'] = data.text;\n option.classList.remove('select2-results__option--selectable');\n option.classList.add('select2-results__option--group');\n }\n for (var attr in attrs) {\n var val = attrs[attr];\n option.setAttribute(attr, val);\n }\n if (data.children) {\n var $option = $(option);\n var label = document.createElement('strong');\n label.className = 'select2-results__group';\n this.template(data, label);\n var $children = [];\n for (var c = 0; c < data.children.length; c++) {\n var child = data.children[c];\n var $child = this.option(child);\n $children.push($child);\n }\n var $childrenContainer = $('', {\n 'class': 'select2-results__options select2-results__options--nested',\n 'role': 'none'\n });\n $childrenContainer.append($children);\n $option.append(label);\n $option.append($childrenContainer);\n } else {\n this.template(data, option);\n }\n Utils.StoreData(option, 'data', data);\n return option;\n };\n Results.prototype.bind = function (container, $container) {\n var self = this;\n var id = container.id + '-results';\n this.$results.attr('id', id);\n container.on('results:all', function (params) {\n self.clear();\n self.append(params.data);\n if (container.isOpen()) {\n self.setClasses();\n self.highlightFirstItem();\n }\n });\n container.on('results:append', function (params) {\n self.append(params.data);\n if (container.isOpen()) {\n self.setClasses();\n }\n });\n container.on('query', function (params) {\n self.hideMessages();\n self.showLoading(params);\n });\n container.on('select', function () {\n if (!container.isOpen()) {\n return;\n }\n self.setClasses();\n if (self.options.get('scrollAfterSelect')) {\n self.highlightFirstItem();\n }\n });\n container.on('unselect', function () {\n if (!container.isOpen()) {\n return;\n }\n self.setClasses();\n if (self.options.get('scrollAfterSelect')) {\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 self.setClasses();\n self.ensureHighlightVisible();\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 container.on('results:toggle', function () {\n var $highlighted = self.getHighlightedResults();\n if ($highlighted.length === 0) {\n return;\n }\n $highlighted.trigger('mouseup');\n });\n container.on('results:select', function () {\n var $highlighted = self.getHighlightedResults();\n if ($highlighted.length === 0) {\n return;\n }\n var data = Utils.GetData($highlighted[0], 'data');\n if ($highlighted.hasClass('select2-results__option--selected')) {\n self.trigger('close', {});\n } else {\n self.trigger('select', {\n data: data\n });\n }\n });\n container.on('results:previous', function () {\n var $highlighted = self.getHighlightedResults();\n var $options = self.$results.find('.select2-results__option--selectable');\n var currentIndex = $options.index($highlighted);\n\n // If we are already at the top, don't move further\n // If no options, currentIndex will be -1\n if (currentIndex <= 0) {\n return;\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 var $next = $options.eq(nextIndex);\n $next.trigger('mouseenter');\n var currentOffset = self.$results.offset().top;\n var nextTop = $next.offset().top;\n var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset);\n if (nextIndex === 0) {\n self.$results.scrollTop(0);\n } else if (nextTop - currentOffset < 0) {\n self.$results.scrollTop(nextOffset);\n }\n });\n container.on('results:next', function () {\n var $highlighted = self.getHighlightedResults();\n var $options = self.$results.find('.select2-results__option--selectable');\n var currentIndex = $options.index($highlighted);\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 var $next = $options.eq(nextIndex);\n $next.trigger('mouseenter');\n var currentOffset = self.$results.offset().top + self.$results.outerHeight(false);\n var nextBottom = $next.offset().top + $next.outerHeight(false);\n var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset;\n if (nextIndex === 0) {\n self.$results.scrollTop(0);\n } else if (nextBottom > currentOffset) {\n self.$results.scrollTop(nextOffset);\n }\n });\n container.on('results:focus', function (params) {\n params.element[0].classList.add('select2-results__option--highlighted');\n params.element[0].setAttribute('aria-selected', 'true');\n });\n container.on('results:message', function (params) {\n self.displayMessage(params);\n });\n if ($.fn.mousewheel) {\n this.$results.on('mousewheel', function (e) {\n var top = self.$results.scrollTop();\n var bottom = self.$results.get(0).scrollHeight - top + e.deltaY;\n var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0;\n var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height();\n if (isAtTop) {\n self.$results.scrollTop(0);\n e.preventDefault();\n e.stopPropagation();\n } else if (isAtBottom) {\n self.$results.scrollTop(self.$results.get(0).scrollHeight - self.$results.height());\n e.preventDefault();\n e.stopPropagation();\n }\n });\n }\n this.$results.on('mouseup', '.select2-results__option--selectable', function (evt) {\n var $this = $(this);\n var data = Utils.GetData(this, 'data');\n if ($this.hasClass('select2-results__option--selected')) {\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 return;\n }\n self.trigger('select', {\n originalEvent: evt,\n data: data\n });\n });\n this.$results.on('mouseenter', '.select2-results__option--selectable', function (evt) {\n var data = Utils.GetData(this, 'data');\n self.getHighlightedResults().removeClass('select2-results__option--highlighted').attr('aria-selected', 'false');\n self.trigger('results:focus', {\n data: data,\n element: $(this)\n });\n });\n };\n Results.prototype.getHighlightedResults = function () {\n var $highlighted = this.$results.find('.select2-results__option--highlighted');\n return $highlighted;\n };\n Results.prototype.destroy = function () {\n this.$results.remove();\n };\n Results.prototype.ensureHighlightVisible = function () {\n var $highlighted = this.getHighlightedResults();\n if ($highlighted.length === 0) {\n return;\n }\n var $options = this.$results.find('.select2-results__option--selectable');\n var currentIndex = $options.index($highlighted);\n var currentOffset = this.$results.offset().top;\n var nextTop = $highlighted.offset().top;\n var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset);\n var offsetDelta = nextTop - currentOffset;\n nextOffset -= $highlighted.outerHeight(false) * 2;\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 Results.prototype.template = function (result, container) {\n var template = this.options.get('templateResult');\n var escapeMarkup = this.options.get('escapeMarkup');\n var content = template(result, container);\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 return Results;\n });\n S2.define('select2/keys', [], 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 return KEYS;\n });\n S2.define('select2/selection/base', ['jquery', '../utils', '../keys'], function ($, Utils, KEYS) {\n function BaseSelection($element, options) {\n this.$element = $element;\n this.options = options;\n BaseSelection.__super__.constructor.call(this);\n }\n Utils.Extend(BaseSelection, Utils.Observable);\n BaseSelection.prototype.render = function () {\n var $selection = $('' + '');\n this._tabindex = 0;\n if (Utils.GetData(this.$element[0], 'old-tabindex') != null) {\n this._tabindex = Utils.GetData(this.$element[0], 'old-tabindex');\n } else if (this.$element.attr('tabindex') != null) {\n this._tabindex = this.$element.attr('tabindex');\n }\n $selection.attr('title', this.$element.attr('title'));\n $selection.attr('tabindex', this._tabindex);\n $selection.attr('aria-disabled', 'false');\n this.$selection = $selection;\n return $selection;\n };\n BaseSelection.prototype.bind = function (container, $container) {\n var self = this;\n var resultsId = container.id + '-results';\n this.container = container;\n this.$selection.on('focus', function (evt) {\n self.trigger('focus', evt);\n });\n this.$selection.on('blur', function (evt) {\n self._handleBlur(evt);\n });\n this.$selection.on('keydown', function (evt) {\n self.trigger('keypress', evt);\n if (evt.which === KEYS.SPACE) {\n evt.preventDefault();\n }\n });\n container.on('results:focus', function (params) {\n self.$selection.attr('aria-activedescendant', params.data._resultId);\n });\n container.on('selection:update', function (params) {\n self.update(params.data);\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 self._attachCloseHandler(container);\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 self.$selection.trigger('focus');\n self._detachCloseHandler(container);\n });\n container.on('enable', function () {\n self.$selection.attr('tabindex', self._tabindex);\n self.$selection.attr('aria-disabled', 'false');\n });\n container.on('disable', function () {\n self.$selection.attr('tabindex', '-1');\n self.$selection.attr('aria-disabled', 'true');\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 (document.activeElement == self.$selection[0] || $.contains(self.$selection[0], document.activeElement)) {\n return;\n }\n self.trigger('blur', evt);\n }, 1);\n };\n BaseSelection.prototype._attachCloseHandler = function (container) {\n $(document.body).on('mousedown.select2.' + container.id, function (e) {\n var $target = $(e.target);\n var $select = $target.closest('.select2');\n var $all = $('.select2.select2-container--open');\n $all.each(function () {\n if (this == $select[0]) {\n return;\n }\n var $element = Utils.GetData(this, 'element');\n $element.select2('close');\n });\n });\n };\n BaseSelection.prototype._detachCloseHandler = function (container) {\n $(document.body).off('mousedown.select2.' + container.id);\n };\n BaseSelection.prototype.position = function ($selection, $container) {\n var $selectionContainer = $container.find('.selection');\n $selectionContainer.append($selection);\n };\n BaseSelection.prototype.destroy = function () {\n this._detachCloseHandler(this.container);\n };\n BaseSelection.prototype.update = function (data) {\n throw new Error('The `update` method must be defined in child classes.');\n };\n\n /**\n * Helper method to abstract the \"enabled\" (not \"disabled\") state of this\n * object.\n *\n * @return {true} if the instance is not disabled.\n * @return {false} if the instance is disabled.\n */\n BaseSelection.prototype.isEnabled = function () {\n return !this.isDisabled();\n };\n\n /**\n * Helper method to abstract the \"disabled\" state of this object.\n *\n * @return {true} if the disabled option is true.\n * @return {false} if the disabled option is false.\n */\n BaseSelection.prototype.isDisabled = function () {\n return this.options.get('disabled');\n };\n return BaseSelection;\n });\n S2.define('select2/selection/single', ['jquery', './base', '../utils', '../keys'], function ($, BaseSelection, Utils, KEYS) {\n function SingleSelection() {\n SingleSelection.__super__.constructor.apply(this, arguments);\n }\n Utils.Extend(SingleSelection, BaseSelection);\n SingleSelection.prototype.render = function () {\n var $selection = SingleSelection.__super__.render.call(this);\n $selection[0].classList.add('select2-selection--single');\n $selection.html('' + '' + '' + '');\n return $selection;\n };\n SingleSelection.prototype.bind = function (container, $container) {\n var self = this;\n SingleSelection.__super__.bind.apply(this, arguments);\n var id = container.id + '-container';\n this.$selection.find('.select2-selection__rendered').attr('id', id).attr('role', 'textbox').attr('aria-readonly', 'true');\n this.$selection.attr('aria-labelledby', id);\n this.$selection.attr('aria-controls', id);\n this.$selection.on('mousedown', function (evt) {\n // Only respond to left clicks\n if (evt.which !== 1) {\n return;\n }\n self.trigger('toggle', {\n originalEvent: evt\n });\n });\n this.$selection.on('focus', function (evt) {\n // User focuses on the container\n });\n this.$selection.on('blur', function (evt) {\n // User exits the container\n });\n container.on('focus', function (evt) {\n if (!container.isOpen()) {\n self.$selection.trigger('focus');\n }\n });\n };\n SingleSelection.prototype.clear = function () {\n var $rendered = this.$selection.find('.select2-selection__rendered');\n $rendered.empty();\n $rendered.removeAttr('title'); // clear tooltip on 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 return escapeMarkup(template(data, container));\n };\n SingleSelection.prototype.selectionContainer = function () {\n return $('');\n };\n SingleSelection.prototype.update = function (data) {\n if (data.length === 0) {\n this.clear();\n return;\n }\n var selection = data[0];\n var $rendered = this.$selection.find('.select2-selection__rendered');\n var formatted = this.display(selection, $rendered);\n $rendered.empty().append(formatted);\n var title = selection.title || selection.text;\n if (title) {\n $rendered.attr('title', title);\n } else {\n $rendered.removeAttr('title');\n }\n };\n return SingleSelection;\n });\n S2.define('select2/selection/multiple', ['jquery', './base', '../utils'], function ($, BaseSelection, Utils) {\n function MultipleSelection($element, options) {\n MultipleSelection.__super__.constructor.apply(this, arguments);\n }\n Utils.Extend(MultipleSelection, BaseSelection);\n MultipleSelection.prototype.render = function () {\n var $selection = MultipleSelection.__super__.render.call(this);\n $selection[0].classList.add('select2-selection--multiple');\n $selection.html('');\n return $selection;\n };\n MultipleSelection.prototype.bind = function (container, $container) {\n var self = this;\n MultipleSelection.__super__.bind.apply(this, arguments);\n var id = container.id + '-container';\n this.$selection.find('.select2-selection__rendered').attr('id', id);\n this.$selection.on('click', function (evt) {\n self.trigger('toggle', {\n originalEvent: evt\n });\n });\n this.$selection.on('click', '.select2-selection__choice__remove', function (evt) {\n // Ignore the event if it is disabled\n if (self.isDisabled()) {\n return;\n }\n var $remove = $(this);\n var $selection = $remove.parent();\n var data = Utils.GetData($selection[0], 'data');\n self.trigger('unselect', {\n originalEvent: evt,\n data: data\n });\n });\n this.$selection.on('keydown', '.select2-selection__choice__remove', function (evt) {\n // Ignore the event if it is disabled\n if (self.isDisabled()) {\n return;\n }\n evt.stopPropagation();\n });\n };\n MultipleSelection.prototype.clear = function () {\n var $rendered = this.$selection.find('.select2-selection__rendered');\n $rendered.empty();\n $rendered.removeAttr('title');\n };\n MultipleSelection.prototype.display = function (data, container) {\n var template = this.options.get('templateSelection');\n var escapeMarkup = this.options.get('escapeMarkup');\n return escapeMarkup(template(data, container));\n };\n MultipleSelection.prototype.selectionContainer = function () {\n var $container = $('
  • ' + '' + '' + '
  • ');\n return $container;\n };\n MultipleSelection.prototype.update = function (data) {\n this.clear();\n if (data.length === 0) {\n return;\n }\n var $selections = [];\n var selectionIdPrefix = this.$selection.find('.select2-selection__rendered').attr('id') + '-choice-';\n for (var d = 0; d < data.length; d++) {\n var selection = data[d];\n var $selection = this.selectionContainer();\n var formatted = this.display(selection, $selection);\n var selectionId = selectionIdPrefix + Utils.generateChars(4) + '-';\n if (selection.id) {\n selectionId += selection.id;\n } else {\n selectionId += Utils.generateChars(4);\n }\n $selection.find('.select2-selection__choice__display').append(formatted).attr('id', selectionId);\n var title = selection.title || selection.text;\n if (title) {\n $selection.attr('title', title);\n }\n var removeItem = this.options.get('translations').get('removeItem');\n var $remove = $selection.find('.select2-selection__choice__remove');\n $remove.attr('title', removeItem());\n $remove.attr('aria-label', removeItem());\n $remove.attr('aria-describedby', selectionId);\n Utils.StoreData($selection[0], 'data', selection);\n $selections.push($selection);\n }\n var $rendered = this.$selection.find('.select2-selection__rendered');\n $rendered.append($selections);\n };\n return MultipleSelection;\n });\n S2.define('select2/selection/placeholder', [], function () {\n function Placeholder(decorated, $element, options) {\n this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n decorated.call(this, $element, options);\n }\n Placeholder.prototype.normalizePlaceholder = function (_, placeholder) {\n if (typeof placeholder === 'string') {\n placeholder = {\n id: '',\n text: placeholder\n };\n }\n return placeholder;\n };\n Placeholder.prototype.createPlaceholder = function (decorated, placeholder) {\n var $placeholder = this.selectionContainer();\n $placeholder.html(this.display(placeholder));\n $placeholder[0].classList.add('select2-selection__placeholder');\n $placeholder[0].classList.remove('select2-selection__choice');\n var placeholderTitle = placeholder.title || placeholder.text || $placeholder.text();\n this.$selection.find('.select2-selection__rendered').attr('title', placeholderTitle);\n return $placeholder;\n };\n Placeholder.prototype.update = function (decorated, data) {\n var singlePlaceholder = data.length == 1 && data[0].id != this.placeholder.id;\n var multipleSelections = data.length > 1;\n if (multipleSelections || singlePlaceholder) {\n return decorated.call(this, data);\n }\n this.clear();\n var $placeholder = this.createPlaceholder(this.placeholder);\n this.$selection.find('.select2-selection__rendered').append($placeholder);\n };\n return Placeholder;\n });\n S2.define('select2/selection/allowClear', ['jquery', '../keys', '../utils'], function ($, KEYS, Utils) {\n function AllowClear() {}\n AllowClear.prototype.bind = function (decorated, container, $container) {\n var self = this;\n decorated.call(this, container, $container);\n if (this.placeholder == null) {\n if (this.options.get('debug') && window.console && console.error) {\n console.error('Select2: The `allowClear` option should be used in combination ' + 'with the `placeholder` option.');\n }\n }\n this.$selection.on('mousedown', '.select2-selection__clear', function (evt) {\n self._handleClear(evt);\n });\n container.on('keypress', function (evt) {\n self._handleKeyboardClear(evt, container);\n });\n };\n AllowClear.prototype._handleClear = function (_, evt) {\n // Ignore the event if it is disabled\n if (this.isDisabled()) {\n return;\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 evt.stopPropagation();\n var data = Utils.GetData($clear[0], 'data');\n var previousVal = this.$element.val();\n this.$element.val(this.placeholder.id);\n var unselectData = {\n data: data\n };\n this.trigger('clear', unselectData);\n if (unselectData.prevented) {\n this.$element.val(previousVal);\n return;\n }\n for (var d = 0; d < data.length; d++) {\n 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 this.$element.val(previousVal);\n return;\n }\n }\n this.$element.trigger('input').trigger('change');\n this.trigger('toggle', {});\n };\n AllowClear.prototype._handleKeyboardClear = function (_, evt, container) {\n if (container.isOpen()) {\n return;\n }\n if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) {\n this._handleClear(evt);\n }\n };\n AllowClear.prototype.update = function (decorated, data) {\n decorated.call(this, data);\n this.$selection.find('.select2-selection__clear').remove();\n this.$selection[0].classList.remove('select2-selection--clearable');\n if (this.$selection.find('.select2-selection__placeholder').length > 0 || data.length === 0) {\n return;\n }\n var selectionId = this.$selection.find('.select2-selection__rendered').attr('id');\n var removeAll = this.options.get('translations').get('removeAllItems');\n var $remove = $('');\n $remove.attr('title', removeAll());\n $remove.attr('aria-label', removeAll());\n $remove.attr('aria-describedby', selectionId);\n Utils.StoreData($remove[0], 'data', data);\n this.$selection.prepend($remove);\n this.$selection[0].classList.add('select2-selection--clearable');\n };\n return AllowClear;\n });\n S2.define('select2/selection/search', ['jquery', '../utils', '../keys'], function ($, Utils, KEYS) {\n function Search(decorated, $element, options) {\n decorated.call(this, $element, options);\n }\n Search.prototype.render = function (decorated) {\n var searchLabel = this.options.get('translations').get('search');\n var $search = $('' + '' + '');\n this.$searchContainer = $search;\n this.$search = $search.find('textarea');\n this.$search.prop('autocomplete', this.options.get('autocomplete'));\n this.$search.attr('aria-label', searchLabel());\n var $rendered = decorated.call(this);\n this._transferTabIndex();\n $rendered.append(this.$searchContainer);\n return $rendered;\n };\n Search.prototype.bind = function (decorated, container, $container) {\n var self = this;\n var resultsId = container.id + '-results';\n var selectionId = container.id + '-container';\n decorated.call(this, container, $container);\n self.$search.attr('aria-describedby', selectionId);\n container.on('open', function () {\n self.$search.attr('aria-controls', resultsId);\n self.$search.trigger('focus');\n });\n container.on('close', function () {\n self.$search.val('');\n self.resizeSearch();\n self.$search.removeAttr('aria-controls');\n self.$search.removeAttr('aria-activedescendant');\n self.$search.trigger('focus');\n });\n container.on('enable', function () {\n self.$search.prop('disabled', false);\n self._transferTabIndex();\n });\n container.on('disable', function () {\n self.$search.prop('disabled', true);\n });\n container.on('focus', function (evt) {\n self.$search.trigger('focus');\n });\n container.on('results:focus', function (params) {\n if (params.data._resultId) {\n self.$search.attr('aria-activedescendant', params.data._resultId);\n } else {\n self.$search.removeAttr('aria-activedescendant');\n }\n });\n this.$selection.on('focusin', '.select2-search--inline', function (evt) {\n self.trigger('focus', evt);\n });\n this.$selection.on('focusout', '.select2-search--inline', function (evt) {\n self._handleBlur(evt);\n });\n this.$selection.on('keydown', '.select2-search--inline', function (evt) {\n evt.stopPropagation();\n self.trigger('keypress', evt);\n self._keyUpPrevented = evt.isDefaultPrevented();\n var key = evt.which;\n if (key === KEYS.BACKSPACE && self.$search.val() === '') {\n var $previousChoice = self.$selection.find('.select2-selection__choice').last();\n if ($previousChoice.length > 0) {\n var item = Utils.GetData($previousChoice[0], 'data');\n self.searchRemoveChoice(item);\n evt.preventDefault();\n }\n }\n });\n this.$selection.on('click', '.select2-search--inline', function (evt) {\n if (self.$search.val()) {\n evt.stopPropagation();\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('input.searchcheck', '.select2-search--inline', 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 this.$selection.on('keyup.search input.search', '.select2-search--inline', 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 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 self.handleSearch(evt);\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 Search.prototype.createPlaceholder = function (decorated, placeholder) {\n this.$search.attr('placeholder', placeholder.text);\n };\n Search.prototype.update = function (decorated, data) {\n var searchHadFocus = this.$search[0] == document.activeElement;\n this.$search.attr('placeholder', '');\n decorated.call(this, data);\n this.resizeSearch();\n if (searchHadFocus) {\n this.$search.trigger('focus');\n }\n };\n Search.prototype.handleSearch = function () {\n this.resizeSearch();\n if (!this._keyUpPrevented) {\n var input = this.$search.val();\n this.trigger('query', {\n term: input\n });\n }\n this._keyUpPrevented = false;\n };\n Search.prototype.searchRemoveChoice = function (decorated, item) {\n this.trigger('unselect', {\n data: item\n });\n this.$search.val(item.text);\n this.handleSearch();\n };\n Search.prototype.resizeSearch = function () {\n this.$search.css('width', '25px');\n var width = '100%';\n if (this.$search.attr('placeholder') === '') {\n var minimumWidth = this.$search.val().length + 1;\n width = minimumWidth * 0.75 + 'em';\n }\n this.$search.css('width', width);\n };\n return Search;\n });\n S2.define('select2/selection/selectionCss', ['../utils'], function (Utils) {\n function SelectionCSS() {}\n SelectionCSS.prototype.render = function (decorated) {\n var $selection = decorated.call(this);\n var selectionCssClass = this.options.get('selectionCssClass') || '';\n if (selectionCssClass.indexOf(':all:') !== -1) {\n selectionCssClass = selectionCssClass.replace(':all:', '');\n Utils.copyNonInternalCssClasses($selection[0], this.$element[0]);\n }\n $selection.addClass(selectionCssClass);\n return $selection;\n };\n return SelectionCSS;\n });\n S2.define('select2/selection/eventRelay', ['jquery'], function ($) {\n function EventRelay() {}\n EventRelay.prototype.bind = function (decorated, container, $container) {\n var self = this;\n var relayEvents = ['open', 'opening', 'close', 'closing', 'select', 'selecting', 'unselect', 'unselecting', 'clear', 'clearing'];\n var preventableEvents = ['opening', 'closing', 'selecting', 'unselecting', 'clearing'];\n decorated.call(this, container, $container);\n container.on('*', function (name, params) {\n // Ignore events that should not be relayed\n if (relayEvents.indexOf(name) === -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 self.$element.trigger(evt);\n\n // Only handle preventable events if it was one\n if (preventableEvents.indexOf(name) === -1) {\n return;\n }\n params.prevented = evt.isDefaultPrevented();\n });\n };\n return EventRelay;\n });\n S2.define('select2/translation', ['jquery', 'require'], function ($, require) {\n function Translation(dict) {\n this.dict = dict || {};\n }\n Translation.prototype.all = function () {\n return this.dict;\n };\n Translation.prototype.get = function (key) {\n return this.dict[key];\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 Translation.loadPath = function (path) {\n if (!(path in Translation._cache)) {\n var translations = require(path);\n Translation._cache[path] = translations;\n }\n return new Translation(Translation._cache[path]);\n };\n return Translation;\n });\n S2.define('select2/diacritics', [], 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 '\\u0152': 'OE',\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 '\\u0153': 'oe',\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 '\\u03CE': '\\u03C9',\n '\\u03C2': '\\u03C3',\n '\\u2019': '\\''\n };\n return diacritics;\n });\n S2.define('select2/data/base', ['../utils'], function (Utils) {\n function BaseAdapter($element, options) {\n BaseAdapter.__super__.constructor.call(this);\n }\n Utils.Extend(BaseAdapter, Utils.Observable);\n BaseAdapter.prototype.current = function (callback) {\n throw new Error('The `current` method must be defined in child classes.');\n };\n BaseAdapter.prototype.query = function (params, callback) {\n throw new Error('The `query` method must be defined in child classes.');\n };\n BaseAdapter.prototype.bind = function (container, $container) {\n // Can be implemented in subclasses\n };\n BaseAdapter.prototype.destroy = function () {\n // Can be implemented in subclasses\n };\n BaseAdapter.prototype.generateResultId = function (container, data) {\n var id = container.id + '-result-';\n id += Utils.generateChars(4);\n if (data.id != null) {\n id += '-' + data.id.toString();\n } else {\n id += '-' + Utils.generateChars(4);\n }\n return id;\n };\n return BaseAdapter;\n });\n S2.define('select2/data/select', ['./base', '../utils', 'jquery'], function (BaseAdapter, Utils, $) {\n function SelectAdapter($element, options) {\n this.$element = $element;\n this.options = options;\n SelectAdapter.__super__.constructor.call(this);\n }\n Utils.Extend(SelectAdapter, BaseAdapter);\n SelectAdapter.prototype.current = function (callback) {\n var self = this;\n var data = Array.prototype.map.call(this.$element[0].querySelectorAll(':checked'), function (selectedElement) {\n return self.item($(selectedElement));\n });\n callback(data);\n };\n SelectAdapter.prototype.select = function (data) {\n var self = this;\n data.selected = true;\n\n // If data.element is a DOM node, use it instead\n if (data.element != null && data.element.tagName.toLowerCase() === 'option') {\n data.element.selected = true;\n this.$element.trigger('input').trigger('change');\n return;\n }\n if (this.$element.prop('multiple')) {\n this.current(function (currentData) {\n var val = [];\n data = [data];\n data.push.apply(data, currentData);\n for (var d = 0; d < data.length; d++) {\n var id = data[d].id;\n if (val.indexOf(id) === -1) {\n val.push(id);\n }\n }\n self.$element.val(val);\n self.$element.trigger('input').trigger('change');\n });\n } else {\n var val = data.id;\n this.$element.val(val);\n this.$element.trigger('input').trigger('change');\n }\n };\n SelectAdapter.prototype.unselect = function (data) {\n var self = this;\n if (!this.$element.prop('multiple')) {\n return;\n }\n data.selected = false;\n if (data.element != null && data.element.tagName.toLowerCase() === 'option') {\n data.element.selected = false;\n this.$element.trigger('input').trigger('change');\n return;\n }\n this.current(function (currentData) {\n var val = [];\n for (var d = 0; d < currentData.length; d++) {\n var id = currentData[d].id;\n if (id !== data.id && val.indexOf(id) === -1) {\n val.push(id);\n }\n }\n self.$element.val(val);\n self.$element.trigger('input').trigger('change');\n });\n };\n SelectAdapter.prototype.bind = function (container, $container) {\n var self = this;\n this.container = container;\n container.on('select', function (params) {\n self.select(params.data);\n });\n container.on('unselect', function (params) {\n self.unselect(params.data);\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 Utils.RemoveData(this);\n });\n };\n SelectAdapter.prototype.query = function (params, callback) {\n var data = [];\n var self = this;\n var $options = this.$element.children();\n $options.each(function () {\n if (this.tagName.toLowerCase() !== 'option' && this.tagName.toLowerCase() !== 'optgroup') {\n return;\n }\n var $option = $(this);\n var option = self.item($option);\n var matches = self.matches(params, option);\n if (matches !== null) {\n data.push(matches);\n }\n });\n callback({\n results: data\n });\n };\n SelectAdapter.prototype.addOptions = function ($options) {\n this.$element.append($options);\n };\n SelectAdapter.prototype.option = function (data) {\n var option;\n if (data.children) {\n option = document.createElement('optgroup');\n option.label = data.text;\n } else {\n option = document.createElement('option');\n if (option.textContent !== undefined) {\n option.textContent = data.text;\n } else {\n option.innerText = data.text;\n }\n }\n if (data.id !== undefined) {\n option.value = data.id;\n }\n if (data.disabled) {\n option.disabled = true;\n }\n if (data.selected) {\n option.selected = true;\n }\n if (data.title) {\n option.title = data.title;\n }\n var normalizedData = this._normalizeItem(data);\n normalizedData.element = option;\n\n // Override the option's data with the combined data\n Utils.StoreData(option, 'data', normalizedData);\n return $(option);\n };\n SelectAdapter.prototype.item = function ($option) {\n var data = {};\n data = Utils.GetData($option[0], 'data');\n if (data != null) {\n return data;\n }\n var option = $option[0];\n if (option.tagName.toLowerCase() === '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.tagName.toLowerCase() === 'optgroup') {\n data = {\n text: $option.prop('label'),\n children: [],\n title: $option.prop('title')\n };\n var $children = $option.children('option');\n var children = [];\n for (var c = 0; c < $children.length; c++) {\n var $child = $($children[c]);\n var child = this.item($child);\n children.push(child);\n }\n data.children = children;\n }\n data = this._normalizeItem(data);\n data.element = $option[0];\n Utils.StoreData($option[0], 'data', data);\n return data;\n };\n SelectAdapter.prototype._normalizeItem = function (item) {\n if (item !== Object(item)) {\n item = {\n id: item,\n text: item\n };\n }\n item = $.extend({}, {\n text: ''\n }, item);\n var defaults = {\n selected: false,\n disabled: false\n };\n if (item.id != null) {\n item.id = item.id.toString();\n }\n if (item.text != null) {\n item.text = item.text.toString();\n }\n if (item._resultId == null && item.id && this.container != null) {\n item._resultId = this.generateResultId(this.container, item);\n }\n return $.extend({}, defaults, item);\n };\n SelectAdapter.prototype.matches = function (params, data) {\n var matcher = this.options.get('matcher');\n return matcher(params, data);\n };\n return SelectAdapter;\n });\n S2.define('select2/data/array', ['./select', '../utils', 'jquery'], function (SelectAdapter, Utils, $) {\n function ArrayAdapter($element, options) {\n this._dataToConvert = options.get('data') || [];\n ArrayAdapter.__super__.constructor.call(this, $element, options);\n }\n Utils.Extend(ArrayAdapter, SelectAdapter);\n ArrayAdapter.prototype.bind = function (container, $container) {\n ArrayAdapter.__super__.bind.call(this, container, $container);\n this.addOptions(this.convertToOptions(this._dataToConvert));\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 if ($option.length === 0) {\n $option = this.option(data);\n this.addOptions($option);\n }\n ArrayAdapter.__super__.select.call(this, data);\n };\n ArrayAdapter.prototype.convertToOptions = function (data) {\n var self = this;\n var $existing = this.$element.find('option');\n var existingIds = $existing.map(function () {\n return self.item($(this)).id;\n }).get();\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 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 (existingIds.indexOf(item.id) >= 0) {\n var $existingOption = $existing.filter(onlyItem(item));\n var existingData = this.item($existingOption);\n var newData = $.extend(true, {}, item, existingData);\n var $newOption = this.option(newData);\n $existingOption.replaceWith($newOption);\n continue;\n }\n var $option = this.option(item);\n if (item.children) {\n var $children = this.convertToOptions(item.children);\n $option.append($children);\n }\n $options.push($option);\n }\n return $options;\n };\n return ArrayAdapter;\n });\n S2.define('select2/data/ajax', ['./array', '../utils', 'jquery'], function (ArrayAdapter, Utils, $) {\n function AjaxAdapter($element, options) {\n this.ajaxOptions = this._applyDefaults(options.get('ajax'));\n if (this.ajaxOptions.processResults != null) {\n this.processResults = this.ajaxOptions.processResults;\n }\n AjaxAdapter.__super__.constructor.call(this, $element, options);\n }\n Utils.Extend(AjaxAdapter, ArrayAdapter);\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 $request.then(success);\n $request.fail(failure);\n return $request;\n }\n };\n return $.extend({}, defaults, options, true);\n };\n AjaxAdapter.prototype.processResults = function (results) {\n return results;\n };\n AjaxAdapter.prototype.query = function (params, callback) {\n var matches = [];\n var self = this;\n if (this._request != null) {\n // JSONP requests cannot always be aborted\n if (typeof this._request.abort === 'function') {\n this._request.abort();\n }\n this._request = null;\n }\n var options = $.extend({\n type: 'GET'\n }, this.ajaxOptions);\n if (typeof options.url === 'function') {\n options.url = options.url.call(this.$element, params);\n }\n if (typeof options.data === 'function') {\n options.data = options.data.call(this.$element, params);\n }\n function request() {\n var $request = options.transport(options, function (data) {\n var results = self.processResults(data, params);\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 || !Array.isArray(results.results)) {\n console.error('Select2: The AJAX results did not return an array in the ' + '`results` key of the response.');\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 ('status' in $request && ($request.status === 0 || $request.status === '0')) {\n return;\n }\n self.trigger('results:message', {\n message: 'errorLoading'\n });\n });\n self._request = $request;\n }\n if (this.ajaxOptions.delay && params.term != null) {\n if (this._queryTimeout) {\n window.clearTimeout(this._queryTimeout);\n }\n this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay);\n } else {\n request();\n }\n };\n return AjaxAdapter;\n });\n S2.define('select2/data/tags', ['jquery'], function ($) {\n function Tags(decorated, $element, options) {\n var tags = options.get('tags');\n var createTag = options.get('createTag');\n if (createTag !== undefined) {\n this.createTag = createTag;\n }\n var insertTag = options.get('insertTag');\n if (insertTag !== undefined) {\n this.insertTag = insertTag;\n }\n decorated.call(this, $element, options);\n if (Array.isArray(tags)) {\n for (var t = 0; t < tags.length; t++) {\n var tag = tags[t];\n var item = this._normalizeItem(tag);\n var $option = this.option(item);\n this.$element.append($option);\n }\n }\n }\n Tags.prototype.query = function (decorated, params, callback) {\n var self = this;\n this._removeOldTags();\n if (params.term == null || params.page != null) {\n decorated.call(this, params, callback);\n return;\n }\n function wrapper(obj, child) {\n var data = obj.results;\n for (var i = 0; i < data.length; i++) {\n var option = data[i];\n var checkChildren = option.children != null && !wrapper({\n results: option.children\n }, true);\n var optionText = (option.text || '').toUpperCase();\n var paramsTerm = (params.term || '').toUpperCase();\n var checkText = optionText === paramsTerm;\n if (checkText || checkChildren) {\n if (child) {\n return false;\n }\n obj.data = data;\n callback(obj);\n return;\n }\n }\n if (child) {\n return true;\n }\n var tag = self.createTag(params);\n if (tag != null) {\n var $option = self.option(tag);\n $option.attr('data-select2-tag', 'true');\n self.addOptions([$option]);\n self.insertTag(data, tag);\n }\n obj.results = data;\n callback(obj);\n }\n decorated.call(this, params, wrapper);\n };\n Tags.prototype.createTag = function (decorated, params) {\n if (params.term == null) {\n return null;\n }\n var term = params.term.trim();\n if (term === '') {\n return null;\n }\n return {\n id: term,\n text: term\n };\n };\n Tags.prototype.insertTag = function (_, data, tag) {\n data.unshift(tag);\n };\n Tags.prototype._removeOldTags = function (_) {\n var $options = this.$element.find('option[data-select2-tag]');\n $options.each(function () {\n if (this.selected) {\n return;\n }\n $(this).remove();\n });\n };\n return Tags;\n });\n S2.define('select2/data/tokenizer', ['jquery'], function ($) {\n function Tokenizer(decorated, $element, options) {\n var tokenizer = options.get('tokenizer');\n if (tokenizer !== undefined) {\n this.tokenizer = tokenizer;\n }\n decorated.call(this, $element, options);\n }\n Tokenizer.prototype.bind = function (decorated, container, $container) {\n decorated.call(this, container, $container);\n this.$search = container.dropdown.$search || container.selection.$search || $container.find('.select2-search__field');\n };\n Tokenizer.prototype.query = function (decorated, params, callback) {\n var self = this;\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 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 function select(data) {\n self.trigger('select', {\n data: data\n });\n }\n params.term = params.term || '';\n var tokenData = this.tokenizer(params, this.options, createAndSelect);\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.trigger('focus');\n }\n params.term = tokenData.term;\n }\n decorated.call(this, params, callback);\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 var createTag = this.createTag || function (params) {\n return {\n id: params.term,\n text: params.term\n };\n };\n while (i < term.length) {\n var termChar = term[i];\n if (separators.indexOf(termChar) === -1) {\n i++;\n continue;\n }\n var part = term.substr(0, i);\n var partParams = $.extend({}, params, {\n term: part\n });\n var data = createTag(partParams);\n if (data == null) {\n i++;\n continue;\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 return {\n term: term\n };\n };\n return Tokenizer;\n });\n S2.define('select2/data/minimumInputLength', [], function () {\n function MinimumInputLength(decorated, $e, options) {\n this.minimumInputLength = options.get('minimumInputLength');\n decorated.call(this, $e, options);\n }\n MinimumInputLength.prototype.query = function (decorated, params, callback) {\n params.term = params.term || '';\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 return;\n }\n decorated.call(this, params, callback);\n };\n return MinimumInputLength;\n });\n S2.define('select2/data/maximumInputLength', [], function () {\n function MaximumInputLength(decorated, $e, options) {\n this.maximumInputLength = options.get('maximumInputLength');\n decorated.call(this, $e, options);\n }\n MaximumInputLength.prototype.query = function (decorated, params, callback) {\n params.term = params.term || '';\n if (this.maximumInputLength > 0 && 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 return;\n }\n decorated.call(this, params, callback);\n };\n return MaximumInputLength;\n });\n S2.define('select2/data/maximumSelectionLength', [], function () {\n function MaximumSelectionLength(decorated, $e, options) {\n this.maximumSelectionLength = options.get('maximumSelectionLength');\n decorated.call(this, $e, options);\n }\n MaximumSelectionLength.prototype.bind = function (decorated, container, $container) {\n var self = this;\n decorated.call(this, container, $container);\n container.on('select', function () {\n self._checkIfMaximumSelected();\n });\n };\n MaximumSelectionLength.prototype.query = function (decorated, params, callback) {\n var self = this;\n this._checkIfMaximumSelected(function () {\n decorated.call(self, params, callback);\n });\n };\n MaximumSelectionLength.prototype._checkIfMaximumSelected = function (_, successCallback) {\n var self = this;\n this.current(function (currentData) {\n var count = currentData != null ? currentData.length : 0;\n if (self.maximumSelectionLength > 0 && count >= self.maximumSelectionLength) {\n self.trigger('results:message', {\n message: 'maximumSelected',\n args: {\n maximum: self.maximumSelectionLength\n }\n });\n return;\n }\n if (successCallback) {\n successCallback();\n }\n });\n };\n return MaximumSelectionLength;\n });\n S2.define('select2/dropdown', ['jquery', './utils'], function ($, Utils) {\n function Dropdown($element, options) {\n this.$element = $element;\n this.options = options;\n Dropdown.__super__.constructor.call(this);\n }\n Utils.Extend(Dropdown, Utils.Observable);\n Dropdown.prototype.render = function () {\n var $dropdown = $('' + '' + '');\n $dropdown.attr('dir', this.options.get('dir'));\n this.$dropdown = $dropdown;\n return $dropdown;\n };\n Dropdown.prototype.bind = function () {\n // Should be implemented in subclasses\n };\n Dropdown.prototype.position = function ($dropdown, $container) {\n // Should be implemented in subclasses\n };\n Dropdown.prototype.destroy = function () {\n // Remove the dropdown from the DOM\n this.$dropdown.remove();\n };\n return Dropdown;\n });\n S2.define('select2/dropdown/search', ['jquery'], function ($) {\n function Search() {}\n Search.prototype.render = function (decorated) {\n var $rendered = decorated.call(this);\n var searchLabel = this.options.get('translations').get('search');\n var $search = $('' + '' + '');\n this.$searchContainer = $search;\n this.$search = $search.find('input');\n this.$search.prop('autocomplete', this.options.get('autocomplete'));\n this.$search.attr('aria-label', searchLabel());\n $rendered.prepend($search);\n return $rendered;\n };\n Search.prototype.bind = function (decorated, container, $container) {\n var self = this;\n var resultsId = container.id + '-results';\n decorated.call(this, container, $container);\n this.$search.on('keydown', function (evt) {\n self.trigger('keypress', evt);\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 this.$search.on('keyup input', function (evt) {\n self.handleSearch(evt);\n });\n container.on('open', function () {\n self.$search.attr('tabindex', 0);\n self.$search.attr('aria-controls', resultsId);\n self.$search.trigger('focus');\n window.setTimeout(function () {\n self.$search.trigger('focus');\n }, 0);\n });\n container.on('close', function () {\n self.$search.attr('tabindex', -1);\n self.$search.removeAttr('aria-controls');\n self.$search.removeAttr('aria-activedescendant');\n self.$search.val('');\n self.$search.trigger('blur');\n });\n container.on('focus', function () {\n if (!container.isOpen()) {\n self.$search.trigger('focus');\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 if (showSearch) {\n self.$searchContainer[0].classList.remove('select2-search--hide');\n } else {\n self.$searchContainer[0].classList.add('select2-search--hide');\n }\n }\n });\n container.on('results:focus', function (params) {\n if (params.data._resultId) {\n self.$search.attr('aria-activedescendant', params.data._resultId);\n } else {\n self.$search.removeAttr('aria-activedescendant');\n }\n });\n };\n Search.prototype.handleSearch = function (evt) {\n if (!this._keyUpPrevented) {\n var input = this.$search.val();\n this.trigger('query', {\n term: input\n });\n }\n this._keyUpPrevented = false;\n };\n Search.prototype.showSearch = function (_, params) {\n return true;\n };\n return Search;\n });\n S2.define('select2/dropdown/hidePlaceholder', [], function () {\n function HidePlaceholder(decorated, $element, options, dataAdapter) {\n this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n decorated.call(this, $element, options, dataAdapter);\n }\n HidePlaceholder.prototype.append = function (decorated, data) {\n data.results = this.removePlaceholder(data.results);\n decorated.call(this, data);\n };\n HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) {\n if (typeof placeholder === 'string') {\n placeholder = {\n id: '',\n text: placeholder\n };\n }\n return placeholder;\n };\n HidePlaceholder.prototype.removePlaceholder = function (_, data) {\n var modifiedData = data.slice(0);\n for (var d = data.length - 1; d >= 0; d--) {\n var item = data[d];\n if (this.placeholder.id === item.id) {\n modifiedData.splice(d, 1);\n }\n }\n return modifiedData;\n };\n return HidePlaceholder;\n });\n S2.define('select2/dropdown/infiniteScroll', ['jquery'], function ($) {\n function InfiniteScroll(decorated, $element, options, dataAdapter) {\n this.lastParams = {};\n decorated.call(this, $element, options, dataAdapter);\n this.$loadingMore = this.createLoadingMore();\n this.loading = false;\n }\n InfiniteScroll.prototype.append = function (decorated, data) {\n this.$loadingMore.remove();\n this.loading = false;\n decorated.call(this, data);\n if (this.showLoadingMore(data)) {\n this.$results.append(this.$loadingMore);\n this.loadMoreIfNeeded();\n }\n };\n InfiniteScroll.prototype.bind = function (decorated, container, $container) {\n var self = this;\n decorated.call(this, container, $container);\n container.on('query', function (params) {\n self.lastParams = params;\n self.loading = true;\n });\n container.on('query:append', function (params) {\n self.lastParams = params;\n self.loading = true;\n });\n this.$results.on('scroll', this.loadMoreIfNeeded.bind(this));\n };\n InfiniteScroll.prototype.loadMoreIfNeeded = function () {\n var isLoadMoreVisible = $.contains(document.documentElement, this.$loadingMore[0]);\n if (this.loading || !isLoadMoreVisible) {\n return;\n }\n var currentOffset = this.$results.offset().top + this.$results.outerHeight(false);\n var loadingMoreOffset = this.$loadingMore.offset().top + this.$loadingMore.outerHeight(false);\n if (currentOffset + 50 >= loadingMoreOffset) {\n this.loadMore();\n }\n };\n InfiniteScroll.prototype.loadMore = function () {\n this.loading = true;\n var params = $.extend({}, {\n page: 1\n }, this.lastParams);\n params.page++;\n this.trigger('query:append', params);\n };\n InfiniteScroll.prototype.showLoadingMore = function (_, data) {\n return data.pagination && data.pagination.more;\n };\n InfiniteScroll.prototype.createLoadingMore = function () {\n var $option = $('
  • ');\n var message = this.options.get('translations').get('loadingMore');\n $option.html(message(this.lastParams));\n return $option;\n };\n return InfiniteScroll;\n });\n S2.define('select2/dropdown/attachBody', ['jquery', '../utils'], function ($, Utils) {\n function AttachBody(decorated, $element, options) {\n this.$dropdownParent = $(options.get('dropdownParent') || document.body);\n decorated.call(this, $element, options);\n }\n AttachBody.prototype.bind = function (decorated, container, $container) {\n var self = this;\n decorated.call(this, container, $container);\n container.on('open', function () {\n self._showDropdown();\n self._attachPositioningHandler(container);\n\n // Must bind after the results handlers to ensure correct sizing\n self._bindContainerResultHandlers(container);\n });\n container.on('close', function () {\n self._hideDropdown();\n self._detachPositioningHandler(container);\n });\n this.$dropdownContainer.on('mousedown', function (evt) {\n evt.stopPropagation();\n });\n };\n AttachBody.prototype.destroy = function (decorated) {\n decorated.call(this);\n this.$dropdownContainer.remove();\n };\n AttachBody.prototype.position = function (decorated, $dropdown, $container) {\n // Clone all of the container classes\n $dropdown.attr('class', $container.attr('class'));\n $dropdown[0].classList.remove('select2');\n $dropdown[0].classList.add('select2-container--open');\n $dropdown.css({\n position: 'absolute',\n top: -999999\n });\n this.$container = $container;\n };\n AttachBody.prototype.render = function (decorated) {\n var $container = $('');\n var $dropdown = decorated.call(this);\n $container.append($dropdown);\n this.$dropdownContainer = $container;\n return $container;\n };\n AttachBody.prototype._hideDropdown = function (decorated) {\n this.$dropdownContainer.detach();\n };\n AttachBody.prototype._bindContainerResultHandlers = function (decorated, container) {\n // These should only be bound once\n if (this._containerResultsHandlersBound) {\n return;\n }\n var self = this;\n container.on('results:all', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n container.on('results:append', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n container.on('results:message', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n container.on('select', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n container.on('unselect', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n this._containerResultsHandlersBound = true;\n };\n AttachBody.prototype._attachPositioningHandler = function (decorated, container) {\n var self = this;\n var scrollEvent = 'scroll.select2.' + container.id;\n var resizeEvent = 'resize.select2.' + container.id;\n var orientationEvent = 'orientationchange.select2.' + container.id;\n var $watchers = this.$container.parents().filter(Utils.hasScroll);\n $watchers.each(function () {\n Utils.StoreData(this, 'select2-scroll-position', {\n x: $(this).scrollLeft(),\n y: $(this).scrollTop()\n });\n });\n $watchers.on(scrollEvent, function (ev) {\n var position = Utils.GetData(this, 'select2-scroll-position');\n $(this).scrollTop(position.y);\n });\n $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent, function (e) {\n self._positionDropdown();\n self._resizeDropdown();\n });\n };\n AttachBody.prototype._detachPositioningHandler = 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 var $watchers = this.$container.parents().filter(Utils.hasScroll);\n $watchers.off(scrollEvent);\n $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent);\n };\n AttachBody.prototype._positionDropdown = function () {\n var $window = $(window);\n var isCurrentlyAbove = this.$dropdown[0].classList.contains('select2-dropdown--above');\n var isCurrentlyBelow = this.$dropdown[0].classList.contains('select2-dropdown--below');\n var newDirection = null;\n var offset = this.$container.offset();\n offset.bottom = offset.top + this.$container.outerHeight(false);\n var container = {\n height: this.$container.outerHeight(false)\n };\n container.top = offset.top;\n container.bottom = offset.top + container.height;\n var dropdown = {\n height: this.$dropdown.outerHeight(false)\n };\n var viewport = {\n top: $window.scrollTop(),\n bottom: $window.scrollTop() + $window.height()\n };\n var enoughRoomAbove = viewport.top < offset.top - dropdown.height;\n var enoughRoomBelow = viewport.bottom > offset.bottom + dropdown.height;\n var css = {\n left: offset.left,\n top: container.bottom\n };\n\n // Determine what the parent element is to use for calculating the offset\n var $offsetParent = this.$dropdownParent;\n\n // For statically positioned 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 var parentOffset = {\n top: 0,\n left: 0\n };\n if ($.contains(document.body, $offsetParent[0]) || $offsetParent[0].isConnected) {\n parentOffset = $offsetParent.offset();\n }\n css.top -= parentOffset.top;\n css.left -= parentOffset.left;\n if (!isCurrentlyAbove && !isCurrentlyBelow) {\n newDirection = 'below';\n }\n if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) {\n newDirection = 'above';\n } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) {\n newDirection = 'below';\n }\n if (newDirection == 'above' || isCurrentlyAbove && newDirection !== 'below') {\n css.top = container.top - parentOffset.top - dropdown.height;\n }\n if (newDirection != null) {\n this.$dropdown[0].classList.remove('select2-dropdown--below');\n this.$dropdown[0].classList.remove('select2-dropdown--above');\n this.$dropdown[0].classList.add('select2-dropdown--' + newDirection);\n this.$container[0].classList.remove('select2-container--below');\n this.$container[0].classList.remove('select2-container--above');\n this.$container[0].classList.add('select2-container--' + newDirection);\n }\n this.$dropdownContainer.css(css);\n };\n AttachBody.prototype._resizeDropdown = function () {\n var css = {\n width: this.$container.outerWidth(false) + 'px'\n };\n if (this.options.get('dropdownAutoWidth')) {\n css.minWidth = css.width;\n css.position = 'relative';\n css.width = 'auto';\n }\n this.$dropdown.css(css);\n };\n AttachBody.prototype._showDropdown = function (decorated) {\n this.$dropdownContainer.appendTo(this.$dropdownParent);\n this._positionDropdown();\n this._resizeDropdown();\n };\n return AttachBody;\n });\n S2.define('select2/dropdown/minimumResultsForSearch', [], function () {\n function countResults(data) {\n var count = 0;\n for (var d = 0; d < data.length; d++) {\n var item = data[d];\n if (item.children) {\n count += countResults(item.children);\n } else {\n count++;\n }\n }\n return count;\n }\n function MinimumResultsForSearch(decorated, $element, options, dataAdapter) {\n this.minimumResultsForSearch = options.get('minimumResultsForSearch');\n if (this.minimumResultsForSearch < 0) {\n this.minimumResultsForSearch = Infinity;\n }\n decorated.call(this, $element, options, dataAdapter);\n }\n MinimumResultsForSearch.prototype.showSearch = function (decorated, params) {\n if (countResults(params.data.results) < this.minimumResultsForSearch) {\n return false;\n }\n return decorated.call(this, params);\n };\n return MinimumResultsForSearch;\n });\n S2.define('select2/dropdown/selectOnClose', ['../utils'], function (Utils) {\n function SelectOnClose() {}\n SelectOnClose.prototype.bind = function (decorated, container, $container) {\n var self = this;\n decorated.call(this, container, $container);\n container.on('close', function (params) {\n self._handleSelectOnClose(params);\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 var $highlightedResults = this.getHighlightedResults();\n\n // Only select highlighted results\n if ($highlightedResults.length < 1) {\n return;\n }\n var data = Utils.GetData($highlightedResults[0], 'data');\n\n // Don't re-select already selected resulte\n if (data.element != null && data.element.selected || data.element == null && data.selected) {\n return;\n }\n this.trigger('select', {\n data: data\n });\n };\n return SelectOnClose;\n });\n S2.define('select2/dropdown/closeOnSelect', [], function () {\n function CloseOnSelect() {}\n CloseOnSelect.prototype.bind = function (decorated, container, $container) {\n var self = this;\n decorated.call(this, container, $container);\n container.on('select', function (evt) {\n self._selectTriggered(evt);\n });\n container.on('unselect', function (evt) {\n self._selectTriggered(evt);\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 || originalEvent.metaKey)) {\n return;\n }\n this.trigger('close', {\n originalEvent: originalEvent,\n originalSelect2Event: evt\n });\n };\n return CloseOnSelect;\n });\n S2.define('select2/dropdown/dropdownCss', ['../utils'], function (Utils) {\n function DropdownCSS() {}\n DropdownCSS.prototype.render = function (decorated) {\n var $dropdown = decorated.call(this);\n var dropdownCssClass = this.options.get('dropdownCssClass') || '';\n if (dropdownCssClass.indexOf(':all:') !== -1) {\n dropdownCssClass = dropdownCssClass.replace(':all:', '');\n Utils.copyNonInternalCssClasses($dropdown[0], this.$element[0]);\n }\n $dropdown.addClass(dropdownCssClass);\n return $dropdown;\n };\n return DropdownCSS;\n });\n S2.define('select2/dropdown/tagsSearchHighlight', ['../utils'], function (Utils) {\n function TagsSearchHighlight() {}\n TagsSearchHighlight.prototype.highlightFirstItem = function (decorated) {\n var $options = this.$results.find('.select2-results__option--selectable' + ':not(.select2-results__option--selected)');\n if ($options.length > 0) {\n var $firstOption = $options.first();\n var data = Utils.GetData($firstOption[0], 'data');\n var firstElement = data.element;\n if (firstElement && firstElement.getAttribute) {\n if (firstElement.getAttribute('data-select2-tag') === 'true') {\n $firstOption.trigger('mouseenter');\n return;\n }\n }\n }\n decorated.call(this);\n };\n return TagsSearchHighlight;\n });\n S2.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 var message = 'Please delete ' + overChars + ' character';\n if (overChars != 1) {\n message += 's';\n }\n return message;\n },\n inputTooShort: function (args) {\n var remainingChars = args.minimum - args.input.length;\n var message = 'Please enter ' + remainingChars + ' or more characters';\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 if (args.maximum != 1) {\n message += 's';\n }\n return message;\n },\n noResults: function () {\n return 'No results found';\n },\n searching: function () {\n return 'Searching…';\n },\n removeAllItems: function () {\n return 'Remove all items';\n },\n removeItem: function () {\n return 'Remove item';\n },\n search: function () {\n return 'Search';\n }\n };\n });\n S2.define('select2/defaults', ['jquery', './results', './selection/single', './selection/multiple', './selection/placeholder', './selection/allowClear', './selection/search', './selection/selectionCss', './selection/eventRelay', './utils', './translation', './diacritics', './data/select', './data/array', './data/ajax', './data/tags', './data/tokenizer', './data/minimumInputLength', './data/maximumInputLength', './data/maximumSelectionLength', './dropdown', './dropdown/search', './dropdown/hidePlaceholder', './dropdown/infiniteScroll', './dropdown/attachBody', './dropdown/minimumResultsForSearch', './dropdown/selectOnClose', './dropdown/closeOnSelect', './dropdown/dropdownCss', './dropdown/tagsSearchHighlight', './i18n/en'], function ($, ResultsList, SingleSelection, MultipleSelection, Placeholder, AllowClear, SelectionSearch, SelectionCSS, EventRelay, Utils, Translation, DIACRITICS, SelectData, ArrayData, AjaxData, Tags, Tokenizer, MinimumInputLength, MaximumInputLength, MaximumSelectionLength, Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll, AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect, DropdownCSS, TagsSearchHighlight, EnglishTranslation) {\n function Defaults() {\n this.reset();\n }\n Defaults.prototype.apply = function (options) {\n options = $.extend(true, {}, this.defaults, options);\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 if (options.minimumInputLength > 0) {\n options.dataAdapter = Utils.Decorate(options.dataAdapter, MinimumInputLength);\n }\n if (options.maximumInputLength > 0) {\n options.dataAdapter = Utils.Decorate(options.dataAdapter, MaximumInputLength);\n }\n if (options.maximumSelectionLength > 0) {\n options.dataAdapter = Utils.Decorate(options.dataAdapter, MaximumSelectionLength);\n }\n if (options.tags) {\n options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags);\n }\n if (options.tokenSeparators != null || options.tokenizer != null) {\n options.dataAdapter = Utils.Decorate(options.dataAdapter, Tokenizer);\n }\n }\n if (options.resultsAdapter == null) {\n options.resultsAdapter = ResultsList;\n if (options.ajax != null) {\n options.resultsAdapter = Utils.Decorate(options.resultsAdapter, InfiniteScroll);\n }\n if (options.placeholder != null) {\n options.resultsAdapter = Utils.Decorate(options.resultsAdapter, HidePlaceholder);\n }\n if (options.selectOnClose) {\n options.resultsAdapter = Utils.Decorate(options.resultsAdapter, SelectOnClose);\n }\n if (options.tags) {\n options.resultsAdapter = Utils.Decorate(options.resultsAdapter, TagsSearchHighlight);\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 options.dropdownAdapter = SearchableDropdown;\n }\n if (options.minimumResultsForSearch !== 0) {\n options.dropdownAdapter = Utils.Decorate(options.dropdownAdapter, MinimumResultsForSearch);\n }\n if (options.closeOnSelect) {\n options.dropdownAdapter = Utils.Decorate(options.dropdownAdapter, CloseOnSelect);\n }\n if (options.dropdownCssClass != null) {\n options.dropdownAdapter = Utils.Decorate(options.dropdownAdapter, DropdownCSS);\n }\n options.dropdownAdapter = Utils.Decorate(options.dropdownAdapter, AttachBody);\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(options.selectionAdapter, Placeholder);\n }\n if (options.allowClear) {\n options.selectionAdapter = Utils.Decorate(options.selectionAdapter, AllowClear);\n }\n if (options.multiple) {\n options.selectionAdapter = Utils.Decorate(options.selectionAdapter, SelectionSearch);\n }\n if (options.selectionCssClass != null) {\n options.selectionAdapter = Utils.Decorate(options.selectionAdapter, SelectionCSS);\n }\n options.selectionAdapter = Utils.Decorate(options.selectionAdapter, EventRelay);\n }\n\n // If the defaults were not previously applied from an element, it is\n // possible for the language option to have not been resolved\n options.language = this._resolveLanguage(options.language);\n\n // Always fall back to English since it will always be complete\n options.language.push('en');\n var uniqueLanguages = [];\n for (var l = 0; l < options.language.length; l++) {\n var language = options.language[l];\n if (uniqueLanguages.indexOf(language) === -1) {\n uniqueLanguages.push(language);\n }\n }\n options.language = uniqueLanguages;\n options.translations = this._processTranslations(options.language, options.debug);\n return options;\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 return text.replace(/[^\\u0000-\\u007E]/g, match);\n }\n function matcher(params, data) {\n // Always return the object if there is nothing to compare\n if (params.term == null || params.term.trim() === '') {\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 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 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 this.defaults = {\n amdLanguageBase: './i18n/',\n autocomplete: 'off',\n closeOnSelect: true,\n debug: false,\n dropdownAutoWidth: false,\n escapeMarkup: Utils.escapeMarkup,\n language: {},\n matcher: matcher,\n minimumInputLength: 0,\n maximumInputLength: 0,\n maximumSelectionLength: 0,\n minimumResultsForSearch: 0,\n selectOnClose: false,\n scrollAfterSelect: 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 Defaults.prototype.applyFromElement = function (options, $element) {\n var optionLanguage = options.language;\n var defaultLanguage = this.defaults.language;\n var elementLanguage = $element.prop('lang');\n var parentLanguage = $element.closest('[lang]').prop('lang');\n var languages = Array.prototype.concat.call(this._resolveLanguage(elementLanguage), this._resolveLanguage(optionLanguage), this._resolveLanguage(defaultLanguage), this._resolveLanguage(parentLanguage));\n options.language = languages;\n return options;\n };\n Defaults.prototype._resolveLanguage = function (language) {\n if (!language) {\n return [];\n }\n if ($.isEmptyObject(language)) {\n return [];\n }\n if ($.isPlainObject(language)) {\n return [language];\n }\n var languages;\n if (!Array.isArray(language)) {\n languages = [language];\n } else {\n languages = language;\n }\n var resolvedLanguages = [];\n for (var l = 0; l < languages.length; l++) {\n resolvedLanguages.push(languages[l]);\n if (typeof languages[l] === 'string' && languages[l].indexOf('-') > 0) {\n // Extract the region information if it is included\n var languageParts = languages[l].split('-');\n var baseLanguage = languageParts[0];\n resolvedLanguages.push(baseLanguage);\n }\n }\n return resolvedLanguages;\n };\n Defaults.prototype._processTranslations = function (languages, debug) {\n var translations = new Translation();\n for (var l = 0; l < languages.length; l++) {\n var languageData = new Translation();\n var language = languages[l];\n if (typeof language === 'string') {\n try {\n // Try to load it with the original name\n languageData = Translation.loadPath(language);\n } catch (e) {\n try {\n // If we couldn't load it, check if it wasn't the full path\n language = this.defaults.amdLanguageBase + language;\n languageData = Translation.loadPath(language);\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 (debug && window.console && console.warn) {\n console.warn('Select2: The language file for \"' + language + '\" could ' + 'not be automatically loaded. A fallback will be used instead.');\n }\n }\n }\n } else if ($.isPlainObject(language)) {\n languageData = new Translation(language);\n } else {\n languageData = language;\n }\n translations.extend(languageData);\n }\n return translations;\n };\n Defaults.prototype.set = function (key, value) {\n var camelKey = $.camelCase(key);\n var data = {};\n data[camelKey] = value;\n var convertedData = Utils._convertData(data);\n $.extend(true, this.defaults, convertedData);\n };\n var defaults = new Defaults();\n return defaults;\n });\n S2.define('select2/options', ['jquery', './defaults', './utils'], function ($, Defaults, Utils) {\n function Options(options, $element) {\n this.options = options;\n if ($element != null) {\n this.fromElement($element);\n }\n if ($element != null) {\n this.options = Defaults.applyFromElement(this.options, $element);\n }\n this.options = Defaults.apply(this.options);\n }\n Options.prototype.fromElement = function ($e) {\n var excludedData = ['select2'];\n if (this.options.multiple == null) {\n this.options.multiple = $e.prop('multiple');\n }\n if (this.options.disabled == null) {\n this.options.disabled = $e.prop('disabled');\n }\n if (this.options.autocomplete == null && $e.prop('autocomplete')) {\n this.options.autocomplete = $e.prop('autocomplete');\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 $e.prop('disabled', this.options.disabled);\n $e.prop('multiple', this.options.multiple);\n if (Utils.GetData($e[0], 'select2Tags')) {\n if (this.options.debug && window.console && console.warn) {\n console.warn('Select2: The `data-select2-tags` attribute has been changed to ' + 'use the `data-data` and `data-tags=\"true\"` attributes and will be ' + 'removed in future versions of Select2.');\n }\n Utils.StoreData($e[0], 'data', Utils.GetData($e[0], 'select2Tags'));\n Utils.StoreData($e[0], 'tags', true);\n }\n if (Utils.GetData($e[0], 'ajaxUrl')) {\n if (this.options.debug && window.console && console.warn) {\n console.warn('Select2: The `data-ajax-url` attribute has been changed to ' + '`data-ajax--url` and support for the old attribute will be removed' + ' in future versions of Select2.');\n }\n $e.attr('ajax--url', Utils.GetData($e[0], 'ajaxUrl'));\n Utils.StoreData($e[0], 'ajax-Url', Utils.GetData($e[0], 'ajaxUrl'));\n }\n var dataset = {};\n function upperCaseLetter(_, letter) {\n return letter.toUpperCase();\n }\n\n // Pre-load all of the attributes which are prefixed with `data-`\n for (var attr = 0; attr < $e[0].attributes.length; attr++) {\n var attributeName = $e[0].attributes[attr].name;\n var prefix = 'data-';\n if (attributeName.substr(0, prefix.length) == prefix) {\n // Get the contents of the attribute after `data-`\n var dataName = attributeName.substring(prefix.length);\n\n // Get the data contents from the consistent source\n // This is more than likely the jQuery data helper\n var dataValue = Utils.GetData($e[0], dataName);\n\n // camelCase the attribute name to match the spec\n var camelDataName = dataName.replace(/-([a-z])/g, upperCaseLetter);\n\n // Store the data attribute contents into the dataset since\n dataset[camelDataName] = dataValue;\n }\n }\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, dataset);\n }\n\n // Prefer our internal data cache if it exists\n var data = $.extend(true, {}, Utils.GetData($e[0]), dataset);\n data = Utils._convertData(data);\n for (var key in data) {\n if (excludedData.indexOf(key) > -1) {\n continue;\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 return this;\n };\n Options.prototype.get = function (key) {\n return this.options[key];\n };\n Options.prototype.set = function (key, val) {\n this.options[key] = val;\n };\n return Options;\n });\n S2.define('select2/core', ['jquery', './options', './utils', './keys'], function ($, Options, Utils, KEYS) {\n var Select2 = function ($element, options) {\n if (Utils.GetData($element[0], 'select2') != null) {\n Utils.GetData($element[0], 'select2').destroy();\n }\n this.$element = $element;\n this.id = this._generateId($element);\n options = options || {};\n this.options = new Options(options, $element);\n Select2.__super__.constructor.call(this);\n\n // Set up the tabindex\n\n var tabindex = $element.attr('tabindex') || 0;\n Utils.StoreData($element[0], '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 var $container = this.render();\n this._placeContainer($container);\n var SelectionAdapter = this.options.get('selectionAdapter');\n this.selection = new SelectionAdapter($element, this.options);\n this.$selection = this.selection.render();\n this.selection.position(this.$selection, $container);\n var DropdownAdapter = this.options.get('dropdownAdapter');\n this.dropdown = new DropdownAdapter($element, this.options);\n this.$dropdown = this.dropdown.render();\n this.dropdown.position(this.$dropdown, $container);\n var ResultsAdapter = this.options.get('resultsAdapter');\n this.results = new ResultsAdapter($element, this.options, this.dataAdapter);\n this.$results = this.results.render();\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[0].classList.add('select2-hidden-accessible');\n $element.attr('aria-hidden', 'true');\n\n // Synchronize any monitored attributes\n this._syncAttributes();\n Utils.StoreData($element[0], 'select2', this);\n\n // Ensure backwards compatibility with $element.data('select2').\n $element.data('select2', this);\n };\n Utils.Extend(Select2, Utils.Observable);\n Select2.prototype._generateId = function ($element) {\n var id = '';\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 id = id.replace(/(:|\\.|\\[|\\]|,)/g, '');\n id = 'select2-' + id;\n return id;\n };\n Select2.prototype._placeContainer = function ($container) {\n $container.insertAfter(this.$element);\n var width = this._resolveWidth(this.$element, this.options.get('width'));\n if (width != null) {\n $container.css('width', width);\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 if (method == 'resolve') {\n var styleWidth = this._resolveWidth($element, 'style');\n if (styleWidth != null) {\n return styleWidth;\n }\n return this._resolveWidth($element, 'element');\n }\n if (method == 'element') {\n var elementWidth = $element.outerWidth(false);\n if (elementWidth <= 0) {\n return 'auto';\n }\n return elementWidth + 'px';\n }\n if (method == 'style') {\n var style = $element.attr('style');\n if (typeof style !== 'string') {\n return null;\n }\n var attrs = style.split(';');\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 if (matches !== null && matches.length >= 1) {\n return matches[1];\n }\n }\n return null;\n }\n if (method == 'computedstyle') {\n var computedStyle = window.getComputedStyle($element[0]);\n return computedStyle.width;\n }\n return method;\n };\n Select2.prototype._bindAdapters = function () {\n this.dataAdapter.bind(this, this.$container);\n this.selection.bind(this, this.$container);\n this.dropdown.bind(this, this.$container);\n this.results.bind(this, this.$container);\n };\n Select2.prototype._registerDomEvents = function () {\n var self = this;\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 this.$element.on('focus.select2', function (evt) {\n self.trigger('focus', evt);\n });\n this._syncA = Utils.bind(this._syncAttributes, this);\n this._syncS = Utils.bind(this._syncSubtree, this);\n this._observer = new window.MutationObserver(function (mutations) {\n self._syncA();\n self._syncS(mutations);\n });\n this._observer.observe(this.$element[0], {\n attributes: true,\n childList: true,\n subtree: false\n });\n };\n Select2.prototype._registerDataEvents = function () {\n var self = this;\n this.dataAdapter.on('*', function (name, params) {\n self.trigger(name, params);\n });\n };\n Select2.prototype._registerSelectionEvents = function () {\n var self = this;\n var nonRelayEvents = ['toggle', 'focus'];\n this.selection.on('toggle', function () {\n self.toggleDropdown();\n });\n this.selection.on('focus', function (params) {\n self.focus(params);\n });\n this.selection.on('*', function (name, params) {\n if (nonRelayEvents.indexOf(name) !== -1) {\n return;\n }\n self.trigger(name, params);\n });\n };\n Select2.prototype._registerDropdownEvents = function () {\n var self = this;\n this.dropdown.on('*', function (name, params) {\n self.trigger(name, params);\n });\n };\n Select2.prototype._registerResultsEvents = function () {\n var self = this;\n this.results.on('*', function (name, params) {\n self.trigger(name, params);\n });\n };\n Select2.prototype._registerEvents = function () {\n var self = this;\n this.on('open', function () {\n self.$container[0].classList.add('select2-container--open');\n });\n this.on('close', function () {\n self.$container[0].classList.remove('select2-container--open');\n });\n this.on('enable', function () {\n self.$container[0].classList.remove('select2-container--disabled');\n });\n this.on('disable', function () {\n self.$container[0].classList.add('select2-container--disabled');\n });\n this.on('blur', function () {\n self.$container[0].classList.remove('select2-container--focus');\n });\n this.on('query', function (params) {\n if (!self.isOpen()) {\n self.trigger('open', {});\n }\n this.dataAdapter.query(params, function (data) {\n self.trigger('results:all', {\n data: data,\n query: params\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 this.on('keypress', function (evt) {\n var key = evt.which;\n if (self.isOpen()) {\n if (key === KEYS.ESC || key === KEYS.UP && evt.altKey) {\n self.close(evt);\n evt.preventDefault();\n } else if (key === KEYS.ENTER || key === KEYS.TAB) {\n self.trigger('results:select', {});\n evt.preventDefault();\n } else if (key === KEYS.SPACE && evt.ctrlKey) {\n self.trigger('results:toggle', {});\n evt.preventDefault();\n } else if (key === KEYS.UP) {\n self.trigger('results:previous', {});\n evt.preventDefault();\n } else if (key === KEYS.DOWN) {\n self.trigger('results:next', {});\n evt.preventDefault();\n }\n } else {\n if (key === KEYS.ENTER || key === KEYS.SPACE || key === KEYS.DOWN && evt.altKey) {\n self.open();\n evt.preventDefault();\n }\n }\n });\n };\n Select2.prototype._syncAttributes = function () {\n this.options.set('disabled', this.$element.prop('disabled'));\n if (this.isDisabled()) {\n if (this.isOpen()) {\n this.close();\n }\n this.trigger('disable', {});\n } else {\n this.trigger('enable', {});\n }\n };\n Select2.prototype._isChangeMutation = function (mutations) {\n var self = this;\n if (mutations.addedNodes && mutations.addedNodes.length > 0) {\n for (var n = 0; n < mutations.addedNodes.length; n++) {\n var node = mutations.addedNodes[n];\n if (node.selected) {\n return true;\n }\n }\n } else if (mutations.removedNodes && mutations.removedNodes.length > 0) {\n return true;\n } else if (Array.isArray(mutations)) {\n return mutations.some(function (mutation) {\n return self._isChangeMutation(mutation);\n });\n }\n return false;\n };\n Select2.prototype._syncSubtree = function (mutations) {\n var changed = this._isChangeMutation(mutations);\n var self = this;\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 'clear': 'clearing'\n };\n if (args === undefined) {\n args = {};\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 actualTrigger.call(this, preTriggerName, preTriggerArgs);\n if (preTriggerArgs.prevented) {\n args.prevented = true;\n return;\n }\n }\n actualTrigger.call(this, name, args);\n };\n Select2.prototype.toggleDropdown = function () {\n if (this.isDisabled()) {\n return;\n }\n if (this.isOpen()) {\n this.close();\n } else {\n this.open();\n }\n };\n Select2.prototype.open = function () {\n if (this.isOpen()) {\n return;\n }\n if (this.isDisabled()) {\n return;\n }\n this.trigger('query', {});\n };\n Select2.prototype.close = function (evt) {\n if (!this.isOpen()) {\n return;\n }\n this.trigger('close', {\n originalEvent: evt\n });\n };\n\n /**\n * Helper method to abstract the \"enabled\" (not \"disabled\") state of this\n * object.\n *\n * @return {true} if the instance is not disabled.\n * @return {false} if the instance is disabled.\n */\n Select2.prototype.isEnabled = function () {\n return !this.isDisabled();\n };\n\n /**\n * Helper method to abstract the \"disabled\" state of this object.\n *\n * @return {true} if the disabled option is true.\n * @return {false} if the disabled option is false.\n */\n Select2.prototype.isDisabled = function () {\n return this.options.get('disabled');\n };\n Select2.prototype.isOpen = function () {\n return this.$container[0].classList.contains('select2-container--open');\n };\n Select2.prototype.hasFocus = function () {\n return this.$container[0].classList.contains('select2-container--focus');\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 this.$container[0].classList.add('select2-container--focus');\n this.trigger('focus', {});\n };\n Select2.prototype.enable = function (args) {\n if (this.options.get('debug') && window.console && console.warn) {\n console.warn('Select2: The `select2(\"enable\")` method has been deprecated and will' + ' be removed in later Select2 versions. Use $element.prop(\"disabled\")' + ' instead.');\n }\n if (args == null || args.length === 0) {\n args = [true];\n }\n var disabled = !args[0];\n this.$element.prop('disabled', disabled);\n };\n Select2.prototype.data = function () {\n if (this.options.get('debug') && arguments.length > 0 && window.console && console.warn) {\n console.warn('Select2: Data can no longer be set using `select2(\"data\")`. You ' + 'should consider setting the value instead using `$element.val()`.');\n }\n var data = [];\n this.dataAdapter.current(function (currentData) {\n data = currentData;\n });\n return data;\n };\n Select2.prototype.val = function (args) {\n if (this.options.get('debug') && window.console && console.warn) {\n console.warn('Select2: The `select2(\"val\")` method has been deprecated and will be' + ' removed in later Select2 versions. Use $element.val() instead.');\n }\n if (args == null || args.length === 0) {\n return this.$element.val();\n }\n var newVal = args[0];\n if (Array.isArray(newVal)) {\n newVal = newVal.map(function (obj) {\n return obj.toString();\n });\n }\n this.$element.val(newVal).trigger('input').trigger('change');\n };\n Select2.prototype.destroy = function () {\n Utils.RemoveData(this.$container[0]);\n this.$container.remove();\n this._observer.disconnect();\n this._observer = null;\n this._syncA = null;\n this._syncS = null;\n this.$element.off('.select2');\n this.$element.attr('tabindex', Utils.GetData(this.$element[0], 'old-tabindex'));\n this.$element[0].classList.remove('select2-hidden-accessible');\n this.$element.attr('aria-hidden', 'false');\n Utils.RemoveData(this.$element[0]);\n this.$element.removeData('select2');\n this.dataAdapter.destroy();\n this.selection.destroy();\n this.dropdown.destroy();\n this.results.destroy();\n this.dataAdapter = null;\n this.selection = null;\n this.dropdown = null;\n this.results = null;\n };\n Select2.prototype.render = function () {\n var $container = $('' + '' + '' + '');\n $container.attr('dir', this.options.get('dir'));\n this.$container = $container;\n this.$container[0].classList.add('select2-container--' + this.options.get('theme'));\n Utils.StoreData($container[0], 'element', this.$element);\n return $container;\n };\n return Select2;\n });\n S2.define('jquery-mousewheel', ['jquery'], function ($) {\n // Used to shim jQuery.mousewheel for non-full builds.\n return $;\n });\n S2.define('jquery.select2', ['jquery', 'jquery-mousewheel', './select2/core', './select2/defaults', './select2/utils'], function ($, _, Select2, Defaults, Utils) {\n if ($.fn.select2 == null) {\n // All methods that should return the element\n var thisMethods = ['open', 'close', 'destroy'];\n $.fn.select2 = function (options) {\n options = options || {};\n if (typeof options === 'object') {\n this.each(function () {\n var instanceOptions = $.extend(true, {}, options);\n var instance = new Select2($(this), instanceOptions);\n });\n return this;\n } else if (typeof options === 'string') {\n var ret;\n var args = Array.prototype.slice.call(arguments, 1);\n this.each(function () {\n var instance = Utils.GetData(this, 'select2');\n if (instance == null && window.console && console.error) {\n console.error('The select2(\\'' + options + '\\') method was called on an ' + 'element that is not using Select2.');\n }\n ret = instance[options].apply(instance, args);\n });\n\n // Check if we should be returning `this`\n if (thisMethods.indexOf(options) > -1) {\n return this;\n }\n return ret;\n } else {\n throw new Error('Invalid arguments for Select2: ' + options);\n }\n };\n }\n if ($.fn.select2.defaults == null) {\n $.fn.select2.defaults = Defaults;\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});"],"sourceRoot":""}