{"version":3,"file":"application.js","mappings":"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","sources":["webpack://maven/./app/javascript/shopify.js","webpack://maven/./app/javascript/vendor/chosen.jquery.js","webpack://maven/./app/javascript/vendor/dom-confetti.js","webpack://maven/./app/javascript/vendor/jquery.waypoints.js","webpack://maven/./node_modules/jquery/dist/jquery.js","webpack://maven/./node_modules/slick-carousel/slick/slick.js","webpack://maven/webpack/bootstrap","webpack://maven/webpack/runtime/compat get default export","webpack://maven/webpack/runtime/define property getters","webpack://maven/webpack/runtime/hasOwnProperty shorthand","webpack://maven/./app/javascript/application.js"],"sourcesContent":["if (!window.console) console = {log: function() {}};\n\nif ((typeof Shopify) === 'undefined') {\n Shopify = {};\n}\n\nShopify.onCartUpdate = function(cart) {\n if (cart.item_count == 1) {\n jQuery('.cart-link').html('Winkelwagen (1)');\n } else if(cart.item_count > 1) {\n jQuery('.cart-link').html('Winkelwagen (' + cart.item_count + ')');\n }\n};\n\nShopify.onProductUpdate = function(product) {\n var current_epoch = new Date().getTime();\n var publication_at = Math.floor($('#publication_at').html() * 1000);\n\n if ($('#shopproduct')) {\n jQuery('#shopproduct').html(\"'\" + product.title + \"' is te koop in \" + product.variants.length + \" varianten
\");\n jQuery('#shopproduct').html(\"
\");\n\n\n if (publication_at > current_epoch) {\n jQuery('#variants').append('
Pre-order
');\n }\n\n for(var i=0; i\n
\n
\n ${product.variants[i].title} ${product.variants[i].price} euro\n
\n \n
\n Incl. verzendkosten\n
\n `);\n }\n }\n\n if ($('#buy-all-button-container').length && $('#buy-all-button-container .black-button').length == 0) {\n jQuery('#buy-all-button-container').append(`\n
\n
\n
\n Alle boeken voor ${product.variants[0].price} euro\n
\n
\n `);\n }\n\n //jQuery('#shopproduct').append(\"Koop nu direct in onze online winkel!\");\n};\n\nShopify.getCart = function(callback) {\n jQuery.ajax({url: 'https://shop.mavenpublishing.nl/cart.json', dataType: 'jsonp', success:\n function(cart){\n if (callback !== undefined && (typeof callback) === 'function') {\n callback(cart);\n }\n else {\n Shopify.onCartUpdate(cart);\n }\n }\n });\n};\n\nShopify.getProduct = function(productHandle, callback) {\n jQuery.ajax({url: 'https://shop.mavenpublishing.nl/products/'+productHandle+'.json', dataType: 'jsonp', cache: false, success:\n function(result){\n if ((typeof callback) === 'function') {\n callback(result.product);\n }\n else {\n Shopify.onProductUpdate(result.product);\n }\n }\n });\n};\n\n$(function() {\n Shopify.getCart();\n var split = document.URL.split(\"/boeken/\");\n if (split.length == 2 && !document.URL.match(/\\/boeken\\/$/)){\n var boek = split[1].split(\"/\")[0];\n Shopify.getProduct(boek.split(\"?\")[0]);\n }\n\n if ($('#buy-all-button-container').length) {\n var boek = 'alle-boeken-voor-2157-30-euro'\n Shopify.getProduct(boek);\n }\n});\n","/*!\nChosen, a Select Box Enhancer for jQuery and Prototype\nby Patrick Filler for Harvest, http://getharvest.com\n\nVersion 1.8.3\nFull source at https://github.com/harvesthq/chosen\nCopyright (c) 2011-2018 Harvest http://getharvest.com\n\nMIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md\nThis file is generated by `grunt build`, do not edit it by hand.\n*/\n\n(function() {\n var $, AbstractChosen, Chosen, SelectParser,\n bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n SelectParser = (function() {\n function SelectParser() {\n this.options_index = 0;\n this.parsed = [];\n }\n\n SelectParser.prototype.add_node = function(child) {\n if (child.nodeName.toUpperCase() === \"OPTGROUP\") {\n return this.add_group(child);\n } else {\n return this.add_option(child);\n }\n };\n\n SelectParser.prototype.add_group = function(group) {\n var group_position, i, len, option, ref, results1;\n group_position = this.parsed.length;\n this.parsed.push({\n array_index: group_position,\n group: true,\n label: group.label,\n title: group.title ? group.title : void 0,\n children: 0,\n disabled: group.disabled,\n classes: group.className\n });\n ref = group.childNodes;\n results1 = [];\n for (i = 0, len = ref.length; i < len; i++) {\n option = ref[i];\n results1.push(this.add_option(option, group_position, group.disabled));\n }\n return results1;\n };\n\n SelectParser.prototype.add_option = function(option, group_position, group_disabled) {\n if (option.nodeName.toUpperCase() === \"OPTION\") {\n if (option.text !== \"\") {\n if (group_position != null) {\n this.parsed[group_position].children += 1;\n }\n this.parsed.push({\n array_index: this.parsed.length,\n options_index: this.options_index,\n value: option.value,\n text: option.text,\n html: option.innerHTML,\n title: option.title ? option.title : void 0,\n selected: option.selected,\n disabled: group_disabled === true ? group_disabled : option.disabled,\n group_array_index: group_position,\n group_label: group_position != null ? this.parsed[group_position].label : null,\n classes: option.className,\n style: option.style.cssText\n });\n } else {\n this.parsed.push({\n array_index: this.parsed.length,\n options_index: this.options_index,\n empty: true\n });\n }\n return this.options_index += 1;\n }\n };\n\n return SelectParser;\n\n })();\n\n SelectParser.select_to_array = function(select) {\n var child, i, len, parser, ref;\n parser = new SelectParser();\n ref = select.childNodes;\n for (i = 0, len = ref.length; i < len; i++) {\n child = ref[i];\n parser.add_node(child);\n }\n return parser.parsed;\n };\n\n AbstractChosen = (function() {\n function AbstractChosen(form_field, options1) {\n this.form_field = form_field;\n this.options = options1 != null ? options1 : {};\n this.label_click_handler = bind(this.label_click_handler, this);\n if (!AbstractChosen.browser_is_supported()) {\n return;\n }\n this.is_multiple = this.form_field.multiple;\n this.set_default_text();\n this.set_default_values();\n this.setup();\n this.set_up_html();\n this.register_observers();\n this.on_ready();\n }\n\n AbstractChosen.prototype.set_default_values = function() {\n this.click_test_action = (function(_this) {\n return function(evt) {\n return _this.test_active_click(evt);\n };\n })(this);\n this.activate_action = (function(_this) {\n return function(evt) {\n return _this.activate_field(evt);\n };\n })(this);\n this.active_field = false;\n this.mouse_on_container = false;\n this.results_showing = false;\n this.result_highlighted = null;\n this.is_rtl = this.options.rtl || /\\bchosen-rtl\\b/.test(this.form_field.className);\n this.allow_single_deselect = (this.options.allow_single_deselect != null) && (this.form_field.options[0] != null) && this.form_field.options[0].text === \"\" ? this.options.allow_single_deselect : false;\n this.disable_search_threshold = this.options.disable_search_threshold || 0;\n this.disable_search = this.options.disable_search || false;\n this.enable_split_word_search = this.options.enable_split_word_search != null ? this.options.enable_split_word_search : true;\n this.group_search = this.options.group_search != null ? this.options.group_search : true;\n this.search_contains = this.options.search_contains || false;\n this.single_backstroke_delete = this.options.single_backstroke_delete != null ? this.options.single_backstroke_delete : true;\n this.max_selected_options = this.options.max_selected_options || Infinity;\n this.inherit_select_classes = this.options.inherit_select_classes || false;\n this.display_selected_options = this.options.display_selected_options != null ? this.options.display_selected_options : true;\n this.display_disabled_options = this.options.display_disabled_options != null ? this.options.display_disabled_options : true;\n this.include_group_label_in_selected = this.options.include_group_label_in_selected || false;\n this.max_shown_results = this.options.max_shown_results || Number.POSITIVE_INFINITY;\n this.case_sensitive_search = this.options.case_sensitive_search || false;\n return this.hide_results_on_select = this.options.hide_results_on_select != null ? this.options.hide_results_on_select : true;\n };\n\n AbstractChosen.prototype.set_default_text = function() {\n if (this.form_field.getAttribute(\"data-placeholder\")) {\n this.default_text = this.form_field.getAttribute(\"data-placeholder\");\n } else if (this.is_multiple) {\n this.default_text = this.options.placeholder_text_multiple || this.options.placeholder_text || AbstractChosen.default_multiple_text;\n } else {\n this.default_text = this.options.placeholder_text_single || this.options.placeholder_text || AbstractChosen.default_single_text;\n }\n this.default_text = this.escape_html(this.default_text);\n return this.results_none_found = this.form_field.getAttribute(\"data-no_results_text\") || this.options.no_results_text || AbstractChosen.default_no_result_text;\n };\n\n AbstractChosen.prototype.choice_label = function(item) {\n if (this.include_group_label_in_selected && (item.group_label != null)) {\n return \"\" + item.group_label + \"\" + item.html;\n } else {\n return item.html;\n }\n };\n\n AbstractChosen.prototype.mouse_enter = function() {\n return this.mouse_on_container = true;\n };\n\n AbstractChosen.prototype.mouse_leave = function() {\n return this.mouse_on_container = false;\n };\n\n AbstractChosen.prototype.input_focus = function(evt) {\n if (this.is_multiple) {\n if (!this.active_field) {\n return setTimeout(((function(_this) {\n return function() {\n return _this.container_mousedown();\n };\n })(this)), 50);\n }\n } else {\n if (!this.active_field) {\n return this.activate_field();\n }\n }\n };\n\n AbstractChosen.prototype.input_blur = function(evt) {\n if (!this.mouse_on_container) {\n this.active_field = false;\n return setTimeout(((function(_this) {\n return function() {\n return _this.blur_test();\n };\n })(this)), 100);\n }\n };\n\n AbstractChosen.prototype.label_click_handler = function(evt) {\n if (this.is_multiple) {\n return this.container_mousedown(evt);\n } else {\n return this.activate_field();\n }\n };\n\n AbstractChosen.prototype.results_option_build = function(options) {\n var content, data, data_content, i, len, ref, shown_results;\n content = '';\n shown_results = 0;\n ref = this.results_data;\n for (i = 0, len = ref.length; i < len; i++) {\n data = ref[i];\n data_content = '';\n if (data.group) {\n data_content = this.result_add_group(data);\n } else {\n data_content = this.result_add_option(data);\n }\n if (data_content !== '') {\n shown_results++;\n content += data_content;\n }\n if (options != null ? options.first : void 0) {\n if (data.selected && this.is_multiple) {\n this.choice_build(data);\n } else if (data.selected && !this.is_multiple) {\n this.single_set_selected_text(this.choice_label(data));\n }\n }\n if (shown_results >= this.max_shown_results) {\n break;\n }\n }\n return content;\n };\n\n AbstractChosen.prototype.result_add_option = function(option) {\n var classes, option_el;\n if (!option.search_match) {\n return '';\n }\n if (!this.include_option_in_results(option)) {\n return '';\n }\n classes = [];\n if (!option.disabled && !(option.selected && this.is_multiple)) {\n classes.push(\"active-result\");\n }\n if (option.disabled && !(option.selected && this.is_multiple)) {\n classes.push(\"disabled-result\");\n }\n if (option.selected) {\n classes.push(\"result-selected\");\n }\n if (option.group_array_index != null) {\n classes.push(\"group-option\");\n }\n if (option.classes !== \"\") {\n classes.push(option.classes);\n }\n option_el = document.createElement(\"li\");\n option_el.className = classes.join(\" \");\n option_el.style.cssText = option.style;\n option_el.setAttribute(\"data-option-array-index\", option.array_index);\n option_el.innerHTML = option.highlighted_html || option.html;\n if (option.title) {\n option_el.title = option.title;\n }\n return this.outerHTML(option_el);\n };\n\n AbstractChosen.prototype.result_add_group = function(group) {\n var classes, group_el;\n if (!(group.search_match || group.group_match)) {\n return '';\n }\n if (!(group.active_options > 0)) {\n return '';\n }\n classes = [];\n classes.push(\"group-result\");\n if (group.classes) {\n classes.push(group.classes);\n }\n group_el = document.createElement(\"li\");\n group_el.className = classes.join(\" \");\n group_el.innerHTML = group.highlighted_html || this.escape_html(group.label);\n if (group.title) {\n group_el.title = group.title;\n }\n return this.outerHTML(group_el);\n };\n\n AbstractChosen.prototype.results_update_field = function() {\n this.set_default_text();\n if (!this.is_multiple) {\n this.results_reset_cleanup();\n }\n this.result_clear_highlight();\n this.results_build();\n if (this.results_showing) {\n return this.winnow_results();\n }\n };\n\n AbstractChosen.prototype.reset_single_select_options = function() {\n var i, len, ref, result, results1;\n ref = this.results_data;\n results1 = [];\n for (i = 0, len = ref.length; i < len; i++) {\n result = ref[i];\n if (result.selected) {\n results1.push(result.selected = false);\n } else {\n results1.push(void 0);\n }\n }\n return results1;\n };\n\n AbstractChosen.prototype.results_toggle = function() {\n if (this.results_showing) {\n return this.results_hide();\n } else {\n return this.results_show();\n }\n };\n\n AbstractChosen.prototype.results_search = function(evt) {\n if (this.results_showing) {\n return this.winnow_results();\n } else {\n return this.results_show();\n }\n };\n\n AbstractChosen.prototype.winnow_results = function() {\n var escapedQuery, fix, i, len, option, prefix, query, ref, regex, results, results_group, search_match, startpos, suffix, text;\n this.no_results_clear();\n results = 0;\n query = this.get_search_text();\n escapedQuery = query.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, \"\\\\$&\");\n regex = this.get_search_regex(escapedQuery);\n ref = this.results_data;\n for (i = 0, len = ref.length; i < len; i++) {\n option = ref[i];\n option.search_match = false;\n results_group = null;\n search_match = null;\n option.highlighted_html = '';\n if (this.include_option_in_results(option)) {\n if (option.group) {\n option.group_match = false;\n option.active_options = 0;\n }\n if ((option.group_array_index != null) && this.results_data[option.group_array_index]) {\n results_group = this.results_data[option.group_array_index];\n if (results_group.active_options === 0 && results_group.search_match) {\n results += 1;\n }\n results_group.active_options += 1;\n }\n text = option.group ? option.label : option.text;\n if (!(option.group && !this.group_search)) {\n search_match = this.search_string_match(text, regex);\n option.search_match = search_match != null;\n if (option.search_match && !option.group) {\n results += 1;\n }\n if (option.search_match) {\n if (query.length) {\n startpos = search_match.index;\n prefix = text.slice(0, startpos);\n fix = text.slice(startpos, startpos + query.length);\n suffix = text.slice(startpos + query.length);\n option.highlighted_html = (this.escape_html(prefix)) + \"\" + (this.escape_html(fix)) + \"\" + (this.escape_html(suffix));\n }\n if (results_group != null) {\n results_group.group_match = true;\n }\n } else if ((option.group_array_index != null) && this.results_data[option.group_array_index].search_match) {\n option.search_match = true;\n }\n }\n }\n }\n this.result_clear_highlight();\n if (results < 1 && query.length) {\n this.update_results_content(\"\");\n return this.no_results(query);\n } else {\n this.update_results_content(this.results_option_build());\n return this.winnow_results_set_highlight();\n }\n };\n\n AbstractChosen.prototype.get_search_regex = function(escaped_search_string) {\n var regex_flag, regex_string;\n regex_string = this.search_contains ? escaped_search_string : \"(^|\\\\s|\\\\b)\" + escaped_search_string + \"[^\\\\s]*\";\n if (!(this.enable_split_word_search || this.search_contains)) {\n regex_string = \"^\" + regex_string;\n }\n regex_flag = this.case_sensitive_search ? \"\" : \"i\";\n return new RegExp(regex_string, regex_flag);\n };\n\n AbstractChosen.prototype.search_string_match = function(search_string, regex) {\n var match;\n match = regex.exec(search_string);\n if (!this.search_contains && (match != null ? match[1] : void 0)) {\n match.index += 1;\n }\n return match;\n };\n\n AbstractChosen.prototype.choices_count = function() {\n var i, len, option, ref;\n if (this.selected_option_count != null) {\n return this.selected_option_count;\n }\n this.selected_option_count = 0;\n ref = this.form_field.options;\n for (i = 0, len = ref.length; i < len; i++) {\n option = ref[i];\n if (option.selected) {\n this.selected_option_count += 1;\n }\n }\n return this.selected_option_count;\n };\n\n AbstractChosen.prototype.choices_click = function(evt) {\n evt.preventDefault();\n this.activate_field();\n if (!(this.results_showing || this.is_disabled)) {\n return this.results_show();\n }\n };\n\n AbstractChosen.prototype.keydown_checker = function(evt) {\n var ref, stroke;\n stroke = (ref = evt.which) != null ? ref : evt.keyCode;\n this.search_field_scale();\n if (stroke !== 8 && this.pending_backstroke) {\n this.clear_backstroke();\n }\n switch (stroke) {\n case 8:\n this.backstroke_length = this.get_search_field_value().length;\n break;\n case 9:\n if (this.results_showing && !this.is_multiple) {\n this.result_select(evt);\n }\n this.mouse_on_container = false;\n break;\n case 13:\n if (this.results_showing) {\n evt.preventDefault();\n }\n break;\n case 27:\n if (this.results_showing) {\n evt.preventDefault();\n }\n break;\n case 32:\n if (this.disable_search) {\n evt.preventDefault();\n }\n break;\n case 38:\n evt.preventDefault();\n this.keyup_arrow();\n break;\n case 40:\n evt.preventDefault();\n this.keydown_arrow();\n break;\n }\n };\n\n AbstractChosen.prototype.keyup_checker = function(evt) {\n var ref, stroke;\n stroke = (ref = evt.which) != null ? ref : evt.keyCode;\n this.search_field_scale();\n switch (stroke) {\n case 8:\n if (this.is_multiple && this.backstroke_length < 1 && this.choices_count() > 0) {\n this.keydown_backstroke();\n } else if (!this.pending_backstroke) {\n this.result_clear_highlight();\n this.results_search();\n }\n break;\n case 13:\n evt.preventDefault();\n if (this.results_showing) {\n this.result_select(evt);\n }\n break;\n case 27:\n if (this.results_showing) {\n this.results_hide();\n }\n break;\n case 9:\n case 16:\n case 17:\n case 18:\n case 38:\n case 40:\n case 91:\n break;\n default:\n this.results_search();\n break;\n }\n };\n\n AbstractChosen.prototype.clipboard_event_checker = function(evt) {\n if (this.is_disabled) {\n return;\n }\n return setTimeout(((function(_this) {\n return function() {\n return _this.results_search();\n };\n })(this)), 50);\n };\n\n AbstractChosen.prototype.container_width = function() {\n if (this.options.width != null) {\n return this.options.width;\n } else {\n return this.form_field.offsetWidth + \"px\";\n }\n };\n\n AbstractChosen.prototype.include_option_in_results = function(option) {\n if (this.is_multiple && (!this.display_selected_options && option.selected)) {\n return false;\n }\n if (!this.display_disabled_options && option.disabled) {\n return false;\n }\n if (option.empty) {\n return false;\n }\n return true;\n };\n\n AbstractChosen.prototype.search_results_touchstart = function(evt) {\n this.touch_started = true;\n return this.search_results_mouseover(evt);\n };\n\n AbstractChosen.prototype.search_results_touchmove = function(evt) {\n this.touch_started = false;\n return this.search_results_mouseout(evt);\n };\n\n AbstractChosen.prototype.search_results_touchend = function(evt) {\n if (this.touch_started) {\n return this.search_results_mouseup(evt);\n }\n };\n\n AbstractChosen.prototype.outerHTML = function(element) {\n var tmp;\n if (element.outerHTML) {\n return element.outerHTML;\n }\n tmp = document.createElement(\"div\");\n tmp.appendChild(element);\n return tmp.innerHTML;\n };\n\n AbstractChosen.prototype.get_single_html = function() {\n return \"\\n \\n \" + this.default_text + \"\\n
\\n
\\n
\\n
\\n
\\n \\n
\";\n };\n\n AbstractChosen.prototype.get_multi_html = function() {\n return \"\\n
\\n \\n
\";\n };\n\n AbstractChosen.prototype.get_no_results_html = function(terms) {\n return \"
  • \\n \" + this.results_none_found + \" \" + (this.escape_html(terms)) + \"\\n
  • \";\n };\n\n AbstractChosen.browser_is_supported = function() {\n if (\"Microsoft Internet Explorer\" === window.navigator.appName) {\n return document.documentMode >= 8;\n }\n if (/iP(od|hone)/i.test(window.navigator.userAgent) || /IEMobile/i.test(window.navigator.userAgent) || /Windows Phone/i.test(window.navigator.userAgent) || /BlackBerry/i.test(window.navigator.userAgent) || /BB10/i.test(window.navigator.userAgent) || /Android.*Mobile/i.test(window.navigator.userAgent)) {\n return false;\n }\n return true;\n };\n\n AbstractChosen.default_multiple_text = \"Select Some Options\";\n\n AbstractChosen.default_single_text = \"Select an Option\";\n\n AbstractChosen.default_no_result_text = \"No results match\";\n\n return AbstractChosen;\n\n })();\n\n $ = jQuery;\n\n $.fn.extend({\n chosen: function(options) {\n if (!AbstractChosen.browser_is_supported()) {\n return this;\n }\n return this.each(function(input_field) {\n var $this, chosen;\n $this = $(this);\n chosen = $this.data('chosen');\n if (options === 'destroy') {\n if (chosen instanceof Chosen) {\n chosen.destroy();\n }\n return;\n }\n if (!(chosen instanceof Chosen)) {\n $this.data('chosen', new Chosen(this, options));\n }\n });\n }\n });\n\n Chosen = (function(superClass) {\n extend(Chosen, superClass);\n\n function Chosen() {\n return Chosen.__super__.constructor.apply(this, arguments);\n }\n\n Chosen.prototype.setup = function() {\n this.form_field_jq = $(this.form_field);\n return this.current_selectedIndex = this.form_field.selectedIndex;\n };\n\n Chosen.prototype.set_up_html = function() {\n var container_classes, container_props;\n container_classes = [\"chosen-container\"];\n container_classes.push(\"chosen-container-\" + (this.is_multiple ? \"multi\" : \"single\"));\n if (this.inherit_select_classes && this.form_field.className) {\n container_classes.push(this.form_field.className);\n }\n if (this.is_rtl) {\n container_classes.push(\"chosen-rtl\");\n }\n container_props = {\n 'class': container_classes.join(' '),\n 'title': this.form_field.title\n };\n if (this.form_field.id.length) {\n container_props.id = this.form_field.id.replace(/[^\\w]/g, '_') + \"_chosen\";\n }\n this.container = $(\"
    \", container_props);\n this.container.width(this.container_width());\n if (this.is_multiple) {\n this.container.html(this.get_multi_html());\n } else {\n this.container.html(this.get_single_html());\n }\n this.form_field_jq.hide().after(this.container);\n this.dropdown = this.container.find('div.chosen-drop').first();\n this.search_field = this.container.find('input').first();\n this.search_results = this.container.find('ul.chosen-results').first();\n this.search_field_scale();\n this.search_no_results = this.container.find('li.no-results').first();\n if (this.is_multiple) {\n this.search_choices = this.container.find('ul.chosen-choices').first();\n this.search_container = this.container.find('li.search-field').first();\n } else {\n this.search_container = this.container.find('div.chosen-search').first();\n this.selected_item = this.container.find('.chosen-single').first();\n }\n this.results_build();\n this.set_tab_index();\n return this.set_label_behavior();\n };\n\n Chosen.prototype.on_ready = function() {\n return this.form_field_jq.trigger(\"chosen:ready\", {\n chosen: this\n });\n };\n\n Chosen.prototype.register_observers = function() {\n this.container.on('touchstart.chosen', (function(_this) {\n return function(evt) {\n _this.container_mousedown(evt);\n };\n })(this));\n this.container.on('touchend.chosen', (function(_this) {\n return function(evt) {\n _this.container_mouseup(evt);\n };\n })(this));\n this.container.on('mousedown.chosen', (function(_this) {\n return function(evt) {\n _this.container_mousedown(evt);\n };\n })(this));\n this.container.on('mouseup.chosen', (function(_this) {\n return function(evt) {\n _this.container_mouseup(evt);\n };\n })(this));\n this.container.on('mouseenter.chosen', (function(_this) {\n return function(evt) {\n _this.mouse_enter(evt);\n };\n })(this));\n this.container.on('mouseleave.chosen', (function(_this) {\n return function(evt) {\n _this.mouse_leave(evt);\n };\n })(this));\n this.search_results.on('mouseup.chosen', (function(_this) {\n return function(evt) {\n _this.search_results_mouseup(evt);\n };\n })(this));\n this.search_results.on('mouseover.chosen', (function(_this) {\n return function(evt) {\n _this.search_results_mouseover(evt);\n };\n })(this));\n this.search_results.on('mouseout.chosen', (function(_this) {\n return function(evt) {\n _this.search_results_mouseout(evt);\n };\n })(this));\n this.search_results.on('mousewheel.chosen DOMMouseScroll.chosen', (function(_this) {\n return function(evt) {\n _this.search_results_mousewheel(evt);\n };\n })(this));\n this.search_results.on('touchstart.chosen', (function(_this) {\n return function(evt) {\n _this.search_results_touchstart(evt);\n };\n })(this));\n this.search_results.on('touchmove.chosen', (function(_this) {\n return function(evt) {\n _this.search_results_touchmove(evt);\n };\n })(this));\n this.search_results.on('touchend.chosen', (function(_this) {\n return function(evt) {\n _this.search_results_touchend(evt);\n };\n })(this));\n this.form_field_jq.on(\"chosen:updated.chosen\", (function(_this) {\n return function(evt) {\n _this.results_update_field(evt);\n };\n })(this));\n this.form_field_jq.on(\"chosen:activate.chosen\", (function(_this) {\n return function(evt) {\n _this.activate_field(evt);\n };\n })(this));\n this.form_field_jq.on(\"chosen:open.chosen\", (function(_this) {\n return function(evt) {\n _this.container_mousedown(evt);\n };\n })(this));\n this.form_field_jq.on(\"chosen:close.chosen\", (function(_this) {\n return function(evt) {\n _this.close_field(evt);\n };\n })(this));\n this.search_field.on('blur.chosen', (function(_this) {\n return function(evt) {\n _this.input_blur(evt);\n };\n })(this));\n this.search_field.on('keyup.chosen', (function(_this) {\n return function(evt) {\n _this.keyup_checker(evt);\n };\n })(this));\n this.search_field.on('keydown.chosen', (function(_this) {\n return function(evt) {\n _this.keydown_checker(evt);\n };\n })(this));\n this.search_field.on('focus.chosen', (function(_this) {\n return function(evt) {\n _this.input_focus(evt);\n };\n })(this));\n this.search_field.on('cut.chosen', (function(_this) {\n return function(evt) {\n _this.clipboard_event_checker(evt);\n };\n })(this));\n this.search_field.on('paste.chosen', (function(_this) {\n return function(evt) {\n _this.clipboard_event_checker(evt);\n };\n })(this));\n if (this.is_multiple) {\n return this.search_choices.on('click.chosen', (function(_this) {\n return function(evt) {\n _this.choices_click(evt);\n };\n })(this));\n } else {\n return this.container.on('click.chosen', function(evt) {\n evt.preventDefault();\n });\n }\n };\n\n Chosen.prototype.destroy = function() {\n $(this.container[0].ownerDocument).off('click.chosen', this.click_test_action);\n if (this.form_field_label.length > 0) {\n this.form_field_label.off('click.chosen');\n }\n if (this.search_field[0].tabIndex) {\n this.form_field_jq[0].tabIndex = this.search_field[0].tabIndex;\n }\n this.container.remove();\n this.form_field_jq.removeData('chosen');\n return this.form_field_jq.show();\n };\n\n Chosen.prototype.search_field_disabled = function() {\n this.is_disabled = this.form_field.disabled || this.form_field_jq.parents('fieldset').is(':disabled');\n this.container.toggleClass('chosen-disabled', this.is_disabled);\n this.search_field[0].disabled = this.is_disabled;\n if (!this.is_multiple) {\n this.selected_item.off('focus.chosen', this.activate_field);\n }\n if (this.is_disabled) {\n return this.close_field();\n } else if (!this.is_multiple) {\n return this.selected_item.on('focus.chosen', this.activate_field);\n }\n };\n\n Chosen.prototype.container_mousedown = function(evt) {\n var ref;\n if (this.is_disabled) {\n return;\n }\n if (evt && ((ref = evt.type) === 'mousedown' || ref === 'touchstart') && !this.results_showing) {\n evt.preventDefault();\n }\n if (!((evt != null) && ($(evt.target)).hasClass(\"search-choice-close\"))) {\n if (!this.active_field) {\n if (this.is_multiple) {\n this.search_field.val(\"\");\n }\n $(this.container[0].ownerDocument).on('click.chosen', this.click_test_action);\n this.results_show();\n } else if (!this.is_multiple && evt && (($(evt.target)[0] === this.selected_item[0]) || $(evt.target).parents(\"a.chosen-single\").length)) {\n evt.preventDefault();\n this.results_toggle();\n }\n return this.activate_field();\n }\n };\n\n Chosen.prototype.container_mouseup = function(evt) {\n if (evt.target.nodeName === \"ABBR\" && !this.is_disabled) {\n return this.results_reset(evt);\n }\n };\n\n Chosen.prototype.search_results_mousewheel = function(evt) {\n var delta;\n if (evt.originalEvent) {\n delta = evt.originalEvent.deltaY || -evt.originalEvent.wheelDelta || evt.originalEvent.detail;\n }\n if (delta != null) {\n evt.preventDefault();\n if (evt.type === 'DOMMouseScroll') {\n delta = delta * 40;\n }\n return this.search_results.scrollTop(delta + this.search_results.scrollTop());\n }\n };\n\n Chosen.prototype.blur_test = function(evt) {\n if (!this.active_field && this.container.hasClass(\"chosen-container-active\")) {\n return this.close_field();\n }\n };\n\n Chosen.prototype.close_field = function() {\n $(this.container[0].ownerDocument).off(\"click.chosen\", this.click_test_action);\n this.active_field = false;\n this.results_hide();\n this.container.removeClass(\"chosen-container-active\");\n this.clear_backstroke();\n this.show_search_field_default();\n this.search_field_scale();\n return this.search_field.blur();\n };\n\n Chosen.prototype.activate_field = function() {\n if (this.is_disabled) {\n return;\n }\n this.container.addClass(\"chosen-container-active\");\n this.active_field = true;\n this.search_field.val(this.search_field.val());\n return this.search_field.focus();\n };\n\n Chosen.prototype.test_active_click = function(evt) {\n var active_container;\n active_container = $(evt.target).closest('.chosen-container');\n if (active_container.length && this.container[0] === active_container[0]) {\n return this.active_field = true;\n } else {\n return this.close_field();\n }\n };\n\n Chosen.prototype.results_build = function() {\n this.parsing = true;\n this.selected_option_count = null;\n this.results_data = SelectParser.select_to_array(this.form_field);\n if (this.is_multiple) {\n this.search_choices.find(\"li.search-choice\").remove();\n } else if (!this.is_multiple) {\n this.single_set_selected_text();\n if (this.disable_search || this.form_field.options.length <= this.disable_search_threshold) {\n this.search_field[0].readOnly = true;\n this.container.addClass(\"chosen-container-single-nosearch\");\n } else {\n this.search_field[0].readOnly = false;\n this.container.removeClass(\"chosen-container-single-nosearch\");\n }\n }\n this.update_results_content(this.results_option_build({\n first: true\n }));\n this.search_field_disabled();\n this.show_search_field_default();\n this.search_field_scale();\n return this.parsing = false;\n };\n\n Chosen.prototype.result_do_highlight = function(el) {\n var high_bottom, high_top, maxHeight, visible_bottom, visible_top;\n if (el.length) {\n this.result_clear_highlight();\n this.result_highlight = el;\n this.result_highlight.addClass(\"highlighted\");\n maxHeight = parseInt(this.search_results.css(\"maxHeight\"), 10);\n visible_top = this.search_results.scrollTop();\n visible_bottom = maxHeight + visible_top;\n high_top = this.result_highlight.position().top + this.search_results.scrollTop();\n high_bottom = high_top + this.result_highlight.outerHeight();\n if (high_bottom >= visible_bottom) {\n return this.search_results.scrollTop((high_bottom - maxHeight) > 0 ? high_bottom - maxHeight : 0);\n } else if (high_top < visible_top) {\n return this.search_results.scrollTop(high_top);\n }\n }\n };\n\n Chosen.prototype.result_clear_highlight = function() {\n if (this.result_highlight) {\n this.result_highlight.removeClass(\"highlighted\");\n }\n return this.result_highlight = null;\n };\n\n Chosen.prototype.results_show = function() {\n if (this.is_multiple && this.max_selected_options <= this.choices_count()) {\n this.form_field_jq.trigger(\"chosen:maxselected\", {\n chosen: this\n });\n return false;\n }\n if (!this.is_multiple) {\n this.search_container.append(this.search_field);\n }\n this.container.addClass(\"chosen-with-drop\");\n this.results_showing = true;\n this.search_field.focus();\n this.search_field.val(this.get_search_field_value());\n this.winnow_results();\n return this.form_field_jq.trigger(\"chosen:showing_dropdown\", {\n chosen: this\n });\n };\n\n Chosen.prototype.update_results_content = function(content) {\n return this.search_results.html(content);\n };\n\n Chosen.prototype.results_hide = function() {\n if (this.results_showing) {\n this.result_clear_highlight();\n if (!this.is_multiple) {\n this.selected_item.prepend(this.search_field);\n this.search_field.focus();\n }\n this.container.removeClass(\"chosen-with-drop\");\n this.form_field_jq.trigger(\"chosen:hiding_dropdown\", {\n chosen: this\n });\n }\n return this.results_showing = false;\n };\n\n Chosen.prototype.set_tab_index = function(el) {\n var ti;\n if (this.form_field.tabIndex) {\n ti = this.form_field.tabIndex;\n this.form_field.tabIndex = -1;\n return this.search_field[0].tabIndex = ti;\n }\n };\n\n Chosen.prototype.set_label_behavior = function() {\n this.form_field_label = this.form_field_jq.parents(\"label\");\n if (!this.form_field_label.length && this.form_field.id.length) {\n this.form_field_label = $(\"label[for='\" + this.form_field.id + \"']\");\n }\n if (this.form_field_label.length > 0) {\n return this.form_field_label.on('click.chosen', this.label_click_handler);\n }\n };\n\n Chosen.prototype.show_search_field_default = function() {\n if (this.is_multiple && this.choices_count() < 1 && !this.active_field) {\n this.search_field.val(this.default_text);\n return this.search_field.addClass(\"default\");\n } else {\n this.search_field.val(\"\");\n return this.search_field.removeClass(\"default\");\n }\n };\n\n Chosen.prototype.search_results_mouseup = function(evt) {\n var target;\n target = $(evt.target).hasClass(\"active-result\") ? $(evt.target) : $(evt.target).parents(\".active-result\").first();\n if (target.length) {\n this.result_highlight = target;\n this.result_select(evt);\n return this.search_field.focus();\n }\n };\n\n Chosen.prototype.search_results_mouseover = function(evt) {\n var target;\n target = $(evt.target).hasClass(\"active-result\") ? $(evt.target) : $(evt.target).parents(\".active-result\").first();\n if (target) {\n return this.result_do_highlight(target);\n }\n };\n\n Chosen.prototype.search_results_mouseout = function(evt) {\n if ($(evt.target).hasClass(\"active-result\") || $(evt.target).parents('.active-result').first()) {\n return this.result_clear_highlight();\n }\n };\n\n Chosen.prototype.choice_build = function(item) {\n var choice, close_link;\n choice = $('
  • ', {\n \"class\": \"search-choice\"\n }).html(\"\" + (this.choice_label(item)) + \"\");\n if (item.disabled) {\n choice.addClass('search-choice-disabled');\n } else {\n close_link = $('', {\n \"class\": 'search-choice-close',\n 'data-option-array-index': item.array_index\n });\n close_link.on('click.chosen', (function(_this) {\n return function(evt) {\n return _this.choice_destroy_link_click(evt);\n };\n })(this));\n choice.append(close_link);\n }\n return this.search_container.before(choice);\n };\n\n Chosen.prototype.choice_destroy_link_click = function(evt) {\n evt.preventDefault();\n evt.stopPropagation();\n if (!this.is_disabled) {\n return this.choice_destroy($(evt.target));\n }\n };\n\n Chosen.prototype.choice_destroy = function(link) {\n if (this.result_deselect(link[0].getAttribute(\"data-option-array-index\"))) {\n if (this.active_field) {\n this.search_field.focus();\n } else {\n this.show_search_field_default();\n }\n if (this.is_multiple && this.choices_count() > 0 && this.get_search_field_value().length < 1) {\n this.results_hide();\n }\n link.parents('li').first().remove();\n return this.search_field_scale();\n }\n };\n\n Chosen.prototype.results_reset = function() {\n this.reset_single_select_options();\n this.form_field.options[0].selected = true;\n this.single_set_selected_text();\n this.show_search_field_default();\n this.results_reset_cleanup();\n this.trigger_form_field_change();\n if (this.active_field) {\n return this.results_hide();\n }\n };\n\n Chosen.prototype.results_reset_cleanup = function() {\n this.current_selectedIndex = this.form_field.selectedIndex;\n return this.selected_item.find(\"abbr\").remove();\n };\n\n Chosen.prototype.result_select = function(evt) {\n var high, item;\n if (this.result_highlight) {\n high = this.result_highlight;\n this.result_clear_highlight();\n if (this.is_multiple && this.max_selected_options <= this.choices_count()) {\n this.form_field_jq.trigger(\"chosen:maxselected\", {\n chosen: this\n });\n return false;\n }\n if (this.is_multiple) {\n high.removeClass(\"active-result\");\n } else {\n this.reset_single_select_options();\n }\n high.addClass(\"result-selected\");\n item = this.results_data[high[0].getAttribute(\"data-option-array-index\")];\n item.selected = true;\n this.form_field.options[item.options_index].selected = true;\n this.selected_option_count = null;\n this.search_field.val(\"\");\n if (this.is_multiple) {\n this.choice_build(item);\n } else {\n this.single_set_selected_text(this.choice_label(item));\n }\n if (this.is_multiple && (!this.hide_results_on_select || (evt.metaKey || evt.ctrlKey))) {\n this.winnow_results();\n } else {\n this.results_hide();\n this.show_search_field_default();\n }\n if (this.is_multiple || this.form_field.selectedIndex !== this.current_selectedIndex) {\n this.trigger_form_field_change({\n selected: this.form_field.options[item.options_index].value\n });\n }\n this.current_selectedIndex = this.form_field.selectedIndex;\n evt.preventDefault();\n return this.search_field_scale();\n }\n };\n\n Chosen.prototype.single_set_selected_text = function(text) {\n if (text == null) {\n text = this.default_text;\n }\n if (text === this.default_text) {\n this.selected_item.addClass(\"chosen-default\");\n } else {\n this.single_deselect_control_build();\n this.selected_item.removeClass(\"chosen-default\");\n }\n return this.selected_item.find(\"span\").html(text);\n };\n\n Chosen.prototype.result_deselect = function(pos) {\n var result_data;\n result_data = this.results_data[pos];\n if (!this.form_field.options[result_data.options_index].disabled) {\n result_data.selected = false;\n this.form_field.options[result_data.options_index].selected = false;\n this.selected_option_count = null;\n this.result_clear_highlight();\n if (this.results_showing) {\n this.winnow_results();\n }\n this.trigger_form_field_change({\n deselected: this.form_field.options[result_data.options_index].value\n });\n this.search_field_scale();\n return true;\n } else {\n return false;\n }\n };\n\n Chosen.prototype.single_deselect_control_build = function() {\n if (!this.allow_single_deselect) {\n return;\n }\n if (!this.selected_item.find(\"abbr\").length) {\n this.selected_item.find(\"span\").first().after(\"\");\n }\n return this.selected_item.addClass(\"chosen-single-with-deselect\");\n };\n\n Chosen.prototype.get_search_field_value = function() {\n return this.search_field.val();\n };\n\n Chosen.prototype.get_search_text = function() {\n return $.trim(this.get_search_field_value());\n };\n\n Chosen.prototype.escape_html = function(text) {\n return $('
    ').text(text).html();\n };\n\n Chosen.prototype.winnow_results_set_highlight = function() {\n var do_high, selected_results;\n selected_results = !this.is_multiple ? this.search_results.find(\".result-selected.active-result\") : [];\n do_high = selected_results.length ? selected_results.first() : this.search_results.find(\".active-result\").first();\n if (do_high != null) {\n return this.result_do_highlight(do_high);\n }\n };\n\n Chosen.prototype.no_results = function(terms) {\n var no_results_html;\n no_results_html = this.get_no_results_html(terms);\n this.search_results.append(no_results_html);\n return this.form_field_jq.trigger(\"chosen:no_results\", {\n chosen: this\n });\n };\n\n Chosen.prototype.no_results_clear = function() {\n return this.search_results.find(\".no-results\").remove();\n };\n\n Chosen.prototype.keydown_arrow = function() {\n var next_sib;\n if (this.results_showing && this.result_highlight) {\n next_sib = this.result_highlight.nextAll(\"li.active-result\").first();\n if (next_sib) {\n return this.result_do_highlight(next_sib);\n }\n } else {\n return this.results_show();\n }\n };\n\n Chosen.prototype.keyup_arrow = function() {\n var prev_sibs;\n if (!this.results_showing && !this.is_multiple) {\n return this.results_show();\n } else if (this.result_highlight) {\n prev_sibs = this.result_highlight.prevAll(\"li.active-result\");\n if (prev_sibs.length) {\n return this.result_do_highlight(prev_sibs.first());\n } else {\n if (this.choices_count() > 0) {\n this.results_hide();\n }\n return this.result_clear_highlight();\n }\n }\n };\n\n Chosen.prototype.keydown_backstroke = function() {\n var next_available_destroy;\n if (this.pending_backstroke) {\n this.choice_destroy(this.pending_backstroke.find(\"a\").first());\n return this.clear_backstroke();\n } else {\n next_available_destroy = this.search_container.siblings(\"li.search-choice\").last();\n if (next_available_destroy.length && !next_available_destroy.hasClass(\"search-choice-disabled\")) {\n this.pending_backstroke = next_available_destroy;\n if (this.single_backstroke_delete) {\n return this.keydown_backstroke();\n } else {\n return this.pending_backstroke.addClass(\"search-choice-focus\");\n }\n }\n }\n };\n\n Chosen.prototype.clear_backstroke = function() {\n if (this.pending_backstroke) {\n this.pending_backstroke.removeClass(\"search-choice-focus\");\n }\n return this.pending_backstroke = null;\n };\n\n Chosen.prototype.search_field_scale = function() {\n var div, i, len, style, style_block, styles, width;\n if (!this.is_multiple) {\n return;\n }\n style_block = {\n position: 'absolute',\n left: '-1000px',\n top: '-1000px',\n display: 'none',\n whiteSpace: 'pre'\n };\n styles = ['fontSize', 'fontStyle', 'fontWeight', 'fontFamily', 'lineHeight', 'textTransform', 'letterSpacing'];\n for (i = 0, len = styles.length; i < len; i++) {\n style = styles[i];\n style_block[style] = this.search_field.css(style);\n }\n div = $('
    ').css(style_block);\n div.text(this.get_search_field_value());\n $('body').append(div);\n width = div.width() + 25;\n div.remove();\n if (this.container.is(':visible')) {\n width = Math.min(this.container.outerWidth() - 10, width);\n }\n return this.search_field.width(width);\n };\n\n Chosen.prototype.trigger_form_field_change = function(extra) {\n this.form_field_jq.trigger(\"input\", extra);\n return this.form_field_jq.trigger(\"change\", extra);\n };\n\n return Chosen;\n\n })(AbstractChosen);\n\n}).call(this);\n","/**\n * Original library => dom-confetti\n * https://github.com/daniel-lundin/dom-confetti\n */\n\nconst defaultColors = [\n'#a864fd',\n'#29cdff',\n'#78ff44',\n'#ff718d',\n'#fdff6a'];\n\n\nconst shape = function (element) {\n const list = [\n // Square\n function (e) {\n let size = `${Math.round((Math.random() + 0.5) * 10)}px`;\n e.style.width = size;\n e.style.height = size;\n return e;\n },\n // Round\n function (e) {\n let size = `${Math.round((Math.random() + 0.5) * 10)}px`;\n e.style.width = size;\n e.style.height = size;\n e.style['border-radius'] = '50%';\n return e;\n },\n // Triangle\n function (e) {\n let size = `${Math.round((Math.random() + 0.5) * 10)}`;\n let color = e.style['background-color'];\n e.style['background-color'] = 'transparent';\n\n e.style['border-bottom'] = `${size}px solid ${color}`;\n e.style['border-left'] = `${size / 2}px solid transparent`;\n e.style['border-right'] = `${size / 2}px solid transparent`;\n e.style.height = 0;\n e.style.width = size;\n\n return e;\n }];\n\n\n return list[Math.floor(Math.random() * list.length)](element);\n};\n\nfunction createElements(root, elementCount, colors) {\n return Array.\n from({ length: elementCount }).\n map((_, index) => {\n const element = document.createElement('div');\n const color = colors[index % colors.length];\n element.style['background-color'] = color; // eslint-disable-line space-infix-ops\n element.style.position = 'absolute';\n root.appendChild(shape(element));\n return element;\n });\n}\n\nfunction randomPhysics(angle, spread, startVelocity, random) {\n const radAngle = angle * (Math.PI / 180);\n const radSpread = spread * (Math.PI / 180);\n return {\n x: 0,\n y: 0,\n wobble: random() * 10,\n velocity: startVelocity * 0.5 + random() * startVelocity,\n angle2D: -radAngle + (0.5 * radSpread - random() * radSpread),\n angle3D: -(Math.PI / 4) + random() * (Math.PI / 2),\n tiltAngle: random() * Math.PI };\n\n}\n\nfunction updateFetti(fetti, progress, decay) {\n /* eslint-disable no-param-reassign */\n fetti.physics.x += Math.cos(fetti.physics.angle2D) * fetti.physics.velocity;\n fetti.physics.y += Math.sin(fetti.physics.angle2D) * fetti.physics.velocity;\n fetti.physics.z += Math.sin(fetti.physics.angle3D) * fetti.physics.velocity;\n fetti.physics.wobble += 0.1;\n fetti.physics.velocity *= decay;\n fetti.physics.y += 3;\n fetti.physics.tiltAngle += 0.1;\n\n const { x, y, tiltAngle, wobble } = fetti.physics;\n const wobbleX = x + 10 * Math.cos(wobble);\n const wobbleY = y + 10 * Math.sin(wobble);\n const transform = `translate3d(${wobbleX}px, ${wobbleY}px, 0) rotate3d(1, 1, 1, ${tiltAngle}rad)`;\n\n fetti.element.style.transform = transform;\n fetti.element.style.opacity = 1 - progress;\n\n /* eslint-enable */\n}\n\nfunction animate(root, fettis, decay) {\n const totalTicks = 200;\n let tick = 0;\n\n function update() {\n fettis.forEach(fetti => updateFetti(fetti, tick / totalTicks, decay));\n\n tick += 1;\n if (tick < totalTicks) {\n requestAnimationFrame(update);\n } else {\n fettis.forEach(fetti => {\n if (fetti.element.parentNode === root) {\n return root.removeChild(fetti.element);\n }\n });\n }\n }\n\n requestAnimationFrame(update);\n}\n\nwindow.confetti = function (root, {\n angle = 90,\n decay = 0.9,\n spread = 45,\n startVelocity = 45,\n elementCount = 50,\n colors = defaultColors,\n random = Math.random } =\n{}) {\n const elements = createElements(root, elementCount, colors);\n const fettis = elements.map(element => ({\n element,\n physics: randomPhysics(angle, spread, startVelocity, random) }));\n\n\n animate(root, fettis, decay);\n};\n","/*!\nWaypoints - 4.0.1\nCopyright © 2011-2016 Caleb Troughton\nLicensed under the MIT license.\nhttps://github.com/imakewebthings/waypoints/blob/master/licenses.txt\n*/\n(function() {\n 'use strict'\n\n var keyCounter = 0\n var allWaypoints = {}\n\n /* http://imakewebthings.com/waypoints/api/waypoint */\n function Waypoint(options) {\n if (!options) {\n throw new Error('No options passed to Waypoint constructor')\n }\n if (!options.element) {\n throw new Error('No element option passed to Waypoint constructor')\n }\n if (!options.handler) {\n throw new Error('No handler option passed to Waypoint constructor')\n }\n\n this.key = 'waypoint-' + keyCounter\n this.options = Waypoint.Adapter.extend({}, Waypoint.defaults, options)\n this.element = this.options.element\n this.adapter = new Waypoint.Adapter(this.element)\n this.callback = options.handler\n this.axis = this.options.horizontal ? 'horizontal' : 'vertical'\n this.enabled = this.options.enabled\n this.triggerPoint = null\n this.group = Waypoint.Group.findOrCreate({\n name: this.options.group,\n axis: this.axis\n })\n this.context = Waypoint.Context.findOrCreateByElement(this.options.context)\n\n if (Waypoint.offsetAliases[this.options.offset]) {\n this.options.offset = Waypoint.offsetAliases[this.options.offset]\n }\n this.group.add(this)\n this.context.add(this)\n allWaypoints[this.key] = this\n keyCounter += 1\n }\n\n /* Private */\n Waypoint.prototype.queueTrigger = function(direction) {\n this.group.queueTrigger(this, direction)\n }\n\n /* Private */\n Waypoint.prototype.trigger = function(args) {\n if (!this.enabled) {\n return\n }\n if (this.callback) {\n this.callback.apply(this, args)\n }\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/destroy */\n Waypoint.prototype.destroy = function() {\n this.context.remove(this)\n this.group.remove(this)\n delete allWaypoints[this.key]\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/disable */\n Waypoint.prototype.disable = function() {\n this.enabled = false\n return this\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/enable */\n Waypoint.prototype.enable = function() {\n this.context.refresh()\n this.enabled = true\n return this\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/next */\n Waypoint.prototype.next = function() {\n return this.group.next(this)\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/previous */\n Waypoint.prototype.previous = function() {\n return this.group.previous(this)\n }\n\n /* Private */\n Waypoint.invokeAll = function(method) {\n var allWaypointsArray = []\n for (var waypointKey in allWaypoints) {\n allWaypointsArray.push(allWaypoints[waypointKey])\n }\n for (var i = 0, end = allWaypointsArray.length; i < end; i++) {\n allWaypointsArray[i][method]()\n }\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/destroy-all */\n Waypoint.destroyAll = function() {\n Waypoint.invokeAll('destroy')\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/disable-all */\n Waypoint.disableAll = function() {\n Waypoint.invokeAll('disable')\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/enable-all */\n Waypoint.enableAll = function() {\n Waypoint.Context.refreshAll()\n for (var waypointKey in allWaypoints) {\n allWaypoints[waypointKey].enabled = true\n }\n return this\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/refresh-all */\n Waypoint.refreshAll = function() {\n Waypoint.Context.refreshAll()\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/viewport-height */\n Waypoint.viewportHeight = function() {\n return window.innerHeight || document.documentElement.clientHeight\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/viewport-width */\n Waypoint.viewportWidth = function() {\n return document.documentElement.clientWidth\n }\n\n Waypoint.adapters = []\n\n Waypoint.defaults = {\n context: window,\n continuous: true,\n enabled: true,\n group: 'default',\n horizontal: false,\n offset: 0\n }\n\n Waypoint.offsetAliases = {\n 'bottom-in-view': function() {\n return this.context.innerHeight() - this.adapter.outerHeight()\n },\n 'right-in-view': function() {\n return this.context.innerWidth() - this.adapter.outerWidth()\n }\n }\n\n window.Waypoint = Waypoint\n}())\n;(function() {\n 'use strict'\n\n function requestAnimationFrameShim(callback) {\n window.setTimeout(callback, 1000 / 60)\n }\n\n var keyCounter = 0\n var contexts = {}\n var Waypoint = window.Waypoint\n var oldWindowLoad = window.onload\n\n /* http://imakewebthings.com/waypoints/api/context */\n function Context(element) {\n this.element = element\n this.Adapter = Waypoint.Adapter\n this.adapter = new this.Adapter(element)\n this.key = 'waypoint-context-' + keyCounter\n this.didScroll = false\n this.didResize = false\n this.oldScroll = {\n x: this.adapter.scrollLeft(),\n y: this.adapter.scrollTop()\n }\n this.waypoints = {\n vertical: {},\n horizontal: {}\n }\n\n element.waypointContextKey = this.key\n contexts[element.waypointContextKey] = this\n keyCounter += 1\n if (!Waypoint.windowContext) {\n Waypoint.windowContext = true\n Waypoint.windowContext = new Context(window)\n }\n\n this.createThrottledScrollHandler()\n this.createThrottledResizeHandler()\n }\n\n /* Private */\n Context.prototype.add = function(waypoint) {\n var axis = waypoint.options.horizontal ? 'horizontal' : 'vertical'\n this.waypoints[axis][waypoint.key] = waypoint\n this.refresh()\n }\n\n /* Private */\n Context.prototype.checkEmpty = function() {\n var horizontalEmpty = this.Adapter.isEmptyObject(this.waypoints.horizontal)\n var verticalEmpty = this.Adapter.isEmptyObject(this.waypoints.vertical)\n var isWindow = this.element == this.element.window\n if (horizontalEmpty && verticalEmpty && !isWindow) {\n this.adapter.off('.waypoints')\n delete contexts[this.key]\n }\n }\n\n /* Private */\n Context.prototype.createThrottledResizeHandler = function() {\n var self = this\n\n function resizeHandler() {\n self.handleResize()\n self.didResize = false\n }\n\n this.adapter.on('resize.waypoints', function() {\n if (!self.didResize) {\n self.didResize = true\n Waypoint.requestAnimationFrame(resizeHandler)\n }\n })\n }\n\n /* Private */\n Context.prototype.createThrottledScrollHandler = function() {\n var self = this\n function scrollHandler() {\n self.handleScroll()\n self.didScroll = false\n }\n\n this.adapter.on('scroll.waypoints', function() {\n if (!self.didScroll || Waypoint.isTouch) {\n self.didScroll = true\n Waypoint.requestAnimationFrame(scrollHandler)\n }\n })\n }\n\n /* Private */\n Context.prototype.handleResize = function() {\n Waypoint.Context.refreshAll()\n }\n\n /* Private */\n Context.prototype.handleScroll = function() {\n var triggeredGroups = {}\n var axes = {\n horizontal: {\n newScroll: this.adapter.scrollLeft(),\n oldScroll: this.oldScroll.x,\n forward: 'right',\n backward: 'left'\n },\n vertical: {\n newScroll: this.adapter.scrollTop(),\n oldScroll: this.oldScroll.y,\n forward: 'down',\n backward: 'up'\n }\n }\n\n for (var axisKey in axes) {\n var axis = axes[axisKey]\n var isForward = axis.newScroll > axis.oldScroll\n var direction = isForward ? axis.forward : axis.backward\n\n for (var waypointKey in this.waypoints[axisKey]) {\n var waypoint = this.waypoints[axisKey][waypointKey]\n if (waypoint.triggerPoint === null) {\n continue\n }\n var wasBeforeTriggerPoint = axis.oldScroll < waypoint.triggerPoint\n var nowAfterTriggerPoint = axis.newScroll >= waypoint.triggerPoint\n var crossedForward = wasBeforeTriggerPoint && nowAfterTriggerPoint\n var crossedBackward = !wasBeforeTriggerPoint && !nowAfterTriggerPoint\n if (crossedForward || crossedBackward) {\n waypoint.queueTrigger(direction)\n triggeredGroups[waypoint.group.id] = waypoint.group\n }\n }\n }\n\n for (var groupKey in triggeredGroups) {\n triggeredGroups[groupKey].flushTriggers()\n }\n\n this.oldScroll = {\n x: axes.horizontal.newScroll,\n y: axes.vertical.newScroll\n }\n }\n\n /* Private */\n Context.prototype.innerHeight = function() {\n /*eslint-disable eqeqeq */\n if (this.element == this.element.window) {\n return Waypoint.viewportHeight()\n }\n /*eslint-enable eqeqeq */\n return this.adapter.innerHeight()\n }\n\n /* Private */\n Context.prototype.remove = function(waypoint) {\n delete this.waypoints[waypoint.axis][waypoint.key]\n this.checkEmpty()\n }\n\n /* Private */\n Context.prototype.innerWidth = function() {\n /*eslint-disable eqeqeq */\n if (this.element == this.element.window) {\n return Waypoint.viewportWidth()\n }\n /*eslint-enable eqeqeq */\n return this.adapter.innerWidth()\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/context-destroy */\n Context.prototype.destroy = function() {\n var allWaypoints = []\n for (var axis in this.waypoints) {\n for (var waypointKey in this.waypoints[axis]) {\n allWaypoints.push(this.waypoints[axis][waypointKey])\n }\n }\n for (var i = 0, end = allWaypoints.length; i < end; i++) {\n allWaypoints[i].destroy()\n }\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/context-refresh */\n Context.prototype.refresh = function() {\n /*eslint-disable eqeqeq */\n var isWindow = this.element == this.element.window\n /*eslint-enable eqeqeq */\n var contextOffset = isWindow ? undefined : this.adapter.offset()\n var triggeredGroups = {}\n var axes\n\n this.handleScroll()\n axes = {\n horizontal: {\n contextOffset: isWindow ? 0 : contextOffset.left,\n contextScroll: isWindow ? 0 : this.oldScroll.x,\n contextDimension: this.innerWidth(),\n oldScroll: this.oldScroll.x,\n forward: 'right',\n backward: 'left',\n offsetProp: 'left'\n },\n vertical: {\n contextOffset: isWindow ? 0 : contextOffset.top,\n contextScroll: isWindow ? 0 : this.oldScroll.y,\n contextDimension: this.innerHeight(),\n oldScroll: this.oldScroll.y,\n forward: 'down',\n backward: 'up',\n offsetProp: 'top'\n }\n }\n\n for (var axisKey in axes) {\n var axis = axes[axisKey]\n for (var waypointKey in this.waypoints[axisKey]) {\n var waypoint = this.waypoints[axisKey][waypointKey]\n var adjustment = waypoint.options.offset\n var oldTriggerPoint = waypoint.triggerPoint\n var elementOffset = 0\n var freshWaypoint = oldTriggerPoint == null\n var contextModifier, wasBeforeScroll, nowAfterScroll\n var triggeredBackward, triggeredForward\n\n if (waypoint.element !== waypoint.element.window) {\n elementOffset = waypoint.adapter.offset()[axis.offsetProp]\n }\n\n if (typeof adjustment === 'function') {\n adjustment = adjustment.apply(waypoint)\n }\n else if (typeof adjustment === 'string') {\n adjustment = parseFloat(adjustment)\n if (waypoint.options.offset.indexOf('%') > - 1) {\n adjustment = Math.ceil(axis.contextDimension * adjustment / 100)\n }\n }\n\n contextModifier = axis.contextScroll - axis.contextOffset\n waypoint.triggerPoint = Math.floor(elementOffset + contextModifier - adjustment)\n wasBeforeScroll = oldTriggerPoint < axis.oldScroll\n nowAfterScroll = waypoint.triggerPoint >= axis.oldScroll\n triggeredBackward = wasBeforeScroll && nowAfterScroll\n triggeredForward = !wasBeforeScroll && !nowAfterScroll\n\n if (!freshWaypoint && triggeredBackward) {\n waypoint.queueTrigger(axis.backward)\n triggeredGroups[waypoint.group.id] = waypoint.group\n }\n else if (!freshWaypoint && triggeredForward) {\n waypoint.queueTrigger(axis.forward)\n triggeredGroups[waypoint.group.id] = waypoint.group\n }\n else if (freshWaypoint && axis.oldScroll >= waypoint.triggerPoint) {\n waypoint.queueTrigger(axis.forward)\n triggeredGroups[waypoint.group.id] = waypoint.group\n }\n }\n }\n\n Waypoint.requestAnimationFrame(function() {\n for (var groupKey in triggeredGroups) {\n triggeredGroups[groupKey].flushTriggers()\n }\n })\n\n return this\n }\n\n /* Private */\n Context.findOrCreateByElement = function(element) {\n return Context.findByElement(element) || new Context(element)\n }\n\n /* Private */\n Context.refreshAll = function() {\n for (var contextId in contexts) {\n contexts[contextId].refresh()\n }\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/context-find-by-element */\n Context.findByElement = function(element) {\n return contexts[element.waypointContextKey]\n }\n\n window.onload = function() {\n if (oldWindowLoad) {\n oldWindowLoad()\n }\n Context.refreshAll()\n }\n\n\n Waypoint.requestAnimationFrame = function(callback) {\n var requestFn = window.requestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n requestAnimationFrameShim\n requestFn.call(window, callback)\n }\n Waypoint.Context = Context\n}())\n;(function() {\n 'use strict'\n\n function byTriggerPoint(a, b) {\n return a.triggerPoint - b.triggerPoint\n }\n\n function byReverseTriggerPoint(a, b) {\n return b.triggerPoint - a.triggerPoint\n }\n\n var groups = {\n vertical: {},\n horizontal: {}\n }\n var Waypoint = window.Waypoint\n\n /* http://imakewebthings.com/waypoints/api/group */\n function Group(options) {\n this.name = options.name\n this.axis = options.axis\n this.id = this.name + '-' + this.axis\n this.waypoints = []\n this.clearTriggerQueues()\n groups[this.axis][this.name] = this\n }\n\n /* Private */\n Group.prototype.add = function(waypoint) {\n this.waypoints.push(waypoint)\n }\n\n /* Private */\n Group.prototype.clearTriggerQueues = function() {\n this.triggerQueues = {\n up: [],\n down: [],\n left: [],\n right: []\n }\n }\n\n /* Private */\n Group.prototype.flushTriggers = function() {\n for (var direction in this.triggerQueues) {\n var waypoints = this.triggerQueues[direction]\n var reverse = direction === 'up' || direction === 'left'\n waypoints.sort(reverse ? byReverseTriggerPoint : byTriggerPoint)\n for (var i = 0, end = waypoints.length; i < end; i += 1) {\n var waypoint = waypoints[i]\n if (waypoint.options.continuous || i === waypoints.length - 1) {\n waypoint.trigger([direction])\n }\n }\n }\n this.clearTriggerQueues()\n }\n\n /* Private */\n Group.prototype.next = function(waypoint) {\n this.waypoints.sort(byTriggerPoint)\n var index = Waypoint.Adapter.inArray(waypoint, this.waypoints)\n var isLast = index === this.waypoints.length - 1\n return isLast ? null : this.waypoints[index + 1]\n }\n\n /* Private */\n Group.prototype.previous = function(waypoint) {\n this.waypoints.sort(byTriggerPoint)\n var index = Waypoint.Adapter.inArray(waypoint, this.waypoints)\n return index ? this.waypoints[index - 1] : null\n }\n\n /* Private */\n Group.prototype.queueTrigger = function(waypoint, direction) {\n this.triggerQueues[direction].push(waypoint)\n }\n\n /* Private */\n Group.prototype.remove = function(waypoint) {\n var index = Waypoint.Adapter.inArray(waypoint, this.waypoints)\n if (index > -1) {\n this.waypoints.splice(index, 1)\n }\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/first */\n Group.prototype.first = function() {\n return this.waypoints[0]\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/last */\n Group.prototype.last = function() {\n return this.waypoints[this.waypoints.length - 1]\n }\n\n /* Private */\n Group.findOrCreate = function(options) {\n return groups[options.axis][options.name] || new Group(options)\n }\n\n Waypoint.Group = Group\n}())\n;(function() {\n 'use strict'\n\n var $ = window.jQuery\n var Waypoint = window.Waypoint\n\n function JQueryAdapter(element) {\n this.$element = $(element)\n }\n\n $.each([\n 'innerHeight',\n 'innerWidth',\n 'off',\n 'offset',\n 'on',\n 'outerHeight',\n 'outerWidth',\n 'scrollLeft',\n 'scrollTop'\n ], function(i, method) {\n JQueryAdapter.prototype[method] = function() {\n var args = Array.prototype.slice.call(arguments)\n return this.$element[method].apply(this.$element, args)\n }\n })\n\n $.each([\n 'extend',\n 'inArray',\n 'isEmptyObject'\n ], function(i, method) {\n JQueryAdapter[method] = $[method]\n })\n\n Waypoint.adapters.push({\n name: 'jquery',\n Adapter: JQueryAdapter\n })\n Waypoint.Adapter = JQueryAdapter\n}())\n;(function() {\n 'use strict'\n\n var Waypoint = window.Waypoint\n\n function createExtension(framework) {\n return function() {\n var waypoints = []\n var overrides = arguments[0]\n\n if (framework.isFunction(arguments[0])) {\n overrides = framework.extend({}, arguments[1])\n overrides.handler = arguments[0]\n }\n\n this.each(function() {\n var options = framework.extend({}, overrides, {\n element: this\n })\n if (typeof options.context === 'string') {\n options.context = framework(this).closest(options.context)[0]\n }\n waypoints.push(new Waypoint(options))\n })\n\n return waypoints\n }\n }\n\n if (window.jQuery) {\n window.jQuery.fn.waypoint = createExtension(window.jQuery)\n }\n if (window.Zepto) {\n window.Zepto.fn.waypoint = createExtension(window.Zepto)\n }\n}())\n;\n","/*!\n * jQuery JavaScript Library v3.7.1\n * https://jquery.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2023-08-28T13:37Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket trac-14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n\t\t// Support: Chrome <=57, Firefox <=52\n\t\t// In some browsers, typeof returns \"function\" for HTML elements\n\t\t// (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n\t\t// We don't want to classify *any* DOM node as a function.\n\t\t// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n\t\t// Plus for old WebKit, typeof returns \"function\" for HTML collections\n\t\t// (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n\t\treturn typeof obj === \"function\" && typeof obj.nodeType !== \"number\" &&\n\t\t\ttypeof obj.item !== \"function\";\n\t};\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar version = \"3.7.1\",\n\n\trhtmlSuffix = /HTML$/i,\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\n\t// Retrieve the text value of an array of DOM nodes\n\ttext: function( elem ) {\n\t\tvar node,\n\t\t\tret = \"\",\n\t\t\ti = 0,\n\t\t\tnodeType = elem.nodeType;\n\n\t\tif ( !nodeType ) {\n\n\t\t\t// If no nodeType, this is expected to be an array\n\t\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t\t// Do not traverse comment nodes\n\t\t\t\tret += jQuery.text( node );\n\t\t\t}\n\t\t}\n\t\tif ( nodeType === 1 || nodeType === 11 ) {\n\t\t\treturn elem.textContent;\n\t\t}\n\t\tif ( nodeType === 9 ) {\n\t\t\treturn elem.documentElement.textContent;\n\t\t}\n\t\tif ( nodeType === 3 || nodeType === 4 ) {\n\t\t\treturn elem.nodeValue;\n\t\t}\n\n\t\t// Do not include comment or processing instruction nodes\n\n\t\treturn ret;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\tisXMLDoc: function( elem ) {\n\t\tvar namespace = elem && elem.namespaceURI,\n\t\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t\t// Assume HTML when documentElement doesn't yet exist, such as inside\n\t\t// document fragments.\n\t\treturn !rhtmlSuffix.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\n\n\nfunction nodeName( elem, name ) {\n\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n}\nvar pop = arr.pop;\n\n\nvar sort = arr.sort;\n\n\nvar splice = arr.splice;\n\n\nvar whitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\";\n\n\nvar rtrimCSS = new RegExp(\n\t\"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\",\n\t\"g\"\n);\n\n\n\n\n// Note: an element does not contain itself\njQuery.contains = function( a, b ) {\n\tvar bup = b && b.parentNode;\n\n\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\n\t\t// Support: IE 9 - 11+\n\t\t// IE doesn't have `contains` on SVG.\n\t\ta.contains ?\n\t\t\ta.contains( bup ) :\n\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t) );\n};\n\n\n\n\n// CSS string/identifier serialization\n// https://drafts.csswg.org/cssom/#common-serializing-idioms\nvar rcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g;\n\nfunction fcssescape( ch, asCodePoint ) {\n\tif ( asCodePoint ) {\n\n\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\tif ( ch === \"\\0\" ) {\n\t\t\treturn \"\\uFFFD\";\n\t\t}\n\n\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t}\n\n\t// Other potentially-special ASCII characters get backslash-escaped\n\treturn \"\\\\\" + ch;\n}\n\njQuery.escapeSelector = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\n\n\n\nvar preferredDoc = document,\n\tpushNative = push;\n\n( function() {\n\nvar i,\n\tExpr,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\tpush = pushNative,\n\n\t// Local document vars\n\tdocument,\n\tdocumentElement,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\tmatches,\n\n\t// Instance-specific data\n\texpando = jQuery.expando,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|\" +\n\t\t\"loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: https://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trleadingCombinator = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" +\n\t\twhitespace + \"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\tID: new RegExp( \"^#(\" + identifier + \")\" ),\n\t\tCLASS: new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\tTAG: new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\tATTR: new RegExp( \"^\" + attributes ),\n\t\tPSEUDO: new RegExp( \"^\" + pseudos ),\n\t\tCHILD: new RegExp(\n\t\t\t\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\tbool: new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\tneedsContext: new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// https://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\tif ( nonHex ) {\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\treturn nonHex;\n\t\t}\n\n\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t// Support: IE <=11+\n\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t// surrogate pair\n\t\treturn high < 0 ?\n\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// Used for iframes; see `setDocument`.\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE/Edge.\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && nodeName( elem, \"fieldset\" );\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android <=4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = {\n\t\tapply: function( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t},\n\t\tcall: function( target ) {\n\t\t\tpushNative.apply( target, slice.call( arguments, 1 ) );\n\t\t}\n\t};\n}\n\nfunction find( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE 9 only\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE 9 only\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tfind.contains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && context.getElementsByClassName ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( !nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rleadingCombinator.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when\n\t\t\t\t\t// strict-comparing two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( newContext != context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = jQuery.escapeSelector( nid );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrimCSS, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties\n\t\t// (see https://github.com/jquery/sizzle/issues/157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by jQuery selector module\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\treturn nodeName( elem, \"input\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\treturn ( nodeName( elem, \"input\" ) || nodeName( elem, \"button\" ) ) &&\n\t\t\telem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11+\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a jQuery selector context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [node] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nfunction setDocument( node ) {\n\tvar subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocumentElement = document.documentElement;\n\tdocumentIsHTML = !jQuery.isXMLDoc( document );\n\n\t// Support: iOS 7 only, IE 9 - 11+\n\t// Older browsers didn't support unprefixed `matches`.\n\tmatches = documentElement.matches ||\n\t\tdocumentElement.webkitMatchesSelector ||\n\t\tdocumentElement.msMatchesSelector;\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors\n\t// (see trac-13936).\n\t// Limit the fix to IE & Edge Legacy; despite Edge 15+ implementing `matches`,\n\t// all IE 9+ and Edge Legacy versions implement `msMatchesSelector` as well.\n\tif ( documentElement.msMatchesSelector &&\n\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tpreferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t\tsubWindow.addEventListener( \"unload\", unloadHandler );\n\t}\n\n\t// Support: IE <10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocumentElement.appendChild( el ).id = jQuery.expando;\n\t\treturn !document.getElementsByName ||\n\t\t\t!document.getElementsByName( jQuery.expando ).length;\n\t} );\n\n\t// Support: IE 9 only\n\t// Check to see if it's possible to do matchesSelector\n\t// on a disconnected node.\n\tsupport.disconnectedMatch = assert( function( el ) {\n\t\treturn matches.call( el, \"*\" );\n\t} );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// IE/Edge don't support the :scope pseudo-class.\n\tsupport.scope = assert( function() {\n\t\treturn document.querySelectorAll( \":scope\" );\n\t} );\n\n\t// Support: Chrome 105 - 111 only, Safari 15.4 - 16.3 only\n\t// Make sure the `:has()` argument is parsed unforgivingly.\n\t// We include `*` in the test to detect buggy implementations that are\n\t// _selectively_ forgiving (specifically when the list includes at least\n\t// one valid selector).\n\t// Note that we treat complete lack of support for `:has()` as if it were\n\t// spec-compliant support, which is fine because use of `:has()` in such\n\t// environments will fail in the qSA path and fall back to jQuery traversal\n\t// anyway.\n\tsupport.cssHas = assert( function() {\n\t\ttry {\n\t\t\tdocument.querySelector( \":has(*,:jqfake)\" );\n\t\t\treturn false;\n\t\t} catch ( e ) {\n\t\t\treturn true;\n\t\t}\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter.ID = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find.ID = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter.ID = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find.ID = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find.TAG = function( tag, context ) {\n\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t// DocumentFragment nodes don't have gEBTN\n\t\t} else {\n\t\t\treturn context.querySelectorAll( tag );\n\t\t}\n\t};\n\n\t// Class\n\tExpr.find.CLASS = function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\trbuggyQSA = [];\n\n\t// Build QSA regex\n\t// Regex strategy adopted from Diego Perini\n\tassert( function( el ) {\n\n\t\tvar input;\n\n\t\tdocumentElement.appendChild( el ).innerHTML =\n\t\t\t\"\" +\n\t\t\t\"\";\n\n\t\t// Support: iOS <=7 - 8 only\n\t\t// Boolean attributes and \"value\" are not treated correctly in some XML documents\n\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t}\n\n\t\t// Support: iOS <=7 - 8 only\n\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\trbuggyQSA.push( \"~=\" );\n\t\t}\n\n\t\t// Support: iOS 8 only\n\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t}\n\n\t\t// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n\t\t// In some of the document kinds, these selectors wouldn't work natively.\n\t\t// This is probably OK but for backwards compatibility we want to maintain\n\t\t// handling them through jQuery traversal in jQuery 3.x.\n\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\trbuggyQSA.push( \":checked\" );\n\t\t}\n\n\t\t// Support: Windows 8 Native Apps\n\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\tinput = document.createElement( \"input\" );\n\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t// Support: IE 9 - 11+\n\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n\t\t// In some of the document kinds, these selectors wouldn't work natively.\n\t\t// This is probably OK but for backwards compatibility we want to maintain\n\t\t// handling them through jQuery traversal in jQuery 3.x.\n\t\tdocumentElement.appendChild( el ).disabled = true;\n\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t}\n\n\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t// Adding a temporary attribute to the document before the selection works\n\t\t// around the issue.\n\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\tinput = document.createElement( \"input\" );\n\t\tinput.setAttribute( \"name\", \"\" );\n\t\tel.appendChild( input );\n\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t}\n\t} );\n\n\tif ( !support.cssHas ) {\n\n\t\t// Support: Chrome 105 - 110+, Safari 15.4 - 16.3+\n\t\t// Our regular `try-catch` mechanism fails to detect natively-unsupported\n\t\t// pseudo-classes inside `:has()` (such as `:has(:contains(\"Foo\"))`)\n\t\t// in browsers that parse the `:has()` argument as a forgiving selector list.\n\t\t// https://drafts.csswg.org/selectors/#relational now requires the argument\n\t\t// to be parsed unforgivingly, but browsers have not yet fully adjusted.\n\t\trbuggyQSA.push( \":has\" );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = function( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a === document || a.ownerDocument == preferredDoc &&\n\t\t\t\tfind.contains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b === document || b.ownerDocument == preferredDoc &&\n\t\t\t\tfind.contains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t};\n\n\treturn document;\n}\n\nfind.matches = function( expr, elements ) {\n\treturn find( expr, null, null, elements );\n};\n\nfind.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn find( expr, document, null, [ elem ] ).length > 0;\n};\n\nfind.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn jQuery.contains( context, elem );\n};\n\n\nfind.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (see trac-13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\tif ( val !== undefined ) {\n\t\treturn val;\n\t}\n\n\treturn elem.getAttribute( name );\n};\n\nfind.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\njQuery.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\t//\n\t// Support: Android <=4.0+\n\t// Testing for detecting duplicates is unpredictable so instead assume we can't\n\t// depend on duplicate detection in all browsers without a stable sort.\n\thasDuplicate = !support.sortStable;\n\tsortInput = !support.sortStable && slice.call( results, 0 );\n\tsort.call( results, sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tsplice.call( results, duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\njQuery.fn.uniqueSort = function() {\n\treturn this.pushStack( jQuery.uniqueSort( slice.apply( this ) ) );\n};\n\nExpr = jQuery.expr = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\tATTR: function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] || match[ 5 ] || \"\" )\n\t\t\t\t.replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\tCHILD: function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tfind.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" )\n\t\t\t\t);\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tfind.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPSEUDO: function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr.CHILD.test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\tTAG: function( nodeNameSelector ) {\n\t\t\tvar expectedNodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn nodeName( elem, expectedNodeName );\n\t\t\t\t};\n\t\t},\n\n\t\tCLASS: function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace + \")\" + className +\n\t\t\t\t\t\"(\" + whitespace + \"|$)\" ) ) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\tATTR: function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = find.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\tif ( operator === \"=\" ) {\n\t\t\t\t\treturn result === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"!=\" ) {\n\t\t\t\t\treturn result !== check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"^=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) === 0;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"*=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"$=\" ) {\n\t\t\t\t\treturn check && result.slice( -check.length ) === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"~=\" ) {\n\t\t\t\t\treturn ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" )\n\t\t\t\t\t\t.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"|=\" ) {\n\t\t\t\t\treturn result === check || result.slice( 0, check.length + 1 ) === check + \"-\";\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t};\n\t\t},\n\n\t\tCHILD: function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnodeName( node, name ) :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\t\t\t\t\t\t\touterCache = parent[ expando ] || ( parent[ expando ] = {} );\n\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\t\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnodeName( node, name ) :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\t\t\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\tPSEUDO: function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// https://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tfind.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as jQuery does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf.call( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\tnot: markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrimCSS, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element\n\t\t\t\t\t// (see https://github.com/jquery/sizzle/issues/299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\thas: markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn find( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\tcontains: markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || jQuery.text( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// https://www.w3.org/TR/selectors/#lang-pseudo\n\t\tlang: markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tfind.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\ttarget: function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\troot: function( elem ) {\n\t\t\treturn elem === documentElement;\n\t\t},\n\n\t\tfocus: function( elem ) {\n\t\t\treturn elem === safeActiveElement() &&\n\t\t\t\tdocument.hasFocus() &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\tenabled: createDisabledPseudo( false ),\n\t\tdisabled: createDisabledPseudo( true ),\n\n\t\tchecked: function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\treturn ( nodeName( elem, \"input\" ) && !!elem.checked ) ||\n\t\t\t\t( nodeName( elem, \"option\" ) && !!elem.selected );\n\t\t},\n\n\t\tselected: function( elem ) {\n\n\t\t\t// Support: IE <=11+\n\t\t\t// Accessing the selectedIndex property\n\t\t\t// forces the browser to treat the default option as\n\t\t\t// selected when in an optgroup.\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\tempty: function( elem ) {\n\n\t\t\t// https://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\tparent: function( elem ) {\n\t\t\treturn !Expr.pseudos.empty( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\theader: function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\tinput: function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\tbutton: function( elem ) {\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"button\" ||\n\t\t\t\tnodeName( elem, \"button\" );\n\t\t},\n\n\t\ttext: function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"text\" &&\n\n\t\t\t\t// Support: IE <10 only\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear\n\t\t\t\t// with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\tfirst: createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\tlast: createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\teq: createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\teven: createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\todd: createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\tlt: createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i;\n\n\t\t\tif ( argument < 0 ) {\n\t\t\t\ti = argument + length;\n\t\t\t} else if ( argument > length ) {\n\t\t\t\ti = length;\n\t\t\t} else {\n\t\t\t\ti = argument;\n\t\t\t}\n\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\tgt: createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos.nth = Expr.pseudos.eq;\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\nfunction tokenize( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rleadingCombinator.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrimCSS, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\tif ( parseOnly ) {\n\t\treturn soFar.length;\n\t}\n\n\treturn soFar ?\n\t\tfind.error( selector ) :\n\n\t\t// Cache the tokens\n\t\ttokenCache( selector, groups ).slice( 0 );\n}\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\tif ( skip && nodeName( elem, skip ) ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = outerCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\touterCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\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\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tfind( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem, matcherOut,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed ||\n\t\t\t\tmultipleContexts( selector || \"*\",\n\t\t\t\t\tcontext.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems;\n\n\t\tif ( matcher ) {\n\n\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter\n\t\t\t// or preexisting results,\n\t\t\tmatcherOut = postFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t[] :\n\n\t\t\t\t// ...otherwise use results directly\n\t\t\t\tresults;\n\n\t\t\t// Find primary matches\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t} else {\n\t\t\tmatcherOut = matcherIn;\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf.call( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf.call( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tvar ret = ( !leadingRelative && ( xml || context != outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element\n\t\t\t// (see https://github.com/jquery/sizzle/issues/299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 )\n\t\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrimCSS, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find.TAG( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: iOS <=7 - 9 only\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching\n\t\t\t// elements by id. (see trac-14142)\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tjQuery.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\nfunction compile( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n}\n\n/**\n * A low-level selection function that works with jQuery's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with jQuery selector compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nfunction select( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find.ID(\n\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\tcontext\n\t\t\t) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr.needsContext.test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) &&\n\t\t\t\t\t\ttestContext( context.parentNode ) || context\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n}\n\n// One-time assignments\n\n// Support: Android <=4.0 - 4.1+\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Android <=4.0 - 4.1+\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\njQuery.find = find;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.unique = jQuery.uniqueSort;\n\n// These have always been private, but they used to be documented as part of\n// Sizzle so let's maintain them for now for backwards compatibility purposes.\nfind.compile = compile;\nfind.select = select;\nfind.setDocument = setDocument;\nfind.tokenize = tokenize;\n\nfind.escape = jQuery.escapeSelector;\nfind.getText = jQuery.text;\nfind.isXML = jQuery.isXMLDoc;\nfind.selectors = jQuery.expr;\nfind.support = jQuery.support;\nfind.uniqueSort = jQuery.uniqueSort;\n\n\t/* eslint-enable */\n\n} )();\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (trac-9521)\n\t// Strict HTML recognition (trac-11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to jQuery#find\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.error );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the error, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getErrorHook ) {\n\t\t\t\t\t\t\t\t\tprocess.error = jQuery.Deferred.getErrorHook();\n\n\t\t\t\t\t\t\t\t// The deprecated alias of the above. While the name suggests\n\t\t\t\t\t\t\t\t// returning the stack, not an error instance, jQuery just passes\n\t\t\t\t\t\t\t\t// it directly to `console.warn` so both will work; an instance\n\t\t\t\t\t\t\t\t// just better cooperates with source maps.\n\t\t\t\t\t\t\t\t} else if ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.error = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\n// If `jQuery.Deferred.getErrorHook` is defined, `asyncError` is an error\n// captured before the async barrier to get the original error cause\n// which may otherwise be hidden.\njQuery.Deferred.exceptionHook = function( error, asyncError ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message,\n\t\t\terror.stack, asyncError );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See trac-6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (trac-9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see trac-8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (trac-14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (trac-11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (trac-14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces \";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (trac-13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting or other required elements.\n\tthead: [ 1, \"\", \"
    \" ],\n\tcol: [ 2, \"\", \"
    \" ],\n\ttr: [ 2, \"\", \"
    \" ],\n\ttd: [ 3, \"\", \"
    \" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (trac-15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (trac-12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\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\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (trac-13208)\n\t\t\t\t// Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (trac-13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", true );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, isSetup ) {\n\n\t// Missing `isSetup` indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !isSetup ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\tif ( !saved ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tdataPriv.set( this, type, false );\n\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering\n\t\t\t\t// the native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, jQuery.event.trigger(\n\t\t\t\t\tsaved[ 0 ],\n\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\tthis\n\t\t\t\t) );\n\n\t\t\t\t// Abort handling of the native event by all jQuery handlers while allowing\n\t\t\t\t// native handlers on the same element to run. On target, this is achieved\n\t\t\t\t// by stopping immediate propagation just on the jQuery event. However,\n\t\t\t\t// the native event is re-wrapped by a jQuery one on each level of the\n\t\t\t\t// propagation so the only way to stop it for jQuery is to stop it for\n\t\t\t\t// everyone via native `stopPropagation()`. This is not a problem for\n\t\t\t\t// focus/blur which don't bubble, but it does also stop click on checkboxes\n\t\t\t\t// and radios. We accept this limitation.\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tevent.isImmediatePropagationStopped = returnTrue;\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (trac-504, trac-13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\n\tfunction focusMappedHandler( nativeEvent ) {\n\t\tif ( document.documentMode ) {\n\n\t\t\t// Support: IE 11+\n\t\t\t// Attach a single focusin/focusout handler on the document while someone wants\n\t\t\t// focus/blur. This is because the former are synchronous in IE while the latter\n\t\t\t// are async. In other browsers, all those handlers are invoked synchronously.\n\n\t\t\t// `handle` from private data would already wrap the event, but we need\n\t\t\t// to change the `type` here.\n\t\t\tvar handle = dataPriv.get( this, \"handle\" ),\n\t\t\t\tevent = jQuery.event.fix( nativeEvent );\n\t\t\tevent.type = nativeEvent.type === \"focusin\" ? \"focus\" : \"blur\";\n\t\t\tevent.isSimulated = true;\n\n\t\t\t// First, handle focusin/focusout\n\t\t\thandle( nativeEvent );\n\n\t\t\t// ...then, handle focus/blur\n\t\t\t//\n\t\t\t// focus/blur don't bubble while focusin/focusout do; simulate the former by only\n\t\t\t// invoking the handler at the lower level.\n\t\t\tif ( event.target === event.currentTarget ) {\n\n\t\t\t\t// The setup part calls `leverageNative`, which, in turn, calls\n\t\t\t\t// `jQuery.event.add`, so event handle will already have been set\n\t\t\t\t// by this point.\n\t\t\t\thandle( event );\n\t\t\t}\n\t\t} else {\n\n\t\t\t// For non-IE browsers, attach a single capturing handler on the document\n\t\t\t// while someone wants focusin/focusout.\n\t\t\tjQuery.event.simulate( delegateType, nativeEvent.target,\n\t\t\t\tjQuery.event.fix( nativeEvent ) );\n\t\t}\n\t}\n\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\tvar attaches;\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, true );\n\n\t\t\tif ( document.documentMode ) {\n\n\t\t\t\t// Support: IE 9 - 11+\n\t\t\t\t// We use the same native handler for focusin & focus (and focusout & blur)\n\t\t\t\t// so we need to coordinate setup & teardown parts between those events.\n\t\t\t\t// Use `delegateType` as the key as `type` is already used by `leverageNative`.\n\t\t\t\tattaches = dataPriv.get( this, delegateType );\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tthis.addEventListener( delegateType, focusMappedHandler );\n\t\t\t\t}\n\t\t\t\tdataPriv.set( this, delegateType, ( attaches || 0 ) + 1 );\n\t\t\t} else {\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\tteardown: function() {\n\t\t\tvar attaches;\n\n\t\t\tif ( document.documentMode ) {\n\t\t\t\tattaches = dataPriv.get( this, delegateType ) - 1;\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tthis.removeEventListener( delegateType, focusMappedHandler );\n\t\t\t\t\tdataPriv.remove( this, delegateType );\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.set( this, delegateType, attaches );\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Return false to indicate standard teardown should be applied\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\t// Suppress native focus or blur if we're currently inside\n\t\t// a leveraged native-event stack\n\t\t_default: function( event ) {\n\t\t\treturn dataPriv.get( event.target, type );\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n\n\t// Support: Firefox <=44\n\t// Firefox doesn't have focus(in | out) events\n\t// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n\t//\n\t// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n\t// focus(in | out) events fire after focus & blur events,\n\t// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n\t// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\n\t//\n\t// Support: IE 9 - 11+\n\t// To preserve relative focusin/focus & focusout/blur event order guaranteed on the 3.x branch,\n\t// attach a single handler for both events in IE.\n\tjQuery.event.special[ delegateType ] = {\n\t\tsetup: function() {\n\n\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\tdataHolder = document.documentMode ? this : doc,\n\t\t\t\tattaches = dataPriv.get( dataHolder, delegateType );\n\n\t\t\t// Support: IE 9 - 11+\n\t\t\t// We use the same native handler for focusin & focus (and focusout & blur)\n\t\t\t// so we need to coordinate setup & teardown parts between those events.\n\t\t\t// Use `delegateType` as the key as `type` is already used by `leverageNative`.\n\t\t\tif ( !attaches ) {\n\t\t\t\tif ( document.documentMode ) {\n\t\t\t\t\tthis.addEventListener( delegateType, focusMappedHandler );\n\t\t\t\t} else {\n\t\t\t\t\tdoc.addEventListener( type, focusMappedHandler, true );\n\t\t\t\t}\n\t\t\t}\n\t\t\tdataPriv.set( dataHolder, delegateType, ( attaches || 0 ) + 1 );\n\t\t},\n\t\tteardown: function() {\n\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\tdataHolder = document.documentMode ? this : doc,\n\t\t\t\tattaches = dataPriv.get( dataHolder, delegateType ) - 1;\n\n\t\t\tif ( !attaches ) {\n\t\t\t\tif ( document.documentMode ) {\n\t\t\t\t\tthis.removeEventListener( delegateType, focusMappedHandler );\n\t\t\t\t} else {\n\t\t\t\t\tdoc.removeEventListener( type, focusMappedHandler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( dataHolder, delegateType );\n\t\t\t} else {\n\t\t\t\tdataPriv.set( dataHolder, delegateType, attaches );\n\t\t\t}\n\t\t}\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (trac-8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Re-enable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Unwrap a CDATA section containing script contents. This shouldn't be\n\t\t\t\t\t\t\t// needed as in XML documents they're already not visible when\n\t\t\t\t\t\t\t// inspecting element contents and in HTML documents they have no\n\t\t\t\t\t\t\t// meaning but we're preserving that logic for backwards compatibility.\n\t\t\t\t\t\t\t// This will be removed completely in 4.0. See gh-4904.\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\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\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew jQuery#find here for performance reasons:\n\t\t\t// https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar rcustomProp = /^--/;\n\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (trac-8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"box-sizing:content-box;border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is `display: block`\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\t\tisCustomProp = rcustomProp.test( name ),\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, trac-12537)\n\t// .css('--customProperty) (gh-3144)\n\tif ( computed ) {\n\n\t\t// Support: IE <=9 - 11+\n\t\t// IE only supports `\"float\"` in `getPropertyValue`; in computed styles\n\t\t// it's only available as `\"cssFloat\"`. We no longer modify properties\n\t\t// sent to `.css()` apart from camelCasing, so we need to check both.\n\t\t// Normally, this would create difference in behavior: if\n\t\t// `getPropertyValue` returns an empty string, the value returned\n\t\t// by `.css()` would be `undefined`. This is usually the case for\n\t\t// disconnected elements. However, in IE even disconnected elements\n\t\t// with no styles return `\"none\"` for `getPropertyValue( \"float\" )`\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( isCustomProp && ret ) {\n\n\t\t\t// Support: Firefox 105+, Chrome <=105+\n\t\t\t// Spec requires trimming whitespace for custom properties (gh-4926).\n\t\t\t// Firefox only trims leading whitespace. Chrome just collapses\n\t\t\t// both leading & trailing whitespace to a single space.\n\t\t\t//\n\t\t\t// Fall back to `undefined` if empty string returned.\n\t\t\t// This collapses a missing definition with property defined\n\t\t\t// and set to an empty string but there's no standard API\n\t\t\t// allowing us to differentiate them without a performance penalty\n\t\t\t// and returning `undefined` aligns with older jQuery.\n\t\t\t//\n\t\t\t// rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED\n\t\t\t// as whitespace while CSS does not, but this is not a problem\n\t\t\t// because CSS preprocessing replaces them with U+000A LINE FEED\n\t\t\t// (which *is* CSS whitespace)\n\t\t\t// https://www.w3.org/TR/css-syntax-3/#input-preprocessing\n\t\t\tret = ret.replace( rtrimCSS, \"$1\" ) || undefined;\n\t\t}\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0,\n\t\tmarginDelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\t// Count margin delta separately to only add it after scroll gutter adjustment.\n\t\t// This is needed to make negative margins work with `outerHeight( true )` (gh-3982).\n\t\tif ( box === \"margin\" ) {\n\t\t\tmarginDelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta + marginDelta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\tanimationIterationCount: true,\n\t\taspectRatio: true,\n\t\tborderImageSlice: true,\n\t\tcolumnCount: true,\n\t\tflexGrow: true,\n\t\tflexShrink: true,\n\t\tfontWeight: true,\n\t\tgridArea: true,\n\t\tgridColumn: true,\n\t\tgridColumnEnd: true,\n\t\tgridColumnStart: true,\n\t\tgridRow: true,\n\t\tgridRowEnd: true,\n\t\tgridRowStart: true,\n\t\tlineHeight: true,\n\t\topacity: true,\n\t\torder: true,\n\t\torphans: true,\n\t\tscale: true,\n\t\twidows: true,\n\t\tzIndex: true,\n\t\tzoom: true,\n\n\t\t// SVG-related\n\t\tfillOpacity: true,\n\t\tfloodOpacity: true,\n\t\tstopOpacity: true,\n\t\tstrokeMiterlimit: true,\n\t\tstrokeOpacity: true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (trac-7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug trac-9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (trac-7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// Use proper attribute retrieval (trac-12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + className + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += className + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + className + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + className + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar classNames, className, i, self,\n\t\t\ttype = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\treturn this.each( function() {\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\tself = jQuery( this );\n\n\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (trac-14686, trac-14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (trac-2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (trac-9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (trac-6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// trac-7653, trac-8125, trac-8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes trac-9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\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\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (trac-10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket trac-12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// trac-9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (trac-11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// trac-1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see trac-8605, trac-14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// trac-14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"