{"version":3,"file":"../promo-theme-scripts.min.js","sources":["assets/js/src/vendor/rCrumbs.js","node_modules/select2/dist/js/select2.js","assets/js/src/vendor/select2.js","assets/js/src/functions/smooth-scroll.js","assets/js/src/functions/keyboard-navigators.js","assets/js/src/functions/sidebar-behaviors.js","assets/js/src/functions/sidebar-nav.js","assets/js/src/functions/faqs.js","assets/js/src/functions/tabs-component.js"],"sourcesContent":["/* jQuery responsive breadcrumbs plugin jQuery plugin\n * https://github.com/cm0s/jquery-rcrumbs\n *\n * Copyright (c) 2014, Nicolas Forney \n * Released under the MIT licence \n *\n * version: 1.1.0 \n * 2014/02/28\n */\n(function ($, window, document, undefined) {\n 'use strict';\n\n var rcrumbs = 'rcrumbs',\n defaults = {\n version: '1.1.0',\n callback: {\n preCrumbsListDisplay: $.noop, //A function which is executed before the crumbs list is rendered\n preCrumbDisplay: $.noop, //A function which is executed before each crumb is rendered\n postCrumbsListDisplay: $.noop, //A function which is executed after the crumbs list is rendered\n postCrumbDisplay: $.noop //A function which is executed after each crumb is rendered\n },\n ellipsis: true, // Display ellipsis when only the last crumb remains with not enough space to be fully displayed\n windowResize: true, // To activate/deactivate the resizing of the crumbs on window resize event\n nbUncollapsableCrumbs: 2, // Number of crumbs which can not be collapsed.\n nbFixedCrumbs: 0, // Number of crumbs which are always displayed on the left side of the breadcrumbs\n animation: {\n activated: true, // Activate an animation when crumbs are displayed/hidden on a window resize\n speed: 400 // Animation speed (activated option must be set to true)\n }\n };\n\n // Plugin constructor\n function Plugin(element, options) {\n this.element = element;\n this.$element = $(element);\n\n //Merge defaults with given (use deep copy)\n this.options = $.extend(true, {}, defaults, options);\n\n this._defaults = defaults;\n this._name = rcrumbs;\n Plugin.prototype.plugin = this;\n this._init();\n }\n\n Plugin.prototype = {\n\n version: function () {\n return this.options.version;\n },\n\n _init: function () {\n //Ensure rcrumbs class is defined on the element in order to be able to correctly apply stylesheets\n if (!this.$element.hasClass('rcrumbs')) {\n this.$element.addClass('rcrumbs');\n }\n\n //Variables declaration\n this.nbCrumbDisplayed = 0;\n this.$crumbsList = $('ol', this.element);\n this.$crumbs = $('li', this.$crumbsList);\n this.$lastCrumb = this.$crumbs.last();\n this.reversedCrumbs = $('li', this.$crumbsList).get().reverse();\n this.lastNbCrumbDisplayed = 0;\n this.totalCrumbsWidth = 0;\n this.fixedCrumbsWidth = 0;\n this._initCrumbs();\n\n if (this.options.nbFixedCrumbs > 0) {\n var nbCrumbs = this.$crumbs.length;\n this.$crumbs = $('li', this.$crumbsList).slice(this.options.nbFixedCrumbs, nbCrumbs);\n this.reversedCrumbs = $('li', this.$crumbsList).slice(this.options.nbFixedCrumbs, nbCrumbs).get().reverse();\n var that = this;\n $('li', this.$crumbsList).slice(0, this.options.nbFixedCrumbs).each(function (index, crumb) {\n that.totalCrumbsWidth += $(crumb).data('width');\n $(crumb).addClass('show-crumb');\n\t\t\t\t\t$(crumb).removeClass('hide-crumb');\n });\n }\n\n this._showOrHideCrumbsList(true);\n\n if (this.options.windowResize) {\n this._showOrHideCrumbsListOnWindowResize();\n }\n },\n\n /**\n * Get the width of a hidden DOM element without displaying it in the browser.\n * @param element DOM element from which the width will be retrieved.\n */\n _getHiddenElWidth: function (element) {\n var result,\n elementClone = $(element).clone(false);\n\n elementClone.css({\n visibility: 'hidden',\n position: 'absolute'\n });\n\n elementClone.appendTo(this.$crumbsList);\n\n result = elementClone.outerWidth();\n\n elementClone.remove();\n\n return result;\n },\n\n _initCrumbs: function () {\n var that = this;\n\n //Remove text node in order to avoid displaying white spaces between li elements and thus make width\n //calculation for the breadcrumbs resize easier.\n $(this.$crumbsList).contents().filter(function () {\n return this.nodeType === 3; //3 => Text node\n }).remove();\n\n //For each li element save its width\n $.each(this.$crumbs, function (key, value) {\n var $crumb = $(this);\n that._storeCrumbWidth($crumb);\n });\n\n if (this.options.nbFixedCrumbs > 0) {\n $(this.$crumbs).slice(0, this.options.nbFixedCrumbs).each(function (index, crumb) {\n that.fixedCrumbsWidth += $(crumb).data('width');\n });\n }\n },\n\n /**\n * Save width of the li element passed as parameter\n * @param $crumb li element on which its width will be stored\n * @return calculated crumb width\n */\n _storeCrumbWidth: function ($crumb) {\n var crumbWidth = this._getHiddenElWidth($crumb);\n $crumb.data('width', crumbWidth);\n return crumbWidth;\n },\n\n /**\n * @param disableAnimation used to disable the animation even if the animation.activated option is set to true.\n */\n _showOrHideCrumbsList: function (disableAnimation) {\n var that = this;\n this.remainingSpaceToDisplayCrumbs = this.$element.outerWidth();\n this.nbCrumbDisplayed = 0;\n this.totalCrumbsWidth = 0;\n\n if (this.options.nbFixedCrumbs > 0) {\n this.remainingSpaceToDisplayCrumbs -= this.fixedCrumbsWidth;\n $('li', this.$crumbsList).slice(0, this.options.nbFixedCrumbs).each(function (index, crumb) {\n that.totalCrumbsWidth += $(crumb).data('width');\n });\n }\n this.nextCrumbToShowWidth = undefined;\n\n this.options.callback.preCrumbsListDisplay(this);\n\n //It's important to loop through a reversed list in order to ensure we first try to display the last element\n $.each(this.reversedCrumbs, function (key, value) {\n var $crumb = $(this),\n $nextCrumb = $(that.reversedCrumbs[key + 1]); //May return empty jQuery object\n\n that._showOrHideCrumb($crumb, $nextCrumb, key, disableAnimation);\n });\n\n this.lastNbCrumbDisplayed = this.nbCrumbDisplayed;\n\n this.options.callback.postCrumbsListDisplay(this);\n\n },\n\n _showOrHideCrumb: function ($crumb, $nextCrumb, crumbPosition, disableAnimation) {\n this.options.callback.preCrumbDisplay($crumb);\n var that = this;\n this.remainingSpaceToDisplayCrumbs -= $crumb.data('width');\n\n if (crumbPosition < this.options.nbUncollapsableCrumbs) {\n showCrumbWithOrWithoutAnimation();\n\n if (this.remainingSpaceToDisplayCrumbs < 0) {\n enableEllipsis(this.$lastCrumb);\n }\n\n this.totalCrumbsWidth += $crumb.data('width');\n } else {\n if (this.remainingSpaceToDisplayCrumbs >= 0) {\n showCrumbWithOrWithoutAnimation();\n this.totalCrumbsWidth += $crumb.data('width');\n } else {\n if (this.lastNbCrumbDisplayed > this.nbCrumbDisplayed - 1 && this.options.animation.activated) {\n hideCrumbWithAnimation();\n } else {\n $crumb.removeClass('show-crumb');\n\t\t\t\t\t\t$crumb.addClass('hide-crumb');\n }\n\n if (!this.nextCrumbToShowWidth) {\n this.nextCrumbToShowWidth = $crumb.data('width');\n }\n }\n }\n\n function showCrumbWithOrWithoutAnimation() {\n $crumb.addClass('show-crumb');\n\t\t\t\t$crumb.removeClass('hide-crumb');\n\n if (that.lastNbCrumbDisplayed < (that.nbCrumbDisplayed + 1) && that.options.animation.activated && !disableAnimation) {\n $crumb.width(0);\n $crumb.animate({width: $crumb.data('width')}, that.options.animation.speed, function () {\n that.options.callback.postCrumbDisplay($crumb);\n });\n } else {\n that.options.callback.postCrumbDisplay($crumb);\n }\n that.nbCrumbDisplayed += 1;\n }\n\n function hideCrumbWithAnimation() {\n $crumb.animate({width: 0}, that.options.animation.speed, function () {\n $crumb.removeClass('show-crumb');\n\t\t\t\t\t$crumb.addClass('hide-crumb');\n });\n }\n\n function enableEllipsis($crumb) {\n $crumb.css({\n 'width': (that.remainingSpaceToDisplayCrumbs + $crumb.data('width')) + 'px'\n });\n $crumb.addClass('ellipsis');\n }\n\n function disableEllipsis($crumb) {\n $crumb.css({\n 'width': 'auto'\n });\n $crumb.removeClass('ellipsis');\n }\n },\n\n _showOrHideCrumbsListOnWindowResize: function () {\n var that = this;\n $(window).resize(function () {\n var rcrumbWidth = that.$element.outerWidth();\n if (rcrumbWidth < that.totalCrumbsWidth || (that.totalCrumbsWidth + that.nextCrumbToShowWidth) < rcrumbWidth) {\n $.each(that.reversedCrumbs, function (key, value) { //Stop all crumbs animations\n var $currentCrumb = $(this);\n $currentCrumb.stop(true, true);\n });\n\n that._showOrHideCrumbsList();\n }\n //Disable ellipsis on the last crumb when there is enough space\n if (rcrumbWidth >= that.totalCrumbsWidth && that.$lastCrumb.hasClass('ellipsis')) {\n that._disableEllipsis(that.$lastCrumb);\n }\n });\n },\n\n _disableEllipsis: function ($crumb) {\n $crumb.css({\n 'width': 'auto'\n });\n $crumb.removeClass('ellipsis');\n }\n };\n\n\n $.fn[rcrumbs] = function (methodNameOrObject) {\n // When the function parameter is a string the value is used to call the corresponding plugin method. If the\n // argument is an object or a falsy value the Plugin is instantiated\n // Only public method (not prefixed with an underscore) can be called.\n if (Plugin.prototype[methodNameOrObject] && (methodNameOrObject.indexOf('_') === -1)) {\n var plugin = $.data(this[0], 'plugin_' + rcrumbs);\n if (plugin) {\n //slice is used to pass all argument following the method name\n return Plugin.prototype[methodNameOrObject].apply(plugin, Array.prototype.slice.call(arguments, 1));\n } else {\n $.error('jquery.' + rcrumbs + ' plugin must be initialized first on the element');\n }\n } else if (typeof methodNameOrObject === 'object' || !methodNameOrObject) {\n // Plugin wrapper around the constructor to prevent against multiple instantiations\n return this.each(function () {\n if (!$.data(this, 'plugin_' + rcrumbs)) {\n $.data(this, 'plugin_' + rcrumbs, new Plugin(this, methodNameOrObject));\n } else {\n $.error('jquery.' + rcrumbs + ' plugin cannot be instantiated multiple times on same element');\n }\n });\n } else {\n $.error('Method ' + methodNameOrObject + ' does not exist on jquery.' + rcrumbs);\n }\n };\n})(jQuery, window, document);\n\n\n// Init rCrumbs plugin\n//----------------------------------------------\njQuery(document).ready(function($) {\n \n if ($('#rcrumbs')[0]) {\n $('#rcrumbs').rcrumbs({\n ellipsis: true,\n nbFixedCrumbs: 0,\n nbUncollapsableCrumbs: 2\n });\n }\n\n});\n","/*!\n * Select2 4.0.13\n * https://select2.github.io\n *\n * Released under the MIT license\n * https://github.com/select2/select2/blob/master/LICENSE.md\n */\n;(function (factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(['jquery'], factory);\n } else if (typeof module === 'object' && module.exports) {\n // Node/CommonJS\n module.exports = function (root, jQuery) {\n if (jQuery === undefined) {\n // require('jQuery') returns a factory that requires window to\n // build a jQuery instance, we normalize how we use modules\n // that require this pattern but the window provided is a noop\n // if it's defined (how jquery works)\n if (typeof window !== 'undefined') {\n jQuery = require('jquery');\n }\n else {\n jQuery = require('jquery')(root);\n }\n }\n factory(jQuery);\n return jQuery;\n };\n } else {\n // Browser globals\n factory(jQuery);\n }\n} (function (jQuery) {\n // This is needed so we can catch the AMD loader configuration and use it\n // The inner file should be wrapped (by `banner.start.js`) in a function that\n // returns the AMD loader references.\n var S2 =(function () {\n // Restore the Select2 AMD loader so it can be used\n // Needed mostly in the language files, where the loader is not inserted\n if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) {\n var S2 = jQuery.fn.select2.amd;\n }\nvar S2;(function () { if (!S2 || !S2.requirejs) {\nif (!S2) { S2 = {}; } else { require = S2; }\n/**\n * @license almond 0.3.3 Copyright jQuery Foundation and other contributors.\n * Released under MIT license, http://github.com/requirejs/almond/LICENSE\n */\n//Going sloppy to avoid 'use strict' string cost, but strict practices should\n//be followed.\n/*global setTimeout: false */\n\nvar requirejs, require, define;\n(function (undef) {\n var main, req, makeMap, handlers,\n defined = {},\n waiting = {},\n config = {},\n defining = {},\n hasOwn = Object.prototype.hasOwnProperty,\n aps = [].slice,\n jsSuffixRegExp = /\\.js$/;\n\n function hasProp(obj, prop) {\n return hasOwn.call(obj, prop);\n }\n\n /**\n * Given a relative module name, like ./something, normalize it to\n * a real name that can be mapped to a path.\n * @param {String} name the relative name\n * @param {String} baseName a real name that the name arg is relative\n * to.\n * @returns {String} normalized name\n */\n function normalize(name, baseName) {\n var nameParts, nameSegment, mapValue, foundMap, lastIndex,\n foundI, foundStarMap, starI, i, j, part, normalizedBaseParts,\n baseParts = baseName && baseName.split(\"/\"),\n map = config.map,\n starMap = (map && map['*']) || {};\n\n //Adjust any relative paths.\n if (name) {\n name = name.split('/');\n lastIndex = name.length - 1;\n\n // If wanting node ID compatibility, strip .js from end\n // of IDs. Have to do this here, and not in nameToUrl\n // because node allows either .js or non .js to map\n // to same file.\n if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {\n name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');\n }\n\n // Starts with a '.' so need the baseName\n if (name[0].charAt(0) === '.' && baseParts) {\n //Convert baseName to array, and lop off the last part,\n //so that . matches that 'directory' and not name of the baseName's\n //module. For instance, baseName of 'one/two/three', maps to\n //'one/two/three.js', but we want the directory, 'one/two' for\n //this normalization.\n normalizedBaseParts = baseParts.slice(0, baseParts.length - 1);\n name = normalizedBaseParts.concat(name);\n }\n\n //start trimDots\n for (i = 0; i < name.length; i++) {\n part = name[i];\n if (part === '.') {\n name.splice(i, 1);\n i -= 1;\n } else if (part === '..') {\n // If at the start, or previous value is still ..,\n // keep them so that when converted to a path it may\n // still work when converted to a path, even though\n // as an ID it is less than ideal. In larger point\n // releases, may be better to just kick out an error.\n if (i === 0 || (i === 1 && name[2] === '..') || name[i - 1] === '..') {\n continue;\n } else if (i > 0) {\n name.splice(i - 1, 2);\n i -= 2;\n }\n }\n }\n //end trimDots\n\n name = name.join('/');\n }\n\n //Apply map config if available.\n if ((baseParts || starMap) && map) {\n nameParts = name.split('/');\n\n for (i = nameParts.length; i > 0; i -= 1) {\n nameSegment = nameParts.slice(0, i).join(\"/\");\n\n if (baseParts) {\n //Find the longest baseName segment match in the config.\n //So, do joins on the biggest to smallest lengths of baseParts.\n for (j = baseParts.length; j > 0; j -= 1) {\n mapValue = map[baseParts.slice(0, j).join('/')];\n\n //baseName segment has config, find if it has one for\n //this name.\n if (mapValue) {\n mapValue = mapValue[nameSegment];\n if (mapValue) {\n //Match, update name to the new value.\n foundMap = mapValue;\n foundI = i;\n break;\n }\n }\n }\n }\n\n if (foundMap) {\n break;\n }\n\n //Check for a star map match, but just hold on to it,\n //if there is a shorter segment match later in a matching\n //config, then favor over this star map.\n if (!foundStarMap && starMap && starMap[nameSegment]) {\n foundStarMap = starMap[nameSegment];\n starI = i;\n }\n }\n\n if (!foundMap && foundStarMap) {\n foundMap = foundStarMap;\n foundI = starI;\n }\n\n if (foundMap) {\n nameParts.splice(0, foundI, foundMap);\n name = nameParts.join('/');\n }\n }\n\n return name;\n }\n\n function makeRequire(relName, forceSync) {\n return function () {\n //A version of a require function that passes a moduleName\n //value for items that may need to\n //look up paths relative to the moduleName\n var args = aps.call(arguments, 0);\n\n //If first arg is not require('string'), and there is only\n //one arg, it is the array form without a callback. Insert\n //a null so that the following concat is correct.\n if (typeof args[0] !== 'string' && args.length === 1) {\n args.push(null);\n }\n return req.apply(undef, args.concat([relName, forceSync]));\n };\n }\n\n function makeNormalize(relName) {\n return function (name) {\n return normalize(name, relName);\n };\n }\n\n function makeLoad(depName) {\n return function (value) {\n defined[depName] = value;\n };\n }\n\n function callDep(name) {\n if (hasProp(waiting, name)) {\n var args = waiting[name];\n delete waiting[name];\n defining[name] = true;\n main.apply(undef, args);\n }\n\n if (!hasProp(defined, name) && !hasProp(defining, name)) {\n throw new Error('No ' + name);\n }\n return defined[name];\n }\n\n //Turns a plugin!resource to [plugin, resource]\n //with the plugin being undefined if the name\n //did not have a plugin prefix.\n function splitPrefix(name) {\n var prefix,\n index = name ? name.indexOf('!') : -1;\n if (index > -1) {\n prefix = name.substring(0, index);\n name = name.substring(index + 1, name.length);\n }\n return [prefix, name];\n }\n\n //Creates a parts array for a relName where first part is plugin ID,\n //second part is resource ID. Assumes relName has already been normalized.\n function makeRelParts(relName) {\n return relName ? splitPrefix(relName) : [];\n }\n\n /**\n * Makes a name map, normalizing the name, and using a plugin\n * for normalization if necessary. Grabs a ref to plugin\n * too, as an optimization.\n */\n makeMap = function (name, relParts) {\n var plugin,\n parts = splitPrefix(name),\n prefix = parts[0],\n relResourceName = relParts[1];\n\n name = parts[1];\n\n if (prefix) {\n prefix = normalize(prefix, relResourceName);\n plugin = callDep(prefix);\n }\n\n //Normalize according\n if (prefix) {\n if (plugin && plugin.normalize) {\n name = plugin.normalize(name, makeNormalize(relResourceName));\n } else {\n name = normalize(name, relResourceName);\n }\n } else {\n name = normalize(name, relResourceName);\n parts = splitPrefix(name);\n prefix = parts[0];\n name = parts[1];\n if (prefix) {\n plugin = callDep(prefix);\n }\n }\n\n //Using ridiculous property names for space reasons\n return {\n f: prefix ? prefix + '!' + name : name, //fullName\n n: name,\n pr: prefix,\n p: plugin\n };\n };\n\n function makeConfig(name) {\n return function () {\n return (config && config.config && config.config[name]) || {};\n };\n }\n\n handlers = {\n require: function (name) {\n return makeRequire(name);\n },\n exports: function (name) {\n var e = defined[name];\n if (typeof e !== 'undefined') {\n return e;\n } else {\n return (defined[name] = {});\n }\n },\n module: function (name) {\n return {\n id: name,\n uri: '',\n exports: defined[name],\n config: makeConfig(name)\n };\n }\n };\n\n main = function (name, deps, callback, relName) {\n var cjsModule, depName, ret, map, i, relParts,\n args = [],\n callbackType = typeof callback,\n usingExports;\n\n //Use name if no relName\n relName = relName || name;\n relParts = makeRelParts(relName);\n\n //Call the callback to define the module, if necessary.\n if (callbackType === 'undefined' || callbackType === 'function') {\n //Pull out the defined dependencies and pass the ordered\n //values to the callback.\n //Default to [require, exports, module] if no deps\n deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;\n for (i = 0; i < deps.length; i += 1) {\n map = makeMap(deps[i], relParts);\n depName = map.f;\n\n //Fast path CommonJS standard dependencies.\n if (depName === \"require\") {\n args[i] = handlers.require(name);\n } else if (depName === \"exports\") {\n //CommonJS module spec 1.1\n args[i] = handlers.exports(name);\n usingExports = true;\n } else if (depName === \"module\") {\n //CommonJS module spec 1.1\n cjsModule = args[i] = handlers.module(name);\n } else if (hasProp(defined, depName) ||\n hasProp(waiting, depName) ||\n hasProp(defining, depName)) {\n args[i] = callDep(depName);\n } else if (map.p) {\n map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});\n args[i] = defined[depName];\n } else {\n throw new Error(name + ' missing ' + depName);\n }\n }\n\n ret = callback ? callback.apply(defined[name], args) : undefined;\n\n if (name) {\n //If setting exports via \"module\" is in play,\n //favor that over return value and exports. After that,\n //favor a non-undefined return value over exports use.\n if (cjsModule && cjsModule.exports !== undef &&\n cjsModule.exports !== defined[name]) {\n defined[name] = cjsModule.exports;\n } else if (ret !== undef || !usingExports) {\n //Use the return value from the function.\n defined[name] = ret;\n }\n }\n } else if (name) {\n //May just be an object definition for the module. Only\n //worry about defining if have a module name.\n defined[name] = callback;\n }\n };\n\n requirejs = require = req = function (deps, callback, relName, forceSync, alt) {\n if (typeof deps === \"string\") {\n if (handlers[deps]) {\n //callback in this case is really relName\n return handlers[deps](callback);\n }\n //Just return the module wanted. In this scenario, the\n //deps arg is the module name, and second arg (if passed)\n //is just the relName.\n //Normalize module name, if it contains . or ..\n return callDep(makeMap(deps, makeRelParts(callback)).f);\n } else if (!deps.splice) {\n //deps is a config object, not an array.\n config = deps;\n if (config.deps) {\n req(config.deps, config.callback);\n }\n if (!callback) {\n return;\n }\n\n if (callback.splice) {\n //callback is an array, which means it is a dependency list.\n //Adjust args if there are dependencies\n deps = callback;\n callback = relName;\n relName = null;\n } else {\n deps = undef;\n }\n }\n\n //Support require(['a'])\n callback = callback || function () {};\n\n //If relName is a function, it is an errback handler,\n //so remove it.\n if (typeof relName === 'function') {\n relName = forceSync;\n forceSync = alt;\n }\n\n //Simulate async callback;\n if (forceSync) {\n main(undef, deps, callback, relName);\n } else {\n //Using a non-zero value because of concern for what old browsers\n //do, and latest browsers \"upgrade\" to 4 if lower value is used:\n //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout:\n //If want a value immediately, use require('id') instead -- something\n //that works in almond on the global level, but not guaranteed and\n //unlikely to work in other AMD implementations.\n setTimeout(function () {\n main(undef, deps, callback, relName);\n }, 4);\n }\n\n return req;\n };\n\n /**\n * Just drops the config on the floor, but returns req in case\n * the config return value is used.\n */\n req.config = function (cfg) {\n return req(cfg);\n };\n\n /**\n * Expose module registry for debugging and tooling\n */\n requirejs._defined = defined;\n\n define = function (name, deps, callback) {\n if (typeof name !== 'string') {\n throw new Error('See almond README: incorrect module build, no module name');\n }\n\n //This module may not have dependencies\n if (!deps.splice) {\n //deps is not an array, so probably means\n //an object literal or factory function for\n //the value. Adjust args.\n callback = deps;\n deps = [];\n }\n\n if (!hasProp(defined, name) && !hasProp(waiting, name)) {\n waiting[name] = [name, deps, callback];\n }\n };\n\n define.amd = {\n jQuery: true\n };\n}());\n\nS2.requirejs = requirejs;S2.require = require;S2.define = define;\n}\n}());\nS2.define(\"almond\", function(){});\n\n/* global jQuery:false, $:false */\nS2.define('jquery',[],function () {\n var _$ = jQuery || $;\n\n if (_$ == null && console && console.error) {\n console.error(\n 'Select2: An instance of jQuery or a jQuery-compatible library was not ' +\n 'found. Make sure that you are including jQuery before Select2 on your ' +\n 'web page.'\n );\n }\n\n return _$;\n});\n\nS2.define('select2/utils',[\n 'jquery'\n], function ($) {\n var Utils = {};\n\n Utils.Extend = function (ChildClass, SuperClass) {\n var __hasProp = {}.hasOwnProperty;\n\n function BaseConstructor () {\n this.constructor = ChildClass;\n }\n\n for (var key in SuperClass) {\n if (__hasProp.call(SuperClass, key)) {\n ChildClass[key] = SuperClass[key];\n }\n }\n\n BaseConstructor.prototype = SuperClass.prototype;\n ChildClass.prototype = new BaseConstructor();\n ChildClass.__super__ = SuperClass.prototype;\n\n return ChildClass;\n };\n\n function getMethods (theClass) {\n var proto = theClass.prototype;\n\n var methods = [];\n\n for (var methodName in proto) {\n var m = proto[methodName];\n\n if (typeof m !== 'function') {\n continue;\n }\n\n if (methodName === 'constructor') {\n continue;\n }\n\n methods.push(methodName);\n }\n\n return methods;\n }\n\n Utils.Decorate = function (SuperClass, DecoratorClass) {\n var decoratedMethods = getMethods(DecoratorClass);\n var superMethods = getMethods(SuperClass);\n\n function DecoratedClass () {\n var unshift = Array.prototype.unshift;\n\n var argCount = DecoratorClass.prototype.constructor.length;\n\n var calledConstructor = SuperClass.prototype.constructor;\n\n if (argCount > 0) {\n unshift.call(arguments, SuperClass.prototype.constructor);\n\n calledConstructor = DecoratorClass.prototype.constructor;\n }\n\n calledConstructor.apply(this, arguments);\n }\n\n DecoratorClass.displayName = SuperClass.displayName;\n\n function ctr () {\n this.constructor = DecoratedClass;\n }\n\n DecoratedClass.prototype = new ctr();\n\n for (var m = 0; m < superMethods.length; m++) {\n var superMethod = superMethods[m];\n\n DecoratedClass.prototype[superMethod] =\n SuperClass.prototype[superMethod];\n }\n\n var calledMethod = function (methodName) {\n // Stub out the original method if it's not decorating an actual method\n var originalMethod = function () {};\n\n if (methodName in DecoratedClass.prototype) {\n originalMethod = DecoratedClass.prototype[methodName];\n }\n\n var decoratedMethod = DecoratorClass.prototype[methodName];\n\n return function () {\n var unshift = Array.prototype.unshift;\n\n unshift.call(arguments, originalMethod);\n\n return decoratedMethod.apply(this, arguments);\n };\n };\n\n for (var d = 0; d < decoratedMethods.length; d++) {\n var decoratedMethod = decoratedMethods[d];\n\n DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod);\n }\n\n return DecoratedClass;\n };\n\n var Observable = function () {\n this.listeners = {};\n };\n\n Observable.prototype.on = function (event, callback) {\n this.listeners = this.listeners || {};\n\n if (event in this.listeners) {\n this.listeners[event].push(callback);\n } else {\n this.listeners[event] = [callback];\n }\n };\n\n Observable.prototype.trigger = function (event) {\n var slice = Array.prototype.slice;\n var params = slice.call(arguments, 1);\n\n this.listeners = this.listeners || {};\n\n // Params should always come in as an array\n if (params == null) {\n params = [];\n }\n\n // If there are no arguments to the event, use a temporary object\n if (params.length === 0) {\n params.push({});\n }\n\n // Set the `_type` of the first object to the event\n params[0]._type = event;\n\n if (event in this.listeners) {\n this.invoke(this.listeners[event], slice.call(arguments, 1));\n }\n\n if ('*' in this.listeners) {\n this.invoke(this.listeners['*'], arguments);\n }\n };\n\n Observable.prototype.invoke = function (listeners, params) {\n for (var i = 0, len = listeners.length; i < len; i++) {\n listeners[i].apply(this, params);\n }\n };\n\n Utils.Observable = Observable;\n\n Utils.generateChars = function (length) {\n var chars = '';\n\n for (var i = 0; i < length; i++) {\n var randomChar = Math.floor(Math.random() * 36);\n chars += randomChar.toString(36);\n }\n\n return chars;\n };\n\n Utils.bind = function (func, context) {\n return function () {\n func.apply(context, arguments);\n };\n };\n\n Utils._convertData = function (data) {\n for (var originalKey in data) {\n var keys = originalKey.split('-');\n\n var dataLevel = data;\n\n if (keys.length === 1) {\n continue;\n }\n\n for (var k = 0; k < keys.length; k++) {\n var key = keys[k];\n\n // Lowercase the first letter\n // By default, dash-separated becomes camelCase\n key = key.substring(0, 1).toLowerCase() + key.substring(1);\n\n if (!(key in dataLevel)) {\n dataLevel[key] = {};\n }\n\n if (k == keys.length - 1) {\n dataLevel[key] = data[originalKey];\n }\n\n dataLevel = dataLevel[key];\n }\n\n delete data[originalKey];\n }\n\n return data;\n };\n\n Utils.hasScroll = function (index, el) {\n // Adapted from the function created by @ShadowScripter\n // and adapted by @BillBarry on the Stack Exchange Code Review website.\n // The original code can be found at\n // http://codereview.stackexchange.com/q/13338\n // and was designed to be used with the Sizzle selector engine.\n\n var $el = $(el);\n var overflowX = el.style.overflowX;\n var overflowY = el.style.overflowY;\n\n //Check both x and y declarations\n if (overflowX === overflowY &&\n (overflowY === 'hidden' || overflowY === 'visible')) {\n return false;\n }\n\n if (overflowX === 'scroll' || overflowY === 'scroll') {\n return true;\n }\n\n return ($el.innerHeight() < el.scrollHeight ||\n $el.innerWidth() < el.scrollWidth);\n };\n\n Utils.escapeMarkup = function (markup) {\n var replaceMap = {\n '\\\\': '\',\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n '\\'': ''',\n '/': '/'\n };\n\n // Do not try to escape the markup if it's not a string\n if (typeof markup !== 'string') {\n return markup;\n }\n\n return String(markup).replace(/[&<>\"'\\/\\\\]/g, function (match) {\n return replaceMap[match];\n });\n };\n\n // Append an array of jQuery nodes to a given element.\n Utils.appendMany = function ($element, $nodes) {\n // jQuery 1.7.x does not support $.fn.append() with an array\n // Fall back to a jQuery object collection using $.fn.add()\n if ($.fn.jquery.substr(0, 3) === '1.7') {\n var $jqNodes = $();\n\n $.map($nodes, function (node) {\n $jqNodes = $jqNodes.add(node);\n });\n\n $nodes = $jqNodes;\n }\n\n $element.append($nodes);\n };\n\n // Cache objects in Utils.__cache instead of $.data (see #4346)\n Utils.__cache = {};\n\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.\n // If an id already exists, it simply returns it.\n\n var select2Id = element.getAttribute('data-select2-id');\n if (select2Id == null) {\n // If element has id, use it.\n if (element.id) {\n select2Id = element.id;\n element.setAttribute('data-select2-id', select2Id);\n } else {\n element.setAttribute('data-select2-id', ++id);\n select2Id = id.toString();\n }\n }\n return select2Id;\n };\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\n Utils.__cache[id][name] = value;\n };\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 return $(element).data(name); // Fallback to HTML5 data attribs.\n } else {\n return Utils.__cache[id];\n }\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\n element.removeAttribute('data-select2-id');\n };\n\n return Utils;\n});\n\nS2.define('select2/results',[\n 'jquery',\n './utils'\n], function ($, Utils) {\n function Results ($element, options, dataAdapter) {\n this.$element = $element;\n this.data = dataAdapter;\n this.options = options;\n\n Results.__super__.constructor.call(this);\n }\n\n Utils.Extend(Results, Utils.Observable);\n\n Results.prototype.render = function () {\n var $results = $(\n ''\n );\n\n if (this.options.get('multiple')) {\n $results.attr('aria-multiselectable', 'true');\n }\n\n this.$results = $results;\n\n return $results;\n };\n\n Results.prototype.clear = function () {\n this.$results.empty();\n };\n\n Results.prototype.displayMessage = function (params) {\n var escapeMarkup = this.options.get('escapeMarkup');\n\n this.clear();\n this.hideLoading();\n\n var $message = $(\n '
  • '\n );\n\n var message = this.options.get('translations').get(params.message);\n\n $message.append(\n escapeMarkup(\n message(params.args)\n )\n );\n\n $message[0].className += ' select2-results__message';\n\n this.$results.append($message);\n };\n\n Results.prototype.hideMessages = function () {\n this.$results.find('.select2-results__message').remove();\n };\n\n Results.prototype.append = function (data) {\n this.hideLoading();\n\n var $options = [];\n\n if (data.results == null || data.results.length === 0) {\n if (this.$results.children().length === 0) {\n this.trigger('results:message', {\n message: 'noResults'\n });\n }\n\n return;\n }\n\n data.results = this.sort(data.results);\n\n for (var d = 0; d < data.results.length; d++) {\n var item = data.results[d];\n\n var $option = this.option(item);\n\n $options.push($option);\n }\n\n this.$results.append($options);\n };\n\n Results.prototype.position = function ($results, $dropdown) {\n var $resultsContainer = $dropdown.find('.select2-results');\n $resultsContainer.append($results);\n };\n\n Results.prototype.sort = function (data) {\n var sorter = this.options.get('sorter');\n\n return sorter(data);\n };\n\n Results.prototype.highlightFirstItem = function () {\n var $options = this.$results\n .find('.select2-results__option[aria-selected]');\n\n var $selected = $options.filter('[aria-selected=true]');\n\n // Check if there are any selected options\n if ($selected.length > 0) {\n // If there are selected options, highlight the first\n $selected.first().trigger('mouseenter');\n } else {\n // If there are no selected options, highlight the first option\n // in the dropdown\n $options.first().trigger('mouseenter');\n }\n\n this.ensureHighlightVisible();\n };\n\n Results.prototype.setClasses = function () {\n var self = this;\n\n this.data.current(function (selected) {\n var selectedIds = $.map(selected, function (s) {\n return s.id.toString();\n });\n\n var $options = self.$results\n .find('.select2-results__option[aria-selected]');\n\n $options.each(function () {\n var $option = $(this);\n\n var item = Utils.GetData(this, 'data');\n\n // id needs to be converted to a string when comparing\n var id = '' + item.id;\n\n if ((item.element != null && item.element.selected) ||\n (item.element == null && $.inArray(id, selectedIds) > -1)) {\n $option.attr('aria-selected', 'true');\n } else {\n $option.attr('aria-selected', 'false');\n }\n });\n\n });\n };\n\n Results.prototype.showLoading = function (params) {\n this.hideLoading();\n\n var loadingMore = this.options.get('translations').get('searching');\n\n var loading = {\n disabled: true,\n loading: true,\n text: loadingMore(params)\n };\n var $loading = this.option(loading);\n $loading.className += ' loading-results';\n\n this.$results.prepend($loading);\n };\n\n Results.prototype.hideLoading = function () {\n this.$results.find('.loading-results').remove();\n };\n\n Results.prototype.option = function (data) {\n var option = document.createElement('li');\n option.className = 'select2-results__option';\n\n var attrs = {\n 'role': 'option',\n 'aria-selected': 'false'\n };\n\n var matches = window.Element.prototype.matches ||\n window.Element.prototype.msMatchesSelector ||\n window.Element.prototype.webkitMatchesSelector;\n\n if ((data.element != null && matches.call(data.element, ':disabled')) ||\n (data.element == null && data.disabled)) {\n delete attrs['aria-selected'];\n attrs['aria-disabled'] = 'true';\n }\n\n if (data.id == null) {\n delete attrs['aria-selected'];\n }\n\n if (data._resultId != null) {\n option.id = data._resultId;\n }\n\n if (data.title) {\n option.title = data.title;\n }\n\n if (data.children) {\n attrs.role = 'group';\n attrs['aria-label'] = data.text;\n delete attrs['aria-selected'];\n }\n\n for (var attr in attrs) {\n var val = attrs[attr];\n\n option.setAttribute(attr, val);\n }\n\n if (data.children) {\n var $option = $(option);\n\n var label = document.createElement('strong');\n label.className = 'select2-results__group';\n\n var $label = $(label);\n this.template(data, label);\n\n var $children = [];\n\n for (var c = 0; c < data.children.length; c++) {\n var child = data.children[c];\n\n var $child = this.option(child);\n\n $children.push($child);\n }\n\n var $childrenContainer = $('', {\n 'class': 'select2-results__options select2-results__options--nested'\n });\n\n $childrenContainer.append($children);\n\n $option.append(label);\n $option.append($childrenContainer);\n } else {\n this.template(data, option);\n }\n\n Utils.StoreData(option, 'data', data);\n\n return option;\n };\n\n Results.prototype.bind = function (container, $container) {\n var self = this;\n\n var id = container.id + '-results';\n\n this.$results.attr('id', id);\n\n container.on('results:all', function (params) {\n self.clear();\n self.append(params.data);\n\n if (container.isOpen()) {\n self.setClasses();\n self.highlightFirstItem();\n }\n });\n\n container.on('results:append', function (params) {\n self.append(params.data);\n\n if (container.isOpen()) {\n self.setClasses();\n }\n });\n\n container.on('query', function (params) {\n self.hideMessages();\n self.showLoading(params);\n });\n\n container.on('select', function () {\n if (!container.isOpen()) {\n return;\n }\n\n self.setClasses();\n\n if (self.options.get('scrollAfterSelect')) {\n self.highlightFirstItem();\n }\n });\n\n container.on('unselect', function () {\n if (!container.isOpen()) {\n return;\n }\n\n self.setClasses();\n\n if (self.options.get('scrollAfterSelect')) {\n self.highlightFirstItem();\n }\n });\n\n container.on('open', function () {\n // When the dropdown is open, aria-expended=\"true\"\n self.$results.attr('aria-expanded', 'true');\n self.$results.attr('aria-hidden', 'false');\n\n self.setClasses();\n self.ensureHighlightVisible();\n });\n\n container.on('close', function () {\n // When the dropdown is closed, aria-expended=\"false\"\n self.$results.attr('aria-expanded', 'false');\n self.$results.attr('aria-hidden', 'true');\n self.$results.removeAttr('aria-activedescendant');\n });\n\n container.on('results:toggle', function () {\n var $highlighted = self.getHighlightedResults();\n\n if ($highlighted.length === 0) {\n return;\n }\n\n $highlighted.trigger('mouseup');\n });\n\n container.on('results:select', function () {\n var $highlighted = self.getHighlightedResults();\n\n if ($highlighted.length === 0) {\n return;\n }\n\n var data = Utils.GetData($highlighted[0], 'data');\n\n if ($highlighted.attr('aria-selected') == 'true') {\n self.trigger('close', {});\n } else {\n self.trigger('select', {\n data: data\n });\n }\n });\n\n container.on('results:previous', function () {\n var $highlighted = self.getHighlightedResults();\n\n var $options = self.$results.find('[aria-selected]');\n\n var currentIndex = $options.index($highlighted);\n\n // If we are already at the top, don't move further\n // If no options, currentIndex will be -1\n if (currentIndex <= 0) {\n return;\n }\n\n var nextIndex = currentIndex - 1;\n\n // If none are highlighted, highlight the first\n if ($highlighted.length === 0) {\n nextIndex = 0;\n }\n\n var $next = $options.eq(nextIndex);\n\n $next.trigger('mouseenter');\n\n var currentOffset = self.$results.offset().top;\n var nextTop = $next.offset().top;\n var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset);\n\n if (nextIndex === 0) {\n self.$results.scrollTop(0);\n } else if (nextTop - currentOffset < 0) {\n self.$results.scrollTop(nextOffset);\n }\n });\n\n container.on('results:next', function () {\n var $highlighted = self.getHighlightedResults();\n\n var $options = self.$results.find('[aria-selected]');\n\n var currentIndex = $options.index($highlighted);\n\n var nextIndex = currentIndex + 1;\n\n // If we are at the last option, stay there\n if (nextIndex >= $options.length) {\n return;\n }\n\n var $next = $options.eq(nextIndex);\n\n $next.trigger('mouseenter');\n\n var currentOffset = self.$results.offset().top +\n self.$results.outerHeight(false);\n var nextBottom = $next.offset().top + $next.outerHeight(false);\n var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset;\n\n if (nextIndex === 0) {\n self.$results.scrollTop(0);\n } else if (nextBottom > currentOffset) {\n self.$results.scrollTop(nextOffset);\n }\n });\n\n container.on('results:focus', function (params) {\n params.element.addClass('select2-results__option--highlighted');\n });\n\n container.on('results:message', function (params) {\n self.displayMessage(params);\n });\n\n if ($.fn.mousewheel) {\n this.$results.on('mousewheel', function (e) {\n var top = self.$results.scrollTop();\n\n var bottom = self.$results.get(0).scrollHeight - top + e.deltaY;\n\n var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0;\n var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height();\n\n if (isAtTop) {\n self.$results.scrollTop(0);\n\n e.preventDefault();\n e.stopPropagation();\n } else if (isAtBottom) {\n self.$results.scrollTop(\n self.$results.get(0).scrollHeight - self.$results.height()\n );\n\n e.preventDefault();\n e.stopPropagation();\n }\n });\n }\n\n this.$results.on('mouseup', '.select2-results__option[aria-selected]',\n function (evt) {\n var $this = $(this);\n\n var data = Utils.GetData(this, 'data');\n\n if ($this.attr('aria-selected') === 'true') {\n if (self.options.get('multiple')) {\n self.trigger('unselect', {\n originalEvent: evt,\n data: data\n });\n } else {\n self.trigger('close', {});\n }\n\n return;\n }\n\n self.trigger('select', {\n originalEvent: evt,\n data: data\n });\n });\n\n this.$results.on('mouseenter', '.select2-results__option[aria-selected]',\n function (evt) {\n var data = Utils.GetData(this, 'data');\n\n self.getHighlightedResults()\n .removeClass('select2-results__option--highlighted');\n\n self.trigger('results:focus', {\n data: data,\n element: $(this)\n });\n });\n };\n\n Results.prototype.getHighlightedResults = function () {\n var $highlighted = this.$results\n .find('.select2-results__option--highlighted');\n\n return $highlighted;\n };\n\n Results.prototype.destroy = function () {\n this.$results.remove();\n };\n\n Results.prototype.ensureHighlightVisible = function () {\n var $highlighted = this.getHighlightedResults();\n\n if ($highlighted.length === 0) {\n return;\n }\n\n var $options = this.$results.find('[aria-selected]');\n\n var currentIndex = $options.index($highlighted);\n\n var currentOffset = this.$results.offset().top;\n var nextTop = $highlighted.offset().top;\n var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset);\n\n var offsetDelta = nextTop - currentOffset;\n nextOffset -= $highlighted.outerHeight(false) * 2;\n\n if (currentIndex <= 2) {\n this.$results.scrollTop(0);\n } else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) {\n this.$results.scrollTop(nextOffset);\n }\n };\n\n Results.prototype.template = function (result, container) {\n var template = this.options.get('templateResult');\n var escapeMarkup = this.options.get('escapeMarkup');\n\n var content = template(result, container);\n\n if (content == null) {\n container.style.display = 'none';\n } else if (typeof content === 'string') {\n container.innerHTML = escapeMarkup(content);\n } else {\n $(container).append(content);\n }\n };\n\n return Results;\n});\n\nS2.define('select2/keys',[\n\n], function () {\n var KEYS = {\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n SHIFT: 16,\n CTRL: 17,\n ALT: 18,\n ESC: 27,\n SPACE: 32,\n PAGE_UP: 33,\n PAGE_DOWN: 34,\n END: 35,\n HOME: 36,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n DELETE: 46\n };\n\n return KEYS;\n});\n\nS2.define('select2/selection/base',[\n 'jquery',\n '../utils',\n '../keys'\n], function ($, Utils, KEYS) {\n function BaseSelection ($element, options) {\n this.$element = $element;\n this.options = options;\n\n BaseSelection.__super__.constructor.call(this);\n }\n\n Utils.Extend(BaseSelection, Utils.Observable);\n\n BaseSelection.prototype.render = function () {\n var $selection = $(\n '' +\n ''\n );\n\n this._tabindex = 0;\n\n if (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\n $selection.attr('title', this.$element.attr('title'));\n $selection.attr('tabindex', this._tabindex);\n $selection.attr('aria-disabled', 'false');\n\n this.$selection = $selection;\n\n return $selection;\n };\n\n BaseSelection.prototype.bind = function (container, $container) {\n var self = this;\n\n var resultsId = container.id + '-results';\n\n this.container = container;\n\n this.$selection.on('focus', function (evt) {\n self.trigger('focus', evt);\n });\n\n this.$selection.on('blur', function (evt) {\n self._handleBlur(evt);\n });\n\n this.$selection.on('keydown', function (evt) {\n self.trigger('keypress', evt);\n\n if (evt.which === KEYS.SPACE) {\n evt.preventDefault();\n }\n });\n\n container.on('results:focus', function (params) {\n self.$selection.attr('aria-activedescendant', params.data._resultId);\n });\n\n container.on('selection:update', function (params) {\n self.update(params.data);\n });\n\n container.on('open', function () {\n // When the dropdown is open, aria-expanded=\"true\"\n self.$selection.attr('aria-expanded', 'true');\n self.$selection.attr('aria-owns', resultsId);\n\n self._attachCloseHandler(container);\n });\n\n container.on('close', function () {\n // When the dropdown is closed, aria-expanded=\"false\"\n self.$selection.attr('aria-expanded', 'false');\n self.$selection.removeAttr('aria-activedescendant');\n self.$selection.removeAttr('aria-owns');\n\n self.$selection.trigger('focus');\n\n self._detachCloseHandler(container);\n });\n\n container.on('enable', function () {\n self.$selection.attr('tabindex', self._tabindex);\n self.$selection.attr('aria-disabled', 'false');\n });\n\n container.on('disable', function () {\n self.$selection.attr('tabindex', '-1');\n self.$selection.attr('aria-disabled', 'true');\n });\n };\n\n BaseSelection.prototype._handleBlur = function (evt) {\n var self = this;\n\n // This needs to be delayed as the active element is the body when the tab\n // key is pressed, possibly along with others.\n window.setTimeout(function () {\n // Don't trigger `blur` if the focus is still in the selection\n if (\n (document.activeElement == self.$selection[0]) ||\n ($.contains(self.$selection[0], document.activeElement))\n ) {\n return;\n }\n\n self.trigger('blur', evt);\n }, 1);\n };\n\n BaseSelection.prototype._attachCloseHandler = function (container) {\n\n $(document.body).on('mousedown.select2.' + container.id, function (e) {\n var $target = $(e.target);\n\n var $select = $target.closest('.select2');\n\n var $all = $('.select2.select2-container--open');\n\n $all.each(function () {\n if (this == $select[0]) {\n return;\n }\n\n var $element = Utils.GetData(this, 'element');\n\n $element.select2('close');\n });\n });\n };\n\n BaseSelection.prototype._detachCloseHandler = function (container) {\n $(document.body).off('mousedown.select2.' + container.id);\n };\n\n BaseSelection.prototype.position = function ($selection, $container) {\n var $selectionContainer = $container.find('.selection');\n $selectionContainer.append($selection);\n };\n\n BaseSelection.prototype.destroy = function () {\n this._detachCloseHandler(this.container);\n };\n\n BaseSelection.prototype.update = function (data) {\n throw new Error('The `update` method must be defined in child classes.');\n };\n\n /**\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\n return BaseSelection;\n});\n\nS2.define('select2/selection/single',[\n 'jquery',\n './base',\n '../utils',\n '../keys'\n], function ($, BaseSelection, Utils, KEYS) {\n function SingleSelection () {\n SingleSelection.__super__.constructor.apply(this, arguments);\n }\n\n Utils.Extend(SingleSelection, BaseSelection);\n\n SingleSelection.prototype.render = function () {\n var $selection = SingleSelection.__super__.render.call(this);\n\n $selection.addClass('select2-selection--single');\n\n $selection.html(\n '' +\n '' +\n '' +\n ''\n );\n\n return $selection;\n };\n\n SingleSelection.prototype.bind = function (container, $container) {\n var self = this;\n\n SingleSelection.__super__.bind.apply(this, arguments);\n\n var id = container.id + '-container';\n\n this.$selection.find('.select2-selection__rendered')\n .attr('id', id)\n .attr('role', 'textbox')\n .attr('aria-readonly', 'true');\n this.$selection.attr('aria-labelledby', id);\n\n this.$selection.on('mousedown', function (evt) {\n // Only respond to left clicks\n if (evt.which !== 1) {\n return;\n }\n\n self.trigger('toggle', {\n originalEvent: evt\n });\n });\n\n this.$selection.on('focus', function (evt) {\n // User focuses on the container\n });\n\n this.$selection.on('blur', function (evt) {\n // User exits the container\n });\n\n container.on('focus', function (evt) {\n if (!container.isOpen()) {\n self.$selection.trigger('focus');\n }\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\n return escapeMarkup(template(data, container));\n };\n\n SingleSelection.prototype.selectionContainer = function () {\n return $('');\n };\n\n SingleSelection.prototype.update = function (data) {\n if (data.length === 0) {\n this.clear();\n return;\n }\n\n var selection = data[0];\n\n var $rendered = this.$selection.find('.select2-selection__rendered');\n var formatted = this.display(selection, $rendered);\n\n $rendered.empty().append(formatted);\n\n var title = selection.title || selection.text;\n\n if (title) {\n $rendered.attr('title', title);\n } else {\n $rendered.removeAttr('title');\n }\n };\n\n return SingleSelection;\n});\n\nS2.define('select2/selection/multiple',[\n 'jquery',\n './base',\n '../utils'\n], function ($, BaseSelection, Utils) {\n function MultipleSelection ($element, options) {\n MultipleSelection.__super__.constructor.apply(this, arguments);\n }\n\n Utils.Extend(MultipleSelection, BaseSelection);\n\n MultipleSelection.prototype.render = function () {\n var $selection = MultipleSelection.__super__.render.call(this);\n\n $selection.addClass('select2-selection--multiple');\n\n $selection.html(\n ''\n );\n\n return $selection;\n };\n\n MultipleSelection.prototype.bind = function (container, $container) {\n var self = this;\n\n MultipleSelection.__super__.bind.apply(this, arguments);\n\n this.$selection.on('click', function (evt) {\n self.trigger('toggle', {\n originalEvent: evt\n });\n });\n\n this.$selection.on(\n 'click',\n '.select2-selection__choice__remove',\n function (evt) {\n // Ignore the event if it is disabled\n if (self.isDisabled()) {\n return;\n }\n\n var $remove = $(this);\n var $selection = $remove.parent();\n\n var data = Utils.GetData($selection[0], 'data');\n\n self.trigger('unselect', {\n originalEvent: evt,\n data: data\n });\n }\n );\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\n MultipleSelection.prototype.display = function (data, container) {\n var template = this.options.get('templateSelection');\n var escapeMarkup = this.options.get('escapeMarkup');\n\n return escapeMarkup(template(data, container));\n };\n\n MultipleSelection.prototype.selectionContainer = function () {\n var $container = $(\n '
  • ' +\n '' +\n '×' +\n '' +\n '
  • '\n );\n\n return $container;\n };\n\n MultipleSelection.prototype.update = function (data) {\n this.clear();\n\n if (data.length === 0) {\n return;\n }\n\n var $selections = [];\n\n for (var d = 0; d < data.length; d++) {\n var selection = data[d];\n\n var $selection = this.selectionContainer();\n var formatted = this.display(selection, $selection);\n\n $selection.append(formatted);\n\n var title = selection.title || selection.text;\n\n if (title) {\n $selection.attr('title', title);\n }\n\n Utils.StoreData($selection[0], 'data', selection);\n\n $selections.push($selection);\n }\n\n var $rendered = this.$selection.find('.select2-selection__rendered');\n\n Utils.appendMany($rendered, $selections);\n };\n\n return MultipleSelection;\n});\n\nS2.define('select2/selection/placeholder',[\n '../utils'\n], function (Utils) {\n function Placeholder (decorated, $element, options) {\n this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n\n decorated.call(this, $element, options);\n }\n\n Placeholder.prototype.normalizePlaceholder = function (_, placeholder) {\n if (typeof placeholder === 'string') {\n placeholder = {\n id: '',\n text: placeholder\n };\n }\n\n return placeholder;\n };\n\n Placeholder.prototype.createPlaceholder = function (decorated, placeholder) {\n var $placeholder = this.selectionContainer();\n\n $placeholder.html(this.display(placeholder));\n $placeholder.addClass('select2-selection__placeholder')\n .removeClass('select2-selection__choice');\n\n return $placeholder;\n };\n\n Placeholder.prototype.update = function (decorated, data) {\n var singlePlaceholder = (\n data.length == 1 && data[0].id != this.placeholder.id\n );\n var multipleSelections = data.length > 1;\n\n if (multipleSelections || singlePlaceholder) {\n return decorated.call(this, data);\n }\n\n this.clear();\n\n var $placeholder = this.createPlaceholder(this.placeholder);\n\n this.$selection.find('.select2-selection__rendered').append($placeholder);\n };\n\n return Placeholder;\n});\n\nS2.define('select2/selection/allowClear',[\n 'jquery',\n '../keys',\n '../utils'\n], function ($, KEYS, Utils) {\n function AllowClear () { }\n\n AllowClear.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n if (this.placeholder == null) {\n if (this.options.get('debug') && window.console && console.error) {\n console.error(\n 'Select2: The `allowClear` option should be used in combination ' +\n 'with the `placeholder` option.'\n );\n }\n }\n\n this.$selection.on('mousedown', '.select2-selection__clear',\n function (evt) {\n self._handleClear(evt);\n });\n\n container.on('keypress', function (evt) {\n self._handleKeyboardClear(evt, container);\n });\n };\n\n AllowClear.prototype._handleClear = function (_, evt) {\n // Ignore the event if it is disabled\n if (this.isDisabled()) {\n return;\n }\n\n var $clear = this.$selection.find('.select2-selection__clear');\n\n // Ignore the event if nothing has been selected\n if ($clear.length === 0) {\n return;\n }\n\n evt.stopPropagation();\n\n var data = Utils.GetData($clear[0], 'data');\n\n var previousVal = this.$element.val();\n this.$element.val(this.placeholder.id);\n\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\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\n this.$element.trigger('input').trigger('change');\n\n this.trigger('toggle', {});\n };\n\n AllowClear.prototype._handleKeyboardClear = function (_, evt, container) {\n if (container.isOpen()) {\n return;\n }\n\n if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) {\n this._handleClear(evt);\n }\n };\n\n AllowClear.prototype.update = function (decorated, data) {\n decorated.call(this, data);\n\n if (this.$selection.find('.select2-selection__placeholder').length > 0 ||\n data.length === 0) {\n return;\n }\n\n var removeAll = this.options.get('translations').get('removeAllItems');\n\n var $remove = $(\n '' +\n '×' +\n ''\n );\n Utils.StoreData($remove[0], 'data', data);\n\n this.$selection.find('.select2-selection__rendered').prepend($remove);\n };\n\n return AllowClear;\n});\n\nS2.define('select2/selection/search',[\n 'jquery',\n '../utils',\n '../keys'\n], function ($, Utils, KEYS) {\n function Search (decorated, $element, options) {\n decorated.call(this, $element, options);\n }\n\n Search.prototype.render = function (decorated) {\n var $search = $(\n ''\n );\n\n this.$searchContainer = $search;\n this.$search = $search.find('input');\n\n var $rendered = decorated.call(this);\n\n this._transferTabIndex();\n\n return $rendered;\n };\n\n Search.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n var resultsId = container.id + '-results';\n\n decorated.call(this, container, $container);\n\n container.on('open', function () {\n self.$search.attr('aria-controls', resultsId);\n self.$search.trigger('focus');\n });\n\n container.on('close', function () {\n self.$search.val('');\n self.$search.removeAttr('aria-controls');\n self.$search.removeAttr('aria-activedescendant');\n self.$search.trigger('focus');\n });\n\n container.on('enable', function () {\n self.$search.prop('disabled', false);\n\n self._transferTabIndex();\n });\n\n container.on('disable', function () {\n self.$search.prop('disabled', true);\n });\n\n container.on('focus', function (evt) {\n self.$search.trigger('focus');\n });\n\n container.on('results:focus', function (params) {\n 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 this.$selection.on('focusin', '.select2-search--inline', function (evt) {\n self.trigger('focus', evt);\n });\n\n this.$selection.on('focusout', '.select2-search--inline', function (evt) {\n self._handleBlur(evt);\n });\n\n this.$selection.on('keydown', '.select2-search--inline', function (evt) {\n evt.stopPropagation();\n\n self.trigger('keypress', evt);\n\n self._keyUpPrevented = evt.isDefaultPrevented();\n\n var key = evt.which;\n\n if (key === KEYS.BACKSPACE && self.$search.val() === '') {\n var $previousChoice = self.$searchContainer\n .prev('.select2-selection__choice');\n\n if ($previousChoice.length > 0) {\n var item = Utils.GetData($previousChoice[0], 'data');\n\n self.searchRemoveChoice(item);\n\n evt.preventDefault();\n }\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(\n 'input.searchcheck',\n '.select2-search--inline',\n function (evt) {\n // IE will trigger the `input` event when a placeholder is used on a\n // search box. To get around this issue, we are forced to ignore all\n // `input` events in IE and keep using `keyup`.\n if (disableInputEvents) {\n self.$selection.off('input.search input.searchcheck');\n return;\n }\n\n // Unbind the duplicated `keyup` event\n self.$selection.off('keyup.search');\n }\n );\n\n this.$selection.on(\n 'keyup.search input.search',\n '.select2-search--inline',\n function (evt) {\n // IE will trigger the `input` event when a placeholder is used on a\n // search box. To get around this issue, we are forced to ignore all\n // `input` events in IE and keep using `keyup`.\n if (disableInputEvents && evt.type === 'input') {\n self.$selection.off('input.search input.searchcheck');\n return;\n }\n\n var key = evt.which;\n\n // We can freely ignore events from modifier keys\n if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) {\n return;\n }\n\n // Tabbing will be handled during the `keydown` phase\n if (key == KEYS.TAB) {\n return;\n }\n\n self.handleSearch(evt);\n }\n );\n };\n\n /**\n * This method will transfer the tabindex attribute from the rendered\n * selection to the search box. This allows for the search box to be used as\n * the primary focus instead of the selection container.\n *\n * @private\n */\n Search.prototype._transferTabIndex = function (decorated) {\n this.$search.attr('tabindex', this.$selection.attr('tabindex'));\n this.$selection.attr('tabindex', '-1');\n };\n\n Search.prototype.createPlaceholder = function (decorated, placeholder) {\n this.$search.attr('placeholder', placeholder.text);\n };\n\n Search.prototype.update = function (decorated, data) {\n var searchHadFocus = this.$search[0] == document.activeElement;\n\n this.$search.attr('placeholder', '');\n\n decorated.call(this, data);\n\n this.$selection.find('.select2-selection__rendered')\n .append(this.$searchContainer);\n\n this.resizeSearch();\n if (searchHadFocus) {\n this.$search.trigger('focus');\n }\n };\n\n Search.prototype.handleSearch = function () {\n this.resizeSearch();\n\n if (!this._keyUpPrevented) {\n var input = this.$search.val();\n\n this.trigger('query', {\n term: input\n });\n }\n\n this._keyUpPrevented = false;\n };\n\n Search.prototype.searchRemoveChoice = function (decorated, item) {\n this.trigger('unselect', {\n data: item\n });\n\n this.$search.val(item.text);\n this.handleSearch();\n };\n\n Search.prototype.resizeSearch = function () {\n this.$search.css('width', '25px');\n\n var width = '';\n\n if (this.$search.attr('placeholder') !== '') {\n width = this.$selection.find('.select2-selection__rendered').width();\n } else {\n var minimumWidth = this.$search.val().length + 1;\n\n width = (minimumWidth * 0.75) + 'em';\n }\n\n this.$search.css('width', width);\n };\n\n return Search;\n});\n\nS2.define('select2/selection/eventRelay',[\n 'jquery'\n], function ($) {\n function EventRelay () { }\n\n EventRelay.prototype.bind = function (decorated, container, $container) {\n var self = this;\n var relayEvents = [\n 'open', 'opening',\n 'close', 'closing',\n 'select', 'selecting',\n 'unselect', 'unselecting',\n 'clear', 'clearing'\n ];\n\n var preventableEvents = [\n 'opening', 'closing', 'selecting', 'unselecting', 'clearing'\n ];\n\n decorated.call(this, container, $container);\n\n container.on('*', function (name, params) {\n // Ignore events that should not be relayed\n if ($.inArray(name, relayEvents) === -1) {\n return;\n }\n\n // The parameters should always be an object\n params = params || {};\n\n // Generate the jQuery event for the Select2 event\n var evt = $.Event('select2:' + name, {\n params: params\n });\n\n self.$element.trigger(evt);\n\n // Only handle preventable events if it was one\n if ($.inArray(name, preventableEvents) === -1) {\n return;\n }\n\n params.prevented = evt.isDefaultPrevented();\n });\n };\n\n return EventRelay;\n});\n\nS2.define('select2/translation',[\n 'jquery',\n 'require'\n], function ($, require) {\n function Translation (dict) {\n this.dict = dict || {};\n }\n\n Translation.prototype.all = function () {\n return this.dict;\n };\n\n Translation.prototype.get = function (key) {\n return this.dict[key];\n };\n\n Translation.prototype.extend = function (translation) {\n this.dict = $.extend({}, translation.all(), this.dict);\n };\n\n // Static functions\n\n Translation._cache = {};\n\n Translation.loadPath = function (path) {\n if (!(path in Translation._cache)) {\n var translations = require(path);\n\n Translation._cache[path] = translations;\n }\n\n return new Translation(Translation._cache[path]);\n };\n\n return Translation;\n});\n\nS2.define('select2/diacritics',[\n\n], function () {\n var diacritics = {\n '\\u24B6': 'A',\n '\\uFF21': 'A',\n '\\u00C0': 'A',\n '\\u00C1': 'A',\n '\\u00C2': 'A',\n '\\u1EA6': 'A',\n '\\u1EA4': 'A',\n '\\u1EAA': 'A',\n '\\u1EA8': 'A',\n '\\u00C3': 'A',\n '\\u0100': 'A',\n '\\u0102': 'A',\n '\\u1EB0': 'A',\n '\\u1EAE': 'A',\n '\\u1EB4': 'A',\n '\\u1EB2': 'A',\n '\\u0226': 'A',\n '\\u01E0': 'A',\n '\\u00C4': 'A',\n '\\u01DE': 'A',\n '\\u1EA2': 'A',\n '\\u00C5': 'A',\n '\\u01FA': 'A',\n '\\u01CD': 'A',\n '\\u0200': 'A',\n '\\u0202': 'A',\n '\\u1EA0': 'A',\n '\\u1EAC': 'A',\n '\\u1EB6': 'A',\n '\\u1E00': 'A',\n '\\u0104': 'A',\n '\\u023A': 'A',\n '\\u2C6F': 'A',\n '\\uA732': 'AA',\n '\\u00C6': 'AE',\n '\\u01FC': 'AE',\n '\\u01E2': 'AE',\n '\\uA734': 'AO',\n '\\uA736': 'AU',\n '\\uA738': 'AV',\n '\\uA73A': 'AV',\n '\\uA73C': 'AY',\n '\\u24B7': 'B',\n '\\uFF22': 'B',\n '\\u1E02': 'B',\n '\\u1E04': 'B',\n '\\u1E06': 'B',\n '\\u0243': 'B',\n '\\u0182': 'B',\n '\\u0181': 'B',\n '\\u24B8': 'C',\n '\\uFF23': 'C',\n '\\u0106': 'C',\n '\\u0108': 'C',\n '\\u010A': 'C',\n '\\u010C': 'C',\n '\\u00C7': 'C',\n '\\u1E08': 'C',\n '\\u0187': 'C',\n '\\u023B': 'C',\n '\\uA73E': 'C',\n '\\u24B9': 'D',\n '\\uFF24': 'D',\n '\\u1E0A': 'D',\n '\\u010E': 'D',\n '\\u1E0C': 'D',\n '\\u1E10': 'D',\n '\\u1E12': 'D',\n '\\u1E0E': 'D',\n '\\u0110': 'D',\n '\\u018B': 'D',\n '\\u018A': 'D',\n '\\u0189': 'D',\n '\\uA779': 'D',\n '\\u01F1': 'DZ',\n '\\u01C4': 'DZ',\n '\\u01F2': 'Dz',\n '\\u01C5': 'Dz',\n '\\u24BA': 'E',\n '\\uFF25': 'E',\n '\\u00C8': 'E',\n '\\u00C9': 'E',\n '\\u00CA': 'E',\n '\\u1EC0': 'E',\n '\\u1EBE': 'E',\n '\\u1EC4': 'E',\n '\\u1EC2': 'E',\n '\\u1EBC': 'E',\n '\\u0112': 'E',\n '\\u1E14': 'E',\n '\\u1E16': 'E',\n '\\u0114': 'E',\n '\\u0116': 'E',\n '\\u00CB': 'E',\n '\\u1EBA': 'E',\n '\\u011A': 'E',\n '\\u0204': 'E',\n '\\u0206': 'E',\n '\\u1EB8': 'E',\n '\\u1EC6': 'E',\n '\\u0228': 'E',\n '\\u1E1C': 'E',\n '\\u0118': 'E',\n '\\u1E18': 'E',\n '\\u1E1A': 'E',\n '\\u0190': 'E',\n '\\u018E': 'E',\n '\\u24BB': 'F',\n '\\uFF26': 'F',\n '\\u1E1E': 'F',\n '\\u0191': 'F',\n '\\uA77B': 'F',\n '\\u24BC': 'G',\n '\\uFF27': 'G',\n '\\u01F4': 'G',\n '\\u011C': 'G',\n '\\u1E20': 'G',\n '\\u011E': 'G',\n '\\u0120': 'G',\n '\\u01E6': 'G',\n '\\u0122': 'G',\n '\\u01E4': 'G',\n '\\u0193': 'G',\n '\\uA7A0': 'G',\n '\\uA77D': 'G',\n '\\uA77E': 'G',\n '\\u24BD': 'H',\n '\\uFF28': 'H',\n '\\u0124': 'H',\n '\\u1E22': 'H',\n '\\u1E26': 'H',\n '\\u021E': 'H',\n '\\u1E24': 'H',\n '\\u1E28': 'H',\n '\\u1E2A': 'H',\n '\\u0126': 'H',\n '\\u2C67': 'H',\n '\\u2C75': 'H',\n '\\uA78D': 'H',\n '\\u24BE': 'I',\n '\\uFF29': 'I',\n '\\u00CC': 'I',\n '\\u00CD': 'I',\n '\\u00CE': 'I',\n '\\u0128': 'I',\n '\\u012A': 'I',\n '\\u012C': 'I',\n '\\u0130': 'I',\n '\\u00CF': 'I',\n '\\u1E2E': 'I',\n '\\u1EC8': 'I',\n '\\u01CF': 'I',\n '\\u0208': 'I',\n '\\u020A': 'I',\n '\\u1ECA': 'I',\n '\\u012E': 'I',\n '\\u1E2C': 'I',\n '\\u0197': 'I',\n '\\u24BF': 'J',\n '\\uFF2A': 'J',\n '\\u0134': 'J',\n '\\u0248': 'J',\n '\\u24C0': 'K',\n '\\uFF2B': 'K',\n '\\u1E30': 'K',\n '\\u01E8': 'K',\n '\\u1E32': 'K',\n '\\u0136': 'K',\n '\\u1E34': 'K',\n '\\u0198': 'K',\n '\\u2C69': 'K',\n '\\uA740': 'K',\n '\\uA742': 'K',\n '\\uA744': 'K',\n '\\uA7A2': 'K',\n '\\u24C1': 'L',\n '\\uFF2C': 'L',\n '\\u013F': 'L',\n '\\u0139': 'L',\n '\\u013D': 'L',\n '\\u1E36': 'L',\n '\\u1E38': 'L',\n '\\u013B': 'L',\n '\\u1E3C': 'L',\n '\\u1E3A': 'L',\n '\\u0141': 'L',\n '\\u023D': 'L',\n '\\u2C62': 'L',\n '\\u2C60': 'L',\n '\\uA748': 'L',\n '\\uA746': 'L',\n '\\uA780': 'L',\n '\\u01C7': 'LJ',\n '\\u01C8': 'Lj',\n '\\u24C2': 'M',\n '\\uFF2D': 'M',\n '\\u1E3E': 'M',\n '\\u1E40': 'M',\n '\\u1E42': 'M',\n '\\u2C6E': 'M',\n '\\u019C': 'M',\n '\\u24C3': 'N',\n '\\uFF2E': 'N',\n '\\u01F8': 'N',\n '\\u0143': 'N',\n '\\u00D1': 'N',\n '\\u1E44': 'N',\n '\\u0147': 'N',\n '\\u1E46': 'N',\n '\\u0145': 'N',\n '\\u1E4A': 'N',\n '\\u1E48': 'N',\n '\\u0220': 'N',\n '\\u019D': 'N',\n '\\uA790': 'N',\n '\\uA7A4': 'N',\n '\\u01CA': 'NJ',\n '\\u01CB': 'Nj',\n '\\u24C4': 'O',\n '\\uFF2F': 'O',\n '\\u00D2': 'O',\n '\\u00D3': 'O',\n '\\u00D4': 'O',\n '\\u1ED2': 'O',\n '\\u1ED0': 'O',\n '\\u1ED6': 'O',\n '\\u1ED4': 'O',\n '\\u00D5': 'O',\n '\\u1E4C': 'O',\n '\\u022C': 'O',\n '\\u1E4E': 'O',\n '\\u014C': 'O',\n '\\u1E50': 'O',\n '\\u1E52': 'O',\n '\\u014E': 'O',\n '\\u022E': 'O',\n '\\u0230': 'O',\n '\\u00D6': 'O',\n '\\u022A': 'O',\n '\\u1ECE': 'O',\n '\\u0150': 'O',\n '\\u01D1': 'O',\n '\\u020C': 'O',\n '\\u020E': 'O',\n '\\u01A0': 'O',\n '\\u1EDC': 'O',\n '\\u1EDA': 'O',\n '\\u1EE0': 'O',\n '\\u1EDE': 'O',\n '\\u1EE2': 'O',\n '\\u1ECC': 'O',\n '\\u1ED8': 'O',\n '\\u01EA': 'O',\n '\\u01EC': 'O',\n '\\u00D8': 'O',\n '\\u01FE': 'O',\n '\\u0186': 'O',\n '\\u019F': 'O',\n '\\uA74A': 'O',\n '\\uA74C': 'O',\n '\\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\n return diacritics;\n});\n\nS2.define('select2/data/base',[\n '../utils'\n], function (Utils) {\n function BaseAdapter ($element, options) {\n BaseAdapter.__super__.constructor.call(this);\n }\n\n Utils.Extend(BaseAdapter, Utils.Observable);\n\n BaseAdapter.prototype.current = function (callback) {\n throw new Error('The `current` method must be defined in child classes.');\n };\n\n BaseAdapter.prototype.query = function (params, callback) {\n throw new Error('The `query` method must be defined in child classes.');\n };\n\n BaseAdapter.prototype.bind = function (container, $container) {\n // Can be implemented in subclasses\n };\n\n BaseAdapter.prototype.destroy = function () {\n // Can be implemented in subclasses\n };\n\n BaseAdapter.prototype.generateResultId = function (container, data) {\n var id = container.id + '-result-';\n\n id += Utils.generateChars(4);\n\n if (data.id != null) {\n id += '-' + data.id.toString();\n } else {\n id += '-' + Utils.generateChars(4);\n }\n return id;\n };\n\n return BaseAdapter;\n});\n\nS2.define('select2/data/select',[\n './base',\n '../utils',\n 'jquery'\n], function (BaseAdapter, Utils, $) {\n function SelectAdapter ($element, options) {\n this.$element = $element;\n this.options = options;\n\n SelectAdapter.__super__.constructor.call(this);\n }\n\n Utils.Extend(SelectAdapter, BaseAdapter);\n\n SelectAdapter.prototype.current = function (callback) {\n var data = [];\n var self = this;\n\n this.$element.find(':selected').each(function () {\n var $option = $(this);\n\n var option = self.item($option);\n\n data.push(option);\n });\n\n callback(data);\n };\n\n SelectAdapter.prototype.select = function (data) {\n var self = this;\n\n data.selected = true;\n\n // If data.element is a DOM node, use it instead\n if ($(data.element).is('option')) {\n data.element.selected = true;\n\n this.$element.trigger('input').trigger('change');\n\n return;\n }\n\n if (this.$element.prop('multiple')) {\n this.current(function (currentData) {\n var val = [];\n\n data = [data];\n data.push.apply(data, currentData);\n\n for (var d = 0; d < data.length; d++) {\n var id = data[d].id;\n\n if ($.inArray(id, val) === -1) {\n val.push(id);\n }\n }\n\n self.$element.val(val);\n self.$element.trigger('input').trigger('change');\n });\n } else {\n var val = data.id;\n\n this.$element.val(val);\n this.$element.trigger('input').trigger('change');\n }\n };\n\n SelectAdapter.prototype.unselect = function (data) {\n var self = this;\n\n if (!this.$element.prop('multiple')) {\n return;\n }\n\n data.selected = false;\n\n if ($(data.element).is('option')) {\n data.element.selected = false;\n\n this.$element.trigger('input').trigger('change');\n\n return;\n }\n\n this.current(function (currentData) {\n var val = [];\n\n for (var d = 0; d < currentData.length; d++) {\n var id = currentData[d].id;\n\n if (id !== data.id && $.inArray(id, val) === -1) {\n val.push(id);\n }\n }\n\n self.$element.val(val);\n\n self.$element.trigger('input').trigger('change');\n });\n };\n\n SelectAdapter.prototype.bind = function (container, $container) {\n var self = this;\n\n this.container = container;\n\n container.on('select', function (params) {\n self.select(params.data);\n });\n\n container.on('unselect', function (params) {\n self.unselect(params.data);\n });\n };\n\n SelectAdapter.prototype.destroy = function () {\n // Remove anything added to child elements\n this.$element.find('*').each(function () {\n // Remove any custom data set by Select2\n Utils.RemoveData(this);\n });\n };\n\n SelectAdapter.prototype.query = function (params, callback) {\n var data = [];\n var self = this;\n\n var $options = this.$element.children();\n\n $options.each(function () {\n var $option = $(this);\n\n if (!$option.is('option') && !$option.is('optgroup')) {\n return;\n }\n\n var option = self.item($option);\n\n var matches = self.matches(params, option);\n\n if (matches !== null) {\n data.push(matches);\n }\n });\n\n callback({\n results: data\n });\n };\n\n SelectAdapter.prototype.addOptions = function ($options) {\n Utils.appendMany(this.$element, $options);\n };\n\n SelectAdapter.prototype.option = function (data) {\n var option;\n\n if (data.children) {\n option = document.createElement('optgroup');\n option.label = data.text;\n } else {\n option = document.createElement('option');\n\n if (option.textContent !== undefined) {\n option.textContent = data.text;\n } else {\n option.innerText = data.text;\n }\n }\n\n if (data.id !== undefined) {\n option.value = data.id;\n }\n\n if (data.disabled) {\n option.disabled = true;\n }\n\n if (data.selected) {\n option.selected = true;\n }\n\n if (data.title) {\n option.title = data.title;\n }\n\n var $option = $(option);\n\n var normalizedData = this._normalizeItem(data);\n normalizedData.element = option;\n\n // Override the option's data with the combined data\n Utils.StoreData(option, 'data', normalizedData);\n\n return $option;\n };\n\n SelectAdapter.prototype.item = function ($option) {\n var data = {};\n\n data = Utils.GetData($option[0], 'data');\n\n if (data != null) {\n return data;\n }\n\n if ($option.is('option')) {\n data = {\n id: $option.val(),\n text: $option.text(),\n disabled: $option.prop('disabled'),\n selected: $option.prop('selected'),\n title: $option.prop('title')\n };\n } else if ($option.is('optgroup')) {\n data = {\n text: $option.prop('label'),\n children: [],\n title: $option.prop('title')\n };\n\n var $children = $option.children('option');\n var children = [];\n\n for (var c = 0; c < $children.length; c++) {\n var $child = $($children[c]);\n\n var child = this.item($child);\n\n children.push(child);\n }\n\n data.children = children;\n }\n\n data = this._normalizeItem(data);\n data.element = $option[0];\n\n Utils.StoreData($option[0], 'data', data);\n\n return data;\n };\n\n SelectAdapter.prototype._normalizeItem = function (item) {\n if (item !== Object(item)) {\n item = {\n id: item,\n text: item\n };\n }\n\n item = $.extend({}, {\n text: ''\n }, item);\n\n var defaults = {\n selected: false,\n disabled: false\n };\n\n if (item.id != null) {\n item.id = item.id.toString();\n }\n\n if (item.text != null) {\n item.text = item.text.toString();\n }\n\n if (item._resultId == null && item.id && this.container != null) {\n item._resultId = this.generateResultId(this.container, item);\n }\n\n return $.extend({}, defaults, item);\n };\n\n SelectAdapter.prototype.matches = function (params, data) {\n var matcher = this.options.get('matcher');\n\n return matcher(params, data);\n };\n\n return SelectAdapter;\n});\n\nS2.define('select2/data/array',[\n './select',\n '../utils',\n 'jquery'\n], function (SelectAdapter, Utils, $) {\n function ArrayAdapter ($element, options) {\n this._dataToConvert = options.get('data') || [];\n\n ArrayAdapter.__super__.constructor.call(this, $element, options);\n }\n\n Utils.Extend(ArrayAdapter, SelectAdapter);\n\n ArrayAdapter.prototype.bind = function (container, $container) {\n ArrayAdapter.__super__.bind.call(this, container, $container);\n\n this.addOptions(this.convertToOptions(this._dataToConvert));\n };\n\n ArrayAdapter.prototype.select = function (data) {\n var $option = this.$element.find('option').filter(function (i, elm) {\n return elm.value == data.id.toString();\n });\n\n if ($option.length === 0) {\n $option = this.option(data);\n\n this.addOptions($option);\n }\n\n ArrayAdapter.__super__.select.call(this, data);\n };\n\n ArrayAdapter.prototype.convertToOptions = function (data) {\n var self = this;\n\n var $existing = this.$element.find('option');\n var existingIds = $existing.map(function () {\n return self.item($(this)).id;\n }).get();\n\n var $options = [];\n\n // Filter out all items except for the one passed in the argument\n function onlyItem (item) {\n return function () {\n return $(this).val() == item.id;\n };\n }\n\n for (var d = 0; d < data.length; d++) {\n var item = this._normalizeItem(data[d]);\n\n // Skip items which were pre-loaded, only merge the data\n if ($.inArray(item.id, existingIds) >= 0) {\n var $existingOption = $existing.filter(onlyItem(item));\n\n var existingData = this.item($existingOption);\n var newData = $.extend(true, {}, item, existingData);\n\n var $newOption = this.option(newData);\n\n $existingOption.replaceWith($newOption);\n\n continue;\n }\n\n var $option = this.option(item);\n\n if (item.children) {\n var $children = this.convertToOptions(item.children);\n\n Utils.appendMany($option, $children);\n }\n\n $options.push($option);\n }\n\n return $options;\n };\n\n return ArrayAdapter;\n});\n\nS2.define('select2/data/ajax',[\n './array',\n '../utils',\n 'jquery'\n], function (ArrayAdapter, Utils, $) {\n function AjaxAdapter ($element, options) {\n this.ajaxOptions = this._applyDefaults(options.get('ajax'));\n\n if (this.ajaxOptions.processResults != null) {\n this.processResults = this.ajaxOptions.processResults;\n }\n\n AjaxAdapter.__super__.constructor.call(this, $element, options);\n }\n\n Utils.Extend(AjaxAdapter, ArrayAdapter);\n\n AjaxAdapter.prototype._applyDefaults = function (options) {\n var defaults = {\n data: function (params) {\n return $.extend({}, params, {\n q: params.term\n });\n },\n transport: function (params, success, failure) {\n var $request = $.ajax(params);\n\n $request.then(success);\n $request.fail(failure);\n\n return $request;\n }\n };\n\n return $.extend({}, defaults, options, true);\n };\n\n AjaxAdapter.prototype.processResults = function (results) {\n return results;\n };\n\n AjaxAdapter.prototype.query = function (params, callback) {\n var matches = [];\n var self = this;\n\n if (this._request != null) {\n // JSONP requests cannot always be aborted\n if ($.isFunction(this._request.abort)) {\n this._request.abort();\n }\n\n this._request = null;\n }\n\n var options = $.extend({\n type: 'GET'\n }, this.ajaxOptions);\n\n if (typeof options.url === 'function') {\n options.url = options.url.call(this.$element, params);\n }\n\n if (typeof options.data === 'function') {\n options.data = options.data.call(this.$element, params);\n }\n\n function request () {\n var $request = options.transport(options, function (data) {\n var results = self.processResults(data, params);\n\n if (self.options.get('debug') && window.console && console.error) {\n // Check to make sure that the response included a `results` key.\n if (!results || !results.results || !$.isArray(results.results)) {\n console.error(\n 'Select2: The AJAX results did not return an array in the ' +\n '`results` key of the response.'\n );\n }\n }\n\n callback(results);\n }, function () {\n // Attempt to detect if a request was aborted\n // Only works if the transport exposes a status property\n if ('status' in $request &&\n ($request.status === 0 || $request.status === '0')) {\n return;\n }\n\n self.trigger('results:message', {\n message: 'errorLoading'\n });\n });\n\n self._request = $request;\n }\n\n if (this.ajaxOptions.delay && params.term != null) {\n if (this._queryTimeout) {\n window.clearTimeout(this._queryTimeout);\n }\n\n this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay);\n } else {\n request();\n }\n };\n\n return AjaxAdapter;\n});\n\nS2.define('select2/data/tags',[\n 'jquery'\n], function ($) {\n function Tags (decorated, $element, options) {\n var tags = options.get('tags');\n\n var createTag = options.get('createTag');\n\n if (createTag !== undefined) {\n this.createTag = createTag;\n }\n\n var insertTag = options.get('insertTag');\n\n if (insertTag !== undefined) {\n this.insertTag = insertTag;\n }\n\n decorated.call(this, $element, options);\n\n if ($.isArray(tags)) {\n for (var t = 0; t < tags.length; t++) {\n var tag = tags[t];\n var item = this._normalizeItem(tag);\n\n var $option = this.option(item);\n\n this.$element.append($option);\n }\n }\n }\n\n Tags.prototype.query = function (decorated, params, callback) {\n var self = this;\n\n this._removeOldTags();\n\n if (params.term == null || params.page != null) {\n decorated.call(this, params, callback);\n return;\n }\n\n function wrapper (obj, child) {\n var data = obj.results;\n\n for (var i = 0; i < data.length; i++) {\n var option = data[i];\n\n var checkChildren = (\n option.children != null &&\n !wrapper({\n results: option.children\n }, true)\n );\n\n var optionText = (option.text || '').toUpperCase();\n var paramsTerm = (params.term || '').toUpperCase();\n\n var checkText = optionText === paramsTerm;\n\n if (checkText || checkChildren) {\n if (child) {\n return false;\n }\n\n obj.data = data;\n callback(obj);\n\n return;\n }\n }\n\n if (child) {\n return true;\n }\n\n var tag = self.createTag(params);\n\n if (tag != null) {\n var $option = self.option(tag);\n $option.attr('data-select2-tag', true);\n\n self.addOptions([$option]);\n\n self.insertTag(data, tag);\n }\n\n obj.results = data;\n\n callback(obj);\n }\n\n decorated.call(this, params, wrapper);\n };\n\n Tags.prototype.createTag = function (decorated, params) {\n var term = $.trim(params.term);\n\n if (term === '') {\n return null;\n }\n\n return {\n id: term,\n text: term\n };\n };\n\n Tags.prototype.insertTag = function (_, data, tag) {\n data.unshift(tag);\n };\n\n Tags.prototype._removeOldTags = function (_) {\n var $options = this.$element.find('option[data-select2-tag]');\n\n $options.each(function () {\n if (this.selected) {\n return;\n }\n\n $(this).remove();\n });\n };\n\n return Tags;\n});\n\nS2.define('select2/data/tokenizer',[\n 'jquery'\n], function ($) {\n function Tokenizer (decorated, $element, options) {\n var tokenizer = options.get('tokenizer');\n\n if (tokenizer !== undefined) {\n this.tokenizer = tokenizer;\n }\n\n decorated.call(this, $element, options);\n }\n\n Tokenizer.prototype.bind = function (decorated, container, $container) {\n decorated.call(this, container, $container);\n\n this.$search = container.dropdown.$search || container.selection.$search ||\n $container.find('.select2-search__field');\n };\n\n Tokenizer.prototype.query = function (decorated, params, callback) {\n var self = this;\n\n function createAndSelect (data) {\n // Normalize the data object so we can use it for checks\n var item = self._normalizeItem(data);\n\n // Check if the data object already exists as a tag\n // Select it if it doesn't\n var $existingOptions = self.$element.find('option').filter(function () {\n return $(this).val() === item.id;\n });\n\n // If an existing option wasn't found for it, create the option\n if (!$existingOptions.length) {\n var $option = self.option(item);\n $option.attr('data-select2-tag', true);\n\n self._removeOldTags();\n self.addOptions([$option]);\n }\n\n // Select the item, now that we know there is an option for it\n select(item);\n }\n\n function select (data) {\n self.trigger('select', {\n data: data\n });\n }\n\n params.term = params.term || '';\n\n var tokenData = this.tokenizer(params, this.options, createAndSelect);\n\n if (tokenData.term !== params.term) {\n // Replace the search term if we have the search box\n if (this.$search.length) {\n this.$search.val(tokenData.term);\n this.$search.trigger('focus');\n }\n\n params.term = tokenData.term;\n }\n\n decorated.call(this, params, callback);\n };\n\n Tokenizer.prototype.tokenizer = function (_, params, options, callback) {\n var separators = options.get('tokenSeparators') || [];\n var term = params.term;\n var i = 0;\n\n var createTag = this.createTag || function (params) {\n return {\n id: params.term,\n text: params.term\n };\n };\n\n while (i < term.length) {\n var termChar = term[i];\n\n if ($.inArray(termChar, separators) === -1) {\n i++;\n\n continue;\n }\n\n var part = term.substr(0, i);\n var partParams = $.extend({}, params, {\n term: part\n });\n\n var data = createTag(partParams);\n\n if (data == null) {\n i++;\n continue;\n }\n\n callback(data);\n\n // Reset the term to not include the tokenized portion\n term = term.substr(i + 1) || '';\n i = 0;\n }\n\n return {\n term: term\n };\n };\n\n return Tokenizer;\n});\n\nS2.define('select2/data/minimumInputLength',[\n\n], function () {\n function MinimumInputLength (decorated, $e, options) {\n this.minimumInputLength = options.get('minimumInputLength');\n\n decorated.call(this, $e, options);\n }\n\n MinimumInputLength.prototype.query = function (decorated, params, callback) {\n params.term = params.term || '';\n\n if (params.term.length < this.minimumInputLength) {\n this.trigger('results:message', {\n message: 'inputTooShort',\n args: {\n minimum: this.minimumInputLength,\n input: params.term,\n params: params\n }\n });\n\n return;\n }\n\n decorated.call(this, params, callback);\n };\n\n return MinimumInputLength;\n});\n\nS2.define('select2/data/maximumInputLength',[\n\n], function () {\n function MaximumInputLength (decorated, $e, options) {\n this.maximumInputLength = options.get('maximumInputLength');\n\n decorated.call(this, $e, options);\n }\n\n MaximumInputLength.prototype.query = function (decorated, params, callback) {\n params.term = params.term || '';\n\n if (this.maximumInputLength > 0 &&\n params.term.length > this.maximumInputLength) {\n this.trigger('results:message', {\n message: 'inputTooLong',\n args: {\n maximum: this.maximumInputLength,\n input: params.term,\n params: params\n }\n });\n\n return;\n }\n\n decorated.call(this, params, callback);\n };\n\n return MaximumInputLength;\n});\n\nS2.define('select2/data/maximumSelectionLength',[\n\n], function (){\n function MaximumSelectionLength (decorated, $e, options) {\n this.maximumSelectionLength = options.get('maximumSelectionLength');\n\n decorated.call(this, $e, options);\n }\n\n MaximumSelectionLength.prototype.bind =\n function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('select', function () {\n self._checkIfMaximumSelected();\n });\n };\n\n MaximumSelectionLength.prototype.query =\n function (decorated, params, callback) {\n var self = this;\n\n this._checkIfMaximumSelected(function () {\n decorated.call(self, params, callback);\n });\n };\n\n MaximumSelectionLength.prototype._checkIfMaximumSelected =\n function (_, successCallback) {\n var self = this;\n\n this.current(function (currentData) {\n var count = currentData != null ? currentData.length : 0;\n if (self.maximumSelectionLength > 0 &&\n count >= self.maximumSelectionLength) {\n self.trigger('results:message', {\n message: 'maximumSelected',\n args: {\n maximum: self.maximumSelectionLength\n }\n });\n return;\n }\n\n if (successCallback) {\n successCallback();\n }\n });\n };\n\n return MaximumSelectionLength;\n});\n\nS2.define('select2/dropdown',[\n 'jquery',\n './utils'\n], function ($, Utils) {\n function Dropdown ($element, options) {\n this.$element = $element;\n this.options = options;\n\n Dropdown.__super__.constructor.call(this);\n }\n\n Utils.Extend(Dropdown, Utils.Observable);\n\n Dropdown.prototype.render = function () {\n var $dropdown = $(\n '' +\n '' +\n ''\n );\n\n $dropdown.attr('dir', this.options.get('dir'));\n\n this.$dropdown = $dropdown;\n\n return $dropdown;\n };\n\n Dropdown.prototype.bind = function () {\n // Should be implemented in subclasses\n };\n\n Dropdown.prototype.position = function ($dropdown, $container) {\n // Should be implemented in subclasses\n };\n\n Dropdown.prototype.destroy = function () {\n // Remove the dropdown from the DOM\n this.$dropdown.remove();\n };\n\n return Dropdown;\n});\n\nS2.define('select2/dropdown/search',[\n 'jquery',\n '../utils'\n], function ($, Utils) {\n function Search () { }\n\n Search.prototype.render = function (decorated) {\n var $rendered = decorated.call(this);\n\n var $search = $(\n '' +\n '' +\n ''\n );\n\n this.$searchContainer = $search;\n this.$search = $search.find('input');\n\n $rendered.prepend($search);\n\n return $rendered;\n };\n\n Search.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n var resultsId = container.id + '-results';\n\n decorated.call(this, container, $container);\n\n this.$search.on('keydown', function (evt) {\n self.trigger('keypress', evt);\n\n self._keyUpPrevented = evt.isDefaultPrevented();\n });\n\n // Workaround for browsers which do not support the `input` event\n // This will prevent double-triggering of events for browsers which support\n // both the `keyup` and `input` events.\n this.$search.on('input', function (evt) {\n // Unbind the duplicated `keyup` event\n $(this).off('keyup');\n });\n\n this.$search.on('keyup input', function (evt) {\n self.handleSearch(evt);\n });\n\n container.on('open', function () {\n self.$search.attr('tabindex', 0);\n self.$search.attr('aria-controls', resultsId);\n\n self.$search.trigger('focus');\n\n window.setTimeout(function () {\n self.$search.trigger('focus');\n }, 0);\n });\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\n self.$search.val('');\n self.$search.trigger('blur');\n });\n\n container.on('focus', function () {\n if (!container.isOpen()) {\n self.$search.trigger('focus');\n }\n });\n\n container.on('results:all', function (params) {\n if (params.query.term == null || params.query.term === '') {\n var showSearch = self.showSearch(params);\n\n if (showSearch) {\n self.$searchContainer.removeClass('select2-search--hide');\n } else {\n self.$searchContainer.addClass('select2-search--hide');\n }\n }\n });\n\n 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\n Search.prototype.handleSearch = function (evt) {\n if (!this._keyUpPrevented) {\n var input = this.$search.val();\n\n this.trigger('query', {\n term: input\n });\n }\n\n this._keyUpPrevented = false;\n };\n\n Search.prototype.showSearch = function (_, params) {\n return true;\n };\n\n return Search;\n});\n\nS2.define('select2/dropdown/hidePlaceholder',[\n\n], function () {\n function HidePlaceholder (decorated, $element, options, dataAdapter) {\n this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n\n decorated.call(this, $element, options, dataAdapter);\n }\n\n HidePlaceholder.prototype.append = function (decorated, data) {\n data.results = this.removePlaceholder(data.results);\n\n decorated.call(this, data);\n };\n\n HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) {\n if (typeof placeholder === 'string') {\n placeholder = {\n id: '',\n text: placeholder\n };\n }\n\n return placeholder;\n };\n\n HidePlaceholder.prototype.removePlaceholder = function (_, data) {\n var modifiedData = data.slice(0);\n\n for (var d = data.length - 1; d >= 0; d--) {\n var item = data[d];\n\n if (this.placeholder.id === item.id) {\n modifiedData.splice(d, 1);\n }\n }\n\n return modifiedData;\n };\n\n return HidePlaceholder;\n});\n\nS2.define('select2/dropdown/infiniteScroll',[\n 'jquery'\n], function ($) {\n function InfiniteScroll (decorated, $element, options, dataAdapter) {\n this.lastParams = {};\n\n decorated.call(this, $element, options, dataAdapter);\n\n this.$loadingMore = this.createLoadingMore();\n this.loading = false;\n }\n\n InfiniteScroll.prototype.append = function (decorated, data) {\n this.$loadingMore.remove();\n this.loading = false;\n\n decorated.call(this, data);\n\n if (this.showLoadingMore(data)) {\n this.$results.append(this.$loadingMore);\n this.loadMoreIfNeeded();\n }\n };\n\n InfiniteScroll.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('query', function (params) {\n self.lastParams = params;\n self.loading = true;\n });\n\n container.on('query:append', function (params) {\n self.lastParams = params;\n self.loading = true;\n });\n\n this.$results.on('scroll', this.loadMoreIfNeeded.bind(this));\n };\n\n InfiniteScroll.prototype.loadMoreIfNeeded = function () {\n var isLoadMoreVisible = $.contains(\n document.documentElement,\n this.$loadingMore[0]\n );\n\n if (this.loading || !isLoadMoreVisible) {\n return;\n }\n\n var currentOffset = this.$results.offset().top +\n this.$results.outerHeight(false);\n var loadingMoreOffset = this.$loadingMore.offset().top +\n this.$loadingMore.outerHeight(false);\n\n if (currentOffset + 50 >= loadingMoreOffset) {\n this.loadMore();\n }\n };\n\n InfiniteScroll.prototype.loadMore = function () {\n this.loading = true;\n\n var params = $.extend({}, {page: 1}, this.lastParams);\n\n params.page++;\n\n this.trigger('query:append', params);\n };\n\n InfiniteScroll.prototype.showLoadingMore = function (_, data) {\n return data.pagination && data.pagination.more;\n };\n\n InfiniteScroll.prototype.createLoadingMore = function () {\n var $option = $(\n '
  • '\n );\n\n var message = this.options.get('translations').get('loadingMore');\n\n $option.html(message(this.lastParams));\n\n return $option;\n };\n\n return InfiniteScroll;\n});\n\nS2.define('select2/dropdown/attachBody',[\n 'jquery',\n '../utils'\n], function ($, Utils) {\n function AttachBody (decorated, $element, options) {\n this.$dropdownParent = $(options.get('dropdownParent') || document.body);\n\n decorated.call(this, $element, options);\n }\n\n AttachBody.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\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\n container.on('close', function () {\n self._hideDropdown();\n self._detachPositioningHandler(container);\n });\n\n this.$dropdownContainer.on('mousedown', function (evt) {\n evt.stopPropagation();\n });\n };\n\n AttachBody.prototype.destroy = function (decorated) {\n decorated.call(this);\n\n this.$dropdownContainer.remove();\n };\n\n AttachBody.prototype.position = function (decorated, $dropdown, $container) {\n // Clone all of the container classes\n $dropdown.attr('class', $container.attr('class'));\n\n $dropdown.removeClass('select2');\n $dropdown.addClass('select2-container--open');\n\n $dropdown.css({\n position: 'absolute',\n top: -999999\n });\n\n this.$container = $container;\n };\n\n AttachBody.prototype.render = function (decorated) {\n var $container = $('');\n\n var $dropdown = decorated.call(this);\n $container.append($dropdown);\n\n this.$dropdownContainer = $container;\n\n return $container;\n };\n\n AttachBody.prototype._hideDropdown = function (decorated) {\n this.$dropdownContainer.detach();\n };\n\n AttachBody.prototype._bindContainerResultHandlers =\n function (decorated, container) {\n\n // These should only be bound once\n if (this._containerResultsHandlersBound) {\n return;\n }\n\n var self = this;\n\n container.on('results:all', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n container.on('results:append', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n container.on('results:message', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n container.on('select', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n container.on('unselect', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n this._containerResultsHandlersBound = true;\n };\n\n AttachBody.prototype._attachPositioningHandler =\n function (decorated, container) {\n var self = this;\n\n var scrollEvent = 'scroll.select2.' + container.id;\n var resizeEvent = 'resize.select2.' + container.id;\n var orientationEvent = 'orientationchange.select2.' + container.id;\n\n var $watchers = this.$container.parents().filter(Utils.hasScroll);\n $watchers.each(function () {\n Utils.StoreData(this, 'select2-scroll-position', {\n x: $(this).scrollLeft(),\n y: $(this).scrollTop()\n });\n });\n\n $watchers.on(scrollEvent, function (ev) {\n var position = Utils.GetData(this, 'select2-scroll-position');\n $(this).scrollTop(position.y);\n });\n\n $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent,\n function (e) {\n self._positionDropdown();\n self._resizeDropdown();\n });\n };\n\n AttachBody.prototype._detachPositioningHandler =\n function (decorated, container) {\n var scrollEvent = 'scroll.select2.' + container.id;\n var resizeEvent = 'resize.select2.' + container.id;\n var orientationEvent = 'orientationchange.select2.' + container.id;\n\n var $watchers = this.$container.parents().filter(Utils.hasScroll);\n $watchers.off(scrollEvent);\n\n $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent);\n };\n\n AttachBody.prototype._positionDropdown = function () {\n var $window = $(window);\n\n var isCurrentlyAbove = this.$dropdown.hasClass('select2-dropdown--above');\n var isCurrentlyBelow = this.$dropdown.hasClass('select2-dropdown--below');\n\n var newDirection = null;\n\n var offset = this.$container.offset();\n\n offset.bottom = offset.top + this.$container.outerHeight(false);\n\n var container = {\n height: this.$container.outerHeight(false)\n };\n\n container.top = offset.top;\n container.bottom = offset.top + container.height;\n\n var dropdown = {\n height: this.$dropdown.outerHeight(false)\n };\n\n var viewport = {\n top: $window.scrollTop(),\n bottom: $window.scrollTop() + $window.height()\n };\n\n var enoughRoomAbove = viewport.top < (offset.top - dropdown.height);\n var enoughRoomBelow = viewport.bottom > (offset.bottom + dropdown.height);\n\n var css = {\n left: offset.left,\n top: container.bottom\n };\n\n // Determine what the parent element is to use for 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\n var parentOffset = {\n top: 0,\n left: 0\n };\n\n if (\n $.contains(document.body, $offsetParent[0]) ||\n $offsetParent[0].isConnected\n ) {\n parentOffset = $offsetParent.offset();\n }\n\n css.top -= parentOffset.top;\n css.left -= parentOffset.left;\n\n if (!isCurrentlyAbove && !isCurrentlyBelow) {\n newDirection = 'below';\n }\n\n if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) {\n newDirection = 'above';\n } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) {\n newDirection = 'below';\n }\n\n if (newDirection == 'above' ||\n (isCurrentlyAbove && newDirection !== 'below')) {\n css.top = container.top - parentOffset.top - dropdown.height;\n }\n\n if (newDirection != null) {\n this.$dropdown\n .removeClass('select2-dropdown--below select2-dropdown--above')\n .addClass('select2-dropdown--' + newDirection);\n this.$container\n .removeClass('select2-container--below select2-container--above')\n .addClass('select2-container--' + newDirection);\n }\n\n this.$dropdownContainer.css(css);\n };\n\n AttachBody.prototype._resizeDropdown = function () {\n var css = {\n width: this.$container.outerWidth(false) + 'px'\n };\n\n if (this.options.get('dropdownAutoWidth')) {\n css.minWidth = css.width;\n css.position = 'relative';\n css.width = 'auto';\n }\n\n this.$dropdown.css(css);\n };\n\n AttachBody.prototype._showDropdown = function (decorated) {\n this.$dropdownContainer.appendTo(this.$dropdownParent);\n\n this._positionDropdown();\n this._resizeDropdown();\n };\n\n return AttachBody;\n});\n\nS2.define('select2/dropdown/minimumResultsForSearch',[\n\n], function () {\n function countResults (data) {\n var count = 0;\n\n for (var d = 0; d < data.length; d++) {\n var item = data[d];\n\n if (item.children) {\n count += countResults(item.children);\n } else {\n count++;\n }\n }\n\n return count;\n }\n\n function MinimumResultsForSearch (decorated, $element, options, dataAdapter) {\n this.minimumResultsForSearch = options.get('minimumResultsForSearch');\n\n if (this.minimumResultsForSearch < 0) {\n this.minimumResultsForSearch = Infinity;\n }\n\n decorated.call(this, $element, options, dataAdapter);\n }\n\n MinimumResultsForSearch.prototype.showSearch = function (decorated, params) {\n if (countResults(params.data.results) < this.minimumResultsForSearch) {\n return false;\n }\n\n return decorated.call(this, params);\n };\n\n return MinimumResultsForSearch;\n});\n\nS2.define('select2/dropdown/selectOnClose',[\n '../utils'\n], function (Utils) {\n function SelectOnClose () { }\n\n SelectOnClose.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('close', function (params) {\n self._handleSelectOnClose(params);\n });\n };\n\n SelectOnClose.prototype._handleSelectOnClose = function (_, params) {\n if (params && params.originalSelect2Event != null) {\n var event = params.originalSelect2Event;\n\n // Don't select an item if the close event was triggered from a select or\n // unselect event\n if (event._type === 'select' || event._type === 'unselect') {\n return;\n }\n }\n\n var $highlightedResults = this.getHighlightedResults();\n\n // Only select highlighted results\n if ($highlightedResults.length < 1) {\n return;\n }\n\n var data = Utils.GetData($highlightedResults[0], 'data');\n\n // Don't re-select already selected resulte\n if (\n (data.element != null && data.element.selected) ||\n (data.element == null && data.selected)\n ) {\n return;\n }\n\n this.trigger('select', {\n data: data\n });\n };\n\n return SelectOnClose;\n});\n\nS2.define('select2/dropdown/closeOnSelect',[\n\n], function () {\n function CloseOnSelect () { }\n\n CloseOnSelect.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('select', function (evt) {\n self._selectTriggered(evt);\n });\n\n container.on('unselect', function (evt) {\n self._selectTriggered(evt);\n });\n };\n\n CloseOnSelect.prototype._selectTriggered = function (_, evt) {\n var originalEvent = evt.originalEvent;\n\n // Don't close if the control key is being held\n if (originalEvent && (originalEvent.ctrlKey || originalEvent.metaKey)) {\n return;\n }\n\n this.trigger('close', {\n originalEvent: originalEvent,\n originalSelect2Event: evt\n });\n };\n\n return CloseOnSelect;\n});\n\nS2.define('select2/i18n/en',[],function () {\n // English\n return {\n errorLoading: function () {\n return 'The results could not be loaded.';\n },\n inputTooLong: function (args) {\n var overChars = args.input.length - args.maximum;\n\n var message = 'Please delete ' + overChars + ' character';\n\n if (overChars != 1) {\n message += 's';\n }\n\n return message;\n },\n inputTooShort: function (args) {\n var remainingChars = args.minimum - args.input.length;\n\n var message = 'Please enter ' + remainingChars + ' or more characters';\n\n return message;\n },\n loadingMore: function () {\n return 'Loading more results…';\n },\n maximumSelected: function (args) {\n var message = 'You can only select ' + args.maximum + ' item';\n\n if (args.maximum != 1) {\n message += 's';\n }\n\n return message;\n },\n noResults: function () {\n return 'No results found';\n },\n searching: function () {\n return 'Searching…';\n },\n removeAllItems: function () {\n return 'Remove all items';\n }\n };\n});\n\nS2.define('select2/defaults',[\n 'jquery',\n 'require',\n\n './results',\n\n './selection/single',\n './selection/multiple',\n './selection/placeholder',\n './selection/allowClear',\n './selection/search',\n './selection/eventRelay',\n\n './utils',\n './translation',\n './diacritics',\n\n './data/select',\n './data/array',\n './data/ajax',\n './data/tags',\n './data/tokenizer',\n './data/minimumInputLength',\n './data/maximumInputLength',\n './data/maximumSelectionLength',\n\n './dropdown',\n './dropdown/search',\n './dropdown/hidePlaceholder',\n './dropdown/infiniteScroll',\n './dropdown/attachBody',\n './dropdown/minimumResultsForSearch',\n './dropdown/selectOnClose',\n './dropdown/closeOnSelect',\n\n './i18n/en'\n], function ($, require,\n\n ResultsList,\n\n SingleSelection, MultipleSelection, Placeholder, AllowClear,\n SelectionSearch, EventRelay,\n\n Utils, Translation, DIACRITICS,\n\n SelectData, ArrayData, AjaxData, Tags, Tokenizer,\n MinimumInputLength, MaximumInputLength, MaximumSelectionLength,\n\n Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll,\n AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect,\n\n EnglishTranslation) {\n function Defaults () {\n this.reset();\n }\n\n Defaults.prototype.apply = function (options) {\n options = $.extend(true, {}, this.defaults, options);\n\n if (options.dataAdapter == null) {\n if (options.ajax != null) {\n options.dataAdapter = AjaxData;\n } else if (options.data != null) {\n options.dataAdapter = ArrayData;\n } else {\n options.dataAdapter = SelectData;\n }\n\n if (options.minimumInputLength > 0) {\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n MinimumInputLength\n );\n }\n\n if (options.maximumInputLength > 0) {\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n MaximumInputLength\n );\n }\n\n if (options.maximumSelectionLength > 0) {\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n MaximumSelectionLength\n );\n }\n\n if (options.tags) {\n options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags);\n }\n\n if (options.tokenSeparators != null || options.tokenizer != null) {\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n Tokenizer\n );\n }\n\n if (options.query != null) {\n var Query = require(options.amdBase + 'compat/query');\n\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n Query\n );\n }\n\n if (options.initSelection != null) {\n var InitSelection = require(options.amdBase + 'compat/initSelection');\n\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n InitSelection\n );\n }\n }\n\n if (options.resultsAdapter == null) {\n options.resultsAdapter = ResultsList;\n\n if (options.ajax != null) {\n options.resultsAdapter = Utils.Decorate(\n options.resultsAdapter,\n InfiniteScroll\n );\n }\n\n if (options.placeholder != null) {\n options.resultsAdapter = Utils.Decorate(\n options.resultsAdapter,\n HidePlaceholder\n );\n }\n\n if (options.selectOnClose) {\n options.resultsAdapter = Utils.Decorate(\n options.resultsAdapter,\n SelectOnClose\n );\n }\n }\n\n if (options.dropdownAdapter == null) {\n if (options.multiple) {\n options.dropdownAdapter = Dropdown;\n } else {\n var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch);\n\n options.dropdownAdapter = SearchableDropdown;\n }\n\n if (options.minimumResultsForSearch !== 0) {\n options.dropdownAdapter = Utils.Decorate(\n options.dropdownAdapter,\n MinimumResultsForSearch\n );\n }\n\n if (options.closeOnSelect) {\n options.dropdownAdapter = Utils.Decorate(\n options.dropdownAdapter,\n CloseOnSelect\n );\n }\n\n if (\n options.dropdownCssClass != null ||\n options.dropdownCss != null ||\n options.adaptDropdownCssClass != null\n ) {\n var DropdownCSS = require(options.amdBase + 'compat/dropdownCss');\n\n options.dropdownAdapter = Utils.Decorate(\n options.dropdownAdapter,\n DropdownCSS\n );\n }\n\n options.dropdownAdapter = Utils.Decorate(\n options.dropdownAdapter,\n AttachBody\n );\n }\n\n if (options.selectionAdapter == null) {\n if (options.multiple) {\n options.selectionAdapter = MultipleSelection;\n } else {\n options.selectionAdapter = SingleSelection;\n }\n\n // Add the placeholder mixin if a placeholder was specified\n if (options.placeholder != null) {\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n Placeholder\n );\n }\n\n if (options.allowClear) {\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n AllowClear\n );\n }\n\n if (options.multiple) {\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n SelectionSearch\n );\n }\n\n if (\n options.containerCssClass != null ||\n options.containerCss != null ||\n options.adaptContainerCssClass != null\n ) {\n var ContainerCSS = require(options.amdBase + 'compat/containerCss');\n\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n ContainerCSS\n );\n }\n\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n EventRelay\n );\n }\n\n // If 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\n var uniqueLanguages = [];\n\n for (var l = 0; l < options.language.length; l++) {\n var language = options.language[l];\n\n if (uniqueLanguages.indexOf(language) === -1) {\n uniqueLanguages.push(language);\n }\n }\n\n options.language = uniqueLanguages;\n\n options.translations = this._processTranslations(\n options.language,\n options.debug\n );\n\n return options;\n };\n\n Defaults.prototype.reset = function () {\n function stripDiacritics (text) {\n // Used 'uni range + named function' from http://jsperf.com/diacritics/18\n function match(a) {\n return DIACRITICS[a] || a;\n }\n\n return text.replace(/[^\\u0000-\\u007E]/g, match);\n }\n\n function matcher (params, data) {\n // Always return the object if there is nothing to compare\n if ($.trim(params.term) === '') {\n return data;\n }\n\n // Do a recursive check for options with children\n if (data.children && data.children.length > 0) {\n // Clone the data object if there are children\n // This is required as we modify the object to remove any non-matches\n var match = $.extend(true, {}, data);\n\n // Check each child of the option\n for (var c = data.children.length - 1; c >= 0; c--) {\n var child = data.children[c];\n\n var matches = matcher(params, child);\n\n // If there wasn't a match, remove the object in the array\n if (matches == null) {\n match.children.splice(c, 1);\n }\n }\n\n // If any children matched, return the new object\n if (match.children.length > 0) {\n return match;\n }\n\n // If there were no matching children, check just the plain object\n return matcher(params, match);\n }\n\n var original = stripDiacritics(data.text).toUpperCase();\n var term = stripDiacritics(params.term).toUpperCase();\n\n // Check if the text contains the term\n if (original.indexOf(term) > -1) {\n return data;\n }\n\n // If it doesn't contain the term, don't return anything\n return null;\n }\n\n this.defaults = {\n amdBase: './',\n amdLanguageBase: './i18n/',\n closeOnSelect: true,\n debug: false,\n dropdownAutoWidth: false,\n escapeMarkup: Utils.escapeMarkup,\n language: {},\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\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\n var languages = Array.prototype.concat.call(\n this._resolveLanguage(elementLanguage),\n this._resolveLanguage(optionLanguage),\n this._resolveLanguage(defaultLanguage),\n this._resolveLanguage(parentLanguage)\n );\n\n options.language = languages;\n\n return options;\n };\n\n Defaults.prototype._resolveLanguage = function (language) {\n if (!language) {\n return [];\n }\n\n if ($.isEmptyObject(language)) {\n return [];\n }\n\n if ($.isPlainObject(language)) {\n return [language];\n }\n\n var languages;\n\n if (!$.isArray(language)) {\n languages = [language];\n } else {\n languages = language;\n }\n\n var resolvedLanguages = [];\n\n for (var l = 0; l < languages.length; l++) {\n resolvedLanguages.push(languages[l]);\n\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\n resolvedLanguages.push(baseLanguage);\n }\n }\n\n return resolvedLanguages;\n };\n\n Defaults.prototype._processTranslations = function (languages, debug) {\n var translations = new Translation();\n\n for (var l = 0; l < languages.length; l++) {\n var languageData = new Translation();\n\n var language = languages[l];\n\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(\n 'Select2: The language file for \"' + language + '\" could ' +\n 'not be automatically loaded. A fallback will be used instead.'\n );\n }\n }\n }\n } else if ($.isPlainObject(language)) {\n languageData = new Translation(language);\n } else {\n languageData = language;\n }\n\n translations.extend(languageData);\n }\n\n return translations;\n };\n\n Defaults.prototype.set = function (key, value) {\n var camelKey = $.camelCase(key);\n\n var data = {};\n data[camelKey] = value;\n\n var convertedData = Utils._convertData(data);\n\n $.extend(true, this.defaults, convertedData);\n };\n\n var defaults = new Defaults();\n\n return defaults;\n});\n\nS2.define('select2/options',[\n 'require',\n 'jquery',\n './defaults',\n './utils'\n], function (require, $, Defaults, Utils) {\n function Options (options, $element) {\n this.options = options;\n\n if ($element != null) {\n this.fromElement($element);\n }\n\n if ($element != null) {\n this.options = Defaults.applyFromElement(this.options, $element);\n }\n\n this.options = Defaults.apply(this.options);\n\n if ($element && $element.is('input')) {\n var InputCompat = require(this.get('amdBase') + 'compat/inputData');\n\n this.options.dataAdapter = Utils.Decorate(\n this.options.dataAdapter,\n InputCompat\n );\n }\n }\n\n Options.prototype.fromElement = function ($e) {\n var excludedData = ['select2'];\n\n if (this.options.multiple == null) {\n this.options.multiple = $e.prop('multiple');\n }\n\n if (this.options.disabled == null) {\n this.options.disabled = $e.prop('disabled');\n }\n\n if (this.options.dir == null) {\n if ($e.prop('dir')) {\n this.options.dir = $e.prop('dir');\n } else if ($e.closest('[dir]').prop('dir')) {\n this.options.dir = $e.closest('[dir]').prop('dir');\n } else {\n this.options.dir = 'ltr';\n }\n }\n\n $e.prop('disabled', this.options.disabled);\n $e.prop('multiple', this.options.multiple);\n\n if (Utils.GetData($e[0], 'select2Tags')) {\n if (this.options.debug && window.console && console.warn) {\n console.warn(\n 'Select2: The `data-select2-tags` attribute has been changed to ' +\n 'use the `data-data` and `data-tags=\"true\"` attributes and will be ' +\n 'removed in future versions of Select2.'\n );\n }\n\n Utils.StoreData($e[0], 'data', Utils.GetData($e[0], 'select2Tags'));\n Utils.StoreData($e[0], 'tags', true);\n }\n\n if (Utils.GetData($e[0], 'ajaxUrl')) {\n if (this.options.debug && window.console && console.warn) {\n console.warn(\n 'Select2: The `data-ajax-url` attribute has been changed to ' +\n '`data-ajax--url` and support for the old attribute will be removed' +\n ' in future versions of Select2.'\n );\n }\n\n $e.attr('ajax--url', Utils.GetData($e[0], 'ajaxUrl'));\n Utils.StoreData($e[0], 'ajax-Url', Utils.GetData($e[0], 'ajaxUrl'));\n }\n\n var dataset = {};\n\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\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\n data = Utils._convertData(data);\n\n for (var key in data) {\n if ($.inArray(key, excludedData) > -1) {\n continue;\n }\n\n if ($.isPlainObject(this.options[key])) {\n $.extend(this.options[key], data[key]);\n } else {\n this.options[key] = data[key];\n }\n }\n\n return this;\n };\n\n Options.prototype.get = function (key) {\n return this.options[key];\n };\n\n Options.prototype.set = function (key, val) {\n this.options[key] = val;\n };\n\n return Options;\n});\n\nS2.define('select2/core',[\n 'jquery',\n './options',\n './utils',\n './keys'\n], function ($, Options, Utils, KEYS) {\n var Select2 = function ($element, options) {\n if (Utils.GetData($element[0], 'select2') != null) {\n Utils.GetData($element[0], 'select2').destroy();\n }\n\n this.$element = $element;\n\n this.id = this._generateId($element);\n\n options = options || {};\n\n this.options = new Options(options, $element);\n\n Select2.__super__.constructor.call(this);\n\n // Set up the tabindex\n\n var tabindex = $element.attr('tabindex') || 0;\n 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\n var $container = this.render();\n\n this._placeContainer($container);\n\n var SelectionAdapter = this.options.get('selectionAdapter');\n this.selection = new SelectionAdapter($element, this.options);\n this.$selection = this.selection.render();\n\n this.selection.position(this.$selection, $container);\n\n var DropdownAdapter = this.options.get('dropdownAdapter');\n this.dropdown = new DropdownAdapter($element, this.options);\n this.$dropdown = this.dropdown.render();\n\n this.dropdown.position(this.$dropdown, $container);\n\n var ResultsAdapter = this.options.get('resultsAdapter');\n this.results = new ResultsAdapter($element, this.options, this.dataAdapter);\n this.$results = this.results.render();\n\n this.results.position(this.$results, this.$dropdown);\n\n // Bind events\n\n var self = this;\n\n // Bind the container to all of the adapters\n this._bindAdapters();\n\n // Register any DOM event handlers\n this._registerDomEvents();\n\n // Register any internal event handlers\n this._registerDataEvents();\n this._registerSelectionEvents();\n this._registerDropdownEvents();\n this._registerResultsEvents();\n this._registerEvents();\n\n // Set the initial state\n this.dataAdapter.current(function (initialData) {\n self.trigger('selection:update', {\n data: initialData\n });\n });\n\n // Hide the original select\n $element.addClass('select2-hidden-accessible');\n $element.attr('aria-hidden', 'true');\n\n // Synchronize any monitored attributes\n this._syncAttributes();\n\n Utils.StoreData($element[0], 'select2', this);\n\n // Ensure backwards compatibility with $element.data('select2').\n $element.data('select2', this);\n };\n\n Utils.Extend(Select2, Utils.Observable);\n\n Select2.prototype._generateId = function ($element) {\n var id = '';\n\n if ($element.attr('id') != null) {\n id = $element.attr('id');\n } else if ($element.attr('name') != null) {\n id = $element.attr('name') + '-' + Utils.generateChars(2);\n } else {\n id = Utils.generateChars(4);\n }\n\n id = id.replace(/(:|\\.|\\[|\\]|,)/g, '');\n id = 'select2-' + id;\n\n return id;\n };\n\n Select2.prototype._placeContainer = function ($container) {\n $container.insertAfter(this.$element);\n\n var width = this._resolveWidth(this.$element, this.options.get('width'));\n\n if (width != null) {\n $container.css('width', width);\n }\n };\n\n Select2.prototype._resolveWidth = function ($element, method) {\n var WIDTH = /^width:(([-+]?([0-9]*\\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;\n\n if (method == 'resolve') {\n var styleWidth = this._resolveWidth($element, 'style');\n\n if (styleWidth != null) {\n return styleWidth;\n }\n\n return this._resolveWidth($element, 'element');\n }\n\n if (method == 'element') {\n var elementWidth = $element.outerWidth(false);\n\n if (elementWidth <= 0) {\n return 'auto';\n }\n\n return elementWidth + 'px';\n }\n\n if (method == 'style') {\n var style = $element.attr('style');\n\n if (typeof(style) !== 'string') {\n return null;\n }\n\n var attrs = style.split(';');\n\n for (var i = 0, l = attrs.length; i < l; i = i + 1) {\n var attr = attrs[i].replace(/\\s/g, '');\n var matches = attr.match(WIDTH);\n\n if (matches !== null && matches.length >= 1) {\n return matches[1];\n }\n }\n\n return null;\n }\n\n if (method == 'computedstyle') {\n var computedStyle = window.getComputedStyle($element[0]);\n\n return computedStyle.width;\n }\n\n return method;\n };\n\n Select2.prototype._bindAdapters = function () {\n this.dataAdapter.bind(this, this.$container);\n this.selection.bind(this, this.$container);\n\n this.dropdown.bind(this, this.$container);\n this.results.bind(this, this.$container);\n };\n\n Select2.prototype._registerDomEvents = function () {\n var self = this;\n\n this.$element.on('change.select2', function () {\n self.dataAdapter.current(function (data) {\n self.trigger('selection:update', {\n data: data\n });\n });\n });\n\n this.$element.on('focus.select2', function (evt) {\n self.trigger('focus', evt);\n });\n\n this._syncA = Utils.bind(this._syncAttributes, this);\n this._syncS = Utils.bind(this._syncSubtree, this);\n\n if (this.$element[0].attachEvent) {\n this.$element[0].attachEvent('onpropertychange', this._syncA);\n }\n\n var observer = window.MutationObserver ||\n window.WebKitMutationObserver ||\n window.MozMutationObserver\n ;\n\n if (observer != null) {\n this._observer = new observer(function (mutations) {\n self._syncA();\n self._syncS(null, mutations);\n });\n this._observer.observe(this.$element[0], {\n attributes: true,\n childList: true,\n subtree: false\n });\n } else if (this.$element[0].addEventListener) {\n this.$element[0].addEventListener(\n 'DOMAttrModified',\n self._syncA,\n false\n );\n this.$element[0].addEventListener(\n 'DOMNodeInserted',\n self._syncS,\n false\n );\n this.$element[0].addEventListener(\n 'DOMNodeRemoved',\n self._syncS,\n false\n );\n }\n };\n\n Select2.prototype._registerDataEvents = function () {\n var self = this;\n\n this.dataAdapter.on('*', function (name, params) {\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerSelectionEvents = function () {\n var self = this;\n var nonRelayEvents = ['toggle', 'focus'];\n\n this.selection.on('toggle', function () {\n self.toggleDropdown();\n });\n\n this.selection.on('focus', function (params) {\n self.focus(params);\n });\n\n this.selection.on('*', function (name, params) {\n if ($.inArray(name, nonRelayEvents) !== -1) {\n return;\n }\n\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerDropdownEvents = function () {\n var self = this;\n\n this.dropdown.on('*', function (name, params) {\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerResultsEvents = function () {\n var self = this;\n\n this.results.on('*', function (name, params) {\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerEvents = function () {\n var self = this;\n\n this.on('open', function () {\n self.$container.addClass('select2-container--open');\n });\n\n this.on('close', function () {\n self.$container.removeClass('select2-container--open');\n });\n\n this.on('enable', function () {\n self.$container.removeClass('select2-container--disabled');\n });\n\n this.on('disable', function () {\n self.$container.addClass('select2-container--disabled');\n });\n\n this.on('blur', function () {\n self.$container.removeClass('select2-container--focus');\n });\n\n this.on('query', function (params) {\n if (!self.isOpen()) {\n self.trigger('open', {});\n }\n\n this.dataAdapter.query(params, function (data) {\n self.trigger('results:all', {\n data: data,\n query: params\n });\n });\n });\n\n this.on('query:append', function (params) {\n this.dataAdapter.query(params, function (data) {\n self.trigger('results:append', {\n data: data,\n query: params\n });\n });\n });\n\n this.on('keypress', function (evt) {\n var key = evt.which;\n\n if (self.isOpen()) {\n if (key === KEYS.ESC || key === KEYS.TAB ||\n (key === KEYS.UP && evt.altKey)) {\n self.close(evt);\n\n evt.preventDefault();\n } else if (key === KEYS.ENTER) {\n self.trigger('results:select', {});\n\n evt.preventDefault();\n } else if ((key === KEYS.SPACE && evt.ctrlKey)) {\n self.trigger('results:toggle', {});\n\n evt.preventDefault();\n } else if (key === KEYS.UP) {\n self.trigger('results:previous', {});\n\n evt.preventDefault();\n } else if (key === KEYS.DOWN) {\n self.trigger('results:next', {});\n\n evt.preventDefault();\n }\n } else {\n if (key === KEYS.ENTER || key === KEYS.SPACE ||\n (key === KEYS.DOWN && evt.altKey)) {\n self.open();\n\n evt.preventDefault();\n }\n }\n });\n };\n\n Select2.prototype._syncAttributes = function () {\n this.options.set('disabled', this.$element.prop('disabled'));\n\n if (this.isDisabled()) {\n if (this.isOpen()) {\n this.close();\n }\n\n this.trigger('disable', {});\n } else {\n this.trigger('enable', {});\n }\n };\n\n Select2.prototype._isChangeMutation = function (evt, mutations) {\n var changed = false;\n var self = this;\n\n // Ignore any mutation events raised for elements that aren't options or\n // optgroups. This handles the case when the select element is destroyed\n if (\n evt && evt.target && (\n evt.target.nodeName !== 'OPTION' && evt.target.nodeName !== 'OPTGROUP'\n )\n ) {\n return;\n }\n\n if (!mutations) {\n // If mutation events aren't supported, then we can only assume that the\n // change affected the selections\n changed = true;\n } else if (mutations.addedNodes && mutations.addedNodes.length > 0) {\n for (var n = 0; n < mutations.addedNodes.length; n++) {\n var node = mutations.addedNodes[n];\n\n if (node.selected) {\n changed = true;\n }\n }\n } else if (mutations.removedNodes && mutations.removedNodes.length > 0) {\n changed = true;\n } else if ($.isArray(mutations)) {\n $.each(mutations, function(evt, mutation) {\n if (self._isChangeMutation(evt, mutation)) {\n // We've found a change mutation.\n // Let's escape from the loop and continue\n changed = true;\n return false;\n }\n });\n }\n return changed;\n };\n\n Select2.prototype._syncSubtree = function (evt, mutations) {\n var changed = this._isChangeMutation(evt, 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\n if (args === undefined) {\n args = {};\n }\n\n if (name in preTriggerMap) {\n var preTriggerName = preTriggerMap[name];\n var preTriggerArgs = {\n prevented: false,\n name: name,\n args: args\n };\n\n actualTrigger.call(this, preTriggerName, preTriggerArgs);\n\n if (preTriggerArgs.prevented) {\n args.prevented = true;\n\n return;\n }\n }\n\n actualTrigger.call(this, name, args);\n };\n\n Select2.prototype.toggleDropdown = function () {\n if (this.isDisabled()) {\n return;\n }\n\n if (this.isOpen()) {\n this.close();\n } else {\n this.open();\n }\n };\n\n Select2.prototype.open = function () {\n if (this.isOpen()) {\n return;\n }\n\n if (this.isDisabled()) {\n return;\n }\n\n this.trigger('query', {});\n };\n\n Select2.prototype.close = function (evt) {\n if (!this.isOpen()) {\n return;\n }\n\n this.trigger('close', { originalEvent : evt });\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\n Select2.prototype.isOpen = function () {\n return this.$container.hasClass('select2-container--open');\n };\n\n Select2.prototype.hasFocus = function () {\n return this.$container.hasClass('select2-container--focus');\n };\n\n Select2.prototype.focus = function (data) {\n // No need to re-trigger focus events if we are already focused\n if (this.hasFocus()) {\n return;\n }\n\n this.$container.addClass('select2-container--focus');\n this.trigger('focus', {});\n };\n\n Select2.prototype.enable = function (args) {\n if (this.options.get('debug') && window.console && console.warn) {\n console.warn(\n 'Select2: The `select2(\"enable\")` method has been deprecated and will' +\n ' be removed in later Select2 versions. Use $element.prop(\"disabled\")' +\n ' instead.'\n );\n }\n\n if (args == null || args.length === 0) {\n args = [true];\n }\n\n var disabled = !args[0];\n\n this.$element.prop('disabled', disabled);\n };\n\n Select2.prototype.data = function () {\n if (this.options.get('debug') &&\n arguments.length > 0 && window.console && console.warn) {\n console.warn(\n 'Select2: Data can no longer be set using `select2(\"data\")`. You ' +\n 'should consider setting the value instead using `$element.val()`.'\n );\n }\n\n var data = [];\n\n this.dataAdapter.current(function (currentData) {\n data = currentData;\n });\n\n return data;\n };\n\n Select2.prototype.val = function (args) {\n if (this.options.get('debug') && window.console && console.warn) {\n console.warn(\n 'Select2: The `select2(\"val\")` method has been deprecated and will be' +\n ' removed in later Select2 versions. Use $element.val() instead.'\n );\n }\n\n if (args == null || args.length === 0) {\n return this.$element.val();\n }\n\n var newVal = args[0];\n\n if ($.isArray(newVal)) {\n newVal = $.map(newVal, function (obj) {\n return obj.toString();\n });\n }\n\n this.$element.val(newVal).trigger('input').trigger('change');\n };\n\n Select2.prototype.destroy = function () {\n this.$container.remove();\n\n if (this.$element[0].detachEvent) {\n this.$element[0].detachEvent('onpropertychange', this._syncA);\n }\n\n if (this._observer != null) {\n this._observer.disconnect();\n this._observer = null;\n } else if (this.$element[0].removeEventListener) {\n this.$element[0]\n .removeEventListener('DOMAttrModified', this._syncA, false);\n this.$element[0]\n .removeEventListener('DOMNodeInserted', this._syncS, false);\n this.$element[0]\n .removeEventListener('DOMNodeRemoved', this._syncS, false);\n }\n\n this._syncA = null;\n this._syncS = null;\n\n this.$element.off('.select2');\n this.$element.attr('tabindex',\n Utils.GetData(this.$element[0], 'old-tabindex'));\n\n this.$element.removeClass('select2-hidden-accessible');\n this.$element.attr('aria-hidden', 'false');\n Utils.RemoveData(this.$element[0]);\n this.$element.removeData('select2');\n\n this.dataAdapter.destroy();\n this.selection.destroy();\n this.dropdown.destroy();\n this.results.destroy();\n\n this.dataAdapter = null;\n this.selection = null;\n this.dropdown = null;\n this.results = null;\n };\n\n Select2.prototype.render = function () {\n var $container = $(\n '' +\n '' +\n '' +\n ''\n );\n\n $container.attr('dir', this.options.get('dir'));\n\n this.$container = $container;\n\n this.$container.addClass('select2-container--' + this.options.get('theme'));\n\n Utils.StoreData($container[0], 'element', this.$element);\n\n return $container;\n };\n\n return Select2;\n});\n\nS2.define('jquery-mousewheel',[\n 'jquery'\n], function ($) {\n // Used to shim jQuery.mousewheel for non-full builds.\n return $;\n});\n\nS2.define('jquery.select2',[\n 'jquery',\n 'jquery-mousewheel',\n\n './select2/core',\n './select2/defaults',\n './select2/utils'\n], function ($, _, Select2, Defaults, Utils) {\n if ($.fn.select2 == null) {\n // All methods that should return the element\n var thisMethods = ['open', 'close', 'destroy'];\n\n $.fn.select2 = function (options) {\n options = options || {};\n\n if (typeof options === 'object') {\n this.each(function () {\n var instanceOptions = $.extend(true, {}, options);\n\n var instance = new Select2($(this), instanceOptions);\n });\n\n return this;\n } else if (typeof options === 'string') {\n var ret;\n var args = Array.prototype.slice.call(arguments, 1);\n\n this.each(function () {\n var instance = Utils.GetData(this, 'select2');\n\n if (instance == null && window.console && console.error) {\n console.error(\n 'The select2(\\'' + options + '\\') method was called on an ' +\n 'element that is not using Select2.'\n );\n }\n\n ret = instance[options].apply(instance, args);\n });\n\n // Check if we should be returning `this`\n if ($.inArray(options, thisMethods) > -1) {\n return this;\n }\n\n return ret;\n } else {\n throw new Error('Invalid arguments for Select2: ' + options);\n }\n };\n }\n\n if ($.fn.select2.defaults == null) {\n $.fn.select2.defaults = Defaults;\n }\n\n return Select2;\n});\n\n // Return the AMD loader configuration so it can be used outside of this file\n return {\n define: S2.define,\n require: S2.require\n };\n}());\n\n // Autoload the jQuery bindings\n // We know that all of the modules exist above this, so we're safe\n var select2 = S2.require('jquery.select2');\n\n // Hold the AMD module references on the jQuery function that was just loaded\n // This allows Select2 to use the internal loader outside of this file, such\n // as in the language files.\n jQuery.fn.select2.amd = S2;\n\n // Return the Select2 instance for anyone who is importing it.\n return select2;\n}));\n","// Import\nimport $ from 'jquery';\nimport select2 from 'select2';\n\n// Hook up select2 to jQuery\nselect2($);\n\n// Initialize select2 instances\n$(document).ready(function () {\n $('.ginput_container_select .gfield_select, .ginput_container_time select').select2({\n minimumResultsForSearch: Infinity,\n placeholder: 'Select an option'\n });\n \n $('.name_prefix_select select, .name_suffix_select select, .ginput_container_date select').select2({\n minimumResultsForSearch: Infinity\n });\n \n $('.ginput_container .address_country select').select2({\n placeholder: 'Select a country',\n allowClear: true\n });\n \n $('.ginput_container .address_state select').select2({\n placeholder: 'Select a state',\n allowClear: true\n });\n});\n","jQuery(document).ready(function($) {\n \n /* ----------------------------\n\n Smooth Scroll with jQuery:\n\n Perform a smooth page scroll to an anchor on the same page. It has some logic built in to identify those jump links, and not target other links.\n \n https://css-tricks.com/snippets/jquery/smooth-scrolling/\n\n ---------------------------- */\n \n // Select all links with hashes\n\t$('a[href*=\"#\"]')\n\t\t// Remove links that don't actually link to anything\n\t\t.not('[href=\"#\"]')\n\t\t.not('[href=\"#0\"]')\n\t\t.not('[data-toggle=\"collapse\"]')\n\t\t.not('.tabs-link')\n\t\t.click(function(event) {\n\t\t\tvar hash = this.hash;\n\t\t\t\n\t\t\t// On-page links\n\t\t\tif (\n\t\t\t\tlocation.pathname.replace(/^\\//, '') == this.pathname.replace(/^\\//, '') \n\t\t\t\t&& \n\t\t\t\tlocation.hostname == this.hostname\n\t\t\t) {\n\t\t\t\t// Figure out element to scroll to\n\t\t\t\tvar target = $(this.hash);\n\t\t\t\ttarget = target.length ? target : $('[name=' + this.hash.slice(1) + ']');\n\t\t\t\t// Does a scroll target exist?\n\t\t\t\tif (target.length) {\n\t\t\t\t\t// Only prevent default if animation is actually gonna happen\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t$('html, body').animate({\n\t\t\t\t\t\tscrollTop: target.offset().top\n\t\t\t\t\t}, 400, function() {\n\t\t\t\t\t\t// Callback after animation\n\t\t\t\t\t\tif (window.location.href.indexOf('#') !== -1) {\n\t\t\t\t\t\t\twindow.location.href = window.location.href.split('#')[0] + hash;\t\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\twindow.location.href = window.location.href + hash;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n});\n","jQuery(document).ready(function($) {\n\n // Identifying keyboard navigators\n\t//----------------------------------------------\n // Determine if user is tabbing through site with keyboard (or using mouse)\n // to give better control over :focus states\n //\n // https://medium.com/hackernoon/removing-that-ugly-focus-ring-and-keeping-it-too-6c8727fefcd2\n function handleFirstTab(e) {\n if (e.keyCode === 9) {\n document.body.classList.add('user-is-tabbing');\n\n window.removeEventListener('keydown', handleFirstTab);\n window.addEventListener('mousedown', handleMouseDownOnce);\n }\n }\n\n function handleMouseDownOnce() {\n document.body.classList.remove('user-is-tabbing');\n\n window.removeEventListener('mousedown', handleMouseDownOnce);\n window.addEventListener('keydown', handleFirstTab);\n }\n\n window.addEventListener('keydown', handleFirstTab);\n\t\n});\n","jQuery(document).ready(function($) {\n \n // Unsticky sidebar if taller than window height\n\t//----------------------------------------------\n function unstickySidebar() {\n\t\tvar windowHeight = $(window).height();\n\t\t\n\t\tif ($('#pageSidebar').outerHeight() >= windowHeight) {\n\t\t\t$('#pageSidebar').addClass('position-relative');\n\t\t} else {\n\t\t\t$('#pageSidebar').removeClass('position-relative');\n\t\t}\n\t}\n\n\t// Window listeners\t\n\t$(window).resize(function(){\n\t\tunstickySidebar();\n\t});\n \n // have to initialize this after the accordion nav menu has been expanded\n $(window).on(\"load\", function() {\n setTimeout(unstickySidebar, 500);\n });\n\n});\n","(function($) {\n\t$.fn.SecondaryNav = function(opts) {\n\t\topts = $.extend({}, $.fn.SecondaryNav.options, opts);\n\t\t\n\t\tthis.each(function() {\n\t\t\tvar el = $(this);\n\t\t\tvar nav = el.children('ul');\n var wrapper = $('#sidebarNavWrap');\n var wrapperParent = $('#pageSidebar');\n\t\t\tvar navRow = nav.closest('.row');\n\t\t\t\n\t\t\tnav.parent().find('#secondary-nav-toggle').remove(); // remove any existing button, in case this plugin has already been initialized (used by DirectoryProfile.js, for example)\n\t\t\t\n\t\t\tvar mobileButton = $.fn.SecondaryNav.getMobileButton(nav);\n\t\t\t\n\t\t\tnav.before(mobileButton);\n\t\n\t\t\tfunction checkWidth() {\n\t\t\t\tvar width = $(window).width();\n\t\t\t\t\n\t\t\t\tif (width <= opts.navJumpWidth) {\n \n\t\t\t\t\tif (navRow.children().first().is(wrapper) === false) {\n\t\t\t\t\t\t// move nav to first child in .row\n\t\t\t\t\t\twrapper.prependTo(navRow);\n\t\t\t\t\t\tnav.slideUp(0);\n\t\t\t\t\t}\n \n\t\t\t\t} else {\n\n if (wrapperParent.children().first().is(wrapper) === false) {\n // move nav wrapper to original parent\n wrapperParent.prepend(wrapper);\n nav.slideDown(0);\n }\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t$(window).resize(function(){\n\t\t\t\tcheckWidth();\n\t\t\t});\n\t\n\t\t\tcheckWidth();\n\t\t\t\n\t\t\t// Special treatment for hash links (for menus using Bellows Accordion Plugin only)\n\t\t\tif (nav.hasClass('bellows-nav')) {\n\t\t\t\t\n\t\t\t\tvar links = nav.find('a');\n\t\t\t\t\t\t\t\n\t\t\t\tvar currPage = window.location.href;\n\t\t\t\t\n\t\t\t\t/**\n\t\t\t\t * Handle hash only vs. full URL\n\t\t\t\t */\n\t\t\t\t \n\t\t\t\t// Loop through all found links in nav\n\t\t\t\t$(links).each(function(idx, ele) {\n\t\t\t\t\t\n\t\t\t\t\tvar link = $(this).attr('href');\n\t\t\t\t\tvar prevLink = $(links[parseInt(idx) - 1]).attr('href');\n\t\t\t\t\t\n\t\t\t\t\t// Only proceed if: 1) a hash is present, and 2) the hash isn't empty (for example, a placeholder menu item)\n\t\t\t\t\tif (link.indexOf('#') !== -1 && link.split('#')[1] !== '') {\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar linkParts = link.split('#');\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (linkParts[0] == '') {\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// Assumes structure of: ul > li > a > ul li > a\n\t\t\t\t\t\t\tvar parentPage = $(this).parent().parent().prev().attr('href');\n\t\t\t\t\t\t\tvar updatedLink = parentPage + link;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t$(this).attr('href', updatedLink);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\t/**\n\t\t\t\t * Perform desired click actions\n\t\t\t\t */\n\t\t\t\t\n\t\t\t\tvar doingClick = false;\n\t\t\t\t\n\t\t\t\t// Add necessary \"current\" classes to the menu item when clicked\n\t\t\t\t$(nav).on('click', 'a[href*=\"#\"]', function() {\n\t\t\t\t\t\n\t\t\t\t\tvar url = $(this).attr('href');\n\t\t\t\t\tvar hash = url.split('#')[1];\n\t\t\t\t\t\n\t\t\t\t\t$('a.scrolled').removeClass('scrolled');\n\t\t\t\t\t$('a[id=\"' + hash + '\"]').addClass('scrolled');\n\t\t\t\t\t\n\t\t\t\t\tdoingClick = true;\n\t\t\t\t\t$('.bellows-current-menu-item').removeClass('bellows-current-menu-item bellows-current_page_item');\n\t\t\t\t\t$(this).parent().addClass('bellows-current-menu-item bellows-current_page_item');\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\t// Reset \"doingClick\" var\n\t\t\t\tdocument.addEventListener('wheel', function() {\n\t\t\t\t\tdoingClick = false;\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\t/**\n\t\t\t\t * Perform desired scroll actions\n\t\t\t\t */\n\t\t\t\tvar lastScrollTop = 0;\n\t\t\t\t$(window).scroll(function() {\n\t\t\t\t\t\n\t\t\t\t\tvar st = $(this).scrollTop();\n\t\t\t\t\tif (st > lastScrollTop) {\n\t\t\t\t\t\t// down scroll\n\t\t\t\t\t\t$.fn.SecondaryNav.checkScroll('down', nav, doingClick);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// up scroll\n\t\t\t\t\t\t$.fn.SecondaryNav.checkScroll('up', nav, doingClick);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tlastScrollTop = st;\n\t\t\t\t\t\n\t\t\t\t});\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t});\n\t\t\n\t\treturn this;\n\t};\n\t\n\t$.fn.SecondaryNav.checkScroll = function(direction, nav, doingClick) {\n\t\t\n\t\tif (doingClick == false) {\n\t\t\n\t\t\tvar hashes = $(nav).find('a[href*=\"#\"]');\n\t\t\t\n\t\t\tfor (var i=0; i < hashes.length; i++) {\n\t\t\t\t\t\t\n\t\t\t\tvar href = $(hashes[i]).attr('href');\n\t\t\t\tvar hash = href.split('#')[1];\n\t\t\t\tvar anchor = $('.page--main-content').find('a[id=\"' + hash + '\"]');\n\t\t\t\tvar anchorPos = $(anchor).offset();\n\t\t\t\tvar offset = $.fn.SecondaryNav.getPosition(anchor[0]);\n\t\t\t\tvar trigger = document.documentElement.scrollTop;\n\t\t\t\t\n\t\t\t\t// remove \"scrolled\" class if we've\n\t\t\t\tif (offset > trigger && $(anchor).hasClass('scrolled')) {\n\t\t\t\t\t$(anchor).removeClass('scrolled');\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (direction == 'down') {\n\t\t\t\t\t\n\t\t\t\t\tif (offset < trigger && !$(anchor).hasClass('scrolled')) {\n\t\t\t\t\t\t\n\t\t\t\t\t\t$(anchor).addClass('scrolled');\n\t\t\t\t\t\t$('.bellows-current-menu-item').removeClass('bellows-current-menu-item bellows-current_page_item');\n\t\t\t\t\t\t$(hashes[i]).parent().addClass('bellows-current-menu-item bellows-current_page_item');\n\t\t\t\t\t\t\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t} else {\n\t\t\t\t\t\n\t\t\t\t\tif (offset > trigger && !$(anchor).hasClass('scrolled')) {\n\t\t\t\t\t\t\n\t\t\t\t\t\t$('.bellows-current-menu-item').removeClass('bellows-current-menu-item bellows-current_page_item');\n\t\t\t\t\t\t\n\t\t\t\t\t\tif ($(window).scrollTop() == 0) {\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t$(anchor).removeClass('scrolled'); // go ahead and remove all scolled classes\n\t\t\t\t\t\t\t$(hashes[i]).parent().parent().prev().parent().addClass('bellows-current-menu-item bellows-current_page_item');\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t$(anchor).addClass('scrolled');\n\t\t\t\t\t\t\t$(hashes[i]).parent().addClass('bellows-current-menu-item bellows-current_page_item');\n\t\t\t\t\t\t\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t}\n\t\n\t$.fn.SecondaryNav.getPosition = function(element) {\n\t\t\n\t\tif (element) {\n\t\t\n\t\t\tvar distance = 0;\n\t\t\t\n\t\t\tdo {\n\t\t\t\tdistance += element.offsetTop;\n\t\t\t\telement = element.offsetParent;\n\t\t\t} while (element);\n\t\t\t\n\t\t\treturn distance < 0 ? 0 : distance;\n\t\t\n\t\t}\n\t\t\n\t}\n\t\n\t$.fn.SecondaryNav.getMobileButton = function(nav) {\n\t\t// create hidden mobile nav button\n\t\tvar mobileButton = $('');\n\t\tmobileButton.html('Menu');\n\n\t\tmobileButton.click(function(){\n\t\t\tif (nav.is(':visible')) {\n mobileButton.addClass('nav-closed').removeClass('nav-open');\n\t\t\t\tnav.slideUp('fast');\n\t\t\t} else {\n mobileButton.addClass('nav-open').removeClass('nav-closed');\n\t\t\t\tnav.slideDown('down');\n\t\t\t}\n\t\n\t\t\treturn false;\n\t\t});\n\t\t\n\t\treturn mobileButton;\n\t};\n\t\n\t$.fn.SecondaryNav.options = {\n\t\tnavJumpWidth: 991,\n\t\thashUpdateScrollDelay: 500\n\t};\n\t\n}(jQuery));\n\n\njQuery(document).ready(function($) {\n \n // init function\n if (typeof $({}).SecondaryNav == 'function' && $('nav', '#pageSidebar')[0]) {\n $('nav', '#pageSidebar').SecondaryNav();\n }\n \n});","// Import\nimport $ from 'jquery';\nimport select2 from 'select2';\n\n// Hook up select2 to jQuery\nselect2($);\n\n$(document).ready(function () {\n\t\n\t// Custom Promo Theme Accordions\n\t//----------------------------------------------\n\tjQuery('.advanced-accordion').each(function() {\n\t\t\n\t\tvar cur = jQuery(this);\n\t\tvar header_type = jQuery(this).attr('data-header-type');\n\t\tvar header_lvl = jQuery(this).attr('data-header-lvl');\n\t\tvar header_ele;\n\t\t\n\t\tif (header_type == 'styled' && header_lvl != 7) {\n\t\t\theader_ele = '> div.pane > h' + header_lvl;\n\t\t} else {\n\t\t\theader_ele = '> div.pane > p';\n\t\t}\n\t\n\t\tcur.accordion({\n\t\t\theader: header_ele,\n\t\t\tcollapsible: true, // .collapsible allows an already open element to be closed\n\t\t\tactive: cur.is('.closed') === false ? 0 : false, // .closed makes all closed by default\n\t\t\theightStyle: 'content' // each panel is the height of its content, which means each panel may have a different height\n\t\t});\n\t\t\n\t\t// if the element has .open-multiple, this allows it to open more than one content area at the same time. (http://stackoverflow.com/a/15713502/781350)\n\t\tif (cur.is('.open-multiple')) {\n\t\t\tcur.on('accordionbeforeactivate', function(event, ui) {\n\t\t\t\t // The accordion believes a panel is being opened\n\t\t\t\tif (ui.newHeader[0]) {\n\t\t\t\t\tvar currHeader = ui.newHeader;\n\t\t\t\t\tvar currContent = currHeader.next('.ui-accordion-content');\n\t\t\t\t // The accordion believes a panel is being closed\n\t\t\t\t} else {\n\t\t\t\t\tvar currHeader = ui.oldHeader;\n\t\t\t\t\tvar currContent = currHeader.next('.ui-accordion-content');\n\t\t\t\t}\n\t\t\t\t // Since we've changed the default behavior, this detects the actual status\n\t\t\t\tvar isPanelSelected = currHeader.attr('aria-selected') == 'true';\n\n\t\t\t\t // Toggle the panel's header\n\t\t\t\tcurrHeader.toggleClass('ui-corner-all',isPanelSelected).toggleClass('accordion-header-active ui-state-active ui-corner-top',!isPanelSelected).attr('aria-selected',((!isPanelSelected).toString()));\n\n\t\t\t\t// Toggle the panel's icon\n\t\t\t\tcurrHeader.children('.ui-icon').toggleClass('ui-icon-triangle-1-e',isPanelSelected).toggleClass('ui-icon-triangle-1-s',!isPanelSelected);\n\n\t\t\t\t // Toggle the panel's content\n\t\t\t\tcurrContent.toggleClass('accordion-content-active',!isPanelSelected) \n\t\t\t\tif (isPanelSelected) { currContent.slideUp(); } else { currContent.slideDown(); }\n\n\t\t\t\treturn false; // Cancels the default action\n\t\t\t});\n\t\t}\n\t\t\n\t});\n\t\n\t// List Search & Filter\n\t//----------------------------------------------\n\tvar collection_lists = [];\n\t\n\t$('.collection-list').each(function(idx) {\n\t\t\n\t\tvar cur = $(this);\n\t\tvar enable_list = cur.data('list');\n\t\tvar list_id = $(this).attr('id');\n\t\t\n\t\tif (enable_list) {\n\t\t\t\n\t\t\tvar list_opts = {\n\t\t\t\tvalueNames: ['pane-title', 'pane-content', 'pane-cat'],\n\t\t\t\tsearchClass: 'main-search'\n\t\t\t};\n\t\t\t\n\t\t\tcollection_lists.push(new List(list_id, list_opts));\n\t\t\t\n\t\t}\n\t\t\n\t});\n\t\n\t//console.log(collection_lists);\n\t\n\t$('.elon-faq-collection input.main-search').on('keyup', function() {\n \n for (var i=0; i < collection_lists.length; i++) {\n\t collection_lists[i].search($('.main-search').val()); \n }\n \n });\n \n $('.elon-faq-collection select.main-filter').select2({\n placeholder: 'Filter by Category',\n allowClear: true\n });\n \n $('.elon-faq-collection select.main-filter').on('select2:select', function (e) {\n \n var data = e.params.data;\n var term = data.id;\n \n for (var i=0; i < collection_lists.length; i++) {\n\t collection_lists[i].search(term);\n }\n \n $('.collection-group:not(.collection-group-' + term).hide();\n $('.collection-group-' + term).show();\n \n });\n \n $('.elon-faq-collection select.main-filter').on('select2:clear', function (e) {\n\t \n\t for (var i=0; i < collection_lists.length; i++) {\n\t collection_lists[i].search();\n }\n \n $('.collection-group').show();\n \n });\n \n for (var i=0; i < collection_lists.length; i++) {\n\t collection_lists[i].on('updated', function(list) {\n\t\t if (list.matchingItems.length == 0) {\n\t\t\t console.log('#' + list.list.id);\n\t\t\t\t//$('#' + list.list.id).prev().hide();\n\t\t\t\t$('#' + list.list.id).prev().parent().hide();\n\t\t } else {\n\t\t\t\t//$('#' + list.list.id).prev().show();\n\t\t\t\t$('#' + list.list.id).prev().parent().show();\n\t\t }\n\t });\n }\n\t\n});","jQuery(document).ready(function($) {\n\t\n\tvar windowWidth = $(window).width();\n\t\n\tif (windowWidth >= 801) {\n\t\t$('.tabs-component').addClass('desktop').removeClass('mobile');\n\t\t$('.tabs-component .accordion').accordion('destroy');\n\t\t$('.tabs-component').tabs();\n\t} else {\n\t\t$('.tabs-component').addClass('mobile').removeClass('desktop');\n\t}\n\n\t(function($,sr){\n\t\n\t // debouncing function from John Hann\n\t // http://unscriptable.com/index.php/2009/03/20/debouncing-javascript-methods/\n\t var debounce = function (func, threshold, execAsap) {\n\t\t var timeout;\n\t\n\t\t return function debounced () {\n\t\t\t var obj = this, args = arguments;\n\t\t\t function delayed () {\n\t\t\t\t if (!execAsap)\n\t\t\t\t\t func.apply(obj, args);\n\t\t\t\t timeout = null;\n\t\t\t };\n\t\n\t\t\t if (timeout)\n\t\t\t\t clearTimeout(timeout);\n\t\t\t else if (execAsap)\n\t\t\t\t func.apply(obj, args);\n\t\n\t\t\t timeout = setTimeout(delayed, threshold || 100);\n\t\t };\n\t }\n\t // smartresize \n\t jQuery.fn[sr] = function(fn){ return fn ? this.bind('resize', debounce(fn)) : this.trigger(sr); };\n\t\n\t})(jQuery,'smartresize');\n\t\n\t\n\t$(window).smartresize(function(){\n\t\t\n\t\tvar windowWidth = $(window).width();\n\t\t\n\t\t$('.tabs-component').each(function() {\n\t\t\t\n\t\t\tif (windowWidth >= 801) {\n\t\t\t\t\n\t\t\t\tif ($(this).hasClass('mobile')) {\n\t\t\t\t\t$(this).find('.accordion').accordion('destroy');\n\t\t\t\t\t$(this).tabs();\n\t\t\t\t\t$(this).addClass('desktop').removeClass('mobile');\n\t\t\t\t}\n\t\t\t\t\n\t\t\t} else {\n\t\t\t\t\n\t\t\t\tif ($(this).hasClass('desktop')) {\n\t\t\t\t\t$(this).tabs('destroy');\n\t\t\t\t\t$(this).find('.accordion').accordion({\n\t\t\t\t\t\tcollapsible: true,\n\t\t\t\t\t\tactive: false,\n\t\t\t\t\t\theightStyle: 'content'\n\t\t\t\t\t});\n\t\t\t\t\t$(this).addClass('mobile').removeClass('desktop');\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t});\n\t\t\n\t});\n\t\n});"],"names":["$","window","document","undefined","rcrumbs","defaults","version","callback","preCrumbsListDisplay","noop","preCrumbDisplay","postCrumbsListDisplay","postCrumbDisplay","ellipsis","windowResize","nbUncollapsableCrumbs","nbFixedCrumbs","animation","activated","speed","Plugin","element","options","this","$element","extend","_defaults","_name","prototype","plugin","_init","hasClass","addClass","nbCrumbDisplayed","$crumbsList","$crumbs","$lastCrumb","last","reversedCrumbs","get","reverse","lastNbCrumbDisplayed","totalCrumbsWidth","fixedCrumbsWidth","_initCrumbs","nbCrumbs","length","slice","that","each","index","crumb","data","removeClass","_showOrHideCrumbsList","_showOrHideCrumbsListOnWindowResize","_getHiddenElWidth","result","elementClone","clone","css","visibility","position","appendTo","outerWidth","remove","contents","filter","nodeType","key","value","$crumb","_storeCrumbWidth","crumbWidth","disableAnimation","remainingSpaceToDisplayCrumbs","nextCrumbToShowWidth","$nextCrumb","_showOrHideCrumb","crumbPosition","showCrumbWithOrWithoutAnimation","width","animate","enableEllipsis","resize","rcrumbWidth","stop","_disableEllipsis","fn","methodNameOrObject","indexOf","apply","Array","call","arguments","error","jQuery","ready","factory","S2","select2","amd","requirejs","require","define","undef","main","req","makeMap","handlers","defined","waiting","config","defining","hasOwn","Object","hasOwnProperty","aps","jsSuffixRegExp","hasProp","obj","prop","normalize","name","baseName","nameParts","nameSegment","mapValue","foundMap","lastIndex","foundI","foundStarMap","starI","i","j","part","baseParts","split","map","starMap","nodeIdCompat","test","replace","charAt","concat","splice","join","makeRequire","relName","forceSync","args","push","makeLoad","depName","callDep","Error","splitPrefix","prefix","substring","makeRelParts","makeConfig","relParts","parts","relResourceName","f","n","pr","p","exports","e","module","id","uri","deps","cjsModule","ret","usingExports","callbackType","load","alt","setTimeout","cfg","_defined","_$","console","Utils","getMethods","theClass","proto","methods","methodName","Extend","ChildClass","SuperClass","__hasProp","BaseConstructor","constructor","__super__","Decorate","DecoratorClass","decoratedMethods","superMethods","DecoratedClass","unshift","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","originalKey","keys","dataLevel","k","toLowerCase","hasScroll","el","$el","overflowX","style","overflowY","innerHeight","scrollHeight","innerWidth","scrollWidth","escapeMarkup","markup","replaceMap","String","match","appendMany","$nodes","jquery","substr","$jqNodes","node","add","append","__cache","GetUniqueElementId","select2Id","getAttribute","setAttribute","StoreData","GetData","RemoveData","removeAttribute","Results","dataAdapter","render","$results","attr","clear","empty","displayMessage","hideLoading","$message","message","className","hideMessages","find","$options","results","sort","item","$option","option","children","$dropdown","sorter","highlightFirstItem","$selected","first","ensureHighlightVisible","setClasses","self","current","selected","selectedIds","s","inArray","showLoading","loading","disabled","text","loadingMore","$loading","prepend","createElement","attrs","role","matches","Element","msMatchesSelector","webkitMatchesSelector","_resultId","title","val","label","template","$children","c","child","$child","$childrenContainer","class","container","$container","isOpen","removeAttr","$highlighted","getHighlightedResults","currentIndex","nextIndex","$next","eq","currentOffset","offset","top","nextTop","nextOffset","scrollTop","outerHeight","nextBottom","mousewheel","bottom","deltaY","isAtTop","isAtBottom","height","preventDefault","stopPropagation","evt","$this","originalEvent","destroy","offsetDelta","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","Placeholder","decorated","placeholder","normalizePlaceholder","_","createPlaceholder","$placeholder","singlePlaceholder","AllowClear","_handleClear","_handleKeyboardClear","$clear","previousVal","unselectData","prevented","removeAll","$remove","Search","$search","$searchContainer","_transferTabIndex","_keyUpPrevented","isDefaultPrevented","$previousChoice","prev","searchRemoveChoice","msie","documentMode","disableInputEvents","type","handleSearch","searchHadFocus","resizeSearch","input","term","EventRelay","relayEvents","preventableEvents","Event","Translation","dict","all","translation","_cache","loadPath","path","translations","BaseAdapter","query","generateResultId","SelectAdapter","select","is","currentData","unselect","addOptions","textContent","innerText","normalizedData","_normalizeItem","matcher","ArrayAdapter","_dataToConvert","convertToOptions","elm","$existing","existingIds","onlyItem","$existingOption","existingData","newData","$newOption","replaceWith","AjaxAdapter","ajaxOptions","_applyDefaults","processResults","q","transport","success","failure","$request","ajax","then","fail","_request","isFunction","abort","request","isArray","status","url","delay","_queryTimeout","clearTimeout","Tags","tags","createTag","insertTag","t","tag","_removeOldTags","page","wrapper","checkChildren","toUpperCase","trim","Tokenizer","tokenizer","dropdown","tokenData","separators","termChar","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","minWidth","countResults","MinimumResultsForSearch","minimumResultsForSearch","Infinity","SelectOnClose","_handleSelectOnClose","originalSelect2Event","$highlightedResults","CloseOnSelect","_selectTriggered","ctrlKey","metaKey","errorLoading","inputTooLong","overChars","inputTooShort","maximumSelected","noResults","searching","removeAllItems","ResultsList","SelectionSearch","DIACRITICS","SelectData","ArrayData","AjaxData","DropdownSearch","EnglishTranslation","Defaults","reset","tokenSeparators","Query","amdBase","initSelection","InitSelection","resultsAdapter","selectOnClose","dropdownAdapter","multiple","SearchableDropdown","closeOnSelect","dropdownCssClass","dropdownCss","adaptDropdownCssClass","DropdownCSS","selectionAdapter","allowClear","containerCssClass","containerCss","adaptContainerCssClass","ContainerCSS","language","_resolveLanguage","uniqueLanguages","l","_processTranslations","debug","stripDiacritics","a","amdLanguageBase","dropdownAutoWidth","original","scrollAfterSelect","templateResult","templateSelection","theme","applyFromElement","optionLanguage","defaultLanguage","elementLanguage","parentLanguage","languages","isEmptyObject","isPlainObject","resolvedLanguages","baseLanguage","languageData","ex","warn","set","camelCase","convertedData","Options","fromElement","InputCompat","excludedData","dir","dataset","upperCaseLetter","letter","attributes","attributeName","dataName","dataValue","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","attachEvent","observer","MutationObserver","WebKitMutationObserver","MozMutationObserver","_observer","mutations","observe","childList","subtree","addEventListener","nonRelayEvents","toggleDropdown","focus","altKey","close","open","_isChangeMutation","changed","nodeName","addedNodes","removedNodes","mutation","actualTrigger","preTriggerMap","preTriggerName","preTriggerArgs","hasFocus","enable","newVal","detachEvent","disconnect","removeEventListener","removeData","thisMethods","instanceOptions","instance","root","require$$0","not","click","hash","location","pathname","hostname","href","handleFirstTab","keyCode","classList","handleMouseDownOnce","unstickySidebar","windowHeight","SecondaryNav","opts","nav","wrapperParent","navRow","mobileButton","getMobileButton","checkWidth","navJumpWidth","prependTo","slideUp","slideDown","before","links","idx","ele","link","parseInt","updatedLink","doingClick","lastScrollTop","scroll","st","checkScroll","direction","hashes","anchor","getPosition","distance","offsetTop","hashUpdateScrollDelay","header_ele","cur","header_type","header_lvl","accordion","header","collapsible","active","heightStyle","ui","newHeader","currContent","currHeader","next","oldHeader","isPanelSelected","toggleClass","collection_lists","enable_list","list_id","List","valueNames","searchClass","search","hide","show","list","matchingItems","log","sr","tabs","timeout","execAsap","threshold","smartresize","windowWidth"],"mappings":"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IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,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,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"}