{"version":3,"file":"simple.js","mappings":"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","sources":["webpack://ppb-site/./node_modules/@rails/ujs/lib/assets/compiled/rails-ujs.js","webpack://ppb-site/./node_modules/bootstrap/dist/js/bootstrap.js","webpack://ppb-site/./node_modules/jquery/dist/jquery.js","webpack://ppb-site/./node_modules/popper.js/dist/esm/popper.js","webpack://ppb-site/webpack/bootstrap","webpack://ppb-site/webpack/runtime/compat get default export","webpack://ppb-site/webpack/runtime/define property getters","webpack://ppb-site/webpack/runtime/global","webpack://ppb-site/webpack/runtime/hasOwnProperty shorthand","webpack://ppb-site/webpack/runtime/make namespace object","webpack://ppb-site/./app/javascript/packs/simple.js"],"sourcesContent":["/*\nUnobtrusive JavaScript\nhttps://github.com/rails/rails/blob/main/actionview/app/assets/javascripts\nReleased under the MIT license\n */;\n\n(function() {\n  var context = this;\n\n  (function() {\n    (function() {\n      this.Rails = {\n        linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]',\n        buttonClickSelector: {\n          selector: 'button[data-remote]:not([form]), button[data-confirm]:not([form])',\n          exclude: 'form button'\n        },\n        inputChangeSelector: 'select[data-remote], input[data-remote], textarea[data-remote]',\n        formSubmitSelector: 'form:not([data-turbo=true])',\n        formInputClickSelector: 'form:not([data-turbo=true]) input[type=submit], form:not([data-turbo=true]) input[type=image], form:not([data-turbo=true]) button[type=submit], form:not([data-turbo=true]) button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])',\n        formDisableSelector: 'input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled',\n        formEnableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled',\n        fileInputSelector: 'input[name][type=file]:not([disabled])',\n        linkDisableSelector: 'a[data-disable-with], a[data-disable]',\n        buttonDisableSelector: 'button[data-remote][data-disable-with], button[data-remote][data-disable]'\n      };\n\n    }).call(this);\n  }).call(context);\n\n  var Rails = context.Rails;\n\n  (function() {\n    (function() {\n      var nonce;\n\n      nonce = null;\n\n      Rails.loadCSPNonce = function() {\n        var ref;\n        return nonce = (ref = document.querySelector(\"meta[name=csp-nonce]\")) != null ? ref.content : void 0;\n      };\n\n      Rails.cspNonce = function() {\n        return nonce != null ? nonce : Rails.loadCSPNonce();\n      };\n\n    }).call(this);\n    (function() {\n      var expando, m;\n\n      m = Element.prototype.matches || Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector;\n\n      Rails.matches = function(element, selector) {\n        if (selector.exclude != null) {\n          return m.call(element, selector.selector) && !m.call(element, selector.exclude);\n        } else {\n          return m.call(element, selector);\n        }\n      };\n\n      expando = '_ujsData';\n\n      Rails.getData = function(element, key) {\n        var ref;\n        return (ref = element[expando]) != null ? ref[key] : void 0;\n      };\n\n      Rails.setData = function(element, key, value) {\n        if (element[expando] == null) {\n          element[expando] = {};\n        }\n        return element[expando][key] = value;\n      };\n\n      Rails.$ = function(selector) {\n        return Array.prototype.slice.call(document.querySelectorAll(selector));\n      };\n\n    }).call(this);\n    (function() {\n      var $, csrfParam, csrfToken;\n\n      $ = Rails.$;\n\n      csrfToken = Rails.csrfToken = function() {\n        var meta;\n        meta = document.querySelector('meta[name=csrf-token]');\n        return meta && meta.content;\n      };\n\n      csrfParam = Rails.csrfParam = function() {\n        var meta;\n        meta = document.querySelector('meta[name=csrf-param]');\n        return meta && meta.content;\n      };\n\n      Rails.CSRFProtection = function(xhr) {\n        var token;\n        token = csrfToken();\n        if (token != null) {\n          return xhr.setRequestHeader('X-CSRF-Token', token);\n        }\n      };\n\n      Rails.refreshCSRFTokens = function() {\n        var param, token;\n        token = csrfToken();\n        param = csrfParam();\n        if ((token != null) && (param != null)) {\n          return $('form input[name=\"' + param + '\"]').forEach(function(input) {\n            return input.value = token;\n          });\n        }\n      };\n\n    }).call(this);\n    (function() {\n      var CustomEvent, fire, matches, preventDefault;\n\n      matches = Rails.matches;\n\n      CustomEvent = window.CustomEvent;\n\n      if (typeof CustomEvent !== 'function') {\n        CustomEvent = function(event, params) {\n          var evt;\n          evt = document.createEvent('CustomEvent');\n          evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n          return evt;\n        };\n        CustomEvent.prototype = window.Event.prototype;\n        preventDefault = CustomEvent.prototype.preventDefault;\n        CustomEvent.prototype.preventDefault = function() {\n          var result;\n          result = preventDefault.call(this);\n          if (this.cancelable && !this.defaultPrevented) {\n            Object.defineProperty(this, 'defaultPrevented', {\n              get: function() {\n                return true;\n              }\n            });\n          }\n          return result;\n        };\n      }\n\n      fire = Rails.fire = function(obj, name, data) {\n        var event;\n        event = new CustomEvent(name, {\n          bubbles: true,\n          cancelable: true,\n          detail: data\n        });\n        obj.dispatchEvent(event);\n        return !event.defaultPrevented;\n      };\n\n      Rails.stopEverything = function(e) {\n        fire(e.target, 'ujs:everythingStopped');\n        e.preventDefault();\n        e.stopPropagation();\n        return e.stopImmediatePropagation();\n      };\n\n      Rails.delegate = function(element, selector, eventType, handler) {\n        return element.addEventListener(eventType, function(e) {\n          var target;\n          target = e.target;\n          while (!(!(target instanceof Element) || matches(target, selector))) {\n            target = target.parentNode;\n          }\n          if (target instanceof Element && handler.call(target, e) === false) {\n            e.preventDefault();\n            return e.stopPropagation();\n          }\n        });\n      };\n\n    }).call(this);\n    (function() {\n      var AcceptHeaders, CSRFProtection, createXHR, cspNonce, fire, prepareOptions, processResponse;\n\n      cspNonce = Rails.cspNonce, CSRFProtection = Rails.CSRFProtection, fire = Rails.fire;\n\n      AcceptHeaders = {\n        '*': '*/*',\n        text: 'text/plain',\n        html: 'text/html',\n        xml: 'application/xml, text/xml',\n        json: 'application/json, text/javascript',\n        script: 'text/javascript, application/javascript, application/ecmascript, application/x-ecmascript'\n      };\n\n      Rails.ajax = function(options) {\n        var xhr;\n        options = prepareOptions(options);\n        xhr = createXHR(options, function() {\n          var ref, response;\n          response = processResponse((ref = xhr.response) != null ? ref : xhr.responseText, xhr.getResponseHeader('Content-Type'));\n          if (Math.floor(xhr.status / 100) === 2) {\n            if (typeof options.success === \"function\") {\n              options.success(response, xhr.statusText, xhr);\n            }\n          } else {\n            if (typeof options.error === \"function\") {\n              options.error(response, xhr.statusText, xhr);\n            }\n          }\n          return typeof options.complete === \"function\" ? options.complete(xhr, xhr.statusText) : void 0;\n        });\n        if ((options.beforeSend != null) && !options.beforeSend(xhr, options)) {\n          return false;\n        }\n        if (xhr.readyState === XMLHttpRequest.OPENED) {\n          return xhr.send(options.data);\n        }\n      };\n\n      prepareOptions = function(options) {\n        options.url = options.url || location.href;\n        options.type = options.type.toUpperCase();\n        if (options.type === 'GET' && options.data) {\n          if (options.url.indexOf('?') < 0) {\n            options.url += '?' + options.data;\n          } else {\n            options.url += '&' + options.data;\n          }\n        }\n        if (AcceptHeaders[options.dataType] == null) {\n          options.dataType = '*';\n        }\n        options.accept = AcceptHeaders[options.dataType];\n        if (options.dataType !== '*') {\n          options.accept += ', */*; q=0.01';\n        }\n        return options;\n      };\n\n      createXHR = function(options, done) {\n        var xhr;\n        xhr = new XMLHttpRequest();\n        xhr.open(options.type, options.url, true);\n        xhr.setRequestHeader('Accept', options.accept);\n        if (typeof options.data === 'string') {\n          xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');\n        }\n        if (!options.crossDomain) {\n          xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n          CSRFProtection(xhr);\n        }\n        xhr.withCredentials = !!options.withCredentials;\n        xhr.onreadystatechange = function() {\n          if (xhr.readyState === XMLHttpRequest.DONE) {\n            return done(xhr);\n          }\n        };\n        return xhr;\n      };\n\n      processResponse = function(response, type) {\n        var parser, script;\n        if (typeof response === 'string' && typeof type === 'string') {\n          if (type.match(/\\bjson\\b/)) {\n            try {\n              response = JSON.parse(response);\n            } catch (error) {}\n          } else if (type.match(/\\b(?:java|ecma)script\\b/)) {\n            script = document.createElement('script');\n            script.setAttribute('nonce', cspNonce());\n            script.text = response;\n            document.head.appendChild(script).parentNode.removeChild(script);\n          } else if (type.match(/\\b(xml|html|svg)\\b/)) {\n            parser = new DOMParser();\n            type = type.replace(/;.+/, '');\n            try {\n              response = parser.parseFromString(response, type);\n            } catch (error) {}\n          }\n        }\n        return response;\n      };\n\n      Rails.href = function(element) {\n        return element.href;\n      };\n\n      Rails.isCrossDomain = function(url) {\n        var e, originAnchor, urlAnchor;\n        originAnchor = document.createElement('a');\n        originAnchor.href = location.href;\n        urlAnchor = document.createElement('a');\n        try {\n          urlAnchor.href = url;\n          return !(((!urlAnchor.protocol || urlAnchor.protocol === ':') && !urlAnchor.host) || (originAnchor.protocol + '//' + originAnchor.host === urlAnchor.protocol + '//' + urlAnchor.host));\n        } catch (error) {\n          e = error;\n          return true;\n        }\n      };\n\n    }).call(this);\n    (function() {\n      var matches, toArray;\n\n      matches = Rails.matches;\n\n      toArray = function(e) {\n        return Array.prototype.slice.call(e);\n      };\n\n      Rails.serializeElement = function(element, additionalParam) {\n        var inputs, params;\n        inputs = [element];\n        if (matches(element, 'form')) {\n          inputs = toArray(element.elements);\n        }\n        params = [];\n        inputs.forEach(function(input) {\n          if (!input.name || input.disabled) {\n            return;\n          }\n          if (matches(input, 'fieldset[disabled] *')) {\n            return;\n          }\n          if (matches(input, 'select')) {\n            return toArray(input.options).forEach(function(option) {\n              if (option.selected) {\n                return params.push({\n                  name: input.name,\n                  value: option.value\n                });\n              }\n            });\n          } else if (input.checked || ['radio', 'checkbox', 'submit'].indexOf(input.type) === -1) {\n            return params.push({\n              name: input.name,\n              value: input.value\n            });\n          }\n        });\n        if (additionalParam) {\n          params.push(additionalParam);\n        }\n        return params.map(function(param) {\n          if (param.name != null) {\n            return (encodeURIComponent(param.name)) + \"=\" + (encodeURIComponent(param.value));\n          } else {\n            return param;\n          }\n        }).join('&');\n      };\n\n      Rails.formElements = function(form, selector) {\n        if (matches(form, 'form')) {\n          return toArray(form.elements).filter(function(el) {\n            return matches(el, selector);\n          });\n        } else {\n          return toArray(form.querySelectorAll(selector));\n        }\n      };\n\n    }).call(this);\n    (function() {\n      var allowAction, fire, stopEverything;\n\n      fire = Rails.fire, stopEverything = Rails.stopEverything;\n\n      Rails.handleConfirm = function(e) {\n        if (!allowAction(this)) {\n          return stopEverything(e);\n        }\n      };\n\n      Rails.confirm = function(message, element) {\n        return confirm(message);\n      };\n\n      allowAction = function(element) {\n        var answer, callback, message;\n        message = element.getAttribute('data-confirm');\n        if (!message) {\n          return true;\n        }\n        answer = false;\n        if (fire(element, 'confirm')) {\n          try {\n            answer = Rails.confirm(message, element);\n          } catch (error) {}\n          callback = fire(element, 'confirm:complete', [answer]);\n        }\n        return answer && callback;\n      };\n\n    }).call(this);\n    (function() {\n      var disableFormElement, disableFormElements, disableLinkElement, enableFormElement, enableFormElements, enableLinkElement, formElements, getData, isXhrRedirect, matches, setData, stopEverything;\n\n      matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, stopEverything = Rails.stopEverything, formElements = Rails.formElements;\n\n      Rails.handleDisabledElement = function(e) {\n        var element;\n        element = this;\n        if (element.disabled) {\n          return stopEverything(e);\n        }\n      };\n\n      Rails.enableElement = function(e) {\n        var element;\n        if (e instanceof Event) {\n          if (isXhrRedirect(e)) {\n            return;\n          }\n          element = e.target;\n        } else {\n          element = e;\n        }\n        if (matches(element, Rails.linkDisableSelector)) {\n          return enableLinkElement(element);\n        } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formEnableSelector)) {\n          return enableFormElement(element);\n        } else if (matches(element, Rails.formSubmitSelector)) {\n          return enableFormElements(element);\n        }\n      };\n\n      Rails.disableElement = function(e) {\n        var element;\n        element = e instanceof Event ? e.target : e;\n        if (matches(element, Rails.linkDisableSelector)) {\n          return disableLinkElement(element);\n        } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formDisableSelector)) {\n          return disableFormElement(element);\n        } else if (matches(element, Rails.formSubmitSelector)) {\n          return disableFormElements(element);\n        }\n      };\n\n      disableLinkElement = function(element) {\n        var replacement;\n        if (getData(element, 'ujs:disabled')) {\n          return;\n        }\n        replacement = element.getAttribute('data-disable-with');\n        if (replacement != null) {\n          setData(element, 'ujs:enable-with', element.innerHTML);\n          element.innerHTML = replacement;\n        }\n        element.addEventListener('click', stopEverything);\n        return setData(element, 'ujs:disabled', true);\n      };\n\n      enableLinkElement = function(element) {\n        var originalText;\n        originalText = getData(element, 'ujs:enable-with');\n        if (originalText != null) {\n          element.innerHTML = originalText;\n          setData(element, 'ujs:enable-with', null);\n        }\n        element.removeEventListener('click', stopEverything);\n        return setData(element, 'ujs:disabled', null);\n      };\n\n      disableFormElements = function(form) {\n        return formElements(form, Rails.formDisableSelector).forEach(disableFormElement);\n      };\n\n      disableFormElement = function(element) {\n        var replacement;\n        if (getData(element, 'ujs:disabled')) {\n          return;\n        }\n        replacement = element.getAttribute('data-disable-with');\n        if (replacement != null) {\n          if (matches(element, 'button')) {\n            setData(element, 'ujs:enable-with', element.innerHTML);\n            element.innerHTML = replacement;\n          } else {\n            setData(element, 'ujs:enable-with', element.value);\n            element.value = replacement;\n          }\n        }\n        element.disabled = true;\n        return setData(element, 'ujs:disabled', true);\n      };\n\n      enableFormElements = function(form) {\n        return formElements(form, Rails.formEnableSelector).forEach(enableFormElement);\n      };\n\n      enableFormElement = function(element) {\n        var originalText;\n        originalText = getData(element, 'ujs:enable-with');\n        if (originalText != null) {\n          if (matches(element, 'button')) {\n            element.innerHTML = originalText;\n          } else {\n            element.value = originalText;\n          }\n          setData(element, 'ujs:enable-with', null);\n        }\n        element.disabled = false;\n        return setData(element, 'ujs:disabled', null);\n      };\n\n      isXhrRedirect = function(event) {\n        var ref, xhr;\n        xhr = (ref = event.detail) != null ? ref[0] : void 0;\n        return (xhr != null ? xhr.getResponseHeader(\"X-Xhr-Redirect\") : void 0) != null;\n      };\n\n    }).call(this);\n    (function() {\n      var stopEverything;\n\n      stopEverything = Rails.stopEverything;\n\n      Rails.handleMethod = function(e) {\n        var csrfParam, csrfToken, form, formContent, href, link, method;\n        link = this;\n        method = link.getAttribute('data-method');\n        if (!method) {\n          return;\n        }\n        href = Rails.href(link);\n        csrfToken = Rails.csrfToken();\n        csrfParam = Rails.csrfParam();\n        form = document.createElement('form');\n        formContent = \"<input name='_method' value='\" + method + \"' type='hidden' />\";\n        if ((csrfParam != null) && (csrfToken != null) && !Rails.isCrossDomain(href)) {\n          formContent += \"<input name='\" + csrfParam + \"' value='\" + csrfToken + \"' type='hidden' />\";\n        }\n        formContent += '<input type=\"submit\" />';\n        form.method = 'post';\n        form.action = href;\n        form.target = link.target;\n        form.innerHTML = formContent;\n        form.style.display = 'none';\n        document.body.appendChild(form);\n        form.querySelector('[type=\"submit\"]').click();\n        return stopEverything(e);\n      };\n\n    }).call(this);\n    (function() {\n      var ajax, fire, getData, isCrossDomain, isRemote, matches, serializeElement, setData, stopEverything,\n        slice = [].slice;\n\n      matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, fire = Rails.fire, stopEverything = Rails.stopEverything, ajax = Rails.ajax, isCrossDomain = Rails.isCrossDomain, serializeElement = Rails.serializeElement;\n\n      isRemote = function(element) {\n        var value;\n        value = element.getAttribute('data-remote');\n        return (value != null) && value !== 'false';\n      };\n\n      Rails.handleRemote = function(e) {\n        var button, data, dataType, element, method, url, withCredentials;\n        element = this;\n        if (!isRemote(element)) {\n          return true;\n        }\n        if (!fire(element, 'ajax:before')) {\n          fire(element, 'ajax:stopped');\n          return false;\n        }\n        withCredentials = element.getAttribute('data-with-credentials');\n        dataType = element.getAttribute('data-type') || 'script';\n        if (matches(element, Rails.formSubmitSelector)) {\n          button = getData(element, 'ujs:submit-button');\n          method = getData(element, 'ujs:submit-button-formmethod') || element.method;\n          url = getData(element, 'ujs:submit-button-formaction') || element.getAttribute('action') || location.href;\n          if (method.toUpperCase() === 'GET') {\n            url = url.replace(/\\?.*$/, '');\n          }\n          if (element.enctype === 'multipart/form-data') {\n            data = new FormData(element);\n            if (button != null) {\n              data.append(button.name, button.value);\n            }\n          } else {\n            data = serializeElement(element, button);\n          }\n          setData(element, 'ujs:submit-button', null);\n          setData(element, 'ujs:submit-button-formmethod', null);\n          setData(element, 'ujs:submit-button-formaction', null);\n        } else if (matches(element, Rails.buttonClickSelector) || matches(element, Rails.inputChangeSelector)) {\n          method = element.getAttribute('data-method');\n          url = element.getAttribute('data-url');\n          data = serializeElement(element, element.getAttribute('data-params'));\n        } else {\n          method = element.getAttribute('data-method');\n          url = Rails.href(element);\n          data = element.getAttribute('data-params');\n        }\n        ajax({\n          type: method || 'GET',\n          url: url,\n          data: data,\n          dataType: dataType,\n          beforeSend: function(xhr, options) {\n            if (fire(element, 'ajax:beforeSend', [xhr, options])) {\n              return fire(element, 'ajax:send', [xhr]);\n            } else {\n              fire(element, 'ajax:stopped');\n              return false;\n            }\n          },\n          success: function() {\n            var args;\n            args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n            return fire(element, 'ajax:success', args);\n          },\n          error: function() {\n            var args;\n            args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n            return fire(element, 'ajax:error', args);\n          },\n          complete: function() {\n            var args;\n            args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n            return fire(element, 'ajax:complete', args);\n          },\n          crossDomain: isCrossDomain(url),\n          withCredentials: (withCredentials != null) && withCredentials !== 'false'\n        });\n        return stopEverything(e);\n      };\n\n      Rails.formSubmitButtonClick = function(e) {\n        var button, form;\n        button = this;\n        form = button.form;\n        if (!form) {\n          return;\n        }\n        if (button.name) {\n          setData(form, 'ujs:submit-button', {\n            name: button.name,\n            value: button.value\n          });\n        }\n        setData(form, 'ujs:formnovalidate-button', button.formNoValidate);\n        setData(form, 'ujs:submit-button-formaction', button.getAttribute('formaction'));\n        return setData(form, 'ujs:submit-button-formmethod', button.getAttribute('formmethod'));\n      };\n\n      Rails.preventInsignificantClick = function(e) {\n        var data, insignificantMetaClick, link, metaClick, method, nonPrimaryMouseClick;\n        link = this;\n        method = (link.getAttribute('data-method') || 'GET').toUpperCase();\n        data = link.getAttribute('data-params');\n        metaClick = e.metaKey || e.ctrlKey;\n        insignificantMetaClick = metaClick && method === 'GET' && !data;\n        nonPrimaryMouseClick = (e.button != null) && e.button !== 0;\n        if (nonPrimaryMouseClick || insignificantMetaClick) {\n          return e.stopImmediatePropagation();\n        }\n      };\n\n    }).call(this);\n    (function() {\n      var $, CSRFProtection, delegate, disableElement, enableElement, fire, formSubmitButtonClick, getData, handleConfirm, handleDisabledElement, handleMethod, handleRemote, loadCSPNonce, preventInsignificantClick, refreshCSRFTokens;\n\n      fire = Rails.fire, delegate = Rails.delegate, getData = Rails.getData, $ = Rails.$, refreshCSRFTokens = Rails.refreshCSRFTokens, CSRFProtection = Rails.CSRFProtection, loadCSPNonce = Rails.loadCSPNonce, enableElement = Rails.enableElement, disableElement = Rails.disableElement, handleDisabledElement = Rails.handleDisabledElement, handleConfirm = Rails.handleConfirm, preventInsignificantClick = Rails.preventInsignificantClick, handleRemote = Rails.handleRemote, formSubmitButtonClick = Rails.formSubmitButtonClick, handleMethod = Rails.handleMethod;\n\n      if ((typeof jQuery !== \"undefined\" && jQuery !== null) && (jQuery.ajax != null)) {\n        if (jQuery.rails) {\n          throw new Error('If you load both jquery_ujs and rails-ujs, use rails-ujs only.');\n        }\n        jQuery.rails = Rails;\n        jQuery.ajaxPrefilter(function(options, originalOptions, xhr) {\n          if (!options.crossDomain) {\n            return CSRFProtection(xhr);\n          }\n        });\n      }\n\n      Rails.start = function() {\n        if (window._rails_loaded) {\n          throw new Error('rails-ujs has already been loaded!');\n        }\n        window.addEventListener('pageshow', function() {\n          $(Rails.formEnableSelector).forEach(function(el) {\n            if (getData(el, 'ujs:disabled')) {\n              return enableElement(el);\n            }\n          });\n          return $(Rails.linkDisableSelector).forEach(function(el) {\n            if (getData(el, 'ujs:disabled')) {\n              return enableElement(el);\n            }\n          });\n        });\n        delegate(document, Rails.linkDisableSelector, 'ajax:complete', enableElement);\n        delegate(document, Rails.linkDisableSelector, 'ajax:stopped', enableElement);\n        delegate(document, Rails.buttonDisableSelector, 'ajax:complete', enableElement);\n        delegate(document, Rails.buttonDisableSelector, 'ajax:stopped', enableElement);\n        delegate(document, Rails.linkClickSelector, 'click', preventInsignificantClick);\n        delegate(document, Rails.linkClickSelector, 'click', handleDisabledElement);\n        delegate(document, Rails.linkClickSelector, 'click', handleConfirm);\n        delegate(document, Rails.linkClickSelector, 'click', disableElement);\n        delegate(document, Rails.linkClickSelector, 'click', handleRemote);\n        delegate(document, Rails.linkClickSelector, 'click', handleMethod);\n        delegate(document, Rails.buttonClickSelector, 'click', preventInsignificantClick);\n        delegate(document, Rails.buttonClickSelector, 'click', handleDisabledElement);\n        delegate(document, Rails.buttonClickSelector, 'click', handleConfirm);\n        delegate(document, Rails.buttonClickSelector, 'click', disableElement);\n        delegate(document, Rails.buttonClickSelector, 'click', handleRemote);\n        delegate(document, Rails.inputChangeSelector, 'change', handleDisabledElement);\n        delegate(document, Rails.inputChangeSelector, 'change', handleConfirm);\n        delegate(document, Rails.inputChangeSelector, 'change', handleRemote);\n        delegate(document, Rails.formSubmitSelector, 'submit', handleDisabledElement);\n        delegate(document, Rails.formSubmitSelector, 'submit', handleConfirm);\n        delegate(document, Rails.formSubmitSelector, 'submit', handleRemote);\n        delegate(document, Rails.formSubmitSelector, 'submit', function(e) {\n          return setTimeout((function() {\n            return disableElement(e);\n          }), 13);\n        });\n        delegate(document, Rails.formSubmitSelector, 'ajax:send', disableElement);\n        delegate(document, Rails.formSubmitSelector, 'ajax:complete', enableElement);\n        delegate(document, Rails.formInputClickSelector, 'click', preventInsignificantClick);\n        delegate(document, Rails.formInputClickSelector, 'click', handleDisabledElement);\n        delegate(document, Rails.formInputClickSelector, 'click', handleConfirm);\n        delegate(document, Rails.formInputClickSelector, 'click', formSubmitButtonClick);\n        document.addEventListener('DOMContentLoaded', refreshCSRFTokens);\n        document.addEventListener('DOMContentLoaded', loadCSPNonce);\n        return window._rails_loaded = true;\n      };\n\n      if (window.Rails === Rails && fire(document, 'rails:attachBindings')) {\n        Rails.start();\n      }\n\n    }).call(this);\n  }).call(this);\n\n  if (typeof module === \"object\" && module.exports) {\n    module.exports = Rails;\n  } else if (typeof define === \"function\" && define.amd) {\n    define(Rails);\n  }\n}).call(this);\n","/*!\n  * Bootstrap v4.6.2 (https://getbootstrap.com/)\n  * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('jquery'), require('popper.js')) :\n  typeof define === 'function' && define.amd ? define(['exports', 'jquery', 'popper.js'], factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.bootstrap = {}, global.jQuery, global.Popper));\n})(this, (function (exports, $, Popper) { 'use strict';\n\n  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\n  var $__default = /*#__PURE__*/_interopDefaultLegacy($);\n  var Popper__default = /*#__PURE__*/_interopDefaultLegacy(Popper);\n\n  function _defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  function _createClass(Constructor, protoProps, staticProps) {\n    if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) _defineProperties(Constructor, staticProps);\n    Object.defineProperty(Constructor, \"prototype\", {\n      writable: false\n    });\n    return Constructor;\n  }\n\n  function _extends() {\n    _extends = Object.assign ? Object.assign.bind() : function (target) {\n      for (var i = 1; i < arguments.length; i++) {\n        var source = arguments[i];\n\n        for (var key in source) {\n          if (Object.prototype.hasOwnProperty.call(source, key)) {\n            target[key] = source[key];\n          }\n        }\n      }\n\n      return target;\n    };\n    return _extends.apply(this, arguments);\n  }\n\n  function _inheritsLoose(subClass, superClass) {\n    subClass.prototype = Object.create(superClass.prototype);\n    subClass.prototype.constructor = subClass;\n\n    _setPrototypeOf(subClass, superClass);\n  }\n\n  function _setPrototypeOf(o, p) {\n    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n      o.__proto__ = p;\n      return o;\n    };\n    return _setPrototypeOf(o, p);\n  }\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v4.6.2): util.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  /**\n   * Private TransitionEnd Helpers\n   */\n\n  var TRANSITION_END = 'transitionend';\n  var MAX_UID = 1000000;\n  var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp)\n\n  function toType(obj) {\n    if (obj === null || typeof obj === 'undefined') {\n      return \"\" + obj;\n    }\n\n    return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase();\n  }\n\n  function getSpecialTransitionEndEvent() {\n    return {\n      bindType: TRANSITION_END,\n      delegateType: TRANSITION_END,\n      handle: function handle(event) {\n        if ($__default[\"default\"](event.target).is(this)) {\n          return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params\n        }\n\n        return undefined;\n      }\n    };\n  }\n\n  function transitionEndEmulator(duration) {\n    var _this = this;\n\n    var called = false;\n    $__default[\"default\"](this).one(Util.TRANSITION_END, function () {\n      called = true;\n    });\n    setTimeout(function () {\n      if (!called) {\n        Util.triggerTransitionEnd(_this);\n      }\n    }, duration);\n    return this;\n  }\n\n  function setTransitionEndSupport() {\n    $__default[\"default\"].fn.emulateTransitionEnd = transitionEndEmulator;\n    $__default[\"default\"].event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();\n  }\n  /**\n   * Public Util API\n   */\n\n\n  var Util = {\n    TRANSITION_END: 'bsTransitionEnd',\n    getUID: function getUID(prefix) {\n      do {\n        // eslint-disable-next-line no-bitwise\n        prefix += ~~(Math.random() * MAX_UID); // \"~~\" acts like a faster Math.floor() here\n      } while (document.getElementById(prefix));\n\n      return prefix;\n    },\n    getSelectorFromElement: function getSelectorFromElement(element) {\n      var selector = element.getAttribute('data-target');\n\n      if (!selector || selector === '#') {\n        var hrefAttr = element.getAttribute('href');\n        selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : '';\n      }\n\n      try {\n        return document.querySelector(selector) ? selector : null;\n      } catch (_) {\n        return null;\n      }\n    },\n    getTransitionDurationFromElement: function getTransitionDurationFromElement(element) {\n      if (!element) {\n        return 0;\n      } // Get transition-duration of the element\n\n\n      var transitionDuration = $__default[\"default\"](element).css('transition-duration');\n      var transitionDelay = $__default[\"default\"](element).css('transition-delay');\n      var floatTransitionDuration = parseFloat(transitionDuration);\n      var floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found\n\n      if (!floatTransitionDuration && !floatTransitionDelay) {\n        return 0;\n      } // If multiple durations are defined, take the first\n\n\n      transitionDuration = transitionDuration.split(',')[0];\n      transitionDelay = transitionDelay.split(',')[0];\n      return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n    },\n    reflow: function reflow(element) {\n      return element.offsetHeight;\n    },\n    triggerTransitionEnd: function triggerTransitionEnd(element) {\n      $__default[\"default\"](element).trigger(TRANSITION_END);\n    },\n    supportsTransitionEnd: function supportsTransitionEnd() {\n      return Boolean(TRANSITION_END);\n    },\n    isElement: function isElement(obj) {\n      return (obj[0] || obj).nodeType;\n    },\n    typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {\n      for (var property in configTypes) {\n        if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n          var expectedTypes = configTypes[property];\n          var value = config[property];\n          var valueType = value && Util.isElement(value) ? 'element' : toType(value);\n\n          if (!new RegExp(expectedTypes).test(valueType)) {\n            throw new Error(componentName.toUpperCase() + \": \" + (\"Option \\\"\" + property + \"\\\" provided type \\\"\" + valueType + \"\\\" \") + (\"but expected type \\\"\" + expectedTypes + \"\\\".\"));\n          }\n        }\n      }\n    },\n    findShadowRoot: function findShadowRoot(element) {\n      if (!document.documentElement.attachShadow) {\n        return null;\n      } // Can find the shadow root otherwise it'll return the document\n\n\n      if (typeof element.getRootNode === 'function') {\n        var root = element.getRootNode();\n        return root instanceof ShadowRoot ? root : null;\n      }\n\n      if (element instanceof ShadowRoot) {\n        return element;\n      } // when we don't find a shadow root\n\n\n      if (!element.parentNode) {\n        return null;\n      }\n\n      return Util.findShadowRoot(element.parentNode);\n    },\n    jQueryDetection: function jQueryDetection() {\n      if (typeof $__default[\"default\"] === 'undefined') {\n        throw new TypeError('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.');\n      }\n\n      var version = $__default[\"default\"].fn.jquery.split(' ')[0].split('.');\n      var minMajor = 1;\n      var ltMajor = 2;\n      var minMinor = 9;\n      var minPatch = 1;\n      var maxMajor = 4;\n\n      if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {\n        throw new Error('Bootstrap\\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0');\n      }\n    }\n  };\n  Util.jQueryDetection();\n  setTransitionEndSupport();\n\n  /**\n   * Constants\n   */\n\n  var NAME$a = 'alert';\n  var VERSION$a = '4.6.2';\n  var DATA_KEY$a = 'bs.alert';\n  var EVENT_KEY$a = \".\" + DATA_KEY$a;\n  var DATA_API_KEY$7 = '.data-api';\n  var JQUERY_NO_CONFLICT$a = $__default[\"default\"].fn[NAME$a];\n  var CLASS_NAME_ALERT = 'alert';\n  var CLASS_NAME_FADE$5 = 'fade';\n  var CLASS_NAME_SHOW$7 = 'show';\n  var EVENT_CLOSE = \"close\" + EVENT_KEY$a;\n  var EVENT_CLOSED = \"closed\" + EVENT_KEY$a;\n  var EVENT_CLICK_DATA_API$6 = \"click\" + EVENT_KEY$a + DATA_API_KEY$7;\n  var SELECTOR_DISMISS = '[data-dismiss=\"alert\"]';\n  /**\n   * Class definition\n   */\n\n  var Alert = /*#__PURE__*/function () {\n    function Alert(element) {\n      this._element = element;\n    } // Getters\n\n\n    var _proto = Alert.prototype;\n\n    // Public\n    _proto.close = function close(element) {\n      var rootElement = this._element;\n\n      if (element) {\n        rootElement = this._getRootElement(element);\n      }\n\n      var customEvent = this._triggerCloseEvent(rootElement);\n\n      if (customEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      this._removeElement(rootElement);\n    };\n\n    _proto.dispose = function dispose() {\n      $__default[\"default\"].removeData(this._element, DATA_KEY$a);\n      this._element = null;\n    } // Private\n    ;\n\n    _proto._getRootElement = function _getRootElement(element) {\n      var selector = Util.getSelectorFromElement(element);\n      var parent = false;\n\n      if (selector) {\n        parent = document.querySelector(selector);\n      }\n\n      if (!parent) {\n        parent = $__default[\"default\"](element).closest(\".\" + CLASS_NAME_ALERT)[0];\n      }\n\n      return parent;\n    };\n\n    _proto._triggerCloseEvent = function _triggerCloseEvent(element) {\n      var closeEvent = $__default[\"default\"].Event(EVENT_CLOSE);\n      $__default[\"default\"](element).trigger(closeEvent);\n      return closeEvent;\n    };\n\n    _proto._removeElement = function _removeElement(element) {\n      var _this = this;\n\n      $__default[\"default\"](element).removeClass(CLASS_NAME_SHOW$7);\n\n      if (!$__default[\"default\"](element).hasClass(CLASS_NAME_FADE$5)) {\n        this._destroyElement(element);\n\n        return;\n      }\n\n      var transitionDuration = Util.getTransitionDurationFromElement(element);\n      $__default[\"default\"](element).one(Util.TRANSITION_END, function (event) {\n        return _this._destroyElement(element, event);\n      }).emulateTransitionEnd(transitionDuration);\n    };\n\n    _proto._destroyElement = function _destroyElement(element) {\n      $__default[\"default\"](element).detach().trigger(EVENT_CLOSED).remove();\n    } // Static\n    ;\n\n    Alert._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var $element = $__default[\"default\"](this);\n        var data = $element.data(DATA_KEY$a);\n\n        if (!data) {\n          data = new Alert(this);\n          $element.data(DATA_KEY$a, data);\n        }\n\n        if (config === 'close') {\n          data[config](this);\n        }\n      });\n    };\n\n    Alert._handleDismiss = function _handleDismiss(alertInstance) {\n      return function (event) {\n        if (event) {\n          event.preventDefault();\n        }\n\n        alertInstance.close(this);\n      };\n    };\n\n    _createClass(Alert, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$a;\n      }\n    }]);\n\n    return Alert;\n  }();\n  /**\n   * Data API implementation\n   */\n\n\n  $__default[\"default\"](document).on(EVENT_CLICK_DATA_API$6, SELECTOR_DISMISS, Alert._handleDismiss(new Alert()));\n  /**\n   * jQuery\n   */\n\n  $__default[\"default\"].fn[NAME$a] = Alert._jQueryInterface;\n  $__default[\"default\"].fn[NAME$a].Constructor = Alert;\n\n  $__default[\"default\"].fn[NAME$a].noConflict = function () {\n    $__default[\"default\"].fn[NAME$a] = JQUERY_NO_CONFLICT$a;\n    return Alert._jQueryInterface;\n  };\n\n  /**\n   * Constants\n   */\n\n  var NAME$9 = 'button';\n  var VERSION$9 = '4.6.2';\n  var DATA_KEY$9 = 'bs.button';\n  var EVENT_KEY$9 = \".\" + DATA_KEY$9;\n  var DATA_API_KEY$6 = '.data-api';\n  var JQUERY_NO_CONFLICT$9 = $__default[\"default\"].fn[NAME$9];\n  var CLASS_NAME_ACTIVE$3 = 'active';\n  var CLASS_NAME_BUTTON = 'btn';\n  var CLASS_NAME_FOCUS = 'focus';\n  var EVENT_CLICK_DATA_API$5 = \"click\" + EVENT_KEY$9 + DATA_API_KEY$6;\n  var EVENT_FOCUS_BLUR_DATA_API = \"focus\" + EVENT_KEY$9 + DATA_API_KEY$6 + \" \" + (\"blur\" + EVENT_KEY$9 + DATA_API_KEY$6);\n  var EVENT_LOAD_DATA_API$2 = \"load\" + EVENT_KEY$9 + DATA_API_KEY$6;\n  var SELECTOR_DATA_TOGGLE_CARROT = '[data-toggle^=\"button\"]';\n  var SELECTOR_DATA_TOGGLES = '[data-toggle=\"buttons\"]';\n  var SELECTOR_DATA_TOGGLE$4 = '[data-toggle=\"button\"]';\n  var SELECTOR_DATA_TOGGLES_BUTTONS = '[data-toggle=\"buttons\"] .btn';\n  var SELECTOR_INPUT = 'input:not([type=\"hidden\"])';\n  var SELECTOR_ACTIVE$2 = '.active';\n  var SELECTOR_BUTTON = '.btn';\n  /**\n   * Class definition\n   */\n\n  var Button = /*#__PURE__*/function () {\n    function Button(element) {\n      this._element = element;\n      this.shouldAvoidTriggerChange = false;\n    } // Getters\n\n\n    var _proto = Button.prototype;\n\n    // Public\n    _proto.toggle = function toggle() {\n      var triggerChangeEvent = true;\n      var addAriaPressed = true;\n      var rootElement = $__default[\"default\"](this._element).closest(SELECTOR_DATA_TOGGLES)[0];\n\n      if (rootElement) {\n        var input = this._element.querySelector(SELECTOR_INPUT);\n\n        if (input) {\n          if (input.type === 'radio') {\n            if (input.checked && this._element.classList.contains(CLASS_NAME_ACTIVE$3)) {\n              triggerChangeEvent = false;\n            } else {\n              var activeElement = rootElement.querySelector(SELECTOR_ACTIVE$2);\n\n              if (activeElement) {\n                $__default[\"default\"](activeElement).removeClass(CLASS_NAME_ACTIVE$3);\n              }\n            }\n          }\n\n          if (triggerChangeEvent) {\n            // if it's not a radio button or checkbox don't add a pointless/invalid checked property to the input\n            if (input.type === 'checkbox' || input.type === 'radio') {\n              input.checked = !this._element.classList.contains(CLASS_NAME_ACTIVE$3);\n            }\n\n            if (!this.shouldAvoidTriggerChange) {\n              $__default[\"default\"](input).trigger('change');\n            }\n          }\n\n          input.focus();\n          addAriaPressed = false;\n        }\n      }\n\n      if (!(this._element.hasAttribute('disabled') || this._element.classList.contains('disabled'))) {\n        if (addAriaPressed) {\n          this._element.setAttribute('aria-pressed', !this._element.classList.contains(CLASS_NAME_ACTIVE$3));\n        }\n\n        if (triggerChangeEvent) {\n          $__default[\"default\"](this._element).toggleClass(CLASS_NAME_ACTIVE$3);\n        }\n      }\n    };\n\n    _proto.dispose = function dispose() {\n      $__default[\"default\"].removeData(this._element, DATA_KEY$9);\n      this._element = null;\n    } // Static\n    ;\n\n    Button._jQueryInterface = function _jQueryInterface(config, avoidTriggerChange) {\n      return this.each(function () {\n        var $element = $__default[\"default\"](this);\n        var data = $element.data(DATA_KEY$9);\n\n        if (!data) {\n          data = new Button(this);\n          $element.data(DATA_KEY$9, data);\n        }\n\n        data.shouldAvoidTriggerChange = avoidTriggerChange;\n\n        if (config === 'toggle') {\n          data[config]();\n        }\n      });\n    };\n\n    _createClass(Button, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$9;\n      }\n    }]);\n\n    return Button;\n  }();\n  /**\n   * Data API implementation\n   */\n\n\n  $__default[\"default\"](document).on(EVENT_CLICK_DATA_API$5, SELECTOR_DATA_TOGGLE_CARROT, function (event) {\n    var button = event.target;\n    var initialButton = button;\n\n    if (!$__default[\"default\"](button).hasClass(CLASS_NAME_BUTTON)) {\n      button = $__default[\"default\"](button).closest(SELECTOR_BUTTON)[0];\n    }\n\n    if (!button || button.hasAttribute('disabled') || button.classList.contains('disabled')) {\n      event.preventDefault(); // work around Firefox bug #1540995\n    } else {\n      var inputBtn = button.querySelector(SELECTOR_INPUT);\n\n      if (inputBtn && (inputBtn.hasAttribute('disabled') || inputBtn.classList.contains('disabled'))) {\n        event.preventDefault(); // work around Firefox bug #1540995\n\n        return;\n      }\n\n      if (initialButton.tagName === 'INPUT' || button.tagName !== 'LABEL') {\n        Button._jQueryInterface.call($__default[\"default\"](button), 'toggle', initialButton.tagName === 'INPUT');\n      }\n    }\n  }).on(EVENT_FOCUS_BLUR_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, function (event) {\n    var button = $__default[\"default\"](event.target).closest(SELECTOR_BUTTON)[0];\n    $__default[\"default\"](button).toggleClass(CLASS_NAME_FOCUS, /^focus(in)?$/.test(event.type));\n  });\n  $__default[\"default\"](window).on(EVENT_LOAD_DATA_API$2, function () {\n    // ensure correct active class is set to match the controls' actual values/states\n    // find all checkboxes/readio buttons inside data-toggle groups\n    var buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLES_BUTTONS));\n\n    for (var i = 0, len = buttons.length; i < len; i++) {\n      var button = buttons[i];\n      var input = button.querySelector(SELECTOR_INPUT);\n\n      if (input.checked || input.hasAttribute('checked')) {\n        button.classList.add(CLASS_NAME_ACTIVE$3);\n      } else {\n        button.classList.remove(CLASS_NAME_ACTIVE$3);\n      }\n    } // find all button toggles\n\n\n    buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$4));\n\n    for (var _i = 0, _len = buttons.length; _i < _len; _i++) {\n      var _button = buttons[_i];\n\n      if (_button.getAttribute('aria-pressed') === 'true') {\n        _button.classList.add(CLASS_NAME_ACTIVE$3);\n      } else {\n        _button.classList.remove(CLASS_NAME_ACTIVE$3);\n      }\n    }\n  });\n  /**\n   * jQuery\n   */\n\n  $__default[\"default\"].fn[NAME$9] = Button._jQueryInterface;\n  $__default[\"default\"].fn[NAME$9].Constructor = Button;\n\n  $__default[\"default\"].fn[NAME$9].noConflict = function () {\n    $__default[\"default\"].fn[NAME$9] = JQUERY_NO_CONFLICT$9;\n    return Button._jQueryInterface;\n  };\n\n  /**\n   * Constants\n   */\n\n  var NAME$8 = 'carousel';\n  var VERSION$8 = '4.6.2';\n  var DATA_KEY$8 = 'bs.carousel';\n  var EVENT_KEY$8 = \".\" + DATA_KEY$8;\n  var DATA_API_KEY$5 = '.data-api';\n  var JQUERY_NO_CONFLICT$8 = $__default[\"default\"].fn[NAME$8];\n  var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key\n\n  var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key\n\n  var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\n\n  var SWIPE_THRESHOLD = 40;\n  var CLASS_NAME_CAROUSEL = 'carousel';\n  var CLASS_NAME_ACTIVE$2 = 'active';\n  var CLASS_NAME_SLIDE = 'slide';\n  var CLASS_NAME_RIGHT = 'carousel-item-right';\n  var CLASS_NAME_LEFT = 'carousel-item-left';\n  var CLASS_NAME_NEXT = 'carousel-item-next';\n  var CLASS_NAME_PREV = 'carousel-item-prev';\n  var CLASS_NAME_POINTER_EVENT = 'pointer-event';\n  var DIRECTION_NEXT = 'next';\n  var DIRECTION_PREV = 'prev';\n  var DIRECTION_LEFT = 'left';\n  var DIRECTION_RIGHT = 'right';\n  var EVENT_SLIDE = \"slide\" + EVENT_KEY$8;\n  var EVENT_SLID = \"slid\" + EVENT_KEY$8;\n  var EVENT_KEYDOWN = \"keydown\" + EVENT_KEY$8;\n  var EVENT_MOUSEENTER = \"mouseenter\" + EVENT_KEY$8;\n  var EVENT_MOUSELEAVE = \"mouseleave\" + EVENT_KEY$8;\n  var EVENT_TOUCHSTART = \"touchstart\" + EVENT_KEY$8;\n  var EVENT_TOUCHMOVE = \"touchmove\" + EVENT_KEY$8;\n  var EVENT_TOUCHEND = \"touchend\" + EVENT_KEY$8;\n  var EVENT_POINTERDOWN = \"pointerdown\" + EVENT_KEY$8;\n  var EVENT_POINTERUP = \"pointerup\" + EVENT_KEY$8;\n  var EVENT_DRAG_START = \"dragstart\" + EVENT_KEY$8;\n  var EVENT_LOAD_DATA_API$1 = \"load\" + EVENT_KEY$8 + DATA_API_KEY$5;\n  var EVENT_CLICK_DATA_API$4 = \"click\" + EVENT_KEY$8 + DATA_API_KEY$5;\n  var SELECTOR_ACTIVE$1 = '.active';\n  var SELECTOR_ACTIVE_ITEM = '.active.carousel-item';\n  var SELECTOR_ITEM = '.carousel-item';\n  var SELECTOR_ITEM_IMG = '.carousel-item img';\n  var SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev';\n  var SELECTOR_INDICATORS = '.carousel-indicators';\n  var SELECTOR_DATA_SLIDE = '[data-slide], [data-slide-to]';\n  var SELECTOR_DATA_RIDE = '[data-ride=\"carousel\"]';\n  var Default$7 = {\n    interval: 5000,\n    keyboard: true,\n    slide: false,\n    pause: 'hover',\n    wrap: true,\n    touch: true\n  };\n  var DefaultType$7 = {\n    interval: '(number|boolean)',\n    keyboard: 'boolean',\n    slide: '(boolean|string)',\n    pause: '(string|boolean)',\n    wrap: 'boolean',\n    touch: 'boolean'\n  };\n  var PointerType = {\n    TOUCH: 'touch',\n    PEN: 'pen'\n  };\n  /**\n   * Class definition\n   */\n\n  var Carousel = /*#__PURE__*/function () {\n    function Carousel(element, config) {\n      this._items = null;\n      this._interval = null;\n      this._activeElement = null;\n      this._isPaused = false;\n      this._isSliding = false;\n      this.touchTimeout = null;\n      this.touchStartX = 0;\n      this.touchDeltaX = 0;\n      this._config = this._getConfig(config);\n      this._element = element;\n      this._indicatorsElement = this._element.querySelector(SELECTOR_INDICATORS);\n      this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;\n      this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent);\n\n      this._addEventListeners();\n    } // Getters\n\n\n    var _proto = Carousel.prototype;\n\n    // Public\n    _proto.next = function next() {\n      if (!this._isSliding) {\n        this._slide(DIRECTION_NEXT);\n      }\n    };\n\n    _proto.nextWhenVisible = function nextWhenVisible() {\n      var $element = $__default[\"default\"](this._element); // Don't call next when the page isn't visible\n      // or the carousel or its parent isn't visible\n\n      if (!document.hidden && $element.is(':visible') && $element.css('visibility') !== 'hidden') {\n        this.next();\n      }\n    };\n\n    _proto.prev = function prev() {\n      if (!this._isSliding) {\n        this._slide(DIRECTION_PREV);\n      }\n    };\n\n    _proto.pause = function pause(event) {\n      if (!event) {\n        this._isPaused = true;\n      }\n\n      if (this._element.querySelector(SELECTOR_NEXT_PREV)) {\n        Util.triggerTransitionEnd(this._element);\n        this.cycle(true);\n      }\n\n      clearInterval(this._interval);\n      this._interval = null;\n    };\n\n    _proto.cycle = function cycle(event) {\n      if (!event) {\n        this._isPaused = false;\n      }\n\n      if (this._interval) {\n        clearInterval(this._interval);\n        this._interval = null;\n      }\n\n      if (this._config.interval && !this._isPaused) {\n        this._updateInterval();\n\n        this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);\n      }\n    };\n\n    _proto.to = function to(index) {\n      var _this = this;\n\n      this._activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);\n\n      var activeIndex = this._getItemIndex(this._activeElement);\n\n      if (index > this._items.length - 1 || index < 0) {\n        return;\n      }\n\n      if (this._isSliding) {\n        $__default[\"default\"](this._element).one(EVENT_SLID, function () {\n          return _this.to(index);\n        });\n        return;\n      }\n\n      if (activeIndex === index) {\n        this.pause();\n        this.cycle();\n        return;\n      }\n\n      var direction = index > activeIndex ? DIRECTION_NEXT : DIRECTION_PREV;\n\n      this._slide(direction, this._items[index]);\n    };\n\n    _proto.dispose = function dispose() {\n      $__default[\"default\"](this._element).off(EVENT_KEY$8);\n      $__default[\"default\"].removeData(this._element, DATA_KEY$8);\n      this._items = null;\n      this._config = null;\n      this._element = null;\n      this._interval = null;\n      this._isPaused = null;\n      this._isSliding = null;\n      this._activeElement = null;\n      this._indicatorsElement = null;\n    } // Private\n    ;\n\n    _proto._getConfig = function _getConfig(config) {\n      config = _extends({}, Default$7, config);\n      Util.typeCheckConfig(NAME$8, config, DefaultType$7);\n      return config;\n    };\n\n    _proto._handleSwipe = function _handleSwipe() {\n      var absDeltax = Math.abs(this.touchDeltaX);\n\n      if (absDeltax <= SWIPE_THRESHOLD) {\n        return;\n      }\n\n      var direction = absDeltax / this.touchDeltaX;\n      this.touchDeltaX = 0; // swipe left\n\n      if (direction > 0) {\n        this.prev();\n      } // swipe right\n\n\n      if (direction < 0) {\n        this.next();\n      }\n    };\n\n    _proto._addEventListeners = function _addEventListeners() {\n      var _this2 = this;\n\n      if (this._config.keyboard) {\n        $__default[\"default\"](this._element).on(EVENT_KEYDOWN, function (event) {\n          return _this2._keydown(event);\n        });\n      }\n\n      if (this._config.pause === 'hover') {\n        $__default[\"default\"](this._element).on(EVENT_MOUSEENTER, function (event) {\n          return _this2.pause(event);\n        }).on(EVENT_MOUSELEAVE, function (event) {\n          return _this2.cycle(event);\n        });\n      }\n\n      if (this._config.touch) {\n        this._addTouchEventListeners();\n      }\n    };\n\n    _proto._addTouchEventListeners = function _addTouchEventListeners() {\n      var _this3 = this;\n\n      if (!this._touchSupported) {\n        return;\n      }\n\n      var start = function start(event) {\n        if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n          _this3.touchStartX = event.originalEvent.clientX;\n        } else if (!_this3._pointerEvent) {\n          _this3.touchStartX = event.originalEvent.touches[0].clientX;\n        }\n      };\n\n      var move = function move(event) {\n        // ensure swiping with one touch and not pinching\n        _this3.touchDeltaX = event.originalEvent.touches && event.originalEvent.touches.length > 1 ? 0 : event.originalEvent.touches[0].clientX - _this3.touchStartX;\n      };\n\n      var end = function end(event) {\n        if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n          _this3.touchDeltaX = event.originalEvent.clientX - _this3.touchStartX;\n        }\n\n        _this3._handleSwipe();\n\n        if (_this3._config.pause === 'hover') {\n          // If it's a touch-enabled device, mouseenter/leave are fired as\n          // part of the mouse compatibility events on first tap - the carousel\n          // would stop cycling until user tapped out of it;\n          // here, we listen for touchend, explicitly pause the carousel\n          // (as if it's the second time we tap on it, mouseenter compat event\n          // is NOT fired) and after a timeout (to allow for mouse compatibility\n          // events to fire) we explicitly restart cycling\n          _this3.pause();\n\n          if (_this3.touchTimeout) {\n            clearTimeout(_this3.touchTimeout);\n          }\n\n          _this3.touchTimeout = setTimeout(function (event) {\n            return _this3.cycle(event);\n          }, TOUCHEVENT_COMPAT_WAIT + _this3._config.interval);\n        }\n      };\n\n      $__default[\"default\"](this._element.querySelectorAll(SELECTOR_ITEM_IMG)).on(EVENT_DRAG_START, function (e) {\n        return e.preventDefault();\n      });\n\n      if (this._pointerEvent) {\n        $__default[\"default\"](this._element).on(EVENT_POINTERDOWN, function (event) {\n          return start(event);\n        });\n        $__default[\"default\"](this._element).on(EVENT_POINTERUP, function (event) {\n          return end(event);\n        });\n\n        this._element.classList.add(CLASS_NAME_POINTER_EVENT);\n      } else {\n        $__default[\"default\"](this._element).on(EVENT_TOUCHSTART, function (event) {\n          return start(event);\n        });\n        $__default[\"default\"](this._element).on(EVENT_TOUCHMOVE, function (event) {\n          return move(event);\n        });\n        $__default[\"default\"](this._element).on(EVENT_TOUCHEND, function (event) {\n          return end(event);\n        });\n      }\n    };\n\n    _proto._keydown = function _keydown(event) {\n      if (/input|textarea/i.test(event.target.tagName)) {\n        return;\n      }\n\n      switch (event.which) {\n        case ARROW_LEFT_KEYCODE:\n          event.preventDefault();\n          this.prev();\n          break;\n\n        case ARROW_RIGHT_KEYCODE:\n          event.preventDefault();\n          this.next();\n          break;\n      }\n    };\n\n    _proto._getItemIndex = function _getItemIndex(element) {\n      this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(SELECTOR_ITEM)) : [];\n      return this._items.indexOf(element);\n    };\n\n    _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {\n      var isNextDirection = direction === DIRECTION_NEXT;\n      var isPrevDirection = direction === DIRECTION_PREV;\n\n      var activeIndex = this._getItemIndex(activeElement);\n\n      var lastItemIndex = this._items.length - 1;\n      var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;\n\n      if (isGoingToWrap && !this._config.wrap) {\n        return activeElement;\n      }\n\n      var delta = direction === DIRECTION_PREV ? -1 : 1;\n      var itemIndex = (activeIndex + delta) % this._items.length;\n      return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];\n    };\n\n    _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {\n      var targetIndex = this._getItemIndex(relatedTarget);\n\n      var fromIndex = this._getItemIndex(this._element.querySelector(SELECTOR_ACTIVE_ITEM));\n\n      var slideEvent = $__default[\"default\"].Event(EVENT_SLIDE, {\n        relatedTarget: relatedTarget,\n        direction: eventDirectionName,\n        from: fromIndex,\n        to: targetIndex\n      });\n      $__default[\"default\"](this._element).trigger(slideEvent);\n      return slideEvent;\n    };\n\n    _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {\n      if (this._indicatorsElement) {\n        var indicators = [].slice.call(this._indicatorsElement.querySelectorAll(SELECTOR_ACTIVE$1));\n        $__default[\"default\"](indicators).removeClass(CLASS_NAME_ACTIVE$2);\n\n        var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];\n\n        if (nextIndicator) {\n          $__default[\"default\"](nextIndicator).addClass(CLASS_NAME_ACTIVE$2);\n        }\n      }\n    };\n\n    _proto._updateInterval = function _updateInterval() {\n      var element = this._activeElement || this._element.querySelector(SELECTOR_ACTIVE_ITEM);\n\n      if (!element) {\n        return;\n      }\n\n      var elementInterval = parseInt(element.getAttribute('data-interval'), 10);\n\n      if (elementInterval) {\n        this._config.defaultInterval = this._config.defaultInterval || this._config.interval;\n        this._config.interval = elementInterval;\n      } else {\n        this._config.interval = this._config.defaultInterval || this._config.interval;\n      }\n    };\n\n    _proto._slide = function _slide(direction, element) {\n      var _this4 = this;\n\n      var activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);\n\n      var activeElementIndex = this._getItemIndex(activeElement);\n\n      var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);\n\n      var nextElementIndex = this._getItemIndex(nextElement);\n\n      var isCycling = Boolean(this._interval);\n      var directionalClassName;\n      var orderClassName;\n      var eventDirectionName;\n\n      if (direction === DIRECTION_NEXT) {\n        directionalClassName = CLASS_NAME_LEFT;\n        orderClassName = CLASS_NAME_NEXT;\n        eventDirectionName = DIRECTION_LEFT;\n      } else {\n        directionalClassName = CLASS_NAME_RIGHT;\n        orderClassName = CLASS_NAME_PREV;\n        eventDirectionName = DIRECTION_RIGHT;\n      }\n\n      if (nextElement && $__default[\"default\"](nextElement).hasClass(CLASS_NAME_ACTIVE$2)) {\n        this._isSliding = false;\n        return;\n      }\n\n      var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);\n\n      if (slideEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      if (!activeElement || !nextElement) {\n        // Some weirdness is happening, so we bail\n        return;\n      }\n\n      this._isSliding = true;\n\n      if (isCycling) {\n        this.pause();\n      }\n\n      this._setActiveIndicatorElement(nextElement);\n\n      this._activeElement = nextElement;\n      var slidEvent = $__default[\"default\"].Event(EVENT_SLID, {\n        relatedTarget: nextElement,\n        direction: eventDirectionName,\n        from: activeElementIndex,\n        to: nextElementIndex\n      });\n\n      if ($__default[\"default\"](this._element).hasClass(CLASS_NAME_SLIDE)) {\n        $__default[\"default\"](nextElement).addClass(orderClassName);\n        Util.reflow(nextElement);\n        $__default[\"default\"](activeElement).addClass(directionalClassName);\n        $__default[\"default\"](nextElement).addClass(directionalClassName);\n        var transitionDuration = Util.getTransitionDurationFromElement(activeElement);\n        $__default[\"default\"](activeElement).one(Util.TRANSITION_END, function () {\n          $__default[\"default\"](nextElement).removeClass(directionalClassName + \" \" + orderClassName).addClass(CLASS_NAME_ACTIVE$2);\n          $__default[\"default\"](activeElement).removeClass(CLASS_NAME_ACTIVE$2 + \" \" + orderClassName + \" \" + directionalClassName);\n          _this4._isSliding = false;\n          setTimeout(function () {\n            return $__default[\"default\"](_this4._element).trigger(slidEvent);\n          }, 0);\n        }).emulateTransitionEnd(transitionDuration);\n      } else {\n        $__default[\"default\"](activeElement).removeClass(CLASS_NAME_ACTIVE$2);\n        $__default[\"default\"](nextElement).addClass(CLASS_NAME_ACTIVE$2);\n        this._isSliding = false;\n        $__default[\"default\"](this._element).trigger(slidEvent);\n      }\n\n      if (isCycling) {\n        this.cycle();\n      }\n    } // Static\n    ;\n\n    Carousel._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var data = $__default[\"default\"](this).data(DATA_KEY$8);\n\n        var _config = _extends({}, Default$7, $__default[\"default\"](this).data());\n\n        if (typeof config === 'object') {\n          _config = _extends({}, _config, config);\n        }\n\n        var action = typeof config === 'string' ? config : _config.slide;\n\n        if (!data) {\n          data = new Carousel(this, _config);\n          $__default[\"default\"](this).data(DATA_KEY$8, data);\n        }\n\n        if (typeof config === 'number') {\n          data.to(config);\n        } else if (typeof action === 'string') {\n          if (typeof data[action] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + action + \"\\\"\");\n          }\n\n          data[action]();\n        } else if (_config.interval && _config.ride) {\n          data.pause();\n          data.cycle();\n        }\n      });\n    };\n\n    Carousel._dataApiClickHandler = function _dataApiClickHandler(event) {\n      var selector = Util.getSelectorFromElement(this);\n\n      if (!selector) {\n        return;\n      }\n\n      var target = $__default[\"default\"](selector)[0];\n\n      if (!target || !$__default[\"default\"](target).hasClass(CLASS_NAME_CAROUSEL)) {\n        return;\n      }\n\n      var config = _extends({}, $__default[\"default\"](target).data(), $__default[\"default\"](this).data());\n\n      var slideIndex = this.getAttribute('data-slide-to');\n\n      if (slideIndex) {\n        config.interval = false;\n      }\n\n      Carousel._jQueryInterface.call($__default[\"default\"](target), config);\n\n      if (slideIndex) {\n        $__default[\"default\"](target).data(DATA_KEY$8).to(slideIndex);\n      }\n\n      event.preventDefault();\n    };\n\n    _createClass(Carousel, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$8;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$7;\n      }\n    }]);\n\n    return Carousel;\n  }();\n  /**\n   * Data API implementation\n   */\n\n\n  $__default[\"default\"](document).on(EVENT_CLICK_DATA_API$4, SELECTOR_DATA_SLIDE, Carousel._dataApiClickHandler);\n  $__default[\"default\"](window).on(EVENT_LOAD_DATA_API$1, function () {\n    var carousels = [].slice.call(document.querySelectorAll(SELECTOR_DATA_RIDE));\n\n    for (var i = 0, len = carousels.length; i < len; i++) {\n      var $carousel = $__default[\"default\"](carousels[i]);\n\n      Carousel._jQueryInterface.call($carousel, $carousel.data());\n    }\n  });\n  /**\n   * jQuery\n   */\n\n  $__default[\"default\"].fn[NAME$8] = Carousel._jQueryInterface;\n  $__default[\"default\"].fn[NAME$8].Constructor = Carousel;\n\n  $__default[\"default\"].fn[NAME$8].noConflict = function () {\n    $__default[\"default\"].fn[NAME$8] = JQUERY_NO_CONFLICT$8;\n    return Carousel._jQueryInterface;\n  };\n\n  /**\n   * Constants\n   */\n\n  var NAME$7 = 'collapse';\n  var VERSION$7 = '4.6.2';\n  var DATA_KEY$7 = 'bs.collapse';\n  var EVENT_KEY$7 = \".\" + DATA_KEY$7;\n  var DATA_API_KEY$4 = '.data-api';\n  var JQUERY_NO_CONFLICT$7 = $__default[\"default\"].fn[NAME$7];\n  var CLASS_NAME_SHOW$6 = 'show';\n  var CLASS_NAME_COLLAPSE = 'collapse';\n  var CLASS_NAME_COLLAPSING = 'collapsing';\n  var CLASS_NAME_COLLAPSED = 'collapsed';\n  var DIMENSION_WIDTH = 'width';\n  var DIMENSION_HEIGHT = 'height';\n  var EVENT_SHOW$4 = \"show\" + EVENT_KEY$7;\n  var EVENT_SHOWN$4 = \"shown\" + EVENT_KEY$7;\n  var EVENT_HIDE$4 = \"hide\" + EVENT_KEY$7;\n  var EVENT_HIDDEN$4 = \"hidden\" + EVENT_KEY$7;\n  var EVENT_CLICK_DATA_API$3 = \"click\" + EVENT_KEY$7 + DATA_API_KEY$4;\n  var SELECTOR_ACTIVES = '.show, .collapsing';\n  var SELECTOR_DATA_TOGGLE$3 = '[data-toggle=\"collapse\"]';\n  var Default$6 = {\n    toggle: true,\n    parent: ''\n  };\n  var DefaultType$6 = {\n    toggle: 'boolean',\n    parent: '(string|element)'\n  };\n  /**\n   * Class definition\n   */\n\n  var Collapse = /*#__PURE__*/function () {\n    function Collapse(element, config) {\n      this._isTransitioning = false;\n      this._element = element;\n      this._config = this._getConfig(config);\n      this._triggerArray = [].slice.call(document.querySelectorAll(\"[data-toggle=\\\"collapse\\\"][href=\\\"#\" + element.id + \"\\\"],\" + (\"[data-toggle=\\\"collapse\\\"][data-target=\\\"#\" + element.id + \"\\\"]\")));\n      var toggleList = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$3));\n\n      for (var i = 0, len = toggleList.length; i < len; i++) {\n        var elem = toggleList[i];\n        var selector = Util.getSelectorFromElement(elem);\n        var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function (foundElem) {\n          return foundElem === element;\n        });\n\n        if (selector !== null && filterElement.length > 0) {\n          this._selector = selector;\n\n          this._triggerArray.push(elem);\n        }\n      }\n\n      this._parent = this._config.parent ? this._getParent() : null;\n\n      if (!this._config.parent) {\n        this._addAriaAndCollapsedClass(this._element, this._triggerArray);\n      }\n\n      if (this._config.toggle) {\n        this.toggle();\n      }\n    } // Getters\n\n\n    var _proto = Collapse.prototype;\n\n    // Public\n    _proto.toggle = function toggle() {\n      if ($__default[\"default\"](this._element).hasClass(CLASS_NAME_SHOW$6)) {\n        this.hide();\n      } else {\n        this.show();\n      }\n    };\n\n    _proto.show = function show() {\n      var _this = this;\n\n      if (this._isTransitioning || $__default[\"default\"](this._element).hasClass(CLASS_NAME_SHOW$6)) {\n        return;\n      }\n\n      var actives;\n      var activesData;\n\n      if (this._parent) {\n        actives = [].slice.call(this._parent.querySelectorAll(SELECTOR_ACTIVES)).filter(function (elem) {\n          if (typeof _this._config.parent === 'string') {\n            return elem.getAttribute('data-parent') === _this._config.parent;\n          }\n\n          return elem.classList.contains(CLASS_NAME_COLLAPSE);\n        });\n\n        if (actives.length === 0) {\n          actives = null;\n        }\n      }\n\n      if (actives) {\n        activesData = $__default[\"default\"](actives).not(this._selector).data(DATA_KEY$7);\n\n        if (activesData && activesData._isTransitioning) {\n          return;\n        }\n      }\n\n      var startEvent = $__default[\"default\"].Event(EVENT_SHOW$4);\n      $__default[\"default\"](this._element).trigger(startEvent);\n\n      if (startEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      if (actives) {\n        Collapse._jQueryInterface.call($__default[\"default\"](actives).not(this._selector), 'hide');\n\n        if (!activesData) {\n          $__default[\"default\"](actives).data(DATA_KEY$7, null);\n        }\n      }\n\n      var dimension = this._getDimension();\n\n      $__default[\"default\"](this._element).removeClass(CLASS_NAME_COLLAPSE).addClass(CLASS_NAME_COLLAPSING);\n      this._element.style[dimension] = 0;\n\n      if (this._triggerArray.length) {\n        $__default[\"default\"](this._triggerArray).removeClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', true);\n      }\n\n      this.setTransitioning(true);\n\n      var complete = function complete() {\n        $__default[\"default\"](_this._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE + \" \" + CLASS_NAME_SHOW$6);\n        _this._element.style[dimension] = '';\n\n        _this.setTransitioning(false);\n\n        $__default[\"default\"](_this._element).trigger(EVENT_SHOWN$4);\n      };\n\n      var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n      var scrollSize = \"scroll\" + capitalizedDimension;\n      var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n      $__default[\"default\"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n      this._element.style[dimension] = this._element[scrollSize] + \"px\";\n    };\n\n    _proto.hide = function hide() {\n      var _this2 = this;\n\n      if (this._isTransitioning || !$__default[\"default\"](this._element).hasClass(CLASS_NAME_SHOW$6)) {\n        return;\n      }\n\n      var startEvent = $__default[\"default\"].Event(EVENT_HIDE$4);\n      $__default[\"default\"](this._element).trigger(startEvent);\n\n      if (startEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      var dimension = this._getDimension();\n\n      this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + \"px\";\n      Util.reflow(this._element);\n      $__default[\"default\"](this._element).addClass(CLASS_NAME_COLLAPSING).removeClass(CLASS_NAME_COLLAPSE + \" \" + CLASS_NAME_SHOW$6);\n      var triggerArrayLength = this._triggerArray.length;\n\n      if (triggerArrayLength > 0) {\n        for (var i = 0; i < triggerArrayLength; i++) {\n          var trigger = this._triggerArray[i];\n          var selector = Util.getSelectorFromElement(trigger);\n\n          if (selector !== null) {\n            var $elem = $__default[\"default\"]([].slice.call(document.querySelectorAll(selector)));\n\n            if (!$elem.hasClass(CLASS_NAME_SHOW$6)) {\n              $__default[\"default\"](trigger).addClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', false);\n            }\n          }\n        }\n      }\n\n      this.setTransitioning(true);\n\n      var complete = function complete() {\n        _this2.setTransitioning(false);\n\n        $__default[\"default\"](_this2._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE).trigger(EVENT_HIDDEN$4);\n      };\n\n      this._element.style[dimension] = '';\n      var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n      $__default[\"default\"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n    };\n\n    _proto.setTransitioning = function setTransitioning(isTransitioning) {\n      this._isTransitioning = isTransitioning;\n    };\n\n    _proto.dispose = function dispose() {\n      $__default[\"default\"].removeData(this._element, DATA_KEY$7);\n      this._config = null;\n      this._parent = null;\n      this._element = null;\n      this._triggerArray = null;\n      this._isTransitioning = null;\n    } // Private\n    ;\n\n    _proto._getConfig = function _getConfig(config) {\n      config = _extends({}, Default$6, config);\n      config.toggle = Boolean(config.toggle); // Coerce string values\n\n      Util.typeCheckConfig(NAME$7, config, DefaultType$6);\n      return config;\n    };\n\n    _proto._getDimension = function _getDimension() {\n      var hasWidth = $__default[\"default\"](this._element).hasClass(DIMENSION_WIDTH);\n      return hasWidth ? DIMENSION_WIDTH : DIMENSION_HEIGHT;\n    };\n\n    _proto._getParent = function _getParent() {\n      var _this3 = this;\n\n      var parent;\n\n      if (Util.isElement(this._config.parent)) {\n        parent = this._config.parent; // It's a jQuery object\n\n        if (typeof this._config.parent.jquery !== 'undefined') {\n          parent = this._config.parent[0];\n        }\n      } else {\n        parent = document.querySelector(this._config.parent);\n      }\n\n      var selector = \"[data-toggle=\\\"collapse\\\"][data-parent=\\\"\" + this._config.parent + \"\\\"]\";\n      var children = [].slice.call(parent.querySelectorAll(selector));\n      $__default[\"default\"](children).each(function (i, element) {\n        _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);\n      });\n      return parent;\n    };\n\n    _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {\n      var isOpen = $__default[\"default\"](element).hasClass(CLASS_NAME_SHOW$6);\n\n      if (triggerArray.length) {\n        $__default[\"default\"](triggerArray).toggleClass(CLASS_NAME_COLLAPSED, !isOpen).attr('aria-expanded', isOpen);\n      }\n    } // Static\n    ;\n\n    Collapse._getTargetFromElement = function _getTargetFromElement(element) {\n      var selector = Util.getSelectorFromElement(element);\n      return selector ? document.querySelector(selector) : null;\n    };\n\n    Collapse._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var $element = $__default[\"default\"](this);\n        var data = $element.data(DATA_KEY$7);\n\n        var _config = _extends({}, Default$6, $element.data(), typeof config === 'object' && config ? config : {});\n\n        if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {\n          _config.toggle = false;\n        }\n\n        if (!data) {\n          data = new Collapse(this, _config);\n          $element.data(DATA_KEY$7, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config]();\n        }\n      });\n    };\n\n    _createClass(Collapse, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$7;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$6;\n      }\n    }]);\n\n    return Collapse;\n  }();\n  /**\n   * Data API implementation\n   */\n\n\n  $__default[\"default\"](document).on(EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) {\n    // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n    if (event.currentTarget.tagName === 'A') {\n      event.preventDefault();\n    }\n\n    var $trigger = $__default[\"default\"](this);\n    var selector = Util.getSelectorFromElement(this);\n    var selectors = [].slice.call(document.querySelectorAll(selector));\n    $__default[\"default\"](selectors).each(function () {\n      var $target = $__default[\"default\"](this);\n      var data = $target.data(DATA_KEY$7);\n      var config = data ? 'toggle' : $trigger.data();\n\n      Collapse._jQueryInterface.call($target, config);\n    });\n  });\n  /**\n   * jQuery\n   */\n\n  $__default[\"default\"].fn[NAME$7] = Collapse._jQueryInterface;\n  $__default[\"default\"].fn[NAME$7].Constructor = Collapse;\n\n  $__default[\"default\"].fn[NAME$7].noConflict = function () {\n    $__default[\"default\"].fn[NAME$7] = JQUERY_NO_CONFLICT$7;\n    return Collapse._jQueryInterface;\n  };\n\n  /**\n   * Constants\n   */\n\n  var NAME$6 = 'dropdown';\n  var VERSION$6 = '4.6.2';\n  var DATA_KEY$6 = 'bs.dropdown';\n  var EVENT_KEY$6 = \".\" + DATA_KEY$6;\n  var DATA_API_KEY$3 = '.data-api';\n  var JQUERY_NO_CONFLICT$6 = $__default[\"default\"].fn[NAME$6];\n  var ESCAPE_KEYCODE$1 = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n  var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key\n\n  var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key\n\n  var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key\n\n  var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key\n\n  var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)\n\n  var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + \"|\" + ARROW_DOWN_KEYCODE + \"|\" + ESCAPE_KEYCODE$1);\n  var CLASS_NAME_DISABLED$1 = 'disabled';\n  var CLASS_NAME_SHOW$5 = 'show';\n  var CLASS_NAME_DROPUP = 'dropup';\n  var CLASS_NAME_DROPRIGHT = 'dropright';\n  var CLASS_NAME_DROPLEFT = 'dropleft';\n  var CLASS_NAME_MENURIGHT = 'dropdown-menu-right';\n  var CLASS_NAME_POSITION_STATIC = 'position-static';\n  var EVENT_HIDE$3 = \"hide\" + EVENT_KEY$6;\n  var EVENT_HIDDEN$3 = \"hidden\" + EVENT_KEY$6;\n  var EVENT_SHOW$3 = \"show\" + EVENT_KEY$6;\n  var EVENT_SHOWN$3 = \"shown\" + EVENT_KEY$6;\n  var EVENT_CLICK = \"click\" + EVENT_KEY$6;\n  var EVENT_CLICK_DATA_API$2 = \"click\" + EVENT_KEY$6 + DATA_API_KEY$3;\n  var EVENT_KEYDOWN_DATA_API = \"keydown\" + EVENT_KEY$6 + DATA_API_KEY$3;\n  var EVENT_KEYUP_DATA_API = \"keyup\" + EVENT_KEY$6 + DATA_API_KEY$3;\n  var SELECTOR_DATA_TOGGLE$2 = '[data-toggle=\"dropdown\"]';\n  var SELECTOR_FORM_CHILD = '.dropdown form';\n  var SELECTOR_MENU = '.dropdown-menu';\n  var SELECTOR_NAVBAR_NAV = '.navbar-nav';\n  var SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';\n  var PLACEMENT_TOP = 'top-start';\n  var PLACEMENT_TOPEND = 'top-end';\n  var PLACEMENT_BOTTOM = 'bottom-start';\n  var PLACEMENT_BOTTOMEND = 'bottom-end';\n  var PLACEMENT_RIGHT = 'right-start';\n  var PLACEMENT_LEFT = 'left-start';\n  var Default$5 = {\n    offset: 0,\n    flip: true,\n    boundary: 'scrollParent',\n    reference: 'toggle',\n    display: 'dynamic',\n    popperConfig: null\n  };\n  var DefaultType$5 = {\n    offset: '(number|string|function)',\n    flip: 'boolean',\n    boundary: '(string|element)',\n    reference: '(string|element)',\n    display: 'string',\n    popperConfig: '(null|object)'\n  };\n  /**\n   * Class definition\n   */\n\n  var Dropdown = /*#__PURE__*/function () {\n    function Dropdown(element, config) {\n      this._element = element;\n      this._popper = null;\n      this._config = this._getConfig(config);\n      this._menu = this._getMenuElement();\n      this._inNavbar = this._detectNavbar();\n\n      this._addEventListeners();\n    } // Getters\n\n\n    var _proto = Dropdown.prototype;\n\n    // Public\n    _proto.toggle = function toggle() {\n      if (this._element.disabled || $__default[\"default\"](this._element).hasClass(CLASS_NAME_DISABLED$1)) {\n        return;\n      }\n\n      var isActive = $__default[\"default\"](this._menu).hasClass(CLASS_NAME_SHOW$5);\n\n      Dropdown._clearMenus();\n\n      if (isActive) {\n        return;\n      }\n\n      this.show(true);\n    };\n\n    _proto.show = function show(usePopper) {\n      if (usePopper === void 0) {\n        usePopper = false;\n      }\n\n      if (this._element.disabled || $__default[\"default\"](this._element).hasClass(CLASS_NAME_DISABLED$1) || $__default[\"default\"](this._menu).hasClass(CLASS_NAME_SHOW$5)) {\n        return;\n      }\n\n      var relatedTarget = {\n        relatedTarget: this._element\n      };\n      var showEvent = $__default[\"default\"].Event(EVENT_SHOW$3, relatedTarget);\n\n      var parent = Dropdown._getParentFromElement(this._element);\n\n      $__default[\"default\"](parent).trigger(showEvent);\n\n      if (showEvent.isDefaultPrevented()) {\n        return;\n      } // Totally disable Popper for Dropdowns in Navbar\n\n\n      if (!this._inNavbar && usePopper) {\n        // Check for Popper dependency\n        if (typeof Popper__default[\"default\"] === 'undefined') {\n          throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)');\n        }\n\n        var referenceElement = this._element;\n\n        if (this._config.reference === 'parent') {\n          referenceElement = parent;\n        } else if (Util.isElement(this._config.reference)) {\n          referenceElement = this._config.reference; // Check if it's jQuery element\n\n          if (typeof this._config.reference.jquery !== 'undefined') {\n            referenceElement = this._config.reference[0];\n          }\n        } // If boundary is not `scrollParent`, then set position to `static`\n        // to allow the menu to \"escape\" the scroll parent's boundaries\n        // https://github.com/twbs/bootstrap/issues/24251\n\n\n        if (this._config.boundary !== 'scrollParent') {\n          $__default[\"default\"](parent).addClass(CLASS_NAME_POSITION_STATIC);\n        }\n\n        this._popper = new Popper__default[\"default\"](referenceElement, this._menu, this._getPopperConfig());\n      } // If this is a touch-enabled device we add extra\n      // empty mouseover listeners to the body's immediate children;\n      // only needed because of broken event delegation on iOS\n      // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n\n      if ('ontouchstart' in document.documentElement && $__default[\"default\"](parent).closest(SELECTOR_NAVBAR_NAV).length === 0) {\n        $__default[\"default\"](document.body).children().on('mouseover', null, $__default[\"default\"].noop);\n      }\n\n      this._element.focus();\n\n      this._element.setAttribute('aria-expanded', true);\n\n      $__default[\"default\"](this._menu).toggleClass(CLASS_NAME_SHOW$5);\n      $__default[\"default\"](parent).toggleClass(CLASS_NAME_SHOW$5).trigger($__default[\"default\"].Event(EVENT_SHOWN$3, relatedTarget));\n    };\n\n    _proto.hide = function hide() {\n      if (this._element.disabled || $__default[\"default\"](this._element).hasClass(CLASS_NAME_DISABLED$1) || !$__default[\"default\"](this._menu).hasClass(CLASS_NAME_SHOW$5)) {\n        return;\n      }\n\n      var relatedTarget = {\n        relatedTarget: this._element\n      };\n      var hideEvent = $__default[\"default\"].Event(EVENT_HIDE$3, relatedTarget);\n\n      var parent = Dropdown._getParentFromElement(this._element);\n\n      $__default[\"default\"](parent).trigger(hideEvent);\n\n      if (hideEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      if (this._popper) {\n        this._popper.destroy();\n      }\n\n      $__default[\"default\"](this._menu).toggleClass(CLASS_NAME_SHOW$5);\n      $__default[\"default\"](parent).toggleClass(CLASS_NAME_SHOW$5).trigger($__default[\"default\"].Event(EVENT_HIDDEN$3, relatedTarget));\n    };\n\n    _proto.dispose = function dispose() {\n      $__default[\"default\"].removeData(this._element, DATA_KEY$6);\n      $__default[\"default\"](this._element).off(EVENT_KEY$6);\n      this._element = null;\n      this._menu = null;\n\n      if (this._popper !== null) {\n        this._popper.destroy();\n\n        this._popper = null;\n      }\n    };\n\n    _proto.update = function update() {\n      this._inNavbar = this._detectNavbar();\n\n      if (this._popper !== null) {\n        this._popper.scheduleUpdate();\n      }\n    } // Private\n    ;\n\n    _proto._addEventListeners = function _addEventListeners() {\n      var _this = this;\n\n      $__default[\"default\"](this._element).on(EVENT_CLICK, function (event) {\n        event.preventDefault();\n        event.stopPropagation();\n\n        _this.toggle();\n      });\n    };\n\n    _proto._getConfig = function _getConfig(config) {\n      config = _extends({}, this.constructor.Default, $__default[\"default\"](this._element).data(), config);\n      Util.typeCheckConfig(NAME$6, config, this.constructor.DefaultType);\n      return config;\n    };\n\n    _proto._getMenuElement = function _getMenuElement() {\n      if (!this._menu) {\n        var parent = Dropdown._getParentFromElement(this._element);\n\n        if (parent) {\n          this._menu = parent.querySelector(SELECTOR_MENU);\n        }\n      }\n\n      return this._menu;\n    };\n\n    _proto._getPlacement = function _getPlacement() {\n      var $parentDropdown = $__default[\"default\"](this._element.parentNode);\n      var placement = PLACEMENT_BOTTOM; // Handle dropup\n\n      if ($parentDropdown.hasClass(CLASS_NAME_DROPUP)) {\n        placement = $__default[\"default\"](this._menu).hasClass(CLASS_NAME_MENURIGHT) ? PLACEMENT_TOPEND : PLACEMENT_TOP;\n      } else if ($parentDropdown.hasClass(CLASS_NAME_DROPRIGHT)) {\n        placement = PLACEMENT_RIGHT;\n      } else if ($parentDropdown.hasClass(CLASS_NAME_DROPLEFT)) {\n        placement = PLACEMENT_LEFT;\n      } else if ($__default[\"default\"](this._menu).hasClass(CLASS_NAME_MENURIGHT)) {\n        placement = PLACEMENT_BOTTOMEND;\n      }\n\n      return placement;\n    };\n\n    _proto._detectNavbar = function _detectNavbar() {\n      return $__default[\"default\"](this._element).closest('.navbar').length > 0;\n    };\n\n    _proto._getOffset = function _getOffset() {\n      var _this2 = this;\n\n      var offset = {};\n\n      if (typeof this._config.offset === 'function') {\n        offset.fn = function (data) {\n          data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets, _this2._element));\n          return data;\n        };\n      } else {\n        offset.offset = this._config.offset;\n      }\n\n      return offset;\n    };\n\n    _proto._getPopperConfig = function _getPopperConfig() {\n      var popperConfig = {\n        placement: this._getPlacement(),\n        modifiers: {\n          offset: this._getOffset(),\n          flip: {\n            enabled: this._config.flip\n          },\n          preventOverflow: {\n            boundariesElement: this._config.boundary\n          }\n        }\n      }; // Disable Popper if we have a static display\n\n      if (this._config.display === 'static') {\n        popperConfig.modifiers.applyStyle = {\n          enabled: false\n        };\n      }\n\n      return _extends({}, popperConfig, this._config.popperConfig);\n    } // Static\n    ;\n\n    Dropdown._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var data = $__default[\"default\"](this).data(DATA_KEY$6);\n\n        var _config = typeof config === 'object' ? config : null;\n\n        if (!data) {\n          data = new Dropdown(this, _config);\n          $__default[\"default\"](this).data(DATA_KEY$6, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config]();\n        }\n      });\n    };\n\n    Dropdown._clearMenus = function _clearMenus(event) {\n      if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) {\n        return;\n      }\n\n      var toggles = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$2));\n\n      for (var i = 0, len = toggles.length; i < len; i++) {\n        var parent = Dropdown._getParentFromElement(toggles[i]);\n\n        var context = $__default[\"default\"](toggles[i]).data(DATA_KEY$6);\n        var relatedTarget = {\n          relatedTarget: toggles[i]\n        };\n\n        if (event && event.type === 'click') {\n          relatedTarget.clickEvent = event;\n        }\n\n        if (!context) {\n          continue;\n        }\n\n        var dropdownMenu = context._menu;\n\n        if (!$__default[\"default\"](parent).hasClass(CLASS_NAME_SHOW$5)) {\n          continue;\n        }\n\n        if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $__default[\"default\"].contains(parent, event.target)) {\n          continue;\n        }\n\n        var hideEvent = $__default[\"default\"].Event(EVENT_HIDE$3, relatedTarget);\n        $__default[\"default\"](parent).trigger(hideEvent);\n\n        if (hideEvent.isDefaultPrevented()) {\n          continue;\n        } // If this is a touch-enabled device we remove the extra\n        // empty mouseover listeners we added for iOS support\n\n\n        if ('ontouchstart' in document.documentElement) {\n          $__default[\"default\"](document.body).children().off('mouseover', null, $__default[\"default\"].noop);\n        }\n\n        toggles[i].setAttribute('aria-expanded', 'false');\n\n        if (context._popper) {\n          context._popper.destroy();\n        }\n\n        $__default[\"default\"](dropdownMenu).removeClass(CLASS_NAME_SHOW$5);\n        $__default[\"default\"](parent).removeClass(CLASS_NAME_SHOW$5).trigger($__default[\"default\"].Event(EVENT_HIDDEN$3, relatedTarget));\n      }\n    };\n\n    Dropdown._getParentFromElement = function _getParentFromElement(element) {\n      var parent;\n      var selector = Util.getSelectorFromElement(element);\n\n      if (selector) {\n        parent = document.querySelector(selector);\n      }\n\n      return parent || element.parentNode;\n    } // eslint-disable-next-line complexity\n    ;\n\n    Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {\n      // If not input/textarea:\n      //  - And not a key in REGEXP_KEYDOWN => not a dropdown command\n      // If input/textarea:\n      //  - If space key => not a dropdown command\n      //  - If key is other than escape\n      //    - If key is not up or down => not a dropdown command\n      //    - If trigger inside the menu => not a dropdown command\n      if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE$1 && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $__default[\"default\"](event.target).closest(SELECTOR_MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n        return;\n      }\n\n      if (this.disabled || $__default[\"default\"](this).hasClass(CLASS_NAME_DISABLED$1)) {\n        return;\n      }\n\n      var parent = Dropdown._getParentFromElement(this);\n\n      var isActive = $__default[\"default\"](parent).hasClass(CLASS_NAME_SHOW$5);\n\n      if (!isActive && event.which === ESCAPE_KEYCODE$1) {\n        return;\n      }\n\n      event.preventDefault();\n      event.stopPropagation();\n\n      if (!isActive || event.which === ESCAPE_KEYCODE$1 || event.which === SPACE_KEYCODE) {\n        if (event.which === ESCAPE_KEYCODE$1) {\n          $__default[\"default\"](parent.querySelector(SELECTOR_DATA_TOGGLE$2)).trigger('focus');\n        }\n\n        $__default[\"default\"](this).trigger('click');\n        return;\n      }\n\n      var items = [].slice.call(parent.querySelectorAll(SELECTOR_VISIBLE_ITEMS)).filter(function (item) {\n        return $__default[\"default\"](item).is(':visible');\n      });\n\n      if (items.length === 0) {\n        return;\n      }\n\n      var index = items.indexOf(event.target);\n\n      if (event.which === ARROW_UP_KEYCODE && index > 0) {\n        // Up\n        index--;\n      }\n\n      if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {\n        // Down\n        index++;\n      }\n\n      if (index < 0) {\n        index = 0;\n      }\n\n      items[index].focus();\n    };\n\n    _createClass(Dropdown, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$6;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$5;\n      }\n    }, {\n      key: \"DefaultType\",\n      get: function get() {\n        return DefaultType$5;\n      }\n    }]);\n\n    return Dropdown;\n  }();\n  /**\n   * Data API implementation\n   */\n\n\n  $__default[\"default\"](document).on(EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$2, Dropdown._dataApiKeydownHandler).on(EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown._dataApiKeydownHandler).on(EVENT_CLICK_DATA_API$2 + \" \" + EVENT_KEYUP_DATA_API, Dropdown._clearMenus).on(EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) {\n    event.preventDefault();\n    event.stopPropagation();\n\n    Dropdown._jQueryInterface.call($__default[\"default\"](this), 'toggle');\n  }).on(EVENT_CLICK_DATA_API$2, SELECTOR_FORM_CHILD, function (e) {\n    e.stopPropagation();\n  });\n  /**\n   * jQuery\n   */\n\n  $__default[\"default\"].fn[NAME$6] = Dropdown._jQueryInterface;\n  $__default[\"default\"].fn[NAME$6].Constructor = Dropdown;\n\n  $__default[\"default\"].fn[NAME$6].noConflict = function () {\n    $__default[\"default\"].fn[NAME$6] = JQUERY_NO_CONFLICT$6;\n    return Dropdown._jQueryInterface;\n  };\n\n  /**\n   * Constants\n   */\n\n  var NAME$5 = 'modal';\n  var VERSION$5 = '4.6.2';\n  var DATA_KEY$5 = 'bs.modal';\n  var EVENT_KEY$5 = \".\" + DATA_KEY$5;\n  var DATA_API_KEY$2 = '.data-api';\n  var JQUERY_NO_CONFLICT$5 = $__default[\"default\"].fn[NAME$5];\n  var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n  var CLASS_NAME_SCROLLABLE = 'modal-dialog-scrollable';\n  var CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure';\n  var CLASS_NAME_BACKDROP = 'modal-backdrop';\n  var CLASS_NAME_OPEN = 'modal-open';\n  var CLASS_NAME_FADE$4 = 'fade';\n  var CLASS_NAME_SHOW$4 = 'show';\n  var CLASS_NAME_STATIC = 'modal-static';\n  var EVENT_HIDE$2 = \"hide\" + EVENT_KEY$5;\n  var EVENT_HIDE_PREVENTED = \"hidePrevented\" + EVENT_KEY$5;\n  var EVENT_HIDDEN$2 = \"hidden\" + EVENT_KEY$5;\n  var EVENT_SHOW$2 = \"show\" + EVENT_KEY$5;\n  var EVENT_SHOWN$2 = \"shown\" + EVENT_KEY$5;\n  var EVENT_FOCUSIN = \"focusin\" + EVENT_KEY$5;\n  var EVENT_RESIZE = \"resize\" + EVENT_KEY$5;\n  var EVENT_CLICK_DISMISS$1 = \"click.dismiss\" + EVENT_KEY$5;\n  var EVENT_KEYDOWN_DISMISS = \"keydown.dismiss\" + EVENT_KEY$5;\n  var EVENT_MOUSEUP_DISMISS = \"mouseup.dismiss\" + EVENT_KEY$5;\n  var EVENT_MOUSEDOWN_DISMISS = \"mousedown.dismiss\" + EVENT_KEY$5;\n  var EVENT_CLICK_DATA_API$1 = \"click\" + EVENT_KEY$5 + DATA_API_KEY$2;\n  var SELECTOR_DIALOG = '.modal-dialog';\n  var SELECTOR_MODAL_BODY = '.modal-body';\n  var SELECTOR_DATA_TOGGLE$1 = '[data-toggle=\"modal\"]';\n  var SELECTOR_DATA_DISMISS$1 = '[data-dismiss=\"modal\"]';\n  var SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';\n  var SELECTOR_STICKY_CONTENT = '.sticky-top';\n  var Default$4 = {\n    backdrop: true,\n    keyboard: true,\n    focus: true,\n    show: true\n  };\n  var DefaultType$4 = {\n    backdrop: '(boolean|string)',\n    keyboard: 'boolean',\n    focus: 'boolean',\n    show: 'boolean'\n  };\n  /**\n   * Class definition\n   */\n\n  var Modal = /*#__PURE__*/function () {\n    function Modal(element, config) {\n      this._config = this._getConfig(config);\n      this._element = element;\n      this._dialog = element.querySelector(SELECTOR_DIALOG);\n      this._backdrop = null;\n      this._isShown = false;\n      this._isBodyOverflowing = false;\n      this._ignoreBackdropClick = false;\n      this._isTransitioning = false;\n      this._scrollbarWidth = 0;\n    } // Getters\n\n\n    var _proto = Modal.prototype;\n\n    // Public\n    _proto.toggle = function toggle(relatedTarget) {\n      return this._isShown ? this.hide() : this.show(relatedTarget);\n    };\n\n    _proto.show = function show(relatedTarget) {\n      var _this = this;\n\n      if (this._isShown || this._isTransitioning) {\n        return;\n      }\n\n      var showEvent = $__default[\"default\"].Event(EVENT_SHOW$2, {\n        relatedTarget: relatedTarget\n      });\n      $__default[\"default\"](this._element).trigger(showEvent);\n\n      if (showEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      this._isShown = true;\n\n      if ($__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE$4)) {\n        this._isTransitioning = true;\n      }\n\n      this._checkScrollbar();\n\n      this._setScrollbar();\n\n      this._adjustDialog();\n\n      this._setEscapeEvent();\n\n      this._setResizeEvent();\n\n      $__default[\"default\"](this._element).on(EVENT_CLICK_DISMISS$1, SELECTOR_DATA_DISMISS$1, function (event) {\n        return _this.hide(event);\n      });\n      $__default[\"default\"](this._dialog).on(EVENT_MOUSEDOWN_DISMISS, function () {\n        $__default[\"default\"](_this._element).one(EVENT_MOUSEUP_DISMISS, function (event) {\n          if ($__default[\"default\"](event.target).is(_this._element)) {\n            _this._ignoreBackdropClick = true;\n          }\n        });\n      });\n\n      this._showBackdrop(function () {\n        return _this._showElement(relatedTarget);\n      });\n    };\n\n    _proto.hide = function hide(event) {\n      var _this2 = this;\n\n      if (event) {\n        event.preventDefault();\n      }\n\n      if (!this._isShown || this._isTransitioning) {\n        return;\n      }\n\n      var hideEvent = $__default[\"default\"].Event(EVENT_HIDE$2);\n      $__default[\"default\"](this._element).trigger(hideEvent);\n\n      if (!this._isShown || hideEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      this._isShown = false;\n      var transition = $__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE$4);\n\n      if (transition) {\n        this._isTransitioning = true;\n      }\n\n      this._setEscapeEvent();\n\n      this._setResizeEvent();\n\n      $__default[\"default\"](document).off(EVENT_FOCUSIN);\n      $__default[\"default\"](this._element).removeClass(CLASS_NAME_SHOW$4);\n      $__default[\"default\"](this._element).off(EVENT_CLICK_DISMISS$1);\n      $__default[\"default\"](this._dialog).off(EVENT_MOUSEDOWN_DISMISS);\n\n      if (transition) {\n        var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n        $__default[\"default\"](this._element).one(Util.TRANSITION_END, function (event) {\n          return _this2._hideModal(event);\n        }).emulateTransitionEnd(transitionDuration);\n      } else {\n        this._hideModal();\n      }\n    };\n\n    _proto.dispose = function dispose() {\n      [window, this._element, this._dialog].forEach(function (htmlElement) {\n        return $__default[\"default\"](htmlElement).off(EVENT_KEY$5);\n      });\n      /**\n       * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`\n       * Do not move `document` in `htmlElements` array\n       * It will remove `EVENT_CLICK_DATA_API` event that should remain\n       */\n\n      $__default[\"default\"](document).off(EVENT_FOCUSIN);\n      $__default[\"default\"].removeData(this._element, DATA_KEY$5);\n      this._config = null;\n      this._element = null;\n      this._dialog = null;\n      this._backdrop = null;\n      this._isShown = null;\n      this._isBodyOverflowing = null;\n      this._ignoreBackdropClick = null;\n      this._isTransitioning = null;\n      this._scrollbarWidth = null;\n    };\n\n    _proto.handleUpdate = function handleUpdate() {\n      this._adjustDialog();\n    } // Private\n    ;\n\n    _proto._getConfig = function _getConfig(config) {\n      config = _extends({}, Default$4, config);\n      Util.typeCheckConfig(NAME$5, config, DefaultType$4);\n      return config;\n    };\n\n    _proto._triggerBackdropTransition = function _triggerBackdropTransition() {\n      var _this3 = this;\n\n      var hideEventPrevented = $__default[\"default\"].Event(EVENT_HIDE_PREVENTED);\n      $__default[\"default\"](this._element).trigger(hideEventPrevented);\n\n      if (hideEventPrevented.isDefaultPrevented()) {\n        return;\n      }\n\n      var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n\n      if (!isModalOverflowing) {\n        this._element.style.overflowY = 'hidden';\n      }\n\n      this._element.classList.add(CLASS_NAME_STATIC);\n\n      var modalTransitionDuration = Util.getTransitionDurationFromElement(this._dialog);\n      $__default[\"default\"](this._element).off(Util.TRANSITION_END);\n      $__default[\"default\"](this._element).one(Util.TRANSITION_END, function () {\n        _this3._element.classList.remove(CLASS_NAME_STATIC);\n\n        if (!isModalOverflowing) {\n          $__default[\"default\"](_this3._element).one(Util.TRANSITION_END, function () {\n            _this3._element.style.overflowY = '';\n          }).emulateTransitionEnd(_this3._element, modalTransitionDuration);\n        }\n      }).emulateTransitionEnd(modalTransitionDuration);\n\n      this._element.focus();\n    };\n\n    _proto._showElement = function _showElement(relatedTarget) {\n      var _this4 = this;\n\n      var transition = $__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE$4);\n      var modalBody = this._dialog ? this._dialog.querySelector(SELECTOR_MODAL_BODY) : null;\n\n      if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n        // Don't move modal's DOM position\n        document.body.appendChild(this._element);\n      }\n\n      this._element.style.display = 'block';\n\n      this._element.removeAttribute('aria-hidden');\n\n      this._element.setAttribute('aria-modal', true);\n\n      this._element.setAttribute('role', 'dialog');\n\n      if ($__default[\"default\"](this._dialog).hasClass(CLASS_NAME_SCROLLABLE) && modalBody) {\n        modalBody.scrollTop = 0;\n      } else {\n        this._element.scrollTop = 0;\n      }\n\n      if (transition) {\n        Util.reflow(this._element);\n      }\n\n      $__default[\"default\"](this._element).addClass(CLASS_NAME_SHOW$4);\n\n      if (this._config.focus) {\n        this._enforceFocus();\n      }\n\n      var shownEvent = $__default[\"default\"].Event(EVENT_SHOWN$2, {\n        relatedTarget: relatedTarget\n      });\n\n      var transitionComplete = function transitionComplete() {\n        if (_this4._config.focus) {\n          _this4._element.focus();\n        }\n\n        _this4._isTransitioning = false;\n        $__default[\"default\"](_this4._element).trigger(shownEvent);\n      };\n\n      if (transition) {\n        var transitionDuration = Util.getTransitionDurationFromElement(this._dialog);\n        $__default[\"default\"](this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration);\n      } else {\n        transitionComplete();\n      }\n    };\n\n    _proto._enforceFocus = function _enforceFocus() {\n      var _this5 = this;\n\n      $__default[\"default\"](document).off(EVENT_FOCUSIN) // Guard against infinite focus loop\n      .on(EVENT_FOCUSIN, function (event) {\n        if (document !== event.target && _this5._element !== event.target && $__default[\"default\"](_this5._element).has(event.target).length === 0) {\n          _this5._element.focus();\n        }\n      });\n    };\n\n    _proto._setEscapeEvent = function _setEscapeEvent() {\n      var _this6 = this;\n\n      if (this._isShown) {\n        $__default[\"default\"](this._element).on(EVENT_KEYDOWN_DISMISS, function (event) {\n          if (_this6._config.keyboard && event.which === ESCAPE_KEYCODE) {\n            event.preventDefault();\n\n            _this6.hide();\n          } else if (!_this6._config.keyboard && event.which === ESCAPE_KEYCODE) {\n            _this6._triggerBackdropTransition();\n          }\n        });\n      } else if (!this._isShown) {\n        $__default[\"default\"](this._element).off(EVENT_KEYDOWN_DISMISS);\n      }\n    };\n\n    _proto._setResizeEvent = function _setResizeEvent() {\n      var _this7 = this;\n\n      if (this._isShown) {\n        $__default[\"default\"](window).on(EVENT_RESIZE, function (event) {\n          return _this7.handleUpdate(event);\n        });\n      } else {\n        $__default[\"default\"](window).off(EVENT_RESIZE);\n      }\n    };\n\n    _proto._hideModal = function _hideModal() {\n      var _this8 = this;\n\n      this._element.style.display = 'none';\n\n      this._element.setAttribute('aria-hidden', true);\n\n      this._element.removeAttribute('aria-modal');\n\n      this._element.removeAttribute('role');\n\n      this._isTransitioning = false;\n\n      this._showBackdrop(function () {\n        $__default[\"default\"](document.body).removeClass(CLASS_NAME_OPEN);\n\n        _this8._resetAdjustments();\n\n        _this8._resetScrollbar();\n\n        $__default[\"default\"](_this8._element).trigger(EVENT_HIDDEN$2);\n      });\n    };\n\n    _proto._removeBackdrop = function _removeBackdrop() {\n      if (this._backdrop) {\n        $__default[\"default\"](this._backdrop).remove();\n        this._backdrop = null;\n      }\n    };\n\n    _proto._showBackdrop = function _showBackdrop(callback) {\n      var _this9 = this;\n\n      var animate = $__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE$4) ? CLASS_NAME_FADE$4 : '';\n\n      if (this._isShown && this._config.backdrop) {\n        this._backdrop = document.createElement('div');\n        this._backdrop.className = CLASS_NAME_BACKDROP;\n\n        if (animate) {\n          this._backdrop.classList.add(animate);\n        }\n\n        $__default[\"default\"](this._backdrop).appendTo(document.body);\n        $__default[\"default\"](this._element).on(EVENT_CLICK_DISMISS$1, function (event) {\n          if (_this9._ignoreBackdropClick) {\n            _this9._ignoreBackdropClick = false;\n            return;\n          }\n\n          if (event.target !== event.currentTarget) {\n            return;\n          }\n\n          if (_this9._config.backdrop === 'static') {\n            _this9._triggerBackdropTransition();\n          } else {\n            _this9.hide();\n          }\n        });\n\n        if (animate) {\n          Util.reflow(this._backdrop);\n        }\n\n        $__default[\"default\"](this._backdrop).addClass(CLASS_NAME_SHOW$4);\n\n        if (!callback) {\n          return;\n        }\n\n        if (!animate) {\n          callback();\n          return;\n        }\n\n        var backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);\n        $__default[\"default\"](this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration);\n      } else if (!this._isShown && this._backdrop) {\n        $__default[\"default\"](this._backdrop).removeClass(CLASS_NAME_SHOW$4);\n\n        var callbackRemove = function callbackRemove() {\n          _this9._removeBackdrop();\n\n          if (callback) {\n            callback();\n          }\n        };\n\n        if ($__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE$4)) {\n          var _backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);\n\n          $__default[\"default\"](this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration);\n        } else {\n          callbackRemove();\n        }\n      } else if (callback) {\n        callback();\n      }\n    } // ----------------------------------------------------------------------\n    // the following methods are used to handle overflowing modals\n    // todo (fat): these should probably be refactored out of modal.js\n    // ----------------------------------------------------------------------\n    ;\n\n    _proto._adjustDialog = function _adjustDialog() {\n      var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n\n      if (!this._isBodyOverflowing && isModalOverflowing) {\n        this._element.style.paddingLeft = this._scrollbarWidth + \"px\";\n      }\n\n      if (this._isBodyOverflowing && !isModalOverflowing) {\n        this._element.style.paddingRight = this._scrollbarWidth + \"px\";\n      }\n    };\n\n    _proto._resetAdjustments = function _resetAdjustments() {\n      this._element.style.paddingLeft = '';\n      this._element.style.paddingRight = '';\n    };\n\n    _proto._checkScrollbar = function _checkScrollbar() {\n      var rect = document.body.getBoundingClientRect();\n      this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth;\n      this._scrollbarWidth = this._getScrollbarWidth();\n    };\n\n    _proto._setScrollbar = function _setScrollbar() {\n      var _this10 = this;\n\n      if (this._isBodyOverflowing) {\n        // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n        //   while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n        var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));\n        var stickyContent = [].slice.call(document.querySelectorAll(SELECTOR_STICKY_CONTENT)); // Adjust fixed content padding\n\n        $__default[\"default\"](fixedContent).each(function (index, element) {\n          var actualPadding = element.style.paddingRight;\n          var calculatedPadding = $__default[\"default\"](element).css('padding-right');\n          $__default[\"default\"](element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this10._scrollbarWidth + \"px\");\n        }); // Adjust sticky content margin\n\n        $__default[\"default\"](stickyContent).each(function (index, element) {\n          var actualMargin = element.style.marginRight;\n          var calculatedMargin = $__default[\"default\"](element).css('margin-right');\n          $__default[\"default\"](element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this10._scrollbarWidth + \"px\");\n        }); // Adjust body padding\n\n        var actualPadding = document.body.style.paddingRight;\n        var calculatedPadding = $__default[\"default\"](document.body).css('padding-right');\n        $__default[\"default\"](document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + \"px\");\n      }\n\n      $__default[\"default\"](document.body).addClass(CLASS_NAME_OPEN);\n    };\n\n    _proto._resetScrollbar = function _resetScrollbar() {\n      // Restore fixed content padding\n      var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));\n      $__default[\"default\"](fixedContent).each(function (index, element) {\n        var padding = $__default[\"default\"](element).data('padding-right');\n        $__default[\"default\"](element).removeData('padding-right');\n        element.style.paddingRight = padding ? padding : '';\n      }); // Restore sticky content\n\n      var elements = [].slice.call(document.querySelectorAll(\"\" + SELECTOR_STICKY_CONTENT));\n      $__default[\"default\"](elements).each(function (index, element) {\n        var margin = $__default[\"default\"](element).data('margin-right');\n\n        if (typeof margin !== 'undefined') {\n          $__default[\"default\"](element).css('margin-right', margin).removeData('margin-right');\n        }\n      }); // Restore body padding\n\n      var padding = $__default[\"default\"](document.body).data('padding-right');\n      $__default[\"default\"](document.body).removeData('padding-right');\n      document.body.style.paddingRight = padding ? padding : '';\n    };\n\n    _proto._getScrollbarWidth = function _getScrollbarWidth() {\n      // thx d.walsh\n      var scrollDiv = document.createElement('div');\n      scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER;\n      document.body.appendChild(scrollDiv);\n      var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;\n      document.body.removeChild(scrollDiv);\n      return scrollbarWidth;\n    } // Static\n    ;\n\n    Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {\n      return this.each(function () {\n        var data = $__default[\"default\"](this).data(DATA_KEY$5);\n\n        var _config = _extends({}, Default$4, $__default[\"default\"](this).data(), typeof config === 'object' && config ? config : {});\n\n        if (!data) {\n          data = new Modal(this, _config);\n          $__default[\"default\"](this).data(DATA_KEY$5, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config](relatedTarget);\n        } else if (_config.show) {\n          data.show(relatedTarget);\n        }\n      });\n    };\n\n    _createClass(Modal, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$5;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$4;\n      }\n    }]);\n\n    return Modal;\n  }();\n  /**\n   * Data API implementation\n   */\n\n\n  $__default[\"default\"](document).on(EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) {\n    var _this11 = this;\n\n    var target;\n    var selector = Util.getSelectorFromElement(this);\n\n    if (selector) {\n      target = document.querySelector(selector);\n    }\n\n    var config = $__default[\"default\"](target).data(DATA_KEY$5) ? 'toggle' : _extends({}, $__default[\"default\"](target).data(), $__default[\"default\"](this).data());\n\n    if (this.tagName === 'A' || this.tagName === 'AREA') {\n      event.preventDefault();\n    }\n\n    var $target = $__default[\"default\"](target).one(EVENT_SHOW$2, function (showEvent) {\n      if (showEvent.isDefaultPrevented()) {\n        // Only register focus restorer if modal will actually get shown\n        return;\n      }\n\n      $target.one(EVENT_HIDDEN$2, function () {\n        if ($__default[\"default\"](_this11).is(':visible')) {\n          _this11.focus();\n        }\n      });\n    });\n\n    Modal._jQueryInterface.call($__default[\"default\"](target), config, this);\n  });\n  /**\n   * jQuery\n   */\n\n  $__default[\"default\"].fn[NAME$5] = Modal._jQueryInterface;\n  $__default[\"default\"].fn[NAME$5].Constructor = Modal;\n\n  $__default[\"default\"].fn[NAME$5].noConflict = function () {\n    $__default[\"default\"].fn[NAME$5] = JQUERY_NO_CONFLICT$5;\n    return Modal._jQueryInterface;\n  };\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v4.6.2): tools/sanitizer.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  var uriAttrs = ['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href'];\n  var ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\n  var DefaultWhitelist = {\n    // Global attributes allowed on any supplied element below.\n    '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n    a: ['target', 'href', 'title', 'rel'],\n    area: [],\n    b: [],\n    br: [],\n    col: [],\n    code: [],\n    div: [],\n    em: [],\n    hr: [],\n    h1: [],\n    h2: [],\n    h3: [],\n    h4: [],\n    h5: [],\n    h6: [],\n    i: [],\n    img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n    li: [],\n    ol: [],\n    p: [],\n    pre: [],\n    s: [],\n    small: [],\n    span: [],\n    sub: [],\n    sup: [],\n    strong: [],\n    u: [],\n    ul: []\n  };\n  /**\n   * A pattern that recognizes a commonly useful subset of URLs that are safe.\n   *\n   * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n   */\n\n  var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i;\n  /**\n   * A pattern that matches safe data URLs. Only matches image, video and audio types.\n   *\n   * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n   */\n\n  var DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i;\n\n  function allowedAttribute(attr, allowedAttributeList) {\n    var attrName = attr.nodeName.toLowerCase();\n\n    if (allowedAttributeList.indexOf(attrName) !== -1) {\n      if (uriAttrs.indexOf(attrName) !== -1) {\n        return Boolean(SAFE_URL_PATTERN.test(attr.nodeValue) || DATA_URL_PATTERN.test(attr.nodeValue));\n      }\n\n      return true;\n    }\n\n    var regExp = allowedAttributeList.filter(function (attrRegex) {\n      return attrRegex instanceof RegExp;\n    }); // Check if a regular expression validates the attribute.\n\n    for (var i = 0, len = regExp.length; i < len; i++) {\n      if (regExp[i].test(attrName)) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n    if (unsafeHtml.length === 0) {\n      return unsafeHtml;\n    }\n\n    if (sanitizeFn && typeof sanitizeFn === 'function') {\n      return sanitizeFn(unsafeHtml);\n    }\n\n    var domParser = new window.DOMParser();\n    var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');\n    var whitelistKeys = Object.keys(whiteList);\n    var elements = [].slice.call(createdDocument.body.querySelectorAll('*'));\n\n    var _loop = function _loop(i, len) {\n      var el = elements[i];\n      var elName = el.nodeName.toLowerCase();\n\n      if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {\n        el.parentNode.removeChild(el);\n        return \"continue\";\n      }\n\n      var attributeList = [].slice.call(el.attributes); // eslint-disable-next-line unicorn/prefer-spread\n\n      var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []);\n      attributeList.forEach(function (attr) {\n        if (!allowedAttribute(attr, whitelistedAttributes)) {\n          el.removeAttribute(attr.nodeName);\n        }\n      });\n    };\n\n    for (var i = 0, len = elements.length; i < len; i++) {\n      var _ret = _loop(i);\n\n      if (_ret === \"continue\") continue;\n    }\n\n    return createdDocument.body.innerHTML;\n  }\n\n  /**\n   * Constants\n   */\n\n  var NAME$4 = 'tooltip';\n  var VERSION$4 = '4.6.2';\n  var DATA_KEY$4 = 'bs.tooltip';\n  var EVENT_KEY$4 = \".\" + DATA_KEY$4;\n  var JQUERY_NO_CONFLICT$4 = $__default[\"default\"].fn[NAME$4];\n  var CLASS_PREFIX$1 = 'bs-tooltip';\n  var BSCLS_PREFIX_REGEX$1 = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX$1 + \"\\\\S+\", 'g');\n  var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn'];\n  var CLASS_NAME_FADE$3 = 'fade';\n  var CLASS_NAME_SHOW$3 = 'show';\n  var HOVER_STATE_SHOW = 'show';\n  var HOVER_STATE_OUT = 'out';\n  var SELECTOR_TOOLTIP_INNER = '.tooltip-inner';\n  var SELECTOR_ARROW = '.arrow';\n  var TRIGGER_HOVER = 'hover';\n  var TRIGGER_FOCUS = 'focus';\n  var TRIGGER_CLICK = 'click';\n  var TRIGGER_MANUAL = 'manual';\n  var AttachmentMap = {\n    AUTO: 'auto',\n    TOP: 'top',\n    RIGHT: 'right',\n    BOTTOM: 'bottom',\n    LEFT: 'left'\n  };\n  var Default$3 = {\n    animation: true,\n    template: '<div class=\"tooltip\" role=\"tooltip\">' + '<div class=\"arrow\"></div>' + '<div class=\"tooltip-inner\"></div></div>',\n    trigger: 'hover focus',\n    title: '',\n    delay: 0,\n    html: false,\n    selector: false,\n    placement: 'top',\n    offset: 0,\n    container: false,\n    fallbackPlacement: 'flip',\n    boundary: 'scrollParent',\n    customClass: '',\n    sanitize: true,\n    sanitizeFn: null,\n    whiteList: DefaultWhitelist,\n    popperConfig: null\n  };\n  var DefaultType$3 = {\n    animation: 'boolean',\n    template: 'string',\n    title: '(string|element|function)',\n    trigger: 'string',\n    delay: '(number|object)',\n    html: 'boolean',\n    selector: '(string|boolean)',\n    placement: '(string|function)',\n    offset: '(number|string|function)',\n    container: '(string|element|boolean)',\n    fallbackPlacement: '(string|array)',\n    boundary: '(string|element)',\n    customClass: '(string|function)',\n    sanitize: 'boolean',\n    sanitizeFn: '(null|function)',\n    whiteList: 'object',\n    popperConfig: '(null|object)'\n  };\n  var Event$1 = {\n    HIDE: \"hide\" + EVENT_KEY$4,\n    HIDDEN: \"hidden\" + EVENT_KEY$4,\n    SHOW: \"show\" + EVENT_KEY$4,\n    SHOWN: \"shown\" + EVENT_KEY$4,\n    INSERTED: \"inserted\" + EVENT_KEY$4,\n    CLICK: \"click\" + EVENT_KEY$4,\n    FOCUSIN: \"focusin\" + EVENT_KEY$4,\n    FOCUSOUT: \"focusout\" + EVENT_KEY$4,\n    MOUSEENTER: \"mouseenter\" + EVENT_KEY$4,\n    MOUSELEAVE: \"mouseleave\" + EVENT_KEY$4\n  };\n  /**\n   * Class definition\n   */\n\n  var Tooltip = /*#__PURE__*/function () {\n    function Tooltip(element, config) {\n      if (typeof Popper__default[\"default\"] === 'undefined') {\n        throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)');\n      } // Private\n\n\n      this._isEnabled = true;\n      this._timeout = 0;\n      this._hoverState = '';\n      this._activeTrigger = {};\n      this._popper = null; // Protected\n\n      this.element = element;\n      this.config = this._getConfig(config);\n      this.tip = null;\n\n      this._setListeners();\n    } // Getters\n\n\n    var _proto = Tooltip.prototype;\n\n    // Public\n    _proto.enable = function enable() {\n      this._isEnabled = true;\n    };\n\n    _proto.disable = function disable() {\n      this._isEnabled = false;\n    };\n\n    _proto.toggleEnabled = function toggleEnabled() {\n      this._isEnabled = !this._isEnabled;\n    };\n\n    _proto.toggle = function toggle(event) {\n      if (!this._isEnabled) {\n        return;\n      }\n\n      if (event) {\n        var dataKey = this.constructor.DATA_KEY;\n        var context = $__default[\"default\"](event.currentTarget).data(dataKey);\n\n        if (!context) {\n          context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n          $__default[\"default\"](event.currentTarget).data(dataKey, context);\n        }\n\n        context._activeTrigger.click = !context._activeTrigger.click;\n\n        if (context._isWithActiveTrigger()) {\n          context._enter(null, context);\n        } else {\n          context._leave(null, context);\n        }\n      } else {\n        if ($__default[\"default\"](this.getTipElement()).hasClass(CLASS_NAME_SHOW$3)) {\n          this._leave(null, this);\n\n          return;\n        }\n\n        this._enter(null, this);\n      }\n    };\n\n    _proto.dispose = function dispose() {\n      clearTimeout(this._timeout);\n      $__default[\"default\"].removeData(this.element, this.constructor.DATA_KEY);\n      $__default[\"default\"](this.element).off(this.constructor.EVENT_KEY);\n      $__default[\"default\"](this.element).closest('.modal').off('hide.bs.modal', this._hideModalHandler);\n\n      if (this.tip) {\n        $__default[\"default\"](this.tip).remove();\n      }\n\n      this._isEnabled = null;\n      this._timeout = null;\n      this._hoverState = null;\n      this._activeTrigger = null;\n\n      if (this._popper) {\n        this._popper.destroy();\n      }\n\n      this._popper = null;\n      this.element = null;\n      this.config = null;\n      this.tip = null;\n    };\n\n    _proto.show = function show() {\n      var _this = this;\n\n      if ($__default[\"default\"](this.element).css('display') === 'none') {\n        throw new Error('Please use show on visible elements');\n      }\n\n      var showEvent = $__default[\"default\"].Event(this.constructor.Event.SHOW);\n\n      if (this.isWithContent() && this._isEnabled) {\n        $__default[\"default\"](this.element).trigger(showEvent);\n        var shadowRoot = Util.findShadowRoot(this.element);\n        var isInTheDom = $__default[\"default\"].contains(shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement, this.element);\n\n        if (showEvent.isDefaultPrevented() || !isInTheDom) {\n          return;\n        }\n\n        var tip = this.getTipElement();\n        var tipId = Util.getUID(this.constructor.NAME);\n        tip.setAttribute('id', tipId);\n        this.element.setAttribute('aria-describedby', tipId);\n        this.setContent();\n\n        if (this.config.animation) {\n          $__default[\"default\"](tip).addClass(CLASS_NAME_FADE$3);\n        }\n\n        var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement;\n\n        var attachment = this._getAttachment(placement);\n\n        this.addAttachmentClass(attachment);\n\n        var container = this._getContainer();\n\n        $__default[\"default\"](tip).data(this.constructor.DATA_KEY, this);\n\n        if (!$__default[\"default\"].contains(this.element.ownerDocument.documentElement, this.tip)) {\n          $__default[\"default\"](tip).appendTo(container);\n        }\n\n        $__default[\"default\"](this.element).trigger(this.constructor.Event.INSERTED);\n        this._popper = new Popper__default[\"default\"](this.element, tip, this._getPopperConfig(attachment));\n        $__default[\"default\"](tip).addClass(CLASS_NAME_SHOW$3);\n        $__default[\"default\"](tip).addClass(this.config.customClass); // If this is a touch-enabled device we add extra\n        // empty mouseover listeners to the body's immediate children;\n        // only needed because of broken event delegation on iOS\n        // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n        if ('ontouchstart' in document.documentElement) {\n          $__default[\"default\"](document.body).children().on('mouseover', null, $__default[\"default\"].noop);\n        }\n\n        var complete = function complete() {\n          if (_this.config.animation) {\n            _this._fixTransition();\n          }\n\n          var prevHoverState = _this._hoverState;\n          _this._hoverState = null;\n          $__default[\"default\"](_this.element).trigger(_this.constructor.Event.SHOWN);\n\n          if (prevHoverState === HOVER_STATE_OUT) {\n            _this._leave(null, _this);\n          }\n        };\n\n        if ($__default[\"default\"](this.tip).hasClass(CLASS_NAME_FADE$3)) {\n          var transitionDuration = Util.getTransitionDurationFromElement(this.tip);\n          $__default[\"default\"](this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n        } else {\n          complete();\n        }\n      }\n    };\n\n    _proto.hide = function hide(callback) {\n      var _this2 = this;\n\n      var tip = this.getTipElement();\n      var hideEvent = $__default[\"default\"].Event(this.constructor.Event.HIDE);\n\n      var complete = function complete() {\n        if (_this2._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {\n          tip.parentNode.removeChild(tip);\n        }\n\n        _this2._cleanTipClass();\n\n        _this2.element.removeAttribute('aria-describedby');\n\n        $__default[\"default\"](_this2.element).trigger(_this2.constructor.Event.HIDDEN);\n\n        if (_this2._popper !== null) {\n          _this2._popper.destroy();\n        }\n\n        if (callback) {\n          callback();\n        }\n      };\n\n      $__default[\"default\"](this.element).trigger(hideEvent);\n\n      if (hideEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      $__default[\"default\"](tip).removeClass(CLASS_NAME_SHOW$3); // If this is a touch-enabled device we remove the extra\n      // empty mouseover listeners we added for iOS support\n\n      if ('ontouchstart' in document.documentElement) {\n        $__default[\"default\"](document.body).children().off('mouseover', null, $__default[\"default\"].noop);\n      }\n\n      this._activeTrigger[TRIGGER_CLICK] = false;\n      this._activeTrigger[TRIGGER_FOCUS] = false;\n      this._activeTrigger[TRIGGER_HOVER] = false;\n\n      if ($__default[\"default\"](this.tip).hasClass(CLASS_NAME_FADE$3)) {\n        var transitionDuration = Util.getTransitionDurationFromElement(tip);\n        $__default[\"default\"](tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n      } else {\n        complete();\n      }\n\n      this._hoverState = '';\n    };\n\n    _proto.update = function update() {\n      if (this._popper !== null) {\n        this._popper.scheduleUpdate();\n      }\n    } // Protected\n    ;\n\n    _proto.isWithContent = function isWithContent() {\n      return Boolean(this.getTitle());\n    };\n\n    _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n      $__default[\"default\"](this.getTipElement()).addClass(CLASS_PREFIX$1 + \"-\" + attachment);\n    };\n\n    _proto.getTipElement = function getTipElement() {\n      this.tip = this.tip || $__default[\"default\"](this.config.template)[0];\n      return this.tip;\n    };\n\n    _proto.setContent = function setContent() {\n      var tip = this.getTipElement();\n      this.setElementContent($__default[\"default\"](tip.querySelectorAll(SELECTOR_TOOLTIP_INNER)), this.getTitle());\n      $__default[\"default\"](tip).removeClass(CLASS_NAME_FADE$3 + \" \" + CLASS_NAME_SHOW$3);\n    };\n\n    _proto.setElementContent = function setElementContent($element, content) {\n      if (typeof content === 'object' && (content.nodeType || content.jquery)) {\n        // Content is a DOM node or a jQuery\n        if (this.config.html) {\n          if (!$__default[\"default\"](content).parent().is($element)) {\n            $element.empty().append(content);\n          }\n        } else {\n          $element.text($__default[\"default\"](content).text());\n        }\n\n        return;\n      }\n\n      if (this.config.html) {\n        if (this.config.sanitize) {\n          content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn);\n        }\n\n        $element.html(content);\n      } else {\n        $element.text(content);\n      }\n    };\n\n    _proto.getTitle = function getTitle() {\n      var title = this.element.getAttribute('data-original-title');\n\n      if (!title) {\n        title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title;\n      }\n\n      return title;\n    } // Private\n    ;\n\n    _proto._getPopperConfig = function _getPopperConfig(attachment) {\n      var _this3 = this;\n\n      var defaultBsConfig = {\n        placement: attachment,\n        modifiers: {\n          offset: this._getOffset(),\n          flip: {\n            behavior: this.config.fallbackPlacement\n          },\n          arrow: {\n            element: SELECTOR_ARROW\n          },\n          preventOverflow: {\n            boundariesElement: this.config.boundary\n          }\n        },\n        onCreate: function onCreate(data) {\n          if (data.originalPlacement !== data.placement) {\n            _this3._handlePopperPlacementChange(data);\n          }\n        },\n        onUpdate: function onUpdate(data) {\n          return _this3._handlePopperPlacementChange(data);\n        }\n      };\n      return _extends({}, defaultBsConfig, this.config.popperConfig);\n    };\n\n    _proto._getOffset = function _getOffset() {\n      var _this4 = this;\n\n      var offset = {};\n\n      if (typeof this.config.offset === 'function') {\n        offset.fn = function (data) {\n          data.offsets = _extends({}, data.offsets, _this4.config.offset(data.offsets, _this4.element));\n          return data;\n        };\n      } else {\n        offset.offset = this.config.offset;\n      }\n\n      return offset;\n    };\n\n    _proto._getContainer = function _getContainer() {\n      if (this.config.container === false) {\n        return document.body;\n      }\n\n      if (Util.isElement(this.config.container)) {\n        return $__default[\"default\"](this.config.container);\n      }\n\n      return $__default[\"default\"](document).find(this.config.container);\n    };\n\n    _proto._getAttachment = function _getAttachment(placement) {\n      return AttachmentMap[placement.toUpperCase()];\n    };\n\n    _proto._setListeners = function _setListeners() {\n      var _this5 = this;\n\n      var triggers = this.config.trigger.split(' ');\n      triggers.forEach(function (trigger) {\n        if (trigger === 'click') {\n          $__default[\"default\"](_this5.element).on(_this5.constructor.Event.CLICK, _this5.config.selector, function (event) {\n            return _this5.toggle(event);\n          });\n        } else if (trigger !== TRIGGER_MANUAL) {\n          var eventIn = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSEENTER : _this5.constructor.Event.FOCUSIN;\n          var eventOut = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSELEAVE : _this5.constructor.Event.FOCUSOUT;\n          $__default[\"default\"](_this5.element).on(eventIn, _this5.config.selector, function (event) {\n            return _this5._enter(event);\n          }).on(eventOut, _this5.config.selector, function (event) {\n            return _this5._leave(event);\n          });\n        }\n      });\n\n      this._hideModalHandler = function () {\n        if (_this5.element) {\n          _this5.hide();\n        }\n      };\n\n      $__default[\"default\"](this.element).closest('.modal').on('hide.bs.modal', this._hideModalHandler);\n\n      if (this.config.selector) {\n        this.config = _extends({}, this.config, {\n          trigger: 'manual',\n          selector: ''\n        });\n      } else {\n        this._fixTitle();\n      }\n    };\n\n    _proto._fixTitle = function _fixTitle() {\n      var titleType = typeof this.element.getAttribute('data-original-title');\n\n      if (this.element.getAttribute('title') || titleType !== 'string') {\n        this.element.setAttribute('data-original-title', this.element.getAttribute('title') || '');\n        this.element.setAttribute('title', '');\n      }\n    };\n\n    _proto._enter = function _enter(event, context) {\n      var dataKey = this.constructor.DATA_KEY;\n      context = context || $__default[\"default\"](event.currentTarget).data(dataKey);\n\n      if (!context) {\n        context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n        $__default[\"default\"](event.currentTarget).data(dataKey, context);\n      }\n\n      if (event) {\n        context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;\n      }\n\n      if ($__default[\"default\"](context.getTipElement()).hasClass(CLASS_NAME_SHOW$3) || context._hoverState === HOVER_STATE_SHOW) {\n        context._hoverState = HOVER_STATE_SHOW;\n        return;\n      }\n\n      clearTimeout(context._timeout);\n      context._hoverState = HOVER_STATE_SHOW;\n\n      if (!context.config.delay || !context.config.delay.show) {\n        context.show();\n        return;\n      }\n\n      context._timeout = setTimeout(function () {\n        if (context._hoverState === HOVER_STATE_SHOW) {\n          context.show();\n        }\n      }, context.config.delay.show);\n    };\n\n    _proto._leave = function _leave(event, context) {\n      var dataKey = this.constructor.DATA_KEY;\n      context = context || $__default[\"default\"](event.currentTarget).data(dataKey);\n\n      if (!context) {\n        context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n        $__default[\"default\"](event.currentTarget).data(dataKey, context);\n      }\n\n      if (event) {\n        context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = false;\n      }\n\n      if (context._isWithActiveTrigger()) {\n        return;\n      }\n\n      clearTimeout(context._timeout);\n      context._hoverState = HOVER_STATE_OUT;\n\n      if (!context.config.delay || !context.config.delay.hide) {\n        context.hide();\n        return;\n      }\n\n      context._timeout = setTimeout(function () {\n        if (context._hoverState === HOVER_STATE_OUT) {\n          context.hide();\n        }\n      }, context.config.delay.hide);\n    };\n\n    _proto._isWithActiveTrigger = function _isWithActiveTrigger() {\n      for (var trigger in this._activeTrigger) {\n        if (this._activeTrigger[trigger]) {\n          return true;\n        }\n      }\n\n      return false;\n    };\n\n    _proto._getConfig = function _getConfig(config) {\n      var dataAttributes = $__default[\"default\"](this.element).data();\n      Object.keys(dataAttributes).forEach(function (dataAttr) {\n        if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {\n          delete dataAttributes[dataAttr];\n        }\n      });\n      config = _extends({}, this.constructor.Default, dataAttributes, typeof config === 'object' && config ? config : {});\n\n      if (typeof config.delay === 'number') {\n        config.delay = {\n          show: config.delay,\n          hide: config.delay\n        };\n      }\n\n      if (typeof config.title === 'number') {\n        config.title = config.title.toString();\n      }\n\n      if (typeof config.content === 'number') {\n        config.content = config.content.toString();\n      }\n\n      Util.typeCheckConfig(NAME$4, config, this.constructor.DefaultType);\n\n      if (config.sanitize) {\n        config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn);\n      }\n\n      return config;\n    };\n\n    _proto._getDelegateConfig = function _getDelegateConfig() {\n      var config = {};\n\n      if (this.config) {\n        for (var key in this.config) {\n          if (this.constructor.Default[key] !== this.config[key]) {\n            config[key] = this.config[key];\n          }\n        }\n      }\n\n      return config;\n    };\n\n    _proto._cleanTipClass = function _cleanTipClass() {\n      var $tip = $__default[\"default\"](this.getTipElement());\n      var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX$1);\n\n      if (tabClass !== null && tabClass.length) {\n        $tip.removeClass(tabClass.join(''));\n      }\n    };\n\n    _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) {\n      this.tip = popperData.instance.popper;\n\n      this._cleanTipClass();\n\n      this.addAttachmentClass(this._getAttachment(popperData.placement));\n    };\n\n    _proto._fixTransition = function _fixTransition() {\n      var tip = this.getTipElement();\n      var initConfigAnimation = this.config.animation;\n\n      if (tip.getAttribute('x-placement') !== null) {\n        return;\n      }\n\n      $__default[\"default\"](tip).removeClass(CLASS_NAME_FADE$3);\n      this.config.animation = false;\n      this.hide();\n      this.show();\n      this.config.animation = initConfigAnimation;\n    } // Static\n    ;\n\n    Tooltip._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var $element = $__default[\"default\"](this);\n        var data = $element.data(DATA_KEY$4);\n\n        var _config = typeof config === 'object' && config;\n\n        if (!data && /dispose|hide/.test(config)) {\n          return;\n        }\n\n        if (!data) {\n          data = new Tooltip(this, _config);\n          $element.data(DATA_KEY$4, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config]();\n        }\n      });\n    };\n\n    _createClass(Tooltip, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$4;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$3;\n      }\n    }, {\n      key: \"NAME\",\n      get: function get() {\n        return NAME$4;\n      }\n    }, {\n      key: \"DATA_KEY\",\n      get: function get() {\n        return DATA_KEY$4;\n      }\n    }, {\n      key: \"Event\",\n      get: function get() {\n        return Event$1;\n      }\n    }, {\n      key: \"EVENT_KEY\",\n      get: function get() {\n        return EVENT_KEY$4;\n      }\n    }, {\n      key: \"DefaultType\",\n      get: function get() {\n        return DefaultType$3;\n      }\n    }]);\n\n    return Tooltip;\n  }();\n  /**\n   * jQuery\n   */\n\n\n  $__default[\"default\"].fn[NAME$4] = Tooltip._jQueryInterface;\n  $__default[\"default\"].fn[NAME$4].Constructor = Tooltip;\n\n  $__default[\"default\"].fn[NAME$4].noConflict = function () {\n    $__default[\"default\"].fn[NAME$4] = JQUERY_NO_CONFLICT$4;\n    return Tooltip._jQueryInterface;\n  };\n\n  /**\n   * Constants\n   */\n\n  var NAME$3 = 'popover';\n  var VERSION$3 = '4.6.2';\n  var DATA_KEY$3 = 'bs.popover';\n  var EVENT_KEY$3 = \".\" + DATA_KEY$3;\n  var JQUERY_NO_CONFLICT$3 = $__default[\"default\"].fn[NAME$3];\n  var CLASS_PREFIX = 'bs-popover';\n  var BSCLS_PREFIX_REGEX = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX + \"\\\\S+\", 'g');\n  var CLASS_NAME_FADE$2 = 'fade';\n  var CLASS_NAME_SHOW$2 = 'show';\n  var SELECTOR_TITLE = '.popover-header';\n  var SELECTOR_CONTENT = '.popover-body';\n\n  var Default$2 = _extends({}, Tooltip.Default, {\n    placement: 'right',\n    trigger: 'click',\n    content: '',\n    template: '<div class=\"popover\" role=\"tooltip\">' + '<div class=\"arrow\"></div>' + '<h3 class=\"popover-header\"></h3>' + '<div class=\"popover-body\"></div></div>'\n  });\n\n  var DefaultType$2 = _extends({}, Tooltip.DefaultType, {\n    content: '(string|element|function)'\n  });\n\n  var Event = {\n    HIDE: \"hide\" + EVENT_KEY$3,\n    HIDDEN: \"hidden\" + EVENT_KEY$3,\n    SHOW: \"show\" + EVENT_KEY$3,\n    SHOWN: \"shown\" + EVENT_KEY$3,\n    INSERTED: \"inserted\" + EVENT_KEY$3,\n    CLICK: \"click\" + EVENT_KEY$3,\n    FOCUSIN: \"focusin\" + EVENT_KEY$3,\n    FOCUSOUT: \"focusout\" + EVENT_KEY$3,\n    MOUSEENTER: \"mouseenter\" + EVENT_KEY$3,\n    MOUSELEAVE: \"mouseleave\" + EVENT_KEY$3\n  };\n  /**\n   * Class definition\n   */\n\n  var Popover = /*#__PURE__*/function (_Tooltip) {\n    _inheritsLoose(Popover, _Tooltip);\n\n    function Popover() {\n      return _Tooltip.apply(this, arguments) || this;\n    }\n\n    var _proto = Popover.prototype;\n\n    // Overrides\n    _proto.isWithContent = function isWithContent() {\n      return this.getTitle() || this._getContent();\n    };\n\n    _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n      $__default[\"default\"](this.getTipElement()).addClass(CLASS_PREFIX + \"-\" + attachment);\n    };\n\n    _proto.getTipElement = function getTipElement() {\n      this.tip = this.tip || $__default[\"default\"](this.config.template)[0];\n      return this.tip;\n    };\n\n    _proto.setContent = function setContent() {\n      var $tip = $__default[\"default\"](this.getTipElement()); // We use append for html objects to maintain js events\n\n      this.setElementContent($tip.find(SELECTOR_TITLE), this.getTitle());\n\n      var content = this._getContent();\n\n      if (typeof content === 'function') {\n        content = content.call(this.element);\n      }\n\n      this.setElementContent($tip.find(SELECTOR_CONTENT), content);\n      $tip.removeClass(CLASS_NAME_FADE$2 + \" \" + CLASS_NAME_SHOW$2);\n    } // Private\n    ;\n\n    _proto._getContent = function _getContent() {\n      return this.element.getAttribute('data-content') || this.config.content;\n    };\n\n    _proto._cleanTipClass = function _cleanTipClass() {\n      var $tip = $__default[\"default\"](this.getTipElement());\n      var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);\n\n      if (tabClass !== null && tabClass.length > 0) {\n        $tip.removeClass(tabClass.join(''));\n      }\n    } // Static\n    ;\n\n    Popover._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var data = $__default[\"default\"](this).data(DATA_KEY$3);\n\n        var _config = typeof config === 'object' ? config : null;\n\n        if (!data && /dispose|hide/.test(config)) {\n          return;\n        }\n\n        if (!data) {\n          data = new Popover(this, _config);\n          $__default[\"default\"](this).data(DATA_KEY$3, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config]();\n        }\n      });\n    };\n\n    _createClass(Popover, null, [{\n      key: \"VERSION\",\n      get: // Getters\n      function get() {\n        return VERSION$3;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$2;\n      }\n    }, {\n      key: \"NAME\",\n      get: function get() {\n        return NAME$3;\n      }\n    }, {\n      key: \"DATA_KEY\",\n      get: function get() {\n        return DATA_KEY$3;\n      }\n    }, {\n      key: \"Event\",\n      get: function get() {\n        return Event;\n      }\n    }, {\n      key: \"EVENT_KEY\",\n      get: function get() {\n        return EVENT_KEY$3;\n      }\n    }, {\n      key: \"DefaultType\",\n      get: function get() {\n        return DefaultType$2;\n      }\n    }]);\n\n    return Popover;\n  }(Tooltip);\n  /**\n   * jQuery\n   */\n\n\n  $__default[\"default\"].fn[NAME$3] = Popover._jQueryInterface;\n  $__default[\"default\"].fn[NAME$3].Constructor = Popover;\n\n  $__default[\"default\"].fn[NAME$3].noConflict = function () {\n    $__default[\"default\"].fn[NAME$3] = JQUERY_NO_CONFLICT$3;\n    return Popover._jQueryInterface;\n  };\n\n  /**\n   * Constants\n   */\n\n  var NAME$2 = 'scrollspy';\n  var VERSION$2 = '4.6.2';\n  var DATA_KEY$2 = 'bs.scrollspy';\n  var EVENT_KEY$2 = \".\" + DATA_KEY$2;\n  var DATA_API_KEY$1 = '.data-api';\n  var JQUERY_NO_CONFLICT$2 = $__default[\"default\"].fn[NAME$2];\n  var CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';\n  var CLASS_NAME_ACTIVE$1 = 'active';\n  var EVENT_ACTIVATE = \"activate\" + EVENT_KEY$2;\n  var EVENT_SCROLL = \"scroll\" + EVENT_KEY$2;\n  var EVENT_LOAD_DATA_API = \"load\" + EVENT_KEY$2 + DATA_API_KEY$1;\n  var METHOD_OFFSET = 'offset';\n  var METHOD_POSITION = 'position';\n  var SELECTOR_DATA_SPY = '[data-spy=\"scroll\"]';\n  var SELECTOR_NAV_LIST_GROUP$1 = '.nav, .list-group';\n  var SELECTOR_NAV_LINKS = '.nav-link';\n  var SELECTOR_NAV_ITEMS = '.nav-item';\n  var SELECTOR_LIST_ITEMS = '.list-group-item';\n  var SELECTOR_DROPDOWN$1 = '.dropdown';\n  var SELECTOR_DROPDOWN_ITEMS = '.dropdown-item';\n  var SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';\n  var Default$1 = {\n    offset: 10,\n    method: 'auto',\n    target: ''\n  };\n  var DefaultType$1 = {\n    offset: 'number',\n    method: 'string',\n    target: '(string|element)'\n  };\n  /**\n   * Class definition\n   */\n\n  var ScrollSpy = /*#__PURE__*/function () {\n    function ScrollSpy(element, config) {\n      var _this = this;\n\n      this._element = element;\n      this._scrollElement = element.tagName === 'BODY' ? window : element;\n      this._config = this._getConfig(config);\n      this._selector = this._config.target + \" \" + SELECTOR_NAV_LINKS + \",\" + (this._config.target + \" \" + SELECTOR_LIST_ITEMS + \",\") + (this._config.target + \" \" + SELECTOR_DROPDOWN_ITEMS);\n      this._offsets = [];\n      this._targets = [];\n      this._activeTarget = null;\n      this._scrollHeight = 0;\n      $__default[\"default\"](this._scrollElement).on(EVENT_SCROLL, function (event) {\n        return _this._process(event);\n      });\n      this.refresh();\n\n      this._process();\n    } // Getters\n\n\n    var _proto = ScrollSpy.prototype;\n\n    // Public\n    _proto.refresh = function refresh() {\n      var _this2 = this;\n\n      var autoMethod = this._scrollElement === this._scrollElement.window ? METHOD_OFFSET : METHOD_POSITION;\n      var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;\n      var offsetBase = offsetMethod === METHOD_POSITION ? this._getScrollTop() : 0;\n      this._offsets = [];\n      this._targets = [];\n      this._scrollHeight = this._getScrollHeight();\n      var targets = [].slice.call(document.querySelectorAll(this._selector));\n      targets.map(function (element) {\n        var target;\n        var targetSelector = Util.getSelectorFromElement(element);\n\n        if (targetSelector) {\n          target = document.querySelector(targetSelector);\n        }\n\n        if (target) {\n          var targetBCR = target.getBoundingClientRect();\n\n          if (targetBCR.width || targetBCR.height) {\n            // TODO (fat): remove sketch reliance on jQuery position/offset\n            return [$__default[\"default\"](target)[offsetMethod]().top + offsetBase, targetSelector];\n          }\n        }\n\n        return null;\n      }).filter(Boolean).sort(function (a, b) {\n        return a[0] - b[0];\n      }).forEach(function (item) {\n        _this2._offsets.push(item[0]);\n\n        _this2._targets.push(item[1]);\n      });\n    };\n\n    _proto.dispose = function dispose() {\n      $__default[\"default\"].removeData(this._element, DATA_KEY$2);\n      $__default[\"default\"](this._scrollElement).off(EVENT_KEY$2);\n      this._element = null;\n      this._scrollElement = null;\n      this._config = null;\n      this._selector = null;\n      this._offsets = null;\n      this._targets = null;\n      this._activeTarget = null;\n      this._scrollHeight = null;\n    } // Private\n    ;\n\n    _proto._getConfig = function _getConfig(config) {\n      config = _extends({}, Default$1, typeof config === 'object' && config ? config : {});\n\n      if (typeof config.target !== 'string' && Util.isElement(config.target)) {\n        var id = $__default[\"default\"](config.target).attr('id');\n\n        if (!id) {\n          id = Util.getUID(NAME$2);\n          $__default[\"default\"](config.target).attr('id', id);\n        }\n\n        config.target = \"#\" + id;\n      }\n\n      Util.typeCheckConfig(NAME$2, config, DefaultType$1);\n      return config;\n    };\n\n    _proto._getScrollTop = function _getScrollTop() {\n      return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;\n    };\n\n    _proto._getScrollHeight = function _getScrollHeight() {\n      return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);\n    };\n\n    _proto._getOffsetHeight = function _getOffsetHeight() {\n      return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;\n    };\n\n    _proto._process = function _process() {\n      var scrollTop = this._getScrollTop() + this._config.offset;\n\n      var scrollHeight = this._getScrollHeight();\n\n      var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();\n\n      if (this._scrollHeight !== scrollHeight) {\n        this.refresh();\n      }\n\n      if (scrollTop >= maxScroll) {\n        var target = this._targets[this._targets.length - 1];\n\n        if (this._activeTarget !== target) {\n          this._activate(target);\n        }\n\n        return;\n      }\n\n      if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n        this._activeTarget = null;\n\n        this._clear();\n\n        return;\n      }\n\n      for (var i = this._offsets.length; i--;) {\n        var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);\n\n        if (isActiveTarget) {\n          this._activate(this._targets[i]);\n        }\n      }\n    };\n\n    _proto._activate = function _activate(target) {\n      this._activeTarget = target;\n\n      this._clear();\n\n      var queries = this._selector.split(',').map(function (selector) {\n        return selector + \"[data-target=\\\"\" + target + \"\\\"],\" + selector + \"[href=\\\"\" + target + \"\\\"]\";\n      });\n\n      var $link = $__default[\"default\"]([].slice.call(document.querySelectorAll(queries.join(','))));\n\n      if ($link.hasClass(CLASS_NAME_DROPDOWN_ITEM)) {\n        $link.closest(SELECTOR_DROPDOWN$1).find(SELECTOR_DROPDOWN_TOGGLE$1).addClass(CLASS_NAME_ACTIVE$1);\n        $link.addClass(CLASS_NAME_ACTIVE$1);\n      } else {\n        // Set triggered link as active\n        $link.addClass(CLASS_NAME_ACTIVE$1); // Set triggered links parents as active\n        // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n\n        $link.parents(SELECTOR_NAV_LIST_GROUP$1).prev(SELECTOR_NAV_LINKS + \", \" + SELECTOR_LIST_ITEMS).addClass(CLASS_NAME_ACTIVE$1); // Handle special case when .nav-link is inside .nav-item\n\n        $link.parents(SELECTOR_NAV_LIST_GROUP$1).prev(SELECTOR_NAV_ITEMS).children(SELECTOR_NAV_LINKS).addClass(CLASS_NAME_ACTIVE$1);\n      }\n\n      $__default[\"default\"](this._scrollElement).trigger(EVENT_ACTIVATE, {\n        relatedTarget: target\n      });\n    };\n\n    _proto._clear = function _clear() {\n      [].slice.call(document.querySelectorAll(this._selector)).filter(function (node) {\n        return node.classList.contains(CLASS_NAME_ACTIVE$1);\n      }).forEach(function (node) {\n        return node.classList.remove(CLASS_NAME_ACTIVE$1);\n      });\n    } // Static\n    ;\n\n    ScrollSpy._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var data = $__default[\"default\"](this).data(DATA_KEY$2);\n\n        var _config = typeof config === 'object' && config;\n\n        if (!data) {\n          data = new ScrollSpy(this, _config);\n          $__default[\"default\"](this).data(DATA_KEY$2, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config]();\n        }\n      });\n    };\n\n    _createClass(ScrollSpy, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$2;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$1;\n      }\n    }]);\n\n    return ScrollSpy;\n  }();\n  /**\n   * Data API implementation\n   */\n\n\n  $__default[\"default\"](window).on(EVENT_LOAD_DATA_API, function () {\n    var scrollSpys = [].slice.call(document.querySelectorAll(SELECTOR_DATA_SPY));\n    var scrollSpysLength = scrollSpys.length;\n\n    for (var i = scrollSpysLength; i--;) {\n      var $spy = $__default[\"default\"](scrollSpys[i]);\n\n      ScrollSpy._jQueryInterface.call($spy, $spy.data());\n    }\n  });\n  /**\n   * jQuery\n   */\n\n  $__default[\"default\"].fn[NAME$2] = ScrollSpy._jQueryInterface;\n  $__default[\"default\"].fn[NAME$2].Constructor = ScrollSpy;\n\n  $__default[\"default\"].fn[NAME$2].noConflict = function () {\n    $__default[\"default\"].fn[NAME$2] = JQUERY_NO_CONFLICT$2;\n    return ScrollSpy._jQueryInterface;\n  };\n\n  /**\n   * Constants\n   */\n\n  var NAME$1 = 'tab';\n  var VERSION$1 = '4.6.2';\n  var DATA_KEY$1 = 'bs.tab';\n  var EVENT_KEY$1 = \".\" + DATA_KEY$1;\n  var DATA_API_KEY = '.data-api';\n  var JQUERY_NO_CONFLICT$1 = $__default[\"default\"].fn[NAME$1];\n  var CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu';\n  var CLASS_NAME_ACTIVE = 'active';\n  var CLASS_NAME_DISABLED = 'disabled';\n  var CLASS_NAME_FADE$1 = 'fade';\n  var CLASS_NAME_SHOW$1 = 'show';\n  var EVENT_HIDE$1 = \"hide\" + EVENT_KEY$1;\n  var EVENT_HIDDEN$1 = \"hidden\" + EVENT_KEY$1;\n  var EVENT_SHOW$1 = \"show\" + EVENT_KEY$1;\n  var EVENT_SHOWN$1 = \"shown\" + EVENT_KEY$1;\n  var EVENT_CLICK_DATA_API = \"click\" + EVENT_KEY$1 + DATA_API_KEY;\n  var SELECTOR_DROPDOWN = '.dropdown';\n  var SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';\n  var SELECTOR_ACTIVE = '.active';\n  var SELECTOR_ACTIVE_UL = '> li > .active';\n  var SELECTOR_DATA_TOGGLE = '[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]';\n  var SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';\n  var SELECTOR_DROPDOWN_ACTIVE_CHILD = '> .dropdown-menu .active';\n  /**\n   * Class definition\n   */\n\n  var Tab = /*#__PURE__*/function () {\n    function Tab(element) {\n      this._element = element;\n    } // Getters\n\n\n    var _proto = Tab.prototype;\n\n    // Public\n    _proto.show = function show() {\n      var _this = this;\n\n      if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $__default[\"default\"](this._element).hasClass(CLASS_NAME_ACTIVE) || $__default[\"default\"](this._element).hasClass(CLASS_NAME_DISABLED) || this._element.hasAttribute('disabled')) {\n        return;\n      }\n\n      var target;\n      var previous;\n      var listElement = $__default[\"default\"](this._element).closest(SELECTOR_NAV_LIST_GROUP)[0];\n      var selector = Util.getSelectorFromElement(this._element);\n\n      if (listElement) {\n        var itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE;\n        previous = $__default[\"default\"].makeArray($__default[\"default\"](listElement).find(itemSelector));\n        previous = previous[previous.length - 1];\n      }\n\n      var hideEvent = $__default[\"default\"].Event(EVENT_HIDE$1, {\n        relatedTarget: this._element\n      });\n      var showEvent = $__default[\"default\"].Event(EVENT_SHOW$1, {\n        relatedTarget: previous\n      });\n\n      if (previous) {\n        $__default[\"default\"](previous).trigger(hideEvent);\n      }\n\n      $__default[\"default\"](this._element).trigger(showEvent);\n\n      if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      if (selector) {\n        target = document.querySelector(selector);\n      }\n\n      this._activate(this._element, listElement);\n\n      var complete = function complete() {\n        var hiddenEvent = $__default[\"default\"].Event(EVENT_HIDDEN$1, {\n          relatedTarget: _this._element\n        });\n        var shownEvent = $__default[\"default\"].Event(EVENT_SHOWN$1, {\n          relatedTarget: previous\n        });\n        $__default[\"default\"](previous).trigger(hiddenEvent);\n        $__default[\"default\"](_this._element).trigger(shownEvent);\n      };\n\n      if (target) {\n        this._activate(target, target.parentNode, complete);\n      } else {\n        complete();\n      }\n    };\n\n    _proto.dispose = function dispose() {\n      $__default[\"default\"].removeData(this._element, DATA_KEY$1);\n      this._element = null;\n    } // Private\n    ;\n\n    _proto._activate = function _activate(element, container, callback) {\n      var _this2 = this;\n\n      var activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? $__default[\"default\"](container).find(SELECTOR_ACTIVE_UL) : $__default[\"default\"](container).children(SELECTOR_ACTIVE);\n      var active = activeElements[0];\n      var isTransitioning = callback && active && $__default[\"default\"](active).hasClass(CLASS_NAME_FADE$1);\n\n      var complete = function complete() {\n        return _this2._transitionComplete(element, active, callback);\n      };\n\n      if (active && isTransitioning) {\n        var transitionDuration = Util.getTransitionDurationFromElement(active);\n        $__default[\"default\"](active).removeClass(CLASS_NAME_SHOW$1).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n      } else {\n        complete();\n      }\n    };\n\n    _proto._transitionComplete = function _transitionComplete(element, active, callback) {\n      if (active) {\n        $__default[\"default\"](active).removeClass(CLASS_NAME_ACTIVE);\n        var dropdownChild = $__default[\"default\"](active.parentNode).find(SELECTOR_DROPDOWN_ACTIVE_CHILD)[0];\n\n        if (dropdownChild) {\n          $__default[\"default\"](dropdownChild).removeClass(CLASS_NAME_ACTIVE);\n        }\n\n        if (active.getAttribute('role') === 'tab') {\n          active.setAttribute('aria-selected', false);\n        }\n      }\n\n      $__default[\"default\"](element).addClass(CLASS_NAME_ACTIVE);\n\n      if (element.getAttribute('role') === 'tab') {\n        element.setAttribute('aria-selected', true);\n      }\n\n      Util.reflow(element);\n\n      if (element.classList.contains(CLASS_NAME_FADE$1)) {\n        element.classList.add(CLASS_NAME_SHOW$1);\n      }\n\n      var parent = element.parentNode;\n\n      if (parent && parent.nodeName === 'LI') {\n        parent = parent.parentNode;\n      }\n\n      if (parent && $__default[\"default\"](parent).hasClass(CLASS_NAME_DROPDOWN_MENU)) {\n        var dropdownElement = $__default[\"default\"](element).closest(SELECTOR_DROPDOWN)[0];\n\n        if (dropdownElement) {\n          var dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(SELECTOR_DROPDOWN_TOGGLE));\n          $__default[\"default\"](dropdownToggleList).addClass(CLASS_NAME_ACTIVE);\n        }\n\n        element.setAttribute('aria-expanded', true);\n      }\n\n      if (callback) {\n        callback();\n      }\n    } // Static\n    ;\n\n    Tab._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var $this = $__default[\"default\"](this);\n        var data = $this.data(DATA_KEY$1);\n\n        if (!data) {\n          data = new Tab(this);\n          $this.data(DATA_KEY$1, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config]();\n        }\n      });\n    };\n\n    _createClass(Tab, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$1;\n      }\n    }]);\n\n    return Tab;\n  }();\n  /**\n   * Data API implementation\n   */\n\n\n  $__default[\"default\"](document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n    event.preventDefault();\n\n    Tab._jQueryInterface.call($__default[\"default\"](this), 'show');\n  });\n  /**\n   * jQuery\n   */\n\n  $__default[\"default\"].fn[NAME$1] = Tab._jQueryInterface;\n  $__default[\"default\"].fn[NAME$1].Constructor = Tab;\n\n  $__default[\"default\"].fn[NAME$1].noConflict = function () {\n    $__default[\"default\"].fn[NAME$1] = JQUERY_NO_CONFLICT$1;\n    return Tab._jQueryInterface;\n  };\n\n  /**\n   * Constants\n   */\n\n  var NAME = 'toast';\n  var VERSION = '4.6.2';\n  var DATA_KEY = 'bs.toast';\n  var EVENT_KEY = \".\" + DATA_KEY;\n  var JQUERY_NO_CONFLICT = $__default[\"default\"].fn[NAME];\n  var CLASS_NAME_FADE = 'fade';\n  var CLASS_NAME_HIDE = 'hide';\n  var CLASS_NAME_SHOW = 'show';\n  var CLASS_NAME_SHOWING = 'showing';\n  var EVENT_CLICK_DISMISS = \"click.dismiss\" + EVENT_KEY;\n  var EVENT_HIDE = \"hide\" + EVENT_KEY;\n  var EVENT_HIDDEN = \"hidden\" + EVENT_KEY;\n  var EVENT_SHOW = \"show\" + EVENT_KEY;\n  var EVENT_SHOWN = \"shown\" + EVENT_KEY;\n  var SELECTOR_DATA_DISMISS = '[data-dismiss=\"toast\"]';\n  var Default = {\n    animation: true,\n    autohide: true,\n    delay: 500\n  };\n  var DefaultType = {\n    animation: 'boolean',\n    autohide: 'boolean',\n    delay: 'number'\n  };\n  /**\n   * Class definition\n   */\n\n  var Toast = /*#__PURE__*/function () {\n    function Toast(element, config) {\n      this._element = element;\n      this._config = this._getConfig(config);\n      this._timeout = null;\n\n      this._setListeners();\n    } // Getters\n\n\n    var _proto = Toast.prototype;\n\n    // Public\n    _proto.show = function show() {\n      var _this = this;\n\n      var showEvent = $__default[\"default\"].Event(EVENT_SHOW);\n      $__default[\"default\"](this._element).trigger(showEvent);\n\n      if (showEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      this._clearTimeout();\n\n      if (this._config.animation) {\n        this._element.classList.add(CLASS_NAME_FADE);\n      }\n\n      var complete = function complete() {\n        _this._element.classList.remove(CLASS_NAME_SHOWING);\n\n        _this._element.classList.add(CLASS_NAME_SHOW);\n\n        $__default[\"default\"](_this._element).trigger(EVENT_SHOWN);\n\n        if (_this._config.autohide) {\n          _this._timeout = setTimeout(function () {\n            _this.hide();\n          }, _this._config.delay);\n        }\n      };\n\n      this._element.classList.remove(CLASS_NAME_HIDE);\n\n      Util.reflow(this._element);\n\n      this._element.classList.add(CLASS_NAME_SHOWING);\n\n      if (this._config.animation) {\n        var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n        $__default[\"default\"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n      } else {\n        complete();\n      }\n    };\n\n    _proto.hide = function hide() {\n      if (!this._element.classList.contains(CLASS_NAME_SHOW)) {\n        return;\n      }\n\n      var hideEvent = $__default[\"default\"].Event(EVENT_HIDE);\n      $__default[\"default\"](this._element).trigger(hideEvent);\n\n      if (hideEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      this._close();\n    };\n\n    _proto.dispose = function dispose() {\n      this._clearTimeout();\n\n      if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n        this._element.classList.remove(CLASS_NAME_SHOW);\n      }\n\n      $__default[\"default\"](this._element).off(EVENT_CLICK_DISMISS);\n      $__default[\"default\"].removeData(this._element, DATA_KEY);\n      this._element = null;\n      this._config = null;\n    } // Private\n    ;\n\n    _proto._getConfig = function _getConfig(config) {\n      config = _extends({}, Default, $__default[\"default\"](this._element).data(), typeof config === 'object' && config ? config : {});\n      Util.typeCheckConfig(NAME, config, this.constructor.DefaultType);\n      return config;\n    };\n\n    _proto._setListeners = function _setListeners() {\n      var _this2 = this;\n\n      $__default[\"default\"](this._element).on(EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function () {\n        return _this2.hide();\n      });\n    };\n\n    _proto._close = function _close() {\n      var _this3 = this;\n\n      var complete = function complete() {\n        _this3._element.classList.add(CLASS_NAME_HIDE);\n\n        $__default[\"default\"](_this3._element).trigger(EVENT_HIDDEN);\n      };\n\n      this._element.classList.remove(CLASS_NAME_SHOW);\n\n      if (this._config.animation) {\n        var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n        $__default[\"default\"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n      } else {\n        complete();\n      }\n    };\n\n    _proto._clearTimeout = function _clearTimeout() {\n      clearTimeout(this._timeout);\n      this._timeout = null;\n    } // Static\n    ;\n\n    Toast._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var $element = $__default[\"default\"](this);\n        var data = $element.data(DATA_KEY);\n\n        var _config = typeof config === 'object' && config;\n\n        if (!data) {\n          data = new Toast(this, _config);\n          $element.data(DATA_KEY, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config](this);\n        }\n      });\n    };\n\n    _createClass(Toast, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION;\n      }\n    }, {\n      key: \"DefaultType\",\n      get: function get() {\n        return DefaultType;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default;\n      }\n    }]);\n\n    return Toast;\n  }();\n  /**\n   * jQuery\n   */\n\n\n  $__default[\"default\"].fn[NAME] = Toast._jQueryInterface;\n  $__default[\"default\"].fn[NAME].Constructor = Toast;\n\n  $__default[\"default\"].fn[NAME].noConflict = function () {\n    $__default[\"default\"].fn[NAME] = JQUERY_NO_CONFLICT;\n    return Toast._jQueryInterface;\n  };\n\n  exports.Alert = Alert;\n  exports.Button = Button;\n  exports.Carousel = Carousel;\n  exports.Collapse = Collapse;\n  exports.Dropdown = Dropdown;\n  exports.Modal = Modal;\n  exports.Popover = Popover;\n  exports.Scrollspy = ScrollSpy;\n  exports.Tab = Tab;\n  exports.Toast = Toast;\n  exports.Tooltip = Tooltip;\n  exports.Util = Util;\n\n  Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\n//# sourceMappingURL=bootstrap.js.map\n","/*!\n * jQuery JavaScript Library v3.6.0\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2021-03-02T17:08Z\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 #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 <object> 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\n\tversion = \"3.6.0\",\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\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\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}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.6\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2021-02-16\n */\n( function( window ) {\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\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\t// Instance methods\n\thasOwn = ( {} ).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpushNative = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|\" +\n\t\t\"ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\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: http://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]\n\t\t// 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\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" +\n\t\twhitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace +\n\t\t\"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": 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\t\"needsContext\": 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\trhtml = /HTML$/i,\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\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// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\treturn nonHex ?\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\tnonHex :\n\n\t\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t\t// Support: IE <=11+\n\t\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t\t// surrogate pair\n\t\t\thigh < 0 ?\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" +\n\t\t\t\tch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\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 = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( ( target[ j++ ] = els[ i++ ] ) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( 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, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\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\tresults.push( 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, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\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\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( 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 ] ) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\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 ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t( nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\" ) ) {\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 ) || rcombinators.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\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 = nid.replace( rcssescape, fcssescape );\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( rtrim, \"$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 (see Issue #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 Sizzle\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 * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split( \"|\" ),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[ i ] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( ( cur = cur.nextSibling ) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\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\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"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\tvar name = elem.nodeName.toLowerCase();\n\t\treturn ( name === \"input\" || name === \"button\" ) && elem.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\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\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 Sizzle 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// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar namespace = elem && elem.namespaceURI,\n\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, 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\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\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 ( preferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t// Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,\n\t// Safari 4 - 5 only, Opera <=11.6 - 12.x only\n\t// IE/Edge & older browsers don't support the :scope pseudo-class.\n\t// Support: Safari 6.0 only\n\t// Safari 6.0 supports :scope but it's an alias of :root there.\n\tsupport.scope = assert( function( el ) {\n\t\tdocElem.appendChild( el ).appendChild( document.createElement( \"div\" ) );\n\t\treturn typeof el.querySelectorAll !== \"undefined\" &&\n\t\t\t!el.querySelectorAll( \":scope fieldset div\" ).length;\n\t} );\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert( function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute( \"className\" );\n\t} );\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert( function( el ) {\n\t\tel.appendChild( document.createComment( \"\" ) );\n\t\treturn !el.getElementsByTagName( \"*\" ).length;\n\t} );\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\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\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\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\" ] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[ \"CLASS\" ] = support.getElementsByClassName && 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\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {\n\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert( function( el ) {\n\n\t\t\tvar input;\n\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"<a id='\" + expando + \"'></a>\" +\n\t\t\t\t\"<select id='\" + expando + \"-\\r\\\\' msallowcapture=''>\" +\n\t\t\t\t\"<option selected=''></option></select>\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll( \"[msallowcapture^='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"~=\" );\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t\t// Adding a temporary attribute to the document before the selection works\n\t\t\t// around the issue.\n\t\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\t\tinput = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"name\", \"\" );\n\t\t\tel.appendChild( input );\n\t\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\t\trbuggyQSA.push( \":checked\" );\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t\t}\n\n\t\t\t// Support: Firefox <=3.6 - 5 only\n\t\t\t// Old Firefox doesn't throw on a badly-escaped identifier.\n\t\t\tel.querySelectorAll( \"\\\\\\f\" );\n\t\t\trbuggyQSA.push( \"[\\\\r\\\\n\\\\f]\" );\n\t\t} );\n\n\t\tassert( function( el ) {\n\t\t\tel.innerHTML = \"<a href='' disabled='disabled'></a>\" +\n\t\t\t\t\"<select disabled='disabled'><option/></select>\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll( \"[name=d]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll( \":enabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: Opera 10 - 11 only\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll( \"*,:x\" );\n\t\t\trbuggyQSA.push( \",.*:\" );\n\t\t} );\n\t}\n\n\tif ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector ) ) ) ) {\n\n\t\tassert( function( el ) {\n\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t} );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( \"|\" ) );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t) );\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( ( b = b.parentNode ) ) {\n\t\t\t\t\tif ( b === a ) {\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\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( 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\tcontains( 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\tcontains( 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( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\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 eqeqeq */\n\t\t\treturn a == document ? -1 :\n\t\t\t\tb == document ? 1 :\n\t\t\t\t/* eslint-enable eqeqeq */\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[ i ] === bp[ i ] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[ i ], bp[ i ] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\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 eqeqeq */\n\t\t\tap[ i ] == preferredDoc ? -1 :\n\t\t\tbp[ i ] == preferredDoc ? 1 :\n\t\t\t/* eslint-enable eqeqeq */\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( 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// As well, disconnected nodes are said to be in a document\n\t\t\t\t// fragment in IE 9\n\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 Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.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 contains( context, elem );\n};\n\nSizzle.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 (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\nSizzle.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 */\nSizzle.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\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( 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\tresults.splice( 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\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\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\t\"ATTR\": 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 ] ||\n\t\t\t\tmatch[ 5 ] || \"\" ).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\t\"CHILD\": 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\tSizzle.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\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": 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\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = 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 elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace +\n\t\t\t\t\t\")\" + className + \"(\" + whitespace + \"|$)\" ) ) && classCache(\n\t\t\t\t\t\tclassName, function( elem ) {\n\t\t\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.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\t/* eslint-disable max-len */\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t\t/* eslint-enable max-len */\n\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": 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, uniqueCache, 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\tnode.nodeName.toLowerCase() === 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\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\tcache = uniqueCache[ 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\tuniqueCache[ 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\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ 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\tnode.nodeName.toLowerCase() === 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\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ 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\t\"PSEUDO\": function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://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\tSizzle.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 Sizzle 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( 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\t\"not\": 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( rtrim, \"$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 (issue #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\t\"has\": markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\t\"contains\": markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || getText( 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// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": 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\tSizzle.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\t\"target\": 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\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement &&\n\t\t\t\t( !document.hasFocus || document.hasFocus() ) &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn ( nodeName === \"input\" && !!elem.checked ) ||\n\t\t\t\t( nodeName === \"option\" && !!elem.selected );\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\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\t\"empty\": function( elem ) {\n\n\t\t\t// http://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\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[ \"empty\" ]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear 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\t\"first\": createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\t\"last\": createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\t\"eq\": createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\t\"even\": 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\t\"odd\": 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\t\"lt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ?\n\t\t\t\targument + length :\n\t\t\t\targument > length ?\n\t\t\t\t\tlength :\n\t\t\t\t\targument;\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\t\"gt\": 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\ntokenize = Sizzle.tokenize = function( 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 = rcombinators.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( rtrim, \" \" )\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\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\n\t\t\t// Cache the tokens\n\t\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, uniqueCache, 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\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] ||\n\t\t\t\t\t\t\t( outerCache[ elem.uniqueID ] = {} );\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = uniqueCache[ 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\tuniqueCache[ 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\tSizzle( 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,\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 || multipleContexts(\n\t\t\t\tselector || \"*\",\n\t\t\t\tcontext.nodeType ? [ context ] : context,\n\t\t\t\t[]\n\t\t\t),\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\t\tmatcherOut = matcher ?\n\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\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( 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( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\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 (issue #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// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\ttokens\n\t\t\t\t\t\t.slice( 0, i - 1 )\n\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrim, \"$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: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching elements by id\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\tresults.push( 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\tSizzle.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\ncompile = Sizzle.compile = function( 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(\n\t\t\tselector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers )\n\t\t);\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 Sizzle's compiled\n *  selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n *  selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( 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\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find[ \"ID\" ]( token.matches[ 0 ]\n\t\t\t\t.replace( runescape, funescape ), context ) || [] )[ 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 ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext\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// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\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\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert( function( el ) {\n\tel.innerHTML = \"<a href='#'></a>\";\n\treturn el.firstChild.getAttribute( \"href\" ) === \"#\";\n} ) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert( function( el ) {\n\tel.innerHTML = \"<input/>\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n} ) ) {\n\taddHandle( \"value\", function( elem, _name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert( function( el ) {\n\treturn el.getAttribute( \"disabled\" ) == null;\n} ) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\t\tnull;\n\t\t}\n\t} );\n}\n\nreturn Sizzle;\n\n} )( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\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\n\n\nfunction nodeName( elem, name ) {\n\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\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 <tag> to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#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 Sizzle\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// <object> 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.stackTrace );\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 stack, 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.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = 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\njQuery.Deferred.exceptionHook = function( error, stack ) {\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, error.stack, stack );\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 #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 (#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 #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 (#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 (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#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 = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces <option> tags with their contents when inserted outside of\n\t// the select element.\n\tdiv.innerHTML = \"<option></option>\";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (#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 <tbody> or other required elements.\n\tthead: [ 1, \"<table>\", \"</table>\" ],\n\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\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, \"<select multiple='multiple'>\", \"</select>\" ];\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 (#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 (#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\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\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\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 <use> 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 (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #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 (#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\", returnTrue );\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, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\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 notAsync, 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\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\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\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\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\t// Support: Chrome 86+\n\t\t\t\t\t\t// In Chrome, if an element having a focusout handler is blurred by\n\t\t\t\t\t\t// clicking outside of it, it invokes the handler synchronously. If\n\t\t\t\t\t\t// that handler calls `.remove()` on the element, the data is cleared,\n\t\t\t\t\t\t// leaving `result` undefined. We need to guard against this.\n\t\t\t\t\t\treturn result && result.value;\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 the\n\t\t\t\t// 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.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\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 (#504, #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\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\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, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\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\t// Suppress native focus or blur as it's already being fired\n\t\t// in leverageNative.\n\t\t_default: function() {\n\t\t\treturn true;\n\t\t},\n\n\t\tdelegateType: delegateType\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 = /<script|<style|<link/i,\n\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\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 (#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// Reenable 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\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 Sizzle here for performance reasons: 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 getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #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 (#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 = \"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\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, #12537)\n\t//   .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\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\trcustomProp = /^--/,\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\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\tif ( box === \"margin\" ) {\n\t\t\tdelta += 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;\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\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"gridArea\": true,\n\t\t\"gridColumn\": true,\n\t\t\"gridColumnEnd\": true,\n\t\t\"gridColumnStart\": true,\n\t\t\"gridRow\": true,\n\t\t\"gridRowEnd\": true,\n\t\t\"gridRowStart\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": 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 (#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 #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 (#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 )` (#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.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\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// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#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 classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\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\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\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\telem.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 classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\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\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\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\telem.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 type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\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\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\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = 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 (#14686, #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 (#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\n\n\nsupport.focusin = \"onfocusin\" in window;\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 (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#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 (#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\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\n\t\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\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\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// #7653, #8125, #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 (#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 #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 (#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 #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 (#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// #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 (#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// #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 #8605, #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// #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( \"<script>\" )\n\t\t\t\t\t.attr( s.scriptAttrs || {} )\n\t\t\t\t\t.prop( { charset: s.scriptCharset, src: s.url } )\n\t\t\t\t\t.on( \"load error\", callback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t},\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\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup( {\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce.guid++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n} );\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" &&\n\t\t\t\t( s.contentType || \"\" )\n\t\t\t\t\t.indexOf( \"application/x-www-form-urlencoded\" ) === 0 &&\n\t\t\t\trjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[ \"script json\" ] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// Force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always( function() {\n\n\t\t\t// If previous value didn't exist - remove it\n\t\t\tif ( overwritten === undefined ) {\n\t\t\t\tjQuery( window ).removeProp( callbackName );\n\n\t\t\t// Otherwise restore preexisting value\n\t\t\t} else {\n\t\t\t\twindow[ callbackName ] = overwritten;\n\t\t\t}\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\n\t\t\t\t// Make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// Save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t} );\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Support: Safari 8 only\n// In Safari 8 documents created via document.implementation.createHTMLDocument\n// collapse sibling forms: the second one becomes a child of the first one.\n// Because of that, this security measure has to be disabled in Safari 8.\n// https://bugs.webkit.org/show_bug.cgi?id=137337\nsupport.createHTMLDocument = ( function() {\n\tvar body = document.implementation.createHTMLDocument( \"\" ).body;\n\tbody.innerHTML = \"<form></form><form></form>\";\n\treturn body.childNodes.length === 2;\n} )();\n\n\n// Argument \"data\" should be string of html\n// context (optional): If specified, the fragment will be created in this context,\n// defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( typeof data !== \"string\" ) {\n\t\treturn [];\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\n\tvar base, parsed, scripts;\n\n\tif ( !context ) {\n\n\t\t// Stop scripts or inline event handlers from being executed immediately\n\t\t// by using document.implementation\n\t\tif ( support.createHTMLDocument ) {\n\t\t\tcontext = document.implementation.createHTMLDocument( \"\" );\n\n\t\t\t// Set the base href for the created document\n\t\t\t// so any parsed elements with URLs\n\t\t\t// are based on the document's URL (gh-2965)\n\t\t\tbase = context.createElement( \"base\" );\n\t\t\tbase.href = document.location.href;\n\t\t\tcontext.head.appendChild( base );\n\t\t} else {\n\t\t\tcontext = document;\n\t\t}\n\t}\n\n\tparsed = rsingleTag.exec( data );\n\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t}\n\n\tparsed = buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf( \" \" );\n\n\tif ( off > -1 ) {\n\t\tselector = stripAndCollapse( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax( {\n\t\t\turl: url,\n\n\t\t\t// If \"type\" variable is undefined, then \"GET\" method will be used.\n\t\t\t// Make value of this field explicit since\n\t\t\t// user can override it through ajaxSetup method\n\t\t\ttype: type || \"GET\",\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t} ).done( function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery( \"<div>\" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t// If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n\t\t// but they are ignored because response was set above.\n\t\t// If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n\t\t} ).always( callback && function( jqXHR, status ) {\n\t\t\tself.each( function() {\n\t\t\t\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t} );\n\t\t} );\n\t}\n\n\treturn this;\n};\n\n\n\n\njQuery.expr.pseudos.animated = function( elem ) {\n\treturn jQuery.grep( jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t} ).length;\n};\n\n\n\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf( \"auto\" ) > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( isFunction( options ) ) {\n\n\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend( {\n\n\t// offset() relates an element's border box to the document origin\n\toffset: function( options ) {\n\n\t\t// Preserve chaining for setter\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t} );\n\t\t}\n\n\t\tvar rect, win,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n\t\t// Support: IE <=11 only\n\t\t// Running getBoundingClientRect on a\n\t\t// disconnected node in IE throws an error\n\t\tif ( !elem.getClientRects().length ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\t// Get document-relative position by adding viewport scroll to viewport-relative gBCR\n\t\trect = elem.getBoundingClientRect();\n\t\twin = elem.ownerDocument.defaultView;\n\t\treturn {\n\t\t\ttop: rect.top + win.pageYOffset,\n\t\t\tleft: rect.left + win.pageXOffset\n\t\t};\n\t},\n\n\t// position() relates an element's margin box to its offset parent's padding box\n\t// This corresponds to the behavior of CSS absolute positioning\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset, doc,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// position:fixed elements are offset from the viewport, which itself always has zero offset\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t// Assume position:fixed implies availability of getBoundingClientRect\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\t\t\toffset = this.offset();\n\n\t\t\t// Account for the *real* offset parent, which can be the document or its root element\n\t\t\t// when a statically positioned element is identified\n\t\t\tdoc = elem.ownerDocument;\n\t\t\toffsetParent = elem.offsetParent || doc.documentElement;\n\t\t\twhile ( offsetParent &&\n\t\t\t\t( offsetParent === doc.body || offsetParent === doc.documentElement ) &&\n\t\t\t\tjQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\n\t\t\t\toffsetParent = offsetParent.parentNode;\n\t\t\t}\n\t\t\tif ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {\n\n\t\t\t\t// Incorporate borders into its offset, since they are outside its content origin\n\t\t\t\tparentOffset = jQuery( offsetParent ).offset();\n\t\t\t\tparentOffset.top += jQuery.css( offsetParent, \"borderTopWidth\", true );\n\t\t\t\tparentOffset.left += jQuery.css( offsetParent, \"borderLeftWidth\", true );\n\t\t\t}\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\t// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t//    documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent: function() {\n\t\treturn this.map( function() {\n\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\twhile ( offsetParent && jQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || documentElement;\n\t\t} );\n\t}\n} );\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\n\t\t\t// Coalesce documents and windows\n\t\t\tvar win;\n\t\t\tif ( isWindow( elem ) ) {\n\t\t\t\twin = elem;\n\t\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t\twin = elem.defaultView;\n\t\t\t}\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length );\n\t};\n} );\n\n// Support: Safari <=7 - 9.1, Chrome <=37 - 49\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n// getComputedStyle returns percent when specified for top/left/bottom/right;\n// rather than make the css module depend on the offset module, just check for it here\njQuery.each( [ \"top\", \"left\" ], function( _i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n} );\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( {\n\t\tpadding: \"inner\" + name,\n\t\tcontent: type,\n\t\t\"\": \"outer\" + name\n\t}, function( defaultExtra, funcName ) {\n\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( isWindow( elem ) ) {\n\n\t\t\t\t\t// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n\t\t\t\t\treturn funcName.indexOf( \"outer\" ) === 0 ?\n\t\t\t\t\t\telem[ \"inner\" + name ] :\n\t\t\t\t\t\telem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable );\n\t\t};\n\t} );\n} );\n\n\njQuery.each( [\n\t\"ajaxStart\",\n\t\"ajaxStop\",\n\t\"ajaxComplete\",\n\t\"ajaxError\",\n\t\"ajaxSuccess\",\n\t\"ajaxSend\"\n], function( _i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n} );\n\n\n\n\njQuery.fn.extend( {\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ?\n\t\t\tthis.off( selector, \"**\" ) :\n\t\t\tthis.off( types, selector || \"**\", fn );\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n} );\n\njQuery.each(\n\t( \"blur focus focusin focusout resize scroll click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup contextmenu\" ).split( \" \" ),\n\tfunction( _i, name ) {\n\n\t\t// Handle event binding\n\t\tjQuery.fn[ name ] = function( data, fn ) {\n\t\t\treturn arguments.length > 0 ?\n\t\t\t\tthis.on( name, null, data, fn ) :\n\t\t\t\tthis.trigger( name );\n\t\t};\n\t}\n);\n\n\n\n\n// Support: Android <=4.0 only\n// Make sure we trim BOM and NBSP\nvar rtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;\n\n// Bind a function to a context, optionally partially applying any\n// arguments.\n// jQuery.proxy is deprecated to promote standards (specifically Function#bind)\n// However, it is not slated for removal any time soon\njQuery.proxy = function( fn, context ) {\n\tvar tmp, args, proxy;\n\n\tif ( typeof context === \"string\" ) {\n\t\ttmp = fn[ context ];\n\t\tcontext = fn;\n\t\tfn = tmp;\n\t}\n\n\t// Quick check to determine if target is callable, in the spec\n\t// this throws a TypeError, but we will just return undefined.\n\tif ( !isFunction( fn ) ) {\n\t\treturn undefined;\n\t}\n\n\t// Simulated bind\n\targs = slice.call( arguments, 2 );\n\tproxy = function() {\n\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t};\n\n\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\treturn proxy;\n};\n\njQuery.holdReady = function( hold ) {\n\tif ( hold ) {\n\t\tjQuery.readyWait++;\n\t} else {\n\t\tjQuery.ready( true );\n\t}\n};\njQuery.isArray = Array.isArray;\njQuery.parseJSON = JSON.parse;\njQuery.nodeName = nodeName;\njQuery.isFunction = isFunction;\njQuery.isWindow = isWindow;\njQuery.camelCase = camelCase;\njQuery.type = toType;\n\njQuery.now = Date.now;\n\njQuery.isNumeric = function( obj ) {\n\n\t// As of jQuery 3.0, isNumeric is limited to\n\t// strings and numbers (primitives or objects)\n\t// that can be coerced to finite numbers (gh-2662)\n\tvar type = jQuery.type( obj );\n\treturn ( type === \"number\" || type === \"string\" ) &&\n\n\t\t// parseFloat NaNs numeric-cast false positives (\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t!isNaN( obj - parseFloat( obj ) );\n};\n\njQuery.trim = function( text ) {\n\treturn text == null ?\n\t\t\"\" :\n\t\t( text + \"\" ).replace( rtrim, \"\" );\n};\n\n\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine( \"jquery\", [], function() {\n\t\treturn jQuery;\n\t} );\n}\n\n\n\n\nvar\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in AMD\n// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (#13566)\nif ( typeof noGlobal === \"undefined\" ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n} );\n","/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.16.1\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';\n\nvar timeoutDuration = function () {\n  var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\n  for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n    if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n      return 1;\n    }\n  }\n  return 0;\n}();\n\nfunction microtaskDebounce(fn) {\n  var called = false;\n  return function () {\n    if (called) {\n      return;\n    }\n    called = true;\n    window.Promise.resolve().then(function () {\n      called = false;\n      fn();\n    });\n  };\n}\n\nfunction taskDebounce(fn) {\n  var scheduled = false;\n  return function () {\n    if (!scheduled) {\n      scheduled = true;\n      setTimeout(function () {\n        scheduled = false;\n        fn();\n      }, timeoutDuration);\n    }\n  };\n}\n\nvar supportsMicroTasks = isBrowser && window.Promise;\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n\n/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nfunction isFunction(functionToCheck) {\n  var getType = {};\n  return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n\n/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nfunction getStyleComputedProperty(element, property) {\n  if (element.nodeType !== 1) {\n    return [];\n  }\n  // NOTE: 1 DOM access here\n  var window = element.ownerDocument.defaultView;\n  var css = window.getComputedStyle(element, null);\n  return property ? css[property] : css;\n}\n\n/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nfunction getParentNode(element) {\n  if (element.nodeName === 'HTML') {\n    return element;\n  }\n  return element.parentNode || element.host;\n}\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nfunction getScrollParent(element) {\n  // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n  if (!element) {\n    return document.body;\n  }\n\n  switch (element.nodeName) {\n    case 'HTML':\n    case 'BODY':\n      return element.ownerDocument.body;\n    case '#document':\n      return element.body;\n  }\n\n  // Firefox want us to check `-x` and `-y` variations as well\n\n  var _getStyleComputedProp = getStyleComputedProperty(element),\n      overflow = _getStyleComputedProp.overflow,\n      overflowX = _getStyleComputedProp.overflowX,\n      overflowY = _getStyleComputedProp.overflowY;\n\n  if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n    return element;\n  }\n\n  return getScrollParent(getParentNode(element));\n}\n\n/**\n * Returns the reference node of the reference object, or the reference object itself.\n * @method\n * @memberof Popper.Utils\n * @param {Element|Object} reference - the reference element (the popper will be relative to this)\n * @returns {Element} parent\n */\nfunction getReferenceNode(reference) {\n  return reference && reference.referenceNode ? reference.referenceNode : reference;\n}\n\nvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nvar isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nfunction isIE(version) {\n  if (version === 11) {\n    return isIE11;\n  }\n  if (version === 10) {\n    return isIE10;\n  }\n  return isIE11 || isIE10;\n}\n\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nfunction getOffsetParent(element) {\n  if (!element) {\n    return document.documentElement;\n  }\n\n  var noOffsetParent = isIE(10) ? document.body : null;\n\n  // NOTE: 1 DOM access here\n  var offsetParent = element.offsetParent || null;\n  // Skip hidden elements which don't have an offsetParent\n  while (offsetParent === noOffsetParent && element.nextElementSibling) {\n    offsetParent = (element = element.nextElementSibling).offsetParent;\n  }\n\n  var nodeName = offsetParent && offsetParent.nodeName;\n\n  if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n    return element ? element.ownerDocument.documentElement : document.documentElement;\n  }\n\n  // .offsetParent will return the closest TH, TD or TABLE in case\n  // no offsetParent is present, I hate this job...\n  if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n    return getOffsetParent(offsetParent);\n  }\n\n  return offsetParent;\n}\n\nfunction isOffsetContainer(element) {\n  var nodeName = element.nodeName;\n\n  if (nodeName === 'BODY') {\n    return false;\n  }\n  return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\n\n/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nfunction getRoot(node) {\n  if (node.parentNode !== null) {\n    return getRoot(node.parentNode);\n  }\n\n  return node;\n}\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nfunction findCommonOffsetParent(element1, element2) {\n  // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n  if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n    return document.documentElement;\n  }\n\n  // Here we make sure to give as \"start\" the element that comes first in the DOM\n  var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n  var start = order ? element1 : element2;\n  var end = order ? element2 : element1;\n\n  // Get common ancestor container\n  var range = document.createRange();\n  range.setStart(start, 0);\n  range.setEnd(end, 0);\n  var commonAncestorContainer = range.commonAncestorContainer;\n\n  // Both nodes are inside #document\n\n  if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n    if (isOffsetContainer(commonAncestorContainer)) {\n      return commonAncestorContainer;\n    }\n\n    return getOffsetParent(commonAncestorContainer);\n  }\n\n  // one of the nodes is inside shadowDOM, find which one\n  var element1root = getRoot(element1);\n  if (element1root.host) {\n    return findCommonOffsetParent(element1root.host, element2);\n  } else {\n    return findCommonOffsetParent(element1, getRoot(element2).host);\n  }\n}\n\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nfunction getScroll(element) {\n  var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n\n  var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n  var nodeName = element.nodeName;\n\n  if (nodeName === 'BODY' || nodeName === 'HTML') {\n    var html = element.ownerDocument.documentElement;\n    var scrollingElement = element.ownerDocument.scrollingElement || html;\n    return scrollingElement[upperSide];\n  }\n\n  return element[upperSide];\n}\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nfunction includeScroll(rect, element) {\n  var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n  var scrollTop = getScroll(element, 'top');\n  var scrollLeft = getScroll(element, 'left');\n  var modifier = subtract ? -1 : 1;\n  rect.top += scrollTop * modifier;\n  rect.bottom += scrollTop * modifier;\n  rect.left += scrollLeft * modifier;\n  rect.right += scrollLeft * modifier;\n  return rect;\n}\n\n/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nfunction getBordersSize(styles, axis) {\n  var sideA = axis === 'x' ? 'Left' : 'Top';\n  var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n  return parseFloat(styles['border' + sideA + 'Width']) + parseFloat(styles['border' + sideB + 'Width']);\n}\n\nfunction getSize(axis, body, html, computedStyle) {\n  return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);\n}\n\nfunction getWindowSizes(document) {\n  var body = document.body;\n  var html = document.documentElement;\n  var computedStyle = isIE(10) && getComputedStyle(html);\n\n  return {\n    height: getSize('Height', body, html, computedStyle),\n    width: getSize('Width', body, html, computedStyle)\n  };\n}\n\nvar classCallCheck = function (instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n};\n\nvar createClass = function () {\n  function defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  return function (Constructor, protoProps, staticProps) {\n    if (protoProps) defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) defineProperties(Constructor, staticProps);\n    return Constructor;\n  };\n}();\n\n\n\n\n\nvar defineProperty = function (obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n\n    for (var key in source) {\n      if (Object.prototype.hasOwnProperty.call(source, key)) {\n        target[key] = source[key];\n      }\n    }\n  }\n\n  return target;\n};\n\n/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nfunction getClientRect(offsets) {\n  return _extends({}, offsets, {\n    right: offsets.left + offsets.width,\n    bottom: offsets.top + offsets.height\n  });\n}\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nfunction getBoundingClientRect(element) {\n  var rect = {};\n\n  // IE10 10 FIX: Please, don't ask, the element isn't\n  // considered in DOM in some circumstances...\n  // This isn't reproducible in IE10 compatibility mode of IE11\n  try {\n    if (isIE(10)) {\n      rect = element.getBoundingClientRect();\n      var scrollTop = getScroll(element, 'top');\n      var scrollLeft = getScroll(element, 'left');\n      rect.top += scrollTop;\n      rect.left += scrollLeft;\n      rect.bottom += scrollTop;\n      rect.right += scrollLeft;\n    } else {\n      rect = element.getBoundingClientRect();\n    }\n  } catch (e) {}\n\n  var result = {\n    left: rect.left,\n    top: rect.top,\n    width: rect.right - rect.left,\n    height: rect.bottom - rect.top\n  };\n\n  // subtract scrollbar size from sizes\n  var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n  var width = sizes.width || element.clientWidth || result.width;\n  var height = sizes.height || element.clientHeight || result.height;\n\n  var horizScrollbar = element.offsetWidth - width;\n  var vertScrollbar = element.offsetHeight - height;\n\n  // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n  // we make this check conditional for performance reasons\n  if (horizScrollbar || vertScrollbar) {\n    var styles = getStyleComputedProperty(element);\n    horizScrollbar -= getBordersSize(styles, 'x');\n    vertScrollbar -= getBordersSize(styles, 'y');\n\n    result.width -= horizScrollbar;\n    result.height -= vertScrollbar;\n  }\n\n  return getClientRect(result);\n}\n\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n  var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n  var isIE10 = isIE(10);\n  var isHTML = parent.nodeName === 'HTML';\n  var childrenRect = getBoundingClientRect(children);\n  var parentRect = getBoundingClientRect(parent);\n  var scrollParent = getScrollParent(children);\n\n  var styles = getStyleComputedProperty(parent);\n  var borderTopWidth = parseFloat(styles.borderTopWidth);\n  var borderLeftWidth = parseFloat(styles.borderLeftWidth);\n\n  // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n  if (fixedPosition && isHTML) {\n    parentRect.top = Math.max(parentRect.top, 0);\n    parentRect.left = Math.max(parentRect.left, 0);\n  }\n  var offsets = getClientRect({\n    top: childrenRect.top - parentRect.top - borderTopWidth,\n    left: childrenRect.left - parentRect.left - borderLeftWidth,\n    width: childrenRect.width,\n    height: childrenRect.height\n  });\n  offsets.marginTop = 0;\n  offsets.marginLeft = 0;\n\n  // Subtract margins of documentElement in case it's being used as parent\n  // we do this only on HTML because it's the only element that behaves\n  // differently when margins are applied to it. The margins are included in\n  // the box of the documentElement, in the other cases not.\n  if (!isIE10 && isHTML) {\n    var marginTop = parseFloat(styles.marginTop);\n    var marginLeft = parseFloat(styles.marginLeft);\n\n    offsets.top -= borderTopWidth - marginTop;\n    offsets.bottom -= borderTopWidth - marginTop;\n    offsets.left -= borderLeftWidth - marginLeft;\n    offsets.right -= borderLeftWidth - marginLeft;\n\n    // Attach marginTop and marginLeft because in some circumstances we may need them\n    offsets.marginTop = marginTop;\n    offsets.marginLeft = marginLeft;\n  }\n\n  if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n    offsets = includeScroll(offsets, parent);\n  }\n\n  return offsets;\n}\n\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n  var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n  var html = element.ownerDocument.documentElement;\n  var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n  var width = Math.max(html.clientWidth, window.innerWidth || 0);\n  var height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n  var scrollTop = !excludeScroll ? getScroll(html) : 0;\n  var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n  var offset = {\n    top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n    left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n    width: width,\n    height: height\n  };\n\n  return getClientRect(offset);\n}\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nfunction isFixed(element) {\n  var nodeName = element.nodeName;\n  if (nodeName === 'BODY' || nodeName === 'HTML') {\n    return false;\n  }\n  if (getStyleComputedProperty(element, 'position') === 'fixed') {\n    return true;\n  }\n  var parentNode = getParentNode(element);\n  if (!parentNode) {\n    return false;\n  }\n  return isFixed(parentNode);\n}\n\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nfunction getFixedPositionOffsetParent(element) {\n  // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n  if (!element || !element.parentElement || isIE()) {\n    return document.documentElement;\n  }\n  var el = element.parentElement;\n  while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n    el = el.parentElement;\n  }\n  return el || document.documentElement;\n}\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n  var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n  // NOTE: 1 DOM access here\n\n  var boundaries = { top: 0, left: 0 };\n  var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n\n  // Handle viewport case\n  if (boundariesElement === 'viewport') {\n    boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n  } else {\n    // Handle other cases based on DOM element used as boundaries\n    var boundariesNode = void 0;\n    if (boundariesElement === 'scrollParent') {\n      boundariesNode = getScrollParent(getParentNode(reference));\n      if (boundariesNode.nodeName === 'BODY') {\n        boundariesNode = popper.ownerDocument.documentElement;\n      }\n    } else if (boundariesElement === 'window') {\n      boundariesNode = popper.ownerDocument.documentElement;\n    } else {\n      boundariesNode = boundariesElement;\n    }\n\n    var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);\n\n    // In case of HTML, we need a different computation\n    if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n      var _getWindowSizes = getWindowSizes(popper.ownerDocument),\n          height = _getWindowSizes.height,\n          width = _getWindowSizes.width;\n\n      boundaries.top += offsets.top - offsets.marginTop;\n      boundaries.bottom = height + offsets.top;\n      boundaries.left += offsets.left - offsets.marginLeft;\n      boundaries.right = width + offsets.left;\n    } else {\n      // for all the other DOM elements, this one is good\n      boundaries = offsets;\n    }\n  }\n\n  // Add paddings\n  padding = padding || 0;\n  var isPaddingNumber = typeof padding === 'number';\n  boundaries.left += isPaddingNumber ? padding : padding.left || 0;\n  boundaries.top += isPaddingNumber ? padding : padding.top || 0;\n  boundaries.right -= isPaddingNumber ? padding : padding.right || 0;\n  boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;\n\n  return boundaries;\n}\n\nfunction getArea(_ref) {\n  var width = _ref.width,\n      height = _ref.height;\n\n  return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n  var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n  if (placement.indexOf('auto') === -1) {\n    return placement;\n  }\n\n  var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n\n  var rects = {\n    top: {\n      width: boundaries.width,\n      height: refRect.top - boundaries.top\n    },\n    right: {\n      width: boundaries.right - refRect.right,\n      height: boundaries.height\n    },\n    bottom: {\n      width: boundaries.width,\n      height: boundaries.bottom - refRect.bottom\n    },\n    left: {\n      width: refRect.left - boundaries.left,\n      height: boundaries.height\n    }\n  };\n\n  var sortedAreas = Object.keys(rects).map(function (key) {\n    return _extends({\n      key: key\n    }, rects[key], {\n      area: getArea(rects[key])\n    });\n  }).sort(function (a, b) {\n    return b.area - a.area;\n  });\n\n  var filteredAreas = sortedAreas.filter(function (_ref2) {\n    var width = _ref2.width,\n        height = _ref2.height;\n    return width >= popper.clientWidth && height >= popper.clientHeight;\n  });\n\n  var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n\n  var variation = placement.split('-')[1];\n\n  return computedPlacement + (variation ? '-' + variation : '');\n}\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nfunction getReferenceOffsets(state, popper, reference) {\n  var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n  var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n  return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n\n/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nfunction getOuterSizes(element) {\n  var window = element.ownerDocument.defaultView;\n  var styles = window.getComputedStyle(element);\n  var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n  var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n  var result = {\n    width: element.offsetWidth + y,\n    height: element.offsetHeight + x\n  };\n  return result;\n}\n\n/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nfunction getOppositePlacement(placement) {\n  var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n  return placement.replace(/left|right|bottom|top/g, function (matched) {\n    return hash[matched];\n  });\n}\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n  placement = placement.split('-')[0];\n\n  // Get popper node sizes\n  var popperRect = getOuterSizes(popper);\n\n  // Add position, width and height to our offsets object\n  var popperOffsets = {\n    width: popperRect.width,\n    height: popperRect.height\n  };\n\n  // depending by the popper placement we have to compute its offsets slightly differently\n  var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n  var mainSide = isHoriz ? 'top' : 'left';\n  var secondarySide = isHoriz ? 'left' : 'top';\n  var measurement = isHoriz ? 'height' : 'width';\n  var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n  popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n  if (placement === secondarySide) {\n    popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n  } else {\n    popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n  }\n\n  return popperOffsets;\n}\n\n/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction find(arr, check) {\n  // use native find if supported\n  if (Array.prototype.find) {\n    return arr.find(check);\n  }\n\n  // use `filter` to obtain the same behavior of `find`\n  return arr.filter(check)[0];\n}\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction findIndex(arr, prop, value) {\n  // use native findIndex if supported\n  if (Array.prototype.findIndex) {\n    return arr.findIndex(function (cur) {\n      return cur[prop] === value;\n    });\n  }\n\n  // use `find` + `indexOf` if `findIndex` isn't supported\n  var match = find(arr, function (obj) {\n    return obj[prop] === value;\n  });\n  return arr.indexOf(match);\n}\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nfunction runModifiers(modifiers, data, ends) {\n  var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n  modifiersToRun.forEach(function (modifier) {\n    if (modifier['function']) {\n      // eslint-disable-line dot-notation\n      console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n    }\n    var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n    if (modifier.enabled && isFunction(fn)) {\n      // Add properties to offsets to make them a complete clientRect object\n      // we do this before each modifier to make sure the previous one doesn't\n      // mess with these values\n      data.offsets.popper = getClientRect(data.offsets.popper);\n      data.offsets.reference = getClientRect(data.offsets.reference);\n\n      data = fn(data, modifier);\n    }\n  });\n\n  return data;\n}\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.<br />\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nfunction update() {\n  // if popper is destroyed, don't perform any further update\n  if (this.state.isDestroyed) {\n    return;\n  }\n\n  var data = {\n    instance: this,\n    styles: {},\n    arrowStyles: {},\n    attributes: {},\n    flipped: false,\n    offsets: {}\n  };\n\n  // compute reference element offsets\n  data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);\n\n  // compute auto placement, store placement inside the data object,\n  // modifiers will be able to edit `placement` if needed\n  // and refer to originalPlacement to know the original value\n  data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\n\n  // store the computed placement inside `originalPlacement`\n  data.originalPlacement = data.placement;\n\n  data.positionFixed = this.options.positionFixed;\n\n  // compute the popper offsets\n  data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n\n  data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';\n\n  // run the modifiers\n  data = runModifiers(this.modifiers, data);\n\n  // the first `update` will call `onCreate` callback\n  // the other ones will call `onUpdate` callback\n  if (!this.state.isCreated) {\n    this.state.isCreated = true;\n    this.options.onCreate(data);\n  } else {\n    this.options.onUpdate(data);\n  }\n}\n\n/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nfunction isModifierEnabled(modifiers, modifierName) {\n  return modifiers.some(function (_ref) {\n    var name = _ref.name,\n        enabled = _ref.enabled;\n    return enabled && name === modifierName;\n  });\n}\n\n/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nfunction getSupportedPropertyName(property) {\n  var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n  var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n  for (var i = 0; i < prefixes.length; i++) {\n    var prefix = prefixes[i];\n    var toCheck = prefix ? '' + prefix + upperProp : property;\n    if (typeof document.body.style[toCheck] !== 'undefined') {\n      return toCheck;\n    }\n  }\n  return null;\n}\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nfunction destroy() {\n  this.state.isDestroyed = true;\n\n  // touch DOM only if `applyStyle` modifier is enabled\n  if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n    this.popper.removeAttribute('x-placement');\n    this.popper.style.position = '';\n    this.popper.style.top = '';\n    this.popper.style.left = '';\n    this.popper.style.right = '';\n    this.popper.style.bottom = '';\n    this.popper.style.willChange = '';\n    this.popper.style[getSupportedPropertyName('transform')] = '';\n  }\n\n  this.disableEventListeners();\n\n  // remove the popper if user explicitly asked for the deletion on destroy\n  // do not use `remove` because IE11 doesn't support it\n  if (this.options.removeOnDestroy) {\n    this.popper.parentNode.removeChild(this.popper);\n  }\n  return this;\n}\n\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nfunction getWindow(element) {\n  var ownerDocument = element.ownerDocument;\n  return ownerDocument ? ownerDocument.defaultView : window;\n}\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n  var isBody = scrollParent.nodeName === 'BODY';\n  var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n  target.addEventListener(event, callback, { passive: true });\n\n  if (!isBody) {\n    attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n  }\n  scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction setupEventListeners(reference, options, state, updateBound) {\n  // Resize event listener on window\n  state.updateBound = updateBound;\n  getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n  // Scroll event listener on scroll parents\n  var scrollElement = getScrollParent(reference);\n  attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n  state.scrollElement = scrollElement;\n  state.eventsEnabled = true;\n\n  return state;\n}\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nfunction enableEventListeners() {\n  if (!this.state.eventsEnabled) {\n    this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n  }\n}\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction removeEventListeners(reference, state) {\n  // Remove resize event listener on window\n  getWindow(reference).removeEventListener('resize', state.updateBound);\n\n  // Remove scroll event listener on scroll parents\n  state.scrollParents.forEach(function (target) {\n    target.removeEventListener('scroll', state.updateBound);\n  });\n\n  // Reset state\n  state.updateBound = null;\n  state.scrollParents = [];\n  state.scrollElement = null;\n  state.eventsEnabled = false;\n  return state;\n}\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nfunction disableEventListeners() {\n  if (this.state.eventsEnabled) {\n    cancelAnimationFrame(this.scheduleUpdate);\n    this.state = removeEventListeners(this.reference, this.state);\n  }\n}\n\n/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nfunction isNumeric(n) {\n  return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setStyles(element, styles) {\n  Object.keys(styles).forEach(function (prop) {\n    var unit = '';\n    // add unit if the value is numeric and is one of the following\n    if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n      unit = 'px';\n    }\n    element.style[prop] = styles[prop] + unit;\n  });\n}\n\n/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setAttributes(element, attributes) {\n  Object.keys(attributes).forEach(function (prop) {\n    var value = attributes[prop];\n    if (value !== false) {\n      element.setAttribute(prop, attributes[prop]);\n    } else {\n      element.removeAttribute(prop);\n    }\n  });\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nfunction applyStyle(data) {\n  // any property present in `data.styles` will be applied to the popper,\n  // in this way we can make the 3rd party modifiers add custom styles to it\n  // Be aware, modifiers could override the properties defined in the previous\n  // lines of this modifier!\n  setStyles(data.instance.popper, data.styles);\n\n  // any property present in `data.attributes` will be applied to the popper,\n  // they will be set as HTML attributes of the element\n  setAttributes(data.instance.popper, data.attributes);\n\n  // if arrowElement is defined and arrowStyles has some properties\n  if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n    setStyles(data.arrowElement, data.arrowStyles);\n  }\n\n  return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n  // compute reference element offsets\n  var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n  // compute auto placement, store placement inside the data object,\n  // modifiers will be able to edit `placement` if needed\n  // and refer to originalPlacement to know the original value\n  var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n\n  popper.setAttribute('x-placement', placement);\n\n  // Apply `position` to popper before anything else because\n  // without the position applied we can't guarantee correct computations\n  setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n  return options;\n}\n\n/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nfunction getRoundedOffsets(data, shouldRound) {\n  var _data$offsets = data.offsets,\n      popper = _data$offsets.popper,\n      reference = _data$offsets.reference;\n  var round = Math.round,\n      floor = Math.floor;\n\n  var noRound = function noRound(v) {\n    return v;\n  };\n\n  var referenceWidth = round(reference.width);\n  var popperWidth = round(popper.width);\n\n  var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n  var isVariation = data.placement.indexOf('-') !== -1;\n  var sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n  var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n  var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;\n  var verticalToInteger = !shouldRound ? noRound : round;\n\n  return {\n    left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),\n    top: verticalToInteger(popper.top),\n    bottom: verticalToInteger(popper.bottom),\n    right: horizontalToInteger(popper.right)\n  };\n}\n\nvar isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeStyle(data, options) {\n  var x = options.x,\n      y = options.y;\n  var popper = data.offsets.popper;\n\n  // Remove this legacy support in Popper.js v2\n\n  var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n    return modifier.name === 'applyStyle';\n  }).gpuAcceleration;\n  if (legacyGpuAccelerationOption !== undefined) {\n    console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n  }\n  var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n\n  var offsetParent = getOffsetParent(data.instance.popper);\n  var offsetParentRect = getBoundingClientRect(offsetParent);\n\n  // Styles\n  var styles = {\n    position: popper.position\n  };\n\n  var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\n\n  var sideA = x === 'bottom' ? 'top' : 'bottom';\n  var sideB = y === 'right' ? 'left' : 'right';\n\n  // if gpuAcceleration is set to `true` and transform is supported,\n  //  we use `translate3d` to apply the position to the popper we\n  // automatically use the supported prefixed version if needed\n  var prefixedProperty = getSupportedPropertyName('transform');\n\n  // now, let's make a step back and look at this code closely (wtf?)\n  // If the content of the popper grows once it's been positioned, it\n  // may happen that the popper gets misplaced because of the new content\n  // overflowing its reference element\n  // To avoid this problem, we provide two options (x and y), which allow\n  // the consumer to define the offset origin.\n  // If we position a popper on top of a reference element, we can set\n  // `x` to `top` to make the popper grow towards its top instead of\n  // its bottom.\n  var left = void 0,\n      top = void 0;\n  if (sideA === 'bottom') {\n    // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)\n    // and not the bottom of the html element\n    if (offsetParent.nodeName === 'HTML') {\n      top = -offsetParent.clientHeight + offsets.bottom;\n    } else {\n      top = -offsetParentRect.height + offsets.bottom;\n    }\n  } else {\n    top = offsets.top;\n  }\n  if (sideB === 'right') {\n    if (offsetParent.nodeName === 'HTML') {\n      left = -offsetParent.clientWidth + offsets.right;\n    } else {\n      left = -offsetParentRect.width + offsets.right;\n    }\n  } else {\n    left = offsets.left;\n  }\n  if (gpuAcceleration && prefixedProperty) {\n    styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n    styles[sideA] = 0;\n    styles[sideB] = 0;\n    styles.willChange = 'transform';\n  } else {\n    // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n    var invertTop = sideA === 'bottom' ? -1 : 1;\n    var invertLeft = sideB === 'right' ? -1 : 1;\n    styles[sideA] = top * invertTop;\n    styles[sideB] = left * invertLeft;\n    styles.willChange = sideA + ', ' + sideB;\n  }\n\n  // Attributes\n  var attributes = {\n    'x-placement': data.placement\n  };\n\n  // Update `data` attributes, styles and arrowStyles\n  data.attributes = _extends({}, attributes, data.attributes);\n  data.styles = _extends({}, styles, data.styles);\n  data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n\n  return data;\n}\n\n/**\n * Helper used to know if the given modifier depends from another one.<br />\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n  var requesting = find(modifiers, function (_ref) {\n    var name = _ref.name;\n    return name === requestingName;\n  });\n\n  var isRequired = !!requesting && modifiers.some(function (modifier) {\n    return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n  });\n\n  if (!isRequired) {\n    var _requesting = '`' + requestingName + '`';\n    var requested = '`' + requestedName + '`';\n    console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n  }\n  return isRequired;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction arrow(data, options) {\n  var _data$offsets$arrow;\n\n  // arrow depends on keepTogether in order to work\n  if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n    return data;\n  }\n\n  var arrowElement = options.element;\n\n  // if arrowElement is a string, suppose it's a CSS selector\n  if (typeof arrowElement === 'string') {\n    arrowElement = data.instance.popper.querySelector(arrowElement);\n\n    // if arrowElement is not found, don't run the modifier\n    if (!arrowElement) {\n      return data;\n    }\n  } else {\n    // if the arrowElement isn't a query selector we must check that the\n    // provided DOM node is child of its popper node\n    if (!data.instance.popper.contains(arrowElement)) {\n      console.warn('WARNING: `arrow.element` must be child of its popper element!');\n      return data;\n    }\n  }\n\n  var placement = data.placement.split('-')[0];\n  var _data$offsets = data.offsets,\n      popper = _data$offsets.popper,\n      reference = _data$offsets.reference;\n\n  var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n  var len = isVertical ? 'height' : 'width';\n  var sideCapitalized = isVertical ? 'Top' : 'Left';\n  var side = sideCapitalized.toLowerCase();\n  var altSide = isVertical ? 'left' : 'top';\n  var opSide = isVertical ? 'bottom' : 'right';\n  var arrowElementSize = getOuterSizes(arrowElement)[len];\n\n  //\n  // extends keepTogether behavior making sure the popper and its\n  // reference have enough pixels in conjunction\n  //\n\n  // top/left side\n  if (reference[opSide] - arrowElementSize < popper[side]) {\n    data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n  }\n  // bottom/right side\n  if (reference[side] + arrowElementSize > popper[opSide]) {\n    data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n  }\n  data.offsets.popper = getClientRect(data.offsets.popper);\n\n  // compute center of the popper\n  var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n  // Compute the sideValue using the updated popper offsets\n  // take popper margin in account because we don't have this info available\n  var css = getStyleComputedProperty(data.instance.popper);\n  var popperMarginSide = parseFloat(css['margin' + sideCapitalized]);\n  var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width']);\n  var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n  // prevent arrowElement from being placed not contiguously to its popper\n  sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n  data.arrowElement = arrowElement;\n  data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n\n  return data;\n}\n\n/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nfunction getOppositeVariation(variation) {\n  if (variation === 'end') {\n    return 'start';\n  } else if (variation === 'start') {\n    return 'end';\n  }\n  return variation;\n}\n\n/**\n * List of accepted placements to use as values of the `placement` option.<br />\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.<br />\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\n\n// Get rid of `auto` `auto-start` and `auto-end`\nvar validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nfunction clockwise(placement) {\n  var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n  var index = validPlacements.indexOf(placement);\n  var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n  return counter ? arr.reverse() : arr;\n}\n\nvar BEHAVIORS = {\n  FLIP: 'flip',\n  CLOCKWISE: 'clockwise',\n  COUNTERCLOCKWISE: 'counterclockwise'\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction flip(data, options) {\n  // if `inner` modifier is enabled, we can't use the `flip` modifier\n  if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n    return data;\n  }\n\n  if (data.flipped && data.placement === data.originalPlacement) {\n    // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n    return data;\n  }\n\n  var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\n\n  var placement = data.placement.split('-')[0];\n  var placementOpposite = getOppositePlacement(placement);\n  var variation = data.placement.split('-')[1] || '';\n\n  var flipOrder = [];\n\n  switch (options.behavior) {\n    case BEHAVIORS.FLIP:\n      flipOrder = [placement, placementOpposite];\n      break;\n    case BEHAVIORS.CLOCKWISE:\n      flipOrder = clockwise(placement);\n      break;\n    case BEHAVIORS.COUNTERCLOCKWISE:\n      flipOrder = clockwise(placement, true);\n      break;\n    default:\n      flipOrder = options.behavior;\n  }\n\n  flipOrder.forEach(function (step, index) {\n    if (placement !== step || flipOrder.length === index + 1) {\n      return data;\n    }\n\n    placement = data.placement.split('-')[0];\n    placementOpposite = getOppositePlacement(placement);\n\n    var popperOffsets = data.offsets.popper;\n    var refOffsets = data.offsets.reference;\n\n    // using floor because the reference offsets may contain decimals we are not going to consider here\n    var floor = Math.floor;\n    var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n\n    var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n    var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n    var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n    var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n    var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n\n    // flip the variation if required\n    var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n\n    // flips variation if reference element overflows boundaries\n    var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n    // flips variation if popper content overflows boundaries\n    var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop);\n\n    var flippedVariation = flippedVariationByRef || flippedVariationByContent;\n\n    if (overlapsRef || overflowsBoundaries || flippedVariation) {\n      // this boolean to detect any flip loop\n      data.flipped = true;\n\n      if (overlapsRef || overflowsBoundaries) {\n        placement = flipOrder[index + 1];\n      }\n\n      if (flippedVariation) {\n        variation = getOppositeVariation(variation);\n      }\n\n      data.placement = placement + (variation ? '-' + variation : '');\n\n      // this object contains `position`, we want to preserve it along with\n      // any additional property we may add in the future\n      data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n\n      data = runModifiers(data.instance.modifiers, data, 'flip');\n    }\n  });\n  return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction keepTogether(data) {\n  var _data$offsets = data.offsets,\n      popper = _data$offsets.popper,\n      reference = _data$offsets.reference;\n\n  var placement = data.placement.split('-')[0];\n  var floor = Math.floor;\n  var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n  var side = isVertical ? 'right' : 'bottom';\n  var opSide = isVertical ? 'left' : 'top';\n  var measurement = isVertical ? 'width' : 'height';\n\n  if (popper[side] < floor(reference[opSide])) {\n    data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n  }\n  if (popper[opSide] > floor(reference[side])) {\n    data.offsets.popper[opSide] = floor(reference[side]);\n  }\n\n  return data;\n}\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n  // separate value from unit\n  var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n  var value = +split[1];\n  var unit = split[2];\n\n  // If it's not a number it's an operator, I guess\n  if (!value) {\n    return str;\n  }\n\n  if (unit.indexOf('%') === 0) {\n    var element = void 0;\n    switch (unit) {\n      case '%p':\n        element = popperOffsets;\n        break;\n      case '%':\n      case '%r':\n      default:\n        element = referenceOffsets;\n    }\n\n    var rect = getClientRect(element);\n    return rect[measurement] / 100 * value;\n  } else if (unit === 'vh' || unit === 'vw') {\n    // if is a vh or vw, we calculate the size based on the viewport\n    var size = void 0;\n    if (unit === 'vh') {\n      size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n    } else {\n      size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n    }\n    return size / 100 * value;\n  } else {\n    // if is an explicit pixel unit, we get rid of the unit and keep the value\n    // if is an implicit unit, it's px, and we return just the value\n    return value;\n  }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n  var offsets = [0, 0];\n\n  // Use height if placement is left or right and index is 0 otherwise use width\n  // in this way the first offset will use an axis and the second one\n  // will use the other one\n  var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n  // Split the offset string to obtain a list of values and operands\n  // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n  var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n    return frag.trim();\n  });\n\n  // Detect if the offset string contains a pair of values or a single one\n  // they could be separated by comma or space\n  var divider = fragments.indexOf(find(fragments, function (frag) {\n    return frag.search(/,|\\s/) !== -1;\n  }));\n\n  if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n    console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n  }\n\n  // If divider is found, we divide the list of values and operands to divide\n  // them by ofset X and Y.\n  var splitRegex = /\\s*,\\s*|\\s+/;\n  var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];\n\n  // Convert the values with units to absolute pixels to allow our computations\n  ops = ops.map(function (op, index) {\n    // Most of the units rely on the orientation of the popper\n    var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n    var mergeWithPrevious = false;\n    return op\n    // This aggregates any `+` or `-` sign that aren't considered operators\n    // e.g.: 10 + +5 => [10, +, +5]\n    .reduce(function (a, b) {\n      if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n        a[a.length - 1] = b;\n        mergeWithPrevious = true;\n        return a;\n      } else if (mergeWithPrevious) {\n        a[a.length - 1] += b;\n        mergeWithPrevious = false;\n        return a;\n      } else {\n        return a.concat(b);\n      }\n    }, [])\n    // Here we convert the string values into number values (in px)\n    .map(function (str) {\n      return toValue(str, measurement, popperOffsets, referenceOffsets);\n    });\n  });\n\n  // Loop trough the offsets arrays and execute the operations\n  ops.forEach(function (op, index) {\n    op.forEach(function (frag, index2) {\n      if (isNumeric(frag)) {\n        offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n      }\n    });\n  });\n  return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nfunction offset(data, _ref) {\n  var offset = _ref.offset;\n  var placement = data.placement,\n      _data$offsets = data.offsets,\n      popper = _data$offsets.popper,\n      reference = _data$offsets.reference;\n\n  var basePlacement = placement.split('-')[0];\n\n  var offsets = void 0;\n  if (isNumeric(+offset)) {\n    offsets = [+offset, 0];\n  } else {\n    offsets = parseOffset(offset, popper, reference, basePlacement);\n  }\n\n  if (basePlacement === 'left') {\n    popper.top += offsets[0];\n    popper.left -= offsets[1];\n  } else if (basePlacement === 'right') {\n    popper.top += offsets[0];\n    popper.left += offsets[1];\n  } else if (basePlacement === 'top') {\n    popper.left += offsets[0];\n    popper.top -= offsets[1];\n  } else if (basePlacement === 'bottom') {\n    popper.left += offsets[0];\n    popper.top += offsets[1];\n  }\n\n  data.popper = popper;\n  return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction preventOverflow(data, options) {\n  var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\n\n  // If offsetParent is the reference element, we really want to\n  // go one step up and use the next offsetParent as reference to\n  // avoid to make this modifier completely useless and look like broken\n  if (data.instance.reference === boundariesElement) {\n    boundariesElement = getOffsetParent(boundariesElement);\n  }\n\n  // NOTE: DOM access here\n  // resets the popper's position so that the document size can be calculated excluding\n  // the size of the popper element itself\n  var transformProp = getSupportedPropertyName('transform');\n  var popperStyles = data.instance.popper.style; // assignment to help minification\n  var top = popperStyles.top,\n      left = popperStyles.left,\n      transform = popperStyles[transformProp];\n\n  popperStyles.top = '';\n  popperStyles.left = '';\n  popperStyles[transformProp] = '';\n\n  var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);\n\n  // NOTE: DOM access here\n  // restores the original style properties after the offsets have been computed\n  popperStyles.top = top;\n  popperStyles.left = left;\n  popperStyles[transformProp] = transform;\n\n  options.boundaries = boundaries;\n\n  var order = options.priority;\n  var popper = data.offsets.popper;\n\n  var check = {\n    primary: function primary(placement) {\n      var value = popper[placement];\n      if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n        value = Math.max(popper[placement], boundaries[placement]);\n      }\n      return defineProperty({}, placement, value);\n    },\n    secondary: function secondary(placement) {\n      var mainSide = placement === 'right' ? 'left' : 'top';\n      var value = popper[mainSide];\n      if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n        value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n      }\n      return defineProperty({}, mainSide, value);\n    }\n  };\n\n  order.forEach(function (placement) {\n    var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n    popper = _extends({}, popper, check[side](placement));\n  });\n\n  data.offsets.popper = popper;\n\n  return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction shift(data) {\n  var placement = data.placement;\n  var basePlacement = placement.split('-')[0];\n  var shiftvariation = placement.split('-')[1];\n\n  // if shift shiftvariation is specified, run the modifier\n  if (shiftvariation) {\n    var _data$offsets = data.offsets,\n        reference = _data$offsets.reference,\n        popper = _data$offsets.popper;\n\n    var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n    var side = isVertical ? 'left' : 'top';\n    var measurement = isVertical ? 'width' : 'height';\n\n    var shiftOffsets = {\n      start: defineProperty({}, side, reference[side]),\n      end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n    };\n\n    data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n  }\n\n  return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction hide(data) {\n  if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n    return data;\n  }\n\n  var refRect = data.offsets.reference;\n  var bound = find(data.instance.modifiers, function (modifier) {\n    return modifier.name === 'preventOverflow';\n  }).boundaries;\n\n  if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n    // Avoid unnecessary DOM access if visibility hasn't changed\n    if (data.hide === true) {\n      return data;\n    }\n\n    data.hide = true;\n    data.attributes['x-out-of-boundaries'] = '';\n  } else {\n    // Avoid unnecessary DOM access if visibility hasn't changed\n    if (data.hide === false) {\n      return data;\n    }\n\n    data.hide = false;\n    data.attributes['x-out-of-boundaries'] = false;\n  }\n\n  return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction inner(data) {\n  var placement = data.placement;\n  var basePlacement = placement.split('-')[0];\n  var _data$offsets = data.offsets,\n      popper = _data$offsets.popper,\n      reference = _data$offsets.reference;\n\n  var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n  var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n  popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n  data.placement = getOppositePlacement(placement);\n  data.offsets.popper = getClientRect(popper);\n\n  return data;\n}\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.<br />\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.<br />\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nvar modifiers = {\n  /**\n   * Modifier used to shift the popper on the start or end of its reference\n   * element.<br />\n   * It will read the variation of the `placement` property.<br />\n   * It can be one either `-end` or `-start`.\n   * @memberof modifiers\n   * @inner\n   */\n  shift: {\n    /** @prop {number} order=100 - Index used to define the order of execution */\n    order: 100,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: shift\n  },\n\n  /**\n   * The `offset` modifier can shift your popper on both its axis.\n   *\n   * It accepts the following units:\n   * - `px` or unit-less, interpreted as pixels\n   * - `%` or `%r`, percentage relative to the length of the reference element\n   * - `%p`, percentage relative to the length of the popper element\n   * - `vw`, CSS viewport width unit\n   * - `vh`, CSS viewport height unit\n   *\n   * For length is intended the main axis relative to the placement of the popper.<br />\n   * This means that if the placement is `top` or `bottom`, the length will be the\n   * `width`. In case of `left` or `right`, it will be the `height`.\n   *\n   * You can provide a single value (as `Number` or `String`), or a pair of values\n   * as `String` divided by a comma or one (or more) white spaces.<br />\n   * The latter is a deprecated method because it leads to confusion and will be\n   * removed in v2.<br />\n   * Additionally, it accepts additions and subtractions between different units.\n   * Note that multiplications and divisions aren't supported.\n   *\n   * Valid examples are:\n   * ```\n   * 10\n   * '10%'\n   * '10, 10'\n   * '10%, 10'\n   * '10 + 10%'\n   * '10 - 5vh + 3%'\n   * '-10px + 5vh, 5px - 6%'\n   * ```\n   * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n   * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n   * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  offset: {\n    /** @prop {number} order=200 - Index used to define the order of execution */\n    order: 200,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: offset,\n    /** @prop {Number|String} offset=0\n     * The offset value as described in the modifier description\n     */\n    offset: 0\n  },\n\n  /**\n   * Modifier used to prevent the popper from being positioned outside the boundary.\n   *\n   * A scenario exists where the reference itself is not within the boundaries.<br />\n   * We can say it has \"escaped the boundaries\" — or just \"escaped\".<br />\n   * In this case we need to decide whether the popper should either:\n   *\n   * - detach from the reference and remain \"trapped\" in the boundaries, or\n   * - if it should ignore the boundary and \"escape with its reference\"\n   *\n   * When `escapeWithReference` is set to`true` and reference is completely\n   * outside its boundaries, the popper will overflow (or completely leave)\n   * the boundaries in order to remain attached to the edge of the reference.\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  preventOverflow: {\n    /** @prop {number} order=300 - Index used to define the order of execution */\n    order: 300,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: preventOverflow,\n    /**\n     * @prop {Array} [priority=['left','right','top','bottom']]\n     * Popper will try to prevent overflow following these priorities by default,\n     * then, it could overflow on the left and on top of the `boundariesElement`\n     */\n    priority: ['left', 'right', 'top', 'bottom'],\n    /**\n     * @prop {number} padding=5\n     * Amount of pixel used to define a minimum distance between the boundaries\n     * and the popper. This makes sure the popper always has a little padding\n     * between the edges of its container\n     */\n    padding: 5,\n    /**\n     * @prop {String|HTMLElement} boundariesElement='scrollParent'\n     * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n     * `viewport` or any DOM element.\n     */\n    boundariesElement: 'scrollParent'\n  },\n\n  /**\n   * Modifier used to make sure the reference and its popper stay near each other\n   * without leaving any gap between the two. Especially useful when the arrow is\n   * enabled and you want to ensure that it points to its reference element.\n   * It cares only about the first axis. You can still have poppers with margin\n   * between the popper and its reference element.\n   * @memberof modifiers\n   * @inner\n   */\n  keepTogether: {\n    /** @prop {number} order=400 - Index used to define the order of execution */\n    order: 400,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: keepTogether\n  },\n\n  /**\n   * This modifier is used to move the `arrowElement` of the popper to make\n   * sure it is positioned between the reference element and its popper element.\n   * It will read the outer size of the `arrowElement` node to detect how many\n   * pixels of conjunction are needed.\n   *\n   * It has no effect if no `arrowElement` is provided.\n   * @memberof modifiers\n   * @inner\n   */\n  arrow: {\n    /** @prop {number} order=500 - Index used to define the order of execution */\n    order: 500,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: arrow,\n    /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n    element: '[x-arrow]'\n  },\n\n  /**\n   * Modifier used to flip the popper's placement when it starts to overlap its\n   * reference element.\n   *\n   * Requires the `preventOverflow` modifier before it in order to work.\n   *\n   * **NOTE:** this modifier will interrupt the current update cycle and will\n   * restart it if it detects the need to flip the placement.\n   * @memberof modifiers\n   * @inner\n   */\n  flip: {\n    /** @prop {number} order=600 - Index used to define the order of execution */\n    order: 600,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: flip,\n    /**\n     * @prop {String|Array} behavior='flip'\n     * The behavior used to change the popper's placement. It can be one of\n     * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n     * placements (with optional variations)\n     */\n    behavior: 'flip',\n    /**\n     * @prop {number} padding=5\n     * The popper will flip if it hits the edges of the `boundariesElement`\n     */\n    padding: 5,\n    /**\n     * @prop {String|HTMLElement} boundariesElement='viewport'\n     * The element which will define the boundaries of the popper position.\n     * The popper will never be placed outside of the defined boundaries\n     * (except if `keepTogether` is enabled)\n     */\n    boundariesElement: 'viewport',\n    /**\n     * @prop {Boolean} flipVariations=false\n     * The popper will switch placement variation between `-start` and `-end` when\n     * the reference element overlaps its boundaries.\n     *\n     * The original placement should have a set variation.\n     */\n    flipVariations: false,\n    /**\n     * @prop {Boolean} flipVariationsByContent=false\n     * The popper will switch placement variation between `-start` and `-end` when\n     * the popper element overlaps its reference boundaries.\n     *\n     * The original placement should have a set variation.\n     */\n    flipVariationsByContent: false\n  },\n\n  /**\n   * Modifier used to make the popper flow toward the inner of the reference element.\n   * By default, when this modifier is disabled, the popper will be placed outside\n   * the reference element.\n   * @memberof modifiers\n   * @inner\n   */\n  inner: {\n    /** @prop {number} order=700 - Index used to define the order of execution */\n    order: 700,\n    /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n    enabled: false,\n    /** @prop {ModifierFn} */\n    fn: inner\n  },\n\n  /**\n   * Modifier used to hide the popper when its reference element is outside of the\n   * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n   * be used to hide with a CSS selector the popper when its reference is\n   * out of boundaries.\n   *\n   * Requires the `preventOverflow` modifier before it in order to work.\n   * @memberof modifiers\n   * @inner\n   */\n  hide: {\n    /** @prop {number} order=800 - Index used to define the order of execution */\n    order: 800,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: hide\n  },\n\n  /**\n   * Computes the style that will be applied to the popper element to gets\n   * properly positioned.\n   *\n   * Note that this modifier will not touch the DOM, it just prepares the styles\n   * so that `applyStyle` modifier can apply it. This separation is useful\n   * in case you need to replace `applyStyle` with a custom implementation.\n   *\n   * This modifier has `850` as `order` value to maintain backward compatibility\n   * with previous versions of Popper.js. Expect the modifiers ordering method\n   * to change in future major versions of the library.\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  computeStyle: {\n    /** @prop {number} order=850 - Index used to define the order of execution */\n    order: 850,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: computeStyle,\n    /**\n     * @prop {Boolean} gpuAcceleration=true\n     * If true, it uses the CSS 3D transformation to position the popper.\n     * Otherwise, it will use the `top` and `left` properties\n     */\n    gpuAcceleration: true,\n    /**\n     * @prop {string} [x='bottom']\n     * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n     * Change this if your popper should grow in a direction different from `bottom`\n     */\n    x: 'bottom',\n    /**\n     * @prop {string} [x='left']\n     * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n     * Change this if your popper should grow in a direction different from `right`\n     */\n    y: 'right'\n  },\n\n  /**\n   * Applies the computed styles to the popper element.\n   *\n   * All the DOM manipulations are limited to this modifier. This is useful in case\n   * you want to integrate Popper.js inside a framework or view library and you\n   * want to delegate all the DOM manipulations to it.\n   *\n   * Note that if you disable this modifier, you must make sure the popper element\n   * has its position set to `absolute` before Popper.js can do its work!\n   *\n   * Just disable this modifier and define your own to achieve the desired effect.\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  applyStyle: {\n    /** @prop {number} order=900 - Index used to define the order of execution */\n    order: 900,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: applyStyle,\n    /** @prop {Function} */\n    onLoad: applyStyleOnLoad,\n    /**\n     * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n     * @prop {Boolean} gpuAcceleration=true\n     * If true, it uses the CSS 3D transformation to position the popper.\n     * Otherwise, it will use the `top` and `left` properties\n     */\n    gpuAcceleration: undefined\n  }\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n\n/**\n * Default options provided to Popper.js constructor.<br />\n * These can be overridden using the `options` argument of Popper.js.<br />\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n *   modifiers: {\n *     preventOverflow: { enabled: false }\n *   }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nvar Defaults = {\n  /**\n   * Popper's placement.\n   * @prop {Popper.placements} placement='bottom'\n   */\n  placement: 'bottom',\n\n  /**\n   * Set this to true if you want popper to position it self in 'fixed' mode\n   * @prop {Boolean} positionFixed=false\n   */\n  positionFixed: false,\n\n  /**\n   * Whether events (resize, scroll) are initially enabled.\n   * @prop {Boolean} eventsEnabled=true\n   */\n  eventsEnabled: true,\n\n  /**\n   * Set to true if you want to automatically remove the popper when\n   * you call the `destroy` method.\n   * @prop {Boolean} removeOnDestroy=false\n   */\n  removeOnDestroy: false,\n\n  /**\n   * Callback called when the popper is created.<br />\n   * By default, it is set to no-op.<br />\n   * Access Popper.js instance with `data.instance`.\n   * @prop {onCreate}\n   */\n  onCreate: function onCreate() {},\n\n  /**\n   * Callback called when the popper is updated. This callback is not called\n   * on the initialization/creation of the popper, but only on subsequent\n   * updates.<br />\n   * By default, it is set to no-op.<br />\n   * Access Popper.js instance with `data.instance`.\n   * @prop {onUpdate}\n   */\n  onUpdate: function onUpdate() {},\n\n  /**\n   * List of modifiers used to modify the offsets before they are applied to the popper.\n   * They provide most of the functionalities of Popper.js.\n   * @prop {modifiers}\n   */\n  modifiers: modifiers\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n\n// Utils\n// Methods\nvar Popper = function () {\n  /**\n   * Creates a new Popper.js instance.\n   * @class Popper\n   * @param {Element|referenceObject} reference - The reference element used to position the popper\n   * @param {Element} popper - The HTML / XML element used as the popper\n   * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n   * @return {Object} instance - The generated Popper.js instance\n   */\n  function Popper(reference, popper) {\n    var _this = this;\n\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    classCallCheck(this, Popper);\n\n    this.scheduleUpdate = function () {\n      return requestAnimationFrame(_this.update);\n    };\n\n    // make update() debounced, so that it only runs at most once-per-tick\n    this.update = debounce(this.update.bind(this));\n\n    // with {} we create a new object with the options inside it\n    this.options = _extends({}, Popper.Defaults, options);\n\n    // init state\n    this.state = {\n      isDestroyed: false,\n      isCreated: false,\n      scrollParents: []\n    };\n\n    // get reference and popper elements (allow jQuery wrappers)\n    this.reference = reference && reference.jquery ? reference[0] : reference;\n    this.popper = popper && popper.jquery ? popper[0] : popper;\n\n    // Deep merge modifiers options\n    this.options.modifiers = {};\n    Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n      _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n    });\n\n    // Refactoring modifiers' list (Object => Array)\n    this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n      return _extends({\n        name: name\n      }, _this.options.modifiers[name]);\n    })\n    // sort the modifiers by order\n    .sort(function (a, b) {\n      return a.order - b.order;\n    });\n\n    // modifiers have the ability to execute arbitrary code when Popper.js get inited\n    // such code is executed in the same order of its modifier\n    // they could add new properties to their options configuration\n    // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n    this.modifiers.forEach(function (modifierOptions) {\n      if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n        modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n      }\n    });\n\n    // fire the first update to position the popper in the right place\n    this.update();\n\n    var eventsEnabled = this.options.eventsEnabled;\n    if (eventsEnabled) {\n      // setup event listeners, they will take care of update the position in specific situations\n      this.enableEventListeners();\n    }\n\n    this.state.eventsEnabled = eventsEnabled;\n  }\n\n  // We can't use class properties because they don't get listed in the\n  // class prototype and break stuff like Sinon stubs\n\n\n  createClass(Popper, [{\n    key: 'update',\n    value: function update$$1() {\n      return update.call(this);\n    }\n  }, {\n    key: 'destroy',\n    value: function destroy$$1() {\n      return destroy.call(this);\n    }\n  }, {\n    key: 'enableEventListeners',\n    value: function enableEventListeners$$1() {\n      return enableEventListeners.call(this);\n    }\n  }, {\n    key: 'disableEventListeners',\n    value: function disableEventListeners$$1() {\n      return disableEventListeners.call(this);\n    }\n\n    /**\n     * Schedules an update. It will run on the next UI update available.\n     * @method scheduleUpdate\n     * @memberof Popper\n     */\n\n\n    /**\n     * Collection of utilities useful when writing custom modifiers.\n     * Starting from version 1.7, this method is available only if you\n     * include `popper-utils.js` before `popper.js`.\n     *\n     * **DEPRECATION**: This way to access PopperUtils is deprecated\n     * and will be removed in v2! Use the PopperUtils module directly instead.\n     * Due to the high instability of the methods contained in Utils, we can't\n     * guarantee them to follow semver. Use them at your own risk!\n     * @static\n     * @private\n     * @type {Object}\n     * @deprecated since version 1.8\n     * @member Utils\n     * @memberof Popper\n     */\n\n  }]);\n  return Popper;\n}();\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.<br />\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\n\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults;\n\nexport default Popper;\n//# sourceMappingURL=popper.js.map\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import Rails from \"@rails/ujs\";\nimport '../src/stylesheets/simple/simple.scss';\nimport \"bootstrap/dist/js/bootstrap\";\nRails.start();\n"],"names":["this","Rails","linkClickSelector","buttonClickSelector","selector","exclude","inputChangeSelector","formSubmitSelector","formInputClickSelector","formDisableSelector","formEnableSelector","fileInputSelector","linkDisableSelector","buttonDisableSelector","call","nonce","loadCSPNonce","ref","document","querySelector","content","cspNonce","expando","m","Element","prototype","matches","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","element","getData","key","setData","value","$","Array","slice","querySelectorAll","csrfParam","csrfToken","meta","CSRFProtection","xhr","token","setRequestHeader","refreshCSRFTokens","param","forEach","input","CustomEvent","fire","preventDefault","window","event","params","evt","createEvent","initCustomEvent","bubbles","cancelable","detail","Event","result","defaultPrevented","Object","defineProperty","get","obj","name","data","dispatchEvent","stopEverything","e","target","stopPropagation","stopImmediatePropagation","delegate","eventType","handler","addEventListener","parentNode","AcceptHeaders","createXHR","prepareOptions","processResponse","text","html","xml","json","script","ajax","options","response","responseText","getResponseHeader","Math","floor","status","success","statusText","error","complete","beforeSend","readyState","XMLHttpRequest","OPENED","send","url","location","href","type","toUpperCase","indexOf","dataType","accept","done","open","crossDomain","withCredentials","onreadystatechange","DONE","parser","match","JSON","parse","createElement","setAttribute","head","appendChild","removeChild","DOMParser","replace","parseFromString","isCrossDomain","originAnchor","urlAnchor","protocol","host","toArray","serializeElement","additionalParam","inputs","elements","disabled","option","selected","push","checked","map","encodeURIComponent","join","formElements","form","filter","el","allowAction","handleConfirm","confirm","message","answer","callback","getAttribute","disableFormElement","disableFormElements","disableLinkElement","enableFormElement","enableFormElements","enableLinkElement","isXhrRedirect","handleDisabledElement","enableElement","disableElement","replacement","innerHTML","originalText","removeEventListener","handleMethod","formContent","link","method","action","style","display","body","click","isRemote","handleRemote","button","enctype","FormData","append","args","arguments","length","formSubmitButtonClick","formNoValidate","preventInsignificantClick","insignificantMetaClick","metaKey","ctrlKey","jQuery","rails","Error","ajaxPrefilter","originalOptions","start","_rails_loaded","setTimeout","module","exports","Popper","_interopDefaultLegacy","$__default","Popper__default","_defineProperties","props","i","descriptor","enumerable","configurable","writable","_createClass","Constructor","protoProps","staticProps","_extends","assign","bind","source","hasOwnProperty","apply","_setPrototypeOf","o","p","setPrototypeOf","__proto__","TRANSITION_END","transitionEndEmulator","duration","_this","called","one","Util","triggerTransitionEnd","getUID","prefix","random","getElementById","getSelectorFromElement","hrefAttr","trim","_","getTransitionDurationFromElement","transitionDuration","css","transitionDelay","floatTransitionDuration","parseFloat","floatTransitionDelay","split","reflow","offsetHeight","trigger","supportsTransitionEnd","Boolean","isElement","nodeType","typeCheckConfig","componentName","config","configTypes","property","expectedTypes","valueType","toString","toLowerCase","RegExp","test","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","jQueryDetection","TypeError","version","fn","jquery","emulateTransitionEnd","special","bindType","delegateType","handle","is","handleObj","NAME$a","DATA_KEY$a","EVENT_KEY$a","JQUERY_NO_CONFLICT$a","EVENT_CLOSE","EVENT_CLOSED","EVENT_CLICK_DATA_API$6","Alert","_element","_proto","close","rootElement","_getRootElement","_triggerCloseEvent","isDefaultPrevented","_removeElement","dispose","removeData","parent","closest","closeEvent","removeClass","hasClass","_destroyElement","detach","remove","_jQueryInterface","each","$element","_handleDismiss","alertInstance","on","noConflict","NAME$9","DATA_KEY$9","EVENT_KEY$9","DATA_API_KEY$6","JQUERY_NO_CONFLICT$9","CLASS_NAME_ACTIVE$3","EVENT_CLICK_DATA_API$5","EVENT_FOCUS_BLUR_DATA_API","EVENT_LOAD_DATA_API$2","SELECTOR_DATA_TOGGLE_CARROT","SELECTOR_INPUT","SELECTOR_BUTTON","Button","shouldAvoidTriggerChange","toggle","triggerChangeEvent","addAriaPressed","classList","contains","activeElement","focus","hasAttribute","toggleClass","avoidTriggerChange","initialButton","inputBtn","tagName","buttons","len","add","_i","_len","_button","NAME$8","DATA_KEY$8","EVENT_KEY$8","DATA_API_KEY$5","JQUERY_NO_CONFLICT$8","CLASS_NAME_ACTIVE$2","DIRECTION_NEXT","DIRECTION_PREV","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","EVENT_DRAG_START","EVENT_LOAD_DATA_API$1","EVENT_CLICK_DATA_API$4","SELECTOR_ACTIVE_ITEM","Default$7","interval","keyboard","slide","pause","wrap","touch","DefaultType$7","PointerType","TOUCH","PEN","Carousel","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","navigator","maxTouchPoints","_pointerEvent","PointerEvent","MSPointerEvent","_addEventListeners","next","_slide","nextWhenVisible","hidden","prev","cycle","clearInterval","_updateInterval","setInterval","visibilityState","to","index","activeIndex","_getItemIndex","direction","off","_handleSwipe","absDeltax","abs","_this2","_keydown","_addTouchEventListeners","_this3","originalEvent","pointerType","clientX","touches","end","clearTimeout","move","which","_getItemByDirection","isNextDirection","isPrevDirection","lastItemIndex","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","slideEvent","from","_setActiveIndicatorElement","indicators","nextIndicator","children","addClass","elementInterval","parseInt","defaultInterval","directionalClassName","orderClassName","_this4","activeElementIndex","nextElement","nextElementIndex","isCycling","slidEvent","ride","_dataApiClickHandler","slideIndex","carousels","$carousel","NAME$7","DATA_KEY$7","EVENT_KEY$7","JQUERY_NO_CONFLICT$7","CLASS_NAME_SHOW$6","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","DIMENSION_WIDTH","EVENT_SHOW$4","EVENT_SHOWN$4","EVENT_HIDE$4","EVENT_HIDDEN$4","EVENT_CLICK_DATA_API$3","SELECTOR_DATA_TOGGLE$3","Default$6","DefaultType$6","Collapse","_isTransitioning","_triggerArray","id","toggleList","elem","filterElement","foundElem","_selector","_parent","_getParent","_addAriaAndCollapsedClass","hide","show","actives","activesData","not","startEvent","dimension","_getDimension","attr","setTransitioning","scrollSize","getBoundingClientRect","triggerArrayLength","isTransitioning","_getTargetFromElement","triggerArray","isOpen","currentTarget","$trigger","selectors","$target","NAME$6","DATA_KEY$6","EVENT_KEY$6","DATA_API_KEY$3","JQUERY_NO_CONFLICT$6","REGEXP_KEYDOWN","ARROW_UP_KEYCODE","CLASS_NAME_DISABLED$1","CLASS_NAME_SHOW$5","CLASS_NAME_MENURIGHT","EVENT_HIDE$3","EVENT_HIDDEN$3","EVENT_SHOW$3","EVENT_SHOWN$3","EVENT_CLICK","EVENT_CLICK_DATA_API$2","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","SELECTOR_DATA_TOGGLE$2","SELECTOR_MENU","Default$5","offset","flip","boundary","reference","popperConfig","DefaultType$5","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","isActive","_clearMenus","usePopper","showEvent","_getParentFromElement","referenceElement","_getPopperConfig","noop","hideEvent","destroy","update","scheduleUpdate","constructor","Default","DefaultType","_getPlacement","$parentDropdown","placement","_getOffset","offsets","modifiers","enabled","preventOverflow","boundariesElement","applyStyle","toggles","context","clickEvent","dropdownMenu","_dataApiKeydownHandler","items","item","NAME$5","DATA_KEY$5","EVENT_KEY$5","JQUERY_NO_CONFLICT$5","CLASS_NAME_OPEN","CLASS_NAME_FADE$4","CLASS_NAME_SHOW$4","CLASS_NAME_STATIC","EVENT_HIDE$2","EVENT_HIDE_PREVENTED","EVENT_HIDDEN$2","EVENT_SHOW$2","EVENT_SHOWN$2","EVENT_FOCUSIN","EVENT_RESIZE","EVENT_CLICK_DISMISS$1","EVENT_KEYDOWN_DISMISS","EVENT_MOUSEUP_DISMISS","EVENT_MOUSEDOWN_DISMISS","EVENT_CLICK_DATA_API$1","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","Default$4","backdrop","DefaultType$4","Modal","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","transition","_hideModal","htmlElement","handleUpdate","_triggerBackdropTransition","hideEventPrevented","isModalOverflowing","scrollHeight","clientHeight","overflowY","modalTransitionDuration","modalBody","Node","ELEMENT_NODE","removeAttribute","scrollTop","_enforceFocus","shownEvent","transitionComplete","_this5","has","_this6","_this7","_this8","_resetAdjustments","_resetScrollbar","_removeBackdrop","_this9","animate","className","appendTo","backdropTransitionDuration","callbackRemove","_backdropTransitionDuration","paddingLeft","paddingRight","rect","round","left","right","innerWidth","_getScrollbarWidth","_this10","fixedContent","stickyContent","actualPadding","calculatedPadding","actualMargin","marginRight","calculatedMargin","padding","margin","scrollDiv","scrollbarWidth","width","clientWidth","_this11","uriAttrs","SAFE_URL_PATTERN","DATA_URL_PATTERN","sanitizeHtml","unsafeHtml","whiteList","sanitizeFn","createdDocument","whitelistKeys","keys","_loop","elName","nodeName","attributeList","attributes","whitelistedAttributes","concat","allowedAttributeList","attrName","nodeValue","regExp","attrRegex","allowedAttribute","NAME$4","DATA_KEY$4","EVENT_KEY$4","JQUERY_NO_CONFLICT$4","CLASS_PREFIX$1","BSCLS_PREFIX_REGEX$1","DISALLOWED_ATTRIBUTES","CLASS_NAME_FADE$3","CLASS_NAME_SHOW$3","HOVER_STATE_SHOW","HOVER_STATE_OUT","TRIGGER_HOVER","TRIGGER_FOCUS","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","Default$3","animation","template","title","delay","container","fallbackPlacement","customClass","sanitize","a","area","b","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","pre","s","small","span","sub","sup","strong","u","ul","DefaultType$3","Event$1","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","disable","toggleEnabled","dataKey","DATA_KEY","_getDelegateConfig","_isWithActiveTrigger","_enter","_leave","getTipElement","EVENT_KEY","_hideModalHandler","isWithContent","shadowRoot","isInTheDom","ownerDocument","tipId","NAME","setContent","attachment","_getAttachment","addAttachmentClass","_getContainer","_fixTransition","prevHoverState","_cleanTipClass","getTitle","setElementContent","empty","behavior","arrow","onCreate","originalPlacement","_handlePopperPlacementChange","onUpdate","find","eventIn","eventOut","_fixTitle","titleType","dataAttributes","dataAttr","$tip","tabClass","popperData","instance","popper","initConfigAnimation","NAME$3","DATA_KEY$3","EVENT_KEY$3","JQUERY_NO_CONFLICT$3","CLASS_PREFIX","BSCLS_PREFIX_REGEX","Default$2","DefaultType$2","Popover","_Tooltip","subClass","superClass","create","_getContent","CLASS_NAME_FADE$2","NAME$2","DATA_KEY$2","EVENT_KEY$2","JQUERY_NO_CONFLICT$2","CLASS_NAME_ACTIVE$1","EVENT_ACTIVATE","EVENT_SCROLL","EVENT_LOAD_DATA_API","METHOD_POSITION","SELECTOR_NAV_LIST_GROUP$1","SELECTOR_NAV_LINKS","SELECTOR_LIST_ITEMS","Default$1","DefaultType$1","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targetSelector","targetBCR","height","top","sort","pageYOffset","max","_getOffsetHeight","innerHeight","maxScroll","_activate","_clear","queries","$link","parents","node","scrollSpys","$spy","NAME$1","DATA_KEY$1","EVENT_KEY$1","JQUERY_NO_CONFLICT$1","CLASS_NAME_ACTIVE","CLASS_NAME_FADE$1","CLASS_NAME_SHOW$1","EVENT_HIDE$1","EVENT_HIDDEN$1","EVENT_SHOW$1","EVENT_SHOWN$1","EVENT_CLICK_DATA_API","SELECTOR_ACTIVE","SELECTOR_ACTIVE_UL","Tab","previous","listElement","itemSelector","makeArray","hiddenEvent","active","_transitionComplete","dropdownChild","dropdownElement","dropdownToggleList","$this","JQUERY_NO_CONFLICT","CLASS_NAME_HIDE","CLASS_NAME_SHOW","CLASS_NAME_SHOWING","EVENT_CLICK_DISMISS","EVENT_HIDE","EVENT_HIDDEN","EVENT_SHOW","EVENT_SHOWN","autohide","Toast","_clearTimeout","_close","Scrollspy","factory","global","w","noGlobal","arr","getProto","getPrototypeOf","flat","array","class2type","hasOwn","fnToString","ObjectFunctionString","support","isFunction","isWindow","preservedScriptAttributes","src","noModule","DOMEval","doc","val","toType","init","isArrayLike","num","pushStack","elems","ret","merge","prevObject","first","eq","last","even","grep","_elem","odd","j","splice","extend","copy","copyIsArray","clone","deep","isPlainObject","isArray","undefined","isReady","msg","proto","Ctor","isEmptyObject","globalEval","results","inArray","second","invert","callbackExpect","arg","guid","Symbol","iterator","Sizzle","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","Date","preferredDoc","dirruns","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","pop","pushNative","list","booleans","whitespace","identifier","pseudos","rwhitespace","rtrim","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","escape","nonHex","high","String","fromCharCode","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","unloadHandler","inDisabledFieldset","addCombinator","dir","childNodes","els","seed","nid","groups","newSelector","newContext","exec","getElementsByTagName","getElementsByClassName","qsa","testContext","scope","toSelector","qsaError","cache","cacheLength","shift","markFunction","assert","addHandle","attrs","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","namespace","namespaceURI","hasCompare","subWindow","defaultView","attachEvent","createComment","getById","getElementsByName","attrId","getAttributeNode","tag","tmp","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","specified","sel","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","createPseudo","relative","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","what","_argument","simple","forward","ofType","_context","uniqueCache","outerCache","nodeIndex","useCache","lastChild","uniqueID","pseudo","setFilters","idx","matched","matcher","unmatched","lang","elemLang","hash","hasFocus","tabIndex","selectedIndex","_matchIndexes","radio","checkbox","file","password","image","submit","reset","tokens","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","filters","parseOnly","soFar","preFilters","cached","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","compiled","_name","defaultValue","unique","isXMLDoc","escapeSelector","until","truncate","siblings","n","rneedsContext","needsContext","rsingleTag","winnow","qualifier","self","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","contents","sibling","targets","l","prevAll","addBack","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","reverse","rnothtmlwhite","Identity","v","Thrower","ex","adoptValue","resolve","reject","noValue","promise","fail","then","Callbacks","object","flag","createOptions","firing","memory","fired","locked","queue","firingIndex","once","stopOnFalse","lock","fireWith","Deferred","func","tuples","state","always","deferred","pipe","fns","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","that","mightThrow","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","stateString","when","singleValue","remaining","resolveContexts","resolveValues","primary","updateFunc","rerrorNames","stack","console","warn","readyException","readyList","completed","catch","readyWait","wait","doScroll","access","chainable","emptyGet","raw","bulk","_key","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","camelCase","string","acceptData","owner","Data","uid","set","prop","hasData","dataPriv","dataUser","rbrace","rmultiDash","_data","_removeData","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","count","defer","pnum","rcssNum","cssExpand","isAttached","composed","isHiddenWithinTree","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","showHide","values","rcheckableType","rtagName","rscriptType","createDocumentFragment","checkClone","cloneNode","noCloneChecked","wrapMap","thead","tr","td","_default","getAll","setGlobalEval","refElements","tbody","tfoot","colgroup","caption","th","optgroup","buildFragment","scripts","selection","ignored","attached","fragment","nodes","htmlPrefilter","createTextNode","rtypenamespace","returnTrue","returnFalse","expectSync","err","safeActiveElement","types","origFn","leverageNative","notAsync","saved","isTrigger","handleObjIn","eventHandle","events","t","handlers","namespaces","origType","elemData","triggered","dispatch","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","load","noBubble","beforeunload","returnValue","timeStamp","now","isSimulated","altKey","changedTouches","eventPhase","pageX","pageY","shiftKey","view","charCode","keyCode","clientY","offsetX","offsetY","pointerId","screenX","screenY","targetTouches","toElement","blur","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","valueIsFunction","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","prepend","insertBefore","before","after","replaceWith","replaceChild","prependTo","insertAfter","replaceAll","original","insert","rnumnonpx","getStyles","opener","getComputedStyle","swap","old","rboxStyle","curCSS","computed","minWidth","maxWidth","getPropertyValue","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","pixelBoxStylesVal","boxSizingReliableVal","position","scrollboxSizeVal","offsetWidth","measure","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","table","trChild","trStyle","borderTopWidth","borderBottomWidth","cssPrefixes","emptyStyle","vendorProps","finalPropName","cssProps","capName","vendorPropName","rdisplayswap","rcustomProp","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","boxModelAdjustment","box","isBorderBox","styles","computedVal","extra","delta","ceil","getWidthOrHeight","valueIsBorderBox","offsetProp","getClientRects","Tween","easing","cssHooks","opacity","origName","isCustomProp","setProperty","isFinite","scrollboxSizeBuggy","border","suffix","expand","expanded","parts","propHooks","run","percent","eased","pos","step","fx","scrollLeft","linear","swing","cos","PI","fxNow","inProgress","rfxtypes","rrun","schedule","requestAnimationFrame","tick","createFxNow","genFx","includeWidth","createTween","Animation","tweeners","properties","stopped","prefilters","currentTime","startTime","tweens","opts","specialEasing","originalProperties","gotoEnd","propFilter","timer","anim","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflow","overflowX","prefilter","speed","opt","speeds","fadeTo","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","time","timeout","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","bool","attrNames","getter","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","classes","curValue","clazz","finalValue","stateVal","isValidValue","classNames","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","simulate","triggerHandler","attaches","rquery","parseXML","parserErrorElem","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","valueOrFunction","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","addToPrefiltersOrTransports","structure","dataTypeExpression","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","lastModified","etag","isLocal","processData","async","contentType","accepts","responseFields","converters","ajaxSetup","settings","ajaxTransport","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getAllResponseHeaders","overrideMimeType","mimeType","abort","finalText","hasContent","ifModified","headers","nativeStatusText","responses","isSuccess","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","current","conv","dataFilter","throws","ajaxConvert","getJSON","getScript","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","visible","xhrSuccessStatus","xhrSupported","cors","errorCallback","username","xhrFields","onload","onerror","onabort","ontimeout","responseType","binary","scriptAttrs","charset","scriptCharset","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","animated","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","win","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","unbind","undelegate","hover","fnOver","fnOut","proxy","holdReady","hold","parseJSON","isNumeric","isNaN","_jQuery","_$","isBrowser","timeoutDuration","longerTimeoutBrowsers","userAgent","debounce","Promise","scheduled","functionToCheck","getStyleComputedProperty","getParentNode","getScrollParent","_getStyleComputedProp","getReferenceNode","referenceNode","isIE11","MSInputMethodContext","documentMode","isIE10","isIE","getOffsetParent","noOffsetParent","nextElementSibling","getRoot","findCommonOffsetParent","element1","element2","order","DOCUMENT_POSITION_FOLLOWING","range","createRange","setStart","setEnd","commonAncestorContainer","element1root","getScroll","upperSide","scrollingElement","getBordersSize","axis","sideA","sideB","getSize","computedStyle","getWindowSizes","createClass","defineProperties","getClientRect","bottom","sizes","horizScrollbar","vertScrollbar","getOffsetRectRelativeToArbitraryNode","fixedPosition","isHTML","childrenRect","parentRect","scrollParent","borderLeftWidth","marginTop","modifier","includeScroll","isFixed","getFixedPositionOffsetParent","parentElement","getBoundaries","boundaries","excludeScroll","relativeOffset","getViewportOffsetRectRelativeToArtbitraryNode","boundariesNode","_getWindowSizes","isPaddingNumber","computeAutoPlacement","refRect","rects","sortedAreas","_ref","filteredAreas","_ref2","computedPlacement","variation","getReferenceOffsets","getOuterSizes","x","marginBottom","y","getOppositePlacement","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","runModifiers","ends","findIndex","isDestroyed","arrowStyles","flipped","positionFixed","isCreated","isModifierEnabled","modifierName","some","getSupportedPropertyName","prefixes","upperProp","charAt","toCheck","willChange","disableEventListeners","removeOnDestroy","getWindow","attachToScrollParents","scrollParents","isBody","passive","setupEventListeners","updateBound","scrollElement","eventsEnabled","enableEventListeners","cancelAnimationFrame","setStyles","isFirefox","isModifierRequired","requestingName","requestedName","requesting","isRequired","_requesting","requested","placements","validPlacements","clockwise","counter","Defaults","basePlacement","shiftvariation","_data$offsets","isVertical","side","shiftOffsets","useHeight","fragments","frag","divider","search","splitRegex","ops","op","mergeWithPrevious","reduce","str","toValue","index2","parseOffset","transformProp","popperStyles","transform","priority","escapeWithReference","secondary","min","keepTogether","opSide","_data$offsets$arrow","arrowElement","sideCapitalized","altSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","placementOpposite","flipOrder","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flipVariations","flippedVariationByContent","flipVariationsByContent","flippedVariation","getOppositeVariation","inner","subtractLength","bound","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","shouldRound","noRound","referenceWidth","popperWidth","isVariation","horizontalToInteger","verticalToInteger","getRoundedOffsets","devicePixelRatio","prefixedProperty","invertTop","invertLeft","onLoad","modifierOptions","classCallCheck","Utils","g","PopperUtils","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","__esModule","d","definition","globalThis","Function","r","toStringTag"],"sourceRoot":""}