{ "version": 3, "sources": ["../../../../../shared/node_modules/@rails/actioncable/src/adapters.js", "../../../../../shared/node_modules/@rails/actioncable/src/logger.js", "../../../../../shared/node_modules/@rails/actioncable/src/connection_monitor.js", "../../../../../shared/node_modules/@rails/actioncable/src/internal.js", "../../../../../shared/node_modules/@rails/actioncable/src/connection.js", "../../../../../shared/node_modules/@rails/actioncable/src/subscription.js", "../../../../../shared/node_modules/@rails/actioncable/src/subscription_guarantor.js", "../../../../../shared/node_modules/@rails/actioncable/src/subscriptions.js", "../../../../../shared/node_modules/@rails/actioncable/src/consumer.js", "../../../../../shared/node_modules/@rails/actioncable/src/index.js", "../../javascript/jquery-1.11.2.js", "../../javascript/pluginsf700.js", "../../javascript/velocity.min.js", "../../javascript/velocity.ui.min.js", "../../../../../shared/node_modules/@hotwired/turbo/dist/turbo.es2017-esm.js", "../../../../../shared/node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable.js", "../../../../../shared/node_modules/@hotwired/turbo-rails/app/javascript/turbo/snakeize.js", "../../../../../shared/node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable_stream_source_element.js", "../../../../../shared/node_modules/@hotwired/turbo-rails/app/javascript/turbo/fetch_requests.js", "../../../../../shared/node_modules/@hotwired/turbo-rails/app/javascript/turbo/index.js", "../../../../../shared/node_modules/@hotwired/stimulus/dist/stimulus.js", "../../javascript/controllers/application.js", "../../javascript/controllers/hello_controller.js", "../../javascript/controllers/index.js", "../../../../../shared/node_modules/@popperjs/core/lib/index.js", "../../../../../shared/node_modules/@popperjs/core/lib/enums.js", "../../../../../shared/node_modules/@popperjs/core/lib/dom-utils/getNodeName.js", "../../../../../shared/node_modules/@popperjs/core/lib/dom-utils/getWindow.js", "../../../../../shared/node_modules/@popperjs/core/lib/dom-utils/instanceOf.js", "../../../../../shared/node_modules/@popperjs/core/lib/modifiers/applyStyles.js", "../../../../../shared/node_modules/@popperjs/core/lib/utils/getBasePlacement.js", "../../../../../shared/node_modules/@popperjs/core/lib/utils/math.js", "../../../../../shared/node_modules/@popperjs/core/lib/utils/userAgent.js", "../../../../../shared/node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js", "../../../../../shared/node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js", "../../../../../shared/node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js", "../../../../../shared/node_modules/@popperjs/core/lib/dom-utils/contains.js", "../../../../../shared/node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js", "../../../../../shared/node_modules/@popperjs/core/lib/dom-utils/isTableElement.js", "../../../../../shared/node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js", "../../../../../shared/node_modules/@popperjs/core/lib/dom-utils/getParentNode.js", "../../../../../shared/node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js", "../../../../../shared/node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js", "../../../../../shared/node_modules/@popperjs/core/lib/utils/within.js", "../../../../../shared/node_modules/@popperjs/core/lib/utils/getFreshSideObject.js", "../../../../../shared/node_modules/@popperjs/core/lib/utils/mergePaddingObject.js", "../../../../../shared/node_modules/@popperjs/core/lib/utils/expandToHashMap.js", "../../../../../shared/node_modules/@popperjs/core/lib/modifiers/arrow.js", "../../../../../shared/node_modules/@popperjs/core/lib/utils/getVariation.js", "../../../../../shared/node_modules/@popperjs/core/lib/modifiers/computeStyles.js", "../../../../../shared/node_modules/@popperjs/core/lib/modifiers/eventListeners.js", "../../../../../shared/node_modules/@popperjs/core/lib/utils/getOppositePlacement.js", "../../../../../shared/node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js", "../../../../../shared/node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js", "../../../../../shared/node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js", "../../../../../shared/node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js", "../../../../../shared/node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js", "../../../../../shared/node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js", "../../../../../shared/node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js", "../../../../../shared/node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js", "../../../../../shared/node_modules/@popperjs/core/lib/utils/rectToClientRect.js", "../../../../../shared/node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js", "../../../../../shared/node_modules/@popperjs/core/lib/utils/computeOffsets.js", "../../../../../shared/node_modules/@popperjs/core/lib/utils/detectOverflow.js", "../../../../../shared/node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js", "../../../../../shared/node_modules/@popperjs/core/lib/modifiers/flip.js", "../../../../../shared/node_modules/@popperjs/core/lib/modifiers/hide.js", "../../../../../shared/node_modules/@popperjs/core/lib/modifiers/offset.js", "../../../../../shared/node_modules/@popperjs/core/lib/modifiers/popperOffsets.js", "../../../../../shared/node_modules/@popperjs/core/lib/utils/getAltAxis.js", "../../../../../shared/node_modules/@popperjs/core/lib/modifiers/preventOverflow.js", "../../../../../shared/node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js", "../../../../../shared/node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js", "../../../../../shared/node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js", "../../../../../shared/node_modules/@popperjs/core/lib/utils/orderModifiers.js", "../../../../../shared/node_modules/@popperjs/core/lib/utils/debounce.js", "../../../../../shared/node_modules/@popperjs/core/lib/utils/mergeByName.js", "../../../../../shared/node_modules/@popperjs/core/lib/createPopper.js", "../../../../../shared/node_modules/@popperjs/core/lib/popper-lite.js", "../../../../../shared/node_modules/@popperjs/core/lib/popper.js", "../../../../../shared/node_modules/bootstrap/js/src/dom/data.js", "../../../../../shared/node_modules/bootstrap/js/src/util/index.js", "../../../../../shared/node_modules/bootstrap/js/src/dom/event-handler.js", "../../../../../shared/node_modules/bootstrap/js/src/dom/manipulator.js", "../../../../../shared/node_modules/bootstrap/js/src/util/config.js", "../../../../../shared/node_modules/bootstrap/js/src/base-component.js", "../../../../../shared/node_modules/bootstrap/js/src/dom/selector-engine.js", "../../../../../shared/node_modules/bootstrap/js/src/util/component-functions.js", "../../../../../shared/node_modules/bootstrap/js/src/alert.js", "../../../../../shared/node_modules/bootstrap/js/src/button.js", "../../../../../shared/node_modules/bootstrap/js/src/util/swipe.js", "../../../../../shared/node_modules/bootstrap/js/src/carousel.js", "../../../../../shared/node_modules/bootstrap/js/src/collapse.js", "../../../../../shared/node_modules/bootstrap/js/src/dropdown.js", "../../../../../shared/node_modules/bootstrap/js/src/util/backdrop.js", "../../../../../shared/node_modules/bootstrap/js/src/util/focustrap.js", "../../../../../shared/node_modules/bootstrap/js/src/util/scrollbar.js", "../../../../../shared/node_modules/bootstrap/js/src/modal.js", "../../../../../shared/node_modules/bootstrap/js/src/offcanvas.js", "../../../../../shared/node_modules/bootstrap/js/src/util/sanitizer.js", "../../../../../shared/node_modules/bootstrap/js/src/util/template-factory.js", "../../../../../shared/node_modules/bootstrap/js/src/tooltip.js", "../../../../../shared/node_modules/bootstrap/js/src/popover.js", "../../../../../shared/node_modules/bootstrap/js/src/scrollspy.js", "../../../../../shared/node_modules/bootstrap/js/src/tab.js", "../../../../../shared/node_modules/bootstrap/js/src/toast.js", "../../javascript/animations.min.js", "../../javascript/bootstrap.js", "../../javascript/appear.min.js", "../../javascript/application.js", "../../javascript/jquery-ui.js", "../../javascript/jquery.fancybox.min.js", "../../javascript/custom.js"], "sourcesContent": ["export default {\n logger: typeof console !== \"undefined\" ? console : undefined,\n WebSocket: typeof WebSocket !== \"undefined\" ? WebSocket : undefined,\n}\n", "import adapters from \"./adapters\"\n\n// The logger is disabled by default. You can enable it with:\n//\n// ActionCable.logger.enabled = true\n//\n// Example:\n//\n// import * as ActionCable from '@rails/actioncable'\n//\n// ActionCable.logger.enabled = true\n// ActionCable.logger.log('Connection Established.')\n//\n\nexport default {\n log(...messages) {\n if (this.enabled) {\n messages.push(Date.now())\n adapters.logger.log(\"[ActionCable]\", ...messages)\n }\n },\n}\n", "import logger from \"./logger\"\n\n// Responsible for ensuring the cable connection is in good health by validating the heartbeat pings sent from the server, and attempting\n// revival reconnections if things go astray. Internal class, not intended for direct user manipulation.\n\nconst now = () => new Date().getTime()\n\nconst secondsSince = time => (now() - time) / 1000\n\nclass ConnectionMonitor {\n constructor(connection) {\n this.visibilityDidChange = this.visibilityDidChange.bind(this)\n this.connection = connection\n this.reconnectAttempts = 0\n }\n\n start() {\n if (!this.isRunning()) {\n this.startedAt = now()\n delete this.stoppedAt\n this.startPolling()\n addEventListener(\"visibilitychange\", this.visibilityDidChange)\n logger.log(`ConnectionMonitor started. stale threshold = ${this.constructor.staleThreshold} s`)\n }\n }\n\n stop() {\n if (this.isRunning()) {\n this.stoppedAt = now()\n this.stopPolling()\n removeEventListener(\"visibilitychange\", this.visibilityDidChange)\n logger.log(\"ConnectionMonitor stopped\")\n }\n }\n\n isRunning() {\n return this.startedAt && !this.stoppedAt\n }\n\n recordMessage() {\n this.pingedAt = now()\n }\n\n recordConnect() {\n this.reconnectAttempts = 0\n delete this.disconnectedAt\n logger.log(\"ConnectionMonitor recorded connect\")\n }\n\n recordDisconnect() {\n this.disconnectedAt = now()\n logger.log(\"ConnectionMonitor recorded disconnect\")\n }\n\n // Private\n\n startPolling() {\n this.stopPolling()\n this.poll()\n }\n\n stopPolling() {\n clearTimeout(this.pollTimeout)\n }\n\n poll() {\n this.pollTimeout = setTimeout(() => {\n this.reconnectIfStale()\n this.poll()\n }\n , this.getPollInterval())\n }\n\n getPollInterval() {\n const { staleThreshold, reconnectionBackoffRate } = this.constructor\n const backoff = Math.pow(1 + reconnectionBackoffRate, Math.min(this.reconnectAttempts, 10))\n const jitterMax = this.reconnectAttempts === 0 ? 1.0 : reconnectionBackoffRate\n const jitter = jitterMax * Math.random()\n return staleThreshold * 1000 * backoff * (1 + jitter)\n }\n\n reconnectIfStale() {\n if (this.connectionIsStale()) {\n logger.log(`ConnectionMonitor detected stale connection. reconnectAttempts = ${this.reconnectAttempts}, time stale = ${secondsSince(this.refreshedAt)} s, stale threshold = ${this.constructor.staleThreshold} s`)\n this.reconnectAttempts++\n if (this.disconnectedRecently()) {\n logger.log(`ConnectionMonitor skipping reopening recent disconnect. time disconnected = ${secondsSince(this.disconnectedAt)} s`)\n } else {\n logger.log(\"ConnectionMonitor reopening\")\n this.connection.reopen()\n }\n }\n }\n\n get refreshedAt() {\n return this.pingedAt ? this.pingedAt : this.startedAt\n }\n\n connectionIsStale() {\n return secondsSince(this.refreshedAt) > this.constructor.staleThreshold\n }\n\n disconnectedRecently() {\n return this.disconnectedAt && (secondsSince(this.disconnectedAt) < this.constructor.staleThreshold)\n }\n\n visibilityDidChange() {\n if (document.visibilityState === \"visible\") {\n setTimeout(() => {\n if (this.connectionIsStale() || !this.connection.isOpen()) {\n logger.log(`ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = ${document.visibilityState}`)\n this.connection.reopen()\n }\n }\n , 200)\n }\n }\n\n}\n\nConnectionMonitor.staleThreshold = 6 // Server::Connections::BEAT_INTERVAL * 2 (missed two pings)\nConnectionMonitor.reconnectionBackoffRate = 0.15\n\nexport default ConnectionMonitor\n", "export default {\n \"message_types\": {\n \"welcome\": \"welcome\",\n \"disconnect\": \"disconnect\",\n \"ping\": \"ping\",\n \"confirmation\": \"confirm_subscription\",\n \"rejection\": \"reject_subscription\"\n },\n \"disconnect_reasons\": {\n \"unauthorized\": \"unauthorized\",\n \"invalid_request\": \"invalid_request\",\n \"server_restart\": \"server_restart\",\n \"remote\": \"remote\"\n },\n \"default_mount_path\": \"/cable\",\n \"protocols\": [\n \"actioncable-v1-json\",\n \"actioncable-unsupported\"\n ]\n}\n", "import adapters from \"./adapters\"\nimport ConnectionMonitor from \"./connection_monitor\"\nimport INTERNAL from \"./internal\"\nimport logger from \"./logger\"\n\n// Encapsulate the cable connection held by the consumer. This is an internal class not intended for direct user manipulation.\n\nconst {message_types, protocols} = INTERNAL\nconst supportedProtocols = protocols.slice(0, protocols.length - 1)\n\nconst indexOf = [].indexOf\n\nclass Connection {\n constructor(consumer) {\n this.open = this.open.bind(this)\n this.consumer = consumer\n this.subscriptions = this.consumer.subscriptions\n this.monitor = new ConnectionMonitor(this)\n this.disconnected = true\n }\n\n send(data) {\n if (this.isOpen()) {\n this.webSocket.send(JSON.stringify(data))\n return true\n } else {\n return false\n }\n }\n\n open() {\n if (this.isActive()) {\n logger.log(`Attempted to open WebSocket, but existing socket is ${this.getState()}`)\n return false\n } else {\n const socketProtocols = [...protocols, ...this.consumer.subprotocols || []]\n logger.log(`Opening WebSocket, current state is ${this.getState()}, subprotocols: ${socketProtocols}`)\n if (this.webSocket) { this.uninstallEventHandlers() }\n this.webSocket = new adapters.WebSocket(this.consumer.url, socketProtocols)\n this.installEventHandlers()\n this.monitor.start()\n return true\n }\n }\n\n close({allowReconnect} = {allowReconnect: true}) {\n if (!allowReconnect) { this.monitor.stop() }\n // Avoid closing websockets in a \"connecting\" state due to Safari 15.1+ bug. See: https://github.com/rails/rails/issues/43835#issuecomment-1002288478\n if (this.isOpen()) {\n return this.webSocket.close()\n }\n }\n\n reopen() {\n logger.log(`Reopening WebSocket, current state is ${this.getState()}`)\n if (this.isActive()) {\n try {\n return this.close()\n } catch (error) {\n logger.log(\"Failed to reopen WebSocket\", error)\n }\n finally {\n logger.log(`Reopening WebSocket in ${this.constructor.reopenDelay}ms`)\n setTimeout(this.open, this.constructor.reopenDelay)\n }\n } else {\n return this.open()\n }\n }\n\n getProtocol() {\n if (this.webSocket) {\n return this.webSocket.protocol\n }\n }\n\n isOpen() {\n return this.isState(\"open\")\n }\n\n isActive() {\n return this.isState(\"open\", \"connecting\")\n }\n\n triedToReconnect() {\n return this.monitor.reconnectAttempts > 0\n }\n\n // Private\n\n isProtocolSupported() {\n return indexOf.call(supportedProtocols, this.getProtocol()) >= 0\n }\n\n isState(...states) {\n return indexOf.call(states, this.getState()) >= 0\n }\n\n getState() {\n if (this.webSocket) {\n for (let state in adapters.WebSocket) {\n if (adapters.WebSocket[state] === this.webSocket.readyState) {\n return state.toLowerCase()\n }\n }\n }\n return null\n }\n\n installEventHandlers() {\n for (let eventName in this.events) {\n const handler = this.events[eventName].bind(this)\n this.webSocket[`on${eventName}`] = handler\n }\n }\n\n uninstallEventHandlers() {\n for (let eventName in this.events) {\n this.webSocket[`on${eventName}`] = function() {}\n }\n }\n\n}\n\nConnection.reopenDelay = 500\n\nConnection.prototype.events = {\n message(event) {\n if (!this.isProtocolSupported()) { return }\n const {identifier, message, reason, reconnect, type} = JSON.parse(event.data)\n this.monitor.recordMessage()\n switch (type) {\n case message_types.welcome:\n if (this.triedToReconnect()) {\n this.reconnectAttempted = true\n }\n this.monitor.recordConnect()\n return this.subscriptions.reload()\n case message_types.disconnect:\n logger.log(`Disconnecting. Reason: ${reason}`)\n return this.close({allowReconnect: reconnect})\n case message_types.ping:\n return null\n case message_types.confirmation:\n this.subscriptions.confirmSubscription(identifier)\n if (this.reconnectAttempted) {\n this.reconnectAttempted = false\n return this.subscriptions.notify(identifier, \"connected\", {reconnected: true})\n } else {\n return this.subscriptions.notify(identifier, \"connected\", {reconnected: false})\n }\n case message_types.rejection:\n return this.subscriptions.reject(identifier)\n default:\n return this.subscriptions.notify(identifier, \"received\", message)\n }\n },\n\n open() {\n logger.log(`WebSocket onopen event, using '${this.getProtocol()}' subprotocol`)\n this.disconnected = false\n if (!this.isProtocolSupported()) {\n logger.log(\"Protocol is unsupported. Stopping monitor and disconnecting.\")\n return this.close({allowReconnect: false})\n }\n },\n\n close(event) {\n logger.log(\"WebSocket onclose event\")\n if (this.disconnected) { return }\n this.disconnected = true\n this.monitor.recordDisconnect()\n return this.subscriptions.notifyAll(\"disconnected\", {willAttemptReconnect: this.monitor.isRunning()})\n },\n\n error() {\n logger.log(\"WebSocket onerror event\")\n }\n}\n\nexport default Connection\n", "// A new subscription is created through the ActionCable.Subscriptions instance available on the consumer.\n// It provides a number of callbacks and a method for calling remote procedure calls on the corresponding\n// Channel instance on the server side.\n//\n// An example demonstrates the basic functionality:\n//\n// App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\", {\n// connected() {\n// // Called once the subscription has been successfully completed\n// },\n//\n// disconnected({ willAttemptReconnect: boolean }) {\n// // Called when the client has disconnected with the server.\n// // The object will have an `willAttemptReconnect` property which\n// // says whether the client has the intention of attempting\n// // to reconnect.\n// },\n//\n// appear() {\n// this.perform('appear', {appearing_on: this.appearingOn()})\n// },\n//\n// away() {\n// this.perform('away')\n// },\n//\n// appearingOn() {\n// $('main').data('appearing-on')\n// }\n// })\n//\n// The methods #appear and #away forward their intent to the remote AppearanceChannel instance on the server\n// by calling the `perform` method with the first parameter being the action (which maps to AppearanceChannel#appear/away).\n// The second parameter is a hash that'll get JSON encoded and made available on the server in the data parameter.\n//\n// This is how the server component would look:\n//\n// class AppearanceChannel < ApplicationActionCable::Channel\n// def subscribed\n// current_user.appear\n// end\n//\n// def unsubscribed\n// current_user.disappear\n// end\n//\n// def appear(data)\n// current_user.appear on: data['appearing_on']\n// end\n//\n// def away\n// current_user.away\n// end\n// end\n//\n// The \"AppearanceChannel\" name is automatically mapped between the client-side subscription creation and the server-side Ruby class name.\n// The AppearanceChannel#appear/away public methods are exposed automatically to client-side invocation through the perform method.\n\nconst extend = function(object, properties) {\n if (properties != null) {\n for (let key in properties) {\n const value = properties[key]\n object[key] = value\n }\n }\n return object\n}\n\nexport default class Subscription {\n constructor(consumer, params = {}, mixin) {\n this.consumer = consumer\n this.identifier = JSON.stringify(params)\n extend(this, mixin)\n }\n\n // Perform a channel action with the optional data passed as an attribute\n perform(action, data = {}) {\n data.action = action\n return this.send(data)\n }\n\n send(data) {\n return this.consumer.send({command: \"message\", identifier: this.identifier, data: JSON.stringify(data)})\n }\n\n unsubscribe() {\n return this.consumer.subscriptions.remove(this)\n }\n}\n", "import logger from \"./logger\"\n\n// Responsible for ensuring channel subscribe command is confirmed, retrying until confirmation is received.\n// Internal class, not intended for direct user manipulation.\n\nclass SubscriptionGuarantor {\n constructor(subscriptions) {\n this.subscriptions = subscriptions\n this.pendingSubscriptions = []\n }\n\n guarantee(subscription) {\n if(this.pendingSubscriptions.indexOf(subscription) == -1){ \n logger.log(`SubscriptionGuarantor guaranteeing ${subscription.identifier}`)\n this.pendingSubscriptions.push(subscription) \n }\n else {\n logger.log(`SubscriptionGuarantor already guaranteeing ${subscription.identifier}`)\n }\n this.startGuaranteeing()\n }\n\n forget(subscription) {\n logger.log(`SubscriptionGuarantor forgetting ${subscription.identifier}`)\n this.pendingSubscriptions = (this.pendingSubscriptions.filter((s) => s !== subscription))\n }\n\n startGuaranteeing() {\n this.stopGuaranteeing()\n this.retrySubscribing()\n }\n \n stopGuaranteeing() {\n clearTimeout(this.retryTimeout)\n }\n\n retrySubscribing() {\n this.retryTimeout = setTimeout(() => {\n if (this.subscriptions && typeof(this.subscriptions.subscribe) === \"function\") {\n this.pendingSubscriptions.map((subscription) => {\n logger.log(`SubscriptionGuarantor resubscribing ${subscription.identifier}`)\n this.subscriptions.subscribe(subscription)\n })\n }\n }\n , 500)\n }\n}\n\nexport default SubscriptionGuarantor", "import Subscription from \"./subscription\"\nimport SubscriptionGuarantor from \"./subscription_guarantor\"\nimport logger from \"./logger\"\n\n// Collection class for creating (and internally managing) channel subscriptions.\n// The only method intended to be triggered by the user is ActionCable.Subscriptions#create,\n// and it should be called through the consumer like so:\n//\n// App = {}\n// App.cable = ActionCable.createConsumer(\"ws://example.com/accounts/1\")\n// App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\")\n//\n// For more details on how you'd configure an actual channel subscription, see ActionCable.Subscription.\n\nexport default class Subscriptions {\n constructor(consumer) {\n this.consumer = consumer\n this.guarantor = new SubscriptionGuarantor(this)\n this.subscriptions = []\n }\n\n create(channelName, mixin) {\n const channel = channelName\n const params = typeof channel === \"object\" ? channel : {channel}\n const subscription = new Subscription(this.consumer, params, mixin)\n return this.add(subscription)\n }\n\n // Private\n\n add(subscription) {\n this.subscriptions.push(subscription)\n this.consumer.ensureActiveConnection()\n this.notify(subscription, \"initialized\")\n this.subscribe(subscription)\n return subscription\n }\n\n remove(subscription) {\n this.forget(subscription)\n if (!this.findAll(subscription.identifier).length) {\n this.sendCommand(subscription, \"unsubscribe\")\n }\n return subscription\n }\n\n reject(identifier) {\n return this.findAll(identifier).map((subscription) => {\n this.forget(subscription)\n this.notify(subscription, \"rejected\")\n return subscription\n })\n }\n\n forget(subscription) {\n this.guarantor.forget(subscription)\n this.subscriptions = (this.subscriptions.filter((s) => s !== subscription))\n return subscription\n }\n\n findAll(identifier) {\n return this.subscriptions.filter((s) => s.identifier === identifier)\n }\n\n reload() {\n return this.subscriptions.map((subscription) =>\n this.subscribe(subscription))\n }\n\n notifyAll(callbackName, ...args) {\n return this.subscriptions.map((subscription) =>\n this.notify(subscription, callbackName, ...args))\n }\n\n notify(subscription, callbackName, ...args) {\n let subscriptions\n if (typeof subscription === \"string\") {\n subscriptions = this.findAll(subscription)\n } else {\n subscriptions = [subscription]\n }\n\n return subscriptions.map((subscription) =>\n (typeof subscription[callbackName] === \"function\" ? subscription[callbackName](...args) : undefined))\n }\n\n subscribe(subscription) {\n if (this.sendCommand(subscription, \"subscribe\")) {\n this.guarantor.guarantee(subscription)\n }\n }\n\n confirmSubscription(identifier) {\n logger.log(`Subscription confirmed ${identifier}`)\n this.findAll(identifier).map((subscription) =>\n this.guarantor.forget(subscription))\n }\n\n sendCommand(subscription, command) {\n const {identifier} = subscription\n return this.consumer.send({command, identifier})\n }\n}\n", "import Connection from \"./connection\"\nimport Subscriptions from \"./subscriptions\"\n\n// The ActionCable.Consumer establishes the connection to a server-side Ruby Connection object. Once established,\n// the ActionCable.ConnectionMonitor will ensure that its properly maintained through heartbeats and checking for stale updates.\n// The Consumer instance is also the gateway to establishing subscriptions to desired channels through the #createSubscription\n// method.\n//\n// The following example shows how this can be set up:\n//\n// App = {}\n// App.cable = ActionCable.createConsumer(\"ws://example.com/accounts/1\")\n// App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\")\n//\n// For more details on how you'd configure an actual channel subscription, see ActionCable.Subscription.\n//\n// When a consumer is created, it automatically connects with the server.\n//\n// To disconnect from the server, call\n//\n// App.cable.disconnect()\n//\n// and to restart the connection:\n//\n// App.cable.connect()\n//\n// Any channel subscriptions which existed prior to disconnecting will\n// automatically resubscribe.\n\nexport default class Consumer {\n constructor(url) {\n this._url = url\n this.subscriptions = new Subscriptions(this)\n this.connection = new Connection(this)\n this.subprotocols = []\n }\n\n get url() {\n return createWebSocketURL(this._url)\n }\n\n send(data) {\n return this.connection.send(data)\n }\n\n connect() {\n return this.connection.open()\n }\n\n disconnect() {\n return this.connection.close({allowReconnect: false})\n }\n\n ensureActiveConnection() {\n if (!this.connection.isActive()) {\n return this.connection.open()\n }\n }\n\n addSubProtocol(subprotocol) {\n this.subprotocols = [...this.subprotocols, subprotocol]\n }\n}\n\nexport function createWebSocketURL(url) {\n if (typeof url === \"function\") {\n url = url()\n }\n\n if (url && !/^wss?:/i.test(url)) {\n const a = document.createElement(\"a\")\n a.href = url\n // Fix populating Location properties in IE. Otherwise, protocol will be blank.\n a.href = a.href\n a.protocol = a.protocol.replace(\"http\", \"ws\")\n return a.href\n } else {\n return url\n }\n}\n", "import Connection from \"./connection\"\nimport ConnectionMonitor from \"./connection_monitor\"\nimport Consumer, { createWebSocketURL } from \"./consumer\"\nimport INTERNAL from \"./internal\"\nimport Subscription from \"./subscription\"\nimport Subscriptions from \"./subscriptions\"\nimport SubscriptionGuarantor from \"./subscription_guarantor\"\nimport adapters from \"./adapters\"\nimport logger from \"./logger\"\n\nexport {\n Connection,\n ConnectionMonitor,\n Consumer,\n INTERNAL,\n Subscription,\n Subscriptions,\n SubscriptionGuarantor,\n adapters,\n createWebSocketURL,\n logger,\n}\n\nexport function createConsumer(url = getConfig(\"url\") || INTERNAL.default_mount_path) {\n return new Consumer(url)\n}\n\nexport function getConfig(name) {\n const element = document.head.querySelector(`meta[name='action-cable-${name}']`)\n if (element) {\n return element.getAttribute(\"content\")\n }\n}\n", "/*!\n * jQuery JavaScript Library v1.11.2\n * http://jquery.com/\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n *\n * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2014-12-17T15:27Z\n */\n\n(function( global, factory ) {\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\t\t// For CommonJS and CommonJS-like environments where a proper window is present,\n\t\t// execute the factory and get jQuery\n\t\t// For environments that do not inherently posses a window with a document\n\t\t// (such as Node.js), expose a jQuery-making 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// Can't do this because several apps including ASP.NET trace\n// the stack via arguments.caller.callee and Firefox dies if\n// you try to trace through \"use strict\" call chains. (#13335)\n// Support: Firefox 18+\n//\n\nvar deletedIds = [];\n\nvar slice = deletedIds.slice;\n\nvar concat = deletedIds.concat;\n\nvar push = deletedIds.push;\n\nvar indexOf = deletedIds.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar support = {};\n\n\n\nvar\n\tversion = \"1.11.2\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\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\n\t// Support: Android<4.1, IE<9\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\n\n\t// Matches dashed string for camelizing\n\trmsPrefix = /^-ms-/,\n\trdashAlpha = /-([\\da-z])/gi,\n\n\t// Used by jQuery.camelCase as callback to replace()\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t};\n\njQuery.fn = jQuery.prototype = {\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// Start with an empty selector\n\tselector: \"\",\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\t\treturn num != null ?\n\n\t\t\t// Return just the one element from the set\n\t\t\t( num < 0 ? this[ num + this.length ] : this[ num ] ) :\n\n\t\t\t// Return all the elements in a clean array\n\t\t\tslice.call( this );\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\t\tret.context = this.context;\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\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\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\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(null);\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: deletedIds.sort,\n\tsplice: deletedIds.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar src, copyIsArray, copy, name, options, 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\" && !jQuery.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\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( 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) || (copyIsArray = jQuery.isArray(copy)) ) ) {\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray(src) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject(src) ? src : {};\n\t\t\t\t\t}\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\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\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren't supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type(obj) === \"function\";\n\t},\n\n\tisArray: Array.isArray || function( obj ) {\n\t\treturn jQuery.type(obj) === \"array\";\n\t},\n\n\tisWindow: function( obj ) {\n\t\t/* jshint eqeqeq: false */\n\t\treturn obj != null && obj == obj.window;\n\t},\n\n\tisNumeric: function( obj ) {\n\t\t// parseFloat NaNs numeric-cast false positives (null|true|false|\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t// adding 1 corrects loss of precision from parseFloat (#15100)\n\t\treturn !jQuery.isArray( obj ) && (obj - parseFloat( obj ) + 1) >= 0;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\tvar key;\n\n\t\t// Must be an Object.\n\t\t// Because of IE, we also have to check the presence of the constructor property.\n\t\t// Make sure that DOM nodes and window objects don't pass through, as well\n\t\tif ( !obj || jQuery.type(obj) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t// Not own constructor property must be Object\n\t\t\tif ( obj.constructor &&\n\t\t\t\t!hasOwn.call(obj, \"constructor\") &&\n\t\t\t\t!hasOwn.call(obj.constructor.prototype, \"isPrototypeOf\") ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\t// IE8,9 Will throw exceptions on certain host objects #9897\n\t\t\treturn false;\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// Handle iteration over inherited properties before own properties.\n\t\tif ( support.ownLast ) {\n\t\t\tfor ( key in obj ) {\n\t\t\t\treturn hasOwn.call( obj, key );\n\t\t\t}\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || hasOwn.call( obj, key );\n\t},\n\n\ttype: function( obj ) {\n\t\tif ( obj == null ) {\n\t\t\treturn obj + \"\";\n\t\t}\n\t\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\t\tclass2type[ toString.call(obj) ] || \"object\" :\n\t\t\ttypeof obj;\n\t},\n\n\t// Evaluates a script in a global context\n\t// Workarounds based on findings by Jim Driscoll\n\t// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context\n\tglobalEval: function( data ) {\n\t\tif ( data && jQuery.trim( data ) ) {\n\t\t\t// We use execScript on Internet Explorer\n\t\t\t// We use an anonymous function so that context is window\n\t\t\t// rather than jQuery in Firefox\n\t\t\t( window.execScript || function( data ) {\n\t\t\t\twindow[ \"eval\" ].call( window, data );\n\t\t\t} )( data );\n\t\t}\n\t},\n\n\t// Convert dashed to camelCase; used by the css and data modules\n\t// Microsoft forgot to hump their vendor prefix (#9572)\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( obj, callback, args ) {\n\t\tvar value,\n\t\t\ti = 0,\n\t\t\tlength = obj.length,\n\t\t\tisArray = isArraylike( obj );\n\n\t\tif ( args ) {\n\t\t\tif ( isArray ) {\n\t\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\t\tvalue = callback.apply( obj[ i ], args );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( i in obj ) {\n\t\t\t\t\tvalue = callback.apply( obj[ i ], args );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( isArray ) {\n\t\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\t\tvalue = callback.call( obj[ i ], i, obj[ i ] );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( i in obj ) {\n\t\t\t\t\tvalue = callback.call( obj[ i ], i, obj[ i ] );\n\n\t\t\t\t\tif ( value === false ) {\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 obj;\n\t},\n\n\t// Support: Android<4.1, IE<9\n\ttrim: function( text ) {\n\t\treturn text == null ?\n\t\t\t\"\" :\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\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[ 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\tvar len;\n\n\t\tif ( arr ) {\n\t\t\tif ( indexOf ) {\n\t\t\t\treturn indexOf.call( arr, elem, i );\n\t\t\t}\n\n\t\t\tlen = arr.length;\n\t\t\ti = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;\n\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t// Skip accessing in sparse arrays\n\t\t\t\tif ( i in arr && arr[ i ] === elem ) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t},\n\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\twhile ( j < len ) {\n\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// Workaround casting of .length to NaN on otherwise arraylike objects (e.g., NodeLists)\n\t\tif ( len !== len ) {\n\t\t\twhile ( second[j] !== undefined ) {\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t\t}\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 value,\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tisArray = isArraylike( elems ),\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArray ) {\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 concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// Bind a function to a context, optionally partially applying any\n\t// arguments.\n\tproxy: function( fn, context ) {\n\t\tvar args, proxy, tmp;\n\n\t\tif ( typeof context === \"string\" ) {\n\t\t\ttmp = fn[ context ];\n\t\t\tcontext = fn;\n\t\t\tfn = tmp;\n\t\t}\n\n\t\t// Quick check to determine if target is callable, in the spec\n\t\t// this throws a TypeError, but we will just return undefined.\n\t\tif ( !jQuery.isFunction( fn ) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Simulated bind\n\t\targs = slice.call( arguments, 2 );\n\t\tproxy = function() {\n\t\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t\t};\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\t\treturn proxy;\n\t},\n\n\tnow: function() {\n\t\treturn +( new Date() );\n\t},\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\n// Populate the class2type map\njQuery.each(\"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"), function(i, name) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n});\n\nfunction isArraylike( obj ) {\n\tvar length = obj.length,\n\t\ttype = jQuery.type( obj );\n\n\tif ( type === \"function\" || jQuery.isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\tif ( obj.nodeType === 1 && length ) {\n\t\treturn true;\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.2.0-pre\n * http://sizzlejs.com/\n *\n * Copyright 2008, 2014 jQuery Foundation, Inc. and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2014-12-16\n */\n(function( window ) {\n\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\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// General-purpose constants\n\tMAX_NEGATIVE = 1 << 31,\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf as it's faster than native\n\t// http://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|ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\t// http://www.w3.org/TR/css3-syntax/#characters\n\tcharacterEncoding = \"(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+\",\n\n\t// Loosely modeled on CSS identifier characters\n\t// An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors\n\t// Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = characterEncoding.replace( \"w\", \"w#\" ),\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + characterEncoding + \")(?:\" + whitespace +\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\n\t\t\"*\\\\]\",\n\n\tpseudos = \":(\" + characterEncoding + \")(?:\\\\((\" +\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\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\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 + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\n\trattributeQuotes = new RegExp( \"=\" + whitespace + \"*([^\\\\]'\\\"]*?)\" + whitespace + \"*\\\\]\", \"g\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + characterEncoding + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + characterEncoding + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + characterEncoding.replace( \"w\", \"w*\" ) + \")\" ),\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)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\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 + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\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\trescape = /'|\\\\/g,\n\n\t// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox<24\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\thigh < 0 ?\n\t\t\t\t// BMP codepoint\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\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// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\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\tpush_native.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\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 match, elem, m, nodeType,\n\t\t// QSA vars\n\t\ti, groups, old, nid, newContext, newSelector;\n\n\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\n\tcontext = context || document;\n\tresults = results || [];\n\tnodeType = context.nodeType;\n\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\tif ( !seed && documentIsHTML ) {\n\n\t\t// Try to shortcut find operations when possible (e.g., not under DocumentFragment)\n\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\n\t\t\t// Speed-up: Sizzle(\"#ID\")\n\t\t\tif ( (m = match[1]) ) {\n\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\telem = context.getElementById( m );\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document (jQuery #6963)\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE, Opera, and Webkit return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id === m ) {\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} else {\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Context is not a document\n\t\t\t\t\tif ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&\n\t\t\t\t\t\tcontains( context, elem ) && elem.id === m ) {\n\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Speed-up: Sizzle(\"TAG\")\n\t\t\t} else if ( match[2] ) {\n\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\treturn results;\n\n\t\t\t// Speed-up: Sizzle(\".CLASS\")\n\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName ) {\n\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\treturn results;\n\t\t\t}\n\t\t}\n\n\t\t// QSA path\n\t\tif ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\n\t\t\tnid = old = expando;\n\t\t\tnewContext = context;\n\t\t\tnewSelector = nodeType !== 1 && selector;\n\n\t\t\t// qSA works strangely on Element-rooted queries\n\t\t\t// We can work around this by specifying an extra ID on the root\n\t\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\n\t\t\t// IE 8 doesn't work on object elements\n\t\t\tif ( nodeType === 1 && context.nodeName.toLowerCase() !== \"object\" ) {\n\t\t\t\tgroups = tokenize( selector );\n\n\t\t\t\tif ( (old = context.getAttribute(\"id\")) ) {\n\t\t\t\t\tnid = old.replace( rescape, \"\\\\$&\" );\n\t\t\t\t} else {\n\t\t\t\t\tcontext.setAttribute( \"id\", nid );\n\t\t\t\t}\n\t\t\t\tnid = \"[id='\" + nid + \"'] \";\n\n\t\t\t\ti = groups.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tgroups[i] = nid + toSelector( groups[i] );\n\t\t\t\t}\n\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) || context;\n\t\t\t\tnewSelector = groups.join(\",\");\n\t\t\t}\n\n\t\t\tif ( newSelector ) {\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} finally {\n\t\t\t\t\tif ( !old ) {\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\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\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 div and expects a boolean result\n */\nfunction assert( fn ) {\n\tvar div = document.createElement(\"div\");\n\n\ttry {\n\t\treturn !!fn( div );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( div.parentNode ) {\n\t\t\tdiv.parentNode.removeChild( div );\n\t\t}\n\t\t// release memory in IE\n\t\tdiv = 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 = attrs.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\t( ~b.sourceIndex || MAX_NEGATIVE ) -\n\t\t\t( ~a.sourceIndex || MAX_NEGATIVE );\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 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\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\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, parent,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// If no document and documentElement is available, return\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Set our document\n\tdocument = doc;\n\tdocElem = doc.documentElement;\n\tparent = doc.defaultView;\n\n\t// Support: IE>8\n\t// If iframe document is assigned to \"document\" variable and if iframe has been reloaded,\n\t// IE will throw \"permission denied\" error when accessing \"document\" variable, see jQuery #13936\n\t// IE6-8 do not support the defaultView property so parent will be undefined\n\tif ( parent && parent !== parent.top ) {\n\t\t// IE11 does not have attachEvent, so all must suffer\n\t\tif ( parent.addEventListener ) {\n\t\t\tparent.addEventListener( \"unload\", unloadHandler, false );\n\t\t} else if ( parent.attachEvent ) {\n\t\t\tparent.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t/* Support tests\n\t---------------------------------------------------------------------- */\n\tdocumentIsHTML = !isXML( doc );\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( div ) {\n\t\tdiv.className = \"i\";\n\t\treturn !div.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( div ) {\n\t\tdiv.appendChild( doc.createComment(\"\") );\n\t\treturn !div.getElementsByTagName(\"*\").length;\n\t});\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( doc.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 programatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( div ) {\n\t\tdocElem.appendChild( div ).id = expando;\n\t\treturn !doc.getElementsByName || !doc.getElementsByName( expando ).length;\n\t});\n\n\t// ID find and filter\n\tif ( support.getById ) {\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar m = context.getElementById( id );\n\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\treturn m && m.parentNode ? [ m ] : [];\n\t\t\t}\n\t\t};\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} else {\n\t\t// Support: IE6/7\n\t\t// getElementById is not reliable as a find shortcut\n\t\tdelete Expr.find[\"ID\"];\n\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\" && elem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\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\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 ( 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 http://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( doc.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( div ) {\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// http://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( div ).innerHTML = \"<a id='\" + expando + \"'></a>\" +\n\t\t\t\t\"<select id='\" + expando + \"-\\f]' 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// http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( div.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 ( !div.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.2+, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.7+\n\t\t\tif ( !div.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push(\"~=\");\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 ( !div.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 sibing-combinator selector` fails\n\t\t\tif ( !div.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( div ) {\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 = doc.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tdiv.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 ( div.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 ( !div.querySelectorAll(\":enabled\").length ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tdiv.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( div ) {\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( div, \"div\" );\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( div, \"[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 does not implement inclusive descendent\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\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\tif ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( 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\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\t\t\treturn a === doc ? -1 :\n\t\t\t\tb === doc ? 1 :\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\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\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn doc;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\t// Make sure that attribute selectors are quoted\n\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\n\n\tif ( support.matchesSelector && documentIsHTML &&\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\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch (e) {}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\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\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\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.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\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\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\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\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\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] || match[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\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\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] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\n\t\t\t\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\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\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() { return true; } :\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 + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\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\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};\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, outerCache, node, diff, 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\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 ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {\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\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\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\t\t\t\t\t\t\touterCache = parent[ expando ] || (parent[ expando ] = {});\n\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[0] === dirruns && cache[1];\n\t\t\t\t\t\t\tdiff = cache[0] === dirruns && cache[2];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t} else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {\n\t\t\t\t\t\t\tdiff = cache[1];\n\n\t\t\t\t\t\t// xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t} else {\n\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\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\tif ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {\n\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\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t(node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\tbreak;\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\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\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction(function( selector ) {\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\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 || elem.innerText || 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\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 && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": function( elem ) {\n\t\t\treturn elem.disabled === false;\n\t\t},\n\n\t\t\"disabled\": function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\t\"checked\": function( elem ) {\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) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\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\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\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 || attr.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 ? argument + length : argument;\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\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\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\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\tcheckNonElements = base && dir === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\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} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from dir 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\t\t\t\t\t\tif ( (oldCache = outerCache[ dir ]) &&\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\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\touterCache[ dir ] = 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};\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( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\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\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\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\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\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\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).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\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\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\t\t\t\toutermostContext = context !== document && context;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Keep `i` a string if there are no elements so `matchedCount` will be \"00\" below\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\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context, 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\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// Apply set filters to unmatched elements\n\t\t\tmatchedCount += i;\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\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\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with 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 no seed and only one group\n\tif ( match.length === 1 ) {\n\n\t\t// Take a shortcut and set the context if the root selector is an ID\n\t\ttokens = match[0] = match[0].slice( 0 );\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\tsupport.getById && context.nodeType === 9 && documentIsHTML &&\n\t\t\t\tExpr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].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\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 ) || context\n\t\t\t\t)) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\trsibling.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( div1 ) {\n\t// Should return 1, but returns 4 (following)\n\treturn div1.compareDocumentPosition( document.createElement(\"div\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( div ) {\n\tdiv.innerHTML = \"<a href='#'></a>\";\n\treturn div.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( div ) {\n\tdiv.innerHTML = \"<input/>\";\n\tdiv.firstChild.setAttribute( \"value\", \"\" );\n\treturn div.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( div ) {\n\treturn div.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\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\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;\njQuery.expr[\":\"] = jQuery.expr.pseudos;\njQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\nvar rsingleTag = (/^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/);\n\n\n\nvar risSimple = /^.[^:#\\[\\.,]*$/;\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\t/* jshint -W018 */\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t});\n\n\t}\n\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t});\n\n\t}\n\n\tif ( typeof qualifier === \"string\" ) {\n\t\tif ( risSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter( qualifier, elements, not );\n\t\t}\n\n\t\tqualifier = jQuery.filter( qualifier, elements );\n\t}\n\n\treturn jQuery.grep( elements, function( elem ) {\n\t\treturn ( jQuery.inArray( elem, qualifier ) >= 0 ) !== not;\n\t});\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\treturn elems.length === 1 && elem.nodeType === 1 ?\n\t\tjQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :\n\t\tjQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t}));\n};\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar i,\n\t\t\tret = [],\n\t\t\tself = this,\n\t\t\tlen = self.length;\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\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\t// Needed because $( selector, context ) becomes $( context ).find( selector )\n\t\tret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );\n\t\tret.selector = this.selector ? this.selector + \" \" + selector : selector;\n\t\treturn 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// Use the correct document accordingly with window argument (sandbox)\n\tdocument = window.document,\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\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]*))$/,\n\n\tinit = jQuery.fn.init = function( selector, context ) {\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// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector.charAt(0) === \"<\" && selector.charAt( selector.length - 1 ) === \">\" && selector.length >= 3 ) {\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// 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\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( jQuery.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\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id !== match[2] ) {\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[0] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\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 || rootjQuery ).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.context = this[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 ( jQuery.isFunction( selector ) ) {\n\t\t\treturn typeof rootjQuery.ready !== \"undefined\" ?\n\t\t\t\trootjQuery.ready( selector ) :\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\tif ( selector.selector !== undefined ) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\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\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.extend({\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [],\n\t\t\tcur = elem[ dir ];\n\n\t\twhile ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {\n\t\t\tif ( cur.nodeType === 1 ) {\n\t\t\t\tmatched.push( cur );\n\t\t\t}\n\t\t\tcur = cur[dir];\n\t\t}\n\t\treturn matched;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar r = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tr.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn r;\n\t}\n});\n\njQuery.fn.extend({\n\thas: function( target ) {\n\t\tvar i,\n\t\t\ttargets = jQuery( target, this ),\n\t\t\tlen = targets.length;\n\n\t\treturn this.filter(function() {\n\t\t\tfor ( i = 0; i < len; 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\tpos = rneedsContext.test( selectors ) || typeof selectors !== \"string\" ?\n\t\t\t\tjQuery( selectors, context || this.context ) :\n\t\t\t\t0;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tfor ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) {\n\t\t\t\t// Always skip document fragments\n\t\t\t\tif ( cur.nodeType < 11 && (pos ?\n\t\t\t\t\tpos.index(cur) > -1 :\n\n\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\tjQuery.find.matchesSelector(cur, selectors)) ) {\n\n\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within\n\t// the matched set of elements\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 jQuery.inArray( this[0], jQuery( elem ) );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[0] : elem, this );\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.unique(\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\tdo {\n\t\tcur = cur[ dir ];\n\t} while ( cur && cur.nodeType !== 1 );\n\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 jQuery.dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn jQuery.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 jQuery.dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn jQuery.sibling( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn jQuery.nodeName( elem, \"iframe\" ) ?\n\t\t\telem.contentDocument || elem.contentWindow.document :\n\t\t\tjQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar ret = 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\tret = jQuery.filter( selector, ret );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tret = jQuery.unique( ret );\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\tret = ret.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n});\nvar rnotwhite = (/\\S+/g);\n\n\n\n// String to Object options format cache\nvar optionsCache = {};\n\n// Convert String-formatted options into Object-formatted ones and store in cache\nfunction createOptions( options ) {\n\tvar object = optionsCache[ options ] = {};\n\tjQuery.each( options.match( rnotwhite ) || [], 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\t( optionsCache[ options ] || createOptions( options ) ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\t\t// Last fire value (for non-forgettable lists)\n\t\tmemory,\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\t\t// End of the loop when firing\n\t\tfiringLength,\n\t\t// Index of currently firing callback (modified by remove if needed)\n\t\tfiringIndex,\n\t\t// First callback to fire (used internally by add and fireWith)\n\t\tfiringStart,\n\t\t// Actual callback list\n\t\tlist = [],\n\t\t// Stack of fire calls for repeatable lists\n\t\tstack = !options.once && [],\n\t\t// Fire callbacks\n\t\tfire = function( data ) {\n\t\t\tmemory = options.memory && data;\n\t\t\tfired = true;\n\t\t\tfiringIndex = firingStart || 0;\n\t\t\tfiringStart = 0;\n\t\t\tfiringLength = list.length;\n\t\t\tfiring = true;\n\t\t\tfor ( ; list && firingIndex < firingLength; firingIndex++ ) {\n\t\t\t\tif ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {\n\t\t\t\t\tmemory = false; // To prevent further calls using add\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfiring = false;\n\t\t\tif ( list ) {\n\t\t\t\tif ( stack ) {\n\t\t\t\t\tif ( stack.length ) {\n\t\t\t\t\t\tfire( stack.shift() );\n\t\t\t\t\t}\n\t\t\t\t} else if ( memory ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t} else {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// Actual Callbacks object\n\t\tself = {\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\t\t\t\t\t// First, we save the current length\n\t\t\t\t\tvar start = list.length;\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\tvar type = jQuery.type( arg );\n\t\t\t\t\t\t\tif ( type === \"function\" ) {\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 && type !== \"string\" ) {\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\t\t\t\t\t// Do we need to add the callbacks to the\n\t\t\t\t\t// current firing batch?\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tfiringLength = list.length;\n\t\t\t\t\t// With memory, if we're not firing then\n\t\t\t\t\t// we should call right away\n\t\t\t\t\t} else if ( memory ) {\n\t\t\t\t\t\tfiringStart = start;\n\t\t\t\t\t\tfire( memory );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\t\tvar index;\n\t\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\t\tlist.splice( index, 1 );\n\t\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\t\t\tif ( index <= firingLength ) {\n\t\t\t\t\t\t\t\t\tfiringLength--;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\t\t\tfiringIndex--;\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\t\t\t\treturn this;\n\t\t\t},\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 ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );\n\t\t\t},\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tlist = [];\n\t\t\t\tfiringLength = 0;\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Have the list do nothing anymore\n\t\t\tdisable: function() {\n\t\t\t\tlist = stack = memory = undefined;\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it disabled?\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\t\t\t// Lock the list in its current state\n\t\t\tlock: function() {\n\t\t\t\tstack = undefined;\n\t\t\t\tif ( !memory ) {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it locked?\n\t\t\tlocked: function() {\n\t\t\t\treturn !stack;\n\t\t\t},\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 ( list && ( !fired || stack ) ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tstack.push( args );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfire( args );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\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\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\njQuery.extend({\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\t\t\t\t// action, add listener, listener list, final state\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks(\"once memory\"), \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks(\"once memory\"), \"rejected\" ],\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks(\"memory\") ]\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\tthen: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\t\t\t\t\treturn jQuery.Deferred(function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\t\t\t\t\tvar fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];\n\t\t\t\t\t\t\t// deferred[ done | fail | progress ] for forwarding actions to newDefer\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 && jQuery.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.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\t\t.progress( newDefer.notify );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );\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\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// Keep pipe for back-compat\n\t\tpromise.pipe = promise.then;\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[ 3 ];\n\n\t\t\t// promise[ done | fail | progress ] = 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(function() {\n\t\t\t\t\t// state = [ resolved | rejected ]\n\t\t\t\t\tstate = stateString;\n\n\t\t\t\t// [ reject_list | resolve_list ].disable; progress_list.lock\n\t\t\t\t}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );\n\t\t\t}\n\n\t\t\t// deferred[ resolve | reject | notify ]\n\t\t\tdeferred[ tuple[0] ] = function() {\n\t\t\t\tdeferred[ tuple[0] + \"With\" ]( this === deferred ? promise : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\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( subordinate /* , ..., subordinateN */ ) {\n\t\tvar i = 0,\n\t\t\tresolveValues = slice.call( arguments ),\n\t\t\tlength = resolveValues.length,\n\n\t\t\t// the count of uncompleted subordinates\n\t\t\tremaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,\n\n\t\t\t// the master Deferred. If resolveValues consist of only a single Deferred, just use that.\n\t\t\tdeferred = remaining === 1 ? subordinate : jQuery.Deferred(),\n\n\t\t\t// Update function for both resolve and progress values\n\t\t\tupdateFunc = function( i, contexts, values ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tcontexts[ i ] = this;\n\t\t\t\t\tvalues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( values === progressValues ) {\n\t\t\t\t\t\tdeferred.notifyWith( contexts, values );\n\n\t\t\t\t\t} else if ( !(--remaining) ) {\n\t\t\t\t\t\tdeferred.resolveWith( contexts, values );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t},\n\n\t\t\tprogressValues, progressContexts, resolveContexts;\n\n\t\t// add listeners to Deferred subordinates; treat others as resolved\n\t\tif ( length > 1 ) {\n\t\t\tprogressValues = new Array( length );\n\t\t\tprogressContexts = new Array( length );\n\t\t\tresolveContexts = new Array( length );\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {\n\t\t\t\t\tresolveValues[ i ].promise()\n\t\t\t\t\t\t.done( updateFunc( i, resolveContexts, resolveValues ) )\n\t\t\t\t\t\t.fail( deferred.reject )\n\t\t\t\t\t\t.progress( updateFunc( i, progressContexts, progressValues ) );\n\t\t\t\t} else {\n\t\t\t\t\t--remaining;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// if we're not waiting on anything, resolve the master\n\t\tif ( !remaining ) {\n\t\t\tdeferred.resolveWith( resolveContexts, resolveValues );\n\t\t}\n\n\t\treturn deferred.promise();\n\t}\n});\n\n\n// The deferred used on DOM ready\nvar readyList;\n\njQuery.fn.ready = function( fn ) {\n\t// Add the callback\n\tjQuery.ready.promise().done( fn );\n\n\treturn this;\n};\n\njQuery.extend({\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// Hold (or release) the ready event\n\tholdReady: function( hold ) {\n\t\tif ( hold ) {\n\t\t\tjQuery.readyWait++;\n\t\t} else {\n\t\t\tjQuery.ready( true );\n\t\t}\n\t},\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// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\tif ( !document.body ) {\n\t\t\treturn setTimeout( jQuery.ready );\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\n\t\t// Trigger any bound ready events\n\t\tif ( jQuery.fn.triggerHandler ) {\n\t\t\tjQuery( document ).triggerHandler( \"ready\" );\n\t\t\tjQuery( document ).off( \"ready\" );\n\t\t}\n\t}\n});\n\n/**\n * Clean-up method for dom ready events\n */\nfunction detach() {\n\tif ( document.addEventListener ) {\n\t\tdocument.removeEventListener( \"DOMContentLoaded\", completed, false );\n\t\twindow.removeEventListener( \"load\", completed, false );\n\n\t} else {\n\t\tdocument.detachEvent( \"onreadystatechange\", completed );\n\t\twindow.detachEvent( \"onload\", completed );\n\t}\n}\n\n/**\n * The ready event handler and self cleanup method\n */\nfunction completed() {\n\t// readyState === \"complete\" is good enough for us to call the dom ready in oldIE\n\tif ( document.addEventListener || event.type === \"load\" || document.readyState === \"complete\" ) {\n\t\tdetach();\n\t\tjQuery.ready();\n\t}\n}\n\njQuery.ready.promise = function( obj ) {\n\tif ( !readyList ) {\n\n\t\treadyList = jQuery.Deferred();\n\n\t\t// Catch cases where $(document).ready() is called after the browser event has already occurred.\n\t\t// we once tried to use readyState \"interactive\" here, but it caused issues like the one\n\t\t// discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\tsetTimeout( jQuery.ready );\n\n\t\t// Standards-based browsers support DOMContentLoaded\n\t\t} else if ( document.addEventListener ) {\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", completed, false );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", completed, false );\n\n\t\t// If IE event model is used\n\t\t} else {\n\t\t\t// Ensure firing before onload, maybe late but safe also for iframes\n\t\t\tdocument.attachEvent( \"onreadystatechange\", completed );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.attachEvent( \"onload\", completed );\n\n\t\t\t// If IE and not a frame\n\t\t\t// continually check to see if the document is ready\n\t\t\tvar top = false;\n\n\t\t\ttry {\n\t\t\t\ttop = window.frameElement == null && document.documentElement;\n\t\t\t} catch(e) {}\n\n\t\t\tif ( top && top.doScroll ) {\n\t\t\t\t(function doScrollCheck() {\n\t\t\t\t\tif ( !jQuery.isReady ) {\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t// Use the trick by Diego Perini\n\t\t\t\t\t\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\t\t\t\t\t\ttop.doScroll(\"left\");\n\t\t\t\t\t\t} catch(e) {\n\t\t\t\t\t\t\treturn setTimeout( doScrollCheck, 50 );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// detach all dom ready events\n\t\t\t\t\t\tdetach();\n\n\t\t\t\t\t\t// and execute any waiting functions\n\t\t\t\t\t\tjQuery.ready();\n\t\t\t\t\t}\n\t\t\t\t})();\n\t\t\t}\n\t\t}\n\t}\n\treturn readyList.promise( obj );\n};\n\n\nvar strundefined = typeof undefined;\n\n\n\n// Support: IE<9\n// Iteration over object's inherited properties before its own\nvar i;\nfor ( i in jQuery( support ) ) {\n\tbreak;\n}\nsupport.ownLast = i !== \"0\";\n\n// Note: most support tests are defined in their respective modules.\n// false until the test is run\nsupport.inlineBlockNeedsLayout = false;\n\n// Execute ASAP in case we need to set body.style.zoom\njQuery(function() {\n\t// Minified: var a,b,c,d\n\tvar val, div, body, container;\n\n\tbody = document.getElementsByTagName( \"body\" )[ 0 ];\n\tif ( !body || !body.style ) {\n\t\t// Return for frameset docs that don't have a body\n\t\treturn;\n\t}\n\n\t// Setup\n\tdiv = document.createElement( \"div\" );\n\tcontainer = document.createElement( \"div\" );\n\tcontainer.style.cssText = \"position:absolute;border:0;width:0;height:0;top:0;left:-9999px\";\n\tbody.appendChild( container ).appendChild( div );\n\n\tif ( typeof div.style.zoom !== strundefined ) {\n\t\t// Support: IE<8\n\t\t// Check if natively block-level elements act like inline-block\n\t\t// elements when setting their display to 'inline' and giving\n\t\t// them layout\n\t\tdiv.style.cssText = \"display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1\";\n\n\t\tsupport.inlineBlockNeedsLayout = val = div.offsetWidth === 3;\n\t\tif ( val ) {\n\t\t\t// Prevent IE 6 from affecting layout for positioned elements #11048\n\t\t\t// Prevent IE from shrinking the body in IE 7 mode #12869\n\t\t\t// Support: IE<8\n\t\t\tbody.style.zoom = 1;\n\t\t}\n\t}\n\n\tbody.removeChild( container );\n});\n\n\n\n\n(function() {\n\tvar div = document.createElement( \"div\" );\n\n\t// Execute the test only if not already executed in another module.\n\tif (support.deleteExpando == null) {\n\t\t// Support: IE<9\n\t\tsupport.deleteExpando = true;\n\t\ttry {\n\t\t\tdelete div.test;\n\t\t} catch( e ) {\n\t\t\tsupport.deleteExpando = false;\n\t\t}\n\t}\n\n\t// Null elements to avoid leaks in IE.\n\tdiv = null;\n})();\n\n\n/**\n * Determines whether an object can have data\n */\njQuery.acceptData = function( elem ) {\n\tvar noData = jQuery.noData[ (elem.nodeName + \" \").toLowerCase() ],\n\t\tnodeType = +elem.nodeType || 1;\n\n\t// Do not set data on non-element DOM nodes because it will not be cleared (#8335).\n\treturn nodeType !== 1 && nodeType !== 9 ?\n\t\tfalse :\n\n\t\t// Nodes accept data unless otherwise specified; rejection can be conditional\n\t\t!noData || noData !== true && elem.getAttribute(\"classid\") === noData;\n};\n\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /([A-Z])/g;\n\nfunction dataAttr( elem, key, data ) {\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\n\t\tvar name = \"data-\" + key.replace( rmultiDash, \"-$1\" ).toLowerCase();\n\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\t\tdata === \"false\" ? false :\n\t\t\t\t\tdata === \"null\" ? null :\n\t\t\t\t\t// Only convert to a number if it doesn't change the string\n\t\t\t\t\t+data + \"\" === data ? +data :\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\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\tjQuery.data( elem, key, data );\n\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\n\treturn data;\n}\n\n// checks a cache object for emptiness\nfunction isEmptyDataObject( obj ) {\n\tvar name;\n\tfor ( name in obj ) {\n\n\t\t// if the public data object is empty, the private is still empty\n\t\tif ( name === \"data\" && jQuery.isEmptyObject( obj[name] ) ) {\n\t\t\tcontinue;\n\t\t}\n\t\tif ( name !== \"toJSON\" ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\nfunction internalData( elem, name, data, pvt /* Internal Use Only */ ) {\n\tif ( !jQuery.acceptData( elem ) ) {\n\t\treturn;\n\t}\n\n\tvar ret, thisCache,\n\t\tinternalKey = jQuery.expando,\n\n\t\t// We have to handle DOM nodes and JS objects differently because IE6-7\n\t\t// can't GC object references properly across the DOM-JS boundary\n\t\tisNode = elem.nodeType,\n\n\t\t// Only DOM nodes need the global jQuery cache; JS object data is\n\t\t// attached directly to the object so GC can occur automatically\n\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t// Only defining an ID for JS objects if its cache already exists allows\n\t\t// the code to shortcut on the same path as a DOM node with no cache\n\t\tid = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey;\n\n\t// Avoid doing any more work than we need to when trying to get data on an\n\t// object that has no data at all\n\tif ( (!id || !cache[id] || (!pvt && !cache[id].data)) && data === undefined && typeof name === \"string\" ) {\n\t\treturn;\n\t}\n\n\tif ( !id ) {\n\t\t// Only DOM nodes need a new unique ID for each element since their data\n\t\t// ends up in the global cache\n\t\tif ( isNode ) {\n\t\t\tid = elem[ internalKey ] = deletedIds.pop() || jQuery.guid++;\n\t\t} else {\n\t\t\tid = internalKey;\n\t\t}\n\t}\n\n\tif ( !cache[ id ] ) {\n\t\t// Avoid exposing jQuery metadata on plain JS objects when the object\n\t\t// is serialized using JSON.stringify\n\t\tcache[ id ] = isNode ? {} : { toJSON: jQuery.noop };\n\t}\n\n\t// An object can be passed to jQuery.data instead of a key/value pair; this gets\n\t// shallow copied over onto the existing cache\n\tif ( typeof name === \"object\" || typeof name === \"function\" ) {\n\t\tif ( pvt ) {\n\t\t\tcache[ id ] = jQuery.extend( cache[ id ], name );\n\t\t} else {\n\t\t\tcache[ id ].data = jQuery.extend( cache[ id ].data, name );\n\t\t}\n\t}\n\n\tthisCache = cache[ id ];\n\n\t// jQuery data() is stored in a separate object inside the object's internal data\n\t// cache in order to avoid key collisions between internal data and user-defined\n\t// data.\n\tif ( !pvt ) {\n\t\tif ( !thisCache.data ) {\n\t\t\tthisCache.data = {};\n\t\t}\n\n\t\tthisCache = thisCache.data;\n\t}\n\n\tif ( data !== undefined ) {\n\t\tthisCache[ jQuery.camelCase( name ) ] = data;\n\t}\n\n\t// Check for both converted-to-camel and non-converted data property names\n\t// If a data property was specified\n\tif ( typeof name === \"string\" ) {\n\n\t\t// First Try to find as-is property data\n\t\tret = thisCache[ name ];\n\n\t\t// Test for null|undefined property data\n\t\tif ( ret == null ) {\n\n\t\t\t// Try to find the camelCased property\n\t\t\tret = thisCache[ jQuery.camelCase( name ) ];\n\t\t}\n\t} else {\n\t\tret = thisCache;\n\t}\n\n\treturn ret;\n}\n\nfunction internalRemoveData( elem, name, pvt ) {\n\tif ( !jQuery.acceptData( elem ) ) {\n\t\treturn;\n\t}\n\n\tvar thisCache, i,\n\t\tisNode = elem.nodeType,\n\n\t\t// See jQuery.data for more information\n\t\tcache = isNode ? jQuery.cache : elem,\n\t\tid = isNode ? elem[ jQuery.expando ] : jQuery.expando;\n\n\t// If there is already no cache entry for this object, there is no\n\t// purpose in continuing\n\tif ( !cache[ id ] ) {\n\t\treturn;\n\t}\n\n\tif ( name ) {\n\n\t\tthisCache = pvt ? cache[ id ] : cache[ id ].data;\n\n\t\tif ( thisCache ) {\n\n\t\t\t// Support array or space separated string names for data keys\n\t\t\tif ( !jQuery.isArray( name ) ) {\n\n\t\t\t\t// try the string as a key before any manipulation\n\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\tname = [ name ];\n\t\t\t\t} else {\n\n\t\t\t\t\t// split the camel cased version by spaces unless a key with the spaces exists\n\t\t\t\t\tname = jQuery.camelCase( name );\n\t\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\t\tname = [ name ];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tname = name.split(\" \");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// If \"name\" is an array of keys...\n\t\t\t\t// When data is initially created, via (\"key\", \"val\") signature,\n\t\t\t\t// keys will be converted to camelCase.\n\t\t\t\t// Since there is no way to tell _how_ a key was added, remove\n\t\t\t\t// both plain key and camelCase key. #12786\n\t\t\t\t// This will only penalize the array argument path.\n\t\t\t\tname = name.concat( jQuery.map( name, jQuery.camelCase ) );\n\t\t\t}\n\n\t\t\ti = name.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete thisCache[ name[i] ];\n\t\t\t}\n\n\t\t\t// If there is no data left in the cache, we want to continue\n\t\t\t// and let the cache object itself get destroyed\n\t\t\tif ( pvt ? !isEmptyDataObject(thisCache) : !jQuery.isEmptyObject(thisCache) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\n\t// See jQuery.data for more information\n\tif ( !pvt ) {\n\t\tdelete cache[ id ].data;\n\n\t\t// Don't destroy the parent cache unless the internal data object\n\t\t// had been the only thing left in it\n\t\tif ( !isEmptyDataObject( cache[ id ] ) ) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// Destroy the cache\n\tif ( isNode ) {\n\t\tjQuery.cleanData( [ elem ], true );\n\n\t// Use delete when supported for expandos or `cache` is not a window per isWindow (#10080)\n\t/* jshint eqeqeq: false */\n\t} else if ( support.deleteExpando || cache != cache.window ) {\n\t\t/* jshint eqeqeq: true */\n\t\tdelete cache[ id ];\n\n\t// When all else fails, null\n\t} else {\n\t\tcache[ id ] = null;\n\t}\n}\n\njQuery.extend({\n\tcache: {},\n\n\t// The following elements (space-suffixed to avoid Object.prototype collisions)\n\t// throw uncatchable exceptions if you attempt to set expando properties\n\tnoData: {\n\t\t\"applet \": true,\n\t\t\"embed \": true,\n\t\t// ...but Flash objects (which have this classid) *can* handle expandos\n\t\t\"object \": \"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\"\n\t},\n\n\thasData: function( elem ) {\n\t\telem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];\n\t\treturn !!elem && !isEmptyDataObject( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn internalData( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\treturn internalRemoveData( elem, name );\n\t},\n\n\t// For internal use only.\n\t_data: function( elem, name, data ) {\n\t\treturn internalData( elem, name, data, true );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\treturn internalRemoveData( elem, name, true );\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// Special expections of .data basically thwart jQuery.access,\n\t\t// so implement the relevant behavior ourselves\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = jQuery.data( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !jQuery._data( elem, \"parsedAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE11+\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 = jQuery.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\tjQuery._data( elem, \"parsedAttrs\", 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\tjQuery.data( this, key );\n\t\t\t});\n\t\t}\n\n\t\treturn arguments.length > 1 ?\n\n\t\t\t// Sets one value\n\t\t\tthis.each(function() {\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t}) :\n\n\t\t\t// Gets one value\n\t\t\t// Try to fetch any internally stored data first\n\t\t\telem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : undefined;\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeData( 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 = jQuery._data( 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 || jQuery.isArray(data) ) {\n\t\t\t\t\tqueue = jQuery._data( 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 intended for public consumption - generates a queueHooks object, or returns the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn jQuery._data( elem, key ) || jQuery._data( elem, key, {\n\t\t\tempty: jQuery.Callbacks(\"once memory\").add(function() {\n\t\t\t\tjQuery._removeData( elem, type + \"queue\" );\n\t\t\t\tjQuery._removeData( elem, 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\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 = jQuery._data( 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 cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar isHidden = function( elem, el ) {\n\t\t// isHidden might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\t\treturn jQuery.css( elem, \"display\" ) === \"none\" || !jQuery.contains( elem.ownerDocument, elem );\n\t};\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 = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlength = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( jQuery.type( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\tjQuery.access( 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 ( !jQuery.isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\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 < length; i++ ) {\n\t\t\t\tfn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn chainable ?\n\t\telems :\n\n\t\t// Gets\n\t\tbulk ?\n\t\t\tfn.call( elems ) :\n\t\t\tlength ? fn( elems[0], key ) : emptyGet;\n};\nvar rcheckableType = (/^(?:checkbox|radio)$/i);\n\n\n\n(function() {\n\t// Minified: var a,b,c\n\tvar input = document.createElement( \"input\" ),\n\t\tdiv = document.createElement( \"div\" ),\n\t\tfragment = document.createDocumentFragment();\n\n\t// Setup\n\tdiv.innerHTML = \" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>\";\n\n\t// IE strips leading whitespace when .innerHTML is used\n\tsupport.leadingWhitespace = div.firstChild.nodeType === 3;\n\n\t// Make sure that tbody elements aren't automatically inserted\n\t// IE will insert them into empty tables\n\tsupport.tbody = !div.getElementsByTagName( \"tbody\" ).length;\n\n\t// Make sure that link elements get serialized correctly by innerHTML\n\t// This requires a wrapper element in IE\n\tsupport.htmlSerialize = !!div.getElementsByTagName( \"link\" ).length;\n\n\t// Makes sure cloning an html5 element does not cause problems\n\t// Where outerHTML is undefined, this still works\n\tsupport.html5Clone =\n\t\tdocument.createElement( \"nav\" ).cloneNode( true ).outerHTML !== \"<:nav></:nav>\";\n\n\t// Check if a disconnected checkbox will retain its checked\n\t// value of true after appended to the DOM (IE6/7)\n\tinput.type = \"checkbox\";\n\tinput.checked = true;\n\tfragment.appendChild( input );\n\tsupport.appendChecked = input.checked;\n\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\t// Support: IE6-IE11+\n\tdiv.innerHTML = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// #11217 - WebKit loses check when the name is after the checked attribute\n\tfragment.appendChild( div );\n\tdiv.innerHTML = \"<input type='radio' checked='checked' name='t'/>\";\n\n\t// Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3\n\t// old WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE<9\n\t// Opera does not clone events (and typeof div.attachEvent === undefined).\n\t// IE9-10 clones events bound via attachEvent, but they don't trigger with .click()\n\tsupport.noCloneEvent = true;\n\tif ( div.attachEvent ) {\n\t\tdiv.attachEvent( \"onclick\", function() {\n\t\t\tsupport.noCloneEvent = false;\n\t\t});\n\n\t\tdiv.cloneNode( true ).click();\n\t}\n\n\t// Execute the test only if not already executed in another module.\n\tif (support.deleteExpando == null) {\n\t\t// Support: IE<9\n\t\tsupport.deleteExpando = true;\n\t\ttry {\n\t\t\tdelete div.test;\n\t\t} catch( e ) {\n\t\t\tsupport.deleteExpando = false;\n\t\t}\n\t}\n})();\n\n\n(function() {\n\tvar i, eventName,\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Support: IE<9 (lack submit/change bubble), Firefox 23+ (lack focusin event)\n\tfor ( i in { submit: true, change: true, focusin: true }) {\n\t\teventName = \"on\" + i;\n\n\t\tif ( !(support[ i + \"Bubbles\" ] = eventName in window) ) {\n\t\t\t// Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP)\n\t\t\tdiv.setAttribute( eventName, \"t\" );\n\t\t\tsupport[ i + \"Bubbles\" ] = div.attributes[ eventName ].expando === false;\n\t\t}\n\t}\n\n\t// Null elements to avoid leaks in IE.\n\tdiv = null;\n})();\n\n\nvar rformElems = /^(?:input|select|textarea)$/i,\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu)|click/,\n\trfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)$/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\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\t\tvar tmp, events, t, handleObjIn,\n\t\t\tspecial, eventHandle, handleObj,\n\t\t\thandlers, type, namespaces, origType,\n\t\t\telemData = jQuery._data( elem );\n\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\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// 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 = {};\n\t\t}\n\t\tif ( !(eventHandle = elemData.handle) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\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 !== strundefined && (!e || jQuery.event.triggered !== e.type) ?\n\t\t\t\t\tjQuery.event.dispatch.apply( eventHandle.elem, arguments ) :\n\t\t\t\t\tundefined;\n\t\t\t};\n\t\t\t// Add elem as a property of the handle fn to prevent a memory leak with IE non-native events\n\t\t\teventHandle.elem = elem;\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\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/attachEvent if the special events handler returns false\n\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n\n\t\t\t\t\t} else if ( elem.attachEvent ) {\n\t\t\t\t\t\telem.attachEvent( \"on\" + 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\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\t\tvar j, handleObj, tmp,\n\t\t\torigCount, t, events,\n\t\t\tspecial, handlers, type,\n\t\t\tnamespaces, origType,\n\t\t\telemData = jQuery.hasData( elem ) && jQuery._data( 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( rnotwhite ) || [ \"\" ];\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] && new 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 || selector === \"**\" && 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 || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {\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 the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdelete elemData.handle;\n\n\t\t\t// removeData also checks for emptiness and clears the expando if empty\n\t\t\t// so use it instead of delete\n\t\t\tjQuery._removeData( elem, \"events\" );\n\t\t}\n\t},\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\t\tvar handle, ontype, cur,\n\t\t\tbubbleType, special, tmp, i,\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 = 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(\".\") >= 0 ) {\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.namespace_re = 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 && !jQuery.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\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 = ( jQuery._data( cur, \"events\" ) || {} )[ event.type ] && jQuery._data( 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 && jQuery.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 || special._default.apply( eventPath.pop(), data ) === false) &&\n\t\t\t\tjQuery.acceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name name as the event.\n\t\t\t\t// Can't use an .isFunction() check here because IE6/7 fails that test.\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 && elem[ type ] && !jQuery.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\t\t\t\t\ttry {\n\t\t\t\t\t\telem[ type ]();\n\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t// IE<9 dies on focus/blur to hidden element (#1486,#12518)\n\t\t\t\t\t\t// only reproducible on winXP IE8 native, not IE9 in IE8 mode\n\t\t\t\t\t}\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\tdispatch: function( event ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tevent = jQuery.event.fix( event );\n\n\t\tvar i, ret, handleObj, matched, j,\n\t\t\thandlerQueue = [],\n\t\t\targs = slice.call( arguments ),\n\t\t\thandlers = ( jQuery._data( this, \"events\" ) || {} )[ 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\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++ ]) && !event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// Triggered event must either 1) have no namespace, or\n\t\t\t\t// 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( !event.namespace_re || event.namespace_re.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 || handleObj.handler )\n\t\t\t\t\t\t\t.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 sel, handleObj, matches, i,\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\t// Black-hole SVG <use> instance trees (#13180)\n\t\t// Avoid non-left-click bubbling in Firefox (#3861)\n\t\tif ( delegateCount && cur.nodeType && (!event.button || event.type !== \"click\") ) {\n\n\t\t\t/* jshint eqeqeq: false */\n\t\t\tfor ( ; cur != this; cur = cur.parentNode || this ) {\n\t\t\t\t/* jshint eqeqeq: true */\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 && (cur.disabled !== true || event.type !== \"click\") ) {\n\t\t\t\t\tmatches = [];\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 ( matches[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatches[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) >= 0 :\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 ( matches[ sel ] ) {\n\t\t\t\t\t\t\tmatches.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matches.length ) {\n\t\t\t\t\t\thandlerQueue.push({ elem: cur, handlers: matches });\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\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// Create a writable copy of the event object and normalize some properties\n\t\tvar i, prop, copy,\n\t\t\ttype = event.type,\n\t\t\toriginalEvent = event,\n\t\t\tfixHook = this.fixHooks[ type ];\n\n\t\tif ( !fixHook ) {\n\t\t\tthis.fixHooks[ type ] = fixHook =\n\t\t\t\trmouseEvent.test( type ) ? this.mouseHooks :\n\t\t\t\trkeyEvent.test( type ) ? this.keyHooks :\n\t\t\t\t{};\n\t\t}\n\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\n\n\t\tevent = new jQuery.Event( originalEvent );\n\n\t\ti = copy.length;\n\t\twhile ( i-- ) {\n\t\t\tprop = copy[ i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// Fix target property (#1925)\n\t\tif ( !event.target ) {\n\t\t\tevent.target = originalEvent.srcElement || document;\n\t\t}\n\n\t\t// Support: Chrome 23+, Safari?\n\t\t// Target should not be a text node (#504, #13143)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// For mouse/key events, metaKey==false if it's undefined (#3368, #11328)\n\t\tevent.metaKey = !!event.metaKey;\n\n\t\treturn fixHook.filter ? fixHook.filter( event, originalEvent ) : event;\n\t},\n\n\t// Includes some event props shared by KeyEvent and MouseEvent\n\tprops: \"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which\".split(\" \"),\n\n\tfixHooks: {},\n\n\tkeyHooks: {\n\t\tprops: \"char charCode key keyCode\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\n\t\t\t// Add which for key events\n\t\t\tif ( event.which == null ) {\n\t\t\t\tevent.which = original.charCode != null ? original.charCode : original.keyCode;\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tmouseHooks: {\n\t\tprops: \"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\t\t\tvar body, eventDoc, doc,\n\t\t\t\tbutton = original.button,\n\t\t\t\tfromElement = original.fromElement;\n\n\t\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\t\tif ( event.pageX == null && original.clientX != null ) {\n\t\t\t\teventDoc = event.target.ownerDocument || document;\n\t\t\t\tdoc = eventDoc.documentElement;\n\t\t\t\tbody = eventDoc.body;\n\n\t\t\t\tevent.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );\n\t\t\t\tevent.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 );\n\t\t\t}\n\n\t\t\t// Add relatedTarget, if necessary\n\t\t\tif ( !event.relatedTarget && fromElement ) {\n\t\t\t\tevent.relatedTarget = fromElement === event.target ? original.toElement : fromElement;\n\t\t\t}\n\n\t\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t\t// Note: button is not normalized, so don't use it\n\t\t\tif ( !event.which && button !== undefined ) {\n\t\t\t\tevent.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tspecial: {\n\t\tload: {\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tfocus: {\n\t\t\t// Fire native event if possible so blur/focus sequence is correct\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this !== safeActiveElement() && this.focus ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tthis.focus();\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t// Support: IE<9\n\t\t\t\t\t\t// If we error on focus to hidden element (#1486, #12518),\n\t\t\t\t\t\t// let .trigger() run the handlers\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this === safeActiveElement() && this.blur ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\t\tclick: {\n\t\t\t// For checkbox, fire native event so checked state will be right\n\t\t\ttrigger: function() {\n\t\t\t\tif ( jQuery.nodeName( this, \"input\" ) && this.type === \"checkbox\" && this.click ) {\n\t\t\t\t\tthis.click();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, don't fire native .click() on links\n\t\t\t_default: function( event ) {\n\t\t\t\treturn jQuery.nodeName( event.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\tsimulate: function( type, elem, event, bubble ) {\n\t\t// Piggyback on a donor event to simulate a different one.\n\t\t// Fake originalEvent to avoid donor's stopPropagation, but if the\n\t\t// simulated event prevents default then we do the same on the donor.\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\toriginalEvent: {}\n\t\t\t}\n\t\t);\n\t\tif ( bubble ) {\n\t\t\tjQuery.event.trigger( e, null, elem );\n\t\t} else {\n\t\t\tjQuery.event.dispatch.call( elem, e );\n\t\t}\n\t\tif ( e.isDefaultPrevented() ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n};\n\njQuery.removeEvent = document.removeEventListener ?\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.removeEventListener ) {\n\t\t\telem.removeEventListener( type, handle, false );\n\t\t}\n\t} :\n\tfunction( elem, type, handle ) {\n\t\tvar name = \"on\" + type;\n\n\t\tif ( elem.detachEvent ) {\n\n\t\t\t// #8545, #7054, preventing memory leaks for custom events in IE6-8\n\t\t\t// detachEvent needed property on element, by name of that event, to properly expose it to GC\n\t\t\tif ( typeof elem[ name ] === strundefined ) {\n\t\t\t\telem[ name ] = null;\n\t\t\t}\n\n\t\t\telem.detachEvent( name, handle );\n\t\t}\n\t};\n\njQuery.Event = function( src, props ) {\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\t\t\t\t// Support: IE < 9, Android < 4.0\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\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 || jQuery.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// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If preventDefault exists, run it on the original event\n\t\tif ( e.preventDefault ) {\n\t\t\te.preventDefault();\n\n\t\t// Support: IE\n\t\t// Otherwise set the returnValue property of the original event to false\n\t\t} else {\n\t\t\te.returnValue = false;\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\t\t// If stopPropagation exists, run it on the original event\n\t\tif ( e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\n\t\t// Support: IE\n\t\t// Set the cancelBubble property of the original event to true\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && e.stopImmediatePropagation ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\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 mousenter/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\n// IE submit delegation\nif ( !support.submitBubbles ) {\n\n\tjQuery.event.special.submit = {\n\t\tsetup: function() {\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Lazy-add a submit handler when a descendant form may potentially be submitted\n\t\t\tjQuery.event.add( this, \"click._submit keypress._submit\", function( e ) {\n\t\t\t\t// Node name check avoids a VML-related crash in IE (#9807)\n\t\t\t\tvar elem = e.target,\n\t\t\t\t\tform = jQuery.nodeName( elem, \"input\" ) || jQuery.nodeName( elem, \"button\" ) ? elem.form : undefined;\n\t\t\t\tif ( form && !jQuery._data( form, \"submitBubbles\" ) ) {\n\t\t\t\t\tjQuery.event.add( form, \"submit._submit\", function( event ) {\n\t\t\t\t\t\tevent._submit_bubble = true;\n\t\t\t\t\t});\n\t\t\t\t\tjQuery._data( form, \"submitBubbles\", true );\n\t\t\t\t}\n\t\t\t});\n\t\t\t// return undefined since we don't need an event listener\n\t\t},\n\n\t\tpostDispatch: function( event ) {\n\t\t\t// If form was submitted by the user, bubble the event up the tree\n\t\t\tif ( event._submit_bubble ) {\n\t\t\t\tdelete event._submit_bubble;\n\t\t\t\tif ( this.parentNode && !event.isTrigger ) {\n\t\t\t\t\tjQuery.event.simulate( \"submit\", this.parentNode, event, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Remove delegated handlers; cleanData eventually reaps submit handlers attached above\n\t\t\tjQuery.event.remove( this, \"._submit\" );\n\t\t}\n\t};\n}\n\n// IE change delegation and checkbox/radio fix\nif ( !support.changeBubbles ) {\n\n\tjQuery.event.special.change = {\n\n\t\tsetup: function() {\n\n\t\t\tif ( rformElems.test( this.nodeName ) ) {\n\t\t\t\t// IE doesn't fire change on a check/radio until blur; trigger it on click\n\t\t\t\t// after a propertychange. Eat the blur-change in special.change.handle.\n\t\t\t\t// This still fires onchange a second time for check/radio after blur.\n\t\t\t\tif ( this.type === \"checkbox\" || this.type === \"radio\" ) {\n\t\t\t\t\tjQuery.event.add( this, \"propertychange._change\", function( event ) {\n\t\t\t\t\t\tif ( event.originalEvent.propertyName === \"checked\" ) {\n\t\t\t\t\t\t\tthis._just_changed = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tjQuery.event.add( this, \"click._change\", function( event ) {\n\t\t\t\t\t\tif ( this._just_changed && !event.isTrigger ) {\n\t\t\t\t\t\t\tthis._just_changed = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Allow triggered, simulated change events (#11500)\n\t\t\t\t\t\tjQuery.event.simulate( \"change\", this, event, true );\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// Delegated event; lazy-add a change handler on descendant inputs\n\t\t\tjQuery.event.add( this, \"beforeactivate._change\", function( e ) {\n\t\t\t\tvar elem = e.target;\n\n\t\t\t\tif ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, \"changeBubbles\" ) ) {\n\t\t\t\t\tjQuery.event.add( elem, \"change._change\", function( event ) {\n\t\t\t\t\t\tif ( this.parentNode && !event.isSimulated && !event.isTrigger ) {\n\t\t\t\t\t\t\tjQuery.event.simulate( \"change\", this.parentNode, event, true );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tjQuery._data( elem, \"changeBubbles\", true );\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\thandle: function( event ) {\n\t\t\tvar elem = event.target;\n\n\t\t\t// Swallow native change events from checkbox/radio, we already triggered them above\n\t\t\tif ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== \"radio\" && elem.type !== \"checkbox\") ) {\n\t\t\t\treturn event.handleObj.handler.apply( this, arguments );\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\t\t\tjQuery.event.remove( this, \"._change\" );\n\n\t\t\treturn !rformElems.test( this.nodeName );\n\t\t}\n\t};\n}\n\n// Create \"bubbling\" focus and blur events\nif ( !support.focusinBubbles ) {\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\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );\n\t\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = jQuery._data( 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\tjQuery._data( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = jQuery._data( 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\tjQuery._removeData( doc, fix );\n\t\t\t\t} else {\n\t\t\t\t\tjQuery._data( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t});\n}\n\njQuery.fn.extend({\n\n\ton: function( types, selector, data, fn, /*INTERNAL*/ one ) {\n\t\tvar type, origFn;\n\n\t\t// Types can be a map of types/handlers\n\t\tif ( typeof types === \"object\" ) {\n\t\t\t// ( types-Object, selector, data )\n\t\t\tif ( typeof selector !== \"string\" ) {\n\t\t\t\t// ( types-Object, data )\n\t\t\t\tdata = data || selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.on( type, selector, data, types[ type ], one );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( data == null && fn == null ) {\n\t\t\t// ( types, fn )\n\t\t\tfn = selector;\n\t\t\tdata = selector = undefined;\n\t\t} else if ( fn == null ) {\n\t\t\tif ( typeof selector === \"string\" ) {\n\t\t\t\t// ( types, selector, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = undefined;\n\t\t\t} else {\n\t\t\t\t// ( types, data, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t} else if ( !fn ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( one === 1 ) {\n\t\t\torigFn = fn;\n\t\t\tfn = function( event ) {\n\t\t\t\t// Can use an empty set, since event contains the info\n\t\t\t\tjQuery().off( event );\n\t\t\t\treturn origFn.apply( this, arguments );\n\t\t\t};\n\t\t\t// Use same guid so caller can remove using origFn\n\t\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.add( this, types, fn, data, selector );\n\t\t});\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn this.on( 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\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 ? handleObj.origType + \".\" + handleObj.namespace : handleObj.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\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\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\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\nfunction createSafeFragment( document ) {\n\tvar list = nodeNames.split( \"|\" ),\n\t\tsafeFrag = document.createDocumentFragment();\n\n\tif ( safeFrag.createElement ) {\n\t\twhile ( list.length ) {\n\t\t\tsafeFrag.createElement(\n\t\t\t\tlist.pop()\n\t\t\t);\n\t\t}\n\t}\n\treturn safeFrag;\n}\n\nvar nodeNames = \"abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|\" +\n\t\t\"header|hgroup|mark|meter|nav|output|progress|section|summary|time|video\",\n\trinlinejQuery = / jQuery\\d+=\"(?:null|\\d+)\"/g,\n\trnoshimcache = new RegExp(\"<(?:\" + nodeNames + \")[\\\\s/>]\", \"i\"),\n\trleadingWhitespace = /^\\s+/,\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/gi,\n\trtagName = /<([\\w:]+)/,\n\trtbody = /<tbody/i,\n\trhtml = /<|&#?\\w+;/,\n\trnoInnerhtml = /<(?:script|style|link)/i,\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trscriptType = /^$|\\/(?:java|ecma)script/i,\n\trscriptTypeMasked = /^true\\/(.*)/,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g,\n\n\t// We have to close these tags to support XHTML (#13200)\n\twrapMap = {\n\t\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\t\tlegend: [ 1, \"<fieldset>\", \"</fieldset>\" ],\n\t\tarea: [ 1, \"<map>\", \"</map>\" ],\n\t\tparam: [ 1, \"<object>\", \"</object>\" ],\n\t\tthead: [ 1, \"<table>\", \"</table>\" ],\n\t\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\t\tcol: [ 2, \"<table><tbody></tbody><colgroup>\", \"</colgroup></table>\" ],\n\t\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t\t// IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags,\n\t\t// unless wrapped in a div with non-breaking characters in front of it.\n\t\t_default: support.htmlSerialize ? [ 0, \"\", \"\" ] : [ 1, \"X<div>\", \"</div>\" ]\n\t},\n\tsafeFragment = createSafeFragment( document ),\n\tfragmentDiv = safeFragment.appendChild( document.createElement(\"div\") );\n\nwrapMap.optgroup = wrapMap.option;\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\nfunction getAll( context, tag ) {\n\tvar elems, elem,\n\t\ti = 0,\n\t\tfound = typeof context.getElementsByTagName !== strundefined ? context.getElementsByTagName( tag || \"*\" ) :\n\t\t\ttypeof context.querySelectorAll !== strundefined ? context.querySelectorAll( tag || \"*\" ) :\n\t\t\tundefined;\n\n\tif ( !found ) {\n\t\tfor ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( !tag || jQuery.nodeName( elem, tag ) ) {\n\t\t\t\tfound.push( elem );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( found, getAll( elem, tag ) );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn tag === undefined || tag && jQuery.nodeName( context, tag ) ?\n\t\tjQuery.merge( [ context ], found ) :\n\t\tfound;\n}\n\n// Used in buildFragment, fixes the defaultChecked property\nfunction fixDefaultChecked( elem ) {\n\tif ( rcheckableType.test( elem.type ) ) {\n\t\telem.defaultChecked = elem.checked;\n\t}\n}\n\n// Support: IE<8\n// Manipulating tables requires a tbody\nfunction manipulationTarget( elem, content ) {\n\treturn jQuery.nodeName( elem, \"table\" ) &&\n\t\tjQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ?\n\n\t\telem.getElementsByTagName(\"tbody\")[0] ||\n\t\t\telem.appendChild( elem.ownerDocument.createElement(\"tbody\") ) :\n\t\telem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = (jQuery.find.attr( elem, \"type\" ) !== null) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tvar match = rscriptTypeMasked.exec( elem.type );\n\tif ( match ) {\n\t\telem.type = match[1];\n\t} else {\n\t\telem.removeAttribute(\"type\");\n\t}\n\treturn elem;\n}\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar elem,\n\t\ti = 0;\n\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\t\tjQuery._data( elem, \"globalEval\", !refElements || jQuery._data( refElements[i], \"globalEval\" ) );\n\t}\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\n\tif ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {\n\t\treturn;\n\t}\n\n\tvar type, i, l,\n\t\toldData = jQuery._data( src ),\n\t\tcurData = jQuery._data( dest, oldData ),\n\t\tevents = oldData.events;\n\n\tif ( events ) {\n\t\tdelete curData.handle;\n\t\tcurData.events = {};\n\n\t\tfor ( type in events ) {\n\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t}\n\t\t}\n\t}\n\n\t// make the cloned public data object a copy from the original\n\tif ( curData.data ) {\n\t\tcurData.data = jQuery.extend( {}, curData.data );\n\t}\n}\n\nfunction fixCloneNodeIssues( src, dest ) {\n\tvar nodeName, e, data;\n\n\t// We do not need to do anything for non-Elements\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\tnodeName = dest.nodeName.toLowerCase();\n\n\t// IE6-8 copies events bound via attachEvent when using cloneNode.\n\tif ( !support.noCloneEvent && dest[ jQuery.expando ] ) {\n\t\tdata = jQuery._data( dest );\n\n\t\tfor ( e in data.events ) {\n\t\t\tjQuery.removeEvent( dest, e, data.handle );\n\t\t}\n\n\t\t// Event data gets referenced instead of copied if the expando gets copied too\n\t\tdest.removeAttribute( jQuery.expando );\n\t}\n\n\t// IE blanks contents when cloning scripts, and tries to evaluate newly-set text\n\tif ( nodeName === \"script\" && dest.text !== src.text ) {\n\t\tdisableScript( dest ).text = src.text;\n\t\trestoreScript( dest );\n\n\t// IE6-10 improperly clones children of object elements using classid.\n\t// IE10 throws NoModificationAllowedError if parent is null, #12132.\n\t} else if ( nodeName === \"object\" ) {\n\t\tif ( dest.parentNode ) {\n\t\t\tdest.outerHTML = src.outerHTML;\n\t\t}\n\n\t\t// This path appears unavoidable for IE9. When cloning an object\n\t\t// element in IE9, the outerHTML strategy above is not sufficient.\n\t\t// If the src has innerHTML and the destination does not,\n\t\t// copy the src.innerHTML into the dest.innerHTML. #10324\n\t\tif ( support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) {\n\t\t\tdest.innerHTML = src.innerHTML;\n\t\t}\n\n\t} else if ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\t// IE6-8 fails to persist the checked state of a cloned checkbox\n\t\t// or radio button. Worse, IE6-7 fail to give the cloned element\n\t\t// a checked appearance if the defaultChecked value isn't also set\n\n\t\tdest.defaultChecked = dest.checked = src.checked;\n\n\t\t// IE6-7 get confused and end up setting the value of a cloned\n\t\t// checkbox/radio button to an empty string instead of \"on\"\n\t\tif ( dest.value !== src.value ) {\n\t\t\tdest.value = src.value;\n\t\t}\n\n\t// IE6-8 fails to return the selected option to the default selected\n\t// state when cloning options\n\t} else if ( nodeName === \"option\" ) {\n\t\tdest.defaultSelected = dest.selected = src.defaultSelected;\n\n\t// IE6-8 fails to set the defaultValue to the correct value when\n\t// cloning other types of input fields\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\njQuery.extend({\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar destElements, node, clone, i, srcElements,\n\t\t\tinPage = jQuery.contains( elem.ownerDocument, elem );\n\n\t\tif ( support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( \"<\" + elem.nodeName + \">\" ) ) {\n\t\t\tclone = elem.cloneNode( true );\n\n\t\t// IE<=8 does not properly clone detached, unknown element nodes\n\t\t} else {\n\t\t\tfragmentDiv.innerHTML = elem.outerHTML;\n\t\t\tfragmentDiv.removeChild( clone = fragmentDiv.firstChild );\n\t\t}\n\n\t\tif ( (!support.noCloneEvent || !support.noCloneChecked) &&\n\t\t\t\t(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\t// Fix all IE cloning issues\n\t\t\tfor ( i = 0; (node = srcElements[i]) != null; ++i ) {\n\t\t\t\t// Ensure that the destination node is not null; Fixes #9587\n\t\t\t\tif ( destElements[i] ) {\n\t\t\t\t\tfixCloneNodeIssues( node, destElements[i] );\n\t\t\t\t}\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; (node = srcElements[i]) != null; i++ ) {\n\t\t\t\t\tcloneCopyEvent( node, 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\tdestElements = srcElements = node = null;\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tbuildFragment: function( elems, context, scripts, selection ) {\n\t\tvar j, elem, contains,\n\t\t\ttmp, tag, tbody, wrap,\n\t\t\tl = elems.length,\n\n\t\t\t// Ensure a safe fragment\n\t\t\tsafe = createSafeFragment( context ),\n\n\t\t\tnodes = [],\n\t\t\ti = 0;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\telem = elems[ i ];\n\n\t\t\tif ( elem || elem === 0 ) {\n\n\t\t\t\t// Add nodes directly\n\t\t\t\tif ( jQuery.type( elem ) === \"object\" ) {\n\t\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t\t// Convert non-html into a text node\n\t\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t\t// Convert html into DOM nodes\n\t\t\t\t} else {\n\t\t\t\t\ttmp = tmp || safe.appendChild( context.createElement(\"div\") );\n\n\t\t\t\t\t// Deserialize a standard representation\n\t\t\t\t\ttag = (rtagName.exec( elem ) || [ \"\", \"\" ])[ 1 ].toLowerCase();\n\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\n\t\t\t\t\ttmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, \"<$1></$2>\" ) + wrap[2];\n\n\t\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\t\tj = wrap[0];\n\t\t\t\t\twhile ( j-- ) {\n\t\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Manually add leading whitespace removed by IE\n\t\t\t\t\tif ( !support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {\n\t\t\t\t\t\tnodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remove IE's autoinserted <tbody> from table fragments\n\t\t\t\t\tif ( !support.tbody ) {\n\n\t\t\t\t\t\t// String was a <table>, *may* have spurious <tbody>\n\t\t\t\t\t\telem = tag === \"table\" && !rtbody.test( elem ) ?\n\t\t\t\t\t\t\ttmp.firstChild :\n\n\t\t\t\t\t\t\t// String was a bare <thead> or <tfoot>\n\t\t\t\t\t\t\twrap[1] === \"<table>\" && !rtbody.test( elem ) ?\n\t\t\t\t\t\t\t\ttmp :\n\t\t\t\t\t\t\t\t0;\n\n\t\t\t\t\t\tj = elem && elem.childNodes.length;\n\t\t\t\t\t\twhile ( j-- ) {\n\t\t\t\t\t\t\tif ( jQuery.nodeName( (tbody = elem.childNodes[j]), \"tbody\" ) && !tbody.childNodes.length ) {\n\t\t\t\t\t\t\t\telem.removeChild( tbody );\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\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t\t// Fix #12392 for WebKit and IE > 9\n\t\t\t\t\ttmp.textContent = \"\";\n\n\t\t\t\t\t// Fix #12392 for oldIE\n\t\t\t\t\twhile ( tmp.firstChild ) {\n\t\t\t\t\t\ttmp.removeChild( tmp.firstChild );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remember the top-level container for proper cleanup\n\t\t\t\t\ttmp = safe.lastChild;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Fix #11356: Clear elements from fragment\n\t\tif ( tmp ) {\n\t\t\tsafe.removeChild( tmp );\n\t\t}\n\n\t\t// Reset defaultChecked for any radios and checkboxes\n\t\t// about to be appended to the DOM in IE 6/7 (#8060)\n\t\tif ( !support.appendChecked ) {\n\t\t\tjQuery.grep( getAll( nodes, \"input\" ), fixDefaultChecked );\n\t\t}\n\n\t\ti = 0;\n\t\twhile ( (elem = nodes[ i++ ]) ) {\n\n\t\t\t// #4087 - If origin and destination elements are the same, and this is\n\t\t\t// that element, do not do anything\n\t\t\tif ( selection && jQuery.inArray( elem, selection ) !== -1 ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tcontains = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t\t// Append to fragment\n\t\t\ttmp = getAll( safe.appendChild( elem ), \"script\" );\n\n\t\t\t// Preserve script evaluation history\n\t\t\tif ( contains ) {\n\t\t\t\tsetGlobalEval( tmp );\n\t\t\t}\n\n\t\t\t// Capture executables\n\t\t\tif ( scripts ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (elem = tmp[ j++ ]) ) {\n\t\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\t\tscripts.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ttmp = null;\n\n\t\treturn safe;\n\t},\n\n\tcleanData: function( elems, /* internal */ acceptData ) {\n\t\tvar elem, type, id, data,\n\t\t\ti = 0,\n\t\t\tinternalKey = jQuery.expando,\n\t\t\tcache = jQuery.cache,\n\t\t\tdeleteExpando = support.deleteExpando,\n\t\t\tspecial = jQuery.event.special;\n\n\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( acceptData || jQuery.acceptData( elem ) ) {\n\n\t\t\t\tid = elem[ internalKey ];\n\t\t\t\tdata = id && cache[ id ];\n\n\t\t\t\tif ( data ) {\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// Remove cache only if it was not already removed by jQuery.event.remove\n\t\t\t\t\tif ( cache[ id ] ) {\n\n\t\t\t\t\t\tdelete cache[ id ];\n\n\t\t\t\t\t\t// IE does not allow us to delete expando properties from nodes,\n\t\t\t\t\t\t// nor does it have a removeAttribute function on Document nodes;\n\t\t\t\t\t\t// we must handle all of these cases\n\t\t\t\t\t\tif ( deleteExpando ) {\n\t\t\t\t\t\t\tdelete elem[ internalKey ];\n\n\t\t\t\t\t\t} else if ( typeof elem.removeAttribute !== strundefined ) {\n\t\t\t\t\t\t\telem.removeAttribute( internalKey );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\telem[ internalKey ] = null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdeletedIds.push( id );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n});\n\njQuery.fn.extend({\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().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip( 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 this.domManip( 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 this.domManip( 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 this.domManip( 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\tremove: function( selector, keepData /* Internal Use Only */ ) {\n\t\tvar elem,\n\t\t\telems = selector ? jQuery.filter( selector, this ) : this,\n\t\t\ti = 0;\n\n\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\n\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( getAll( elem ) );\n\t\t\t}\n\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\tif ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\t\t\t\tsetGlobalEval( getAll( elem, \"script\" ) );\n\t\t\t\t}\n\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\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\t// Remove element nodes and prevent memory leaks\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t}\n\n\t\t\t// Remove any remaining nodes\n\t\t\twhile ( elem.firstChild ) {\n\t\t\t\telem.removeChild( elem.firstChild );\n\t\t\t}\n\n\t\t\t// If this is a select, ensure that it displays empty (#12336)\n\t\t\t// Support: IE<9\n\t\t\tif ( elem.options && jQuery.nodeName( elem, \"select\" ) ) {\n\t\t\t\telem.options.length = 0;\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 ) {\n\t\t\t\treturn elem.nodeType === 1 ?\n\t\t\t\t\telem.innerHTML.replace( rinlinejQuery, \"\" ) :\n\t\t\t\t\tundefined;\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( support.htmlSerialize || !rnoshimcache.test( value ) ) &&\n\t\t\t\t( support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&\n\t\t\t\t!wrapMap[ (rtagName.exec( value ) || [ \"\", \"\" ])[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = value.replace( rxhtmlTag, \"<$1></$2>\" );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor (; i < l; i++ ) {\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\telem = this[i] || {};\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 arg = arguments[ 0 ];\n\n\t\t// Make the changes, replacing each context element with the new content\n\t\tthis.domManip( arguments, function( elem ) {\n\t\t\targ = this.parentNode;\n\n\t\t\tjQuery.cleanData( getAll( this ) );\n\n\t\t\tif ( arg ) {\n\t\t\t\targ.replaceChild( elem, this );\n\t\t\t}\n\t\t});\n\n\t\t// Force removal if there was no new content (e.g., from empty arguments)\n\t\treturn arg && (arg.length || arg.nodeType) ? this : this.remove();\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, callback ) {\n\n\t\t// Flatten any nested arrays\n\t\targs = concat.apply( [], args );\n\n\t\tvar first, node, hasScripts,\n\t\t\tscripts, doc, fragment,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tset = this,\n\t\t\tiNoClone = l - 1,\n\t\t\tvalue = args[0],\n\t\t\tisFunction = jQuery.isFunction( value );\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( isFunction ||\n\t\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\t\treturn this.each(function( index ) {\n\t\t\t\tvar self = set.eq( index );\n\t\t\t\tif ( isFunction ) {\n\t\t\t\t\targs[0] = value.call( this, index, self.html() );\n\t\t\t\t}\n\t\t\t\tself.domManip( args, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( l ) {\n\t\t\tfragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this );\n\t\t\tfirst = fragment.firstChild;\n\n\t\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\t\tfragment = first;\n\t\t\t}\n\n\t\t\tif ( first ) {\n\t\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\t\thasScripts = scripts.length;\n\n\t\t\t\t// Use the original fragment for the last item instead of the first because it can end up\n\t\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\tnode = fragment;\n\n\t\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\t\tif ( hasScripts ) {\n\t\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcallback.call( this[i], node, i );\n\t\t\t\t}\n\n\t\t\t\tif ( hasScripts ) {\n\t\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t\t// Reenable scripts\n\t\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t\t!jQuery._data( node, \"globalEval\" ) && jQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\t\tif ( node.src ) {\n\t\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\t\tif ( jQuery._evalUrl ) {\n\t\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\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\tjQuery.globalEval( ( node.text || node.textContent || node.innerHTML || \"\" ).replace( rcleanScript, \"\" ) );\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// Fix #11809: Avoid leaking memory\n\t\t\t\tfragment = first = null;\n\t\t\t}\n\t\t}\n\n\t\treturn this;\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\ti = 0,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1;\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// Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get()\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n});\n\n\nvar iframe,\n\telemdisplay = {};\n\n/**\n * Retrieve the actual display of a element\n * @param {String} name nodeName of the element\n * @param {Object} doc Document object\n */\n// Called only from within defaultDisplay\nfunction actualDisplay( name, doc ) {\n\tvar style,\n\t\telem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),\n\n\t\t// getDefaultComputedStyle might be reliably used only on attached element\n\t\tdisplay = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ?\n\n\t\t\t// Use of this method is a temporary fix (more like optmization) until something better comes along,\n\t\t\t// since it was removed from specification and supported only in FF\n\t\t\tstyle.display : jQuery.css( elem[ 0 ], \"display\" );\n\n\t// We don't have any data stored on the element,\n\t// so use \"detach\" method as fast way to get rid of the element\n\telem.detach();\n\n\treturn display;\n}\n\n/**\n * Try to determine the default display value of an element\n * @param {String} nodeName\n */\nfunction defaultDisplay( nodeName ) {\n\tvar doc = document,\n\t\tdisplay = elemdisplay[ nodeName ];\n\n\tif ( !display ) {\n\t\tdisplay = actualDisplay( nodeName, doc );\n\n\t\t// If the simple way fails, read from inside an iframe\n\t\tif ( display === \"none\" || !display ) {\n\n\t\t\t// Use the already-created iframe if possible\n\t\t\tiframe = (iframe || jQuery( \"<iframe frameborder='0' width='0' height='0'/>\" )).appendTo( doc.documentElement );\n\n\t\t\t// Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse\n\t\t\tdoc = ( iframe[ 0 ].contentWindow || iframe[ 0 ].contentDocument ).document;\n\n\t\t\t// Support: IE\n\t\t\tdoc.write();\n\t\t\tdoc.close();\n\n\t\t\tdisplay = actualDisplay( nodeName, doc );\n\t\t\tiframe.detach();\n\t\t}\n\n\t\t// Store the correct default display\n\t\telemdisplay[ nodeName ] = display;\n\t}\n\n\treturn display;\n}\n\n\n(function() {\n\tvar shrinkWrapBlocksVal;\n\n\tsupport.shrinkWrapBlocks = function() {\n\t\tif ( shrinkWrapBlocksVal != null ) {\n\t\t\treturn shrinkWrapBlocksVal;\n\t\t}\n\n\t\t// Will be changed later if needed.\n\t\tshrinkWrapBlocksVal = false;\n\n\t\t// Minified: var b,c,d\n\t\tvar div, body, container;\n\n\t\tbody = document.getElementsByTagName( \"body\" )[ 0 ];\n\t\tif ( !body || !body.style ) {\n\t\t\t// Test fired too early or in an unsupported environment, exit.\n\t\t\treturn;\n\t\t}\n\n\t\t// Setup\n\t\tdiv = document.createElement( \"div\" );\n\t\tcontainer = document.createElement( \"div\" );\n\t\tcontainer.style.cssText = \"position:absolute;border:0;width:0;height:0;top:0;left:-9999px\";\n\t\tbody.appendChild( container ).appendChild( div );\n\n\t\t// Support: IE6\n\t\t// Check if elements with layout shrink-wrap their children\n\t\tif ( typeof div.style.zoom !== strundefined ) {\n\t\t\t// Reset CSS: box-sizing; display; margin; border\n\t\t\tdiv.style.cssText =\n\t\t\t\t// Support: Firefox<29, Android 2.3\n\t\t\t\t// Vendor-prefix box-sizing\n\t\t\t\t\"-webkit-box-sizing:content-box;-moz-box-sizing:content-box;\" +\n\t\t\t\t\"box-sizing:content-box;display:block;margin:0;border:0;\" +\n\t\t\t\t\"padding:1px;width:1px;zoom:1\";\n\t\t\tdiv.appendChild( document.createElement( \"div\" ) ).style.width = \"5px\";\n\t\t\tshrinkWrapBlocksVal = div.offsetWidth !== 3;\n\t\t}\n\n\t\tbody.removeChild( container );\n\n\t\treturn shrinkWrapBlocksVal;\n\t};\n\n})();\nvar rmargin = (/^margin/);\n\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\n\n\nvar getStyles, curCSS,\n\trposition = /^(top|right|bottom|left)$/;\n\nif ( window.getComputedStyle ) {\n\tgetStyles = function( elem ) {\n\t\t// Support: IE<=11+, 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\tif ( elem.ownerDocument.defaultView.opener ) {\n\t\t\treturn elem.ownerDocument.defaultView.getComputedStyle( elem, null );\n\t\t}\n\n\t\treturn window.getComputedStyle( elem, null );\n\t};\n\n\tcurCSS = function( elem, name, computed ) {\n\t\tvar width, minWidth, maxWidth, ret,\n\t\t\tstyle = elem.style;\n\n\t\tcomputed = computed || getStyles( elem );\n\n\t\t// getPropertyValue is only needed for .css('filter') in IE9, see #12537\n\t\tret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined;\n\n\t\tif ( computed ) {\n\n\t\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\t\t\tret = jQuery.style( elem, name );\n\t\t\t}\n\n\t\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t\t// Chrome < 17 and Safari 5.0 uses \"computed value\" instead of \"used value\" for margin-right\n\t\t\t// Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels\n\t\t\t// this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values\n\t\t\tif ( rnumnonpx.test( ret ) && rmargin.test( name ) ) {\n\n\t\t\t\t// Remember the original values\n\t\t\t\twidth = style.width;\n\t\t\t\tminWidth = style.minWidth;\n\t\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t\t// Put in the new values to get a computed value out\n\t\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\t\tret = computed.width;\n\n\t\t\t\t// Revert the changed values\n\t\t\t\tstyle.width = width;\n\t\t\t\tstyle.minWidth = minWidth;\n\t\t\t\tstyle.maxWidth = maxWidth;\n\t\t\t}\n\t\t}\n\n\t\t// Support: IE\n\t\t// IE returns zIndex value as an integer.\n\t\treturn ret === undefined ?\n\t\t\tret :\n\t\t\tret + \"\";\n\t};\n} else if ( document.documentElement.currentStyle ) {\n\tgetStyles = function( elem ) {\n\t\treturn elem.currentStyle;\n\t};\n\n\tcurCSS = function( elem, name, computed ) {\n\t\tvar left, rs, rsLeft, ret,\n\t\t\tstyle = elem.style;\n\n\t\tcomputed = computed || getStyles( elem );\n\t\tret = computed ? computed[ name ] : undefined;\n\n\t\t// Avoid setting ret to empty string here\n\t\t// so we don't default to auto\n\t\tif ( ret == null && style && style[ name ] ) {\n\t\t\tret = style[ name ];\n\t\t}\n\n\t\t// From the awesome hack by Dean Edwards\n\t\t// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n\n\t\t// If we're not dealing with a regular pixel number\n\t\t// but a number that has a weird ending, we need to convert it to pixels\n\t\t// but not position css attributes, as those are proportional to the parent element instead\n\t\t// and we can't measure the parent instead because it might trigger a \"stacking dolls\" problem\n\t\tif ( rnumnonpx.test( ret ) && !rposition.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\tleft = style.left;\n\t\t\trs = elem.runtimeStyle;\n\t\t\trsLeft = rs && rs.left;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tif ( rsLeft ) {\n\t\t\t\trs.left = elem.currentStyle.left;\n\t\t\t}\n\t\t\tstyle.left = name === \"fontSize\" ? \"1em\" : ret;\n\t\t\tret = style.pixelLeft + \"px\";\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.left = left;\n\t\t\tif ( rsLeft ) {\n\t\t\t\trs.left = rsLeft;\n\t\t\t}\n\t\t}\n\n\t\t// Support: IE\n\t\t// IE returns zIndex value as an integer.\n\t\treturn ret === undefined ?\n\t\t\tret :\n\t\t\tret + \"\" || \"auto\";\n\t};\n}\n\n\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\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\tvar condition = conditionFn();\n\n\t\t\tif ( condition == null ) {\n\t\t\t\t// The test was not ready at this point; screw the hook this time\n\t\t\t\t// but check again when needed next time.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( condition ) {\n\t\t\t\t// Hook not needed (or it's not possible to use it due to missing dependency),\n\t\t\t\t// remove it.\n\t\t\t\t// Since there are no other hooks for marginRight, remove the whole object.\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\n\t\t\treturn (this.get = hookFn).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\n(function() {\n\t// Minified: var b,c,d,e,f,g, h,i\n\tvar div, style, a, pixelPositionVal, boxSizingReliableVal,\n\t\treliableHiddenOffsetsVal, reliableMarginRightVal;\n\n\t// Setup\n\tdiv = document.createElement( \"div\" );\n\tdiv.innerHTML = \" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>\";\n\ta = div.getElementsByTagName( \"a\" )[ 0 ];\n\tstyle = a && a.style;\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !style ) {\n\t\treturn;\n\t}\n\n\tstyle.cssText = \"float:left;opacity:.5\";\n\n\t// Support: IE<9\n\t// Make sure that element opacity exists (as opposed to filter)\n\tsupport.opacity = style.opacity === \"0.5\";\n\n\t// Verify style float existence\n\t// (IE uses styleFloat instead of cssFloat)\n\tsupport.cssFloat = !!style.cssFloat;\n\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\t// Support: Firefox<29, Android 2.3\n\t// Vendor-prefix box-sizing\n\tsupport.boxSizing = style.boxSizing === \"\" || style.MozBoxSizing === \"\" ||\n\t\tstyle.WebkitBoxSizing === \"\";\n\n\tjQuery.extend(support, {\n\t\treliableHiddenOffsets: function() {\n\t\t\tif ( reliableHiddenOffsetsVal == null ) {\n\t\t\t\tcomputeStyleTests();\n\t\t\t}\n\t\t\treturn reliableHiddenOffsetsVal;\n\t\t},\n\n\t\tboxSizingReliable: function() {\n\t\t\tif ( boxSizingReliableVal == null ) {\n\t\t\t\tcomputeStyleTests();\n\t\t\t}\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\n\t\tpixelPosition: function() {\n\t\t\tif ( pixelPositionVal == null ) {\n\t\t\t\tcomputeStyleTests();\n\t\t\t}\n\t\t\treturn pixelPositionVal;\n\t\t},\n\n\t\t// Support: Android 2.3\n\t\treliableMarginRight: function() {\n\t\t\tif ( reliableMarginRightVal == null ) {\n\t\t\t\tcomputeStyleTests();\n\t\t\t}\n\t\t\treturn reliableMarginRightVal;\n\t\t}\n\t});\n\n\tfunction computeStyleTests() {\n\t\t// Minified: var b,c,d,j\n\t\tvar div, body, container, contents;\n\n\t\tbody = document.getElementsByTagName( \"body\" )[ 0 ];\n\t\tif ( !body || !body.style ) {\n\t\t\t// Test fired too early or in an unsupported environment, exit.\n\t\t\treturn;\n\t\t}\n\n\t\t// Setup\n\t\tdiv = document.createElement( \"div\" );\n\t\tcontainer = document.createElement( \"div\" );\n\t\tcontainer.style.cssText = \"position:absolute;border:0;width:0;height:0;top:0;left:-9999px\";\n\t\tbody.appendChild( container ).appendChild( div );\n\n\t\tdiv.style.cssText =\n\t\t\t// Support: Firefox<29, Android 2.3\n\t\t\t// Vendor-prefix box-sizing\n\t\t\t\"-webkit-box-sizing:border-box;-moz-box-sizing:border-box;\" +\n\t\t\t\"box-sizing:border-box;display:block;margin-top:1%;top:1%;\" +\n\t\t\t\"border:1px;padding:1px;width:4px;position:absolute\";\n\n\t\t// Support: IE<9\n\t\t// Assume reasonable values in the absence of getComputedStyle\n\t\tpixelPositionVal = boxSizingReliableVal = false;\n\t\treliableMarginRightVal = true;\n\n\t\t// Check for getComputedStyle so that this code is not run in IE<9.\n\t\tif ( window.getComputedStyle ) {\n\t\t\tpixelPositionVal = ( window.getComputedStyle( div, null ) || {} ).top !== \"1%\";\n\t\t\tboxSizingReliableVal =\n\t\t\t\t( window.getComputedStyle( div, null ) || { width: \"4px\" } ).width === \"4px\";\n\n\t\t\t// Support: Android 2.3\n\t\t\t// Div with explicit width and no margin-right incorrectly\n\t\t\t// gets computed margin-right based on width of container (#3333)\n\t\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\t\tcontents = div.appendChild( document.createElement( \"div\" ) );\n\n\t\t\t// Reset CSS: box-sizing; display; margin; border; padding\n\t\t\tcontents.style.cssText = div.style.cssText =\n\t\t\t\t// Support: Firefox<29, Android 2.3\n\t\t\t\t// Vendor-prefix box-sizing\n\t\t\t\t\"-webkit-box-sizing:content-box;-moz-box-sizing:content-box;\" +\n\t\t\t\t\"box-sizing:content-box;display:block;margin:0;border:0;padding:0\";\n\t\t\tcontents.style.marginRight = contents.style.width = \"0\";\n\t\t\tdiv.style.width = \"1px\";\n\n\t\t\treliableMarginRightVal =\n\t\t\t\t!parseFloat( ( window.getComputedStyle( contents, null ) || {} ).marginRight );\n\n\t\t\tdiv.removeChild( contents );\n\t\t}\n\n\t\t// Support: IE8\n\t\t// Check if table cells still have offsetWidth/Height when they are set\n\t\t// to display:none and there are still other visible table cells in a\n\t\t// table row; if so, offsetWidth/Height are not reliable for use when\n\t\t// determining if an element has been hidden directly using\n\t\t// display:none (it is still safe to use offsets if a parent element is\n\t\t// hidden; don safety goggles and see bug #4512 for more information).\n\t\tdiv.innerHTML = \"<table><tr><td></td><td>t</td></tr></table>\";\n\t\tcontents = div.getElementsByTagName( \"td\" );\n\t\tcontents[ 0 ].style.cssText = \"margin:0;border:0;padding:0;display:none\";\n\t\treliableHiddenOffsetsVal = contents[ 0 ].offsetHeight === 0;\n\t\tif ( reliableHiddenOffsetsVal ) {\n\t\t\tcontents[ 0 ].style.display = \"\";\n\t\t\tcontents[ 1 ].style.display = \"none\";\n\t\t\treliableHiddenOffsetsVal = contents[ 0 ].offsetHeight === 0;\n\t\t}\n\n\t\tbody.removeChild( container );\n\t}\n\n})();\n\n\n// A method for quickly swapping in/out CSS properties to get correct calculations.\njQuery.swap = function( elem, options, callback, args ) {\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.apply( elem, args || [] );\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\n\t\tralpha = /alpha\\([^)]*\\)/i,\n\tropacity = /opacity\\s*=\\s*([^)]*)/,\n\n\t// swappable if display is none or starts with table 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\trnumsplit = new RegExp( \"^(\" + pnum + \")(.*)$\", \"i\" ),\n\trrelNum = new RegExp( \"^([+-])=(\" + pnum + \")\", \"i\" ),\n\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t},\n\n\tcssPrefixes = [ \"Webkit\", \"O\", \"Moz\", \"ms\" ];\n\n\n// return a css property mapped to a potentially vendor prefixed property\nfunction vendorPropName( style, name ) {\n\n\t// shortcut for names that are not vendor prefixed\n\tif ( name in style ) {\n\t\treturn name;\n\t}\n\n\t// check for vendor prefixed names\n\tvar capName = name.charAt(0).toUpperCase() + name.slice(1),\n\t\torigName = name,\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in style ) {\n\t\t\treturn name;\n\t\t}\n\t}\n\n\treturn origName;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem, hidden,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\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\tvalues[ index ] = jQuery._data( elem, \"olddisplay\" );\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\t\t\t// Reset the inline display of this element to learn if it is\n\t\t\t// being hidden by cascaded rules or not\n\t\t\tif ( !values[ index ] && display === \"none\" ) {\n\t\t\t\telem.style.display = \"\";\n\t\t\t}\n\n\t\t\t// Set elements which have been overridden with display: none\n\t\t\t// in a stylesheet to whatever the default browser style is\n\t\t\t// for such an element\n\t\t\tif ( elem.style.display === \"\" && isHidden( elem ) ) {\n\t\t\t\tvalues[ index ] = jQuery._data( elem, \"olddisplay\", defaultDisplay(elem.nodeName) );\n\t\t\t}\n\t\t} else {\n\t\t\thidden = isHidden( elem );\n\n\t\t\tif ( display && display !== \"none\" || !hidden ) {\n\t\t\t\tjQuery._data( elem, \"olddisplay\", hidden ? display : jQuery.css( elem, \"display\" ) );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of most of the elements in a second loop\n\t// to avoid the constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\t\tif ( !show || elem.style.display === \"none\" || elem.style.display === \"\" ) {\n\t\t\telem.style.display = show ? values[ index ] || \"\" : \"none\";\n\t\t}\n\t}\n\n\treturn elements;\n}\n\nfunction setPositiveNumber( elem, value, subtract ) {\n\tvar matches = rnumsplit.exec( value );\n\treturn matches ?\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {\n\tvar i = extra === ( isBorderBox ? \"border\" : \"content\" ) ?\n\t\t// If we already have the right measurement, avoid augmentation\n\t\t4 :\n\t\t// Otherwise initialize for horizontal or vertical properties\n\t\tname === \"width\" ? 1 : 0,\n\n\t\tval = 0;\n\n\tfor ( ; i < 4; i += 2 ) {\n\t\t// both box models exclude margin, so add it if we want it\n\t\tif ( extra === \"margin\" ) {\n\t\t\tval += jQuery.css( elem, extra + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\tif ( isBorderBox ) {\n\t\t\t// border-box includes padding, so remove it if we want content\n\t\t\tif ( extra === \"content\" ) {\n\t\t\t\tval -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// at this point, extra isn't border nor margin, so remove border\n\t\t\tif ( extra !== \"margin\" ) {\n\t\t\t\tval -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t} else {\n\t\t\t// at this point, extra isn't content, so add padding\n\t\t\tval += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// at this point, extra isn't content nor padding, so add border\n\t\t\tif ( extra !== \"padding\" ) {\n\t\t\t\tval += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn val;\n}\n\nfunction getWidthOrHeight( elem, name, extra ) {\n\n\t// Start with offset property, which is equivalent to the border-box value\n\tvar valueIsBorderBox = true,\n\t\tval = name === \"width\" ? elem.offsetWidth : elem.offsetHeight,\n\t\tstyles = getStyles( elem ),\n\t\tisBorderBox = support.boxSizing && jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t// some non-html elements return undefined for offsetWidth, so check for null/undefined\n\t// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285\n\t// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668\n\tif ( val <= 0 || val == null ) {\n\t\t// Fall back to computed then uncomputed css if necessary\n\t\tval = curCSS( elem, name, styles );\n\t\tif ( val < 0 || val == null ) {\n\t\t\tval = elem.style[ name ];\n\t\t}\n\n\t\t// Computed unit is not pixels. Stop here and return.\n\t\tif ( rnumnonpx.test(val) ) {\n\t\t\treturn val;\n\t\t}\n\n\t\t// we need the check for style in case a browser which returns unreliable values\n\t\t// for getComputedStyle silently falls back to the reliable elem.style\n\t\tvalueIsBorderBox = isBorderBox && ( support.boxSizingReliable() || val === elem.style[ name ] );\n\n\t\t// Normalize \"\", auto, and prepare for extra\n\t\tval = parseFloat( val ) || 0;\n\t}\n\n\t// use the active box-sizing model to add/subtract irrelevant styles\n\treturn ( val +\n\t\taugmentWidthOrHeight(\n\t\t\telem,\n\t\t\tname,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend({\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\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\"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\"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\t\t// normalize float css property\n\t\t\"float\": support.cssFloat ? \"cssFloat\" : \"styleFloat\"\n\t},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\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 = jQuery.camelCase( name ),\n\t\t\tstyle = elem.style;\n\n\t\tname = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );\n\n\t\t// gets hook for the prefixed version\n\t\t// followed by the 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 relative number strings (+= or -=) to relative numbers. #7345\n\t\t\tif ( type === \"string\" && (ret = rrelNum.exec( value )) ) {\n\t\t\t\tvalue = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );\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. See: #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 'px' to the (except for certain CSS properties)\n\t\t\tif ( type === \"number\" && !jQuery.cssNumber[ origName ] ) {\n\t\t\t\tvalue += \"px\";\n\t\t\t}\n\n\t\t\t// Fixes #8908, it can be done more correctly by specifing setters in cssHooks,\n\t\t\t// but it would mean to define eight (for every problematic property) identical functions\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) || (value = hooks.set( elem, value, extra )) !== undefined ) {\n\n\t\t\t\t// Support: IE\n\t\t\t\t// Swallow errors from 'invalid' CSS values (#5509)\n\t\t\t\ttry {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t} else {\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {\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 num, val, hooks,\n\t\t\torigName = jQuery.camelCase( name );\n\n\t\t// Make sure that we're working with the right name\n\t\tname = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );\n\n\t\t// gets hook for the prefixed version\n\t\t// followed by the unprefixed version\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// Return, converting to number 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 || jQuery.isNumeric( num ) ? num || 0 : val;\n\t\t}\n\t\treturn val;\n\t}\n});\n\njQuery.each([ \"height\", \"width\" ], function( i, name ) {\n\tjQuery.cssHooks[ name ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\t\t\t\t// certain elements can have dimension info if we invisibly show them\n\t\t\t\t// however, it must have a current display style that would benefit from this\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) && elem.offsetWidth === 0 ?\n\t\t\t\t\tjQuery.swap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, name, extra );\n\t\t\t\t\t}) :\n\t\t\t\t\tgetWidthOrHeight( elem, name, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar styles = extra && getStyles( elem );\n\t\t\treturn setPositiveNumber( elem, value, extra ?\n\t\t\t\taugmentWidthOrHeight(\n\t\t\t\t\telem,\n\t\t\t\t\tname,\n\t\t\t\t\textra,\n\t\t\t\t\tsupport.boxSizing && jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\t\tstyles\n\t\t\t\t) : 0\n\t\t\t);\n\t\t}\n\t};\n});\n\nif ( !support.opacity ) {\n\tjQuery.cssHooks.opacity = {\n\t\tget: function( elem, computed ) {\n\t\t\t// IE uses filters for opacity\n\t\t\treturn ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || \"\" ) ?\n\t\t\t\t( 0.01 * parseFloat( RegExp.$1 ) ) + \"\" :\n\t\t\t\tcomputed ? \"1\" : \"\";\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tvar style = elem.style,\n\t\t\t\tcurrentStyle = elem.currentStyle,\n\t\t\t\topacity = jQuery.isNumeric( value ) ? \"alpha(opacity=\" + value * 100 + \")\" : \"\",\n\t\t\t\tfilter = currentStyle && currentStyle.filter || style.filter || \"\";\n\n\t\t\t// IE has trouble with opacity if it does not have layout\n\t\t\t// Force it by setting the zoom level\n\t\t\tstyle.zoom = 1;\n\n\t\t\t// if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652\n\t\t\t// if value === \"\", then remove inline opacity #12685\n\t\t\tif ( ( value >= 1 || value === \"\" ) &&\n\t\t\t\t\tjQuery.trim( filter.replace( ralpha, \"\" ) ) === \"\" &&\n\t\t\t\t\tstyle.removeAttribute ) {\n\n\t\t\t\t// Setting style.filter to null, \"\" & \" \" still leave \"filter:\" in the cssText\n\t\t\t\t// if \"filter:\" is present at all, clearType is disabled, we want to avoid this\n\t\t\t\t// style.removeAttribute is IE Only, but so apparently is this code path...\n\t\t\t\tstyle.removeAttribute( \"filter\" );\n\n\t\t\t\t// if there is no filter style applied in a css rule or unset inline opacity, we are done\n\t\t\t\tif ( value === \"\" || currentStyle && !currentStyle.filter ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// otherwise, set new filter values\n\t\t\tstyle.filter = ralpha.test( filter ) ?\n\t\t\t\tfilter.replace( ralpha, opacity ) :\n\t\t\t\tfilter + \" \" + opacity;\n\t\t}\n\t};\n}\n\njQuery.cssHooks.marginRight = addGetHookIf( support.reliableMarginRight,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\t\t// Work around by temporarily setting element display to inline-block\n\t\t\treturn jQuery.swap( elem, { \"display\": \"inline-block\" },\n\t\t\t\tcurCSS, [ elem, \"marginRight\" ] );\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 ( !rmargin.test( prefix ) ) {\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 ( jQuery.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\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 ( isHidden( 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});\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 || \"swing\";\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\tif ( tween.elem[ tween.prop ] != null &&\n\t\t\t\t(!tween.elem.style || 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// so, 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\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\t\t\t// use step hook for back compat - use cssHook if its there - use .style if its\n\t\t\t// 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.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {\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\n// Panic based approach to setting things on disconnected nodes\n\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};\n\njQuery.fx = Tween.prototype.init;\n\n// Back Compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, timerId,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trfxnum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" ),\n\trrun = /queueHooks$/,\n\tanimationPrefilters = [ defaultPrefilter ],\n\ttweeners = {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value ),\n\t\t\t\ttarget = tween.cur(),\n\t\t\t\tparts = rfxnum.exec( value ),\n\t\t\t\tunit = parts && parts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t\t\t// Starting value computation is required for potential unit mismatches\n\t\t\t\tstart = ( jQuery.cssNumber[ prop ] || unit !== \"px\" && +target ) &&\n\t\t\t\t\trfxnum.exec( jQuery.css( tween.elem, prop ) ),\n\t\t\t\tscale = 1,\n\t\t\t\tmaxIterations = 20;\n\n\t\t\tif ( start && start[ 3 ] !== unit ) {\n\t\t\t\t// Trust units reported by jQuery.css\n\t\t\t\tunit = unit || start[ 3 ];\n\n\t\t\t\t// Make sure we update the tween properties later on\n\t\t\t\tparts = parts || [];\n\n\t\t\t\t// Iteratively approximate from a nonzero starting point\n\t\t\t\tstart = +target || 1;\n\n\t\t\t\tdo {\n\t\t\t\t\t// If previous iteration zeroed out, double until we get *something*\n\t\t\t\t\t// Use a string for doubling factor so we don't accidentally see scale as unchanged below\n\t\t\t\t\tscale = scale || \".5\";\n\n\t\t\t\t\t// Adjust and apply\n\t\t\t\t\tstart = start / scale;\n\t\t\t\t\tjQuery.style( tween.elem, prop, start + unit );\n\n\t\t\t\t// Update scale, tolerating zero or NaN from tween.cur()\n\t\t\t\t// And breaking the loop if scale is unchanged or perfect, or if we've just had enough\n\t\t\t\t} while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );\n\t\t\t}\n\n\t\t\t// Update tween properties\n\t\t\tif ( parts ) {\n\t\t\t\tstart = tween.start = +start || +target || 0;\n\t\t\t\ttween.unit = unit;\n\t\t\t\t// If a +=/-= token was provided, we're doing a relative animation\n\t\t\t\ttween.end = parts[ 1 ] ?\n\t\t\t\t\tstart + ( parts[ 1 ] + 1 ) * parts[ 2 ] :\n\t\t\t\t\t+parts[ 2 ];\n\t\t\t}\n\n\t\t\treturn tween;\n\t\t} ]\n\t};\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\tsetTimeout(function() {\n\t\tfxNow = undefined;\n\t});\n\treturn ( fxNow = jQuery.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\tattrs = { height: type },\n\t\ti = 0;\n\n\t// if we include width, step value is 1 to do all cssExpand values,\n\t// if we don't include width, 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 = ( tweeners[ prop ] || [] ).concat( 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\t/* jshint validthis: true */\n\tvar prop, value, toggle, tween, hooks, oldfire, display, checkDisplay,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHidden( elem ),\n\t\tdataShow = jQuery._data( elem, \"fxshow\" );\n\n\t// handle queue: false promises\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\t\t\t// doing this makes sure that the complete handler will be called\n\t\t\t// 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// height/width overflow pass\n\tif ( elem.nodeType === 1 && ( \"height\" in props || \"width\" in props ) ) {\n\t\t// Make sure that nothing sneaks out\n\t\t// Record all 3 overflow attributes because IE does not\n\t\t// change the overflow attribute when overflowX and\n\t\t// overflowY are set to the same value\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Set display property to inline-block for height/width\n\t\t// animations on inline elements that are having width/height animated\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\n\t\t// Test default display if display is currently \"none\"\n\t\tcheckDisplay = display === \"none\" ?\n\t\t\tjQuery._data( elem, \"olddisplay\" ) || defaultDisplay( elem.nodeName ) : display;\n\n\t\tif ( checkDisplay === \"inline\" && jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t// inline-level elements accept inline-block;\n\t\t\t// block-level elements need to be inline with layout\n\t\t\tif ( !support.inlineBlockNeedsLayout || defaultDisplay( elem.nodeName ) === \"inline\" ) {\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t} else {\n\t\t\t\tstyle.zoom = 1;\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tif ( !support.shrinkWrapBlocks() ) {\n\t\t\tanim.always(function() {\n\t\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t\t});\n\t\t}\n\t}\n\n\t// show/hide pass\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.exec( 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// If there is dataShow left over from a stopped hide or show and we are going to proceed with show, we should pretend to be hidden\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\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\n\t\t// Any non-fx value stops us from restoring the original display value\n\t\t} else {\n\t\t\tdisplay = undefined;\n\t\t}\n\t}\n\n\tif ( !jQuery.isEmptyObject( orig ) ) {\n\t\tif ( dataShow ) {\n\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\thidden = dataShow.hidden;\n\t\t\t}\n\t\t} else {\n\t\t\tdataShow = jQuery._data( elem, \"fxshow\", {} );\n\t\t}\n\n\t\t// store state if its toggle - enables .stop().toggle() to \"reverse\"\n\t\tif ( toggle ) {\n\t\t\tdataShow.hidden = !hidden;\n\t\t}\n\t\tif ( hidden ) {\n\t\t\tjQuery( elem ).show();\n\t\t} else {\n\t\t\tanim.done(function() {\n\t\t\t\tjQuery( elem ).hide();\n\t\t\t});\n\t\t}\n\t\tanim.done(function() {\n\t\t\tvar prop;\n\t\t\tjQuery._removeData( elem, \"fxshow\" );\n\t\t\tfor ( prop in orig ) {\n\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t}\n\t\t});\n\t\tfor ( prop in orig ) {\n\t\t\ttween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\n\t\t\tif ( !( prop in dataShow ) ) {\n\t\t\t\tdataShow[ prop ] = tween.start;\n\t\t\t\tif ( hidden ) {\n\t\t\t\t\ttween.end = tween.start;\n\t\t\t\t\ttween.start = prop === \"width\" || prop === \"height\" ? 1 : 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t// If this is a noop like .hide().hide(), restore an overwritten display value\n\t} else if ( (display === \"none\" ? defaultDisplay( elem.nodeName ) : display) === \"inline\" ) {\n\t\tstyle.display = display;\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 = jQuery.camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( jQuery.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 wont overwrite keys already present.\n\t\t\t// also - reusing 'index' from above 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 = animationPrefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\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\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\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t} else {\n\t\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\t\treturn false;\n\t\t\t}\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, { specialEasing: {} }, 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\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\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\n\t\t\t\t// otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\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 = animationPrefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( jQuery.isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\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\t// attach callbacks from options\n\treturn animation.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\njQuery.Animation = jQuery.extend( Animation, {\n\ttweener: function( props, callback ) {\n\t\tif ( jQuery.isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.split(\" \");\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\ttweeners[ prop ] = tweeners[ prop ] || [];\n\t\t\ttweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tanimationPrefilters.unshift( callback );\n\t\t} else {\n\t\t\tanimationPrefilters.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\tjQuery.isFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !jQuery.isFunction( easing ) && easing\n\t};\n\n\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === \"number\" ? opt.duration :\n\t\topt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;\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 ( jQuery.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( isHidden ).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\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 || jQuery._data( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\t\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 && type !== false ) {\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 = jQuery._data( 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 && (type == null || timers[ index ].queue === type) ) {\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 will dequeue\n\t\t\t// 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 = jQuery._data( 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\ttimers = jQuery.timers,\n\t\ti = 0;\n\n\tfxNow = jQuery.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\t\t// Checks the timer has not already been removed\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\tif ( timer() ) {\n\t\tjQuery.fx.start();\n\t} else {\n\t\tjQuery.timers.pop();\n\t}\n};\n\njQuery.fx.interval = 13;\n\njQuery.fx.start = function() {\n\tif ( !timerId ) {\n\t\ttimerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );\n\t}\n};\n\njQuery.fx.stop = function() {\n\tclearInterval( timerId );\n\ttimerId = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// 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 = setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\tclearTimeout( timeout );\n\t\t};\n\t});\n};\n\n\n(function() {\n\t// Minified: var a,b,c,d,e\n\tvar input, div, select, a, opt;\n\n\t// Setup\n\tdiv = document.createElement( \"div\" );\n\tdiv.setAttribute( \"className\", \"t\" );\n\tdiv.innerHTML = \" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>\";\n\ta = div.getElementsByTagName(\"a\")[ 0 ];\n\n\t// First batch of tests.\n\tselect = document.createElement(\"select\");\n\topt = select.appendChild( document.createElement(\"option\") );\n\tinput = div.getElementsByTagName(\"input\")[ 0 ];\n\n\ta.style.cssText = \"top:1px\";\n\n\t// Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)\n\tsupport.getSetAttribute = div.className !== \"t\";\n\n\t// Get the style information from getAttribute\n\t// (IE uses .cssText instead)\n\tsupport.style = /top/.test( a.getAttribute(\"style\") );\n\n\t// Make sure that URLs aren't manipulated\n\t// (IE normalizes it by default)\n\tsupport.hrefNormalized = a.getAttribute(\"href\") === \"/a\";\n\n\t// Check the default checkbox/radio value (\"\" on WebKit; \"on\" elsewhere)\n\tsupport.checkOn = !!input.value;\n\n\t// Make sure that a selected-by-default option has a working selected property.\n\t// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)\n\tsupport.optSelected = opt.selected;\n\n\t// Tests for enctype support on a form (#6743)\n\tsupport.enctype = !!document.createElement(\"form\").enctype;\n\n\t// Make sure that the options inside disabled selects aren't marked as disabled\n\t// (WebKit marks them as disabled)\n\tselect.disabled = true;\n\tsupport.optDisabled = !opt.disabled;\n\n\t// Support: IE8 only\n\t// Check if we can trust getAttribute(\"value\")\n\tinput = document.createElement( \"input\" );\n\tinput.setAttribute( \"value\", \"\" );\n\tsupport.input = input.getAttribute( \"value\" ) === \"\";\n\n\t// Check if an input maintains its value after becoming a radio\n\tinput.value = \"t\";\n\tinput.setAttribute( \"type\", \"radio\" );\n\tsupport.radioValue = input.value === \"t\";\n})();\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend({\n\tval: function( value ) {\n\t\tvar hooks, ret, isFunction,\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 ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks && \"get\" in hooks && (ret = hooks.get( elem, \"value\" )) !== undefined ) {\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\treturn typeof ret === \"string\" ?\n\t\t\t\t\t// handle most common string cases\n\t\t\t\t\tret.replace(rreturn, \"\") :\n\t\t\t\t\t// handle cases where value is null/undef or number\n\t\t\t\t\tret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tisFunction = jQuery.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 ( isFunction ) {\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\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\t\t\t} else if ( jQuery.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\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\t\t\t\t\t// Support: IE10-11+\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\tjQuery.trim( 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,\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\" || index < 0,\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length,\n\t\t\t\t\ti = index < 0 ?\n\t\t\t\t\t\tmax :\n\t\t\t\t\t\tone ? index : 0;\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// oldIE doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\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( support.optDisabled ? !option.disabled : option.getAttribute(\"disabled\") === null ) &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled || !jQuery.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\tif ( jQuery.inArray( jQuery.valHooks.option.get( option ), values ) >= 0 ) {\n\n\t\t\t\t\t\t// Support: IE6\n\t\t\t\t\t\t// When new option element is added to select box we need to\n\t\t\t\t\t\t// force reflow of newly added node in order to workaround delay\n\t\t\t\t\t\t// of initialization properties\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\toption.selected = optionSet = true;\n\n\t\t\t\t\t\t} catch ( _ ) {\n\n\t\t\t\t\t\t\t// Will be executed only in IE6\n\t\t\t\t\t\t\toption.scrollHeight;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\toption.selected = false;\n\t\t\t\t\t}\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\n\t\t\t\treturn options;\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 ( jQuery.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\t// Support: Webkit\n\t\t\t// \"\" is returned instead of \"on\" if a value isn't specified\n\t\t\treturn elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n\t\t};\n\t}\n});\n\n\n\n\nvar nodeHook, boolHook,\n\tattrHandle = jQuery.expr.attrHandle,\n\truseDefault = /^(?:checked|selected)$/i,\n\tgetSetAttribute = support.getSetAttribute,\n\tgetSetInput = support.input;\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 hooks, ret,\n\t\t\tnType = elem.nodeType;\n\n\t\t// don't get/set attributes on text, comment and attribute nodes\n\t\tif ( !elem || 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 === strundefined ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// All attributes are lowercase\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\tname = name.toLowerCase();\n\t\t\thooks = jQuery.attrHooks[ name ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\n\t\t\t} else if ( hooks && \"set\" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t} else if ( hooks && \"get\" in hooks && (ret = hooks.get( elem, name )) !== null ) {\n\t\t\treturn ret;\n\n\t\t} else {\n\t\t\tret = jQuery.find.attr( elem, name );\n\n\t\t\t// Non-existent attributes return null, we normalize to undefined\n\t\t\treturn ret == null ?\n\t\t\t\tundefined :\n\t\t\t\tret;\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name, propName,\n\t\t\ti = 0,\n\t\t\tattrNames = value && value.match( rnotwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( (name = attrNames[i++]) ) {\n\t\t\t\tpropName = jQuery.propFix[ name ] || name;\n\n\t\t\t\t// Boolean attributes get special treatment (#10870)\n\t\t\t\tif ( jQuery.expr.match.bool.test( name ) ) {\n\t\t\t\t\t// Set corresponding property to false\n\t\t\t\t\tif ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) {\n\t\t\t\t\t\telem[ propName ] = false;\n\t\t\t\t\t// Support: IE<9\n\t\t\t\t\t// Also clear defaultChecked/defaultSelected (if appropriate)\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem[ jQuery.camelCase( \"default-\" + name ) ] =\n\t\t\t\t\t\t\telem[ propName ] = false;\n\t\t\t\t\t}\n\n\t\t\t\t// See #9699 for explanation of this approach (setting first, then removal)\n\t\t\t\t} else {\n\t\t\t\t\tjQuery.attr( elem, name, \"\" );\n\t\t\t\t}\n\n\t\t\t\telem.removeAttribute( getSetAttribute ? name : propName );\n\t\t\t}\n\t\t}\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" && jQuery.nodeName(elem, \"input\") ) {\n\t\t\t\t\t// Setting the type on a radio button after the value resets the value in IE6-9\n\t\t\t\t\t// Reset value to default in case type is set after value during creation\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\n// Hook for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) {\n\t\t\t// IE<8 needs the *property* name\n\t\t\telem.setAttribute( !getSetAttribute && jQuery.propFix[ name ] || name, name );\n\n\t\t// Use defaultChecked and defaultSelected for oldIE\n\t\t} else {\n\t\t\telem[ jQuery.camelCase( \"default-\" + name ) ] = elem[ name ] = true;\n\t\t}\n\n\t\treturn name;\n\t}\n};\n\n// Retrieve booleans specially\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( i, name ) {\n\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = getSetInput && getSetAttribute || !ruseDefault.test( name ) ?\n\t\tfunction( elem, name, isXML ) {\n\t\t\tvar ret, handle;\n\t\t\tif ( !isXML ) {\n\t\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\t\thandle = attrHandle[ name ];\n\t\t\t\tattrHandle[ name ] = ret;\n\t\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\t\tname.toLowerCase() :\n\t\t\t\t\tnull;\n\t\t\t\tattrHandle[ name ] = handle;\n\t\t\t}\n\t\t\treturn ret;\n\t\t} :\n\t\tfunction( elem, name, isXML ) {\n\t\t\tif ( !isXML ) {\n\t\t\t\treturn elem[ jQuery.camelCase( \"default-\" + name ) ] ?\n\t\t\t\t\tname.toLowerCase() :\n\t\t\t\t\tnull;\n\t\t\t}\n\t\t};\n});\n\n// fix oldIE attroperties\nif ( !getSetInput || !getSetAttribute ) {\n\tjQuery.attrHooks.value = {\n\t\tset: function( elem, value, name ) {\n\t\t\tif ( jQuery.nodeName( elem, \"input\" ) ) {\n\t\t\t\t// Does not return so that setAttribute is also used\n\t\t\t\telem.defaultValue = value;\n\t\t\t} else {\n\t\t\t\t// Use nodeHook if defined (#1954); otherwise setAttribute is fine\n\t\t\t\treturn nodeHook && nodeHook.set( elem, value, name );\n\t\t\t}\n\t\t}\n\t};\n}\n\n// IE6/7 do not support getting/setting some attributes with get/setAttribute\nif ( !getSetAttribute ) {\n\n\t// Use this for any attribute in IE6/7\n\t// This fixes almost every IE6/7 issue\n\tnodeHook = {\n\t\tset: function( elem, value, name ) {\n\t\t\t// Set the existing or create a new attribute node\n\t\t\tvar ret = elem.getAttributeNode( name );\n\t\t\tif ( !ret ) {\n\t\t\t\telem.setAttributeNode(\n\t\t\t\t\t(ret = elem.ownerDocument.createAttribute( name ))\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tret.value = value += \"\";\n\n\t\t\t// Break association with cloned elements by also using setAttribute (#9646)\n\t\t\tif ( name === \"value\" || value === elem.getAttribute( name ) ) {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t};\n\n\t// Some attributes are constructed with empty-string values when not defined\n\tattrHandle.id = attrHandle.name = attrHandle.coords =\n\t\tfunction( elem, name, isXML ) {\n\t\t\tvar ret;\n\t\t\tif ( !isXML ) {\n\t\t\t\treturn (ret = elem.getAttributeNode( name )) && ret.value !== \"\" ?\n\t\t\t\t\tret.value :\n\t\t\t\t\tnull;\n\t\t\t}\n\t\t};\n\n\t// Fixing value retrieval on a button requires this module\n\tjQuery.valHooks.button = {\n\t\tget: function( elem, name ) {\n\t\t\tvar ret = elem.getAttributeNode( name );\n\t\t\tif ( ret && ret.specified ) {\n\t\t\t\treturn ret.value;\n\t\t\t}\n\t\t},\n\t\tset: nodeHook.set\n\t};\n\n\t// Set contenteditable to false on removals(#10429)\n\t// Setting to empty string throws an error as an invalid value\n\tjQuery.attrHooks.contenteditable = {\n\t\tset: function( elem, value, name ) {\n\t\t\tnodeHook.set( elem, value === \"\" ? false : value, name );\n\t\t}\n\t};\n\n\t// Set width and height to auto instead of 0 on empty string( Bug #8150 )\n\t// This is for removals\n\tjQuery.each([ \"width\", \"height\" ], function( i, name ) {\n\t\tjQuery.attrHooks[ name ] = {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( value === \"\" ) {\n\t\t\t\t\telem.setAttribute( name, \"auto\" );\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t});\n}\n\nif ( !support.style ) {\n\tjQuery.attrHooks.style = {\n\t\tget: function( elem ) {\n\t\t\t// Return undefined in the case of empty string\n\t\t\t// Note: IE uppercases css property names, but if we were to .toLowerCase()\n\t\t\t// .cssText, that would destroy case senstitivity in URL's, like in \"background\"\n\t\t\treturn elem.style.cssText || undefined;\n\t\t},\n\t\tset: function( elem, value ) {\n\t\t\treturn ( elem.style.cssText = value + \"\" );\n\t\t}\n\t};\n}\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button|object)$/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\tname = jQuery.propFix[ name ] || name;\n\t\treturn this.each(function() {\n\t\t\t// try/catch handles cases where IE balks (such as removing a property on window)\n\t\t\ttry {\n\t\t\t\tthis[ name ] = undefined;\n\t\t\t\tdelete this[ name ];\n\t\t\t} catch( e ) {}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t},\n\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks, notxml,\n\t\t\tnType = elem.nodeType;\n\n\t\t// don't get/set properties on text, comment and attribute nodes\n\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tnotxml = nType !== 1 || !jQuery.isXMLDoc( elem );\n\n\t\tif ( notxml ) {\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\treturn hooks && \"set\" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ?\n\t\t\t\tret :\n\t\t\t\t( elem[ name ] = value );\n\n\t\t} else {\n\t\t\treturn hooks && \"get\" in hooks && (ret = hooks.get( elem, name )) !== null ?\n\t\t\t\tret :\n\t\t\t\telem[ name ];\n\t\t}\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\t\t\t\t// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set\n\t\t\t\t// 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\treturn tabindex ?\n\t\t\t\t\tparseInt( tabindex, 10 ) :\n\t\t\t\t\trfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?\n\t\t\t\t\t\t0 :\n\t\t\t\t\t\t-1;\n\t\t\t}\n\t\t}\n\t}\n});\n\n// Some attributes require a special call on IE\n// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !support.hrefNormalized ) {\n\t// href/src property should get the full normalized URL (#10299/#12915)\n\tjQuery.each([ \"href\", \"src\" ], function( i, name ) {\n\t\tjQuery.propHooks[ name ] = {\n\t\t\tget: function( elem ) {\n\t\t\t\treturn elem.getAttribute( name, 4 );\n\t\t\t}\n\t\t};\n\t});\n}\n\n// Support: Safari, IE9+\n// mis-reports the default selected property of an option\n// Accessing the parent's selectedIndex property fixes it\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\t\t\tvar parent = elem.parentNode;\n\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\t// Make sure that it also works with optgroups, see #5701\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\treturn null;\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// IE6/7 call enctype encoding\nif ( !support.enctype ) {\n\tjQuery.propFix.enctype = \"encoding\";\n}\n\n\n\n\nvar rclass = /[\\t\\r\\n\\f]/g;\n\njQuery.fn.extend({\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, clazz, j, finalValue,\n\t\t\ti = 0,\n\t\t\tlen = this.length,\n\t\t\tproceed = typeof value === \"string\" && value;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, this.className ) );\n\t\t\t});\n\t\t}\n\n\t\tif ( proceed ) {\n\t\t\t// The disjunction here is for better compressibility (see removeClass)\n\t\t\tclasses = ( value || \"\" ).match( rnotwhite ) || [];\n\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\telem = this[ i ];\n\t\t\t\tcur = elem.nodeType === 1 && ( elem.className ?\n\t\t\t\t\t( \" \" + elem.className + \" \" ).replace( rclass, \" \" ) :\n\t\t\t\t\t\" \"\n\t\t\t\t);\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 = jQuery.trim( cur );\n\t\t\t\t\tif ( elem.className !== finalValue ) {\n\t\t\t\t\t\telem.className = 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, clazz, j, finalValue,\n\t\t\ti = 0,\n\t\t\tlen = this.length,\n\t\t\tproceed = arguments.length === 0 || typeof value === \"string\" && value;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, this.className ) );\n\t\t\t});\n\t\t}\n\t\tif ( proceed ) {\n\t\t\tclasses = ( value || \"\" ).match( rnotwhite ) || [];\n\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\telem = this[ i ];\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( elem.className ?\n\t\t\t\t\t( \" \" + elem.className + \" \" ).replace( rclass, \" \" ) :\n\t\t\t\t\t\"\"\n\t\t\t\t);\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\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) >= 0 ) {\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 = value ? jQuery.trim( cur ) : \"\";\n\t\t\t\t\tif ( elem.className !== finalValue ) {\n\t\t\t\t\t\telem.className = 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\n\t\tif ( typeof stateVal === \"boolean\" && type === \"string\" ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( type === \"string\" ) {\n\t\t\t\t// toggle individual class names\n\t\t\t\tvar className,\n\t\t\t\t\ti = 0,\n\t\t\t\t\tself = jQuery( this ),\n\t\t\t\t\tclassNames = value.match( rnotwhite ) || [];\n\n\t\t\t\twhile ( (className = classNames[ i++ ]) ) {\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 ( type === strundefined || type === \"boolean\" ) {\n\t\t\t\tif ( this.className ) {\n\t\t\t\t\t// store className if set\n\t\t\t\t\tjQuery._data( this, \"__className__\", this.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\tthis.className = this.className || value === false ? \"\" : jQuery._data( this, \"__className__\" ) || \"\";\n\t\t\t}\n\t\t});\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className = \" \" + selector + \" \",\n\t\t\ti = 0,\n\t\t\tl = this.length;\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tif ( this[i].nodeType === 1 && (\" \" + this[i].className + \" \").replace(rclass, \" \").indexOf( className ) >= 0 ) {\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\n// Return jQuery for attributes-only inclusion\n\n\njQuery.each( (\"blur focus focusin focusout load resize scroll unload click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup error contextmenu\").split(\" \"), function( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.on( name, null, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n});\n\njQuery.fn.extend({\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t},\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\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ? this.off( selector, \"**\" ) : this.off( types, selector || \"**\", fn );\n\t}\n});\n\n\nvar nonce = jQuery.now();\n\nvar rquery = (/\\?/);\n\n\n\nvar rvalidtokens = /(,)|(\\[|{)|(}|])|\"(?:[^\"\\\\\\r\\n]|\\\\[\"\\\\\\/bfnrt]|\\\\u[\\da-fA-F]{4})*\"\\s*:?|true|false|null|-?(?!0\\d)\\d+(?:\\.\\d+|)(?:[eE][+-]?\\d+|)/g;\n\njQuery.parseJSON = function( data ) {\n\t// Attempt to parse using the native JSON parser first\n\tif ( window.JSON && window.JSON.parse ) {\n\t\t// Support: Android 2.3\n\t\t// Workaround failure to string-cast null input\n\t\treturn window.JSON.parse( data + \"\" );\n\t}\n\n\tvar requireNonComma,\n\t\tdepth = null,\n\t\tstr = jQuery.trim( data + \"\" );\n\n\t// Guard against invalid (and possibly dangerous) input by ensuring that nothing remains\n\t// after removing valid tokens\n\treturn str && !jQuery.trim( str.replace( rvalidtokens, function( token, comma, open, close ) {\n\n\t\t// Force termination if we see a misplaced comma\n\t\tif ( requireNonComma && comma ) {\n\t\t\tdepth = 0;\n\t\t}\n\n\t\t// Perform no more replacements after returning to outermost depth\n\t\tif ( depth === 0 ) {\n\t\t\treturn token;\n\t\t}\n\n\t\t// Commas must not follow \"[\", \"{\", or \",\"\n\t\trequireNonComma = open || comma;\n\n\t\t// Determine new depth\n\t\t// array/object open (\"[\" or \"{\"): depth += true - false (increment)\n\t\t// array/object close (\"]\" or \"}\"): depth += false - true (decrement)\n\t\t// other cases (\",\" or primitive): depth += true - true (numeric cast)\n\t\tdepth += !close - !open;\n\n\t\t// Remove this token\n\t\treturn \"\";\n\t}) ) ?\n\t\t( Function( \"return \" + str ) )() :\n\t\tjQuery.error( \"Invalid JSON: \" + data );\n};\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, tmp;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\ttry {\n\t\tif ( window.DOMParser ) { // Standard\n\t\t\ttmp = new DOMParser();\n\t\t\txml = tmp.parseFromString( data, \"text/xml\" );\n\t\t} else { // IE\n\t\t\txml = new ActiveXObject( \"Microsoft.XMLDOM\" );\n\t\t\txml.async = \"false\";\n\t\t\txml.loadXML( data );\n\t\t}\n\t} catch( e ) {\n\t\txml = undefined;\n\t}\n\tif ( !xml || !xml.documentElement || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\tjQuery.error( \"Invalid XML: \" + data );\n\t}\n\treturn xml;\n};\n\n\nvar\n\t// Document location\n\tajaxLocParts,\n\tajaxLocation,\n\n\trhash = /#.*$/,\n\trts = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg, // IE leaves an \\r character at EOL\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\trurl = /^([\\w.+-]+:)(?:\\/\\/(?:[^\\/?#]*@|)([^\\/?#:]*)(?::(\\d+)|)|)/,\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// #8138, IE may throw an exception when accessing\n// a field from window.location if document.domain has been set\ntry {\n\tajaxLocation = location.href;\n} catch( e ) {\n\t// Use the href attribute of an A element\n\t// since IE will modify it given document.location\n\tajaxLocation = document.createElement( \"a\" );\n\tajaxLocation.href = \"\";\n\tajaxLocation = ajaxLocation.href;\n}\n\n// Segment location into parts\najaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];\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( rnotwhite ) || [];\n\n\t\tif ( jQuery.isFunction( func ) ) {\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( (dataType = dataTypes[i++]) ) {\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType.charAt( 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\" && !seekingTransport && !inspected[ dataTypeOrTransport ] ) {\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 deep, key,\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\tvar firstDataType, ct, finalDataType, type,\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\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\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\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\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 { state: \"parsererror\", error: conv ? e : \"No conversion from \" + prev + \" to \" + current };\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: ajaxLocation,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\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: /xml/,\n\t\t\thtml: /html/,\n\t\t\tjson: /json/\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\": jQuery.parseJSON,\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 // Cross-domain detection vars\n\t\t\tparts,\n\t\t\t// Loop variable\n\t\t\ti,\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\t\t\t// Response headers as string\n\t\t\tresponseHeadersString,\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\ttransport,\n\t\t\t// Response headers\n\t\t\tresponseHeaders,\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\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 && ( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks(\"once memory\"),\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\t\t\t// The jqXHR state\n\t\t\tstate = 0,\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\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 ( state === 2 ) {\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() ] = 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;\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 state === 2 ? 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\tvar lname = name.toLowerCase();\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\tname = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || 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 ( !state ) {\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 ( state < 2 ) {\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\t// Lazy-add the new callback in a way that preserves old ones\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} else {\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}\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 ).complete = completeDeferred.add;\n\t\tjqXHR.success = jqXHR.done;\n\t\tjqXHR.error = jqXHR.fail;\n\n\t\t// Remove hash character (#7531: and string promotion)\n\t\t// Add protocol if not provided (#5866: IE7 issue with protocol-less urls)\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 || ajaxLocation ) + \"\" ).replace( rhash, \"\" ).replace( rprotocol, ajaxLocParts[ 1 ] + \"//\" );\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 = jQuery.trim( s.dataType || \"*\" ).toLowerCase().match( rnotwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when we have a protocol:host:port mismatch\n\t\tif ( s.crossDomain == null ) {\n\t\t\tparts = rurl.exec( s.url.toLowerCase() );\n\t\t\ts.crossDomain = !!( parts &&\n\t\t\t\t( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||\n\t\t\t\t\t( parts[ 3 ] || ( parts[ 1 ] === \"http:\" ? \"80\" : \"443\" ) ) !==\n\t\t\t\t\t\t( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === \"http:\" ? \"80\" : \"443\" ) ) )\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 ( state === 2 ) {\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\tcacheURL = s.url;\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// If data is available, append data to url\n\t\t\tif ( s.data ) {\n\t\t\t\tcacheURL = ( s.url += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data );\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 anti-cache in url if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\ts.url = rts.test( cacheURL ) ?\n\n\t\t\t\t\t// If there is already a '_' parameter, set its value\n\t\t\t\t\tcacheURL.replace( rts, \"$1_=\" + nonce++ ) :\n\n\t\t\t\t\t// Otherwise add one to the end\n\t\t\t\t\tcacheURL + ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + nonce++;\n\t\t\t}\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] ] + ( 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 && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {\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\tfor ( i in { success: 1, error: 1, complete: 1 } ) {\n\t\t\tjqXHR[ i ]( s[ i ] );\n\t\t}\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\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = 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\tstate = 1;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\t\t\t\t// Propagate exception as error if not done\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tdone( -1, e );\n\t\t\t\t// Simply rethrow otherwise\n\t\t\t\t} else {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\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// Called once\n\t\t\tif ( state === 2 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// State is \"done\" now\n\t\t\tstate = 2;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\tclearTimeout( 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// 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\t\t\t\t// We extract error from statusText\n\t\t\t\t// then normalize statusText and status 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\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\t\t// shift arguments if data argument was omitted\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\treturn jQuery.ajax({\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});\n\t};\n});\n\n\njQuery._evalUrl = function( url ) {\n\treturn jQuery.ajax({\n\t\turl: url,\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tasync: false,\n\t\tglobal: false,\n\t\t\"throws\": true\n\t});\n};\n\n\njQuery.fn.extend({\n\twrapAll: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapAll( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\t// The elements to wrap the target around\n\t\t\tvar wrap = 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.firstChild && elem.firstChild.nodeType === 1 ) {\n\t\t\t\t\telem = elem.firstChild;\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 ( jQuery.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 isFunction = jQuery.isFunction( html );\n\n\t\treturn this.each(function(i) {\n\t\t\tjQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );\n\t\t});\n\t},\n\n\tunwrap: function() {\n\t\treturn this.parent().each(function() {\n\t\t\tif ( !jQuery.nodeName( this, \"body\" ) ) {\n\t\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t\t}\n\t\t}).end();\n\t}\n});\n\n\njQuery.expr.filters.hidden = function( elem ) {\n\t// Support: Opera <= 12.12\n\t// Opera reports offsetWidths and offsetHeights less than zero on some elements\n\treturn elem.offsetWidth <= 0 && elem.offsetHeight <= 0 ||\n\t\t(!support.reliableHiddenOffsets() &&\n\t\t\t((elem.style && elem.style.display) || jQuery.css( elem, \"display\" )) === \"none\");\n};\n\njQuery.expr.filters.visible = function( elem ) {\n\treturn !jQuery.expr.filters.hidden( elem );\n};\n\n\n\n\nvar r20 = /%20/g,\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 ( jQuery.isArray( obj ) ) {\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\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\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams( prefix + \"[\" + ( typeof v === \"object\" ? i : \"\" ) + \"]\", v, traditional, add );\n\t\t\t}\n\t\t});\n\n\t} else if ( !traditional && jQuery.type( obj ) === \"object\" ) {\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\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, value ) {\n\t\t\t// If value is a function, invoke it and return its value\n\t\t\tvalue = jQuery.isFunction( value ) ? value() : ( value == null ? \"\" : value );\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" + encodeURIComponent( value );\n\t\t};\n\n\t// Set traditional to true for jQuery <= 1.3.2 behavior.\n\tif ( traditional === undefined ) {\n\t\ttraditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\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\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( \"&\" ).replace( r20, \"+\" );\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\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})\n\t\t.filter(function() {\n\t\t\tvar type = this.type;\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})\n\t\t.map(function( i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\treturn val == null ?\n\t\t\t\tnull :\n\t\t\t\tjQuery.isArray( val ) ?\n\t\t\t\t\tjQuery.map( val, function( val ) {\n\t\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t\t}) :\n\t\t\t\t\t{ name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t}).get();\n\t}\n});\n\n\n// Create the request object\n// (This is still attached to ajaxSettings for backward compatibility)\njQuery.ajaxSettings.xhr = window.ActiveXObject !== undefined ?\n\t// Support: IE6+\n\tfunction() {\n\n\t\t// XHR cannot access local files, always use ActiveX for that case\n\t\treturn !this.isLocal &&\n\n\t\t\t// Support: IE7-8\n\t\t\t// oldIE XHR does not support non-RFC2616 methods (#13240)\n\t\t\t// See http://msdn.microsoft.com/en-us/library/ie/ms536648(v=vs.85).aspx\n\t\t\t// and http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9\n\t\t\t// Although this check for six methods instead of eight\n\t\t\t// since IE also does not support \"trace\" and \"connect\"\n\t\t\t/^(get|post|head|put|delete|options)$/i.test( this.type ) &&\n\n\t\t\tcreateStandardXHR() || createActiveXHR();\n\t} :\n\t// For all other browsers, use the standard XMLHttpRequest object\n\tcreateStandardXHR;\n\nvar xhrId = 0,\n\txhrCallbacks = {},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\n// Support: IE<10\n// Open requests must be manually aborted on unload (#5280)\n// See https://support.microsoft.com/kb/2856746 for more info\nif ( window.attachEvent ) {\n\twindow.attachEvent( \"onunload\", function() {\n\t\tfor ( var key in xhrCallbacks ) {\n\t\t\txhrCallbacks[ key ]( undefined, true );\n\t\t}\n\t});\n}\n\n// Determine support properties\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nxhrSupported = support.ajax = !!xhrSupported;\n\n// Create transport if the browser can provide an xhr\nif ( xhrSupported ) {\n\n\tjQuery.ajaxTransport(function( options ) {\n\t\t// Cross domain only allowed if supported through XMLHttpRequest\n\t\tif ( !options.crossDomain || support.cors ) {\n\n\t\t\tvar callback;\n\n\t\t\treturn {\n\t\t\t\tsend: function( headers, complete ) {\n\t\t\t\t\tvar i,\n\t\t\t\t\t\txhr = options.xhr(),\n\t\t\t\t\t\tid = ++xhrId;\n\n\t\t\t\t\t// Open the socket\n\t\t\t\t\txhr.open( options.type, options.url, options.async, options.username, options.password );\n\n\t\t\t\t\t// Apply custom fields if provided\n\t\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Override mime type if needed\n\t\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t\t}\n\n\t\t\t\t\t// X-Requested-With header\n\t\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\t\tif ( !options.crossDomain && !headers[\"X-Requested-With\"] ) {\n\t\t\t\t\t\theaders[\"X-Requested-With\"] = \"XMLHttpRequest\";\n\t\t\t\t\t}\n\n\t\t\t\t\t// Set headers\n\t\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\t\t// Support: IE<9\n\t\t\t\t\t\t// IE's ActiveXObject throws a 'Type Mismatch' exception when setting\n\t\t\t\t\t\t// request header to a null-value.\n\t\t\t\t\t\t//\n\t\t\t\t\t\t// To keep consistent with other XHR implementations, cast the value\n\t\t\t\t\t\t// to string and ignore `undefined`.\n\t\t\t\t\t\tif ( headers[ i ] !== undefined ) {\n\t\t\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] + \"\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Do send the request\n\t\t\t\t\t// This may raise an exception which is actually\n\t\t\t\t\t// handled in jQuery.ajax (so no try/catch here)\n\t\t\t\t\txhr.send( ( options.hasContent && options.data ) || null );\n\n\t\t\t\t\t// Listener\n\t\t\t\t\tcallback = function( _, isAbort ) {\n\t\t\t\t\t\tvar status, statusText, responses;\n\n\t\t\t\t\t\t// Was never called and is aborted or complete\n\t\t\t\t\t\tif ( callback && ( isAbort || xhr.readyState === 4 ) ) {\n\t\t\t\t\t\t\t// Clean up\n\t\t\t\t\t\t\tdelete xhrCallbacks[ id ];\n\t\t\t\t\t\t\tcallback = undefined;\n\t\t\t\t\t\t\txhr.onreadystatechange = jQuery.noop;\n\n\t\t\t\t\t\t\t// Abort manually if needed\n\t\t\t\t\t\t\tif ( isAbort ) {\n\t\t\t\t\t\t\t\tif ( xhr.readyState !== 4 ) {\n\t\t\t\t\t\t\t\t\txhr.abort();\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\tresponses = {};\n\t\t\t\t\t\t\t\tstatus = xhr.status;\n\n\t\t\t\t\t\t\t\t// Support: IE<10\n\t\t\t\t\t\t\t\t// Accessing binary-data responseText throws an exception\n\t\t\t\t\t\t\t\t// (#11426)\n\t\t\t\t\t\t\t\tif ( typeof xhr.responseText === \"string\" ) {\n\t\t\t\t\t\t\t\t\tresponses.text = xhr.responseText;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Firefox throws an exception when accessing\n\t\t\t\t\t\t\t\t// statusText for faulty cross-domain requests\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tstatusText = xhr.statusText;\n\t\t\t\t\t\t\t\t} catch( e ) {\n\t\t\t\t\t\t\t\t\t// We normalize with Webkit giving an empty statusText\n\t\t\t\t\t\t\t\t\tstatusText = \"\";\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Filter status for non standard behaviors\n\n\t\t\t\t\t\t\t\t// If the request is local and we have data: assume a success\n\t\t\t\t\t\t\t\t// (success with no data won't get notified, that's the best we\n\t\t\t\t\t\t\t\t// can do given current implementations)\n\t\t\t\t\t\t\t\tif ( !status && options.isLocal && !options.crossDomain ) {\n\t\t\t\t\t\t\t\t\tstatus = responses.text ? 200 : 404;\n\t\t\t\t\t\t\t\t// IE - #1450: sometimes returns 1223 when it should be 204\n\t\t\t\t\t\t\t\t} else if ( status === 1223 ) {\n\t\t\t\t\t\t\t\t\tstatus = 204;\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// Call complete if needed\n\t\t\t\t\t\tif ( responses ) {\n\t\t\t\t\t\t\tcomplete( status, statusText, responses, xhr.getAllResponseHeaders() );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\tif ( !options.async ) {\n\t\t\t\t\t\t// if we're in sync mode we fire the callback\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t} else if ( xhr.readyState === 4 ) {\n\t\t\t\t\t\t// (IE6 & IE7) if it's in cache and has been\n\t\t\t\t\t\t// retrieved directly we need to fire the callback\n\t\t\t\t\t\tsetTimeout( callback );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Add to the list of active xhr callbacks\n\t\t\t\t\t\txhr.onreadystatechange = xhrCallbacks[ id ] = callback;\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tabort: function() {\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tcallback( undefined, true );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t});\n}\n\n// Functions to create xhrs\nfunction createStandardXHR() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch( e ) {}\n}\n\nfunction createActiveXHR() {\n\ttry {\n\t\treturn new window.ActiveXObject( \"Microsoft.XMLHTTP\" );\n\t} catch( e ) {}\n}\n\n\n\n\n// Install script dataType\njQuery.ajaxSetup({\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /(?:java|ecma)script/\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 global\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\ts.global = false;\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 requests\n\tif ( s.crossDomain ) {\n\n\t\tvar script,\n\t\t\thead = document.head || jQuery(\"head\")[0] || document.documentElement;\n\n\t\treturn {\n\n\t\t\tsend: function( _, callback ) {\n\n\t\t\t\tscript = document.createElement(\"script\");\n\n\t\t\t\tscript.async = true;\n\n\t\t\t\tif ( s.scriptCharset ) {\n\t\t\t\t\tscript.charset = s.scriptCharset;\n\t\t\t\t}\n\n\t\t\t\tscript.src = s.url;\n\n\t\t\t\t// Attach handlers for all browsers\n\t\t\t\tscript.onload = script.onreadystatechange = function( _, isAbort ) {\n\n\t\t\t\t\tif ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {\n\n\t\t\t\t\t\t// Handle memory leak in IE\n\t\t\t\t\t\tscript.onload = script.onreadystatechange = null;\n\n\t\t\t\t\t\t// Remove the script\n\t\t\t\t\t\tif ( script.parentNode ) {\n\t\t\t\t\t\t\tscript.parentNode.removeChild( script );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Dereference the script\n\t\t\t\t\t\tscript = null;\n\n\t\t\t\t\t\t// Callback if not abort\n\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\tcallback( 200, \"success\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\t// Circumvent IE6 bugs with base elements (#2709 and #4378) by prepending\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( script ) {\n\t\t\t\t\tscript.onload( undefined, true );\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++ ) );\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\" && !( s.contentType || \"\" ).indexOf(\"application/x-www-form-urlencoded\") && rjsonp.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 = jQuery.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\t\t\t// Restore preexisting value\n\t\t\twindow[ callbackName ] = overwritten;\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\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 && jQuery.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// data: string of html\n// context (optional): If specified, the fragment will be created in this context, defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\tcontext = context || document;\n\n\tvar parsed = rsingleTag.exec( data ),\n\t\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[1] ) ];\n\t}\n\n\tparsed = jQuery.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// Keep a copy of the old load method\nvar _load = jQuery.fn.load;\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tif ( typeof url !== \"string\" && _load ) {\n\t\treturn _load.apply( this, arguments );\n\t}\n\n\tvar selector, response, type,\n\t\tself = this,\n\t\toff = url.indexOf(\" \");\n\n\tif ( off >= 0 ) {\n\t\tselector = jQuery.trim( url.slice( off, url.length ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( jQuery.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\ttype: type,\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}).complete( callback && function( jqXHR, status ) {\n\t\t\tself.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t});\n\t}\n\n\treturn this;\n};\n\n\n\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( [ \"ajaxStart\", \"ajaxStop\", \"ajaxComplete\", \"ajaxError\", \"ajaxSuccess\", \"ajaxSend\" ], function( i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n});\n\n\n\n\njQuery.expr.filters.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\n\nvar docElem = window.document.documentElement;\n\n/**\n * Gets a window from an element\n */\nfunction getWindow( elem ) {\n\treturn jQuery.isWindow( elem ) ?\n\t\telem :\n\t\telem.nodeType === 9 ?\n\t\t\telem.defaultView || elem.parentWindow :\n\t\t\tfalse;\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\tjQuery.inArray(\"auto\", [ curCSSTop, curCSSLeft ] ) > -1;\n\n\t\t// need to be able to calculate position if either 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\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( jQuery.isFunction( options ) ) {\n\t\t\toptions = options.call( elem, i, 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\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend({\n\toffset: function( options ) {\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 docElem, win,\n\t\t\tbox = { top: 0, left: 0 },\n\t\t\telem = this[ 0 ],\n\t\t\tdoc = elem && elem.ownerDocument;\n\n\t\tif ( !doc ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdocElem = doc.documentElement;\n\n\t\t// Make sure it's not a disconnected DOM node\n\t\tif ( !jQuery.contains( docElem, elem ) ) {\n\t\t\treturn box;\n\t\t}\n\n\t\t// If we don't have gBCR, just use 0,0 rather than error\n\t\t// BlackBerry 5, iOS 3 (original iPhone)\n\t\tif ( typeof elem.getBoundingClientRect !== strundefined ) {\n\t\t\tbox = elem.getBoundingClientRect();\n\t\t}\n\t\twin = getWindow( doc );\n\t\treturn {\n\t\t\ttop: box.top + ( win.pageYOffset || docElem.scrollTop ) - ( docElem.clientTop || 0 ),\n\t\t\tleft: box.left + ( win.pageXOffset || docElem.scrollLeft ) - ( docElem.clientLeft || 0 )\n\t\t};\n\t},\n\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset,\n\t\t\tparentOffset = { top: 0, left: 0 },\n\t\t\telem = this[ 0 ];\n\n\t\t// fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is its only offset parent\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\t\t\t// we assume that getBoundingClientRect is available when computed position is fixed\n\t\t\toffset = elem.getBoundingClientRect();\n\t\t} else {\n\t\t\t// Get *real* offsetParent\n\t\t\toffsetParent = this.offsetParent();\n\n\t\t\t// Get correct offsets\n\t\t\toffset = this.offset();\n\t\t\tif ( !jQuery.nodeName( offsetParent[ 0 ], \"html\" ) ) {\n\t\t\t\tparentOffset = offsetParent.offset();\n\t\t\t}\n\n\t\t\t// Add offsetParent borders\n\t\t\tparentOffset.top += jQuery.css( offsetParent[ 0 ], \"borderTopWidth\", true );\n\t\t\tparentOffset.left += jQuery.css( offsetParent[ 0 ], \"borderLeftWidth\", true );\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\t// note: when an element has margin: auto the offsetLeft and marginLeft\n\t\t// are the same in Safari causing offset.left to incorrectly be 0\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\toffsetParent: function() {\n\t\treturn this.map(function() {\n\t\t\tvar offsetParent = this.offsetParent || docElem;\n\n\t\t\twhile ( offsetParent && ( !jQuery.nodeName( offsetParent, \"html\" ) && jQuery.css( offsetParent, \"position\" ) === \"static\" ) ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\t\t\treturn offsetParent || docElem;\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 = /Y/.test( prop );\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\t\t\tvar win = getWindow( elem );\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? (prop in win) ? win[ prop ] :\n\t\t\t\t\twin.document.documentElement[ method ] :\n\t\t\t\t\telem[ 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 : jQuery( win ).scrollLeft(),\n\t\t\t\t\ttop ? val : jQuery( win ).scrollTop()\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, null );\n\t};\n});\n\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// getComputedStyle returns percent when specified for top/left/bottom/right\n// rather than make the css module depend on the offset module, we 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\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( { padding: \"inner\" + name, content: type, \"\": \"outer\" + name }, function( defaultExtra, funcName ) {\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 ( jQuery.isWindow( elem ) ) {\n\t\t\t\t\t// As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there\n\t\t\t\t\t// isn't a whole lot we can do. See pull request at this URL for discussion:\n\t\t\t\t\t// https://github.com/jquery/jquery/pull/764\n\t\t\t\t\treturn elem.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], whichever is greatest\n\t\t\t\t\t// unfortunately, this causes bug #3838 in IE6/8 only, but there is currently no good, small way to fix it.\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\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, null );\n\t\t};\n\t});\n});\n\n\n// The number of elements contained in the matched element set\njQuery.fn.size = function() {\n\treturn this.length;\n};\n\njQuery.fn.andSelf = jQuery.fn.addBack;\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\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\n// AMD (#7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (#13566)\nif ( typeof noGlobal === strundefined ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n\n}));\n", "!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{var n;\"undefined\"!=typeof window?n=window:\"undefined\"!=typeof global?n=global:\"undefined\"!=typeof self&&(n=self),n.Countdown=e()}}(function(){var define,module,exports;return function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){var defaultOptions={date:\"June 7, 2087 15:03:25\",refresh:1e3,offset:0,onEnd:function(){return},render:function(date){this.el.innerHTML=date.years+\" years, \"+date.days+\" days, \"+this.leadingZeros(date.hours)+\" hours, \"+this.leadingZeros(date.min)+\" min and \"+this.leadingZeros(date.sec)+\" sec\"}};var Countdown=function(el,options){this.el=el;this.options={};this.interval=false;this.mergeOptions=function(options){for(var i in defaultOptions){if(defaultOptions.hasOwnProperty(i)){this.options[i]=typeof options[i]!==\"undefined\"?options[i]:defaultOptions[i];if(i===\"date\"&&typeof this.options.date!==\"object\"){this.options.date=new Date(this.options.date)}if(typeof this.options[i]===\"function\"){this.options[i]=this.options[i].bind(this)}}}if(typeof this.options.date!==\"object\"){this.options.date=new Date(this.options.date)}}.bind(this);this.mergeOptions(options);this.getDiffDate=function(){var diff=(this.options.date.getTime()-Date.now()+this.options.offset)/1e3;var dateData={years:0,days:0,hours:0,min:0,sec:0,millisec:0};if(diff<=0){if(this.interval){this.stop();this.options.onEnd()}return dateData}if(diff>=365.25*86400){dateData.years=Math.floor(diff/(365.25*86400));diff-=dateData.years*365.25*86400}if(diff>=86400){dateData.days=Math.floor(diff/86400);diff-=dateData.days*86400}if(diff>=3600){dateData.hours=Math.floor(diff/3600);diff-=dateData.hours*3600}if(diff>=60){dateData.min=Math.floor(diff/60);diff-=dateData.min*60}dateData.sec=Math.round(diff);dateData.millisec=diff%1*1e3;return dateData}.bind(this);this.leadingZeros=function(num,length){length=length||2;num=String(num);if(num.length>length){return num}return(Array(length+1).join(\"0\")+num).substr(-length)};this.update=function(newDate){if(typeof newDate!==\"object\"){newDate=new Date(newDate)}this.options.date=newDate;this.render();return this}.bind(this);this.stop=function(){if(this.interval){clearInterval(this.interval);this.interval=false}return this}.bind(this);this.render=function(){this.options.render(this.getDiffDate());return this}.bind(this);this.start=function(){if(this.interval){return}this.render();if(this.options.refresh){this.interval=setInterval(this.render,this.options.refresh)}return this}.bind(this);this.updateOffset=function(offset){this.options.offset=offset;return this}.bind(this);this.restart=function(options){this.mergeOptions(options);this.interval=false;this.start();return this}.bind(this);this.start()};module.exports=Countdown},{}],2:[function(require,module,exports){var Countdown=require(\"./countdown.js\");var NAME=\"countdown\";var DATA_ATTR=\"date\";jQuery.fn.countdown=function(options){return $.each(this,function(i,el){var $el=$(el);if(!$el.data(NAME)){if($el.data(DATA_ATTR)){options.date=$el.data(DATA_ATTR)}$el.data(NAME,new Countdown(el,options))}})};module.exports=Countdown},{\"./countdown.js\":1}]},{},[2])(2)});\n\n\n\n\n\nfunction onYouTubeIframeAPIReady(){ytp.YTAPIReady||(ytp.YTAPIReady=!0,jQuery(document).trigger(\"YTAPIReady\"))}function uncamel(a){return a.replace(/([A-Z])/g,function(a){return\"-\"+a.toLowerCase()})}function setUnit(a,b){return\"string\"!=typeof a||a.match(/^[\\-0-9\\.]+jQuery/)?\"\"+a+b:a}function setFilter(a,b,c){var d=uncamel(b),e=jQuery.browser.mozilla?\"\":jQuery.CSS.sfx;a[e+\"filter\"]=a[e+\"filter\"]||\"\",c=setUnit(c>jQuery.CSS.filters[b].max?jQuery.CSS.filters[b].max:c,jQuery.CSS.filters[b].unit),a[e+\"filter\"]+=d+\"(\"+c+\") \",delete a[b]}function isTouchSupported(){var a=nAgt.msMaxTouchPoints,b=\"ontouchstart\"in document.createElement(\"div\");return a||b?!0:!1}var ytp=ytp||{},getYTPVideoID=function(a){var b,c;return a.indexOf(\"youtu.be\")>0?(b=a.substr(a.lastIndexOf(\"/\")+1,a.length),c=b.indexOf(\"?list=\")>0?b.substr(b.lastIndexOf(\"=\"),b.length):null,b=c?b.substr(0,b.lastIndexOf(\"?\")):b):a.indexOf(\"http\")>-1?(b=a.match(/[\\\\?&]v=([^&#]*)/)[1],c=a.indexOf(\"list=\")>0?a.match(/[\\\\?&]list=([^&#]*)/)[1]:null):(b=a.length>15?null:a,c=b?null:a),{videoID:b,playlistID:c}};!function(jQuery,ytp){jQuery.mbYTPlayer={name:\"jquery.mb.YTPlayer\",version:\"3.1.0\",build:\"6367\",author:\"Matteo Bicocchi (pupunzi)\",apiKey:\"\",defaults:{containment:\"body\",ratio:\"auto\",videoURL:null,playlistURL:null,startAt:0,stopAt:0,autoPlay:!0,vol:50,addRaster:!1,mask:!1,opacity:1,quality:\"default\",mute:!1,loop:!0,fadeOnStartTime:500,showControls:!0,showAnnotations:!1,showYTLogo:!0,stopMovieOnBlur:!0,realfullscreen:!0,mobileFallbackImage:null,gaTrack:!0,optimizeDisplay:!0,remember_last_time:!1,playOnlyIfVisible:!1,anchor:\"center,center\",onReady:function(a){},onError:function(a,b){}},controls:{play:\"P\",pause:\"p\",mute:\"M\",unmute:\"A\",onlyYT:\"O\",showSite:\"R\",ytLogo:\"Y\"},controlBar:null,loading:null,locationProtocol:\"https:\",filters:{grayscale:{value:0,unit:\"%\"},hue_rotate:{value:0,unit:\"deg\"},invert:{value:0,unit:\"%\"},opacity:{value:0,unit:\"%\"},saturate:{value:0,unit:\"%\"},sepia:{value:0,unit:\"%\"},brightness:{value:0,unit:\"%\"},contrast:{value:0,unit:\"%\"},blur:{value:0,unit:\"px\"}},buildPlayer:function(options){return this.each(function(){var YTPlayer=this,$YTPlayer=jQuery(YTPlayer);YTPlayer.loop=0,YTPlayer.opt={},YTPlayer.state=0,YTPlayer.filters=jQuery.mbYTPlayer.filters,YTPlayer.filtersEnabled=!0,YTPlayer.id=YTPlayer.id||\"YTP_\"+(new Date).getTime(),$YTPlayer.addClass(\"mb_YTPlayer\");var property=$YTPlayer.data(\"property\")&&\"string\"==typeof $YTPlayer.data(\"property\")?eval(\"(\"+$YTPlayer.data(\"property\")+\")\"):$YTPlayer.data(\"property\");\"undefined\"!=typeof property&&\"undefined\"!=typeof property.vol&&0===property.vol&&(property.vol=1,property.mute=!0),jQuery.extend(YTPlayer.opt,jQuery.mbYTPlayer.defaults,options,property),YTPlayer.hasChanged||(YTPlayer.defaultOpt={},jQuery.extend(YTPlayer.defaultOpt,jQuery.mbYTPlayer.defaults,options)),\"true\"==YTPlayer.opt.loop&&(YTPlayer.opt.loop=9999),YTPlayer.isRetina=window.retina||window.devicePixelRatio>1;var isIframe=function(){var a=!1;try{self.location.href!=top.location.href&&(a=!0)}catch(b){a=!0}return a};YTPlayer.canGoFullScreen=!isIframe(),YTPlayer.canGoFullScreen||(YTPlayer.opt.realfullscreen=!1),$YTPlayer.attr(\"id\")||$YTPlayer.attr(\"id\",\"ytp_\"+(new Date).getTime());var playerID=\"iframe_\"+YTPlayer.id;YTPlayer.isAlone=!1,YTPlayer.hasFocus=!0,YTPlayer.videoID=this.opt.videoURL?getYTPVideoID(this.opt.videoURL).videoID:$YTPlayer.attr(\"href\")?getYTPVideoID($YTPlayer.attr(\"href\")).videoID:!1,YTPlayer.playlistID=this.opt.videoURL?getYTPVideoID(this.opt.videoURL).playlistID:$YTPlayer.attr(\"href\")?getYTPVideoID($YTPlayer.attr(\"href\")).playlistID:!1,YTPlayer.opt.showAnnotations=YTPlayer.opt.showAnnotations?\"1\":\"3\";var start_from_last=0;jQuery.mbCookie.get(\"YTPlayer_start_from\"+YTPlayer.videoID)&&(start_from_last=parseFloat(jQuery.mbCookie.get(\"YTPlayer_start_from\"+YTPlayer.videoID))),YTPlayer.opt.remember_last_time&&start_from_last&&(YTPlayer.start_from_last=start_from_last,jQuery.mbCookie.remove(\"YTPlayer_start_from\"+YTPlayer.videoID)),jQuery.browser.mobile&&(YTPlayer.opt.showControls=!1);var playerVars={modestbranding:1,autoplay:jQuery.browser.mobile?1:0,controls:0,showinfo:0,rel:0,enablejsapi:1,version:3,playerapiid:playerID,origin:\"*\",allowfullscreen:!0,wmode:\"transparent\",iv_load_policy:YTPlayer.opt.showAnnotations,playsinline:1,mute:jQuery.browser.mobile?1:0};if(document.createElement(\"video\").canPlayType&&jQuery.extend(playerVars,{html5:1}),jQuery.mbBrowser.msie&&jQuery.mbBrowser.version<9&&(this.opt.opacity=1),YTPlayer.isSelf=\"self\"==YTPlayer.opt.containment,YTPlayer.defaultOpt.containment=YTPlayer.opt.containment=jQuery(\"self\"==YTPlayer.opt.containment?this:YTPlayer.opt.containment),YTPlayer.isBackground=YTPlayer.opt.containment.is(\"body\"),!YTPlayer.isBackground||!ytp.backgroundIsInited){var isPlayer=YTPlayer.opt.containment.is(jQuery(this));YTPlayer.canPlayOnMobile=jQuery.mbBrowser.mobile&&\"playsInline\"in document.createElement(\"video\"),YTPlayer.canPlayOnMobile=!0,YTPlayer.isPlayer=!1,isPlayer?YTPlayer.isPlayer=!0:$YTPlayer.hide();var overlay=jQuery(\"<div/>\").css({position:\"absolute\",top:0,left:0,width:\"100%\",height:\"100%\"}).addClass(\"YTPOverlay\");YTPlayer.isPlayer&&overlay.on(\"click\",function(){$YTPlayer.YTPTogglePlay()});var wrapper=jQuery(\"<div/>\").addClass(\"mbYTP_wrapper\").attr(\"id\",\"wrapper_\"+YTPlayer.id);wrapper.css({position:\"absolute\",zIndex:0,minWidth:\"100%\",minHeight:\"100%\",left:0,top:0,overflow:\"hidden\",opacity:0});var playerBox=jQuery(\"<div/>\").attr(\"id\",playerID).addClass(\"playerBox\");if(playerBox.css({position:\"absolute\",zIndex:0,width:\"100%\",height:\"100%\",top:0,left:0,overflow:\"hidden\"}),wrapper.append(playerBox),YTPlayer.opt.containment.children().not(\"script, style\").each(function(){\"static\"==jQuery(this).css(\"position\")&&jQuery(this).css(\"position\",\"relative\")}),YTPlayer.isBackground?(jQuery(\"body\").css({boxSizing:\"border-box\"}),wrapper.css({position:\"fixed\",top:0,left:0,zIndex:0}),$YTPlayer.hide()):\"static\"==YTPlayer.opt.containment.css(\"position\")&&YTPlayer.opt.containment.css({position:\"relative\"}),YTPlayer.opt.containment.prepend(wrapper),YTPlayer.wrapper=wrapper,playerBox.css({opacity:1}),playerBox.after(overlay),YTPlayer.overlay=overlay,jQuery.browser.mobile&&jQuery(\"body\").one(\"touchstart\",function(){YTPlayer.player.playVideo()}),YTPlayer.isBackground||overlay.on(\"mouseenter\",function(){YTPlayer.controlBar&&YTPlayer.controlBar.length&&YTPlayer.controlBar.addClass(\"visible\")}).on(\"mouseleave\",function(){YTPlayer.controlBar&&YTPlayer.controlBar.length&&YTPlayer.controlBar.removeClass(\"visible\")}),ytp.YTAPIReady)setTimeout(function(){jQuery(document).trigger(\"YTAPIReady\")},100);else{jQuery(\"#YTAPI\").remove();var tag=jQuery(\"<script/>\").attr({async:\"async\",src:jQuery.mbYTPlayer.locationProtocol+\"//www.youtube.com/iframe_api?v=\"+jQuery.mbYTPlayer.version,id:\"YTAPI\"});jQuery(\"head\").prepend(tag)}if(jQuery.mbBrowser.mobile&&!YTPlayer.canPlayOnMobile)return YTPlayer.opt.mobileFallbackImage&&wrapper.css({backgroundImage:\"url(\"+YTPlayer.opt.mobileFallbackImage+\")\",backgroundPosition:\"center center\",backgroundSize:\"cover\",backgroundRepeat:\"no-repeat\",opacity:1}),YTPlayer.isPlayer||$YTPlayer.remove(),void jQuery(document).trigger(\"YTPUnavailable\");jQuery(document).on(\"YTAPIReady\",function(){YTPlayer.isBackground&&ytp.backgroundIsInited||YTPlayer.isInit||(YTPlayer.isBackground&&(ytp.backgroundIsInited=!0),YTPlayer.opt.autoPlay=\"undefined\"==typeof YTPlayer.opt.autoPlay?YTPlayer.isBackground?!0:!1:YTPlayer.opt.autoPlay,YTPlayer.opt.vol=YTPlayer.opt.vol?YTPlayer.opt.vol:100,jQuery.mbYTPlayer.getDataFromAPI(YTPlayer),jQuery(YTPlayer).on(\"YTPChanged\",function(){YTPlayer.isInit||(YTPlayer.isInit=!0,new YT.Player(playerID,{videoId:YTPlayer.videoID.toString(),playerVars:playerVars,events:{onReady:function(a){YTPlayer.player=a.target,YTPlayer.isReady||(YTPlayer.isReady=YTPlayer.isPlayer&&!YTPlayer.opt.autoPlay?!1:!0,YTPlayer.playerEl=YTPlayer.player.getIframe(),jQuery(YTPlayer.playerEl).unselectable(),$YTPlayer.optimizeDisplay(),jQuery(window).off(\"resize.YTP_\"+YTPlayer.id).on(\"resize.YTP_\"+YTPlayer.id,function(){$YTPlayer.optimizeDisplay()}),YTPlayer.opt.remember_last_time&&jQuery(window).on(\"unload.YTP_\"+YTPlayer.id,function(){var a=YTPlayer.player.getCurrentTime();jQuery.mbCookie.set(\"YTPlayer_start_from\"+YTPlayer.videoID,a,0)}),jQuery.mbYTPlayer.checkForState(YTPlayer))},onStateChange:function(event){if(\"function\"==typeof event.target.getPlayerState){var state=event.target.getPlayerState();if(YTPlayer.preventTrigger)return void(YTPlayer.preventTrigger=!1);YTPlayer.state=state;var eventType;switch(state){case-1:eventType=\"YTPUnstarted\";break;case 0:eventType=\"YTPRealEnd\";break;case 1:eventType=\"YTPPlay\",YTPlayer.controlBar.length&&YTPlayer.controlBar.find(\".mb_YTPPlaypause\").html(jQuery.mbYTPlayer.controls.pause),\"undefined\"!=typeof _gaq&&eval(YTPlayer.opt.gaTrack)&&_gaq.push([\"_trackEvent\",\"YTPlayer\",\"Play\",YTPlayer.hasData?YTPlayer.videoData.title:YTPlayer.videoID.toString()]),\"undefined\"!=typeof ga&&eval(YTPlayer.opt.gaTrack)&&ga(\"send\",\"event\",\"YTPlayer\",\"play\",YTPlayer.hasData?YTPlayer.videoData.title:YTPlayer.videoID.toString());break;case 2:eventType=\"YTPPause\",YTPlayer.controlBar.length&&YTPlayer.controlBar.find(\".mb_YTPPlaypause\").html(jQuery.mbYTPlayer.controls.play);break;case 3:YTPlayer.player.setPlaybackQuality(YTPlayer.opt.quality),eventType=\"YTPBuffering\",YTPlayer.controlBar.length&&YTPlayer.controlBar.find(\".mb_YTPPlaypause\").html(jQuery.mbYTPlayer.controls.play);break;case 5:eventType=\"YTPCued\"}var YTPEvent=jQuery.Event(eventType);YTPEvent.time=YTPlayer.currentTime,YTPlayer.canTrigger&&jQuery(YTPlayer).trigger(YTPEvent)}},onPlaybackQualityChange:function(a){var b=a.target.getPlaybackQuality(),c=jQuery.Event(\"YTPQualityChange\");c.quality=b,jQuery(YTPlayer).trigger(c)},onError:function(a){150==a.data&&(console.log(\"Embedding this video is restricted by Youtube.\"),YTPlayer.isPlayList&&jQuery(YTPlayer).playNext()),2==a.data&&YTPlayer.isPlayList&&jQuery(YTPlayer).playNext(),\"function\"==typeof YTPlayer.opt.onError&&YTPlayer.opt.onError($YTPlayer,a)}}}))}))}),$YTPlayer.off(\"YTPTime.mask\"),jQuery.mbYTPlayer.applyMask(YTPlayer)}})},isOnScreen:function(a){var b=a.wrapper,c=$(window).scrollTop(),d=c+$(window).height(),e=b.offset().top,f=e+b.height();return d>=f&&e>=c},getDataFromAPI:function(a){if(a.videoData=jQuery.mbStorage.get(\"YTPlayer_data_\"+a.videoID),jQuery(a).off(\"YTPData.YTPlayer\").on(\"YTPData.YTPlayer\",function(){if(a.hasData&&a.isPlayer&&!a.opt.autoPlay){var b=a.videoData.thumb_max||a.videoData.thumb_high||a.videoData.thumb_medium;a.opt.containment.css({background:\"rgba(0,0,0,0.5) url(\"+b+\") center center\",backgroundSize:\"cover\"}),a.opt.backgroundUrl=b}}),a.videoData)setTimeout(function(){a.opt.ratio=\"auto\"==a.opt.ratio?\"16/9\":a.opt.ratio,a.dataReceived=!0,jQuery(a).trigger(\"YTPChanged\");var b=jQuery.Event(\"YTPData\");b.prop={};for(var c in a.videoData)b.prop[c]=a.videoData[c];jQuery(a).trigger(b)},a.opt.fadeOnStartTime),a.hasData=!0;else if(jQuery.mbYTPlayer.apiKey)jQuery.getJSON(jQuery.mbYTPlayer.locationProtocol+\"//www.googleapis.com/youtube/v3/videos?id=\"+a.videoID+\"&key=\"+jQuery.mbYTPlayer.apiKey+\"&part=snippet\",function(b){function c(b){a.videoData={},a.videoData.id=a.videoID,a.videoData.channelTitle=b.channelTitle,a.videoData.title=b.title,a.videoData.description=b.description.length<400?b.description:b.description.substring(0,400)+\" ...\",a.videoData.aspectratio=\"auto\"==a.opt.ratio?\"16/9\":a.opt.ratio,a.opt.ratio=a.videoData.aspectratio,a.videoData.thumb_max=b.thumbnails.maxres?b.thumbnails.maxres.url:null,a.videoData.thumb_high=b.thumbnails.high?b.thumbnails.high.url:null,a.videoData.thumb_medium=b.thumbnails.medium?b.thumbnails.medium.url:null,jQuery.mbStorage.set(\"YTPlayer_data_\"+a.videoID,a.videoData)}a.dataReceived=!0,jQuery(a).trigger(\"YTPChanged\"),c(b.items[0].snippet),a.hasData=!0;var d=jQuery.Event(\"YTPData\");d.prop={};for(var e in a.videoData)d.prop[e]=a.videoData[e];jQuery(a).trigger(d)});else{if(setTimeout(function(){jQuery(a).trigger(\"YTPChanged\")},50),a.isPlayer&&!a.opt.autoPlay){var b=jQuery.mbYTPlayer.locationProtocol+\"//i.ytimg.com/vi/\"+a.videoID+\"/hqdefault.jpg\";b&&a.opt.containment.css({background:\"rgba(0,0,0,0.5) url(\"+b+\") center center\",backgroundSize:\"cover\"}),a.opt.backgroundUrl=b}a.videoData=null,a.opt.ratio=\"auto\"==a.opt.ratio?\"16/9\":a.opt.ratio}a.isPlayer&&!a.opt.autoPlay&&(a.loading=jQuery(\"<div/>\").addClass(\"loading\").html(\"Loading\").hide(),jQuery(a).append(a.loading),a.loading.fadeIn())},removeStoredData:function(){jQuery.mbStorage.remove()},getVideoData:function(){var a=this.get(0);return a.videoData},getVideoID:function(){var a=this.get(0);return a.videoID||!1},setVideoQuality:function(a){var b=this.get(0);b.player.setPlaybackQuality(a)},playlist:function(a,b,c){var d=this,e=d.get(0);return e.isPlayList=!0,b&&(a=jQuery.shuffle(a)),e.videoID||(e.videos=a,e.videoCounter=0,e.videoLength=a.length,jQuery(e).data(\"property\",a[0]),jQuery(e).mb_YTPlayer()),\"function\"==typeof c&&jQuery(e).one(\"YTPChanged\",function(){c(e)}),jQuery(e).on(\"YTPEnd\",function(){jQuery(e).playNext()}),this},playNext:function(){var a=this.get(0);return a.checkForStartAt&&(clearInterval(a.checkForStartAt),clearInterval(a.getState)),a.videoCounter++,a.videoCounter>=a.videoLength&&(a.videoCounter=0),jQuery(a).YTPChangeMovie(a.videos[a.videoCounter]),this},playPrev:function(){var a=this.get(0);return a.checkForStartAt&&(clearInterval(a.checkForStartAt),clearInterval(a.getState)),a.videoCounter--,a.videoCounter<0&&(a.videoCounter=a.videoLength-1),jQuery(a).YTPChangeMovie(a.videos[a.videoCounter]),this},playIndex:function(a){var b=this.get(0);return a-=1,b.checkForStartAt&&(clearInterval(b.checkForStartAt),clearInterval(b.getState)),b.videoCounter=a,b.videoCounter>=b.videoLength-1&&(b.videoCounter=b.videoLength-1),jQuery(b).YTPChangeMovie(b.videos[b.videoCounter]),this},changeMovie:function(a){var b=this,c=b.get(0);c.opt.startAt=0,c.opt.stopAt=0,c.opt.mask=!1,c.opt.mute=!0,c.hasData=!1,c.hasChanged=!0,c.player.loopTime=void 0,a&&jQuery.extend(c.opt,a),c.videoID=getYTPVideoID(c.opt.videoURL).videoID,\"true\"==c.opt.loop&&(c.opt.loop=9999),jQuery(c.playerEl).CSSAnimate({opacity:0},c.opt.fadeOnStartTime,function(){var a=jQuery.Event(\"YTPChangeMovie\");a.time=c.currentTime,a.videoId=c.videoID,jQuery(c).trigger(a),jQuery(c).YTPGetPlayer().cueVideoByUrl(encodeURI(jQuery.mbYTPlayer.locationProtocol+\"//www.youtube.com/v/\"+c.videoID),1,c.opt.quality),jQuery(c).optimizeDisplay(),jQuery.mbYTPlayer.checkForState(c),jQuery.mbYTPlayer.getDataFromAPI(c)}),jQuery.mbYTPlayer.applyMask(c)},getPlayer:function(){return jQuery(this).get(0).player},playerDestroy:function(){var a=this.get(0);ytp.YTAPIReady=!0,ytp.backgroundIsInited=!1,a.isInit=!1,a.videoID=null,a.isReady=!1;var b=a.wrapper;return b.remove(),jQuery(\"#controlBar_\"+a.id).remove(),clearInterval(a.checkForStartAt),clearInterval(a.getState),this},fullscreen:function(real){function hideMouse(){YTPlayer.overlay.css({cursor:\"none\"})}function RunPrefixMethod(a,b){for(var c,d,e=[\"webkit\",\"moz\",\"ms\",\"o\",\"\"],f=0;f<e.length&&!a[c];){if(c=b,\"\"==e[f]&&(c=c.substr(0,1).toLowerCase()+c.substr(1)),c=e[f]+c,d=typeof a[c],\"undefined\"!=d)return e=[e[f]],\"function\"==d?a[c]():a[c];f++}}function launchFullscreen(a){RunPrefixMethod(a,\"RequestFullScreen\")}function cancelFullscreen(){(RunPrefixMethod(document,\"FullScreen\")||RunPrefixMethod(document,\"IsFullScreen\"))&&RunPrefixMethod(document,\"CancelFullScreen\")}var YTPlayer=this.get(0);\"undefined\"==typeof real&&(real=YTPlayer.opt.realfullscreen),real=eval(real);var controls=jQuery(\"#controlBar_\"+YTPlayer.id),fullScreenBtn=controls.find(\".mb_OnlyYT\"),videoWrapper=YTPlayer.isSelf?YTPlayer.opt.containment:YTPlayer.wrapper;if(real){var fullscreenchange=jQuery.mbBrowser.mozilla?\"mozfullscreenchange\":jQuery.mbBrowser.webkit?\"webkitfullscreenchange\":\"fullscreenchange\";jQuery(document).off(fullscreenchange).on(fullscreenchange,function(){var a=RunPrefixMethod(document,\"IsFullScreen\")||RunPrefixMethod(document,\"FullScreen\");a?(jQuery(YTPlayer).YTPSetVideoQuality(\"default\"),jQuery(YTPlayer).trigger(\"YTPFullScreenStart\")):(YTPlayer.isAlone=!1,fullScreenBtn.html(jQuery.mbYTPlayer.controls.onlyYT),jQuery(YTPlayer).YTPSetVideoQuality(YTPlayer.opt.quality),videoWrapper.removeClass(\"YTPFullscreen\"),videoWrapper.CSSAnimate({opacity:YTPlayer.opt.opacity},YTPlayer.opt.fadeOnStartTime),videoWrapper.css({zIndex:0}),YTPlayer.isBackground?jQuery(\"body\").after(controls):YTPlayer.wrapper.before(controls),jQuery(window).resize(),jQuery(YTPlayer).trigger(\"YTPFullScreenEnd\"))})}return YTPlayer.isAlone?(jQuery(document).off(\"mousemove.YTPlayer\"),clearTimeout(YTPlayer.hideCursor),YTPlayer.overlay.css({cursor:\"auto\"}),real?cancelFullscreen():(videoWrapper.CSSAnimate({opacity:YTPlayer.opt.opacity},YTPlayer.opt.fadeOnStartTime),videoWrapper.css({zIndex:0})),fullScreenBtn.html(jQuery.mbYTPlayer.controls.onlyYT),YTPlayer.isAlone=!1):(jQuery(document).on(\"mousemove.YTPlayer\",function(a){YTPlayer.overlay.css({cursor:\"auto\"}),clearTimeout(YTPlayer.hideCursor),jQuery(a.target).parents().is(\".mb_YTPBar\")||(YTPlayer.hideCursor=setTimeout(hideMouse,3e3))}),hideMouse(),real?(videoWrapper.css({opacity:0}),videoWrapper.addClass(\"YTPFullscreen\"),launchFullscreen(videoWrapper.get(0)),setTimeout(function(){videoWrapper.CSSAnimate({opacity:1},2*YTPlayer.opt.fadeOnStartTime),YTPlayer.wrapper.append(controls),jQuery(YTPlayer).optimizeDisplay(),YTPlayer.player.seekTo(YTPlayer.player.getCurrentTime()+.1,!0)},YTPlayer.opt.fadeOnStartTime)):videoWrapper.css({zIndex:1e4}).CSSAnimate({opacity:1},2*YTPlayer.opt.fadeOnStartTime),fullScreenBtn.html(jQuery.mbYTPlayer.controls.showSite),YTPlayer.isAlone=!0),this},toggleLoops:function(){var a=this.get(0),b=a.opt;return 1==b.loop?b.loop=0:(b.startAt?a.player.seekTo(b.startAt):a.player.playVideo(),b.loop=1),this},play:function(){var a=this.get(0);if(!a.isReady)return this;a.player.playVideo(),a.wrapper.CSSAnimate({opacity:a.isAlone?1:a.opt.opacity},4*a.opt.fadeOnStartTime),jQuery(a.playerEl).CSSAnimate({opacity:1},2*a.opt.fadeOnStartTime);var b=jQuery(\"#controlBar_\"+a.id),c=b.find(\".mb_YTPPlaypause\");return c.html(jQuery.mbYTPlayer.controls.pause),a.state=1,a.orig_background=jQuery(a).css(\"background-image\"),this},togglePlay:function(a){var b=this.get(0);return 1==b.state?this.YTPPause():this.YTPPlay(),\"function\"==typeof a&&a(b.state),this},stop:function(){var a=this.get(0),b=jQuery(\"#controlBar_\"+a.id),c=b.find(\".mb_YTPPlaypause\");return c.html(jQuery.mbYTPlayer.controls.play),a.player.stopVideo(),this},pause:function(){var a=this.get(0);return a.player.pauseVideo(),a.state=2,this},seekTo:function(a){var b=this.get(0);return b.player.seekTo(a,!0),this},setVolume:function(a){var b=this.get(0);return a||b.opt.vol||0!=b.player.getVolume()?!a&&b.player.getVolume()>0||a&&b.opt.vol==a?b.isMute?jQuery(b).YTPUnmute():jQuery(b).YTPMute():(b.opt.vol=a,b.player.setVolume(b.opt.vol),b.volumeBar&&b.volumeBar.length&&b.volumeBar.updateSliderVal(a)):jQuery(b).YTPUnmute(),this},toggleVolume:function(){var a=this.get(0);if(a)return a.player.isMuted()?(jQuery(a).YTPUnmute(),!0):(jQuery(a).YTPMute(),!1)},mute:function(){var a=this.get(0);if(!a.isMute){a.player.mute(),a.isMute=!0,a.player.setVolume(0),a.volumeBar&&a.volumeBar.length&&a.volumeBar.width()>10&&a.volumeBar.updateSliderVal(0);var b=jQuery(\"#controlBar_\"+a.id),c=b.find(\".mb_YTPMuteUnmute\");c.html(jQuery.mbYTPlayer.controls.unmute),jQuery(a).addClass(\"isMuted\"),a.volumeBar&&a.volumeBar.length&&a.volumeBar.addClass(\"muted\");var d=jQuery.Event(\"YTPMuted\");return d.time=a.currentTime,a.canTrigger&&jQuery(a).trigger(d),this}},unmute:function(){var a=this.get(0);if(a.isMute){a.player.unMute(),a.isMute=!1,a.player.setVolume(a.opt.vol),a.volumeBar&&a.volumeBar.length&&a.volumeBar.updateSliderVal(a.opt.vol>10?a.opt.vol:10);var b=jQuery(\"#controlBar_\"+a.id),c=b.find(\".mb_YTPMuteUnmute\");c.html(jQuery.mbYTPlayer.controls.mute),jQuery(a).removeClass(\"isMuted\"),a.volumeBar&&a.volumeBar.length&&a.volumeBar.removeClass(\"muted\");var d=jQuery.Event(\"YTPUnmuted\");return d.time=a.currentTime,a.canTrigger&&jQuery(a).trigger(d),this}},applyFilter:function(a,b){return this.each(function(){var c=this;c.filters[a].value=b,c.filtersEnabled&&jQuery(c).YTPEnableFilters()})},applyFilters:function(a){return this.each(function(){var b=this;if(!b.isReady)return void jQuery(b).on(\"YTPReady\",function(){jQuery(b).YTPApplyFilters(a)});for(var c in a)jQuery(b).YTPApplyFilter(c,a[c]);jQuery(b).trigger(\"YTPFiltersApplied\")})},toggleFilter:function(a,b){return this.each(function(){var c=this;c.filters[a].value?c.filters[a].value=0:c.filters[a].value=b,c.filtersEnabled&&jQuery(this).YTPEnableFilters()})},toggleFilters:function(a){return this.each(function(){var b=this;b.filtersEnabled?(jQuery(b).trigger(\"YTPDisableFilters\"),jQuery(b).YTPDisableFilters()):(jQuery(b).YTPEnableFilters(),jQuery(b).trigger(\"YTPEnableFilters\")),\"function\"==typeof a&&a(b.filtersEnabled)})},disableFilters:function(){return this.each(function(){var a=this,b=jQuery(a.playerEl);b.css(\"-webkit-filter\",\"\"),b.css(\"filter\",\"\"),a.filtersEnabled=!1})},enableFilters:function(){return this.each(function(){var a=this,b=jQuery(a.playerEl),c=\"\";for(var d in a.filters)a.filters[d].value&&(c+=d.replace(\"_\",\"-\")+\"(\"+a.filters[d].value+a.filters[d].unit+\") \");b.css(\"-webkit-filter\",c),b.css(\"filter\",c),a.filtersEnabled=!0})},removeFilter:function(a,b){return this.each(function(){var c=this;if(\"function\"==typeof a&&(b=a,a=null),a)jQuery(this).YTPApplyFilter(a,0),\"function\"==typeof b&&b(a);else for(var d in c.filters)jQuery(this).YTPApplyFilter(d,0),\"function\"==typeof b&&b(d)})},getFilters:function(){var a=this.get(0);return a.filters},addMask:function(a){var b=this.get(0),c=b.overlay;a||(a=b.actualMask);var d=jQuery(\"<img/>\").attr(\"src\",a).on(\"load\",function(){c.CSSAnimate({opacity:0},b.opt.fadeOnStartTime,function(){b.hasMask=!0,d.remove(),c.css({backgroundImage:\"url(\"+a+\")\",backgroundRepeat:\"no-repeat\",backgroundPosition:\"center center\",backgroundSize:\"cover\"}),c.CSSAnimate({opacity:1},b.opt.fadeOnStartTime)})});return this},removeMask:function(){var a=this.get(0),b=a.overlay;return b.CSSAnimate({opacity:0},a.opt.fadeOnStartTime,function(){a.hasMask=!1,b.css({backgroundImage:\"\",backgroundRepeat:\"\",backgroundPosition:\"\",backgroundSize:\"\"}),b.CSSAnimate({opacity:1},a.opt.fadeOnStartTime)}),this},applyMask:function(a){var b=jQuery(a);if(b.off(\"YTPTime.mask\"),a.opt.mask)if(\"string\"==typeof a.opt.mask)b.YTPAddMask(a.opt.mask),a.actualMask=a.opt.mask;else if(\"object\"==typeof a.opt.mask){for(var c in a.opt.mask)if(a.opt.mask[c]){jQuery(\"<img/>\").attr(\"src\",a.opt.mask[c])}a.opt.mask[0]&&b.YTPAddMask(a.opt.mask[0]),b.on(\"YTPTime.mask\",function(c){for(var d in a.opt.mask)c.time==d&&(a.opt.mask[d]?(b.YTPAddMask(a.opt.mask[d]),a.actualMask=a.opt.mask[d]):b.YTPRemoveMask())})}},toggleMask:function(){var a=this.get(0),b=$(a);return a.hasMask?b.YTPRemoveMask():b.YTPAddMask(),this},manageProgress:function(){var a=this.get(0),b=jQuery(\"#controlBar_\"+a.id),c=b.find(\".mb_YTPProgress\"),d=b.find(\".mb_YTPLoaded\"),e=b.find(\".mb_YTPseekbar\"),f=c.outerWidth(),g=Math.floor(a.player.getCurrentTime()),h=Math.floor(a.player.getDuration()),i=g*f/h,j=0,k=100*a.player.getVideoLoadedFraction();return d.css({left:j,width:k+\"%\"}),e.css({left:0,width:i}),{totalTime:h,currentTime:g}},buildControls:function(YTPlayer){var data=YTPlayer.opt;if(data.showYTLogo=data.showYTLogo||data.printUrl,!jQuery(\"#controlBar_\"+YTPlayer.id).length){YTPlayer.controlBar=jQuery(\"<span/>\").attr(\"id\",\"controlBar_\"+YTPlayer.id).addClass(\"mb_YTPBar\").css({whiteSpace:\"noWrap\",position:YTPlayer.isBackground?\"fixed\":\"absolute\",zIndex:YTPlayer.isBackground?1e4:1e3}).hide();var buttonBar=jQuery(\"<div/>\").addClass(\"buttonBar\"),playpause=jQuery(\"<span>\"+jQuery.mbYTPlayer.controls.play+\"</span>\").addClass(\"mb_YTPPlaypause ytpicon\").click(function(){1==YTPlayer.player.getPlayerState()?jQuery(YTPlayer).YTPPause():jQuery(YTPlayer).YTPPlay()}),MuteUnmute=jQuery(\"<span>\"+jQuery.mbYTPlayer.controls.mute+\"</span>\").addClass(\"mb_YTPMuteUnmute ytpicon\").click(function(){0==YTPlayer.player.getVolume()?jQuery(YTPlayer).YTPUnmute():jQuery(YTPlayer).YTPMute()}),volumeBar=jQuery(\"<div/>\").addClass(\"mb_YTPVolumeBar\").css({display:\"inline-block\"});YTPlayer.volumeBar=volumeBar;var idx=jQuery(\"<span/>\").addClass(\"mb_YTPTime\"),vURL=data.videoURL?data.videoURL:\"\";vURL.indexOf(\"http\")<0&&(vURL=jQuery.mbYTPlayer.locationProtocol+\"//www.youtube.com/watch?v=\"+data.videoURL);var movieUrl=jQuery(\"<span/>\").html(jQuery.mbYTPlayer.controls.ytLogo).addClass(\"mb_YTPUrl ytpicon\").attr(\"title\",\"view on YouTube\").on(\"click\",function(){window.open(vURL,\"viewOnYT\")}),onlyVideo=jQuery(\"<span/>\").html(jQuery.mbYTPlayer.controls.onlyYT).addClass(\"mb_OnlyYT ytpicon\").on(\"click\",function(){jQuery(YTPlayer).YTPFullscreen(data.realfullscreen)}),progressBar=jQuery(\"<div/>\").addClass(\"mb_YTPProgress\").css(\"position\",\"absolute\").click(function(a){timeBar.css({width:a.clientX-timeBar.offset().left}),YTPlayer.timeW=a.clientX-timeBar.offset().left,YTPlayer.controlBar.find(\".mb_YTPLoaded\").css({width:0});var b=Math.floor(YTPlayer.player.getDuration());YTPlayer[\"goto\"]=timeBar.outerWidth()*b/progressBar.outerWidth(),YTPlayer.player.seekTo(parseFloat(YTPlayer[\"goto\"]),!0),YTPlayer.controlBar.find(\".mb_YTPLoaded\").css({width:0})}),loadedBar=jQuery(\"<div/>\").addClass(\"mb_YTPLoaded\").css(\"position\",\"absolute\"),timeBar=jQuery(\"<div/>\").addClass(\"mb_YTPseekbar\").css(\"position\",\"absolute\");progressBar.append(loadedBar).append(timeBar),buttonBar.append(playpause).append(MuteUnmute).append(volumeBar).append(idx),data.showYTLogo&&buttonBar.append(movieUrl),(YTPlayer.isBackground||eval(YTPlayer.opt.realfullscreen)&&!YTPlayer.isBackground)&&buttonBar.append(onlyVideo),YTPlayer.controlBar.append(buttonBar).append(progressBar),YTPlayer.isBackground?jQuery(\"body\").after(YTPlayer.controlBar):(YTPlayer.controlBar.addClass(\"inlinePlayer\"),YTPlayer.wrapper.before(YTPlayer.controlBar)),volumeBar.simpleSlider({initialval:YTPlayer.opt.vol,scale:100,orientation:\"h\",callback:function(a){0==a.value?jQuery(YTPlayer).YTPMute():jQuery(YTPlayer).YTPUnmute(),YTPlayer.player.setVolume(a.value),YTPlayer.isMute||(YTPlayer.opt.vol=a.value)}})}},checkForState:function(YTPlayer){var interval=YTPlayer.opt.showControls?100:400;return clearInterval(YTPlayer.getState),jQuery.contains(document,YTPlayer)?(jQuery.mbYTPlayer.checkForStart(YTPlayer),void(YTPlayer.getState=setInterval(function(){var prog=jQuery(YTPlayer).YTPManageProgress(),$YTPlayer=jQuery(YTPlayer),data=YTPlayer.opt,startAt=YTPlayer.start_from_last?YTPlayer.start_from_last:YTPlayer.opt.startAt?YTPlayer.opt.startAt:1;YTPlayer.start_from_last=null;var stopAt=YTPlayer.opt.stopAt>YTPlayer.opt.startAt?YTPlayer.opt.stopAt:0;if(stopAt=stopAt<YTPlayer.player.getDuration()?stopAt:0,YTPlayer.currentTime!=prog.currentTime){var YTPEvent=jQuery.Event(\"YTPTime\");YTPEvent.time=YTPlayer.currentTime,jQuery(YTPlayer).trigger(YTPEvent)}if(YTPlayer.currentTime=prog.currentTime,YTPlayer.totalTime=YTPlayer.player.getDuration(),0==YTPlayer.player.getVolume()?$YTPlayer.addClass(\"isMuted\"):$YTPlayer.removeClass(\"isMuted\"),YTPlayer.opt.showControls&&(prog.totalTime?YTPlayer.controlBar.find(\".mb_YTPTime\").html(jQuery.mbYTPlayer.formatTime(prog.currentTime)+\" / \"+jQuery.mbYTPlayer.formatTime(prog.totalTime)):YTPlayer.controlBar.find(\".mb_YTPTime\").html(\"-- : -- / -- : --\")),eval(YTPlayer.opt.stopMovieOnBlur)&&(document.hasFocus()?document.hasFocus()&&!YTPlayer.hasFocus&&-1!=YTPlayer.state&&0!=YTPlayer.state&&(YTPlayer.hasFocus=!0,$YTPlayer.YTPPlay()):1==YTPlayer.state&&(YTPlayer.hasFocus=!1,$YTPlayer.YTPPause())),YTPlayer.opt.playOnlyIfVisible){var isOnScreen=jQuery.mbYTPlayer.isOnScreen(YTPlayer);isOnScreen||1!=YTPlayer.state?YTPlayer.hasFocus||-1==YTPlayer.state||0==YTPlayer.state||(YTPlayer.hasFocus=!0,$YTPlayer.YTPPlay()):(YTPlayer.hasFocus=!1,$YTPlayer.YTPPause(),console.debug(YTPlayer.id,isOnScreen),console.debug(YTPlayer.state))}if(YTPlayer.controlBar.length&&YTPlayer.controlBar.outerWidth()<=400&&!YTPlayer.isCompact?(YTPlayer.controlBar.addClass(\"compact\"),YTPlayer.isCompact=!0,!YTPlayer.isMute&&YTPlayer.volumeBar&&YTPlayer.volumeBar.updateSliderVal(YTPlayer.opt.vol)):YTPlayer.controlBar.length&&YTPlayer.controlBar.outerWidth()>400&&YTPlayer.isCompact&&(YTPlayer.controlBar.removeClass(\"compact\"),YTPlayer.isCompact=!1,!YTPlayer.isMute&&YTPlayer.volumeBar&&YTPlayer.volumeBar.updateSliderVal(YTPlayer.opt.vol)),1==YTPlayer.player.getPlayerState()&&(parseFloat(YTPlayer.player.getDuration()-.5)<YTPlayer.player.getCurrentTime()||stopAt>0&&parseFloat(YTPlayer.player.getCurrentTime())>stopAt)){if(YTPlayer.isEnded)return;if(YTPlayer.isEnded=!0,setTimeout(function(){YTPlayer.isEnded=!1},1e3),YTPlayer.isPlayList){if(!data.loop||data.loop>0&&YTPlayer.player.loopTime===data.loop-1){YTPlayer.player.loopTime=void 0,clearInterval(YTPlayer.getState);var YTPEnd=jQuery.Event(\"YTPEnd\");return YTPEnd.time=YTPlayer.currentTime,void jQuery(YTPlayer).trigger(YTPEnd)}}else if(!data.loop||data.loop>0&&YTPlayer.player.loopTime===data.loop-1)return YTPlayer.player.loopTime=void 0,YTPlayer.preventTrigger=!0,YTPlayer.state=2,jQuery(YTPlayer).YTPPause(),void YTPlayer.wrapper.CSSAnimate({opacity:0},YTPlayer.opt.fadeOnStartTime,function(){YTPlayer.controlBar.length&&YTPlayer.controlBar.find(\".mb_YTPPlaypause\").html(jQuery.mbYTPlayer.controls.play);var a=jQuery.Event(\"YTPEnd\");a.time=YTPlayer.currentTime,jQuery(YTPlayer).trigger(a),YTPlayer.player.seekTo(startAt,!0),YTPlayer.isBackground?YTPlayer.orig_background&&jQuery(YTPlayer).css(\"background-image\",YTPlayer.orig_background):YTPlayer.opt.backgroundUrl&&YTPlayer.isPlayer&&(YTPlayer.opt.backgroundUrl=YTPlayer.opt.backgroundUrl||YTPlayer.orig_background,YTPlayer.opt.containment.css({background:\"url(\"+YTPlayer.opt.backgroundUrl+\") center center\",backgroundSize:\"cover\"}))});YTPlayer.player.loopTime=YTPlayer.player.loopTime?++YTPlayer.player.loopTime:1,startAt=startAt||1,YTPlayer.preventTrigger=!0,YTPlayer.state=2,jQuery(YTPlayer).YTPPause(),YTPlayer.player.seekTo(startAt,!0),$YTPlayer.YTPPlay()}},interval))):(jQuery(YTPlayer).YTPPlayerDestroy(),clearInterval(YTPlayer.getState),void clearInterval(YTPlayer.checkForStartAt))},getTime:function(){var a=this.get(0);return jQuery.mbYTPlayer.formatTime(a.currentTime)},getTotalTime:function(){var a=this.get(0);return jQuery.mbYTPlayer.formatTime(a.totalTime)},checkForStart:function(a){var b=jQuery(a);if(!jQuery.contains(document,a))return void jQuery(a).YTPPlayerDestroy();if(a.preventTrigger=!0,a.state=2,jQuery(a).YTPPause(),jQuery(a).muteYTPVolume(),jQuery(\"#controlBar_\"+a.id).remove(),a.controlBar=!1,a.opt.showControls&&jQuery.mbYTPlayer.buildControls(a),a.overlay)if(a.opt.addRaster){var c=\"dot\"==a.opt.addRaster?\"raster-dot\":\"raster\";a.overlay.addClass(a.isRetina?c+\" retina\":c)}else a.overlay.removeClass(function(a,b){var c=b.split(\" \"),d=[];return jQuery.each(c,function(a,b){/raster.*/.test(b)&&d.push(b)}),d.push(\"retina\"),d.join(\" \")});var d=a.start_from_last?a.start_from_last:a.opt.startAt?a.opt.startAt:1;a.start_from_last=null,a.player.playVideo(),a.player.seekTo(d,!0),clearInterval(a.checkForStartAt),a.checkForStartAt=setInterval(function(){jQuery(a).YTPMute();var c=a.player.getVideoLoadedFraction()>=d/a.player.getDuration();if(a.player.getDuration()>0&&a.player.getCurrentTime()>=d&&c){clearInterval(a.checkForStartAt),\"function\"==typeof a.opt.onReady&&a.opt.onReady(a),a.isReady=!0;var e=jQuery.Event(\"YTPReady\");if(e.time=a.currentTime,jQuery(a).trigger(e),a.preventTrigger=!0,a.state=2,jQuery(a).YTPPause(),a.opt.mute||jQuery(a).YTPUnmute(),a.canTrigger=!0,a.opt.autoPlay){var f=jQuery.Event(\"YTPStart\");f.time=a.currentTime,jQuery(a).trigger(f),jQuery(a.playerEl).CSSAnimate({opacity:1},1e3),a.wrapper.CSSAnimate({opacity:a.isAlone?1:a.opt.opacity},2*a.opt.fadeOnStartTime),b.YTPPlay(),\"mac\"==jQuery.mbBrowser.os.name&&jQuery.mbBrowser.safari&&jQuery.mbBrowser.versionCompare(jQuery.mbBrowser.fullVersion,\"10.1\")<0&&(a.safariPlay=setInterval(function(){\n 1!=a.state?b.YTPPlay():clearInterval(a.safariPlay)},10)),b.one(\"YTPReady\",function(){b.YTPPlay()})}else setTimeout(function(){a.player.pauseVideo(),a.player.seekTo(d,!0),a.isPlayer||(jQuery(a.playerEl).CSSAnimate({opacity:1},a.opt.fadeOnStartTime),a.wrapper.CSSAnimate({opacity:a.isAlone?1:a.opt.opacity},a.opt.fadeOnStartTime))},250),a.controlBar.length&&a.controlBar.find(\".mb_YTPPlaypause\").html(jQuery.mbYTPlayer.controls.play);a.isPlayer&&!a.opt.autoPlay&&a.loading&&a.loading.length&&(a.loading.html(\"Ready\"),setTimeout(function(){a.loading.fadeOut()},100)),a.controlBar&&a.controlBar.length&&a.controlBar.slideDown(1e3)}else\"mac\"==jQuery.mbBrowser.os.name&&jQuery.mbBrowser.safari&&jQuery.mbBrowser.fullVersion&&jQuery.mbBrowser.versionCompare(jQuery.mbBrowser.fullVersion,\"10.1\")<0&&(a.player.playVideo(),d>=0&&a.player.seekTo(d,!0))},100)},setAnchor:function(a){var b=this;b.optimizeDisplay(a)},getAnchor:function(){var a=this.get(0);return a.opt.anchor},formatTime:function(a){var b=Math.floor(a/60),c=Math.floor(a-60*b);return(9>=b?\"0\"+b:b)+\" : \"+(9>=c?\"0\"+c:c)}},jQuery.fn.optimizeDisplay=function(anchor){var YTPlayer=this.get(0),playerBox=jQuery(YTPlayer.playerEl),vid={};YTPlayer.opt.anchor=anchor||YTPlayer.opt.anchor,YTPlayer.opt.anchor=\"undefined \"!=typeof YTPlayer.opt.anchor?YTPlayer.opt.anchor:\"center,center\";var YTPAlign=YTPlayer.opt.anchor.split(\",\");if(YTPlayer.opt.optimizeDisplay){var abundance=YTPlayer.isPlayer?0:180,win={},el=YTPlayer.wrapper;win.width=el.outerWidth(),win.height=el.outerHeight()+abundance,YTPlayer.opt.ratio=eval(YTPlayer.opt.ratio),vid.width=win.width,vid.height=Math.ceil(vid.width/YTPlayer.opt.ratio),vid.marginTop=Math.ceil(-((vid.height-win.height)/2)),vid.marginLeft=0;var lowest=vid.height<win.height;lowest&&(vid.height=win.height,vid.width=Math.ceil(vid.height*YTPlayer.opt.ratio),vid.marginTop=0,vid.marginLeft=Math.ceil(-((vid.width-win.width)/2)));for(var a in YTPAlign)if(YTPAlign.hasOwnProperty(a)){var al=YTPAlign[a].replace(/ /g,\"\");switch(al){case\"top\":vid.marginTop=lowest?-((vid.height-win.height)/2):0;break;case\"bottom\":vid.marginTop=lowest?0:-(vid.height-win.height);break;case\"left\":vid.marginLeft=0;break;case\"right\":vid.marginLeft=lowest?-(vid.width-win.width):0;break;default:vid.width>win.width&&(vid.marginLeft=-((vid.width-win.width)/2))}}}else vid.width=\"100%\",vid.height=\"100%\",vid.marginTop=0,vid.marginLeft=0;playerBox.css({width:vid.width,height:vid.height,marginTop:vid.marginTop,marginLeft:vid.marginLeft,maxWidth:\"initial\"})},jQuery.shuffle=function(a){for(var b=a.slice(),c=b.length,d=c;d--;){var e=parseInt(Math.random()*c),f=b[d];b[d]=b[e],b[e]=f}return b},jQuery.fn.unselectable=function(){return this.each(function(){jQuery(this).css({\"-moz-user-select\":\"none\",\"-webkit-user-select\":\"none\",\"user-select\":\"none\"}).attr(\"unselectable\",\"on\")})},jQuery.fn.YTPlayer=jQuery.mbYTPlayer.buildPlayer,jQuery.fn.YTPGetPlayer=jQuery.mbYTPlayer.getPlayer,jQuery.fn.YTPGetVideoID=jQuery.mbYTPlayer.getVideoID,jQuery.fn.YTPChangeMovie=jQuery.mbYTPlayer.changeMovie,jQuery.fn.YTPPlayerDestroy=jQuery.mbYTPlayer.playerDestroy,jQuery.fn.YTPPlay=jQuery.mbYTPlayer.play,jQuery.fn.YTPTogglePlay=jQuery.mbYTPlayer.togglePlay,jQuery.fn.YTPStop=jQuery.mbYTPlayer.stop,jQuery.fn.YTPPause=jQuery.mbYTPlayer.pause,jQuery.fn.YTPSeekTo=jQuery.mbYTPlayer.seekTo,jQuery.fn.YTPlaylist=jQuery.mbYTPlayer.playlist,jQuery.fn.YTPPlayNext=jQuery.mbYTPlayer.playNext,jQuery.fn.YTPPlayPrev=jQuery.mbYTPlayer.playPrev,jQuery.fn.YTPPlayIndex=jQuery.mbYTPlayer.playIndex,jQuery.fn.YTPMute=jQuery.mbYTPlayer.mute,jQuery.fn.YTPUnmute=jQuery.mbYTPlayer.unmute,jQuery.fn.YTPToggleVolume=jQuery.mbYTPlayer.toggleVolume,jQuery.fn.YTPSetVolume=jQuery.mbYTPlayer.setVolume,jQuery.fn.YTPGetVideoData=jQuery.mbYTPlayer.getVideoData,jQuery.fn.YTPFullscreen=jQuery.mbYTPlayer.fullscreen,jQuery.fn.YTPToggleLoops=jQuery.mbYTPlayer.toggleLoops,jQuery.fn.YTPSetVideoQuality=jQuery.mbYTPlayer.setVideoQuality,jQuery.fn.YTPManageProgress=jQuery.mbYTPlayer.manageProgress,jQuery.fn.YTPApplyFilter=jQuery.mbYTPlayer.applyFilter,jQuery.fn.YTPApplyFilters=jQuery.mbYTPlayer.applyFilters,jQuery.fn.YTPToggleFilter=jQuery.mbYTPlayer.toggleFilter,jQuery.fn.YTPToggleFilters=jQuery.mbYTPlayer.toggleFilters,jQuery.fn.YTPRemoveFilter=jQuery.mbYTPlayer.removeFilter,jQuery.fn.YTPDisableFilters=jQuery.mbYTPlayer.disableFilters,jQuery.fn.YTPEnableFilters=jQuery.mbYTPlayer.enableFilters,jQuery.fn.YTPGetFilters=jQuery.mbYTPlayer.getFilters,jQuery.fn.YTPGetTime=jQuery.mbYTPlayer.getTime,jQuery.fn.YTPGetTotalTime=jQuery.mbYTPlayer.getTotalTime,jQuery.fn.YTPAddMask=jQuery.mbYTPlayer.addMask,jQuery.fn.YTPRemoveMask=jQuery.mbYTPlayer.removeMask,jQuery.fn.YTPToggleMask=jQuery.mbYTPlayer.toggleMask,jQuery.fn.YTPSetAnchor=jQuery.mbYTPlayer.setAnchor,jQuery.fn.YTPGetAnchor=jQuery.mbYTPlayer.getAnchor,jQuery.fn.mb_YTPlayer=jQuery.mbYTPlayer.buildPlayer,jQuery.fn.playNext=jQuery.mbYTPlayer.playNext,jQuery.fn.playPrev=jQuery.mbYTPlayer.playPrev,jQuery.fn.changeMovie=jQuery.mbYTPlayer.changeMovie,jQuery.fn.getVideoID=jQuery.mbYTPlayer.getVideoID,jQuery.fn.getPlayer=jQuery.mbYTPlayer.getPlayer,jQuery.fn.playerDestroy=jQuery.mbYTPlayer.playerDestroy,jQuery.fn.fullscreen=jQuery.mbYTPlayer.fullscreen,jQuery.fn.buildYTPControls=jQuery.mbYTPlayer.buildControls,jQuery.fn.playYTP=jQuery.mbYTPlayer.play,jQuery.fn.toggleLoops=jQuery.mbYTPlayer.toggleLoops,jQuery.fn.stopYTP=jQuery.mbYTPlayer.stop,jQuery.fn.pauseYTP=jQuery.mbYTPlayer.pause,jQuery.fn.seekToYTP=jQuery.mbYTPlayer.seekTo,jQuery.fn.muteYTPVolume=jQuery.mbYTPlayer.mute,jQuery.fn.unmuteYTPVolume=jQuery.mbYTPlayer.unmute,jQuery.fn.setYTPVolume=jQuery.mbYTPlayer.setVolume,jQuery.fn.setVideoQuality=jQuery.mbYTPlayer.setVideoQuality,jQuery.fn.manageYTPProgress=jQuery.mbYTPlayer.manageProgress,jQuery.fn.YTPGetDataFromFeed=jQuery.mbYTPlayer.getVideoData}(jQuery,ytp),jQuery.support.CSStransition=function(){var a=document.body||document.documentElement,b=a.style;return void 0!==b.transition||void 0!==b.WebkitTransition||void 0!==b.MozTransition||void 0!==b.MsTransition||void 0!==b.OTransition}(),jQuery.CSS={name:\"mb.CSSAnimate\",author:\"Matteo Bicocchi\",version:\"2.0.0\",transitionEnd:\"transitionEnd\",sfx:\"\",filters:{blur:{min:0,max:100,unit:\"px\"},brightness:{min:0,max:400,unit:\"%\"},contrast:{min:0,max:400,unit:\"%\"},grayscale:{min:0,max:100,unit:\"%\"},hueRotate:{min:0,max:360,unit:\"deg\"},invert:{min:0,max:100,unit:\"%\"},saturate:{min:0,max:400,unit:\"%\"},sepia:{min:0,max:100,unit:\"%\"}},normalizeCss:function(a){var b=jQuery.extend(!0,{},a);jQuery.browser.webkit||jQuery.browser.opera?jQuery.CSS.sfx=\"-webkit-\":jQuery.browser.mozilla?jQuery.CSS.sfx=\"-moz-\":jQuery.browser.msie&&(jQuery.CSS.sfx=\"-ms-\");for(var c in b){\"transform\"===c&&(b[jQuery.CSS.sfx+\"transform\"]=b[c],delete b[c]),\"transform-origin\"===c&&(b[jQuery.CSS.sfx+\"transform-origin\"]=a[c],delete b[c]),\"filter\"!==c||jQuery.browser.mozilla||(b[jQuery.CSS.sfx+\"filter\"]=a[c],delete b[c]),\"blur\"===c&&setFilter(b,\"blur\",a[c]),\"brightness\"===c&&setFilter(b,\"brightness\",a[c]),\"contrast\"===c&&setFilter(b,\"contrast\",a[c]),\"grayscale\"===c&&setFilter(b,\"grayscale\",a[c]),\"hueRotate\"===c&&setFilter(b,\"hueRotate\",a[c]),\"invert\"===c&&setFilter(b,\"invert\",a[c]),\"saturate\"===c&&setFilter(b,\"saturate\",a[c]),\"sepia\"===c&&setFilter(b,\"sepia\",a[c]);var d=\"\";\"x\"===c&&(d=jQuery.CSS.sfx+\"transform\",b[d]=b[d]||\"\",b[d]+=\" translateX(\"+setUnit(a[c],\"px\")+\")\",delete b[c]),\"y\"===c&&(d=jQuery.CSS.sfx+\"transform\",b[d]=b[d]||\"\",b[d]+=\" translateY(\"+setUnit(a[c],\"px\")+\")\",delete b[c]),\"z\"===c&&(d=jQuery.CSS.sfx+\"transform\",b[d]=b[d]||\"\",b[d]+=\" translateZ(\"+setUnit(a[c],\"px\")+\")\",delete b[c]),\"rotate\"===c&&(d=jQuery.CSS.sfx+\"transform\",b[d]=b[d]||\"\",b[d]+=\" rotate(\"+setUnit(a[c],\"deg\")+\")\",delete b[c]),\"rotateX\"===c&&(d=jQuery.CSS.sfx+\"transform\",b[d]=b[d]||\"\",b[d]+=\" rotateX(\"+setUnit(a[c],\"deg\")+\")\",delete b[c]),\"rotateY\"===c&&(d=jQuery.CSS.sfx+\"transform\",b[d]=b[d]||\"\",b[d]+=\" rotateY(\"+setUnit(a[c],\"deg\")+\")\",delete b[c]),\"rotateZ\"===c&&(d=jQuery.CSS.sfx+\"transform\",b[d]=b[d]||\"\",b[d]+=\" rotateZ(\"+setUnit(a[c],\"deg\")+\")\",delete b[c]),\"scale\"===c&&(d=jQuery.CSS.sfx+\"transform\",b[d]=b[d]||\"\",b[d]+=\" scale(\"+setUnit(a[c],\"\")+\")\",delete b[c]),\"scaleX\"===c&&(d=jQuery.CSS.sfx+\"transform\",b[d]=b[d]||\"\",b[d]+=\" scaleX(\"+setUnit(a[c],\"\")+\")\",delete b[c]),\"scaleY\"===c&&(d=jQuery.CSS.sfx+\"transform\",b[d]=b[d]||\"\",b[d]+=\" scaleY(\"+setUnit(a[c],\"\")+\")\",delete b[c]),\"scaleZ\"===c&&(d=jQuery.CSS.sfx+\"transform\",b[d]=b[d]||\"\",b[d]+=\" scaleZ(\"+setUnit(a[c],\"\")+\")\",delete b[c]),\"skew\"===c&&(d=jQuery.CSS.sfx+\"transform\",b[d]=b[d]||\"\",b[d]+=\" skew(\"+setUnit(a[c],\"deg\")+\")\",delete b[c]),\"skewX\"===c&&(d=jQuery.CSS.sfx+\"transform\",b[d]=b[d]||\"\",b[d]+=\" skewX(\"+setUnit(a[c],\"deg\")+\")\",delete b[c]),\"skewY\"===c&&(d=jQuery.CSS.sfx+\"transform\",b[d]=b[d]||\"\",b[d]+=\" skewY(\"+setUnit(a[c],\"deg\")+\")\",delete b[c]),\"perspective\"===c&&(d=jQuery.CSS.sfx+\"transform\",b[d]=b[d]||\"\",b[d]+=\" perspective(\"+setUnit(a[c],\"px\")+\")\",delete b[c])}return b},getProp:function(a){var b=[];for(var c in a)b.indexOf(c)<0&&b.push(uncamel(c));return b.join(\",\")},animate:function(a,b,c,d,e){return this.each(function(){function f(){g.called=!0,g.CSSAIsRunning=!1,h.off(jQuery.CSS.transitionEnd+\".\"+g.id),clearTimeout(g.timeout),h.css(jQuery.CSS.sfx+\"transition\",\"\"),\"function\"==typeof e&&e.apply(g),\"function\"==typeof g.CSSqueue&&(g.CSSqueue(),g.CSSqueue=null)}var g=this,h=jQuery(this);g.id=g.id||\"CSSA_\"+(new Date).getTime();var i=i||{type:\"noEvent\"};if(g.CSSAIsRunning&&g.eventType==i.type&&!jQuery.browser.msie&&jQuery.browser.version<=9)return void(g.CSSqueue=function(){h.CSSAnimate(a,b,c,d,e)});if(g.CSSqueue=null,g.eventType=i.type,0!==h.length&&a){if(a=jQuery.normalizeCss(a),g.CSSAIsRunning=!0,\"function\"==typeof b&&(e=b,b=jQuery.fx.speeds._default),\"function\"==typeof c&&(d=c,c=0),\"string\"==typeof c&&(e=c,c=0),\"function\"==typeof d&&(e=d,d=\"cubic-bezier(0.65,0.03,0.36,0.72)\"),\"string\"==typeof b)for(var j in jQuery.fx.speeds){if(b==j){b=jQuery.fx.speeds[j];break}b=jQuery.fx.speeds._default}if(b||(b=jQuery.fx.speeds._default),\"string\"==typeof e&&(d=e,e=null),!jQuery.support.CSStransition){for(var k in a){if(\"transform\"===k&&delete a[k],\"filter\"===k&&delete a[k],\"transform-origin\"===k&&delete a[k],\"auto\"===a[k]&&delete a[k],\"x\"===k){var l=a[k],m=\"left\";a[m]=l,delete a[k]}if(\"y\"===k){var l=a[k],m=\"top\";a[m]=l,delete a[k]}(\"-ms-transform\"===k||\"-ms-filter\"===k)&&delete a[k]}return void h.delay(c).animate(a,b,e)}var n={\"default\":\"ease\",\"in\":\"ease-in\",out:\"ease-out\",\"in-out\":\"ease-in-out\",snap:\"cubic-bezier(0,1,.5,1)\",easeOutCubic:\"cubic-bezier(.215,.61,.355,1)\",easeInOutCubic:\"cubic-bezier(.645,.045,.355,1)\",easeInCirc:\"cubic-bezier(.6,.04,.98,.335)\",easeOutCirc:\"cubic-bezier(.075,.82,.165,1)\",easeInOutCirc:\"cubic-bezier(.785,.135,.15,.86)\",easeInExpo:\"cubic-bezier(.95,.05,.795,.035)\",easeOutExpo:\"cubic-bezier(.19,1,.22,1)\",easeInOutExpo:\"cubic-bezier(1,0,0,1)\",easeInQuad:\"cubic-bezier(.55,.085,.68,.53)\",easeOutQuad:\"cubic-bezier(.25,.46,.45,.94)\",easeInOutQuad:\"cubic-bezier(.455,.03,.515,.955)\",easeInQuart:\"cubic-bezier(.895,.03,.685,.22)\",easeOutQuart:\"cubic-bezier(.165,.84,.44,1)\",easeInOutQuart:\"cubic-bezier(.77,0,.175,1)\",easeInQuint:\"cubic-bezier(.755,.05,.855,.06)\",easeOutQuint:\"cubic-bezier(.23,1,.32,1)\",easeInOutQuint:\"cubic-bezier(.86,0,.07,1)\",easeInSine:\"cubic-bezier(.47,0,.745,.715)\",easeOutSine:\"cubic-bezier(.39,.575,.565,1)\",easeInOutSine:\"cubic-bezier(.445,.05,.55,.95)\",easeInBack:\"cubic-bezier(.6,-.28,.735,.045)\",easeOutBack:\"cubic-bezier(.175, .885,.32,1.275)\",easeInOutBack:\"cubic-bezier(.68,-.55,.265,1.55)\"};n[d]&&(d=n[d]),h.off(jQuery.CSS.transitionEnd+\".\"+g.id);var o=jQuery.CSS.getProp(a),p={};jQuery.extend(p,a),p[jQuery.CSS.sfx+\"transition-property\"]=o,p[jQuery.CSS.sfx+\"transition-duration\"]=b+\"ms\",p[jQuery.CSS.sfx+\"transition-delay\"]=c+\"ms\",p[jQuery.CSS.sfx+\"transition-timing-function\"]=d,setTimeout(function(){h.one(jQuery.CSS.transitionEnd+\".\"+g.id,f),h.css(p)},1),g.timeout=setTimeout(function(){return g.called||!e?(g.called=!1,void(g.CSSAIsRunning=!1)):(h.css(jQuery.CSS.sfx+\"transition\",\"\"),e.apply(g),g.CSSAIsRunning=!1,void(\"function\"==typeof g.CSSqueue&&(g.CSSqueue(),g.CSSqueue=null)))},b+c+10)}})}},jQuery.fn.CSSAnimate=jQuery.CSS.animate,jQuery.normalizeCss=jQuery.CSS.normalizeCss,jQuery.fn.css3=function(a){return this.each(function(){var b=jQuery(this),c=jQuery.normalizeCss(a);b.css(c)})};var nAgt=navigator.userAgent;jQuery.browser=jQuery.browser||{},jQuery.browser.mozilla=!1,jQuery.browser.webkit=!1,jQuery.browser.opera=!1,jQuery.browser.safari=!1,jQuery.browser.chrome=!1,jQuery.browser.androidStock=!1,jQuery.browser.msie=!1,jQuery.browser.edge=!1,jQuery.browser.ua=nAgt;var getOS=function(){var a={version:\"Unknown version\",name:\"Unknown OS\"};return-1!=navigator.appVersion.indexOf(\"Win\")&&(a.name=\"Windows\"),-1!=navigator.appVersion.indexOf(\"Mac\")&&0>navigator.appVersion.indexOf(\"Mobile\")&&(a.name=\"Mac\"),-1!=navigator.appVersion.indexOf(\"Linux\")&&(a.name=\"Linux\"),/Mac OS X/.test(nAgt)&&!/Mobile/.test(nAgt)&&(a.version=/Mac OS X (10[\\.\\_\\d]+)/.exec(nAgt)[1],a.version=a.version.replace(/_/g,\".\").substring(0,5)),/Windows/.test(nAgt)&&(a.version=\"Unknown.Unknown\"),/Windows NT 5.1/.test(nAgt)&&(a.version=\"5.1\"),/Windows NT 6.0/.test(nAgt)&&(a.version=\"6.0\"),/Windows NT 6.1/.test(nAgt)&&(a.version=\"6.1\"),/Windows NT 6.2/.test(nAgt)&&(a.version=\"6.2\"),/Windows NT 10.0/.test(nAgt)&&(a.version=\"10.0\"),/Linux/.test(nAgt)&&/Linux/.test(nAgt)&&(a.version=\"Unknown.Unknown\"),a.name=a.name.toLowerCase(),a.major_version=\"Unknown\",a.minor_version=\"Unknown\",\"Unknown.Unknown\"!=a.version&&(a.major_version=parseFloat(a.version.split(\".\")[0]),a.minor_version=parseFloat(a.version.split(\".\")[1])),a};jQuery.browser.os=getOS(),jQuery.browser.hasTouch=isTouchSupported(),jQuery.browser.name=navigator.appName,jQuery.browser.fullVersion=\"\"+parseFloat(navigator.appVersion),jQuery.browser.majorVersion=parseInt(navigator.appVersion,10);var nameOffset,verOffset,ix;if(-1!=(verOffset=nAgt.indexOf(\"Opera\")))jQuery.browser.opera=!0,jQuery.browser.name=\"Opera\",jQuery.browser.fullVersion=nAgt.substring(verOffset+6),-1!=(verOffset=nAgt.indexOf(\"Version\"))&&(jQuery.browser.fullVersion=nAgt.substring(verOffset+8));else if(-1!=(verOffset=nAgt.indexOf(\"OPR\")))jQuery.browser.opera=!0,jQuery.browser.name=\"Opera\",jQuery.browser.fullVersion=nAgt.substring(verOffset+4);else if(-1!=(verOffset=nAgt.indexOf(\"MSIE\")))jQuery.browser.msie=!0,jQuery.browser.name=\"Microsoft Internet Explorer\",jQuery.browser.fullVersion=nAgt.substring(verOffset+5);else if(-1!=nAgt.indexOf(\"Trident\")){jQuery.browser.msie=!0,jQuery.browser.name=\"Microsoft Internet Explorer\";var start=nAgt.indexOf(\"rv:\")+3,end=start+4;jQuery.browser.fullVersion=nAgt.substring(start,end)}else-1!=(verOffset=nAgt.indexOf(\"Edge\"))?(jQuery.browser.edge=!0,jQuery.browser.name=\"Microsoft Edge\",jQuery.browser.fullVersion=nAgt.substring(verOffset+5)):-1!=(verOffset=nAgt.indexOf(\"Chrome\"))?(jQuery.browser.webkit=!0,jQuery.browser.chrome=!0,jQuery.browser.name=\"Chrome\",jQuery.browser.fullVersion=nAgt.substring(verOffset+7)):-1<nAgt.indexOf(\"mozilla/5.0\")&&-1<nAgt.indexOf(\"android \")&&-1<nAgt.indexOf(\"applewebkit\")&&!(-1<nAgt.indexOf(\"chrome\"))?(verOffset=nAgt.indexOf(\"Chrome\"),jQuery.browser.webkit=!0,jQuery.browser.androidStock=!0,jQuery.browser.name=\"androidStock\",jQuery.browser.fullVersion=nAgt.substring(verOffset+7)):-1!=(verOffset=nAgt.indexOf(\"Safari\"))?(jQuery.browser.webkit=!0,jQuery.browser.safari=!0,jQuery.browser.name=\"Safari\",jQuery.browser.fullVersion=nAgt.substring(verOffset+7),-1!=(verOffset=nAgt.indexOf(\"Version\"))&&(jQuery.browser.fullVersion=nAgt.substring(verOffset+8))):-1!=(verOffset=nAgt.indexOf(\"AppleWebkit\"))?(jQuery.browser.webkit=!0,jQuery.browser.safari=!0,jQuery.browser.name=\"Safari\",jQuery.browser.fullVersion=nAgt.substring(verOffset+7),-1!=(verOffset=nAgt.indexOf(\"Version\"))&&(jQuery.browser.fullVersion=nAgt.substring(verOffset+8))):-1!=(verOffset=nAgt.indexOf(\"Firefox\"))?(jQuery.browser.mozilla=!0,jQuery.browser.name=\"Firefox\",jQuery.browser.fullVersion=nAgt.substring(verOffset+8)):(nameOffset=nAgt.lastIndexOf(\" \")+1)<(verOffset=nAgt.lastIndexOf(\"/\"))&&(jQuery.browser.name=nAgt.substring(nameOffset,verOffset),jQuery.browser.fullVersion=nAgt.substring(verOffset+1),jQuery.browser.name.toLowerCase()==jQuery.browser.name.toUpperCase()&&(jQuery.browser.name=navigator.appName));-1!=(ix=jQuery.browser.fullVersion.indexOf(\";\"))&&(jQuery.browser.fullVersion=jQuery.browser.fullVersion.substring(0,ix)),-1!=(ix=jQuery.browser.fullVersion.indexOf(\" \"))&&(jQuery.browser.fullVersion=jQuery.browser.fullVersion.substring(0,ix)),jQuery.browser.majorVersion=parseInt(\"\"+jQuery.browser.fullVersion,10),isNaN(jQuery.browser.majorVersion)&&(jQuery.browser.fullVersion=\"\"+parseFloat(navigator.appVersion),jQuery.browser.majorVersion=parseInt(navigator.appVersion,10)),jQuery.browser.version=jQuery.browser.majorVersion,jQuery.browser.android=/Android/i.test(nAgt),jQuery.browser.blackberry=/BlackBerry|BB|PlayBook/i.test(nAgt),jQuery.browser.ios=/iPhone|iPad|iPod|webOS/i.test(nAgt),jQuery.browser.operaMobile=/Opera Mini/i.test(nAgt),jQuery.browser.windowsMobile=/IEMobile|Windows Phone/i.test(nAgt),jQuery.browser.kindle=/Kindle|Silk/i.test(nAgt),jQuery.browser.mobile=jQuery.browser.android||jQuery.browser.blackberry||jQuery.browser.ios||jQuery.browser.windowsMobile||jQuery.browser.operaMobile||jQuery.browser.kindle,jQuery.isMobile=jQuery.browser.mobile,jQuery.isTablet=jQuery.browser.mobile&&765<jQuery(window).width(),jQuery.isAndroidDefault=jQuery.browser.android&&!/chrome/i.test(nAgt),jQuery.mbBrowser=jQuery.browser,jQuery.browser.versionCompare=function(a,b){if(\"stringstring\"!=typeof a+typeof b)return!1;for(var c=a.split(\".\"),d=b.split(\".\"),e=0,f=Math.max(c.length,d.length);f>e;e++){if(c[e]&&!d[e]&&0<parseInt(c[e])||parseInt(c[e])>parseInt(d[e]))return 1;if(d[e]&&!c[e]&&0<parseInt(d[e])||parseInt(c[e])<parseInt(d[e]))return-1}return 0},function(a){a.simpleSlider={defaults:{initialval:0,scale:100,orientation:\"h\",readonly:!1,callback:!1},events:{start:a.browser.mobile?\"touchstart\":\"mousedown\",end:a.browser.mobile?\"touchend\":\"mouseup\",move:a.browser.mobile?\"touchmove\":\"mousemove\"},init:function(b){return this.each(function(){var c=this,d=a(c);d.addClass(\"simpleSlider\"),c.opt={},a.extend(c.opt,a.simpleSlider.defaults,b),a.extend(c.opt,d.data());var e=\"h\"==c.opt.orientation?\"horizontal\":\"vertical\";e=a(\"<div/>\").addClass(\"level\").addClass(e),d.prepend(e),c.level=e,d.css({cursor:\"default\"}),\"auto\"==c.opt.scale&&(c.opt.scale=a(c).outerWidth()),d.updateSliderVal(),c.opt.readonly||(d.on(a.simpleSlider.events.start,function(b){a.browser.mobile&&(b=b.changedTouches[0]),c.canSlide=!0,d.updateSliderVal(b),\"h\"==c.opt.orientation?d.css({cursor:\"col-resize\"}):d.css({cursor:\"row-resize\"}),a.browser.mobile||(b.preventDefault(),b.stopPropagation())}),a(document).on(a.simpleSlider.events.move,function(b){a.browser.mobile&&(b=b.changedTouches[0]),c.canSlide&&(a(document).css({cursor:\"default\"}),d.updateSliderVal(b),a.browser.mobile||(b.preventDefault(),b.stopPropagation()))}).on(a.simpleSlider.events.end,function(){a(document).css({cursor:\"auto\"}),c.canSlide=!1,d.css({cursor:\"auto\"})}))})},updateSliderVal:function(b){var c=this.get(0);if(c.opt){c.opt.initialval=\"number\"==typeof c.opt.initialval?c.opt.initialval:c.opt.initialval(c);var d=a(c).outerWidth(),e=a(c).outerHeight();c.x=\"object\"==typeof b?b.clientX+document.body.scrollLeft-this.offset().left:\"number\"==typeof b?b*d/c.opt.scale:c.opt.initialval*d/c.opt.scale,c.y=\"object\"==typeof b?b.clientY+document.body.scrollTop-this.offset().top:\"number\"==typeof b?(c.opt.scale-c.opt.initialval-b)*e/c.opt.scale:c.opt.initialval*e/c.opt.scale,c.y=this.outerHeight()-c.y,c.scaleX=c.x*c.opt.scale/d,c.scaleY=c.y*c.opt.scale/e,c.outOfRangeX=c.scaleX>c.opt.scale?c.scaleX-c.opt.scale:0>c.scaleX?c.scaleX:0,c.outOfRangeY=c.scaleY>c.opt.scale?c.scaleY-c.opt.scale:0>c.scaleY?c.scaleY:0,c.outOfRange=\"h\"==c.opt.orientation?c.outOfRangeX:c.outOfRangeY,c.value=\"undefined\"!=typeof b?\"h\"==c.opt.orientation?c.x>=this.outerWidth()?c.opt.scale:0>=c.x?0:c.scaleX:c.y>=this.outerHeight()?c.opt.scale:0>=c.y?0:c.scaleY:\"h\"==c.opt.orientation?c.scaleX:c.scaleY,\"h\"==c.opt.orientation?c.level.width(Math.floor(100*c.x/d)+\"%\"):c.level.height(Math.floor(100*c.y/e)),\"function\"==typeof c.opt.callback&&c.opt.callback(c)}}},a.fn.simpleSlider=a.simpleSlider.init,a.fn.updateSliderVal=a.simpleSlider.updateSliderVal}(jQuery),function(a){a.mbCookie={set:function(a,b,c,d){\"object\"==typeof b&&(b=JSON.stringify(b)),d=d?\"; domain=\"+d:\"\";var e=new Date,f=\"\";c>0&&(e.setTime(e.getTime()+864e5*c),f=\"; expires=\"+e.toGMTString()),document.cookie=a+\"=\"+b+f+\"; path=/\"+d},get:function(a){a+=\"=\";for(var b=document.cookie.split(\";\"),c=0;c<b.length;c++){for(var d=b[c];\" \"==d.charAt(0);)d=d.substring(1,d.length);if(0==d.indexOf(a))try{return JSON.parse(d.substring(a.length,d.length))}catch(e){return d.substring(a.length,d.length)}}return null},remove:function(b){a.mbCookie.set(b,\"\",-1)}},a.mbStorage={set:function(a,b){\"object\"==typeof b&&(b=JSON.stringify(b)),localStorage.setItem(a,b)},get:function(a){if(!localStorage[a])return null;try{return JSON.parse(localStorage[a])}catch(b){return localStorage[a]}},remove:function(a){a?localStorage.removeItem(a):localStorage.clear()}}}(jQuery);", "/*! VelocityJS.org (1.2.2). (C) 2014 Julian Shapiro. MIT @license: en.wikipedia.org/wiki/MIT_License */\n/*! VelocityJS.org jQuery Shim (1.0.1). (C) 2014 The jQuery Foundation. MIT @license: en.wikipedia.org/wiki/MIT_License. */\n!function(e){function t(e){var t=e.length,r=$.type(e);return\"function\"===r||$.isWindow(e)?!1:1===e.nodeType&&t?!0:\"array\"===r||0===t||\"number\"==typeof t&&t>0&&t-1 in e}if(!e.jQuery){var $=function(e,t){return new $.fn.init(e,t)};$.isWindow=function(e){return null!=e&&e==e.window},$.type=function(e){return null==e?e+\"\":\"object\"==typeof e||\"function\"==typeof e?a[o.call(e)]||\"object\":typeof e},$.isArray=Array.isArray||function(e){return\"array\"===$.type(e)},$.isPlainObject=function(e){var t;if(!e||\"object\"!==$.type(e)||e.nodeType||$.isWindow(e))return!1;try{if(e.constructor&&!n.call(e,\"constructor\")&&!n.call(e.constructor.prototype,\"isPrototypeOf\"))return!1}catch(r){return!1}for(t in e);return void 0===t||n.call(e,t)},$.each=function(e,r,a){var n,o=0,i=e.length,s=t(e);if(a){if(s)for(;i>o&&(n=r.apply(e[o],a),n!==!1);o++);else for(o in e)if(n=r.apply(e[o],a),n===!1)break}else if(s)for(;i>o&&(n=r.call(e[o],o,e[o]),n!==!1);o++);else for(o in e)if(n=r.call(e[o],o,e[o]),n===!1)break;return e},$.data=function(e,t,a){if(void 0===a){var n=e[$.expando],o=n&&r[n];if(void 0===t)return o;if(o&&t in o)return o[t]}else if(void 0!==t){var n=e[$.expando]||(e[$.expando]=++$.uuid);return r[n]=r[n]||{},r[n][t]=a,a}},$.removeData=function(e,t){var a=e[$.expando],n=a&&r[a];n&&$.each(t,function(e,t){delete n[t]})},$.extend=function(){var e,t,r,a,n,o,i=arguments[0]||{},s=1,l=arguments.length,u=!1;for(\"boolean\"==typeof i&&(u=i,i=arguments[s]||{},s++),\"object\"!=typeof i&&\"function\"!==$.type(i)&&(i={}),s===l&&(i=this,s--);l>s;s++)if(null!=(n=arguments[s]))for(a in n)e=i[a],r=n[a],i!==r&&(u&&r&&($.isPlainObject(r)||(t=$.isArray(r)))?(t?(t=!1,o=e&&$.isArray(e)?e:[]):o=e&&$.isPlainObject(e)?e:{},i[a]=$.extend(u,o,r)):void 0!==r&&(i[a]=r));return i},$.queue=function(e,r,a){function n(e,r){var a=r||[];return null!=e&&(t(Object(e))?!function(e,t){for(var r=+t.length,a=0,n=e.length;r>a;)e[n++]=t[a++];if(r!==r)for(;void 0!==t[a];)e[n++]=t[a++];return e.length=n,e}(a,\"string\"==typeof e?[e]:e):[].push.call(a,e)),a}if(e){r=(r||\"fx\")+\"queue\";var o=$.data(e,r);return a?(!o||$.isArray(a)?o=$.data(e,r,n(a)):o.push(a),o):o||[]}},$.dequeue=function(e,t){$.each(e.nodeType?[e]:e,function(e,r){t=t||\"fx\";var a=$.queue(r,t),n=a.shift();\"inprogress\"===n&&(n=a.shift()),n&&(\"fx\"===t&&a.unshift(\"inprogress\"),n.call(r,function(){$.dequeue(r,t)}))})},$.fn=$.prototype={init:function(e){if(e.nodeType)return this[0]=e,this;throw new Error(\"Not a DOM node.\")},offset:function(){var t=this[0].getBoundingClientRect?this[0].getBoundingClientRect():{top:0,left:0};return{top:t.top+(e.pageYOffset||document.scrollTop||0)-(document.clientTop||0),left:t.left+(e.pageXOffset||document.scrollLeft||0)-(document.clientLeft||0)}},position:function(){function e(){for(var e=this.offsetParent||document;e&&\"html\"===!e.nodeType.toLowerCase&&\"static\"===e.style.position;)e=e.offsetParent;return e||document}var t=this[0],e=e.apply(t),r=this.offset(),a=/^(?:body|html)$/i.test(e.nodeName)?{top:0,left:0}:$(e).offset();return r.top-=parseFloat(t.style.marginTop)||0,r.left-=parseFloat(t.style.marginLeft)||0,e.style&&(a.top+=parseFloat(e.style.borderTopWidth)||0,a.left+=parseFloat(e.style.borderLeftWidth)||0),{top:r.top-a.top,left:r.left-a.left}}};var r={};$.expando=\"velocity\"+(new Date).getTime(),$.uuid=0;for(var a={},n=a.hasOwnProperty,o=a.toString,i=\"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"),s=0;s<i.length;s++)a[\"[object \"+i[s]+\"]\"]=i[s].toLowerCase();$.fn.init.prototype=$.fn,e.Velocity={Utilities:$}}}(window),function(e){\"object\"==typeof module&&\"object\"==typeof module.exports?module.exports=e():\"function\"==typeof define&&define.amd?define(e):e()}(function(){return function(e,t,r,a){function n(e){for(var t=-1,r=e?e.length:0,a=[];++t<r;){var n=e[t];n&&a.push(n)}return a}function o(e){return g.isWrapped(e)?e=[].slice.call(e):g.isNode(e)&&(e=[e]),e}function i(e){var t=$.data(e,\"velocity\");return null===t?a:t}function s(e){return function(t){return Math.round(t*e)*(1/e)}}function l(e,r,a,n){function o(e,t){return 1-3*t+3*e}function i(e,t){return 3*t-6*e}function s(e){return 3*e}function l(e,t,r){return((o(t,r)*e+i(t,r))*e+s(t))*e}function u(e,t,r){return 3*o(t,r)*e*e+2*i(t,r)*e+s(t)}function c(t,r){for(var n=0;m>n;++n){var o=u(r,e,a);if(0===o)return r;var i=l(r,e,a)-t;r-=i/o}return r}function p(){for(var t=0;b>t;++t)w[t]=l(t*x,e,a)}function f(t,r,n){var o,i,s=0;do i=r+(n-r)/2,o=l(i,e,a)-t,o>0?n=i:r=i;while(Math.abs(o)>h&&++s<v);return i}function d(t){for(var r=0,n=1,o=b-1;n!=o&&w[n]<=t;++n)r+=x;--n;var i=(t-w[n])/(w[n+1]-w[n]),s=r+i*x,l=u(s,e,a);return l>=y?c(t,s):0==l?s:f(t,r,r+x)}function g(){V=!0,(e!=r||a!=n)&&p()}var m=4,y=.001,h=1e-7,v=10,b=11,x=1/(b-1),S=\"Float32Array\"in t;if(4!==arguments.length)return!1;for(var P=0;4>P;++P)if(\"number\"!=typeof arguments[P]||isNaN(arguments[P])||!isFinite(arguments[P]))return!1;e=Math.min(e,1),a=Math.min(a,1),e=Math.max(e,0),a=Math.max(a,0);var w=S?new Float32Array(b):new Array(b),V=!1,C=function(t){return V||g(),e===r&&a===n?t:0===t?0:1===t?1:l(d(t),r,n)};C.getControlPoints=function(){return[{x:e,y:r},{x:a,y:n}]};var T=\"generateBezier(\"+[e,r,a,n]+\")\";return C.toString=function(){return T},C}function u(e,t){var r=e;return g.isString(e)?v.Easings[e]||(r=!1):r=g.isArray(e)&&1===e.length?s.apply(null,e):g.isArray(e)&&2===e.length?b.apply(null,e.concat([t])):g.isArray(e)&&4===e.length?l.apply(null,e):!1,r===!1&&(r=v.Easings[v.defaults.easing]?v.defaults.easing:h),r}function c(e){if(e){var t=(new Date).getTime(),r=v.State.calls.length;r>1e4&&(v.State.calls=n(v.State.calls));for(var o=0;r>o;o++)if(v.State.calls[o]){var s=v.State.calls[o],l=s[0],u=s[2],f=s[3],d=!!f,m=null;f||(f=v.State.calls[o][3]=t-16);for(var y=Math.min((t-f)/u.duration,1),h=0,b=l.length;b>h;h++){var S=l[h],w=S.element;if(i(w)){var V=!1;if(u.display!==a&&null!==u.display&&\"none\"!==u.display){if(\"flex\"===u.display){var C=[\"-webkit-box\",\"-moz-box\",\"-ms-flexbox\",\"-webkit-flex\"];$.each(C,function(e,t){x.setPropertyValue(w,\"display\",t)})}x.setPropertyValue(w,\"display\",u.display)}u.visibility!==a&&\"hidden\"!==u.visibility&&x.setPropertyValue(w,\"visibility\",u.visibility);for(var T in S)if(\"element\"!==T){var k=S[T],A,F=g.isString(k.easing)?v.Easings[k.easing]:k.easing;if(1===y)A=k.endValue;else{var E=k.endValue-k.startValue;if(A=k.startValue+E*F(y,u,E),!d&&A===k.currentValue)continue}if(k.currentValue=A,\"tween\"===T)m=A;else{if(x.Hooks.registered[T]){var j=x.Hooks.getRoot(T),H=i(w).rootPropertyValueCache[j];H&&(k.rootPropertyValue=H)}var N=x.setPropertyValue(w,T,k.currentValue+(0===parseFloat(A)?\"\":k.unitType),k.rootPropertyValue,k.scrollData);x.Hooks.registered[T]&&(i(w).rootPropertyValueCache[j]=x.Normalizations.registered[j]?x.Normalizations.registered[j](\"extract\",null,N[1]):N[1]),\"transform\"===N[0]&&(V=!0)}}u.mobileHA&&i(w).transformCache.translate3d===a&&(i(w).transformCache.translate3d=\"(0px, 0px, 0px)\",V=!0),V&&x.flushTransformCache(w)}}u.display!==a&&\"none\"!==u.display&&(v.State.calls[o][2].display=!1),u.visibility!==a&&\"hidden\"!==u.visibility&&(v.State.calls[o][2].visibility=!1),u.progress&&u.progress.call(s[1],s[1],y,Math.max(0,f+u.duration-t),f,m),1===y&&p(o)}}v.State.isTicking&&P(c)}function p(e,t){if(!v.State.calls[e])return!1;for(var r=v.State.calls[e][0],n=v.State.calls[e][1],o=v.State.calls[e][2],s=v.State.calls[e][4],l=!1,u=0,c=r.length;c>u;u++){var p=r[u].element;if(t||o.loop||(\"none\"===o.display&&x.setPropertyValue(p,\"display\",o.display),\"hidden\"===o.visibility&&x.setPropertyValue(p,\"visibility\",o.visibility)),o.loop!==!0&&($.queue(p)[1]===a||!/\\.velocityQueueEntryFlag/i.test($.queue(p)[1]))&&i(p)){i(p).isAnimating=!1,i(p).rootPropertyValueCache={};var f=!1;$.each(x.Lists.transforms3D,function(e,t){var r=/^scale/.test(t)?1:0,n=i(p).transformCache[t];i(p).transformCache[t]!==a&&new RegExp(\"^\\\\(\"+r+\"[^.]\").test(n)&&(f=!0,delete i(p).transformCache[t])}),o.mobileHA&&(f=!0,delete i(p).transformCache.translate3d),f&&x.flushTransformCache(p),x.Values.removeClass(p,\"velocity-animating\")}if(!t&&o.complete&&!o.loop&&u===c-1)try{o.complete.call(n,n)}catch(d){setTimeout(function(){throw d},1)}s&&o.loop!==!0&&s(n),i(p)&&o.loop===!0&&!t&&($.each(i(p).tweensContainer,function(e,t){/^rotate/.test(e)&&360===parseFloat(t.endValue)&&(t.endValue=0,t.startValue=360),/^backgroundPosition/.test(e)&&100===parseFloat(t.endValue)&&\"%\"===t.unitType&&(t.endValue=0,t.startValue=100)}),v(p,\"reverse\",{loop:!0,delay:o.delay})),o.queue!==!1&&$.dequeue(p,o.queue)}v.State.calls[e]=!1;for(var g=0,m=v.State.calls.length;m>g;g++)if(v.State.calls[g]!==!1){l=!0;break}l===!1&&(v.State.isTicking=!1,delete v.State.calls,v.State.calls=[])}var f=function(){if(r.documentMode)return r.documentMode;for(var e=7;e>4;e--){var t=r.createElement(\"div\");if(t.innerHTML=\"<!--[if IE \"+e+\"]><span></span><![endif]-->\",t.getElementsByTagName(\"span\").length)return t=null,e}return a}(),d=function(){var e=0;return t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||function(t){var r=(new Date).getTime(),a;return a=Math.max(0,16-(r-e)),e=r+a,setTimeout(function(){t(r+a)},a)}}(),g={isString:function(e){return\"string\"==typeof e},isArray:Array.isArray||function(e){return\"[object Array]\"===Object.prototype.toString.call(e)},isFunction:function(e){return\"[object Function]\"===Object.prototype.toString.call(e)},isNode:function(e){return e&&e.nodeType},isNodeList:function(e){return\"object\"==typeof e&&/^\\[object (HTMLCollection|NodeList|Object)\\]$/.test(Object.prototype.toString.call(e))&&e.length!==a&&(0===e.length||\"object\"==typeof e[0]&&e[0].nodeType>0)},isWrapped:function(e){return e&&(e.jquery||t.Zepto&&t.Zepto.zepto.isZ(e))},isSVG:function(e){return t.SVGElement&&e instanceof t.SVGElement},isEmptyObject:function(e){for(var t in e)return!1;return!0}},$,m=!1;if(e.fn&&e.fn.jquery?($=e,m=!0):$=t.Velocity.Utilities,8>=f&&!m)throw new Error(\"Velocity: IE8 and below require jQuery to be loaded before Velocity.\");if(7>=f)return void(jQuery.fn.velocity=jQuery.fn.animate);var y=400,h=\"swing\",v={State:{isMobile:/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),isAndroid:/Android/i.test(navigator.userAgent),isGingerbread:/Android 2\\.3\\.[3-7]/i.test(navigator.userAgent),isChrome:t.chrome,isFirefox:/Firefox/i.test(navigator.userAgent),prefixElement:r.createElement(\"div\"),prefixMatches:{},scrollAnchor:null,scrollPropertyLeft:null,scrollPropertyTop:null,isTicking:!1,calls:[]},CSS:{},Utilities:$,Redirects:{},Easings:{},Promise:t.Promise,defaults:{queue:\"\",duration:y,easing:h,begin:a,complete:a,progress:a,display:a,visibility:a,loop:!1,delay:!1,mobileHA:!0,_cacheValues:!0},init:function(e){$.data(e,\"velocity\",{isSVG:g.isSVG(e),isAnimating:!1,computedStyle:null,tweensContainer:null,rootPropertyValueCache:{},transformCache:{}})},hook:null,mock:!1,version:{major:1,minor:2,patch:2},debug:!1};t.pageYOffset!==a?(v.State.scrollAnchor=t,v.State.scrollPropertyLeft=\"pageXOffset\",v.State.scrollPropertyTop=\"pageYOffset\"):(v.State.scrollAnchor=r.documentElement||r.body.parentNode||r.body,v.State.scrollPropertyLeft=\"scrollLeft\",v.State.scrollPropertyTop=\"scrollTop\");var b=function(){function e(e){return-e.tension*e.x-e.friction*e.v}function t(t,r,a){var n={x:t.x+a.dx*r,v:t.v+a.dv*r,tension:t.tension,friction:t.friction};return{dx:n.v,dv:e(n)}}function r(r,a){var n={dx:r.v,dv:e(r)},o=t(r,.5*a,n),i=t(r,.5*a,o),s=t(r,a,i),l=1/6*(n.dx+2*(o.dx+i.dx)+s.dx),u=1/6*(n.dv+2*(o.dv+i.dv)+s.dv);return r.x=r.x+l*a,r.v=r.v+u*a,r}return function a(e,t,n){var o={x:-1,v:0,tension:null,friction:null},i=[0],s=0,l=1e-4,u=.016,c,p,f;for(e=parseFloat(e)||500,t=parseFloat(t)||20,n=n||null,o.tension=e,o.friction=t,c=null!==n,c?(s=a(e,t),p=s/n*u):p=u;;)if(f=r(f||o,p),i.push(1+f.x),s+=16,!(Math.abs(f.x)>l&&Math.abs(f.v)>l))break;return c?function(e){return i[e*(i.length-1)|0]}:s}}();v.Easings={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},spring:function(e){return 1-Math.cos(4.5*e*Math.PI)*Math.exp(6*-e)}},$.each([[\"ease\",[.25,.1,.25,1]],[\"ease-in\",[.42,0,1,1]],[\"ease-out\",[0,0,.58,1]],[\"ease-in-out\",[.42,0,.58,1]],[\"easeInSine\",[.47,0,.745,.715]],[\"easeOutSine\",[.39,.575,.565,1]],[\"easeInOutSine\",[.445,.05,.55,.95]],[\"easeInQuad\",[.55,.085,.68,.53]],[\"easeOutQuad\",[.25,.46,.45,.94]],[\"easeInOutQuad\",[.455,.03,.515,.955]],[\"easeInCubic\",[.55,.055,.675,.19]],[\"easeOutCubic\",[.215,.61,.355,1]],[\"easeInOutCubic\",[.645,.045,.355,1]],[\"easeInQuart\",[.895,.03,.685,.22]],[\"easeOutQuart\",[.165,.84,.44,1]],[\"easeInOutQuart\",[.77,0,.175,1]],[\"easeInQuint\",[.755,.05,.855,.06]],[\"easeOutQuint\",[.23,1,.32,1]],[\"easeInOutQuint\",[.86,0,.07,1]],[\"easeInExpo\",[.95,.05,.795,.035]],[\"easeOutExpo\",[.19,1,.22,1]],[\"easeInOutExpo\",[1,0,0,1]],[\"easeInCirc\",[.6,.04,.98,.335]],[\"easeOutCirc\",[.075,.82,.165,1]],[\"easeInOutCirc\",[.785,.135,.15,.86]]],function(e,t){v.Easings[t[0]]=l.apply(null,t[1])});var x=v.CSS={RegEx:{isHex:/^#([A-f\\d]{3}){1,2}$/i,valueUnwrap:/^[A-z]+\\((.*)\\)$/i,wrappedValueAlreadyExtracted:/[0-9.]+ [0-9.]+ [0-9.]+( [0-9.]+)?/,valueSplit:/([A-z]+\\(.+\\))|(([A-z0-9#-.]+?)(?=\\s|$))/gi},Lists:{colors:[\"fill\",\"stroke\",\"stopColor\",\"color\",\"backgroundColor\",\"borderColor\",\"borderTopColor\",\"borderRightColor\",\"borderBottomColor\",\"borderLeftColor\",\"outlineColor\"],transformsBase:[\"translateX\",\"translateY\",\"scale\",\"scaleX\",\"scaleY\",\"skewX\",\"skewY\",\"rotateZ\"],transforms3D:[\"transformPerspective\",\"translateZ\",\"scaleZ\",\"rotateX\",\"rotateY\"]},Hooks:{templates:{textShadow:[\"Color X Y Blur\",\"black 0px 0px 0px\"],boxShadow:[\"Color X Y Blur Spread\",\"black 0px 0px 0px 0px\"],clip:[\"Top Right Bottom Left\",\"0px 0px 0px 0px\"],backgroundPosition:[\"X Y\",\"0% 0%\"],transformOrigin:[\"X Y Z\",\"50% 50% 0px\"],perspectiveOrigin:[\"X Y\",\"50% 50%\"]},registered:{},register:function(){for(var e=0;e<x.Lists.colors.length;e++){var t=\"color\"===x.Lists.colors[e]?\"0 0 0 1\":\"255 255 255 1\";x.Hooks.templates[x.Lists.colors[e]]=[\"Red Green Blue Alpha\",t]}var r,a,n;if(f)for(r in x.Hooks.templates){a=x.Hooks.templates[r],n=a[0].split(\" \");var o=a[1].match(x.RegEx.valueSplit);\"Color\"===n[0]&&(n.push(n.shift()),o.push(o.shift()),x.Hooks.templates[r]=[n.join(\" \"),o.join(\" \")])}for(r in x.Hooks.templates){a=x.Hooks.templates[r],n=a[0].split(\" \");for(var e in n){var i=r+n[e],s=e;x.Hooks.registered[i]=[r,s]}}},getRoot:function(e){var t=x.Hooks.registered[e];return t?t[0]:e},cleanRootPropertyValue:function(e,t){return x.RegEx.valueUnwrap.test(t)&&(t=t.match(x.RegEx.valueUnwrap)[1]),x.Values.isCSSNullValue(t)&&(t=x.Hooks.templates[e][1]),t},extractValue:function(e,t){var r=x.Hooks.registered[e];if(r){var a=r[0],n=r[1];return t=x.Hooks.cleanRootPropertyValue(a,t),t.toString().match(x.RegEx.valueSplit)[n]}return t},injectValue:function(e,t,r){var a=x.Hooks.registered[e];if(a){var n=a[0],o=a[1],i,s;return r=x.Hooks.cleanRootPropertyValue(n,r),i=r.toString().match(x.RegEx.valueSplit),i[o]=t,s=i.join(\" \")}return r}},Normalizations:{registered:{clip:function(e,t,r){switch(e){case\"name\":return\"clip\";case\"extract\":var a;return x.RegEx.wrappedValueAlreadyExtracted.test(r)?a=r:(a=r.toString().match(x.RegEx.valueUnwrap),a=a?a[1].replace(/,(\\s+)?/g,\" \"):r),a;case\"inject\":return\"rect(\"+r+\")\"}},blur:function(e,t,r){switch(e){case\"name\":return v.State.isFirefox?\"filter\":\"-webkit-filter\";case\"extract\":var a=parseFloat(r);if(!a&&0!==a){var n=r.toString().match(/blur\\(([0-9]+[A-z]+)\\)/i);a=n?n[1]:0}return a;case\"inject\":return parseFloat(r)?\"blur(\"+r+\")\":\"none\"}},opacity:function(e,t,r){if(8>=f)switch(e){case\"name\":return\"filter\";case\"extract\":var a=r.toString().match(/alpha\\(opacity=(.*)\\)/i);return r=a?a[1]/100:1;case\"inject\":return t.style.zoom=1,parseFloat(r)>=1?\"\":\"alpha(opacity=\"+parseInt(100*parseFloat(r),10)+\")\"}else switch(e){case\"name\":return\"opacity\";case\"extract\":return r;case\"inject\":return r}}},register:function(){9>=f||v.State.isGingerbread||(x.Lists.transformsBase=x.Lists.transformsBase.concat(x.Lists.transforms3D));for(var e=0;e<x.Lists.transformsBase.length;e++)!function(){var t=x.Lists.transformsBase[e];x.Normalizations.registered[t]=function(e,r,n){switch(e){case\"name\":return\"transform\";case\"extract\":return i(r)===a||i(r).transformCache[t]===a?/^scale/i.test(t)?1:0:i(r).transformCache[t].replace(/[()]/g,\"\");case\"inject\":var o=!1;switch(t.substr(0,t.length-1)){case\"translate\":o=!/(%|px|em|rem|vw|vh|\\d)$/i.test(n);break;case\"scal\":case\"scale\":v.State.isAndroid&&i(r).transformCache[t]===a&&1>n&&(n=1),o=!/(\\d)$/i.test(n);break;case\"skew\":o=!/(deg|\\d)$/i.test(n);break;case\"rotate\":o=!/(deg|\\d)$/i.test(n)}return o||(i(r).transformCache[t]=\"(\"+n+\")\"),i(r).transformCache[t]}}}();for(var e=0;e<x.Lists.colors.length;e++)!function(){var t=x.Lists.colors[e];x.Normalizations.registered[t]=function(e,r,n){switch(e){case\"name\":return t;case\"extract\":var o;if(x.RegEx.wrappedValueAlreadyExtracted.test(n))o=n;else{var i,s={black:\"rgb(0, 0, 0)\",blue:\"rgb(0, 0, 255)\",gray:\"rgb(128, 128, 128)\",green:\"rgb(0, 128, 0)\",red:\"rgb(255, 0, 0)\",white:\"rgb(255, 255, 255)\"};/^[A-z]+$/i.test(n)?i=s[n]!==a?s[n]:s.black:x.RegEx.isHex.test(n)?i=\"rgb(\"+x.Values.hexToRgb(n).join(\" \")+\")\":/^rgba?\\(/i.test(n)||(i=s.black),o=(i||n).toString().match(x.RegEx.valueUnwrap)[1].replace(/,(\\s+)?/g,\" \")}return 8>=f||3!==o.split(\" \").length||(o+=\" 1\"),o;case\"inject\":return 8>=f?4===n.split(\" \").length&&(n=n.split(/\\s+/).slice(0,3).join(\" \")):3===n.split(\" \").length&&(n+=\" 1\"),(8>=f?\"rgb\":\"rgba\")+\"(\"+n.replace(/\\s+/g,\",\").replace(/\\.(\\d)+(?=,)/g,\"\")+\")\"}}}()}},Names:{camelCase:function(e){return e.replace(/-(\\w)/g,function(e,t){return t.toUpperCase()})},SVGAttribute:function(e){var t=\"width|height|x|y|cx|cy|r|rx|ry|x1|x2|y1|y2\";return(f||v.State.isAndroid&&!v.State.isChrome)&&(t+=\"|transform\"),new RegExp(\"^(\"+t+\")$\",\"i\").test(e)},prefixCheck:function(e){if(v.State.prefixMatches[e])return[v.State.prefixMatches[e],!0];for(var t=[\"\",\"Webkit\",\"Moz\",\"ms\",\"O\"],r=0,a=t.length;a>r;r++){var n;if(n=0===r?e:t[r]+e.replace(/^\\w/,function(e){return e.toUpperCase()}),g.isString(v.State.prefixElement.style[n]))return v.State.prefixMatches[e]=n,[n,!0]}return[e,!1]}},Values:{hexToRgb:function(e){var t=/^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i,r=/^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i,a;return e=e.replace(t,function(e,t,r,a){return t+t+r+r+a+a}),a=r.exec(e),a?[parseInt(a[1],16),parseInt(a[2],16),parseInt(a[3],16)]:[0,0,0]},isCSSNullValue:function(e){return 0==e||/^(none|auto|transparent|(rgba\\(0, ?0, ?0, ?0\\)))$/i.test(e)},getUnitType:function(e){return/^(rotate|skew)/i.test(e)?\"deg\":/(^(scale|scaleX|scaleY|scaleZ|alpha|flexGrow|flexHeight|zIndex|fontWeight)$)|((opacity|red|green|blue|alpha)$)/i.test(e)?\"\":\"px\"},getDisplayType:function(e){var t=e&&e.tagName.toString().toLowerCase();return/^(b|big|i|small|tt|abbr|acronym|cite|code|dfn|em|kbd|strong|samp|var|a|bdo|br|img|map|object|q|script|span|sub|sup|button|input|label|select|textarea)$/i.test(t)?\"inline\":/^(li)$/i.test(t)?\"list-item\":/^(tr)$/i.test(t)?\"table-row\":/^(table)$/i.test(t)?\"table\":/^(tbody)$/i.test(t)?\"table-row-group\":\"block\"},addClass:function(e,t){e.classList?e.classList.add(t):e.className+=(e.className.length?\" \":\"\")+t},removeClass:function(e,t){e.classList?e.classList.remove(t):e.className=e.className.toString().replace(new RegExp(\"(^|\\\\s)\"+t.split(\" \").join(\"|\")+\"(\\\\s|$)\",\"gi\"),\" \")}},getPropertyValue:function(e,r,n,o){function s(e,r){function n(){u&&x.setPropertyValue(e,\"display\",\"none\")}var l=0;if(8>=f)l=$.css(e,r);else{var u=!1;if(/^(width|height)$/.test(r)&&0===x.getPropertyValue(e,\"display\")&&(u=!0,x.setPropertyValue(e,\"display\",x.Values.getDisplayType(e))),!o){if(\"height\"===r&&\"border-box\"!==x.getPropertyValue(e,\"boxSizing\").toString().toLowerCase()){var c=e.offsetHeight-(parseFloat(x.getPropertyValue(e,\"borderTopWidth\"))||0)-(parseFloat(x.getPropertyValue(e,\"borderBottomWidth\"))||0)-(parseFloat(x.getPropertyValue(e,\"paddingTop\"))||0)-(parseFloat(x.getPropertyValue(e,\"paddingBottom\"))||0);return n(),c}if(\"width\"===r&&\"border-box\"!==x.getPropertyValue(e,\"boxSizing\").toString().toLowerCase()){var p=e.offsetWidth-(parseFloat(x.getPropertyValue(e,\"borderLeftWidth\"))||0)-(parseFloat(x.getPropertyValue(e,\"borderRightWidth\"))||0)-(parseFloat(x.getPropertyValue(e,\"paddingLeft\"))||0)-(parseFloat(x.getPropertyValue(e,\"paddingRight\"))||0);return n(),p}}var d;d=i(e)===a?t.getComputedStyle(e,null):i(e).computedStyle?i(e).computedStyle:i(e).computedStyle=t.getComputedStyle(e,null),\"borderColor\"===r&&(r=\"borderTopColor\"),l=9===f&&\"filter\"===r?d.getPropertyValue(r):d[r],(\"\"===l||null===l)&&(l=e.style[r]),n()}if(\"auto\"===l&&/^(top|right|bottom|left)$/i.test(r)){var g=s(e,\"position\");(\"fixed\"===g||\"absolute\"===g&&/top|left/i.test(r))&&(l=$(e).position()[r]+\"px\")}return l}var l;if(x.Hooks.registered[r]){var u=r,c=x.Hooks.getRoot(u);n===a&&(n=x.getPropertyValue(e,x.Names.prefixCheck(c)[0])),x.Normalizations.registered[c]&&(n=x.Normalizations.registered[c](\"extract\",e,n)),l=x.Hooks.extractValue(u,n)}else if(x.Normalizations.registered[r]){var p,d;p=x.Normalizations.registered[r](\"name\",e),\"transform\"!==p&&(d=s(e,x.Names.prefixCheck(p)[0]),x.Values.isCSSNullValue(d)&&x.Hooks.templates[r]&&(d=x.Hooks.templates[r][1])),l=x.Normalizations.registered[r](\"extract\",e,d)}if(!/^[\\d-]/.test(l))if(i(e)&&i(e).isSVG&&x.Names.SVGAttribute(r))if(/^(height|width)$/i.test(r))try{l=e.getBBox()[r]}catch(g){l=0}else l=e.getAttribute(r);else l=s(e,x.Names.prefixCheck(r)[0]);return x.Values.isCSSNullValue(l)&&(l=0),v.debug>=2&&console.log(\"Get \"+r+\": \"+l),l},setPropertyValue:function(e,r,a,n,o){var s=r;if(\"scroll\"===r)o.container?o.container[\"scroll\"+o.direction]=a:\"Left\"===o.direction?t.scrollTo(a,o.alternateValue):t.scrollTo(o.alternateValue,a);else if(x.Normalizations.registered[r]&&\"transform\"===x.Normalizations.registered[r](\"name\",e))x.Normalizations.registered[r](\"inject\",e,a),s=\"transform\",a=i(e).transformCache[r];else{if(x.Hooks.registered[r]){var l=r,u=x.Hooks.getRoot(r);n=n||x.getPropertyValue(e,u),a=x.Hooks.injectValue(l,a,n),r=u}if(x.Normalizations.registered[r]&&(a=x.Normalizations.registered[r](\"inject\",e,a),r=x.Normalizations.registered[r](\"name\",e)),s=x.Names.prefixCheck(r)[0],8>=f)try{e.style[s]=a}catch(c){v.debug&&console.log(\"Browser does not support [\"+a+\"] for [\"+s+\"]\")}else i(e)&&i(e).isSVG&&x.Names.SVGAttribute(r)?e.setAttribute(r,a):e.style[s]=a;v.debug>=2&&console.log(\"Set \"+r+\" (\"+s+\"): \"+a)}return[s,a]},flushTransformCache:function(e){function t(t){return parseFloat(x.getPropertyValue(e,t))}var r=\"\";if((f||v.State.isAndroid&&!v.State.isChrome)&&i(e).isSVG){var a={translate:[t(\"translateX\"),t(\"translateY\")],skewX:[t(\"skewX\")],skewY:[t(\"skewY\")],scale:1!==t(\"scale\")?[t(\"scale\"),t(\"scale\")]:[t(\"scaleX\"),t(\"scaleY\")],rotate:[t(\"rotateZ\"),0,0]};$.each(i(e).transformCache,function(e){/^translate/i.test(e)?e=\"translate\":/^scale/i.test(e)?e=\"scale\":/^rotate/i.test(e)&&(e=\"rotate\"),a[e]&&(r+=e+\"(\"+a[e].join(\" \")+\") \",delete a[e])})}else{var n,o;$.each(i(e).transformCache,function(t){return n=i(e).transformCache[t],\"transformPerspective\"===t?(o=n,!0):(9===f&&\"rotateZ\"===t&&(t=\"rotate\"),void(r+=t+n+\" \"))}),o&&(r=\"perspective\"+o+\" \"+r)}x.setPropertyValue(e,\"transform\",r)}};x.Hooks.register(),x.Normalizations.register(),v.hook=function(e,t,r){var n=a;return e=o(e),$.each(e,function(e,o){if(i(o)===a&&v.init(o),r===a)n===a&&(n=v.CSS.getPropertyValue(o,t));else{var s=v.CSS.setPropertyValue(o,t,r);\"transform\"===s[0]&&v.CSS.flushTransformCache(o),n=s}}),n};var S=function(){function e(){return l?T.promise||null:f}function n(){function e(e){function p(e,t){var r=a,i=a,s=a;return g.isArray(e)?(r=e[0],!g.isArray(e[1])&&/^[\\d-]/.test(e[1])||g.isFunction(e[1])||x.RegEx.isHex.test(e[1])?s=e[1]:(g.isString(e[1])&&!x.RegEx.isHex.test(e[1])||g.isArray(e[1]))&&(i=t?e[1]:u(e[1],o.duration),e[2]!==a&&(s=e[2]))):r=e,t||(i=i||o.easing),g.isFunction(r)&&(r=r.call(n,w,P)),g.isFunction(s)&&(s=s.call(n,w,P)),[r||0,i,s]}function f(e,t){var r,a;return a=(t||\"0\").toString().toLowerCase().replace(/[%A-z]+$/,function(e){return r=e,\"\"}),r||(r=x.Values.getUnitType(e)),[a,r]}function d(){var e={myParent:n.parentNode||r.body,position:x.getPropertyValue(n,\"position\"),fontSize:x.getPropertyValue(n,\"fontSize\")},a=e.position===N.lastPosition&&e.myParent===N.lastParent,o=e.fontSize===N.lastFontSize;N.lastParent=e.myParent,N.lastPosition=e.position,N.lastFontSize=e.fontSize;var s=100,l={};if(o&&a)l.emToPx=N.lastEmToPx,l.percentToPxWidth=N.lastPercentToPxWidth,l.percentToPxHeight=N.lastPercentToPxHeight;else{var u=i(n).isSVG?r.createElementNS(\"http://www.w3.org/2000/svg\",\"rect\"):r.createElement(\"div\");v.init(u),e.myParent.appendChild(u),$.each([\"overflow\",\"overflowX\",\"overflowY\"],function(e,t){v.CSS.setPropertyValue(u,t,\"hidden\")}),v.CSS.setPropertyValue(u,\"position\",e.position),v.CSS.setPropertyValue(u,\"fontSize\",e.fontSize),v.CSS.setPropertyValue(u,\"boxSizing\",\"content-box\"),$.each([\"minWidth\",\"maxWidth\",\"width\",\"minHeight\",\"maxHeight\",\"height\"],function(e,t){v.CSS.setPropertyValue(u,t,s+\"%\")}),v.CSS.setPropertyValue(u,\"paddingLeft\",s+\"em\"),l.percentToPxWidth=N.lastPercentToPxWidth=(parseFloat(x.getPropertyValue(u,\"width\",null,!0))||1)/s,l.percentToPxHeight=N.lastPercentToPxHeight=(parseFloat(x.getPropertyValue(u,\"height\",null,!0))||1)/s,l.emToPx=N.lastEmToPx=(parseFloat(x.getPropertyValue(u,\"paddingLeft\"))||1)/s,e.myParent.removeChild(u)}return null===N.remToPx&&(N.remToPx=parseFloat(x.getPropertyValue(r.body,\"fontSize\"))||16),null===N.vwToPx&&(N.vwToPx=parseFloat(t.innerWidth)/100,N.vhToPx=parseFloat(t.innerHeight)/100),l.remToPx=N.remToPx,l.vwToPx=N.vwToPx,l.vhToPx=N.vhToPx,v.debug>=1&&console.log(\"Unit ratios: \"+JSON.stringify(l),n),l}if(o.begin&&0===w)try{o.begin.call(m,m)}catch(y){setTimeout(function(){throw y},1)}if(\"scroll\"===k){var S=/^x$/i.test(o.axis)?\"Left\":\"Top\",V=parseFloat(o.offset)||0,C,A,F;o.container?g.isWrapped(o.container)||g.isNode(o.container)?(o.container=o.container[0]||o.container,C=o.container[\"scroll\"+S],F=C+$(n).position()[S.toLowerCase()]+V):o.container=null:(C=v.State.scrollAnchor[v.State[\"scrollProperty\"+S]],A=v.State.scrollAnchor[v.State[\"scrollProperty\"+(\"Left\"===S?\"Top\":\"Left\")]],F=$(n).offset()[S.toLowerCase()]+V),s={scroll:{rootPropertyValue:!1,startValue:C,currentValue:C,endValue:F,unitType:\"\",easing:o.easing,scrollData:{container:o.container,direction:S,alternateValue:A}},element:n},v.debug&&console.log(\"tweensContainer (scroll): \",s.scroll,n)}else if(\"reverse\"===k){if(!i(n).tweensContainer)return void $.dequeue(n,o.queue);\"none\"===i(n).opts.display&&(i(n).opts.display=\"auto\"),\"hidden\"===i(n).opts.visibility&&(i(n).opts.visibility=\"visible\"),i(n).opts.loop=!1,i(n).opts.begin=null,i(n).opts.complete=null,b.easing||delete o.easing,b.duration||delete o.duration,o=$.extend({},i(n).opts,o);var E=$.extend(!0,{},i(n).tweensContainer);for(var j in E)if(\"element\"!==j){var H=E[j].startValue;E[j].startValue=E[j].currentValue=E[j].endValue,E[j].endValue=H,g.isEmptyObject(b)||(E[j].easing=o.easing),v.debug&&console.log(\"reverse tweensContainer (\"+j+\"): \"+JSON.stringify(E[j]),n)}s=E}else if(\"start\"===k){var E;i(n).tweensContainer&&i(n).isAnimating===!0&&(E=i(n).tweensContainer),$.each(h,function(e,t){if(RegExp(\"^\"+x.Lists.colors.join(\"$|^\")+\"$\").test(e)){var r=p(t,!0),n=r[0],o=r[1],i=r[2];if(x.RegEx.isHex.test(n)){for(var s=[\"Red\",\"Green\",\"Blue\"],l=x.Values.hexToRgb(n),u=i?x.Values.hexToRgb(i):a,c=0;c<s.length;c++){var f=[l[c]];o&&f.push(o),u!==a&&f.push(u[c]),h[e+s[c]]=f}delete h[e]}}});for(var R in h){var O=p(h[R]),z=O[0],q=O[1],M=O[2];R=x.Names.camelCase(R);var I=x.Hooks.getRoot(R),B=!1;if(i(n).isSVG||\"tween\"===I||x.Names.prefixCheck(I)[1]!==!1||x.Normalizations.registered[I]!==a){(o.display!==a&&null!==o.display&&\"none\"!==o.display||o.visibility!==a&&\"hidden\"!==o.visibility)&&/opacity|filter/.test(R)&&!M&&0!==z&&(M=0),o._cacheValues&&E&&E[R]?(M===a&&(M=E[R].endValue+E[R].unitType),B=i(n).rootPropertyValueCache[I]):x.Hooks.registered[R]?M===a?(B=x.getPropertyValue(n,I),M=x.getPropertyValue(n,R,B)):B=x.Hooks.templates[I][1]:M===a&&(M=x.getPropertyValue(n,R));var W,G,D,X=!1;if(W=f(R,M),M=W[0],D=W[1],W=f(R,z),z=W[0].replace(/^([+-\\/*])=/,function(e,t){return X=t,\"\"}),G=W[1],M=parseFloat(M)||0,z=parseFloat(z)||0,\"%\"===G&&(/^(fontSize|lineHeight)$/.test(R)?(z/=100,G=\"em\"):/^scale/.test(R)?(z/=100,G=\"\"):/(Red|Green|Blue)$/i.test(R)&&(z=z/100*255,G=\"\")),/[\\/*]/.test(X))G=D;else if(D!==G&&0!==M)if(0===z)G=D;else{l=l||d();var Y=/margin|padding|left|right|width|text|word|letter/i.test(R)||/X$/.test(R)||\"x\"===R?\"x\":\"y\";switch(D){case\"%\":M*=\"x\"===Y?l.percentToPxWidth:l.percentToPxHeight;break;case\"px\":break;default:M*=l[D+\"ToPx\"]}switch(G){case\"%\":M*=1/(\"x\"===Y?l.percentToPxWidth:l.percentToPxHeight);break;case\"px\":break;default:M*=1/l[G+\"ToPx\"]}}switch(X){case\"+\":z=M+z;break;case\"-\":z=M-z;break;case\"*\":z=M*z;break;case\"/\":z=M/z}s[R]={rootPropertyValue:B,startValue:M,currentValue:M,endValue:z,unitType:G,easing:q},v.debug&&console.log(\"tweensContainer (\"+R+\"): \"+JSON.stringify(s[R]),n)}else v.debug&&console.log(\"Skipping [\"+I+\"] due to a lack of browser support.\")}s.element=n}s.element&&(x.Values.addClass(n,\"velocity-animating\"),L.push(s),\"\"===o.queue&&(i(n).tweensContainer=s,i(n).opts=o),i(n).isAnimating=!0,w===P-1?(v.State.calls.push([L,m,o,null,T.resolver]),v.State.isTicking===!1&&(v.State.isTicking=!0,c())):w++)}var n=this,o=$.extend({},v.defaults,b),s={},l;switch(i(n)===a&&v.init(n),parseFloat(o.delay)&&o.queue!==!1&&$.queue(n,o.queue,function(e){v.velocityQueueEntryFlag=!0,i(n).delayTimer={setTimeout:setTimeout(e,parseFloat(o.delay)),next:e}}),o.duration.toString().toLowerCase()){case\"fast\":o.duration=200;break;case\"normal\":o.duration=y;break;case\"slow\":o.duration=600;break;default:o.duration=parseFloat(o.duration)||1}v.mock!==!1&&(v.mock===!0?o.duration=o.delay=1:(o.duration*=parseFloat(v.mock)||1,o.delay*=parseFloat(v.mock)||1)),o.easing=u(o.easing,o.duration),o.begin&&!g.isFunction(o.begin)&&(o.begin=null),o.progress&&!g.isFunction(o.progress)&&(o.progress=null),o.complete&&!g.isFunction(o.complete)&&(o.complete=null),o.display!==a&&null!==o.display&&(o.display=o.display.toString().toLowerCase(),\"auto\"===o.display&&(o.display=v.CSS.Values.getDisplayType(n))),o.visibility!==a&&null!==o.visibility&&(o.visibility=o.visibility.toString().toLowerCase()),o.mobileHA=o.mobileHA&&v.State.isMobile&&!v.State.isGingerbread,o.queue===!1?o.delay?setTimeout(e,o.delay):e():$.queue(n,o.queue,function(t,r){return r===!0?(T.promise&&T.resolver(m),!0):(v.velocityQueueEntryFlag=!0,void e(t))}),\"\"!==o.queue&&\"fx\"!==o.queue||\"inprogress\"===$.queue(n)[0]||$.dequeue(n)}var s=arguments[0]&&(arguments[0].p||$.isPlainObject(arguments[0].properties)&&!arguments[0].properties.names||g.isString(arguments[0].properties)),l,f,d,m,h,b;if(g.isWrapped(this)?(l=!1,d=0,m=this,f=this):(l=!0,d=1,m=s?arguments[0].elements||arguments[0].e:arguments[0]),m=o(m)){s?(h=arguments[0].properties||arguments[0].p,b=arguments[0].options||arguments[0].o):(h=arguments[d],b=arguments[d+1]);var P=m.length,w=0;if(!/^(stop|finish)$/i.test(h)&&!$.isPlainObject(b)){var V=d+1;b={};for(var C=V;C<arguments.length;C++)g.isArray(arguments[C])||!/^(fast|normal|slow)$/i.test(arguments[C])&&!/^\\d/.test(arguments[C])?g.isString(arguments[C])||g.isArray(arguments[C])?b.easing=arguments[C]:g.isFunction(arguments[C])&&(b.complete=arguments[C]):b.duration=arguments[C]}var T={promise:null,resolver:null,rejecter:null};l&&v.Promise&&(T.promise=new v.Promise(function(e,t){T.resolver=e,T.rejecter=t}));var k;switch(h){case\"scroll\":k=\"scroll\";break;case\"reverse\":k=\"reverse\";break;case\"finish\":case\"stop\":$.each(m,function(e,t){i(t)&&i(t).delayTimer&&(clearTimeout(i(t).delayTimer.setTimeout),i(t).delayTimer.next&&i(t).delayTimer.next(),delete i(t).delayTimer)});var A=[];return $.each(v.State.calls,function(e,t){t&&$.each(t[1],function(r,n){var o=b===a?\"\":b;return o===!0||t[2].queue===o||b===a&&t[2].queue===!1?void $.each(m,function(r,a){a===n&&((b===!0||g.isString(b))&&($.each($.queue(a,g.isString(b)?b:\"\"),function(e,t){g.isFunction(t)&&t(null,!0)}),$.queue(a,g.isString(b)?b:\"\",[])),\"stop\"===h?(i(a)&&i(a).tweensContainer&&o!==!1&&$.each(i(a).tweensContainer,function(e,t){t.endValue=t.currentValue\n}),A.push(e)):\"finish\"===h&&(t[2].duration=1))}):!0})}),\"stop\"===h&&($.each(A,function(e,t){p(t,!0)}),T.promise&&T.resolver(m)),e();default:if(!$.isPlainObject(h)||g.isEmptyObject(h)){if(g.isString(h)&&v.Redirects[h]){var F=$.extend({},b),E=F.duration,j=F.delay||0;return F.backwards===!0&&(m=$.extend(!0,[],m).reverse()),$.each(m,function(e,t){parseFloat(F.stagger)?F.delay=j+parseFloat(F.stagger)*e:g.isFunction(F.stagger)&&(F.delay=j+F.stagger.call(t,e,P)),F.drag&&(F.duration=parseFloat(E)||(/^(callout|transition)/.test(h)?1e3:y),F.duration=Math.max(F.duration*(F.backwards?1-e/P:(e+1)/P),.75*F.duration,200)),v.Redirects[h].call(t,t,F||{},e,P,m,T.promise?T:a)}),e()}var H=\"Velocity: First argument (\"+h+\") was not a property map, a known action, or a registered redirect. Aborting.\";return T.promise?T.rejecter(new Error(H)):console.log(H),e()}k=\"start\"}var N={lastParent:null,lastPosition:null,lastFontSize:null,lastPercentToPxWidth:null,lastPercentToPxHeight:null,lastEmToPx:null,remToPx:null,vwToPx:null,vhToPx:null},L=[];$.each(m,function(e,t){g.isNode(t)&&n.call(t)});var F=$.extend({},v.defaults,b),R;if(F.loop=parseInt(F.loop),R=2*F.loop-1,F.loop)for(var O=0;R>O;O++){var z={delay:F.delay,progress:F.progress};O===R-1&&(z.display=F.display,z.visibility=F.visibility,z.complete=F.complete),S(m,\"reverse\",z)}return e()}};v=$.extend(S,v),v.animate=S;var P=t.requestAnimationFrame||d;return v.State.isMobile||r.hidden===a||r.addEventListener(\"visibilitychange\",function(){r.hidden?(P=function(e){return setTimeout(function(){e(!0)},16)},c()):P=t.requestAnimationFrame||d}),e.Velocity=v,e!==t&&(e.fn.velocity=S,e.fn.velocity.defaults=v.defaults),$.each([\"Down\",\"Up\"],function(e,t){v.Redirects[\"slide\"+t]=function(e,r,n,o,i,s){var l=$.extend({},r),u=l.begin,c=l.complete,p={height:\"\",marginTop:\"\",marginBottom:\"\",paddingTop:\"\",paddingBottom:\"\"},f={};l.display===a&&(l.display=\"Down\"===t?\"inline\"===v.CSS.Values.getDisplayType(e)?\"inline-block\":\"block\":\"none\"),l.begin=function(){u&&u.call(i,i);for(var r in p){f[r]=e.style[r];var a=v.CSS.getPropertyValue(e,r);p[r]=\"Down\"===t?[a,0]:[0,a]}f.overflow=e.style.overflow,e.style.overflow=\"hidden\"},l.complete=function(){for(var t in f)e.style[t]=f[t];c&&c.call(i,i),s&&s.resolver(i)},v(e,p,l)}}),$.each([\"In\",\"Out\"],function(e,t){v.Redirects[\"fade\"+t]=function(e,r,n,o,i,s){var l=$.extend({},r),u={opacity:\"In\"===t?1:0},c=l.complete;l.complete=n!==o-1?l.begin=null:function(){c&&c.call(i,i),s&&s.resolver(i)},l.display===a&&(l.display=\"In\"===t?\"auto\":\"none\"),v(this,u,l)}}),v}(window.jQuery||window.Zepto||window,window,document)});", "/* VelocityJS.org UI Pack (5.0.4). (C) 2014 Julian Shapiro. MIT @license: en.wikipedia.org/wiki/MIT_License. Portions copyright Daniel Eden, Christian Pucci. */\n!function(t){\"function\"==typeof require&&\"object\"==typeof exports?module.exports=t():\"function\"==typeof define&&define.amd?define([\"velocity\"],t):t()}(function(){return function(t,a,e,r){function n(t,a){var e=[];return t&&a?($.each([t,a],function(t,a){var r=[];$.each(a,function(t,a){for(;a.toString().length<5;)a=\"0\"+a;r.push(a)}),e.push(r.join(\"\"))}),parseFloat(e[0])>parseFloat(e[1])):!1}if(!t.Velocity||!t.Velocity.Utilities)return void(a.console&&console.log(\"Velocity UI Pack: Velocity must be loaded first. Aborting.\"));var i=t.Velocity,$=i.Utilities,s=i.version,o={major:1,minor:1,patch:0};if(n(o,s)){var l=\"Velocity UI Pack: You need to update Velocity (jquery.velocity.js) to a newer version. Visit http://github.com/julianshapiro/velocity.\";throw alert(l),new Error(l)}i.RegisterEffect=i.RegisterUI=function(t,a){function e(t,a,e,r){var n=0,s;$.each(t.nodeType?[t]:t,function(t,a){r&&(e+=t*r),s=a.parentNode,$.each([\"height\",\"paddingTop\",\"paddingBottom\",\"marginTop\",\"marginBottom\"],function(t,e){n+=parseFloat(i.CSS.getPropertyValue(a,e))})}),i.animate(s,{height:(\"In\"===a?\"+\":\"-\")+\"=\"+n},{queue:!1,easing:\"ease-in-out\",duration:e*(\"In\"===a?.6:1)})}return i.Redirects[t]=function(n,s,o,l,c,u){function f(){s.display!==r&&\"none\"!==s.display||!/Out$/.test(t)||$.each(c.nodeType?[c]:c,function(t,a){i.CSS.setPropertyValue(a,\"display\",\"none\")}),s.complete&&s.complete.call(c,c),u&&u.resolver(c||n)}var p=o===l-1;a.defaultDuration=\"function\"==typeof a.defaultDuration?a.defaultDuration.call(c,c):parseFloat(a.defaultDuration);for(var d=0;d<a.calls.length;d++){var g=a.calls[d],y=g[0],m=s.duration||a.defaultDuration||1e3,X=g[1],Y=g[2]||{},O={};if(O.duration=m*(X||1),O.queue=s.queue||\"\",O.easing=Y.easing||\"ease\",O.delay=parseFloat(Y.delay)||0,O._cacheValues=Y._cacheValues||!0,0===d){if(O.delay+=parseFloat(s.delay)||0,0===o&&(O.begin=function(){s.begin&&s.begin.call(c,c);var a=t.match(/(In|Out)$/);a&&\"In\"===a[0]&&y.opacity!==r&&$.each(c.nodeType?[c]:c,function(t,a){i.CSS.setPropertyValue(a,\"opacity\",0)}),s.animateParentHeight&&a&&e(c,a[0],m+O.delay,s.stagger)}),null!==s.display)if(s.display!==r&&\"none\"!==s.display)O.display=s.display;else if(/In$/.test(t)){var v=i.CSS.Values.getDisplayType(n);O.display=\"inline\"===v?\"inline-block\":v}s.visibility&&\"hidden\"!==s.visibility&&(O.visibility=s.visibility)}d===a.calls.length-1&&(O.complete=function(){if(a.reset){for(var t in a.reset){var e=a.reset[t];i.CSS.Hooks.registered[t]!==r||\"string\"!=typeof e&&\"number\"!=typeof e||(a.reset[t]=[a.reset[t],a.reset[t]])}var s={duration:0,queue:!1};p&&(s.complete=f),i.animate(n,a.reset,s)}else p&&f()},\"hidden\"===s.visibility&&(O.visibility=s.visibility)),i.animate(n,y,O)}},i},i.RegisterEffect.packagedEffects={\"callout.bounce\":{defaultDuration:550,calls:[[{translateY:-30},.25],[{translateY:0},.125],[{translateY:-15},.125],[{translateY:0},.25]]},\"callout.shake\":{defaultDuration:800,calls:[[{translateX:-11},.125],[{translateX:11},.125],[{translateX:-11},.125],[{translateX:11},.125],[{translateX:-11},.125],[{translateX:11},.125],[{translateX:-11},.125],[{translateX:0},.125]]},\"callout.flash\":{defaultDuration:1100,calls:[[{opacity:[0,\"easeInOutQuad\",1]},.25],[{opacity:[1,\"easeInOutQuad\"]},.25],[{opacity:[0,\"easeInOutQuad\"]},.25],[{opacity:[1,\"easeInOutQuad\"]},.25]]},\"callout.pulse\":{defaultDuration:825,calls:[[{scaleX:1.1,scaleY:1.1},.5,{easing:\"easeInExpo\"}],[{scaleX:1,scaleY:1},.5]]},\"callout.swing\":{defaultDuration:950,calls:[[{rotateZ:15},.2],[{rotateZ:-10},.2],[{rotateZ:5},.2],[{rotateZ:-5},.2],[{rotateZ:0},.2]]},\"callout.tada\":{defaultDuration:1e3,calls:[[{scaleX:.9,scaleY:.9,rotateZ:-3},.1],[{scaleX:1.1,scaleY:1.1,rotateZ:3},.1],[{scaleX:1.1,scaleY:1.1,rotateZ:-3},.1],[\"reverse\",.125],[\"reverse\",.125],[\"reverse\",.125],[\"reverse\",.125],[\"reverse\",.125],[{scaleX:1,scaleY:1,rotateZ:0},.2]]},\"transition.fadeIn\":{defaultDuration:500,calls:[[{opacity:[1,0]}]]},\"transition.fadeOut\":{defaultDuration:500,calls:[[{opacity:[0,1]}]]},\"transition.flipXIn\":{defaultDuration:700,calls:[[{opacity:[1,0],transformPerspective:[800,800],rotateY:[0,-55]}]],reset:{transformPerspective:0}},\"transition.flipXOut\":{defaultDuration:700,calls:[[{opacity:[0,1],transformPerspective:[800,800],rotateY:55}]],reset:{transformPerspective:0,rotateY:0}},\"transition.flipYIn\":{defaultDuration:800,calls:[[{opacity:[1,0],transformPerspective:[800,800],rotateX:[0,-45]}]],reset:{transformPerspective:0}},\"transition.flipYOut\":{defaultDuration:800,calls:[[{opacity:[0,1],transformPerspective:[800,800],rotateX:25}]],reset:{transformPerspective:0,rotateX:0}},\"transition.flipBounceXIn\":{defaultDuration:900,calls:[[{opacity:[.725,0],transformPerspective:[400,400],rotateY:[-10,90]},.5],[{opacity:.8,rotateY:10},.25],[{opacity:1,rotateY:0},.25]],reset:{transformPerspective:0}},\"transition.flipBounceXOut\":{defaultDuration:800,calls:[[{opacity:[.9,1],transformPerspective:[400,400],rotateY:-10},.5],[{opacity:0,rotateY:90},.5]],reset:{transformPerspective:0,rotateY:0}},\"transition.flipBounceYIn\":{defaultDuration:850,calls:[[{opacity:[.725,0],transformPerspective:[400,400],rotateX:[-10,90]},.5],[{opacity:.8,rotateX:10},.25],[{opacity:1,rotateX:0},.25]],reset:{transformPerspective:0}},\"transition.flipBounceYOut\":{defaultDuration:800,calls:[[{opacity:[.9,1],transformPerspective:[400,400],rotateX:-15},.5],[{opacity:0,rotateX:90},.5]],reset:{transformPerspective:0,rotateX:0}},\"transition.swoopIn\":{defaultDuration:850,calls:[[{opacity:[1,0],transformOriginX:[\"100%\",\"50%\"],transformOriginY:[\"100%\",\"100%\"],scaleX:[1,0],scaleY:[1,0],translateX:[0,-700],translateZ:0}]],reset:{transformOriginX:\"50%\",transformOriginY:\"50%\"}},\"transition.swoopOut\":{defaultDuration:850,calls:[[{opacity:[0,1],transformOriginX:[\"50%\",\"100%\"],transformOriginY:[\"100%\",\"100%\"],scaleX:0,scaleY:0,translateX:-700,translateZ:0}]],reset:{transformOriginX:\"50%\",transformOriginY:\"50%\",scaleX:1,scaleY:1,translateX:0}},\"transition.whirlIn\":{defaultDuration:850,calls:[[{opacity:[1,0],transformOriginX:[\"50%\",\"50%\"],transformOriginY:[\"50%\",\"50%\"],scaleX:[1,0],scaleY:[1,0],rotateY:[0,160]},1,{easing:\"easeInOutSine\"}]]},\"transition.whirlOut\":{defaultDuration:750,calls:[[{opacity:[0,\"easeInOutQuint\",1],transformOriginX:[\"50%\",\"50%\"],transformOriginY:[\"50%\",\"50%\"],scaleX:0,scaleY:0,rotateY:160},1,{easing:\"swing\"}]],reset:{scaleX:1,scaleY:1,rotateY:0}},\"transition.shrinkIn\":{defaultDuration:750,calls:[[{opacity:[1,0],transformOriginX:[\"50%\",\"50%\"],transformOriginY:[\"50%\",\"50%\"],scaleX:[1,1.5],scaleY:[1,1.5],translateZ:0}]]},\"transition.shrinkOut\":{defaultDuration:600,calls:[[{opacity:[0,1],transformOriginX:[\"50%\",\"50%\"],transformOriginY:[\"50%\",\"50%\"],scaleX:1.3,scaleY:1.3,translateZ:0}]],reset:{scaleX:1,scaleY:1}},\"transition.expandIn\":{defaultDuration:700,calls:[[{opacity:[1,0],transformOriginX:[\"50%\",\"50%\"],transformOriginY:[\"50%\",\"50%\"],scaleX:[1,.625],scaleY:[1,.625],translateZ:0}]]},\"transition.expandOut\":{defaultDuration:700,calls:[[{opacity:[0,1],transformOriginX:[\"50%\",\"50%\"],transformOriginY:[\"50%\",\"50%\"],scaleX:.5,scaleY:.5,translateZ:0}]],reset:{scaleX:1,scaleY:1}},\"transition.bounceIn\":{defaultDuration:800,calls:[[{opacity:[1,0],scaleX:[1.05,.3],scaleY:[1.05,.3]},.4],[{scaleX:.9,scaleY:.9,translateZ:0},.2],[{scaleX:1,scaleY:1},.5]]},\"transition.bounceOut\":{defaultDuration:800,calls:[[{scaleX:.95,scaleY:.95},.35],[{scaleX:1.1,scaleY:1.1,translateZ:0},.35],[{opacity:[0,1],scaleX:.3,scaleY:.3},.3]],reset:{scaleX:1,scaleY:1}},\"transition.bounceUpIn\":{defaultDuration:800,calls:[[{opacity:[1,0],translateY:[-30,1e3]},.6,{easing:\"easeOutCirc\"}],[{translateY:10},.2],[{translateY:0},.2]]},\"transition.bounceUpOut\":{defaultDuration:1e3,calls:[[{translateY:20},.2],[{opacity:[0,\"easeInCirc\",1],translateY:-1e3},.8]],reset:{translateY:0}},\"transition.bounceDownIn\":{defaultDuration:800,calls:[[{opacity:[1,0],translateY:[30,-1e3]},.6,{easing:\"easeOutCirc\"}],[{translateY:-10},.2],[{translateY:0},.2]]},\"transition.bounceDownOut\":{defaultDuration:1e3,calls:[[{translateY:-20},.2],[{opacity:[0,\"easeInCirc\",1],translateY:1e3},.8]],reset:{translateY:0}},\"transition.bounceLeftIn\":{defaultDuration:750,calls:[[{opacity:[1,0],translateX:[30,-1250]},.6,{easing:\"easeOutCirc\"}],[{translateX:-10},.2],[{translateX:0},.2]]},\"transition.bounceLeftOut\":{defaultDuration:750,calls:[[{translateX:30},.2],[{opacity:[0,\"easeInCirc\",1],translateX:-1250},.8]],reset:{translateX:0}},\"transition.bounceRightIn\":{defaultDuration:750,calls:[[{opacity:[1,0],translateX:[-30,1250]},.6,{easing:\"easeOutCirc\"}],[{translateX:10},.2],[{translateX:0},.2]]},\"transition.bounceRightOut\":{defaultDuration:750,calls:[[{translateX:-30},.2],[{opacity:[0,\"easeInCirc\",1],translateX:1250},.8]],reset:{translateX:0}},\"transition.slideUpIn\":{defaultDuration:900,calls:[[{opacity:[1,0],translateY:[0,20],translateZ:0}]]},\"transition.slideUpOut\":{defaultDuration:900,calls:[[{opacity:[0,1],translateY:-20,translateZ:0}]],reset:{translateY:0}},\"transition.slideDownIn\":{defaultDuration:900,calls:[[{opacity:[1,0],translateY:[0,-20],translateZ:0}]]},\"transition.slideDownOut\":{defaultDuration:900,calls:[[{opacity:[0,1],translateY:20,translateZ:0}]],reset:{translateY:0}},\"transition.slideLeftIn\":{defaultDuration:1e3,calls:[[{opacity:[1,0],translateX:[0,-20],translateZ:0}]]},\"transition.slideLeftOut\":{defaultDuration:1050,calls:[[{opacity:[0,1],translateX:-20,translateZ:0}]],reset:{translateX:0}},\"transition.slideRightIn\":{defaultDuration:1e3,calls:[[{opacity:[1,0],translateX:[0,20],translateZ:0}]]},\"transition.slideRightOut\":{defaultDuration:1050,calls:[[{opacity:[0,1],translateX:20,translateZ:0}]],reset:{translateX:0}},\"transition.slideUpBigIn\":{defaultDuration:850,calls:[[{opacity:[1,0],translateY:[0,75],translateZ:0}]]},\"transition.slideUpBigOut\":{defaultDuration:800,calls:[[{opacity:[0,1],translateY:-75,translateZ:0}]],reset:{translateY:0}},\"transition.slideDownBigIn\":{defaultDuration:850,calls:[[{opacity:[1,0],translateY:[0,-75],translateZ:0}]]},\"transition.slideDownBigOut\":{defaultDuration:800,calls:[[{opacity:[0,1],translateY:75,translateZ:0}]],reset:{translateY:0}},\"transition.slideLeftBigIn\":{defaultDuration:800,calls:[[{opacity:[1,0],translateX:[0,-75],translateZ:0}]]},\"transition.slideLeftBigOut\":{defaultDuration:750,calls:[[{opacity:[0,1],translateX:-75,translateZ:0}]],reset:{translateX:0}},\"transition.slideRightBigIn\":{defaultDuration:800,calls:[[{opacity:[1,0],translateX:[0,75],translateZ:0}]]},\"transition.slideRightBigOut\":{defaultDuration:750,calls:[[{opacity:[0,1],translateX:75,translateZ:0}]],reset:{translateX:0}},\"transition.perspectiveUpIn\":{defaultDuration:800,calls:[[{opacity:[1,0],transformPerspective:[800,800],transformOriginX:[0,0],transformOriginY:[\"100%\",\"100%\"],rotateX:[0,-180]}]],reset:{transformPerspective:0,transformOriginX:\"50%\",transformOriginY:\"50%\"}},\"transition.perspectiveUpOut\":{defaultDuration:850,calls:[[{opacity:[0,1],transformPerspective:[800,800],transformOriginX:[0,0],transformOriginY:[\"100%\",\"100%\"],rotateX:-180}]],reset:{transformPerspective:0,transformOriginX:\"50%\",transformOriginY:\"50%\",rotateX:0}},\"transition.perspectiveDownIn\":{defaultDuration:800,calls:[[{opacity:[1,0],transformPerspective:[800,800],transformOriginX:[0,0],transformOriginY:[0,0],rotateX:[0,180]}]],reset:{transformPerspective:0,transformOriginX:\"50%\",transformOriginY:\"50%\"}},\"transition.perspectiveDownOut\":{defaultDuration:850,calls:[[{opacity:[0,1],transformPerspective:[800,800],transformOriginX:[0,0],transformOriginY:[0,0],rotateX:180}]],reset:{transformPerspective:0,transformOriginX:\"50%\",transformOriginY:\"50%\",rotateX:0}},\"transition.perspectiveLeftIn\":{defaultDuration:950,calls:[[{opacity:[1,0],transformPerspective:[2e3,2e3],transformOriginX:[0,0],transformOriginY:[0,0],rotateY:[0,-180]}]],reset:{transformPerspective:0,transformOriginX:\"50%\",transformOriginY:\"50%\"}},\"transition.perspectiveLeftOut\":{defaultDuration:950,calls:[[{opacity:[0,1],transformPerspective:[2e3,2e3],transformOriginX:[0,0],transformOriginY:[0,0],rotateY:-180}]],reset:{transformPerspective:0,transformOriginX:\"50%\",transformOriginY:\"50%\",rotateY:0}},\"transition.perspectiveRightIn\":{defaultDuration:950,calls:[[{opacity:[1,0],transformPerspective:[2e3,2e3],transformOriginX:[\"100%\",\"100%\"],transformOriginY:[0,0],rotateY:[0,180]}]],reset:{transformPerspective:0,transformOriginX:\"50%\",transformOriginY:\"50%\"}},\"transition.perspectiveRightOut\":{defaultDuration:950,calls:[[{opacity:[0,1],transformPerspective:[2e3,2e3],transformOriginX:[\"100%\",\"100%\"],transformOriginY:[0,0],rotateY:180}]],reset:{transformPerspective:0,transformOriginX:\"50%\",transformOriginY:\"50%\",rotateY:0}}};for(var c in i.RegisterEffect.packagedEffects)i.RegisterEffect(c,i.RegisterEffect.packagedEffects[c]);i.RunSequence=function(t){var a=$.extend(!0,[],t);a.length>1&&($.each(a.reverse(),function(t,e){var r=a[t+1];if(r){var n=e.o||e.options,s=r.o||r.options,o=n&&n.sequenceQueue===!1?\"begin\":\"complete\",l=s&&s[o],c={};c[o]=function(){var t=r.e||r.elements,a=t.nodeType?[t]:t;l&&l.call(a,a),i(e)},r.o?r.o=$.extend({},s,c):r.options=$.extend({},s,c)}}),a.reverse()),i(a[0])}}(window.jQuery||window.Zepto||window,window,document)});", "/*!\nTurbo 8.0.12\nCopyright \u00A9 2024 37signals LLC\n */\n/**\n * The MIT License (MIT)\n *\n * Copyright (c) 2019 Javan Makhmali\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\n * all 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\n * THE SOFTWARE.\n */\n\n(function (prototype) {\n if (typeof prototype.requestSubmit == \"function\") return\n\n prototype.requestSubmit = function (submitter) {\n if (submitter) {\n validateSubmitter(submitter, this);\n submitter.click();\n } else {\n submitter = document.createElement(\"input\");\n submitter.type = \"submit\";\n submitter.hidden = true;\n this.appendChild(submitter);\n submitter.click();\n this.removeChild(submitter);\n }\n };\n\n function validateSubmitter(submitter, form) {\n submitter instanceof HTMLElement || raise(TypeError, \"parameter 1 is not of type 'HTMLElement'\");\n submitter.type == \"submit\" || raise(TypeError, \"The specified element is not a submit button\");\n submitter.form == form ||\n raise(DOMException, \"The specified element is not owned by this form element\", \"NotFoundError\");\n }\n\n function raise(errorConstructor, message, name) {\n throw new errorConstructor(\"Failed to execute 'requestSubmit' on 'HTMLFormElement': \" + message + \".\", name)\n }\n})(HTMLFormElement.prototype);\n\nconst submittersByForm = new WeakMap();\n\nfunction findSubmitterFromClickTarget(target) {\n const element = target instanceof Element ? target : target instanceof Node ? target.parentElement : null;\n const candidate = element ? element.closest(\"input, button\") : null;\n return candidate?.type == \"submit\" ? candidate : null\n}\n\nfunction clickCaptured(event) {\n const submitter = findSubmitterFromClickTarget(event.target);\n\n if (submitter && submitter.form) {\n submittersByForm.set(submitter.form, submitter);\n }\n}\n\n(function () {\n if (\"submitter\" in Event.prototype) return\n\n let prototype = window.Event.prototype;\n // Certain versions of Safari 15 have a bug where they won't\n // populate the submitter. This hurts TurboDrive's enable/disable detection.\n // See https://bugs.webkit.org/show_bug.cgi?id=229660\n if (\"SubmitEvent\" in window) {\n const prototypeOfSubmitEvent = window.SubmitEvent.prototype;\n\n if (/Apple Computer/.test(navigator.vendor) && !(\"submitter\" in prototypeOfSubmitEvent)) {\n prototype = prototypeOfSubmitEvent;\n } else {\n return // polyfill not needed\n }\n }\n\n addEventListener(\"click\", clickCaptured, true);\n\n Object.defineProperty(prototype, \"submitter\", {\n get() {\n if (this.type == \"submit\" && this.target instanceof HTMLFormElement) {\n return submittersByForm.get(this.target)\n }\n }\n });\n})();\n\nconst FrameLoadingStyle = {\n eager: \"eager\",\n lazy: \"lazy\"\n};\n\n/**\n * Contains a fragment of HTML which is updated based on navigation within\n * it (e.g. via links or form submissions).\n *\n * @customElement turbo-frame\n * @example\n * <turbo-frame id=\"messages\">\n * <a href=\"/messages/expanded\">\n * Show all expanded messages in this frame.\n * </a>\n *\n * <form action=\"/messages\">\n * Show response from this form within this frame.\n * </form>\n * </turbo-frame>\n */\nclass FrameElement extends HTMLElement {\n static delegateConstructor = undefined\n\n loaded = Promise.resolve()\n\n static get observedAttributes() {\n return [\"disabled\", \"loading\", \"src\"]\n }\n\n constructor() {\n super();\n this.delegate = new FrameElement.delegateConstructor(this);\n }\n\n connectedCallback() {\n this.delegate.connect();\n }\n\n disconnectedCallback() {\n this.delegate.disconnect();\n }\n\n reload() {\n return this.delegate.sourceURLReloaded()\n }\n\n attributeChangedCallback(name) {\n if (name == \"loading\") {\n this.delegate.loadingStyleChanged();\n } else if (name == \"src\") {\n this.delegate.sourceURLChanged();\n } else if (name == \"disabled\") {\n this.delegate.disabledChanged();\n }\n }\n\n /**\n * Gets the URL to lazily load source HTML from\n */\n get src() {\n return this.getAttribute(\"src\")\n }\n\n /**\n * Sets the URL to lazily load source HTML from\n */\n set src(value) {\n if (value) {\n this.setAttribute(\"src\", value);\n } else {\n this.removeAttribute(\"src\");\n }\n }\n\n /**\n * Gets the refresh mode for the frame.\n */\n get refresh() {\n return this.getAttribute(\"refresh\")\n }\n\n /**\n * Sets the refresh mode for the frame.\n */\n set refresh(value) {\n if (value) {\n this.setAttribute(\"refresh\", value);\n } else {\n this.removeAttribute(\"refresh\");\n }\n }\n\n get shouldReloadWithMorph() {\n return this.src && this.refresh === \"morph\"\n }\n\n /**\n * Determines if the element is loading\n */\n get loading() {\n return frameLoadingStyleFromString(this.getAttribute(\"loading\") || \"\")\n }\n\n /**\n * Sets the value of if the element is loading\n */\n set loading(value) {\n if (value) {\n this.setAttribute(\"loading\", value);\n } else {\n this.removeAttribute(\"loading\");\n }\n }\n\n /**\n * Gets the disabled state of the frame.\n *\n * If disabled, no requests will be intercepted by the frame.\n */\n get disabled() {\n return this.hasAttribute(\"disabled\")\n }\n\n /**\n * Sets the disabled state of the frame.\n *\n * If disabled, no requests will be intercepted by the frame.\n */\n set disabled(value) {\n if (value) {\n this.setAttribute(\"disabled\", \"\");\n } else {\n this.removeAttribute(\"disabled\");\n }\n }\n\n /**\n * Gets the autoscroll state of the frame.\n *\n * If true, the frame will be scrolled into view automatically on update.\n */\n get autoscroll() {\n return this.hasAttribute(\"autoscroll\")\n }\n\n /**\n * Sets the autoscroll state of the frame.\n *\n * If true, the frame will be scrolled into view automatically on update.\n */\n set autoscroll(value) {\n if (value) {\n this.setAttribute(\"autoscroll\", \"\");\n } else {\n this.removeAttribute(\"autoscroll\");\n }\n }\n\n /**\n * Determines if the element has finished loading\n */\n get complete() {\n return !this.delegate.isLoading\n }\n\n /**\n * Gets the active state of the frame.\n *\n * If inactive, source changes will not be observed.\n */\n get isActive() {\n return this.ownerDocument === document && !this.isPreview\n }\n\n /**\n * Sets the active state of the frame.\n *\n * If inactive, source changes will not be observed.\n */\n get isPreview() {\n return this.ownerDocument?.documentElement?.hasAttribute(\"data-turbo-preview\")\n }\n}\n\nfunction frameLoadingStyleFromString(style) {\n switch (style.toLowerCase()) {\n case \"lazy\":\n return FrameLoadingStyle.lazy\n default:\n return FrameLoadingStyle.eager\n }\n}\n\nconst drive = {\n enabled: true,\n progressBarDelay: 500,\n unvisitableExtensions: new Set(\n [\n \".7z\", \".aac\", \".apk\", \".avi\", \".bmp\", \".bz2\", \".css\", \".csv\", \".deb\", \".dmg\", \".doc\",\n \".docx\", \".exe\", \".gif\", \".gz\", \".heic\", \".heif\", \".ico\", \".iso\", \".jpeg\", \".jpg\",\n \".js\", \".json\", \".m4a\", \".mkv\", \".mov\", \".mp3\", \".mp4\", \".mpeg\", \".mpg\", \".msi\",\n \".ogg\", \".ogv\", \".pdf\", \".pkg\", \".png\", \".ppt\", \".pptx\", \".rar\", \".rtf\",\n \".svg\", \".tar\", \".tif\", \".tiff\", \".txt\", \".wav\", \".webm\", \".webp\", \".wma\", \".wmv\",\n \".xls\", \".xlsx\", \".xml\", \".zip\"\n ]\n )\n};\n\nfunction activateScriptElement(element) {\n if (element.getAttribute(\"data-turbo-eval\") == \"false\") {\n return element\n } else {\n const createdScriptElement = document.createElement(\"script\");\n const cspNonce = getCspNonce();\n if (cspNonce) {\n createdScriptElement.nonce = cspNonce;\n }\n createdScriptElement.textContent = element.textContent;\n createdScriptElement.async = false;\n copyElementAttributes(createdScriptElement, element);\n return createdScriptElement\n }\n}\n\nfunction copyElementAttributes(destinationElement, sourceElement) {\n for (const { name, value } of sourceElement.attributes) {\n destinationElement.setAttribute(name, value);\n }\n}\n\nfunction createDocumentFragment(html) {\n const template = document.createElement(\"template\");\n template.innerHTML = html;\n return template.content\n}\n\nfunction dispatch(eventName, { target, cancelable, detail } = {}) {\n const event = new CustomEvent(eventName, {\n cancelable,\n bubbles: true,\n composed: true,\n detail\n });\n\n if (target && target.isConnected) {\n target.dispatchEvent(event);\n } else {\n document.documentElement.dispatchEvent(event);\n }\n\n return event\n}\n\nfunction cancelEvent(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n\nfunction nextRepaint() {\n if (document.visibilityState === \"hidden\") {\n return nextEventLoopTick()\n } else {\n return nextAnimationFrame()\n }\n}\n\nfunction nextAnimationFrame() {\n return new Promise((resolve) => requestAnimationFrame(() => resolve()))\n}\n\nfunction nextEventLoopTick() {\n return new Promise((resolve) => setTimeout(() => resolve(), 0))\n}\n\nfunction nextMicrotask() {\n return Promise.resolve()\n}\n\nfunction parseHTMLDocument(html = \"\") {\n return new DOMParser().parseFromString(html, \"text/html\")\n}\n\nfunction unindent(strings, ...values) {\n const lines = interpolate(strings, values).replace(/^\\n/, \"\").split(\"\\n\");\n const match = lines[0].match(/^\\s+/);\n const indent = match ? match[0].length : 0;\n return lines.map((line) => line.slice(indent)).join(\"\\n\")\n}\n\nfunction interpolate(strings, values) {\n return strings.reduce((result, string, i) => {\n const value = values[i] == undefined ? \"\" : values[i];\n return result + string + value\n }, \"\")\n}\n\nfunction uuid() {\n return Array.from({ length: 36 })\n .map((_, i) => {\n if (i == 8 || i == 13 || i == 18 || i == 23) {\n return \"-\"\n } else if (i == 14) {\n return \"4\"\n } else if (i == 19) {\n return (Math.floor(Math.random() * 4) + 8).toString(16)\n } else {\n return Math.floor(Math.random() * 15).toString(16)\n }\n })\n .join(\"\")\n}\n\nfunction getAttribute(attributeName, ...elements) {\n for (const value of elements.map((element) => element?.getAttribute(attributeName))) {\n if (typeof value == \"string\") return value\n }\n\n return null\n}\n\nfunction hasAttribute(attributeName, ...elements) {\n return elements.some((element) => element && element.hasAttribute(attributeName))\n}\n\nfunction markAsBusy(...elements) {\n for (const element of elements) {\n if (element.localName == \"turbo-frame\") {\n element.setAttribute(\"busy\", \"\");\n }\n element.setAttribute(\"aria-busy\", \"true\");\n }\n}\n\nfunction clearBusyState(...elements) {\n for (const element of elements) {\n if (element.localName == \"turbo-frame\") {\n element.removeAttribute(\"busy\");\n }\n\n element.removeAttribute(\"aria-busy\");\n }\n}\n\nfunction waitForLoad(element, timeoutInMilliseconds = 2000) {\n return new Promise((resolve) => {\n const onComplete = () => {\n element.removeEventListener(\"error\", onComplete);\n element.removeEventListener(\"load\", onComplete);\n resolve();\n };\n\n element.addEventListener(\"load\", onComplete, { once: true });\n element.addEventListener(\"error\", onComplete, { once: true });\n setTimeout(resolve, timeoutInMilliseconds);\n })\n}\n\nfunction getHistoryMethodForAction(action) {\n switch (action) {\n case \"replace\":\n return history.replaceState\n case \"advance\":\n case \"restore\":\n return history.pushState\n }\n}\n\nfunction isAction(action) {\n return action == \"advance\" || action == \"replace\" || action == \"restore\"\n}\n\nfunction getVisitAction(...elements) {\n const action = getAttribute(\"data-turbo-action\", ...elements);\n\n return isAction(action) ? action : null\n}\n\nfunction getMetaElement(name) {\n return document.querySelector(`meta[name=\"${name}\"]`)\n}\n\nfunction getMetaContent(name) {\n const element = getMetaElement(name);\n return element && element.content\n}\n\nfunction getCspNonce() {\n const element = getMetaElement(\"csp-nonce\");\n\n if (element) {\n const { nonce, content } = element;\n return nonce == \"\" ? content : nonce\n }\n}\n\nfunction setMetaContent(name, content) {\n let element = getMetaElement(name);\n\n if (!element) {\n element = document.createElement(\"meta\");\n element.setAttribute(\"name\", name);\n\n document.head.appendChild(element);\n }\n\n element.setAttribute(\"content\", content);\n\n return element\n}\n\nfunction findClosestRecursively(element, selector) {\n if (element instanceof Element) {\n return (\n element.closest(selector) || findClosestRecursively(element.assignedSlot || element.getRootNode()?.host, selector)\n )\n }\n}\n\nfunction elementIsFocusable(element) {\n const inertDisabledOrHidden = \"[inert], :disabled, [hidden], details:not([open]), dialog:not([open])\";\n\n return !!element && element.closest(inertDisabledOrHidden) == null && typeof element.focus == \"function\"\n}\n\nfunction queryAutofocusableElement(elementOrDocumentFragment) {\n return Array.from(elementOrDocumentFragment.querySelectorAll(\"[autofocus]\")).find(elementIsFocusable)\n}\n\nasync function around(callback, reader) {\n const before = reader();\n\n callback();\n\n await nextAnimationFrame();\n\n const after = reader();\n\n return [before, after]\n}\n\nfunction doesNotTargetIFrame(name) {\n if (name === \"_blank\") {\n return false\n } else if (name) {\n for (const element of document.getElementsByName(name)) {\n if (element instanceof HTMLIFrameElement) return false\n }\n\n return true\n } else {\n return true\n }\n}\n\nfunction findLinkFromClickTarget(target) {\n return findClosestRecursively(target, \"a[href]:not([target^=_]):not([download])\")\n}\n\nfunction getLocationForLink(link) {\n return expandURL(link.getAttribute(\"href\") || \"\")\n}\n\nfunction debounce(fn, delay) {\n let timeoutId = null;\n\n return (...args) => {\n const callback = () => fn.apply(this, args);\n clearTimeout(timeoutId);\n timeoutId = setTimeout(callback, delay);\n }\n}\n\nconst submitter = {\n \"aria-disabled\": {\n beforeSubmit: submitter => {\n submitter.setAttribute(\"aria-disabled\", \"true\");\n submitter.addEventListener(\"click\", cancelEvent);\n },\n\n afterSubmit: submitter => {\n submitter.removeAttribute(\"aria-disabled\");\n submitter.removeEventListener(\"click\", cancelEvent);\n }\n },\n\n \"disabled\": {\n beforeSubmit: submitter => submitter.disabled = true,\n afterSubmit: submitter => submitter.disabled = false\n }\n};\n\nclass Config {\n #submitter = null\n\n constructor(config) {\n Object.assign(this, config);\n }\n\n get submitter() {\n return this.#submitter\n }\n\n set submitter(value) {\n this.#submitter = submitter[value] || value;\n }\n}\n\nconst forms = new Config({\n mode: \"on\",\n submitter: \"disabled\"\n});\n\nconst config = {\n drive,\n forms\n};\n\nfunction expandURL(locatable) {\n return new URL(locatable.toString(), document.baseURI)\n}\n\nfunction getAnchor(url) {\n let anchorMatch;\n if (url.hash) {\n return url.hash.slice(1)\n // eslint-disable-next-line no-cond-assign\n } else if ((anchorMatch = url.href.match(/#(.*)$/))) {\n return anchorMatch[1]\n }\n}\n\nfunction getAction$1(form, submitter) {\n const action = submitter?.getAttribute(\"formaction\") || form.getAttribute(\"action\") || form.action;\n\n return expandURL(action)\n}\n\nfunction getExtension(url) {\n return (getLastPathComponent(url).match(/\\.[^.]*$/) || [])[0] || \"\"\n}\n\nfunction isPrefixedBy(baseURL, url) {\n const prefix = getPrefix(url);\n return baseURL.href === expandURL(prefix).href || baseURL.href.startsWith(prefix)\n}\n\nfunction locationIsVisitable(location, rootLocation) {\n return isPrefixedBy(location, rootLocation) && !config.drive.unvisitableExtensions.has(getExtension(location))\n}\n\nfunction getRequestURL(url) {\n const anchor = getAnchor(url);\n return anchor != null ? url.href.slice(0, -(anchor.length + 1)) : url.href\n}\n\nfunction toCacheKey(url) {\n return getRequestURL(url)\n}\n\nfunction urlsAreEqual(left, right) {\n return expandURL(left).href == expandURL(right).href\n}\n\nfunction getPathComponents(url) {\n return url.pathname.split(\"/\").slice(1)\n}\n\nfunction getLastPathComponent(url) {\n return getPathComponents(url).slice(-1)[0]\n}\n\nfunction getPrefix(url) {\n return addTrailingSlash(url.origin + url.pathname)\n}\n\nfunction addTrailingSlash(value) {\n return value.endsWith(\"/\") ? value : value + \"/\"\n}\n\nclass FetchResponse {\n constructor(response) {\n this.response = response;\n }\n\n get succeeded() {\n return this.response.ok\n }\n\n get failed() {\n return !this.succeeded\n }\n\n get clientError() {\n return this.statusCode >= 400 && this.statusCode <= 499\n }\n\n get serverError() {\n return this.statusCode >= 500 && this.statusCode <= 599\n }\n\n get redirected() {\n return this.response.redirected\n }\n\n get location() {\n return expandURL(this.response.url)\n }\n\n get isHTML() {\n return this.contentType && this.contentType.match(/^(?:text\\/([^\\s;,]+\\b)?html|application\\/xhtml\\+xml)\\b/)\n }\n\n get statusCode() {\n return this.response.status\n }\n\n get contentType() {\n return this.header(\"Content-Type\")\n }\n\n get responseText() {\n return this.response.clone().text()\n }\n\n get responseHTML() {\n if (this.isHTML) {\n return this.response.clone().text()\n } else {\n return Promise.resolve(undefined)\n }\n }\n\n header(name) {\n return this.response.headers.get(name)\n }\n}\n\nclass LimitedSet extends Set {\n constructor(maxSize) {\n super();\n this.maxSize = maxSize;\n }\n\n add(value) {\n if (this.size >= this.maxSize) {\n const iterator = this.values();\n const oldestValue = iterator.next().value;\n this.delete(oldestValue);\n }\n super.add(value);\n }\n}\n\nconst recentRequests = new LimitedSet(20);\n\nconst nativeFetch = window.fetch;\n\nfunction fetchWithTurboHeaders(url, options = {}) {\n const modifiedHeaders = new Headers(options.headers || {});\n const requestUID = uuid();\n recentRequests.add(requestUID);\n modifiedHeaders.append(\"X-Turbo-Request-Id\", requestUID);\n\n return nativeFetch(url, {\n ...options,\n headers: modifiedHeaders\n })\n}\n\nfunction fetchMethodFromString(method) {\n switch (method.toLowerCase()) {\n case \"get\":\n return FetchMethod.get\n case \"post\":\n return FetchMethod.post\n case \"put\":\n return FetchMethod.put\n case \"patch\":\n return FetchMethod.patch\n case \"delete\":\n return FetchMethod.delete\n }\n}\n\nconst FetchMethod = {\n get: \"get\",\n post: \"post\",\n put: \"put\",\n patch: \"patch\",\n delete: \"delete\"\n};\n\nfunction fetchEnctypeFromString(encoding) {\n switch (encoding.toLowerCase()) {\n case FetchEnctype.multipart:\n return FetchEnctype.multipart\n case FetchEnctype.plain:\n return FetchEnctype.plain\n default:\n return FetchEnctype.urlEncoded\n }\n}\n\nconst FetchEnctype = {\n urlEncoded: \"application/x-www-form-urlencoded\",\n multipart: \"multipart/form-data\",\n plain: \"text/plain\"\n};\n\nclass FetchRequest {\n abortController = new AbortController()\n #resolveRequestPromise = (_value) => {}\n\n constructor(delegate, method, location, requestBody = new URLSearchParams(), target = null, enctype = FetchEnctype.urlEncoded) {\n const [url, body] = buildResourceAndBody(expandURL(location), method, requestBody, enctype);\n\n this.delegate = delegate;\n this.url = url;\n this.target = target;\n this.fetchOptions = {\n credentials: \"same-origin\",\n redirect: \"follow\",\n method: method.toUpperCase(),\n headers: { ...this.defaultHeaders },\n body: body,\n signal: this.abortSignal,\n referrer: this.delegate.referrer?.href\n };\n this.enctype = enctype;\n }\n\n get method() {\n return this.fetchOptions.method\n }\n\n set method(value) {\n const fetchBody = this.isSafe ? this.url.searchParams : this.fetchOptions.body || new FormData();\n const fetchMethod = fetchMethodFromString(value) || FetchMethod.get;\n\n this.url.search = \"\";\n\n const [url, body] = buildResourceAndBody(this.url, fetchMethod, fetchBody, this.enctype);\n\n this.url = url;\n this.fetchOptions.body = body;\n this.fetchOptions.method = fetchMethod.toUpperCase();\n }\n\n get headers() {\n return this.fetchOptions.headers\n }\n\n set headers(value) {\n this.fetchOptions.headers = value;\n }\n\n get body() {\n if (this.isSafe) {\n return this.url.searchParams\n } else {\n return this.fetchOptions.body\n }\n }\n\n set body(value) {\n this.fetchOptions.body = value;\n }\n\n get location() {\n return this.url\n }\n\n get params() {\n return this.url.searchParams\n }\n\n get entries() {\n return this.body ? Array.from(this.body.entries()) : []\n }\n\n cancel() {\n this.abortController.abort();\n }\n\n async perform() {\n const { fetchOptions } = this;\n this.delegate.prepareRequest(this);\n const event = await this.#allowRequestToBeIntercepted(fetchOptions);\n try {\n this.delegate.requestStarted(this);\n\n if (event.detail.fetchRequest) {\n this.response = event.detail.fetchRequest.response;\n } else {\n this.response = fetchWithTurboHeaders(this.url.href, fetchOptions);\n }\n\n const response = await this.response;\n return await this.receive(response)\n } catch (error) {\n if (error.name !== \"AbortError\") {\n if (this.#willDelegateErrorHandling(error)) {\n this.delegate.requestErrored(this, error);\n }\n throw error\n }\n } finally {\n this.delegate.requestFinished(this);\n }\n }\n\n async receive(response) {\n const fetchResponse = new FetchResponse(response);\n const event = dispatch(\"turbo:before-fetch-response\", {\n cancelable: true,\n detail: { fetchResponse },\n target: this.target\n });\n if (event.defaultPrevented) {\n this.delegate.requestPreventedHandlingResponse(this, fetchResponse);\n } else if (fetchResponse.succeeded) {\n this.delegate.requestSucceededWithResponse(this, fetchResponse);\n } else {\n this.delegate.requestFailedWithResponse(this, fetchResponse);\n }\n return fetchResponse\n }\n\n get defaultHeaders() {\n return {\n Accept: \"text/html, application/xhtml+xml\"\n }\n }\n\n get isSafe() {\n return isSafe(this.method)\n }\n\n get abortSignal() {\n return this.abortController.signal\n }\n\n acceptResponseType(mimeType) {\n this.headers[\"Accept\"] = [mimeType, this.headers[\"Accept\"]].join(\", \");\n }\n\n async #allowRequestToBeIntercepted(fetchOptions) {\n const requestInterception = new Promise((resolve) => (this.#resolveRequestPromise = resolve));\n const event = dispatch(\"turbo:before-fetch-request\", {\n cancelable: true,\n detail: {\n fetchOptions,\n url: this.url,\n resume: this.#resolveRequestPromise\n },\n target: this.target\n });\n this.url = event.detail.url;\n if (event.defaultPrevented) await requestInterception;\n\n return event\n }\n\n #willDelegateErrorHandling(error) {\n const event = dispatch(\"turbo:fetch-request-error\", {\n target: this.target,\n cancelable: true,\n detail: { request: this, error: error }\n });\n\n return !event.defaultPrevented\n }\n}\n\nfunction isSafe(fetchMethod) {\n return fetchMethodFromString(fetchMethod) == FetchMethod.get\n}\n\nfunction buildResourceAndBody(resource, method, requestBody, enctype) {\n const searchParams =\n Array.from(requestBody).length > 0 ? new URLSearchParams(entriesExcludingFiles(requestBody)) : resource.searchParams;\n\n if (isSafe(method)) {\n return [mergeIntoURLSearchParams(resource, searchParams), null]\n } else if (enctype == FetchEnctype.urlEncoded) {\n return [resource, searchParams]\n } else {\n return [resource, requestBody]\n }\n}\n\nfunction entriesExcludingFiles(requestBody) {\n const entries = [];\n\n for (const [name, value] of requestBody) {\n if (value instanceof File) continue\n else entries.push([name, value]);\n }\n\n return entries\n}\n\nfunction mergeIntoURLSearchParams(url, requestBody) {\n const searchParams = new URLSearchParams(entriesExcludingFiles(requestBody));\n\n url.search = searchParams.toString();\n\n return url\n}\n\nclass AppearanceObserver {\n started = false\n\n constructor(delegate, element) {\n this.delegate = delegate;\n this.element = element;\n this.intersectionObserver = new IntersectionObserver(this.intersect);\n }\n\n start() {\n if (!this.started) {\n this.started = true;\n this.intersectionObserver.observe(this.element);\n }\n }\n\n stop() {\n if (this.started) {\n this.started = false;\n this.intersectionObserver.unobserve(this.element);\n }\n }\n\n intersect = (entries) => {\n const lastEntry = entries.slice(-1)[0];\n if (lastEntry?.isIntersecting) {\n this.delegate.elementAppearedInViewport(this.element);\n }\n }\n}\n\nclass StreamMessage {\n static contentType = \"text/vnd.turbo-stream.html\"\n\n static wrap(message) {\n if (typeof message == \"string\") {\n return new this(createDocumentFragment(message))\n } else {\n return message\n }\n }\n\n constructor(fragment) {\n this.fragment = importStreamElements(fragment);\n }\n}\n\nfunction importStreamElements(fragment) {\n for (const element of fragment.querySelectorAll(\"turbo-stream\")) {\n const streamElement = document.importNode(element, true);\n\n for (const inertScriptElement of streamElement.templateElement.content.querySelectorAll(\"script\")) {\n inertScriptElement.replaceWith(activateScriptElement(inertScriptElement));\n }\n\n element.replaceWith(streamElement);\n }\n\n return fragment\n}\n\nconst PREFETCH_DELAY = 100;\n\nclass PrefetchCache {\n #prefetchTimeout = null\n #prefetched = null\n\n get(url) {\n if (this.#prefetched && this.#prefetched.url === url && this.#prefetched.expire > Date.now()) {\n return this.#prefetched.request\n }\n }\n\n setLater(url, request, ttl) {\n this.clear();\n\n this.#prefetchTimeout = setTimeout(() => {\n request.perform();\n this.set(url, request, ttl);\n this.#prefetchTimeout = null;\n }, PREFETCH_DELAY);\n }\n\n set(url, request, ttl) {\n this.#prefetched = { url, request, expire: new Date(new Date().getTime() + ttl) };\n }\n\n clear() {\n if (this.#prefetchTimeout) clearTimeout(this.#prefetchTimeout);\n this.#prefetched = null;\n }\n}\n\nconst cacheTtl = 10 * 1000;\nconst prefetchCache = new PrefetchCache();\n\nconst FormSubmissionState = {\n initialized: \"initialized\",\n requesting: \"requesting\",\n waiting: \"waiting\",\n receiving: \"receiving\",\n stopping: \"stopping\",\n stopped: \"stopped\"\n};\n\nclass FormSubmission {\n state = FormSubmissionState.initialized\n\n static confirmMethod(message) {\n return Promise.resolve(confirm(message))\n }\n\n constructor(delegate, formElement, submitter, mustRedirect = false) {\n const method = getMethod(formElement, submitter);\n const action = getAction(getFormAction(formElement, submitter), method);\n const body = buildFormData(formElement, submitter);\n const enctype = getEnctype(formElement, submitter);\n\n this.delegate = delegate;\n this.formElement = formElement;\n this.submitter = submitter;\n this.fetchRequest = new FetchRequest(this, method, action, body, formElement, enctype);\n this.mustRedirect = mustRedirect;\n }\n\n get method() {\n return this.fetchRequest.method\n }\n\n set method(value) {\n this.fetchRequest.method = value;\n }\n\n get action() {\n return this.fetchRequest.url.toString()\n }\n\n set action(value) {\n this.fetchRequest.url = expandURL(value);\n }\n\n get body() {\n return this.fetchRequest.body\n }\n\n get enctype() {\n return this.fetchRequest.enctype\n }\n\n get isSafe() {\n return this.fetchRequest.isSafe\n }\n\n get location() {\n return this.fetchRequest.url\n }\n\n // The submission process\n\n async start() {\n const { initialized, requesting } = FormSubmissionState;\n const confirmationMessage = getAttribute(\"data-turbo-confirm\", this.submitter, this.formElement);\n\n if (typeof confirmationMessage === \"string\") {\n const confirmMethod = typeof config.forms.confirm === \"function\" ?\n config.forms.confirm :\n FormSubmission.confirmMethod;\n\n const answer = await confirmMethod(confirmationMessage, this.formElement, this.submitter);\n if (!answer) {\n return\n }\n }\n\n if (this.state == initialized) {\n this.state = requesting;\n return this.fetchRequest.perform()\n }\n }\n\n stop() {\n const { stopping, stopped } = FormSubmissionState;\n if (this.state != stopping && this.state != stopped) {\n this.state = stopping;\n this.fetchRequest.cancel();\n return true\n }\n }\n\n // Fetch request delegate\n\n prepareRequest(request) {\n if (!request.isSafe) {\n const token = getCookieValue(getMetaContent(\"csrf-param\")) || getMetaContent(\"csrf-token\");\n if (token) {\n request.headers[\"X-CSRF-Token\"] = token;\n }\n }\n\n if (this.requestAcceptsTurboStreamResponse(request)) {\n request.acceptResponseType(StreamMessage.contentType);\n }\n }\n\n requestStarted(_request) {\n this.state = FormSubmissionState.waiting;\n if (this.submitter) config.forms.submitter.beforeSubmit(this.submitter);\n this.setSubmitsWith();\n markAsBusy(this.formElement);\n dispatch(\"turbo:submit-start\", {\n target: this.formElement,\n detail: { formSubmission: this }\n });\n this.delegate.formSubmissionStarted(this);\n }\n\n requestPreventedHandlingResponse(request, response) {\n prefetchCache.clear();\n\n this.result = { success: response.succeeded, fetchResponse: response };\n }\n\n requestSucceededWithResponse(request, response) {\n if (response.clientError || response.serverError) {\n this.delegate.formSubmissionFailedWithResponse(this, response);\n return\n }\n\n prefetchCache.clear();\n\n if (this.requestMustRedirect(request) && responseSucceededWithoutRedirect(response)) {\n const error = new Error(\"Form responses must redirect to another location\");\n this.delegate.formSubmissionErrored(this, error);\n } else {\n this.state = FormSubmissionState.receiving;\n this.result = { success: true, fetchResponse: response };\n this.delegate.formSubmissionSucceededWithResponse(this, response);\n }\n }\n\n requestFailedWithResponse(request, response) {\n this.result = { success: false, fetchResponse: response };\n this.delegate.formSubmissionFailedWithResponse(this, response);\n }\n\n requestErrored(request, error) {\n this.result = { success: false, error };\n this.delegate.formSubmissionErrored(this, error);\n }\n\n requestFinished(_request) {\n this.state = FormSubmissionState.stopped;\n if (this.submitter) config.forms.submitter.afterSubmit(this.submitter);\n this.resetSubmitterText();\n clearBusyState(this.formElement);\n dispatch(\"turbo:submit-end\", {\n target: this.formElement,\n detail: { formSubmission: this, ...this.result }\n });\n this.delegate.formSubmissionFinished(this);\n }\n\n // Private\n\n setSubmitsWith() {\n if (!this.submitter || !this.submitsWith) return\n\n if (this.submitter.matches(\"button\")) {\n this.originalSubmitText = this.submitter.innerHTML;\n this.submitter.innerHTML = this.submitsWith;\n } else if (this.submitter.matches(\"input\")) {\n const input = this.submitter;\n this.originalSubmitText = input.value;\n input.value = this.submitsWith;\n }\n }\n\n resetSubmitterText() {\n if (!this.submitter || !this.originalSubmitText) return\n\n if (this.submitter.matches(\"button\")) {\n this.submitter.innerHTML = this.originalSubmitText;\n } else if (this.submitter.matches(\"input\")) {\n const input = this.submitter;\n input.value = this.originalSubmitText;\n }\n }\n\n requestMustRedirect(request) {\n return !request.isSafe && this.mustRedirect\n }\n\n requestAcceptsTurboStreamResponse(request) {\n return !request.isSafe || hasAttribute(\"data-turbo-stream\", this.submitter, this.formElement)\n }\n\n get submitsWith() {\n return this.submitter?.getAttribute(\"data-turbo-submits-with\")\n }\n}\n\nfunction buildFormData(formElement, submitter) {\n const formData = new FormData(formElement);\n const name = submitter?.getAttribute(\"name\");\n const value = submitter?.getAttribute(\"value\");\n\n if (name) {\n formData.append(name, value || \"\");\n }\n\n return formData\n}\n\nfunction getCookieValue(cookieName) {\n if (cookieName != null) {\n const cookies = document.cookie ? document.cookie.split(\"; \") : [];\n const cookie = cookies.find((cookie) => cookie.startsWith(cookieName));\n if (cookie) {\n const value = cookie.split(\"=\").slice(1).join(\"=\");\n return value ? decodeURIComponent(value) : undefined\n }\n }\n}\n\nfunction responseSucceededWithoutRedirect(response) {\n return response.statusCode == 200 && !response.redirected\n}\n\nfunction getFormAction(formElement, submitter) {\n const formElementAction = typeof formElement.action === \"string\" ? formElement.action : null;\n\n if (submitter?.hasAttribute(\"formaction\")) {\n return submitter.getAttribute(\"formaction\") || \"\"\n } else {\n return formElement.getAttribute(\"action\") || formElementAction || \"\"\n }\n}\n\nfunction getAction(formAction, fetchMethod) {\n const action = expandURL(formAction);\n\n if (isSafe(fetchMethod)) {\n action.search = \"\";\n }\n\n return action\n}\n\nfunction getMethod(formElement, submitter) {\n const method = submitter?.getAttribute(\"formmethod\") || formElement.getAttribute(\"method\") || \"\";\n return fetchMethodFromString(method.toLowerCase()) || FetchMethod.get\n}\n\nfunction getEnctype(formElement, submitter) {\n return fetchEnctypeFromString(submitter?.getAttribute(\"formenctype\") || formElement.enctype)\n}\n\nclass Snapshot {\n constructor(element) {\n this.element = element;\n }\n\n get activeElement() {\n return this.element.ownerDocument.activeElement\n }\n\n get children() {\n return [...this.element.children]\n }\n\n hasAnchor(anchor) {\n return this.getElementForAnchor(anchor) != null\n }\n\n getElementForAnchor(anchor) {\n return anchor ? this.element.querySelector(`[id='${anchor}'], a[name='${anchor}']`) : null\n }\n\n get isConnected() {\n return this.element.isConnected\n }\n\n get firstAutofocusableElement() {\n return queryAutofocusableElement(this.element)\n }\n\n get permanentElements() {\n return queryPermanentElementsAll(this.element)\n }\n\n getPermanentElementById(id) {\n return getPermanentElementById(this.element, id)\n }\n\n getPermanentElementMapForSnapshot(snapshot) {\n const permanentElementMap = {};\n\n for (const currentPermanentElement of this.permanentElements) {\n const { id } = currentPermanentElement;\n const newPermanentElement = snapshot.getPermanentElementById(id);\n if (newPermanentElement) {\n permanentElementMap[id] = [currentPermanentElement, newPermanentElement];\n }\n }\n\n return permanentElementMap\n }\n}\n\nfunction getPermanentElementById(node, id) {\n return node.querySelector(`#${id}[data-turbo-permanent]`)\n}\n\nfunction queryPermanentElementsAll(node) {\n return node.querySelectorAll(\"[id][data-turbo-permanent]\")\n}\n\nclass FormSubmitObserver {\n started = false\n\n constructor(delegate, eventTarget) {\n this.delegate = delegate;\n this.eventTarget = eventTarget;\n }\n\n start() {\n if (!this.started) {\n this.eventTarget.addEventListener(\"submit\", this.submitCaptured, true);\n this.started = true;\n }\n }\n\n stop() {\n if (this.started) {\n this.eventTarget.removeEventListener(\"submit\", this.submitCaptured, true);\n this.started = false;\n }\n }\n\n submitCaptured = () => {\n this.eventTarget.removeEventListener(\"submit\", this.submitBubbled, false);\n this.eventTarget.addEventListener(\"submit\", this.submitBubbled, false);\n }\n\n submitBubbled = (event) => {\n if (!event.defaultPrevented) {\n const form = event.target instanceof HTMLFormElement ? event.target : undefined;\n const submitter = event.submitter || undefined;\n\n if (\n form &&\n submissionDoesNotDismissDialog(form, submitter) &&\n submissionDoesNotTargetIFrame(form, submitter) &&\n this.delegate.willSubmitForm(form, submitter)\n ) {\n event.preventDefault();\n event.stopImmediatePropagation();\n this.delegate.formSubmitted(form, submitter);\n }\n }\n }\n}\n\nfunction submissionDoesNotDismissDialog(form, submitter) {\n const method = submitter?.getAttribute(\"formmethod\") || form.getAttribute(\"method\");\n\n return method != \"dialog\"\n}\n\nfunction submissionDoesNotTargetIFrame(form, submitter) {\n const target = submitter?.getAttribute(\"formtarget\") || form.getAttribute(\"target\");\n\n return doesNotTargetIFrame(target)\n}\n\nclass View {\n #resolveRenderPromise = (_value) => {}\n #resolveInterceptionPromise = (_value) => {}\n\n constructor(delegate, element) {\n this.delegate = delegate;\n this.element = element;\n }\n\n // Scrolling\n\n scrollToAnchor(anchor) {\n const element = this.snapshot.getElementForAnchor(anchor);\n if (element) {\n this.scrollToElement(element);\n this.focusElement(element);\n } else {\n this.scrollToPosition({ x: 0, y: 0 });\n }\n }\n\n scrollToAnchorFromLocation(location) {\n this.scrollToAnchor(getAnchor(location));\n }\n\n scrollToElement(element) {\n element.scrollIntoView();\n }\n\n focusElement(element) {\n if (element instanceof HTMLElement) {\n if (element.hasAttribute(\"tabindex\")) {\n element.focus();\n } else {\n element.setAttribute(\"tabindex\", \"-1\");\n element.focus();\n element.removeAttribute(\"tabindex\");\n }\n }\n }\n\n scrollToPosition({ x, y }) {\n this.scrollRoot.scrollTo(x, y);\n }\n\n scrollToTop() {\n this.scrollToPosition({ x: 0, y: 0 });\n }\n\n get scrollRoot() {\n return window\n }\n\n // Rendering\n\n async render(renderer) {\n const { isPreview, shouldRender, willRender, newSnapshot: snapshot } = renderer;\n\n // A workaround to ignore tracked element mismatch reloads when performing\n // a promoted Visit from a frame navigation\n const shouldInvalidate = willRender;\n\n if (shouldRender) {\n try {\n this.renderPromise = new Promise((resolve) => (this.#resolveRenderPromise = resolve));\n this.renderer = renderer;\n await this.prepareToRenderSnapshot(renderer);\n\n const renderInterception = new Promise((resolve) => (this.#resolveInterceptionPromise = resolve));\n const options = { resume: this.#resolveInterceptionPromise, render: this.renderer.renderElement, renderMethod: this.renderer.renderMethod };\n const immediateRender = this.delegate.allowsImmediateRender(snapshot, options);\n if (!immediateRender) await renderInterception;\n\n await this.renderSnapshot(renderer);\n this.delegate.viewRenderedSnapshot(snapshot, isPreview, this.renderer.renderMethod);\n this.delegate.preloadOnLoadLinksForView(this.element);\n this.finishRenderingSnapshot(renderer);\n } finally {\n delete this.renderer;\n this.#resolveRenderPromise(undefined);\n delete this.renderPromise;\n }\n } else if (shouldInvalidate) {\n this.invalidate(renderer.reloadReason);\n }\n }\n\n invalidate(reason) {\n this.delegate.viewInvalidated(reason);\n }\n\n async prepareToRenderSnapshot(renderer) {\n this.markAsPreview(renderer.isPreview);\n await renderer.prepareToRender();\n }\n\n markAsPreview(isPreview) {\n if (isPreview) {\n this.element.setAttribute(\"data-turbo-preview\", \"\");\n } else {\n this.element.removeAttribute(\"data-turbo-preview\");\n }\n }\n\n markVisitDirection(direction) {\n this.element.setAttribute(\"data-turbo-visit-direction\", direction);\n }\n\n unmarkVisitDirection() {\n this.element.removeAttribute(\"data-turbo-visit-direction\");\n }\n\n async renderSnapshot(renderer) {\n await renderer.render();\n }\n\n finishRenderingSnapshot(renderer) {\n renderer.finishRendering();\n }\n}\n\nclass FrameView extends View {\n missing() {\n this.element.innerHTML = `<strong class=\"turbo-frame-error\">Content missing</strong>`;\n }\n\n get snapshot() {\n return new Snapshot(this.element)\n }\n}\n\nclass LinkInterceptor {\n constructor(delegate, element) {\n this.delegate = delegate;\n this.element = element;\n }\n\n start() {\n this.element.addEventListener(\"click\", this.clickBubbled);\n document.addEventListener(\"turbo:click\", this.linkClicked);\n document.addEventListener(\"turbo:before-visit\", this.willVisit);\n }\n\n stop() {\n this.element.removeEventListener(\"click\", this.clickBubbled);\n document.removeEventListener(\"turbo:click\", this.linkClicked);\n document.removeEventListener(\"turbo:before-visit\", this.willVisit);\n }\n\n clickBubbled = (event) => {\n if (this.clickEventIsSignificant(event)) {\n this.clickEvent = event;\n } else {\n delete this.clickEvent;\n }\n }\n\n linkClicked = (event) => {\n if (this.clickEvent && this.clickEventIsSignificant(event)) {\n if (this.delegate.shouldInterceptLinkClick(event.target, event.detail.url, event.detail.originalEvent)) {\n this.clickEvent.preventDefault();\n event.preventDefault();\n this.delegate.linkClickIntercepted(event.target, event.detail.url, event.detail.originalEvent);\n }\n }\n delete this.clickEvent;\n }\n\n willVisit = (_event) => {\n delete this.clickEvent;\n }\n\n clickEventIsSignificant(event) {\n const target = event.composed ? event.target?.parentElement : event.target;\n const element = findLinkFromClickTarget(target) || target;\n\n return element instanceof Element && element.closest(\"turbo-frame, html\") == this.element\n }\n}\n\nclass LinkClickObserver {\n started = false\n\n constructor(delegate, eventTarget) {\n this.delegate = delegate;\n this.eventTarget = eventTarget;\n }\n\n start() {\n if (!this.started) {\n this.eventTarget.addEventListener(\"click\", this.clickCaptured, true);\n this.started = true;\n }\n }\n\n stop() {\n if (this.started) {\n this.eventTarget.removeEventListener(\"click\", this.clickCaptured, true);\n this.started = false;\n }\n }\n\n clickCaptured = () => {\n this.eventTarget.removeEventListener(\"click\", this.clickBubbled, false);\n this.eventTarget.addEventListener(\"click\", this.clickBubbled, false);\n }\n\n clickBubbled = (event) => {\n if (event instanceof MouseEvent && this.clickEventIsSignificant(event)) {\n const target = (event.composedPath && event.composedPath()[0]) || event.target;\n const link = findLinkFromClickTarget(target);\n if (link && doesNotTargetIFrame(link.target)) {\n const location = getLocationForLink(link);\n if (this.delegate.willFollowLinkToLocation(link, location, event)) {\n event.preventDefault();\n this.delegate.followedLinkToLocation(link, location);\n }\n }\n }\n }\n\n clickEventIsSignificant(event) {\n return !(\n (event.target && event.target.isContentEditable) ||\n event.defaultPrevented ||\n event.which > 1 ||\n event.altKey ||\n event.ctrlKey ||\n event.metaKey ||\n event.shiftKey\n )\n }\n}\n\nclass FormLinkClickObserver {\n constructor(delegate, element) {\n this.delegate = delegate;\n this.linkInterceptor = new LinkClickObserver(this, element);\n }\n\n start() {\n this.linkInterceptor.start();\n }\n\n stop() {\n this.linkInterceptor.stop();\n }\n\n // Link hover observer delegate\n\n canPrefetchRequestToLocation(link, location) {\n return false\n }\n\n prefetchAndCacheRequestToLocation(link, location) {\n return\n }\n\n // Link click observer delegate\n\n willFollowLinkToLocation(link, location, originalEvent) {\n return (\n this.delegate.willSubmitFormLinkToLocation(link, location, originalEvent) &&\n (link.hasAttribute(\"data-turbo-method\") || link.hasAttribute(\"data-turbo-stream\"))\n )\n }\n\n followedLinkToLocation(link, location) {\n const form = document.createElement(\"form\");\n\n const type = \"hidden\";\n for (const [name, value] of location.searchParams) {\n form.append(Object.assign(document.createElement(\"input\"), { type, name, value }));\n }\n\n const action = Object.assign(location, { search: \"\" });\n form.setAttribute(\"data-turbo\", \"true\");\n form.setAttribute(\"action\", action.href);\n form.setAttribute(\"hidden\", \"\");\n\n const method = link.getAttribute(\"data-turbo-method\");\n if (method) form.setAttribute(\"method\", method);\n\n const turboFrame = link.getAttribute(\"data-turbo-frame\");\n if (turboFrame) form.setAttribute(\"data-turbo-frame\", turboFrame);\n\n const turboAction = getVisitAction(link);\n if (turboAction) form.setAttribute(\"data-turbo-action\", turboAction);\n\n const turboConfirm = link.getAttribute(\"data-turbo-confirm\");\n if (turboConfirm) form.setAttribute(\"data-turbo-confirm\", turboConfirm);\n\n const turboStream = link.hasAttribute(\"data-turbo-stream\");\n if (turboStream) form.setAttribute(\"data-turbo-stream\", \"\");\n\n this.delegate.submittedFormLinkToLocation(link, location, form);\n\n document.body.appendChild(form);\n form.addEventListener(\"turbo:submit-end\", () => form.remove(), { once: true });\n requestAnimationFrame(() => form.requestSubmit());\n }\n}\n\nclass Bardo {\n static async preservingPermanentElements(delegate, permanentElementMap, callback) {\n const bardo = new this(delegate, permanentElementMap);\n bardo.enter();\n await callback();\n bardo.leave();\n }\n\n constructor(delegate, permanentElementMap) {\n this.delegate = delegate;\n this.permanentElementMap = permanentElementMap;\n }\n\n enter() {\n for (const id in this.permanentElementMap) {\n const [currentPermanentElement, newPermanentElement] = this.permanentElementMap[id];\n this.delegate.enteringBardo(currentPermanentElement, newPermanentElement);\n this.replaceNewPermanentElementWithPlaceholder(newPermanentElement);\n }\n }\n\n leave() {\n for (const id in this.permanentElementMap) {\n const [currentPermanentElement] = this.permanentElementMap[id];\n this.replaceCurrentPermanentElementWithClone(currentPermanentElement);\n this.replacePlaceholderWithPermanentElement(currentPermanentElement);\n this.delegate.leavingBardo(currentPermanentElement);\n }\n }\n\n replaceNewPermanentElementWithPlaceholder(permanentElement) {\n const placeholder = createPlaceholderForPermanentElement(permanentElement);\n permanentElement.replaceWith(placeholder);\n }\n\n replaceCurrentPermanentElementWithClone(permanentElement) {\n const clone = permanentElement.cloneNode(true);\n permanentElement.replaceWith(clone);\n }\n\n replacePlaceholderWithPermanentElement(permanentElement) {\n const placeholder = this.getPlaceholderById(permanentElement.id);\n placeholder?.replaceWith(permanentElement);\n }\n\n getPlaceholderById(id) {\n return this.placeholders.find((element) => element.content == id)\n }\n\n get placeholders() {\n return [...document.querySelectorAll(\"meta[name=turbo-permanent-placeholder][content]\")]\n }\n}\n\nfunction createPlaceholderForPermanentElement(permanentElement) {\n const element = document.createElement(\"meta\");\n element.setAttribute(\"name\", \"turbo-permanent-placeholder\");\n element.setAttribute(\"content\", permanentElement.id);\n return element\n}\n\nclass Renderer {\n #activeElement = null\n\n static renderElement(currentElement, newElement) {\n // Abstract method\n }\n\n constructor(currentSnapshot, newSnapshot, isPreview, willRender = true) {\n this.currentSnapshot = currentSnapshot;\n this.newSnapshot = newSnapshot;\n this.isPreview = isPreview;\n this.willRender = willRender;\n this.renderElement = this.constructor.renderElement;\n this.promise = new Promise((resolve, reject) => (this.resolvingFunctions = { resolve, reject }));\n }\n\n get shouldRender() {\n return true\n }\n\n get shouldAutofocus() {\n return true\n }\n\n get reloadReason() {\n return\n }\n\n prepareToRender() {\n return\n }\n\n render() {\n // Abstract method\n }\n\n finishRendering() {\n if (this.resolvingFunctions) {\n this.resolvingFunctions.resolve();\n delete this.resolvingFunctions;\n }\n }\n\n async preservingPermanentElements(callback) {\n await Bardo.preservingPermanentElements(this, this.permanentElementMap, callback);\n }\n\n focusFirstAutofocusableElement() {\n if (this.shouldAutofocus) {\n const element = this.connectedSnapshot.firstAutofocusableElement;\n if (element) {\n element.focus();\n }\n }\n }\n\n // Bardo delegate\n\n enteringBardo(currentPermanentElement) {\n if (this.#activeElement) return\n\n if (currentPermanentElement.contains(this.currentSnapshot.activeElement)) {\n this.#activeElement = this.currentSnapshot.activeElement;\n }\n }\n\n leavingBardo(currentPermanentElement) {\n if (currentPermanentElement.contains(this.#activeElement) && this.#activeElement instanceof HTMLElement) {\n this.#activeElement.focus();\n\n this.#activeElement = null;\n }\n }\n\n get connectedSnapshot() {\n return this.newSnapshot.isConnected ? this.newSnapshot : this.currentSnapshot\n }\n\n get currentElement() {\n return this.currentSnapshot.element\n }\n\n get newElement() {\n return this.newSnapshot.element\n }\n\n get permanentElementMap() {\n return this.currentSnapshot.getPermanentElementMapForSnapshot(this.newSnapshot)\n }\n\n get renderMethod() {\n return \"replace\"\n }\n}\n\nclass FrameRenderer extends Renderer {\n static renderElement(currentElement, newElement) {\n const destinationRange = document.createRange();\n destinationRange.selectNodeContents(currentElement);\n destinationRange.deleteContents();\n\n const frameElement = newElement;\n const sourceRange = frameElement.ownerDocument?.createRange();\n if (sourceRange) {\n sourceRange.selectNodeContents(frameElement);\n currentElement.appendChild(sourceRange.extractContents());\n }\n }\n\n constructor(delegate, currentSnapshot, newSnapshot, renderElement, isPreview, willRender = true) {\n super(currentSnapshot, newSnapshot, renderElement, isPreview, willRender);\n this.delegate = delegate;\n }\n\n get shouldRender() {\n return true\n }\n\n async render() {\n await nextRepaint();\n this.preservingPermanentElements(() => {\n this.loadFrameElement();\n });\n this.scrollFrameIntoView();\n await nextRepaint();\n this.focusFirstAutofocusableElement();\n await nextRepaint();\n this.activateScriptElements();\n }\n\n loadFrameElement() {\n this.delegate.willRenderFrame(this.currentElement, this.newElement);\n this.renderElement(this.currentElement, this.newElement);\n }\n\n scrollFrameIntoView() {\n if (this.currentElement.autoscroll || this.newElement.autoscroll) {\n const element = this.currentElement.firstElementChild;\n const block = readScrollLogicalPosition(this.currentElement.getAttribute(\"data-autoscroll-block\"), \"end\");\n const behavior = readScrollBehavior(this.currentElement.getAttribute(\"data-autoscroll-behavior\"), \"auto\");\n\n if (element) {\n element.scrollIntoView({ block, behavior });\n return true\n }\n }\n return false\n }\n\n activateScriptElements() {\n for (const inertScriptElement of this.newScriptElements) {\n const activatedScriptElement = activateScriptElement(inertScriptElement);\n inertScriptElement.replaceWith(activatedScriptElement);\n }\n }\n\n get newScriptElements() {\n return this.currentElement.querySelectorAll(\"script\")\n }\n}\n\nfunction readScrollLogicalPosition(value, defaultValue) {\n if (value == \"end\" || value == \"start\" || value == \"center\" || value == \"nearest\") {\n return value\n } else {\n return defaultValue\n }\n}\n\nfunction readScrollBehavior(value, defaultValue) {\n if (value == \"auto\" || value == \"smooth\") {\n return value\n } else {\n return defaultValue\n }\n}\n\n// base IIFE to define idiomorph\nvar Idiomorph = (function () {\n\n //=============================================================================\n // AND NOW IT BEGINS...\n //=============================================================================\n let EMPTY_SET = new Set();\n\n // default configuration values, updatable by users now\n let defaults = {\n morphStyle: \"outerHTML\",\n callbacks : {\n beforeNodeAdded: noOp,\n afterNodeAdded: noOp,\n beforeNodeMorphed: noOp,\n afterNodeMorphed: noOp,\n beforeNodeRemoved: noOp,\n afterNodeRemoved: noOp,\n beforeAttributeUpdated: noOp,\n\n },\n head: {\n style: 'merge',\n shouldPreserve: function (elt) {\n return elt.getAttribute(\"im-preserve\") === \"true\";\n },\n shouldReAppend: function (elt) {\n return elt.getAttribute(\"im-re-append\") === \"true\";\n },\n shouldRemove: noOp,\n afterHeadMorphed: noOp,\n }\n };\n\n //=============================================================================\n // Core Morphing Algorithm - morph, morphNormalizedContent, morphOldNodeTo, morphChildren\n //=============================================================================\n function morph(oldNode, newContent, config = {}) {\n\n if (oldNode instanceof Document) {\n oldNode = oldNode.documentElement;\n }\n\n if (typeof newContent === 'string') {\n newContent = parseContent(newContent);\n }\n\n let normalizedContent = normalizeContent(newContent);\n\n let ctx = createMorphContext(oldNode, normalizedContent, config);\n\n return morphNormalizedContent(oldNode, normalizedContent, ctx);\n }\n\n function morphNormalizedContent(oldNode, normalizedNewContent, ctx) {\n if (ctx.head.block) {\n let oldHead = oldNode.querySelector('head');\n let newHead = normalizedNewContent.querySelector('head');\n if (oldHead && newHead) {\n let promises = handleHeadElement(newHead, oldHead, ctx);\n // when head promises resolve, call morph again, ignoring the head tag\n Promise.all(promises).then(function () {\n morphNormalizedContent(oldNode, normalizedNewContent, Object.assign(ctx, {\n head: {\n block: false,\n ignore: true\n }\n }));\n });\n return;\n }\n }\n\n if (ctx.morphStyle === \"innerHTML\") {\n\n // innerHTML, so we are only updating the children\n morphChildren(normalizedNewContent, oldNode, ctx);\n return oldNode.children;\n\n } else if (ctx.morphStyle === \"outerHTML\" || ctx.morphStyle == null) {\n // otherwise find the best element match in the new content, morph that, and merge its siblings\n // into either side of the best match\n let bestMatch = findBestNodeMatch(normalizedNewContent, oldNode, ctx);\n\n // stash the siblings that will need to be inserted on either side of the best match\n let previousSibling = bestMatch?.previousSibling;\n let nextSibling = bestMatch?.nextSibling;\n\n // morph it\n let morphedNode = morphOldNodeTo(oldNode, bestMatch, ctx);\n\n if (bestMatch) {\n // if there was a best match, merge the siblings in too and return the\n // whole bunch\n return insertSiblings(previousSibling, morphedNode, nextSibling);\n } else {\n // otherwise nothing was added to the DOM\n return []\n }\n } else {\n throw \"Do not understand how to morph style \" + ctx.morphStyle;\n }\n }\n\n\n /**\n * @param possibleActiveElement\n * @param ctx\n * @returns {boolean}\n */\n function ignoreValueOfActiveElement(possibleActiveElement, ctx) {\n return ctx.ignoreActiveValue && possibleActiveElement === document.activeElement && possibleActiveElement !== document.body;\n }\n\n /**\n * @param oldNode root node to merge content into\n * @param newContent new content to merge\n * @param ctx the merge context\n * @returns {Element} the element that ended up in the DOM\n */\n function morphOldNodeTo(oldNode, newContent, ctx) {\n if (ctx.ignoreActive && oldNode === document.activeElement) ; else if (newContent == null) {\n if (ctx.callbacks.beforeNodeRemoved(oldNode) === false) return oldNode;\n\n oldNode.remove();\n ctx.callbacks.afterNodeRemoved(oldNode);\n return null;\n } else if (!isSoftMatch(oldNode, newContent)) {\n if (ctx.callbacks.beforeNodeRemoved(oldNode) === false) return oldNode;\n if (ctx.callbacks.beforeNodeAdded(newContent) === false) return oldNode;\n\n oldNode.parentElement.replaceChild(newContent, oldNode);\n ctx.callbacks.afterNodeAdded(newContent);\n ctx.callbacks.afterNodeRemoved(oldNode);\n return newContent;\n } else {\n if (ctx.callbacks.beforeNodeMorphed(oldNode, newContent) === false) return oldNode;\n\n if (oldNode instanceof HTMLHeadElement && ctx.head.ignore) ; else if (oldNode instanceof HTMLHeadElement && ctx.head.style !== \"morph\") {\n handleHeadElement(newContent, oldNode, ctx);\n } else {\n syncNodeFrom(newContent, oldNode, ctx);\n if (!ignoreValueOfActiveElement(oldNode, ctx)) {\n morphChildren(newContent, oldNode, ctx);\n }\n }\n ctx.callbacks.afterNodeMorphed(oldNode, newContent);\n return oldNode;\n }\n }\n\n /**\n * This is the core algorithm for matching up children. The idea is to use id sets to try to match up\n * nodes as faithfully as possible. We greedily match, which allows us to keep the algorithm fast, but\n * by using id sets, we are able to better match up with content deeper in the DOM.\n *\n * Basic algorithm is, for each node in the new content:\n *\n * - if we have reached the end of the old parent, append the new content\n * - if the new content has an id set match with the current insertion point, morph\n * - search for an id set match\n * - if id set match found, morph\n * - otherwise search for a \"soft\" match\n * - if a soft match is found, morph\n * - otherwise, prepend the new node before the current insertion point\n *\n * The two search algorithms terminate if competing node matches appear to outweigh what can be achieved\n * with the current node. See findIdSetMatch() and findSoftMatch() for details.\n *\n * @param {Element} newParent the parent element of the new content\n * @param {Element } oldParent the old content that we are merging the new content into\n * @param ctx the merge context\n */\n function morphChildren(newParent, oldParent, ctx) {\n\n let nextNewChild = newParent.firstChild;\n let insertionPoint = oldParent.firstChild;\n let newChild;\n\n // run through all the new content\n while (nextNewChild) {\n\n newChild = nextNewChild;\n nextNewChild = newChild.nextSibling;\n\n // if we are at the end of the exiting parent's children, just append\n if (insertionPoint == null) {\n if (ctx.callbacks.beforeNodeAdded(newChild) === false) return;\n\n oldParent.appendChild(newChild);\n ctx.callbacks.afterNodeAdded(newChild);\n removeIdsFromConsideration(ctx, newChild);\n continue;\n }\n\n // if the current node has an id set match then morph\n if (isIdSetMatch(newChild, insertionPoint, ctx)) {\n morphOldNodeTo(insertionPoint, newChild, ctx);\n insertionPoint = insertionPoint.nextSibling;\n removeIdsFromConsideration(ctx, newChild);\n continue;\n }\n\n // otherwise search forward in the existing old children for an id set match\n let idSetMatch = findIdSetMatch(newParent, oldParent, newChild, insertionPoint, ctx);\n\n // if we found a potential match, remove the nodes until that point and morph\n if (idSetMatch) {\n insertionPoint = removeNodesBetween(insertionPoint, idSetMatch, ctx);\n morphOldNodeTo(idSetMatch, newChild, ctx);\n removeIdsFromConsideration(ctx, newChild);\n continue;\n }\n\n // no id set match found, so scan forward for a soft match for the current node\n let softMatch = findSoftMatch(newParent, oldParent, newChild, insertionPoint, ctx);\n\n // if we found a soft match for the current node, morph\n if (softMatch) {\n insertionPoint = removeNodesBetween(insertionPoint, softMatch, ctx);\n morphOldNodeTo(softMatch, newChild, ctx);\n removeIdsFromConsideration(ctx, newChild);\n continue;\n }\n\n // abandon all hope of morphing, just insert the new child before the insertion point\n // and move on\n if (ctx.callbacks.beforeNodeAdded(newChild) === false) return;\n\n oldParent.insertBefore(newChild, insertionPoint);\n ctx.callbacks.afterNodeAdded(newChild);\n removeIdsFromConsideration(ctx, newChild);\n }\n\n // remove any remaining old nodes that didn't match up with new content\n while (insertionPoint !== null) {\n\n let tempNode = insertionPoint;\n insertionPoint = insertionPoint.nextSibling;\n removeNode(tempNode, ctx);\n }\n }\n\n //=============================================================================\n // Attribute Syncing Code\n //=============================================================================\n\n /**\n * @param attr {String} the attribute to be mutated\n * @param to {Element} the element that is going to be updated\n * @param updateType {(\"update\"|\"remove\")}\n * @param ctx the merge context\n * @returns {boolean} true if the attribute should be ignored, false otherwise\n */\n function ignoreAttribute(attr, to, updateType, ctx) {\n if(attr === 'value' && ctx.ignoreActiveValue && to === document.activeElement){\n return true;\n }\n return ctx.callbacks.beforeAttributeUpdated(attr, to, updateType) === false;\n }\n\n /**\n * syncs a given node with another node, copying over all attributes and\n * inner element state from the 'from' node to the 'to' node\n *\n * @param {Element} from the element to copy attributes & state from\n * @param {Element} to the element to copy attributes & state to\n * @param ctx the merge context\n */\n function syncNodeFrom(from, to, ctx) {\n let type = from.nodeType;\n\n // if is an element type, sync the attributes from the\n // new node into the new node\n if (type === 1 /* element type */) {\n const fromAttributes = from.attributes;\n const toAttributes = to.attributes;\n for (const fromAttribute of fromAttributes) {\n if (ignoreAttribute(fromAttribute.name, to, 'update', ctx)) {\n continue;\n }\n if (to.getAttribute(fromAttribute.name) !== fromAttribute.value) {\n to.setAttribute(fromAttribute.name, fromAttribute.value);\n }\n }\n // iterate backwards to avoid skipping over items when a delete occurs\n for (let i = toAttributes.length - 1; 0 <= i; i--) {\n const toAttribute = toAttributes[i];\n if (ignoreAttribute(toAttribute.name, to, 'remove', ctx)) {\n continue;\n }\n if (!from.hasAttribute(toAttribute.name)) {\n to.removeAttribute(toAttribute.name);\n }\n }\n }\n\n // sync text nodes\n if (type === 8 /* comment */ || type === 3 /* text */) {\n if (to.nodeValue !== from.nodeValue) {\n to.nodeValue = from.nodeValue;\n }\n }\n\n if (!ignoreValueOfActiveElement(to, ctx)) {\n // sync input values\n syncInputValue(from, to, ctx);\n }\n }\n\n /**\n * @param from {Element} element to sync the value from\n * @param to {Element} element to sync the value to\n * @param attributeName {String} the attribute name\n * @param ctx the merge context\n */\n function syncBooleanAttribute(from, to, attributeName, ctx) {\n if (from[attributeName] !== to[attributeName]) {\n let ignoreUpdate = ignoreAttribute(attributeName, to, 'update', ctx);\n if (!ignoreUpdate) {\n to[attributeName] = from[attributeName];\n }\n if (from[attributeName]) {\n if (!ignoreUpdate) {\n to.setAttribute(attributeName, from[attributeName]);\n }\n } else {\n if (!ignoreAttribute(attributeName, to, 'remove', ctx)) {\n to.removeAttribute(attributeName);\n }\n }\n }\n }\n\n /**\n * NB: many bothans died to bring us information:\n *\n * https://github.com/patrick-steele-idem/morphdom/blob/master/src/specialElHandlers.js\n * https://github.com/choojs/nanomorph/blob/master/lib/morph.jsL113\n *\n * @param from {Element} the element to sync the input value from\n * @param to {Element} the element to sync the input value to\n * @param ctx the merge context\n */\n function syncInputValue(from, to, ctx) {\n if (from instanceof HTMLInputElement &&\n to instanceof HTMLInputElement &&\n from.type !== 'file') {\n\n let fromValue = from.value;\n let toValue = to.value;\n\n // sync boolean attributes\n syncBooleanAttribute(from, to, 'checked', ctx);\n syncBooleanAttribute(from, to, 'disabled', ctx);\n\n if (!from.hasAttribute('value')) {\n if (!ignoreAttribute('value', to, 'remove', ctx)) {\n to.value = '';\n to.removeAttribute('value');\n }\n } else if (fromValue !== toValue) {\n if (!ignoreAttribute('value', to, 'update', ctx)) {\n to.setAttribute('value', fromValue);\n to.value = fromValue;\n }\n }\n } else if (from instanceof HTMLOptionElement) {\n syncBooleanAttribute(from, to, 'selected', ctx);\n } else if (from instanceof HTMLTextAreaElement && to instanceof HTMLTextAreaElement) {\n let fromValue = from.value;\n let toValue = to.value;\n if (ignoreAttribute('value', to, 'update', ctx)) {\n return;\n }\n if (fromValue !== toValue) {\n to.value = fromValue;\n }\n if (to.firstChild && to.firstChild.nodeValue !== fromValue) {\n to.firstChild.nodeValue = fromValue;\n }\n }\n }\n\n //=============================================================================\n // the HEAD tag can be handled specially, either w/ a 'merge' or 'append' style\n //=============================================================================\n function handleHeadElement(newHeadTag, currentHead, ctx) {\n\n let added = [];\n let removed = [];\n let preserved = [];\n let nodesToAppend = [];\n\n let headMergeStyle = ctx.head.style;\n\n // put all new head elements into a Map, by their outerHTML\n let srcToNewHeadNodes = new Map();\n for (const newHeadChild of newHeadTag.children) {\n srcToNewHeadNodes.set(newHeadChild.outerHTML, newHeadChild);\n }\n\n // for each elt in the current head\n for (const currentHeadElt of currentHead.children) {\n\n // If the current head element is in the map\n let inNewContent = srcToNewHeadNodes.has(currentHeadElt.outerHTML);\n let isReAppended = ctx.head.shouldReAppend(currentHeadElt);\n let isPreserved = ctx.head.shouldPreserve(currentHeadElt);\n if (inNewContent || isPreserved) {\n if (isReAppended) {\n // remove the current version and let the new version replace it and re-execute\n removed.push(currentHeadElt);\n } else {\n // this element already exists and should not be re-appended, so remove it from\n // the new content map, preserving it in the DOM\n srcToNewHeadNodes.delete(currentHeadElt.outerHTML);\n preserved.push(currentHeadElt);\n }\n } else {\n if (headMergeStyle === \"append\") {\n // we are appending and this existing element is not new content\n // so if and only if it is marked for re-append do we do anything\n if (isReAppended) {\n removed.push(currentHeadElt);\n nodesToAppend.push(currentHeadElt);\n }\n } else {\n // if this is a merge, we remove this content since it is not in the new head\n if (ctx.head.shouldRemove(currentHeadElt) !== false) {\n removed.push(currentHeadElt);\n }\n }\n }\n }\n\n // Push the remaining new head elements in the Map into the\n // nodes to append to the head tag\n nodesToAppend.push(...srcToNewHeadNodes.values());\n\n let promises = [];\n for (const newNode of nodesToAppend) {\n let newElt = document.createRange().createContextualFragment(newNode.outerHTML).firstChild;\n if (ctx.callbacks.beforeNodeAdded(newElt) !== false) {\n if (newElt.href || newElt.src) {\n let resolve = null;\n let promise = new Promise(function (_resolve) {\n resolve = _resolve;\n });\n newElt.addEventListener('load', function () {\n resolve();\n });\n promises.push(promise);\n }\n currentHead.appendChild(newElt);\n ctx.callbacks.afterNodeAdded(newElt);\n added.push(newElt);\n }\n }\n\n // remove all removed elements, after we have appended the new elements to avoid\n // additional network requests for things like style sheets\n for (const removedElement of removed) {\n if (ctx.callbacks.beforeNodeRemoved(removedElement) !== false) {\n currentHead.removeChild(removedElement);\n ctx.callbacks.afterNodeRemoved(removedElement);\n }\n }\n\n ctx.head.afterHeadMorphed(currentHead, {added: added, kept: preserved, removed: removed});\n return promises;\n }\n\n function noOp() {\n }\n\n /*\n Deep merges the config object and the Idiomoroph.defaults object to\n produce a final configuration object\n */\n function mergeDefaults(config) {\n let finalConfig = {};\n // copy top level stuff into final config\n Object.assign(finalConfig, defaults);\n Object.assign(finalConfig, config);\n\n // copy callbacks into final config (do this to deep merge the callbacks)\n finalConfig.callbacks = {};\n Object.assign(finalConfig.callbacks, defaults.callbacks);\n Object.assign(finalConfig.callbacks, config.callbacks);\n\n // copy head config into final config (do this to deep merge the head)\n finalConfig.head = {};\n Object.assign(finalConfig.head, defaults.head);\n Object.assign(finalConfig.head, config.head);\n return finalConfig;\n }\n\n function createMorphContext(oldNode, newContent, config) {\n config = mergeDefaults(config);\n return {\n target: oldNode,\n newContent: newContent,\n config: config,\n morphStyle: config.morphStyle,\n ignoreActive: config.ignoreActive,\n ignoreActiveValue: config.ignoreActiveValue,\n idMap: createIdMap(oldNode, newContent),\n deadIds: new Set(),\n callbacks: config.callbacks,\n head: config.head\n }\n }\n\n function isIdSetMatch(node1, node2, ctx) {\n if (node1 == null || node2 == null) {\n return false;\n }\n if (node1.nodeType === node2.nodeType && node1.tagName === node2.tagName) {\n if (node1.id !== \"\" && node1.id === node2.id) {\n return true;\n } else {\n return getIdIntersectionCount(ctx, node1, node2) > 0;\n }\n }\n return false;\n }\n\n function isSoftMatch(node1, node2) {\n if (node1 == null || node2 == null) {\n return false;\n }\n return node1.nodeType === node2.nodeType && node1.tagName === node2.tagName\n }\n\n function removeNodesBetween(startInclusive, endExclusive, ctx) {\n while (startInclusive !== endExclusive) {\n let tempNode = startInclusive;\n startInclusive = startInclusive.nextSibling;\n removeNode(tempNode, ctx);\n }\n removeIdsFromConsideration(ctx, endExclusive);\n return endExclusive.nextSibling;\n }\n\n //=============================================================================\n // Scans forward from the insertionPoint in the old parent looking for a potential id match\n // for the newChild. We stop if we find a potential id match for the new child OR\n // if the number of potential id matches we are discarding is greater than the\n // potential id matches for the new child\n //=============================================================================\n function findIdSetMatch(newContent, oldParent, newChild, insertionPoint, ctx) {\n\n // max id matches we are willing to discard in our search\n let newChildPotentialIdCount = getIdIntersectionCount(ctx, newChild, oldParent);\n\n let potentialMatch = null;\n\n // only search forward if there is a possibility of an id match\n if (newChildPotentialIdCount > 0) {\n let potentialMatch = insertionPoint;\n // if there is a possibility of an id match, scan forward\n // keep track of the potential id match count we are discarding (the\n // newChildPotentialIdCount must be greater than this to make it likely\n // worth it)\n let otherMatchCount = 0;\n while (potentialMatch != null) {\n\n // If we have an id match, return the current potential match\n if (isIdSetMatch(newChild, potentialMatch, ctx)) {\n return potentialMatch;\n }\n\n // computer the other potential matches of this new content\n otherMatchCount += getIdIntersectionCount(ctx, potentialMatch, newContent);\n if (otherMatchCount > newChildPotentialIdCount) {\n // if we have more potential id matches in _other_ content, we\n // do not have a good candidate for an id match, so return null\n return null;\n }\n\n // advanced to the next old content child\n potentialMatch = potentialMatch.nextSibling;\n }\n }\n return potentialMatch;\n }\n\n //=============================================================================\n // Scans forward from the insertionPoint in the old parent looking for a potential soft match\n // for the newChild. We stop if we find a potential soft match for the new child OR\n // if we find a potential id match in the old parents children OR if we find two\n // potential soft matches for the next two pieces of new content\n //=============================================================================\n function findSoftMatch(newContent, oldParent, newChild, insertionPoint, ctx) {\n\n let potentialSoftMatch = insertionPoint;\n let nextSibling = newChild.nextSibling;\n let siblingSoftMatchCount = 0;\n\n while (potentialSoftMatch != null) {\n\n if (getIdIntersectionCount(ctx, potentialSoftMatch, newContent) > 0) {\n // the current potential soft match has a potential id set match with the remaining new\n // content so bail out of looking\n return null;\n }\n\n // if we have a soft match with the current node, return it\n if (isSoftMatch(newChild, potentialSoftMatch)) {\n return potentialSoftMatch;\n }\n\n if (isSoftMatch(nextSibling, potentialSoftMatch)) {\n // the next new node has a soft match with this node, so\n // increment the count of future soft matches\n siblingSoftMatchCount++;\n nextSibling = nextSibling.nextSibling;\n\n // If there are two future soft matches, bail to allow the siblings to soft match\n // so that we don't consume future soft matches for the sake of the current node\n if (siblingSoftMatchCount >= 2) {\n return null;\n }\n }\n\n // advanced to the next old content child\n potentialSoftMatch = potentialSoftMatch.nextSibling;\n }\n\n return potentialSoftMatch;\n }\n\n function parseContent(newContent) {\n let parser = new DOMParser();\n\n // remove svgs to avoid false-positive matches on head, etc.\n let contentWithSvgsRemoved = newContent.replace(/<svg(\\s[^>]*>|>)([\\s\\S]*?)<\\/svg>/gim, '');\n\n // if the newContent contains a html, head or body tag, we can simply parse it w/o wrapping\n if (contentWithSvgsRemoved.match(/<\\/html>/) || contentWithSvgsRemoved.match(/<\\/head>/) || contentWithSvgsRemoved.match(/<\\/body>/)) {\n let content = parser.parseFromString(newContent, \"text/html\");\n // if it is a full HTML document, return the document itself as the parent container\n if (contentWithSvgsRemoved.match(/<\\/html>/)) {\n content.generatedByIdiomorph = true;\n return content;\n } else {\n // otherwise return the html element as the parent container\n let htmlElement = content.firstChild;\n if (htmlElement) {\n htmlElement.generatedByIdiomorph = true;\n return htmlElement;\n } else {\n return null;\n }\n }\n } else {\n // if it is partial HTML, wrap it in a template tag to provide a parent element and also to help\n // deal with touchy tags like tr, tbody, etc.\n let responseDoc = parser.parseFromString(\"<body><template>\" + newContent + \"</template></body>\", \"text/html\");\n let content = responseDoc.body.querySelector('template').content;\n content.generatedByIdiomorph = true;\n return content\n }\n }\n\n function normalizeContent(newContent) {\n if (newContent == null) {\n // noinspection UnnecessaryLocalVariableJS\n const dummyParent = document.createElement('div');\n return dummyParent;\n } else if (newContent.generatedByIdiomorph) {\n // the template tag created by idiomorph parsing can serve as a dummy parent\n return newContent;\n } else if (newContent instanceof Node) {\n // a single node is added as a child to a dummy parent\n const dummyParent = document.createElement('div');\n dummyParent.append(newContent);\n return dummyParent;\n } else {\n // all nodes in the array or HTMLElement collection are consolidated under\n // a single dummy parent element\n const dummyParent = document.createElement('div');\n for (const elt of [...newContent]) {\n dummyParent.append(elt);\n }\n return dummyParent;\n }\n }\n\n function insertSiblings(previousSibling, morphedNode, nextSibling) {\n let stack = [];\n let added = [];\n while (previousSibling != null) {\n stack.push(previousSibling);\n previousSibling = previousSibling.previousSibling;\n }\n while (stack.length > 0) {\n let node = stack.pop();\n added.push(node); // push added preceding siblings on in order and insert\n morphedNode.parentElement.insertBefore(node, morphedNode);\n }\n added.push(morphedNode);\n while (nextSibling != null) {\n stack.push(nextSibling);\n added.push(nextSibling); // here we are going in order, so push on as we scan, rather than add\n nextSibling = nextSibling.nextSibling;\n }\n while (stack.length > 0) {\n morphedNode.parentElement.insertBefore(stack.pop(), morphedNode.nextSibling);\n }\n return added;\n }\n\n function findBestNodeMatch(newContent, oldNode, ctx) {\n let currentElement;\n currentElement = newContent.firstChild;\n let bestElement = currentElement;\n let score = 0;\n while (currentElement) {\n let newScore = scoreElement(currentElement, oldNode, ctx);\n if (newScore > score) {\n bestElement = currentElement;\n score = newScore;\n }\n currentElement = currentElement.nextSibling;\n }\n return bestElement;\n }\n\n function scoreElement(node1, node2, ctx) {\n if (isSoftMatch(node1, node2)) {\n return .5 + getIdIntersectionCount(ctx, node1, node2);\n }\n return 0;\n }\n\n function removeNode(tempNode, ctx) {\n removeIdsFromConsideration(ctx, tempNode);\n if (ctx.callbacks.beforeNodeRemoved(tempNode) === false) return;\n\n tempNode.remove();\n ctx.callbacks.afterNodeRemoved(tempNode);\n }\n\n //=============================================================================\n // ID Set Functions\n //=============================================================================\n\n function isIdInConsideration(ctx, id) {\n return !ctx.deadIds.has(id);\n }\n\n function idIsWithinNode(ctx, id, targetNode) {\n let idSet = ctx.idMap.get(targetNode) || EMPTY_SET;\n return idSet.has(id);\n }\n\n function removeIdsFromConsideration(ctx, node) {\n let idSet = ctx.idMap.get(node) || EMPTY_SET;\n for (const id of idSet) {\n ctx.deadIds.add(id);\n }\n }\n\n function getIdIntersectionCount(ctx, node1, node2) {\n let sourceSet = ctx.idMap.get(node1) || EMPTY_SET;\n let matchCount = 0;\n for (const id of sourceSet) {\n // a potential match is an id in the source and potentialIdsSet, but\n // that has not already been merged into the DOM\n if (isIdInConsideration(ctx, id) && idIsWithinNode(ctx, id, node2)) {\n ++matchCount;\n }\n }\n return matchCount;\n }\n\n /**\n * A bottom up algorithm that finds all elements with ids inside of the node\n * argument and populates id sets for those nodes and all their parents, generating\n * a set of ids contained within all nodes for the entire hierarchy in the DOM\n *\n * @param node {Element}\n * @param {Map<Node, Set<String>>} idMap\n */\n function populateIdMapForNode(node, idMap) {\n let nodeParent = node.parentElement;\n // find all elements with an id property\n let idElements = node.querySelectorAll('[id]');\n for (const elt of idElements) {\n let current = elt;\n // walk up the parent hierarchy of that element, adding the id\n // of element to the parent's id set\n while (current !== nodeParent && current != null) {\n let idSet = idMap.get(current);\n // if the id set doesn't exist, create it and insert it in the map\n if (idSet == null) {\n idSet = new Set();\n idMap.set(current, idSet);\n }\n idSet.add(elt.id);\n current = current.parentElement;\n }\n }\n }\n\n /**\n * This function computes a map of nodes to all ids contained within that node (inclusive of the\n * node). This map can be used to ask if two nodes have intersecting sets of ids, which allows\n * for a looser definition of \"matching\" than tradition id matching, and allows child nodes\n * to contribute to a parent nodes matching.\n *\n * @param {Element} oldContent the old content that will be morphed\n * @param {Element} newContent the new content to morph to\n * @returns {Map<Node, Set<String>>} a map of nodes to id sets for the\n */\n function createIdMap(oldContent, newContent) {\n let idMap = new Map();\n populateIdMapForNode(oldContent, idMap);\n populateIdMapForNode(newContent, idMap);\n return idMap;\n }\n\n //=============================================================================\n // This is what ends up becoming the Idiomorph global object\n //=============================================================================\n return {\n morph,\n defaults\n }\n })();\n\nfunction morphElements(currentElement, newElement, { callbacks, ...options } = {}) {\n Idiomorph.morph(currentElement, newElement, {\n ...options,\n callbacks: new DefaultIdiomorphCallbacks(callbacks)\n });\n}\n\nfunction morphChildren(currentElement, newElement) {\n morphElements(currentElement, newElement.children, {\n morphStyle: \"innerHTML\"\n });\n}\n\nclass DefaultIdiomorphCallbacks {\n #beforeNodeMorphed\n\n constructor({ beforeNodeMorphed } = {}) {\n this.#beforeNodeMorphed = beforeNodeMorphed || (() => true);\n }\n\n beforeNodeAdded = (node) => {\n return !(node.id && node.hasAttribute(\"data-turbo-permanent\") && document.getElementById(node.id))\n }\n\n beforeNodeMorphed = (currentElement, newElement) => {\n if (currentElement instanceof Element) {\n if (!currentElement.hasAttribute(\"data-turbo-permanent\") && this.#beforeNodeMorphed(currentElement, newElement)) {\n const event = dispatch(\"turbo:before-morph-element\", {\n cancelable: true,\n target: currentElement,\n detail: { currentElement, newElement }\n });\n\n return !event.defaultPrevented\n } else {\n return false\n }\n }\n }\n\n beforeAttributeUpdated = (attributeName, target, mutationType) => {\n const event = dispatch(\"turbo:before-morph-attribute\", {\n cancelable: true,\n target,\n detail: { attributeName, mutationType }\n });\n\n return !event.defaultPrevented\n }\n\n beforeNodeRemoved = (node) => {\n return this.beforeNodeMorphed(node)\n }\n\n afterNodeMorphed = (currentElement, newElement) => {\n if (currentElement instanceof Element) {\n dispatch(\"turbo:morph-element\", {\n target: currentElement,\n detail: { currentElement, newElement }\n });\n }\n }\n}\n\nclass MorphingFrameRenderer extends FrameRenderer {\n static renderElement(currentElement, newElement) {\n dispatch(\"turbo:before-frame-morph\", {\n target: currentElement,\n detail: { currentElement, newElement }\n });\n\n morphChildren(currentElement, newElement);\n }\n\n async preservingPermanentElements(callback) {\n return await callback()\n }\n}\n\nclass ProgressBar {\n static animationDuration = 300 /*ms*/\n\n static get defaultCSS() {\n return unindent`\n .turbo-progress-bar {\n position: fixed;\n display: block;\n top: 0;\n left: 0;\n height: 3px;\n background: #0076ff;\n z-index: 2147483647;\n transition:\n width ${ProgressBar.animationDuration}ms ease-out,\n opacity ${ProgressBar.animationDuration / 2}ms ${ProgressBar.animationDuration / 2}ms ease-in;\n transform: translate3d(0, 0, 0);\n }\n `\n }\n\n hiding = false\n value = 0\n visible = false\n\n constructor() {\n this.stylesheetElement = this.createStylesheetElement();\n this.progressElement = this.createProgressElement();\n this.installStylesheetElement();\n this.setValue(0);\n }\n\n show() {\n if (!this.visible) {\n this.visible = true;\n this.installProgressElement();\n this.startTrickling();\n }\n }\n\n hide() {\n if (this.visible && !this.hiding) {\n this.hiding = true;\n this.fadeProgressElement(() => {\n this.uninstallProgressElement();\n this.stopTrickling();\n this.visible = false;\n this.hiding = false;\n });\n }\n }\n\n setValue(value) {\n this.value = value;\n this.refresh();\n }\n\n // Private\n\n installStylesheetElement() {\n document.head.insertBefore(this.stylesheetElement, document.head.firstChild);\n }\n\n installProgressElement() {\n this.progressElement.style.width = \"0\";\n this.progressElement.style.opacity = \"1\";\n document.documentElement.insertBefore(this.progressElement, document.body);\n this.refresh();\n }\n\n fadeProgressElement(callback) {\n this.progressElement.style.opacity = \"0\";\n setTimeout(callback, ProgressBar.animationDuration * 1.5);\n }\n\n uninstallProgressElement() {\n if (this.progressElement.parentNode) {\n document.documentElement.removeChild(this.progressElement);\n }\n }\n\n startTrickling() {\n if (!this.trickleInterval) {\n this.trickleInterval = window.setInterval(this.trickle, ProgressBar.animationDuration);\n }\n }\n\n stopTrickling() {\n window.clearInterval(this.trickleInterval);\n delete this.trickleInterval;\n }\n\n trickle = () => {\n this.setValue(this.value + Math.random() / 100);\n }\n\n refresh() {\n requestAnimationFrame(() => {\n this.progressElement.style.width = `${10 + this.value * 90}%`;\n });\n }\n\n createStylesheetElement() {\n const element = document.createElement(\"style\");\n element.type = \"text/css\";\n element.textContent = ProgressBar.defaultCSS;\n const cspNonce = getCspNonce();\n if (cspNonce) {\n element.nonce = cspNonce;\n }\n return element\n }\n\n createProgressElement() {\n const element = document.createElement(\"div\");\n element.className = \"turbo-progress-bar\";\n return element\n }\n}\n\nclass HeadSnapshot extends Snapshot {\n detailsByOuterHTML = this.children\n .filter((element) => !elementIsNoscript(element))\n .map((element) => elementWithoutNonce(element))\n .reduce((result, element) => {\n const { outerHTML } = element;\n const details =\n outerHTML in result\n ? result[outerHTML]\n : {\n type: elementType(element),\n tracked: elementIsTracked(element),\n elements: []\n };\n return {\n ...result,\n [outerHTML]: {\n ...details,\n elements: [...details.elements, element]\n }\n }\n }, {})\n\n get trackedElementSignature() {\n return Object.keys(this.detailsByOuterHTML)\n .filter((outerHTML) => this.detailsByOuterHTML[outerHTML].tracked)\n .join(\"\")\n }\n\n getScriptElementsNotInSnapshot(snapshot) {\n return this.getElementsMatchingTypeNotInSnapshot(\"script\", snapshot)\n }\n\n getStylesheetElementsNotInSnapshot(snapshot) {\n return this.getElementsMatchingTypeNotInSnapshot(\"stylesheet\", snapshot)\n }\n\n getElementsMatchingTypeNotInSnapshot(matchedType, snapshot) {\n return Object.keys(this.detailsByOuterHTML)\n .filter((outerHTML) => !(outerHTML in snapshot.detailsByOuterHTML))\n .map((outerHTML) => this.detailsByOuterHTML[outerHTML])\n .filter(({ type }) => type == matchedType)\n .map(({ elements: [element] }) => element)\n }\n\n get provisionalElements() {\n return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => {\n const { type, tracked, elements } = this.detailsByOuterHTML[outerHTML];\n if (type == null && !tracked) {\n return [...result, ...elements]\n } else if (elements.length > 1) {\n return [...result, ...elements.slice(1)]\n } else {\n return result\n }\n }, [])\n }\n\n getMetaValue(name) {\n const element = this.findMetaElementByName(name);\n return element ? element.getAttribute(\"content\") : null\n }\n\n findMetaElementByName(name) {\n return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => {\n const {\n elements: [element]\n } = this.detailsByOuterHTML[outerHTML];\n return elementIsMetaElementWithName(element, name) ? element : result\n }, undefined | undefined)\n }\n}\n\nfunction elementType(element) {\n if (elementIsScript(element)) {\n return \"script\"\n } else if (elementIsStylesheet(element)) {\n return \"stylesheet\"\n }\n}\n\nfunction elementIsTracked(element) {\n return element.getAttribute(\"data-turbo-track\") == \"reload\"\n}\n\nfunction elementIsScript(element) {\n const tagName = element.localName;\n return tagName == \"script\"\n}\n\nfunction elementIsNoscript(element) {\n const tagName = element.localName;\n return tagName == \"noscript\"\n}\n\nfunction elementIsStylesheet(element) {\n const tagName = element.localName;\n return tagName == \"style\" || (tagName == \"link\" && element.getAttribute(\"rel\") == \"stylesheet\")\n}\n\nfunction elementIsMetaElementWithName(element, name) {\n const tagName = element.localName;\n return tagName == \"meta\" && element.getAttribute(\"name\") == name\n}\n\nfunction elementWithoutNonce(element) {\n if (element.hasAttribute(\"nonce\")) {\n element.setAttribute(\"nonce\", \"\");\n }\n\n return element\n}\n\nclass PageSnapshot extends Snapshot {\n static fromHTMLString(html = \"\") {\n return this.fromDocument(parseHTMLDocument(html))\n }\n\n static fromElement(element) {\n return this.fromDocument(element.ownerDocument)\n }\n\n static fromDocument({ documentElement, body, head }) {\n return new this(documentElement, body, new HeadSnapshot(head))\n }\n\n constructor(documentElement, body, headSnapshot) {\n super(body);\n this.documentElement = documentElement;\n this.headSnapshot = headSnapshot;\n }\n\n clone() {\n const clonedElement = this.element.cloneNode(true);\n\n const selectElements = this.element.querySelectorAll(\"select\");\n const clonedSelectElements = clonedElement.querySelectorAll(\"select\");\n\n for (const [index, source] of selectElements.entries()) {\n const clone = clonedSelectElements[index];\n for (const option of clone.selectedOptions) option.selected = false;\n for (const option of source.selectedOptions) clone.options[option.index].selected = true;\n }\n\n for (const clonedPasswordInput of clonedElement.querySelectorAll('input[type=\"password\"]')) {\n clonedPasswordInput.value = \"\";\n }\n\n return new PageSnapshot(this.documentElement, clonedElement, this.headSnapshot)\n }\n\n get lang() {\n return this.documentElement.getAttribute(\"lang\")\n }\n\n get headElement() {\n return this.headSnapshot.element\n }\n\n get rootLocation() {\n const root = this.getSetting(\"root\") ?? \"/\";\n return expandURL(root)\n }\n\n get cacheControlValue() {\n return this.getSetting(\"cache-control\")\n }\n\n get isPreviewable() {\n return this.cacheControlValue != \"no-preview\"\n }\n\n get isCacheable() {\n return this.cacheControlValue != \"no-cache\"\n }\n\n get isVisitable() {\n return this.getSetting(\"visit-control\") != \"reload\"\n }\n\n get prefersViewTransitions() {\n return this.headSnapshot.getMetaValue(\"view-transition\") === \"same-origin\"\n }\n\n get shouldMorphPage() {\n return this.getSetting(\"refresh-method\") === \"morph\"\n }\n\n get shouldPreserveScrollPosition() {\n return this.getSetting(\"refresh-scroll\") === \"preserve\"\n }\n\n // Private\n\n getSetting(name) {\n return this.headSnapshot.getMetaValue(`turbo-${name}`)\n }\n}\n\nclass ViewTransitioner {\n #viewTransitionStarted = false\n #lastOperation = Promise.resolve()\n\n renderChange(useViewTransition, render) {\n if (useViewTransition && this.viewTransitionsAvailable && !this.#viewTransitionStarted) {\n this.#viewTransitionStarted = true;\n this.#lastOperation = this.#lastOperation.then(async () => {\n await document.startViewTransition(render).finished;\n });\n } else {\n this.#lastOperation = this.#lastOperation.then(render);\n }\n\n return this.#lastOperation\n }\n\n get viewTransitionsAvailable() {\n return document.startViewTransition\n }\n}\n\nconst defaultOptions = {\n action: \"advance\",\n historyChanged: false,\n visitCachedSnapshot: () => {},\n willRender: true,\n updateHistory: true,\n shouldCacheSnapshot: true,\n acceptsStreamResponse: false\n};\n\nconst TimingMetric = {\n visitStart: \"visitStart\",\n requestStart: \"requestStart\",\n requestEnd: \"requestEnd\",\n visitEnd: \"visitEnd\"\n};\n\nconst VisitState = {\n initialized: \"initialized\",\n started: \"started\",\n canceled: \"canceled\",\n failed: \"failed\",\n completed: \"completed\"\n};\n\nconst SystemStatusCode = {\n networkFailure: 0,\n timeoutFailure: -1,\n contentTypeMismatch: -2\n};\n\nconst Direction = {\n advance: \"forward\",\n restore: \"back\",\n replace: \"none\"\n};\n\nclass Visit {\n identifier = uuid() // Required by turbo-ios\n timingMetrics = {}\n\n followedRedirect = false\n historyChanged = false\n scrolled = false\n shouldCacheSnapshot = true\n acceptsStreamResponse = false\n snapshotCached = false\n state = VisitState.initialized\n viewTransitioner = new ViewTransitioner()\n\n constructor(delegate, location, restorationIdentifier, options = {}) {\n this.delegate = delegate;\n this.location = location;\n this.restorationIdentifier = restorationIdentifier || uuid();\n\n const {\n action,\n historyChanged,\n referrer,\n snapshot,\n snapshotHTML,\n response,\n visitCachedSnapshot,\n willRender,\n updateHistory,\n shouldCacheSnapshot,\n acceptsStreamResponse,\n direction\n } = {\n ...defaultOptions,\n ...options\n };\n this.action = action;\n this.historyChanged = historyChanged;\n this.referrer = referrer;\n this.snapshot = snapshot;\n this.snapshotHTML = snapshotHTML;\n this.response = response;\n this.isSamePage = this.delegate.locationWithActionIsSamePage(this.location, this.action);\n this.isPageRefresh = this.view.isPageRefresh(this);\n this.visitCachedSnapshot = visitCachedSnapshot;\n this.willRender = willRender;\n this.updateHistory = updateHistory;\n this.scrolled = !willRender;\n this.shouldCacheSnapshot = shouldCacheSnapshot;\n this.acceptsStreamResponse = acceptsStreamResponse;\n this.direction = direction || Direction[action];\n }\n\n get adapter() {\n return this.delegate.adapter\n }\n\n get view() {\n return this.delegate.view\n }\n\n get history() {\n return this.delegate.history\n }\n\n get restorationData() {\n return this.history.getRestorationDataForIdentifier(this.restorationIdentifier)\n }\n\n get silent() {\n return this.isSamePage\n }\n\n start() {\n if (this.state == VisitState.initialized) {\n this.recordTimingMetric(TimingMetric.visitStart);\n this.state = VisitState.started;\n this.adapter.visitStarted(this);\n this.delegate.visitStarted(this);\n }\n }\n\n cancel() {\n if (this.state == VisitState.started) {\n if (this.request) {\n this.request.cancel();\n }\n this.cancelRender();\n this.state = VisitState.canceled;\n }\n }\n\n complete() {\n if (this.state == VisitState.started) {\n this.recordTimingMetric(TimingMetric.visitEnd);\n this.adapter.visitCompleted(this);\n this.state = VisitState.completed;\n this.followRedirect();\n\n if (!this.followedRedirect) {\n this.delegate.visitCompleted(this);\n }\n }\n }\n\n fail() {\n if (this.state == VisitState.started) {\n this.state = VisitState.failed;\n this.adapter.visitFailed(this);\n this.delegate.visitCompleted(this);\n }\n }\n\n changeHistory() {\n if (!this.historyChanged && this.updateHistory) {\n const actionForHistory = this.location.href === this.referrer?.href ? \"replace\" : this.action;\n const method = getHistoryMethodForAction(actionForHistory);\n this.history.update(method, this.location, this.restorationIdentifier);\n this.historyChanged = true;\n }\n }\n\n issueRequest() {\n if (this.hasPreloadedResponse()) {\n this.simulateRequest();\n } else if (this.shouldIssueRequest() && !this.request) {\n this.request = new FetchRequest(this, FetchMethod.get, this.location);\n this.request.perform();\n }\n }\n\n simulateRequest() {\n if (this.response) {\n this.startRequest();\n this.recordResponse();\n this.finishRequest();\n }\n }\n\n startRequest() {\n this.recordTimingMetric(TimingMetric.requestStart);\n this.adapter.visitRequestStarted(this);\n }\n\n recordResponse(response = this.response) {\n this.response = response;\n if (response) {\n const { statusCode } = response;\n if (isSuccessful(statusCode)) {\n this.adapter.visitRequestCompleted(this);\n } else {\n this.adapter.visitRequestFailedWithStatusCode(this, statusCode);\n }\n }\n }\n\n finishRequest() {\n this.recordTimingMetric(TimingMetric.requestEnd);\n this.adapter.visitRequestFinished(this);\n }\n\n loadResponse() {\n if (this.response) {\n const { statusCode, responseHTML } = this.response;\n this.render(async () => {\n if (this.shouldCacheSnapshot) this.cacheSnapshot();\n if (this.view.renderPromise) await this.view.renderPromise;\n\n if (isSuccessful(statusCode) && responseHTML != null) {\n const snapshot = PageSnapshot.fromHTMLString(responseHTML);\n await this.renderPageSnapshot(snapshot, false);\n\n this.adapter.visitRendered(this);\n this.complete();\n } else {\n await this.view.renderError(PageSnapshot.fromHTMLString(responseHTML), this);\n this.adapter.visitRendered(this);\n this.fail();\n }\n });\n }\n }\n\n getCachedSnapshot() {\n const snapshot = this.view.getCachedSnapshotForLocation(this.location) || this.getPreloadedSnapshot();\n\n if (snapshot && (!getAnchor(this.location) || snapshot.hasAnchor(getAnchor(this.location)))) {\n if (this.action == \"restore\" || snapshot.isPreviewable) {\n return snapshot\n }\n }\n }\n\n getPreloadedSnapshot() {\n if (this.snapshotHTML) {\n return PageSnapshot.fromHTMLString(this.snapshotHTML)\n }\n }\n\n hasCachedSnapshot() {\n return this.getCachedSnapshot() != null\n }\n\n loadCachedSnapshot() {\n const snapshot = this.getCachedSnapshot();\n if (snapshot) {\n const isPreview = this.shouldIssueRequest();\n this.render(async () => {\n this.cacheSnapshot();\n if (this.isSamePage || this.isPageRefresh) {\n this.adapter.visitRendered(this);\n } else {\n if (this.view.renderPromise) await this.view.renderPromise;\n\n await this.renderPageSnapshot(snapshot, isPreview);\n\n this.adapter.visitRendered(this);\n if (!isPreview) {\n this.complete();\n }\n }\n });\n }\n }\n\n followRedirect() {\n if (this.redirectedToLocation && !this.followedRedirect && this.response?.redirected) {\n this.adapter.visitProposedToLocation(this.redirectedToLocation, {\n action: \"replace\",\n response: this.response,\n shouldCacheSnapshot: false,\n willRender: false\n });\n this.followedRedirect = true;\n }\n }\n\n goToSamePageAnchor() {\n if (this.isSamePage) {\n this.render(async () => {\n this.cacheSnapshot();\n this.performScroll();\n this.changeHistory();\n this.adapter.visitRendered(this);\n });\n }\n }\n\n // Fetch request delegate\n\n prepareRequest(request) {\n if (this.acceptsStreamResponse) {\n request.acceptResponseType(StreamMessage.contentType);\n }\n }\n\n requestStarted() {\n this.startRequest();\n }\n\n requestPreventedHandlingResponse(_request, _response) {}\n\n async requestSucceededWithResponse(request, response) {\n const responseHTML = await response.responseHTML;\n const { redirected, statusCode } = response;\n if (responseHTML == undefined) {\n this.recordResponse({\n statusCode: SystemStatusCode.contentTypeMismatch,\n redirected\n });\n } else {\n this.redirectedToLocation = response.redirected ? response.location : undefined;\n this.recordResponse({ statusCode: statusCode, responseHTML, redirected });\n }\n }\n\n async requestFailedWithResponse(request, response) {\n const responseHTML = await response.responseHTML;\n const { redirected, statusCode } = response;\n if (responseHTML == undefined) {\n this.recordResponse({\n statusCode: SystemStatusCode.contentTypeMismatch,\n redirected\n });\n } else {\n this.recordResponse({ statusCode: statusCode, responseHTML, redirected });\n }\n }\n\n requestErrored(_request, _error) {\n this.recordResponse({\n statusCode: SystemStatusCode.networkFailure,\n redirected: false\n });\n }\n\n requestFinished() {\n this.finishRequest();\n }\n\n // Scrolling\n\n performScroll() {\n if (!this.scrolled && !this.view.forceReloaded && !this.view.shouldPreserveScrollPosition(this)) {\n if (this.action == \"restore\") {\n this.scrollToRestoredPosition() || this.scrollToAnchor() || this.view.scrollToTop();\n } else {\n this.scrollToAnchor() || this.view.scrollToTop();\n }\n if (this.isSamePage) {\n this.delegate.visitScrolledToSamePageLocation(this.view.lastRenderedLocation, this.location);\n }\n\n this.scrolled = true;\n }\n }\n\n scrollToRestoredPosition() {\n const { scrollPosition } = this.restorationData;\n if (scrollPosition) {\n this.view.scrollToPosition(scrollPosition);\n return true\n }\n }\n\n scrollToAnchor() {\n const anchor = getAnchor(this.location);\n if (anchor != null) {\n this.view.scrollToAnchor(anchor);\n return true\n }\n }\n\n // Instrumentation\n\n recordTimingMetric(metric) {\n this.timingMetrics[metric] = new Date().getTime();\n }\n\n getTimingMetrics() {\n return { ...this.timingMetrics }\n }\n\n // Private\n\n getHistoryMethodForAction(action) {\n switch (action) {\n case \"replace\":\n return history.replaceState\n case \"advance\":\n case \"restore\":\n return history.pushState\n }\n }\n\n hasPreloadedResponse() {\n return typeof this.response == \"object\"\n }\n\n shouldIssueRequest() {\n if (this.isSamePage) {\n return false\n } else if (this.action == \"restore\") {\n return !this.hasCachedSnapshot()\n } else {\n return this.willRender\n }\n }\n\n cacheSnapshot() {\n if (!this.snapshotCached) {\n this.view.cacheSnapshot(this.snapshot).then((snapshot) => snapshot && this.visitCachedSnapshot(snapshot));\n this.snapshotCached = true;\n }\n }\n\n async render(callback) {\n this.cancelRender();\n await new Promise((resolve) => {\n this.frame =\n document.visibilityState === \"hidden\" ? setTimeout(() => resolve(), 0) : requestAnimationFrame(() => resolve());\n });\n await callback();\n delete this.frame;\n }\n\n async renderPageSnapshot(snapshot, isPreview) {\n await this.viewTransitioner.renderChange(this.view.shouldTransitionTo(snapshot), async () => {\n await this.view.renderPage(snapshot, isPreview, this.willRender, this);\n this.performScroll();\n });\n }\n\n cancelRender() {\n if (this.frame) {\n cancelAnimationFrame(this.frame);\n delete this.frame;\n }\n }\n}\n\nfunction isSuccessful(statusCode) {\n return statusCode >= 200 && statusCode < 300\n}\n\nclass BrowserAdapter {\n progressBar = new ProgressBar()\n\n constructor(session) {\n this.session = session;\n }\n\n visitProposedToLocation(location, options) {\n if (locationIsVisitable(location, this.navigator.rootLocation)) {\n this.navigator.startVisit(location, options?.restorationIdentifier || uuid(), options);\n } else {\n window.location.href = location.toString();\n }\n }\n\n visitStarted(visit) {\n this.location = visit.location;\n visit.loadCachedSnapshot();\n visit.issueRequest();\n visit.goToSamePageAnchor();\n }\n\n visitRequestStarted(visit) {\n this.progressBar.setValue(0);\n if (visit.hasCachedSnapshot() || visit.action != \"restore\") {\n this.showVisitProgressBarAfterDelay();\n } else {\n this.showProgressBar();\n }\n }\n\n visitRequestCompleted(visit) {\n visit.loadResponse();\n }\n\n visitRequestFailedWithStatusCode(visit, statusCode) {\n switch (statusCode) {\n case SystemStatusCode.networkFailure:\n case SystemStatusCode.timeoutFailure:\n case SystemStatusCode.contentTypeMismatch:\n return this.reload({\n reason: \"request_failed\",\n context: {\n statusCode\n }\n })\n default:\n return visit.loadResponse()\n }\n }\n\n visitRequestFinished(_visit) {}\n\n visitCompleted(_visit) {\n this.progressBar.setValue(1);\n this.hideVisitProgressBar();\n }\n\n pageInvalidated(reason) {\n this.reload(reason);\n }\n\n visitFailed(_visit) {\n this.progressBar.setValue(1);\n this.hideVisitProgressBar();\n }\n\n visitRendered(_visit) {}\n\n // Form Submission Delegate\n\n formSubmissionStarted(_formSubmission) {\n this.progressBar.setValue(0);\n this.showFormProgressBarAfterDelay();\n }\n\n formSubmissionFinished(_formSubmission) {\n this.progressBar.setValue(1);\n this.hideFormProgressBar();\n }\n\n // Private\n\n showVisitProgressBarAfterDelay() {\n this.visitProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n }\n\n hideVisitProgressBar() {\n this.progressBar.hide();\n if (this.visitProgressBarTimeout != null) {\n window.clearTimeout(this.visitProgressBarTimeout);\n delete this.visitProgressBarTimeout;\n }\n }\n\n showFormProgressBarAfterDelay() {\n if (this.formProgressBarTimeout == null) {\n this.formProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n }\n }\n\n hideFormProgressBar() {\n this.progressBar.hide();\n if (this.formProgressBarTimeout != null) {\n window.clearTimeout(this.formProgressBarTimeout);\n delete this.formProgressBarTimeout;\n }\n }\n\n showProgressBar = () => {\n this.progressBar.show();\n }\n\n reload(reason) {\n dispatch(\"turbo:reload\", { detail: reason });\n\n window.location.href = this.location?.toString() || window.location.href;\n }\n\n get navigator() {\n return this.session.navigator\n }\n}\n\nclass CacheObserver {\n selector = \"[data-turbo-temporary]\"\n deprecatedSelector = \"[data-turbo-cache=false]\"\n\n started = false\n\n start() {\n if (!this.started) {\n this.started = true;\n addEventListener(\"turbo:before-cache\", this.removeTemporaryElements, false);\n }\n }\n\n stop() {\n if (this.started) {\n this.started = false;\n removeEventListener(\"turbo:before-cache\", this.removeTemporaryElements, false);\n }\n }\n\n removeTemporaryElements = (_event) => {\n for (const element of this.temporaryElements) {\n element.remove();\n }\n }\n\n get temporaryElements() {\n return [...document.querySelectorAll(this.selector), ...this.temporaryElementsWithDeprecation]\n }\n\n get temporaryElementsWithDeprecation() {\n const elements = document.querySelectorAll(this.deprecatedSelector);\n\n if (elements.length) {\n console.warn(\n `The ${this.deprecatedSelector} selector is deprecated and will be removed in a future version. Use ${this.selector} instead.`\n );\n }\n\n return [...elements]\n }\n}\n\nclass FrameRedirector {\n constructor(session, element) {\n this.session = session;\n this.element = element;\n this.linkInterceptor = new LinkInterceptor(this, element);\n this.formSubmitObserver = new FormSubmitObserver(this, element);\n }\n\n start() {\n this.linkInterceptor.start();\n this.formSubmitObserver.start();\n }\n\n stop() {\n this.linkInterceptor.stop();\n this.formSubmitObserver.stop();\n }\n\n // Link interceptor delegate\n\n shouldInterceptLinkClick(element, _location, _event) {\n return this.#shouldRedirect(element)\n }\n\n linkClickIntercepted(element, url, event) {\n const frame = this.#findFrameElement(element);\n if (frame) {\n frame.delegate.linkClickIntercepted(element, url, event);\n }\n }\n\n // Form submit observer delegate\n\n willSubmitForm(element, submitter) {\n return (\n element.closest(\"turbo-frame\") == null &&\n this.#shouldSubmit(element, submitter) &&\n this.#shouldRedirect(element, submitter)\n )\n }\n\n formSubmitted(element, submitter) {\n const frame = this.#findFrameElement(element, submitter);\n if (frame) {\n frame.delegate.formSubmitted(element, submitter);\n }\n }\n\n #shouldSubmit(form, submitter) {\n const action = getAction$1(form, submitter);\n const meta = this.element.ownerDocument.querySelector(`meta[name=\"turbo-root\"]`);\n const rootLocation = expandURL(meta?.content ?? \"/\");\n\n return this.#shouldRedirect(form, submitter) && locationIsVisitable(action, rootLocation)\n }\n\n #shouldRedirect(element, submitter) {\n const isNavigatable =\n element instanceof HTMLFormElement\n ? this.session.submissionIsNavigatable(element, submitter)\n : this.session.elementIsNavigatable(element);\n\n if (isNavigatable) {\n const frame = this.#findFrameElement(element, submitter);\n return frame ? frame != element.closest(\"turbo-frame\") : false\n } else {\n return false\n }\n }\n\n #findFrameElement(element, submitter) {\n const id = submitter?.getAttribute(\"data-turbo-frame\") || element.getAttribute(\"data-turbo-frame\");\n if (id && id != \"_top\") {\n const frame = this.element.querySelector(`#${id}:not([disabled])`);\n if (frame instanceof FrameElement) {\n return frame\n }\n }\n }\n}\n\nclass History {\n location\n restorationIdentifier = uuid()\n restorationData = {}\n started = false\n pageLoaded = false\n currentIndex = 0\n\n constructor(delegate) {\n this.delegate = delegate;\n }\n\n start() {\n if (!this.started) {\n addEventListener(\"popstate\", this.onPopState, false);\n addEventListener(\"load\", this.onPageLoad, false);\n this.currentIndex = history.state?.turbo?.restorationIndex || 0;\n this.started = true;\n this.replace(new URL(window.location.href));\n }\n }\n\n stop() {\n if (this.started) {\n removeEventListener(\"popstate\", this.onPopState, false);\n removeEventListener(\"load\", this.onPageLoad, false);\n this.started = false;\n }\n }\n\n push(location, restorationIdentifier) {\n this.update(history.pushState, location, restorationIdentifier);\n }\n\n replace(location, restorationIdentifier) {\n this.update(history.replaceState, location, restorationIdentifier);\n }\n\n update(method, location, restorationIdentifier = uuid()) {\n if (method === history.pushState) ++this.currentIndex;\n\n const state = { turbo: { restorationIdentifier, restorationIndex: this.currentIndex } };\n method.call(history, state, \"\", location.href);\n this.location = location;\n this.restorationIdentifier = restorationIdentifier;\n }\n\n // Restoration data\n\n getRestorationDataForIdentifier(restorationIdentifier) {\n return this.restorationData[restorationIdentifier] || {}\n }\n\n updateRestorationData(additionalData) {\n const { restorationIdentifier } = this;\n const restorationData = this.restorationData[restorationIdentifier];\n this.restorationData[restorationIdentifier] = {\n ...restorationData,\n ...additionalData\n };\n }\n\n // Scroll restoration\n\n assumeControlOfScrollRestoration() {\n if (!this.previousScrollRestoration) {\n this.previousScrollRestoration = history.scrollRestoration ?? \"auto\";\n history.scrollRestoration = \"manual\";\n }\n }\n\n relinquishControlOfScrollRestoration() {\n if (this.previousScrollRestoration) {\n history.scrollRestoration = this.previousScrollRestoration;\n delete this.previousScrollRestoration;\n }\n }\n\n // Event handlers\n\n onPopState = (event) => {\n if (this.shouldHandlePopState()) {\n const { turbo } = event.state || {};\n if (turbo) {\n this.location = new URL(window.location.href);\n const { restorationIdentifier, restorationIndex } = turbo;\n this.restorationIdentifier = restorationIdentifier;\n const direction = restorationIndex > this.currentIndex ? \"forward\" : \"back\";\n this.delegate.historyPoppedToLocationWithRestorationIdentifierAndDirection(this.location, restorationIdentifier, direction);\n this.currentIndex = restorationIndex;\n }\n }\n }\n\n onPageLoad = async (_event) => {\n await nextMicrotask();\n this.pageLoaded = true;\n }\n\n // Private\n\n shouldHandlePopState() {\n // Safari dispatches a popstate event after window's load event, ignore it\n return this.pageIsLoaded()\n }\n\n pageIsLoaded() {\n return this.pageLoaded || document.readyState == \"complete\"\n }\n}\n\nclass LinkPrefetchObserver {\n started = false\n #prefetchedLink = null\n\n constructor(delegate, eventTarget) {\n this.delegate = delegate;\n this.eventTarget = eventTarget;\n }\n\n start() {\n if (this.started) return\n\n if (this.eventTarget.readyState === \"loading\") {\n this.eventTarget.addEventListener(\"DOMContentLoaded\", this.#enable, { once: true });\n } else {\n this.#enable();\n }\n }\n\n stop() {\n if (!this.started) return\n\n this.eventTarget.removeEventListener(\"mouseenter\", this.#tryToPrefetchRequest, {\n capture: true,\n passive: true\n });\n this.eventTarget.removeEventListener(\"mouseleave\", this.#cancelRequestIfObsolete, {\n capture: true,\n passive: true\n });\n\n this.eventTarget.removeEventListener(\"turbo:before-fetch-request\", this.#tryToUsePrefetchedRequest, true);\n this.started = false;\n }\n\n #enable = () => {\n this.eventTarget.addEventListener(\"mouseenter\", this.#tryToPrefetchRequest, {\n capture: true,\n passive: true\n });\n this.eventTarget.addEventListener(\"mouseleave\", this.#cancelRequestIfObsolete, {\n capture: true,\n passive: true\n });\n\n this.eventTarget.addEventListener(\"turbo:before-fetch-request\", this.#tryToUsePrefetchedRequest, true);\n this.started = true;\n }\n\n #tryToPrefetchRequest = (event) => {\n if (getMetaContent(\"turbo-prefetch\") === \"false\") return\n\n const target = event.target;\n const isLink = target.matches && target.matches(\"a[href]:not([target^=_]):not([download])\");\n\n if (isLink && this.#isPrefetchable(target)) {\n const link = target;\n const location = getLocationForLink(link);\n\n if (this.delegate.canPrefetchRequestToLocation(link, location)) {\n this.#prefetchedLink = link;\n\n const fetchRequest = new FetchRequest(\n this,\n FetchMethod.get,\n location,\n new URLSearchParams(),\n target\n );\n\n prefetchCache.setLater(location.toString(), fetchRequest, this.#cacheTtl);\n }\n }\n }\n\n #cancelRequestIfObsolete = (event) => {\n if (event.target === this.#prefetchedLink) this.#cancelPrefetchRequest();\n }\n\n #cancelPrefetchRequest = () => {\n prefetchCache.clear();\n this.#prefetchedLink = null;\n }\n\n #tryToUsePrefetchedRequest = (event) => {\n if (event.target.tagName !== \"FORM\" && event.detail.fetchOptions.method === \"GET\") {\n const cached = prefetchCache.get(event.detail.url.toString());\n\n if (cached) {\n // User clicked link, use cache response\n event.detail.fetchRequest = cached;\n }\n\n prefetchCache.clear();\n }\n }\n\n prepareRequest(request) {\n const link = request.target;\n\n request.headers[\"X-Sec-Purpose\"] = \"prefetch\";\n\n const turboFrame = link.closest(\"turbo-frame\");\n const turboFrameTarget = link.getAttribute(\"data-turbo-frame\") || turboFrame?.getAttribute(\"target\") || turboFrame?.id;\n\n if (turboFrameTarget && turboFrameTarget !== \"_top\") {\n request.headers[\"Turbo-Frame\"] = turboFrameTarget;\n }\n }\n\n // Fetch request interface\n\n requestSucceededWithResponse() {}\n\n requestStarted(fetchRequest) {}\n\n requestErrored(fetchRequest) {}\n\n requestFinished(fetchRequest) {}\n\n requestPreventedHandlingResponse(fetchRequest, fetchResponse) {}\n\n requestFailedWithResponse(fetchRequest, fetchResponse) {}\n\n get #cacheTtl() {\n return Number(getMetaContent(\"turbo-prefetch-cache-time\")) || cacheTtl\n }\n\n #isPrefetchable(link) {\n const href = link.getAttribute(\"href\");\n\n if (!href) return false\n\n if (unfetchableLink(link)) return false\n if (linkToTheSamePage(link)) return false\n if (linkOptsOut(link)) return false\n if (nonSafeLink(link)) return false\n if (eventPrevented(link)) return false\n\n return true\n }\n}\n\nconst unfetchableLink = (link) => {\n return link.origin !== document.location.origin || ![\"http:\", \"https:\"].includes(link.protocol) || link.hasAttribute(\"target\")\n};\n\nconst linkToTheSamePage = (link) => {\n return (link.pathname + link.search === document.location.pathname + document.location.search) || link.href.startsWith(\"#\")\n};\n\nconst linkOptsOut = (link) => {\n if (link.getAttribute(\"data-turbo-prefetch\") === \"false\") return true\n if (link.getAttribute(\"data-turbo\") === \"false\") return true\n\n const turboPrefetchParent = findClosestRecursively(link, \"[data-turbo-prefetch]\");\n if (turboPrefetchParent && turboPrefetchParent.getAttribute(\"data-turbo-prefetch\") === \"false\") return true\n\n return false\n};\n\nconst nonSafeLink = (link) => {\n const turboMethod = link.getAttribute(\"data-turbo-method\");\n if (turboMethod && turboMethod.toLowerCase() !== \"get\") return true\n\n if (isUJS(link)) return true\n if (link.hasAttribute(\"data-turbo-confirm\")) return true\n if (link.hasAttribute(\"data-turbo-stream\")) return true\n\n return false\n};\n\nconst isUJS = (link) => {\n return link.hasAttribute(\"data-remote\") || link.hasAttribute(\"data-behavior\") || link.hasAttribute(\"data-confirm\") || link.hasAttribute(\"data-method\")\n};\n\nconst eventPrevented = (link) => {\n const event = dispatch(\"turbo:before-prefetch\", { target: link, cancelable: true });\n return event.defaultPrevented\n};\n\nclass Navigator {\n constructor(delegate) {\n this.delegate = delegate;\n }\n\n proposeVisit(location, options = {}) {\n if (this.delegate.allowsVisitingLocationWithAction(location, options.action)) {\n this.delegate.visitProposedToLocation(location, options);\n }\n }\n\n startVisit(locatable, restorationIdentifier, options = {}) {\n this.stop();\n this.currentVisit = new Visit(this, expandURL(locatable), restorationIdentifier, {\n referrer: this.location,\n ...options\n });\n this.currentVisit.start();\n }\n\n submitForm(form, submitter) {\n this.stop();\n this.formSubmission = new FormSubmission(this, form, submitter, true);\n\n this.formSubmission.start();\n }\n\n stop() {\n if (this.formSubmission) {\n this.formSubmission.stop();\n delete this.formSubmission;\n }\n\n if (this.currentVisit) {\n this.currentVisit.cancel();\n delete this.currentVisit;\n }\n }\n\n get adapter() {\n return this.delegate.adapter\n }\n\n get view() {\n return this.delegate.view\n }\n\n get rootLocation() {\n return this.view.snapshot.rootLocation\n }\n\n get history() {\n return this.delegate.history\n }\n\n // Form submission delegate\n\n formSubmissionStarted(formSubmission) {\n // Not all adapters implement formSubmissionStarted\n if (typeof this.adapter.formSubmissionStarted === \"function\") {\n this.adapter.formSubmissionStarted(formSubmission);\n }\n }\n\n async formSubmissionSucceededWithResponse(formSubmission, fetchResponse) {\n if (formSubmission == this.formSubmission) {\n const responseHTML = await fetchResponse.responseHTML;\n if (responseHTML) {\n const shouldCacheSnapshot = formSubmission.isSafe;\n if (!shouldCacheSnapshot) {\n this.view.clearSnapshotCache();\n }\n\n const { statusCode, redirected } = fetchResponse;\n const action = this.#getActionForFormSubmission(formSubmission, fetchResponse);\n const visitOptions = {\n action,\n shouldCacheSnapshot,\n response: { statusCode, responseHTML, redirected }\n };\n this.proposeVisit(fetchResponse.location, visitOptions);\n }\n }\n }\n\n async formSubmissionFailedWithResponse(formSubmission, fetchResponse) {\n const responseHTML = await fetchResponse.responseHTML;\n\n if (responseHTML) {\n const snapshot = PageSnapshot.fromHTMLString(responseHTML);\n if (fetchResponse.serverError) {\n await this.view.renderError(snapshot, this.currentVisit);\n } else {\n await this.view.renderPage(snapshot, false, true, this.currentVisit);\n }\n if(!snapshot.shouldPreserveScrollPosition) {\n this.view.scrollToTop();\n }\n this.view.clearSnapshotCache();\n }\n }\n\n formSubmissionErrored(formSubmission, error) {\n console.error(error);\n }\n\n formSubmissionFinished(formSubmission) {\n // Not all adapters implement formSubmissionFinished\n if (typeof this.adapter.formSubmissionFinished === \"function\") {\n this.adapter.formSubmissionFinished(formSubmission);\n }\n }\n\n // Visit delegate\n\n visitStarted(visit) {\n this.delegate.visitStarted(visit);\n }\n\n visitCompleted(visit) {\n this.delegate.visitCompleted(visit);\n delete this.currentVisit;\n }\n\n locationWithActionIsSamePage(location, action) {\n const anchor = getAnchor(location);\n const currentAnchor = getAnchor(this.view.lastRenderedLocation);\n const isRestorationToTop = action === \"restore\" && typeof anchor === \"undefined\";\n\n return (\n action !== \"replace\" &&\n getRequestURL(location) === getRequestURL(this.view.lastRenderedLocation) &&\n (isRestorationToTop || (anchor != null && anchor !== currentAnchor))\n )\n }\n\n visitScrolledToSamePageLocation(oldURL, newURL) {\n this.delegate.visitScrolledToSamePageLocation(oldURL, newURL);\n }\n\n // Visits\n\n get location() {\n return this.history.location\n }\n\n get restorationIdentifier() {\n return this.history.restorationIdentifier\n }\n\n #getActionForFormSubmission(formSubmission, fetchResponse) {\n const { submitter, formElement } = formSubmission;\n return getVisitAction(submitter, formElement) || this.#getDefaultAction(fetchResponse)\n }\n\n #getDefaultAction(fetchResponse) {\n const sameLocationRedirect = fetchResponse.redirected && fetchResponse.location.href === this.location?.href;\n return sameLocationRedirect ? \"replace\" : \"advance\"\n }\n}\n\nconst PageStage = {\n initial: 0,\n loading: 1,\n interactive: 2,\n complete: 3\n};\n\nclass PageObserver {\n stage = PageStage.initial\n started = false\n\n constructor(delegate) {\n this.delegate = delegate;\n }\n\n start() {\n if (!this.started) {\n if (this.stage == PageStage.initial) {\n this.stage = PageStage.loading;\n }\n document.addEventListener(\"readystatechange\", this.interpretReadyState, false);\n addEventListener(\"pagehide\", this.pageWillUnload, false);\n this.started = true;\n }\n }\n\n stop() {\n if (this.started) {\n document.removeEventListener(\"readystatechange\", this.interpretReadyState, false);\n removeEventListener(\"pagehide\", this.pageWillUnload, false);\n this.started = false;\n }\n }\n\n interpretReadyState = () => {\n const { readyState } = this;\n if (readyState == \"interactive\") {\n this.pageIsInteractive();\n } else if (readyState == \"complete\") {\n this.pageIsComplete();\n }\n }\n\n pageIsInteractive() {\n if (this.stage == PageStage.loading) {\n this.stage = PageStage.interactive;\n this.delegate.pageBecameInteractive();\n }\n }\n\n pageIsComplete() {\n this.pageIsInteractive();\n if (this.stage == PageStage.interactive) {\n this.stage = PageStage.complete;\n this.delegate.pageLoaded();\n }\n }\n\n pageWillUnload = () => {\n this.delegate.pageWillUnload();\n }\n\n get readyState() {\n return document.readyState\n }\n}\n\nclass ScrollObserver {\n started = false\n\n constructor(delegate) {\n this.delegate = delegate;\n }\n\n start() {\n if (!this.started) {\n addEventListener(\"scroll\", this.onScroll, false);\n this.onScroll();\n this.started = true;\n }\n }\n\n stop() {\n if (this.started) {\n removeEventListener(\"scroll\", this.onScroll, false);\n this.started = false;\n }\n }\n\n onScroll = () => {\n this.updatePosition({ x: window.pageXOffset, y: window.pageYOffset });\n }\n\n // Private\n\n updatePosition(position) {\n this.delegate.scrollPositionChanged(position);\n }\n}\n\nclass StreamMessageRenderer {\n render({ fragment }) {\n Bardo.preservingPermanentElements(this, getPermanentElementMapForFragment(fragment), () => {\n withAutofocusFromFragment(fragment, () => {\n withPreservedFocus(() => {\n document.documentElement.appendChild(fragment);\n });\n });\n });\n }\n\n // Bardo delegate\n\n enteringBardo(currentPermanentElement, newPermanentElement) {\n newPermanentElement.replaceWith(currentPermanentElement.cloneNode(true));\n }\n\n leavingBardo() {}\n}\n\nfunction getPermanentElementMapForFragment(fragment) {\n const permanentElementsInDocument = queryPermanentElementsAll(document.documentElement);\n const permanentElementMap = {};\n for (const permanentElementInDocument of permanentElementsInDocument) {\n const { id } = permanentElementInDocument;\n\n for (const streamElement of fragment.querySelectorAll(\"turbo-stream\")) {\n const elementInStream = getPermanentElementById(streamElement.templateElement.content, id);\n\n if (elementInStream) {\n permanentElementMap[id] = [permanentElementInDocument, elementInStream];\n }\n }\n }\n\n return permanentElementMap\n}\n\nasync function withAutofocusFromFragment(fragment, callback) {\n const generatedID = `turbo-stream-autofocus-${uuid()}`;\n const turboStreams = fragment.querySelectorAll(\"turbo-stream\");\n const elementWithAutofocus = firstAutofocusableElementInStreams(turboStreams);\n let willAutofocusId = null;\n\n if (elementWithAutofocus) {\n if (elementWithAutofocus.id) {\n willAutofocusId = elementWithAutofocus.id;\n } else {\n willAutofocusId = generatedID;\n }\n\n elementWithAutofocus.id = willAutofocusId;\n }\n\n callback();\n await nextRepaint();\n\n const hasNoActiveElement = document.activeElement == null || document.activeElement == document.body;\n\n if (hasNoActiveElement && willAutofocusId) {\n const elementToAutofocus = document.getElementById(willAutofocusId);\n\n if (elementIsFocusable(elementToAutofocus)) {\n elementToAutofocus.focus();\n }\n if (elementToAutofocus && elementToAutofocus.id == generatedID) {\n elementToAutofocus.removeAttribute(\"id\");\n }\n }\n}\n\nasync function withPreservedFocus(callback) {\n const [activeElementBeforeRender, activeElementAfterRender] = await around(callback, () => document.activeElement);\n\n const restoreFocusTo = activeElementBeforeRender && activeElementBeforeRender.id;\n\n if (restoreFocusTo) {\n const elementToFocus = document.getElementById(restoreFocusTo);\n\n if (elementIsFocusable(elementToFocus) && elementToFocus != activeElementAfterRender) {\n elementToFocus.focus();\n }\n }\n}\n\nfunction firstAutofocusableElementInStreams(nodeListOfStreamElements) {\n for (const streamElement of nodeListOfStreamElements) {\n const elementWithAutofocus = queryAutofocusableElement(streamElement.templateElement.content);\n\n if (elementWithAutofocus) return elementWithAutofocus\n }\n\n return null\n}\n\nclass StreamObserver {\n sources = new Set()\n #started = false\n\n constructor(delegate) {\n this.delegate = delegate;\n }\n\n start() {\n if (!this.#started) {\n this.#started = true;\n addEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n }\n }\n\n stop() {\n if (this.#started) {\n this.#started = false;\n removeEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n }\n }\n\n connectStreamSource(source) {\n if (!this.streamSourceIsConnected(source)) {\n this.sources.add(source);\n source.addEventListener(\"message\", this.receiveMessageEvent, false);\n }\n }\n\n disconnectStreamSource(source) {\n if (this.streamSourceIsConnected(source)) {\n this.sources.delete(source);\n source.removeEventListener(\"message\", this.receiveMessageEvent, false);\n }\n }\n\n streamSourceIsConnected(source) {\n return this.sources.has(source)\n }\n\n inspectFetchResponse = (event) => {\n const response = fetchResponseFromEvent(event);\n if (response && fetchResponseIsStream(response)) {\n event.preventDefault();\n this.receiveMessageResponse(response);\n }\n }\n\n receiveMessageEvent = (event) => {\n if (this.#started && typeof event.data == \"string\") {\n this.receiveMessageHTML(event.data);\n }\n }\n\n async receiveMessageResponse(response) {\n const html = await response.responseHTML;\n if (html) {\n this.receiveMessageHTML(html);\n }\n }\n\n receiveMessageHTML(html) {\n this.delegate.receivedMessageFromStream(StreamMessage.wrap(html));\n }\n}\n\nfunction fetchResponseFromEvent(event) {\n const fetchResponse = event.detail?.fetchResponse;\n if (fetchResponse instanceof FetchResponse) {\n return fetchResponse\n }\n}\n\nfunction fetchResponseIsStream(response) {\n const contentType = response.contentType ?? \"\";\n return contentType.startsWith(StreamMessage.contentType)\n}\n\nclass ErrorRenderer extends Renderer {\n static renderElement(currentElement, newElement) {\n const { documentElement, body } = document;\n\n documentElement.replaceChild(newElement, body);\n }\n\n async render() {\n this.replaceHeadAndBody();\n this.activateScriptElements();\n }\n\n replaceHeadAndBody() {\n const { documentElement, head } = document;\n documentElement.replaceChild(this.newHead, head);\n this.renderElement(this.currentElement, this.newElement);\n }\n\n activateScriptElements() {\n for (const replaceableElement of this.scriptElements) {\n const parentNode = replaceableElement.parentNode;\n if (parentNode) {\n const element = activateScriptElement(replaceableElement);\n parentNode.replaceChild(element, replaceableElement);\n }\n }\n }\n\n get newHead() {\n return this.newSnapshot.headSnapshot.element\n }\n\n get scriptElements() {\n return document.documentElement.querySelectorAll(\"script\")\n }\n}\n\nclass PageRenderer extends Renderer {\n static renderElement(currentElement, newElement) {\n if (document.body && newElement instanceof HTMLBodyElement) {\n document.body.replaceWith(newElement);\n } else {\n document.documentElement.appendChild(newElement);\n }\n }\n\n get shouldRender() {\n return this.newSnapshot.isVisitable && this.trackedElementsAreIdentical\n }\n\n get reloadReason() {\n if (!this.newSnapshot.isVisitable) {\n return {\n reason: \"turbo_visit_control_is_reload\"\n }\n }\n\n if (!this.trackedElementsAreIdentical) {\n return {\n reason: \"tracked_element_mismatch\"\n }\n }\n }\n\n async prepareToRender() {\n this.#setLanguage();\n await this.mergeHead();\n }\n\n async render() {\n if (this.willRender) {\n await this.replaceBody();\n }\n }\n\n finishRendering() {\n super.finishRendering();\n if (!this.isPreview) {\n this.focusFirstAutofocusableElement();\n }\n }\n\n get currentHeadSnapshot() {\n return this.currentSnapshot.headSnapshot\n }\n\n get newHeadSnapshot() {\n return this.newSnapshot.headSnapshot\n }\n\n get newElement() {\n return this.newSnapshot.element\n }\n\n #setLanguage() {\n const { documentElement } = this.currentSnapshot;\n const { lang } = this.newSnapshot;\n\n if (lang) {\n documentElement.setAttribute(\"lang\", lang);\n } else {\n documentElement.removeAttribute(\"lang\");\n }\n }\n\n async mergeHead() {\n const mergedHeadElements = this.mergeProvisionalElements();\n const newStylesheetElements = this.copyNewHeadStylesheetElements();\n this.copyNewHeadScriptElements();\n\n await mergedHeadElements;\n await newStylesheetElements;\n\n if (this.willRender) {\n this.removeUnusedDynamicStylesheetElements();\n }\n }\n\n async replaceBody() {\n await this.preservingPermanentElements(async () => {\n this.activateNewBody();\n await this.assignNewBody();\n });\n }\n\n get trackedElementsAreIdentical() {\n return this.currentHeadSnapshot.trackedElementSignature == this.newHeadSnapshot.trackedElementSignature\n }\n\n async copyNewHeadStylesheetElements() {\n const loadingElements = [];\n\n for (const element of this.newHeadStylesheetElements) {\n loadingElements.push(waitForLoad(element));\n\n document.head.appendChild(element);\n }\n\n await Promise.all(loadingElements);\n }\n\n copyNewHeadScriptElements() {\n for (const element of this.newHeadScriptElements) {\n document.head.appendChild(activateScriptElement(element));\n }\n }\n\n removeUnusedDynamicStylesheetElements() {\n for (const element of this.unusedDynamicStylesheetElements) {\n document.head.removeChild(element);\n }\n }\n\n async mergeProvisionalElements() {\n const newHeadElements = [...this.newHeadProvisionalElements];\n\n for (const element of this.currentHeadProvisionalElements) {\n if (!this.isCurrentElementInElementList(element, newHeadElements)) {\n document.head.removeChild(element);\n }\n }\n\n for (const element of newHeadElements) {\n document.head.appendChild(element);\n }\n }\n\n isCurrentElementInElementList(element, elementList) {\n for (const [index, newElement] of elementList.entries()) {\n // if title element...\n if (element.tagName == \"TITLE\") {\n if (newElement.tagName != \"TITLE\") {\n continue\n }\n if (element.innerHTML == newElement.innerHTML) {\n elementList.splice(index, 1);\n return true\n }\n }\n\n // if any other element...\n if (newElement.isEqualNode(element)) {\n elementList.splice(index, 1);\n return true\n }\n }\n\n return false\n }\n\n removeCurrentHeadProvisionalElements() {\n for (const element of this.currentHeadProvisionalElements) {\n document.head.removeChild(element);\n }\n }\n\n copyNewHeadProvisionalElements() {\n for (const element of this.newHeadProvisionalElements) {\n document.head.appendChild(element);\n }\n }\n\n activateNewBody() {\n document.adoptNode(this.newElement);\n this.activateNewBodyScriptElements();\n }\n\n activateNewBodyScriptElements() {\n for (const inertScriptElement of this.newBodyScriptElements) {\n const activatedScriptElement = activateScriptElement(inertScriptElement);\n inertScriptElement.replaceWith(activatedScriptElement);\n }\n }\n\n async assignNewBody() {\n await this.renderElement(this.currentElement, this.newElement);\n }\n\n get unusedDynamicStylesheetElements() {\n return this.oldHeadStylesheetElements.filter((element) => {\n return element.getAttribute(\"data-turbo-track\") === \"dynamic\"\n })\n }\n\n get oldHeadStylesheetElements() {\n return this.currentHeadSnapshot.getStylesheetElementsNotInSnapshot(this.newHeadSnapshot)\n }\n\n get newHeadStylesheetElements() {\n return this.newHeadSnapshot.getStylesheetElementsNotInSnapshot(this.currentHeadSnapshot)\n }\n\n get newHeadScriptElements() {\n return this.newHeadSnapshot.getScriptElementsNotInSnapshot(this.currentHeadSnapshot)\n }\n\n get currentHeadProvisionalElements() {\n return this.currentHeadSnapshot.provisionalElements\n }\n\n get newHeadProvisionalElements() {\n return this.newHeadSnapshot.provisionalElements\n }\n\n get newBodyScriptElements() {\n return this.newElement.querySelectorAll(\"script\")\n }\n}\n\nclass MorphingPageRenderer extends PageRenderer {\n static renderElement(currentElement, newElement) {\n morphElements(currentElement, newElement, {\n callbacks: {\n beforeNodeMorphed: element => !canRefreshFrame(element)\n }\n });\n\n for (const frame of currentElement.querySelectorAll(\"turbo-frame\")) {\n if (canRefreshFrame(frame)) frame.reload();\n }\n\n dispatch(\"turbo:morph\", { detail: { currentElement, newElement } });\n }\n\n async preservingPermanentElements(callback) {\n return await callback()\n }\n\n get renderMethod() {\n return \"morph\"\n }\n\n get shouldAutofocus() {\n return false\n }\n}\n\nfunction canRefreshFrame(frame) {\n return frame instanceof FrameElement &&\n frame.src &&\n frame.refresh === \"morph\" &&\n !frame.closest(\"[data-turbo-permanent]\")\n}\n\nclass SnapshotCache {\n keys = []\n snapshots = {}\n\n constructor(size) {\n this.size = size;\n }\n\n has(location) {\n return toCacheKey(location) in this.snapshots\n }\n\n get(location) {\n if (this.has(location)) {\n const snapshot = this.read(location);\n this.touch(location);\n return snapshot\n }\n }\n\n put(location, snapshot) {\n this.write(location, snapshot);\n this.touch(location);\n return snapshot\n }\n\n clear() {\n this.snapshots = {};\n }\n\n // Private\n\n read(location) {\n return this.snapshots[toCacheKey(location)]\n }\n\n write(location, snapshot) {\n this.snapshots[toCacheKey(location)] = snapshot;\n }\n\n touch(location) {\n const key = toCacheKey(location);\n const index = this.keys.indexOf(key);\n if (index > -1) this.keys.splice(index, 1);\n this.keys.unshift(key);\n this.trim();\n }\n\n trim() {\n for (const key of this.keys.splice(this.size)) {\n delete this.snapshots[key];\n }\n }\n}\n\nclass PageView extends View {\n snapshotCache = new SnapshotCache(10)\n lastRenderedLocation = new URL(location.href)\n forceReloaded = false\n\n shouldTransitionTo(newSnapshot) {\n return this.snapshot.prefersViewTransitions && newSnapshot.prefersViewTransitions\n }\n\n renderPage(snapshot, isPreview = false, willRender = true, visit) {\n const shouldMorphPage = this.isPageRefresh(visit) && this.snapshot.shouldMorphPage;\n const rendererClass = shouldMorphPage ? MorphingPageRenderer : PageRenderer;\n\n const renderer = new rendererClass(this.snapshot, snapshot, isPreview, willRender);\n\n if (!renderer.shouldRender) {\n this.forceReloaded = true;\n } else {\n visit?.changeHistory();\n }\n\n return this.render(renderer)\n }\n\n renderError(snapshot, visit) {\n visit?.changeHistory();\n const renderer = new ErrorRenderer(this.snapshot, snapshot, false);\n return this.render(renderer)\n }\n\n clearSnapshotCache() {\n this.snapshotCache.clear();\n }\n\n async cacheSnapshot(snapshot = this.snapshot) {\n if (snapshot.isCacheable) {\n this.delegate.viewWillCacheSnapshot();\n const { lastRenderedLocation: location } = this;\n await nextEventLoopTick();\n const cachedSnapshot = snapshot.clone();\n this.snapshotCache.put(location, cachedSnapshot);\n return cachedSnapshot\n }\n }\n\n getCachedSnapshotForLocation(location) {\n return this.snapshotCache.get(location)\n }\n\n isPageRefresh(visit) {\n return !visit || (this.lastRenderedLocation.pathname === visit.location.pathname && visit.action === \"replace\")\n }\n\n shouldPreserveScrollPosition(visit) {\n return this.isPageRefresh(visit) && this.snapshot.shouldPreserveScrollPosition\n }\n\n get snapshot() {\n return PageSnapshot.fromElement(this.element)\n }\n}\n\nclass Preloader {\n selector = \"a[data-turbo-preload]\"\n\n constructor(delegate, snapshotCache) {\n this.delegate = delegate;\n this.snapshotCache = snapshotCache;\n }\n\n start() {\n if (document.readyState === \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", this.#preloadAll);\n } else {\n this.preloadOnLoadLinksForView(document.body);\n }\n }\n\n stop() {\n document.removeEventListener(\"DOMContentLoaded\", this.#preloadAll);\n }\n\n preloadOnLoadLinksForView(element) {\n for (const link of element.querySelectorAll(this.selector)) {\n if (this.delegate.shouldPreloadLink(link)) {\n this.preloadURL(link);\n }\n }\n }\n\n async preloadURL(link) {\n const location = new URL(link.href);\n\n if (this.snapshotCache.has(location)) {\n return\n }\n\n const fetchRequest = new FetchRequest(this, FetchMethod.get, location, new URLSearchParams(), link);\n await fetchRequest.perform();\n }\n\n // Fetch request delegate\n\n prepareRequest(fetchRequest) {\n fetchRequest.headers[\"X-Sec-Purpose\"] = \"prefetch\";\n }\n\n async requestSucceededWithResponse(fetchRequest, fetchResponse) {\n try {\n const responseHTML = await fetchResponse.responseHTML;\n const snapshot = PageSnapshot.fromHTMLString(responseHTML);\n\n this.snapshotCache.put(fetchRequest.url, snapshot);\n } catch (_) {\n // If we cannot preload that is ok!\n }\n }\n\n requestStarted(fetchRequest) {}\n\n requestErrored(fetchRequest) {}\n\n requestFinished(fetchRequest) {}\n\n requestPreventedHandlingResponse(fetchRequest, fetchResponse) {}\n\n requestFailedWithResponse(fetchRequest, fetchResponse) {}\n\n #preloadAll = () => {\n this.preloadOnLoadLinksForView(document.body);\n }\n}\n\nclass Cache {\n constructor(session) {\n this.session = session;\n }\n\n clear() {\n this.session.clearCache();\n }\n\n resetCacheControl() {\n this.#setCacheControl(\"\");\n }\n\n exemptPageFromCache() {\n this.#setCacheControl(\"no-cache\");\n }\n\n exemptPageFromPreview() {\n this.#setCacheControl(\"no-preview\");\n }\n\n #setCacheControl(value) {\n setMetaContent(\"turbo-cache-control\", value);\n }\n}\n\nclass Session {\n navigator = new Navigator(this)\n history = new History(this)\n view = new PageView(this, document.documentElement)\n adapter = new BrowserAdapter(this)\n\n pageObserver = new PageObserver(this)\n cacheObserver = new CacheObserver()\n linkPrefetchObserver = new LinkPrefetchObserver(this, document)\n linkClickObserver = new LinkClickObserver(this, window)\n formSubmitObserver = new FormSubmitObserver(this, document)\n scrollObserver = new ScrollObserver(this)\n streamObserver = new StreamObserver(this)\n formLinkClickObserver = new FormLinkClickObserver(this, document.documentElement)\n frameRedirector = new FrameRedirector(this, document.documentElement)\n streamMessageRenderer = new StreamMessageRenderer()\n cache = new Cache(this)\n\n enabled = true\n started = false\n #pageRefreshDebouncePeriod = 150\n\n constructor(recentRequests) {\n this.recentRequests = recentRequests;\n this.preloader = new Preloader(this, this.view.snapshotCache);\n this.debouncedRefresh = this.refresh;\n this.pageRefreshDebouncePeriod = this.pageRefreshDebouncePeriod;\n }\n\n start() {\n if (!this.started) {\n this.pageObserver.start();\n this.cacheObserver.start();\n this.linkPrefetchObserver.start();\n this.formLinkClickObserver.start();\n this.linkClickObserver.start();\n this.formSubmitObserver.start();\n this.scrollObserver.start();\n this.streamObserver.start();\n this.frameRedirector.start();\n this.history.start();\n this.preloader.start();\n this.started = true;\n this.enabled = true;\n }\n }\n\n disable() {\n this.enabled = false;\n }\n\n stop() {\n if (this.started) {\n this.pageObserver.stop();\n this.cacheObserver.stop();\n this.linkPrefetchObserver.stop();\n this.formLinkClickObserver.stop();\n this.linkClickObserver.stop();\n this.formSubmitObserver.stop();\n this.scrollObserver.stop();\n this.streamObserver.stop();\n this.frameRedirector.stop();\n this.history.stop();\n this.preloader.stop();\n this.started = false;\n }\n }\n\n registerAdapter(adapter) {\n this.adapter = adapter;\n }\n\n visit(location, options = {}) {\n const frameElement = options.frame ? document.getElementById(options.frame) : null;\n\n if (frameElement instanceof FrameElement) {\n const action = options.action || getVisitAction(frameElement);\n\n frameElement.delegate.proposeVisitIfNavigatedWithAction(frameElement, action);\n frameElement.src = location.toString();\n } else {\n this.navigator.proposeVisit(expandURL(location), options);\n }\n }\n\n refresh(url, requestId) {\n const isRecentRequest = requestId && this.recentRequests.has(requestId);\n if (!isRecentRequest && !this.navigator.currentVisit) {\n this.visit(url, { action: \"replace\", shouldCacheSnapshot: false });\n }\n }\n\n connectStreamSource(source) {\n this.streamObserver.connectStreamSource(source);\n }\n\n disconnectStreamSource(source) {\n this.streamObserver.disconnectStreamSource(source);\n }\n\n renderStreamMessage(message) {\n this.streamMessageRenderer.render(StreamMessage.wrap(message));\n }\n\n clearCache() {\n this.view.clearSnapshotCache();\n }\n\n setProgressBarDelay(delay) {\n console.warn(\n \"Please replace `session.setProgressBarDelay(delay)` with `session.progressBarDelay = delay`. The function is deprecated and will be removed in a future version of Turbo.`\"\n );\n\n this.progressBarDelay = delay;\n }\n\n set progressBarDelay(delay) {\n config.drive.progressBarDelay = delay;\n }\n\n get progressBarDelay() {\n return config.drive.progressBarDelay\n }\n\n set drive(value) {\n config.drive.enabled = value;\n }\n\n get drive() {\n return config.drive.enabled\n }\n\n set formMode(value) {\n config.forms.mode = value;\n }\n\n get formMode() {\n return config.forms.mode\n }\n\n get location() {\n return this.history.location\n }\n\n get restorationIdentifier() {\n return this.history.restorationIdentifier\n }\n\n get pageRefreshDebouncePeriod() {\n return this.#pageRefreshDebouncePeriod\n }\n\n set pageRefreshDebouncePeriod(value) {\n this.refresh = debounce(this.debouncedRefresh.bind(this), value);\n this.#pageRefreshDebouncePeriod = value;\n }\n\n // Preloader delegate\n\n shouldPreloadLink(element) {\n const isUnsafe = element.hasAttribute(\"data-turbo-method\");\n const isStream = element.hasAttribute(\"data-turbo-stream\");\n const frameTarget = element.getAttribute(\"data-turbo-frame\");\n const frame = frameTarget == \"_top\" ?\n null :\n document.getElementById(frameTarget) || findClosestRecursively(element, \"turbo-frame:not([disabled])\");\n\n if (isUnsafe || isStream || frame instanceof FrameElement) {\n return false\n } else {\n const location = new URL(element.href);\n\n return this.elementIsNavigatable(element) && locationIsVisitable(location, this.snapshot.rootLocation)\n }\n }\n\n // History delegate\n\n historyPoppedToLocationWithRestorationIdentifierAndDirection(location, restorationIdentifier, direction) {\n if (this.enabled) {\n this.navigator.startVisit(location, restorationIdentifier, {\n action: \"restore\",\n historyChanged: true,\n direction\n });\n } else {\n this.adapter.pageInvalidated({\n reason: \"turbo_disabled\"\n });\n }\n }\n\n // Scroll observer delegate\n\n scrollPositionChanged(position) {\n this.history.updateRestorationData({ scrollPosition: position });\n }\n\n // Form click observer delegate\n\n willSubmitFormLinkToLocation(link, location) {\n return this.elementIsNavigatable(link) && locationIsVisitable(location, this.snapshot.rootLocation)\n }\n\n submittedFormLinkToLocation() {}\n\n // Link hover observer delegate\n\n canPrefetchRequestToLocation(link, location) {\n return (\n this.elementIsNavigatable(link) &&\n locationIsVisitable(location, this.snapshot.rootLocation)\n )\n }\n\n // Link click observer delegate\n\n willFollowLinkToLocation(link, location, event) {\n return (\n this.elementIsNavigatable(link) &&\n locationIsVisitable(location, this.snapshot.rootLocation) &&\n this.applicationAllowsFollowingLinkToLocation(link, location, event)\n )\n }\n\n followedLinkToLocation(link, location) {\n const action = this.getActionForLink(link);\n const acceptsStreamResponse = link.hasAttribute(\"data-turbo-stream\");\n\n this.visit(location.href, { action, acceptsStreamResponse });\n }\n\n // Navigator delegate\n\n allowsVisitingLocationWithAction(location, action) {\n return this.locationWithActionIsSamePage(location, action) || this.applicationAllowsVisitingLocation(location)\n }\n\n visitProposedToLocation(location, options) {\n extendURLWithDeprecatedProperties(location);\n this.adapter.visitProposedToLocation(location, options);\n }\n\n // Visit delegate\n\n visitStarted(visit) {\n if (!visit.acceptsStreamResponse) {\n markAsBusy(document.documentElement);\n this.view.markVisitDirection(visit.direction);\n }\n extendURLWithDeprecatedProperties(visit.location);\n if (!visit.silent) {\n this.notifyApplicationAfterVisitingLocation(visit.location, visit.action);\n }\n }\n\n visitCompleted(visit) {\n this.view.unmarkVisitDirection();\n clearBusyState(document.documentElement);\n this.notifyApplicationAfterPageLoad(visit.getTimingMetrics());\n }\n\n locationWithActionIsSamePage(location, action) {\n return this.navigator.locationWithActionIsSamePage(location, action)\n }\n\n visitScrolledToSamePageLocation(oldURL, newURL) {\n this.notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL);\n }\n\n // Form submit observer delegate\n\n willSubmitForm(form, submitter) {\n const action = getAction$1(form, submitter);\n\n return (\n this.submissionIsNavigatable(form, submitter) &&\n locationIsVisitable(expandURL(action), this.snapshot.rootLocation)\n )\n }\n\n formSubmitted(form, submitter) {\n this.navigator.submitForm(form, submitter);\n }\n\n // Page observer delegate\n\n pageBecameInteractive() {\n this.view.lastRenderedLocation = this.location;\n this.notifyApplicationAfterPageLoad();\n }\n\n pageLoaded() {\n this.history.assumeControlOfScrollRestoration();\n }\n\n pageWillUnload() {\n this.history.relinquishControlOfScrollRestoration();\n }\n\n // Stream observer delegate\n\n receivedMessageFromStream(message) {\n this.renderStreamMessage(message);\n }\n\n // Page view delegate\n\n viewWillCacheSnapshot() {\n if (!this.navigator.currentVisit?.silent) {\n this.notifyApplicationBeforeCachingSnapshot();\n }\n }\n\n allowsImmediateRender({ element }, options) {\n const event = this.notifyApplicationBeforeRender(element, options);\n const {\n defaultPrevented,\n detail: { render }\n } = event;\n\n if (this.view.renderer && render) {\n this.view.renderer.renderElement = render;\n }\n\n return !defaultPrevented\n }\n\n viewRenderedSnapshot(_snapshot, _isPreview, renderMethod) {\n this.view.lastRenderedLocation = this.history.location;\n this.notifyApplicationAfterRender(renderMethod);\n }\n\n preloadOnLoadLinksForView(element) {\n this.preloader.preloadOnLoadLinksForView(element);\n }\n\n viewInvalidated(reason) {\n this.adapter.pageInvalidated(reason);\n }\n\n // Frame element\n\n frameLoaded(frame) {\n this.notifyApplicationAfterFrameLoad(frame);\n }\n\n frameRendered(fetchResponse, frame) {\n this.notifyApplicationAfterFrameRender(fetchResponse, frame);\n }\n\n // Application events\n\n applicationAllowsFollowingLinkToLocation(link, location, ev) {\n const event = this.notifyApplicationAfterClickingLinkToLocation(link, location, ev);\n return !event.defaultPrevented\n }\n\n applicationAllowsVisitingLocation(location) {\n const event = this.notifyApplicationBeforeVisitingLocation(location);\n return !event.defaultPrevented\n }\n\n notifyApplicationAfterClickingLinkToLocation(link, location, event) {\n return dispatch(\"turbo:click\", {\n target: link,\n detail: { url: location.href, originalEvent: event },\n cancelable: true\n })\n }\n\n notifyApplicationBeforeVisitingLocation(location) {\n return dispatch(\"turbo:before-visit\", {\n detail: { url: location.href },\n cancelable: true\n })\n }\n\n notifyApplicationAfterVisitingLocation(location, action) {\n return dispatch(\"turbo:visit\", { detail: { url: location.href, action } })\n }\n\n notifyApplicationBeforeCachingSnapshot() {\n return dispatch(\"turbo:before-cache\")\n }\n\n notifyApplicationBeforeRender(newBody, options) {\n return dispatch(\"turbo:before-render\", {\n detail: { newBody, ...options },\n cancelable: true\n })\n }\n\n notifyApplicationAfterRender(renderMethod) {\n return dispatch(\"turbo:render\", { detail: { renderMethod } })\n }\n\n notifyApplicationAfterPageLoad(timing = {}) {\n return dispatch(\"turbo:load\", {\n detail: { url: this.location.href, timing }\n })\n }\n\n notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL) {\n dispatchEvent(\n new HashChangeEvent(\"hashchange\", {\n oldURL: oldURL.toString(),\n newURL: newURL.toString()\n })\n );\n }\n\n notifyApplicationAfterFrameLoad(frame) {\n return dispatch(\"turbo:frame-load\", { target: frame })\n }\n\n notifyApplicationAfterFrameRender(fetchResponse, frame) {\n return dispatch(\"turbo:frame-render\", {\n detail: { fetchResponse },\n target: frame,\n cancelable: true\n })\n }\n\n // Helpers\n\n submissionIsNavigatable(form, submitter) {\n if (config.forms.mode == \"off\") {\n return false\n } else {\n const submitterIsNavigatable = submitter ? this.elementIsNavigatable(submitter) : true;\n\n if (config.forms.mode == \"optin\") {\n return submitterIsNavigatable && form.closest('[data-turbo=\"true\"]') != null\n } else {\n return submitterIsNavigatable && this.elementIsNavigatable(form)\n }\n }\n }\n\n elementIsNavigatable(element) {\n const container = findClosestRecursively(element, \"[data-turbo]\");\n const withinFrame = findClosestRecursively(element, \"turbo-frame\");\n\n // Check if Drive is enabled on the session or we're within a Frame.\n if (config.drive.enabled || withinFrame) {\n // Element is navigatable by default, unless `data-turbo=\"false\"`.\n if (container) {\n return container.getAttribute(\"data-turbo\") != \"false\"\n } else {\n return true\n }\n } else {\n // Element isn't navigatable by default, unless `data-turbo=\"true\"`.\n if (container) {\n return container.getAttribute(\"data-turbo\") == \"true\"\n } else {\n return false\n }\n }\n }\n\n // Private\n\n getActionForLink(link) {\n return getVisitAction(link) || \"advance\"\n }\n\n get snapshot() {\n return this.view.snapshot\n }\n}\n\n// Older versions of the Turbo Native adapters referenced the\n// `Location#absoluteURL` property in their implementations of\n// the `Adapter#visitProposedToLocation()` and `#visitStarted()`\n// methods. The Location class has since been removed in favor\n// of the DOM URL API, and accordingly all Adapter methods now\n// receive URL objects.\n//\n// We alias #absoluteURL to #toString() here to avoid crashing\n// older adapters which do not expect URL objects. We should\n// consider removing this support at some point in the future.\n\nfunction extendURLWithDeprecatedProperties(url) {\n Object.defineProperties(url, deprecatedLocationPropertyDescriptors);\n}\n\nconst deprecatedLocationPropertyDescriptors = {\n absoluteURL: {\n get() {\n return this.toString()\n }\n }\n};\n\nconst session = new Session(recentRequests);\nconst { cache, navigator: navigator$1 } = session;\n\n/**\n * Starts the main session.\n * This initialises any necessary observers such as those to monitor\n * link interactions.\n */\nfunction start() {\n session.start();\n}\n\n/**\n * Registers an adapter for the main session.\n *\n * @param adapter Adapter to register\n */\nfunction registerAdapter(adapter) {\n session.registerAdapter(adapter);\n}\n\n/**\n * Performs an application visit to the given location.\n *\n * @param location Location to visit (a URL or path)\n * @param options Options to apply\n * @param options.action Type of history navigation to apply (\"restore\",\n * \"replace\" or \"advance\")\n * @param options.historyChanged Specifies whether the browser history has\n * already been changed for this visit or not\n * @param options.referrer Specifies the referrer of this visit such that\n * navigations to the same page will not result in a new history entry.\n * @param options.snapshotHTML Cached snapshot to render\n * @param options.response Response of the specified location\n */\nfunction visit(location, options) {\n session.visit(location, options);\n}\n\n/**\n * Connects a stream source to the main session.\n *\n * @param source Stream source to connect\n */\nfunction connectStreamSource(source) {\n session.connectStreamSource(source);\n}\n\n/**\n * Disconnects a stream source from the main session.\n *\n * @param source Stream source to disconnect\n */\nfunction disconnectStreamSource(source) {\n session.disconnectStreamSource(source);\n}\n\n/**\n * Renders a stream message to the main session by appending it to the\n * current document.\n *\n * @param message Message to render\n */\nfunction renderStreamMessage(message) {\n session.renderStreamMessage(message);\n}\n\n/**\n * Removes all entries from the Turbo Drive page cache.\n * Call this when state has changed on the server that may affect cached pages.\n *\n * @deprecated since version 7.2.0 in favor of `Turbo.cache.clear()`\n */\nfunction clearCache() {\n console.warn(\n \"Please replace `Turbo.clearCache()` with `Turbo.cache.clear()`. The top-level function is deprecated and will be removed in a future version of Turbo.`\"\n );\n session.clearCache();\n}\n\n/**\n * Sets the delay after which the progress bar will appear during navigation.\n *\n * The progress bar appears after 500ms by default.\n *\n * Note that this method has no effect when used with the iOS or Android\n * adapters.\n *\n * @param delay Time to delay in milliseconds\n */\nfunction setProgressBarDelay(delay) {\n console.warn(\n \"Please replace `Turbo.setProgressBarDelay(delay)` with `Turbo.config.drive.progressBarDelay = delay`. The top-level function is deprecated and will be removed in a future version of Turbo.`\"\n );\n config.drive.progressBarDelay = delay;\n}\n\nfunction setConfirmMethod(confirmMethod) {\n console.warn(\n \"Please replace `Turbo.setConfirmMethod(confirmMethod)` with `Turbo.config.forms.confirm = confirmMethod`. The top-level function is deprecated and will be removed in a future version of Turbo.`\"\n );\n config.forms.confirm = confirmMethod;\n}\n\nfunction setFormMode(mode) {\n console.warn(\n \"Please replace `Turbo.setFormMode(mode)` with `Turbo.config.forms.mode = mode`. The top-level function is deprecated and will be removed in a future version of Turbo.`\"\n );\n config.forms.mode = mode;\n}\n\nvar Turbo = /*#__PURE__*/Object.freeze({\n __proto__: null,\n navigator: navigator$1,\n session: session,\n cache: cache,\n PageRenderer: PageRenderer,\n PageSnapshot: PageSnapshot,\n FrameRenderer: FrameRenderer,\n fetch: fetchWithTurboHeaders,\n config: config,\n start: start,\n registerAdapter: registerAdapter,\n visit: visit,\n connectStreamSource: connectStreamSource,\n disconnectStreamSource: disconnectStreamSource,\n renderStreamMessage: renderStreamMessage,\n clearCache: clearCache,\n setProgressBarDelay: setProgressBarDelay,\n setConfirmMethod: setConfirmMethod,\n setFormMode: setFormMode\n});\n\nclass TurboFrameMissingError extends Error {}\n\nclass FrameController {\n fetchResponseLoaded = (_fetchResponse) => Promise.resolve()\n #currentFetchRequest = null\n #resolveVisitPromise = () => {}\n #connected = false\n #hasBeenLoaded = false\n #ignoredAttributes = new Set()\n #shouldMorphFrame = false\n action = null\n\n constructor(element) {\n this.element = element;\n this.view = new FrameView(this, this.element);\n this.appearanceObserver = new AppearanceObserver(this, this.element);\n this.formLinkClickObserver = new FormLinkClickObserver(this, this.element);\n this.linkInterceptor = new LinkInterceptor(this, this.element);\n this.restorationIdentifier = uuid();\n this.formSubmitObserver = new FormSubmitObserver(this, this.element);\n }\n\n // Frame delegate\n\n connect() {\n if (!this.#connected) {\n this.#connected = true;\n if (this.loadingStyle == FrameLoadingStyle.lazy) {\n this.appearanceObserver.start();\n } else {\n this.#loadSourceURL();\n }\n this.formLinkClickObserver.start();\n this.linkInterceptor.start();\n this.formSubmitObserver.start();\n }\n }\n\n disconnect() {\n if (this.#connected) {\n this.#connected = false;\n this.appearanceObserver.stop();\n this.formLinkClickObserver.stop();\n this.linkInterceptor.stop();\n this.formSubmitObserver.stop();\n }\n }\n\n disabledChanged() {\n if (this.loadingStyle == FrameLoadingStyle.eager) {\n this.#loadSourceURL();\n }\n }\n\n sourceURLChanged() {\n if (this.#isIgnoringChangesTo(\"src\")) return\n\n if (this.element.isConnected) {\n this.complete = false;\n }\n\n if (this.loadingStyle == FrameLoadingStyle.eager || this.#hasBeenLoaded) {\n this.#loadSourceURL();\n }\n }\n\n sourceURLReloaded() {\n const { refresh, src } = this.element;\n\n this.#shouldMorphFrame = src && refresh === \"morph\";\n\n this.element.removeAttribute(\"complete\");\n this.element.src = null;\n this.element.src = src;\n return this.element.loaded\n }\n\n loadingStyleChanged() {\n if (this.loadingStyle == FrameLoadingStyle.lazy) {\n this.appearanceObserver.start();\n } else {\n this.appearanceObserver.stop();\n this.#loadSourceURL();\n }\n }\n\n async #loadSourceURL() {\n if (this.enabled && this.isActive && !this.complete && this.sourceURL) {\n this.element.loaded = this.#visit(expandURL(this.sourceURL));\n this.appearanceObserver.stop();\n await this.element.loaded;\n this.#hasBeenLoaded = true;\n }\n }\n\n async loadResponse(fetchResponse) {\n if (fetchResponse.redirected || (fetchResponse.succeeded && fetchResponse.isHTML)) {\n this.sourceURL = fetchResponse.response.url;\n }\n\n try {\n const html = await fetchResponse.responseHTML;\n if (html) {\n const document = parseHTMLDocument(html);\n const pageSnapshot = PageSnapshot.fromDocument(document);\n\n if (pageSnapshot.isVisitable) {\n await this.#loadFrameResponse(fetchResponse, document);\n } else {\n await this.#handleUnvisitableFrameResponse(fetchResponse);\n }\n }\n } finally {\n this.#shouldMorphFrame = false;\n this.fetchResponseLoaded = () => Promise.resolve();\n }\n }\n\n // Appearance observer delegate\n\n elementAppearedInViewport(element) {\n this.proposeVisitIfNavigatedWithAction(element, getVisitAction(element));\n this.#loadSourceURL();\n }\n\n // Form link click observer delegate\n\n willSubmitFormLinkToLocation(link) {\n return this.#shouldInterceptNavigation(link)\n }\n\n submittedFormLinkToLocation(link, _location, form) {\n const frame = this.#findFrameElement(link);\n if (frame) form.setAttribute(\"data-turbo-frame\", frame.id);\n }\n\n // Link interceptor delegate\n\n shouldInterceptLinkClick(element, _location, _event) {\n return this.#shouldInterceptNavigation(element)\n }\n\n linkClickIntercepted(element, location) {\n this.#navigateFrame(element, location);\n }\n\n // Form submit observer delegate\n\n willSubmitForm(element, submitter) {\n return element.closest(\"turbo-frame\") == this.element && this.#shouldInterceptNavigation(element, submitter)\n }\n\n formSubmitted(element, submitter) {\n if (this.formSubmission) {\n this.formSubmission.stop();\n }\n\n this.formSubmission = new FormSubmission(this, element, submitter);\n const { fetchRequest } = this.formSubmission;\n this.prepareRequest(fetchRequest);\n this.formSubmission.start();\n }\n\n // Fetch request delegate\n\n prepareRequest(request) {\n request.headers[\"Turbo-Frame\"] = this.id;\n\n if (this.currentNavigationElement?.hasAttribute(\"data-turbo-stream\")) {\n request.acceptResponseType(StreamMessage.contentType);\n }\n }\n\n requestStarted(_request) {\n markAsBusy(this.element);\n }\n\n requestPreventedHandlingResponse(_request, _response) {\n this.#resolveVisitPromise();\n }\n\n async requestSucceededWithResponse(request, response) {\n await this.loadResponse(response);\n this.#resolveVisitPromise();\n }\n\n async requestFailedWithResponse(request, response) {\n await this.loadResponse(response);\n this.#resolveVisitPromise();\n }\n\n requestErrored(request, error) {\n console.error(error);\n this.#resolveVisitPromise();\n }\n\n requestFinished(_request) {\n clearBusyState(this.element);\n }\n\n // Form submission delegate\n\n formSubmissionStarted({ formElement }) {\n markAsBusy(formElement, this.#findFrameElement(formElement));\n }\n\n formSubmissionSucceededWithResponse(formSubmission, response) {\n const frame = this.#findFrameElement(formSubmission.formElement, formSubmission.submitter);\n\n frame.delegate.proposeVisitIfNavigatedWithAction(frame, getVisitAction(formSubmission.submitter, formSubmission.formElement, frame));\n frame.delegate.loadResponse(response);\n\n if (!formSubmission.isSafe) {\n session.clearCache();\n }\n }\n\n formSubmissionFailedWithResponse(formSubmission, fetchResponse) {\n this.element.delegate.loadResponse(fetchResponse);\n session.clearCache();\n }\n\n formSubmissionErrored(formSubmission, error) {\n console.error(error);\n }\n\n formSubmissionFinished({ formElement }) {\n clearBusyState(formElement, this.#findFrameElement(formElement));\n }\n\n // View delegate\n\n allowsImmediateRender({ element: newFrame }, options) {\n const event = dispatch(\"turbo:before-frame-render\", {\n target: this.element,\n detail: { newFrame, ...options },\n cancelable: true\n });\n\n const {\n defaultPrevented,\n detail: { render }\n } = event;\n\n if (this.view.renderer && render) {\n this.view.renderer.renderElement = render;\n }\n\n return !defaultPrevented\n }\n\n viewRenderedSnapshot(_snapshot, _isPreview, _renderMethod) {}\n\n preloadOnLoadLinksForView(element) {\n session.preloadOnLoadLinksForView(element);\n }\n\n viewInvalidated() {}\n\n // Frame renderer delegate\n\n willRenderFrame(currentElement, _newElement) {\n this.previousFrameElement = currentElement.cloneNode(true);\n }\n\n visitCachedSnapshot = ({ element }) => {\n const frame = element.querySelector(\"#\" + this.element.id);\n\n if (frame && this.previousFrameElement) {\n frame.replaceChildren(...this.previousFrameElement.children);\n }\n\n delete this.previousFrameElement;\n }\n\n // Private\n\n async #loadFrameResponse(fetchResponse, document) {\n const newFrameElement = await this.extractForeignFrameElement(document.body);\n const rendererClass = this.#shouldMorphFrame ? MorphingFrameRenderer : FrameRenderer;\n\n if (newFrameElement) {\n const snapshot = new Snapshot(newFrameElement);\n const renderer = new rendererClass(this, this.view.snapshot, snapshot, false, false);\n if (this.view.renderPromise) await this.view.renderPromise;\n this.changeHistory();\n\n await this.view.render(renderer);\n this.complete = true;\n session.frameRendered(fetchResponse, this.element);\n session.frameLoaded(this.element);\n await this.fetchResponseLoaded(fetchResponse);\n } else if (this.#willHandleFrameMissingFromResponse(fetchResponse)) {\n this.#handleFrameMissingFromResponse(fetchResponse);\n }\n }\n\n async #visit(url) {\n const request = new FetchRequest(this, FetchMethod.get, url, new URLSearchParams(), this.element);\n\n this.#currentFetchRequest?.cancel();\n this.#currentFetchRequest = request;\n\n return new Promise((resolve) => {\n this.#resolveVisitPromise = () => {\n this.#resolveVisitPromise = () => {};\n this.#currentFetchRequest = null;\n resolve();\n };\n request.perform();\n })\n }\n\n #navigateFrame(element, url, submitter) {\n const frame = this.#findFrameElement(element, submitter);\n\n frame.delegate.proposeVisitIfNavigatedWithAction(frame, getVisitAction(submitter, element, frame));\n\n this.#withCurrentNavigationElement(element, () => {\n frame.src = url;\n });\n }\n\n proposeVisitIfNavigatedWithAction(frame, action = null) {\n this.action = action;\n\n if (this.action) {\n const pageSnapshot = PageSnapshot.fromElement(frame).clone();\n const { visitCachedSnapshot } = frame.delegate;\n\n frame.delegate.fetchResponseLoaded = async (fetchResponse) => {\n if (frame.src) {\n const { statusCode, redirected } = fetchResponse;\n const responseHTML = await fetchResponse.responseHTML;\n const response = { statusCode, redirected, responseHTML };\n const options = {\n response,\n visitCachedSnapshot,\n willRender: false,\n updateHistory: false,\n restorationIdentifier: this.restorationIdentifier,\n snapshot: pageSnapshot\n };\n\n if (this.action) options.action = this.action;\n\n session.visit(frame.src, options);\n }\n };\n }\n }\n\n changeHistory() {\n if (this.action) {\n const method = getHistoryMethodForAction(this.action);\n session.history.update(method, expandURL(this.element.src || \"\"), this.restorationIdentifier);\n }\n }\n\n async #handleUnvisitableFrameResponse(fetchResponse) {\n console.warn(\n `The response (${fetchResponse.statusCode}) from <turbo-frame id=\"${this.element.id}\"> is performing a full page visit due to turbo-visit-control.`\n );\n\n await this.#visitResponse(fetchResponse.response);\n }\n\n #willHandleFrameMissingFromResponse(fetchResponse) {\n this.element.setAttribute(\"complete\", \"\");\n\n const response = fetchResponse.response;\n const visit = async (url, options) => {\n if (url instanceof Response) {\n this.#visitResponse(url);\n } else {\n session.visit(url, options);\n }\n };\n\n const event = dispatch(\"turbo:frame-missing\", {\n target: this.element,\n detail: { response, visit },\n cancelable: true\n });\n\n return !event.defaultPrevented\n }\n\n #handleFrameMissingFromResponse(fetchResponse) {\n this.view.missing();\n this.#throwFrameMissingError(fetchResponse);\n }\n\n #throwFrameMissingError(fetchResponse) {\n const message = `The response (${fetchResponse.statusCode}) did not contain the expected <turbo-frame id=\"${this.element.id}\"> and will be ignored. To perform a full page visit instead, set turbo-visit-control to reload.`;\n throw new TurboFrameMissingError(message)\n }\n\n async #visitResponse(response) {\n const wrapped = new FetchResponse(response);\n const responseHTML = await wrapped.responseHTML;\n const { location, redirected, statusCode } = wrapped;\n\n return session.visit(location, { response: { redirected, statusCode, responseHTML } })\n }\n\n #findFrameElement(element, submitter) {\n const id = getAttribute(\"data-turbo-frame\", submitter, element) || this.element.getAttribute(\"target\");\n return getFrameElementById(id) ?? this.element\n }\n\n async extractForeignFrameElement(container) {\n let element;\n const id = CSS.escape(this.id);\n\n try {\n element = activateElement(container.querySelector(`turbo-frame#${id}`), this.sourceURL);\n if (element) {\n return element\n }\n\n element = activateElement(container.querySelector(`turbo-frame[src][recurse~=${id}]`), this.sourceURL);\n if (element) {\n await element.loaded;\n return await this.extractForeignFrameElement(element)\n }\n } catch (error) {\n console.error(error);\n return new FrameElement()\n }\n\n return null\n }\n\n #formActionIsVisitable(form, submitter) {\n const action = getAction$1(form, submitter);\n\n return locationIsVisitable(expandURL(action), this.rootLocation)\n }\n\n #shouldInterceptNavigation(element, submitter) {\n const id = getAttribute(\"data-turbo-frame\", submitter, element) || this.element.getAttribute(\"target\");\n\n if (element instanceof HTMLFormElement && !this.#formActionIsVisitable(element, submitter)) {\n return false\n }\n\n if (!this.enabled || id == \"_top\") {\n return false\n }\n\n if (id) {\n const frameElement = getFrameElementById(id);\n if (frameElement) {\n return !frameElement.disabled\n }\n }\n\n if (!session.elementIsNavigatable(element)) {\n return false\n }\n\n if (submitter && !session.elementIsNavigatable(submitter)) {\n return false\n }\n\n return true\n }\n\n // Computed properties\n\n get id() {\n return this.element.id\n }\n\n get enabled() {\n return !this.element.disabled\n }\n\n get sourceURL() {\n if (this.element.src) {\n return this.element.src\n }\n }\n\n set sourceURL(sourceURL) {\n this.#ignoringChangesToAttribute(\"src\", () => {\n this.element.src = sourceURL ?? null;\n });\n }\n\n get loadingStyle() {\n return this.element.loading\n }\n\n get isLoading() {\n return this.formSubmission !== undefined || this.#resolveVisitPromise() !== undefined\n }\n\n get complete() {\n return this.element.hasAttribute(\"complete\")\n }\n\n set complete(value) {\n if (value) {\n this.element.setAttribute(\"complete\", \"\");\n } else {\n this.element.removeAttribute(\"complete\");\n }\n }\n\n get isActive() {\n return this.element.isActive && this.#connected\n }\n\n get rootLocation() {\n const meta = this.element.ownerDocument.querySelector(`meta[name=\"turbo-root\"]`);\n const root = meta?.content ?? \"/\";\n return expandURL(root)\n }\n\n #isIgnoringChangesTo(attributeName) {\n return this.#ignoredAttributes.has(attributeName)\n }\n\n #ignoringChangesToAttribute(attributeName, callback) {\n this.#ignoredAttributes.add(attributeName);\n callback();\n this.#ignoredAttributes.delete(attributeName);\n }\n\n #withCurrentNavigationElement(element, callback) {\n this.currentNavigationElement = element;\n callback();\n delete this.currentNavigationElement;\n }\n}\n\nfunction getFrameElementById(id) {\n if (id != null) {\n const element = document.getElementById(id);\n if (element instanceof FrameElement) {\n return element\n }\n }\n}\n\nfunction activateElement(element, currentURL) {\n if (element) {\n const src = element.getAttribute(\"src\");\n if (src != null && currentURL != null && urlsAreEqual(src, currentURL)) {\n throw new Error(`Matching <turbo-frame id=\"${element.id}\"> element has a source URL which references itself`)\n }\n if (element.ownerDocument !== document) {\n element = document.importNode(element, true);\n }\n\n if (element instanceof FrameElement) {\n element.connectedCallback();\n element.disconnectedCallback();\n return element\n }\n }\n}\n\nconst StreamActions = {\n after() {\n this.targetElements.forEach((e) => e.parentElement?.insertBefore(this.templateContent, e.nextSibling));\n },\n\n append() {\n this.removeDuplicateTargetChildren();\n this.targetElements.forEach((e) => e.append(this.templateContent));\n },\n\n before() {\n this.targetElements.forEach((e) => e.parentElement?.insertBefore(this.templateContent, e));\n },\n\n prepend() {\n this.removeDuplicateTargetChildren();\n this.targetElements.forEach((e) => e.prepend(this.templateContent));\n },\n\n remove() {\n this.targetElements.forEach((e) => e.remove());\n },\n\n replace() {\n const method = this.getAttribute(\"method\");\n\n this.targetElements.forEach((targetElement) => {\n if (method === \"morph\") {\n morphElements(targetElement, this.templateContent);\n } else {\n targetElement.replaceWith(this.templateContent);\n }\n });\n },\n\n update() {\n const method = this.getAttribute(\"method\");\n\n this.targetElements.forEach((targetElement) => {\n if (method === \"morph\") {\n morphChildren(targetElement, this.templateContent);\n } else {\n targetElement.innerHTML = \"\";\n targetElement.append(this.templateContent);\n }\n });\n },\n\n refresh() {\n session.refresh(this.baseURI, this.requestId);\n }\n};\n\n// <turbo-stream action=replace target=id><template>...\n\n/**\n * Renders updates to the page from a stream of messages.\n *\n * Using the `action` attribute, this can be configured one of eight ways:\n *\n * - `after` - inserts the result after the target\n * - `append` - appends the result to the target\n * - `before` - inserts the result before the target\n * - `prepend` - prepends the result to the target\n * - `refresh` - initiates a page refresh\n * - `remove` - removes the target\n * - `replace` - replaces the outer HTML of the target\n * - `update` - replaces the inner HTML of the target\n *\n * @customElement turbo-stream\n * @example\n * <turbo-stream action=\"append\" target=\"dom_id\">\n * <template>\n * Content to append to target designated with the dom_id.\n * </template>\n * </turbo-stream>\n */\nclass StreamElement extends HTMLElement {\n static async renderElement(newElement) {\n await newElement.performAction();\n }\n\n async connectedCallback() {\n try {\n await this.render();\n } catch (error) {\n console.error(error);\n } finally {\n this.disconnect();\n }\n }\n\n async render() {\n return (this.renderPromise ??= (async () => {\n const event = this.beforeRenderEvent;\n\n if (this.dispatchEvent(event)) {\n await nextRepaint();\n await event.detail.render(this);\n }\n })())\n }\n\n disconnect() {\n try {\n this.remove();\n // eslint-disable-next-line no-empty\n } catch {}\n }\n\n /**\n * Removes duplicate children (by ID)\n */\n removeDuplicateTargetChildren() {\n this.duplicateChildren.forEach((c) => c.remove());\n }\n\n /**\n * Gets the list of duplicate children (i.e. those with the same ID)\n */\n get duplicateChildren() {\n const existingChildren = this.targetElements.flatMap((e) => [...e.children]).filter((c) => !!c.id);\n const newChildrenIds = [...(this.templateContent?.children || [])].filter((c) => !!c.id).map((c) => c.id);\n\n return existingChildren.filter((c) => newChildrenIds.includes(c.id))\n }\n\n /**\n * Gets the action function to be performed.\n */\n get performAction() {\n if (this.action) {\n const actionFunction = StreamActions[this.action];\n if (actionFunction) {\n return actionFunction\n }\n this.#raise(\"unknown action\");\n }\n this.#raise(\"action attribute is missing\");\n }\n\n /**\n * Gets the target elements which the template will be rendered to.\n */\n get targetElements() {\n if (this.target) {\n return this.targetElementsById\n } else if (this.targets) {\n return this.targetElementsByQuery\n } else {\n this.#raise(\"target or targets attribute is missing\");\n }\n }\n\n /**\n * Gets the contents of the main `<template>`.\n */\n get templateContent() {\n return this.templateElement.content.cloneNode(true)\n }\n\n /**\n * Gets the main `<template>` used for rendering\n */\n get templateElement() {\n if (this.firstElementChild === null) {\n const template = this.ownerDocument.createElement(\"template\");\n this.appendChild(template);\n return template\n } else if (this.firstElementChild instanceof HTMLTemplateElement) {\n return this.firstElementChild\n }\n this.#raise(\"first child element must be a <template> element\");\n }\n\n /**\n * Gets the current action.\n */\n get action() {\n return this.getAttribute(\"action\")\n }\n\n /**\n * Gets the current target (an element ID) to which the result will\n * be rendered.\n */\n get target() {\n return this.getAttribute(\"target\")\n }\n\n /**\n * Gets the current \"targets\" selector (a CSS selector)\n */\n get targets() {\n return this.getAttribute(\"targets\")\n }\n\n /**\n * Reads the request-id attribute\n */\n get requestId() {\n return this.getAttribute(\"request-id\")\n }\n\n #raise(message) {\n throw new Error(`${this.description}: ${message}`)\n }\n\n get description() {\n return (this.outerHTML.match(/<[^>]+>/) ?? [])[0] ?? \"<turbo-stream>\"\n }\n\n get beforeRenderEvent() {\n return new CustomEvent(\"turbo:before-stream-render\", {\n bubbles: true,\n cancelable: true,\n detail: { newStream: this, render: StreamElement.renderElement }\n })\n }\n\n get targetElementsById() {\n const element = this.ownerDocument?.getElementById(this.target);\n\n if (element !== null) {\n return [element]\n } else {\n return []\n }\n }\n\n get targetElementsByQuery() {\n const elements = this.ownerDocument?.querySelectorAll(this.targets);\n\n if (elements.length !== 0) {\n return Array.prototype.slice.call(elements)\n } else {\n return []\n }\n }\n}\n\nclass StreamSourceElement extends HTMLElement {\n streamSource = null\n\n connectedCallback() {\n this.streamSource = this.src.match(/^ws{1,2}:/) ? new WebSocket(this.src) : new EventSource(this.src);\n\n connectStreamSource(this.streamSource);\n }\n\n disconnectedCallback() {\n if (this.streamSource) {\n this.streamSource.close();\n\n disconnectStreamSource(this.streamSource);\n }\n }\n\n get src() {\n return this.getAttribute(\"src\") || \"\"\n }\n}\n\nFrameElement.delegateConstructor = FrameController;\n\nif (customElements.get(\"turbo-frame\") === undefined) {\n customElements.define(\"turbo-frame\", FrameElement);\n}\n\nif (customElements.get(\"turbo-stream\") === undefined) {\n customElements.define(\"turbo-stream\", StreamElement);\n}\n\nif (customElements.get(\"turbo-stream-source\") === undefined) {\n customElements.define(\"turbo-stream-source\", StreamSourceElement);\n}\n\n(() => {\n let element = document.currentScript;\n if (!element) return\n if (element.hasAttribute(\"data-turbo-suppress-warning\")) return\n\n element = element.parentElement;\n while (element) {\n if (element == document.body) {\n return console.warn(\n unindent`\n You are loading Turbo from a <script> element inside the <body> element. This is probably not what you meant to do!\n\n Load your application\u2019s JavaScript bundle inside the <head> element instead. <script> elements in <body> are evaluated with each page change.\n\n For more information, see: https://turbo.hotwired.dev/handbook/building#working-with-script-elements\n\n \u2014\u2014\n Suppress this warning by adding a \"data-turbo-suppress-warning\" attribute to: %s\n `,\n element.outerHTML\n )\n }\n\n element = element.parentElement;\n }\n})();\n\nwindow.Turbo = { ...Turbo, StreamActions };\nstart();\n\nexport { FetchEnctype, FetchMethod, FetchRequest, FetchResponse, FrameElement, FrameLoadingStyle, FrameRenderer, PageRenderer, PageSnapshot, StreamActions, StreamElement, StreamSourceElement, cache, clearCache, config, connectStreamSource, disconnectStreamSource, fetchWithTurboHeaders as fetch, fetchEnctypeFromString, fetchMethodFromString, isSafe, navigator$1 as navigator, registerAdapter, renderStreamMessage, session, setConfirmMethod, setFormMode, setProgressBarDelay, start, visit };\n", "let consumer\n\nexport async function getConsumer() {\n return consumer || setConsumer(createConsumer().then(setConsumer))\n}\n\nexport function setConsumer(newConsumer) {\n return consumer = newConsumer\n}\n\nexport async function createConsumer() {\n const { createConsumer } = await import(/* webpackChunkName: \"actioncable\" */ \"@rails/actioncable/src\")\n return createConsumer()\n}\n\nexport async function subscribeTo(channel, mixin) {\n const { subscriptions } = await getConsumer()\n return subscriptions.create(channel, mixin)\n}\n", "// Based on https://github.com/nathan7/snakeize\n//\n// This software is released under the MIT license:\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// 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, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\nexport default function walk (obj) {\n if (!obj || typeof obj !== 'object') return obj;\n if (obj instanceof Date || obj instanceof RegExp) return obj;\n if (Array.isArray(obj)) return obj.map(walk);\n return Object.keys(obj).reduce(function (acc, key) {\n var camel = key[0].toLowerCase() + key.slice(1).replace(/([A-Z]+)/g, function (m, x) {\n return '_' + x.toLowerCase();\n });\n acc[camel] = walk(obj[key]);\n return acc;\n }, {});\n};", "import { connectStreamSource, disconnectStreamSource } from \"@hotwired/turbo\"\nimport { subscribeTo } from \"./cable\"\nimport snakeize from \"./snakeize\"\n\nclass TurboCableStreamSourceElement extends HTMLElement {\n static observedAttributes = [\"channel\", \"signed-stream-name\"]\n\n async connectedCallback() {\n connectStreamSource(this)\n this.subscription = await subscribeTo(this.channel, {\n received: this.dispatchMessageEvent.bind(this),\n connected: this.subscriptionConnected.bind(this),\n disconnected: this.subscriptionDisconnected.bind(this)\n })\n }\n\n disconnectedCallback() {\n disconnectStreamSource(this)\n if (this.subscription) this.subscription.unsubscribe()\n this.subscriptionDisconnected()\n }\n\n attributeChangedCallback() {\n if (this.subscription) {\n this.disconnectedCallback()\n this.connectedCallback()\n }\n }\n\n dispatchMessageEvent(data) {\n const event = new MessageEvent(\"message\", { data })\n return this.dispatchEvent(event)\n }\n\n subscriptionConnected() {\n this.setAttribute(\"connected\", \"\")\n }\n\n subscriptionDisconnected() {\n this.removeAttribute(\"connected\")\n }\n\n get channel() {\n const channel = this.getAttribute(\"channel\")\n const signed_stream_name = this.getAttribute(\"signed-stream-name\")\n return { channel, signed_stream_name, ...snakeize({ ...this.dataset }) }\n }\n}\n\n\nif (customElements.get(\"turbo-cable-stream-source\") === undefined) {\n customElements.define(\"turbo-cable-stream-source\", TurboCableStreamSourceElement)\n}\n", "export function encodeMethodIntoRequestBody(event) {\n if (event.target instanceof HTMLFormElement) {\n const { target: form, detail: { fetchOptions } } = event\n\n form.addEventListener(\"turbo:submit-start\", ({ detail: { formSubmission: { submitter } } }) => {\n const body = isBodyInit(fetchOptions.body) ? fetchOptions.body : new URLSearchParams()\n const method = determineFetchMethod(submitter, body, form)\n\n if (!/get/i.test(method)) {\n if (/post/i.test(method)) {\n body.delete(\"_method\")\n } else {\n body.set(\"_method\", method)\n }\n\n fetchOptions.method = \"post\"\n }\n }, { once: true })\n }\n}\n\nfunction determineFetchMethod(submitter, body, form) {\n const formMethod = determineFormMethod(submitter)\n const overrideMethod = body.get(\"_method\")\n const method = form.getAttribute(\"method\") || \"get\"\n\n if (typeof formMethod == \"string\") {\n return formMethod\n } else if (typeof overrideMethod == \"string\") {\n return overrideMethod\n } else {\n return method\n }\n}\n\nfunction determineFormMethod(submitter) {\n if (submitter instanceof HTMLButtonElement || submitter instanceof HTMLInputElement) {\n // Rails 7 ActionView::Helpers::FormBuilder#button method has an override\n // for formmethod if the button does not have name or value attributes\n // set, which is the default. This means that if you use <%= f.button\n // formmethod: :delete %>, it will generate a <button name=\"_method\"\n // value=\"delete\" formmethod=\"post\">. Therefore, if the submitter's name\n // is already _method, it's value attribute already contains the desired\n // method.\n if (submitter.name === '_method') {\n return submitter.value\n } else if (submitter.hasAttribute(\"formmethod\")) {\n return submitter.formMethod\n } else {\n return null\n }\n } else {\n return null\n }\n}\n\nfunction isBodyInit(body) {\n return body instanceof FormData || body instanceof URLSearchParams\n}\n", "import \"./cable_stream_source_element\"\n\nimport * as Turbo from \"@hotwired/turbo\"\nexport { Turbo }\n\nimport * as cable from \"./cable\"\nexport { cable }\n\nimport { encodeMethodIntoRequestBody } from \"./fetch_requests\"\n\nwindow.Turbo = Turbo\n\naddEventListener(\"turbo:before-fetch-request\", encodeMethodIntoRequestBody)\n", "/*\nStimulus 3.2.1\nCopyright \u00A9 2023 Basecamp, LLC\n */\nclass EventListener {\n constructor(eventTarget, eventName, eventOptions) {\n this.eventTarget = eventTarget;\n this.eventName = eventName;\n this.eventOptions = eventOptions;\n this.unorderedBindings = new Set();\n }\n connect() {\n this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);\n }\n disconnect() {\n this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);\n }\n bindingConnected(binding) {\n this.unorderedBindings.add(binding);\n }\n bindingDisconnected(binding) {\n this.unorderedBindings.delete(binding);\n }\n handleEvent(event) {\n const extendedEvent = extendEvent(event);\n for (const binding of this.bindings) {\n if (extendedEvent.immediatePropagationStopped) {\n break;\n }\n else {\n binding.handleEvent(extendedEvent);\n }\n }\n }\n hasBindings() {\n return this.unorderedBindings.size > 0;\n }\n get bindings() {\n return Array.from(this.unorderedBindings).sort((left, right) => {\n const leftIndex = left.index, rightIndex = right.index;\n return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n });\n }\n}\nfunction extendEvent(event) {\n if (\"immediatePropagationStopped\" in event) {\n return event;\n }\n else {\n const { stopImmediatePropagation } = event;\n return Object.assign(event, {\n immediatePropagationStopped: false,\n stopImmediatePropagation() {\n this.immediatePropagationStopped = true;\n stopImmediatePropagation.call(this);\n },\n });\n }\n}\n\nclass Dispatcher {\n constructor(application) {\n this.application = application;\n this.eventListenerMaps = new Map();\n this.started = false;\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.eventListeners.forEach((eventListener) => eventListener.connect());\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n this.eventListeners.forEach((eventListener) => eventListener.disconnect());\n }\n }\n get eventListeners() {\n return Array.from(this.eventListenerMaps.values()).reduce((listeners, map) => listeners.concat(Array.from(map.values())), []);\n }\n bindingConnected(binding) {\n this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n }\n bindingDisconnected(binding, clearEventListeners = false) {\n this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n if (clearEventListeners)\n this.clearEventListenersForBinding(binding);\n }\n handleError(error, message, detail = {}) {\n this.application.handleError(error, `Error ${message}`, detail);\n }\n clearEventListenersForBinding(binding) {\n const eventListener = this.fetchEventListenerForBinding(binding);\n if (!eventListener.hasBindings()) {\n eventListener.disconnect();\n this.removeMappedEventListenerFor(binding);\n }\n }\n removeMappedEventListenerFor(binding) {\n const { eventTarget, eventName, eventOptions } = binding;\n const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n const cacheKey = this.cacheKey(eventName, eventOptions);\n eventListenerMap.delete(cacheKey);\n if (eventListenerMap.size == 0)\n this.eventListenerMaps.delete(eventTarget);\n }\n fetchEventListenerForBinding(binding) {\n const { eventTarget, eventName, eventOptions } = binding;\n return this.fetchEventListener(eventTarget, eventName, eventOptions);\n }\n fetchEventListener(eventTarget, eventName, eventOptions) {\n const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n const cacheKey = this.cacheKey(eventName, eventOptions);\n let eventListener = eventListenerMap.get(cacheKey);\n if (!eventListener) {\n eventListener = this.createEventListener(eventTarget, eventName, eventOptions);\n eventListenerMap.set(cacheKey, eventListener);\n }\n return eventListener;\n }\n createEventListener(eventTarget, eventName, eventOptions) {\n const eventListener = new EventListener(eventTarget, eventName, eventOptions);\n if (this.started) {\n eventListener.connect();\n }\n return eventListener;\n }\n fetchEventListenerMapForEventTarget(eventTarget) {\n let eventListenerMap = this.eventListenerMaps.get(eventTarget);\n if (!eventListenerMap) {\n eventListenerMap = new Map();\n this.eventListenerMaps.set(eventTarget, eventListenerMap);\n }\n return eventListenerMap;\n }\n cacheKey(eventName, eventOptions) {\n const parts = [eventName];\n Object.keys(eventOptions)\n .sort()\n .forEach((key) => {\n parts.push(`${eventOptions[key] ? \"\" : \"!\"}${key}`);\n });\n return parts.join(\":\");\n }\n}\n\nconst defaultActionDescriptorFilters = {\n stop({ event, value }) {\n if (value)\n event.stopPropagation();\n return true;\n },\n prevent({ event, value }) {\n if (value)\n event.preventDefault();\n return true;\n },\n self({ event, value, element }) {\n if (value) {\n return element === event.target;\n }\n else {\n return true;\n }\n },\n};\nconst descriptorPattern = /^(?:(?:([^.]+?)\\+)?(.+?)(?:\\.(.+?))?(?:@(window|document))?->)?(.+?)(?:#([^:]+?))(?::(.+))?$/;\nfunction parseActionDescriptorString(descriptorString) {\n const source = descriptorString.trim();\n const matches = source.match(descriptorPattern) || [];\n let eventName = matches[2];\n let keyFilter = matches[3];\n if (keyFilter && ![\"keydown\", \"keyup\", \"keypress\"].includes(eventName)) {\n eventName += `.${keyFilter}`;\n keyFilter = \"\";\n }\n return {\n eventTarget: parseEventTarget(matches[4]),\n eventName,\n eventOptions: matches[7] ? parseEventOptions(matches[7]) : {},\n identifier: matches[5],\n methodName: matches[6],\n keyFilter: matches[1] || keyFilter,\n };\n}\nfunction parseEventTarget(eventTargetName) {\n if (eventTargetName == \"window\") {\n return window;\n }\n else if (eventTargetName == \"document\") {\n return document;\n }\n}\nfunction parseEventOptions(eventOptions) {\n return eventOptions\n .split(\":\")\n .reduce((options, token) => Object.assign(options, { [token.replace(/^!/, \"\")]: !/^!/.test(token) }), {});\n}\nfunction stringifyEventTarget(eventTarget) {\n if (eventTarget == window) {\n return \"window\";\n }\n else if (eventTarget == document) {\n return \"document\";\n }\n}\n\nfunction camelize(value) {\n return value.replace(/(?:[_-])([a-z0-9])/g, (_, char) => char.toUpperCase());\n}\nfunction namespaceCamelize(value) {\n return camelize(value.replace(/--/g, \"-\").replace(/__/g, \"_\"));\n}\nfunction capitalize(value) {\n return value.charAt(0).toUpperCase() + value.slice(1);\n}\nfunction dasherize(value) {\n return value.replace(/([A-Z])/g, (_, char) => `-${char.toLowerCase()}`);\n}\nfunction tokenize(value) {\n return value.match(/[^\\s]+/g) || [];\n}\n\nfunction isSomething(object) {\n return object !== null && object !== undefined;\n}\nfunction hasProperty(object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n}\n\nconst allModifiers = [\"meta\", \"ctrl\", \"alt\", \"shift\"];\nclass Action {\n constructor(element, index, descriptor, schema) {\n this.element = element;\n this.index = index;\n this.eventTarget = descriptor.eventTarget || element;\n this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n this.eventOptions = descriptor.eventOptions || {};\n this.identifier = descriptor.identifier || error(\"missing identifier\");\n this.methodName = descriptor.methodName || error(\"missing method name\");\n this.keyFilter = descriptor.keyFilter || \"\";\n this.schema = schema;\n }\n static forToken(token, schema) {\n return new this(token.element, token.index, parseActionDescriptorString(token.content), schema);\n }\n toString() {\n const eventFilter = this.keyFilter ? `.${this.keyFilter}` : \"\";\n const eventTarget = this.eventTargetName ? `@${this.eventTargetName}` : \"\";\n return `${this.eventName}${eventFilter}${eventTarget}->${this.identifier}#${this.methodName}`;\n }\n shouldIgnoreKeyboardEvent(event) {\n if (!this.keyFilter) {\n return false;\n }\n const filters = this.keyFilter.split(\"+\");\n if (this.keyFilterDissatisfied(event, filters)) {\n return true;\n }\n const standardFilter = filters.filter((key) => !allModifiers.includes(key))[0];\n if (!standardFilter) {\n return false;\n }\n if (!hasProperty(this.keyMappings, standardFilter)) {\n error(`contains unknown key filter: ${this.keyFilter}`);\n }\n return this.keyMappings[standardFilter].toLowerCase() !== event.key.toLowerCase();\n }\n shouldIgnoreMouseEvent(event) {\n if (!this.keyFilter) {\n return false;\n }\n const filters = [this.keyFilter];\n if (this.keyFilterDissatisfied(event, filters)) {\n return true;\n }\n return false;\n }\n get params() {\n const params = {};\n const pattern = new RegExp(`^data-${this.identifier}-(.+)-param$`, \"i\");\n for (const { name, value } of Array.from(this.element.attributes)) {\n const match = name.match(pattern);\n const key = match && match[1];\n if (key) {\n params[camelize(key)] = typecast(value);\n }\n }\n return params;\n }\n get eventTargetName() {\n return stringifyEventTarget(this.eventTarget);\n }\n get keyMappings() {\n return this.schema.keyMappings;\n }\n keyFilterDissatisfied(event, filters) {\n const [meta, ctrl, alt, shift] = allModifiers.map((modifier) => filters.includes(modifier));\n return event.metaKey !== meta || event.ctrlKey !== ctrl || event.altKey !== alt || event.shiftKey !== shift;\n }\n}\nconst defaultEventNames = {\n a: () => \"click\",\n button: () => \"click\",\n form: () => \"submit\",\n details: () => \"toggle\",\n input: (e) => (e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"input\"),\n select: () => \"change\",\n textarea: () => \"input\",\n};\nfunction getDefaultEventNameForElement(element) {\n const tagName = element.tagName.toLowerCase();\n if (tagName in defaultEventNames) {\n return defaultEventNames[tagName](element);\n }\n}\nfunction error(message) {\n throw new Error(message);\n}\nfunction typecast(value) {\n try {\n return JSON.parse(value);\n }\n catch (o_O) {\n return value;\n }\n}\n\nclass Binding {\n constructor(context, action) {\n this.context = context;\n this.action = action;\n }\n get index() {\n return this.action.index;\n }\n get eventTarget() {\n return this.action.eventTarget;\n }\n get eventOptions() {\n return this.action.eventOptions;\n }\n get identifier() {\n return this.context.identifier;\n }\n handleEvent(event) {\n const actionEvent = this.prepareActionEvent(event);\n if (this.willBeInvokedByEvent(event) && this.applyEventModifiers(actionEvent)) {\n this.invokeWithEvent(actionEvent);\n }\n }\n get eventName() {\n return this.action.eventName;\n }\n get method() {\n const method = this.controller[this.methodName];\n if (typeof method == \"function\") {\n return method;\n }\n throw new Error(`Action \"${this.action}\" references undefined method \"${this.methodName}\"`);\n }\n applyEventModifiers(event) {\n const { element } = this.action;\n const { actionDescriptorFilters } = this.context.application;\n const { controller } = this.context;\n let passes = true;\n for (const [name, value] of Object.entries(this.eventOptions)) {\n if (name in actionDescriptorFilters) {\n const filter = actionDescriptorFilters[name];\n passes = passes && filter({ name, value, event, element, controller });\n }\n else {\n continue;\n }\n }\n return passes;\n }\n prepareActionEvent(event) {\n return Object.assign(event, { params: this.action.params });\n }\n invokeWithEvent(event) {\n const { target, currentTarget } = event;\n try {\n this.method.call(this.controller, event);\n this.context.logDebugActivity(this.methodName, { event, target, currentTarget, action: this.methodName });\n }\n catch (error) {\n const { identifier, controller, element, index } = this;\n const detail = { identifier, controller, element, index, event };\n this.context.handleError(error, `invoking action \"${this.action}\"`, detail);\n }\n }\n willBeInvokedByEvent(event) {\n const eventTarget = event.target;\n if (event instanceof KeyboardEvent && this.action.shouldIgnoreKeyboardEvent(event)) {\n return false;\n }\n if (event instanceof MouseEvent && this.action.shouldIgnoreMouseEvent(event)) {\n return false;\n }\n if (this.element === eventTarget) {\n return true;\n }\n else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n return this.scope.containsElement(eventTarget);\n }\n else {\n return this.scope.containsElement(this.action.element);\n }\n }\n get controller() {\n return this.context.controller;\n }\n get methodName() {\n return this.action.methodName;\n }\n get element() {\n return this.scope.element;\n }\n get scope() {\n return this.context.scope;\n }\n}\n\nclass ElementObserver {\n constructor(element, delegate) {\n this.mutationObserverInit = { attributes: true, childList: true, subtree: true };\n this.element = element;\n this.started = false;\n this.delegate = delegate;\n this.elements = new Set();\n this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.refresh();\n }\n }\n pause(callback) {\n if (this.started) {\n this.mutationObserver.disconnect();\n this.started = false;\n }\n callback();\n if (!this.started) {\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n refresh() {\n if (this.started) {\n const matches = new Set(this.matchElementsInTree());\n for (const element of Array.from(this.elements)) {\n if (!matches.has(element)) {\n this.removeElement(element);\n }\n }\n for (const element of Array.from(matches)) {\n this.addElement(element);\n }\n }\n }\n processMutations(mutations) {\n if (this.started) {\n for (const mutation of mutations) {\n this.processMutation(mutation);\n }\n }\n }\n processMutation(mutation) {\n if (mutation.type == \"attributes\") {\n this.processAttributeChange(mutation.target, mutation.attributeName);\n }\n else if (mutation.type == \"childList\") {\n this.processRemovedNodes(mutation.removedNodes);\n this.processAddedNodes(mutation.addedNodes);\n }\n }\n processAttributeChange(element, attributeName) {\n if (this.elements.has(element)) {\n if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n this.delegate.elementAttributeChanged(element, attributeName);\n }\n else {\n this.removeElement(element);\n }\n }\n else if (this.matchElement(element)) {\n this.addElement(element);\n }\n }\n processRemovedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n if (element) {\n this.processTree(element, this.removeElement);\n }\n }\n }\n processAddedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n if (element && this.elementIsActive(element)) {\n this.processTree(element, this.addElement);\n }\n }\n }\n matchElement(element) {\n return this.delegate.matchElement(element);\n }\n matchElementsInTree(tree = this.element) {\n return this.delegate.matchElementsInTree(tree);\n }\n processTree(tree, processor) {\n for (const element of this.matchElementsInTree(tree)) {\n processor.call(this, element);\n }\n }\n elementFromNode(node) {\n if (node.nodeType == Node.ELEMENT_NODE) {\n return node;\n }\n }\n elementIsActive(element) {\n if (element.isConnected != this.element.isConnected) {\n return false;\n }\n else {\n return this.element.contains(element);\n }\n }\n addElement(element) {\n if (!this.elements.has(element)) {\n if (this.elementIsActive(element)) {\n this.elements.add(element);\n if (this.delegate.elementMatched) {\n this.delegate.elementMatched(element);\n }\n }\n }\n }\n removeElement(element) {\n if (this.elements.has(element)) {\n this.elements.delete(element);\n if (this.delegate.elementUnmatched) {\n this.delegate.elementUnmatched(element);\n }\n }\n }\n}\n\nclass AttributeObserver {\n constructor(element, attributeName, delegate) {\n this.attributeName = attributeName;\n this.delegate = delegate;\n this.elementObserver = new ElementObserver(element, this);\n }\n get element() {\n return this.elementObserver.element;\n }\n get selector() {\n return `[${this.attributeName}]`;\n }\n start() {\n this.elementObserver.start();\n }\n pause(callback) {\n this.elementObserver.pause(callback);\n }\n stop() {\n this.elementObserver.stop();\n }\n refresh() {\n this.elementObserver.refresh();\n }\n get started() {\n return this.elementObserver.started;\n }\n matchElement(element) {\n return element.hasAttribute(this.attributeName);\n }\n matchElementsInTree(tree) {\n const match = this.matchElement(tree) ? [tree] : [];\n const matches = Array.from(tree.querySelectorAll(this.selector));\n return match.concat(matches);\n }\n elementMatched(element) {\n if (this.delegate.elementMatchedAttribute) {\n this.delegate.elementMatchedAttribute(element, this.attributeName);\n }\n }\n elementUnmatched(element) {\n if (this.delegate.elementUnmatchedAttribute) {\n this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n }\n }\n elementAttributeChanged(element, attributeName) {\n if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n this.delegate.elementAttributeValueChanged(element, attributeName);\n }\n }\n}\n\nfunction add(map, key, value) {\n fetch(map, key).add(value);\n}\nfunction del(map, key, value) {\n fetch(map, key).delete(value);\n prune(map, key);\n}\nfunction fetch(map, key) {\n let values = map.get(key);\n if (!values) {\n values = new Set();\n map.set(key, values);\n }\n return values;\n}\nfunction prune(map, key) {\n const values = map.get(key);\n if (values != null && values.size == 0) {\n map.delete(key);\n }\n}\n\nclass Multimap {\n constructor() {\n this.valuesByKey = new Map();\n }\n get keys() {\n return Array.from(this.valuesByKey.keys());\n }\n get values() {\n const sets = Array.from(this.valuesByKey.values());\n return sets.reduce((values, set) => values.concat(Array.from(set)), []);\n }\n get size() {\n const sets = Array.from(this.valuesByKey.values());\n return sets.reduce((size, set) => size + set.size, 0);\n }\n add(key, value) {\n add(this.valuesByKey, key, value);\n }\n delete(key, value) {\n del(this.valuesByKey, key, value);\n }\n has(key, value) {\n const values = this.valuesByKey.get(key);\n return values != null && values.has(value);\n }\n hasKey(key) {\n return this.valuesByKey.has(key);\n }\n hasValue(value) {\n const sets = Array.from(this.valuesByKey.values());\n return sets.some((set) => set.has(value));\n }\n getValuesForKey(key) {\n const values = this.valuesByKey.get(key);\n return values ? Array.from(values) : [];\n }\n getKeysForValue(value) {\n return Array.from(this.valuesByKey)\n .filter(([_key, values]) => values.has(value))\n .map(([key, _values]) => key);\n }\n}\n\nclass IndexedMultimap extends Multimap {\n constructor() {\n super();\n this.keysByValue = new Map();\n }\n get values() {\n return Array.from(this.keysByValue.keys());\n }\n add(key, value) {\n super.add(key, value);\n add(this.keysByValue, value, key);\n }\n delete(key, value) {\n super.delete(key, value);\n del(this.keysByValue, value, key);\n }\n hasValue(value) {\n return this.keysByValue.has(value);\n }\n getKeysForValue(value) {\n const set = this.keysByValue.get(value);\n return set ? Array.from(set) : [];\n }\n}\n\nclass SelectorObserver {\n constructor(element, selector, delegate, details) {\n this._selector = selector;\n this.details = details;\n this.elementObserver = new ElementObserver(element, this);\n this.delegate = delegate;\n this.matchesByElement = new Multimap();\n }\n get started() {\n return this.elementObserver.started;\n }\n get selector() {\n return this._selector;\n }\n set selector(selector) {\n this._selector = selector;\n this.refresh();\n }\n start() {\n this.elementObserver.start();\n }\n pause(callback) {\n this.elementObserver.pause(callback);\n }\n stop() {\n this.elementObserver.stop();\n }\n refresh() {\n this.elementObserver.refresh();\n }\n get element() {\n return this.elementObserver.element;\n }\n matchElement(element) {\n const { selector } = this;\n if (selector) {\n const matches = element.matches(selector);\n if (this.delegate.selectorMatchElement) {\n return matches && this.delegate.selectorMatchElement(element, this.details);\n }\n return matches;\n }\n else {\n return false;\n }\n }\n matchElementsInTree(tree) {\n const { selector } = this;\n if (selector) {\n const match = this.matchElement(tree) ? [tree] : [];\n const matches = Array.from(tree.querySelectorAll(selector)).filter((match) => this.matchElement(match));\n return match.concat(matches);\n }\n else {\n return [];\n }\n }\n elementMatched(element) {\n const { selector } = this;\n if (selector) {\n this.selectorMatched(element, selector);\n }\n }\n elementUnmatched(element) {\n const selectors = this.matchesByElement.getKeysForValue(element);\n for (const selector of selectors) {\n this.selectorUnmatched(element, selector);\n }\n }\n elementAttributeChanged(element, _attributeName) {\n const { selector } = this;\n if (selector) {\n const matches = this.matchElement(element);\n const matchedBefore = this.matchesByElement.has(selector, element);\n if (matches && !matchedBefore) {\n this.selectorMatched(element, selector);\n }\n else if (!matches && matchedBefore) {\n this.selectorUnmatched(element, selector);\n }\n }\n }\n selectorMatched(element, selector) {\n this.delegate.selectorMatched(element, selector, this.details);\n this.matchesByElement.add(selector, element);\n }\n selectorUnmatched(element, selector) {\n this.delegate.selectorUnmatched(element, selector, this.details);\n this.matchesByElement.delete(selector, element);\n }\n}\n\nclass StringMapObserver {\n constructor(element, delegate) {\n this.element = element;\n this.delegate = delegate;\n this.started = false;\n this.stringMap = new Map();\n this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, { attributes: true, attributeOldValue: true });\n this.refresh();\n }\n }\n stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n refresh() {\n if (this.started) {\n for (const attributeName of this.knownAttributeNames) {\n this.refreshAttribute(attributeName, null);\n }\n }\n }\n processMutations(mutations) {\n if (this.started) {\n for (const mutation of mutations) {\n this.processMutation(mutation);\n }\n }\n }\n processMutation(mutation) {\n const attributeName = mutation.attributeName;\n if (attributeName) {\n this.refreshAttribute(attributeName, mutation.oldValue);\n }\n }\n refreshAttribute(attributeName, oldValue) {\n const key = this.delegate.getStringMapKeyForAttribute(attributeName);\n if (key != null) {\n if (!this.stringMap.has(attributeName)) {\n this.stringMapKeyAdded(key, attributeName);\n }\n const value = this.element.getAttribute(attributeName);\n if (this.stringMap.get(attributeName) != value) {\n this.stringMapValueChanged(value, key, oldValue);\n }\n if (value == null) {\n const oldValue = this.stringMap.get(attributeName);\n this.stringMap.delete(attributeName);\n if (oldValue)\n this.stringMapKeyRemoved(key, attributeName, oldValue);\n }\n else {\n this.stringMap.set(attributeName, value);\n }\n }\n }\n stringMapKeyAdded(key, attributeName) {\n if (this.delegate.stringMapKeyAdded) {\n this.delegate.stringMapKeyAdded(key, attributeName);\n }\n }\n stringMapValueChanged(value, key, oldValue) {\n if (this.delegate.stringMapValueChanged) {\n this.delegate.stringMapValueChanged(value, key, oldValue);\n }\n }\n stringMapKeyRemoved(key, attributeName, oldValue) {\n if (this.delegate.stringMapKeyRemoved) {\n this.delegate.stringMapKeyRemoved(key, attributeName, oldValue);\n }\n }\n get knownAttributeNames() {\n return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)));\n }\n get currentAttributeNames() {\n return Array.from(this.element.attributes).map((attribute) => attribute.name);\n }\n get recordedAttributeNames() {\n return Array.from(this.stringMap.keys());\n }\n}\n\nclass TokenListObserver {\n constructor(element, attributeName, delegate) {\n this.attributeObserver = new AttributeObserver(element, attributeName, this);\n this.delegate = delegate;\n this.tokensByElement = new Multimap();\n }\n get started() {\n return this.attributeObserver.started;\n }\n start() {\n this.attributeObserver.start();\n }\n pause(callback) {\n this.attributeObserver.pause(callback);\n }\n stop() {\n this.attributeObserver.stop();\n }\n refresh() {\n this.attributeObserver.refresh();\n }\n get element() {\n return this.attributeObserver.element;\n }\n get attributeName() {\n return this.attributeObserver.attributeName;\n }\n elementMatchedAttribute(element) {\n this.tokensMatched(this.readTokensForElement(element));\n }\n elementAttributeValueChanged(element) {\n const [unmatchedTokens, matchedTokens] = this.refreshTokensForElement(element);\n this.tokensUnmatched(unmatchedTokens);\n this.tokensMatched(matchedTokens);\n }\n elementUnmatchedAttribute(element) {\n this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n }\n tokensMatched(tokens) {\n tokens.forEach((token) => this.tokenMatched(token));\n }\n tokensUnmatched(tokens) {\n tokens.forEach((token) => this.tokenUnmatched(token));\n }\n tokenMatched(token) {\n this.delegate.tokenMatched(token);\n this.tokensByElement.add(token.element, token);\n }\n tokenUnmatched(token) {\n this.delegate.tokenUnmatched(token);\n this.tokensByElement.delete(token.element, token);\n }\n refreshTokensForElement(element) {\n const previousTokens = this.tokensByElement.getValuesForKey(element);\n const currentTokens = this.readTokensForElement(element);\n const firstDifferingIndex = zip(previousTokens, currentTokens).findIndex(([previousToken, currentToken]) => !tokensAreEqual(previousToken, currentToken));\n if (firstDifferingIndex == -1) {\n return [[], []];\n }\n else {\n return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n }\n }\n readTokensForElement(element) {\n const attributeName = this.attributeName;\n const tokenString = element.getAttribute(attributeName) || \"\";\n return parseTokenString(tokenString, element, attributeName);\n }\n}\nfunction parseTokenString(tokenString, element, attributeName) {\n return tokenString\n .trim()\n .split(/\\s+/)\n .filter((content) => content.length)\n .map((content, index) => ({ element, attributeName, content, index }));\n}\nfunction zip(left, right) {\n const length = Math.max(left.length, right.length);\n return Array.from({ length }, (_, index) => [left[index], right[index]]);\n}\nfunction tokensAreEqual(left, right) {\n return left && right && left.index == right.index && left.content == right.content;\n}\n\nclass ValueListObserver {\n constructor(element, attributeName, delegate) {\n this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n this.delegate = delegate;\n this.parseResultsByToken = new WeakMap();\n this.valuesByTokenByElement = new WeakMap();\n }\n get started() {\n return this.tokenListObserver.started;\n }\n start() {\n this.tokenListObserver.start();\n }\n stop() {\n this.tokenListObserver.stop();\n }\n refresh() {\n this.tokenListObserver.refresh();\n }\n get element() {\n return this.tokenListObserver.element;\n }\n get attributeName() {\n return this.tokenListObserver.attributeName;\n }\n tokenMatched(token) {\n const { element } = token;\n const { value } = this.fetchParseResultForToken(token);\n if (value) {\n this.fetchValuesByTokenForElement(element).set(token, value);\n this.delegate.elementMatchedValue(element, value);\n }\n }\n tokenUnmatched(token) {\n const { element } = token;\n const { value } = this.fetchParseResultForToken(token);\n if (value) {\n this.fetchValuesByTokenForElement(element).delete(token);\n this.delegate.elementUnmatchedValue(element, value);\n }\n }\n fetchParseResultForToken(token) {\n let parseResult = this.parseResultsByToken.get(token);\n if (!parseResult) {\n parseResult = this.parseToken(token);\n this.parseResultsByToken.set(token, parseResult);\n }\n return parseResult;\n }\n fetchValuesByTokenForElement(element) {\n let valuesByToken = this.valuesByTokenByElement.get(element);\n if (!valuesByToken) {\n valuesByToken = new Map();\n this.valuesByTokenByElement.set(element, valuesByToken);\n }\n return valuesByToken;\n }\n parseToken(token) {\n try {\n const value = this.delegate.parseValueForToken(token);\n return { value };\n }\n catch (error) {\n return { error };\n }\n }\n}\n\nclass BindingObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.bindingsByAction = new Map();\n }\n start() {\n if (!this.valueListObserver) {\n this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n this.valueListObserver.start();\n }\n }\n stop() {\n if (this.valueListObserver) {\n this.valueListObserver.stop();\n delete this.valueListObserver;\n this.disconnectAllActions();\n }\n }\n get element() {\n return this.context.element;\n }\n get identifier() {\n return this.context.identifier;\n }\n get actionAttribute() {\n return this.schema.actionAttribute;\n }\n get schema() {\n return this.context.schema;\n }\n get bindings() {\n return Array.from(this.bindingsByAction.values());\n }\n connectAction(action) {\n const binding = new Binding(this.context, action);\n this.bindingsByAction.set(action, binding);\n this.delegate.bindingConnected(binding);\n }\n disconnectAction(action) {\n const binding = this.bindingsByAction.get(action);\n if (binding) {\n this.bindingsByAction.delete(action);\n this.delegate.bindingDisconnected(binding);\n }\n }\n disconnectAllActions() {\n this.bindings.forEach((binding) => this.delegate.bindingDisconnected(binding, true));\n this.bindingsByAction.clear();\n }\n parseValueForToken(token) {\n const action = Action.forToken(token, this.schema);\n if (action.identifier == this.identifier) {\n return action;\n }\n }\n elementMatchedValue(element, action) {\n this.connectAction(action);\n }\n elementUnmatchedValue(element, action) {\n this.disconnectAction(action);\n }\n}\n\nclass ValueObserver {\n constructor(context, receiver) {\n this.context = context;\n this.receiver = receiver;\n this.stringMapObserver = new StringMapObserver(this.element, this);\n this.valueDescriptorMap = this.controller.valueDescriptorMap;\n }\n start() {\n this.stringMapObserver.start();\n this.invokeChangedCallbacksForDefaultValues();\n }\n stop() {\n this.stringMapObserver.stop();\n }\n get element() {\n return this.context.element;\n }\n get controller() {\n return this.context.controller;\n }\n getStringMapKeyForAttribute(attributeName) {\n if (attributeName in this.valueDescriptorMap) {\n return this.valueDescriptorMap[attributeName].name;\n }\n }\n stringMapKeyAdded(key, attributeName) {\n const descriptor = this.valueDescriptorMap[attributeName];\n if (!this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), descriptor.writer(descriptor.defaultValue));\n }\n }\n stringMapValueChanged(value, name, oldValue) {\n const descriptor = this.valueDescriptorNameMap[name];\n if (value === null)\n return;\n if (oldValue === null) {\n oldValue = descriptor.writer(descriptor.defaultValue);\n }\n this.invokeChangedCallback(name, value, oldValue);\n }\n stringMapKeyRemoved(key, attributeName, oldValue) {\n const descriptor = this.valueDescriptorNameMap[key];\n if (this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), oldValue);\n }\n else {\n this.invokeChangedCallback(key, descriptor.writer(descriptor.defaultValue), oldValue);\n }\n }\n invokeChangedCallbacksForDefaultValues() {\n for (const { key, name, defaultValue, writer } of this.valueDescriptors) {\n if (defaultValue != undefined && !this.controller.data.has(key)) {\n this.invokeChangedCallback(name, writer(defaultValue), undefined);\n }\n }\n }\n invokeChangedCallback(name, rawValue, rawOldValue) {\n const changedMethodName = `${name}Changed`;\n const changedMethod = this.receiver[changedMethodName];\n if (typeof changedMethod == \"function\") {\n const descriptor = this.valueDescriptorNameMap[name];\n try {\n const value = descriptor.reader(rawValue);\n let oldValue = rawOldValue;\n if (rawOldValue) {\n oldValue = descriptor.reader(rawOldValue);\n }\n changedMethod.call(this.receiver, value, oldValue);\n }\n catch (error) {\n if (error instanceof TypeError) {\n error.message = `Stimulus Value \"${this.context.identifier}.${descriptor.name}\" - ${error.message}`;\n }\n throw error;\n }\n }\n }\n get valueDescriptors() {\n const { valueDescriptorMap } = this;\n return Object.keys(valueDescriptorMap).map((key) => valueDescriptorMap[key]);\n }\n get valueDescriptorNameMap() {\n const descriptors = {};\n Object.keys(this.valueDescriptorMap).forEach((key) => {\n const descriptor = this.valueDescriptorMap[key];\n descriptors[descriptor.name] = descriptor;\n });\n return descriptors;\n }\n hasValue(attributeName) {\n const descriptor = this.valueDescriptorNameMap[attributeName];\n const hasMethodName = `has${capitalize(descriptor.name)}`;\n return this.receiver[hasMethodName];\n }\n}\n\nclass TargetObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.targetsByName = new Multimap();\n }\n start() {\n if (!this.tokenListObserver) {\n this.tokenListObserver = new TokenListObserver(this.element, this.attributeName, this);\n this.tokenListObserver.start();\n }\n }\n stop() {\n if (this.tokenListObserver) {\n this.disconnectAllTargets();\n this.tokenListObserver.stop();\n delete this.tokenListObserver;\n }\n }\n tokenMatched({ element, content: name }) {\n if (this.scope.containsElement(element)) {\n this.connectTarget(element, name);\n }\n }\n tokenUnmatched({ element, content: name }) {\n this.disconnectTarget(element, name);\n }\n connectTarget(element, name) {\n var _a;\n if (!this.targetsByName.has(name, element)) {\n this.targetsByName.add(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetConnected(element, name));\n }\n }\n disconnectTarget(element, name) {\n var _a;\n if (this.targetsByName.has(name, element)) {\n this.targetsByName.delete(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetDisconnected(element, name));\n }\n }\n disconnectAllTargets() {\n for (const name of this.targetsByName.keys) {\n for (const element of this.targetsByName.getValuesForKey(name)) {\n this.disconnectTarget(element, name);\n }\n }\n }\n get attributeName() {\n return `data-${this.context.identifier}-target`;\n }\n get element() {\n return this.context.element;\n }\n get scope() {\n return this.context.scope;\n }\n}\n\nfunction readInheritableStaticArrayValues(constructor, propertyName) {\n const ancestors = getAncestorsForConstructor(constructor);\n return Array.from(ancestors.reduce((values, constructor) => {\n getOwnStaticArrayValues(constructor, propertyName).forEach((name) => values.add(name));\n return values;\n }, new Set()));\n}\nfunction readInheritableStaticObjectPairs(constructor, propertyName) {\n const ancestors = getAncestorsForConstructor(constructor);\n return ancestors.reduce((pairs, constructor) => {\n pairs.push(...getOwnStaticObjectPairs(constructor, propertyName));\n return pairs;\n }, []);\n}\nfunction getAncestorsForConstructor(constructor) {\n const ancestors = [];\n while (constructor) {\n ancestors.push(constructor);\n constructor = Object.getPrototypeOf(constructor);\n }\n return ancestors.reverse();\n}\nfunction getOwnStaticArrayValues(constructor, propertyName) {\n const definition = constructor[propertyName];\n return Array.isArray(definition) ? definition : [];\n}\nfunction getOwnStaticObjectPairs(constructor, propertyName) {\n const definition = constructor[propertyName];\n return definition ? Object.keys(definition).map((key) => [key, definition[key]]) : [];\n}\n\nclass OutletObserver {\n constructor(context, delegate) {\n this.started = false;\n this.context = context;\n this.delegate = delegate;\n this.outletsByName = new Multimap();\n this.outletElementsByName = new Multimap();\n this.selectorObserverMap = new Map();\n this.attributeObserverMap = new Map();\n }\n start() {\n if (!this.started) {\n this.outletDefinitions.forEach((outletName) => {\n this.setupSelectorObserverForOutlet(outletName);\n this.setupAttributeObserverForOutlet(outletName);\n });\n this.started = true;\n this.dependentContexts.forEach((context) => context.refresh());\n }\n }\n refresh() {\n this.selectorObserverMap.forEach((observer) => observer.refresh());\n this.attributeObserverMap.forEach((observer) => observer.refresh());\n }\n stop() {\n if (this.started) {\n this.started = false;\n this.disconnectAllOutlets();\n this.stopSelectorObservers();\n this.stopAttributeObservers();\n }\n }\n stopSelectorObservers() {\n if (this.selectorObserverMap.size > 0) {\n this.selectorObserverMap.forEach((observer) => observer.stop());\n this.selectorObserverMap.clear();\n }\n }\n stopAttributeObservers() {\n if (this.attributeObserverMap.size > 0) {\n this.attributeObserverMap.forEach((observer) => observer.stop());\n this.attributeObserverMap.clear();\n }\n }\n selectorMatched(element, _selector, { outletName }) {\n const outlet = this.getOutlet(element, outletName);\n if (outlet) {\n this.connectOutlet(outlet, element, outletName);\n }\n }\n selectorUnmatched(element, _selector, { outletName }) {\n const outlet = this.getOutletFromMap(element, outletName);\n if (outlet) {\n this.disconnectOutlet(outlet, element, outletName);\n }\n }\n selectorMatchElement(element, { outletName }) {\n const selector = this.selector(outletName);\n const hasOutlet = this.hasOutlet(element, outletName);\n const hasOutletController = element.matches(`[${this.schema.controllerAttribute}~=${outletName}]`);\n if (selector) {\n return hasOutlet && hasOutletController && element.matches(selector);\n }\n else {\n return false;\n }\n }\n elementMatchedAttribute(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n elementAttributeValueChanged(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n elementUnmatchedAttribute(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n connectOutlet(outlet, element, outletName) {\n var _a;\n if (!this.outletElementsByName.has(outletName, element)) {\n this.outletsByName.add(outletName, outlet);\n this.outletElementsByName.add(outletName, element);\n (_a = this.selectorObserverMap.get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletConnected(outlet, element, outletName));\n }\n }\n disconnectOutlet(outlet, element, outletName) {\n var _a;\n if (this.outletElementsByName.has(outletName, element)) {\n this.outletsByName.delete(outletName, outlet);\n this.outletElementsByName.delete(outletName, element);\n (_a = this.selectorObserverMap\n .get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletDisconnected(outlet, element, outletName));\n }\n }\n disconnectAllOutlets() {\n for (const outletName of this.outletElementsByName.keys) {\n for (const element of this.outletElementsByName.getValuesForKey(outletName)) {\n for (const outlet of this.outletsByName.getValuesForKey(outletName)) {\n this.disconnectOutlet(outlet, element, outletName);\n }\n }\n }\n }\n updateSelectorObserverForOutlet(outletName) {\n const observer = this.selectorObserverMap.get(outletName);\n if (observer) {\n observer.selector = this.selector(outletName);\n }\n }\n setupSelectorObserverForOutlet(outletName) {\n const selector = this.selector(outletName);\n const selectorObserver = new SelectorObserver(document.body, selector, this, { outletName });\n this.selectorObserverMap.set(outletName, selectorObserver);\n selectorObserver.start();\n }\n setupAttributeObserverForOutlet(outletName) {\n const attributeName = this.attributeNameForOutletName(outletName);\n const attributeObserver = new AttributeObserver(this.scope.element, attributeName, this);\n this.attributeObserverMap.set(outletName, attributeObserver);\n attributeObserver.start();\n }\n selector(outletName) {\n return this.scope.outlets.getSelectorForOutletName(outletName);\n }\n attributeNameForOutletName(outletName) {\n return this.scope.schema.outletAttributeForScope(this.identifier, outletName);\n }\n getOutletNameFromOutletAttributeName(attributeName) {\n return this.outletDefinitions.find((outletName) => this.attributeNameForOutletName(outletName) === attributeName);\n }\n get outletDependencies() {\n const dependencies = new Multimap();\n this.router.modules.forEach((module) => {\n const constructor = module.definition.controllerConstructor;\n const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n outlets.forEach((outlet) => dependencies.add(outlet, module.identifier));\n });\n return dependencies;\n }\n get outletDefinitions() {\n return this.outletDependencies.getKeysForValue(this.identifier);\n }\n get dependentControllerIdentifiers() {\n return this.outletDependencies.getValuesForKey(this.identifier);\n }\n get dependentContexts() {\n const identifiers = this.dependentControllerIdentifiers;\n return this.router.contexts.filter((context) => identifiers.includes(context.identifier));\n }\n hasOutlet(element, outletName) {\n return !!this.getOutlet(element, outletName) || !!this.getOutletFromMap(element, outletName);\n }\n getOutlet(element, outletName) {\n return this.application.getControllerForElementAndIdentifier(element, outletName);\n }\n getOutletFromMap(element, outletName) {\n return this.outletsByName.getValuesForKey(outletName).find((outlet) => outlet.element === element);\n }\n get scope() {\n return this.context.scope;\n }\n get schema() {\n return this.context.schema;\n }\n get identifier() {\n return this.context.identifier;\n }\n get application() {\n return this.context.application;\n }\n get router() {\n return this.application.router;\n }\n}\n\nclass Context {\n constructor(module, scope) {\n this.logDebugActivity = (functionName, detail = {}) => {\n const { identifier, controller, element } = this;\n detail = Object.assign({ identifier, controller, element }, detail);\n this.application.logDebugActivity(this.identifier, functionName, detail);\n };\n this.module = module;\n this.scope = scope;\n this.controller = new module.controllerConstructor(this);\n this.bindingObserver = new BindingObserver(this, this.dispatcher);\n this.valueObserver = new ValueObserver(this, this.controller);\n this.targetObserver = new TargetObserver(this, this);\n this.outletObserver = new OutletObserver(this, this);\n try {\n this.controller.initialize();\n this.logDebugActivity(\"initialize\");\n }\n catch (error) {\n this.handleError(error, \"initializing controller\");\n }\n }\n connect() {\n this.bindingObserver.start();\n this.valueObserver.start();\n this.targetObserver.start();\n this.outletObserver.start();\n try {\n this.controller.connect();\n this.logDebugActivity(\"connect\");\n }\n catch (error) {\n this.handleError(error, \"connecting controller\");\n }\n }\n refresh() {\n this.outletObserver.refresh();\n }\n disconnect() {\n try {\n this.controller.disconnect();\n this.logDebugActivity(\"disconnect\");\n }\n catch (error) {\n this.handleError(error, \"disconnecting controller\");\n }\n this.outletObserver.stop();\n this.targetObserver.stop();\n this.valueObserver.stop();\n this.bindingObserver.stop();\n }\n get application() {\n return this.module.application;\n }\n get identifier() {\n return this.module.identifier;\n }\n get schema() {\n return this.application.schema;\n }\n get dispatcher() {\n return this.application.dispatcher;\n }\n get element() {\n return this.scope.element;\n }\n get parentElement() {\n return this.element.parentElement;\n }\n handleError(error, message, detail = {}) {\n const { identifier, controller, element } = this;\n detail = Object.assign({ identifier, controller, element }, detail);\n this.application.handleError(error, `Error ${message}`, detail);\n }\n targetConnected(element, name) {\n this.invokeControllerMethod(`${name}TargetConnected`, element);\n }\n targetDisconnected(element, name) {\n this.invokeControllerMethod(`${name}TargetDisconnected`, element);\n }\n outletConnected(outlet, element, name) {\n this.invokeControllerMethod(`${namespaceCamelize(name)}OutletConnected`, outlet, element);\n }\n outletDisconnected(outlet, element, name) {\n this.invokeControllerMethod(`${namespaceCamelize(name)}OutletDisconnected`, outlet, element);\n }\n invokeControllerMethod(methodName, ...args) {\n const controller = this.controller;\n if (typeof controller[methodName] == \"function\") {\n controller[methodName](...args);\n }\n }\n}\n\nfunction bless(constructor) {\n return shadow(constructor, getBlessedProperties(constructor));\n}\nfunction shadow(constructor, properties) {\n const shadowConstructor = extend(constructor);\n const shadowProperties = getShadowProperties(constructor.prototype, properties);\n Object.defineProperties(shadowConstructor.prototype, shadowProperties);\n return shadowConstructor;\n}\nfunction getBlessedProperties(constructor) {\n const blessings = readInheritableStaticArrayValues(constructor, \"blessings\");\n return blessings.reduce((blessedProperties, blessing) => {\n const properties = blessing(constructor);\n for (const key in properties) {\n const descriptor = blessedProperties[key] || {};\n blessedProperties[key] = Object.assign(descriptor, properties[key]);\n }\n return blessedProperties;\n }, {});\n}\nfunction getShadowProperties(prototype, properties) {\n return getOwnKeys(properties).reduce((shadowProperties, key) => {\n const descriptor = getShadowedDescriptor(prototype, properties, key);\n if (descriptor) {\n Object.assign(shadowProperties, { [key]: descriptor });\n }\n return shadowProperties;\n }, {});\n}\nfunction getShadowedDescriptor(prototype, properties, key) {\n const shadowingDescriptor = Object.getOwnPropertyDescriptor(prototype, key);\n const shadowedByValue = shadowingDescriptor && \"value\" in shadowingDescriptor;\n if (!shadowedByValue) {\n const descriptor = Object.getOwnPropertyDescriptor(properties, key).value;\n if (shadowingDescriptor) {\n descriptor.get = shadowingDescriptor.get || descriptor.get;\n descriptor.set = shadowingDescriptor.set || descriptor.set;\n }\n return descriptor;\n }\n}\nconst getOwnKeys = (() => {\n if (typeof Object.getOwnPropertySymbols == \"function\") {\n return (object) => [...Object.getOwnPropertyNames(object), ...Object.getOwnPropertySymbols(object)];\n }\n else {\n return Object.getOwnPropertyNames;\n }\n})();\nconst extend = (() => {\n function extendWithReflect(constructor) {\n function extended() {\n return Reflect.construct(constructor, arguments, new.target);\n }\n extended.prototype = Object.create(constructor.prototype, {\n constructor: { value: extended },\n });\n Reflect.setPrototypeOf(extended, constructor);\n return extended;\n }\n function testReflectExtension() {\n const a = function () {\n this.a.call(this);\n };\n const b = extendWithReflect(a);\n b.prototype.a = function () { };\n return new b();\n }\n try {\n testReflectExtension();\n return extendWithReflect;\n }\n catch (error) {\n return (constructor) => class extended extends constructor {\n };\n }\n})();\n\nfunction blessDefinition(definition) {\n return {\n identifier: definition.identifier,\n controllerConstructor: bless(definition.controllerConstructor),\n };\n}\n\nclass Module {\n constructor(application, definition) {\n this.application = application;\n this.definition = blessDefinition(definition);\n this.contextsByScope = new WeakMap();\n this.connectedContexts = new Set();\n }\n get identifier() {\n return this.definition.identifier;\n }\n get controllerConstructor() {\n return this.definition.controllerConstructor;\n }\n get contexts() {\n return Array.from(this.connectedContexts);\n }\n connectContextForScope(scope) {\n const context = this.fetchContextForScope(scope);\n this.connectedContexts.add(context);\n context.connect();\n }\n disconnectContextForScope(scope) {\n const context = this.contextsByScope.get(scope);\n if (context) {\n this.connectedContexts.delete(context);\n context.disconnect();\n }\n }\n fetchContextForScope(scope) {\n let context = this.contextsByScope.get(scope);\n if (!context) {\n context = new Context(this, scope);\n this.contextsByScope.set(scope, context);\n }\n return context;\n }\n}\n\nclass ClassMap {\n constructor(scope) {\n this.scope = scope;\n }\n has(name) {\n return this.data.has(this.getDataKey(name));\n }\n get(name) {\n return this.getAll(name)[0];\n }\n getAll(name) {\n const tokenString = this.data.get(this.getDataKey(name)) || \"\";\n return tokenize(tokenString);\n }\n getAttributeName(name) {\n return this.data.getAttributeNameForKey(this.getDataKey(name));\n }\n getDataKey(name) {\n return `${name}-class`;\n }\n get data() {\n return this.scope.data;\n }\n}\n\nclass DataMap {\n constructor(scope) {\n this.scope = scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get(key) {\n const name = this.getAttributeNameForKey(key);\n return this.element.getAttribute(name);\n }\n set(key, value) {\n const name = this.getAttributeNameForKey(key);\n this.element.setAttribute(name, value);\n return this.get(key);\n }\n has(key) {\n const name = this.getAttributeNameForKey(key);\n return this.element.hasAttribute(name);\n }\n delete(key) {\n if (this.has(key)) {\n const name = this.getAttributeNameForKey(key);\n this.element.removeAttribute(name);\n return true;\n }\n else {\n return false;\n }\n }\n getAttributeNameForKey(key) {\n return `data-${this.identifier}-${dasherize(key)}`;\n }\n}\n\nclass Guide {\n constructor(logger) {\n this.warnedKeysByObject = new WeakMap();\n this.logger = logger;\n }\n warn(object, key, message) {\n let warnedKeys = this.warnedKeysByObject.get(object);\n if (!warnedKeys) {\n warnedKeys = new Set();\n this.warnedKeysByObject.set(object, warnedKeys);\n }\n if (!warnedKeys.has(key)) {\n warnedKeys.add(key);\n this.logger.warn(message, object);\n }\n }\n}\n\nfunction attributeValueContainsToken(attributeName, token) {\n return `[${attributeName}~=\"${token}\"]`;\n}\n\nclass TargetSet {\n constructor(scope) {\n this.scope = scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get schema() {\n return this.scope.schema;\n }\n has(targetName) {\n return this.find(targetName) != null;\n }\n find(...targetNames) {\n return targetNames.reduce((target, targetName) => target || this.findTarget(targetName) || this.findLegacyTarget(targetName), undefined);\n }\n findAll(...targetNames) {\n return targetNames.reduce((targets, targetName) => [\n ...targets,\n ...this.findAllTargets(targetName),\n ...this.findAllLegacyTargets(targetName),\n ], []);\n }\n findTarget(targetName) {\n const selector = this.getSelectorForTargetName(targetName);\n return this.scope.findElement(selector);\n }\n findAllTargets(targetName) {\n const selector = this.getSelectorForTargetName(targetName);\n return this.scope.findAllElements(selector);\n }\n getSelectorForTargetName(targetName) {\n const attributeName = this.schema.targetAttributeForScope(this.identifier);\n return attributeValueContainsToken(attributeName, targetName);\n }\n findLegacyTarget(targetName) {\n const selector = this.getLegacySelectorForTargetName(targetName);\n return this.deprecate(this.scope.findElement(selector), targetName);\n }\n findAllLegacyTargets(targetName) {\n const selector = this.getLegacySelectorForTargetName(targetName);\n return this.scope.findAllElements(selector).map((element) => this.deprecate(element, targetName));\n }\n getLegacySelectorForTargetName(targetName) {\n const targetDescriptor = `${this.identifier}.${targetName}`;\n return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n }\n deprecate(element, targetName) {\n if (element) {\n const { identifier } = this;\n const attributeName = this.schema.targetAttribute;\n const revisedAttributeName = this.schema.targetAttributeForScope(identifier);\n this.guide.warn(element, `target:${targetName}`, `Please replace ${attributeName}=\"${identifier}.${targetName}\" with ${revisedAttributeName}=\"${targetName}\". ` +\n `The ${attributeName} attribute is deprecated and will be removed in a future version of Stimulus.`);\n }\n return element;\n }\n get guide() {\n return this.scope.guide;\n }\n}\n\nclass OutletSet {\n constructor(scope, controllerElement) {\n this.scope = scope;\n this.controllerElement = controllerElement;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get schema() {\n return this.scope.schema;\n }\n has(outletName) {\n return this.find(outletName) != null;\n }\n find(...outletNames) {\n return outletNames.reduce((outlet, outletName) => outlet || this.findOutlet(outletName), undefined);\n }\n findAll(...outletNames) {\n return outletNames.reduce((outlets, outletName) => [...outlets, ...this.findAllOutlets(outletName)], []);\n }\n getSelectorForOutletName(outletName) {\n const attributeName = this.schema.outletAttributeForScope(this.identifier, outletName);\n return this.controllerElement.getAttribute(attributeName);\n }\n findOutlet(outletName) {\n const selector = this.getSelectorForOutletName(outletName);\n if (selector)\n return this.findElement(selector, outletName);\n }\n findAllOutlets(outletName) {\n const selector = this.getSelectorForOutletName(outletName);\n return selector ? this.findAllElements(selector, outletName) : [];\n }\n findElement(selector, outletName) {\n const elements = this.scope.queryElements(selector);\n return elements.filter((element) => this.matchesElement(element, selector, outletName))[0];\n }\n findAllElements(selector, outletName) {\n const elements = this.scope.queryElements(selector);\n return elements.filter((element) => this.matchesElement(element, selector, outletName));\n }\n matchesElement(element, selector, outletName) {\n const controllerAttribute = element.getAttribute(this.scope.schema.controllerAttribute) || \"\";\n return element.matches(selector) && controllerAttribute.split(\" \").includes(outletName);\n }\n}\n\nclass Scope {\n constructor(schema, element, identifier, logger) {\n this.targets = new TargetSet(this);\n this.classes = new ClassMap(this);\n this.data = new DataMap(this);\n this.containsElement = (element) => {\n return element.closest(this.controllerSelector) === this.element;\n };\n this.schema = schema;\n this.element = element;\n this.identifier = identifier;\n this.guide = new Guide(logger);\n this.outlets = new OutletSet(this.documentScope, element);\n }\n findElement(selector) {\n return this.element.matches(selector) ? this.element : this.queryElements(selector).find(this.containsElement);\n }\n findAllElements(selector) {\n return [\n ...(this.element.matches(selector) ? [this.element] : []),\n ...this.queryElements(selector).filter(this.containsElement),\n ];\n }\n queryElements(selector) {\n return Array.from(this.element.querySelectorAll(selector));\n }\n get controllerSelector() {\n return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n }\n get isDocumentScope() {\n return this.element === document.documentElement;\n }\n get documentScope() {\n return this.isDocumentScope\n ? this\n : new Scope(this.schema, document.documentElement, this.identifier, this.guide.logger);\n }\n}\n\nclass ScopeObserver {\n constructor(element, schema, delegate) {\n this.element = element;\n this.schema = schema;\n this.delegate = delegate;\n this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n this.scopesByIdentifierByElement = new WeakMap();\n this.scopeReferenceCounts = new WeakMap();\n }\n start() {\n this.valueListObserver.start();\n }\n stop() {\n this.valueListObserver.stop();\n }\n get controllerAttribute() {\n return this.schema.controllerAttribute;\n }\n parseValueForToken(token) {\n const { element, content: identifier } = token;\n return this.parseValueForElementAndIdentifier(element, identifier);\n }\n parseValueForElementAndIdentifier(element, identifier) {\n const scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n let scope = scopesByIdentifier.get(identifier);\n if (!scope) {\n scope = this.delegate.createScopeForElementAndIdentifier(element, identifier);\n scopesByIdentifier.set(identifier, scope);\n }\n return scope;\n }\n elementMatchedValue(element, value) {\n const referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n this.scopeReferenceCounts.set(value, referenceCount);\n if (referenceCount == 1) {\n this.delegate.scopeConnected(value);\n }\n }\n elementUnmatchedValue(element, value) {\n const referenceCount = this.scopeReferenceCounts.get(value);\n if (referenceCount) {\n this.scopeReferenceCounts.set(value, referenceCount - 1);\n if (referenceCount == 1) {\n this.delegate.scopeDisconnected(value);\n }\n }\n }\n fetchScopesByIdentifierForElement(element) {\n let scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n if (!scopesByIdentifier) {\n scopesByIdentifier = new Map();\n this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n }\n return scopesByIdentifier;\n }\n}\n\nclass Router {\n constructor(application) {\n this.application = application;\n this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n this.scopesByIdentifier = new Multimap();\n this.modulesByIdentifier = new Map();\n }\n get element() {\n return this.application.element;\n }\n get schema() {\n return this.application.schema;\n }\n get logger() {\n return this.application.logger;\n }\n get controllerAttribute() {\n return this.schema.controllerAttribute;\n }\n get modules() {\n return Array.from(this.modulesByIdentifier.values());\n }\n get contexts() {\n return this.modules.reduce((contexts, module) => contexts.concat(module.contexts), []);\n }\n start() {\n this.scopeObserver.start();\n }\n stop() {\n this.scopeObserver.stop();\n }\n loadDefinition(definition) {\n this.unloadIdentifier(definition.identifier);\n const module = new Module(this.application, definition);\n this.connectModule(module);\n const afterLoad = definition.controllerConstructor.afterLoad;\n if (afterLoad) {\n afterLoad.call(definition.controllerConstructor, definition.identifier, this.application);\n }\n }\n unloadIdentifier(identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n if (module) {\n this.disconnectModule(module);\n }\n }\n getContextForElementAndIdentifier(element, identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n if (module) {\n return module.contexts.find((context) => context.element == element);\n }\n }\n proposeToConnectScopeForElementAndIdentifier(element, identifier) {\n const scope = this.scopeObserver.parseValueForElementAndIdentifier(element, identifier);\n if (scope) {\n this.scopeObserver.elementMatchedValue(scope.element, scope);\n }\n else {\n console.error(`Couldn't find or create scope for identifier: \"${identifier}\" and element:`, element);\n }\n }\n handleError(error, message, detail) {\n this.application.handleError(error, message, detail);\n }\n createScopeForElementAndIdentifier(element, identifier) {\n return new Scope(this.schema, element, identifier, this.logger);\n }\n scopeConnected(scope) {\n this.scopesByIdentifier.add(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.connectContextForScope(scope);\n }\n }\n scopeDisconnected(scope) {\n this.scopesByIdentifier.delete(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.disconnectContextForScope(scope);\n }\n }\n connectModule(module) {\n this.modulesByIdentifier.set(module.identifier, module);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach((scope) => module.connectContextForScope(scope));\n }\n disconnectModule(module) {\n this.modulesByIdentifier.delete(module.identifier);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach((scope) => module.disconnectContextForScope(scope));\n }\n}\n\nconst defaultSchema = {\n controllerAttribute: \"data-controller\",\n actionAttribute: \"data-action\",\n targetAttribute: \"data-target\",\n targetAttributeForScope: (identifier) => `data-${identifier}-target`,\n outletAttributeForScope: (identifier, outlet) => `data-${identifier}-${outlet}-outlet`,\n keyMappings: Object.assign(Object.assign({ enter: \"Enter\", tab: \"Tab\", esc: \"Escape\", space: \" \", up: \"ArrowUp\", down: \"ArrowDown\", left: \"ArrowLeft\", right: \"ArrowRight\", home: \"Home\", end: \"End\", page_up: \"PageUp\", page_down: \"PageDown\" }, objectFromEntries(\"abcdefghijklmnopqrstuvwxyz\".split(\"\").map((c) => [c, c]))), objectFromEntries(\"0123456789\".split(\"\").map((n) => [n, n]))),\n};\nfunction objectFromEntries(array) {\n return array.reduce((memo, [k, v]) => (Object.assign(Object.assign({}, memo), { [k]: v })), {});\n}\n\nclass Application {\n constructor(element = document.documentElement, schema = defaultSchema) {\n this.logger = console;\n this.debug = false;\n this.logDebugActivity = (identifier, functionName, detail = {}) => {\n if (this.debug) {\n this.logFormattedMessage(identifier, functionName, detail);\n }\n };\n this.element = element;\n this.schema = schema;\n this.dispatcher = new Dispatcher(this);\n this.router = new Router(this);\n this.actionDescriptorFilters = Object.assign({}, defaultActionDescriptorFilters);\n }\n static start(element, schema) {\n const application = new this(element, schema);\n application.start();\n return application;\n }\n async start() {\n await domReady();\n this.logDebugActivity(\"application\", \"starting\");\n this.dispatcher.start();\n this.router.start();\n this.logDebugActivity(\"application\", \"start\");\n }\n stop() {\n this.logDebugActivity(\"application\", \"stopping\");\n this.dispatcher.stop();\n this.router.stop();\n this.logDebugActivity(\"application\", \"stop\");\n }\n register(identifier, controllerConstructor) {\n this.load({ identifier, controllerConstructor });\n }\n registerActionOption(name, filter) {\n this.actionDescriptorFilters[name] = filter;\n }\n load(head, ...rest) {\n const definitions = Array.isArray(head) ? head : [head, ...rest];\n definitions.forEach((definition) => {\n if (definition.controllerConstructor.shouldLoad) {\n this.router.loadDefinition(definition);\n }\n });\n }\n unload(head, ...rest) {\n const identifiers = Array.isArray(head) ? head : [head, ...rest];\n identifiers.forEach((identifier) => this.router.unloadIdentifier(identifier));\n }\n get controllers() {\n return this.router.contexts.map((context) => context.controller);\n }\n getControllerForElementAndIdentifier(element, identifier) {\n const context = this.router.getContextForElementAndIdentifier(element, identifier);\n return context ? context.controller : null;\n }\n handleError(error, message, detail) {\n var _a;\n this.logger.error(`%s\\n\\n%o\\n\\n%o`, message, error, detail);\n (_a = window.onerror) === null || _a === void 0 ? void 0 : _a.call(window, message, \"\", 0, 0, error);\n }\n logFormattedMessage(identifier, functionName, detail = {}) {\n detail = Object.assign({ application: this }, detail);\n this.logger.groupCollapsed(`${identifier} #${functionName}`);\n this.logger.log(\"details:\", Object.assign({}, detail));\n this.logger.groupEnd();\n }\n}\nfunction domReady() {\n return new Promise((resolve) => {\n if (document.readyState == \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", () => resolve());\n }\n else {\n resolve();\n }\n });\n}\n\nfunction ClassPropertiesBlessing(constructor) {\n const classes = readInheritableStaticArrayValues(constructor, \"classes\");\n return classes.reduce((properties, classDefinition) => {\n return Object.assign(properties, propertiesForClassDefinition(classDefinition));\n }, {});\n}\nfunction propertiesForClassDefinition(key) {\n return {\n [`${key}Class`]: {\n get() {\n const { classes } = this;\n if (classes.has(key)) {\n return classes.get(key);\n }\n else {\n const attribute = classes.getAttributeName(key);\n throw new Error(`Missing attribute \"${attribute}\"`);\n }\n },\n },\n [`${key}Classes`]: {\n get() {\n return this.classes.getAll(key);\n },\n },\n [`has${capitalize(key)}Class`]: {\n get() {\n return this.classes.has(key);\n },\n },\n };\n}\n\nfunction OutletPropertiesBlessing(constructor) {\n const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n return outlets.reduce((properties, outletDefinition) => {\n return Object.assign(properties, propertiesForOutletDefinition(outletDefinition));\n }, {});\n}\nfunction getOutletController(controller, element, identifier) {\n return controller.application.getControllerForElementAndIdentifier(element, identifier);\n}\nfunction getControllerAndEnsureConnectedScope(controller, element, outletName) {\n let outletController = getOutletController(controller, element, outletName);\n if (outletController)\n return outletController;\n controller.application.router.proposeToConnectScopeForElementAndIdentifier(element, outletName);\n outletController = getOutletController(controller, element, outletName);\n if (outletController)\n return outletController;\n}\nfunction propertiesForOutletDefinition(name) {\n const camelizedName = namespaceCamelize(name);\n return {\n [`${camelizedName}Outlet`]: {\n get() {\n const outletElement = this.outlets.find(name);\n const selector = this.outlets.getSelectorForOutletName(name);\n if (outletElement) {\n const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);\n if (outletController)\n return outletController;\n throw new Error(`The provided outlet element is missing an outlet controller \"${name}\" instance for host controller \"${this.identifier}\"`);\n }\n throw new Error(`Missing outlet element \"${name}\" for host controller \"${this.identifier}\". Stimulus couldn't find a matching outlet element using selector \"${selector}\".`);\n },\n },\n [`${camelizedName}Outlets`]: {\n get() {\n const outlets = this.outlets.findAll(name);\n if (outlets.length > 0) {\n return outlets\n .map((outletElement) => {\n const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);\n if (outletController)\n return outletController;\n console.warn(`The provided outlet element is missing an outlet controller \"${name}\" instance for host controller \"${this.identifier}\"`, outletElement);\n })\n .filter((controller) => controller);\n }\n return [];\n },\n },\n [`${camelizedName}OutletElement`]: {\n get() {\n const outletElement = this.outlets.find(name);\n const selector = this.outlets.getSelectorForOutletName(name);\n if (outletElement) {\n return outletElement;\n }\n else {\n throw new Error(`Missing outlet element \"${name}\" for host controller \"${this.identifier}\". Stimulus couldn't find a matching outlet element using selector \"${selector}\".`);\n }\n },\n },\n [`${camelizedName}OutletElements`]: {\n get() {\n return this.outlets.findAll(name);\n },\n },\n [`has${capitalize(camelizedName)}Outlet`]: {\n get() {\n return this.outlets.has(name);\n },\n },\n };\n}\n\nfunction TargetPropertiesBlessing(constructor) {\n const targets = readInheritableStaticArrayValues(constructor, \"targets\");\n return targets.reduce((properties, targetDefinition) => {\n return Object.assign(properties, propertiesForTargetDefinition(targetDefinition));\n }, {});\n}\nfunction propertiesForTargetDefinition(name) {\n return {\n [`${name}Target`]: {\n get() {\n const target = this.targets.find(name);\n if (target) {\n return target;\n }\n else {\n throw new Error(`Missing target element \"${name}\" for \"${this.identifier}\" controller`);\n }\n },\n },\n [`${name}Targets`]: {\n get() {\n return this.targets.findAll(name);\n },\n },\n [`has${capitalize(name)}Target`]: {\n get() {\n return this.targets.has(name);\n },\n },\n };\n}\n\nfunction ValuePropertiesBlessing(constructor) {\n const valueDefinitionPairs = readInheritableStaticObjectPairs(constructor, \"values\");\n const propertyDescriptorMap = {\n valueDescriptorMap: {\n get() {\n return valueDefinitionPairs.reduce((result, valueDefinitionPair) => {\n const valueDescriptor = parseValueDefinitionPair(valueDefinitionPair, this.identifier);\n const attributeName = this.data.getAttributeNameForKey(valueDescriptor.key);\n return Object.assign(result, { [attributeName]: valueDescriptor });\n }, {});\n },\n },\n };\n return valueDefinitionPairs.reduce((properties, valueDefinitionPair) => {\n return Object.assign(properties, propertiesForValueDefinitionPair(valueDefinitionPair));\n }, propertyDescriptorMap);\n}\nfunction propertiesForValueDefinitionPair(valueDefinitionPair, controller) {\n const definition = parseValueDefinitionPair(valueDefinitionPair, controller);\n const { key, name, reader: read, writer: write } = definition;\n return {\n [name]: {\n get() {\n const value = this.data.get(key);\n if (value !== null) {\n return read(value);\n }\n else {\n return definition.defaultValue;\n }\n },\n set(value) {\n if (value === undefined) {\n this.data.delete(key);\n }\n else {\n this.data.set(key, write(value));\n }\n },\n },\n [`has${capitalize(name)}`]: {\n get() {\n return this.data.has(key) || definition.hasCustomDefaultValue;\n },\n },\n };\n}\nfunction parseValueDefinitionPair([token, typeDefinition], controller) {\n return valueDescriptorForTokenAndTypeDefinition({\n controller,\n token,\n typeDefinition,\n });\n}\nfunction parseValueTypeConstant(constant) {\n switch (constant) {\n case Array:\n return \"array\";\n case Boolean:\n return \"boolean\";\n case Number:\n return \"number\";\n case Object:\n return \"object\";\n case String:\n return \"string\";\n }\n}\nfunction parseValueTypeDefault(defaultValue) {\n switch (typeof defaultValue) {\n case \"boolean\":\n return \"boolean\";\n case \"number\":\n return \"number\";\n case \"string\":\n return \"string\";\n }\n if (Array.isArray(defaultValue))\n return \"array\";\n if (Object.prototype.toString.call(defaultValue) === \"[object Object]\")\n return \"object\";\n}\nfunction parseValueTypeObject(payload) {\n const { controller, token, typeObject } = payload;\n const hasType = isSomething(typeObject.type);\n const hasDefault = isSomething(typeObject.default);\n const fullObject = hasType && hasDefault;\n const onlyType = hasType && !hasDefault;\n const onlyDefault = !hasType && hasDefault;\n const typeFromObject = parseValueTypeConstant(typeObject.type);\n const typeFromDefaultValue = parseValueTypeDefault(payload.typeObject.default);\n if (onlyType)\n return typeFromObject;\n if (onlyDefault)\n return typeFromDefaultValue;\n if (typeFromObject !== typeFromDefaultValue) {\n const propertyPath = controller ? `${controller}.${token}` : token;\n throw new Error(`The specified default value for the Stimulus Value \"${propertyPath}\" must match the defined type \"${typeFromObject}\". The provided default value of \"${typeObject.default}\" is of type \"${typeFromDefaultValue}\".`);\n }\n if (fullObject)\n return typeFromObject;\n}\nfunction parseValueTypeDefinition(payload) {\n const { controller, token, typeDefinition } = payload;\n const typeObject = { controller, token, typeObject: typeDefinition };\n const typeFromObject = parseValueTypeObject(typeObject);\n const typeFromDefaultValue = parseValueTypeDefault(typeDefinition);\n const typeFromConstant = parseValueTypeConstant(typeDefinition);\n const type = typeFromObject || typeFromDefaultValue || typeFromConstant;\n if (type)\n return type;\n const propertyPath = controller ? `${controller}.${typeDefinition}` : token;\n throw new Error(`Unknown value type \"${propertyPath}\" for \"${token}\" value`);\n}\nfunction defaultValueForDefinition(typeDefinition) {\n const constant = parseValueTypeConstant(typeDefinition);\n if (constant)\n return defaultValuesByType[constant];\n const hasDefault = hasProperty(typeDefinition, \"default\");\n const hasType = hasProperty(typeDefinition, \"type\");\n const typeObject = typeDefinition;\n if (hasDefault)\n return typeObject.default;\n if (hasType) {\n const { type } = typeObject;\n const constantFromType = parseValueTypeConstant(type);\n if (constantFromType)\n return defaultValuesByType[constantFromType];\n }\n return typeDefinition;\n}\nfunction valueDescriptorForTokenAndTypeDefinition(payload) {\n const { token, typeDefinition } = payload;\n const key = `${dasherize(token)}-value`;\n const type = parseValueTypeDefinition(payload);\n return {\n type,\n key,\n name: camelize(key),\n get defaultValue() {\n return defaultValueForDefinition(typeDefinition);\n },\n get hasCustomDefaultValue() {\n return parseValueTypeDefault(typeDefinition) !== undefined;\n },\n reader: readers[type],\n writer: writers[type] || writers.default,\n };\n}\nconst defaultValuesByType = {\n get array() {\n return [];\n },\n boolean: false,\n number: 0,\n get object() {\n return {};\n },\n string: \"\",\n};\nconst readers = {\n array(value) {\n const array = JSON.parse(value);\n if (!Array.isArray(array)) {\n throw new TypeError(`expected value of type \"array\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(array)}\"`);\n }\n return array;\n },\n boolean(value) {\n return !(value == \"0\" || String(value).toLowerCase() == \"false\");\n },\n number(value) {\n return Number(value.replace(/_/g, \"\"));\n },\n object(value) {\n const object = JSON.parse(value);\n if (object === null || typeof object != \"object\" || Array.isArray(object)) {\n throw new TypeError(`expected value of type \"object\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(object)}\"`);\n }\n return object;\n },\n string(value) {\n return value;\n },\n};\nconst writers = {\n default: writeString,\n array: writeJSON,\n object: writeJSON,\n};\nfunction writeJSON(value) {\n return JSON.stringify(value);\n}\nfunction writeString(value) {\n return `${value}`;\n}\n\nclass Controller {\n constructor(context) {\n this.context = context;\n }\n static get shouldLoad() {\n return true;\n }\n static afterLoad(_identifier, _application) {\n return;\n }\n get application() {\n return this.context.application;\n }\n get scope() {\n return this.context.scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get targets() {\n return this.scope.targets;\n }\n get outlets() {\n return this.scope.outlets;\n }\n get classes() {\n return this.scope.classes;\n }\n get data() {\n return this.scope.data;\n }\n initialize() {\n }\n connect() {\n }\n disconnect() {\n }\n dispatch(eventName, { target = this.element, detail = {}, prefix = this.identifier, bubbles = true, cancelable = true, } = {}) {\n const type = prefix ? `${prefix}:${eventName}` : eventName;\n const event = new CustomEvent(type, { detail, bubbles, cancelable });\n target.dispatchEvent(event);\n return event;\n }\n}\nController.blessings = [\n ClassPropertiesBlessing,\n TargetPropertiesBlessing,\n ValuePropertiesBlessing,\n OutletPropertiesBlessing,\n];\nController.targets = [];\nController.outlets = [];\nController.values = {};\n\nexport { Application, AttributeObserver, Context, Controller, ElementObserver, IndexedMultimap, Multimap, SelectorObserver, StringMapObserver, TokenListObserver, ValueListObserver, add, defaultSchema, del, fetch, prune };\n", "import { Application } from \"@hotwired/stimulus\"\n\nconst application = Application.start()\n\n// Configure Stimulus development experience\napplication.debug = false\nwindow.Stimulus = application\n\nexport { application }\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n connect() {\n this.element.textContent = \"Hello World!\"\n }\n}\n", "// This file is auto-generated by ./bin/rails stimulus:manifest:update\n// Run that command whenever you add a new controller or create them with\n// ./bin/rails generate stimulus controllerName\n\nimport { application } from \"./application\"\n\nimport HelloController from \"./hello_controller\"\napplication.register(\"hello\", HelloController)\n", "export * from \"./enums.js\";\nexport * from \"./modifiers/index.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport { popperGenerator, detectOverflow, createPopper as createPopperBase } from \"./createPopper.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper } from \"./popper.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\";", "export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];", "export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}", "export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}", "import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };", "import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};", "import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}", "export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;", "export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}", "import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}", "import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}", "import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}", "import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}", "import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}", "import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}", "import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}", "import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}", "import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}", "export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}", "import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}", "export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}", "import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}", "export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}", "import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};", "export default function getVariation(placement) {\n return placement.split('-')[1];\n}", "import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};", "import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};", "var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}", "var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}", "import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}", "import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on <html>\n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}", "import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}", "import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}", "import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}", "import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}", "import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}", "export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}", "import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}", "import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}", "import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}", "import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}", "import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases \u2013 research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};", "import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};", "import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};", "import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};", "export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}", "import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};", "export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}", "import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}", "import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}", "import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}", "export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}", "export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}", "import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update \u2013 it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update \u2013 it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };", "import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };", "import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";", "/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst elementMap = new Map()\n\nexport default {\n set(element, key, instance) {\n if (!elementMap.has(element)) {\n elementMap.set(element, new Map())\n }\n\n const instanceMap = elementMap.get(element)\n\n // make it clear we only want one instance per element\n // can be removed later when multiple key/instances are fine to be used\n if (!instanceMap.has(key) && instanceMap.size !== 0) {\n // eslint-disable-next-line no-console\n console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`)\n return\n }\n\n instanceMap.set(key, instance)\n },\n\n get(element, key) {\n if (elementMap.has(element)) {\n return elementMap.get(element).get(key) || null\n }\n\n return null\n },\n\n remove(element, key) {\n if (!elementMap.has(element)) {\n return\n }\n\n const instanceMap = elementMap.get(element)\n\n instanceMap.delete(key)\n\n // free up element references if there are no instances left for an element\n if (instanceMap.size === 0) {\n elementMap.delete(element)\n }\n }\n}\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1_000_000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n/**\n * Properly escape IDs selectors to handle weird IDs\n * @param {string} selector\n * @returns {string}\n */\nconst parseSelector = selector => {\n if (selector && window.CSS && window.CSS.escape) {\n // document.querySelector needs escaping to handle IDs (html5+) containing for instance /\n selector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`)\n }\n\n return selector\n}\n\n// Shout-out Angus Croll (https://goo.gl/pxwQGp)\nconst toType = object => {\n if (object === null || object === undefined) {\n return `${object}`\n }\n\n return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * Public Util API\n */\n\nconst getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID)\n } while (document.getElementById(prefix))\n\n return prefix\n}\n\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration)\n const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = object => {\n if (!object || typeof object !== 'object') {\n return false\n }\n\n if (typeof object.jquery !== 'undefined') {\n object = object[0]\n }\n\n return typeof object.nodeType !== 'undefined'\n}\n\nconst getElement = object => {\n // it's a jQuery object or a node element\n if (isElement(object)) {\n return object.jquery ? object[0] : object\n }\n\n if (typeof object === 'string' && object.length > 0) {\n return document.querySelector(parseSelector(object))\n }\n\n return null\n}\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n // Handle `details` element as its content may falsie appear visible when it is closed\n const closedDetails = element.closest('details:not([open])')\n\n if (!closedDetails) {\n return elementIsVisible\n }\n\n if (closedDetails !== element) {\n const summary = element.closest('summary')\n if (summary && summary.parentNode !== closedDetails) {\n return false\n }\n\n if (summary === null) {\n return false\n }\n }\n\n return elementIsVisible\n}\n\nconst isDisabled = element => {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return true\n }\n\n if (element.classList.contains('disabled')) {\n return true\n }\n\n if (typeof element.disabled !== 'undefined') {\n return element.disabled\n }\n\n return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n element.offsetHeight // eslint-disable-line no-unused-expressions\n}\n\nconst getjQuery = () => {\n if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return window.jQuery\n }\n\n return null\n}\n\nconst DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n for (const callback of DOMContentLoadedCallbacks) {\n callback()\n }\n })\n }\n\n DOMContentLoadedCallbacks.push(callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME\n const JQUERY_NO_CONFLICT = $.fn[name]\n $.fn[name] = plugin.jQueryInterface\n $.fn[name].Constructor = plugin\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT\n return plugin.jQueryInterface\n }\n }\n })\n}\n\nconst execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {\n return typeof possibleCallback === 'function' ? possibleCallback(...args) : defaultValue\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback)\n return\n }\n\n const durationPadding = 5\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n let called = false\n\n const handler = ({ target }) => {\n if (target !== transitionElement) {\n return\n }\n\n called = true\n transitionElement.removeEventListener(TRANSITION_END, handler)\n execute(callback)\n }\n\n transitionElement.addEventListener(TRANSITION_END, handler)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement)\n }\n }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n const listLength = list.length\n let index = list.indexOf(activeElement)\n\n // if the element does not exist in the list return an element\n // depending on the direction and if cycle is allowed\n if (index === -1) {\n return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]\n }\n\n index += shouldGetNext ? 1 : -1\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n defineJQueryPlugin,\n execute,\n executeAfterTransition,\n findShadowRoot,\n getElement,\n getjQuery,\n getNextActiveElement,\n getTransitionDurationFromElement,\n getUID,\n isDisabled,\n isElement,\n isRTL,\n isVisible,\n noop,\n onDOMContentLoaded,\n parseSelector,\n reflow,\n triggerTransitionEnd,\n toType\n}\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index.js'\n\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n}\n\nconst nativeEvents = new Set([\n 'click',\n 'dblclick',\n 'mouseup',\n 'mousedown',\n 'contextmenu',\n 'mousewheel',\n 'DOMMouseScroll',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'selectstart',\n 'selectend',\n 'keydown',\n 'keypress',\n 'keyup',\n 'orientationchange',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n 'pointerdown',\n 'pointermove',\n 'pointerup',\n 'pointerleave',\n 'pointercancel',\n 'gesturestart',\n 'gesturechange',\n 'gestureend',\n 'focus',\n 'blur',\n 'change',\n 'reset',\n 'select',\n 'submit',\n 'focusin',\n 'focusout',\n 'load',\n 'unload',\n 'beforeunload',\n 'resize',\n 'move',\n 'DOMContentLoaded',\n 'readystatechange',\n 'error',\n 'abort',\n 'scroll'\n])\n\n/**\n * Private methods\n */\n\nfunction makeEventUid(element, uid) {\n return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getElementEvents(element) {\n const uid = makeEventUid(element)\n\n element.uidEvent = uid\n eventRegistry[uid] = eventRegistry[uid] || {}\n\n return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n return function handler(event) {\n hydrateObj(event, { delegateTarget: element })\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn)\n }\n\n return fn.apply(element, [event])\n }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector)\n\n for (let { target } = event; target && target !== this; target = target.parentNode) {\n for (const domElement of domElements) {\n if (domElement !== target) {\n continue\n }\n\n hydrateObj(event, { delegateTarget: target })\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, selector, fn)\n }\n\n return fn.apply(target, [event])\n }\n }\n }\n}\n\nfunction findHandler(events, callable, delegationSelector = null) {\n return Object.values(events)\n .find(event => event.callable === callable && event.delegationSelector === delegationSelector)\n}\n\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n const isDelegated = typeof handler === 'string'\n // TODO: tooltip passes `false` instead of selector, so we need to check\n const callable = isDelegated ? delegationFunction : (handler || delegationFunction)\n let typeEvent = getTypeEvent(originalTypeEvent)\n\n if (!nativeEvents.has(typeEvent)) {\n typeEvent = originalTypeEvent\n }\n\n return [isDelegated, callable, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n\n // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n if (originalTypeEvent in customEvents) {\n const wrapFunction = fn => {\n return function (event) {\n if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n return fn.call(this, event)\n }\n }\n }\n\n callable = wrapFunction(callable)\n }\n\n const events = getElementEvents(element)\n const handlers = events[typeEvent] || (events[typeEvent] = {})\n const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null)\n\n if (previousFunction) {\n previousFunction.oneOff = previousFunction.oneOff && oneOff\n\n return\n }\n\n const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''))\n const fn = isDelegated ?\n bootstrapDelegationHandler(element, handler, callable) :\n bootstrapHandler(element, callable)\n\n fn.delegationSelector = isDelegated ? handler : null\n fn.callable = callable\n fn.oneOff = oneOff\n fn.uidEvent = uid\n handlers[uid] = fn\n\n element.addEventListener(typeEvent, fn, isDelegated)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n if (!fn) {\n return\n }\n\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {}\n\n for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n if (handlerKey.includes(namespace)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n }\n }\n}\n\nfunction getTypeEvent(event) {\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n event = event.replace(stripNameRegex, '')\n return customEvents[event] || event\n}\n\nconst EventHandler = {\n on(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, false)\n },\n\n one(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, true)\n },\n\n off(element, originalTypeEvent, handler, delegationFunction) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n const inNamespace = typeEvent !== originalTypeEvent\n const events = getElementEvents(element)\n const storeElementEvent = events[typeEvent] || {}\n const isNamespace = originalTypeEvent.startsWith('.')\n\n if (typeof callable !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!Object.keys(storeElementEvent).length) {\n return\n }\n\n removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null)\n return\n }\n\n if (isNamespace) {\n for (const elementEvent of Object.keys(events)) {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n }\n }\n\n for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {\n const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n }\n }\n },\n\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null\n }\n\n const $ = getjQuery()\n const typeEvent = getTypeEvent(event)\n const inNamespace = event !== typeEvent\n\n let jQueryEvent = null\n let bubbles = true\n let nativeDispatch = true\n let defaultPrevented = false\n\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args)\n\n $(element).trigger(jQueryEvent)\n bubbles = !jQueryEvent.isPropagationStopped()\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()\n defaultPrevented = jQueryEvent.isDefaultPrevented()\n }\n\n const evt = hydrateObj(new Event(event, { bubbles, cancelable: true }), args)\n\n if (defaultPrevented) {\n evt.preventDefault()\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt)\n }\n\n if (evt.defaultPrevented && jQueryEvent) {\n jQueryEvent.preventDefault()\n }\n\n return evt\n }\n}\n\nfunction hydrateObj(obj, meta = {}) {\n for (const [key, value] of Object.entries(meta)) {\n try {\n obj[key] = value\n } catch {\n Object.defineProperty(obj, key, {\n configurable: true,\n get() {\n return value\n }\n })\n }\n }\n\n return obj\n}\n\nexport default EventHandler\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(value) {\n if (value === 'true') {\n return true\n }\n\n if (value === 'false') {\n return false\n }\n\n if (value === Number(value).toString()) {\n return Number(value)\n }\n\n if (value === '' || value === 'null') {\n return null\n }\n\n if (typeof value !== 'string') {\n return value\n }\n\n try {\n return JSON.parse(decodeURIComponent(value))\n } catch {\n return value\n }\n}\n\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n },\n\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n },\n\n getDataAttributes(element) {\n if (!element) {\n return {}\n }\n\n const attributes = {}\n const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'))\n\n for (const key of bsKeys) {\n let pureKey = key.replace(/^bs/, '')\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length)\n attributes[pureKey] = normalizeData(element.dataset[key])\n }\n\n return attributes\n },\n\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n }\n}\n\nexport default Manipulator\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Manipulator from '../dom/manipulator.js'\nimport { isElement, toType } from './index.js'\n\n/**\n * Class definition\n */\n\nclass Config {\n // Getters\n static get Default() {\n return {}\n }\n\n static get DefaultType() {\n return {}\n }\n\n static get NAME() {\n throw new Error('You have to implement the static method \"NAME\", for each component!')\n }\n\n _getConfig(config) {\n config = this._mergeConfigObj(config)\n config = this._configAfterMerge(config)\n this._typeCheckConfig(config)\n return config\n }\n\n _configAfterMerge(config) {\n return config\n }\n\n _mergeConfigObj(config, element) {\n const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {} // try to parse\n\n return {\n ...this.constructor.Default,\n ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n ...(typeof config === 'object' ? config : {})\n }\n }\n\n _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n for (const [property, expectedTypes] of Object.entries(configTypes)) {\n const value = config[property]\n const valueType = isElement(value) ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(\n `${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n )\n }\n }\n }\n}\n\nexport default Config\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data.js'\nimport EventHandler from './dom/event-handler.js'\nimport Config from './util/config.js'\nimport { executeAfterTransition, getElement } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst VERSION = '5.3.3'\n\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n constructor(element, config) {\n super()\n\n element = getElement(element)\n if (!element) {\n return\n }\n\n this._element = element\n this._config = this._getConfig(config)\n\n Data.set(this._element, this.constructor.DATA_KEY, this)\n }\n\n // Public\n dispose() {\n Data.remove(this._element, this.constructor.DATA_KEY)\n EventHandler.off(this._element, this.constructor.EVENT_KEY)\n\n for (const propertyName of Object.getOwnPropertyNames(this)) {\n this[propertyName] = null\n }\n }\n\n _queueCallback(callback, element, isAnimated = true) {\n executeAfterTransition(callback, element, isAnimated)\n }\n\n _getConfig(config) {\n config = this._mergeConfigObj(config, this._element)\n config = this._configAfterMerge(config)\n this._typeCheckConfig(config)\n return config\n }\n\n // Static\n static getInstance(element) {\n return Data.get(getElement(element), this.DATA_KEY)\n }\n\n static getOrCreateInstance(element, config = {}) {\n return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n }\n\n static get VERSION() {\n return VERSION\n }\n\n static get DATA_KEY() {\n return `bs.${this.NAME}`\n }\n\n static get EVENT_KEY() {\n return `.${this.DATA_KEY}`\n }\n\n static eventName(name) {\n return `${name}${this.EVENT_KEY}`\n }\n}\n\nexport default BaseComponent\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isDisabled, isVisible, parseSelector } from '../util/index.js'\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-bs-target')\n\n if (!selector || selector === '#') {\n let hrefAttribute = element.getAttribute('href')\n\n // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n if (!hrefAttribute || (!hrefAttribute.includes('#') && !hrefAttribute.startsWith('.'))) {\n return null\n }\n\n // Just in case some CMS puts out a full URL with the anchor appended\n if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n hrefAttribute = `#${hrefAttribute.split('#')[1]}`\n }\n\n selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null\n }\n\n return selector ? selector.split(',').map(sel => parseSelector(sel)).join(',') : null\n}\n\nconst SelectorEngine = {\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n },\n\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector)\n },\n\n children(element, selector) {\n return [].concat(...element.children).filter(child => child.matches(selector))\n },\n\n parents(element, selector) {\n const parents = []\n let ancestor = element.parentNode.closest(selector)\n\n while (ancestor) {\n parents.push(ancestor)\n ancestor = ancestor.parentNode.closest(selector)\n }\n\n return parents\n },\n\n prev(element, selector) {\n let previous = element.previousElementSibling\n\n while (previous) {\n if (previous.matches(selector)) {\n return [previous]\n }\n\n previous = previous.previousElementSibling\n }\n\n return []\n },\n // TODO: this is now unused; remove later along with prev()\n next(element, selector) {\n let next = element.nextElementSibling\n\n while (next) {\n if (next.matches(selector)) {\n return [next]\n }\n\n next = next.nextElementSibling\n }\n\n return []\n },\n\n focusableChildren(element) {\n const focusables = [\n 'a',\n 'button',\n 'input',\n 'textarea',\n 'select',\n 'details',\n '[tabindex]',\n '[contenteditable=\"true\"]'\n ].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',')\n\n return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el))\n },\n\n getSelectorFromElement(element) {\n const selector = getSelector(element)\n\n if (selector) {\n return SelectorEngine.findOne(selector) ? selector : null\n }\n\n return null\n },\n\n getElementFromSelector(element) {\n const selector = getSelector(element)\n\n return selector ? SelectorEngine.findOne(selector) : null\n },\n\n getMultipleElementsFromSelector(element) {\n const selector = getSelector(element)\n\n return selector ? SelectorEngine.find(selector) : []\n }\n}\n\nexport default SelectorEngine\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport { isDisabled } from './index.js'\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n const clickEvent = `click.dismiss${component.EVENT_KEY}`\n const name = component.NAME\n\n EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`)\n const instance = component.getOrCreateInstance(target)\n\n // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n instance[method]()\n })\n}\n\nexport {\n enableDismissTrigger\n}\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport { defineJQueryPlugin } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * Class definition\n */\n\nclass Alert extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME\n }\n\n // Public\n close() {\n const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE)\n\n if (closeEvent.defaultPrevented) {\n return\n }\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n\n const isAnimated = this._element.classList.contains(CLASS_NAME_FADE)\n this._queueCallback(() => this._destroyElement(), this._element, isAnimated)\n }\n\n // Private\n _destroyElement() {\n this._element.remove()\n EventHandler.trigger(this._element, EVENT_CLOSED)\n this.dispose()\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Alert.getOrCreateInstance(this)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Alert, 'close')\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Alert)\n\nexport default Alert\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { defineJQueryPlugin } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * Class definition\n */\n\nclass Button extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle() {\n // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Button.getOrCreateInstance(this)\n\n if (config === 'toggle') {\n data[config]()\n }\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n event.preventDefault()\n\n const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n const data = Button.getOrCreateInstance(button)\n\n data.toggle()\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Button)\n\nexport default Button\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport Config from './config.js'\nimport { execute } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'swipe'\nconst EVENT_KEY = '.bs.swipe'\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n endCallback: null,\n leftCallback: null,\n rightCallback: null\n}\n\nconst DefaultType = {\n endCallback: '(function|null)',\n leftCallback: '(function|null)',\n rightCallback: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Swipe extends Config {\n constructor(element, config) {\n super()\n this._element = element\n\n if (!element || !Swipe.isSupported()) {\n return\n }\n\n this._config = this._getConfig(config)\n this._deltaX = 0\n this._supportPointerEvents = Boolean(window.PointerEvent)\n this._initEvents()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n dispose() {\n EventHandler.off(this._element, EVENT_KEY)\n }\n\n // Private\n _start(event) {\n if (!this._supportPointerEvents) {\n this._deltaX = event.touches[0].clientX\n\n return\n }\n\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX\n }\n }\n\n _end(event) {\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX - this._deltaX\n }\n\n this._handleSwipe()\n execute(this._config.endCallback)\n }\n\n _move(event) {\n this._deltaX = event.touches && event.touches.length > 1 ?\n 0 :\n event.touches[0].clientX - this._deltaX\n }\n\n _handleSwipe() {\n const absDeltaX = Math.abs(this._deltaX)\n\n if (absDeltaX <= SWIPE_THRESHOLD) {\n return\n }\n\n const direction = absDeltaX / this._deltaX\n\n this._deltaX = 0\n\n if (!direction) {\n return\n }\n\n execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback)\n }\n\n _initEvents() {\n if (this._supportPointerEvents) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event))\n EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event))\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event))\n EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event))\n EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event))\n }\n }\n\n _eventIsPointerPenTouch(event) {\n return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)\n }\n\n // Static\n static isSupported() {\n return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n }\n}\n\nexport default Swipe\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n defineJQueryPlugin,\n getNextActiveElement,\n isRTL,\n isVisible,\n reflow,\n triggerTransitionEnd\n} from './util/index.js'\nimport Swipe from './util/swipe.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\n\nconst ORDER_NEXT = 'next'\nconst ORDER_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_END = 'carousel-item-end'\nconst CLASS_NAME_START = 'carousel-item-start'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]'\n\nconst KEY_TO_DIRECTION = {\n [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst Default = {\n interval: 5000,\n keyboard: true,\n pause: 'hover',\n ride: false,\n touch: true,\n wrap: true\n}\n\nconst DefaultType = {\n interval: '(number|boolean)', // TODO:v6 remove boolean support\n keyboard: 'boolean',\n pause: '(string|boolean)',\n ride: '(boolean|string)',\n touch: 'boolean',\n wrap: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._interval = null\n this._activeElement = null\n this._isSliding = false\n this.touchTimeout = null\n this._swipeHelper = null\n\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n this._addEventListeners()\n\n if (this._config.ride === CLASS_NAME_CAROUSEL) {\n this.cycle()\n }\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n next() {\n this._slide(ORDER_NEXT)\n }\n\n nextWhenVisible() {\n // FIXME TODO use `document.visibilityState`\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && isVisible(this._element)) {\n this.next()\n }\n }\n\n prev() {\n this._slide(ORDER_PREV)\n }\n\n pause() {\n if (this._isSliding) {\n triggerTransitionEnd(this._element)\n }\n\n this._clearInterval()\n }\n\n cycle() {\n this._clearInterval()\n this._updateInterval()\n\n this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval)\n }\n\n _maybeEnableCycle() {\n if (!this._config.ride) {\n return\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.cycle())\n return\n }\n\n this.cycle()\n }\n\n to(index) {\n const items = this._getItems()\n if (index > items.length - 1 || index < 0) {\n return\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.to(index))\n return\n }\n\n const activeIndex = this._getItemIndex(this._getActive())\n if (activeIndex === index) {\n return\n }\n\n const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV\n\n this._slide(order, items[index])\n }\n\n dispose() {\n if (this._swipeHelper) {\n this._swipeHelper.dispose()\n }\n\n super.dispose()\n }\n\n // Private\n _configAfterMerge(config) {\n config.defaultInterval = config.interval\n return config\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n EventHandler.on(this._element, EVENT_MOUSEENTER, () => this.pause())\n EventHandler.on(this._element, EVENT_MOUSELEAVE, () => this._maybeEnableCycle())\n }\n\n if (this._config.touch && Swipe.isSupported()) {\n this._addTouchEventListeners()\n }\n }\n\n _addTouchEventListeners() {\n for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {\n EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault())\n }\n\n const endCallBack = () => {\n if (this._config.pause !== 'hover') {\n return\n }\n\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\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n\n this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n }\n\n const swipeConfig = {\n leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),\n rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),\n endCallback: endCallBack\n }\n\n this._swipeHelper = new Swipe(this._element, swipeConfig)\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return\n }\n\n const direction = KEY_TO_DIRECTION[event.key]\n if (direction) {\n event.preventDefault()\n this._slide(this._directionToOrder(direction))\n }\n }\n\n _getItemIndex(element) {\n return this._getItems().indexOf(element)\n }\n\n _setActiveIndicatorElement(index) {\n if (!this._indicatorsElement) {\n return\n }\n\n const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n\n activeIndicator.classList.remove(CLASS_NAME_ACTIVE)\n activeIndicator.removeAttribute('aria-current')\n\n const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement)\n\n if (newActiveIndicator) {\n newActiveIndicator.classList.add(CLASS_NAME_ACTIVE)\n newActiveIndicator.setAttribute('aria-current', 'true')\n }\n }\n\n _updateInterval() {\n const element = this._activeElement || this._getActive()\n\n if (!element) {\n return\n }\n\n const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10)\n\n this._config.interval = elementInterval || this._config.defaultInterval\n }\n\n _slide(order, element = null) {\n if (this._isSliding) {\n return\n }\n\n const activeElement = this._getActive()\n const isNext = order === ORDER_NEXT\n const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap)\n\n if (nextElement === activeElement) {\n return\n }\n\n const nextElementIndex = this._getItemIndex(nextElement)\n\n const triggerEvent = eventName => {\n return EventHandler.trigger(this._element, eventName, {\n relatedTarget: nextElement,\n direction: this._orderToDirection(order),\n from: this._getItemIndex(activeElement),\n to: nextElementIndex\n })\n }\n\n const slideEvent = triggerEvent(EVENT_SLIDE)\n\n if (slideEvent.defaultPrevented) {\n return\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n // TODO: change tests that use empty divs to avoid this check\n return\n }\n\n const isCycling = Boolean(this._interval)\n this.pause()\n\n this._isSliding = true\n\n this._setActiveIndicatorElement(nextElementIndex)\n this._activeElement = nextElement\n\n const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END\n const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV\n\n nextElement.classList.add(orderClassName)\n\n reflow(nextElement)\n\n activeElement.classList.add(directionalClassName)\n nextElement.classList.add(directionalClassName)\n\n const completeCallBack = () => {\n nextElement.classList.remove(directionalClassName, orderClassName)\n nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName)\n\n this._isSliding = false\n\n triggerEvent(EVENT_SLID)\n }\n\n this._queueCallback(completeCallBack, activeElement, this._isAnimated())\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_SLIDE)\n }\n\n _getActive() {\n return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n }\n\n _getItems() {\n return SelectorEngine.find(SELECTOR_ITEM, this._element)\n }\n\n _clearInterval() {\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n }\n\n _directionToOrder(direction) {\n if (isRTL()) {\n return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT\n }\n\n return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV\n }\n\n _orderToDirection(order) {\n if (isRTL()) {\n return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT\n }\n\n return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Carousel.getOrCreateInstance(this, config)\n\n if (typeof config === 'number') {\n data.to(config)\n return\n }\n\n if (typeof config === 'string') {\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, function (event) {\n const target = SelectorEngine.getElementFromSelector(this)\n\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return\n }\n\n event.preventDefault()\n\n const carousel = Carousel.getOrCreateInstance(target)\n const slideIndex = this.getAttribute('data-bs-slide-to')\n\n if (slideIndex) {\n carousel.to(slideIndex)\n carousel._maybeEnableCycle()\n return\n }\n\n if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n carousel.next()\n carousel._maybeEnableCycle()\n return\n }\n\n carousel.prev()\n carousel._maybeEnableCycle()\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n for (const carousel of carousels) {\n Carousel.getOrCreateInstance(carousel)\n }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Carousel)\n\nexport default Carousel\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n defineJQueryPlugin,\n getElement,\n reflow\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\nconst Default = {\n parent: null,\n toggle: true\n}\n\nconst DefaultType = {\n parent: '(null|element)',\n toggle: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Collapse extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._isTransitioning = false\n this._triggerArray = []\n\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (const elem of toggleList) {\n const selector = SelectorEngine.getSelectorFromElement(elem)\n const filterElement = SelectorEngine.find(selector)\n .filter(foundElement => foundElement === this._element)\n\n if (selector !== null && filterElement.length) {\n this._triggerArray.push(elem)\n }\n }\n\n this._initializeChildren()\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._triggerArray, this._isShown())\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle() {\n if (this._isShown()) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning || this._isShown()) {\n return\n }\n\n let activeChildren = []\n\n // find active children\n if (this._config.parent) {\n activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES)\n .filter(element => element !== this._element)\n .map(element => Collapse.getOrCreateInstance(element, { toggle: false }))\n }\n\n if (activeChildren.length && activeChildren[0]._isTransitioning) {\n return\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n if (startEvent.defaultPrevented) {\n return\n }\n\n for (const activeInstance of activeChildren) {\n activeInstance.hide()\n }\n\n const dimension = this._getDimension()\n\n this._element.classList.remove(CLASS_NAME_COLLAPSE)\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n this._element.style[dimension] = 0\n\n this._addAriaAndCollapsedClass(this._triggerArray, true)\n this._isTransitioning = true\n\n const complete = () => {\n this._isTransitioning = false\n\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n this._element.style[dimension] = ''\n\n EventHandler.trigger(this._element, EVENT_SHOWN)\n }\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n const scrollSize = `scroll${capitalizedDimension}`\n\n this._queueCallback(complete, this._element, true)\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning || !this._isShown()) {\n return\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n if (startEvent.defaultPrevented) {\n return\n }\n\n const dimension = this._getDimension()\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n reflow(this._element)\n\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n for (const trigger of this._triggerArray) {\n const element = SelectorEngine.getElementFromSelector(trigger)\n\n if (element && !this._isShown(element)) {\n this._addAriaAndCollapsedClass([trigger], false)\n }\n }\n\n this._isTransitioning = true\n\n const complete = () => {\n this._isTransitioning = false\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE)\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._element.style[dimension] = ''\n\n this._queueCallback(complete, this._element, true)\n }\n\n _isShown(element = this._element) {\n return element.classList.contains(CLASS_NAME_SHOW)\n }\n\n // Private\n _configAfterMerge(config) {\n config.toggle = Boolean(config.toggle) // Coerce string values\n config.parent = getElement(config.parent)\n return config\n }\n\n _getDimension() {\n return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT\n }\n\n _initializeChildren() {\n if (!this._config.parent) {\n return\n }\n\n const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE)\n\n for (const element of children) {\n const selected = SelectorEngine.getElementFromSelector(element)\n\n if (selected) {\n this._addAriaAndCollapsedClass([element], this._isShown(selected))\n }\n }\n }\n\n _getFirstLevelChildren(selector) {\n const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent)\n // remove children if greater depth\n return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element))\n }\n\n _addAriaAndCollapsedClass(triggerArray, isOpen) {\n if (!triggerArray.length) {\n return\n }\n\n for (const element of triggerArray) {\n element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen)\n element.setAttribute('aria-expanded', isOpen)\n }\n }\n\n // Static\n static jQueryInterface(config) {\n const _config = {}\n if (typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n return this.each(function () {\n const data = Collapse.getOrCreateInstance(this, _config)\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\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n event.preventDefault()\n }\n\n for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {\n Collapse.getOrCreateInstance(element, { toggle: false }).toggle()\n }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Collapse)\n\nexport default Collapse\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n defineJQueryPlugin,\n execute,\n getElement,\n getNextActiveElement,\n isDisabled,\n isElement,\n isRTL,\n isVisible,\n noop\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'dropdown'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst RIGHT_MOUSE_BUTTON = 2 // MouseEvent.button value for the secondary button, usually the right button\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPEND = 'dropend'\nconst CLASS_NAME_DROPSTART = 'dropstart'\nconst CLASS_NAME_DROPUP_CENTER = 'dropup-center'\nconst CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]:not(.disabled):not(:disabled)'\nconst SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE}.${CLASS_NAME_SHOW}`\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR = '.navbar'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start'\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end'\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start'\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end'\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start'\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start'\nconst PLACEMENT_TOPCENTER = 'top'\nconst PLACEMENT_BOTTOMCENTER = 'bottom'\n\nconst Default = {\n autoClose: true,\n boundary: 'clippingParents',\n display: 'dynamic',\n offset: [0, 2],\n popperConfig: null,\n reference: 'toggle'\n}\n\nconst DefaultType = {\n autoClose: '(boolean|string)',\n boundary: '(string|element)',\n display: 'string',\n offset: '(array|string|function)',\n popperConfig: '(null|object|function)',\n reference: '(string|element|object)'\n}\n\n/**\n * Class definition\n */\n\nclass Dropdown extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._popper = null\n this._parent = this._element.parentNode // dropdown wrapper\n // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] ||\n SelectorEngine.prev(this._element, SELECTOR_MENU)[0] ||\n SelectorEngine.findOne(SELECTOR_MENU, this._parent)\n this._inNavbar = this._detectNavbar()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle() {\n return this._isShown() ? this.hide() : this.show()\n }\n\n show() {\n if (isDisabled(this._element) || this._isShown()) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._createPopper()\n\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 if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', noop)\n }\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n this._menu.classList.add(CLASS_NAME_SHOW)\n this._element.classList.add(CLASS_NAME_SHOW)\n EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n }\n\n hide() {\n if (isDisabled(this._element) || !this._isShown()) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n this._completeHide(relatedTarget)\n }\n\n dispose() {\n if (this._popper) {\n this._popper.destroy()\n }\n\n super.dispose()\n }\n\n update() {\n this._inNavbar = this._detectNavbar()\n if (this._popper) {\n this._popper.update()\n }\n }\n\n // Private\n _completeHide(relatedTarget) {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', noop)\n }\n }\n\n if (this._popper) {\n this._popper.destroy()\n }\n\n this._menu.classList.remove(CLASS_NAME_SHOW)\n this._element.classList.remove(CLASS_NAME_SHOW)\n this._element.setAttribute('aria-expanded', 'false')\n Manipulator.removeDataAttribute(this._menu, 'popper')\n EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n }\n\n _getConfig(config) {\n config = super._getConfig(config)\n\n if (typeof config.reference === 'object' && !isElement(config.reference) &&\n typeof config.reference.getBoundingClientRect !== 'function'\n ) {\n // Popper virtual elements require a getBoundingClientRect method\n throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n }\n\n return config\n }\n\n _createPopper() {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)')\n }\n\n let referenceElement = this._element\n\n if (this._config.reference === 'parent') {\n referenceElement = this._parent\n } else if (isElement(this._config.reference)) {\n referenceElement = getElement(this._config.reference)\n } else if (typeof this._config.reference === 'object') {\n referenceElement = this._config.reference\n }\n\n const popperConfig = this._getPopperConfig()\n this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig)\n }\n\n _isShown() {\n return this._menu.classList.contains(CLASS_NAME_SHOW)\n }\n\n _getPlacement() {\n const parentDropdown = this._parent\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n return PLACEMENT_RIGHT\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n return PLACEMENT_LEFT\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {\n return PLACEMENT_TOPCENTER\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) {\n return PLACEMENT_BOTTOMCENTER\n }\n\n // We need to trim the value because custom properties can also include spaces\n const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP\n }\n\n return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM\n }\n\n _detectNavbar() {\n return this._element.closest(SELECTOR_NAVBAR) !== null\n }\n\n _getOffset() {\n const { offset } = this._config\n\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10))\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element)\n }\n\n return offset\n }\n\n _getPopperConfig() {\n const defaultBsPopperConfig = {\n placement: this._getPlacement(),\n modifiers: [{\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n },\n {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }]\n }\n\n // Disable Popper if we have a static display or Dropdown is in Navbar\n if (this._inNavbar || this._config.display === 'static') {\n Manipulator.setDataAttribute(this._menu, 'popper', 'static') // TODO: v6 remove\n defaultBsPopperConfig.modifiers = [{\n name: 'applyStyles',\n enabled: false\n }]\n }\n\n return {\n ...defaultBsPopperConfig,\n ...execute(this._config.popperConfig, [defaultBsPopperConfig])\n }\n }\n\n _selectMenuItem({ key, target }) {\n const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(element => isVisible(element))\n\n if (!items.length) {\n return\n }\n\n // if target isn't included in items (e.g. when expanding the dropdown)\n // allow cycling to get the last item in case key equals ARROW_UP_KEY\n getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Dropdown.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n\n static clearMenus(event) {\n if (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY)) {\n return\n }\n\n const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN)\n\n for (const toggle of openToggles) {\n const context = Dropdown.getInstance(toggle)\n if (!context || context._config.autoClose === false) {\n continue\n }\n\n const composedPath = event.composedPath()\n const isMenuTarget = composedPath.includes(context._menu)\n if (\n composedPath.includes(context._element) ||\n (context._config.autoClose === 'inside' && !isMenuTarget) ||\n (context._config.autoClose === 'outside' && isMenuTarget)\n ) {\n continue\n }\n\n // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n if (context._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n continue\n }\n\n const relatedTarget = { relatedTarget: context._element }\n\n if (event.type === 'click') {\n relatedTarget.clickEvent = event\n }\n\n context._completeHide(relatedTarget)\n }\n }\n\n static dataApiKeydownHandler(event) {\n // If not an UP | DOWN | ESCAPE key => not a dropdown command\n // If input/textarea && if key is other than ESCAPE => not a dropdown command\n\n const isInput = /input|textarea/i.test(event.target.tagName)\n const isEscapeEvent = event.key === ESCAPE_KEY\n const isUpOrDownEvent = [ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key)\n\n if (!isUpOrDownEvent && !isEscapeEvent) {\n return\n }\n\n if (isInput && !isEscapeEvent) {\n return\n }\n\n event.preventDefault()\n\n // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ?\n this :\n (SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0] ||\n SelectorEngine.next(this, SELECTOR_DATA_TOGGLE)[0] ||\n SelectorEngine.findOne(SELECTOR_DATA_TOGGLE, event.delegateTarget.parentNode))\n\n const instance = Dropdown.getOrCreateInstance(getToggleButton)\n\n if (isUpOrDownEvent) {\n event.stopPropagation()\n instance.show()\n instance._selectMenuItem(event)\n return\n }\n\n if (instance._isShown()) { // else is escape and we check if it is shown\n event.stopPropagation()\n instance.hide()\n getToggleButton.focus()\n }\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault()\n Dropdown.getOrCreateInstance(this).toggle()\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Dropdown)\n\nexport default Dropdown\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport Config from './config.js'\nimport {\n execute, executeAfterTransition, getElement, reflow\n} from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'backdrop'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`\n\nconst Default = {\n className: 'modal-backdrop',\n clickCallback: null,\n isAnimated: false,\n isVisible: true, // if false, we use the backdrop helper without adding any element to the dom\n rootElement: 'body' // give the choice to place backdrop under different elements\n}\n\nconst DefaultType = {\n className: 'string',\n clickCallback: '(function|null)',\n isAnimated: 'boolean',\n isVisible: 'boolean',\n rootElement: '(element|string)'\n}\n\n/**\n * Class definition\n */\n\nclass Backdrop extends Config {\n constructor(config) {\n super()\n this._config = this._getConfig(config)\n this._isAppended = false\n this._element = null\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n show(callback) {\n if (!this._config.isVisible) {\n execute(callback)\n return\n }\n\n this._append()\n\n const element = this._getElement()\n if (this._config.isAnimated) {\n reflow(element)\n }\n\n element.classList.add(CLASS_NAME_SHOW)\n\n this._emulateAnimation(() => {\n execute(callback)\n })\n }\n\n hide(callback) {\n if (!this._config.isVisible) {\n execute(callback)\n return\n }\n\n this._getElement().classList.remove(CLASS_NAME_SHOW)\n\n this._emulateAnimation(() => {\n this.dispose()\n execute(callback)\n })\n }\n\n dispose() {\n if (!this._isAppended) {\n return\n }\n\n EventHandler.off(this._element, EVENT_MOUSEDOWN)\n\n this._element.remove()\n this._isAppended = false\n }\n\n // Private\n _getElement() {\n if (!this._element) {\n const backdrop = document.createElement('div')\n backdrop.className = this._config.className\n if (this._config.isAnimated) {\n backdrop.classList.add(CLASS_NAME_FADE)\n }\n\n this._element = backdrop\n }\n\n return this._element\n }\n\n _configAfterMerge(config) {\n // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n config.rootElement = getElement(config.rootElement)\n return config\n }\n\n _append() {\n if (this._isAppended) {\n return\n }\n\n const element = this._getElement()\n this._config.rootElement.append(element)\n\n EventHandler.on(element, EVENT_MOUSEDOWN, () => {\n execute(this._config.clickCallback)\n })\n\n this._isAppended = true\n }\n\n _emulateAnimation(callback) {\n executeAfterTransition(callback, this._getElement(), this._config.isAnimated)\n }\n}\n\nexport default Backdrop\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Config from './config.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'focustrap'\nconst DATA_KEY = 'bs.focustrap'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY}`\n\nconst TAB_KEY = 'Tab'\nconst TAB_NAV_FORWARD = 'forward'\nconst TAB_NAV_BACKWARD = 'backward'\n\nconst Default = {\n autofocus: true,\n trapElement: null // The element to trap focus inside of\n}\n\nconst DefaultType = {\n autofocus: 'boolean',\n trapElement: 'element'\n}\n\n/**\n * Class definition\n */\n\nclass FocusTrap extends Config {\n constructor(config) {\n super()\n this._config = this._getConfig(config)\n this._isActive = false\n this._lastTabNavDirection = null\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n activate() {\n if (this._isActive) {\n return\n }\n\n if (this._config.autofocus) {\n this._config.trapElement.focus()\n }\n\n EventHandler.off(document, EVENT_KEY) // guard against infinite focus loop\n EventHandler.on(document, EVENT_FOCUSIN, event => this._handleFocusin(event))\n EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event))\n\n this._isActive = true\n }\n\n deactivate() {\n if (!this._isActive) {\n return\n }\n\n this._isActive = false\n EventHandler.off(document, EVENT_KEY)\n }\n\n // Private\n _handleFocusin(event) {\n const { trapElement } = this._config\n\n if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {\n return\n }\n\n const elements = SelectorEngine.focusableChildren(trapElement)\n\n if (elements.length === 0) {\n trapElement.focus()\n } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n elements[elements.length - 1].focus()\n } else {\n elements[0].focus()\n }\n }\n\n _handleKeydown(event) {\n if (event.key !== TAB_KEY) {\n return\n }\n\n this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD\n }\n}\n\nexport default FocusTrap\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Manipulator from '../dom/manipulator.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport { isElement } from './index.js'\n\n/**\n * Constants\n */\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\nconst PROPERTY_PADDING = 'padding-right'\nconst PROPERTY_MARGIN = 'margin-right'\n\n/**\n * Class definition\n */\n\nclass ScrollBarHelper {\n constructor() {\n this._element = document.body\n }\n\n // Public\n getWidth() {\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n const documentWidth = document.documentElement.clientWidth\n return Math.abs(window.innerWidth - documentWidth)\n }\n\n hide() {\n const width = this.getWidth()\n this._disableOverFlow()\n // give padding to element to balance the hidden scrollbar width\n this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\n // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\n this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width)\n }\n\n reset() {\n this._resetElementAttributes(this._element, 'overflow')\n this._resetElementAttributes(this._element, PROPERTY_PADDING)\n this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING)\n this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN)\n }\n\n isOverflowing() {\n return this.getWidth() > 0\n }\n\n // Private\n _disableOverFlow() {\n this._saveInitialAttribute(this._element, 'overflow')\n this._element.style.overflow = 'hidden'\n }\n\n _setElementAttributes(selector, styleProperty, callback) {\n const scrollbarWidth = this.getWidth()\n const manipulationCallBack = element => {\n if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n return\n }\n\n this._saveInitialAttribute(element, styleProperty)\n const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty)\n element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`)\n }\n\n this._applyManipulationCallback(selector, manipulationCallBack)\n }\n\n _saveInitialAttribute(element, styleProperty) {\n const actualValue = element.style.getPropertyValue(styleProperty)\n if (actualValue) {\n Manipulator.setDataAttribute(element, styleProperty, actualValue)\n }\n }\n\n _resetElementAttributes(selector, styleProperty) {\n const manipulationCallBack = element => {\n const value = Manipulator.getDataAttribute(element, styleProperty)\n // We only want to remove the property if the value is `null`; the value can also be zero\n if (value === null) {\n element.style.removeProperty(styleProperty)\n return\n }\n\n Manipulator.removeDataAttribute(element, styleProperty)\n element.style.setProperty(styleProperty, value)\n }\n\n this._applyManipulationCallback(selector, manipulationCallBack)\n }\n\n _applyManipulationCallback(selector, callBack) {\n if (isElement(selector)) {\n callBack(selector)\n return\n }\n\n for (const sel of SelectorEngine.find(selector, this._element)) {\n callBack(sel)\n }\n }\n}\n\nexport default ScrollBarHelper\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Backdrop from './util/backdrop.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport FocusTrap from './util/focustrap.js'\nimport {\n defineJQueryPlugin, isRTL, isVisible, reflow\n} from './util/index.js'\nimport ScrollBarHelper from './util/scrollbar.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'modal'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst ESCAPE_KEY = 'Escape'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_OPEN = 'modal-open'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_STATIC = 'modal-static'\n\nconst OPEN_SELECTOR = '.modal.show'\nconst SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"modal\"]'\n\nconst Default = {\n backdrop: true,\n focus: true,\n keyboard: true\n}\n\nconst DefaultType = {\n backdrop: '(boolean|string)',\n focus: 'boolean',\n keyboard: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Modal extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element)\n this._backdrop = this._initializeBackDrop()\n this._focustrap = this._initializeFocusTrap()\n this._isShown = false\n this._isTransitioning = false\n this._scrollBar = new ScrollBarHelper()\n\n this._addEventListeners()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n relatedTarget\n })\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._isShown = true\n this._isTransitioning = true\n\n this._scrollBar.hide()\n\n document.body.classList.add(CLASS_NAME_OPEN)\n\n this._adjustDialog()\n\n this._backdrop.show(() => this._showElement(relatedTarget))\n }\n\n hide() {\n if (!this._isShown || this._isTransitioning) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n this._isShown = false\n this._isTransitioning = true\n this._focustrap.deactivate()\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n\n this._queueCallback(() => this._hideModal(), this._element, this._isAnimated())\n }\n\n dispose() {\n EventHandler.off(window, EVENT_KEY)\n EventHandler.off(this._dialog, EVENT_KEY)\n\n this._backdrop.dispose()\n this._focustrap.deactivate()\n\n super.dispose()\n }\n\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n _initializeBackDrop() {\n return new Backdrop({\n isVisible: Boolean(this._config.backdrop), // 'static' option will be translated to true, and booleans will keep their value,\n isAnimated: this._isAnimated()\n })\n }\n\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n })\n }\n\n _showElement(relatedTarget) {\n // try to append dynamic modal\n if (!document.body.contains(this._element)) {\n document.body.append(this._element)\n }\n\n this._element.style.display = 'block'\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n this._element.scrollTop = 0\n\n const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog)\n if (modalBody) {\n modalBody.scrollTop = 0\n }\n\n reflow(this._element)\n\n this._element.classList.add(CLASS_NAME_SHOW)\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._focustrap.activate()\n }\n\n this._isTransitioning = false\n EventHandler.trigger(this._element, EVENT_SHOWN, {\n relatedTarget\n })\n }\n\n this._queueCallback(transitionComplete, this._dialog, this._isAnimated())\n }\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (event.key !== ESCAPE_KEY) {\n return\n }\n\n if (this._config.keyboard) {\n this.hide()\n return\n }\n\n this._triggerBackdropTransition()\n })\n\n EventHandler.on(window, EVENT_RESIZE, () => {\n if (this._isShown && !this._isTransitioning) {\n this._adjustDialog()\n }\n })\n\n EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, event => {\n // a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks\n EventHandler.one(this._element, EVENT_CLICK_DISMISS, event2 => {\n if (this._element !== event.target || this._element !== event2.target) {\n return\n }\n\n if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition()\n return\n }\n\n if (this._config.backdrop) {\n this.hide()\n }\n })\n })\n }\n\n _hideModal() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n this._isTransitioning = false\n\n this._backdrop.hide(() => {\n document.body.classList.remove(CLASS_NAME_OPEN)\n this._resetAdjustments()\n this._scrollBar.reset()\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n })\n }\n\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_FADE)\n }\n\n _triggerBackdropTransition() {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n const initialOverflowY = this._element.style.overflowY\n // return if the following background transition hasn't yet completed\n if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) {\n return\n }\n\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden'\n }\n\n this._element.classList.add(CLASS_NAME_STATIC)\n this._queueCallback(() => {\n this._element.classList.remove(CLASS_NAME_STATIC)\n this._queueCallback(() => {\n this._element.style.overflowY = initialOverflowY\n }, this._dialog)\n }, this._dialog)\n\n this._element.focus()\n }\n\n /**\n * The following methods are used to handle overflowing modals\n */\n\n _adjustDialog() {\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n const scrollbarWidth = this._scrollBar.getWidth()\n const isBodyOverflowing = scrollbarWidth > 0\n\n if (isBodyOverflowing && !isModalOverflowing) {\n const property = isRTL() ? 'paddingLeft' : 'paddingRight'\n this._element.style[property] = `${scrollbarWidth}px`\n }\n\n if (!isBodyOverflowing && isModalOverflowing) {\n const property = isRTL() ? 'paddingRight' : 'paddingLeft'\n this._element.style[property] = `${scrollbarWidth}px`\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n // Static\n static jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n const data = Modal.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](relatedTarget)\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n const target = SelectorEngine.getElementFromSelector(this)\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n EventHandler.one(target, EVENT_SHOW, showEvent => {\n if (showEvent.defaultPrevented) {\n // only register focus restorer if modal will actually get shown\n return\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n if (isVisible(this)) {\n this.focus()\n }\n })\n })\n\n // avoid conflict when clicking modal toggler while another one is open\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n if (alreadyOpen) {\n Modal.getInstance(alreadyOpen).hide()\n }\n\n const data = Modal.getOrCreateInstance(target)\n\n data.toggle(this)\n})\n\nenableDismissTrigger(Modal)\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Modal)\n\nexport default Modal\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Backdrop from './util/backdrop.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport FocusTrap from './util/focustrap.js'\nimport {\n defineJQueryPlugin,\n isDisabled,\n isVisible\n} from './util/index.js'\nimport ScrollBarHelper from './util/scrollbar.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'offcanvas'\nconst DATA_KEY = 'bs.offcanvas'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst ESCAPE_KEY = 'Escape'\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\nconst CLASS_NAME_HIDING = 'hiding'\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop'\nconst OPEN_SELECTOR = '.offcanvas.show'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"offcanvas\"]'\n\nconst Default = {\n backdrop: true,\n keyboard: true,\n scroll: false\n}\n\nconst DefaultType = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n scroll: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Offcanvas extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._isShown = false\n this._backdrop = this._initializeBackDrop()\n this._focustrap = this._initializeFocusTrap()\n this._addEventListeners()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, { relatedTarget })\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._isShown = true\n this._backdrop.show()\n\n if (!this._config.scroll) {\n new ScrollBarHelper().hide()\n }\n\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n this._element.classList.add(CLASS_NAME_SHOWING)\n\n const completeCallBack = () => {\n if (!this._config.scroll || this._config.backdrop) {\n this._focustrap.activate()\n }\n\n this._element.classList.add(CLASS_NAME_SHOW)\n this._element.classList.remove(CLASS_NAME_SHOWING)\n EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget })\n }\n\n this._queueCallback(completeCallBack, this._element, true)\n }\n\n hide() {\n if (!this._isShown) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n this._focustrap.deactivate()\n this._element.blur()\n this._isShown = false\n this._element.classList.add(CLASS_NAME_HIDING)\n this._backdrop.hide()\n\n const completeCallback = () => {\n this._element.classList.remove(CLASS_NAME_SHOW, CLASS_NAME_HIDING)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n\n if (!this._config.scroll) {\n new ScrollBarHelper().reset()\n }\n\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._queueCallback(completeCallback, this._element, true)\n }\n\n dispose() {\n this._backdrop.dispose()\n this._focustrap.deactivate()\n super.dispose()\n }\n\n // Private\n _initializeBackDrop() {\n const clickCallback = () => {\n if (this._config.backdrop === 'static') {\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n return\n }\n\n this.hide()\n }\n\n // 'static' option will be translated to true, and booleans will keep their value\n const isVisible = Boolean(this._config.backdrop)\n\n return new Backdrop({\n className: CLASS_NAME_BACKDROP,\n isVisible,\n isAnimated: true,\n rootElement: this._element.parentNode,\n clickCallback: isVisible ? clickCallback : null\n })\n }\n\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n })\n }\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (event.key !== ESCAPE_KEY) {\n return\n }\n\n if (this._config.keyboard) {\n this.hide()\n return\n }\n\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n })\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Offcanvas.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n const target = SelectorEngine.getElementFromSelector(this)\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n // focus on trigger when it is closed\n if (isVisible(this)) {\n this.focus()\n }\n })\n\n // avoid conflict when clicking a toggler of an offcanvas, while another is open\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n if (alreadyOpen && alreadyOpen !== target) {\n Offcanvas.getInstance(alreadyOpen).hide()\n }\n\n const data = Offcanvas.getOrCreateInstance(target)\n data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {\n Offcanvas.getOrCreateInstance(selector).show()\n }\n})\n\nEventHandler.on(window, EVENT_RESIZE, () => {\n for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {\n if (getComputedStyle(element).position !== 'fixed') {\n Offcanvas.getOrCreateInstance(element).hide()\n }\n }\n})\n\nenableDismissTrigger(Offcanvas)\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Offcanvas)\n\nexport default Offcanvas\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n// js-docs-start allow-list\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\nexport const DefaultAllowlist = {\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 dd: [],\n div: [],\n dl: [],\n dt: [],\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// js-docs-end allow-list\n\nconst uriAttributes = new Set([\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n])\n\n/**\n * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation\n * contexts.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38\n */\n// eslint-disable-next-line unicorn/better-regex\nconst SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i\n\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n const attributeName = attribute.nodeName.toLowerCase()\n\n if (allowedAttributeList.includes(attributeName)) {\n if (uriAttributes.has(attributeName)) {\n return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue))\n }\n\n return true\n }\n\n // Check if a regular expression validates the attribute.\n return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp)\n .some(regex => regex.test(attributeName))\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n if (!unsafeHtml.length) {\n return unsafeHtml\n }\n\n if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n return sanitizeFunction(unsafeHtml)\n }\n\n const domParser = new window.DOMParser()\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n const elements = [].concat(...createdDocument.body.querySelectorAll('*'))\n\n for (const element of elements) {\n const elementName = element.nodeName.toLowerCase()\n\n if (!Object.keys(allowList).includes(elementName)) {\n element.remove()\n continue\n }\n\n const attributeList = [].concat(...element.attributes)\n const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || [])\n\n for (const attribute of attributeList) {\n if (!allowedAttribute(attribute, allowedAttributes)) {\n element.removeAttribute(attribute.nodeName)\n }\n }\n }\n\n return createdDocument.body.innerHTML\n}\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Config from './config.js'\nimport { DefaultAllowlist, sanitizeHtml } from './sanitizer.js'\nimport { execute, getElement, isElement } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'TemplateFactory'\n\nconst Default = {\n allowList: DefaultAllowlist,\n content: {}, // { selector : text , selector2 : text2 , }\n extraClass: '',\n html: false,\n sanitize: true,\n sanitizeFn: null,\n template: '<div></div>'\n}\n\nconst DefaultType = {\n allowList: 'object',\n content: 'object',\n extraClass: '(string|function)',\n html: 'boolean',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n template: 'string'\n}\n\nconst DefaultContentType = {\n entry: '(string|element|function|null)',\n selector: '(string|element)'\n}\n\n/**\n * Class definition\n */\n\nclass TemplateFactory extends Config {\n constructor(config) {\n super()\n this._config = this._getConfig(config)\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n getContent() {\n return Object.values(this._config.content)\n .map(config => this._resolvePossibleFunction(config))\n .filter(Boolean)\n }\n\n hasContent() {\n return this.getContent().length > 0\n }\n\n changeContent(content) {\n this._checkContent(content)\n this._config.content = { ...this._config.content, ...content }\n return this\n }\n\n toHtml() {\n const templateWrapper = document.createElement('div')\n templateWrapper.innerHTML = this._maybeSanitize(this._config.template)\n\n for (const [selector, text] of Object.entries(this._config.content)) {\n this._setContent(templateWrapper, text, selector)\n }\n\n const template = templateWrapper.children[0]\n const extraClass = this._resolvePossibleFunction(this._config.extraClass)\n\n if (extraClass) {\n template.classList.add(...extraClass.split(' '))\n }\n\n return template\n }\n\n // Private\n _typeCheckConfig(config) {\n super._typeCheckConfig(config)\n this._checkContent(config.content)\n }\n\n _checkContent(arg) {\n for (const [selector, content] of Object.entries(arg)) {\n super._typeCheckConfig({ selector, entry: content }, DefaultContentType)\n }\n }\n\n _setContent(template, content, selector) {\n const templateElement = SelectorEngine.findOne(selector, template)\n\n if (!templateElement) {\n return\n }\n\n content = this._resolvePossibleFunction(content)\n\n if (!content) {\n templateElement.remove()\n return\n }\n\n if (isElement(content)) {\n this._putElementInTemplate(getElement(content), templateElement)\n return\n }\n\n if (this._config.html) {\n templateElement.innerHTML = this._maybeSanitize(content)\n return\n }\n\n templateElement.textContent = content\n }\n\n _maybeSanitize(arg) {\n return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg\n }\n\n _resolvePossibleFunction(arg) {\n return execute(arg, [this])\n }\n\n _putElementInTemplate(element, templateElement) {\n if (this._config.html) {\n templateElement.innerHTML = ''\n templateElement.append(element)\n return\n }\n\n templateElement.textContent = element.textContent\n }\n}\n\nexport default TemplateFactory\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport {\n defineJQueryPlugin, execute, findShadowRoot, getElement, getUID, isRTL, noop\n} from './util/index.js'\nimport { DefaultAllowlist } from './util/sanitizer.js'\nimport TemplateFactory from './util/template-factory.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tooltip'\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`\n\nconst EVENT_MODAL_HIDE = 'hide.bs.modal'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\nconst EVENT_HIDE = 'hide'\nconst EVENT_HIDDEN = 'hidden'\nconst EVENT_SHOW = 'show'\nconst EVENT_SHOWN = 'shown'\nconst EVENT_INSERTED = 'inserted'\nconst EVENT_CLICK = 'click'\nconst EVENT_FOCUSIN = 'focusin'\nconst EVENT_FOCUSOUT = 'focusout'\nconst EVENT_MOUSEENTER = 'mouseenter'\nconst EVENT_MOUSELEAVE = 'mouseleave'\n\nconst AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: isRTL() ? 'left' : 'right',\n BOTTOM: 'bottom',\n LEFT: isRTL() ? 'right' : 'left'\n}\n\nconst Default = {\n allowList: DefaultAllowlist,\n animation: true,\n boundary: 'clippingParents',\n container: false,\n customClass: '',\n delay: 0,\n fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n html: false,\n offset: [0, 6],\n placement: 'top',\n popperConfig: null,\n sanitize: true,\n sanitizeFn: null,\n selector: false,\n template: '<div class=\"tooltip\" role=\"tooltip\">' +\n '<div class=\"tooltip-arrow\"></div>' +\n '<div class=\"tooltip-inner\"></div>' +\n '</div>',\n title: '',\n trigger: 'hover focus'\n}\n\nconst DefaultType = {\n allowList: 'object',\n animation: 'boolean',\n boundary: '(string|element)',\n container: '(string|element|boolean)',\n customClass: '(string|function)',\n delay: '(number|object)',\n fallbackPlacements: 'array',\n html: 'boolean',\n offset: '(array|string|function)',\n placement: '(string|function)',\n popperConfig: '(null|object|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n selector: '(string|boolean)',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass Tooltip extends BaseComponent {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)')\n }\n\n super(element, config)\n\n // Private\n this._isEnabled = true\n this._timeout = 0\n this._isHovered = null\n this._activeTrigger = {}\n this._popper = null\n this._templateFactory = null\n this._newContent = null\n\n // Protected\n this.tip = null\n\n this._setListeners()\n\n if (!this._config.selector) {\n this._fixTitle()\n }\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n enable() {\n this._isEnabled = true\n }\n\n disable() {\n this._isEnabled = false\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled\n }\n\n toggle() {\n if (!this._isEnabled) {\n return\n }\n\n this._activeTrigger.click = !this._activeTrigger.click\n if (this._isShown()) {\n this._leave()\n return\n }\n\n this._enter()\n }\n\n dispose() {\n clearTimeout(this._timeout)\n\n EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n if (this._element.getAttribute('data-bs-original-title')) {\n this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'))\n }\n\n this._disposePopper()\n super.dispose()\n }\n\n show() {\n if (this._element.style.display === 'none') {\n throw new Error('Please use show on visible elements')\n }\n\n if (!(this._isWithContent() && this._isEnabled)) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW))\n const shadowRoot = findShadowRoot(this._element)\n const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element)\n\n if (showEvent.defaultPrevented || !isInTheDom) {\n return\n }\n\n // TODO: v6 remove this or make it optional\n this._disposePopper()\n\n const tip = this._getTipElement()\n\n this._element.setAttribute('aria-describedby', tip.getAttribute('id'))\n\n const { container } = this._config\n\n if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n container.append(tip)\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED))\n }\n\n this._popper = this._createPopper(tip)\n\n tip.classList.add(CLASS_NAME_SHOW)\n\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 if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', noop)\n }\n }\n\n const complete = () => {\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN))\n\n if (this._isHovered === false) {\n this._leave()\n }\n\n this._isHovered = false\n }\n\n this._queueCallback(complete, this.tip, this._isAnimated())\n }\n\n hide() {\n if (!this._isShown()) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE))\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const tip = this._getTipElement()\n tip.classList.remove(CLASS_NAME_SHOW)\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', noop)\n }\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false\n this._activeTrigger[TRIGGER_FOCUS] = false\n this._activeTrigger[TRIGGER_HOVER] = false\n this._isHovered = null // it is a trick to support manual triggering\n\n const complete = () => {\n if (this._isWithActiveTrigger()) {\n return\n }\n\n if (!this._isHovered) {\n this._disposePopper()\n }\n\n this._element.removeAttribute('aria-describedby')\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN))\n }\n\n this._queueCallback(complete, this.tip, this._isAnimated())\n }\n\n update() {\n if (this._popper) {\n this._popper.update()\n }\n }\n\n // Protected\n _isWithContent() {\n return Boolean(this._getTitle())\n }\n\n _getTipElement() {\n if (!this.tip) {\n this.tip = this._createTipElement(this._newContent || this._getContentForTemplate())\n }\n\n return this.tip\n }\n\n _createTipElement(content) {\n const tip = this._getTemplateFactory(content).toHtml()\n\n // TODO: remove this check in v6\n if (!tip) {\n return null\n }\n\n tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n // TODO: v6 the following can be achieved with CSS only\n tip.classList.add(`bs-${this.constructor.NAME}-auto`)\n\n const tipId = getUID(this.constructor.NAME).toString()\n\n tip.setAttribute('id', tipId)\n\n if (this._isAnimated()) {\n tip.classList.add(CLASS_NAME_FADE)\n }\n\n return tip\n }\n\n setContent(content) {\n this._newContent = content\n if (this._isShown()) {\n this._disposePopper()\n this.show()\n }\n }\n\n _getTemplateFactory(content) {\n if (this._templateFactory) {\n this._templateFactory.changeContent(content)\n } else {\n this._templateFactory = new TemplateFactory({\n ...this._config,\n // the `content` var has to be after `this._config`\n // to override config.content in case of popover\n content,\n extraClass: this._resolvePossibleFunction(this._config.customClass)\n })\n }\n\n return this._templateFactory\n }\n\n _getContentForTemplate() {\n return {\n [SELECTOR_TOOLTIP_INNER]: this._getTitle()\n }\n }\n\n _getTitle() {\n return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title')\n }\n\n // Private\n _initializeOnDelegatedTarget(event) {\n return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig())\n }\n\n _isAnimated() {\n return this._config.animation || (this.tip && this.tip.classList.contains(CLASS_NAME_FADE))\n }\n\n _isShown() {\n return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW)\n }\n\n _createPopper(tip) {\n const placement = execute(this._config.placement, [this, tip, this._element])\n const attachment = AttachmentMap[placement.toUpperCase()]\n return Popper.createPopper(this._element, tip, this._getPopperConfig(attachment))\n }\n\n _getOffset() {\n const { offset } = this._config\n\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10))\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element)\n }\n\n return offset\n }\n\n _resolvePossibleFunction(arg) {\n return execute(arg, [this._element])\n }\n\n _getPopperConfig(attachment) {\n const defaultBsPopperConfig = {\n placement: attachment,\n modifiers: [\n {\n name: 'flip',\n options: {\n fallbackPlacements: this._config.fallbackPlacements\n }\n },\n {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n },\n {\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n },\n {\n name: 'arrow',\n options: {\n element: `.${this.constructor.NAME}-arrow`\n }\n },\n {\n name: 'preSetPlacement',\n enabled: true,\n phase: 'beforeMain',\n fn: data => {\n // Pre-set Popper's placement attribute in order to read the arrow sizes properly.\n // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement\n this._getTipElement().setAttribute('data-popper-placement', data.state.placement)\n }\n }\n ]\n }\n\n return {\n ...defaultBsPopperConfig,\n ...execute(this._config.popperConfig, [defaultBsPopperConfig])\n }\n }\n\n _setListeners() {\n const triggers = this._config.trigger.split(' ')\n\n for (const trigger of triggers) {\n if (trigger === 'click') {\n EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK), this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event)\n context.toggle()\n })\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ?\n this.constructor.eventName(EVENT_MOUSEENTER) :\n this.constructor.eventName(EVENT_FOCUSIN)\n const eventOut = trigger === TRIGGER_HOVER ?\n this.constructor.eventName(EVENT_MOUSELEAVE) :\n this.constructor.eventName(EVENT_FOCUSOUT)\n\n EventHandler.on(this._element, eventIn, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event)\n context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true\n context._enter()\n })\n EventHandler.on(this._element, eventOut, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event)\n context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] =\n context._element.contains(event.relatedTarget)\n\n context._leave()\n })\n }\n }\n\n this._hideModalHandler = () => {\n if (this._element) {\n this.hide()\n }\n }\n\n EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n }\n\n _fixTitle() {\n const title = this._element.getAttribute('title')\n\n if (!title) {\n return\n }\n\n if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n this._element.setAttribute('aria-label', title)\n }\n\n this._element.setAttribute('data-bs-original-title', title) // DO NOT USE IT. Is only for backwards compatibility\n this._element.removeAttribute('title')\n }\n\n _enter() {\n if (this._isShown() || this._isHovered) {\n this._isHovered = true\n return\n }\n\n this._isHovered = true\n\n this._setTimeout(() => {\n if (this._isHovered) {\n this.show()\n }\n }, this._config.delay.show)\n }\n\n _leave() {\n if (this._isWithActiveTrigger()) {\n return\n }\n\n this._isHovered = false\n\n this._setTimeout(() => {\n if (!this._isHovered) {\n this.hide()\n }\n }, this._config.delay.hide)\n }\n\n _setTimeout(handler, timeout) {\n clearTimeout(this._timeout)\n this._timeout = setTimeout(handler, timeout)\n }\n\n _isWithActiveTrigger() {\n return Object.values(this._activeTrigger).includes(true)\n }\n\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n for (const dataAttribute of Object.keys(dataAttributes)) {\n if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n delete dataAttributes[dataAttribute]\n }\n }\n\n config = {\n ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {})\n }\n config = this._mergeConfigObj(config)\n config = this._configAfterMerge(config)\n this._typeCheckConfig(config)\n return config\n }\n\n _configAfterMerge(config) {\n config.container = config.container === false ? document.body : getElement(config.container)\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 return config\n }\n\n _getDelegateConfig() {\n const config = {}\n\n for (const [key, value] of Object.entries(this._config)) {\n if (this.constructor.Default[key] !== value) {\n config[key] = value\n }\n }\n\n config.selector = false\n config.trigger = 'manual'\n\n // In the future can be replaced with:\n // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n // `Object.fromEntries(keysWithDifferentValues)`\n return config\n }\n\n _disposePopper() {\n if (this._popper) {\n this._popper.destroy()\n this._popper = null\n }\n\n if (this.tip) {\n this.tip.remove()\n this.tip = null\n }\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tooltip.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tooltip)\n\nexport default Tooltip\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Tooltip from './tooltip.js'\nimport { defineJQueryPlugin } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'popover'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\nconst Default = {\n ...Tooltip.Default,\n content: '',\n offset: [0, 8],\n placement: 'right',\n template: '<div class=\"popover\" role=\"tooltip\">' +\n '<div class=\"popover-arrow\"></div>' +\n '<h3 class=\"popover-header\"></h3>' +\n '<div class=\"popover-body\"></div>' +\n '</div>',\n trigger: 'click'\n}\n\nconst DefaultType = {\n ...Tooltip.DefaultType,\n content: '(null|string|element|function)'\n}\n\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Overrides\n _isWithContent() {\n return this._getTitle() || this._getContent()\n }\n\n // Private\n _getContentForTemplate() {\n return {\n [SELECTOR_TITLE]: this._getTitle(),\n [SELECTOR_CONTENT]: this._getContent()\n }\n }\n\n _getContent() {\n return this._resolvePossibleFunction(this._config.content)\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Popover.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Popover)\n\nexport default Popover\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n defineJQueryPlugin, getElement, isDisabled, isVisible\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_TARGET_LINKS = '[href]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst Default = {\n offset: null, // TODO: v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: '0px 0px -25%',\n smoothScroll: false,\n target: null,\n threshold: [0.1, 0.5, 1]\n}\n\nconst DefaultType = {\n offset: '(number|null)', // TODO v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: 'string',\n smoothScroll: 'boolean',\n target: 'element',\n threshold: 'array'\n}\n\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n // this._element is the observablesContainer and config.target the menu links wrapper\n this._targetLinks = new Map()\n this._observableSections = new Map()\n this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element\n this._activeTarget = null\n this._observer = null\n this._previousScrollData = {\n visibleEntryTop: 0,\n parentScrollTop: 0\n }\n this.refresh() // initialize\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n refresh() {\n this._initializeTargetsAndObservables()\n this._maybeEnableSmoothScroll()\n\n if (this._observer) {\n this._observer.disconnect()\n } else {\n this._observer = this._getNewObserver()\n }\n\n for (const section of this._observableSections.values()) {\n this._observer.observe(section)\n }\n }\n\n dispose() {\n this._observer.disconnect()\n super.dispose()\n }\n\n // Private\n _configAfterMerge(config) {\n // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case\n config.target = getElement(config.target) || document.body\n\n // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only\n config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin\n\n if (typeof config.threshold === 'string') {\n config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value))\n }\n\n return config\n }\n\n _maybeEnableSmoothScroll() {\n if (!this._config.smoothScroll) {\n return\n }\n\n // unregister any previous listeners\n EventHandler.off(this._config.target, EVENT_CLICK)\n\n EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {\n const observableSection = this._observableSections.get(event.target.hash)\n if (observableSection) {\n event.preventDefault()\n const root = this._rootElement || window\n const height = observableSection.offsetTop - this._element.offsetTop\n if (root.scrollTo) {\n root.scrollTo({ top: height, behavior: 'smooth' })\n return\n }\n\n // Chrome 60 doesn't support `scrollTo`\n root.scrollTop = height\n }\n })\n }\n\n _getNewObserver() {\n const options = {\n root: this._rootElement,\n threshold: this._config.threshold,\n rootMargin: this._config.rootMargin\n }\n\n return new IntersectionObserver(entries => this._observerCallback(entries), options)\n }\n\n // The logic of selection\n _observerCallback(entries) {\n const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`)\n const activate = entry => {\n this._previousScrollData.visibleEntryTop = entry.target.offsetTop\n this._process(targetElement(entry))\n }\n\n const parentScrollTop = (this._rootElement || document.documentElement).scrollTop\n const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop\n this._previousScrollData.parentScrollTop = parentScrollTop\n\n for (const entry of entries) {\n if (!entry.isIntersecting) {\n this._activeTarget = null\n this._clearActiveClass(targetElement(entry))\n\n continue\n }\n\n const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop\n // if we are scrolling down, pick the bigger offsetTop\n if (userScrollsDown && entryIsLowerThanPrevious) {\n activate(entry)\n // if parent isn't scrolled, let's keep the first visible item, breaking the iteration\n if (!parentScrollTop) {\n return\n }\n\n continue\n }\n\n // if we are scrolling up, pick the smallest offsetTop\n if (!userScrollsDown && !entryIsLowerThanPrevious) {\n activate(entry)\n }\n }\n }\n\n _initializeTargetsAndObservables() {\n this._targetLinks = new Map()\n this._observableSections = new Map()\n\n const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target)\n\n for (const anchor of targetLinks) {\n // ensure that the anchor has an id and is not disabled\n if (!anchor.hash || isDisabled(anchor)) {\n continue\n }\n\n const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element)\n\n // ensure that the observableSection exists & is visible\n if (isVisible(observableSection)) {\n this._targetLinks.set(decodeURI(anchor.hash), anchor)\n this._observableSections.set(anchor.hash, observableSection)\n }\n }\n }\n\n _process(target) {\n if (this._activeTarget === target) {\n return\n }\n\n this._clearActiveClass(this._config.target)\n this._activeTarget = target\n target.classList.add(CLASS_NAME_ACTIVE)\n this._activateParents(target)\n\n EventHandler.trigger(this._element, EVENT_ACTIVATE, { relatedTarget: target })\n }\n\n _activateParents(target) {\n // Activate dropdown parents\n if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, target.closest(SELECTOR_DROPDOWN))\n .classList.add(CLASS_NAME_ACTIVE)\n return\n }\n\n for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {\n // Set triggered links parents as active\n // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {\n item.classList.add(CLASS_NAME_ACTIVE)\n }\n }\n }\n\n _clearActiveClass(parent) {\n parent.classList.remove(CLASS_NAME_ACTIVE)\n\n const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE}`, parent)\n for (const node of activeNodes) {\n node.classList.remove(CLASS_NAME_ACTIVE)\n }\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = ScrollSpy.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {\n ScrollSpy.getOrCreateInstance(spy)\n }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(ScrollSpy)\n\nexport default ScrollSpy\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { defineJQueryPlugin, getNextActiveElement, isDisabled } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}`\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_DROPDOWN = 'dropdown'\n\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\nconst SELECTOR_DROPDOWN_MENU = '.dropdown-menu'\nconst NOT_SELECTOR_DROPDOWN_TOGGLE = `:not(${SELECTOR_DROPDOWN_TOGGLE})`\n\nconst SELECTOR_TAB_PANEL = '.list-group, .nav, [role=\"tablist\"]'\nconst SELECTOR_OUTER = '.nav-item, .list-group-item'\nconst SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role=\"tab\"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]' // TODO: could only be `tab` in v6\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`\n\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle=\"tab\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"pill\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"list\"]`\n\n/**\n * Class definition\n */\n\nclass Tab extends BaseComponent {\n constructor(element) {\n super(element)\n this._parent = this._element.closest(SELECTOR_TAB_PANEL)\n\n if (!this._parent) {\n return\n // TODO: should throw exception in v6\n // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_INNER_ELEM}`)\n }\n\n // Set up initial aria attributes\n this._setInitialAttributes(this._parent, this._getChildren())\n\n EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n }\n\n // Getters\n static get NAME() {\n return NAME\n }\n\n // Public\n show() { // Shows this elem and deactivate the active sibling if exists\n const innerElem = this._element\n if (this._elemIsActive(innerElem)) {\n return\n }\n\n // Search for active tab on same parent to deactivate it\n const active = this._getActiveElem()\n\n const hideEvent = active ?\n EventHandler.trigger(active, EVENT_HIDE, { relatedTarget: innerElem }) :\n null\n\n const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW, { relatedTarget: active })\n\n if (showEvent.defaultPrevented || (hideEvent && hideEvent.defaultPrevented)) {\n return\n }\n\n this._deactivate(active, innerElem)\n this._activate(innerElem, active)\n }\n\n // Private\n _activate(element, relatedElem) {\n if (!element) {\n return\n }\n\n element.classList.add(CLASS_NAME_ACTIVE)\n\n this._activate(SelectorEngine.getElementFromSelector(element)) // Search and activate/show the proper section\n\n const complete = () => {\n if (element.getAttribute('role') !== 'tab') {\n element.classList.add(CLASS_NAME_SHOW)\n return\n }\n\n element.removeAttribute('tabindex')\n element.setAttribute('aria-selected', true)\n this._toggleDropDown(element, true)\n EventHandler.trigger(element, EVENT_SHOWN, {\n relatedTarget: relatedElem\n })\n }\n\n this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n }\n\n _deactivate(element, relatedElem) {\n if (!element) {\n return\n }\n\n element.classList.remove(CLASS_NAME_ACTIVE)\n element.blur()\n\n this._deactivate(SelectorEngine.getElementFromSelector(element)) // Search and deactivate the shown section too\n\n const complete = () => {\n if (element.getAttribute('role') !== 'tab') {\n element.classList.remove(CLASS_NAME_SHOW)\n return\n }\n\n element.setAttribute('aria-selected', false)\n element.setAttribute('tabindex', '-1')\n this._toggleDropDown(element, false)\n EventHandler.trigger(element, EVENT_HIDDEN, { relatedTarget: relatedElem })\n }\n\n this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n }\n\n _keydown(event) {\n if (!([ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, HOME_KEY, END_KEY].includes(event.key))) {\n return\n }\n\n event.stopPropagation()// stopPropagation/preventDefault both added to support up/down keys without scrolling the page\n event.preventDefault()\n\n const children = this._getChildren().filter(element => !isDisabled(element))\n let nextActiveElement\n\n if ([HOME_KEY, END_KEY].includes(event.key)) {\n nextActiveElement = children[event.key === HOME_KEY ? 0 : children.length - 1]\n } else {\n const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key)\n nextActiveElement = getNextActiveElement(children, event.target, isNext, true)\n }\n\n if (nextActiveElement) {\n nextActiveElement.focus({ preventScroll: true })\n Tab.getOrCreateInstance(nextActiveElement).show()\n }\n }\n\n _getChildren() { // collection of inner elements\n return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent)\n }\n\n _getActiveElem() {\n return this._getChildren().find(child => this._elemIsActive(child)) || null\n }\n\n _setInitialAttributes(parent, children) {\n this._setAttributeIfNotExists(parent, 'role', 'tablist')\n\n for (const child of children) {\n this._setInitialAttributesOnChild(child)\n }\n }\n\n _setInitialAttributesOnChild(child) {\n child = this._getInnerElement(child)\n const isActive = this._elemIsActive(child)\n const outerElem = this._getOuterElement(child)\n child.setAttribute('aria-selected', isActive)\n\n if (outerElem !== child) {\n this._setAttributeIfNotExists(outerElem, 'role', 'presentation')\n }\n\n if (!isActive) {\n child.setAttribute('tabindex', '-1')\n }\n\n this._setAttributeIfNotExists(child, 'role', 'tab')\n\n // set attributes to the related panel too\n this._setInitialAttributesOnTargetPanel(child)\n }\n\n _setInitialAttributesOnTargetPanel(child) {\n const target = SelectorEngine.getElementFromSelector(child)\n\n if (!target) {\n return\n }\n\n this._setAttributeIfNotExists(target, 'role', 'tabpanel')\n\n if (child.id) {\n this._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`)\n }\n }\n\n _toggleDropDown(element, open) {\n const outerElem = this._getOuterElement(element)\n if (!outerElem.classList.contains(CLASS_DROPDOWN)) {\n return\n }\n\n const toggle = (selector, className) => {\n const element = SelectorEngine.findOne(selector, outerElem)\n if (element) {\n element.classList.toggle(className, open)\n }\n }\n\n toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE)\n toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW)\n outerElem.setAttribute('aria-expanded', open)\n }\n\n _setAttributeIfNotExists(element, attribute, value) {\n if (!element.hasAttribute(attribute)) {\n element.setAttribute(attribute, value)\n }\n }\n\n _elemIsActive(elem) {\n return elem.classList.contains(CLASS_NAME_ACTIVE)\n }\n\n // Try to get the inner element (usually the .nav-link)\n _getInnerElement(elem) {\n return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem)\n }\n\n // Try to get the outer element (usually the .nav-item)\n _getOuterElement(elem) {\n return elem.closest(SELECTOR_OUTER) || elem\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tab.getOrCreateInstance(this)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n Tab.getOrCreateInstance(this).show()\n})\n\n/**\n * Initialize on focus\n */\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {\n Tab.getOrCreateInstance(element)\n }\n})\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tab)\n\nexport default Tab\n", "/**\n * --------------------------------------------------------------------------\n * Bootstrap toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport { defineJQueryPlugin, reflow } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'toast'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide' // @deprecated - kept here only for backwards compatibility\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst DefaultType = {\n animation: 'boolean',\n autohide: 'boolean',\n delay: 'number'\n}\n\nconst Default = {\n animation: true,\n autohide: true,\n delay: 5000\n}\n\n/**\n * Class definition\n */\n\nclass Toast extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._timeout = null\n this._hasMouseInteraction = false\n this._hasKeyboardInteraction = false\n this._setListeners()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n show() {\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._clearTimeout()\n\n if (this._config.animation) {\n this._element.classList.add(CLASS_NAME_FADE)\n }\n\n const complete = () => {\n this._element.classList.remove(CLASS_NAME_SHOWING)\n EventHandler.trigger(this._element, EVENT_SHOWN)\n\n this._maybeScheduleHide()\n }\n\n this._element.classList.remove(CLASS_NAME_HIDE) // @deprecated\n reflow(this._element)\n this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING)\n\n this._queueCallback(complete, this._element, this._config.animation)\n }\n\n hide() {\n if (!this.isShown()) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const complete = () => {\n this._element.classList.add(CLASS_NAME_HIDE) // @deprecated\n this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW)\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._element.classList.add(CLASS_NAME_SHOWING)\n this._queueCallback(complete, this._element, this._config.animation)\n }\n\n dispose() {\n this._clearTimeout()\n\n if (this.isShown()) {\n this._element.classList.remove(CLASS_NAME_SHOW)\n }\n\n super.dispose()\n }\n\n isShown() {\n return this._element.classList.contains(CLASS_NAME_SHOW)\n }\n\n // Private\n\n _maybeScheduleHide() {\n if (!this._config.autohide) {\n return\n }\n\n if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n return\n }\n\n this._timeout = setTimeout(() => {\n this.hide()\n }, this._config.delay)\n }\n\n _onInteraction(event, isInteracting) {\n switch (event.type) {\n case 'mouseover':\n case 'mouseout': {\n this._hasMouseInteraction = isInteracting\n break\n }\n\n case 'focusin':\n case 'focusout': {\n this._hasKeyboardInteraction = isInteracting\n break\n }\n\n default: {\n break\n }\n }\n\n if (isInteracting) {\n this._clearTimeout()\n return\n }\n\n const nextElement = event.relatedTarget\n if (this._element === nextElement || this._element.contains(nextElement)) {\n return\n }\n\n this._maybeScheduleHide()\n }\n\n _setListeners() {\n EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true))\n EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false))\n EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true))\n EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false))\n }\n\n _clearTimeout() {\n clearTimeout(this._timeout)\n this._timeout = null\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Toast.getOrCreateInstance(this, config)\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\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Toast)\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Toast)\n\nexport default Toast\n", "function animate(o, n, i) { -1 != effects.indexOf(n) && (i ? $(o).removeClass(\"animate-in animate-out\").removeClass(effects.join(\" \")).addClass(\"animating infinite\").addClass(n) : $(o).removeClass(\"animate-in animate-out infinite\").removeClass(effects.join(\" \")).addClass(\"animating\").addClass(n).one(\"webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend\", function () { $(o).removeClass(\"animating\").removeClass(effects.join(\" \")) })) } function animateOut(o, n, i) { -1 != effects.indexOf(n) && $(o).removeClass(\"infinite\").removeClass(effects.join(\" \")).addClass(\"animating\").addClass(n).one(\"webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend\", function () { $(o).addClass(\"animate-out\").removeClass(\"animating\").removeClass(effects.join(\" \")), i && $(o).remove() }) } function animateEnd(o, n) { $(o).removeClass(\"animating infinite\").removeClass(effects.join(\" \")), n && $(o).remove() } $(document).ready(function () { $(\"html\").hasClass(\"no-js\") && $(\"html\").toggleClass(\"no-js js\"), $(window).width() <= 568 ? $(\".animate-in\").removeClass(\"animate-in animating animate-out infinite\").removeClass(effects.join(\" \")) : $(\".animate-in\").each(function (o, n) { var i = $(n).attr(\"data-anim-type\"), e = $(n).attr(\"data-anim-delay\"); $(n).appear(function () { setTimeout(function () { $(n).addClass(\"animating\").addClass(i).removeClass(\"animate-in\") }, e), $(n).one(\"webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend\", function () { $(n).removeClass(\"animating\").removeClass(effects.join(\" \")) }) }, { accX: -1, accY: -10 }) }), console.log(effects.length + \" Animations\") }), $(window).resize(function () { $(window).width() <= 568 && $(\".animate-in\").removeClass(\"animate-in animating animate-out infinite\").removeClass(effects.join(\" \")) }); var effects = [\"fade-in\", \"fade-in-up\", \"fade-in-up-big\", \"fade-in-up-large\", \"fade-in-down\", \"fade-in-down-big\", \"fade-in-down-large\", \"fade-in-left\", \"fade-in-left-big\", \"fade-in-left-large\", \"fade-in-right\", \"fade-in-right-big\", \"fade-in-right-large\", \"fade-in-up-left\", \"fade-in-up-left-big\", \"fade-in-up-left-large\", \"fade-in-up-right\", \"fade-in-up-right-big\", \"fade-in-up-right-large\", \"fade-in-down-left\", \"fade-in-down-left-big\", \"fade-in-down-left-large\", \"fade-in-down-right\", \"fade-in-down-right-big\", \"fade-in-down-right-large\", \"fade-out\", \"fade-out-up\", \"fade-out-up-big\", \"fade-out-up-large\", \"fade-out-down\", \"fade-out-down-big\", \"fade-out-down-large\", \"fade-out-left\", \"fade-out-left-big\", \"fade-out-left-large\", \"fade-out-right\", \"fade-out-right-big\", \"fade-out-right-large\", \"fade-out-up-left\", \"fade-out-up-left-big\", \"fade-out-up-left-large\", \"fade-out-up-right\", \"fade-out-up-right-big\", \"fade-out-up-right-large\", \"fade-out-down-left\", \"fade-out-down-left-big\", \"fade-out-down-left-large\", \"fade-out-down-right\", \"fade-out-down-right-big\", \"fade-out-down-right-large\", \"bounce-in\", \"bounce-in-big\", \"bounce-in-large\", \"bounce-in-up\", \"bounce-in-up-big\", \"bounce-in-up-large\", \"bounce-in-down\", \"bounce-in-down-big\", \"bounce-in-down-large\", \"bounce-in-left\", \"bounce-in-left-big\", \"bounce-in-left-large\", \"bounce-in-right\", \"bounce-in-right-big\", \"bounce-in-right-large\", \"bounce-in-up-left\", \"bounce-in-up-left-big\", \"bounce-in-up-left-large\", \"bounce-in-up-right\", \"bounce-in-up-right-big\", \"bounce-in-up-right-large\", \"bounce-in-down-left\", \"bounce-in-down-left-big\", \"bounce-in-down-left-large\", \"bounce-in-down-right\", \"bounce-in-down-right-big\", \"bounce-in-down-right-large\", \"bounce-out\", \"bounce-out-big\", \"bounce-out-large\", \"bounce-out-up\", \"bounce-out-up-big\", \"bounce-out-up-large\", \"bounce-out-down\", \"bounce-out-down-big\", \"bounce-out-down-large\", \"bounce-out-left\", \"bounce-out-left-big\", \"bounce-out-left-large\", \"bounce-out-right\", \"bounce-out-right-big\", \"bounce-out-right-large\", \"bounce-out-up-left\", \"bounce-out-up-left-big\", \"bounce-out-up-left-large\", \"bounce-out-up-right\", \"bounce-out-up-right-big\", \"bounce-out-up-right-large\", \"bounce-out-down-left\", \"bounce-out-down-left-big\", \"bounce-out-down-left-large\", \"bounce-out-down-right\", \"bounce-out-down-right-big\", \"bounce-out-down-right-large\", \"zoom-in\", \"zoom-in-up\", \"zoom-in-up-big\", \"zoom-in-up-large\", \"zoom-in-down\", \"zoom-in-down-big\", \"zoom-in-down-large\", \"zoom-in-left\", \"zoom-in-left-big\", \"zoom-in-left-large\", \"zoom-in-right\", \"zoom-in-right-big\", \"zoom-in-right-large\", \"zoom-in-up-left\", \"zoom-in-up-left-big\", \"zoom-in-up-left-large\", \"zoom-in-up-right\", \"zoom-in-up-right-big\", \"zoom-in-up-right-large\", \"zoom-in-down-left\", \"zoom-in-down-left-big\", \"zoom-in-down-left-large\", \"zoom-in-down-right\", \"zoom-in-down-right-big\", \"zoom-in-down-right-large\", \"zoom-out\", \"zoom-out-up\", \"zoom-out-up-big\", \"zoom-out-up-large\", \"zoom-out-down\", \"zoom-out-down-big\", \"zoom-out-down-large\", \"zoom-out-left\", \"zoom-out-left-big\", \"zoom-out-left-large\", \"zoom-out-right\", \"zoom-out-right-big\", \"zoom-out-right-large\", \"zoom-out-up-left\", \"zoom-out-up-left-big\", \"zoom-out-up-left-large\", \"zoom-out-up-right\", \"zoom-out-up-right-big\", \"zoom-out-up-right-large\", \"zoom-out-down-left\", \"zoom-out-down-left-big\", \"zoom-out-down-left-large\", \"zoom-out-down-right\", \"zoom-out-down-right-big\", \"zoom-out-down-right-large\", \"flip-in-x\", \"flip-in-y\", \"flip-in-top-front\", \"flip-in-top-back\", \"flip-in-bottom-front\", \"flip-in-bottom-back\", \"flip-in-left-front\", \"flip-in-left-back\", \"flip-in-right-front\", \"flip-in-right-back\", \"flip-out-x\", \"flip-out-y\", \"flip-out-top-front\", \"flip-out-top-back\", \"flip-out-bottom-front\", \"flip-out-bottom-back\", \"flip-out-left-front\", \"flip-out-left-back\", \"flip-out-right-front\", \"flip-out-right-back\", \"flash\", \"strobe\", \"shake-x\", \"shake-y\", \"bounce\", \"tada\", \"rubber-band\", \"swing\", \"spin\", \"spin-reverse\", \"slingshot\", \"slingshot-reverse\", \"wobble\", \"pulse\", \"pulsate\", \"heartbeat\", \"panic\"];", "/*!\n * Bootstrap v3.0.3 (http://getbootstrap.com)\n * Copyright 2013 Twitter, Inc.\n * Licensed under http://www.apache.org/licenses/LICENSE-2.0\n */\n\nif (typeof jQuery === \"undefined\") { throw new Error(\"Bootstrap requires jQuery\") }\n\n/* ========================================================================\n * Bootstrap: transition.js v3.0.3\n * http://getbootstrap.com/javascript/#transitions\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ======================================================================== */\n\n\n+function ($) { \"use strict\";\n\n // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)\n // ============================================================\n\n function transitionEnd() {\n var el = document.createElement('bootstrap')\n\n var transEndEventNames = {\n 'WebkitTransition' : 'webkitTransitionEnd'\n , 'MozTransition' : 'transitionend'\n , 'OTransition' : 'oTransitionEnd otransitionend'\n , 'transition' : 'transitionend'\n }\n\n for (var name in transEndEventNames) {\n if (el.style[name] !== undefined) {\n return { end: transEndEventNames[name] }\n }\n }\n }\n\n // http://blog.alexmaccaw.com/css-transitions\n $.fn.emulateTransitionEnd = function (duration) {\n var called = false, $el = this\n $(this).one($.support.transition.end, function () { called = true })\n var callback = function () { if (!called) $($el).trigger($.support.transition.end) }\n setTimeout(callback, duration)\n return this\n }\n\n $(function () {\n $.support.transition = transitionEnd()\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: alert.js v3.0.3\n * http://getbootstrap.com/javascript/#alerts\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ======================================================================== */\n\n\n+function ($) { \"use strict\";\n\n // ALERT CLASS DEFINITION\n // ======================\n\n var dismiss = '[data-dismiss=\"alert\"]'\n var Alert = function (el) {\n $(el).on('click', dismiss, this.close)\n }\n\n Alert.prototype.close = function (e) {\n var $this = $(this)\n var selector = $this.attr('data-target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n var $parent = $(selector)\n\n if (e) e.preventDefault()\n\n if (!$parent.length) {\n $parent = $this.hasClass('alert') ? $this : $this.parent()\n }\n\n $parent.trigger(e = $.Event('close.bs.alert'))\n\n if (e.isDefaultPrevented()) return\n\n $parent.removeClass('in')\n\n function removeElement() {\n $parent.trigger('closed.bs.alert').remove()\n }\n\n $.support.transition && $parent.hasClass('fade') ?\n $parent\n .one($.support.transition.end, removeElement)\n .emulateTransitionEnd(150) :\n removeElement()\n }\n\n\n // ALERT PLUGIN DEFINITION\n // =======================\n\n var old = $.fn.alert\n\n $.fn.alert = function (option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.alert')\n\n if (!data) $this.data('bs.alert', (data = new Alert(this)))\n if (typeof option == 'string') data[option].call($this)\n })\n }\n\n $.fn.alert.Constructor = Alert\n\n\n // ALERT NO CONFLICT\n // =================\n\n $.fn.alert.noConflict = function () {\n $.fn.alert = old\n return this\n }\n\n\n // ALERT DATA-API\n // ==============\n\n $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: button.js v3.0.3\n * http://getbootstrap.com/javascript/#buttons\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ======================================================================== */\n\n\n+function ($) { \"use strict\";\n\n // BUTTON PUBLIC CLASS DEFINITION\n // ==============================\n\n var Button = function (element, options) {\n this.$element = $(element)\n this.options = $.extend({}, Button.DEFAULTS, options)\n }\n\n Button.DEFAULTS = {\n loadingText: 'loading...'\n }\n\n Button.prototype.setState = function (state) {\n var d = 'disabled'\n var $el = this.$element\n var val = $el.is('input') ? 'val' : 'html'\n var data = $el.data()\n\n state = state + 'Text'\n\n if (!data.resetText) $el.data('resetText', $el[val]())\n\n $el[val](data[state] || this.options[state])\n\n // push to event loop to allow forms to submit\n setTimeout(function () {\n state == 'loadingText' ?\n $el.addClass(d).attr(d, d) :\n $el.removeClass(d).removeAttr(d);\n }, 0)\n }\n\n Button.prototype.toggle = function () {\n var $parent = this.$element.closest('[data-toggle=\"buttons\"]')\n var changed = true\n\n if ($parent.length) {\n var $input = this.$element.find('input')\n if ($input.prop('type') === 'radio') {\n // see if clicking on current one\n if ($input.prop('checked') && this.$element.hasClass('active'))\n changed = false\n else\n $parent.find('.active').removeClass('active')\n }\n if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change')\n }\n\n if (changed) this.$element.toggleClass('active')\n }\n\n\n // BUTTON PLUGIN DEFINITION\n // ========================\n\n var old = $.fn.button\n\n $.fn.button = function (option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.button')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.button', (data = new Button(this, options)))\n\n if (option == 'toggle') data.toggle()\n else if (option) data.setState(option)\n })\n }\n\n $.fn.button.Constructor = Button\n\n\n // BUTTON NO CONFLICT\n // ==================\n\n $.fn.button.noConflict = function () {\n $.fn.button = old\n return this\n }\n\n\n // BUTTON DATA-API\n // ===============\n\n $(document).on('click.bs.button.data-api', '[data-toggle^=button]', function (e) {\n var $btn = $(e.target)\n if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')\n $btn.button('toggle')\n e.preventDefault()\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: carousel.js v3.0.3\n * http://getbootstrap.com/javascript/#carousel\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ======================================================================== */\n\n\n+function ($) { \"use strict\";\n\n // CAROUSEL CLASS DEFINITION\n // =========================\n\n var Carousel = function (element, options) {\n this.$element = $(element)\n this.$indicators = this.$element.find('.carousel-indicators')\n this.options = options\n this.paused =\n this.sliding =\n this.interval =\n this.$active =\n this.$items = null\n\n this.options.pause == 'hover' && this.$element\n .on('mouseenter', $.proxy(this.pause, this))\n .on('mouseleave', $.proxy(this.cycle, this))\n }\n\n Carousel.DEFAULTS = {\n interval: 5000\n , pause: 'hover'\n , wrap: true\n }\n\n Carousel.prototype.cycle = function (e) {\n e || (this.paused = false)\n\n this.interval && clearInterval(this.interval)\n\n this.options.interval\n && !this.paused\n && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))\n\n return this\n }\n\n Carousel.prototype.getActiveIndex = function () {\n this.$active = this.$element.find('.item.active')\n this.$items = this.$active.parent().children()\n\n return this.$items.index(this.$active)\n }\n\n Carousel.prototype.to = function (pos) {\n var that = this\n var activeIndex = this.getActiveIndex()\n\n if (pos > (this.$items.length - 1) || pos < 0) return\n\n if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) })\n if (activeIndex == pos) return this.pause().cycle()\n\n return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos]))\n }\n\n Carousel.prototype.pause = function (e) {\n e || (this.paused = true)\n\n if (this.$element.find('.next, .prev').length && $.support.transition.end) {\n this.$element.trigger($.support.transition.end)\n this.cycle(true)\n }\n\n this.interval = clearInterval(this.interval)\n\n return this\n }\n\n Carousel.prototype.next = function () {\n if (this.sliding) return\n return this.slide('next')\n }\n\n Carousel.prototype.prev = function () {\n if (this.sliding) return\n return this.slide('prev')\n }\n\n Carousel.prototype.slide = function (type, next) {\n var $active = this.$element.find('.item.active')\n var $next = next || $active[type]()\n var isCycling = this.interval\n var direction = type == 'next' ? 'left' : 'right'\n var fallback = type == 'next' ? 'first' : 'last'\n var that = this\n\n if (!$next.length) {\n if (!this.options.wrap) return\n $next = this.$element.find('.item')[fallback]()\n }\n\n this.sliding = true\n\n isCycling && this.pause()\n\n var e = $.Event('slide.bs.carousel', { relatedTarget: $next[0], direction: direction })\n\n if ($next.hasClass('active')) return\n\n if (this.$indicators.length) {\n this.$indicators.find('.active').removeClass('active')\n this.$element.one('slid.bs.carousel', function () {\n var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()])\n $nextIndicator && $nextIndicator.addClass('active')\n })\n }\n\n if ($.support.transition && this.$element.hasClass('slide')) {\n this.$element.trigger(e)\n if (e.isDefaultPrevented()) return\n $next.addClass(type)\n $next[0].offsetWidth // force reflow\n $active.addClass(direction)\n $next.addClass(direction)\n $active\n .one($.support.transition.end, function () {\n $next.removeClass([type, direction].join(' ')).addClass('active')\n $active.removeClass(['active', direction].join(' '))\n that.sliding = false\n setTimeout(function () { that.$element.trigger('slid.bs.carousel') }, 0)\n })\n .emulateTransitionEnd(600)\n } else {\n this.$element.trigger(e)\n if (e.isDefaultPrevented()) return\n $active.removeClass('active')\n $next.addClass('active')\n this.sliding = false\n this.$element.trigger('slid.bs.carousel')\n }\n\n isCycling && this.cycle()\n\n return this\n }\n\n\n // CAROUSEL PLUGIN DEFINITION\n // ==========================\n\n var old = $.fn.carousel\n\n $.fn.carousel = function (option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.carousel')\n var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)\n var action = typeof option == 'string' ? option : options.slide\n\n if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))\n if (typeof option == 'number') data.to(option)\n else if (action) data[action]()\n else if (options.interval) data.pause().cycle()\n })\n }\n\n $.fn.carousel.Constructor = Carousel\n\n\n // CAROUSEL NO CONFLICT\n // ====================\n\n $.fn.carousel.noConflict = function () {\n $.fn.carousel = old\n return this\n }\n\n\n // CAROUSEL DATA-API\n // =================\n\n $(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) {\n var $this = $(this), href\n var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '')) //strip for ie7\n var options = $.extend({}, $target.data(), $this.data())\n var slideIndex = $this.attr('data-slide-to')\n if (slideIndex) options.interval = false\n\n $target.carousel(options)\n\n if (slideIndex = $this.attr('data-slide-to')) {\n $target.data('bs.carousel').to(slideIndex)\n }\n\n e.preventDefault()\n })\n\n $(window).on('load', function () {\n $('[data-ride=\"carousel\"]').each(function () {\n var $carousel = $(this)\n $carousel.carousel($carousel.data())\n })\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: collapse.js v3.0.3\n * http://getbootstrap.com/javascript/#collapse\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ======================================================================== */\n\n\n+function ($) { \"use strict\";\n\n // COLLAPSE PUBLIC CLASS DEFINITION\n // ================================\n\n var Collapse = function (element, options) {\n this.$element = $(element)\n this.options = $.extend({}, Collapse.DEFAULTS, options)\n this.transitioning = null\n\n if (this.options.parent) this.$parent = $(this.options.parent)\n if (this.options.toggle) this.toggle()\n }\n\n Collapse.DEFAULTS = {\n toggle: true\n }\n\n Collapse.prototype.dimension = function () {\n var hasWidth = this.$element.hasClass('width')\n return hasWidth ? 'width' : 'height'\n }\n\n Collapse.prototype.show = function () {\n if (this.transitioning || this.$element.hasClass('in')) return\n\n var startEvent = $.Event('show.bs.collapse')\n this.$element.trigger(startEvent)\n if (startEvent.isDefaultPrevented()) return\n\n var actives = this.$parent && this.$parent.find('> .panel > .in')\n\n if (actives && actives.length) {\n var hasData = actives.data('bs.collapse')\n if (hasData && hasData.transitioning) return\n actives.collapse('hide')\n hasData || actives.data('bs.collapse', null)\n }\n\n var dimension = this.dimension()\n\n this.$element\n .removeClass('collapse')\n .addClass('collapsing')\n [dimension](0)\n\n this.transitioning = 1\n\n var complete = function () {\n this.$element\n .removeClass('collapsing')\n .addClass('in')\n [dimension]('auto')\n this.transitioning = 0\n this.$element.trigger('shown.bs.collapse')\n }\n\n if (!$.support.transition) return complete.call(this)\n\n var scrollSize = $.camelCase(['scroll', dimension].join('-'))\n\n this.$element\n .one($.support.transition.end, $.proxy(complete, this))\n .emulateTransitionEnd(350)\n [dimension](this.$element[0][scrollSize])\n }\n\n Collapse.prototype.hide = function () {\n if (this.transitioning || !this.$element.hasClass('in')) return\n\n var startEvent = $.Event('hide.bs.collapse')\n this.$element.trigger(startEvent)\n if (startEvent.isDefaultPrevented()) return\n\n var dimension = this.dimension()\n\n this.$element\n [dimension](this.$element[dimension]())\n [0].offsetHeight\n\n this.$element\n .addClass('collapsing')\n .removeClass('collapse')\n .removeClass('in')\n\n this.transitioning = 1\n\n var complete = function () {\n this.transitioning = 0\n this.$element\n .trigger('hidden.bs.collapse')\n .removeClass('collapsing')\n .addClass('collapse')\n }\n\n if (!$.support.transition) return complete.call(this)\n\n this.$element\n [dimension](0)\n .one($.support.transition.end, $.proxy(complete, this))\n .emulateTransitionEnd(350)\n }\n\n Collapse.prototype.toggle = function () {\n this[this.$element.hasClass('in') ? 'hide' : 'show']()\n }\n\n\n // COLLAPSE PLUGIN DEFINITION\n // ==========================\n\n var old = $.fn.collapse\n\n $.fn.collapse = function (option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.collapse')\n var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n $.fn.collapse.Constructor = Collapse\n\n\n // COLLAPSE NO CONFLICT\n // ====================\n\n $.fn.collapse.noConflict = function () {\n $.fn.collapse = old\n return this\n }\n\n\n // COLLAPSE DATA-API\n // =================\n\n $(document).on('click.bs.collapse.data-api', '[data-toggle=collapse]', function (e) {\n var $this = $(this), href\n var target = $this.attr('data-target')\n || e.preventDefault()\n || (href = $this.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '') //strip for ie7\n var $target = $(target)\n var data = $target.data('bs.collapse')\n var option = data ? 'toggle' : $this.data()\n var parent = $this.attr('data-parent')\n var $parent = parent && $(parent)\n\n if (!data || !data.transitioning) {\n if ($parent) $parent.find('[data-toggle=collapse][data-parent=\"' + parent + '\"]').not($this).addClass('collapsed')\n $this[$target.hasClass('in') ? 'addClass' : 'removeClass']('collapsed')\n }\n\n $target.collapse(option)\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: dropdown.js v3.0.3\n * http://getbootstrap.com/javascript/#dropdowns\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ======================================================================== */\n\n\n+function ($) { \"use strict\";\n\n // DROPDOWN CLASS DEFINITION\n // =========================\n\n var backdrop = '.dropdown-backdrop'\n var toggle = '[data-toggle=dropdown]'\n var Dropdown = function (element) {\n $(element).on('click.bs.dropdown', this.toggle)\n }\n\n Dropdown.prototype.toggle = function (e) {\n var $this = $(this)\n\n if ($this.is('.disabled, :disabled')) return\n\n var $parent = getParent($this)\n var isActive = $parent.hasClass('open')\n\n clearMenus()\n\n if (!isActive) {\n if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {\n // if mobile we use a backdrop because click events don't delegate\n $('<div class=\"dropdown-backdrop\"/>').insertAfter($(this)).on('click', clearMenus)\n }\n\n $parent.trigger(e = $.Event('show.bs.dropdown'))\n\n if (e.isDefaultPrevented()) return\n\n $parent\n .toggleClass('open')\n .trigger('shown.bs.dropdown')\n\n $this.focus()\n }\n\n return false\n }\n\n Dropdown.prototype.keydown = function (e) {\n if (!/(38|40|27)/.test(e.keyCode)) return\n\n var $this = $(this)\n\n e.preventDefault()\n e.stopPropagation()\n\n if ($this.is('.disabled, :disabled')) return\n\n var $parent = getParent($this)\n var isActive = $parent.hasClass('open')\n\n if (!isActive || (isActive && e.keyCode == 27)) {\n if (e.which == 27) $parent.find(toggle).focus()\n return $this.click()\n }\n\n var $items = $('[role=menu] li:not(.divider):visible a', $parent)\n\n if (!$items.length) return\n\n var index = $items.index($items.filter(':focus'))\n\n if (e.keyCode == 38 && index > 0) index-- // up\n if (e.keyCode == 40 && index < $items.length - 1) index++ // down\n if (!~index) index=0\n\n $items.eq(index).focus()\n }\n\n function clearMenus() {\n $(backdrop).remove()\n $(toggle).each(function (e) {\n var $parent = getParent($(this))\n if (!$parent.hasClass('open')) return\n $parent.trigger(e = $.Event('hide.bs.dropdown'))\n if (e.isDefaultPrevented()) return\n $parent.removeClass('open').trigger('hidden.bs.dropdown')\n })\n }\n\n function getParent($this) {\n var selector = $this.attr('data-target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\\s]*$)/, '') //strip for ie7\n }\n\n var $parent = selector && $(selector)\n\n return $parent && $parent.length ? $parent : $this.parent()\n }\n\n\n // DROPDOWN PLUGIN DEFINITION\n // ==========================\n\n var old = $.fn.dropdown\n\n $.fn.dropdown = function (option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.dropdown')\n\n if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))\n if (typeof option == 'string') data[option].call($this)\n })\n }\n\n $.fn.dropdown.Constructor = Dropdown\n\n\n // DROPDOWN NO CONFLICT\n // ====================\n\n $.fn.dropdown.noConflict = function () {\n $.fn.dropdown = old\n return this\n }\n\n\n // APPLY TO STANDARD DROPDOWN ELEMENTS\n // ===================================\n\n $(document)\n .on('click.bs.dropdown.data-api', clearMenus)\n .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })\n .on('click.bs.dropdown.data-api' , toggle, Dropdown.prototype.toggle)\n .on('keydown.bs.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: modal.js v3.0.3\n * http://getbootstrap.com/javascript/#modals\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ======================================================================== */\n\n\n+function ($) { \"use strict\";\n\n // MODAL CLASS DEFINITION\n // ======================\n\n var Modal = function (element, options) {\n this.options = options\n this.$element = $(element)\n this.$backdrop =\n this.isShown = null\n\n if (this.options.remote) this.$element.load(this.options.remote)\n }\n\n Modal.DEFAULTS = {\n backdrop: true\n , keyboard: true\n , show: true\n }\n\n Modal.prototype.toggle = function (_relatedTarget) {\n return this[!this.isShown ? 'show' : 'hide'](_relatedTarget)\n }\n\n Modal.prototype.show = function (_relatedTarget) {\n var that = this\n var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })\n\n this.$element.trigger(e)\n\n if (this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = true\n\n this.escape()\n\n this.$element.on('click.dismiss.modal', '[data-dismiss=\"modal\"]', $.proxy(this.hide, this))\n\n this.backdrop(function () {\n var transition = $.support.transition && that.$element.hasClass('fade')\n\n if (!that.$element.parent().length) {\n that.$element.appendTo(document.body) // don't move modals dom position\n }\n\n that.$element.show()\n\n if (transition) {\n that.$element[0].offsetWidth // force reflow\n }\n\n that.$element\n .addClass('in')\n .attr('aria-hidden', false)\n\n that.enforceFocus()\n\n var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })\n\n transition ?\n that.$element.find('.modal-dialog') // wait for modal to slide in\n .one($.support.transition.end, function () {\n that.$element.focus().trigger(e)\n })\n .emulateTransitionEnd(300) :\n that.$element.focus().trigger(e)\n })\n }\n\n Modal.prototype.hide = function (e) {\n if (e) e.preventDefault()\n\n e = $.Event('hide.bs.modal')\n\n this.$element.trigger(e)\n\n if (!this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = false\n\n this.escape()\n\n $(document).off('focusin.bs.modal')\n\n this.$element\n .removeClass('in')\n .attr('aria-hidden', true)\n .off('click.dismiss.modal')\n\n $.support.transition && this.$element.hasClass('fade') ?\n this.$element\n .one($.support.transition.end, $.proxy(this.hideModal, this))\n .emulateTransitionEnd(300) :\n this.hideModal()\n }\n\n Modal.prototype.enforceFocus = function () {\n $(document)\n .off('focusin.bs.modal') // guard against infinite focus loop\n .on('focusin.bs.modal', $.proxy(function (e) {\n if (this.$element[0] !== e.target && !this.$element.has(e.target).length) {\n this.$element.focus()\n }\n }, this))\n }\n\n Modal.prototype.escape = function () {\n if (this.isShown && this.options.keyboard) {\n this.$element.on('keyup.dismiss.bs.modal', $.proxy(function (e) {\n e.which == 27 && this.hide()\n }, this))\n } else if (!this.isShown) {\n this.$element.off('keyup.dismiss.bs.modal')\n }\n }\n\n Modal.prototype.hideModal = function () {\n var that = this\n this.$element.hide()\n this.backdrop(function () {\n that.removeBackdrop()\n that.$element.trigger('hidden.bs.modal')\n })\n }\n\n Modal.prototype.removeBackdrop = function () {\n this.$backdrop && this.$backdrop.remove()\n this.$backdrop = null\n }\n\n Modal.prototype.backdrop = function (callback) {\n var that = this\n var animate = this.$element.hasClass('fade') ? 'fade' : ''\n\n if (this.isShown && this.options.backdrop) {\n var doAnimate = $.support.transition && animate\n\n this.$backdrop = $('<div class=\"modal-backdrop ' + animate + '\" />')\n .appendTo(document.body)\n\n this.$element.on('click.dismiss.modal', $.proxy(function (e) {\n if (e.target !== e.currentTarget) return\n this.options.backdrop == 'static'\n ? this.$element[0].focus.call(this.$element[0])\n : this.hide.call(this)\n }, this))\n\n if (doAnimate) this.$backdrop[0].offsetWidth // force reflow\n\n this.$backdrop.addClass('in')\n\n if (!callback) return\n\n doAnimate ?\n this.$backdrop\n .one($.support.transition.end, callback)\n .emulateTransitionEnd(150) :\n callback()\n\n } else if (!this.isShown && this.$backdrop) {\n this.$backdrop.removeClass('in')\n\n $.support.transition && this.$element.hasClass('fade')?\n this.$backdrop\n .one($.support.transition.end, callback)\n .emulateTransitionEnd(150) :\n callback()\n\n } else if (callback) {\n callback()\n }\n }\n\n\n // MODAL PLUGIN DEFINITION\n // =======================\n\n var old = $.fn.modal\n\n $.fn.modal = function (option, _relatedTarget) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.modal')\n var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n if (!data) $this.data('bs.modal', (data = new Modal(this, options)))\n if (typeof option == 'string') data[option](_relatedTarget)\n else if (options.show) data.show(_relatedTarget)\n })\n }\n\n $.fn.modal.Constructor = Modal\n\n\n // MODAL NO CONFLICT\n // =================\n\n $.fn.modal.noConflict = function () {\n $.fn.modal = old\n return this\n }\n\n\n // MODAL DATA-API\n // ==============\n\n $(document).on('click.bs.modal.data-api', '[data-toggle=\"modal\"]', function (e) {\n var $this = $(this)\n var href = $this.attr('href')\n var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\\s]+$)/, ''))) //strip for ie7\n var option = $target.data('modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())\n\n e.preventDefault()\n\n $target\n .modal(option, this)\n .one('hide', function () {\n $this.is(':visible') && $this.focus()\n })\n })\n\n $(document)\n .on('show.bs.modal', '.modal', function () { $(document.body).addClass('modal-open') })\n .on('hidden.bs.modal', '.modal', function () { $(document.body).removeClass('modal-open') })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: tooltip.js v3.0.3\n * http://getbootstrap.com/javascript/#tooltip\n * Inspired by the original jQuery.tipsy by Jason Frame\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ======================================================================== */\n\n\n+function ($) { \"use strict\";\n\n // TOOLTIP PUBLIC CLASS DEFINITION\n // ===============================\n\n var Tooltip = function (element, options) {\n this.type =\n this.options =\n this.enabled =\n this.timeout =\n this.hoverState =\n this.$element = null\n\n this.init('tooltip', element, options)\n }\n\n Tooltip.DEFAULTS = {\n animation: true\n , placement: 'top'\n , selector: false\n , template: '<div class=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>'\n , trigger: 'hover focus'\n , title: ''\n , delay: 0\n , html: false\n , container: false\n }\n\n Tooltip.prototype.init = function (type, element, options) {\n this.enabled = true\n this.type = type\n this.$element = $(element)\n this.options = this.getOptions(options)\n\n var triggers = this.options.trigger.split(' ')\n\n for (var i = triggers.length; i--;) {\n var trigger = triggers[i]\n\n if (trigger == 'click') {\n this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))\n } else if (trigger != 'manual') {\n var eventIn = trigger == 'hover' ? 'mouseenter' : 'focus'\n var eventOut = trigger == 'hover' ? 'mouseleave' : 'blur'\n\n this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))\n this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))\n }\n }\n\n this.options.selector ?\n (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :\n this.fixTitle()\n }\n\n Tooltip.prototype.getDefaults = function () {\n return Tooltip.DEFAULTS\n }\n\n Tooltip.prototype.getOptions = function (options) {\n options = $.extend({}, this.getDefaults(), this.$element.data(), options)\n\n if (options.delay && typeof options.delay == 'number') {\n options.delay = {\n show: options.delay\n , hide: options.delay\n }\n }\n\n return options\n }\n\n Tooltip.prototype.getDelegateOptions = function () {\n var options = {}\n var defaults = this.getDefaults()\n\n this._options && $.each(this._options, function (key, value) {\n if (defaults[key] != value) options[key] = value\n })\n\n return options\n }\n\n Tooltip.prototype.enter = function (obj) {\n var self = obj instanceof this.constructor ?\n obj : $(obj.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type)\n\n clearTimeout(self.timeout)\n\n self.hoverState = 'in'\n\n if (!self.options.delay || !self.options.delay.show) return self.show()\n\n self.timeout = setTimeout(function () {\n if (self.hoverState == 'in') self.show()\n }, self.options.delay.show)\n }\n\n Tooltip.prototype.leave = function (obj) {\n var self = obj instanceof this.constructor ?\n obj : $(obj.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type)\n\n clearTimeout(self.timeout)\n\n self.hoverState = 'out'\n\n if (!self.options.delay || !self.options.delay.hide) return self.hide()\n\n self.timeout = setTimeout(function () {\n if (self.hoverState == 'out') self.hide()\n }, self.options.delay.hide)\n }\n\n Tooltip.prototype.show = function () {\n var e = $.Event('show.bs.'+ this.type)\n\n if (this.hasContent() && this.enabled) {\n this.$element.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n var $tip = this.tip()\n\n this.setContent()\n\n if (this.options.animation) $tip.addClass('fade')\n\n var placement = typeof this.options.placement == 'function' ?\n this.options.placement.call(this, $tip[0], this.$element[0]) :\n this.options.placement\n\n var autoToken = /\\s?auto?\\s?/i\n var autoPlace = autoToken.test(placement)\n if (autoPlace) placement = placement.replace(autoToken, '') || 'top'\n\n $tip\n .detach()\n .css({ top: 0, left: 0, display: 'block' })\n .addClass(placement)\n\n this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)\n\n var pos = this.getPosition()\n var actualWidth = $tip[0].offsetWidth\n var actualHeight = $tip[0].offsetHeight\n\n if (autoPlace) {\n var $parent = this.$element.parent()\n\n var orgPlacement = placement\n var docScroll = document.documentElement.scrollTop || document.body.scrollTop\n var parentWidth = this.options.container == 'body' ? window.innerWidth : $parent.outerWidth()\n var parentHeight = this.options.container == 'body' ? window.innerHeight : $parent.outerHeight()\n var parentLeft = this.options.container == 'body' ? 0 : $parent.offset().left\n\n placement = placement == 'bottom' && pos.top + pos.height + actualHeight - docScroll > parentHeight ? 'top' :\n placement == 'top' && pos.top - docScroll - actualHeight < 0 ? 'bottom' :\n placement == 'right' && pos.right + actualWidth > parentWidth ? 'left' :\n placement == 'left' && pos.left - actualWidth < parentLeft ? 'right' :\n placement\n\n $tip\n .removeClass(orgPlacement)\n .addClass(placement)\n }\n\n var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)\n\n this.applyPlacement(calculatedOffset, placement)\n this.$element.trigger('shown.bs.' + this.type)\n }\n }\n\n Tooltip.prototype.applyPlacement = function(offset, placement) {\n var replace\n var $tip = this.tip()\n var width = $tip[0].offsetWidth\n var height = $tip[0].offsetHeight\n\n // manually read margins because getBoundingClientRect includes difference\n var marginTop = parseInt($tip.css('margin-top'), 10)\n var marginLeft = parseInt($tip.css('margin-left'), 10)\n\n // we must check for NaN for ie 8/9\n if (isNaN(marginTop)) marginTop = 0\n if (isNaN(marginLeft)) marginLeft = 0\n\n offset.top = offset.top + marginTop\n offset.left = offset.left + marginLeft\n\n $tip\n .offset(offset)\n .addClass('in')\n\n // check to see if placing tip in new offset caused the tip to resize itself\n var actualWidth = $tip[0].offsetWidth\n var actualHeight = $tip[0].offsetHeight\n\n if (placement == 'top' && actualHeight != height) {\n replace = true\n offset.top = offset.top + height - actualHeight\n }\n\n if (/bottom|top/.test(placement)) {\n var delta = 0\n\n if (offset.left < 0) {\n delta = offset.left * -2\n offset.left = 0\n\n $tip.offset(offset)\n\n actualWidth = $tip[0].offsetWidth\n actualHeight = $tip[0].offsetHeight\n }\n\n this.replaceArrow(delta - width + actualWidth, actualWidth, 'left')\n } else {\n this.replaceArrow(actualHeight - height, actualHeight, 'top')\n }\n\n if (replace) $tip.offset(offset)\n }\n\n Tooltip.prototype.replaceArrow = function(delta, dimension, position) {\n this.arrow().css(position, delta ? (50 * (1 - delta / dimension) + \"%\") : '')\n }\n\n Tooltip.prototype.setContent = function () {\n var $tip = this.tip()\n var title = this.getTitle()\n\n $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)\n $tip.removeClass('fade in top bottom left right')\n }\n\n Tooltip.prototype.hide = function () {\n var that = this\n var $tip = this.tip()\n var e = $.Event('hide.bs.' + this.type)\n\n function complete() {\n if (that.hoverState != 'in') $tip.detach()\n }\n\n this.$element.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n $tip.removeClass('in')\n\n $.support.transition && this.$tip.hasClass('fade') ?\n $tip\n .one($.support.transition.end, complete)\n .emulateTransitionEnd(150) :\n complete()\n\n this.$element.trigger('hidden.bs.' + this.type)\n\n return this\n }\n\n Tooltip.prototype.fixTitle = function () {\n var $e = this.$element\n if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {\n $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')\n }\n }\n\n Tooltip.prototype.hasContent = function () {\n return this.getTitle()\n }\n\n Tooltip.prototype.getPosition = function () {\n var el = this.$element[0]\n return $.extend({}, (typeof el.getBoundingClientRect == 'function') ? el.getBoundingClientRect() : {\n width: el.offsetWidth\n , height: el.offsetHeight\n }, this.$element.offset())\n }\n\n Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {\n return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :\n /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }\n }\n\n Tooltip.prototype.getTitle = function () {\n var title\n var $e = this.$element\n var o = this.options\n\n title = $e.attr('data-original-title')\n || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)\n\n return title\n }\n\n Tooltip.prototype.tip = function () {\n return this.$tip = this.$tip || $(this.options.template)\n }\n\n Tooltip.prototype.arrow = function () {\n return this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow')\n }\n\n Tooltip.prototype.validate = function () {\n if (!this.$element[0].parentNode) {\n this.hide()\n this.$element = null\n this.options = null\n }\n }\n\n Tooltip.prototype.enable = function () {\n this.enabled = true\n }\n\n Tooltip.prototype.disable = function () {\n this.enabled = false\n }\n\n Tooltip.prototype.toggleEnabled = function () {\n this.enabled = !this.enabled\n }\n\n Tooltip.prototype.toggle = function (e) {\n var self = e ? $(e.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type) : this\n self.tip().hasClass('in') ? self.leave(self) : self.enter(self)\n }\n\n Tooltip.prototype.destroy = function () {\n this.hide().$element.off('.' + this.type).removeData('bs.' + this.type)\n }\n\n\n // TOOLTIP PLUGIN DEFINITION\n // =========================\n\n var old = $.fn.tooltip\n\n $.fn.tooltip = function (option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.tooltip')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n $.fn.tooltip.Constructor = Tooltip\n\n\n // TOOLTIP NO CONFLICT\n // ===================\n\n $.fn.tooltip.noConflict = function () {\n $.fn.tooltip = old\n return this\n }\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: popover.js v3.0.3\n * http://getbootstrap.com/javascript/#popovers\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ======================================================================== */\n\n\n+function ($) { \"use strict\";\n\n // POPOVER PUBLIC CLASS DEFINITION\n // ===============================\n\n var Popover = function (element, options) {\n this.init('popover', element, options)\n }\n\n if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')\n\n Popover.DEFAULTS = $.extend({} , $.fn.tooltip.Constructor.DEFAULTS, {\n placement: 'right'\n , trigger: 'click'\n , content: ''\n , template: '<div class=\"popover\"><div class=\"arrow\"></div><h3 class=\"popover-title\"></h3><div class=\"popover-content\"></div></div>'\n })\n\n\n // NOTE: POPOVER EXTENDS tooltip.js\n // ================================\n\n Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)\n\n Popover.prototype.constructor = Popover\n\n Popover.prototype.getDefaults = function () {\n return Popover.DEFAULTS\n }\n\n Popover.prototype.setContent = function () {\n var $tip = this.tip()\n var title = this.getTitle()\n var content = this.getContent()\n\n $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)\n $tip.find('.popover-content')[this.options.html ? 'html' : 'text'](content)\n\n $tip.removeClass('fade top bottom left right in')\n\n // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do\n // this manually by checking the contents.\n if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()\n }\n\n Popover.prototype.hasContent = function () {\n return this.getTitle() || this.getContent()\n }\n\n Popover.prototype.getContent = function () {\n var $e = this.$element\n var o = this.options\n\n return $e.attr('data-content')\n || (typeof o.content == 'function' ?\n o.content.call($e[0]) :\n o.content)\n }\n\n Popover.prototype.arrow = function () {\n return this.$arrow = this.$arrow || this.tip().find('.arrow')\n }\n\n Popover.prototype.tip = function () {\n if (!this.$tip) this.$tip = $(this.options.template)\n return this.$tip\n }\n\n\n // POPOVER PLUGIN DEFINITION\n // =========================\n\n var old = $.fn.popover\n\n $.fn.popover = function (option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.popover')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.popover', (data = new Popover(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n $.fn.popover.Constructor = Popover\n\n\n // POPOVER NO CONFLICT\n // ===================\n\n $.fn.popover.noConflict = function () {\n $.fn.popover = old\n return this\n }\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: scrollspy.js v3.0.3\n * http://getbootstrap.com/javascript/#scrollspy\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ======================================================================== */\n\n\n+function ($) { \"use strict\";\n\n // SCROLLSPY CLASS DEFINITION\n // ==========================\n\n function ScrollSpy(element, options) {\n var href\n var process = $.proxy(this.process, this)\n\n this.$element = $(element).is('body') ? $(window) : $(element)\n this.$body = $('body')\n this.$scrollElement = this.$element.on('scroll.bs.scroll-spy.data-api', process)\n this.options = $.extend({}, ScrollSpy.DEFAULTS, options)\n this.selector = (this.options.target\n || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '')) //strip for ie7\n || '') + ' .nav li > a'\n this.offsets = $([])\n this.targets = $([])\n this.activeTarget = null\n\n this.refresh()\n this.process()\n }\n\n ScrollSpy.DEFAULTS = {\n offset: 10\n }\n\n ScrollSpy.prototype.refresh = function () {\n var offsetMethod = this.$element[0] == window ? 'offset' : 'position'\n\n this.offsets = $([])\n this.targets = $([])\n\n var self = this\n var $targets = this.$body\n .find(this.selector)\n .map(function () {\n var $el = $(this)\n var href = $el.data('target') || $el.attr('href')\n var $href = /^#\\w/.test(href) && $(href)\n\n return ($href\n && $href.length\n && [[ $href[offsetMethod]().top + (!$.isWindow(self.$scrollElement.get(0)) && self.$scrollElement.scrollTop()), href ]]) || null\n })\n .sort(function (a, b) { return a[0] - b[0] })\n .each(function () {\n self.offsets.push(this[0])\n self.targets.push(this[1])\n })\n }\n\n ScrollSpy.prototype.process = function () {\n var scrollTop = this.$scrollElement.scrollTop() + this.options.offset\n var scrollHeight = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight\n var maxScroll = scrollHeight - this.$scrollElement.height()\n var offsets = this.offsets\n var targets = this.targets\n var activeTarget = this.activeTarget\n var i\n\n if (scrollTop >= maxScroll) {\n return activeTarget != (i = targets.last()[0]) && this.activate(i)\n }\n\n for (i = offsets.length; i--;) {\n activeTarget != targets[i]\n && scrollTop >= offsets[i]\n && (!offsets[i + 1] || scrollTop <= offsets[i + 1])\n && this.activate( targets[i] )\n }\n }\n\n ScrollSpy.prototype.activate = function (target) {\n this.activeTarget = target\n\n $(this.selector)\n .parents('.active')\n .removeClass('active')\n\n var selector = this.selector\n + '[data-target=\"' + target + '\"],'\n + this.selector + '[href=\"' + target + '\"]'\n\n var active = $(selector)\n .parents('li')\n .addClass('active')\n\n if (active.parent('.dropdown-menu').length) {\n active = active\n .closest('li.dropdown')\n .addClass('active')\n }\n\n active.trigger('activate.bs.scrollspy')\n }\n\n\n // SCROLLSPY PLUGIN DEFINITION\n // ===========================\n\n var old = $.fn.scrollspy\n\n $.fn.scrollspy = function (option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.scrollspy')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n $.fn.scrollspy.Constructor = ScrollSpy\n\n\n // SCROLLSPY NO CONFLICT\n // =====================\n\n $.fn.scrollspy.noConflict = function () {\n $.fn.scrollspy = old\n return this\n }\n\n\n // SCROLLSPY DATA-API\n // ==================\n\n $(window).on('load', function () {\n $('[data-spy=\"scroll\"]').each(function () {\n var $spy = $(this)\n $spy.scrollspy($spy.data())\n })\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: tab.js v3.0.3\n * http://getbootstrap.com/javascript/#tabs\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ======================================================================== */\n\n\n+function ($) { \"use strict\";\n\n // TAB CLASS DEFINITION\n // ====================\n\n var Tab = function (element) {\n this.element = $(element)\n }\n\n Tab.prototype.show = function () {\n var $this = this.element\n var $ul = $this.closest('ul:not(.dropdown-menu)')\n var selector = $this.data('target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') //strip for ie7\n }\n\n if ($this.parent('li').hasClass('active')) return\n\n var previous = $ul.find('.active:last a')[0]\n var e = $.Event('show.bs.tab', {\n relatedTarget: previous\n })\n\n $this.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n var $target = $(selector)\n\n this.activate($this.parent('li'), $ul)\n this.activate($target, $target.parent(), function () {\n $this.trigger({\n type: 'shown.bs.tab'\n , relatedTarget: previous\n })\n })\n }\n\n Tab.prototype.activate = function (element, container, callback) {\n var $active = container.find('> .active')\n var transition = callback\n && $.support.transition\n && $active.hasClass('fade')\n\n function next() {\n $active\n .removeClass('active')\n .find('> .dropdown-menu > .active')\n .removeClass('active')\n\n element.addClass('active')\n\n if (transition) {\n element[0].offsetWidth // reflow for transition\n element.addClass('in')\n } else {\n element.removeClass('fade')\n }\n\n if (element.parent('.dropdown-menu')) {\n element.closest('li.dropdown').addClass('active')\n }\n\n callback && callback()\n }\n\n transition ?\n $active\n .one($.support.transition.end, next)\n .emulateTransitionEnd(150) :\n next()\n\n $active.removeClass('in')\n }\n\n\n // TAB PLUGIN DEFINITION\n // =====================\n\n var old = $.fn.tab\n\n $.fn.tab = function ( option ) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.tab')\n\n if (!data) $this.data('bs.tab', (data = new Tab(this)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n $.fn.tab.Constructor = Tab\n\n\n // TAB NO CONFLICT\n // ===============\n\n $.fn.tab.noConflict = function () {\n $.fn.tab = old\n return this\n }\n\n\n // TAB DATA-API\n // ============\n\n $(document).on('click.bs.tab.data-api', '[data-toggle=\"tab\"], [data-toggle=\"pill\"]', function (e) {\n e.preventDefault()\n $(this).tab('show')\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: affix.js v3.0.3\n * http://getbootstrap.com/javascript/#affix\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ======================================================================== */\n\n\n+function ($) { \"use strict\";\n\n // AFFIX CLASS DEFINITION\n // ======================\n\n var Affix = function (element, options) {\n this.options = $.extend({}, Affix.DEFAULTS, options)\n this.$window = $(window)\n .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))\n .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))\n\n this.$element = $(element)\n this.affixed =\n this.unpin = null\n\n this.checkPosition()\n }\n\n Affix.RESET = 'affix affix-top affix-bottom'\n\n Affix.DEFAULTS = {\n offset: 0\n }\n\n Affix.prototype.checkPositionWithEventLoop = function () {\n setTimeout($.proxy(this.checkPosition, this), 1)\n }\n\n Affix.prototype.checkPosition = function () {\n if (!this.$element.is(':visible')) return\n\n var scrollHeight = $(document).height()\n var scrollTop = this.$window.scrollTop()\n var position = this.$element.offset()\n var offset = this.options.offset\n var offsetTop = offset.top\n var offsetBottom = offset.bottom\n\n if (typeof offset != 'object') offsetBottom = offsetTop = offset\n if (typeof offsetTop == 'function') offsetTop = offset.top()\n if (typeof offsetBottom == 'function') offsetBottom = offset.bottom()\n\n var affix = this.unpin != null && (scrollTop + this.unpin <= position.top) ? false :\n offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ? 'bottom' :\n offsetTop != null && (scrollTop <= offsetTop) ? 'top' : false\n\n if (this.affixed === affix) return\n if (this.unpin) this.$element.css('top', '')\n\n this.affixed = affix\n this.unpin = affix == 'bottom' ? position.top - scrollTop : null\n\n this.$element.removeClass(Affix.RESET).addClass('affix' + (affix ? '-' + affix : ''))\n\n if (affix == 'bottom') {\n this.$element.offset({ top: document.body.offsetHeight - offsetBottom - this.$element.height() })\n }\n }\n\n\n // AFFIX PLUGIN DEFINITION\n // =======================\n\n var old = $.fn.affix\n\n $.fn.affix = function (option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.affix')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.affix', (data = new Affix(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n $.fn.affix.Constructor = Affix\n\n\n // AFFIX NO CONFLICT\n // =================\n\n $.fn.affix.noConflict = function () {\n $.fn.affix = old\n return this\n }\n\n\n // AFFIX DATA-API\n // ==============\n\n $(window).on('load', function () {\n $('[data-spy=\"affix\"]').each(function () {\n var $spy = $(this)\n var data = $spy.data()\n\n data.offset = data.offset || {}\n\n if (data.offsetBottom) data.offset.bottom = data.offsetBottom\n if (data.offsetTop) data.offset.top = data.offsetTop\n\n $spy.affix(data)\n })\n })\n\n}(jQuery);\n", "/*\n * jQuery.appear\n * https://github.com/bas2k/jquery.appear/\n * http://code.google.com/p/jquery-appear/\n * http://bas2k.ru/\n *\n * Copyright (c) 2009 Michael Hixson\n * Copyright (c) 2012-2014 Alexander Brovikov\n * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\n */\n\n(function(e){e.fn.appear=function(t,n){var r=e.extend({data:undefined,one:true,accX:0,accY:0},n);return this.each(function(){var n=e(this);n.appeared=false;if(!t){n.trigger(\"appear\",r.data);return}var i=e(window);var s=function(){if(!n.is(\":visible\")){n.appeared=false;return}var e=i.scrollLeft();var t=i.scrollTop();var s=n.offset();var o=s.left;var u=s.top;var a=r.accX;var f=r.accY;var l=n.height();var c=i.height();var h=n.width();var p=i.width();if(u+l+f>=t&&u<=t+c+f&&o+h+a>=e&&o<=e+p+a){if(!n.appeared)n.trigger(\"appear\",r.data)}else{n.appeared=false}};var o=function(){n.appeared=true;if(r.one){i.unbind(\"scroll\",s);var o=e.inArray(s,e.fn.appear.checks);if(o>=0)e.fn.appear.checks.splice(o,1)}t.apply(this,arguments)};if(r.one)n.one(\"appear\",r.data,o);else n.bind(\"appear\",r.data,o);i.scroll(s);e.fn.appear.checks.push(s);s()})};e.extend(e.fn.appear,{checks:[],timeout:null,checkAll:function(){var t=e.fn.appear.checks.length;if(t>0)while(t--)e.fn.appear.checks[t]()},run:function(){if(e.fn.appear.timeout)clearTimeout(e.fn.appear.timeout);e.fn.appear.timeout=setTimeout(e.fn.appear.checkAll,20)}});e.each([\"append\",\"prepend\",\"after\",\"before\",\"attr\",\"removeAttr\",\"addClass\",\"removeClass\",\"toggleClass\",\"remove\",\"css\",\"show\",\"hide\"],function(t,n){var r=e.fn[n];if(r){e.fn[n]=function(){var t=r.apply(this,arguments);e.fn.appear.run();return t}}})})(jQuery);", "// Entry point for the build script in your package.json\nimport \"@hotwired/turbo-rails\"\nimport \"./controllers\"\nimport * as bootstrap from \"bootstrap\"\nimport './animations.min'\nimport './bootstrap'\nimport './appear.min'\nimport './jquery-1.11.2'\nimport './jquery-ui'\nimport './jquery.fancybox.min'\nimport './pluginsf700'\nimport './velocity.min'\nimport './velocity.ui.min'\nimport './custom'", "/*! jQuery UI - v1.11.2 - 2014-10-16\n* http://jqueryui.com\n* Includes: core.js, widget.js, mouse.js, position.js, accordion.js, autocomplete.js, button.js, datepicker.js, dialog.js, draggable.js, droppable.js, effect.js, effect-blind.js, effect-bounce.js, effect-clip.js, effect-drop.js, effect-explode.js, effect-fade.js, effect-fold.js, effect-highlight.js, effect-puff.js, effect-pulsate.js, effect-scale.js, effect-shake.js, effect-size.js, effect-slide.js, effect-transfer.js, menu.js, progressbar.js, resizable.js, selectable.js, selectmenu.js, slider.js, sortable.js, spinner.js, tabs.js, tooltip.js\n* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */\n\n(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine([ \"jquery\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n/*!\n * jQuery UI Core 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/category/ui-core/\n */\n\n\n// $.ui might exist from components with no dependencies, e.g., $.ui.position\n$.ui = $.ui || {};\n\n$.extend( $.ui, {\n\tversion: \"1.11.2\",\n\n\tkeyCode: {\n\t\tBACKSPACE: 8,\n\t\tCOMMA: 188,\n\t\tDELETE: 46,\n\t\tDOWN: 40,\n\t\tEND: 35,\n\t\tENTER: 13,\n\t\tESCAPE: 27,\n\t\tHOME: 36,\n\t\tLEFT: 37,\n\t\tPAGE_DOWN: 34,\n\t\tPAGE_UP: 33,\n\t\tPERIOD: 190,\n\t\tRIGHT: 39,\n\t\tSPACE: 32,\n\t\tTAB: 9,\n\t\tUP: 38\n\t}\n});\n\n// plugins\n$.fn.extend({\n\tscrollParent: function( includeHidden ) {\n\t\tvar position = this.css( \"position\" ),\n\t\t\texcludeStaticParent = position === \"absolute\",\n\t\t\toverflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/,\n\t\t\tscrollParent = this.parents().filter( function() {\n\t\t\t\tvar parent = $( this );\n\t\t\t\tif ( excludeStaticParent && parent.css( \"position\" ) === \"static\" ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn overflowRegex.test( parent.css( \"overflow\" ) + parent.css( \"overflow-y\" ) + parent.css( \"overflow-x\" ) );\n\t\t\t}).eq( 0 );\n\n\t\treturn position === \"fixed\" || !scrollParent.length ? $( this[ 0 ].ownerDocument || document ) : scrollParent;\n\t},\n\n\tuniqueId: (function() {\n\t\tvar uuid = 0;\n\n\t\treturn function() {\n\t\t\treturn this.each(function() {\n\t\t\t\tif ( !this.id ) {\n\t\t\t\t\tthis.id = \"ui-id-\" + ( ++uuid );\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\t})(),\n\n\tremoveUniqueId: function() {\n\t\treturn this.each(function() {\n\t\t\tif ( /^ui-id-\\d+$/.test( this.id ) ) {\n\t\t\t\t$( this ).removeAttr( \"id\" );\n\t\t\t}\n\t\t});\n\t}\n});\n\n// selectors\nfunction focusable( element, isTabIndexNotNaN ) {\n\tvar map, mapName, img,\n\t\tnodeName = element.nodeName.toLowerCase();\n\tif ( \"area\" === nodeName ) {\n\t\tmap = element.parentNode;\n\t\tmapName = map.name;\n\t\tif ( !element.href || !mapName || map.nodeName.toLowerCase() !== \"map\" ) {\n\t\t\treturn false;\n\t\t}\n\t\timg = $( \"img[usemap='#\" + mapName + \"']\" )[ 0 ];\n\t\treturn !!img && visible( img );\n\t}\n\treturn ( /input|select|textarea|button|object/.test( nodeName ) ?\n\t\t!element.disabled :\n\t\t\"a\" === nodeName ?\n\t\t\telement.href || isTabIndexNotNaN :\n\t\t\tisTabIndexNotNaN) &&\n\t\t// the element and all of its ancestors must be visible\n\t\tvisible( element );\n}\n\nfunction visible( element ) {\n\treturn $.expr.filters.visible( element ) &&\n\t\t!$( element ).parents().addBack().filter(function() {\n\t\t\treturn $.css( this, \"visibility\" ) === \"hidden\";\n\t\t}).length;\n}\n\n$.extend( $.expr[ \":\" ], {\n\tdata: $.expr.createPseudo ?\n\t\t$.expr.createPseudo(function( dataName ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn !!$.data( elem, dataName );\n\t\t\t};\n\t\t}) :\n\t\t// support: jQuery <1.8\n\t\tfunction( elem, i, match ) {\n\t\t\treturn !!$.data( elem, match[ 3 ] );\n\t\t},\n\n\tfocusable: function( element ) {\n\t\treturn focusable( element, !isNaN( $.attr( element, \"tabindex\" ) ) );\n\t},\n\n\ttabbable: function( element ) {\n\t\tvar tabIndex = $.attr( element, \"tabindex\" ),\n\t\t\tisTabIndexNaN = isNaN( tabIndex );\n\t\treturn ( isTabIndexNaN || tabIndex >= 0 ) && focusable( element, !isTabIndexNaN );\n\t}\n});\n\n// support: jQuery <1.8\nif ( !$( \"<a>\" ).outerWidth( 1 ).jquery ) {\n\t$.each( [ \"Width\", \"Height\" ], function( i, name ) {\n\t\tvar side = name === \"Width\" ? [ \"Left\", \"Right\" ] : [ \"Top\", \"Bottom\" ],\n\t\t\ttype = name.toLowerCase(),\n\t\t\torig = {\n\t\t\t\tinnerWidth: $.fn.innerWidth,\n\t\t\t\tinnerHeight: $.fn.innerHeight,\n\t\t\t\touterWidth: $.fn.outerWidth,\n\t\t\t\touterHeight: $.fn.outerHeight\n\t\t\t};\n\n\t\tfunction reduce( elem, size, border, margin ) {\n\t\t\t$.each( side, function() {\n\t\t\t\tsize -= parseFloat( $.css( elem, \"padding\" + this ) ) || 0;\n\t\t\t\tif ( border ) {\n\t\t\t\t\tsize -= parseFloat( $.css( elem, \"border\" + this + \"Width\" ) ) || 0;\n\t\t\t\t}\n\t\t\t\tif ( margin ) {\n\t\t\t\t\tsize -= parseFloat( $.css( elem, \"margin\" + this ) ) || 0;\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn size;\n\t\t}\n\n\t\t$.fn[ \"inner\" + name ] = function( size ) {\n\t\t\tif ( size === undefined ) {\n\t\t\t\treturn orig[ \"inner\" + name ].call( this );\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\t$( this ).css( type, reduce( this, size ) + \"px\" );\n\t\t\t});\n\t\t};\n\n\t\t$.fn[ \"outer\" + name] = function( size, margin ) {\n\t\t\tif ( typeof size !== \"number\" ) {\n\t\t\t\treturn orig[ \"outer\" + name ].call( this, size );\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\t$( this).css( type, reduce( this, size, true, margin ) + \"px\" );\n\t\t\t});\n\t\t};\n\t});\n}\n\n// support: jQuery <1.8\nif ( !$.fn.addBack ) {\n\t$.fn.addBack = 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\n// support: jQuery 1.6.1, 1.6.2 (http://bugs.jquery.com/ticket/9413)\nif ( $( \"<a>\" ).data( \"a-b\", \"a\" ).removeData( \"a-b\" ).data( \"a-b\" ) ) {\n\t$.fn.removeData = (function( removeData ) {\n\t\treturn function( key ) {\n\t\t\tif ( arguments.length ) {\n\t\t\t\treturn removeData.call( this, $.camelCase( key ) );\n\t\t\t} else {\n\t\t\t\treturn removeData.call( this );\n\t\t\t}\n\t\t};\n\t})( $.fn.removeData );\n}\n\n// deprecated\n$.ui.ie = !!/msie [\\w.]+/.exec( navigator.userAgent.toLowerCase() );\n\n$.fn.extend({\n\tfocus: (function( orig ) {\n\t\treturn function( delay, fn ) {\n\t\t\treturn typeof delay === \"number\" ?\n\t\t\t\tthis.each(function() {\n\t\t\t\t\tvar elem = this;\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t$( elem ).focus();\n\t\t\t\t\t\tif ( fn ) {\n\t\t\t\t\t\t\tfn.call( elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}, delay );\n\t\t\t\t}) :\n\t\t\t\torig.apply( this, arguments );\n\t\t};\n\t})( $.fn.focus ),\n\n\tdisableSelection: (function() {\n\t\tvar eventType = \"onselectstart\" in document.createElement( \"div\" ) ?\n\t\t\t\"selectstart\" :\n\t\t\t\"mousedown\";\n\n\t\treturn function() {\n\t\t\treturn this.bind( eventType + \".ui-disableSelection\", function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t});\n\t\t};\n\t})(),\n\n\tenableSelection: function() {\n\t\treturn this.unbind( \".ui-disableSelection\" );\n\t},\n\n\tzIndex: function( zIndex ) {\n\t\tif ( zIndex !== undefined ) {\n\t\t\treturn this.css( \"zIndex\", zIndex );\n\t\t}\n\n\t\tif ( this.length ) {\n\t\t\tvar elem = $( this[ 0 ] ), position, value;\n\t\t\twhile ( elem.length && elem[ 0 ] !== document ) {\n\t\t\t\t// Ignore z-index if position is set to a value where z-index is ignored by the browser\n\t\t\t\t// This makes behavior of this function consistent across browsers\n\t\t\t\t// WebKit always returns auto if the element is positioned\n\t\t\t\tposition = elem.css( \"position\" );\n\t\t\t\tif ( position === \"absolute\" || position === \"relative\" || position === \"fixed\" ) {\n\t\t\t\t\t// IE returns 0 when zIndex is not specified\n\t\t\t\t\t// other browsers return a string\n\t\t\t\t\t// we ignore the case of nested elements with an explicit value of 0\n\t\t\t\t\t// <div style=\"z-index: -10;\"><div style=\"z-index: 0;\"></div></div>\n\t\t\t\t\tvalue = parseInt( elem.css( \"zIndex\" ), 10 );\n\t\t\t\t\tif ( !isNaN( value ) && value !== 0 ) {\n\t\t\t\t\t\treturn value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telem = elem.parent();\n\t\t\t}\n\t\t}\n\n\t\treturn 0;\n\t}\n});\n\n// $.ui.plugin is deprecated. Use $.widget() extensions instead.\n$.ui.plugin = {\n\tadd: function( module, option, set ) {\n\t\tvar i,\n\t\t\tproto = $.ui[ module ].prototype;\n\t\tfor ( i in set ) {\n\t\t\tproto.plugins[ i ] = proto.plugins[ i ] || [];\n\t\t\tproto.plugins[ i ].push( [ option, set[ i ] ] );\n\t\t}\n\t},\n\tcall: function( instance, name, args, allowDisconnected ) {\n\t\tvar i,\n\t\t\tset = instance.plugins[ name ];\n\n\t\tif ( !set ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !allowDisconnected && ( !instance.element[ 0 ].parentNode || instance.element[ 0 ].parentNode.nodeType === 11 ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor ( i = 0; i < set.length; i++ ) {\n\t\t\tif ( instance.options[ set[ i ][ 0 ] ] ) {\n\t\t\t\tset[ i ][ 1 ].apply( instance.element, args );\n\t\t\t}\n\t\t}\n\t}\n};\n\n\n/*!\n * jQuery UI Widget 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/jQuery.widget/\n */\n\n\nvar widget_uuid = 0,\n\twidget_slice = Array.prototype.slice;\n\n$.cleanData = (function( orig ) {\n\treturn function( elems ) {\n\t\tvar events, elem, i;\n\t\tfor ( i = 0; (elem = elems[i]) != null; i++ ) {\n\t\t\ttry {\n\n\t\t\t\t// Only trigger remove when necessary to save time\n\t\t\t\tevents = $._data( elem, \"events\" );\n\t\t\t\tif ( events && events.remove ) {\n\t\t\t\t\t$( elem ).triggerHandler( \"remove\" );\n\t\t\t\t}\n\n\t\t\t// http://bugs.jquery.com/ticket/8235\n\t\t\t} catch ( e ) {}\n\t\t}\n\t\torig( elems );\n\t};\n})( $.cleanData );\n\n$.widget = function( name, base, prototype ) {\n\tvar fullName, existingConstructor, constructor, basePrototype,\n\t\t// proxiedPrototype allows the provided prototype to remain unmodified\n\t\t// so that it can be used as a mixin for multiple widgets (#8876)\n\t\tproxiedPrototype = {},\n\t\tnamespace = name.split( \".\" )[ 0 ];\n\n\tname = name.split( \".\" )[ 1 ];\n\tfullName = namespace + \"-\" + name;\n\n\tif ( !prototype ) {\n\t\tprototype = base;\n\t\tbase = $.Widget;\n\t}\n\n\t// create selector for plugin\n\t$.expr[ \":\" ][ fullName.toLowerCase() ] = function( elem ) {\n\t\treturn !!$.data( elem, fullName );\n\t};\n\n\t$[ namespace ] = $[ namespace ] || {};\n\texistingConstructor = $[ namespace ][ name ];\n\tconstructor = $[ namespace ][ name ] = function( options, element ) {\n\t\t// allow instantiation without \"new\" keyword\n\t\tif ( !this._createWidget ) {\n\t\t\treturn new constructor( options, element );\n\t\t}\n\n\t\t// allow instantiation without initializing for simple inheritance\n\t\t// must use \"new\" keyword (the code above always passes args)\n\t\tif ( arguments.length ) {\n\t\t\tthis._createWidget( options, element );\n\t\t}\n\t};\n\t// extend with the existing constructor to carry over any static properties\n\t$.extend( constructor, existingConstructor, {\n\t\tversion: prototype.version,\n\t\t// copy the object used to create the prototype in case we need to\n\t\t// redefine the widget later\n\t\t_proto: $.extend( {}, prototype ),\n\t\t// track widgets that inherit from this widget in case this widget is\n\t\t// redefined after a widget inherits from it\n\t\t_childConstructors: []\n\t});\n\n\tbasePrototype = new base();\n\t// we need to make the options hash a property directly on the new instance\n\t// otherwise we'll modify the options hash on the prototype that we're\n\t// inheriting from\n\tbasePrototype.options = $.widget.extend( {}, basePrototype.options );\n\t$.each( prototype, function( prop, value ) {\n\t\tif ( !$.isFunction( value ) ) {\n\t\t\tproxiedPrototype[ prop ] = value;\n\t\t\treturn;\n\t\t}\n\t\tproxiedPrototype[ prop ] = (function() {\n\t\t\tvar _super = function() {\n\t\t\t\t\treturn base.prototype[ prop ].apply( this, arguments );\n\t\t\t\t},\n\t\t\t\t_superApply = function( args ) {\n\t\t\t\t\treturn base.prototype[ prop ].apply( this, args );\n\t\t\t\t};\n\t\t\treturn function() {\n\t\t\t\tvar __super = this._super,\n\t\t\t\t\t__superApply = this._superApply,\n\t\t\t\t\treturnValue;\n\n\t\t\t\tthis._super = _super;\n\t\t\t\tthis._superApply = _superApply;\n\n\t\t\t\treturnValue = value.apply( this, arguments );\n\n\t\t\t\tthis._super = __super;\n\t\t\t\tthis._superApply = __superApply;\n\n\t\t\t\treturn returnValue;\n\t\t\t};\n\t\t})();\n\t});\n\tconstructor.prototype = $.widget.extend( basePrototype, {\n\t\t// TODO: remove support for widgetEventPrefix\n\t\t// always use the name + a colon as the prefix, e.g., draggable:start\n\t\t// don't prefix for widgets that aren't DOM-based\n\t\twidgetEventPrefix: existingConstructor ? (basePrototype.widgetEventPrefix || name) : name\n\t}, proxiedPrototype, {\n\t\tconstructor: constructor,\n\t\tnamespace: namespace,\n\t\twidgetName: name,\n\t\twidgetFullName: fullName\n\t});\n\n\t// If this widget is being redefined then we need to find all widgets that\n\t// are inheriting from it and redefine all of them so that they inherit from\n\t// the new version of this widget. We're essentially trying to replace one\n\t// level in the prototype chain.\n\tif ( existingConstructor ) {\n\t\t$.each( existingConstructor._childConstructors, function( i, child ) {\n\t\t\tvar childPrototype = child.prototype;\n\n\t\t\t// redefine the child widget using the same prototype that was\n\t\t\t// originally used, but inherit from the new version of the base\n\t\t\t$.widget( childPrototype.namespace + \".\" + childPrototype.widgetName, constructor, child._proto );\n\t\t});\n\t\t// remove the list of existing child constructors from the old constructor\n\t\t// so the old child constructors can be garbage collected\n\t\tdelete existingConstructor._childConstructors;\n\t} else {\n\t\tbase._childConstructors.push( constructor );\n\t}\n\n\t$.widget.bridge( name, constructor );\n\n\treturn constructor;\n};\n\n$.widget.extend = function( target ) {\n\tvar input = widget_slice.call( arguments, 1 ),\n\t\tinputIndex = 0,\n\t\tinputLength = input.length,\n\t\tkey,\n\t\tvalue;\n\tfor ( ; inputIndex < inputLength; inputIndex++ ) {\n\t\tfor ( key in input[ inputIndex ] ) {\n\t\t\tvalue = input[ inputIndex ][ key ];\n\t\t\tif ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) {\n\t\t\t\t// Clone objects\n\t\t\t\tif ( $.isPlainObject( value ) ) {\n\t\t\t\t\ttarget[ key ] = $.isPlainObject( target[ key ] ) ?\n\t\t\t\t\t\t$.widget.extend( {}, target[ key ], value ) :\n\t\t\t\t\t\t// Don't extend strings, arrays, etc. with objects\n\t\t\t\t\t\t$.widget.extend( {}, value );\n\t\t\t\t// Copy everything else by reference\n\t\t\t\t} else {\n\t\t\t\t\ttarget[ key ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn target;\n};\n\n$.widget.bridge = function( name, object ) {\n\tvar fullName = object.prototype.widgetFullName || name;\n\t$.fn[ name ] = function( options ) {\n\t\tvar isMethodCall = typeof options === \"string\",\n\t\t\targs = widget_slice.call( arguments, 1 ),\n\t\t\treturnValue = this;\n\n\t\t// allow multiple hashes to be passed on init\n\t\toptions = !isMethodCall && args.length ?\n\t\t\t$.widget.extend.apply( null, [ options ].concat(args) ) :\n\t\t\toptions;\n\n\t\tif ( isMethodCall ) {\n\t\t\tthis.each(function() {\n\t\t\t\tvar methodValue,\n\t\t\t\t\tinstance = $.data( this, fullName );\n\t\t\t\tif ( options === \"instance\" ) {\n\t\t\t\t\treturnValue = instance;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif ( !instance ) {\n\t\t\t\t\treturn $.error( \"cannot call methods on \" + name + \" prior to initialization; \" +\n\t\t\t\t\t\t\"attempted to call method '\" + options + \"'\" );\n\t\t\t\t}\n\t\t\t\tif ( !$.isFunction( instance[options] ) || options.charAt( 0 ) === \"_\" ) {\n\t\t\t\t\treturn $.error( \"no such method '\" + options + \"' for \" + name + \" widget instance\" );\n\t\t\t\t}\n\t\t\t\tmethodValue = instance[ options ].apply( instance, args );\n\t\t\t\tif ( methodValue !== instance && methodValue !== undefined ) {\n\t\t\t\t\treturnValue = methodValue && methodValue.jquery ?\n\t\t\t\t\t\treturnValue.pushStack( methodValue.get() ) :\n\t\t\t\t\t\tmethodValue;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tthis.each(function() {\n\t\t\t\tvar instance = $.data( this, fullName );\n\t\t\t\tif ( instance ) {\n\t\t\t\t\tinstance.option( options || {} );\n\t\t\t\t\tif ( instance._init ) {\n\t\t\t\t\t\tinstance._init();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t$.data( this, fullName, new object( options, this ) );\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn returnValue;\n\t};\n};\n\n$.Widget = function( /* options, element */ ) {};\n$.Widget._childConstructors = [];\n\n$.Widget.prototype = {\n\twidgetName: \"widget\",\n\twidgetEventPrefix: \"\",\n\tdefaultElement: \"<div>\",\n\toptions: {\n\t\tdisabled: false,\n\n\t\t// callbacks\n\t\tcreate: null\n\t},\n\t_createWidget: function( options, element ) {\n\t\telement = $( element || this.defaultElement || this )[ 0 ];\n\t\tthis.element = $( element );\n\t\tthis.uuid = widget_uuid++;\n\t\tthis.eventNamespace = \".\" + this.widgetName + this.uuid;\n\n\t\tthis.bindings = $();\n\t\tthis.hoverable = $();\n\t\tthis.focusable = $();\n\n\t\tif ( element !== this ) {\n\t\t\t$.data( element, this.widgetFullName, this );\n\t\t\tthis._on( true, this.element, {\n\t\t\t\tremove: function( event ) {\n\t\t\t\t\tif ( event.target === element ) {\n\t\t\t\t\t\tthis.destroy();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.document = $( element.style ?\n\t\t\t\t// element within the document\n\t\t\t\telement.ownerDocument :\n\t\t\t\t// element is window or document\n\t\t\t\telement.document || element );\n\t\t\tthis.window = $( this.document[0].defaultView || this.document[0].parentWindow );\n\t\t}\n\n\t\tthis.options = $.widget.extend( {},\n\t\t\tthis.options,\n\t\t\tthis._getCreateOptions(),\n\t\t\toptions );\n\n\t\tthis._create();\n\t\tthis._trigger( \"create\", null, this._getCreateEventData() );\n\t\tthis._init();\n\t},\n\t_getCreateOptions: $.noop,\n\t_getCreateEventData: $.noop,\n\t_create: $.noop,\n\t_init: $.noop,\n\n\tdestroy: function() {\n\t\tthis._destroy();\n\t\t// we can probably remove the unbind calls in 2.0\n\t\t// all event bindings should go through this._on()\n\t\tthis.element\n\t\t\t.unbind( this.eventNamespace )\n\t\t\t.removeData( this.widgetFullName )\n\t\t\t// support: jquery <1.6.3\n\t\t\t// http://bugs.jquery.com/ticket/9413\n\t\t\t.removeData( $.camelCase( this.widgetFullName ) );\n\t\tthis.widget()\n\t\t\t.unbind( this.eventNamespace )\n\t\t\t.removeAttr( \"aria-disabled\" )\n\t\t\t.removeClass(\n\t\t\t\tthis.widgetFullName + \"-disabled \" +\n\t\t\t\t\"ui-state-disabled\" );\n\n\t\t// clean up events and states\n\t\tthis.bindings.unbind( this.eventNamespace );\n\t\tthis.hoverable.removeClass( \"ui-state-hover\" );\n\t\tthis.focusable.removeClass( \"ui-state-focus\" );\n\t},\n\t_destroy: $.noop,\n\n\twidget: function() {\n\t\treturn this.element;\n\t},\n\n\toption: function( key, value ) {\n\t\tvar options = key,\n\t\t\tparts,\n\t\t\tcurOption,\n\t\t\ti;\n\n\t\tif ( arguments.length === 0 ) {\n\t\t\t// don't return a reference to the internal hash\n\t\t\treturn $.widget.extend( {}, this.options );\n\t\t}\n\n\t\tif ( typeof key === \"string\" ) {\n\t\t\t// handle nested keys, e.g., \"foo.bar\" => { foo: { bar: ___ } }\n\t\t\toptions = {};\n\t\t\tparts = key.split( \".\" );\n\t\t\tkey = parts.shift();\n\t\t\tif ( parts.length ) {\n\t\t\t\tcurOption = options[ key ] = $.widget.extend( {}, this.options[ key ] );\n\t\t\t\tfor ( i = 0; i < parts.length - 1; i++ ) {\n\t\t\t\t\tcurOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};\n\t\t\t\t\tcurOption = curOption[ parts[ i ] ];\n\t\t\t\t}\n\t\t\t\tkey = parts.pop();\n\t\t\t\tif ( arguments.length === 1 ) {\n\t\t\t\t\treturn curOption[ key ] === undefined ? null : curOption[ key ];\n\t\t\t\t}\n\t\t\t\tcurOption[ key ] = value;\n\t\t\t} else {\n\t\t\t\tif ( arguments.length === 1 ) {\n\t\t\t\t\treturn this.options[ key ] === undefined ? null : this.options[ key ];\n\t\t\t\t}\n\t\t\t\toptions[ key ] = value;\n\t\t\t}\n\t\t}\n\n\t\tthis._setOptions( options );\n\n\t\treturn this;\n\t},\n\t_setOptions: function( options ) {\n\t\tvar key;\n\n\t\tfor ( key in options ) {\n\t\t\tthis._setOption( key, options[ key ] );\n\t\t}\n\n\t\treturn this;\n\t},\n\t_setOption: function( key, value ) {\n\t\tthis.options[ key ] = value;\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis.widget()\n\t\t\t\t.toggleClass( this.widgetFullName + \"-disabled\", !!value );\n\n\t\t\t// If the widget is becoming disabled, then nothing is interactive\n\t\t\tif ( value ) {\n\t\t\t\tthis.hoverable.removeClass( \"ui-state-hover\" );\n\t\t\t\tthis.focusable.removeClass( \"ui-state-focus\" );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tenable: function() {\n\t\treturn this._setOptions({ disabled: false });\n\t},\n\tdisable: function() {\n\t\treturn this._setOptions({ disabled: true });\n\t},\n\n\t_on: function( suppressDisabledCheck, element, handlers ) {\n\t\tvar delegateElement,\n\t\t\tinstance = this;\n\n\t\t// no suppressDisabledCheck flag, shuffle arguments\n\t\tif ( typeof suppressDisabledCheck !== \"boolean\" ) {\n\t\t\thandlers = element;\n\t\t\telement = suppressDisabledCheck;\n\t\t\tsuppressDisabledCheck = false;\n\t\t}\n\n\t\t// no element argument, shuffle and use this.element\n\t\tif ( !handlers ) {\n\t\t\thandlers = element;\n\t\t\telement = this.element;\n\t\t\tdelegateElement = this.widget();\n\t\t} else {\n\t\t\telement = delegateElement = $( element );\n\t\t\tthis.bindings = this.bindings.add( element );\n\t\t}\n\n\t\t$.each( handlers, function( event, handler ) {\n\t\t\tfunction handlerProxy() {\n\t\t\t\t// allow widgets to customize the disabled handling\n\t\t\t\t// - disabled as an array instead of boolean\n\t\t\t\t// - disabled class as method for disabling individual parts\n\t\t\t\tif ( !suppressDisabledCheck &&\n\t\t\t\t\t\t( instance.options.disabled === true ||\n\t\t\t\t\t\t\t$( this ).hasClass( \"ui-state-disabled\" ) ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\n\t\t\t\t\t.apply( instance, arguments );\n\t\t\t}\n\n\t\t\t// copy the guid so direct unbinding works\n\t\t\tif ( typeof handler !== \"string\" ) {\n\t\t\t\thandlerProxy.guid = handler.guid =\n\t\t\t\t\thandler.guid || handlerProxy.guid || $.guid++;\n\t\t\t}\n\n\t\t\tvar match = event.match( /^([\\w:-]*)\\s*(.*)$/ ),\n\t\t\t\teventName = match[1] + instance.eventNamespace,\n\t\t\t\tselector = match[2];\n\t\t\tif ( selector ) {\n\t\t\t\tdelegateElement.delegate( selector, eventName, handlerProxy );\n\t\t\t} else {\n\t\t\t\telement.bind( eventName, handlerProxy );\n\t\t\t}\n\t\t});\n\t},\n\n\t_off: function( element, eventName ) {\n\t\teventName = (eventName || \"\").split( \" \" ).join( this.eventNamespace + \" \" ) +\n\t\t\tthis.eventNamespace;\n\t\telement.unbind( eventName ).undelegate( eventName );\n\n\t\t// Clear the stack to avoid memory leaks (#10056)\n\t\tthis.bindings = $( this.bindings.not( element ).get() );\n\t\tthis.focusable = $( this.focusable.not( element ).get() );\n\t\tthis.hoverable = $( this.hoverable.not( element ).get() );\n\t},\n\n\t_delay: function( handler, delay ) {\n\t\tfunction handlerProxy() {\n\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\n\t\t\t\t.apply( instance, arguments );\n\t\t}\n\t\tvar instance = this;\n\t\treturn setTimeout( handlerProxy, delay || 0 );\n\t},\n\n\t_hoverable: function( element ) {\n\t\tthis.hoverable = this.hoverable.add( element );\n\t\tthis._on( element, {\n\t\t\tmouseenter: function( event ) {\n\t\t\t\t$( event.currentTarget ).addClass( \"ui-state-hover\" );\n\t\t\t},\n\t\t\tmouseleave: function( event ) {\n\t\t\t\t$( event.currentTarget ).removeClass( \"ui-state-hover\" );\n\t\t\t}\n\t\t});\n\t},\n\n\t_focusable: function( element ) {\n\t\tthis.focusable = this.focusable.add( element );\n\t\tthis._on( element, {\n\t\t\tfocusin: function( event ) {\n\t\t\t\t$( event.currentTarget ).addClass( \"ui-state-focus\" );\n\t\t\t},\n\t\t\tfocusout: function( event ) {\n\t\t\t\t$( event.currentTarget ).removeClass( \"ui-state-focus\" );\n\t\t\t}\n\t\t});\n\t},\n\n\t_trigger: function( type, event, data ) {\n\t\tvar prop, orig,\n\t\t\tcallback = this.options[ type ];\n\n\t\tdata = data || {};\n\t\tevent = $.Event( event );\n\t\tevent.type = ( type === this.widgetEventPrefix ?\n\t\t\ttype :\n\t\t\tthis.widgetEventPrefix + type ).toLowerCase();\n\t\t// the original event may come from any element\n\t\t// so we need to reset the target on the new event\n\t\tevent.target = this.element[ 0 ];\n\n\t\t// copy original event properties over to the new event\n\t\torig = event.originalEvent;\n\t\tif ( orig ) {\n\t\t\tfor ( prop in orig ) {\n\t\t\t\tif ( !( prop in event ) ) {\n\t\t\t\t\tevent[ prop ] = orig[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.element.trigger( event, data );\n\t\treturn !( $.isFunction( callback ) &&\n\t\t\tcallback.apply( this.element[0], [ event ].concat( data ) ) === false ||\n\t\t\tevent.isDefaultPrevented() );\n\t}\n};\n\n$.each( { show: \"fadeIn\", hide: \"fadeOut\" }, function( method, defaultEffect ) {\n\t$.Widget.prototype[ \"_\" + method ] = function( element, options, callback ) {\n\t\tif ( typeof options === \"string\" ) {\n\t\t\toptions = { effect: options };\n\t\t}\n\t\tvar hasOptions,\n\t\t\teffectName = !options ?\n\t\t\t\tmethod :\n\t\t\t\toptions === true || typeof options === \"number\" ?\n\t\t\t\t\tdefaultEffect :\n\t\t\t\t\toptions.effect || defaultEffect;\n\t\toptions = options || {};\n\t\tif ( typeof options === \"number\" ) {\n\t\t\toptions = { duration: options };\n\t\t}\n\t\thasOptions = !$.isEmptyObject( options );\n\t\toptions.complete = callback;\n\t\tif ( options.delay ) {\n\t\t\telement.delay( options.delay );\n\t\t}\n\t\tif ( hasOptions && $.effects && $.effects.effect[ effectName ] ) {\n\t\t\telement[ method ]( options );\n\t\t} else if ( effectName !== method && element[ effectName ] ) {\n\t\t\telement[ effectName ]( options.duration, options.easing, callback );\n\t\t} else {\n\t\t\telement.queue(function( next ) {\n\t\t\t\t$( this )[ method ]();\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback.call( element[ 0 ] );\n\t\t\t\t}\n\t\t\t\tnext();\n\t\t\t});\n\t\t}\n\t};\n});\n\nvar widget = $.widget;\n\n\n/*!\n * jQuery UI Mouse 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/mouse/\n */\n\n\nvar mouseHandled = false;\n$( document ).mouseup( function() {\n\tmouseHandled = false;\n});\n\nvar mouse = $.widget(\"ui.mouse\", {\n\tversion: \"1.11.2\",\n\toptions: {\n\t\tcancel: \"input,textarea,button,select,option\",\n\t\tdistance: 1,\n\t\tdelay: 0\n\t},\n\t_mouseInit: function() {\n\t\tvar that = this;\n\n\t\tthis.element\n\t\t\t.bind(\"mousedown.\" + this.widgetName, function(event) {\n\t\t\t\treturn that._mouseDown(event);\n\t\t\t})\n\t\t\t.bind(\"click.\" + this.widgetName, function(event) {\n\t\t\t\tif (true === $.data(event.target, that.widgetName + \".preventClickEvent\")) {\n\t\t\t\t\t$.removeData(event.target, that.widgetName + \".preventClickEvent\");\n\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\n\t\tthis.started = false;\n\t},\n\n\t// TODO: make sure destroying one instance of mouse doesn't mess with\n\t// other instances of mouse\n\t_mouseDestroy: function() {\n\t\tthis.element.unbind(\".\" + this.widgetName);\n\t\tif ( this._mouseMoveDelegate ) {\n\t\t\tthis.document\n\t\t\t\t.unbind(\"mousemove.\" + this.widgetName, this._mouseMoveDelegate)\n\t\t\t\t.unbind(\"mouseup.\" + this.widgetName, this._mouseUpDelegate);\n\t\t}\n\t},\n\n\t_mouseDown: function(event) {\n\t\t// don't let more than one widget handle mouseStart\n\t\tif ( mouseHandled ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._mouseMoved = false;\n\n\t\t// we may have missed mouseup (out of window)\n\t\t(this._mouseStarted && this._mouseUp(event));\n\n\t\tthis._mouseDownEvent = event;\n\n\t\tvar that = this,\n\t\t\tbtnIsLeft = (event.which === 1),\n\t\t\t// event.target.nodeName works around a bug in IE 8 with\n\t\t\t// disabled inputs (#7620)\n\t\t\telIsCancel = (typeof this.options.cancel === \"string\" && event.target.nodeName ? $(event.target).closest(this.options.cancel).length : false);\n\t\tif (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) {\n\t\t\treturn true;\n\t\t}\n\n\t\tthis.mouseDelayMet = !this.options.delay;\n\t\tif (!this.mouseDelayMet) {\n\t\t\tthis._mouseDelayTimer = setTimeout(function() {\n\t\t\t\tthat.mouseDelayMet = true;\n\t\t\t}, this.options.delay);\n\t\t}\n\n\t\tif (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {\n\t\t\tthis._mouseStarted = (this._mouseStart(event) !== false);\n\t\t\tif (!this._mouseStarted) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\t// Click event may never have fired (Gecko & Opera)\n\t\tif (true === $.data(event.target, this.widgetName + \".preventClickEvent\")) {\n\t\t\t$.removeData(event.target, this.widgetName + \".preventClickEvent\");\n\t\t}\n\n\t\t// these delegates are required to keep context\n\t\tthis._mouseMoveDelegate = function(event) {\n\t\t\treturn that._mouseMove(event);\n\t\t};\n\t\tthis._mouseUpDelegate = function(event) {\n\t\t\treturn that._mouseUp(event);\n\t\t};\n\n\t\tthis.document\n\t\t\t.bind( \"mousemove.\" + this.widgetName, this._mouseMoveDelegate )\n\t\t\t.bind( \"mouseup.\" + this.widgetName, this._mouseUpDelegate );\n\n\t\tevent.preventDefault();\n\n\t\tmouseHandled = true;\n\t\treturn true;\n\t},\n\n\t_mouseMove: function(event) {\n\t\t// Only check for mouseups outside the document if you've moved inside the document\n\t\t// at least once. This prevents the firing of mouseup in the case of IE<9, which will\n\t\t// fire a mousemove event if content is placed under the cursor. See #7778\n\t\t// Support: IE <9\n\t\tif ( this._mouseMoved ) {\n\t\t\t// IE mouseup check - mouseup happened when mouse was out of window\n\t\t\tif ($.ui.ie && ( !document.documentMode || document.documentMode < 9 ) && !event.button) {\n\t\t\t\treturn this._mouseUp(event);\n\n\t\t\t// Iframe mouseup check - mouseup occurred in another document\n\t\t\t} else if ( !event.which ) {\n\t\t\t\treturn this._mouseUp( event );\n\t\t\t}\n\t\t}\n\n\t\tif ( event.which || event.button ) {\n\t\t\tthis._mouseMoved = true;\n\t\t}\n\n\t\tif (this._mouseStarted) {\n\t\t\tthis._mouseDrag(event);\n\t\t\treturn event.preventDefault();\n\t\t}\n\n\t\tif (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {\n\t\t\tthis._mouseStarted =\n\t\t\t\t(this._mouseStart(this._mouseDownEvent, event) !== false);\n\t\t\t(this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event));\n\t\t}\n\n\t\treturn !this._mouseStarted;\n\t},\n\n\t_mouseUp: function(event) {\n\t\tthis.document\n\t\t\t.unbind( \"mousemove.\" + this.widgetName, this._mouseMoveDelegate )\n\t\t\t.unbind( \"mouseup.\" + this.widgetName, this._mouseUpDelegate );\n\n\t\tif (this._mouseStarted) {\n\t\t\tthis._mouseStarted = false;\n\n\t\t\tif (event.target === this._mouseDownEvent.target) {\n\t\t\t\t$.data(event.target, this.widgetName + \".preventClickEvent\", true);\n\t\t\t}\n\n\t\t\tthis._mouseStop(event);\n\t\t}\n\n\t\tmouseHandled = false;\n\t\treturn false;\n\t},\n\n\t_mouseDistanceMet: function(event) {\n\t\treturn (Math.max(\n\t\t\t\tMath.abs(this._mouseDownEvent.pageX - event.pageX),\n\t\t\t\tMath.abs(this._mouseDownEvent.pageY - event.pageY)\n\t\t\t) >= this.options.distance\n\t\t);\n\t},\n\n\t_mouseDelayMet: function(/* event */) {\n\t\treturn this.mouseDelayMet;\n\t},\n\n\t// These are placeholder methods, to be overriden by extending plugin\n\t_mouseStart: function(/* event */) {},\n\t_mouseDrag: function(/* event */) {},\n\t_mouseStop: function(/* event */) {},\n\t_mouseCapture: function(/* event */) { return true; }\n});\n\n\n/*!\n * jQuery UI Position 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/position/\n */\n\n(function() {\n\n$.ui = $.ui || {};\n\nvar cachedScrollbarWidth, supportsOffsetFractions,\n\tmax = Math.max,\n\tabs = Math.abs,\n\tround = Math.round,\n\trhorizontal = /left|center|right/,\n\trvertical = /top|center|bottom/,\n\troffset = /[\\+\\-]\\d+(\\.[\\d]+)?%?/,\n\trposition = /^\\w+/,\n\trpercent = /%$/,\n\t_position = $.fn.position;\n\nfunction getOffsets( offsets, width, height ) {\n\treturn [\n\t\tparseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ),\n\t\tparseFloat( offsets[ 1 ] ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 )\n\t];\n}\n\nfunction parseCss( element, property ) {\n\treturn parseInt( $.css( element, property ), 10 ) || 0;\n}\n\nfunction getDimensions( elem ) {\n\tvar raw = elem[0];\n\tif ( raw.nodeType === 9 ) {\n\t\treturn {\n\t\t\twidth: elem.width(),\n\t\t\theight: elem.height(),\n\t\t\toffset: { top: 0, left: 0 }\n\t\t};\n\t}\n\tif ( $.isWindow( raw ) ) {\n\t\treturn {\n\t\t\twidth: elem.width(),\n\t\t\theight: elem.height(),\n\t\t\toffset: { top: elem.scrollTop(), left: elem.scrollLeft() }\n\t\t};\n\t}\n\tif ( raw.preventDefault ) {\n\t\treturn {\n\t\t\twidth: 0,\n\t\t\theight: 0,\n\t\t\toffset: { top: raw.pageY, left: raw.pageX }\n\t\t};\n\t}\n\treturn {\n\t\twidth: elem.outerWidth(),\n\t\theight: elem.outerHeight(),\n\t\toffset: elem.offset()\n\t};\n}\n\n$.position = {\n\tscrollbarWidth: function() {\n\t\tif ( cachedScrollbarWidth !== undefined ) {\n\t\t\treturn cachedScrollbarWidth;\n\t\t}\n\t\tvar w1, w2,\n\t\t\tdiv = $( \"<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>\" ),\n\t\t\tinnerDiv = div.children()[0];\n\n\t\t$( \"body\" ).append( div );\n\t\tw1 = innerDiv.offsetWidth;\n\t\tdiv.css( \"overflow\", \"scroll\" );\n\n\t\tw2 = innerDiv.offsetWidth;\n\n\t\tif ( w1 === w2 ) {\n\t\t\tw2 = div[0].clientWidth;\n\t\t}\n\n\t\tdiv.remove();\n\n\t\treturn (cachedScrollbarWidth = w1 - w2);\n\t},\n\tgetScrollInfo: function( within ) {\n\t\tvar overflowX = within.isWindow || within.isDocument ? \"\" :\n\t\t\t\twithin.element.css( \"overflow-x\" ),\n\t\t\toverflowY = within.isWindow || within.isDocument ? \"\" :\n\t\t\t\twithin.element.css( \"overflow-y\" ),\n\t\t\thasOverflowX = overflowX === \"scroll\" ||\n\t\t\t\t( overflowX === \"auto\" && within.width < within.element[0].scrollWidth ),\n\t\t\thasOverflowY = overflowY === \"scroll\" ||\n\t\t\t\t( overflowY === \"auto\" && within.height < within.element[0].scrollHeight );\n\t\treturn {\n\t\t\twidth: hasOverflowY ? $.position.scrollbarWidth() : 0,\n\t\t\theight: hasOverflowX ? $.position.scrollbarWidth() : 0\n\t\t};\n\t},\n\tgetWithinInfo: function( element ) {\n\t\tvar withinElement = $( element || window ),\n\t\t\tisWindow = $.isWindow( withinElement[0] ),\n\t\t\tisDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9;\n\t\treturn {\n\t\t\telement: withinElement,\n\t\t\tisWindow: isWindow,\n\t\t\tisDocument: isDocument,\n\t\t\toffset: withinElement.offset() || { left: 0, top: 0 },\n\t\t\tscrollLeft: withinElement.scrollLeft(),\n\t\t\tscrollTop: withinElement.scrollTop(),\n\n\t\t\t// support: jQuery 1.6.x\n\t\t\t// jQuery 1.6 doesn't support .outerWidth/Height() on documents or windows\n\t\t\twidth: isWindow || isDocument ? withinElement.width() : withinElement.outerWidth(),\n\t\t\theight: isWindow || isDocument ? withinElement.height() : withinElement.outerHeight()\n\t\t};\n\t}\n};\n\n$.fn.position = function( options ) {\n\tif ( !options || !options.of ) {\n\t\treturn _position.apply( this, arguments );\n\t}\n\n\t// make a copy, we don't want to modify arguments\n\toptions = $.extend( {}, options );\n\n\tvar atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions,\n\t\ttarget = $( options.of ),\n\t\twithin = $.position.getWithinInfo( options.within ),\n\t\tscrollInfo = $.position.getScrollInfo( within ),\n\t\tcollision = ( options.collision || \"flip\" ).split( \" \" ),\n\t\toffsets = {};\n\n\tdimensions = getDimensions( target );\n\tif ( target[0].preventDefault ) {\n\t\t// force left top to allow flipping\n\t\toptions.at = \"left top\";\n\t}\n\ttargetWidth = dimensions.width;\n\ttargetHeight = dimensions.height;\n\ttargetOffset = dimensions.offset;\n\t// clone to reuse original targetOffset later\n\tbasePosition = $.extend( {}, targetOffset );\n\n\t// force my and at to have valid horizontal and vertical positions\n\t// if a value is missing or invalid, it will be converted to center\n\t$.each( [ \"my\", \"at\" ], function() {\n\t\tvar pos = ( options[ this ] || \"\" ).split( \" \" ),\n\t\t\thorizontalOffset,\n\t\t\tverticalOffset;\n\n\t\tif ( pos.length === 1) {\n\t\t\tpos = rhorizontal.test( pos[ 0 ] ) ?\n\t\t\t\tpos.concat( [ \"center\" ] ) :\n\t\t\t\trvertical.test( pos[ 0 ] ) ?\n\t\t\t\t\t[ \"center\" ].concat( pos ) :\n\t\t\t\t\t[ \"center\", \"center\" ];\n\t\t}\n\t\tpos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : \"center\";\n\t\tpos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : \"center\";\n\n\t\t// calculate offsets\n\t\thorizontalOffset = roffset.exec( pos[ 0 ] );\n\t\tverticalOffset = roffset.exec( pos[ 1 ] );\n\t\toffsets[ this ] = [\n\t\t\thorizontalOffset ? horizontalOffset[ 0 ] : 0,\n\t\t\tverticalOffset ? verticalOffset[ 0 ] : 0\n\t\t];\n\n\t\t// reduce to just the positions without the offsets\n\t\toptions[ this ] = [\n\t\t\trposition.exec( pos[ 0 ] )[ 0 ],\n\t\t\trposition.exec( pos[ 1 ] )[ 0 ]\n\t\t];\n\t});\n\n\t// normalize collision option\n\tif ( collision.length === 1 ) {\n\t\tcollision[ 1 ] = collision[ 0 ];\n\t}\n\n\tif ( options.at[ 0 ] === \"right\" ) {\n\t\tbasePosition.left += targetWidth;\n\t} else if ( options.at[ 0 ] === \"center\" ) {\n\t\tbasePosition.left += targetWidth / 2;\n\t}\n\n\tif ( options.at[ 1 ] === \"bottom\" ) {\n\t\tbasePosition.top += targetHeight;\n\t} else if ( options.at[ 1 ] === \"center\" ) {\n\t\tbasePosition.top += targetHeight / 2;\n\t}\n\n\tatOffset = getOffsets( offsets.at, targetWidth, targetHeight );\n\tbasePosition.left += atOffset[ 0 ];\n\tbasePosition.top += atOffset[ 1 ];\n\n\treturn this.each(function() {\n\t\tvar collisionPosition, using,\n\t\t\telem = $( this ),\n\t\t\telemWidth = elem.outerWidth(),\n\t\t\telemHeight = elem.outerHeight(),\n\t\t\tmarginLeft = parseCss( this, \"marginLeft\" ),\n\t\t\tmarginTop = parseCss( this, \"marginTop\" ),\n\t\t\tcollisionWidth = elemWidth + marginLeft + parseCss( this, \"marginRight\" ) + scrollInfo.width,\n\t\t\tcollisionHeight = elemHeight + marginTop + parseCss( this, \"marginBottom\" ) + scrollInfo.height,\n\t\t\tposition = $.extend( {}, basePosition ),\n\t\t\tmyOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() );\n\n\t\tif ( options.my[ 0 ] === \"right\" ) {\n\t\t\tposition.left -= elemWidth;\n\t\t} else if ( options.my[ 0 ] === \"center\" ) {\n\t\t\tposition.left -= elemWidth / 2;\n\t\t}\n\n\t\tif ( options.my[ 1 ] === \"bottom\" ) {\n\t\t\tposition.top -= elemHeight;\n\t\t} else if ( options.my[ 1 ] === \"center\" ) {\n\t\t\tposition.top -= elemHeight / 2;\n\t\t}\n\n\t\tposition.left += myOffset[ 0 ];\n\t\tposition.top += myOffset[ 1 ];\n\n\t\t// if the browser doesn't support fractions, then round for consistent results\n\t\tif ( !supportsOffsetFractions ) {\n\t\t\tposition.left = round( position.left );\n\t\t\tposition.top = round( position.top );\n\t\t}\n\n\t\tcollisionPosition = {\n\t\t\tmarginLeft: marginLeft,\n\t\t\tmarginTop: marginTop\n\t\t};\n\n\t\t$.each( [ \"left\", \"top\" ], function( i, dir ) {\n\t\t\tif ( $.ui.position[ collision[ i ] ] ) {\n\t\t\t\t$.ui.position[ collision[ i ] ][ dir ]( position, {\n\t\t\t\t\ttargetWidth: targetWidth,\n\t\t\t\t\ttargetHeight: targetHeight,\n\t\t\t\t\telemWidth: elemWidth,\n\t\t\t\t\telemHeight: elemHeight,\n\t\t\t\t\tcollisionPosition: collisionPosition,\n\t\t\t\t\tcollisionWidth: collisionWidth,\n\t\t\t\t\tcollisionHeight: collisionHeight,\n\t\t\t\t\toffset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ],\n\t\t\t\t\tmy: options.my,\n\t\t\t\t\tat: options.at,\n\t\t\t\t\twithin: within,\n\t\t\t\t\telem: elem\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tif ( options.using ) {\n\t\t\t// adds feedback as second argument to using callback, if present\n\t\t\tusing = function( props ) {\n\t\t\t\tvar left = targetOffset.left - position.left,\n\t\t\t\t\tright = left + targetWidth - elemWidth,\n\t\t\t\t\ttop = targetOffset.top - position.top,\n\t\t\t\t\tbottom = top + targetHeight - elemHeight,\n\t\t\t\t\tfeedback = {\n\t\t\t\t\t\ttarget: {\n\t\t\t\t\t\t\telement: target,\n\t\t\t\t\t\t\tleft: targetOffset.left,\n\t\t\t\t\t\t\ttop: targetOffset.top,\n\t\t\t\t\t\t\twidth: targetWidth,\n\t\t\t\t\t\t\theight: targetHeight\n\t\t\t\t\t\t},\n\t\t\t\t\t\telement: {\n\t\t\t\t\t\t\telement: elem,\n\t\t\t\t\t\t\tleft: position.left,\n\t\t\t\t\t\t\ttop: position.top,\n\t\t\t\t\t\t\twidth: elemWidth,\n\t\t\t\t\t\t\theight: elemHeight\n\t\t\t\t\t\t},\n\t\t\t\t\t\thorizontal: right < 0 ? \"left\" : left > 0 ? \"right\" : \"center\",\n\t\t\t\t\t\tvertical: bottom < 0 ? \"top\" : top > 0 ? \"bottom\" : \"middle\"\n\t\t\t\t\t};\n\t\t\t\tif ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) {\n\t\t\t\t\tfeedback.horizontal = \"center\";\n\t\t\t\t}\n\t\t\t\tif ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) {\n\t\t\t\t\tfeedback.vertical = \"middle\";\n\t\t\t\t}\n\t\t\t\tif ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) {\n\t\t\t\t\tfeedback.important = \"horizontal\";\n\t\t\t\t} else {\n\t\t\t\t\tfeedback.important = \"vertical\";\n\t\t\t\t}\n\t\t\t\toptions.using.call( this, props, feedback );\n\t\t\t};\n\t\t}\n\n\t\telem.offset( $.extend( position, { using: using } ) );\n\t});\n};\n\n$.ui.position = {\n\tfit: {\n\t\tleft: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.isWindow ? within.scrollLeft : within.offset.left,\n\t\t\t\touterWidth = within.width,\n\t\t\t\tcollisionPosLeft = position.left - data.collisionPosition.marginLeft,\n\t\t\t\toverLeft = withinOffset - collisionPosLeft,\n\t\t\t\toverRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset,\n\t\t\t\tnewOverRight;\n\n\t\t\t// element is wider than within\n\t\t\tif ( data.collisionWidth > outerWidth ) {\n\t\t\t\t// element is initially over the left side of within\n\t\t\t\tif ( overLeft > 0 && overRight <= 0 ) {\n\t\t\t\t\tnewOverRight = position.left + overLeft + data.collisionWidth - outerWidth - withinOffset;\n\t\t\t\t\tposition.left += overLeft - newOverRight;\n\t\t\t\t// element is initially over right side of within\n\t\t\t\t} else if ( overRight > 0 && overLeft <= 0 ) {\n\t\t\t\t\tposition.left = withinOffset;\n\t\t\t\t// element is initially over both left and right sides of within\n\t\t\t\t} else {\n\t\t\t\t\tif ( overLeft > overRight ) {\n\t\t\t\t\t\tposition.left = withinOffset + outerWidth - data.collisionWidth;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tposition.left = withinOffset;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t// too far left -> align with left edge\n\t\t\t} else if ( overLeft > 0 ) {\n\t\t\t\tposition.left += overLeft;\n\t\t\t// too far right -> align with right edge\n\t\t\t} else if ( overRight > 0 ) {\n\t\t\t\tposition.left -= overRight;\n\t\t\t// adjust based on position and margin\n\t\t\t} else {\n\t\t\t\tposition.left = max( position.left - collisionPosLeft, position.left );\n\t\t\t}\n\t\t},\n\t\ttop: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.isWindow ? within.scrollTop : within.offset.top,\n\t\t\t\touterHeight = data.within.height,\n\t\t\t\tcollisionPosTop = position.top - data.collisionPosition.marginTop,\n\t\t\t\toverTop = withinOffset - collisionPosTop,\n\t\t\t\toverBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset,\n\t\t\t\tnewOverBottom;\n\n\t\t\t// element is taller than within\n\t\t\tif ( data.collisionHeight > outerHeight ) {\n\t\t\t\t// element is initially over the top of within\n\t\t\t\tif ( overTop > 0 && overBottom <= 0 ) {\n\t\t\t\t\tnewOverBottom = position.top + overTop + data.collisionHeight - outerHeight - withinOffset;\n\t\t\t\t\tposition.top += overTop - newOverBottom;\n\t\t\t\t// element is initially over bottom of within\n\t\t\t\t} else if ( overBottom > 0 && overTop <= 0 ) {\n\t\t\t\t\tposition.top = withinOffset;\n\t\t\t\t// element is initially over both top and bottom of within\n\t\t\t\t} else {\n\t\t\t\t\tif ( overTop > overBottom ) {\n\t\t\t\t\t\tposition.top = withinOffset + outerHeight - data.collisionHeight;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tposition.top = withinOffset;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t// too far up -> align with top\n\t\t\t} else if ( overTop > 0 ) {\n\t\t\t\tposition.top += overTop;\n\t\t\t// too far down -> align with bottom edge\n\t\t\t} else if ( overBottom > 0 ) {\n\t\t\t\tposition.top -= overBottom;\n\t\t\t// adjust based on position and margin\n\t\t\t} else {\n\t\t\t\tposition.top = max( position.top - collisionPosTop, position.top );\n\t\t\t}\n\t\t}\n\t},\n\tflip: {\n\t\tleft: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.offset.left + within.scrollLeft,\n\t\t\t\touterWidth = within.width,\n\t\t\t\toffsetLeft = within.isWindow ? within.scrollLeft : within.offset.left,\n\t\t\t\tcollisionPosLeft = position.left - data.collisionPosition.marginLeft,\n\t\t\t\toverLeft = collisionPosLeft - offsetLeft,\n\t\t\t\toverRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft,\n\t\t\t\tmyOffset = data.my[ 0 ] === \"left\" ?\n\t\t\t\t\t-data.elemWidth :\n\t\t\t\t\tdata.my[ 0 ] === \"right\" ?\n\t\t\t\t\t\tdata.elemWidth :\n\t\t\t\t\t\t0,\n\t\t\t\tatOffset = data.at[ 0 ] === \"left\" ?\n\t\t\t\t\tdata.targetWidth :\n\t\t\t\t\tdata.at[ 0 ] === \"right\" ?\n\t\t\t\t\t\t-data.targetWidth :\n\t\t\t\t\t\t0,\n\t\t\t\toffset = -2 * data.offset[ 0 ],\n\t\t\t\tnewOverRight,\n\t\t\t\tnewOverLeft;\n\n\t\t\tif ( overLeft < 0 ) {\n\t\t\t\tnewOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - outerWidth - withinOffset;\n\t\t\t\tif ( newOverRight < 0 || newOverRight < abs( overLeft ) ) {\n\t\t\t\t\tposition.left += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t} else if ( overRight > 0 ) {\n\t\t\t\tnewOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + atOffset + offset - offsetLeft;\n\t\t\t\tif ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) {\n\t\t\t\t\tposition.left += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\ttop: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.offset.top + within.scrollTop,\n\t\t\t\touterHeight = within.height,\n\t\t\t\toffsetTop = within.isWindow ? within.scrollTop : within.offset.top,\n\t\t\t\tcollisionPosTop = position.top - data.collisionPosition.marginTop,\n\t\t\t\toverTop = collisionPosTop - offsetTop,\n\t\t\t\toverBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop,\n\t\t\t\ttop = data.my[ 1 ] === \"top\",\n\t\t\t\tmyOffset = top ?\n\t\t\t\t\t-data.elemHeight :\n\t\t\t\t\tdata.my[ 1 ] === \"bottom\" ?\n\t\t\t\t\t\tdata.elemHeight :\n\t\t\t\t\t\t0,\n\t\t\t\tatOffset = data.at[ 1 ] === \"top\" ?\n\t\t\t\t\tdata.targetHeight :\n\t\t\t\t\tdata.at[ 1 ] === \"bottom\" ?\n\t\t\t\t\t\t-data.targetHeight :\n\t\t\t\t\t\t0,\n\t\t\t\toffset = -2 * data.offset[ 1 ],\n\t\t\t\tnewOverTop,\n\t\t\t\tnewOverBottom;\n\t\t\tif ( overTop < 0 ) {\n\t\t\t\tnewOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - outerHeight - withinOffset;\n\t\t\t\tif ( ( position.top + myOffset + atOffset + offset) > overTop && ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) ) {\n\t\t\t\t\tposition.top += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t} else if ( overBottom > 0 ) {\n\t\t\t\tnewOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset + offset - offsetTop;\n\t\t\t\tif ( ( position.top + myOffset + atOffset + offset) > overBottom && ( newOverTop > 0 || abs( newOverTop ) < overBottom ) ) {\n\t\t\t\t\tposition.top += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tflipfit: {\n\t\tleft: function() {\n\t\t\t$.ui.position.flip.left.apply( this, arguments );\n\t\t\t$.ui.position.fit.left.apply( this, arguments );\n\t\t},\n\t\ttop: function() {\n\t\t\t$.ui.position.flip.top.apply( this, arguments );\n\t\t\t$.ui.position.fit.top.apply( this, arguments );\n\t\t}\n\t}\n};\n\n// fraction support test\n(function() {\n\tvar testElement, testElementParent, testElementStyle, offsetLeft, i,\n\t\tbody = document.getElementsByTagName( \"body\" )[ 0 ],\n\t\tdiv = document.createElement( \"div\" );\n\n\t//Create a \"fake body\" for testing based on method used in jQuery.support\n\ttestElement = document.createElement( body ? \"div\" : \"body\" );\n\ttestElementStyle = {\n\t\tvisibility: \"hidden\",\n\t\twidth: 0,\n\t\theight: 0,\n\t\tborder: 0,\n\t\tmargin: 0,\n\t\tbackground: \"none\"\n\t};\n\tif ( body ) {\n\t\t$.extend( testElementStyle, {\n\t\t\tposition: \"absolute\",\n\t\t\tleft: \"-1000px\",\n\t\t\ttop: \"-1000px\"\n\t\t});\n\t}\n\tfor ( i in testElementStyle ) {\n\t\ttestElement.style[ i ] = testElementStyle[ i ];\n\t}\n\ttestElement.appendChild( div );\n\ttestElementParent = body || document.documentElement;\n\ttestElementParent.insertBefore( testElement, testElementParent.firstChild );\n\n\tdiv.style.cssText = \"position: absolute; left: 10.7432222px;\";\n\n\toffsetLeft = $( div ).offset().left;\n\tsupportsOffsetFractions = offsetLeft > 10 && offsetLeft < 11;\n\n\ttestElement.innerHTML = \"\";\n\ttestElementParent.removeChild( testElement );\n})();\n\n})();\n\nvar position = $.ui.position;\n\n\n/*!\n * jQuery UI Accordion 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/accordion/\n */\n\n\nvar accordion = $.widget( \"ui.accordion\", {\n\tversion: \"1.11.2\",\n\toptions: {\n\t\tactive: 0,\n\t\tanimate: {},\n\t\tcollapsible: false,\n\t\tevent: \"click\",\n\t\theader: \"> li > :first-child,> :not(li):even\",\n\t\theightStyle: \"auto\",\n\t\ticons: {\n\t\t\tactiveHeader: \"ui-icon-triangle-1-s\",\n\t\t\theader: \"ui-icon-triangle-1-e\"\n\t\t},\n\n\t\t// callbacks\n\t\tactivate: null,\n\t\tbeforeActivate: null\n\t},\n\n\thideProps: {\n\t\tborderTopWidth: \"hide\",\n\t\tborderBottomWidth: \"hide\",\n\t\tpaddingTop: \"hide\",\n\t\tpaddingBottom: \"hide\",\n\t\theight: \"hide\"\n\t},\n\n\tshowProps: {\n\t\tborderTopWidth: \"show\",\n\t\tborderBottomWidth: \"show\",\n\t\tpaddingTop: \"show\",\n\t\tpaddingBottom: \"show\",\n\t\theight: \"show\"\n\t},\n\n\t_create: function() {\n\t\tvar options = this.options;\n\t\tthis.prevShow = this.prevHide = $();\n\t\tthis.element.addClass( \"ui-accordion ui-widget ui-helper-reset\" )\n\t\t\t// ARIA\n\t\t\t.attr( \"role\", \"tablist\" );\n\n\t\t// don't allow collapsible: false and active: false / null\n\t\tif ( !options.collapsible && (options.active === false || options.active == null) ) {\n\t\t\toptions.active = 0;\n\t\t}\n\n\t\tthis._processPanels();\n\t\t// handle negative values\n\t\tif ( options.active < 0 ) {\n\t\t\toptions.active += this.headers.length;\n\t\t}\n\t\tthis._refresh();\n\t},\n\n\t_getCreateEventData: function() {\n\t\treturn {\n\t\t\theader: this.active,\n\t\t\tpanel: !this.active.length ? $() : this.active.next()\n\t\t};\n\t},\n\n\t_createIcons: function() {\n\t\tvar icons = this.options.icons;\n\t\tif ( icons ) {\n\t\t\t$( \"<span>\" )\n\t\t\t\t.addClass( \"ui-accordion-header-icon ui-icon \" + icons.header )\n\t\t\t\t.prependTo( this.headers );\n\t\t\tthis.active.children( \".ui-accordion-header-icon\" )\n\t\t\t\t.removeClass( icons.header )\n\t\t\t\t.addClass( icons.activeHeader );\n\t\t\tthis.headers.addClass( \"ui-accordion-icons\" );\n\t\t}\n\t},\n\n\t_destroyIcons: function() {\n\t\tthis.headers\n\t\t\t.removeClass( \"ui-accordion-icons\" )\n\t\t\t.children( \".ui-accordion-header-icon\" )\n\t\t\t\t.remove();\n\t},\n\n\t_destroy: function() {\n\t\tvar contents;\n\n\t\t// clean up main element\n\t\tthis.element\n\t\t\t.removeClass( \"ui-accordion ui-widget ui-helper-reset\" )\n\t\t\t.removeAttr( \"role\" );\n\n\t\t// clean up headers\n\t\tthis.headers\n\t\t\t.removeClass( \"ui-accordion-header ui-accordion-header-active ui-state-default \" +\n\t\t\t\t\"ui-corner-all ui-state-active ui-state-disabled ui-corner-top\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-expanded\" )\n\t\t\t.removeAttr( \"aria-selected\" )\n\t\t\t.removeAttr( \"aria-controls\" )\n\t\t\t.removeAttr( \"tabIndex\" )\n\t\t\t.removeUniqueId();\n\n\t\tthis._destroyIcons();\n\n\t\t// clean up content panels\n\t\tcontents = this.headers.next()\n\t\t\t.removeClass( \"ui-helper-reset ui-widget-content ui-corner-bottom \" +\n\t\t\t\t\"ui-accordion-content ui-accordion-content-active ui-state-disabled\" )\n\t\t\t.css( \"display\", \"\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-hidden\" )\n\t\t\t.removeAttr( \"aria-labelledby\" )\n\t\t\t.removeUniqueId();\n\n\t\tif ( this.options.heightStyle !== \"content\" ) {\n\t\t\tcontents.css( \"height\", \"\" );\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"active\" ) {\n\t\t\t// _activate() will handle invalid values and update this.options\n\t\t\tthis._activate( value );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key === \"event\" ) {\n\t\t\tif ( this.options.event ) {\n\t\t\t\tthis._off( this.headers, this.options.event );\n\t\t\t}\n\t\t\tthis._setupEvents( value );\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\t// setting collapsible: false while collapsed; open first panel\n\t\tif ( key === \"collapsible\" && !value && this.options.active === false ) {\n\t\t\tthis._activate( 0 );\n\t\t}\n\n\t\tif ( key === \"icons\" ) {\n\t\t\tthis._destroyIcons();\n\t\t\tif ( value ) {\n\t\t\t\tthis._createIcons();\n\t\t\t}\n\t\t}\n\n\t\t// #5332 - opacity doesn't cascade to positioned elements in IE\n\t\t// so we need to add the disabled class to the headers and panels\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis.element\n\t\t\t\t.toggleClass( \"ui-state-disabled\", !!value )\n\t\t\t\t.attr( \"aria-disabled\", value );\n\t\t\tthis.headers.add( this.headers.next() )\n\t\t\t\t.toggleClass( \"ui-state-disabled\", !!value );\n\t\t}\n\t},\n\n\t_keydown: function( event ) {\n\t\tif ( event.altKey || event.ctrlKey ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar keyCode = $.ui.keyCode,\n\t\t\tlength = this.headers.length,\n\t\t\tcurrentIndex = this.headers.index( event.target ),\n\t\t\ttoFocus = false;\n\n\t\tswitch ( event.keyCode ) {\n\t\t\tcase keyCode.RIGHT:\n\t\t\tcase keyCode.DOWN:\n\t\t\t\ttoFocus = this.headers[ ( currentIndex + 1 ) % length ];\n\t\t\t\tbreak;\n\t\t\tcase keyCode.LEFT:\n\t\t\tcase keyCode.UP:\n\t\t\t\ttoFocus = this.headers[ ( currentIndex - 1 + length ) % length ];\n\t\t\t\tbreak;\n\t\t\tcase keyCode.SPACE:\n\t\t\tcase keyCode.ENTER:\n\t\t\t\tthis._eventHandler( event );\n\t\t\t\tbreak;\n\t\t\tcase keyCode.HOME:\n\t\t\t\ttoFocus = this.headers[ 0 ];\n\t\t\t\tbreak;\n\t\t\tcase keyCode.END:\n\t\t\t\ttoFocus = this.headers[ length - 1 ];\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif ( toFocus ) {\n\t\t\t$( event.target ).attr( \"tabIndex\", -1 );\n\t\t\t$( toFocus ).attr( \"tabIndex\", 0 );\n\t\t\ttoFocus.focus();\n\t\t\tevent.preventDefault();\n\t\t}\n\t},\n\n\t_panelKeyDown: function( event ) {\n\t\tif ( event.keyCode === $.ui.keyCode.UP && event.ctrlKey ) {\n\t\t\t$( event.currentTarget ).prev().focus();\n\t\t}\n\t},\n\n\trefresh: function() {\n\t\tvar options = this.options;\n\t\tthis._processPanels();\n\n\t\t// was collapsed or no panel\n\t\tif ( ( options.active === false && options.collapsible === true ) || !this.headers.length ) {\n\t\t\toptions.active = false;\n\t\t\tthis.active = $();\n\t\t// active false only when collapsible is true\n\t\t} else if ( options.active === false ) {\n\t\t\tthis._activate( 0 );\n\t\t// was active, but active panel is gone\n\t\t} else if ( this.active.length && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {\n\t\t\t// all remaining panel are disabled\n\t\t\tif ( this.headers.length === this.headers.find(\".ui-state-disabled\").length ) {\n\t\t\t\toptions.active = false;\n\t\t\t\tthis.active = $();\n\t\t\t// activate previous panel\n\t\t\t} else {\n\t\t\t\tthis._activate( Math.max( 0, options.active - 1 ) );\n\t\t\t}\n\t\t// was active, active panel still exists\n\t\t} else {\n\t\t\t// make sure active index is correct\n\t\t\toptions.active = this.headers.index( this.active );\n\t\t}\n\n\t\tthis._destroyIcons();\n\n\t\tthis._refresh();\n\t},\n\n\t_processPanels: function() {\n\t\tvar prevHeaders = this.headers,\n\t\t\tprevPanels = this.panels;\n\n\t\tthis.headers = this.element.find( this.options.header )\n\t\t\t.addClass( \"ui-accordion-header ui-state-default ui-corner-all\" );\n\n\t\tthis.panels = this.headers.next()\n\t\t\t.addClass( \"ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom\" )\n\t\t\t.filter( \":not(.ui-accordion-content-active)\" )\n\t\t\t.hide();\n\n\t\t// Avoid memory leaks (#10056)\n\t\tif ( prevPanels ) {\n\t\t\tthis._off( prevHeaders.not( this.headers ) );\n\t\t\tthis._off( prevPanels.not( this.panels ) );\n\t\t}\n\t},\n\n\t_refresh: function() {\n\t\tvar maxHeight,\n\t\t\toptions = this.options,\n\t\t\theightStyle = options.heightStyle,\n\t\t\tparent = this.element.parent();\n\n\t\tthis.active = this._findActive( options.active )\n\t\t\t.addClass( \"ui-accordion-header-active ui-state-active ui-corner-top\" )\n\t\t\t.removeClass( \"ui-corner-all\" );\n\t\tthis.active.next()\n\t\t\t.addClass( \"ui-accordion-content-active\" )\n\t\t\t.show();\n\n\t\tthis.headers\n\t\t\t.attr( \"role\", \"tab\" )\n\t\t\t.each(function() {\n\t\t\t\tvar header = $( this ),\n\t\t\t\t\theaderId = header.uniqueId().attr( \"id\" ),\n\t\t\t\t\tpanel = header.next(),\n\t\t\t\t\tpanelId = panel.uniqueId().attr( \"id\" );\n\t\t\t\theader.attr( \"aria-controls\", panelId );\n\t\t\t\tpanel.attr( \"aria-labelledby\", headerId );\n\t\t\t})\n\t\t\t.next()\n\t\t\t\t.attr( \"role\", \"tabpanel\" );\n\n\t\tthis.headers\n\t\t\t.not( this.active )\n\t\t\t.attr({\n\t\t\t\t\"aria-selected\": \"false\",\n\t\t\t\t\"aria-expanded\": \"false\",\n\t\t\t\ttabIndex: -1\n\t\t\t})\n\t\t\t.next()\n\t\t\t\t.attr({\n\t\t\t\t\t\"aria-hidden\": \"true\"\n\t\t\t\t})\n\t\t\t\t.hide();\n\n\t\t// make sure at least one header is in the tab order\n\t\tif ( !this.active.length ) {\n\t\t\tthis.headers.eq( 0 ).attr( \"tabIndex\", 0 );\n\t\t} else {\n\t\t\tthis.active.attr({\n\t\t\t\t\"aria-selected\": \"true\",\n\t\t\t\t\"aria-expanded\": \"true\",\n\t\t\t\ttabIndex: 0\n\t\t\t})\n\t\t\t.next()\n\t\t\t\t.attr({\n\t\t\t\t\t\"aria-hidden\": \"false\"\n\t\t\t\t});\n\t\t}\n\n\t\tthis._createIcons();\n\n\t\tthis._setupEvents( options.event );\n\n\t\tif ( heightStyle === \"fill\" ) {\n\t\t\tmaxHeight = parent.height();\n\t\t\tthis.element.siblings( \":visible\" ).each(function() {\n\t\t\t\tvar elem = $( this ),\n\t\t\t\t\tposition = elem.css( \"position\" );\n\n\t\t\t\tif ( position === \"absolute\" || position === \"fixed\" ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tmaxHeight -= elem.outerHeight( true );\n\t\t\t});\n\n\t\t\tthis.headers.each(function() {\n\t\t\t\tmaxHeight -= $( this ).outerHeight( true );\n\t\t\t});\n\n\t\t\tthis.headers.next()\n\t\t\t\t.each(function() {\n\t\t\t\t\t$( this ).height( Math.max( 0, maxHeight -\n\t\t\t\t\t\t$( this ).innerHeight() + $( this ).height() ) );\n\t\t\t\t})\n\t\t\t\t.css( \"overflow\", \"auto\" );\n\t\t} else if ( heightStyle === \"auto\" ) {\n\t\t\tmaxHeight = 0;\n\t\t\tthis.headers.next()\n\t\t\t\t.each(function() {\n\t\t\t\t\tmaxHeight = Math.max( maxHeight, $( this ).css( \"height\", \"\" ).height() );\n\t\t\t\t})\n\t\t\t\t.height( maxHeight );\n\t\t}\n\t},\n\n\t_activate: function( index ) {\n\t\tvar active = this._findActive( index )[ 0 ];\n\n\t\t// trying to activate the already active panel\n\t\tif ( active === this.active[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// trying to collapse, simulate a click on the currently active header\n\t\tactive = active || this.active[ 0 ];\n\n\t\tthis._eventHandler({\n\t\t\ttarget: active,\n\t\t\tcurrentTarget: active,\n\t\t\tpreventDefault: $.noop\n\t\t});\n\t},\n\n\t_findActive: function( selector ) {\n\t\treturn typeof selector === \"number\" ? this.headers.eq( selector ) : $();\n\t},\n\n\t_setupEvents: function( event ) {\n\t\tvar events = {\n\t\t\tkeydown: \"_keydown\"\n\t\t};\n\t\tif ( event ) {\n\t\t\t$.each( event.split( \" \" ), function( index, eventName ) {\n\t\t\t\tevents[ eventName ] = \"_eventHandler\";\n\t\t\t});\n\t\t}\n\n\t\tthis._off( this.headers.add( this.headers.next() ) );\n\t\tthis._on( this.headers, events );\n\t\tthis._on( this.headers.next(), { keydown: \"_panelKeyDown\" });\n\t\tthis._hoverable( this.headers );\n\t\tthis._focusable( this.headers );\n\t},\n\n\t_eventHandler: function( event ) {\n\t\tvar options = this.options,\n\t\t\tactive = this.active,\n\t\t\tclicked = $( event.currentTarget ),\n\t\t\tclickedIsActive = clicked[ 0 ] === active[ 0 ],\n\t\t\tcollapsing = clickedIsActive && options.collapsible,\n\t\t\ttoShow = collapsing ? $() : clicked.next(),\n\t\t\ttoHide = active.next(),\n\t\t\teventData = {\n\t\t\t\toldHeader: active,\n\t\t\t\toldPanel: toHide,\n\t\t\t\tnewHeader: collapsing ? $() : clicked,\n\t\t\t\tnewPanel: toShow\n\t\t\t};\n\n\t\tevent.preventDefault();\n\n\t\tif (\n\t\t\t\t// click on active header, but not collapsible\n\t\t\t\t( clickedIsActive && !options.collapsible ) ||\n\t\t\t\t// allow canceling activation\n\t\t\t\t( this._trigger( \"beforeActivate\", event, eventData ) === false ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\toptions.active = collapsing ? false : this.headers.index( clicked );\n\n\t\t// when the call to ._toggle() comes after the class changes\n\t\t// it causes a very odd bug in IE 8 (see #6720)\n\t\tthis.active = clickedIsActive ? $() : clicked;\n\t\tthis._toggle( eventData );\n\n\t\t// switch classes\n\t\t// corner classes on the previously active header stay after the animation\n\t\tactive.removeClass( \"ui-accordion-header-active ui-state-active\" );\n\t\tif ( options.icons ) {\n\t\t\tactive.children( \".ui-accordion-header-icon\" )\n\t\t\t\t.removeClass( options.icons.activeHeader )\n\t\t\t\t.addClass( options.icons.header );\n\t\t}\n\n\t\tif ( !clickedIsActive ) {\n\t\t\tclicked\n\t\t\t\t.removeClass( \"ui-corner-all\" )\n\t\t\t\t.addClass( \"ui-accordion-header-active ui-state-active ui-corner-top\" );\n\t\t\tif ( options.icons ) {\n\t\t\t\tclicked.children( \".ui-accordion-header-icon\" )\n\t\t\t\t\t.removeClass( options.icons.header )\n\t\t\t\t\t.addClass( options.icons.activeHeader );\n\t\t\t}\n\n\t\t\tclicked\n\t\t\t\t.next()\n\t\t\t\t.addClass( \"ui-accordion-content-active\" );\n\t\t}\n\t},\n\n\t_toggle: function( data ) {\n\t\tvar toShow = data.newPanel,\n\t\t\ttoHide = this.prevShow.length ? this.prevShow : data.oldPanel;\n\n\t\t// handle activating a panel during the animation for another activation\n\t\tthis.prevShow.add( this.prevHide ).stop( true, true );\n\t\tthis.prevShow = toShow;\n\t\tthis.prevHide = toHide;\n\n\t\tif ( this.options.animate ) {\n\t\t\tthis._animate( toShow, toHide, data );\n\t\t} else {\n\t\t\ttoHide.hide();\n\t\t\ttoShow.show();\n\t\t\tthis._toggleComplete( data );\n\t\t}\n\n\t\ttoHide.attr({\n\t\t\t\"aria-hidden\": \"true\"\n\t\t});\n\t\ttoHide.prev().attr( \"aria-selected\", \"false\" );\n\t\t// if we're switching panels, remove the old header from the tab order\n\t\t// if we're opening from collapsed state, remove the previous header from the tab order\n\t\t// if we're collapsing, then keep the collapsing header in the tab order\n\t\tif ( toShow.length && toHide.length ) {\n\t\t\ttoHide.prev().attr({\n\t\t\t\t\"tabIndex\": -1,\n\t\t\t\t\"aria-expanded\": \"false\"\n\t\t\t});\n\t\t} else if ( toShow.length ) {\n\t\t\tthis.headers.filter(function() {\n\t\t\t\treturn $( this ).attr( \"tabIndex\" ) === 0;\n\t\t\t})\n\t\t\t.attr( \"tabIndex\", -1 );\n\t\t}\n\n\t\ttoShow\n\t\t\t.attr( \"aria-hidden\", \"false\" )\n\t\t\t.prev()\n\t\t\t\t.attr({\n\t\t\t\t\t\"aria-selected\": \"true\",\n\t\t\t\t\ttabIndex: 0,\n\t\t\t\t\t\"aria-expanded\": \"true\"\n\t\t\t\t});\n\t},\n\n\t_animate: function( toShow, toHide, data ) {\n\t\tvar total, easing, duration,\n\t\t\tthat = this,\n\t\t\tadjust = 0,\n\t\t\tdown = toShow.length &&\n\t\t\t\t( !toHide.length || ( toShow.index() < toHide.index() ) ),\n\t\t\tanimate = this.options.animate || {},\n\t\t\toptions = down && animate.down || animate,\n\t\t\tcomplete = function() {\n\t\t\t\tthat._toggleComplete( data );\n\t\t\t};\n\n\t\tif ( typeof options === \"number\" ) {\n\t\t\tduration = options;\n\t\t}\n\t\tif ( typeof options === \"string\" ) {\n\t\t\teasing = options;\n\t\t}\n\t\t// fall back from options to animation in case of partial down settings\n\t\teasing = easing || options.easing || animate.easing;\n\t\tduration = duration || options.duration || animate.duration;\n\n\t\tif ( !toHide.length ) {\n\t\t\treturn toShow.animate( this.showProps, duration, easing, complete );\n\t\t}\n\t\tif ( !toShow.length ) {\n\t\t\treturn toHide.animate( this.hideProps, duration, easing, complete );\n\t\t}\n\n\t\ttotal = toShow.show().outerHeight();\n\t\ttoHide.animate( this.hideProps, {\n\t\t\tduration: duration,\n\t\t\teasing: easing,\n\t\t\tstep: function( now, fx ) {\n\t\t\t\tfx.now = Math.round( now );\n\t\t\t}\n\t\t});\n\t\ttoShow\n\t\t\t.hide()\n\t\t\t.animate( this.showProps, {\n\t\t\t\tduration: duration,\n\t\t\t\teasing: easing,\n\t\t\t\tcomplete: complete,\n\t\t\t\tstep: function( now, fx ) {\n\t\t\t\t\tfx.now = Math.round( now );\n\t\t\t\t\tif ( fx.prop !== \"height\" ) {\n\t\t\t\t\t\tadjust += fx.now;\n\t\t\t\t\t} else if ( that.options.heightStyle !== \"content\" ) {\n\t\t\t\t\t\tfx.now = Math.round( total - toHide.outerHeight() - adjust );\n\t\t\t\t\t\tadjust = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t},\n\n\t_toggleComplete: function( data ) {\n\t\tvar toHide = data.oldPanel;\n\n\t\ttoHide\n\t\t\t.removeClass( \"ui-accordion-content-active\" )\n\t\t\t.prev()\n\t\t\t\t.removeClass( \"ui-corner-top\" )\n\t\t\t\t.addClass( \"ui-corner-all\" );\n\n\t\t// Work around for rendering bug in IE (#5421)\n\t\tif ( toHide.length ) {\n\t\t\ttoHide.parent()[ 0 ].className = toHide.parent()[ 0 ].className;\n\t\t}\n\t\tthis._trigger( \"activate\", null, data );\n\t}\n});\n\n\n/*!\n * jQuery UI Menu 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/menu/\n */\n\n\nvar menu = $.widget( \"ui.menu\", {\n\tversion: \"1.11.2\",\n\tdefaultElement: \"<ul>\",\n\tdelay: 300,\n\toptions: {\n\t\ticons: {\n\t\t\tsubmenu: \"ui-icon-carat-1-e\"\n\t\t},\n\t\titems: \"> *\",\n\t\tmenus: \"ul\",\n\t\tposition: {\n\t\t\tmy: \"left-1 top\",\n\t\t\tat: \"right top\"\n\t\t},\n\t\trole: \"menu\",\n\n\t\t// callbacks\n\t\tblur: null,\n\t\tfocus: null,\n\t\tselect: null\n\t},\n\n\t_create: function() {\n\t\tthis.activeMenu = this.element;\n\n\t\t// Flag used to prevent firing of the click handler\n\t\t// as the event bubbles up through nested menus\n\t\tthis.mouseHandled = false;\n\t\tthis.element\n\t\t\t.uniqueId()\n\t\t\t.addClass( \"ui-menu ui-widget ui-widget-content\" )\n\t\t\t.toggleClass( \"ui-menu-icons\", !!this.element.find( \".ui-icon\" ).length )\n\t\t\t.attr({\n\t\t\t\trole: this.options.role,\n\t\t\t\ttabIndex: 0\n\t\t\t});\n\n\t\tif ( this.options.disabled ) {\n\t\t\tthis.element\n\t\t\t\t.addClass( \"ui-state-disabled\" )\n\t\t\t\t.attr( \"aria-disabled\", \"true\" );\n\t\t}\n\n\t\tthis._on({\n\t\t\t// Prevent focus from sticking to links inside menu after clicking\n\t\t\t// them (focus should always stay on UL during navigation).\n\t\t\t\"mousedown .ui-menu-item\": function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t},\n\t\t\t\"click .ui-menu-item\": function( event ) {\n\t\t\t\tvar target = $( event.target );\n\t\t\t\tif ( !this.mouseHandled && target.not( \".ui-state-disabled\" ).length ) {\n\t\t\t\t\tthis.select( event );\n\n\t\t\t\t\t// Only set the mouseHandled flag if the event will bubble, see #9469.\n\t\t\t\t\tif ( !event.isPropagationStopped() ) {\n\t\t\t\t\t\tthis.mouseHandled = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Open submenu on click\n\t\t\t\t\tif ( target.has( \".ui-menu\" ).length ) {\n\t\t\t\t\t\tthis.expand( event );\n\t\t\t\t\t} else if ( !this.element.is( \":focus\" ) && $( this.document[ 0 ].activeElement ).closest( \".ui-menu\" ).length ) {\n\n\t\t\t\t\t\t// Redirect focus to the menu\n\t\t\t\t\t\tthis.element.trigger( \"focus\", [ true ] );\n\n\t\t\t\t\t\t// If the active item is on the top level, let it stay active.\n\t\t\t\t\t\t// Otherwise, blur the active item since it is no longer visible.\n\t\t\t\t\t\tif ( this.active && this.active.parents( \".ui-menu\" ).length === 1 ) {\n\t\t\t\t\t\t\tclearTimeout( this.timer );\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\t\"mouseenter .ui-menu-item\": function( event ) {\n\t\t\t\t// Ignore mouse events while typeahead is active, see #10458.\n\t\t\t\t// Prevents focusing the wrong item when typeahead causes a scroll while the mouse\n\t\t\t\t// is over an item in the menu\n\t\t\t\tif ( this.previousFilter ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tvar target = $( event.currentTarget );\n\t\t\t\t// Remove ui-state-active class from siblings of the newly focused menu item\n\t\t\t\t// to avoid a jump caused by adjacent elements both having a class with a border\n\t\t\t\ttarget.siblings( \".ui-state-active\" ).removeClass( \"ui-state-active\" );\n\t\t\t\tthis.focus( event, target );\n\t\t\t},\n\t\t\tmouseleave: \"collapseAll\",\n\t\t\t\"mouseleave .ui-menu\": \"collapseAll\",\n\t\t\tfocus: function( event, keepActiveItem ) {\n\t\t\t\t// If there's already an active item, keep it active\n\t\t\t\t// If not, activate the first item\n\t\t\t\tvar item = this.active || this.element.find( this.options.items ).eq( 0 );\n\n\t\t\t\tif ( !keepActiveItem ) {\n\t\t\t\t\tthis.focus( event, item );\n\t\t\t\t}\n\t\t\t},\n\t\t\tblur: function( event ) {\n\t\t\t\tthis._delay(function() {\n\t\t\t\t\tif ( !$.contains( this.element[0], this.document[0].activeElement ) ) {\n\t\t\t\t\t\tthis.collapseAll( event );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\tkeydown: \"_keydown\"\n\t\t});\n\n\t\tthis.refresh();\n\n\t\t// Clicks outside of a menu collapse any open menus\n\t\tthis._on( this.document, {\n\t\t\tclick: function( event ) {\n\t\t\t\tif ( this._closeOnDocumentClick( event ) ) {\n\t\t\t\t\tthis.collapseAll( event );\n\t\t\t\t}\n\n\t\t\t\t// Reset the mouseHandled flag\n\t\t\t\tthis.mouseHandled = false;\n\t\t\t}\n\t\t});\n\t},\n\n\t_destroy: function() {\n\t\t// Destroy (sub)menus\n\t\tthis.element\n\t\t\t.removeAttr( \"aria-activedescendant\" )\n\t\t\t.find( \".ui-menu\" ).addBack()\n\t\t\t\t.removeClass( \"ui-menu ui-widget ui-widget-content ui-menu-icons ui-front\" )\n\t\t\t\t.removeAttr( \"role\" )\n\t\t\t\t.removeAttr( \"tabIndex\" )\n\t\t\t\t.removeAttr( \"aria-labelledby\" )\n\t\t\t\t.removeAttr( \"aria-expanded\" )\n\t\t\t\t.removeAttr( \"aria-hidden\" )\n\t\t\t\t.removeAttr( \"aria-disabled\" )\n\t\t\t\t.removeUniqueId()\n\t\t\t\t.show();\n\n\t\t// Destroy menu items\n\t\tthis.element.find( \".ui-menu-item\" )\n\t\t\t.removeClass( \"ui-menu-item\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-disabled\" )\n\t\t\t.removeUniqueId()\n\t\t\t.removeClass( \"ui-state-hover\" )\n\t\t\t.removeAttr( \"tabIndex\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-haspopup\" )\n\t\t\t.children().each( function() {\n\t\t\t\tvar elem = $( this );\n\t\t\t\tif ( elem.data( \"ui-menu-submenu-carat\" ) ) {\n\t\t\t\t\telem.remove();\n\t\t\t\t}\n\t\t\t});\n\n\t\t// Destroy menu dividers\n\t\tthis.element.find( \".ui-menu-divider\" ).removeClass( \"ui-menu-divider ui-widget-content\" );\n\t},\n\n\t_keydown: function( event ) {\n\t\tvar match, prev, character, skip,\n\t\t\tpreventDefault = true;\n\n\t\tswitch ( event.keyCode ) {\n\t\tcase $.ui.keyCode.PAGE_UP:\n\t\t\tthis.previousPage( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.PAGE_DOWN:\n\t\t\tthis.nextPage( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.HOME:\n\t\t\tthis._move( \"first\", \"first\", event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.END:\n\t\t\tthis._move( \"last\", \"last\", event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.UP:\n\t\t\tthis.previous( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.DOWN:\n\t\t\tthis.next( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.LEFT:\n\t\t\tthis.collapse( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.RIGHT:\n\t\t\tif ( this.active && !this.active.is( \".ui-state-disabled\" ) ) {\n\t\t\t\tthis.expand( event );\n\t\t\t}\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.ENTER:\n\t\tcase $.ui.keyCode.SPACE:\n\t\t\tthis._activate( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.ESCAPE:\n\t\t\tthis.collapse( event );\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tpreventDefault = false;\n\t\t\tprev = this.previousFilter || \"\";\n\t\t\tcharacter = String.fromCharCode( event.keyCode );\n\t\t\tskip = false;\n\n\t\t\tclearTimeout( this.filterTimer );\n\n\t\t\tif ( character === prev ) {\n\t\t\t\tskip = true;\n\t\t\t} else {\n\t\t\t\tcharacter = prev + character;\n\t\t\t}\n\n\t\t\tmatch = this._filterMenuItems( character );\n\t\t\tmatch = skip && match.index( this.active.next() ) !== -1 ?\n\t\t\t\tthis.active.nextAll( \".ui-menu-item\" ) :\n\t\t\t\tmatch;\n\n\t\t\t// If no matches on the current filter, reset to the last character pressed\n\t\t\t// to move down the menu to the first item that starts with that character\n\t\t\tif ( !match.length ) {\n\t\t\t\tcharacter = String.fromCharCode( event.keyCode );\n\t\t\t\tmatch = this._filterMenuItems( character );\n\t\t\t}\n\n\t\t\tif ( match.length ) {\n\t\t\t\tthis.focus( event, match );\n\t\t\t\tthis.previousFilter = character;\n\t\t\t\tthis.filterTimer = this._delay(function() {\n\t\t\t\t\tdelete this.previousFilter;\n\t\t\t\t}, 1000 );\n\t\t\t} else {\n\t\t\t\tdelete this.previousFilter;\n\t\t\t}\n\t\t}\n\n\t\tif ( preventDefault ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t},\n\n\t_activate: function( event ) {\n\t\tif ( !this.active.is( \".ui-state-disabled\" ) ) {\n\t\t\tif ( this.active.is( \"[aria-haspopup='true']\" ) ) {\n\t\t\t\tthis.expand( event );\n\t\t\t} else {\n\t\t\t\tthis.select( event );\n\t\t\t}\n\t\t}\n\t},\n\n\trefresh: function() {\n\t\tvar menus, items,\n\t\t\tthat = this,\n\t\t\ticon = this.options.icons.submenu,\n\t\t\tsubmenus = this.element.find( this.options.menus );\n\n\t\tthis.element.toggleClass( \"ui-menu-icons\", !!this.element.find( \".ui-icon\" ).length );\n\n\t\t// Initialize nested menus\n\t\tsubmenus.filter( \":not(.ui-menu)\" )\n\t\t\t.addClass( \"ui-menu ui-widget ui-widget-content ui-front\" )\n\t\t\t.hide()\n\t\t\t.attr({\n\t\t\t\trole: this.options.role,\n\t\t\t\t\"aria-hidden\": \"true\",\n\t\t\t\t\"aria-expanded\": \"false\"\n\t\t\t})\n\t\t\t.each(function() {\n\t\t\t\tvar menu = $( this ),\n\t\t\t\t\titem = menu.parent(),\n\t\t\t\t\tsubmenuCarat = $( \"<span>\" )\n\t\t\t\t\t\t.addClass( \"ui-menu-icon ui-icon \" + icon )\n\t\t\t\t\t\t.data( \"ui-menu-submenu-carat\", true );\n\n\t\t\t\titem\n\t\t\t\t\t.attr( \"aria-haspopup\", \"true\" )\n\t\t\t\t\t.prepend( submenuCarat );\n\t\t\t\tmenu.attr( \"aria-labelledby\", item.attr( \"id\" ) );\n\t\t\t});\n\n\t\tmenus = submenus.add( this.element );\n\t\titems = menus.find( this.options.items );\n\n\t\t// Initialize menu-items containing spaces and/or dashes only as dividers\n\t\titems.not( \".ui-menu-item\" ).each(function() {\n\t\t\tvar item = $( this );\n\t\t\tif ( that._isDivider( item ) ) {\n\t\t\t\titem.addClass( \"ui-widget-content ui-menu-divider\" );\n\t\t\t}\n\t\t});\n\n\t\t// Don't refresh list items that are already adapted\n\t\titems.not( \".ui-menu-item, .ui-menu-divider\" )\n\t\t\t.addClass( \"ui-menu-item\" )\n\t\t\t.uniqueId()\n\t\t\t.attr({\n\t\t\t\ttabIndex: -1,\n\t\t\t\trole: this._itemRole()\n\t\t\t});\n\n\t\t// Add aria-disabled attribute to any disabled menu item\n\t\titems.filter( \".ui-state-disabled\" ).attr( \"aria-disabled\", \"true\" );\n\n\t\t// If the active item has been removed, blur the menu\n\t\tif ( this.active && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {\n\t\t\tthis.blur();\n\t\t}\n\t},\n\n\t_itemRole: function() {\n\t\treturn {\n\t\t\tmenu: \"menuitem\",\n\t\t\tlistbox: \"option\"\n\t\t}[ this.options.role ];\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"icons\" ) {\n\t\t\tthis.element.find( \".ui-menu-icon\" )\n\t\t\t\t.removeClass( this.options.icons.submenu )\n\t\t\t\t.addClass( value.submenu );\n\t\t}\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis.element\n\t\t\t\t.toggleClass( \"ui-state-disabled\", !!value )\n\t\t\t\t.attr( \"aria-disabled\", value );\n\t\t}\n\t\tthis._super( key, value );\n\t},\n\n\tfocus: function( event, item ) {\n\t\tvar nested, focused;\n\t\tthis.blur( event, event && event.type === \"focus\" );\n\n\t\tthis._scrollIntoView( item );\n\n\t\tthis.active = item.first();\n\t\tfocused = this.active.addClass( \"ui-state-focus\" ).removeClass( \"ui-state-active\" );\n\t\t// Only update aria-activedescendant if there's a role\n\t\t// otherwise we assume focus is managed elsewhere\n\t\tif ( this.options.role ) {\n\t\t\tthis.element.attr( \"aria-activedescendant\", focused.attr( \"id\" ) );\n\t\t}\n\n\t\t// Highlight active parent menu item, if any\n\t\tthis.active\n\t\t\t.parent()\n\t\t\t.closest( \".ui-menu-item\" )\n\t\t\t.addClass( \"ui-state-active\" );\n\n\t\tif ( event && event.type === \"keydown\" ) {\n\t\t\tthis._close();\n\t\t} else {\n\t\t\tthis.timer = this._delay(function() {\n\t\t\t\tthis._close();\n\t\t\t}, this.delay );\n\t\t}\n\n\t\tnested = item.children( \".ui-menu\" );\n\t\tif ( nested.length && event && ( /^mouse/.test( event.type ) ) ) {\n\t\t\tthis._startOpening(nested);\n\t\t}\n\t\tthis.activeMenu = item.parent();\n\n\t\tthis._trigger( \"focus\", event, { item: item } );\n\t},\n\n\t_scrollIntoView: function( item ) {\n\t\tvar borderTop, paddingTop, offset, scroll, elementHeight, itemHeight;\n\t\tif ( this._hasScroll() ) {\n\t\t\tborderTop = parseFloat( $.css( this.activeMenu[0], \"borderTopWidth\" ) ) || 0;\n\t\t\tpaddingTop = parseFloat( $.css( this.activeMenu[0], \"paddingTop\" ) ) || 0;\n\t\t\toffset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop;\n\t\t\tscroll = this.activeMenu.scrollTop();\n\t\t\telementHeight = this.activeMenu.height();\n\t\t\titemHeight = item.outerHeight();\n\n\t\t\tif ( offset < 0 ) {\n\t\t\t\tthis.activeMenu.scrollTop( scroll + offset );\n\t\t\t} else if ( offset + itemHeight > elementHeight ) {\n\t\t\t\tthis.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight );\n\t\t\t}\n\t\t}\n\t},\n\n\tblur: function( event, fromFocus ) {\n\t\tif ( !fromFocus ) {\n\t\t\tclearTimeout( this.timer );\n\t\t}\n\n\t\tif ( !this.active ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.active.removeClass( \"ui-state-focus\" );\n\t\tthis.active = null;\n\n\t\tthis._trigger( \"blur\", event, { item: this.active } );\n\t},\n\n\t_startOpening: function( submenu ) {\n\t\tclearTimeout( this.timer );\n\n\t\t// Don't open if already open fixes a Firefox bug that caused a .5 pixel\n\t\t// shift in the submenu position when mousing over the carat icon\n\t\tif ( submenu.attr( \"aria-hidden\" ) !== \"true\" ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.timer = this._delay(function() {\n\t\t\tthis._close();\n\t\t\tthis._open( submenu );\n\t\t}, this.delay );\n\t},\n\n\t_open: function( submenu ) {\n\t\tvar position = $.extend({\n\t\t\tof: this.active\n\t\t}, this.options.position );\n\n\t\tclearTimeout( this.timer );\n\t\tthis.element.find( \".ui-menu\" ).not( submenu.parents( \".ui-menu\" ) )\n\t\t\t.hide()\n\t\t\t.attr( \"aria-hidden\", \"true\" );\n\n\t\tsubmenu\n\t\t\t.show()\n\t\t\t.removeAttr( \"aria-hidden\" )\n\t\t\t.attr( \"aria-expanded\", \"true\" )\n\t\t\t.position( position );\n\t},\n\n\tcollapseAll: function( event, all ) {\n\t\tclearTimeout( this.timer );\n\t\tthis.timer = this._delay(function() {\n\t\t\t// If we were passed an event, look for the submenu that contains the event\n\t\t\tvar currentMenu = all ? this.element :\n\t\t\t\t$( event && event.target ).closest( this.element.find( \".ui-menu\" ) );\n\n\t\t\t// If we found no valid submenu ancestor, use the main menu to close all sub menus anyway\n\t\t\tif ( !currentMenu.length ) {\n\t\t\t\tcurrentMenu = this.element;\n\t\t\t}\n\n\t\t\tthis._close( currentMenu );\n\n\t\t\tthis.blur( event );\n\t\t\tthis.activeMenu = currentMenu;\n\t\t}, this.delay );\n\t},\n\n\t// With no arguments, closes the currently active menu - if nothing is active\n\t// it closes all menus. If passed an argument, it will search for menus BELOW\n\t_close: function( startMenu ) {\n\t\tif ( !startMenu ) {\n\t\t\tstartMenu = this.active ? this.active.parent() : this.element;\n\t\t}\n\n\t\tstartMenu\n\t\t\t.find( \".ui-menu\" )\n\t\t\t\t.hide()\n\t\t\t\t.attr( \"aria-hidden\", \"true\" )\n\t\t\t\t.attr( \"aria-expanded\", \"false\" )\n\t\t\t.end()\n\t\t\t.find( \".ui-state-active\" ).not( \".ui-state-focus\" )\n\t\t\t\t.removeClass( \"ui-state-active\" );\n\t},\n\n\t_closeOnDocumentClick: function( event ) {\n\t\treturn !$( event.target ).closest( \".ui-menu\" ).length;\n\t},\n\n\t_isDivider: function( item ) {\n\n\t\t// Match hyphen, em dash, en dash\n\t\treturn !/[^\\-\\u2014\\u2013\\s]/.test( item.text() );\n\t},\n\n\tcollapse: function( event ) {\n\t\tvar newItem = this.active &&\n\t\t\tthis.active.parent().closest( \".ui-menu-item\", this.element );\n\t\tif ( newItem && newItem.length ) {\n\t\t\tthis._close();\n\t\t\tthis.focus( event, newItem );\n\t\t}\n\t},\n\n\texpand: function( event ) {\n\t\tvar newItem = this.active &&\n\t\t\tthis.active\n\t\t\t\t.children( \".ui-menu \" )\n\t\t\t\t.find( this.options.items )\n\t\t\t\t.first();\n\n\t\tif ( newItem && newItem.length ) {\n\t\t\tthis._open( newItem.parent() );\n\n\t\t\t// Delay so Firefox will not hide activedescendant change in expanding submenu from AT\n\t\t\tthis._delay(function() {\n\t\t\t\tthis.focus( event, newItem );\n\t\t\t});\n\t\t}\n\t},\n\n\tnext: function( event ) {\n\t\tthis._move( \"next\", \"first\", event );\n\t},\n\n\tprevious: function( event ) {\n\t\tthis._move( \"prev\", \"last\", event );\n\t},\n\n\tisFirstItem: function() {\n\t\treturn this.active && !this.active.prevAll( \".ui-menu-item\" ).length;\n\t},\n\n\tisLastItem: function() {\n\t\treturn this.active && !this.active.nextAll( \".ui-menu-item\" ).length;\n\t},\n\n\t_move: function( direction, filter, event ) {\n\t\tvar next;\n\t\tif ( this.active ) {\n\t\t\tif ( direction === \"first\" || direction === \"last\" ) {\n\t\t\t\tnext = this.active\n\t\t\t\t\t[ direction === \"first\" ? \"prevAll\" : \"nextAll\" ]( \".ui-menu-item\" )\n\t\t\t\t\t.eq( -1 );\n\t\t\t} else {\n\t\t\t\tnext = this.active\n\t\t\t\t\t[ direction + \"All\" ]( \".ui-menu-item\" )\n\t\t\t\t\t.eq( 0 );\n\t\t\t}\n\t\t}\n\t\tif ( !next || !next.length || !this.active ) {\n\t\t\tnext = this.activeMenu.find( this.options.items )[ filter ]();\n\t\t}\n\n\t\tthis.focus( event, next );\n\t},\n\n\tnextPage: function( event ) {\n\t\tvar item, base, height;\n\n\t\tif ( !this.active ) {\n\t\t\tthis.next( event );\n\t\t\treturn;\n\t\t}\n\t\tif ( this.isLastItem() ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( this._hasScroll() ) {\n\t\t\tbase = this.active.offset().top;\n\t\t\theight = this.element.height();\n\t\t\tthis.active.nextAll( \".ui-menu-item\" ).each(function() {\n\t\t\t\titem = $( this );\n\t\t\t\treturn item.offset().top - base - height < 0;\n\t\t\t});\n\n\t\t\tthis.focus( event, item );\n\t\t} else {\n\t\t\tthis.focus( event, this.activeMenu.find( this.options.items )\n\t\t\t\t[ !this.active ? \"first\" : \"last\" ]() );\n\t\t}\n\t},\n\n\tpreviousPage: function( event ) {\n\t\tvar item, base, height;\n\t\tif ( !this.active ) {\n\t\t\tthis.next( event );\n\t\t\treturn;\n\t\t}\n\t\tif ( this.isFirstItem() ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( this._hasScroll() ) {\n\t\t\tbase = this.active.offset().top;\n\t\t\theight = this.element.height();\n\t\t\tthis.active.prevAll( \".ui-menu-item\" ).each(function() {\n\t\t\t\titem = $( this );\n\t\t\t\treturn item.offset().top - base + height > 0;\n\t\t\t});\n\n\t\t\tthis.focus( event, item );\n\t\t} else {\n\t\t\tthis.focus( event, this.activeMenu.find( this.options.items ).first() );\n\t\t}\n\t},\n\n\t_hasScroll: function() {\n\t\treturn this.element.outerHeight() < this.element.prop( \"scrollHeight\" );\n\t},\n\n\tselect: function( event ) {\n\t\t// TODO: It should never be possible to not have an active item at this\n\t\t// point, but the tests don't trigger mouseenter before click.\n\t\tthis.active = this.active || $( event.target ).closest( \".ui-menu-item\" );\n\t\tvar ui = { item: this.active };\n\t\tif ( !this.active.has( \".ui-menu\" ).length ) {\n\t\t\tthis.collapseAll( event, true );\n\t\t}\n\t\tthis._trigger( \"select\", event, ui );\n\t},\n\n\t_filterMenuItems: function(character) {\n\t\tvar escapedCharacter = character.replace( /[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\" ),\n\t\t\tregex = new RegExp( \"^\" + escapedCharacter, \"i\" );\n\n\t\treturn this.activeMenu\n\t\t\t.find( this.options.items )\n\n\t\t\t// Only match on items, not dividers or other content (#10571)\n\t\t\t.filter( \".ui-menu-item\" )\n\t\t\t.filter(function() {\n\t\t\t\treturn regex.test( $.trim( $( this ).text() ) );\n\t\t\t});\n\t}\n});\n\n\n/*!\n * jQuery UI Autocomplete 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/autocomplete/\n */\n\n\n$.widget( \"ui.autocomplete\", {\n\tversion: \"1.11.2\",\n\tdefaultElement: \"<input>\",\n\toptions: {\n\t\tappendTo: null,\n\t\tautoFocus: false,\n\t\tdelay: 300,\n\t\tminLength: 1,\n\t\tposition: {\n\t\t\tmy: \"left top\",\n\t\t\tat: \"left bottom\",\n\t\t\tcollision: \"none\"\n\t\t},\n\t\tsource: null,\n\n\t\t// callbacks\n\t\tchange: null,\n\t\tclose: null,\n\t\tfocus: null,\n\t\topen: null,\n\t\tresponse: null,\n\t\tsearch: null,\n\t\tselect: null\n\t},\n\n\trequestIndex: 0,\n\tpending: 0,\n\n\t_create: function() {\n\t\t// Some browsers only repeat keydown events, not keypress events,\n\t\t// so we use the suppressKeyPress flag to determine if we've already\n\t\t// handled the keydown event. #7269\n\t\t// Unfortunately the code for & in keypress is the same as the up arrow,\n\t\t// so we use the suppressKeyPressRepeat flag to avoid handling keypress\n\t\t// events when we know the keydown event was used to modify the\n\t\t// search term. #7799\n\t\tvar suppressKeyPress, suppressKeyPressRepeat, suppressInput,\n\t\t\tnodeName = this.element[ 0 ].nodeName.toLowerCase(),\n\t\t\tisTextarea = nodeName === \"textarea\",\n\t\t\tisInput = nodeName === \"input\";\n\n\t\tthis.isMultiLine =\n\t\t\t// Textareas are always multi-line\n\t\t\tisTextarea ? true :\n\t\t\t// Inputs are always single-line, even if inside a contentEditable element\n\t\t\t// IE also treats inputs as contentEditable\n\t\t\tisInput ? false :\n\t\t\t// All other element types are determined by whether or not they're contentEditable\n\t\t\tthis.element.prop( \"isContentEditable\" );\n\n\t\tthis.valueMethod = this.element[ isTextarea || isInput ? \"val\" : \"text\" ];\n\t\tthis.isNewMenu = true;\n\n\t\tthis.element\n\t\t\t.addClass( \"ui-autocomplete-input\" )\n\t\t\t.attr( \"autocomplete\", \"off\" );\n\n\t\tthis._on( this.element, {\n\t\t\tkeydown: function( event ) {\n\t\t\t\tif ( this.element.prop( \"readOnly\" ) ) {\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tsuppressInput = true;\n\t\t\t\t\tsuppressKeyPressRepeat = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tsuppressKeyPress = false;\n\t\t\t\tsuppressInput = false;\n\t\t\t\tsuppressKeyPressRepeat = false;\n\t\t\t\tvar keyCode = $.ui.keyCode;\n\t\t\t\tswitch ( event.keyCode ) {\n\t\t\t\tcase keyCode.PAGE_UP:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._move( \"previousPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.PAGE_DOWN:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._move( \"nextPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.UP:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._keyEvent( \"previous\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.DOWN:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._keyEvent( \"next\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.ENTER:\n\t\t\t\t\t// when menu is open and has focus\n\t\t\t\t\tif ( this.menu.active ) {\n\t\t\t\t\t\t// #6055 - Opera still allows the keypress to occur\n\t\t\t\t\t\t// which causes forms to submit\n\t\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tthis.menu.select( event );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.TAB:\n\t\t\t\t\tif ( this.menu.active ) {\n\t\t\t\t\t\tthis.menu.select( event );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.ESCAPE:\n\t\t\t\t\tif ( this.menu.element.is( \":visible\" ) ) {\n\t\t\t\t\t\tif ( !this.isMultiLine ) {\n\t\t\t\t\t\t\tthis._value( this.term );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.close( event );\n\t\t\t\t\t\t// Different browsers have different default behavior for escape\n\t\t\t\t\t\t// Single press can mean undo or clear\n\t\t\t\t\t\t// Double press in IE means clear the whole form\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tsuppressKeyPressRepeat = true;\n\t\t\t\t\t// search timeout should be triggered before the input value is changed\n\t\t\t\t\tthis._searchTimeout( event );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n\t\t\tkeypress: function( event ) {\n\t\t\t\tif ( suppressKeyPress ) {\n\t\t\t\t\tsuppressKeyPress = false;\n\t\t\t\t\tif ( !this.isMultiLine || this.menu.element.is( \":visible\" ) ) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif ( suppressKeyPressRepeat ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// replicate some key handlers to allow them to repeat in Firefox and Opera\n\t\t\t\tvar keyCode = $.ui.keyCode;\n\t\t\t\tswitch ( event.keyCode ) {\n\t\t\t\tcase keyCode.PAGE_UP:\n\t\t\t\t\tthis._move( \"previousPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.PAGE_DOWN:\n\t\t\t\t\tthis._move( \"nextPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.UP:\n\t\t\t\t\tthis._keyEvent( \"previous\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.DOWN:\n\t\t\t\t\tthis._keyEvent( \"next\", event );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n\t\t\tinput: function( event ) {\n\t\t\t\tif ( suppressInput ) {\n\t\t\t\t\tsuppressInput = false;\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._searchTimeout( event );\n\t\t\t},\n\t\t\tfocus: function() {\n\t\t\t\tthis.selectedItem = null;\n\t\t\t\tthis.previous = this._value();\n\t\t\t},\n\t\t\tblur: function( event ) {\n\t\t\t\tif ( this.cancelBlur ) {\n\t\t\t\t\tdelete this.cancelBlur;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tclearTimeout( this.searching );\n\t\t\t\tthis.close( event );\n\t\t\t\tthis._change( event );\n\t\t\t}\n\t\t});\n\n\t\tthis._initSource();\n\t\tthis.menu = $( \"<ul>\" )\n\t\t\t.addClass( \"ui-autocomplete ui-front\" )\n\t\t\t.appendTo( this._appendTo() )\n\t\t\t.menu({\n\t\t\t\t// disable ARIA support, the live region takes care of that\n\t\t\t\trole: null\n\t\t\t})\n\t\t\t.hide()\n\t\t\t.menu( \"instance\" );\n\n\t\tthis._on( this.menu.element, {\n\t\t\tmousedown: function( event ) {\n\t\t\t\t// prevent moving focus out of the text field\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\t// IE doesn't prevent moving focus even with event.preventDefault()\n\t\t\t\t// so we set a flag to know when we should ignore the blur event\n\t\t\t\tthis.cancelBlur = true;\n\t\t\t\tthis._delay(function() {\n\t\t\t\t\tdelete this.cancelBlur;\n\t\t\t\t});\n\n\t\t\t\t// clicking on the scrollbar causes focus to shift to the body\n\t\t\t\t// but we can't detect a mouseup or a click immediately afterward\n\t\t\t\t// so we have to track the next mousedown and close the menu if\n\t\t\t\t// the user clicks somewhere outside of the autocomplete\n\t\t\t\tvar menuElement = this.menu.element[ 0 ];\n\t\t\t\tif ( !$( event.target ).closest( \".ui-menu-item\" ).length ) {\n\t\t\t\t\tthis._delay(function() {\n\t\t\t\t\t\tvar that = this;\n\t\t\t\t\t\tthis.document.one( \"mousedown\", function( event ) {\n\t\t\t\t\t\t\tif ( event.target !== that.element[ 0 ] &&\n\t\t\t\t\t\t\t\t\tevent.target !== menuElement &&\n\t\t\t\t\t\t\t\t\t!$.contains( menuElement, event.target ) ) {\n\t\t\t\t\t\t\t\tthat.close();\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\tmenufocus: function( event, ui ) {\n\t\t\t\tvar label, item;\n\t\t\t\t// support: Firefox\n\t\t\t\t// Prevent accidental activation of menu items in Firefox (#7024 #9118)\n\t\t\t\tif ( this.isNewMenu ) {\n\t\t\t\t\tthis.isNewMenu = false;\n\t\t\t\t\tif ( event.originalEvent && /^mouse/.test( event.originalEvent.type ) ) {\n\t\t\t\t\t\tthis.menu.blur();\n\n\t\t\t\t\t\tthis.document.one( \"mousemove\", function() {\n\t\t\t\t\t\t\t$( event.target ).trigger( event.originalEvent );\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\titem = ui.item.data( \"ui-autocomplete-item\" );\n\t\t\t\tif ( false !== this._trigger( \"focus\", event, { item: item } ) ) {\n\t\t\t\t\t// use value to match what will end up in the input, if it was a key event\n\t\t\t\t\tif ( event.originalEvent && /^key/.test( event.originalEvent.type ) ) {\n\t\t\t\t\t\tthis._value( item.value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Announce the value in the liveRegion\n\t\t\t\tlabel = ui.item.attr( \"aria-label\" ) || item.value;\n\t\t\t\tif ( label && $.trim( label ).length ) {\n\t\t\t\t\tthis.liveRegion.children().hide();\n\t\t\t\t\t$( \"<div>\" ).text( label ).appendTo( this.liveRegion );\n\t\t\t\t}\n\t\t\t},\n\t\t\tmenuselect: function( event, ui ) {\n\t\t\t\tvar item = ui.item.data( \"ui-autocomplete-item\" ),\n\t\t\t\t\tprevious = this.previous;\n\n\t\t\t\t// only trigger when focus was lost (click on menu)\n\t\t\t\tif ( this.element[ 0 ] !== this.document[ 0 ].activeElement ) {\n\t\t\t\t\tthis.element.focus();\n\t\t\t\t\tthis.previous = previous;\n\t\t\t\t\t// #6109 - IE triggers two focus events and the second\n\t\t\t\t\t// is asynchronous, so we need to reset the previous\n\t\t\t\t\t// term synchronously and asynchronously :-(\n\t\t\t\t\tthis._delay(function() {\n\t\t\t\t\t\tthis.previous = previous;\n\t\t\t\t\t\tthis.selectedItem = item;\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif ( false !== this._trigger( \"select\", event, { item: item } ) ) {\n\t\t\t\t\tthis._value( item.value );\n\t\t\t\t}\n\t\t\t\t// reset the term after the select event\n\t\t\t\t// this allows custom select handling to work properly\n\t\t\t\tthis.term = this._value();\n\n\t\t\t\tthis.close( event );\n\t\t\t\tthis.selectedItem = item;\n\t\t\t}\n\t\t});\n\n\t\tthis.liveRegion = $( \"<span>\", {\n\t\t\t\trole: \"status\",\n\t\t\t\t\"aria-live\": \"assertive\",\n\t\t\t\t\"aria-relevant\": \"additions\"\n\t\t\t})\n\t\t\t.addClass( \"ui-helper-hidden-accessible\" )\n\t\t\t.appendTo( this.document[ 0 ].body );\n\n\t\t// turning off autocomplete prevents the browser from remembering the\n\t\t// value when navigating through history, so we re-enable autocomplete\n\t\t// if the page is unloaded before the widget is destroyed. #7790\n\t\tthis._on( this.window, {\n\t\t\tbeforeunload: function() {\n\t\t\t\tthis.element.removeAttr( \"autocomplete\" );\n\t\t\t}\n\t\t});\n\t},\n\n\t_destroy: function() {\n\t\tclearTimeout( this.searching );\n\t\tthis.element\n\t\t\t.removeClass( \"ui-autocomplete-input\" )\n\t\t\t.removeAttr( \"autocomplete\" );\n\t\tthis.menu.element.remove();\n\t\tthis.liveRegion.remove();\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tthis._super( key, value );\n\t\tif ( key === \"source\" ) {\n\t\t\tthis._initSource();\n\t\t}\n\t\tif ( key === \"appendTo\" ) {\n\t\t\tthis.menu.element.appendTo( this._appendTo() );\n\t\t}\n\t\tif ( key === \"disabled\" && value && this.xhr ) {\n\t\t\tthis.xhr.abort();\n\t\t}\n\t},\n\n\t_appendTo: function() {\n\t\tvar element = this.options.appendTo;\n\n\t\tif ( element ) {\n\t\t\telement = element.jquery || element.nodeType ?\n\t\t\t\t$( element ) :\n\t\t\t\tthis.document.find( element ).eq( 0 );\n\t\t}\n\n\t\tif ( !element || !element[ 0 ] ) {\n\t\t\telement = this.element.closest( \".ui-front\" );\n\t\t}\n\n\t\tif ( !element.length ) {\n\t\t\telement = this.document[ 0 ].body;\n\t\t}\n\n\t\treturn element;\n\t},\n\n\t_initSource: function() {\n\t\tvar array, url,\n\t\t\tthat = this;\n\t\tif ( $.isArray( this.options.source ) ) {\n\t\t\tarray = this.options.source;\n\t\t\tthis.source = function( request, response ) {\n\t\t\t\tresponse( $.ui.autocomplete.filter( array, request.term ) );\n\t\t\t};\n\t\t} else if ( typeof this.options.source === \"string\" ) {\n\t\t\turl = this.options.source;\n\t\t\tthis.source = function( request, response ) {\n\t\t\t\tif ( that.xhr ) {\n\t\t\t\t\tthat.xhr.abort();\n\t\t\t\t}\n\t\t\t\tthat.xhr = $.ajax({\n\t\t\t\t\turl: url,\n\t\t\t\t\tdata: request,\n\t\t\t\t\tdataType: \"json\",\n\t\t\t\t\tsuccess: function( data ) {\n\t\t\t\t\t\tresponse( data );\n\t\t\t\t\t},\n\t\t\t\t\terror: function() {\n\t\t\t\t\t\tresponse([]);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t};\n\t\t} else {\n\t\t\tthis.source = this.options.source;\n\t\t}\n\t},\n\n\t_searchTimeout: function( event ) {\n\t\tclearTimeout( this.searching );\n\t\tthis.searching = this._delay(function() {\n\n\t\t\t// Search if the value has changed, or if the user retypes the same value (see #7434)\n\t\t\tvar equalValues = this.term === this._value(),\n\t\t\t\tmenuVisible = this.menu.element.is( \":visible\" ),\n\t\t\t\tmodifierKey = event.altKey || event.ctrlKey || event.metaKey || event.shiftKey;\n\n\t\t\tif ( !equalValues || ( equalValues && !menuVisible && !modifierKey ) ) {\n\t\t\t\tthis.selectedItem = null;\n\t\t\t\tthis.search( null, event );\n\t\t\t}\n\t\t}, this.options.delay );\n\t},\n\n\tsearch: function( value, event ) {\n\t\tvalue = value != null ? value : this._value();\n\n\t\t// always save the actual value, not the one passed as an argument\n\t\tthis.term = this._value();\n\n\t\tif ( value.length < this.options.minLength ) {\n\t\t\treturn this.close( event );\n\t\t}\n\n\t\tif ( this._trigger( \"search\", event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn this._search( value );\n\t},\n\n\t_search: function( value ) {\n\t\tthis.pending++;\n\t\tthis.element.addClass( \"ui-autocomplete-loading\" );\n\t\tthis.cancelSearch = false;\n\n\t\tthis.source( { term: value }, this._response() );\n\t},\n\n\t_response: function() {\n\t\tvar index = ++this.requestIndex;\n\n\t\treturn $.proxy(function( content ) {\n\t\t\tif ( index === this.requestIndex ) {\n\t\t\t\tthis.__response( content );\n\t\t\t}\n\n\t\t\tthis.pending--;\n\t\t\tif ( !this.pending ) {\n\t\t\t\tthis.element.removeClass( \"ui-autocomplete-loading\" );\n\t\t\t}\n\t\t}, this );\n\t},\n\n\t__response: function( content ) {\n\t\tif ( content ) {\n\t\t\tcontent = this._normalize( content );\n\t\t}\n\t\tthis._trigger( \"response\", null, { content: content } );\n\t\tif ( !this.options.disabled && content && content.length && !this.cancelSearch ) {\n\t\t\tthis._suggest( content );\n\t\t\tthis._trigger( \"open\" );\n\t\t} else {\n\t\t\t// use ._close() instead of .close() so we don't cancel future searches\n\t\t\tthis._close();\n\t\t}\n\t},\n\n\tclose: function( event ) {\n\t\tthis.cancelSearch = true;\n\t\tthis._close( event );\n\t},\n\n\t_close: function( event ) {\n\t\tif ( this.menu.element.is( \":visible\" ) ) {\n\t\t\tthis.menu.element.hide();\n\t\t\tthis.menu.blur();\n\t\t\tthis.isNewMenu = true;\n\t\t\tthis._trigger( \"close\", event );\n\t\t}\n\t},\n\n\t_change: function( event ) {\n\t\tif ( this.previous !== this._value() ) {\n\t\t\tthis._trigger( \"change\", event, { item: this.selectedItem } );\n\t\t}\n\t},\n\n\t_normalize: function( items ) {\n\t\t// assume all items have the right format when the first item is complete\n\t\tif ( items.length && items[ 0 ].label && items[ 0 ].value ) {\n\t\t\treturn items;\n\t\t}\n\t\treturn $.map( items, function( item ) {\n\t\t\tif ( typeof item === \"string\" ) {\n\t\t\t\treturn {\n\t\t\t\t\tlabel: item,\n\t\t\t\t\tvalue: item\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn $.extend( {}, item, {\n\t\t\t\tlabel: item.label || item.value,\n\t\t\t\tvalue: item.value || item.label\n\t\t\t});\n\t\t});\n\t},\n\n\t_suggest: function( items ) {\n\t\tvar ul = this.menu.element.empty();\n\t\tthis._renderMenu( ul, items );\n\t\tthis.isNewMenu = true;\n\t\tthis.menu.refresh();\n\n\t\t// size and position menu\n\t\tul.show();\n\t\tthis._resizeMenu();\n\t\tul.position( $.extend({\n\t\t\tof: this.element\n\t\t}, this.options.position ) );\n\n\t\tif ( this.options.autoFocus ) {\n\t\t\tthis.menu.next();\n\t\t}\n\t},\n\n\t_resizeMenu: function() {\n\t\tvar ul = this.menu.element;\n\t\tul.outerWidth( Math.max(\n\t\t\t// Firefox wraps long text (possibly a rounding bug)\n\t\t\t// so we add 1px to avoid the wrapping (#7513)\n\t\t\tul.width( \"\" ).outerWidth() + 1,\n\t\t\tthis.element.outerWidth()\n\t\t) );\n\t},\n\n\t_renderMenu: function( ul, items ) {\n\t\tvar that = this;\n\t\t$.each( items, function( index, item ) {\n\t\t\tthat._renderItemData( ul, item );\n\t\t});\n\t},\n\n\t_renderItemData: function( ul, item ) {\n\t\treturn this._renderItem( ul, item ).data( \"ui-autocomplete-item\", item );\n\t},\n\n\t_renderItem: function( ul, item ) {\n\t\treturn $( \"<li>\" ).text( item.label ).appendTo( ul );\n\t},\n\n\t_move: function( direction, event ) {\n\t\tif ( !this.menu.element.is( \":visible\" ) ) {\n\t\t\tthis.search( null, event );\n\t\t\treturn;\n\t\t}\n\t\tif ( this.menu.isFirstItem() && /^previous/.test( direction ) ||\n\t\t\t\tthis.menu.isLastItem() && /^next/.test( direction ) ) {\n\n\t\t\tif ( !this.isMultiLine ) {\n\t\t\t\tthis._value( this.term );\n\t\t\t}\n\n\t\t\tthis.menu.blur();\n\t\t\treturn;\n\t\t}\n\t\tthis.menu[ direction ]( event );\n\t},\n\n\twidget: function() {\n\t\treturn this.menu.element;\n\t},\n\n\t_value: function() {\n\t\treturn this.valueMethod.apply( this.element, arguments );\n\t},\n\n\t_keyEvent: function( keyEvent, event ) {\n\t\tif ( !this.isMultiLine || this.menu.element.is( \":visible\" ) ) {\n\t\t\tthis._move( keyEvent, event );\n\n\t\t\t// prevents moving cursor to beginning/end of the text field in some browsers\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n});\n\n$.extend( $.ui.autocomplete, {\n\tescapeRegex: function( value ) {\n\t\treturn value.replace( /[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\" );\n\t},\n\tfilter: function( array, term ) {\n\t\tvar matcher = new RegExp( $.ui.autocomplete.escapeRegex( term ), \"i\" );\n\t\treturn $.grep( array, function( value ) {\n\t\t\treturn matcher.test( value.label || value.value || value );\n\t\t});\n\t}\n});\n\n// live region extension, adding a `messages` option\n// NOTE: This is an experimental API. We are still investigating\n// a full solution for string manipulation and internationalization.\n$.widget( \"ui.autocomplete\", $.ui.autocomplete, {\n\toptions: {\n\t\tmessages: {\n\t\t\tnoResults: \"No search results.\",\n\t\t\tresults: function( amount ) {\n\t\t\t\treturn amount + ( amount > 1 ? \" results are\" : \" result is\" ) +\n\t\t\t\t\t\" available, use up and down arrow keys to navigate.\";\n\t\t\t}\n\t\t}\n\t},\n\n\t__response: function( content ) {\n\t\tvar message;\n\t\tthis._superApply( arguments );\n\t\tif ( this.options.disabled || this.cancelSearch ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( content && content.length ) {\n\t\t\tmessage = this.options.messages.results( content.length );\n\t\t} else {\n\t\t\tmessage = this.options.messages.noResults;\n\t\t}\n\t\tthis.liveRegion.children().hide();\n\t\t$( \"<div>\" ).text( message ).appendTo( this.liveRegion );\n\t}\n});\n\nvar autocomplete = $.ui.autocomplete;\n\n\n/*!\n * jQuery UI Button 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/button/\n */\n\n\nvar lastActive,\n\tbaseClasses = \"ui-button ui-widget ui-state-default ui-corner-all\",\n\ttypeClasses = \"ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only\",\n\tformResetHandler = function() {\n\t\tvar form = $( this );\n\t\tsetTimeout(function() {\n\t\t\tform.find( \":ui-button\" ).button( \"refresh\" );\n\t\t}, 1 );\n\t},\n\tradioGroup = function( radio ) {\n\t\tvar name = radio.name,\n\t\t\tform = radio.form,\n\t\t\tradios = $( [] );\n\t\tif ( name ) {\n\t\t\tname = name.replace( /'/g, \"\\\\'\" );\n\t\t\tif ( form ) {\n\t\t\t\tradios = $( form ).find( \"[name='\" + name + \"'][type=radio]\" );\n\t\t\t} else {\n\t\t\t\tradios = $( \"[name='\" + name + \"'][type=radio]\", radio.ownerDocument )\n\t\t\t\t\t.filter(function() {\n\t\t\t\t\t\treturn !this.form;\n\t\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\treturn radios;\n\t};\n\n$.widget( \"ui.button\", {\n\tversion: \"1.11.2\",\n\tdefaultElement: \"<button>\",\n\toptions: {\n\t\tdisabled: null,\n\t\ttext: true,\n\t\tlabel: null,\n\t\ticons: {\n\t\t\tprimary: null,\n\t\t\tsecondary: null\n\t\t}\n\t},\n\t_create: function() {\n\t\tthis.element.closest( \"form\" )\n\t\t\t.unbind( \"reset\" + this.eventNamespace )\n\t\t\t.bind( \"reset\" + this.eventNamespace, formResetHandler );\n\n\t\tif ( typeof this.options.disabled !== \"boolean\" ) {\n\t\t\tthis.options.disabled = !!this.element.prop( \"disabled\" );\n\t\t} else {\n\t\t\tthis.element.prop( \"disabled\", this.options.disabled );\n\t\t}\n\n\t\tthis._determineButtonType();\n\t\tthis.hasTitle = !!this.buttonElement.attr( \"title\" );\n\n\t\tvar that = this,\n\t\t\toptions = this.options,\n\t\t\ttoggleButton = this.type === \"checkbox\" || this.type === \"radio\",\n\t\t\tactiveClass = !toggleButton ? \"ui-state-active\" : \"\";\n\n\t\tif ( options.label === null ) {\n\t\t\toptions.label = (this.type === \"input\" ? this.buttonElement.val() : this.buttonElement.html());\n\t\t}\n\n\t\tthis._hoverable( this.buttonElement );\n\n\t\tthis.buttonElement\n\t\t\t.addClass( baseClasses )\n\t\t\t.attr( \"role\", \"button\" )\n\t\t\t.bind( \"mouseenter\" + this.eventNamespace, function() {\n\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif ( this === lastActive ) {\n\t\t\t\t\t$( this ).addClass( \"ui-state-active\" );\n\t\t\t\t}\n\t\t\t})\n\t\t\t.bind( \"mouseleave\" + this.eventNamespace, function() {\n\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t$( this ).removeClass( activeClass );\n\t\t\t})\n\t\t\t.bind( \"click\" + this.eventNamespace, function( event ) {\n\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t}\n\t\t\t});\n\n\t\t// Can't use _focusable() because the element that receives focus\n\t\t// and the element that gets the ui-state-focus class are different\n\t\tthis._on({\n\t\t\tfocus: function() {\n\t\t\t\tthis.buttonElement.addClass( \"ui-state-focus\" );\n\t\t\t},\n\t\t\tblur: function() {\n\t\t\t\tthis.buttonElement.removeClass( \"ui-state-focus\" );\n\t\t\t}\n\t\t});\n\n\t\tif ( toggleButton ) {\n\t\t\tthis.element.bind( \"change\" + this.eventNamespace, function() {\n\t\t\t\tthat.refresh();\n\t\t\t});\n\t\t}\n\n\t\tif ( this.type === \"checkbox\" ) {\n\t\t\tthis.buttonElement.bind( \"click\" + this.eventNamespace, function() {\n\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t} else if ( this.type === \"radio\" ) {\n\t\t\tthis.buttonElement.bind( \"click\" + this.eventNamespace, function() {\n\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t$( this ).addClass( \"ui-state-active\" );\n\t\t\t\tthat.buttonElement.attr( \"aria-pressed\", \"true\" );\n\n\t\t\t\tvar radio = that.element[ 0 ];\n\t\t\t\tradioGroup( radio )\n\t\t\t\t\t.not( radio )\n\t\t\t\t\t.map(function() {\n\t\t\t\t\t\treturn $( this ).button( \"widget\" )[ 0 ];\n\t\t\t\t\t})\n\t\t\t\t\t.removeClass( \"ui-state-active\" )\n\t\t\t\t\t.attr( \"aria-pressed\", \"false\" );\n\t\t\t});\n\t\t} else {\n\t\t\tthis.buttonElement\n\t\t\t\t.bind( \"mousedown\" + this.eventNamespace, function() {\n\t\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\t$( this ).addClass( \"ui-state-active\" );\n\t\t\t\t\tlastActive = this;\n\t\t\t\t\tthat.document.one( \"mouseup\", function() {\n\t\t\t\t\t\tlastActive = null;\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t\t.bind( \"mouseup\" + this.eventNamespace, function() {\n\t\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\t$( this ).removeClass( \"ui-state-active\" );\n\t\t\t\t})\n\t\t\t\t.bind( \"keydown\" + this.eventNamespace, function(event) {\n\t\t\t\t\tif ( options.disabled ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif ( event.keyCode === $.ui.keyCode.SPACE || event.keyCode === $.ui.keyCode.ENTER ) {\n\t\t\t\t\t\t$( this ).addClass( \"ui-state-active\" );\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t// see #8559, we bind to blur here in case the button element loses\n\t\t\t\t// focus between keydown and keyup, it would be left in an \"active\" state\n\t\t\t\t.bind( \"keyup\" + this.eventNamespace + \" blur\" + this.eventNamespace, function() {\n\t\t\t\t\t$( this ).removeClass( \"ui-state-active\" );\n\t\t\t\t});\n\n\t\t\tif ( this.buttonElement.is(\"a\") ) {\n\t\t\t\tthis.buttonElement.keyup(function(event) {\n\t\t\t\t\tif ( event.keyCode === $.ui.keyCode.SPACE ) {\n\t\t\t\t\t\t// TODO pass through original event correctly (just as 2nd argument doesn't work)\n\t\t\t\t\t\t$( this ).click();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tthis._setOption( \"disabled\", options.disabled );\n\t\tthis._resetButton();\n\t},\n\n\t_determineButtonType: function() {\n\t\tvar ancestor, labelSelector, checked;\n\n\t\tif ( this.element.is(\"[type=checkbox]\") ) {\n\t\t\tthis.type = \"checkbox\";\n\t\t} else if ( this.element.is(\"[type=radio]\") ) {\n\t\t\tthis.type = \"radio\";\n\t\t} else if ( this.element.is(\"input\") ) {\n\t\t\tthis.type = \"input\";\n\t\t} else {\n\t\t\tthis.type = \"button\";\n\t\t}\n\n\t\tif ( this.type === \"checkbox\" || this.type === \"radio\" ) {\n\t\t\t// we don't search against the document in case the element\n\t\t\t// is disconnected from the DOM\n\t\t\tancestor = this.element.parents().last();\n\t\t\tlabelSelector = \"label[for='\" + this.element.attr(\"id\") + \"']\";\n\t\t\tthis.buttonElement = ancestor.find( labelSelector );\n\t\t\tif ( !this.buttonElement.length ) {\n\t\t\t\tancestor = ancestor.length ? ancestor.siblings() : this.element.siblings();\n\t\t\t\tthis.buttonElement = ancestor.filter( labelSelector );\n\t\t\t\tif ( !this.buttonElement.length ) {\n\t\t\t\t\tthis.buttonElement = ancestor.find( labelSelector );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.element.addClass( \"ui-helper-hidden-accessible\" );\n\n\t\t\tchecked = this.element.is( \":checked\" );\n\t\t\tif ( checked ) {\n\t\t\t\tthis.buttonElement.addClass( \"ui-state-active\" );\n\t\t\t}\n\t\t\tthis.buttonElement.prop( \"aria-pressed\", checked );\n\t\t} else {\n\t\t\tthis.buttonElement = this.element;\n\t\t}\n\t},\n\n\twidget: function() {\n\t\treturn this.buttonElement;\n\t},\n\n\t_destroy: function() {\n\t\tthis.element\n\t\t\t.removeClass( \"ui-helper-hidden-accessible\" );\n\t\tthis.buttonElement\n\t\t\t.removeClass( baseClasses + \" ui-state-active \" + typeClasses )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-pressed\" )\n\t\t\t.html( this.buttonElement.find(\".ui-button-text\").html() );\n\n\t\tif ( !this.hasTitle ) {\n\t\t\tthis.buttonElement.removeAttr( \"title\" );\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tthis._super( key, value );\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis.widget().toggleClass( \"ui-state-disabled\", !!value );\n\t\t\tthis.element.prop( \"disabled\", !!value );\n\t\t\tif ( value ) {\n\t\t\t\tif ( this.type === \"checkbox\" || this.type === \"radio\" ) {\n\t\t\t\t\tthis.buttonElement.removeClass( \"ui-state-focus\" );\n\t\t\t\t} else {\n\t\t\t\t\tthis.buttonElement.removeClass( \"ui-state-focus ui-state-active\" );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tthis._resetButton();\n\t},\n\n\trefresh: function() {\n\t\t//See #8237 & #8828\n\t\tvar isDisabled = this.element.is( \"input, button\" ) ? this.element.is( \":disabled\" ) : this.element.hasClass( \"ui-button-disabled\" );\n\n\t\tif ( isDisabled !== this.options.disabled ) {\n\t\t\tthis._setOption( \"disabled\", isDisabled );\n\t\t}\n\t\tif ( this.type === \"radio\" ) {\n\t\t\tradioGroup( this.element[0] ).each(function() {\n\t\t\t\tif ( $( this ).is( \":checked\" ) ) {\n\t\t\t\t\t$( this ).button( \"widget\" )\n\t\t\t\t\t\t.addClass( \"ui-state-active\" )\n\t\t\t\t\t\t.attr( \"aria-pressed\", \"true\" );\n\t\t\t\t} else {\n\t\t\t\t\t$( this ).button( \"widget\" )\n\t\t\t\t\t\t.removeClass( \"ui-state-active\" )\n\t\t\t\t\t\t.attr( \"aria-pressed\", \"false\" );\n\t\t\t\t}\n\t\t\t});\n\t\t} else if ( this.type === \"checkbox\" ) {\n\t\t\tif ( this.element.is( \":checked\" ) ) {\n\t\t\t\tthis.buttonElement\n\t\t\t\t\t.addClass( \"ui-state-active\" )\n\t\t\t\t\t.attr( \"aria-pressed\", \"true\" );\n\t\t\t} else {\n\t\t\t\tthis.buttonElement\n\t\t\t\t\t.removeClass( \"ui-state-active\" )\n\t\t\t\t\t.attr( \"aria-pressed\", \"false\" );\n\t\t\t}\n\t\t}\n\t},\n\n\t_resetButton: function() {\n\t\tif ( this.type === \"input\" ) {\n\t\t\tif ( this.options.label ) {\n\t\t\t\tthis.element.val( this.options.label );\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tvar buttonElement = this.buttonElement.removeClass( typeClasses ),\n\t\t\tbuttonText = $( \"<span></span>\", this.document[0] )\n\t\t\t\t.addClass( \"ui-button-text\" )\n\t\t\t\t.html( this.options.label )\n\t\t\t\t.appendTo( buttonElement.empty() )\n\t\t\t\t.text(),\n\t\t\ticons = this.options.icons,\n\t\t\tmultipleIcons = icons.primary && icons.secondary,\n\t\t\tbuttonClasses = [];\n\n\t\tif ( icons.primary || icons.secondary ) {\n\t\t\tif ( this.options.text ) {\n\t\t\t\tbuttonClasses.push( \"ui-button-text-icon\" + ( multipleIcons ? \"s\" : ( icons.primary ? \"-primary\" : \"-secondary\" ) ) );\n\t\t\t}\n\n\t\t\tif ( icons.primary ) {\n\t\t\t\tbuttonElement.prepend( \"<span class='ui-button-icon-primary ui-icon \" + icons.primary + \"'></span>\" );\n\t\t\t}\n\n\t\t\tif ( icons.secondary ) {\n\t\t\t\tbuttonElement.append( \"<span class='ui-button-icon-secondary ui-icon \" + icons.secondary + \"'></span>\" );\n\t\t\t}\n\n\t\t\tif ( !this.options.text ) {\n\t\t\t\tbuttonClasses.push( multipleIcons ? \"ui-button-icons-only\" : \"ui-button-icon-only\" );\n\n\t\t\t\tif ( !this.hasTitle ) {\n\t\t\t\t\tbuttonElement.attr( \"title\", $.trim( buttonText ) );\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tbuttonClasses.push( \"ui-button-text-only\" );\n\t\t}\n\t\tbuttonElement.addClass( buttonClasses.join( \" \" ) );\n\t}\n});\n\n$.widget( \"ui.buttonset\", {\n\tversion: \"1.11.2\",\n\toptions: {\n\t\titems: \"button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(ui-button)\"\n\t},\n\n\t_create: function() {\n\t\tthis.element.addClass( \"ui-buttonset\" );\n\t},\n\n\t_init: function() {\n\t\tthis.refresh();\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis.buttons.button( \"option\", key, value );\n\t\t}\n\n\t\tthis._super( key, value );\n\t},\n\n\trefresh: function() {\n\t\tvar rtl = this.element.css( \"direction\" ) === \"rtl\",\n\t\t\tallButtons = this.element.find( this.options.items ),\n\t\t\texistingButtons = allButtons.filter( \":ui-button\" );\n\n\t\t// Initialize new buttons\n\t\tallButtons.not( \":ui-button\" ).button();\n\n\t\t// Refresh existing buttons\n\t\texistingButtons.button( \"refresh\" );\n\n\t\tthis.buttons = allButtons\n\t\t\t.map(function() {\n\t\t\t\treturn $( this ).button( \"widget\" )[ 0 ];\n\t\t\t})\n\t\t\t\t.removeClass( \"ui-corner-all ui-corner-left ui-corner-right\" )\n\t\t\t\t.filter( \":first\" )\n\t\t\t\t\t.addClass( rtl ? \"ui-corner-right\" : \"ui-corner-left\" )\n\t\t\t\t.end()\n\t\t\t\t.filter( \":last\" )\n\t\t\t\t\t.addClass( rtl ? \"ui-corner-left\" : \"ui-corner-right\" )\n\t\t\t\t.end()\n\t\t\t.end();\n\t},\n\n\t_destroy: function() {\n\t\tthis.element.removeClass( \"ui-buttonset\" );\n\t\tthis.buttons\n\t\t\t.map(function() {\n\t\t\t\treturn $( this ).button( \"widget\" )[ 0 ];\n\t\t\t})\n\t\t\t\t.removeClass( \"ui-corner-left ui-corner-right\" )\n\t\t\t.end()\n\t\t\t.button( \"destroy\" );\n\t}\n});\n\nvar button = $.ui.button;\n\n\n/*!\n * jQuery UI Datepicker 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/datepicker/\n */\n\n\n$.extend($.ui, { datepicker: { version: \"1.11.2\" } });\n\nvar datepicker_instActive;\n\nfunction datepicker_getZindex( elem ) {\n\tvar position, value;\n\twhile ( elem.length && elem[ 0 ] !== document ) {\n\t\t// Ignore z-index if position is set to a value where z-index is ignored by the browser\n\t\t// This makes behavior of this function consistent across browsers\n\t\t// WebKit always returns auto if the element is positioned\n\t\tposition = elem.css( \"position\" );\n\t\tif ( position === \"absolute\" || position === \"relative\" || position === \"fixed\" ) {\n\t\t\t// IE returns 0 when zIndex is not specified\n\t\t\t// other browsers return a string\n\t\t\t// we ignore the case of nested elements with an explicit value of 0\n\t\t\t// <div style=\"z-index: -10;\"><div style=\"z-index: 0;\"></div></div>\n\t\t\tvalue = parseInt( elem.css( \"zIndex\" ), 10 );\n\t\t\tif ( !isNaN( value ) && value !== 0 ) {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t\telem = elem.parent();\n\t}\n\n\treturn 0;\n}\n/* Date picker manager.\n Use the singleton instance of this class, $.datepicker, to interact with the date picker.\n Settings for (groups of) date pickers are maintained in an instance object,\n allowing multiple different settings on the same page. */\n\nfunction Datepicker() {\n\tthis._curInst = null; // The current instance in use\n\tthis._keyEvent = false; // If the last event was a key event\n\tthis._disabledInputs = []; // List of date picker inputs that have been disabled\n\tthis._datepickerShowing = false; // True if the popup picker is showing , false if not\n\tthis._inDialog = false; // True if showing within a \"dialog\", false if not\n\tthis._mainDivId = \"ui-datepicker-div\"; // The ID of the main datepicker division\n\tthis._inlineClass = \"ui-datepicker-inline\"; // The name of the inline marker class\n\tthis._appendClass = \"ui-datepicker-append\"; // The name of the append marker class\n\tthis._triggerClass = \"ui-datepicker-trigger\"; // The name of the trigger marker class\n\tthis._dialogClass = \"ui-datepicker-dialog\"; // The name of the dialog marker class\n\tthis._disableClass = \"ui-datepicker-disabled\"; // The name of the disabled covering marker class\n\tthis._unselectableClass = \"ui-datepicker-unselectable\"; // The name of the unselectable cell marker class\n\tthis._currentClass = \"ui-datepicker-current-day\"; // The name of the current day marker class\n\tthis._dayOverClass = \"ui-datepicker-days-cell-over\"; // The name of the day hover marker class\n\tthis.regional = []; // Available regional settings, indexed by language code\n\tthis.regional[\"\"] = { // Default regional settings\n\t\tcloseText: \"Done\", // Display text for close link\n\t\tprevText: \"Prev\", // Display text for previous month link\n\t\tnextText: \"Next\", // Display text for next month link\n\t\tcurrentText: \"Today\", // Display text for current month link\n\t\tmonthNames: [\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\n\t\t\t\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"], // Names of months for drop-down and formatting\n\t\tmonthNamesShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"], // For formatting\n\t\tdayNames: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"], // For formatting\n\t\tdayNamesShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"], // For formatting\n\t\tdayNamesMin: [\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"], // Column headings for days starting at Sunday\n\t\tweekHeader: \"Wk\", // Column header for week of the year\n\t\tdateFormat: \"mm/dd/yy\", // See format options on parseDate\n\t\tfirstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ...\n\t\tisRTL: false, // True if right-to-left language, false if left-to-right\n\t\tshowMonthAfterYear: false, // True if the year select precedes month, false for month then year\n\t\tyearSuffix: \"\" // Additional text to append to the year in the month headers\n\t};\n\tthis._defaults = { // Global defaults for all the date picker instances\n\t\tshowOn: \"focus\", // \"focus\" for popup on focus,\n\t\t\t// \"button\" for trigger button, or \"both\" for either\n\t\tshowAnim: \"fadeIn\", // Name of jQuery animation for popup\n\t\tshowOptions: {}, // Options for enhanced animations\n\t\tdefaultDate: null, // Used when field is blank: actual date,\n\t\t\t// +/-number for offset from today, null for today\n\t\tappendText: \"\", // Display text following the input box, e.g. showing the format\n\t\tbuttonText: \"...\", // Text for trigger button\n\t\tbuttonImage: \"\", // URL for trigger button image\n\t\tbuttonImageOnly: false, // True if the image appears alone, false if it appears on a button\n\t\thideIfNoPrevNext: false, // True to hide next/previous month links\n\t\t\t// if not applicable, false to just disable them\n\t\tnavigationAsDateFormat: false, // True if date formatting applied to prev/today/next links\n\t\tgotoCurrent: false, // True if today link goes back to current selection instead\n\t\tchangeMonth: false, // True if month can be selected directly, false if only prev/next\n\t\tchangeYear: false, // True if year can be selected directly, false if only prev/next\n\t\tyearRange: \"c-10:c+10\", // Range of years to display in drop-down,\n\t\t\t// either relative to today's year (-nn:+nn), relative to currently displayed year\n\t\t\t// (c-nn:c+nn), absolute (nnnn:nnnn), or a combination of the above (nnnn:-n)\n\t\tshowOtherMonths: false, // True to show dates in other months, false to leave blank\n\t\tselectOtherMonths: false, // True to allow selection of dates in other months, false for unselectable\n\t\tshowWeek: false, // True to show week of the year, false to not show it\n\t\tcalculateWeek: this.iso8601Week, // How to calculate the week of the year,\n\t\t\t// takes a Date and returns the number of the week for it\n\t\tshortYearCutoff: \"+10\", // Short year values < this are in the current century,\n\t\t\t// > this are in the previous century,\n\t\t\t// string value starting with \"+\" for current year + value\n\t\tminDate: null, // The earliest selectable date, or null for no limit\n\t\tmaxDate: null, // The latest selectable date, or null for no limit\n\t\tduration: \"fast\", // Duration of display/closure\n\t\tbeforeShowDay: null, // Function that takes a date and returns an array with\n\t\t\t// [0] = true if selectable, false if not, [1] = custom CSS class name(s) or \"\",\n\t\t\t// [2] = cell title (optional), e.g. $.datepicker.noWeekends\n\t\tbeforeShow: null, // Function that takes an input field and\n\t\t\t// returns a set of custom settings for the date picker\n\t\tonSelect: null, // Define a callback function when a date is selected\n\t\tonChangeMonthYear: null, // Define a callback function when the month or year is changed\n\t\tonClose: null, // Define a callback function when the datepicker is closed\n\t\tnumberOfMonths: 1, // Number of months to show at a time\n\t\tshowCurrentAtPos: 0, // The position in multipe months at which to show the current month (starting at 0)\n\t\tstepMonths: 1, // Number of months to step back/forward\n\t\tstepBigMonths: 12, // Number of months to step back/forward for the big links\n\t\taltField: \"\", // Selector for an alternate field to store selected dates into\n\t\taltFormat: \"\", // The date format to use for the alternate field\n\t\tconstrainInput: true, // The input is constrained by the current date format\n\t\tshowButtonPanel: false, // True to show button panel, false to not show it\n\t\tautoSize: false, // True to size the input for the date format, false to leave as is\n\t\tdisabled: false // The initial disabled state\n\t};\n\t$.extend(this._defaults, this.regional[\"\"]);\n\tthis.regional.en = $.extend( true, {}, this.regional[ \"\" ]);\n\tthis.regional[ \"en-US\" ] = $.extend( true, {}, this.regional.en );\n\tthis.dpDiv = datepicker_bindHover($(\"<div id='\" + this._mainDivId + \"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>\"));\n}\n\n$.extend(Datepicker.prototype, {\n\t/* Class name added to elements to indicate already configured with a date picker. */\n\tmarkerClassName: \"hasDatepicker\",\n\n\t//Keep track of the maximum number of rows displayed (see #7043)\n\tmaxRows: 4,\n\n\t// TODO rename to \"widget\" when switching to widget factory\n\t_widgetDatepicker: function() {\n\t\treturn this.dpDiv;\n\t},\n\n\t/* Override the default settings for all instances of the date picker.\n\t * @param settings object - the new settings to use as defaults (anonymous object)\n\t * @return the manager object\n\t */\n\tsetDefaults: function(settings) {\n\t\tdatepicker_extendRemove(this._defaults, settings || {});\n\t\treturn this;\n\t},\n\n\t/* Attach the date picker to a jQuery selection.\n\t * @param target\telement - the target input field or division or span\n\t * @param settings object - the new settings to use for this date picker instance (anonymous)\n\t */\n\t_attachDatepicker: function(target, settings) {\n\t\tvar nodeName, inline, inst;\n\t\tnodeName = target.nodeName.toLowerCase();\n\t\tinline = (nodeName === \"div\" || nodeName === \"span\");\n\t\tif (!target.id) {\n\t\t\tthis.uuid += 1;\n\t\t\ttarget.id = \"dp\" + this.uuid;\n\t\t}\n\t\tinst = this._newInst($(target), inline);\n\t\tinst.settings = $.extend({}, settings || {});\n\t\tif (nodeName === \"input\") {\n\t\t\tthis._connectDatepicker(target, inst);\n\t\t} else if (inline) {\n\t\t\tthis._inlineDatepicker(target, inst);\n\t\t}\n\t},\n\n\t/* Create a new instance object. */\n\t_newInst: function(target, inline) {\n\t\tvar id = target[0].id.replace(/([^A-Za-z0-9_\\-])/g, \"\\\\\\\\$1\"); // escape jQuery meta chars\n\t\treturn {id: id, input: target, // associated target\n\t\t\tselectedDay: 0, selectedMonth: 0, selectedYear: 0, // current selection\n\t\t\tdrawMonth: 0, drawYear: 0, // month being drawn\n\t\t\tinline: inline, // is datepicker inline or not\n\t\t\tdpDiv: (!inline ? this.dpDiv : // presentation div\n\t\t\tdatepicker_bindHover($(\"<div class='\" + this._inlineClass + \" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>\")))};\n\t},\n\n\t/* Attach the date picker to an input field. */\n\t_connectDatepicker: function(target, inst) {\n\t\tvar input = $(target);\n\t\tinst.append = $([]);\n\t\tinst.trigger = $([]);\n\t\tif (input.hasClass(this.markerClassName)) {\n\t\t\treturn;\n\t\t}\n\t\tthis._attachments(input, inst);\n\t\tinput.addClass(this.markerClassName).keydown(this._doKeyDown).\n\t\t\tkeypress(this._doKeyPress).keyup(this._doKeyUp);\n\t\tthis._autoSize(inst);\n\t\t$.data(target, \"datepicker\", inst);\n\t\t//If disabled option is true, disable the datepicker once it has been attached to the input (see ticket #5665)\n\t\tif( inst.settings.disabled ) {\n\t\t\tthis._disableDatepicker( target );\n\t\t}\n\t},\n\n\t/* Make attachments based on settings. */\n\t_attachments: function(input, inst) {\n\t\tvar showOn, buttonText, buttonImage,\n\t\t\tappendText = this._get(inst, \"appendText\"),\n\t\t\tisRTL = this._get(inst, \"isRTL\");\n\n\t\tif (inst.append) {\n\t\t\tinst.append.remove();\n\t\t}\n\t\tif (appendText) {\n\t\t\tinst.append = $(\"<span class='\" + this._appendClass + \"'>\" + appendText + \"</span>\");\n\t\t\tinput[isRTL ? \"before\" : \"after\"](inst.append);\n\t\t}\n\n\t\tinput.unbind(\"focus\", this._showDatepicker);\n\n\t\tif (inst.trigger) {\n\t\t\tinst.trigger.remove();\n\t\t}\n\n\t\tshowOn = this._get(inst, \"showOn\");\n\t\tif (showOn === \"focus\" || showOn === \"both\") { // pop-up date picker when in the marked field\n\t\t\tinput.focus(this._showDatepicker);\n\t\t}\n\t\tif (showOn === \"button\" || showOn === \"both\") { // pop-up date picker when button clicked\n\t\t\tbuttonText = this._get(inst, \"buttonText\");\n\t\t\tbuttonImage = this._get(inst, \"buttonImage\");\n\t\t\tinst.trigger = $(this._get(inst, \"buttonImageOnly\") ?\n\t\t\t\t$(\"<img/>\").addClass(this._triggerClass).\n\t\t\t\t\tattr({ src: buttonImage, alt: buttonText, title: buttonText }) :\n\t\t\t\t$(\"<button type='button'></button>\").addClass(this._triggerClass).\n\t\t\t\t\thtml(!buttonImage ? buttonText : $(\"<img/>\").attr(\n\t\t\t\t\t{ src:buttonImage, alt:buttonText, title:buttonText })));\n\t\t\tinput[isRTL ? \"before\" : \"after\"](inst.trigger);\n\t\t\tinst.trigger.click(function() {\n\t\t\t\tif ($.datepicker._datepickerShowing && $.datepicker._lastInput === input[0]) {\n\t\t\t\t\t$.datepicker._hideDatepicker();\n\t\t\t\t} else if ($.datepicker._datepickerShowing && $.datepicker._lastInput !== input[0]) {\n\t\t\t\t\t$.datepicker._hideDatepicker();\n\t\t\t\t\t$.datepicker._showDatepicker(input[0]);\n\t\t\t\t} else {\n\t\t\t\t\t$.datepicker._showDatepicker(input[0]);\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t});\n\t\t}\n\t},\n\n\t/* Apply the maximum length for the date format. */\n\t_autoSize: function(inst) {\n\t\tif (this._get(inst, \"autoSize\") && !inst.inline) {\n\t\t\tvar findMax, max, maxI, i,\n\t\t\t\tdate = new Date(2009, 12 - 1, 20), // Ensure double digits\n\t\t\t\tdateFormat = this._get(inst, \"dateFormat\");\n\n\t\t\tif (dateFormat.match(/[DM]/)) {\n\t\t\t\tfindMax = function(names) {\n\t\t\t\t\tmax = 0;\n\t\t\t\t\tmaxI = 0;\n\t\t\t\t\tfor (i = 0; i < names.length; i++) {\n\t\t\t\t\t\tif (names[i].length > max) {\n\t\t\t\t\t\t\tmax = names[i].length;\n\t\t\t\t\t\t\tmaxI = i;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn maxI;\n\t\t\t\t};\n\t\t\t\tdate.setMonth(findMax(this._get(inst, (dateFormat.match(/MM/) ?\n\t\t\t\t\t\"monthNames\" : \"monthNamesShort\"))));\n\t\t\t\tdate.setDate(findMax(this._get(inst, (dateFormat.match(/DD/) ?\n\t\t\t\t\t\"dayNames\" : \"dayNamesShort\"))) + 20 - date.getDay());\n\t\t\t}\n\t\t\tinst.input.attr(\"size\", this._formatDate(inst, date).length);\n\t\t}\n\t},\n\n\t/* Attach an inline date picker to a div. */\n\t_inlineDatepicker: function(target, inst) {\n\t\tvar divSpan = $(target);\n\t\tif (divSpan.hasClass(this.markerClassName)) {\n\t\t\treturn;\n\t\t}\n\t\tdivSpan.addClass(this.markerClassName).append(inst.dpDiv);\n\t\t$.data(target, \"datepicker\", inst);\n\t\tthis._setDate(inst, this._getDefaultDate(inst), true);\n\t\tthis._updateDatepicker(inst);\n\t\tthis._updateAlternate(inst);\n\t\t//If disabled option is true, disable the datepicker before showing it (see ticket #5665)\n\t\tif( inst.settings.disabled ) {\n\t\t\tthis._disableDatepicker( target );\n\t\t}\n\t\t// Set display:block in place of inst.dpDiv.show() which won't work on disconnected elements\n\t\t// http://bugs.jqueryui.com/ticket/7552 - A Datepicker created on a detached div has zero height\n\t\tinst.dpDiv.css( \"display\", \"block\" );\n\t},\n\n\t/* Pop-up the date picker in a \"dialog\" box.\n\t * @param input element - ignored\n\t * @param date\tstring or Date - the initial date to display\n\t * @param onSelect function - the function to call when a date is selected\n\t * @param settings object - update the dialog date picker instance's settings (anonymous object)\n\t * @param pos int[2] - coordinates for the dialog's position within the screen or\n\t *\t\t\t\t\tevent - with x/y coordinates or\n\t *\t\t\t\t\tleave empty for default (screen centre)\n\t * @return the manager object\n\t */\n\t_dialogDatepicker: function(input, date, onSelect, settings, pos) {\n\t\tvar id, browserWidth, browserHeight, scrollX, scrollY,\n\t\t\tinst = this._dialogInst; // internal instance\n\n\t\tif (!inst) {\n\t\t\tthis.uuid += 1;\n\t\t\tid = \"dp\" + this.uuid;\n\t\t\tthis._dialogInput = $(\"<input type='text' id='\" + id +\n\t\t\t\t\"' style='position: absolute; top: -100px; width: 0px;'/>\");\n\t\t\tthis._dialogInput.keydown(this._doKeyDown);\n\t\t\t$(\"body\").append(this._dialogInput);\n\t\t\tinst = this._dialogInst = this._newInst(this._dialogInput, false);\n\t\t\tinst.settings = {};\n\t\t\t$.data(this._dialogInput[0], \"datepicker\", inst);\n\t\t}\n\t\tdatepicker_extendRemove(inst.settings, settings || {});\n\t\tdate = (date && date.constructor === Date ? this._formatDate(inst, date) : date);\n\t\tthis._dialogInput.val(date);\n\n\t\tthis._pos = (pos ? (pos.length ? pos : [pos.pageX, pos.pageY]) : null);\n\t\tif (!this._pos) {\n\t\t\tbrowserWidth = document.documentElement.clientWidth;\n\t\t\tbrowserHeight = document.documentElement.clientHeight;\n\t\t\tscrollX = document.documentElement.scrollLeft || document.body.scrollLeft;\n\t\t\tscrollY = document.documentElement.scrollTop || document.body.scrollTop;\n\t\t\tthis._pos = // should use actual width/height below\n\t\t\t\t[(browserWidth / 2) - 100 + scrollX, (browserHeight / 2) - 150 + scrollY];\n\t\t}\n\n\t\t// move input on screen for focus, but hidden behind dialog\n\t\tthis._dialogInput.css(\"left\", (this._pos[0] + 20) + \"px\").css(\"top\", this._pos[1] + \"px\");\n\t\tinst.settings.onSelect = onSelect;\n\t\tthis._inDialog = true;\n\t\tthis.dpDiv.addClass(this._dialogClass);\n\t\tthis._showDatepicker(this._dialogInput[0]);\n\t\tif ($.blockUI) {\n\t\t\t$.blockUI(this.dpDiv);\n\t\t}\n\t\t$.data(this._dialogInput[0], \"datepicker\", inst);\n\t\treturn this;\n\t},\n\n\t/* Detach a datepicker from its control.\n\t * @param target\telement - the target input field or division or span\n\t */\n\t_destroyDatepicker: function(target) {\n\t\tvar nodeName,\n\t\t\t$target = $(target),\n\t\t\tinst = $.data(target, \"datepicker\");\n\n\t\tif (!$target.hasClass(this.markerClassName)) {\n\t\t\treturn;\n\t\t}\n\n\t\tnodeName = target.nodeName.toLowerCase();\n\t\t$.removeData(target, \"datepicker\");\n\t\tif (nodeName === \"input\") {\n\t\t\tinst.append.remove();\n\t\t\tinst.trigger.remove();\n\t\t\t$target.removeClass(this.markerClassName).\n\t\t\t\tunbind(\"focus\", this._showDatepicker).\n\t\t\t\tunbind(\"keydown\", this._doKeyDown).\n\t\t\t\tunbind(\"keypress\", this._doKeyPress).\n\t\t\t\tunbind(\"keyup\", this._doKeyUp);\n\t\t} else if (nodeName === \"div\" || nodeName === \"span\") {\n\t\t\t$target.removeClass(this.markerClassName).empty();\n\t\t}\n\t},\n\n\t/* Enable the date picker to a jQuery selection.\n\t * @param target\telement - the target input field or division or span\n\t */\n\t_enableDatepicker: function(target) {\n\t\tvar nodeName, inline,\n\t\t\t$target = $(target),\n\t\t\tinst = $.data(target, \"datepicker\");\n\n\t\tif (!$target.hasClass(this.markerClassName)) {\n\t\t\treturn;\n\t\t}\n\n\t\tnodeName = target.nodeName.toLowerCase();\n\t\tif (nodeName === \"input\") {\n\t\t\ttarget.disabled = false;\n\t\t\tinst.trigger.filter(\"button\").\n\t\t\t\teach(function() { this.disabled = false; }).end().\n\t\t\t\tfilter(\"img\").css({opacity: \"1.0\", cursor: \"\"});\n\t\t} else if (nodeName === \"div\" || nodeName === \"span\") {\n\t\t\tinline = $target.children(\".\" + this._inlineClass);\n\t\t\tinline.children().removeClass(\"ui-state-disabled\");\n\t\t\tinline.find(\"select.ui-datepicker-month, select.ui-datepicker-year\").\n\t\t\t\tprop(\"disabled\", false);\n\t\t}\n\t\tthis._disabledInputs = $.map(this._disabledInputs,\n\t\t\tfunction(value) { return (value === target ? null : value); }); // delete entry\n\t},\n\n\t/* Disable the date picker to a jQuery selection.\n\t * @param target\telement - the target input field or division or span\n\t */\n\t_disableDatepicker: function(target) {\n\t\tvar nodeName, inline,\n\t\t\t$target = $(target),\n\t\t\tinst = $.data(target, \"datepicker\");\n\n\t\tif (!$target.hasClass(this.markerClassName)) {\n\t\t\treturn;\n\t\t}\n\n\t\tnodeName = target.nodeName.toLowerCase();\n\t\tif (nodeName === \"input\") {\n\t\t\ttarget.disabled = true;\n\t\t\tinst.trigger.filter(\"button\").\n\t\t\t\teach(function() { this.disabled = true; }).end().\n\t\t\t\tfilter(\"img\").css({opacity: \"0.5\", cursor: \"default\"});\n\t\t} else if (nodeName === \"div\" || nodeName === \"span\") {\n\t\t\tinline = $target.children(\".\" + this._inlineClass);\n\t\t\tinline.children().addClass(\"ui-state-disabled\");\n\t\t\tinline.find(\"select.ui-datepicker-month, select.ui-datepicker-year\").\n\t\t\t\tprop(\"disabled\", true);\n\t\t}\n\t\tthis._disabledInputs = $.map(this._disabledInputs,\n\t\t\tfunction(value) { return (value === target ? null : value); }); // delete entry\n\t\tthis._disabledInputs[this._disabledInputs.length] = target;\n\t},\n\n\t/* Is the first field in a jQuery collection disabled as a datepicker?\n\t * @param target\telement - the target input field or division or span\n\t * @return boolean - true if disabled, false if enabled\n\t */\n\t_isDisabledDatepicker: function(target) {\n\t\tif (!target) {\n\t\t\treturn false;\n\t\t}\n\t\tfor (var i = 0; i < this._disabledInputs.length; i++) {\n\t\t\tif (this._disabledInputs[i] === target) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t},\n\n\t/* Retrieve the instance data for the target control.\n\t * @param target element - the target input field or division or span\n\t * @return object - the associated instance data\n\t * @throws error if a jQuery problem getting data\n\t */\n\t_getInst: function(target) {\n\t\ttry {\n\t\t\treturn $.data(target, \"datepicker\");\n\t\t}\n\t\tcatch (err) {\n\t\t\tthrow \"Missing instance data for this datepicker\";\n\t\t}\n\t},\n\n\t/* Update or retrieve the settings for a date picker attached to an input field or division.\n\t * @param target element - the target input field or division or span\n\t * @param name\tobject - the new settings to update or\n\t *\t\t\t\tstring - the name of the setting to change or retrieve,\n\t *\t\t\t\twhen retrieving also \"all\" for all instance settings or\n\t *\t\t\t\t\"defaults\" for all global defaults\n\t * @param value any - the new value for the setting\n\t *\t\t\t\t(omit if above is an object or to retrieve a value)\n\t */\n\t_optionDatepicker: function(target, name, value) {\n\t\tvar settings, date, minDate, maxDate,\n\t\t\tinst = this._getInst(target);\n\n\t\tif (arguments.length === 2 && typeof name === \"string\") {\n\t\t\treturn (name === \"defaults\" ? $.extend({}, $.datepicker._defaults) :\n\t\t\t\t(inst ? (name === \"all\" ? $.extend({}, inst.settings) :\n\t\t\t\tthis._get(inst, name)) : null));\n\t\t}\n\n\t\tsettings = name || {};\n\t\tif (typeof name === \"string\") {\n\t\t\tsettings = {};\n\t\t\tsettings[name] = value;\n\t\t}\n\n\t\tif (inst) {\n\t\t\tif (this._curInst === inst) {\n\t\t\t\tthis._hideDatepicker();\n\t\t\t}\n\n\t\t\tdate = this._getDateDatepicker(target, true);\n\t\t\tminDate = this._getMinMaxDate(inst, \"min\");\n\t\t\tmaxDate = this._getMinMaxDate(inst, \"max\");\n\t\t\tdatepicker_extendRemove(inst.settings, settings);\n\t\t\t// reformat the old minDate/maxDate values if dateFormat changes and a new minDate/maxDate isn't provided\n\t\t\tif (minDate !== null && settings.dateFormat !== undefined && settings.minDate === undefined) {\n\t\t\t\tinst.settings.minDate = this._formatDate(inst, minDate);\n\t\t\t}\n\t\t\tif (maxDate !== null && settings.dateFormat !== undefined && settings.maxDate === undefined) {\n\t\t\t\tinst.settings.maxDate = this._formatDate(inst, maxDate);\n\t\t\t}\n\t\t\tif ( \"disabled\" in settings ) {\n\t\t\t\tif ( settings.disabled ) {\n\t\t\t\t\tthis._disableDatepicker(target);\n\t\t\t\t} else {\n\t\t\t\t\tthis._enableDatepicker(target);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._attachments($(target), inst);\n\t\t\tthis._autoSize(inst);\n\t\t\tthis._setDate(inst, date);\n\t\t\tthis._updateAlternate(inst);\n\t\t\tthis._updateDatepicker(inst);\n\t\t}\n\t},\n\n\t// change method deprecated\n\t_changeDatepicker: function(target, name, value) {\n\t\tthis._optionDatepicker(target, name, value);\n\t},\n\n\t/* Redraw the date picker attached to an input field or division.\n\t * @param target element - the target input field or division or span\n\t */\n\t_refreshDatepicker: function(target) {\n\t\tvar inst = this._getInst(target);\n\t\tif (inst) {\n\t\t\tthis._updateDatepicker(inst);\n\t\t}\n\t},\n\n\t/* Set the dates for a jQuery selection.\n\t * @param target element - the target input field or division or span\n\t * @param date\tDate - the new date\n\t */\n\t_setDateDatepicker: function(target, date) {\n\t\tvar inst = this._getInst(target);\n\t\tif (inst) {\n\t\t\tthis._setDate(inst, date);\n\t\t\tthis._updateDatepicker(inst);\n\t\t\tthis._updateAlternate(inst);\n\t\t}\n\t},\n\n\t/* Get the date(s) for the first entry in a jQuery selection.\n\t * @param target element - the target input field or division or span\n\t * @param noDefault boolean - true if no default date is to be used\n\t * @return Date - the current date\n\t */\n\t_getDateDatepicker: function(target, noDefault) {\n\t\tvar inst = this._getInst(target);\n\t\tif (inst && !inst.inline) {\n\t\t\tthis._setDateFromField(inst, noDefault);\n\t\t}\n\t\treturn (inst ? this._getDate(inst) : null);\n\t},\n\n\t/* Handle keystrokes. */\n\t_doKeyDown: function(event) {\n\t\tvar onSelect, dateStr, sel,\n\t\t\tinst = $.datepicker._getInst(event.target),\n\t\t\thandled = true,\n\t\t\tisRTL = inst.dpDiv.is(\".ui-datepicker-rtl\");\n\n\t\tinst._keyEvent = true;\n\t\tif ($.datepicker._datepickerShowing) {\n\t\t\tswitch (event.keyCode) {\n\t\t\t\tcase 9: $.datepicker._hideDatepicker();\n\t\t\t\t\t\thandled = false;\n\t\t\t\t\t\tbreak; // hide on tab out\n\t\t\t\tcase 13: sel = $(\"td.\" + $.datepicker._dayOverClass + \":not(.\" +\n\t\t\t\t\t\t\t\t\t$.datepicker._currentClass + \")\", inst.dpDiv);\n\t\t\t\t\t\tif (sel[0]) {\n\t\t\t\t\t\t\t$.datepicker._selectDay(event.target, inst.selectedMonth, inst.selectedYear, sel[0]);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tonSelect = $.datepicker._get(inst, \"onSelect\");\n\t\t\t\t\t\tif (onSelect) {\n\t\t\t\t\t\t\tdateStr = $.datepicker._formatDate(inst);\n\n\t\t\t\t\t\t\t// trigger custom callback\n\t\t\t\t\t\t\tonSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t$.datepicker._hideDatepicker();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn false; // don't submit the form\n\t\t\t\tcase 27: $.datepicker._hideDatepicker();\n\t\t\t\t\t\tbreak; // hide on escape\n\t\t\t\tcase 33: $.datepicker._adjustDate(event.target, (event.ctrlKey ?\n\t\t\t\t\t\t\t-$.datepicker._get(inst, \"stepBigMonths\") :\n\t\t\t\t\t\t\t-$.datepicker._get(inst, \"stepMonths\")), \"M\");\n\t\t\t\t\t\tbreak; // previous month/year on page up/+ ctrl\n\t\t\t\tcase 34: $.datepicker._adjustDate(event.target, (event.ctrlKey ?\n\t\t\t\t\t\t\t+$.datepicker._get(inst, \"stepBigMonths\") :\n\t\t\t\t\t\t\t+$.datepicker._get(inst, \"stepMonths\")), \"M\");\n\t\t\t\t\t\tbreak; // next month/year on page down/+ ctrl\n\t\t\t\tcase 35: if (event.ctrlKey || event.metaKey) {\n\t\t\t\t\t\t\t$.datepicker._clearDate(event.target);\n\t\t\t\t\t\t}\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\tbreak; // clear on ctrl or command +end\n\t\t\t\tcase 36: if (event.ctrlKey || event.metaKey) {\n\t\t\t\t\t\t\t$.datepicker._gotoToday(event.target);\n\t\t\t\t\t\t}\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\tbreak; // current on ctrl or command +home\n\t\t\t\tcase 37: if (event.ctrlKey || event.metaKey) {\n\t\t\t\t\t\t\t$.datepicker._adjustDate(event.target, (isRTL ? +1 : -1), \"D\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\t// -1 day on ctrl or command +left\n\t\t\t\t\t\tif (event.originalEvent.altKey) {\n\t\t\t\t\t\t\t$.datepicker._adjustDate(event.target, (event.ctrlKey ?\n\t\t\t\t\t\t\t\t-$.datepicker._get(inst, \"stepBigMonths\") :\n\t\t\t\t\t\t\t\t-$.datepicker._get(inst, \"stepMonths\")), \"M\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// next month/year on alt +left on Mac\n\t\t\t\t\t\tbreak;\n\t\t\t\tcase 38: if (event.ctrlKey || event.metaKey) {\n\t\t\t\t\t\t\t$.datepicker._adjustDate(event.target, -7, \"D\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\tbreak; // -1 week on ctrl or command +up\n\t\t\t\tcase 39: if (event.ctrlKey || event.metaKey) {\n\t\t\t\t\t\t\t$.datepicker._adjustDate(event.target, (isRTL ? -1 : +1), \"D\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\t// +1 day on ctrl or command +right\n\t\t\t\t\t\tif (event.originalEvent.altKey) {\n\t\t\t\t\t\t\t$.datepicker._adjustDate(event.target, (event.ctrlKey ?\n\t\t\t\t\t\t\t\t+$.datepicker._get(inst, \"stepBigMonths\") :\n\t\t\t\t\t\t\t\t+$.datepicker._get(inst, \"stepMonths\")), \"M\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// next month/year on alt +right\n\t\t\t\t\t\tbreak;\n\t\t\t\tcase 40: if (event.ctrlKey || event.metaKey) {\n\t\t\t\t\t\t\t$.datepicker._adjustDate(event.target, +7, \"D\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\tbreak; // +1 week on ctrl or command +down\n\t\t\t\tdefault: handled = false;\n\t\t\t}\n\t\t} else if (event.keyCode === 36 && event.ctrlKey) { // display the date picker on ctrl+home\n\t\t\t$.datepicker._showDatepicker(this);\n\t\t} else {\n\t\t\thandled = false;\n\t\t}\n\n\t\tif (handled) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t}\n\t},\n\n\t/* Filter entered characters - based on date format. */\n\t_doKeyPress: function(event) {\n\t\tvar chars, chr,\n\t\t\tinst = $.datepicker._getInst(event.target);\n\n\t\tif ($.datepicker._get(inst, \"constrainInput\")) {\n\t\t\tchars = $.datepicker._possibleChars($.datepicker._get(inst, \"dateFormat\"));\n\t\t\tchr = String.fromCharCode(event.charCode == null ? event.keyCode : event.charCode);\n\t\t\treturn event.ctrlKey || event.metaKey || (chr < \" \" || !chars || chars.indexOf(chr) > -1);\n\t\t}\n\t},\n\n\t/* Synchronise manual entry and field/alternate field. */\n\t_doKeyUp: function(event) {\n\t\tvar date,\n\t\t\tinst = $.datepicker._getInst(event.target);\n\n\t\tif (inst.input.val() !== inst.lastVal) {\n\t\t\ttry {\n\t\t\t\tdate = $.datepicker.parseDate($.datepicker._get(inst, \"dateFormat\"),\n\t\t\t\t\t(inst.input ? inst.input.val() : null),\n\t\t\t\t\t$.datepicker._getFormatConfig(inst));\n\n\t\t\t\tif (date) { // only if valid\n\t\t\t\t\t$.datepicker._setDateFromField(inst);\n\t\t\t\t\t$.datepicker._updateAlternate(inst);\n\t\t\t\t\t$.datepicker._updateDatepicker(inst);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch (err) {\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t},\n\n\t/* Pop-up the date picker for a given input field.\n\t * If false returned from beforeShow event handler do not show.\n\t * @param input element - the input field attached to the date picker or\n\t *\t\t\t\t\tevent - if triggered by focus\n\t */\n\t_showDatepicker: function(input) {\n\t\tinput = input.target || input;\n\t\tif (input.nodeName.toLowerCase() !== \"input\") { // find from button/image trigger\n\t\t\tinput = $(\"input\", input.parentNode)[0];\n\t\t}\n\n\t\tif ($.datepicker._isDisabledDatepicker(input) || $.datepicker._lastInput === input) { // already here\n\t\t\treturn;\n\t\t}\n\n\t\tvar inst, beforeShow, beforeShowSettings, isFixed,\n\t\t\toffset, showAnim, duration;\n\n\t\tinst = $.datepicker._getInst(input);\n\t\tif ($.datepicker._curInst && $.datepicker._curInst !== inst) {\n\t\t\t$.datepicker._curInst.dpDiv.stop(true, true);\n\t\t\tif ( inst && $.datepicker._datepickerShowing ) {\n\t\t\t\t$.datepicker._hideDatepicker( $.datepicker._curInst.input[0] );\n\t\t\t}\n\t\t}\n\n\t\tbeforeShow = $.datepicker._get(inst, \"beforeShow\");\n\t\tbeforeShowSettings = beforeShow ? beforeShow.apply(input, [input, inst]) : {};\n\t\tif(beforeShowSettings === false){\n\t\t\treturn;\n\t\t}\n\t\tdatepicker_extendRemove(inst.settings, beforeShowSettings);\n\n\t\tinst.lastVal = null;\n\t\t$.datepicker._lastInput = input;\n\t\t$.datepicker._setDateFromField(inst);\n\n\t\tif ($.datepicker._inDialog) { // hide cursor\n\t\t\tinput.value = \"\";\n\t\t}\n\t\tif (!$.datepicker._pos) { // position below input\n\t\t\t$.datepicker._pos = $.datepicker._findPos(input);\n\t\t\t$.datepicker._pos[1] += input.offsetHeight; // add the height\n\t\t}\n\n\t\tisFixed = false;\n\t\t$(input).parents().each(function() {\n\t\t\tisFixed |= $(this).css(\"position\") === \"fixed\";\n\t\t\treturn !isFixed;\n\t\t});\n\n\t\toffset = {left: $.datepicker._pos[0], top: $.datepicker._pos[1]};\n\t\t$.datepicker._pos = null;\n\t\t//to avoid flashes on Firefox\n\t\tinst.dpDiv.empty();\n\t\t// determine sizing offscreen\n\t\tinst.dpDiv.css({position: \"absolute\", display: \"block\", top: \"-1000px\"});\n\t\t$.datepicker._updateDatepicker(inst);\n\t\t// fix width for dynamic number of date pickers\n\t\t// and adjust position before showing\n\t\toffset = $.datepicker._checkOffset(inst, offset, isFixed);\n\t\tinst.dpDiv.css({position: ($.datepicker._inDialog && $.blockUI ?\n\t\t\t\"static\" : (isFixed ? \"fixed\" : \"absolute\")), display: \"none\",\n\t\t\tleft: offset.left + \"px\", top: offset.top + \"px\"});\n\n\t\tif (!inst.inline) {\n\t\t\tshowAnim = $.datepicker._get(inst, \"showAnim\");\n\t\t\tduration = $.datepicker._get(inst, \"duration\");\n\t\t\tinst.dpDiv.css( \"z-index\", datepicker_getZindex( $( input ) ) + 1 );\n\t\t\t$.datepicker._datepickerShowing = true;\n\n\t\t\tif ( $.effects && $.effects.effect[ showAnim ] ) {\n\t\t\t\tinst.dpDiv.show(showAnim, $.datepicker._get(inst, \"showOptions\"), duration);\n\t\t\t} else {\n\t\t\t\tinst.dpDiv[showAnim || \"show\"](showAnim ? duration : null);\n\t\t\t}\n\n\t\t\tif ( $.datepicker._shouldFocusInput( inst ) ) {\n\t\t\t\tinst.input.focus();\n\t\t\t}\n\n\t\t\t$.datepicker._curInst = inst;\n\t\t}\n\t},\n\n\t/* Generate the date picker content. */\n\t_updateDatepicker: function(inst) {\n\t\tthis.maxRows = 4; //Reset the max number of rows being displayed (see #7043)\n\t\tdatepicker_instActive = inst; // for delegate hover events\n\t\tinst.dpDiv.empty().append(this._generateHTML(inst));\n\t\tthis._attachHandlers(inst);\n\n\t\tvar origyearshtml,\n\t\t\tnumMonths = this._getNumberOfMonths(inst),\n\t\t\tcols = numMonths[1],\n\t\t\twidth = 17,\n\t\t\tactiveCell = inst.dpDiv.find( \".\" + this._dayOverClass + \" a\" );\n\n\t\tif ( activeCell.length > 0 ) {\n\t\t\tdatepicker_handleMouseover.apply( activeCell.get( 0 ) );\n\t\t}\n\n\t\tinst.dpDiv.removeClass(\"ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4\").width(\"\");\n\t\tif (cols > 1) {\n\t\t\tinst.dpDiv.addClass(\"ui-datepicker-multi-\" + cols).css(\"width\", (width * cols) + \"em\");\n\t\t}\n\t\tinst.dpDiv[(numMonths[0] !== 1 || numMonths[1] !== 1 ? \"add\" : \"remove\") +\n\t\t\t\"Class\"](\"ui-datepicker-multi\");\n\t\tinst.dpDiv[(this._get(inst, \"isRTL\") ? \"add\" : \"remove\") +\n\t\t\t\"Class\"](\"ui-datepicker-rtl\");\n\n\t\tif (inst === $.datepicker._curInst && $.datepicker._datepickerShowing && $.datepicker._shouldFocusInput( inst ) ) {\n\t\t\tinst.input.focus();\n\t\t}\n\n\t\t// deffered render of the years select (to avoid flashes on Firefox)\n\t\tif( inst.yearshtml ){\n\t\t\torigyearshtml = inst.yearshtml;\n\t\t\tsetTimeout(function(){\n\t\t\t\t//assure that inst.yearshtml didn't change.\n\t\t\t\tif( origyearshtml === inst.yearshtml && inst.yearshtml ){\n\t\t\t\t\tinst.dpDiv.find(\"select.ui-datepicker-year:first\").replaceWith(inst.yearshtml);\n\t\t\t\t}\n\t\t\t\torigyearshtml = inst.yearshtml = null;\n\t\t\t}, 0);\n\t\t}\n\t},\n\n\t// #6694 - don't focus the input if it's already focused\n\t// this breaks the change event in IE\n\t// Support: IE and jQuery <1.9\n\t_shouldFocusInput: function( inst ) {\n\t\treturn inst.input && inst.input.is( \":visible\" ) && !inst.input.is( \":disabled\" ) && !inst.input.is( \":focus\" );\n\t},\n\n\t/* Check positioning to remain on screen. */\n\t_checkOffset: function(inst, offset, isFixed) {\n\t\tvar dpWidth = inst.dpDiv.outerWidth(),\n\t\t\tdpHeight = inst.dpDiv.outerHeight(),\n\t\t\tinputWidth = inst.input ? inst.input.outerWidth() : 0,\n\t\t\tinputHeight = inst.input ? inst.input.outerHeight() : 0,\n\t\t\tviewWidth = document.documentElement.clientWidth + (isFixed ? 0 : $(document).scrollLeft()),\n\t\t\tviewHeight = document.documentElement.clientHeight + (isFixed ? 0 : $(document).scrollTop());\n\n\t\toffset.left -= (this._get(inst, \"isRTL\") ? (dpWidth - inputWidth) : 0);\n\t\toffset.left -= (isFixed && offset.left === inst.input.offset().left) ? $(document).scrollLeft() : 0;\n\t\toffset.top -= (isFixed && offset.top === (inst.input.offset().top + inputHeight)) ? $(document).scrollTop() : 0;\n\n\t\t// now check if datepicker is showing outside window viewport - move to a better place if so.\n\t\toffset.left -= Math.min(offset.left, (offset.left + dpWidth > viewWidth && viewWidth > dpWidth) ?\n\t\t\tMath.abs(offset.left + dpWidth - viewWidth) : 0);\n\t\toffset.top -= Math.min(offset.top, (offset.top + dpHeight > viewHeight && viewHeight > dpHeight) ?\n\t\t\tMath.abs(dpHeight + inputHeight) : 0);\n\n\t\treturn offset;\n\t},\n\n\t/* Find an object's position on the screen. */\n\t_findPos: function(obj) {\n\t\tvar position,\n\t\t\tinst = this._getInst(obj),\n\t\t\tisRTL = this._get(inst, \"isRTL\");\n\n\t\twhile (obj && (obj.type === \"hidden\" || obj.nodeType !== 1 || $.expr.filters.hidden(obj))) {\n\t\t\tobj = obj[isRTL ? \"previousSibling\" : \"nextSibling\"];\n\t\t}\n\n\t\tposition = $(obj).offset();\n\t\treturn [position.left, position.top];\n\t},\n\n\t/* Hide the date picker from view.\n\t * @param input element - the input field attached to the date picker\n\t */\n\t_hideDatepicker: function(input) {\n\t\tvar showAnim, duration, postProcess, onClose,\n\t\t\tinst = this._curInst;\n\n\t\tif (!inst || (input && inst !== $.data(input, \"datepicker\"))) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this._datepickerShowing) {\n\t\t\tshowAnim = this._get(inst, \"showAnim\");\n\t\t\tduration = this._get(inst, \"duration\");\n\t\t\tpostProcess = function() {\n\t\t\t\t$.datepicker._tidyDialog(inst);\n\t\t\t};\n\n\t\t\t// DEPRECATED: after BC for 1.8.x $.effects[ showAnim ] is not needed\n\t\t\tif ( $.effects && ( $.effects.effect[ showAnim ] || $.effects[ showAnim ] ) ) {\n\t\t\t\tinst.dpDiv.hide(showAnim, $.datepicker._get(inst, \"showOptions\"), duration, postProcess);\n\t\t\t} else {\n\t\t\t\tinst.dpDiv[(showAnim === \"slideDown\" ? \"slideUp\" :\n\t\t\t\t\t(showAnim === \"fadeIn\" ? \"fadeOut\" : \"hide\"))]((showAnim ? duration : null), postProcess);\n\t\t\t}\n\n\t\t\tif (!showAnim) {\n\t\t\t\tpostProcess();\n\t\t\t}\n\t\t\tthis._datepickerShowing = false;\n\n\t\t\tonClose = this._get(inst, \"onClose\");\n\t\t\tif (onClose) {\n\t\t\t\tonClose.apply((inst.input ? inst.input[0] : null), [(inst.input ? inst.input.val() : \"\"), inst]);\n\t\t\t}\n\n\t\t\tthis._lastInput = null;\n\t\t\tif (this._inDialog) {\n\t\t\t\tthis._dialogInput.css({ position: \"absolute\", left: \"0\", top: \"-100px\" });\n\t\t\t\tif ($.blockUI) {\n\t\t\t\t\t$.unblockUI();\n\t\t\t\t\t$(\"body\").append(this.dpDiv);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._inDialog = false;\n\t\t}\n\t},\n\n\t/* Tidy up after a dialog display. */\n\t_tidyDialog: function(inst) {\n\t\tinst.dpDiv.removeClass(this._dialogClass).unbind(\".ui-datepicker-calendar\");\n\t},\n\n\t/* Close date picker if clicked elsewhere. */\n\t_checkExternalClick: function(event) {\n\t\tif (!$.datepicker._curInst) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar $target = $(event.target),\n\t\t\tinst = $.datepicker._getInst($target[0]);\n\n\t\tif ( ( ( $target[0].id !== $.datepicker._mainDivId &&\n\t\t\t\t$target.parents(\"#\" + $.datepicker._mainDivId).length === 0 &&\n\t\t\t\t!$target.hasClass($.datepicker.markerClassName) &&\n\t\t\t\t!$target.closest(\".\" + $.datepicker._triggerClass).length &&\n\t\t\t\t$.datepicker._datepickerShowing && !($.datepicker._inDialog && $.blockUI) ) ) ||\n\t\t\t( $target.hasClass($.datepicker.markerClassName) && $.datepicker._curInst !== inst ) ) {\n\t\t\t\t$.datepicker._hideDatepicker();\n\t\t}\n\t},\n\n\t/* Adjust one of the date sub-fields. */\n\t_adjustDate: function(id, offset, period) {\n\t\tvar target = $(id),\n\t\t\tinst = this._getInst(target[0]);\n\n\t\tif (this._isDisabledDatepicker(target[0])) {\n\t\t\treturn;\n\t\t}\n\t\tthis._adjustInstDate(inst, offset +\n\t\t\t(period === \"M\" ? this._get(inst, \"showCurrentAtPos\") : 0), // undo positioning\n\t\t\tperiod);\n\t\tthis._updateDatepicker(inst);\n\t},\n\n\t/* Action for current link. */\n\t_gotoToday: function(id) {\n\t\tvar date,\n\t\t\ttarget = $(id),\n\t\t\tinst = this._getInst(target[0]);\n\n\t\tif (this._get(inst, \"gotoCurrent\") && inst.currentDay) {\n\t\t\tinst.selectedDay = inst.currentDay;\n\t\t\tinst.drawMonth = inst.selectedMonth = inst.currentMonth;\n\t\t\tinst.drawYear = inst.selectedYear = inst.currentYear;\n\t\t} else {\n\t\t\tdate = new Date();\n\t\t\tinst.selectedDay = date.getDate();\n\t\t\tinst.drawMonth = inst.selectedMonth = date.getMonth();\n\t\t\tinst.drawYear = inst.selectedYear = date.getFullYear();\n\t\t}\n\t\tthis._notifyChange(inst);\n\t\tthis._adjustDate(target);\n\t},\n\n\t/* Action for selecting a new month/year. */\n\t_selectMonthYear: function(id, select, period) {\n\t\tvar target = $(id),\n\t\t\tinst = this._getInst(target[0]);\n\n\t\tinst[\"selected\" + (period === \"M\" ? \"Month\" : \"Year\")] =\n\t\tinst[\"draw\" + (period === \"M\" ? \"Month\" : \"Year\")] =\n\t\t\tparseInt(select.options[select.selectedIndex].value,10);\n\n\t\tthis._notifyChange(inst);\n\t\tthis._adjustDate(target);\n\t},\n\n\t/* Action for selecting a day. */\n\t_selectDay: function(id, month, year, td) {\n\t\tvar inst,\n\t\t\ttarget = $(id);\n\n\t\tif ($(td).hasClass(this._unselectableClass) || this._isDisabledDatepicker(target[0])) {\n\t\t\treturn;\n\t\t}\n\n\t\tinst = this._getInst(target[0]);\n\t\tinst.selectedDay = inst.currentDay = $(\"a\", td).html();\n\t\tinst.selectedMonth = inst.currentMonth = month;\n\t\tinst.selectedYear = inst.currentYear = year;\n\t\tthis._selectDate(id, this._formatDate(inst,\n\t\t\tinst.currentDay, inst.currentMonth, inst.currentYear));\n\t},\n\n\t/* Erase the input field and hide the date picker. */\n\t_clearDate: function(id) {\n\t\tvar target = $(id);\n\t\tthis._selectDate(target, \"\");\n\t},\n\n\t/* Update the input field with the selected date. */\n\t_selectDate: function(id, dateStr) {\n\t\tvar onSelect,\n\t\t\ttarget = $(id),\n\t\t\tinst = this._getInst(target[0]);\n\n\t\tdateStr = (dateStr != null ? dateStr : this._formatDate(inst));\n\t\tif (inst.input) {\n\t\t\tinst.input.val(dateStr);\n\t\t}\n\t\tthis._updateAlternate(inst);\n\n\t\tonSelect = this._get(inst, \"onSelect\");\n\t\tif (onSelect) {\n\t\t\tonSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]); // trigger custom callback\n\t\t} else if (inst.input) {\n\t\t\tinst.input.trigger(\"change\"); // fire the change event\n\t\t}\n\n\t\tif (inst.inline){\n\t\t\tthis._updateDatepicker(inst);\n\t\t} else {\n\t\t\tthis._hideDatepicker();\n\t\t\tthis._lastInput = inst.input[0];\n\t\t\tif (typeof(inst.input[0]) !== \"object\") {\n\t\t\t\tinst.input.focus(); // restore focus\n\t\t\t}\n\t\t\tthis._lastInput = null;\n\t\t}\n\t},\n\n\t/* Update any alternate field to synchronise with the main field. */\n\t_updateAlternate: function(inst) {\n\t\tvar altFormat, date, dateStr,\n\t\t\taltField = this._get(inst, \"altField\");\n\n\t\tif (altField) { // update alternate field too\n\t\t\taltFormat = this._get(inst, \"altFormat\") || this._get(inst, \"dateFormat\");\n\t\t\tdate = this._getDate(inst);\n\t\t\tdateStr = this.formatDate(altFormat, date, this._getFormatConfig(inst));\n\t\t\t$(altField).each(function() { $(this).val(dateStr); });\n\t\t}\n\t},\n\n\t/* Set as beforeShowDay function to prevent selection of weekends.\n\t * @param date Date - the date to customise\n\t * @return [boolean, string] - is this date selectable?, what is its CSS class?\n\t */\n\tnoWeekends: function(date) {\n\t\tvar day = date.getDay();\n\t\treturn [(day > 0 && day < 6), \"\"];\n\t},\n\n\t/* Set as calculateWeek to determine the week of the year based on the ISO 8601 definition.\n\t * @param date Date - the date to get the week for\n\t * @return number - the number of the week within the year that contains this date\n\t */\n\tiso8601Week: function(date) {\n\t\tvar time,\n\t\t\tcheckDate = new Date(date.getTime());\n\n\t\t// Find Thursday of this week starting on Monday\n\t\tcheckDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7));\n\n\t\ttime = checkDate.getTime();\n\t\tcheckDate.setMonth(0); // Compare with Jan 1\n\t\tcheckDate.setDate(1);\n\t\treturn Math.floor(Math.round((time - checkDate) / 86400000) / 7) + 1;\n\t},\n\n\t/* Parse a string value into a date object.\n\t * See formatDate below for the possible formats.\n\t *\n\t * @param format string - the expected format of the date\n\t * @param value string - the date in the above format\n\t * @param settings Object - attributes include:\n\t *\t\t\t\t\tshortYearCutoff number - the cutoff year for determining the century (optional)\n\t *\t\t\t\t\tdayNamesShort\tstring[7] - abbreviated names of the days from Sunday (optional)\n\t *\t\t\t\t\tdayNames\t\tstring[7] - names of the days from Sunday (optional)\n\t *\t\t\t\t\tmonthNamesShort string[12] - abbreviated names of the months (optional)\n\t *\t\t\t\t\tmonthNames\t\tstring[12] - names of the months (optional)\n\t * @return Date - the extracted date value or null if value is blank\n\t */\n\tparseDate: function (format, value, settings) {\n\t\tif (format == null || value == null) {\n\t\t\tthrow \"Invalid arguments\";\n\t\t}\n\n\t\tvalue = (typeof value === \"object\" ? value.toString() : value + \"\");\n\t\tif (value === \"\") {\n\t\t\treturn null;\n\t\t}\n\n\t\tvar iFormat, dim, extra,\n\t\t\tiValue = 0,\n\t\t\tshortYearCutoffTemp = (settings ? settings.shortYearCutoff : null) || this._defaults.shortYearCutoff,\n\t\t\tshortYearCutoff = (typeof shortYearCutoffTemp !== \"string\" ? shortYearCutoffTemp :\n\t\t\t\tnew Date().getFullYear() % 100 + parseInt(shortYearCutoffTemp, 10)),\n\t\t\tdayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort,\n\t\t\tdayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames,\n\t\t\tmonthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort,\n\t\t\tmonthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames,\n\t\t\tyear = -1,\n\t\t\tmonth = -1,\n\t\t\tday = -1,\n\t\t\tdoy = -1,\n\t\t\tliteral = false,\n\t\t\tdate,\n\t\t\t// Check whether a format character is doubled\n\t\t\tlookAhead = function(match) {\n\t\t\t\tvar matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match);\n\t\t\t\tif (matches) {\n\t\t\t\t\tiFormat++;\n\t\t\t\t}\n\t\t\t\treturn matches;\n\t\t\t},\n\t\t\t// Extract a number from the string value\n\t\t\tgetNumber = function(match) {\n\t\t\t\tvar isDoubled = lookAhead(match),\n\t\t\t\t\tsize = (match === \"@\" ? 14 : (match === \"!\" ? 20 :\n\t\t\t\t\t(match === \"y\" && isDoubled ? 4 : (match === \"o\" ? 3 : 2)))),\n\t\t\t\t\tminSize = (match === \"y\" ? size : 1),\n\t\t\t\t\tdigits = new RegExp(\"^\\\\d{\" + minSize + \",\" + size + \"}\"),\n\t\t\t\t\tnum = value.substring(iValue).match(digits);\n\t\t\t\tif (!num) {\n\t\t\t\t\tthrow \"Missing number at position \" + iValue;\n\t\t\t\t}\n\t\t\t\tiValue += num[0].length;\n\t\t\t\treturn parseInt(num[0], 10);\n\t\t\t},\n\t\t\t// Extract a name from the string value and convert to an index\n\t\t\tgetName = function(match, shortNames, longNames) {\n\t\t\t\tvar index = -1,\n\t\t\t\t\tnames = $.map(lookAhead(match) ? longNames : shortNames, function (v, k) {\n\t\t\t\t\t\treturn [ [k, v] ];\n\t\t\t\t\t}).sort(function (a, b) {\n\t\t\t\t\t\treturn -(a[1].length - b[1].length);\n\t\t\t\t\t});\n\n\t\t\t\t$.each(names, function (i, pair) {\n\t\t\t\t\tvar name = pair[1];\n\t\t\t\t\tif (value.substr(iValue, name.length).toLowerCase() === name.toLowerCase()) {\n\t\t\t\t\t\tindex = pair[0];\n\t\t\t\t\t\tiValue += name.length;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif (index !== -1) {\n\t\t\t\t\treturn index + 1;\n\t\t\t\t} else {\n\t\t\t\t\tthrow \"Unknown name at position \" + iValue;\n\t\t\t\t}\n\t\t\t},\n\t\t\t// Confirm that a literal character matches the string value\n\t\t\tcheckLiteral = function() {\n\t\t\t\tif (value.charAt(iValue) !== format.charAt(iFormat)) {\n\t\t\t\t\tthrow \"Unexpected literal at position \" + iValue;\n\t\t\t\t}\n\t\t\t\tiValue++;\n\t\t\t};\n\n\t\tfor (iFormat = 0; iFormat < format.length; iFormat++) {\n\t\t\tif (literal) {\n\t\t\t\tif (format.charAt(iFormat) === \"'\" && !lookAhead(\"'\")) {\n\t\t\t\t\tliteral = false;\n\t\t\t\t} else {\n\t\t\t\t\tcheckLiteral();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tswitch (format.charAt(iFormat)) {\n\t\t\t\t\tcase \"d\":\n\t\t\t\t\t\tday = getNumber(\"d\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"D\":\n\t\t\t\t\t\tgetName(\"D\", dayNamesShort, dayNames);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"o\":\n\t\t\t\t\t\tdoy = getNumber(\"o\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"m\":\n\t\t\t\t\t\tmonth = getNumber(\"m\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"M\":\n\t\t\t\t\t\tmonth = getName(\"M\", monthNamesShort, monthNames);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"y\":\n\t\t\t\t\t\tyear = getNumber(\"y\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"@\":\n\t\t\t\t\t\tdate = new Date(getNumber(\"@\"));\n\t\t\t\t\t\tyear = date.getFullYear();\n\t\t\t\t\t\tmonth = date.getMonth() + 1;\n\t\t\t\t\t\tday = date.getDate();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"!\":\n\t\t\t\t\t\tdate = new Date((getNumber(\"!\") - this._ticksTo1970) / 10000);\n\t\t\t\t\t\tyear = date.getFullYear();\n\t\t\t\t\t\tmonth = date.getMonth() + 1;\n\t\t\t\t\t\tday = date.getDate();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"'\":\n\t\t\t\t\t\tif (lookAhead(\"'\")){\n\t\t\t\t\t\t\tcheckLiteral();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tliteral = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcheckLiteral();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (iValue < value.length){\n\t\t\textra = value.substr(iValue);\n\t\t\tif (!/^\\s+/.test(extra)) {\n\t\t\t\tthrow \"Extra/unparsed characters found in date: \" + extra;\n\t\t\t}\n\t\t}\n\n\t\tif (year === -1) {\n\t\t\tyear = new Date().getFullYear();\n\t\t} else if (year < 100) {\n\t\t\tyear += new Date().getFullYear() - new Date().getFullYear() % 100 +\n\t\t\t\t(year <= shortYearCutoff ? 0 : -100);\n\t\t}\n\n\t\tif (doy > -1) {\n\t\t\tmonth = 1;\n\t\t\tday = doy;\n\t\t\tdo {\n\t\t\t\tdim = this._getDaysInMonth(year, month - 1);\n\t\t\t\tif (day <= dim) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tmonth++;\n\t\t\t\tday -= dim;\n\t\t\t} while (true);\n\t\t}\n\n\t\tdate = this._daylightSavingAdjust(new Date(year, month - 1, day));\n\t\tif (date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day) {\n\t\t\tthrow \"Invalid date\"; // E.g. 31/02/00\n\t\t}\n\t\treturn date;\n\t},\n\n\t/* Standard date formats. */\n\tATOM: \"yy-mm-dd\", // RFC 3339 (ISO 8601)\n\tCOOKIE: \"D, dd M yy\",\n\tISO_8601: \"yy-mm-dd\",\n\tRFC_822: \"D, d M y\",\n\tRFC_850: \"DD, dd-M-y\",\n\tRFC_1036: \"D, d M y\",\n\tRFC_1123: \"D, d M yy\",\n\tRFC_2822: \"D, d M yy\",\n\tRSS: \"D, d M y\", // RFC 822\n\tTICKS: \"!\",\n\tTIMESTAMP: \"@\",\n\tW3C: \"yy-mm-dd\", // ISO 8601\n\n\t_ticksTo1970: (((1970 - 1) * 365 + Math.floor(1970 / 4) - Math.floor(1970 / 100) +\n\t\tMath.floor(1970 / 400)) * 24 * 60 * 60 * 10000000),\n\n\t/* Format a date object into a string value.\n\t * The format can be combinations of the following:\n\t * d - day of month (no leading zero)\n\t * dd - day of month (two digit)\n\t * o - day of year (no leading zeros)\n\t * oo - day of year (three digit)\n\t * D - day name short\n\t * DD - day name long\n\t * m - month of year (no leading zero)\n\t * mm - month of year (two digit)\n\t * M - month name short\n\t * MM - month name long\n\t * y - year (two digit)\n\t * yy - year (four digit)\n\t * @ - Unix timestamp (ms since 01/01/1970)\n\t * ! - Windows ticks (100ns since 01/01/0001)\n\t * \"...\" - literal text\n\t * '' - single quote\n\t *\n\t * @param format string - the desired format of the date\n\t * @param date Date - the date value to format\n\t * @param settings Object - attributes include:\n\t *\t\t\t\t\tdayNamesShort\tstring[7] - abbreviated names of the days from Sunday (optional)\n\t *\t\t\t\t\tdayNames\t\tstring[7] - names of the days from Sunday (optional)\n\t *\t\t\t\t\tmonthNamesShort string[12] - abbreviated names of the months (optional)\n\t *\t\t\t\t\tmonthNames\t\tstring[12] - names of the months (optional)\n\t * @return string - the date in the above format\n\t */\n\tformatDate: function (format, date, settings) {\n\t\tif (!date) {\n\t\t\treturn \"\";\n\t\t}\n\n\t\tvar iFormat,\n\t\t\tdayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort,\n\t\t\tdayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames,\n\t\t\tmonthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort,\n\t\t\tmonthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames,\n\t\t\t// Check whether a format character is doubled\n\t\t\tlookAhead = function(match) {\n\t\t\t\tvar matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match);\n\t\t\t\tif (matches) {\n\t\t\t\t\tiFormat++;\n\t\t\t\t}\n\t\t\t\treturn matches;\n\t\t\t},\n\t\t\t// Format a number, with leading zero if necessary\n\t\t\tformatNumber = function(match, value, len) {\n\t\t\t\tvar num = \"\" + value;\n\t\t\t\tif (lookAhead(match)) {\n\t\t\t\t\twhile (num.length < len) {\n\t\t\t\t\t\tnum = \"0\" + num;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn num;\n\t\t\t},\n\t\t\t// Format a name, short or long as requested\n\t\t\tformatName = function(match, value, shortNames, longNames) {\n\t\t\t\treturn (lookAhead(match) ? longNames[value] : shortNames[value]);\n\t\t\t},\n\t\t\toutput = \"\",\n\t\t\tliteral = false;\n\n\t\tif (date) {\n\t\t\tfor (iFormat = 0; iFormat < format.length; iFormat++) {\n\t\t\t\tif (literal) {\n\t\t\t\t\tif (format.charAt(iFormat) === \"'\" && !lookAhead(\"'\")) {\n\t\t\t\t\t\tliteral = false;\n\t\t\t\t\t} else {\n\t\t\t\t\t\toutput += format.charAt(iFormat);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tswitch (format.charAt(iFormat)) {\n\t\t\t\t\t\tcase \"d\":\n\t\t\t\t\t\t\toutput += formatNumber(\"d\", date.getDate(), 2);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"D\":\n\t\t\t\t\t\t\toutput += formatName(\"D\", date.getDay(), dayNamesShort, dayNames);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"o\":\n\t\t\t\t\t\t\toutput += formatNumber(\"o\",\n\t\t\t\t\t\t\t\tMath.round((new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000), 3);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"m\":\n\t\t\t\t\t\t\toutput += formatNumber(\"m\", date.getMonth() + 1, 2);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"M\":\n\t\t\t\t\t\t\toutput += formatName(\"M\", date.getMonth(), monthNamesShort, monthNames);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"y\":\n\t\t\t\t\t\t\toutput += (lookAhead(\"y\") ? date.getFullYear() :\n\t\t\t\t\t\t\t\t(date.getYear() % 100 < 10 ? \"0\" : \"\") + date.getYear() % 100);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"@\":\n\t\t\t\t\t\t\toutput += date.getTime();\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"!\":\n\t\t\t\t\t\t\toutput += date.getTime() * 10000 + this._ticksTo1970;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"'\":\n\t\t\t\t\t\t\tif (lookAhead(\"'\")) {\n\t\t\t\t\t\t\t\toutput += \"'\";\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tliteral = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\toutput += format.charAt(iFormat);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t},\n\n\t/* Extract all possible characters from the date format. */\n\t_possibleChars: function (format) {\n\t\tvar iFormat,\n\t\t\tchars = \"\",\n\t\t\tliteral = false,\n\t\t\t// Check whether a format character is doubled\n\t\t\tlookAhead = function(match) {\n\t\t\t\tvar matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match);\n\t\t\t\tif (matches) {\n\t\t\t\t\tiFormat++;\n\t\t\t\t}\n\t\t\t\treturn matches;\n\t\t\t};\n\n\t\tfor (iFormat = 0; iFormat < format.length; iFormat++) {\n\t\t\tif (literal) {\n\t\t\t\tif (format.charAt(iFormat) === \"'\" && !lookAhead(\"'\")) {\n\t\t\t\t\tliteral = false;\n\t\t\t\t} else {\n\t\t\t\t\tchars += format.charAt(iFormat);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tswitch (format.charAt(iFormat)) {\n\t\t\t\t\tcase \"d\": case \"m\": case \"y\": case \"@\":\n\t\t\t\t\t\tchars += \"0123456789\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"D\": case \"M\":\n\t\t\t\t\t\treturn null; // Accept anything\n\t\t\t\t\tcase \"'\":\n\t\t\t\t\t\tif (lookAhead(\"'\")) {\n\t\t\t\t\t\t\tchars += \"'\";\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tliteral = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tchars += format.charAt(iFormat);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn chars;\n\t},\n\n\t/* Get a setting value, defaulting if necessary. */\n\t_get: function(inst, name) {\n\t\treturn inst.settings[name] !== undefined ?\n\t\t\tinst.settings[name] : this._defaults[name];\n\t},\n\n\t/* Parse existing date and initialise date picker. */\n\t_setDateFromField: function(inst, noDefault) {\n\t\tif (inst.input.val() === inst.lastVal) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar dateFormat = this._get(inst, \"dateFormat\"),\n\t\t\tdates = inst.lastVal = inst.input ? inst.input.val() : null,\n\t\t\tdefaultDate = this._getDefaultDate(inst),\n\t\t\tdate = defaultDate,\n\t\t\tsettings = this._getFormatConfig(inst);\n\n\t\ttry {\n\t\t\tdate = this.parseDate(dateFormat, dates, settings) || defaultDate;\n\t\t} catch (event) {\n\t\t\tdates = (noDefault ? \"\" : dates);\n\t\t}\n\t\tinst.selectedDay = date.getDate();\n\t\tinst.drawMonth = inst.selectedMonth = date.getMonth();\n\t\tinst.drawYear = inst.selectedYear = date.getFullYear();\n\t\tinst.currentDay = (dates ? date.getDate() : 0);\n\t\tinst.currentMonth = (dates ? date.getMonth() : 0);\n\t\tinst.currentYear = (dates ? date.getFullYear() : 0);\n\t\tthis._adjustInstDate(inst);\n\t},\n\n\t/* Retrieve the default date shown on opening. */\n\t_getDefaultDate: function(inst) {\n\t\treturn this._restrictMinMax(inst,\n\t\t\tthis._determineDate(inst, this._get(inst, \"defaultDate\"), new Date()));\n\t},\n\n\t/* A date may be specified as an exact value or a relative one. */\n\t_determineDate: function(inst, date, defaultDate) {\n\t\tvar offsetNumeric = function(offset) {\n\t\t\t\tvar date = new Date();\n\t\t\t\tdate.setDate(date.getDate() + offset);\n\t\t\t\treturn date;\n\t\t\t},\n\t\t\toffsetString = function(offset) {\n\t\t\t\ttry {\n\t\t\t\t\treturn $.datepicker.parseDate($.datepicker._get(inst, \"dateFormat\"),\n\t\t\t\t\t\toffset, $.datepicker._getFormatConfig(inst));\n\t\t\t\t}\n\t\t\t\tcatch (e) {\n\t\t\t\t\t// Ignore\n\t\t\t\t}\n\n\t\t\t\tvar date = (offset.toLowerCase().match(/^c/) ?\n\t\t\t\t\t$.datepicker._getDate(inst) : null) || new Date(),\n\t\t\t\t\tyear = date.getFullYear(),\n\t\t\t\t\tmonth = date.getMonth(),\n\t\t\t\t\tday = date.getDate(),\n\t\t\t\t\tpattern = /([+\\-]?[0-9]+)\\s*(d|D|w|W|m|M|y|Y)?/g,\n\t\t\t\t\tmatches = pattern.exec(offset);\n\n\t\t\t\twhile (matches) {\n\t\t\t\t\tswitch (matches[2] || \"d\") {\n\t\t\t\t\t\tcase \"d\" : case \"D\" :\n\t\t\t\t\t\t\tday += parseInt(matches[1],10); break;\n\t\t\t\t\t\tcase \"w\" : case \"W\" :\n\t\t\t\t\t\t\tday += parseInt(matches[1],10) * 7; break;\n\t\t\t\t\t\tcase \"m\" : case \"M\" :\n\t\t\t\t\t\t\tmonth += parseInt(matches[1],10);\n\t\t\t\t\t\t\tday = Math.min(day, $.datepicker._getDaysInMonth(year, month));\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"y\": case \"Y\" :\n\t\t\t\t\t\t\tyear += parseInt(matches[1],10);\n\t\t\t\t\t\t\tday = Math.min(day, $.datepicker._getDaysInMonth(year, month));\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tmatches = pattern.exec(offset);\n\t\t\t\t}\n\t\t\t\treturn new Date(year, month, day);\n\t\t\t},\n\t\t\tnewDate = (date == null || date === \"\" ? defaultDate : (typeof date === \"string\" ? offsetString(date) :\n\t\t\t\t(typeof date === \"number\" ? (isNaN(date) ? defaultDate : offsetNumeric(date)) : new Date(date.getTime()))));\n\n\t\tnewDate = (newDate && newDate.toString() === \"Invalid Date\" ? defaultDate : newDate);\n\t\tif (newDate) {\n\t\t\tnewDate.setHours(0);\n\t\t\tnewDate.setMinutes(0);\n\t\t\tnewDate.setSeconds(0);\n\t\t\tnewDate.setMilliseconds(0);\n\t\t}\n\t\treturn this._daylightSavingAdjust(newDate);\n\t},\n\n\t/* Handle switch to/from daylight saving.\n\t * Hours may be non-zero on daylight saving cut-over:\n\t * > 12 when midnight changeover, but then cannot generate\n\t * midnight datetime, so jump to 1AM, otherwise reset.\n\t * @param date (Date) the date to check\n\t * @return (Date) the corrected date\n\t */\n\t_daylightSavingAdjust: function(date) {\n\t\tif (!date) {\n\t\t\treturn null;\n\t\t}\n\t\tdate.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0);\n\t\treturn date;\n\t},\n\n\t/* Set the date(s) directly. */\n\t_setDate: function(inst, date, noChange) {\n\t\tvar clear = !date,\n\t\t\torigMonth = inst.selectedMonth,\n\t\t\torigYear = inst.selectedYear,\n\t\t\tnewDate = this._restrictMinMax(inst, this._determineDate(inst, date, new Date()));\n\n\t\tinst.selectedDay = inst.currentDay = newDate.getDate();\n\t\tinst.drawMonth = inst.selectedMonth = inst.currentMonth = newDate.getMonth();\n\t\tinst.drawYear = inst.selectedYear = inst.currentYear = newDate.getFullYear();\n\t\tif ((origMonth !== inst.selectedMonth || origYear !== inst.selectedYear) && !noChange) {\n\t\t\tthis._notifyChange(inst);\n\t\t}\n\t\tthis._adjustInstDate(inst);\n\t\tif (inst.input) {\n\t\t\tinst.input.val(clear ? \"\" : this._formatDate(inst));\n\t\t}\n\t},\n\n\t/* Retrieve the date(s) directly. */\n\t_getDate: function(inst) {\n\t\tvar startDate = (!inst.currentYear || (inst.input && inst.input.val() === \"\") ? null :\n\t\t\tthis._daylightSavingAdjust(new Date(\n\t\t\tinst.currentYear, inst.currentMonth, inst.currentDay)));\n\t\t\treturn startDate;\n\t},\n\n\t/* Attach the onxxx handlers. These are declared statically so\n\t * they work with static code transformers like Caja.\n\t */\n\t_attachHandlers: function(inst) {\n\t\tvar stepMonths = this._get(inst, \"stepMonths\"),\n\t\t\tid = \"#\" + inst.id.replace( /\\\\\\\\/g, \"\\\\\" );\n\t\tinst.dpDiv.find(\"[data-handler]\").map(function () {\n\t\t\tvar handler = {\n\t\t\t\tprev: function () {\n\t\t\t\t\t$.datepicker._adjustDate(id, -stepMonths, \"M\");\n\t\t\t\t},\n\t\t\t\tnext: function () {\n\t\t\t\t\t$.datepicker._adjustDate(id, +stepMonths, \"M\");\n\t\t\t\t},\n\t\t\t\thide: function () {\n\t\t\t\t\t$.datepicker._hideDatepicker();\n\t\t\t\t},\n\t\t\t\ttoday: function () {\n\t\t\t\t\t$.datepicker._gotoToday(id);\n\t\t\t\t},\n\t\t\t\tselectDay: function () {\n\t\t\t\t\t$.datepicker._selectDay(id, +this.getAttribute(\"data-month\"), +this.getAttribute(\"data-year\"), this);\n\t\t\t\t\treturn false;\n\t\t\t\t},\n\t\t\t\tselectMonth: function () {\n\t\t\t\t\t$.datepicker._selectMonthYear(id, this, \"M\");\n\t\t\t\t\treturn false;\n\t\t\t\t},\n\t\t\t\tselectYear: function () {\n\t\t\t\t\t$.datepicker._selectMonthYear(id, this, \"Y\");\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t};\n\t\t\t$(this).bind(this.getAttribute(\"data-event\"), handler[this.getAttribute(\"data-handler\")]);\n\t\t});\n\t},\n\n\t/* Generate the HTML for the current state of the date picker. */\n\t_generateHTML: function(inst) {\n\t\tvar maxDraw, prevText, prev, nextText, next, currentText, gotoDate,\n\t\t\tcontrols, buttonPanel, firstDay, showWeek, dayNames, dayNamesMin,\n\t\t\tmonthNames, monthNamesShort, beforeShowDay, showOtherMonths,\n\t\t\tselectOtherMonths, defaultDate, html, dow, row, group, col, selectedDate,\n\t\t\tcornerClass, calender, thead, day, daysInMonth, leadDays, curRows, numRows,\n\t\t\tprintDate, dRow, tbody, daySettings, otherMonth, unselectable,\n\t\t\ttempDate = new Date(),\n\t\t\ttoday = this._daylightSavingAdjust(\n\t\t\t\tnew Date(tempDate.getFullYear(), tempDate.getMonth(), tempDate.getDate())), // clear time\n\t\t\tisRTL = this._get(inst, \"isRTL\"),\n\t\t\tshowButtonPanel = this._get(inst, \"showButtonPanel\"),\n\t\t\thideIfNoPrevNext = this._get(inst, \"hideIfNoPrevNext\"),\n\t\t\tnavigationAsDateFormat = this._get(inst, \"navigationAsDateFormat\"),\n\t\t\tnumMonths = this._getNumberOfMonths(inst),\n\t\t\tshowCurrentAtPos = this._get(inst, \"showCurrentAtPos\"),\n\t\t\tstepMonths = this._get(inst, \"stepMonths\"),\n\t\t\tisMultiMonth = (numMonths[0] !== 1 || numMonths[1] !== 1),\n\t\t\tcurrentDate = this._daylightSavingAdjust((!inst.currentDay ? new Date(9999, 9, 9) :\n\t\t\t\tnew Date(inst.currentYear, inst.currentMonth, inst.currentDay))),\n\t\t\tminDate = this._getMinMaxDate(inst, \"min\"),\n\t\t\tmaxDate = this._getMinMaxDate(inst, \"max\"),\n\t\t\tdrawMonth = inst.drawMonth - showCurrentAtPos,\n\t\t\tdrawYear = inst.drawYear;\n\n\t\tif (drawMonth < 0) {\n\t\t\tdrawMonth += 12;\n\t\t\tdrawYear--;\n\t\t}\n\t\tif (maxDate) {\n\t\t\tmaxDraw = this._daylightSavingAdjust(new Date(maxDate.getFullYear(),\n\t\t\t\tmaxDate.getMonth() - (numMonths[0] * numMonths[1]) + 1, maxDate.getDate()));\n\t\t\tmaxDraw = (minDate && maxDraw < minDate ? minDate : maxDraw);\n\t\t\twhile (this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1)) > maxDraw) {\n\t\t\t\tdrawMonth--;\n\t\t\t\tif (drawMonth < 0) {\n\t\t\t\t\tdrawMonth = 11;\n\t\t\t\t\tdrawYear--;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tinst.drawMonth = drawMonth;\n\t\tinst.drawYear = drawYear;\n\n\t\tprevText = this._get(inst, \"prevText\");\n\t\tprevText = (!navigationAsDateFormat ? prevText : this.formatDate(prevText,\n\t\t\tthis._daylightSavingAdjust(new Date(drawYear, drawMonth - stepMonths, 1)),\n\t\t\tthis._getFormatConfig(inst)));\n\n\t\tprev = (this._canAdjustMonth(inst, -1, drawYear, drawMonth) ?\n\t\t\t\"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click'\" +\n\t\t\t\" title='\" + prevText + \"'><span class='ui-icon ui-icon-circle-triangle-\" + ( isRTL ? \"e\" : \"w\") + \"'>\" + prevText + \"</span></a>\" :\n\t\t\t(hideIfNoPrevNext ? \"\" : \"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='\"+ prevText +\"'><span class='ui-icon ui-icon-circle-triangle-\" + ( isRTL ? \"e\" : \"w\") + \"'>\" + prevText + \"</span></a>\"));\n\n\t\tnextText = this._get(inst, \"nextText\");\n\t\tnextText = (!navigationAsDateFormat ? nextText : this.formatDate(nextText,\n\t\t\tthis._daylightSavingAdjust(new Date(drawYear, drawMonth + stepMonths, 1)),\n\t\t\tthis._getFormatConfig(inst)));\n\n\t\tnext = (this._canAdjustMonth(inst, +1, drawYear, drawMonth) ?\n\t\t\t\"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click'\" +\n\t\t\t\" title='\" + nextText + \"'><span class='ui-icon ui-icon-circle-triangle-\" + ( isRTL ? \"w\" : \"e\") + \"'>\" + nextText + \"</span></a>\" :\n\t\t\t(hideIfNoPrevNext ? \"\" : \"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='\"+ nextText + \"'><span class='ui-icon ui-icon-circle-triangle-\" + ( isRTL ? \"w\" : \"e\") + \"'>\" + nextText + \"</span></a>\"));\n\n\t\tcurrentText = this._get(inst, \"currentText\");\n\t\tgotoDate = (this._get(inst, \"gotoCurrent\") && inst.currentDay ? currentDate : today);\n\t\tcurrentText = (!navigationAsDateFormat ? currentText :\n\t\t\tthis.formatDate(currentText, gotoDate, this._getFormatConfig(inst)));\n\n\t\tcontrols = (!inst.inline ? \"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>\" +\n\t\t\tthis._get(inst, \"closeText\") + \"</button>\" : \"\");\n\n\t\tbuttonPanel = (showButtonPanel) ? \"<div class='ui-datepicker-buttonpane ui-widget-content'>\" + (isRTL ? controls : \"\") +\n\t\t\t(this._isInRange(inst, gotoDate) ? \"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'\" +\n\t\t\t\">\" + currentText + \"</button>\" : \"\") + (isRTL ? \"\" : controls) + \"</div>\" : \"\";\n\n\t\tfirstDay = parseInt(this._get(inst, \"firstDay\"),10);\n\t\tfirstDay = (isNaN(firstDay) ? 0 : firstDay);\n\n\t\tshowWeek = this._get(inst, \"showWeek\");\n\t\tdayNames = this._get(inst, \"dayNames\");\n\t\tdayNamesMin = this._get(inst, \"dayNamesMin\");\n\t\tmonthNames = this._get(inst, \"monthNames\");\n\t\tmonthNamesShort = this._get(inst, \"monthNamesShort\");\n\t\tbeforeShowDay = this._get(inst, \"beforeShowDay\");\n\t\tshowOtherMonths = this._get(inst, \"showOtherMonths\");\n\t\tselectOtherMonths = this._get(inst, \"selectOtherMonths\");\n\t\tdefaultDate = this._getDefaultDate(inst);\n\t\thtml = \"\";\n\t\tdow;\n\t\tfor (row = 0; row < numMonths[0]; row++) {\n\t\t\tgroup = \"\";\n\t\t\tthis.maxRows = 4;\n\t\t\tfor (col = 0; col < numMonths[1]; col++) {\n\t\t\t\tselectedDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, inst.selectedDay));\n\t\t\t\tcornerClass = \" ui-corner-all\";\n\t\t\t\tcalender = \"\";\n\t\t\t\tif (isMultiMonth) {\n\t\t\t\t\tcalender += \"<div class='ui-datepicker-group\";\n\t\t\t\t\tif (numMonths[1] > 1) {\n\t\t\t\t\t\tswitch (col) {\n\t\t\t\t\t\t\tcase 0: calender += \" ui-datepicker-group-first\";\n\t\t\t\t\t\t\t\tcornerClass = \" ui-corner-\" + (isRTL ? \"right\" : \"left\"); break;\n\t\t\t\t\t\t\tcase numMonths[1]-1: calender += \" ui-datepicker-group-last\";\n\t\t\t\t\t\t\t\tcornerClass = \" ui-corner-\" + (isRTL ? \"left\" : \"right\"); break;\n\t\t\t\t\t\t\tdefault: calender += \" ui-datepicker-group-middle\"; cornerClass = \"\"; break;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcalender += \"'>\";\n\t\t\t\t}\n\t\t\t\tcalender += \"<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix\" + cornerClass + \"'>\" +\n\t\t\t\t\t(/all|left/.test(cornerClass) && row === 0 ? (isRTL ? next : prev) : \"\") +\n\t\t\t\t\t(/all|right/.test(cornerClass) && row === 0 ? (isRTL ? prev : next) : \"\") +\n\t\t\t\t\tthis._generateMonthYearHeader(inst, drawMonth, drawYear, minDate, maxDate,\n\t\t\t\t\trow > 0 || col > 0, monthNames, monthNamesShort) + // draw month headers\n\t\t\t\t\t\"</div><table class='ui-datepicker-calendar'><thead>\" +\n\t\t\t\t\t\"<tr>\";\n\t\t\t\tthead = (showWeek ? \"<th class='ui-datepicker-week-col'>\" + this._get(inst, \"weekHeader\") + \"</th>\" : \"\");\n\t\t\t\tfor (dow = 0; dow < 7; dow++) { // days of the week\n\t\t\t\t\tday = (dow + firstDay) % 7;\n\t\t\t\t\tthead += \"<th scope='col'\" + ((dow + firstDay + 6) % 7 >= 5 ? \" class='ui-datepicker-week-end'\" : \"\") + \">\" +\n\t\t\t\t\t\t\"<span title='\" + dayNames[day] + \"'>\" + dayNamesMin[day] + \"</span></th>\";\n\t\t\t\t}\n\t\t\t\tcalender += thead + \"</tr></thead><tbody>\";\n\t\t\t\tdaysInMonth = this._getDaysInMonth(drawYear, drawMonth);\n\t\t\t\tif (drawYear === inst.selectedYear && drawMonth === inst.selectedMonth) {\n\t\t\t\t\tinst.selectedDay = Math.min(inst.selectedDay, daysInMonth);\n\t\t\t\t}\n\t\t\t\tleadDays = (this._getFirstDayOfMonth(drawYear, drawMonth) - firstDay + 7) % 7;\n\t\t\t\tcurRows = Math.ceil((leadDays + daysInMonth) / 7); // calculate the number of rows to generate\n\t\t\t\tnumRows = (isMultiMonth ? this.maxRows > curRows ? this.maxRows : curRows : curRows); //If multiple months, use the higher number of rows (see #7043)\n\t\t\t\tthis.maxRows = numRows;\n\t\t\t\tprintDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1 - leadDays));\n\t\t\t\tfor (dRow = 0; dRow < numRows; dRow++) { // create date picker rows\n\t\t\t\t\tcalender += \"<tr>\";\n\t\t\t\t\ttbody = (!showWeek ? \"\" : \"<td class='ui-datepicker-week-col'>\" +\n\t\t\t\t\t\tthis._get(inst, \"calculateWeek\")(printDate) + \"</td>\");\n\t\t\t\t\tfor (dow = 0; dow < 7; dow++) { // create date picker days\n\t\t\t\t\t\tdaySettings = (beforeShowDay ?\n\t\t\t\t\t\t\tbeforeShowDay.apply((inst.input ? inst.input[0] : null), [printDate]) : [true, \"\"]);\n\t\t\t\t\t\totherMonth = (printDate.getMonth() !== drawMonth);\n\t\t\t\t\t\tunselectable = (otherMonth && !selectOtherMonths) || !daySettings[0] ||\n\t\t\t\t\t\t\t(minDate && printDate < minDate) || (maxDate && printDate > maxDate);\n\t\t\t\t\t\ttbody += \"<td class='\" +\n\t\t\t\t\t\t\t((dow + firstDay + 6) % 7 >= 5 ? \" ui-datepicker-week-end\" : \"\") + // highlight weekends\n\t\t\t\t\t\t\t(otherMonth ? \" ui-datepicker-other-month\" : \"\") + // highlight days from other months\n\t\t\t\t\t\t\t((printDate.getTime() === selectedDate.getTime() && drawMonth === inst.selectedMonth && inst._keyEvent) || // user pressed key\n\t\t\t\t\t\t\t(defaultDate.getTime() === printDate.getTime() && defaultDate.getTime() === selectedDate.getTime()) ?\n\t\t\t\t\t\t\t// or defaultDate is current printedDate and defaultDate is selectedDate\n\t\t\t\t\t\t\t\" \" + this._dayOverClass : \"\") + // highlight selected day\n\t\t\t\t\t\t\t(unselectable ? \" \" + this._unselectableClass + \" ui-state-disabled\": \"\") + // highlight unselectable days\n\t\t\t\t\t\t\t(otherMonth && !showOtherMonths ? \"\" : \" \" + daySettings[1] + // highlight custom dates\n\t\t\t\t\t\t\t(printDate.getTime() === currentDate.getTime() ? \" \" + this._currentClass : \"\") + // highlight selected day\n\t\t\t\t\t\t\t(printDate.getTime() === today.getTime() ? \" ui-datepicker-today\" : \"\")) + \"'\" + // highlight today (if different)\n\t\t\t\t\t\t\t((!otherMonth || showOtherMonths) && daySettings[2] ? \" title='\" + daySettings[2].replace(/'/g, \"'\") + \"'\" : \"\") + // cell title\n\t\t\t\t\t\t\t(unselectable ? \"\" : \" data-handler='selectDay' data-event='click' data-month='\" + printDate.getMonth() + \"' data-year='\" + printDate.getFullYear() + \"'\") + \">\" + // actions\n\t\t\t\t\t\t\t(otherMonth && !showOtherMonths ? \" \" : // display for other months\n\t\t\t\t\t\t\t(unselectable ? \"<span class='ui-state-default'>\" + printDate.getDate() + \"</span>\" : \"<a class='ui-state-default\" +\n\t\t\t\t\t\t\t(printDate.getTime() === today.getTime() ? \" ui-state-highlight\" : \"\") +\n\t\t\t\t\t\t\t(printDate.getTime() === currentDate.getTime() ? \" ui-state-active\" : \"\") + // highlight selected day\n\t\t\t\t\t\t\t(otherMonth ? \" ui-priority-secondary\" : \"\") + // distinguish dates from other months\n\t\t\t\t\t\t\t\"' href='#'>\" + printDate.getDate() + \"</a>\")) + \"</td>\"; // display selectable date\n\t\t\t\t\t\tprintDate.setDate(printDate.getDate() + 1);\n\t\t\t\t\t\tprintDate = this._daylightSavingAdjust(printDate);\n\t\t\t\t\t}\n\t\t\t\t\tcalender += tbody + \"</tr>\";\n\t\t\t\t}\n\t\t\t\tdrawMonth++;\n\t\t\t\tif (drawMonth > 11) {\n\t\t\t\t\tdrawMonth = 0;\n\t\t\t\t\tdrawYear++;\n\t\t\t\t}\n\t\t\t\tcalender += \"</tbody></table>\" + (isMultiMonth ? \"</div>\" +\n\t\t\t\t\t\t\t((numMonths[0] > 0 && col === numMonths[1]-1) ? \"<div class='ui-datepicker-row-break'></div>\" : \"\") : \"\");\n\t\t\t\tgroup += calender;\n\t\t\t}\n\t\t\thtml += group;\n\t\t}\n\t\thtml += buttonPanel;\n\t\tinst._keyEvent = false;\n\t\treturn html;\n\t},\n\n\t/* Generate the month and year header. */\n\t_generateMonthYearHeader: function(inst, drawMonth, drawYear, minDate, maxDate,\n\t\t\tsecondary, monthNames, monthNamesShort) {\n\n\t\tvar inMinYear, inMaxYear, month, years, thisYear, determineYear, year, endYear,\n\t\t\tchangeMonth = this._get(inst, \"changeMonth\"),\n\t\t\tchangeYear = this._get(inst, \"changeYear\"),\n\t\t\tshowMonthAfterYear = this._get(inst, \"showMonthAfterYear\"),\n\t\t\thtml = \"<div class='ui-datepicker-title'>\",\n\t\t\tmonthHtml = \"\";\n\n\t\t// month selection\n\t\tif (secondary || !changeMonth) {\n\t\t\tmonthHtml += \"<span class='ui-datepicker-month'>\" + monthNames[drawMonth] + \"</span>\";\n\t\t} else {\n\t\t\tinMinYear = (minDate && minDate.getFullYear() === drawYear);\n\t\t\tinMaxYear = (maxDate && maxDate.getFullYear() === drawYear);\n\t\t\tmonthHtml += \"<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>\";\n\t\t\tfor ( month = 0; month < 12; month++) {\n\t\t\t\tif ((!inMinYear || month >= minDate.getMonth()) && (!inMaxYear || month <= maxDate.getMonth())) {\n\t\t\t\t\tmonthHtml += \"<option value='\" + month + \"'\" +\n\t\t\t\t\t\t(month === drawMonth ? \" selected='selected'\" : \"\") +\n\t\t\t\t\t\t\">\" + monthNamesShort[month] + \"</option>\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tmonthHtml += \"</select>\";\n\t\t}\n\n\t\tif (!showMonthAfterYear) {\n\t\t\thtml += monthHtml + (secondary || !(changeMonth && changeYear) ? \" \" : \"\");\n\t\t}\n\n\t\t// year selection\n\t\tif ( !inst.yearshtml ) {\n\t\t\tinst.yearshtml = \"\";\n\t\t\tif (secondary || !changeYear) {\n\t\t\t\thtml += \"<span class='ui-datepicker-year'>\" + drawYear + \"</span>\";\n\t\t\t} else {\n\t\t\t\t// determine range of years to display\n\t\t\t\tyears = this._get(inst, \"yearRange\").split(\":\");\n\t\t\t\tthisYear = new Date().getFullYear();\n\t\t\t\tdetermineYear = function(value) {\n\t\t\t\t\tvar year = (value.match(/c[+\\-].*/) ? drawYear + parseInt(value.substring(1), 10) :\n\t\t\t\t\t\t(value.match(/[+\\-].*/) ? thisYear + parseInt(value, 10) :\n\t\t\t\t\t\tparseInt(value, 10)));\n\t\t\t\t\treturn (isNaN(year) ? thisYear : year);\n\t\t\t\t};\n\t\t\t\tyear = determineYear(years[0]);\n\t\t\t\tendYear = Math.max(year, determineYear(years[1] || \"\"));\n\t\t\t\tyear = (minDate ? Math.max(year, minDate.getFullYear()) : year);\n\t\t\t\tendYear = (maxDate ? Math.min(endYear, maxDate.getFullYear()) : endYear);\n\t\t\t\tinst.yearshtml += \"<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>\";\n\t\t\t\tfor (; year <= endYear; year++) {\n\t\t\t\t\tinst.yearshtml += \"<option value='\" + year + \"'\" +\n\t\t\t\t\t\t(year === drawYear ? \" selected='selected'\" : \"\") +\n\t\t\t\t\t\t\">\" + year + \"</option>\";\n\t\t\t\t}\n\t\t\t\tinst.yearshtml += \"</select>\";\n\n\t\t\t\thtml += inst.yearshtml;\n\t\t\t\tinst.yearshtml = null;\n\t\t\t}\n\t\t}\n\n\t\thtml += this._get(inst, \"yearSuffix\");\n\t\tif (showMonthAfterYear) {\n\t\t\thtml += (secondary || !(changeMonth && changeYear) ? \" \" : \"\") + monthHtml;\n\t\t}\n\t\thtml += \"</div>\"; // Close datepicker_header\n\t\treturn html;\n\t},\n\n\t/* Adjust one of the date sub-fields. */\n\t_adjustInstDate: function(inst, offset, period) {\n\t\tvar year = inst.drawYear + (period === \"Y\" ? offset : 0),\n\t\t\tmonth = inst.drawMonth + (period === \"M\" ? offset : 0),\n\t\t\tday = Math.min(inst.selectedDay, this._getDaysInMonth(year, month)) + (period === \"D\" ? offset : 0),\n\t\t\tdate = this._restrictMinMax(inst, this._daylightSavingAdjust(new Date(year, month, day)));\n\n\t\tinst.selectedDay = date.getDate();\n\t\tinst.drawMonth = inst.selectedMonth = date.getMonth();\n\t\tinst.drawYear = inst.selectedYear = date.getFullYear();\n\t\tif (period === \"M\" || period === \"Y\") {\n\t\t\tthis._notifyChange(inst);\n\t\t}\n\t},\n\n\t/* Ensure a date is within any min/max bounds. */\n\t_restrictMinMax: function(inst, date) {\n\t\tvar minDate = this._getMinMaxDate(inst, \"min\"),\n\t\t\tmaxDate = this._getMinMaxDate(inst, \"max\"),\n\t\t\tnewDate = (minDate && date < minDate ? minDate : date);\n\t\treturn (maxDate && newDate > maxDate ? maxDate : newDate);\n\t},\n\n\t/* Notify change of month/year. */\n\t_notifyChange: function(inst) {\n\t\tvar onChange = this._get(inst, \"onChangeMonthYear\");\n\t\tif (onChange) {\n\t\t\tonChange.apply((inst.input ? inst.input[0] : null),\n\t\t\t\t[inst.selectedYear, inst.selectedMonth + 1, inst]);\n\t\t}\n\t},\n\n\t/* Determine the number of months to show. */\n\t_getNumberOfMonths: function(inst) {\n\t\tvar numMonths = this._get(inst, \"numberOfMonths\");\n\t\treturn (numMonths == null ? [1, 1] : (typeof numMonths === \"number\" ? [1, numMonths] : numMonths));\n\t},\n\n\t/* Determine the current maximum date - ensure no time components are set. */\n\t_getMinMaxDate: function(inst, minMax) {\n\t\treturn this._determineDate(inst, this._get(inst, minMax + \"Date\"), null);\n\t},\n\n\t/* Find the number of days in a given month. */\n\t_getDaysInMonth: function(year, month) {\n\t\treturn 32 - this._daylightSavingAdjust(new Date(year, month, 32)).getDate();\n\t},\n\n\t/* Find the day of the week of the first of a month. */\n\t_getFirstDayOfMonth: function(year, month) {\n\t\treturn new Date(year, month, 1).getDay();\n\t},\n\n\t/* Determines if we should allow a \"next/prev\" month display change. */\n\t_canAdjustMonth: function(inst, offset, curYear, curMonth) {\n\t\tvar numMonths = this._getNumberOfMonths(inst),\n\t\t\tdate = this._daylightSavingAdjust(new Date(curYear,\n\t\t\tcurMonth + (offset < 0 ? offset : numMonths[0] * numMonths[1]), 1));\n\n\t\tif (offset < 0) {\n\t\t\tdate.setDate(this._getDaysInMonth(date.getFullYear(), date.getMonth()));\n\t\t}\n\t\treturn this._isInRange(inst, date);\n\t},\n\n\t/* Is the given date in the accepted range? */\n\t_isInRange: function(inst, date) {\n\t\tvar yearSplit, currentYear,\n\t\t\tminDate = this._getMinMaxDate(inst, \"min\"),\n\t\t\tmaxDate = this._getMinMaxDate(inst, \"max\"),\n\t\t\tminYear = null,\n\t\t\tmaxYear = null,\n\t\t\tyears = this._get(inst, \"yearRange\");\n\t\t\tif (years){\n\t\t\t\tyearSplit = years.split(\":\");\n\t\t\t\tcurrentYear = new Date().getFullYear();\n\t\t\t\tminYear = parseInt(yearSplit[0], 10);\n\t\t\t\tmaxYear = parseInt(yearSplit[1], 10);\n\t\t\t\tif ( yearSplit[0].match(/[+\\-].*/) ) {\n\t\t\t\t\tminYear += currentYear;\n\t\t\t\t}\n\t\t\t\tif ( yearSplit[1].match(/[+\\-].*/) ) {\n\t\t\t\t\tmaxYear += currentYear;\n\t\t\t\t}\n\t\t\t}\n\n\t\treturn ((!minDate || date.getTime() >= minDate.getTime()) &&\n\t\t\t(!maxDate || date.getTime() <= maxDate.getTime()) &&\n\t\t\t(!minYear || date.getFullYear() >= minYear) &&\n\t\t\t(!maxYear || date.getFullYear() <= maxYear));\n\t},\n\n\t/* Provide the configuration settings for formatting/parsing. */\n\t_getFormatConfig: function(inst) {\n\t\tvar shortYearCutoff = this._get(inst, \"shortYearCutoff\");\n\t\tshortYearCutoff = (typeof shortYearCutoff !== \"string\" ? shortYearCutoff :\n\t\t\tnew Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10));\n\t\treturn {shortYearCutoff: shortYearCutoff,\n\t\t\tdayNamesShort: this._get(inst, \"dayNamesShort\"), dayNames: this._get(inst, \"dayNames\"),\n\t\t\tmonthNamesShort: this._get(inst, \"monthNamesShort\"), monthNames: this._get(inst, \"monthNames\")};\n\t},\n\n\t/* Format the given date for display. */\n\t_formatDate: function(inst, day, month, year) {\n\t\tif (!day) {\n\t\t\tinst.currentDay = inst.selectedDay;\n\t\t\tinst.currentMonth = inst.selectedMonth;\n\t\t\tinst.currentYear = inst.selectedYear;\n\t\t}\n\t\tvar date = (day ? (typeof day === \"object\" ? day :\n\t\t\tthis._daylightSavingAdjust(new Date(year, month, day))) :\n\t\t\tthis._daylightSavingAdjust(new Date(inst.currentYear, inst.currentMonth, inst.currentDay)));\n\t\treturn this.formatDate(this._get(inst, \"dateFormat\"), date, this._getFormatConfig(inst));\n\t}\n});\n\n/*\n * Bind hover events for datepicker elements.\n * Done via delegate so the binding only occurs once in the lifetime of the parent div.\n * Global datepicker_instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker.\n */\nfunction datepicker_bindHover(dpDiv) {\n\tvar selector = \"button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a\";\n\treturn dpDiv.delegate(selector, \"mouseout\", function() {\n\t\t\t$(this).removeClass(\"ui-state-hover\");\n\t\t\tif (this.className.indexOf(\"ui-datepicker-prev\") !== -1) {\n\t\t\t\t$(this).removeClass(\"ui-datepicker-prev-hover\");\n\t\t\t}\n\t\t\tif (this.className.indexOf(\"ui-datepicker-next\") !== -1) {\n\t\t\t\t$(this).removeClass(\"ui-datepicker-next-hover\");\n\t\t\t}\n\t\t})\n\t\t.delegate( selector, \"mouseover\", datepicker_handleMouseover );\n}\n\nfunction datepicker_handleMouseover() {\n\tif (!$.datepicker._isDisabledDatepicker( datepicker_instActive.inline? datepicker_instActive.dpDiv.parent()[0] : datepicker_instActive.input[0])) {\n\t\t$(this).parents(\".ui-datepicker-calendar\").find(\"a\").removeClass(\"ui-state-hover\");\n\t\t$(this).addClass(\"ui-state-hover\");\n\t\tif (this.className.indexOf(\"ui-datepicker-prev\") !== -1) {\n\t\t\t$(this).addClass(\"ui-datepicker-prev-hover\");\n\t\t}\n\t\tif (this.className.indexOf(\"ui-datepicker-next\") !== -1) {\n\t\t\t$(this).addClass(\"ui-datepicker-next-hover\");\n\t\t}\n\t}\n}\n\n/* jQuery extend now ignores nulls! */\nfunction datepicker_extendRemove(target, props) {\n\t$.extend(target, props);\n\tfor (var name in props) {\n\t\tif (props[name] == null) {\n\t\t\ttarget[name] = props[name];\n\t\t}\n\t}\n\treturn target;\n}\n\n/* Invoke the datepicker functionality.\n @param options string - a command, optionally followed by additional parameters or\n\t\t\t\t\tObject - settings for attaching new datepicker functionality\n @return jQuery object */\n$.fn.datepicker = function(options){\n\n\t/* Verify an empty collection wasn't passed - Fixes #6976 */\n\tif ( !this.length ) {\n\t\treturn this;\n\t}\n\n\t/* Initialise the date picker. */\n\tif (!$.datepicker.initialized) {\n\t\t$(document).mousedown($.datepicker._checkExternalClick);\n\t\t$.datepicker.initialized = true;\n\t}\n\n\t/* Append datepicker main container to body if not exist. */\n\tif ($(\"#\"+$.datepicker._mainDivId).length === 0) {\n\t\t$(\"body\").append($.datepicker.dpDiv);\n\t}\n\n\tvar otherArgs = Array.prototype.slice.call(arguments, 1);\n\tif (typeof options === \"string\" && (options === \"isDisabled\" || options === \"getDate\" || options === \"widget\")) {\n\t\treturn $.datepicker[\"_\" + options + \"Datepicker\"].\n\t\t\tapply($.datepicker, [this[0]].concat(otherArgs));\n\t}\n\tif (options === \"option\" && arguments.length === 2 && typeof arguments[1] === \"string\") {\n\t\treturn $.datepicker[\"_\" + options + \"Datepicker\"].\n\t\t\tapply($.datepicker, [this[0]].concat(otherArgs));\n\t}\n\treturn this.each(function() {\n\t\ttypeof options === \"string\" ?\n\t\t\t$.datepicker[\"_\" + options + \"Datepicker\"].\n\t\t\t\tapply($.datepicker, [this].concat(otherArgs)) :\n\t\t\t$.datepicker._attachDatepicker(this, options);\n\t});\n};\n\n$.datepicker = new Datepicker(); // singleton instance\n$.datepicker.initialized = false;\n$.datepicker.uuid = new Date().getTime();\n$.datepicker.version = \"1.11.2\";\n\nvar datepicker = $.datepicker;\n\n\n/*!\n * jQuery UI Draggable 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/draggable/\n */\n\n\n$.widget(\"ui.draggable\", $.ui.mouse, {\n\tversion: \"1.11.2\",\n\twidgetEventPrefix: \"drag\",\n\toptions: {\n\t\taddClasses: true,\n\t\tappendTo: \"parent\",\n\t\taxis: false,\n\t\tconnectToSortable: false,\n\t\tcontainment: false,\n\t\tcursor: \"auto\",\n\t\tcursorAt: false,\n\t\tgrid: false,\n\t\thandle: false,\n\t\thelper: \"original\",\n\t\tiframeFix: false,\n\t\topacity: false,\n\t\trefreshPositions: false,\n\t\trevert: false,\n\t\trevertDuration: 500,\n\t\tscope: \"default\",\n\t\tscroll: true,\n\t\tscrollSensitivity: 20,\n\t\tscrollSpeed: 20,\n\t\tsnap: false,\n\t\tsnapMode: \"both\",\n\t\tsnapTolerance: 20,\n\t\tstack: false,\n\t\tzIndex: false,\n\n\t\t// callbacks\n\t\tdrag: null,\n\t\tstart: null,\n\t\tstop: null\n\t},\n\t_create: function() {\n\n\t\tif ( this.options.helper === \"original\" ) {\n\t\t\tthis._setPositionRelative();\n\t\t}\n\t\tif (this.options.addClasses){\n\t\t\tthis.element.addClass(\"ui-draggable\");\n\t\t}\n\t\tif (this.options.disabled){\n\t\t\tthis.element.addClass(\"ui-draggable-disabled\");\n\t\t}\n\t\tthis._setHandleClassName();\n\n\t\tthis._mouseInit();\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tthis._super( key, value );\n\t\tif ( key === \"handle\" ) {\n\t\t\tthis._removeHandleClassName();\n\t\t\tthis._setHandleClassName();\n\t\t}\n\t},\n\n\t_destroy: function() {\n\t\tif ( ( this.helper || this.element ).is( \".ui-draggable-dragging\" ) ) {\n\t\t\tthis.destroyOnClear = true;\n\t\t\treturn;\n\t\t}\n\t\tthis.element.removeClass( \"ui-draggable ui-draggable-dragging ui-draggable-disabled\" );\n\t\tthis._removeHandleClassName();\n\t\tthis._mouseDestroy();\n\t},\n\n\t_mouseCapture: function(event) {\n\t\tvar o = this.options;\n\n\t\tthis._blurActiveElement( event );\n\n\t\t// among others, prevent a drag on a resizable-handle\n\t\tif (this.helper || o.disabled || $(event.target).closest(\".ui-resizable-handle\").length > 0) {\n\t\t\treturn false;\n\t\t}\n\n\t\t//Quit if we're not on a valid handle\n\t\tthis.handle = this._getHandle(event);\n\t\tif (!this.handle) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthis._blockFrames( o.iframeFix === true ? \"iframe\" : o.iframeFix );\n\n\t\treturn true;\n\n\t},\n\n\t_blockFrames: function( selector ) {\n\t\tthis.iframeBlocks = this.document.find( selector ).map(function() {\n\t\t\tvar iframe = $( this );\n\n\t\t\treturn $( \"<div>\" )\n\t\t\t\t.css( \"position\", \"absolute\" )\n\t\t\t\t.appendTo( iframe.parent() )\n\t\t\t\t.outerWidth( iframe.outerWidth() )\n\t\t\t\t.outerHeight( iframe.outerHeight() )\n\t\t\t\t.offset( iframe.offset() )[ 0 ];\n\t\t});\n\t},\n\n\t_unblockFrames: function() {\n\t\tif ( this.iframeBlocks ) {\n\t\t\tthis.iframeBlocks.remove();\n\t\t\tdelete this.iframeBlocks;\n\t\t}\n\t},\n\n\t_blurActiveElement: function( event ) {\n\t\tvar document = this.document[ 0 ];\n\n\t\t// Only need to blur if the event occurred on the draggable itself, see #10527\n\t\tif ( !this.handleElement.is( event.target ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// support: IE9\n\t\t// IE9 throws an \"Unspecified error\" accessing document.activeElement from an <iframe>\n\t\ttry {\n\n\t\t\t// Support: IE9, IE10\n\t\t\t// If the <body> is blurred, IE will switch windows, see #9520\n\t\t\tif ( document.activeElement && document.activeElement.nodeName.toLowerCase() !== \"body\" ) {\n\n\t\t\t\t// Blur any element that currently has focus, see #4261\n\t\t\t\t$( document.activeElement ).blur();\n\t\t\t}\n\t\t} catch ( error ) {}\n\t},\n\n\t_mouseStart: function(event) {\n\n\t\tvar o = this.options;\n\n\t\t//Create and append the visible helper\n\t\tthis.helper = this._createHelper(event);\n\n\t\tthis.helper.addClass(\"ui-draggable-dragging\");\n\n\t\t//Cache the helper size\n\t\tthis._cacheHelperProportions();\n\n\t\t//If ddmanager is used for droppables, set the global draggable\n\t\tif ($.ui.ddmanager) {\n\t\t\t$.ui.ddmanager.current = this;\n\t\t}\n\n\t\t/*\n\t\t * - Position generation -\n\t\t * This block generates everything position related - it's the core of draggables.\n\t\t */\n\n\t\t//Cache the margins of the original element\n\t\tthis._cacheMargins();\n\n\t\t//Store the helper's css position\n\t\tthis.cssPosition = this.helper.css( \"position\" );\n\t\tthis.scrollParent = this.helper.scrollParent( true );\n\t\tthis.offsetParent = this.helper.offsetParent();\n\t\tthis.hasFixedAncestor = this.helper.parents().filter(function() {\n\t\t\t\treturn $( this ).css( \"position\" ) === \"fixed\";\n\t\t\t}).length > 0;\n\n\t\t//The element's absolute position on the page minus margins\n\t\tthis.positionAbs = this.element.offset();\n\t\tthis._refreshOffsets( event );\n\n\t\t//Generate the original position\n\t\tthis.originalPosition = this.position = this._generatePosition( event, false );\n\t\tthis.originalPageX = event.pageX;\n\t\tthis.originalPageY = event.pageY;\n\n\t\t//Adjust the mouse offset relative to the helper if \"cursorAt\" is supplied\n\t\t(o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt));\n\n\t\t//Set a containment if given in the options\n\t\tthis._setContainment();\n\n\t\t//Trigger event + callbacks\n\t\tif (this._trigger(\"start\", event) === false) {\n\t\t\tthis._clear();\n\t\t\treturn false;\n\t\t}\n\n\t\t//Recache the helper size\n\t\tthis._cacheHelperProportions();\n\n\t\t//Prepare the droppable offsets\n\t\tif ($.ui.ddmanager && !o.dropBehaviour) {\n\t\t\t$.ui.ddmanager.prepareOffsets(this, event);\n\t\t}\n\n\t\t// Reset helper's right/bottom css if they're set and set explicit width/height instead\n\t\t// as this prevents resizing of elements with right/bottom set (see #7772)\n\t\tthis._normalizeRightBottom();\n\n\t\tthis._mouseDrag(event, true); //Execute the drag once - this causes the helper not to be visible before getting its correct position\n\n\t\t//If the ddmanager is used for droppables, inform the manager that dragging has started (see #5003)\n\t\tif ( $.ui.ddmanager ) {\n\t\t\t$.ui.ddmanager.dragStart(this, event);\n\t\t}\n\n\t\treturn true;\n\t},\n\n\t_refreshOffsets: function( event ) {\n\t\tthis.offset = {\n\t\t\ttop: this.positionAbs.top - this.margins.top,\n\t\t\tleft: this.positionAbs.left - this.margins.left,\n\t\t\tscroll: false,\n\t\t\tparent: this._getParentOffset(),\n\t\t\trelative: this._getRelativeOffset()\n\t\t};\n\n\t\tthis.offset.click = {\n\t\t\tleft: event.pageX - this.offset.left,\n\t\t\ttop: event.pageY - this.offset.top\n\t\t};\n\t},\n\n\t_mouseDrag: function(event, noPropagation) {\n\t\t// reset any necessary cached properties (see #5009)\n\t\tif ( this.hasFixedAncestor ) {\n\t\t\tthis.offset.parent = this._getParentOffset();\n\t\t}\n\n\t\t//Compute the helpers position\n\t\tthis.position = this._generatePosition( event, true );\n\t\tthis.positionAbs = this._convertPositionTo(\"absolute\");\n\n\t\t//Call plugins and callbacks and use the resulting position if something is returned\n\t\tif (!noPropagation) {\n\t\t\tvar ui = this._uiHash();\n\t\t\tif (this._trigger(\"drag\", event, ui) === false) {\n\t\t\t\tthis._mouseUp({});\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis.position = ui.position;\n\t\t}\n\n\t\tthis.helper[ 0 ].style.left = this.position.left + \"px\";\n\t\tthis.helper[ 0 ].style.top = this.position.top + \"px\";\n\n\t\tif ($.ui.ddmanager) {\n\t\t\t$.ui.ddmanager.drag(this, event);\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_mouseStop: function(event) {\n\n\t\t//If we are using droppables, inform the manager about the drop\n\t\tvar that = this,\n\t\t\tdropped = false;\n\t\tif ($.ui.ddmanager && !this.options.dropBehaviour) {\n\t\t\tdropped = $.ui.ddmanager.drop(this, event);\n\t\t}\n\n\t\t//if a drop comes from outside (a sortable)\n\t\tif (this.dropped) {\n\t\t\tdropped = this.dropped;\n\t\t\tthis.dropped = false;\n\t\t}\n\n\t\tif ((this.options.revert === \"invalid\" && !dropped) || (this.options.revert === \"valid\" && dropped) || this.options.revert === true || ($.isFunction(this.options.revert) && this.options.revert.call(this.element, dropped))) {\n\t\t\t$(this.helper).animate(this.originalPosition, parseInt(this.options.revertDuration, 10), function() {\n\t\t\t\tif (that._trigger(\"stop\", event) !== false) {\n\t\t\t\t\tthat._clear();\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tif (this._trigger(\"stop\", event) !== false) {\n\t\t\t\tthis._clear();\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_mouseUp: function( event ) {\n\t\tthis._unblockFrames();\n\n\t\t//If the ddmanager is used for droppables, inform the manager that dragging has stopped (see #5003)\n\t\tif ( $.ui.ddmanager ) {\n\t\t\t$.ui.ddmanager.dragStop(this, event);\n\t\t}\n\n\t\t// Only need to focus if the event occurred on the draggable itself, see #10527\n\t\tif ( this.handleElement.is( event.target ) ) {\n\t\t\t// The interaction is over; whether or not the click resulted in a drag, focus the element\n\t\t\tthis.element.focus();\n\t\t}\n\n\t\treturn $.ui.mouse.prototype._mouseUp.call(this, event);\n\t},\n\n\tcancel: function() {\n\n\t\tif (this.helper.is(\".ui-draggable-dragging\")) {\n\t\t\tthis._mouseUp({});\n\t\t} else {\n\t\t\tthis._clear();\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t_getHandle: function(event) {\n\t\treturn this.options.handle ?\n\t\t\t!!$( event.target ).closest( this.element.find( this.options.handle ) ).length :\n\t\t\ttrue;\n\t},\n\n\t_setHandleClassName: function() {\n\t\tthis.handleElement = this.options.handle ?\n\t\t\tthis.element.find( this.options.handle ) : this.element;\n\t\tthis.handleElement.addClass( \"ui-draggable-handle\" );\n\t},\n\n\t_removeHandleClassName: function() {\n\t\tthis.handleElement.removeClass( \"ui-draggable-handle\" );\n\t},\n\n\t_createHelper: function(event) {\n\n\t\tvar o = this.options,\n\t\t\thelperIsFunction = $.isFunction( o.helper ),\n\t\t\thelper = helperIsFunction ?\n\t\t\t\t$( o.helper.apply( this.element[ 0 ], [ event ] ) ) :\n\t\t\t\t( o.helper === \"clone\" ?\n\t\t\t\t\tthis.element.clone().removeAttr( \"id\" ) :\n\t\t\t\t\tthis.element );\n\n\t\tif (!helper.parents(\"body\").length) {\n\t\t\thelper.appendTo((o.appendTo === \"parent\" ? this.element[0].parentNode : o.appendTo));\n\t\t}\n\n\t\t// http://bugs.jqueryui.com/ticket/9446\n\t\t// a helper function can return the original element\n\t\t// which wouldn't have been set to relative in _create\n\t\tif ( helperIsFunction && helper[ 0 ] === this.element[ 0 ] ) {\n\t\t\tthis._setPositionRelative();\n\t\t}\n\n\t\tif (helper[0] !== this.element[0] && !(/(fixed|absolute)/).test(helper.css(\"position\"))) {\n\t\t\thelper.css(\"position\", \"absolute\");\n\t\t}\n\n\t\treturn helper;\n\n\t},\n\n\t_setPositionRelative: function() {\n\t\tif ( !( /^(?:r|a|f)/ ).test( this.element.css( \"position\" ) ) ) {\n\t\t\tthis.element[ 0 ].style.position = \"relative\";\n\t\t}\n\t},\n\n\t_adjustOffsetFromHelper: function(obj) {\n\t\tif (typeof obj === \"string\") {\n\t\t\tobj = obj.split(\" \");\n\t\t}\n\t\tif ($.isArray(obj)) {\n\t\t\tobj = { left: +obj[0], top: +obj[1] || 0 };\n\t\t}\n\t\tif (\"left\" in obj) {\n\t\t\tthis.offset.click.left = obj.left + this.margins.left;\n\t\t}\n\t\tif (\"right\" in obj) {\n\t\t\tthis.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;\n\t\t}\n\t\tif (\"top\" in obj) {\n\t\t\tthis.offset.click.top = obj.top + this.margins.top;\n\t\t}\n\t\tif (\"bottom\" in obj) {\n\t\t\tthis.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;\n\t\t}\n\t},\n\n\t_isRootNode: function( element ) {\n\t\treturn ( /(html|body)/i ).test( element.tagName ) || element === this.document[ 0 ];\n\t},\n\n\t_getParentOffset: function() {\n\n\t\t//Get the offsetParent and cache its position\n\t\tvar po = this.offsetParent.offset(),\n\t\t\tdocument = this.document[ 0 ];\n\n\t\t// This is a special case where we need to modify a offset calculated on start, since the following happened:\n\t\t// 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent\n\t\t// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that\n\t\t// the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag\n\t\tif (this.cssPosition === \"absolute\" && this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) {\n\t\t\tpo.left += this.scrollParent.scrollLeft();\n\t\t\tpo.top += this.scrollParent.scrollTop();\n\t\t}\n\n\t\tif ( this._isRootNode( this.offsetParent[ 0 ] ) ) {\n\t\t\tpo = { top: 0, left: 0 };\n\t\t}\n\n\t\treturn {\n\t\t\ttop: po.top + (parseInt(this.offsetParent.css(\"borderTopWidth\"), 10) || 0),\n\t\t\tleft: po.left + (parseInt(this.offsetParent.css(\"borderLeftWidth\"), 10) || 0)\n\t\t};\n\n\t},\n\n\t_getRelativeOffset: function() {\n\t\tif ( this.cssPosition !== \"relative\" ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\tvar p = this.element.position(),\n\t\t\tscrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] );\n\n\t\treturn {\n\t\t\ttop: p.top - ( parseInt(this.helper.css( \"top\" ), 10) || 0 ) + ( !scrollIsRootNode ? this.scrollParent.scrollTop() : 0 ),\n\t\t\tleft: p.left - ( parseInt(this.helper.css( \"left\" ), 10) || 0 ) + ( !scrollIsRootNode ? this.scrollParent.scrollLeft() : 0 )\n\t\t};\n\n\t},\n\n\t_cacheMargins: function() {\n\t\tthis.margins = {\n\t\t\tleft: (parseInt(this.element.css(\"marginLeft\"), 10) || 0),\n\t\t\ttop: (parseInt(this.element.css(\"marginTop\"), 10) || 0),\n\t\t\tright: (parseInt(this.element.css(\"marginRight\"), 10) || 0),\n\t\t\tbottom: (parseInt(this.element.css(\"marginBottom\"), 10) || 0)\n\t\t};\n\t},\n\n\t_cacheHelperProportions: function() {\n\t\tthis.helperProportions = {\n\t\t\twidth: this.helper.outerWidth(),\n\t\t\theight: this.helper.outerHeight()\n\t\t};\n\t},\n\n\t_setContainment: function() {\n\n\t\tvar isUserScrollable, c, ce,\n\t\t\to = this.options,\n\t\t\tdocument = this.document[ 0 ];\n\n\t\tthis.relativeContainer = null;\n\n\t\tif ( !o.containment ) {\n\t\t\tthis.containment = null;\n\t\t\treturn;\n\t\t}\n\n\t\tif ( o.containment === \"window\" ) {\n\t\t\tthis.containment = [\n\t\t\t\t$( window ).scrollLeft() - this.offset.relative.left - this.offset.parent.left,\n\t\t\t\t$( window ).scrollTop() - this.offset.relative.top - this.offset.parent.top,\n\t\t\t\t$( window ).scrollLeft() + $( window ).width() - this.helperProportions.width - this.margins.left,\n\t\t\t\t$( window ).scrollTop() + ( $( window ).height() || document.body.parentNode.scrollHeight ) - this.helperProportions.height - this.margins.top\n\t\t\t];\n\t\t\treturn;\n\t\t}\n\n\t\tif ( o.containment === \"document\") {\n\t\t\tthis.containment = [\n\t\t\t\t0,\n\t\t\t\t0,\n\t\t\t\t$( document ).width() - this.helperProportions.width - this.margins.left,\n\t\t\t\t( $( document ).height() || document.body.parentNode.scrollHeight ) - this.helperProportions.height - this.margins.top\n\t\t\t];\n\t\t\treturn;\n\t\t}\n\n\t\tif ( o.containment.constructor === Array ) {\n\t\t\tthis.containment = o.containment;\n\t\t\treturn;\n\t\t}\n\n\t\tif ( o.containment === \"parent\" ) {\n\t\t\to.containment = this.helper[ 0 ].parentNode;\n\t\t}\n\n\t\tc = $( o.containment );\n\t\tce = c[ 0 ];\n\n\t\tif ( !ce ) {\n\t\t\treturn;\n\t\t}\n\n\t\tisUserScrollable = /(scroll|auto)/.test( c.css( \"overflow\" ) );\n\n\t\tthis.containment = [\n\t\t\t( parseInt( c.css( \"borderLeftWidth\" ), 10 ) || 0 ) + ( parseInt( c.css( \"paddingLeft\" ), 10 ) || 0 ),\n\t\t\t( parseInt( c.css( \"borderTopWidth\" ), 10 ) || 0 ) + ( parseInt( c.css( \"paddingTop\" ), 10 ) || 0 ),\n\t\t\t( isUserScrollable ? Math.max( ce.scrollWidth, ce.offsetWidth ) : ce.offsetWidth ) -\n\t\t\t\t( parseInt( c.css( \"borderRightWidth\" ), 10 ) || 0 ) -\n\t\t\t\t( parseInt( c.css( \"paddingRight\" ), 10 ) || 0 ) -\n\t\t\t\tthis.helperProportions.width -\n\t\t\t\tthis.margins.left -\n\t\t\t\tthis.margins.right,\n\t\t\t( isUserScrollable ? Math.max( ce.scrollHeight, ce.offsetHeight ) : ce.offsetHeight ) -\n\t\t\t\t( parseInt( c.css( \"borderBottomWidth\" ), 10 ) || 0 ) -\n\t\t\t\t( parseInt( c.css( \"paddingBottom\" ), 10 ) || 0 ) -\n\t\t\t\tthis.helperProportions.height -\n\t\t\t\tthis.margins.top -\n\t\t\t\tthis.margins.bottom\n\t\t];\n\t\tthis.relativeContainer = c;\n\t},\n\n\t_convertPositionTo: function(d, pos) {\n\n\t\tif (!pos) {\n\t\t\tpos = this.position;\n\t\t}\n\n\t\tvar mod = d === \"absolute\" ? 1 : -1,\n\t\t\tscrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] );\n\n\t\treturn {\n\t\t\ttop: (\n\t\t\t\tpos.top\t+\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\tthis.offset.relative.top * mod +\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.parent.top * mod -\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t( ( this.cssPosition === \"fixed\" ? -this.offset.scroll.top : ( scrollIsRootNode ? 0 : this.offset.scroll.top ) ) * mod)\n\t\t\t),\n\t\t\tleft: (\n\t\t\t\tpos.left +\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\tthis.offset.relative.left * mod +\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.parent.left * mod\t-\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t( ( this.cssPosition === \"fixed\" ? -this.offset.scroll.left : ( scrollIsRootNode ? 0 : this.offset.scroll.left ) ) * mod)\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_generatePosition: function( event, constrainPosition ) {\n\n\t\tvar containment, co, top, left,\n\t\t\to = this.options,\n\t\t\tscrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] ),\n\t\t\tpageX = event.pageX,\n\t\t\tpageY = event.pageY;\n\n\t\t// Cache the scroll\n\t\tif ( !scrollIsRootNode || !this.offset.scroll ) {\n\t\t\tthis.offset.scroll = {\n\t\t\t\ttop: this.scrollParent.scrollTop(),\n\t\t\t\tleft: this.scrollParent.scrollLeft()\n\t\t\t};\n\t\t}\n\n\t\t/*\n\t\t * - Position constraining -\n\t\t * Constrain the position to a mix of grid, containment.\n\t\t */\n\n\t\t// If we are not dragging yet, we won't check for options\n\t\tif ( constrainPosition ) {\n\t\t\tif ( this.containment ) {\n\t\t\t\tif ( this.relativeContainer ){\n\t\t\t\t\tco = this.relativeContainer.offset();\n\t\t\t\t\tcontainment = [\n\t\t\t\t\t\tthis.containment[ 0 ] + co.left,\n\t\t\t\t\t\tthis.containment[ 1 ] + co.top,\n\t\t\t\t\t\tthis.containment[ 2 ] + co.left,\n\t\t\t\t\t\tthis.containment[ 3 ] + co.top\n\t\t\t\t\t];\n\t\t\t\t} else {\n\t\t\t\t\tcontainment = this.containment;\n\t\t\t\t}\n\n\t\t\t\tif (event.pageX - this.offset.click.left < containment[0]) {\n\t\t\t\t\tpageX = containment[0] + this.offset.click.left;\n\t\t\t\t}\n\t\t\t\tif (event.pageY - this.offset.click.top < containment[1]) {\n\t\t\t\t\tpageY = containment[1] + this.offset.click.top;\n\t\t\t\t}\n\t\t\t\tif (event.pageX - this.offset.click.left > containment[2]) {\n\t\t\t\t\tpageX = containment[2] + this.offset.click.left;\n\t\t\t\t}\n\t\t\t\tif (event.pageY - this.offset.click.top > containment[3]) {\n\t\t\t\t\tpageY = containment[3] + this.offset.click.top;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (o.grid) {\n\t\t\t\t//Check for grid elements set to 0 to prevent divide by 0 error causing invalid argument errors in IE (see ticket #6950)\n\t\t\t\ttop = o.grid[1] ? this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1] : this.originalPageY;\n\t\t\t\tpageY = containment ? ((top - this.offset.click.top >= containment[1] || top - this.offset.click.top > containment[3]) ? top : ((top - this.offset.click.top >= containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top;\n\n\t\t\t\tleft = o.grid[0] ? this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0] : this.originalPageX;\n\t\t\t\tpageX = containment ? ((left - this.offset.click.left >= containment[0] || left - this.offset.click.left > containment[2]) ? left : ((left - this.offset.click.left >= containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;\n\t\t\t}\n\n\t\t\tif ( o.axis === \"y\" ) {\n\t\t\t\tpageX = this.originalPageX;\n\t\t\t}\n\n\t\t\tif ( o.axis === \"x\" ) {\n\t\t\t\tpageY = this.originalPageY;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\ttop: (\n\t\t\t\tpageY -\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\tthis.offset.click.top\t-\t\t\t\t\t\t\t\t\t\t\t\t// Click offset (relative to the element)\n\t\t\t\tthis.offset.relative.top -\t\t\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.parent.top +\t\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t( this.cssPosition === \"fixed\" ? -this.offset.scroll.top : ( scrollIsRootNode ? 0 : this.offset.scroll.top ) )\n\t\t\t),\n\t\t\tleft: (\n\t\t\t\tpageX -\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\tthis.offset.click.left -\t\t\t\t\t\t\t\t\t\t\t\t// Click offset (relative to the element)\n\t\t\t\tthis.offset.relative.left -\t\t\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.parent.left +\t\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t( this.cssPosition === \"fixed\" ? -this.offset.scroll.left : ( scrollIsRootNode ? 0 : this.offset.scroll.left ) )\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_clear: function() {\n\t\tthis.helper.removeClass(\"ui-draggable-dragging\");\n\t\tif (this.helper[0] !== this.element[0] && !this.cancelHelperRemoval) {\n\t\t\tthis.helper.remove();\n\t\t}\n\t\tthis.helper = null;\n\t\tthis.cancelHelperRemoval = false;\n\t\tif ( this.destroyOnClear ) {\n\t\t\tthis.destroy();\n\t\t}\n\t},\n\n\t_normalizeRightBottom: function() {\n\t\tif ( this.options.axis !== \"y\" && this.helper.css( \"right\" ) !== \"auto\" ) {\n\t\t\tthis.helper.width( this.helper.width() );\n\t\t\tthis.helper.css( \"right\", \"auto\" );\n\t\t}\n\t\tif ( this.options.axis !== \"x\" && this.helper.css( \"bottom\" ) !== \"auto\" ) {\n\t\t\tthis.helper.height( this.helper.height() );\n\t\t\tthis.helper.css( \"bottom\", \"auto\" );\n\t\t}\n\t},\n\n\t// From now on bulk stuff - mainly helpers\n\n\t_trigger: function( type, event, ui ) {\n\t\tui = ui || this._uiHash();\n\t\t$.ui.plugin.call( this, type, [ event, ui, this ], true );\n\n\t\t// Absolute position and offset (see #6884 ) have to be recalculated after plugins\n\t\tif ( /^(drag|start|stop)/.test( type ) ) {\n\t\t\tthis.positionAbs = this._convertPositionTo( \"absolute\" );\n\t\t\tui.offset = this.positionAbs;\n\t\t}\n\t\treturn $.Widget.prototype._trigger.call( this, type, event, ui );\n\t},\n\n\tplugins: {},\n\n\t_uiHash: function() {\n\t\treturn {\n\t\t\thelper: this.helper,\n\t\t\tposition: this.position,\n\t\t\toriginalPosition: this.originalPosition,\n\t\t\toffset: this.positionAbs\n\t\t};\n\t}\n\n});\n\n$.ui.plugin.add( \"draggable\", \"connectToSortable\", {\n\tstart: function( event, ui, draggable ) {\n\t\tvar uiSortable = $.extend( {}, ui, {\n\t\t\titem: draggable.element\n\t\t});\n\n\t\tdraggable.sortables = [];\n\t\t$( draggable.options.connectToSortable ).each(function() {\n\t\t\tvar sortable = $( this ).sortable( \"instance\" );\n\n\t\t\tif ( sortable && !sortable.options.disabled ) {\n\t\t\t\tdraggable.sortables.push( sortable );\n\n\t\t\t\t// refreshPositions is called at drag start to refresh the containerCache\n\t\t\t\t// which is used in drag. This ensures it's initialized and synchronized\n\t\t\t\t// with any changes that might have happened on the page since initialization.\n\t\t\t\tsortable.refreshPositions();\n\t\t\t\tsortable._trigger(\"activate\", event, uiSortable);\n\t\t\t}\n\t\t});\n\t},\n\tstop: function( event, ui, draggable ) {\n\t\tvar uiSortable = $.extend( {}, ui, {\n\t\t\titem: draggable.element\n\t\t});\n\n\t\tdraggable.cancelHelperRemoval = false;\n\n\t\t$.each( draggable.sortables, function() {\n\t\t\tvar sortable = this;\n\n\t\t\tif ( sortable.isOver ) {\n\t\t\t\tsortable.isOver = 0;\n\n\t\t\t\t// Allow this sortable to handle removing the helper\n\t\t\t\tdraggable.cancelHelperRemoval = true;\n\t\t\t\tsortable.cancelHelperRemoval = false;\n\n\t\t\t\t// Use _storedCSS To restore properties in the sortable,\n\t\t\t\t// as this also handles revert (#9675) since the draggable\n\t\t\t\t// may have modified them in unexpected ways (#8809)\n\t\t\t\tsortable._storedCSS = {\n\t\t\t\t\tposition: sortable.placeholder.css( \"position\" ),\n\t\t\t\t\ttop: sortable.placeholder.css( \"top\" ),\n\t\t\t\t\tleft: sortable.placeholder.css( \"left\" )\n\t\t\t\t};\n\n\t\t\t\tsortable._mouseStop(event);\n\n\t\t\t\t// Once drag has ended, the sortable should return to using\n\t\t\t\t// its original helper, not the shared helper from draggable\n\t\t\t\tsortable.options.helper = sortable.options._helper;\n\t\t\t} else {\n\t\t\t\t// Prevent this Sortable from removing the helper.\n\t\t\t\t// However, don't set the draggable to remove the helper\n\t\t\t\t// either as another connected Sortable may yet handle the removal.\n\t\t\t\tsortable.cancelHelperRemoval = true;\n\n\t\t\t\tsortable._trigger( \"deactivate\", event, uiSortable );\n\t\t\t}\n\t\t});\n\t},\n\tdrag: function( event, ui, draggable ) {\n\t\t$.each( draggable.sortables, function() {\n\t\t\tvar innermostIntersecting = false,\n\t\t\t\tsortable = this;\n\n\t\t\t// Copy over variables that sortable's _intersectsWith uses\n\t\t\tsortable.positionAbs = draggable.positionAbs;\n\t\t\tsortable.helperProportions = draggable.helperProportions;\n\t\t\tsortable.offset.click = draggable.offset.click;\n\n\t\t\tif ( sortable._intersectsWith( sortable.containerCache ) ) {\n\t\t\t\tinnermostIntersecting = true;\n\n\t\t\t\t$.each( draggable.sortables, function() {\n\t\t\t\t\t// Copy over variables that sortable's _intersectsWith uses\n\t\t\t\t\tthis.positionAbs = draggable.positionAbs;\n\t\t\t\t\tthis.helperProportions = draggable.helperProportions;\n\t\t\t\t\tthis.offset.click = draggable.offset.click;\n\n\t\t\t\t\tif ( this !== sortable &&\n\t\t\t\t\t\t\tthis._intersectsWith( this.containerCache ) &&\n\t\t\t\t\t\t\t$.contains( sortable.element[ 0 ], this.element[ 0 ] ) ) {\n\t\t\t\t\t\tinnermostIntersecting = false;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn innermostIntersecting;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( innermostIntersecting ) {\n\t\t\t\t// If it intersects, we use a little isOver variable and set it once,\n\t\t\t\t// so that the move-in stuff gets fired only once.\n\t\t\t\tif ( !sortable.isOver ) {\n\t\t\t\t\tsortable.isOver = 1;\n\n\t\t\t\t\tsortable.currentItem = ui.helper\n\t\t\t\t\t\t.appendTo( sortable.element )\n\t\t\t\t\t\t.data( \"ui-sortable-item\", true );\n\n\t\t\t\t\t// Store helper option to later restore it\n\t\t\t\t\tsortable.options._helper = sortable.options.helper;\n\n\t\t\t\t\tsortable.options.helper = function() {\n\t\t\t\t\t\treturn ui.helper[ 0 ];\n\t\t\t\t\t};\n\n\t\t\t\t\t// Fire the start events of the sortable with our passed browser event,\n\t\t\t\t\t// and our own helper (so it doesn't create a new one)\n\t\t\t\t\tevent.target = sortable.currentItem[ 0 ];\n\t\t\t\t\tsortable._mouseCapture( event, true );\n\t\t\t\t\tsortable._mouseStart( event, true, true );\n\n\t\t\t\t\t// Because the browser event is way off the new appended portlet,\n\t\t\t\t\t// modify necessary variables to reflect the changes\n\t\t\t\t\tsortable.offset.click.top = draggable.offset.click.top;\n\t\t\t\t\tsortable.offset.click.left = draggable.offset.click.left;\n\t\t\t\t\tsortable.offset.parent.left -= draggable.offset.parent.left -\n\t\t\t\t\t\tsortable.offset.parent.left;\n\t\t\t\t\tsortable.offset.parent.top -= draggable.offset.parent.top -\n\t\t\t\t\t\tsortable.offset.parent.top;\n\n\t\t\t\t\tdraggable._trigger( \"toSortable\", event );\n\n\t\t\t\t\t// Inform draggable that the helper is in a valid drop zone,\n\t\t\t\t\t// used solely in the revert option to handle \"valid/invalid\".\n\t\t\t\t\tdraggable.dropped = sortable.element;\n\n\t\t\t\t\t// Need to refreshPositions of all sortables in the case that\n\t\t\t\t\t// adding to one sortable changes the location of the other sortables (#9675)\n\t\t\t\t\t$.each( draggable.sortables, function() {\n\t\t\t\t\t\tthis.refreshPositions();\n\t\t\t\t\t});\n\n\t\t\t\t\t// hack so receive/update callbacks work (mostly)\n\t\t\t\t\tdraggable.currentItem = draggable.element;\n\t\t\t\t\tsortable.fromOutside = draggable;\n\t\t\t\t}\n\n\t\t\t\tif ( sortable.currentItem ) {\n\t\t\t\t\tsortable._mouseDrag( event );\n\t\t\t\t\t// Copy the sortable's position because the draggable's can potentially reflect\n\t\t\t\t\t// a relative position, while sortable is always absolute, which the dragged\n\t\t\t\t\t// element has now become. (#8809)\n\t\t\t\t\tui.position = sortable.position;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// If it doesn't intersect with the sortable, and it intersected before,\n\t\t\t\t// we fake the drag stop of the sortable, but make sure it doesn't remove\n\t\t\t\t// the helper by using cancelHelperRemoval.\n\t\t\t\tif ( sortable.isOver ) {\n\n\t\t\t\t\tsortable.isOver = 0;\n\t\t\t\t\tsortable.cancelHelperRemoval = true;\n\n\t\t\t\t\t// Calling sortable's mouseStop would trigger a revert,\n\t\t\t\t\t// so revert must be temporarily false until after mouseStop is called.\n\t\t\t\t\tsortable.options._revert = sortable.options.revert;\n\t\t\t\t\tsortable.options.revert = false;\n\n\t\t\t\t\tsortable._trigger( \"out\", event, sortable._uiHash( sortable ) );\n\t\t\t\t\tsortable._mouseStop( event, true );\n\n\t\t\t\t\t// restore sortable behaviors that were modfied\n\t\t\t\t\t// when the draggable entered the sortable area (#9481)\n\t\t\t\t\tsortable.options.revert = sortable.options._revert;\n\t\t\t\t\tsortable.options.helper = sortable.options._helper;\n\n\t\t\t\t\tif ( sortable.placeholder ) {\n\t\t\t\t\t\tsortable.placeholder.remove();\n\t\t\t\t\t}\n\n\t\t\t\t\t// Recalculate the draggable's offset considering the sortable\n\t\t\t\t\t// may have modified them in unexpected ways (#8809)\n\t\t\t\t\tdraggable._refreshOffsets( event );\n\t\t\t\t\tui.position = draggable._generatePosition( event, true );\n\n\t\t\t\t\tdraggable._trigger( \"fromSortable\", event );\n\n\t\t\t\t\t// Inform draggable that the helper is no longer in a valid drop zone\n\t\t\t\t\tdraggable.dropped = false;\n\n\t\t\t\t\t// Need to refreshPositions of all sortables just in case removing\n\t\t\t\t\t// from one sortable changes the location of other sortables (#9675)\n\t\t\t\t\t$.each( draggable.sortables, function() {\n\t\t\t\t\t\tthis.refreshPositions();\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"cursor\", {\n\tstart: function( event, ui, instance ) {\n\t\tvar t = $( \"body\" ),\n\t\t\to = instance.options;\n\n\t\tif (t.css(\"cursor\")) {\n\t\t\to._cursor = t.css(\"cursor\");\n\t\t}\n\t\tt.css(\"cursor\", o.cursor);\n\t},\n\tstop: function( event, ui, instance ) {\n\t\tvar o = instance.options;\n\t\tif (o._cursor) {\n\t\t\t$(\"body\").css(\"cursor\", o._cursor);\n\t\t}\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"opacity\", {\n\tstart: function( event, ui, instance ) {\n\t\tvar t = $( ui.helper ),\n\t\t\to = instance.options;\n\t\tif (t.css(\"opacity\")) {\n\t\t\to._opacity = t.css(\"opacity\");\n\t\t}\n\t\tt.css(\"opacity\", o.opacity);\n\t},\n\tstop: function( event, ui, instance ) {\n\t\tvar o = instance.options;\n\t\tif (o._opacity) {\n\t\t\t$(ui.helper).css(\"opacity\", o._opacity);\n\t\t}\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"scroll\", {\n\tstart: function( event, ui, i ) {\n\t\tif ( !i.scrollParentNotHidden ) {\n\t\t\ti.scrollParentNotHidden = i.helper.scrollParent( false );\n\t\t}\n\n\t\tif ( i.scrollParentNotHidden[ 0 ] !== i.document[ 0 ] && i.scrollParentNotHidden[ 0 ].tagName !== \"HTML\" ) {\n\t\t\ti.overflowOffset = i.scrollParentNotHidden.offset();\n\t\t}\n\t},\n\tdrag: function( event, ui, i ) {\n\n\t\tvar o = i.options,\n\t\t\tscrolled = false,\n\t\t\tscrollParent = i.scrollParentNotHidden[ 0 ],\n\t\t\tdocument = i.document[ 0 ];\n\n\t\tif ( scrollParent !== document && scrollParent.tagName !== \"HTML\" ) {\n\t\t\tif ( !o.axis || o.axis !== \"x\" ) {\n\t\t\t\tif ( ( i.overflowOffset.top + scrollParent.offsetHeight ) - event.pageY < o.scrollSensitivity ) {\n\t\t\t\t\tscrollParent.scrollTop = scrolled = scrollParent.scrollTop + o.scrollSpeed;\n\t\t\t\t} else if ( event.pageY - i.overflowOffset.top < o.scrollSensitivity ) {\n\t\t\t\t\tscrollParent.scrollTop = scrolled = scrollParent.scrollTop - o.scrollSpeed;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( !o.axis || o.axis !== \"y\" ) {\n\t\t\t\tif ( ( i.overflowOffset.left + scrollParent.offsetWidth ) - event.pageX < o.scrollSensitivity ) {\n\t\t\t\t\tscrollParent.scrollLeft = scrolled = scrollParent.scrollLeft + o.scrollSpeed;\n\t\t\t\t} else if ( event.pageX - i.overflowOffset.left < o.scrollSensitivity ) {\n\t\t\t\t\tscrollParent.scrollLeft = scrolled = scrollParent.scrollLeft - o.scrollSpeed;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif (!o.axis || o.axis !== \"x\") {\n\t\t\t\tif (event.pageY - $(document).scrollTop() < o.scrollSensitivity) {\n\t\t\t\t\tscrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed);\n\t\t\t\t} else if ($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity) {\n\t\t\t\t\tscrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!o.axis || o.axis !== \"y\") {\n\t\t\t\tif (event.pageX - $(document).scrollLeft() < o.scrollSensitivity) {\n\t\t\t\t\tscrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed);\n\t\t\t\t} else if ($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity) {\n\t\t\t\t\tscrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed);\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\tif (scrolled !== false && $.ui.ddmanager && !o.dropBehaviour) {\n\t\t\t$.ui.ddmanager.prepareOffsets(i, event);\n\t\t}\n\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"snap\", {\n\tstart: function( event, ui, i ) {\n\n\t\tvar o = i.options;\n\n\t\ti.snapElements = [];\n\n\t\t$(o.snap.constructor !== String ? ( o.snap.items || \":data(ui-draggable)\" ) : o.snap).each(function() {\n\t\t\tvar $t = $(this),\n\t\t\t\t$o = $t.offset();\n\t\t\tif (this !== i.element[0]) {\n\t\t\t\ti.snapElements.push({\n\t\t\t\t\titem: this,\n\t\t\t\t\twidth: $t.outerWidth(), height: $t.outerHeight(),\n\t\t\t\t\ttop: $o.top, left: $o.left\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t},\n\tdrag: function( event, ui, inst ) {\n\n\t\tvar ts, bs, ls, rs, l, r, t, b, i, first,\n\t\t\to = inst.options,\n\t\t\td = o.snapTolerance,\n\t\t\tx1 = ui.offset.left, x2 = x1 + inst.helperProportions.width,\n\t\t\ty1 = ui.offset.top, y2 = y1 + inst.helperProportions.height;\n\n\t\tfor (i = inst.snapElements.length - 1; i >= 0; i--){\n\n\t\t\tl = inst.snapElements[i].left - inst.margins.left;\n\t\t\tr = l + inst.snapElements[i].width;\n\t\t\tt = inst.snapElements[i].top - inst.margins.top;\n\t\t\tb = t + inst.snapElements[i].height;\n\n\t\t\tif ( x2 < l - d || x1 > r + d || y2 < t - d || y1 > b + d || !$.contains( inst.snapElements[ i ].item.ownerDocument, inst.snapElements[ i ].item ) ) {\n\t\t\t\tif (inst.snapElements[i].snapping) {\n\t\t\t\t\t(inst.options.snap.release && inst.options.snap.release.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));\n\t\t\t\t}\n\t\t\t\tinst.snapElements[i].snapping = false;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (o.snapMode !== \"inner\") {\n\t\t\t\tts = Math.abs(t - y2) <= d;\n\t\t\t\tbs = Math.abs(b - y1) <= d;\n\t\t\t\tls = Math.abs(l - x2) <= d;\n\t\t\t\trs = Math.abs(r - x1) <= d;\n\t\t\t\tif (ts) {\n\t\t\t\t\tui.position.top = inst._convertPositionTo(\"relative\", { top: t - inst.helperProportions.height, left: 0 }).top;\n\t\t\t\t}\n\t\t\t\tif (bs) {\n\t\t\t\t\tui.position.top = inst._convertPositionTo(\"relative\", { top: b, left: 0 }).top;\n\t\t\t\t}\n\t\t\t\tif (ls) {\n\t\t\t\t\tui.position.left = inst._convertPositionTo(\"relative\", { top: 0, left: l - inst.helperProportions.width }).left;\n\t\t\t\t}\n\t\t\t\tif (rs) {\n\t\t\t\t\tui.position.left = inst._convertPositionTo(\"relative\", { top: 0, left: r }).left;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfirst = (ts || bs || ls || rs);\n\n\t\t\tif (o.snapMode !== \"outer\") {\n\t\t\t\tts = Math.abs(t - y1) <= d;\n\t\t\t\tbs = Math.abs(b - y2) <= d;\n\t\t\t\tls = Math.abs(l - x1) <= d;\n\t\t\t\trs = Math.abs(r - x2) <= d;\n\t\t\t\tif (ts) {\n\t\t\t\t\tui.position.top = inst._convertPositionTo(\"relative\", { top: t, left: 0 }).top;\n\t\t\t\t}\n\t\t\t\tif (bs) {\n\t\t\t\t\tui.position.top = inst._convertPositionTo(\"relative\", { top: b - inst.helperProportions.height, left: 0 }).top;\n\t\t\t\t}\n\t\t\t\tif (ls) {\n\t\t\t\t\tui.position.left = inst._convertPositionTo(\"relative\", { top: 0, left: l }).left;\n\t\t\t\t}\n\t\t\t\tif (rs) {\n\t\t\t\t\tui.position.left = inst._convertPositionTo(\"relative\", { top: 0, left: r - inst.helperProportions.width }).left;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!inst.snapElements[i].snapping && (ts || bs || ls || rs || first)) {\n\t\t\t\t(inst.options.snap.snap && inst.options.snap.snap.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));\n\t\t\t}\n\t\t\tinst.snapElements[i].snapping = (ts || bs || ls || rs || first);\n\n\t\t}\n\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"stack\", {\n\tstart: function( event, ui, instance ) {\n\t\tvar min,\n\t\t\to = instance.options,\n\t\t\tgroup = $.makeArray($(o.stack)).sort(function(a, b) {\n\t\t\t\treturn (parseInt($(a).css(\"zIndex\"), 10) || 0) - (parseInt($(b).css(\"zIndex\"), 10) || 0);\n\t\t\t});\n\n\t\tif (!group.length) { return; }\n\n\t\tmin = parseInt($(group[0]).css(\"zIndex\"), 10) || 0;\n\t\t$(group).each(function(i) {\n\t\t\t$(this).css(\"zIndex\", min + i);\n\t\t});\n\t\tthis.css(\"zIndex\", (min + group.length));\n\t}\n});\n\n$.ui.plugin.add(\"draggable\", \"zIndex\", {\n\tstart: function( event, ui, instance ) {\n\t\tvar t = $( ui.helper ),\n\t\t\to = instance.options;\n\n\t\tif (t.css(\"zIndex\")) {\n\t\t\to._zIndex = t.css(\"zIndex\");\n\t\t}\n\t\tt.css(\"zIndex\", o.zIndex);\n\t},\n\tstop: function( event, ui, instance ) {\n\t\tvar o = instance.options;\n\n\t\tif (o._zIndex) {\n\t\t\t$(ui.helper).css(\"zIndex\", o._zIndex);\n\t\t}\n\t}\n});\n\nvar draggable = $.ui.draggable;\n\n\n/*!\n * jQuery UI Resizable 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/resizable/\n */\n\n\n$.widget(\"ui.resizable\", $.ui.mouse, {\n\tversion: \"1.11.2\",\n\twidgetEventPrefix: \"resize\",\n\toptions: {\n\t\talsoResize: false,\n\t\tanimate: false,\n\t\tanimateDuration: \"slow\",\n\t\tanimateEasing: \"swing\",\n\t\taspectRatio: false,\n\t\tautoHide: false,\n\t\tcontainment: false,\n\t\tghost: false,\n\t\tgrid: false,\n\t\thandles: \"e,s,se\",\n\t\thelper: false,\n\t\tmaxHeight: null,\n\t\tmaxWidth: null,\n\t\tminHeight: 10,\n\t\tminWidth: 10,\n\t\t// See #7960\n\t\tzIndex: 90,\n\n\t\t// callbacks\n\t\tresize: null,\n\t\tstart: null,\n\t\tstop: null\n\t},\n\n\t_num: function( value ) {\n\t\treturn parseInt( value, 10 ) || 0;\n\t},\n\n\t_isNumber: function( value ) {\n\t\treturn !isNaN( parseInt( value, 10 ) );\n\t},\n\n\t_hasScroll: function( el, a ) {\n\n\t\tif ( $( el ).css( \"overflow\" ) === \"hidden\") {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar scroll = ( a && a === \"left\" ) ? \"scrollLeft\" : \"scrollTop\",\n\t\t\thas = false;\n\n\t\tif ( el[ scroll ] > 0 ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// TODO: determine which cases actually cause this to happen\n\t\t// if the element doesn't have the scroll set, see if it's possible to\n\t\t// set the scroll\n\t\tel[ scroll ] = 1;\n\t\thas = ( el[ scroll ] > 0 );\n\t\tel[ scroll ] = 0;\n\t\treturn has;\n\t},\n\n\t_create: function() {\n\n\t\tvar n, i, handle, axis, hname,\n\t\t\tthat = this,\n\t\t\to = this.options;\n\t\tthis.element.addClass(\"ui-resizable\");\n\n\t\t$.extend(this, {\n\t\t\t_aspectRatio: !!(o.aspectRatio),\n\t\t\taspectRatio: o.aspectRatio,\n\t\t\toriginalElement: this.element,\n\t\t\t_proportionallyResizeElements: [],\n\t\t\t_helper: o.helper || o.ghost || o.animate ? o.helper || \"ui-resizable-helper\" : null\n\t\t});\n\n\t\t// Wrap the element if it cannot hold child nodes\n\t\tif (this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)) {\n\n\t\t\tthis.element.wrap(\n\t\t\t\t$(\"<div class='ui-wrapper' style='overflow: hidden;'></div>\").css({\n\t\t\t\t\tposition: this.element.css(\"position\"),\n\t\t\t\t\twidth: this.element.outerWidth(),\n\t\t\t\t\theight: this.element.outerHeight(),\n\t\t\t\t\ttop: this.element.css(\"top\"),\n\t\t\t\t\tleft: this.element.css(\"left\")\n\t\t\t\t})\n\t\t\t);\n\n\t\t\tthis.element = this.element.parent().data(\n\t\t\t\t\"ui-resizable\", this.element.resizable( \"instance\" )\n\t\t\t);\n\n\t\t\tthis.elementIsWrapper = true;\n\n\t\t\tthis.element.css({\n\t\t\t\tmarginLeft: this.originalElement.css(\"marginLeft\"),\n\t\t\t\tmarginTop: this.originalElement.css(\"marginTop\"),\n\t\t\t\tmarginRight: this.originalElement.css(\"marginRight\"),\n\t\t\t\tmarginBottom: this.originalElement.css(\"marginBottom\")\n\t\t\t});\n\t\t\tthis.originalElement.css({\n\t\t\t\tmarginLeft: 0,\n\t\t\t\tmarginTop: 0,\n\t\t\t\tmarginRight: 0,\n\t\t\t\tmarginBottom: 0\n\t\t\t});\n\t\t\t// support: Safari\n\t\t\t// Prevent Safari textarea resize\n\t\t\tthis.originalResizeStyle = this.originalElement.css(\"resize\");\n\t\t\tthis.originalElement.css(\"resize\", \"none\");\n\n\t\t\tthis._proportionallyResizeElements.push( this.originalElement.css({\n\t\t\t\tposition: \"static\",\n\t\t\t\tzoom: 1,\n\t\t\t\tdisplay: \"block\"\n\t\t\t}) );\n\n\t\t\t// support: IE9\n\t\t\t// avoid IE jump (hard set the margin)\n\t\t\tthis.originalElement.css({ margin: this.originalElement.css(\"margin\") });\n\n\t\t\tthis._proportionallyResize();\n\t\t}\n\n\t\tthis.handles = o.handles ||\n\t\t\t( !$(\".ui-resizable-handle\", this.element).length ?\n\t\t\t\t\"e,s,se\" : {\n\t\t\t\t\tn: \".ui-resizable-n\",\n\t\t\t\t\te: \".ui-resizable-e\",\n\t\t\t\t\ts: \".ui-resizable-s\",\n\t\t\t\t\tw: \".ui-resizable-w\",\n\t\t\t\t\tse: \".ui-resizable-se\",\n\t\t\t\t\tsw: \".ui-resizable-sw\",\n\t\t\t\t\tne: \".ui-resizable-ne\",\n\t\t\t\t\tnw: \".ui-resizable-nw\"\n\t\t\t\t} );\n\n\t\tif (this.handles.constructor === String) {\n\n\t\t\tif ( this.handles === \"all\") {\n\t\t\t\tthis.handles = \"n,e,s,w,se,sw,ne,nw\";\n\t\t\t}\n\n\t\t\tn = this.handles.split(\",\");\n\t\t\tthis.handles = {};\n\n\t\t\tfor (i = 0; i < n.length; i++) {\n\n\t\t\t\thandle = $.trim(n[i]);\n\t\t\t\thname = \"ui-resizable-\" + handle;\n\t\t\t\taxis = $(\"<div class='ui-resizable-handle \" + hname + \"'></div>\");\n\n\t\t\t\taxis.css({ zIndex: o.zIndex });\n\n\t\t\t\t// TODO : What's going on here?\n\t\t\t\tif (\"se\" === handle) {\n\t\t\t\t\taxis.addClass(\"ui-icon ui-icon-gripsmall-diagonal-se\");\n\t\t\t\t}\n\n\t\t\t\tthis.handles[handle] = \".ui-resizable-\" + handle;\n\t\t\t\tthis.element.append(axis);\n\t\t\t}\n\n\t\t}\n\n\t\tthis._renderAxis = function(target) {\n\n\t\t\tvar i, axis, padPos, padWrapper;\n\n\t\t\ttarget = target || this.element;\n\n\t\t\tfor (i in this.handles) {\n\n\t\t\t\tif (this.handles[i].constructor === String) {\n\t\t\t\t\tthis.handles[i] = this.element.children( this.handles[ i ] ).first().show();\n\t\t\t\t}\n\n\t\t\t\tif (this.elementIsWrapper && this.originalElement[0].nodeName.match(/textarea|input|select|button/i)) {\n\n\t\t\t\t\taxis = $(this.handles[i], this.element);\n\n\t\t\t\t\tpadWrapper = /sw|ne|nw|se|n|s/.test(i) ? axis.outerHeight() : axis.outerWidth();\n\n\t\t\t\t\tpadPos = [ \"padding\",\n\t\t\t\t\t\t/ne|nw|n/.test(i) ? \"Top\" :\n\t\t\t\t\t\t/se|sw|s/.test(i) ? \"Bottom\" :\n\t\t\t\t\t\t/^e$/.test(i) ? \"Right\" : \"Left\" ].join(\"\");\n\n\t\t\t\t\ttarget.css(padPos, padWrapper);\n\n\t\t\t\t\tthis._proportionallyResize();\n\n\t\t\t\t}\n\n\t\t\t\t// TODO: What's that good for? There's not anything to be executed left\n\t\t\t\tif (!$(this.handles[i]).length) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t// TODO: make renderAxis a prototype function\n\t\tthis._renderAxis(this.element);\n\n\t\tthis._handles = $(\".ui-resizable-handle\", this.element)\n\t\t\t.disableSelection();\n\n\t\tthis._handles.mouseover(function() {\n\t\t\tif (!that.resizing) {\n\t\t\t\tif (this.className) {\n\t\t\t\t\taxis = this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);\n\t\t\t\t}\n\t\t\t\tthat.axis = axis && axis[1] ? axis[1] : \"se\";\n\t\t\t}\n\t\t});\n\n\t\tif (o.autoHide) {\n\t\t\tthis._handles.hide();\n\t\t\t$(this.element)\n\t\t\t\t.addClass(\"ui-resizable-autohide\")\n\t\t\t\t.mouseenter(function() {\n\t\t\t\t\tif (o.disabled) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t$(this).removeClass(\"ui-resizable-autohide\");\n\t\t\t\t\tthat._handles.show();\n\t\t\t\t})\n\t\t\t\t.mouseleave(function() {\n\t\t\t\t\tif (o.disabled) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif (!that.resizing) {\n\t\t\t\t\t\t$(this).addClass(\"ui-resizable-autohide\");\n\t\t\t\t\t\tthat._handles.hide();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\n\t\tthis._mouseInit();\n\n\t},\n\n\t_destroy: function() {\n\n\t\tthis._mouseDestroy();\n\n\t\tvar wrapper,\n\t\t\t_destroy = function(exp) {\n\t\t\t\t$(exp)\n\t\t\t\t\t.removeClass(\"ui-resizable ui-resizable-disabled ui-resizable-resizing\")\n\t\t\t\t\t.removeData(\"resizable\")\n\t\t\t\t\t.removeData(\"ui-resizable\")\n\t\t\t\t\t.unbind(\".resizable\")\n\t\t\t\t\t.find(\".ui-resizable-handle\")\n\t\t\t\t\t\t.remove();\n\t\t\t};\n\n\t\t// TODO: Unwrap at same DOM position\n\t\tif (this.elementIsWrapper) {\n\t\t\t_destroy(this.element);\n\t\t\twrapper = this.element;\n\t\t\tthis.originalElement.css({\n\t\t\t\tposition: wrapper.css(\"position\"),\n\t\t\t\twidth: wrapper.outerWidth(),\n\t\t\t\theight: wrapper.outerHeight(),\n\t\t\t\ttop: wrapper.css(\"top\"),\n\t\t\t\tleft: wrapper.css(\"left\")\n\t\t\t}).insertAfter( wrapper );\n\t\t\twrapper.remove();\n\t\t}\n\n\t\tthis.originalElement.css(\"resize\", this.originalResizeStyle);\n\t\t_destroy(this.originalElement);\n\n\t\treturn this;\n\t},\n\n\t_mouseCapture: function(event) {\n\t\tvar i, handle,\n\t\t\tcapture = false;\n\n\t\tfor (i in this.handles) {\n\t\t\thandle = $(this.handles[i])[0];\n\t\t\tif (handle === event.target || $.contains(handle, event.target)) {\n\t\t\t\tcapture = true;\n\t\t\t}\n\t\t}\n\n\t\treturn !this.options.disabled && capture;\n\t},\n\n\t_mouseStart: function(event) {\n\n\t\tvar curleft, curtop, cursor,\n\t\t\to = this.options,\n\t\t\tel = this.element;\n\n\t\tthis.resizing = true;\n\n\t\tthis._renderProxy();\n\n\t\tcurleft = this._num(this.helper.css(\"left\"));\n\t\tcurtop = this._num(this.helper.css(\"top\"));\n\n\t\tif (o.containment) {\n\t\t\tcurleft += $(o.containment).scrollLeft() || 0;\n\t\t\tcurtop += $(o.containment).scrollTop() || 0;\n\t\t}\n\n\t\tthis.offset = this.helper.offset();\n\t\tthis.position = { left: curleft, top: curtop };\n\n\t\tthis.size = this._helper ? {\n\t\t\t\twidth: this.helper.width(),\n\t\t\t\theight: this.helper.height()\n\t\t\t} : {\n\t\t\t\twidth: el.width(),\n\t\t\t\theight: el.height()\n\t\t\t};\n\n\t\tthis.originalSize = this._helper ? {\n\t\t\t\twidth: el.outerWidth(),\n\t\t\t\theight: el.outerHeight()\n\t\t\t} : {\n\t\t\t\twidth: el.width(),\n\t\t\t\theight: el.height()\n\t\t\t};\n\n\t\tthis.sizeDiff = {\n\t\t\twidth: el.outerWidth() - el.width(),\n\t\t\theight: el.outerHeight() - el.height()\n\t\t};\n\n\t\tthis.originalPosition = { left: curleft, top: curtop };\n\t\tthis.originalMousePosition = { left: event.pageX, top: event.pageY };\n\n\t\tthis.aspectRatio = (typeof o.aspectRatio === \"number\") ?\n\t\t\to.aspectRatio :\n\t\t\t((this.originalSize.width / this.originalSize.height) || 1);\n\n\t\tcursor = $(\".ui-resizable-\" + this.axis).css(\"cursor\");\n\t\t$(\"body\").css(\"cursor\", cursor === \"auto\" ? this.axis + \"-resize\" : cursor);\n\n\t\tel.addClass(\"ui-resizable-resizing\");\n\t\tthis._propagate(\"start\", event);\n\t\treturn true;\n\t},\n\n\t_mouseDrag: function(event) {\n\n\t\tvar data, props,\n\t\t\tsmp = this.originalMousePosition,\n\t\t\ta = this.axis,\n\t\t\tdx = (event.pageX - smp.left) || 0,\n\t\t\tdy = (event.pageY - smp.top) || 0,\n\t\t\ttrigger = this._change[a];\n\n\t\tthis._updatePrevProperties();\n\n\t\tif (!trigger) {\n\t\t\treturn false;\n\t\t}\n\n\t\tdata = trigger.apply(this, [ event, dx, dy ]);\n\n\t\tthis._updateVirtualBoundaries(event.shiftKey);\n\t\tif (this._aspectRatio || event.shiftKey) {\n\t\t\tdata = this._updateRatio(data, event);\n\t\t}\n\n\t\tdata = this._respectSize(data, event);\n\n\t\tthis._updateCache(data);\n\n\t\tthis._propagate(\"resize\", event);\n\n\t\tprops = this._applyChanges();\n\n\t\tif ( !this._helper && this._proportionallyResizeElements.length ) {\n\t\t\tthis._proportionallyResize();\n\t\t}\n\n\t\tif ( !$.isEmptyObject( props ) ) {\n\t\t\tthis._updatePrevProperties();\n\t\t\tthis._trigger( \"resize\", event, this.ui() );\n\t\t\tthis._applyChanges();\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_mouseStop: function(event) {\n\n\t\tthis.resizing = false;\n\t\tvar pr, ista, soffseth, soffsetw, s, left, top,\n\t\t\to = this.options, that = this;\n\n\t\tif (this._helper) {\n\n\t\t\tpr = this._proportionallyResizeElements;\n\t\t\tista = pr.length && (/textarea/i).test(pr[0].nodeName);\n\t\t\tsoffseth = ista && this._hasScroll(pr[0], \"left\") ? 0 : that.sizeDiff.height;\n\t\t\tsoffsetw = ista ? 0 : that.sizeDiff.width;\n\n\t\t\ts = {\n\t\t\t\twidth: (that.helper.width() - soffsetw),\n\t\t\t\theight: (that.helper.height() - soffseth)\n\t\t\t};\n\t\t\tleft = (parseInt(that.element.css(\"left\"), 10) +\n\t\t\t\t(that.position.left - that.originalPosition.left)) || null;\n\t\t\ttop = (parseInt(that.element.css(\"top\"), 10) +\n\t\t\t\t(that.position.top - that.originalPosition.top)) || null;\n\n\t\t\tif (!o.animate) {\n\t\t\t\tthis.element.css($.extend(s, { top: top, left: left }));\n\t\t\t}\n\n\t\t\tthat.helper.height(that.size.height);\n\t\t\tthat.helper.width(that.size.width);\n\n\t\t\tif (this._helper && !o.animate) {\n\t\t\t\tthis._proportionallyResize();\n\t\t\t}\n\t\t}\n\n\t\t$(\"body\").css(\"cursor\", \"auto\");\n\n\t\tthis.element.removeClass(\"ui-resizable-resizing\");\n\n\t\tthis._propagate(\"stop\", event);\n\n\t\tif (this._helper) {\n\t\t\tthis.helper.remove();\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\t_updatePrevProperties: function() {\n\t\tthis.prevPosition = {\n\t\t\ttop: this.position.top,\n\t\t\tleft: this.position.left\n\t\t};\n\t\tthis.prevSize = {\n\t\t\twidth: this.size.width,\n\t\t\theight: this.size.height\n\t\t};\n\t},\n\n\t_applyChanges: function() {\n\t\tvar props = {};\n\n\t\tif ( this.position.top !== this.prevPosition.top ) {\n\t\t\tprops.top = this.position.top + \"px\";\n\t\t}\n\t\tif ( this.position.left !== this.prevPosition.left ) {\n\t\t\tprops.left = this.position.left + \"px\";\n\t\t}\n\t\tif ( this.size.width !== this.prevSize.width ) {\n\t\t\tprops.width = this.size.width + \"px\";\n\t\t}\n\t\tif ( this.size.height !== this.prevSize.height ) {\n\t\t\tprops.height = this.size.height + \"px\";\n\t\t}\n\n\t\tthis.helper.css( props );\n\n\t\treturn props;\n\t},\n\n\t_updateVirtualBoundaries: function(forceAspectRatio) {\n\t\tvar pMinWidth, pMaxWidth, pMinHeight, pMaxHeight, b,\n\t\t\to = this.options;\n\n\t\tb = {\n\t\t\tminWidth: this._isNumber(o.minWidth) ? o.minWidth : 0,\n\t\t\tmaxWidth: this._isNumber(o.maxWidth) ? o.maxWidth : Infinity,\n\t\t\tminHeight: this._isNumber(o.minHeight) ? o.minHeight : 0,\n\t\t\tmaxHeight: this._isNumber(o.maxHeight) ? o.maxHeight : Infinity\n\t\t};\n\n\t\tif (this._aspectRatio || forceAspectRatio) {\n\t\t\tpMinWidth = b.minHeight * this.aspectRatio;\n\t\t\tpMinHeight = b.minWidth / this.aspectRatio;\n\t\t\tpMaxWidth = b.maxHeight * this.aspectRatio;\n\t\t\tpMaxHeight = b.maxWidth / this.aspectRatio;\n\n\t\t\tif (pMinWidth > b.minWidth) {\n\t\t\t\tb.minWidth = pMinWidth;\n\t\t\t}\n\t\t\tif (pMinHeight > b.minHeight) {\n\t\t\t\tb.minHeight = pMinHeight;\n\t\t\t}\n\t\t\tif (pMaxWidth < b.maxWidth) {\n\t\t\t\tb.maxWidth = pMaxWidth;\n\t\t\t}\n\t\t\tif (pMaxHeight < b.maxHeight) {\n\t\t\t\tb.maxHeight = pMaxHeight;\n\t\t\t}\n\t\t}\n\t\tthis._vBoundaries = b;\n\t},\n\n\t_updateCache: function(data) {\n\t\tthis.offset = this.helper.offset();\n\t\tif (this._isNumber(data.left)) {\n\t\t\tthis.position.left = data.left;\n\t\t}\n\t\tif (this._isNumber(data.top)) {\n\t\t\tthis.position.top = data.top;\n\t\t}\n\t\tif (this._isNumber(data.height)) {\n\t\t\tthis.size.height = data.height;\n\t\t}\n\t\tif (this._isNumber(data.width)) {\n\t\t\tthis.size.width = data.width;\n\t\t}\n\t},\n\n\t_updateRatio: function( data ) {\n\n\t\tvar cpos = this.position,\n\t\t\tcsize = this.size,\n\t\t\ta = this.axis;\n\n\t\tif (this._isNumber(data.height)) {\n\t\t\tdata.width = (data.height * this.aspectRatio);\n\t\t} else if (this._isNumber(data.width)) {\n\t\t\tdata.height = (data.width / this.aspectRatio);\n\t\t}\n\n\t\tif (a === \"sw\") {\n\t\t\tdata.left = cpos.left + (csize.width - data.width);\n\t\t\tdata.top = null;\n\t\t}\n\t\tif (a === \"nw\") {\n\t\t\tdata.top = cpos.top + (csize.height - data.height);\n\t\t\tdata.left = cpos.left + (csize.width - data.width);\n\t\t}\n\n\t\treturn data;\n\t},\n\n\t_respectSize: function( data ) {\n\n\t\tvar o = this._vBoundaries,\n\t\t\ta = this.axis,\n\t\t\tismaxw = this._isNumber(data.width) && o.maxWidth && (o.maxWidth < data.width),\n\t\t\tismaxh = this._isNumber(data.height) && o.maxHeight && (o.maxHeight < data.height),\n\t\t\tisminw = this._isNumber(data.width) && o.minWidth && (o.minWidth > data.width),\n\t\t\tisminh = this._isNumber(data.height) && o.minHeight && (o.minHeight > data.height),\n\t\t\tdw = this.originalPosition.left + this.originalSize.width,\n\t\t\tdh = this.position.top + this.size.height,\n\t\t\tcw = /sw|nw|w/.test(a), ch = /nw|ne|n/.test(a);\n\t\tif (isminw) {\n\t\t\tdata.width = o.minWidth;\n\t\t}\n\t\tif (isminh) {\n\t\t\tdata.height = o.minHeight;\n\t\t}\n\t\tif (ismaxw) {\n\t\t\tdata.width = o.maxWidth;\n\t\t}\n\t\tif (ismaxh) {\n\t\t\tdata.height = o.maxHeight;\n\t\t}\n\n\t\tif (isminw && cw) {\n\t\t\tdata.left = dw - o.minWidth;\n\t\t}\n\t\tif (ismaxw && cw) {\n\t\t\tdata.left = dw - o.maxWidth;\n\t\t}\n\t\tif (isminh && ch) {\n\t\t\tdata.top = dh - o.minHeight;\n\t\t}\n\t\tif (ismaxh && ch) {\n\t\t\tdata.top = dh - o.maxHeight;\n\t\t}\n\n\t\t// Fixing jump error on top/left - bug #2330\n\t\tif (!data.width && !data.height && !data.left && data.top) {\n\t\t\tdata.top = null;\n\t\t} else if (!data.width && !data.height && !data.top && data.left) {\n\t\t\tdata.left = null;\n\t\t}\n\n\t\treturn data;\n\t},\n\n\t_getPaddingPlusBorderDimensions: function( element ) {\n\t\tvar i = 0,\n\t\t\twidths = [],\n\t\t\tborders = [\n\t\t\t\telement.css( \"borderTopWidth\" ),\n\t\t\t\telement.css( \"borderRightWidth\" ),\n\t\t\t\telement.css( \"borderBottomWidth\" ),\n\t\t\t\telement.css( \"borderLeftWidth\" )\n\t\t\t],\n\t\t\tpaddings = [\n\t\t\t\telement.css( \"paddingTop\" ),\n\t\t\t\telement.css( \"paddingRight\" ),\n\t\t\t\telement.css( \"paddingBottom\" ),\n\t\t\t\telement.css( \"paddingLeft\" )\n\t\t\t];\n\n\t\tfor ( ; i < 4; i++ ) {\n\t\t\twidths[ i ] = ( parseInt( borders[ i ], 10 ) || 0 );\n\t\t\twidths[ i ] += ( parseInt( paddings[ i ], 10 ) || 0 );\n\t\t}\n\n\t\treturn {\n\t\t\theight: widths[ 0 ] + widths[ 2 ],\n\t\t\twidth: widths[ 1 ] + widths[ 3 ]\n\t\t};\n\t},\n\n\t_proportionallyResize: function() {\n\n\t\tif (!this._proportionallyResizeElements.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar prel,\n\t\t\ti = 0,\n\t\t\telement = this.helper || this.element;\n\n\t\tfor ( ; i < this._proportionallyResizeElements.length; i++) {\n\n\t\t\tprel = this._proportionallyResizeElements[i];\n\n\t\t\t// TODO: Seems like a bug to cache this.outerDimensions\n\t\t\t// considering that we are in a loop.\n\t\t\tif (!this.outerDimensions) {\n\t\t\t\tthis.outerDimensions = this._getPaddingPlusBorderDimensions( prel );\n\t\t\t}\n\n\t\t\tprel.css({\n\t\t\t\theight: (element.height() - this.outerDimensions.height) || 0,\n\t\t\t\twidth: (element.width() - this.outerDimensions.width) || 0\n\t\t\t});\n\n\t\t}\n\n\t},\n\n\t_renderProxy: function() {\n\n\t\tvar el = this.element, o = this.options;\n\t\tthis.elementOffset = el.offset();\n\n\t\tif (this._helper) {\n\n\t\t\tthis.helper = this.helper || $(\"<div style='overflow:hidden;'></div>\");\n\n\t\t\tthis.helper.addClass(this._helper).css({\n\t\t\t\twidth: this.element.outerWidth() - 1,\n\t\t\t\theight: this.element.outerHeight() - 1,\n\t\t\t\tposition: \"absolute\",\n\t\t\t\tleft: this.elementOffset.left + \"px\",\n\t\t\t\ttop: this.elementOffset.top + \"px\",\n\t\t\t\tzIndex: ++o.zIndex //TODO: Don't modify option\n\t\t\t});\n\n\t\t\tthis.helper\n\t\t\t\t.appendTo(\"body\")\n\t\t\t\t.disableSelection();\n\n\t\t} else {\n\t\t\tthis.helper = this.element;\n\t\t}\n\n\t},\n\n\t_change: {\n\t\te: function(event, dx) {\n\t\t\treturn { width: this.originalSize.width + dx };\n\t\t},\n\t\tw: function(event, dx) {\n\t\t\tvar cs = this.originalSize, sp = this.originalPosition;\n\t\t\treturn { left: sp.left + dx, width: cs.width - dx };\n\t\t},\n\t\tn: function(event, dx, dy) {\n\t\t\tvar cs = this.originalSize, sp = this.originalPosition;\n\t\t\treturn { top: sp.top + dy, height: cs.height - dy };\n\t\t},\n\t\ts: function(event, dx, dy) {\n\t\t\treturn { height: this.originalSize.height + dy };\n\t\t},\n\t\tse: function(event, dx, dy) {\n\t\t\treturn $.extend(this._change.s.apply(this, arguments),\n\t\t\t\tthis._change.e.apply(this, [ event, dx, dy ]));\n\t\t},\n\t\tsw: function(event, dx, dy) {\n\t\t\treturn $.extend(this._change.s.apply(this, arguments),\n\t\t\t\tthis._change.w.apply(this, [ event, dx, dy ]));\n\t\t},\n\t\tne: function(event, dx, dy) {\n\t\t\treturn $.extend(this._change.n.apply(this, arguments),\n\t\t\t\tthis._change.e.apply(this, [ event, dx, dy ]));\n\t\t},\n\t\tnw: function(event, dx, dy) {\n\t\t\treturn $.extend(this._change.n.apply(this, arguments),\n\t\t\t\tthis._change.w.apply(this, [ event, dx, dy ]));\n\t\t}\n\t},\n\n\t_propagate: function(n, event) {\n\t\t$.ui.plugin.call(this, n, [ event, this.ui() ]);\n\t\t(n !== \"resize\" && this._trigger(n, event, this.ui()));\n\t},\n\n\tplugins: {},\n\n\tui: function() {\n\t\treturn {\n\t\t\toriginalElement: this.originalElement,\n\t\t\telement: this.element,\n\t\t\thelper: this.helper,\n\t\t\tposition: this.position,\n\t\t\tsize: this.size,\n\t\t\toriginalSize: this.originalSize,\n\t\t\toriginalPosition: this.originalPosition\n\t\t};\n\t}\n\n});\n\n/*\n * Resizable Extensions\n */\n\n$.ui.plugin.add(\"resizable\", \"animate\", {\n\n\tstop: function( event ) {\n\t\tvar that = $(this).resizable( \"instance\" ),\n\t\t\to = that.options,\n\t\t\tpr = that._proportionallyResizeElements,\n\t\t\tista = pr.length && (/textarea/i).test(pr[0].nodeName),\n\t\t\tsoffseth = ista && that._hasScroll(pr[0], \"left\") ? 0 : that.sizeDiff.height,\n\t\t\tsoffsetw = ista ? 0 : that.sizeDiff.width,\n\t\t\tstyle = { width: (that.size.width - soffsetw), height: (that.size.height - soffseth) },\n\t\t\tleft = (parseInt(that.element.css(\"left\"), 10) +\n\t\t\t\t(that.position.left - that.originalPosition.left)) || null,\n\t\t\ttop = (parseInt(that.element.css(\"top\"), 10) +\n\t\t\t\t(that.position.top - that.originalPosition.top)) || null;\n\n\t\tthat.element.animate(\n\t\t\t$.extend(style, top && left ? { top: top, left: left } : {}), {\n\t\t\t\tduration: o.animateDuration,\n\t\t\t\teasing: o.animateEasing,\n\t\t\t\tstep: function() {\n\n\t\t\t\t\tvar data = {\n\t\t\t\t\t\twidth: parseInt(that.element.css(\"width\"), 10),\n\t\t\t\t\t\theight: parseInt(that.element.css(\"height\"), 10),\n\t\t\t\t\t\ttop: parseInt(that.element.css(\"top\"), 10),\n\t\t\t\t\t\tleft: parseInt(that.element.css(\"left\"), 10)\n\t\t\t\t\t};\n\n\t\t\t\t\tif (pr && pr.length) {\n\t\t\t\t\t\t$(pr[0]).css({ width: data.width, height: data.height });\n\t\t\t\t\t}\n\n\t\t\t\t\t// propagating resize, and updating values for each animation step\n\t\t\t\t\tthat._updateCache(data);\n\t\t\t\t\tthat._propagate(\"resize\", event);\n\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n});\n\n$.ui.plugin.add( \"resizable\", \"containment\", {\n\n\tstart: function() {\n\t\tvar element, p, co, ch, cw, width, height,\n\t\t\tthat = $( this ).resizable( \"instance\" ),\n\t\t\to = that.options,\n\t\t\tel = that.element,\n\t\t\toc = o.containment,\n\t\t\tce = ( oc instanceof $ ) ? oc.get( 0 ) : ( /parent/.test( oc ) ) ? el.parent().get( 0 ) : oc;\n\n\t\tif ( !ce ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthat.containerElement = $( ce );\n\n\t\tif ( /document/.test( oc ) || oc === document ) {\n\t\t\tthat.containerOffset = {\n\t\t\t\tleft: 0,\n\t\t\t\ttop: 0\n\t\t\t};\n\t\t\tthat.containerPosition = {\n\t\t\t\tleft: 0,\n\t\t\t\ttop: 0\n\t\t\t};\n\n\t\t\tthat.parentData = {\n\t\t\t\telement: $( document ),\n\t\t\t\tleft: 0,\n\t\t\t\ttop: 0,\n\t\t\t\twidth: $( document ).width(),\n\t\t\t\theight: $( document ).height() || document.body.parentNode.scrollHeight\n\t\t\t};\n\t\t} else {\n\t\t\telement = $( ce );\n\t\t\tp = [];\n\t\t\t$([ \"Top\", \"Right\", \"Left\", \"Bottom\" ]).each(function( i, name ) {\n\t\t\t\tp[ i ] = that._num( element.css( \"padding\" + name ) );\n\t\t\t});\n\n\t\t\tthat.containerOffset = element.offset();\n\t\t\tthat.containerPosition = element.position();\n\t\t\tthat.containerSize = {\n\t\t\t\theight: ( element.innerHeight() - p[ 3 ] ),\n\t\t\t\twidth: ( element.innerWidth() - p[ 1 ] )\n\t\t\t};\n\n\t\t\tco = that.containerOffset;\n\t\t\tch = that.containerSize.height;\n\t\t\tcw = that.containerSize.width;\n\t\t\twidth = ( that._hasScroll ( ce, \"left\" ) ? ce.scrollWidth : cw );\n\t\t\theight = ( that._hasScroll ( ce ) ? ce.scrollHeight : ch ) ;\n\n\t\t\tthat.parentData = {\n\t\t\t\telement: ce,\n\t\t\t\tleft: co.left,\n\t\t\t\ttop: co.top,\n\t\t\t\twidth: width,\n\t\t\t\theight: height\n\t\t\t};\n\t\t}\n\t},\n\n\tresize: function( event ) {\n\t\tvar woset, hoset, isParent, isOffsetRelative,\n\t\t\tthat = $( this ).resizable( \"instance\" ),\n\t\t\to = that.options,\n\t\t\tco = that.containerOffset,\n\t\t\tcp = that.position,\n\t\t\tpRatio = that._aspectRatio || event.shiftKey,\n\t\t\tcop = {\n\t\t\t\ttop: 0,\n\t\t\t\tleft: 0\n\t\t\t},\n\t\t\tce = that.containerElement,\n\t\t\tcontinueResize = true;\n\n\t\tif ( ce[ 0 ] !== document && ( /static/ ).test( ce.css( \"position\" ) ) ) {\n\t\t\tcop = co;\n\t\t}\n\n\t\tif ( cp.left < ( that._helper ? co.left : 0 ) ) {\n\t\t\tthat.size.width = that.size.width +\n\t\t\t\t( that._helper ?\n\t\t\t\t\t( that.position.left - co.left ) :\n\t\t\t\t\t( that.position.left - cop.left ) );\n\n\t\t\tif ( pRatio ) {\n\t\t\t\tthat.size.height = that.size.width / that.aspectRatio;\n\t\t\t\tcontinueResize = false;\n\t\t\t}\n\t\t\tthat.position.left = o.helper ? co.left : 0;\n\t\t}\n\n\t\tif ( cp.top < ( that._helper ? co.top : 0 ) ) {\n\t\t\tthat.size.height = that.size.height +\n\t\t\t\t( that._helper ?\n\t\t\t\t\t( that.position.top - co.top ) :\n\t\t\t\t\tthat.position.top );\n\n\t\t\tif ( pRatio ) {\n\t\t\t\tthat.size.width = that.size.height * that.aspectRatio;\n\t\t\t\tcontinueResize = false;\n\t\t\t}\n\t\t\tthat.position.top = that._helper ? co.top : 0;\n\t\t}\n\n\t\tisParent = that.containerElement.get( 0 ) === that.element.parent().get( 0 );\n\t\tisOffsetRelative = /relative|absolute/.test( that.containerElement.css( \"position\" ) );\n\n\t\tif ( isParent && isOffsetRelative ) {\n\t\t\tthat.offset.left = that.parentData.left + that.position.left;\n\t\t\tthat.offset.top = that.parentData.top + that.position.top;\n\t\t} else {\n\t\t\tthat.offset.left = that.element.offset().left;\n\t\t\tthat.offset.top = that.element.offset().top;\n\t\t}\n\n\t\twoset = Math.abs( that.sizeDiff.width +\n\t\t\t(that._helper ?\n\t\t\t\tthat.offset.left - cop.left :\n\t\t\t\t(that.offset.left - co.left)) );\n\n\t\thoset = Math.abs( that.sizeDiff.height +\n\t\t\t(that._helper ?\n\t\t\t\tthat.offset.top - cop.top :\n\t\t\t\t(that.offset.top - co.top)) );\n\n\t\tif ( woset + that.size.width >= that.parentData.width ) {\n\t\t\tthat.size.width = that.parentData.width - woset;\n\t\t\tif ( pRatio ) {\n\t\t\t\tthat.size.height = that.size.width / that.aspectRatio;\n\t\t\t\tcontinueResize = false;\n\t\t\t}\n\t\t}\n\n\t\tif ( hoset + that.size.height >= that.parentData.height ) {\n\t\t\tthat.size.height = that.parentData.height - hoset;\n\t\t\tif ( pRatio ) {\n\t\t\t\tthat.size.width = that.size.height * that.aspectRatio;\n\t\t\t\tcontinueResize = false;\n\t\t\t}\n\t\t}\n\n\t\tif ( !continueResize ){\n\t\t\tthat.position.left = that.prevPosition.left;\n\t\t\tthat.position.top = that.prevPosition.top;\n\t\t\tthat.size.width = that.prevSize.width;\n\t\t\tthat.size.height = that.prevSize.height;\n\t\t}\n\t},\n\n\tstop: function() {\n\t\tvar that = $( this ).resizable( \"instance\" ),\n\t\t\to = that.options,\n\t\t\tco = that.containerOffset,\n\t\t\tcop = that.containerPosition,\n\t\t\tce = that.containerElement,\n\t\t\thelper = $( that.helper ),\n\t\t\tho = helper.offset(),\n\t\t\tw = helper.outerWidth() - that.sizeDiff.width,\n\t\t\th = helper.outerHeight() - that.sizeDiff.height;\n\n\t\tif ( that._helper && !o.animate && ( /relative/ ).test( ce.css( \"position\" ) ) ) {\n\t\t\t$( this ).css({\n\t\t\t\tleft: ho.left - cop.left - co.left,\n\t\t\t\twidth: w,\n\t\t\t\theight: h\n\t\t\t});\n\t\t}\n\n\t\tif ( that._helper && !o.animate && ( /static/ ).test( ce.css( \"position\" ) ) ) {\n\t\t\t$( this ).css({\n\t\t\t\tleft: ho.left - cop.left - co.left,\n\t\t\t\twidth: w,\n\t\t\t\theight: h\n\t\t\t});\n\t\t}\n\t}\n});\n\n$.ui.plugin.add(\"resizable\", \"alsoResize\", {\n\n\tstart: function() {\n\t\tvar that = $(this).resizable( \"instance\" ),\n\t\t\to = that.options,\n\t\t\t_store = function(exp) {\n\t\t\t\t$(exp).each(function() {\n\t\t\t\t\tvar el = $(this);\n\t\t\t\t\tel.data(\"ui-resizable-alsoresize\", {\n\t\t\t\t\t\twidth: parseInt(el.width(), 10), height: parseInt(el.height(), 10),\n\t\t\t\t\t\tleft: parseInt(el.css(\"left\"), 10), top: parseInt(el.css(\"top\"), 10)\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t};\n\n\t\tif (typeof(o.alsoResize) === \"object\" && !o.alsoResize.parentNode) {\n\t\t\tif (o.alsoResize.length) {\n\t\t\t\to.alsoResize = o.alsoResize[0];\n\t\t\t\t_store(o.alsoResize);\n\t\t\t} else {\n\t\t\t\t$.each(o.alsoResize, function(exp) {\n\t\t\t\t\t_store(exp);\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\t_store(o.alsoResize);\n\t\t}\n\t},\n\n\tresize: function(event, ui) {\n\t\tvar that = $(this).resizable( \"instance\" ),\n\t\t\to = that.options,\n\t\t\tos = that.originalSize,\n\t\t\top = that.originalPosition,\n\t\t\tdelta = {\n\t\t\t\theight: (that.size.height - os.height) || 0,\n\t\t\t\twidth: (that.size.width - os.width) || 0,\n\t\t\t\ttop: (that.position.top - op.top) || 0,\n\t\t\t\tleft: (that.position.left - op.left) || 0\n\t\t\t},\n\n\t\t\t_alsoResize = function(exp, c) {\n\t\t\t\t$(exp).each(function() {\n\t\t\t\t\tvar el = $(this), start = $(this).data(\"ui-resizable-alsoresize\"), style = {},\n\t\t\t\t\t\tcss = c && c.length ?\n\t\t\t\t\t\t\tc :\n\t\t\t\t\t\t\tel.parents(ui.originalElement[0]).length ?\n\t\t\t\t\t\t\t\t[ \"width\", \"height\" ] :\n\t\t\t\t\t\t\t\t[ \"width\", \"height\", \"top\", \"left\" ];\n\n\t\t\t\t\t$.each(css, function(i, prop) {\n\t\t\t\t\t\tvar sum = (start[prop] || 0) + (delta[prop] || 0);\n\t\t\t\t\t\tif (sum && sum >= 0) {\n\t\t\t\t\t\t\tstyle[prop] = sum || null;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tel.css(style);\n\t\t\t\t});\n\t\t\t};\n\n\t\tif (typeof(o.alsoResize) === \"object\" && !o.alsoResize.nodeType) {\n\t\t\t$.each(o.alsoResize, function(exp, c) {\n\t\t\t\t_alsoResize(exp, c);\n\t\t\t});\n\t\t} else {\n\t\t\t_alsoResize(o.alsoResize);\n\t\t}\n\t},\n\n\tstop: function() {\n\t\t$(this).removeData(\"resizable-alsoresize\");\n\t}\n});\n\n$.ui.plugin.add(\"resizable\", \"ghost\", {\n\n\tstart: function() {\n\n\t\tvar that = $(this).resizable( \"instance\" ), o = that.options, cs = that.size;\n\n\t\tthat.ghost = that.originalElement.clone();\n\t\tthat.ghost\n\t\t\t.css({\n\t\t\t\topacity: 0.25,\n\t\t\t\tdisplay: \"block\",\n\t\t\t\tposition: \"relative\",\n\t\t\t\theight: cs.height,\n\t\t\t\twidth: cs.width,\n\t\t\t\tmargin: 0,\n\t\t\t\tleft: 0,\n\t\t\t\ttop: 0\n\t\t\t})\n\t\t\t.addClass(\"ui-resizable-ghost\")\n\t\t\t.addClass(typeof o.ghost === \"string\" ? o.ghost : \"\");\n\n\t\tthat.ghost.appendTo(that.helper);\n\n\t},\n\n\tresize: function() {\n\t\tvar that = $(this).resizable( \"instance\" );\n\t\tif (that.ghost) {\n\t\t\tthat.ghost.css({\n\t\t\t\tposition: \"relative\",\n\t\t\t\theight: that.size.height,\n\t\t\t\twidth: that.size.width\n\t\t\t});\n\t\t}\n\t},\n\n\tstop: function() {\n\t\tvar that = $(this).resizable( \"instance\" );\n\t\tif (that.ghost && that.helper) {\n\t\t\tthat.helper.get(0).removeChild(that.ghost.get(0));\n\t\t}\n\t}\n\n});\n\n$.ui.plugin.add(\"resizable\", \"grid\", {\n\n\tresize: function() {\n\t\tvar outerDimensions,\n\t\t\tthat = $(this).resizable( \"instance\" ),\n\t\t\to = that.options,\n\t\t\tcs = that.size,\n\t\t\tos = that.originalSize,\n\t\t\top = that.originalPosition,\n\t\t\ta = that.axis,\n\t\t\tgrid = typeof o.grid === \"number\" ? [ o.grid, o.grid ] : o.grid,\n\t\t\tgridX = (grid[0] || 1),\n\t\t\tgridY = (grid[1] || 1),\n\t\t\tox = Math.round((cs.width - os.width) / gridX) * gridX,\n\t\t\toy = Math.round((cs.height - os.height) / gridY) * gridY,\n\t\t\tnewWidth = os.width + ox,\n\t\t\tnewHeight = os.height + oy,\n\t\t\tisMaxWidth = o.maxWidth && (o.maxWidth < newWidth),\n\t\t\tisMaxHeight = o.maxHeight && (o.maxHeight < newHeight),\n\t\t\tisMinWidth = o.minWidth && (o.minWidth > newWidth),\n\t\t\tisMinHeight = o.minHeight && (o.minHeight > newHeight);\n\n\t\to.grid = grid;\n\n\t\tif (isMinWidth) {\n\t\t\tnewWidth += gridX;\n\t\t}\n\t\tif (isMinHeight) {\n\t\t\tnewHeight += gridY;\n\t\t}\n\t\tif (isMaxWidth) {\n\t\t\tnewWidth -= gridX;\n\t\t}\n\t\tif (isMaxHeight) {\n\t\t\tnewHeight -= gridY;\n\t\t}\n\n\t\tif (/^(se|s|e)$/.test(a)) {\n\t\t\tthat.size.width = newWidth;\n\t\t\tthat.size.height = newHeight;\n\t\t} else if (/^(ne)$/.test(a)) {\n\t\t\tthat.size.width = newWidth;\n\t\t\tthat.size.height = newHeight;\n\t\t\tthat.position.top = op.top - oy;\n\t\t} else if (/^(sw)$/.test(a)) {\n\t\t\tthat.size.width = newWidth;\n\t\t\tthat.size.height = newHeight;\n\t\t\tthat.position.left = op.left - ox;\n\t\t} else {\n\t\t\tif ( newHeight - gridY <= 0 || newWidth - gridX <= 0) {\n\t\t\t\touterDimensions = that._getPaddingPlusBorderDimensions( this );\n\t\t\t}\n\n\t\t\tif ( newHeight - gridY > 0 ) {\n\t\t\t\tthat.size.height = newHeight;\n\t\t\t\tthat.position.top = op.top - oy;\n\t\t\t} else {\n\t\t\t\tnewHeight = gridY - outerDimensions.height;\n\t\t\t\tthat.size.height = newHeight;\n\t\t\t\tthat.position.top = op.top + os.height - newHeight;\n\t\t\t}\n\t\t\tif ( newWidth - gridX > 0 ) {\n\t\t\t\tthat.size.width = newWidth;\n\t\t\t\tthat.position.left = op.left - ox;\n\t\t\t} else {\n\t\t\t\tnewWidth = gridY - outerDimensions.height;\n\t\t\t\tthat.size.width = newWidth;\n\t\t\t\tthat.position.left = op.left + os.width - newWidth;\n\t\t\t}\n\t\t}\n\t}\n\n});\n\nvar resizable = $.ui.resizable;\n\n\n/*!\n * jQuery UI Dialog 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/dialog/\n */\n\n\nvar dialog = $.widget( \"ui.dialog\", {\n\tversion: \"1.11.2\",\n\toptions: {\n\t\tappendTo: \"body\",\n\t\tautoOpen: true,\n\t\tbuttons: [],\n\t\tcloseOnEscape: true,\n\t\tcloseText: \"Close\",\n\t\tdialogClass: \"\",\n\t\tdraggable: true,\n\t\thide: null,\n\t\theight: \"auto\",\n\t\tmaxHeight: null,\n\t\tmaxWidth: null,\n\t\tminHeight: 150,\n\t\tminWidth: 150,\n\t\tmodal: false,\n\t\tposition: {\n\t\t\tmy: \"center\",\n\t\t\tat: \"center\",\n\t\t\tof: window,\n\t\t\tcollision: \"fit\",\n\t\t\t// Ensure the titlebar is always visible\n\t\t\tusing: function( pos ) {\n\t\t\t\tvar topOffset = $( this ).css( pos ).offset().top;\n\t\t\t\tif ( topOffset < 0 ) {\n\t\t\t\t\t$( this ).css( \"top\", pos.top - topOffset );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tresizable: true,\n\t\tshow: null,\n\t\ttitle: null,\n\t\twidth: 300,\n\n\t\t// callbacks\n\t\tbeforeClose: null,\n\t\tclose: null,\n\t\tdrag: null,\n\t\tdragStart: null,\n\t\tdragStop: null,\n\t\tfocus: null,\n\t\topen: null,\n\t\tresize: null,\n\t\tresizeStart: null,\n\t\tresizeStop: null\n\t},\n\n\tsizeRelatedOptions: {\n\t\tbuttons: true,\n\t\theight: true,\n\t\tmaxHeight: true,\n\t\tmaxWidth: true,\n\t\tminHeight: true,\n\t\tminWidth: true,\n\t\twidth: true\n\t},\n\n\tresizableRelatedOptions: {\n\t\tmaxHeight: true,\n\t\tmaxWidth: true,\n\t\tminHeight: true,\n\t\tminWidth: true\n\t},\n\n\t_create: function() {\n\t\tthis.originalCss = {\n\t\t\tdisplay: this.element[ 0 ].style.display,\n\t\t\twidth: this.element[ 0 ].style.width,\n\t\t\tminHeight: this.element[ 0 ].style.minHeight,\n\t\t\tmaxHeight: this.element[ 0 ].style.maxHeight,\n\t\t\theight: this.element[ 0 ].style.height\n\t\t};\n\t\tthis.originalPosition = {\n\t\t\tparent: this.element.parent(),\n\t\t\tindex: this.element.parent().children().index( this.element )\n\t\t};\n\t\tthis.originalTitle = this.element.attr( \"title\" );\n\t\tthis.options.title = this.options.title || this.originalTitle;\n\n\t\tthis._createWrapper();\n\n\t\tthis.element\n\t\t\t.show()\n\t\t\t.removeAttr( \"title\" )\n\t\t\t.addClass( \"ui-dialog-content ui-widget-content\" )\n\t\t\t.appendTo( this.uiDialog );\n\n\t\tthis._createTitlebar();\n\t\tthis._createButtonPane();\n\n\t\tif ( this.options.draggable && $.fn.draggable ) {\n\t\t\tthis._makeDraggable();\n\t\t}\n\t\tif ( this.options.resizable && $.fn.resizable ) {\n\t\t\tthis._makeResizable();\n\t\t}\n\n\t\tthis._isOpen = false;\n\n\t\tthis._trackFocus();\n\t},\n\n\t_init: function() {\n\t\tif ( this.options.autoOpen ) {\n\t\t\tthis.open();\n\t\t}\n\t},\n\n\t_appendTo: function() {\n\t\tvar element = this.options.appendTo;\n\t\tif ( element && (element.jquery || element.nodeType) ) {\n\t\t\treturn $( element );\n\t\t}\n\t\treturn this.document.find( element || \"body\" ).eq( 0 );\n\t},\n\n\t_destroy: function() {\n\t\tvar next,\n\t\t\toriginalPosition = this.originalPosition;\n\n\t\tthis._destroyOverlay();\n\n\t\tthis.element\n\t\t\t.removeUniqueId()\n\t\t\t.removeClass( \"ui-dialog-content ui-widget-content\" )\n\t\t\t.css( this.originalCss )\n\t\t\t// Without detaching first, the following becomes really slow\n\t\t\t.detach();\n\n\t\tthis.uiDialog.stop( true, true ).remove();\n\n\t\tif ( this.originalTitle ) {\n\t\t\tthis.element.attr( \"title\", this.originalTitle );\n\t\t}\n\n\t\tnext = originalPosition.parent.children().eq( originalPosition.index );\n\t\t// Don't try to place the dialog next to itself (#8613)\n\t\tif ( next.length && next[ 0 ] !== this.element[ 0 ] ) {\n\t\t\tnext.before( this.element );\n\t\t} else {\n\t\t\toriginalPosition.parent.append( this.element );\n\t\t}\n\t},\n\n\twidget: function() {\n\t\treturn this.uiDialog;\n\t},\n\n\tdisable: $.noop,\n\tenable: $.noop,\n\n\tclose: function( event ) {\n\t\tvar activeElement,\n\t\t\tthat = this;\n\n\t\tif ( !this._isOpen || this._trigger( \"beforeClose\", event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._isOpen = false;\n\t\tthis._focusedElement = null;\n\t\tthis._destroyOverlay();\n\t\tthis._untrackInstance();\n\n\t\tif ( !this.opener.filter( \":focusable\" ).focus().length ) {\n\n\t\t\t// support: IE9\n\t\t\t// IE9 throws an \"Unspecified error\" accessing document.activeElement from an <iframe>\n\t\t\ttry {\n\t\t\t\tactiveElement = this.document[ 0 ].activeElement;\n\n\t\t\t\t// Support: IE9, IE10\n\t\t\t\t// If the <body> is blurred, IE will switch windows, see #4520\n\t\t\t\tif ( activeElement && activeElement.nodeName.toLowerCase() !== \"body\" ) {\n\n\t\t\t\t\t// Hiding a focused element doesn't trigger blur in WebKit\n\t\t\t\t\t// so in case we have nothing to focus on, explicitly blur the active element\n\t\t\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=47182\n\t\t\t\t\t$( activeElement ).blur();\n\t\t\t\t}\n\t\t\t} catch ( error ) {}\n\t\t}\n\n\t\tthis._hide( this.uiDialog, this.options.hide, function() {\n\t\t\tthat._trigger( \"close\", event );\n\t\t});\n\t},\n\n\tisOpen: function() {\n\t\treturn this._isOpen;\n\t},\n\n\tmoveToTop: function() {\n\t\tthis._moveToTop();\n\t},\n\n\t_moveToTop: function( event, silent ) {\n\t\tvar moved = false,\n\t\t\tzIndicies = this.uiDialog.siblings( \".ui-front:visible\" ).map(function() {\n\t\t\t\treturn +$( this ).css( \"z-index\" );\n\t\t\t}).get(),\n\t\t\tzIndexMax = Math.max.apply( null, zIndicies );\n\n\t\tif ( zIndexMax >= +this.uiDialog.css( \"z-index\" ) ) {\n\t\t\tthis.uiDialog.css( \"z-index\", zIndexMax + 1 );\n\t\t\tmoved = true;\n\t\t}\n\n\t\tif ( moved && !silent ) {\n\t\t\tthis._trigger( \"focus\", event );\n\t\t}\n\t\treturn moved;\n\t},\n\n\topen: function() {\n\t\tvar that = this;\n\t\tif ( this._isOpen ) {\n\t\t\tif ( this._moveToTop() ) {\n\t\t\t\tthis._focusTabbable();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tthis._isOpen = true;\n\t\tthis.opener = $( this.document[ 0 ].activeElement );\n\n\t\tthis._size();\n\t\tthis._position();\n\t\tthis._createOverlay();\n\t\tthis._moveToTop( null, true );\n\n\t\t// Ensure the overlay is moved to the top with the dialog, but only when\n\t\t// opening. The overlay shouldn't move after the dialog is open so that\n\t\t// modeless dialogs opened after the modal dialog stack properly.\n\t\tif ( this.overlay ) {\n\t\t\tthis.overlay.css( \"z-index\", this.uiDialog.css( \"z-index\" ) - 1 );\n\t\t}\n\n\t\tthis._show( this.uiDialog, this.options.show, function() {\n\t\t\tthat._focusTabbable();\n\t\t\tthat._trigger( \"focus\" );\n\t\t});\n\n\t\t// Track the dialog immediately upon openening in case a focus event\n\t\t// somehow occurs outside of the dialog before an element inside the\n\t\t// dialog is focused (#10152)\n\t\tthis._makeFocusTarget();\n\n\t\tthis._trigger( \"open\" );\n\t},\n\n\t_focusTabbable: function() {\n\t\t// Set focus to the first match:\n\t\t// 1. An element that was focused previously\n\t\t// 2. First element inside the dialog matching [autofocus]\n\t\t// 3. Tabbable element inside the content element\n\t\t// 4. Tabbable element inside the buttonpane\n\t\t// 5. The close button\n\t\t// 6. The dialog itself\n\t\tvar hasFocus = this._focusedElement;\n\t\tif ( !hasFocus ) {\n\t\t\thasFocus = this.element.find( \"[autofocus]\" );\n\t\t}\n\t\tif ( !hasFocus.length ) {\n\t\t\thasFocus = this.element.find( \":tabbable\" );\n\t\t}\n\t\tif ( !hasFocus.length ) {\n\t\t\thasFocus = this.uiDialogButtonPane.find( \":tabbable\" );\n\t\t}\n\t\tif ( !hasFocus.length ) {\n\t\t\thasFocus = this.uiDialogTitlebarClose.filter( \":tabbable\" );\n\t\t}\n\t\tif ( !hasFocus.length ) {\n\t\t\thasFocus = this.uiDialog;\n\t\t}\n\t\thasFocus.eq( 0 ).focus();\n\t},\n\n\t_keepFocus: function( event ) {\n\t\tfunction checkFocus() {\n\t\t\tvar activeElement = this.document[0].activeElement,\n\t\t\t\tisActive = this.uiDialog[0] === activeElement ||\n\t\t\t\t\t$.contains( this.uiDialog[0], activeElement );\n\t\t\tif ( !isActive ) {\n\t\t\t\tthis._focusTabbable();\n\t\t\t}\n\t\t}\n\t\tevent.preventDefault();\n\t\tcheckFocus.call( this );\n\t\t// support: IE\n\t\t// IE <= 8 doesn't prevent moving focus even with event.preventDefault()\n\t\t// so we check again later\n\t\tthis._delay( checkFocus );\n\t},\n\n\t_createWrapper: function() {\n\t\tthis.uiDialog = $(\"<div>\")\n\t\t\t.addClass( \"ui-dialog ui-widget ui-widget-content ui-corner-all ui-front \" +\n\t\t\t\tthis.options.dialogClass )\n\t\t\t.hide()\n\t\t\t.attr({\n\t\t\t\t// Setting tabIndex makes the div focusable\n\t\t\t\ttabIndex: -1,\n\t\t\t\trole: \"dialog\"\n\t\t\t})\n\t\t\t.appendTo( this._appendTo() );\n\n\t\tthis._on( this.uiDialog, {\n\t\t\tkeydown: function( event ) {\n\t\t\t\tif ( this.options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode &&\n\t\t\t\t\t\tevent.keyCode === $.ui.keyCode.ESCAPE ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tthis.close( event );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// prevent tabbing out of dialogs\n\t\t\t\tif ( event.keyCode !== $.ui.keyCode.TAB || event.isDefaultPrevented() ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tvar tabbables = this.uiDialog.find( \":tabbable\" ),\n\t\t\t\t\tfirst = tabbables.filter( \":first\" ),\n\t\t\t\t\tlast = tabbables.filter( \":last\" );\n\n\t\t\t\tif ( ( event.target === last[0] || event.target === this.uiDialog[0] ) && !event.shiftKey ) {\n\t\t\t\t\tthis._delay(function() {\n\t\t\t\t\t\tfirst.focus();\n\t\t\t\t\t});\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t} else if ( ( event.target === first[0] || event.target === this.uiDialog[0] ) && event.shiftKey ) {\n\t\t\t\t\tthis._delay(function() {\n\t\t\t\t\t\tlast.focus();\n\t\t\t\t\t});\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t},\n\t\t\tmousedown: function( event ) {\n\t\t\t\tif ( this._moveToTop( event ) ) {\n\t\t\t\t\tthis._focusTabbable();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// We assume that any existing aria-describedby attribute means\n\t\t// that the dialog content is marked up properly\n\t\t// otherwise we brute force the content as the description\n\t\tif ( !this.element.find( \"[aria-describedby]\" ).length ) {\n\t\t\tthis.uiDialog.attr({\n\t\t\t\t\"aria-describedby\": this.element.uniqueId().attr( \"id\" )\n\t\t\t});\n\t\t}\n\t},\n\n\t_createTitlebar: function() {\n\t\tvar uiDialogTitle;\n\n\t\tthis.uiDialogTitlebar = $( \"<div>\" )\n\t\t\t.addClass( \"ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix\" )\n\t\t\t.prependTo( this.uiDialog );\n\t\tthis._on( this.uiDialogTitlebar, {\n\t\t\tmousedown: function( event ) {\n\t\t\t\t// Don't prevent click on close button (#8838)\n\t\t\t\t// Focusing a dialog that is partially scrolled out of view\n\t\t\t\t// causes the browser to scroll it into view, preventing the click event\n\t\t\t\tif ( !$( event.target ).closest( \".ui-dialog-titlebar-close\" ) ) {\n\t\t\t\t\t// Dialog isn't getting focus when dragging (#8063)\n\t\t\t\t\tthis.uiDialog.focus();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// support: IE\n\t\t// Use type=\"button\" to prevent enter keypresses in textboxes from closing the\n\t\t// dialog in IE (#9312)\n\t\tthis.uiDialogTitlebarClose = $( \"<button type='button'></button>\" )\n\t\t\t.button({\n\t\t\t\tlabel: this.options.closeText,\n\t\t\t\ticons: {\n\t\t\t\t\tprimary: \"ui-icon-closethick\"\n\t\t\t\t},\n\t\t\t\ttext: false\n\t\t\t})\n\t\t\t.addClass( \"ui-dialog-titlebar-close\" )\n\t\t\t.appendTo( this.uiDialogTitlebar );\n\t\tthis._on( this.uiDialogTitlebarClose, {\n\t\t\tclick: function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tthis.close( event );\n\t\t\t}\n\t\t});\n\n\t\tuiDialogTitle = $( \"<span>\" )\n\t\t\t.uniqueId()\n\t\t\t.addClass( \"ui-dialog-title\" )\n\t\t\t.prependTo( this.uiDialogTitlebar );\n\t\tthis._title( uiDialogTitle );\n\n\t\tthis.uiDialog.attr({\n\t\t\t\"aria-labelledby\": uiDialogTitle.attr( \"id\" )\n\t\t});\n\t},\n\n\t_title: function( title ) {\n\t\tif ( !this.options.title ) {\n\t\t\ttitle.html( \" \" );\n\t\t}\n\t\ttitle.text( this.options.title );\n\t},\n\n\t_createButtonPane: function() {\n\t\tthis.uiDialogButtonPane = $( \"<div>\" )\n\t\t\t.addClass( \"ui-dialog-buttonpane ui-widget-content ui-helper-clearfix\" );\n\n\t\tthis.uiButtonSet = $( \"<div>\" )\n\t\t\t.addClass( \"ui-dialog-buttonset\" )\n\t\t\t.appendTo( this.uiDialogButtonPane );\n\n\t\tthis._createButtons();\n\t},\n\n\t_createButtons: function() {\n\t\tvar that = this,\n\t\t\tbuttons = this.options.buttons;\n\n\t\t// if we already have a button pane, remove it\n\t\tthis.uiDialogButtonPane.remove();\n\t\tthis.uiButtonSet.empty();\n\n\t\tif ( $.isEmptyObject( buttons ) || ($.isArray( buttons ) && !buttons.length) ) {\n\t\t\tthis.uiDialog.removeClass( \"ui-dialog-buttons\" );\n\t\t\treturn;\n\t\t}\n\n\t\t$.each( buttons, function( name, props ) {\n\t\t\tvar click, buttonOptions;\n\t\t\tprops = $.isFunction( props ) ?\n\t\t\t\t{ click: props, text: name } :\n\t\t\t\tprops;\n\t\t\t// Default to a non-submitting button\n\t\t\tprops = $.extend( { type: \"button\" }, props );\n\t\t\t// Change the context for the click callback to be the main element\n\t\t\tclick = props.click;\n\t\t\tprops.click = function() {\n\t\t\t\tclick.apply( that.element[ 0 ], arguments );\n\t\t\t};\n\t\t\tbuttonOptions = {\n\t\t\t\ticons: props.icons,\n\t\t\t\ttext: props.showText\n\t\t\t};\n\t\t\tdelete props.icons;\n\t\t\tdelete props.showText;\n\t\t\t$( \"<button></button>\", props )\n\t\t\t\t.button( buttonOptions )\n\t\t\t\t.appendTo( that.uiButtonSet );\n\t\t});\n\t\tthis.uiDialog.addClass( \"ui-dialog-buttons\" );\n\t\tthis.uiDialogButtonPane.appendTo( this.uiDialog );\n\t},\n\n\t_makeDraggable: function() {\n\t\tvar that = this,\n\t\t\toptions = this.options;\n\n\t\tfunction filteredUi( ui ) {\n\t\t\treturn {\n\t\t\t\tposition: ui.position,\n\t\t\t\toffset: ui.offset\n\t\t\t};\n\t\t}\n\n\t\tthis.uiDialog.draggable({\n\t\t\tcancel: \".ui-dialog-content, .ui-dialog-titlebar-close\",\n\t\t\thandle: \".ui-dialog-titlebar\",\n\t\t\tcontainment: \"document\",\n\t\t\tstart: function( event, ui ) {\n\t\t\t\t$( this ).addClass( \"ui-dialog-dragging\" );\n\t\t\t\tthat._blockFrames();\n\t\t\t\tthat._trigger( \"dragStart\", event, filteredUi( ui ) );\n\t\t\t},\n\t\t\tdrag: function( event, ui ) {\n\t\t\t\tthat._trigger( \"drag\", event, filteredUi( ui ) );\n\t\t\t},\n\t\t\tstop: function( event, ui ) {\n\t\t\t\tvar left = ui.offset.left - that.document.scrollLeft(),\n\t\t\t\t\ttop = ui.offset.top - that.document.scrollTop();\n\n\t\t\t\toptions.position = {\n\t\t\t\t\tmy: \"left top\",\n\t\t\t\t\tat: \"left\" + (left >= 0 ? \"+\" : \"\") + left + \" \" +\n\t\t\t\t\t\t\"top\" + (top >= 0 ? \"+\" : \"\") + top,\n\t\t\t\t\tof: that.window\n\t\t\t\t};\n\t\t\t\t$( this ).removeClass( \"ui-dialog-dragging\" );\n\t\t\t\tthat._unblockFrames();\n\t\t\t\tthat._trigger( \"dragStop\", event, filteredUi( ui ) );\n\t\t\t}\n\t\t});\n\t},\n\n\t_makeResizable: function() {\n\t\tvar that = this,\n\t\t\toptions = this.options,\n\t\t\thandles = options.resizable,\n\t\t\t// .ui-resizable has position: relative defined in the stylesheet\n\t\t\t// but dialogs have to use absolute or fixed positioning\n\t\t\tposition = this.uiDialog.css(\"position\"),\n\t\t\tresizeHandles = typeof handles === \"string\" ?\n\t\t\t\thandles\t:\n\t\t\t\t\"n,e,s,w,se,sw,ne,nw\";\n\n\t\tfunction filteredUi( ui ) {\n\t\t\treturn {\n\t\t\t\toriginalPosition: ui.originalPosition,\n\t\t\t\toriginalSize: ui.originalSize,\n\t\t\t\tposition: ui.position,\n\t\t\t\tsize: ui.size\n\t\t\t};\n\t\t}\n\n\t\tthis.uiDialog.resizable({\n\t\t\tcancel: \".ui-dialog-content\",\n\t\t\tcontainment: \"document\",\n\t\t\talsoResize: this.element,\n\t\t\tmaxWidth: options.maxWidth,\n\t\t\tmaxHeight: options.maxHeight,\n\t\t\tminWidth: options.minWidth,\n\t\t\tminHeight: this._minHeight(),\n\t\t\thandles: resizeHandles,\n\t\t\tstart: function( event, ui ) {\n\t\t\t\t$( this ).addClass( \"ui-dialog-resizing\" );\n\t\t\t\tthat._blockFrames();\n\t\t\t\tthat._trigger( \"resizeStart\", event, filteredUi( ui ) );\n\t\t\t},\n\t\t\tresize: function( event, ui ) {\n\t\t\t\tthat._trigger( \"resize\", event, filteredUi( ui ) );\n\t\t\t},\n\t\t\tstop: function( event, ui ) {\n\t\t\t\tvar offset = that.uiDialog.offset(),\n\t\t\t\t\tleft = offset.left - that.document.scrollLeft(),\n\t\t\t\t\ttop = offset.top - that.document.scrollTop();\n\n\t\t\t\toptions.height = that.uiDialog.height();\n\t\t\t\toptions.width = that.uiDialog.width();\n\t\t\t\toptions.position = {\n\t\t\t\t\tmy: \"left top\",\n\t\t\t\t\tat: \"left\" + (left >= 0 ? \"+\" : \"\") + left + \" \" +\n\t\t\t\t\t\t\"top\" + (top >= 0 ? \"+\" : \"\") + top,\n\t\t\t\t\tof: that.window\n\t\t\t\t};\n\t\t\t\t$( this ).removeClass( \"ui-dialog-resizing\" );\n\t\t\t\tthat._unblockFrames();\n\t\t\t\tthat._trigger( \"resizeStop\", event, filteredUi( ui ) );\n\t\t\t}\n\t\t})\n\t\t.css( \"position\", position );\n\t},\n\n\t_trackFocus: function() {\n\t\tthis._on( this.widget(), {\n\t\t\tfocusin: function( event ) {\n\t\t\t\tthis._makeFocusTarget();\n\t\t\t\tthis._focusedElement = $( event.target );\n\t\t\t}\n\t\t});\n\t},\n\n\t_makeFocusTarget: function() {\n\t\tthis._untrackInstance();\n\t\tthis._trackingInstances().unshift( this );\n\t},\n\n\t_untrackInstance: function() {\n\t\tvar instances = this._trackingInstances(),\n\t\t\texists = $.inArray( this, instances );\n\t\tif ( exists !== -1 ) {\n\t\t\tinstances.splice( exists, 1 );\n\t\t}\n\t},\n\n\t_trackingInstances: function() {\n\t\tvar instances = this.document.data( \"ui-dialog-instances\" );\n\t\tif ( !instances ) {\n\t\t\tinstances = [];\n\t\t\tthis.document.data( \"ui-dialog-instances\", instances );\n\t\t}\n\t\treturn instances;\n\t},\n\n\t_minHeight: function() {\n\t\tvar options = this.options;\n\n\t\treturn options.height === \"auto\" ?\n\t\t\toptions.minHeight :\n\t\t\tMath.min( options.minHeight, options.height );\n\t},\n\n\t_position: function() {\n\t\t// Need to show the dialog to get the actual offset in the position plugin\n\t\tvar isVisible = this.uiDialog.is( \":visible\" );\n\t\tif ( !isVisible ) {\n\t\t\tthis.uiDialog.show();\n\t\t}\n\t\tthis.uiDialog.position( this.options.position );\n\t\tif ( !isVisible ) {\n\t\t\tthis.uiDialog.hide();\n\t\t}\n\t},\n\n\t_setOptions: function( options ) {\n\t\tvar that = this,\n\t\t\tresize = false,\n\t\t\tresizableOptions = {};\n\n\t\t$.each( options, function( key, value ) {\n\t\t\tthat._setOption( key, value );\n\n\t\t\tif ( key in that.sizeRelatedOptions ) {\n\t\t\t\tresize = true;\n\t\t\t}\n\t\t\tif ( key in that.resizableRelatedOptions ) {\n\t\t\t\tresizableOptions[ key ] = value;\n\t\t\t}\n\t\t});\n\n\t\tif ( resize ) {\n\t\t\tthis._size();\n\t\t\tthis._position();\n\t\t}\n\t\tif ( this.uiDialog.is( \":data(ui-resizable)\" ) ) {\n\t\t\tthis.uiDialog.resizable( \"option\", resizableOptions );\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tvar isDraggable, isResizable,\n\t\t\tuiDialog = this.uiDialog;\n\n\t\tif ( key === \"dialogClass\" ) {\n\t\t\tuiDialog\n\t\t\t\t.removeClass( this.options.dialogClass )\n\t\t\t\t.addClass( value );\n\t\t}\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\tif ( key === \"appendTo\" ) {\n\t\t\tthis.uiDialog.appendTo( this._appendTo() );\n\t\t}\n\n\t\tif ( key === \"buttons\" ) {\n\t\t\tthis._createButtons();\n\t\t}\n\n\t\tif ( key === \"closeText\" ) {\n\t\t\tthis.uiDialogTitlebarClose.button({\n\t\t\t\t// Ensure that we always pass a string\n\t\t\t\tlabel: \"\" + value\n\t\t\t});\n\t\t}\n\n\t\tif ( key === \"draggable\" ) {\n\t\t\tisDraggable = uiDialog.is( \":data(ui-draggable)\" );\n\t\t\tif ( isDraggable && !value ) {\n\t\t\t\tuiDialog.draggable( \"destroy\" );\n\t\t\t}\n\n\t\t\tif ( !isDraggable && value ) {\n\t\t\t\tthis._makeDraggable();\n\t\t\t}\n\t\t}\n\n\t\tif ( key === \"position\" ) {\n\t\t\tthis._position();\n\t\t}\n\n\t\tif ( key === \"resizable\" ) {\n\t\t\t// currently resizable, becoming non-resizable\n\t\t\tisResizable = uiDialog.is( \":data(ui-resizable)\" );\n\t\t\tif ( isResizable && !value ) {\n\t\t\t\tuiDialog.resizable( \"destroy\" );\n\t\t\t}\n\n\t\t\t// currently resizable, changing handles\n\t\t\tif ( isResizable && typeof value === \"string\" ) {\n\t\t\t\tuiDialog.resizable( \"option\", \"handles\", value );\n\t\t\t}\n\n\t\t\t// currently non-resizable, becoming resizable\n\t\t\tif ( !isResizable && value !== false ) {\n\t\t\t\tthis._makeResizable();\n\t\t\t}\n\t\t}\n\n\t\tif ( key === \"title\" ) {\n\t\t\tthis._title( this.uiDialogTitlebar.find( \".ui-dialog-title\" ) );\n\t\t}\n\t},\n\n\t_size: function() {\n\t\t// If the user has resized the dialog, the .ui-dialog and .ui-dialog-content\n\t\t// divs will both have width and height set, so we need to reset them\n\t\tvar nonContentHeight, minContentHeight, maxContentHeight,\n\t\t\toptions = this.options;\n\n\t\t// Reset content sizing\n\t\tthis.element.show().css({\n\t\t\twidth: \"auto\",\n\t\t\tminHeight: 0,\n\t\t\tmaxHeight: \"none\",\n\t\t\theight: 0\n\t\t});\n\n\t\tif ( options.minWidth > options.width ) {\n\t\t\toptions.width = options.minWidth;\n\t\t}\n\n\t\t// reset wrapper sizing\n\t\t// determine the height of all the non-content elements\n\t\tnonContentHeight = this.uiDialog.css({\n\t\t\t\theight: \"auto\",\n\t\t\t\twidth: options.width\n\t\t\t})\n\t\t\t.outerHeight();\n\t\tminContentHeight = Math.max( 0, options.minHeight - nonContentHeight );\n\t\tmaxContentHeight = typeof options.maxHeight === \"number\" ?\n\t\t\tMath.max( 0, options.maxHeight - nonContentHeight ) :\n\t\t\t\"none\";\n\n\t\tif ( options.height === \"auto\" ) {\n\t\t\tthis.element.css({\n\t\t\t\tminHeight: minContentHeight,\n\t\t\t\tmaxHeight: maxContentHeight,\n\t\t\t\theight: \"auto\"\n\t\t\t});\n\t\t} else {\n\t\t\tthis.element.height( Math.max( 0, options.height - nonContentHeight ) );\n\t\t}\n\n\t\tif ( this.uiDialog.is( \":data(ui-resizable)\" ) ) {\n\t\t\tthis.uiDialog.resizable( \"option\", \"minHeight\", this._minHeight() );\n\t\t}\n\t},\n\n\t_blockFrames: function() {\n\t\tthis.iframeBlocks = this.document.find( \"iframe\" ).map(function() {\n\t\t\tvar iframe = $( this );\n\n\t\t\treturn $( \"<div>\" )\n\t\t\t\t.css({\n\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\twidth: iframe.outerWidth(),\n\t\t\t\t\theight: iframe.outerHeight()\n\t\t\t\t})\n\t\t\t\t.appendTo( iframe.parent() )\n\t\t\t\t.offset( iframe.offset() )[0];\n\t\t});\n\t},\n\n\t_unblockFrames: function() {\n\t\tif ( this.iframeBlocks ) {\n\t\t\tthis.iframeBlocks.remove();\n\t\t\tdelete this.iframeBlocks;\n\t\t}\n\t},\n\n\t_allowInteraction: function( event ) {\n\t\tif ( $( event.target ).closest( \".ui-dialog\" ).length ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// TODO: Remove hack when datepicker implements\n\t\t// the .ui-front logic (#8989)\n\t\treturn !!$( event.target ).closest( \".ui-datepicker\" ).length;\n\t},\n\n\t_createOverlay: function() {\n\t\tif ( !this.options.modal ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// We use a delay in case the overlay is created from an\n\t\t// event that we're going to be cancelling (#2804)\n\t\tvar isOpening = true;\n\t\tthis._delay(function() {\n\t\t\tisOpening = false;\n\t\t});\n\n\t\tif ( !this.document.data( \"ui-dialog-overlays\" ) ) {\n\n\t\t\t// Prevent use of anchors and inputs\n\t\t\t// Using _on() for an event handler shared across many instances is\n\t\t\t// safe because the dialogs stack and must be closed in reverse order\n\t\t\tthis._on( this.document, {\n\t\t\t\tfocusin: function( event ) {\n\t\t\t\t\tif ( isOpening ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !this._allowInteraction( event ) ) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tthis._trackingInstances()[ 0 ]._focusTabbable();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tthis.overlay = $( \"<div>\" )\n\t\t\t.addClass( \"ui-widget-overlay ui-front\" )\n\t\t\t.appendTo( this._appendTo() );\n\t\tthis._on( this.overlay, {\n\t\t\tmousedown: \"_keepFocus\"\n\t\t});\n\t\tthis.document.data( \"ui-dialog-overlays\",\n\t\t\t(this.document.data( \"ui-dialog-overlays\" ) || 0) + 1 );\n\t},\n\n\t_destroyOverlay: function() {\n\t\tif ( !this.options.modal ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this.overlay ) {\n\t\t\tvar overlays = this.document.data( \"ui-dialog-overlays\" ) - 1;\n\n\t\t\tif ( !overlays ) {\n\t\t\t\tthis.document\n\t\t\t\t\t.unbind( \"focusin\" )\n\t\t\t\t\t.removeData( \"ui-dialog-overlays\" );\n\t\t\t} else {\n\t\t\t\tthis.document.data( \"ui-dialog-overlays\", overlays );\n\t\t\t}\n\n\t\t\tthis.overlay.remove();\n\t\t\tthis.overlay = null;\n\t\t}\n\t}\n});\n\n\n/*!\n * jQuery UI Droppable 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/droppable/\n */\n\n\n$.widget( \"ui.droppable\", {\n\tversion: \"1.11.2\",\n\twidgetEventPrefix: \"drop\",\n\toptions: {\n\t\taccept: \"*\",\n\t\tactiveClass: false,\n\t\taddClasses: true,\n\t\tgreedy: false,\n\t\thoverClass: false,\n\t\tscope: \"default\",\n\t\ttolerance: \"intersect\",\n\n\t\t// callbacks\n\t\tactivate: null,\n\t\tdeactivate: null,\n\t\tdrop: null,\n\t\tout: null,\n\t\tover: null\n\t},\n\t_create: function() {\n\n\t\tvar proportions,\n\t\t\to = this.options,\n\t\t\taccept = o.accept;\n\n\t\tthis.isover = false;\n\t\tthis.isout = true;\n\n\t\tthis.accept = $.isFunction( accept ) ? accept : function( d ) {\n\t\t\treturn d.is( accept );\n\t\t};\n\n\t\tthis.proportions = function( /* valueToWrite */ ) {\n\t\t\tif ( arguments.length ) {\n\t\t\t\t// Store the droppable's proportions\n\t\t\t\tproportions = arguments[ 0 ];\n\t\t\t} else {\n\t\t\t\t// Retrieve or derive the droppable's proportions\n\t\t\t\treturn proportions ?\n\t\t\t\t\tproportions :\n\t\t\t\t\tproportions = {\n\t\t\t\t\t\twidth: this.element[ 0 ].offsetWidth,\n\t\t\t\t\t\theight: this.element[ 0 ].offsetHeight\n\t\t\t\t\t};\n\t\t\t}\n\t\t};\n\n\t\tthis._addToManager( o.scope );\n\n\t\to.addClasses && this.element.addClass( \"ui-droppable\" );\n\n\t},\n\n\t_addToManager: function( scope ) {\n\t\t// Add the reference and positions to the manager\n\t\t$.ui.ddmanager.droppables[ scope ] = $.ui.ddmanager.droppables[ scope ] || [];\n\t\t$.ui.ddmanager.droppables[ scope ].push( this );\n\t},\n\n\t_splice: function( drop ) {\n\t\tvar i = 0;\n\t\tfor ( ; i < drop.length; i++ ) {\n\t\t\tif ( drop[ i ] === this ) {\n\t\t\t\tdrop.splice( i, 1 );\n\t\t\t}\n\t\t}\n\t},\n\n\t_destroy: function() {\n\t\tvar drop = $.ui.ddmanager.droppables[ this.options.scope ];\n\n\t\tthis._splice( drop );\n\n\t\tthis.element.removeClass( \"ui-droppable ui-droppable-disabled\" );\n\t},\n\n\t_setOption: function( key, value ) {\n\n\t\tif ( key === \"accept\" ) {\n\t\t\tthis.accept = $.isFunction( value ) ? value : function( d ) {\n\t\t\t\treturn d.is( value );\n\t\t\t};\n\t\t} else if ( key === \"scope\" ) {\n\t\t\tvar drop = $.ui.ddmanager.droppables[ this.options.scope ];\n\n\t\t\tthis._splice( drop );\n\t\t\tthis._addToManager( value );\n\t\t}\n\n\t\tthis._super( key, value );\n\t},\n\n\t_activate: function( event ) {\n\t\tvar draggable = $.ui.ddmanager.current;\n\t\tif ( this.options.activeClass ) {\n\t\t\tthis.element.addClass( this.options.activeClass );\n\t\t}\n\t\tif ( draggable ){\n\t\t\tthis._trigger( \"activate\", event, this.ui( draggable ) );\n\t\t}\n\t},\n\n\t_deactivate: function( event ) {\n\t\tvar draggable = $.ui.ddmanager.current;\n\t\tif ( this.options.activeClass ) {\n\t\t\tthis.element.removeClass( this.options.activeClass );\n\t\t}\n\t\tif ( draggable ){\n\t\t\tthis._trigger( \"deactivate\", event, this.ui( draggable ) );\n\t\t}\n\t},\n\n\t_over: function( event ) {\n\n\t\tvar draggable = $.ui.ddmanager.current;\n\n\t\t// Bail if draggable and droppable are same element\n\t\tif ( !draggable || ( draggable.currentItem || draggable.element )[ 0 ] === this.element[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this.accept.call( this.element[ 0 ], ( draggable.currentItem || draggable.element ) ) ) {\n\t\t\tif ( this.options.hoverClass ) {\n\t\t\t\tthis.element.addClass( this.options.hoverClass );\n\t\t\t}\n\t\t\tthis._trigger( \"over\", event, this.ui( draggable ) );\n\t\t}\n\n\t},\n\n\t_out: function( event ) {\n\n\t\tvar draggable = $.ui.ddmanager.current;\n\n\t\t// Bail if draggable and droppable are same element\n\t\tif ( !draggable || ( draggable.currentItem || draggable.element )[ 0 ] === this.element[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this.accept.call( this.element[ 0 ], ( draggable.currentItem || draggable.element ) ) ) {\n\t\t\tif ( this.options.hoverClass ) {\n\t\t\t\tthis.element.removeClass( this.options.hoverClass );\n\t\t\t}\n\t\t\tthis._trigger( \"out\", event, this.ui( draggable ) );\n\t\t}\n\n\t},\n\n\t_drop: function( event, custom ) {\n\n\t\tvar draggable = custom || $.ui.ddmanager.current,\n\t\t\tchildrenIntersection = false;\n\n\t\t// Bail if draggable and droppable are same element\n\t\tif ( !draggable || ( draggable.currentItem || draggable.element )[ 0 ] === this.element[ 0 ] ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.element.find( \":data(ui-droppable)\" ).not( \".ui-draggable-dragging\" ).each(function() {\n\t\t\tvar inst = $( this ).droppable( \"instance\" );\n\t\t\tif (\n\t\t\t\tinst.options.greedy &&\n\t\t\t\t!inst.options.disabled &&\n\t\t\t\tinst.options.scope === draggable.options.scope &&\n\t\t\t\tinst.accept.call( inst.element[ 0 ], ( draggable.currentItem || draggable.element ) ) &&\n\t\t\t\t$.ui.intersect( draggable, $.extend( inst, { offset: inst.element.offset() } ), inst.options.tolerance, event )\n\t\t\t) { childrenIntersection = true; return false; }\n\t\t});\n\t\tif ( childrenIntersection ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( this.accept.call( this.element[ 0 ], ( draggable.currentItem || draggable.element ) ) ) {\n\t\t\tif ( this.options.activeClass ) {\n\t\t\t\tthis.element.removeClass( this.options.activeClass );\n\t\t\t}\n\t\t\tif ( this.options.hoverClass ) {\n\t\t\t\tthis.element.removeClass( this.options.hoverClass );\n\t\t\t}\n\t\t\tthis._trigger( \"drop\", event, this.ui( draggable ) );\n\t\t\treturn this.element;\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\tui: function( c ) {\n\t\treturn {\n\t\t\tdraggable: ( c.currentItem || c.element ),\n\t\t\thelper: c.helper,\n\t\t\tposition: c.position,\n\t\t\toffset: c.positionAbs\n\t\t};\n\t}\n\n});\n\n$.ui.intersect = (function() {\n\tfunction isOverAxis( x, reference, size ) {\n\t\treturn ( x >= reference ) && ( x < ( reference + size ) );\n\t}\n\n\treturn function( draggable, droppable, toleranceMode, event ) {\n\n\t\tif ( !droppable.offset ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar x1 = ( draggable.positionAbs || draggable.position.absolute ).left + draggable.margins.left,\n\t\t\ty1 = ( draggable.positionAbs || draggable.position.absolute ).top + draggable.margins.top,\n\t\t\tx2 = x1 + draggable.helperProportions.width,\n\t\t\ty2 = y1 + draggable.helperProportions.height,\n\t\t\tl = droppable.offset.left,\n\t\t\tt = droppable.offset.top,\n\t\t\tr = l + droppable.proportions().width,\n\t\t\tb = t + droppable.proportions().height;\n\n\t\tswitch ( toleranceMode ) {\n\t\tcase \"fit\":\n\t\t\treturn ( l <= x1 && x2 <= r && t <= y1 && y2 <= b );\n\t\tcase \"intersect\":\n\t\t\treturn ( l < x1 + ( draggable.helperProportions.width / 2 ) && // Right Half\n\t\t\t\tx2 - ( draggable.helperProportions.width / 2 ) < r && // Left Half\n\t\t\t\tt < y1 + ( draggable.helperProportions.height / 2 ) && // Bottom Half\n\t\t\t\ty2 - ( draggable.helperProportions.height / 2 ) < b ); // Top Half\n\t\tcase \"pointer\":\n\t\t\treturn isOverAxis( event.pageY, t, droppable.proportions().height ) && isOverAxis( event.pageX, l, droppable.proportions().width );\n\t\tcase \"touch\":\n\t\t\treturn (\n\t\t\t\t( y1 >= t && y1 <= b ) || // Top edge touching\n\t\t\t\t( y2 >= t && y2 <= b ) || // Bottom edge touching\n\t\t\t\t( y1 < t && y2 > b ) // Surrounded vertically\n\t\t\t) && (\n\t\t\t\t( x1 >= l && x1 <= r ) || // Left edge touching\n\t\t\t\t( x2 >= l && x2 <= r ) || // Right edge touching\n\t\t\t\t( x1 < l && x2 > r ) // Surrounded horizontally\n\t\t\t);\n\t\tdefault:\n\t\t\treturn false;\n\t\t}\n\t};\n})();\n\n/*\n\tThis manager tracks offsets of draggables and droppables\n*/\n$.ui.ddmanager = {\n\tcurrent: null,\n\tdroppables: { \"default\": [] },\n\tprepareOffsets: function( t, event ) {\n\n\t\tvar i, j,\n\t\t\tm = $.ui.ddmanager.droppables[ t.options.scope ] || [],\n\t\t\ttype = event ? event.type : null, // workaround for #2317\n\t\t\tlist = ( t.currentItem || t.element ).find( \":data(ui-droppable)\" ).addBack();\n\n\t\tdroppablesLoop: for ( i = 0; i < m.length; i++ ) {\n\n\t\t\t// No disabled and non-accepted\n\t\t\tif ( m[ i ].options.disabled || ( t && !m[ i ].accept.call( m[ i ].element[ 0 ], ( t.currentItem || t.element ) ) ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Filter out elements in the current dragged item\n\t\t\tfor ( j = 0; j < list.length; j++ ) {\n\t\t\t\tif ( list[ j ] === m[ i ].element[ 0 ] ) {\n\t\t\t\t\tm[ i ].proportions().height = 0;\n\t\t\t\t\tcontinue droppablesLoop;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tm[ i ].visible = m[ i ].element.css( \"display\" ) !== \"none\";\n\t\t\tif ( !m[ i ].visible ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Activate the droppable if used directly from draggables\n\t\t\tif ( type === \"mousedown\" ) {\n\t\t\t\tm[ i ]._activate.call( m[ i ], event );\n\t\t\t}\n\n\t\t\tm[ i ].offset = m[ i ].element.offset();\n\t\t\tm[ i ].proportions({ width: m[ i ].element[ 0 ].offsetWidth, height: m[ i ].element[ 0 ].offsetHeight });\n\n\t\t}\n\n\t},\n\tdrop: function( draggable, event ) {\n\n\t\tvar dropped = false;\n\t\t// Create a copy of the droppables in case the list changes during the drop (#9116)\n\t\t$.each( ( $.ui.ddmanager.droppables[ draggable.options.scope ] || [] ).slice(), function() {\n\n\t\t\tif ( !this.options ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( !this.options.disabled && this.visible && $.ui.intersect( draggable, this, this.options.tolerance, event ) ) {\n\t\t\t\tdropped = this._drop.call( this, event ) || dropped;\n\t\t\t}\n\n\t\t\tif ( !this.options.disabled && this.visible && this.accept.call( this.element[ 0 ], ( draggable.currentItem || draggable.element ) ) ) {\n\t\t\t\tthis.isout = true;\n\t\t\t\tthis.isover = false;\n\t\t\t\tthis._deactivate.call( this, event );\n\t\t\t}\n\n\t\t});\n\t\treturn dropped;\n\n\t},\n\tdragStart: function( draggable, event ) {\n\t\t// Listen for scrolling so that if the dragging causes scrolling the position of the droppables can be recalculated (see #5003)\n\t\tdraggable.element.parentsUntil( \"body\" ).bind( \"scroll.droppable\", function() {\n\t\t\tif ( !draggable.options.refreshPositions ) {\n\t\t\t\t$.ui.ddmanager.prepareOffsets( draggable, event );\n\t\t\t}\n\t\t});\n\t},\n\tdrag: function( draggable, event ) {\n\n\t\t// If you have a highly dynamic page, you might try this option. It renders positions every time you move the mouse.\n\t\tif ( draggable.options.refreshPositions ) {\n\t\t\t$.ui.ddmanager.prepareOffsets( draggable, event );\n\t\t}\n\n\t\t// Run through all droppables and check their positions based on specific tolerance options\n\t\t$.each( $.ui.ddmanager.droppables[ draggable.options.scope ] || [], function() {\n\n\t\t\tif ( this.options.disabled || this.greedyChild || !this.visible ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar parentInstance, scope, parent,\n\t\t\t\tintersects = $.ui.intersect( draggable, this, this.options.tolerance, event ),\n\t\t\t\tc = !intersects && this.isover ? \"isout\" : ( intersects && !this.isover ? \"isover\" : null );\n\t\t\tif ( !c ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( this.options.greedy ) {\n\t\t\t\t// find droppable parents with same scope\n\t\t\t\tscope = this.options.scope;\n\t\t\t\tparent = this.element.parents( \":data(ui-droppable)\" ).filter(function() {\n\t\t\t\t\treturn $( this ).droppable( \"instance\" ).options.scope === scope;\n\t\t\t\t});\n\n\t\t\t\tif ( parent.length ) {\n\t\t\t\t\tparentInstance = $( parent[ 0 ] ).droppable( \"instance\" );\n\t\t\t\t\tparentInstance.greedyChild = ( c === \"isover\" );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// we just moved into a greedy child\n\t\t\tif ( parentInstance && c === \"isover\" ) {\n\t\t\t\tparentInstance.isover = false;\n\t\t\t\tparentInstance.isout = true;\n\t\t\t\tparentInstance._out.call( parentInstance, event );\n\t\t\t}\n\n\t\t\tthis[ c ] = true;\n\t\t\tthis[c === \"isout\" ? \"isover\" : \"isout\"] = false;\n\t\t\tthis[c === \"isover\" ? \"_over\" : \"_out\"].call( this, event );\n\n\t\t\t// we just moved out of a greedy child\n\t\t\tif ( parentInstance && c === \"isout\" ) {\n\t\t\t\tparentInstance.isout = false;\n\t\t\t\tparentInstance.isover = true;\n\t\t\t\tparentInstance._over.call( parentInstance, event );\n\t\t\t}\n\t\t});\n\n\t},\n\tdragStop: function( draggable, event ) {\n\t\tdraggable.element.parentsUntil( \"body\" ).unbind( \"scroll.droppable\" );\n\t\t// Call prepareOffsets one final time since IE does not fire return scroll events when overflow was caused by drag (see #5003)\n\t\tif ( !draggable.options.refreshPositions ) {\n\t\t\t$.ui.ddmanager.prepareOffsets( draggable, event );\n\t\t}\n\t}\n};\n\nvar droppable = $.ui.droppable;\n\n\n/*!\n * jQuery UI Effects 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/category/effects-core/\n */\n\n\nvar dataSpace = \"ui-effects-\",\n\n\t// Create a local jQuery because jQuery Color relies on it and the\n\t// global may not exist with AMD and a custom build (#10199)\n\tjQuery = $;\n\n$.effects = {\n\teffect: {}\n};\n\n/*!\n * jQuery Color Animations v2.1.2\n * https://github.com/jquery/jquery-color\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * Date: Wed Jan 16 08:47:09 2013 -0600\n */\n(function( jQuery, undefined ) {\n\n\tvar stepHooks = \"backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor\",\n\n\t// plusequals test for += 100 -= 100\n\trplusequals = /^([\\-+])=\\s*(\\d+\\.?\\d*)/,\n\t// a set of RE's that can match strings and generate color tuples.\n\tstringParsers = [ {\n\t\t\tre: /rgba?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*(?:,\\s*(\\d?(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\texecResult[ 1 ],\n\t\t\t\t\texecResult[ 2 ],\n\t\t\t\t\texecResult[ 3 ],\n\t\t\t\t\texecResult[ 4 ]\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\t\t\tre: /rgba?\\(\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d?(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\texecResult[ 1 ] * 2.55,\n\t\t\t\t\texecResult[ 2 ] * 2.55,\n\t\t\t\t\texecResult[ 3 ] * 2.55,\n\t\t\t\t\texecResult[ 4 ]\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\t\t\t// this regex ignores A-F because it's compared against an already lowercased string\n\t\t\tre: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\tparseInt( execResult[ 1 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 2 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 3 ], 16 )\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\t\t\t// this regex ignores A-F because it's compared against an already lowercased string\n\t\t\tre: /#([a-f0-9])([a-f0-9])([a-f0-9])/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\tparseInt( execResult[ 1 ] + execResult[ 1 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 2 ] + execResult[ 2 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 3 ] + execResult[ 3 ], 16 )\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\t\t\tre: /hsla?\\(\\s*(\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d?(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\tspace: \"hsla\",\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\texecResult[ 1 ],\n\t\t\t\t\texecResult[ 2 ] / 100,\n\t\t\t\t\texecResult[ 3 ] / 100,\n\t\t\t\t\texecResult[ 4 ]\n\t\t\t\t];\n\t\t\t}\n\t\t} ],\n\n\t// jQuery.Color( )\n\tcolor = jQuery.Color = function( color, green, blue, alpha ) {\n\t\treturn new jQuery.Color.fn.parse( color, green, blue, alpha );\n\t},\n\tspaces = {\n\t\trgba: {\n\t\t\tprops: {\n\t\t\t\tred: {\n\t\t\t\t\tidx: 0,\n\t\t\t\t\ttype: \"byte\"\n\t\t\t\t},\n\t\t\t\tgreen: {\n\t\t\t\t\tidx: 1,\n\t\t\t\t\ttype: \"byte\"\n\t\t\t\t},\n\t\t\t\tblue: {\n\t\t\t\t\tidx: 2,\n\t\t\t\t\ttype: \"byte\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\thsla: {\n\t\t\tprops: {\n\t\t\t\thue: {\n\t\t\t\t\tidx: 0,\n\t\t\t\t\ttype: \"degrees\"\n\t\t\t\t},\n\t\t\t\tsaturation: {\n\t\t\t\t\tidx: 1,\n\t\t\t\t\ttype: \"percent\"\n\t\t\t\t},\n\t\t\t\tlightness: {\n\t\t\t\t\tidx: 2,\n\t\t\t\t\ttype: \"percent\"\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tpropTypes = {\n\t\t\"byte\": {\n\t\t\tfloor: true,\n\t\t\tmax: 255\n\t\t},\n\t\t\"percent\": {\n\t\t\tmax: 1\n\t\t},\n\t\t\"degrees\": {\n\t\t\tmod: 360,\n\t\t\tfloor: true\n\t\t}\n\t},\n\tsupport = color.support = {},\n\n\t// element for support tests\n\tsupportElem = jQuery( \"<p>\" )[ 0 ],\n\n\t// colors = jQuery.Color.names\n\tcolors,\n\n\t// local aliases of functions called often\n\teach = jQuery.each;\n\n// determine rgba support immediately\nsupportElem.style.cssText = \"background-color:rgba(1,1,1,.5)\";\nsupport.rgba = supportElem.style.backgroundColor.indexOf( \"rgba\" ) > -1;\n\n// define cache name and alpha properties\n// for rgba and hsla spaces\neach( spaces, function( spaceName, space ) {\n\tspace.cache = \"_\" + spaceName;\n\tspace.props.alpha = {\n\t\tidx: 3,\n\t\ttype: \"percent\",\n\t\tdef: 1\n\t};\n});\n\nfunction clamp( value, prop, allowEmpty ) {\n\tvar type = propTypes[ prop.type ] || {};\n\n\tif ( value == null ) {\n\t\treturn (allowEmpty || !prop.def) ? null : prop.def;\n\t}\n\n\t// ~~ is an short way of doing floor for positive numbers\n\tvalue = type.floor ? ~~value : parseFloat( value );\n\n\t// IE will pass in empty strings as value for alpha,\n\t// which will hit this case\n\tif ( isNaN( value ) ) {\n\t\treturn prop.def;\n\t}\n\n\tif ( type.mod ) {\n\t\t// we add mod before modding to make sure that negatives values\n\t\t// get converted properly: -10 -> 350\n\t\treturn (value + type.mod) % type.mod;\n\t}\n\n\t// for now all property types without mod have min and max\n\treturn 0 > value ? 0 : type.max < value ? type.max : value;\n}\n\nfunction stringParse( string ) {\n\tvar inst = color(),\n\t\trgba = inst._rgba = [];\n\n\tstring = string.toLowerCase();\n\n\teach( stringParsers, function( i, parser ) {\n\t\tvar parsed,\n\t\t\tmatch = parser.re.exec( string ),\n\t\t\tvalues = match && parser.parse( match ),\n\t\t\tspaceName = parser.space || \"rgba\";\n\n\t\tif ( values ) {\n\t\t\tparsed = inst[ spaceName ]( values );\n\n\t\t\t// if this was an rgba parse the assignment might happen twice\n\t\t\t// oh well....\n\t\t\tinst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ];\n\t\t\trgba = inst._rgba = parsed._rgba;\n\n\t\t\t// exit each( stringParsers ) here because we matched\n\t\t\treturn false;\n\t\t}\n\t});\n\n\t// Found a stringParser that handled it\n\tif ( rgba.length ) {\n\n\t\t// if this came from a parsed string, force \"transparent\" when alpha is 0\n\t\t// chrome, (and maybe others) return \"transparent\" as rgba(0,0,0,0)\n\t\tif ( rgba.join() === \"0,0,0,0\" ) {\n\t\t\tjQuery.extend( rgba, colors.transparent );\n\t\t}\n\t\treturn inst;\n\t}\n\n\t// named colors\n\treturn colors[ string ];\n}\n\ncolor.fn = jQuery.extend( color.prototype, {\n\tparse: function( red, green, blue, alpha ) {\n\t\tif ( red === undefined ) {\n\t\t\tthis._rgba = [ null, null, null, null ];\n\t\t\treturn this;\n\t\t}\n\t\tif ( red.jquery || red.nodeType ) {\n\t\t\tred = jQuery( red ).css( green );\n\t\t\tgreen = undefined;\n\t\t}\n\n\t\tvar inst = this,\n\t\t\ttype = jQuery.type( red ),\n\t\t\trgba = this._rgba = [];\n\n\t\t// more than 1 argument specified - assume ( red, green, blue, alpha )\n\t\tif ( green !== undefined ) {\n\t\t\tred = [ red, green, blue, alpha ];\n\t\t\ttype = \"array\";\n\t\t}\n\n\t\tif ( type === \"string\" ) {\n\t\t\treturn this.parse( stringParse( red ) || colors._default );\n\t\t}\n\n\t\tif ( type === \"array\" ) {\n\t\t\teach( spaces.rgba.props, function( key, prop ) {\n\t\t\t\trgba[ prop.idx ] = clamp( red[ prop.idx ], prop );\n\t\t\t});\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( type === \"object\" ) {\n\t\t\tif ( red instanceof color ) {\n\t\t\t\teach( spaces, function( spaceName, space ) {\n\t\t\t\t\tif ( red[ space.cache ] ) {\n\t\t\t\t\t\tinst[ space.cache ] = red[ space.cache ].slice();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\teach( spaces, function( spaceName, space ) {\n\t\t\t\t\tvar cache = space.cache;\n\t\t\t\t\teach( space.props, function( key, prop ) {\n\n\t\t\t\t\t\t// if the cache doesn't exist, and we know how to convert\n\t\t\t\t\t\tif ( !inst[ cache ] && space.to ) {\n\n\t\t\t\t\t\t\t// if the value was null, we don't need to copy it\n\t\t\t\t\t\t\t// if the key was alpha, we don't need to copy it either\n\t\t\t\t\t\t\tif ( key === \"alpha\" || red[ key ] == null ) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tinst[ cache ] = space.to( inst._rgba );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// this is the only case where we allow nulls for ALL properties.\n\t\t\t\t\t\t// call clamp with alwaysAllowEmpty\n\t\t\t\t\t\tinst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true );\n\t\t\t\t\t});\n\n\t\t\t\t\t// everything defined but alpha?\n\t\t\t\t\tif ( inst[ cache ] && jQuery.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) {\n\t\t\t\t\t\t// use the default of 1\n\t\t\t\t\t\tinst[ cache ][ 3 ] = 1;\n\t\t\t\t\t\tif ( space.from ) {\n\t\t\t\t\t\t\tinst._rgba = space.from( inst[ cache ] );\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 this;\n\t\t}\n\t},\n\tis: function( compare ) {\n\t\tvar is = color( compare ),\n\t\t\tsame = true,\n\t\t\tinst = this;\n\n\t\teach( spaces, function( _, space ) {\n\t\t\tvar localCache,\n\t\t\t\tisCache = is[ space.cache ];\n\t\t\tif (isCache) {\n\t\t\t\tlocalCache = inst[ space.cache ] || space.to && space.to( inst._rgba ) || [];\n\t\t\t\teach( space.props, function( _, prop ) {\n\t\t\t\t\tif ( isCache[ prop.idx ] != null ) {\n\t\t\t\t\t\tsame = ( isCache[ prop.idx ] === localCache[ prop.idx ] );\n\t\t\t\t\t\treturn same;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn same;\n\t\t});\n\t\treturn same;\n\t},\n\t_space: function() {\n\t\tvar used = [],\n\t\t\tinst = this;\n\t\teach( spaces, function( spaceName, space ) {\n\t\t\tif ( inst[ space.cache ] ) {\n\t\t\t\tused.push( spaceName );\n\t\t\t}\n\t\t});\n\t\treturn used.pop();\n\t},\n\ttransition: function( other, distance ) {\n\t\tvar end = color( other ),\n\t\t\tspaceName = end._space(),\n\t\t\tspace = spaces[ spaceName ],\n\t\t\tstartColor = this.alpha() === 0 ? color( \"transparent\" ) : this,\n\t\t\tstart = startColor[ space.cache ] || space.to( startColor._rgba ),\n\t\t\tresult = start.slice();\n\n\t\tend = end[ space.cache ];\n\t\teach( space.props, function( key, prop ) {\n\t\t\tvar index = prop.idx,\n\t\t\t\tstartValue = start[ index ],\n\t\t\t\tendValue = end[ index ],\n\t\t\t\ttype = propTypes[ prop.type ] || {};\n\n\t\t\t// if null, don't override start value\n\t\t\tif ( endValue === null ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// if null - use end\n\t\t\tif ( startValue === null ) {\n\t\t\t\tresult[ index ] = endValue;\n\t\t\t} else {\n\t\t\t\tif ( type.mod ) {\n\t\t\t\t\tif ( endValue - startValue > type.mod / 2 ) {\n\t\t\t\t\t\tstartValue += type.mod;\n\t\t\t\t\t} else if ( startValue - endValue > type.mod / 2 ) {\n\t\t\t\t\t\tstartValue -= type.mod;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tresult[ index ] = clamp( ( endValue - startValue ) * distance + startValue, prop );\n\t\t\t}\n\t\t});\n\t\treturn this[ spaceName ]( result );\n\t},\n\tblend: function( opaque ) {\n\t\t// if we are already opaque - return ourself\n\t\tif ( this._rgba[ 3 ] === 1 ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tvar rgb = this._rgba.slice(),\n\t\t\ta = rgb.pop(),\n\t\t\tblend = color( opaque )._rgba;\n\n\t\treturn color( jQuery.map( rgb, function( v, i ) {\n\t\t\treturn ( 1 - a ) * blend[ i ] + a * v;\n\t\t}));\n\t},\n\ttoRgbaString: function() {\n\t\tvar prefix = \"rgba(\",\n\t\t\trgba = jQuery.map( this._rgba, function( v, i ) {\n\t\t\t\treturn v == null ? ( i > 2 ? 1 : 0 ) : v;\n\t\t\t});\n\n\t\tif ( rgba[ 3 ] === 1 ) {\n\t\t\trgba.pop();\n\t\t\tprefix = \"rgb(\";\n\t\t}\n\n\t\treturn prefix + rgba.join() + \")\";\n\t},\n\ttoHslaString: function() {\n\t\tvar prefix = \"hsla(\",\n\t\t\thsla = jQuery.map( this.hsla(), function( v, i ) {\n\t\t\t\tif ( v == null ) {\n\t\t\t\t\tv = i > 2 ? 1 : 0;\n\t\t\t\t}\n\n\t\t\t\t// catch 1 and 2\n\t\t\t\tif ( i && i < 3 ) {\n\t\t\t\t\tv = Math.round( v * 100 ) + \"%\";\n\t\t\t\t}\n\t\t\t\treturn v;\n\t\t\t});\n\n\t\tif ( hsla[ 3 ] === 1 ) {\n\t\t\thsla.pop();\n\t\t\tprefix = \"hsl(\";\n\t\t}\n\t\treturn prefix + hsla.join() + \")\";\n\t},\n\ttoHexString: function( includeAlpha ) {\n\t\tvar rgba = this._rgba.slice(),\n\t\t\talpha = rgba.pop();\n\n\t\tif ( includeAlpha ) {\n\t\t\trgba.push( ~~( alpha * 255 ) );\n\t\t}\n\n\t\treturn \"#\" + jQuery.map( rgba, function( v ) {\n\n\t\t\t// default to 0 when nulls exist\n\t\t\tv = ( v || 0 ).toString( 16 );\n\t\t\treturn v.length === 1 ? \"0\" + v : v;\n\t\t}).join(\"\");\n\t},\n\ttoString: function() {\n\t\treturn this._rgba[ 3 ] === 0 ? \"transparent\" : this.toRgbaString();\n\t}\n});\ncolor.fn.parse.prototype = color.fn;\n\n// hsla conversions adapted from:\n// https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021\n\nfunction hue2rgb( p, q, h ) {\n\th = ( h + 1 ) % 1;\n\tif ( h * 6 < 1 ) {\n\t\treturn p + ( q - p ) * h * 6;\n\t}\n\tif ( h * 2 < 1) {\n\t\treturn q;\n\t}\n\tif ( h * 3 < 2 ) {\n\t\treturn p + ( q - p ) * ( ( 2 / 3 ) - h ) * 6;\n\t}\n\treturn p;\n}\n\nspaces.hsla.to = function( rgba ) {\n\tif ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) {\n\t\treturn [ null, null, null, rgba[ 3 ] ];\n\t}\n\tvar r = rgba[ 0 ] / 255,\n\t\tg = rgba[ 1 ] / 255,\n\t\tb = rgba[ 2 ] / 255,\n\t\ta = rgba[ 3 ],\n\t\tmax = Math.max( r, g, b ),\n\t\tmin = Math.min( r, g, b ),\n\t\tdiff = max - min,\n\t\tadd = max + min,\n\t\tl = add * 0.5,\n\t\th, s;\n\n\tif ( min === max ) {\n\t\th = 0;\n\t} else if ( r === max ) {\n\t\th = ( 60 * ( g - b ) / diff ) + 360;\n\t} else if ( g === max ) {\n\t\th = ( 60 * ( b - r ) / diff ) + 120;\n\t} else {\n\t\th = ( 60 * ( r - g ) / diff ) + 240;\n\t}\n\n\t// chroma (diff) == 0 means greyscale which, by definition, saturation = 0%\n\t// otherwise, saturation is based on the ratio of chroma (diff) to lightness (add)\n\tif ( diff === 0 ) {\n\t\ts = 0;\n\t} else if ( l <= 0.5 ) {\n\t\ts = diff / add;\n\t} else {\n\t\ts = diff / ( 2 - add );\n\t}\n\treturn [ Math.round(h) % 360, s, l, a == null ? 1 : a ];\n};\n\nspaces.hsla.from = function( hsla ) {\n\tif ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) {\n\t\treturn [ null, null, null, hsla[ 3 ] ];\n\t}\n\tvar h = hsla[ 0 ] / 360,\n\t\ts = hsla[ 1 ],\n\t\tl = hsla[ 2 ],\n\t\ta = hsla[ 3 ],\n\t\tq = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s,\n\t\tp = 2 * l - q;\n\n\treturn [\n\t\tMath.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ),\n\t\tMath.round( hue2rgb( p, q, h ) * 255 ),\n\t\tMath.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ),\n\t\ta\n\t];\n};\n\neach( spaces, function( spaceName, space ) {\n\tvar props = space.props,\n\t\tcache = space.cache,\n\t\tto = space.to,\n\t\tfrom = space.from;\n\n\t// makes rgba() and hsla()\n\tcolor.fn[ spaceName ] = function( value ) {\n\n\t\t// generate a cache for this space if it doesn't exist\n\t\tif ( to && !this[ cache ] ) {\n\t\t\tthis[ cache ] = to( this._rgba );\n\t\t}\n\t\tif ( value === undefined ) {\n\t\t\treturn this[ cache ].slice();\n\t\t}\n\n\t\tvar ret,\n\t\t\ttype = jQuery.type( value ),\n\t\t\tarr = ( type === \"array\" || type === \"object\" ) ? value : arguments,\n\t\t\tlocal = this[ cache ].slice();\n\n\t\teach( props, function( key, prop ) {\n\t\t\tvar val = arr[ type === \"object\" ? key : prop.idx ];\n\t\t\tif ( val == null ) {\n\t\t\t\tval = local[ prop.idx ];\n\t\t\t}\n\t\t\tlocal[ prop.idx ] = clamp( val, prop );\n\t\t});\n\n\t\tif ( from ) {\n\t\t\tret = color( from( local ) );\n\t\t\tret[ cache ] = local;\n\t\t\treturn ret;\n\t\t} else {\n\t\t\treturn color( local );\n\t\t}\n\t};\n\n\t// makes red() green() blue() alpha() hue() saturation() lightness()\n\teach( props, function( key, prop ) {\n\t\t// alpha is included in more than one space\n\t\tif ( color.fn[ key ] ) {\n\t\t\treturn;\n\t\t}\n\t\tcolor.fn[ key ] = function( value ) {\n\t\t\tvar vtype = jQuery.type( value ),\n\t\t\t\tfn = ( key === \"alpha\" ? ( this._hsla ? \"hsla\" : \"rgba\" ) : spaceName ),\n\t\t\t\tlocal = this[ fn ](),\n\t\t\t\tcur = local[ prop.idx ],\n\t\t\t\tmatch;\n\n\t\t\tif ( vtype === \"undefined\" ) {\n\t\t\t\treturn cur;\n\t\t\t}\n\n\t\t\tif ( vtype === \"function\" ) {\n\t\t\t\tvalue = value.call( this, cur );\n\t\t\t\tvtype = jQuery.type( value );\n\t\t\t}\n\t\t\tif ( value == null && prop.empty ) {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t\tif ( vtype === \"string\" ) {\n\t\t\t\tmatch = rplusequals.exec( value );\n\t\t\t\tif ( match ) {\n\t\t\t\t\tvalue = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === \"+\" ? 1 : -1 );\n\t\t\t\t}\n\t\t\t}\n\t\t\tlocal[ prop.idx ] = value;\n\t\t\treturn this[ fn ]( local );\n\t\t};\n\t});\n});\n\n// add cssHook and .fx.step function for each named hook.\n// accept a space separated string of properties\ncolor.hook = function( hook ) {\n\tvar hooks = hook.split( \" \" );\n\teach( hooks, function( i, hook ) {\n\t\tjQuery.cssHooks[ hook ] = {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar parsed, curElem,\n\t\t\t\t\tbackgroundColor = \"\";\n\n\t\t\t\tif ( value !== \"transparent\" && ( jQuery.type( value ) !== \"string\" || ( parsed = stringParse( value ) ) ) ) {\n\t\t\t\t\tvalue = color( parsed || value );\n\t\t\t\t\tif ( !support.rgba && value._rgba[ 3 ] !== 1 ) {\n\t\t\t\t\t\tcurElem = hook === \"backgroundColor\" ? elem.parentNode : elem;\n\t\t\t\t\t\twhile (\n\t\t\t\t\t\t\t(backgroundColor === \"\" || backgroundColor === \"transparent\") &&\n\t\t\t\t\t\t\tcurElem && curElem.style\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tbackgroundColor = jQuery.css( curElem, \"backgroundColor\" );\n\t\t\t\t\t\t\t\tcurElem = curElem.parentNode;\n\t\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvalue = value.blend( backgroundColor && backgroundColor !== \"transparent\" ?\n\t\t\t\t\t\t\tbackgroundColor :\n\t\t\t\t\t\t\t\"_default\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tvalue = value.toRgbaString();\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\telem.style[ hook ] = value;\n\t\t\t\t} catch ( e ) {\n\t\t\t\t\t// wrapped to prevent IE from throwing errors on \"invalid\" values like 'auto' or 'inherit'\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tjQuery.fx.step[ hook ] = function( fx ) {\n\t\t\tif ( !fx.colorInit ) {\n\t\t\t\tfx.start = color( fx.elem, hook );\n\t\t\t\tfx.end = color( fx.end );\n\t\t\t\tfx.colorInit = true;\n\t\t\t}\n\t\t\tjQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) );\n\t\t};\n\t});\n\n};\n\ncolor.hook( stepHooks );\n\njQuery.cssHooks.borderColor = {\n\texpand: function( value ) {\n\t\tvar expanded = {};\n\n\t\teach( [ \"Top\", \"Right\", \"Bottom\", \"Left\" ], function( i, part ) {\n\t\t\texpanded[ \"border\" + part + \"Color\" ] = value;\n\t\t});\n\t\treturn expanded;\n\t}\n};\n\n// Basic color names only.\n// Usage of any of the other color names requires adding yourself or including\n// jquery.color.svg-names.js.\ncolors = jQuery.Color.names = {\n\t// 4.1. Basic color keywords\n\taqua: \"#00ffff\",\n\tblack: \"#000000\",\n\tblue: \"#0000ff\",\n\tfuchsia: \"#ff00ff\",\n\tgray: \"#808080\",\n\tgreen: \"#008000\",\n\tlime: \"#00ff00\",\n\tmaroon: \"#800000\",\n\tnavy: \"#000080\",\n\tolive: \"#808000\",\n\tpurple: \"#800080\",\n\tred: \"#ff0000\",\n\tsilver: \"#c0c0c0\",\n\tteal: \"#008080\",\n\twhite: \"#ffffff\",\n\tyellow: \"#ffff00\",\n\n\t// 4.2.3. \"transparent\" color keyword\n\ttransparent: [ null, null, null, 0 ],\n\n\t_default: \"#ffffff\"\n};\n\n})( jQuery );\n\n/******************************************************************************/\n/****************************** CLASS ANIMATIONS ******************************/\n/******************************************************************************/\n(function() {\n\nvar classAnimationActions = [ \"add\", \"remove\", \"toggle\" ],\n\tshorthandStyles = {\n\t\tborder: 1,\n\t\tborderBottom: 1,\n\t\tborderColor: 1,\n\t\tborderLeft: 1,\n\t\tborderRight: 1,\n\t\tborderTop: 1,\n\t\tborderWidth: 1,\n\t\tmargin: 1,\n\t\tpadding: 1\n\t};\n\n$.each([ \"borderLeftStyle\", \"borderRightStyle\", \"borderBottomStyle\", \"borderTopStyle\" ], function( _, prop ) {\n\t$.fx.step[ prop ] = function( fx ) {\n\t\tif ( fx.end !== \"none\" && !fx.setAttr || fx.pos === 1 && !fx.setAttr ) {\n\t\t\tjQuery.style( fx.elem, prop, fx.end );\n\t\t\tfx.setAttr = true;\n\t\t}\n\t};\n});\n\nfunction getElementStyles( elem ) {\n\tvar key, len,\n\t\tstyle = elem.ownerDocument.defaultView ?\n\t\t\telem.ownerDocument.defaultView.getComputedStyle( elem, null ) :\n\t\t\telem.currentStyle,\n\t\tstyles = {};\n\n\tif ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) {\n\t\tlen = style.length;\n\t\twhile ( len-- ) {\n\t\t\tkey = style[ len ];\n\t\t\tif ( typeof style[ key ] === \"string\" ) {\n\t\t\t\tstyles[ $.camelCase( key ) ] = style[ key ];\n\t\t\t}\n\t\t}\n\t// support: Opera, IE <9\n\t} else {\n\t\tfor ( key in style ) {\n\t\t\tif ( typeof style[ key ] === \"string\" ) {\n\t\t\t\tstyles[ key ] = style[ key ];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn styles;\n}\n\nfunction styleDifference( oldStyle, newStyle ) {\n\tvar diff = {},\n\t\tname, value;\n\n\tfor ( name in newStyle ) {\n\t\tvalue = newStyle[ name ];\n\t\tif ( oldStyle[ name ] !== value ) {\n\t\t\tif ( !shorthandStyles[ name ] ) {\n\t\t\t\tif ( $.fx.step[ name ] || !isNaN( parseFloat( value ) ) ) {\n\t\t\t\t\tdiff[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn diff;\n}\n\n// support: jQuery <1.8\nif ( !$.fn.addBack ) {\n\t$.fn.addBack = 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\n$.effects.animateClass = function( value, duration, easing, callback ) {\n\tvar o = $.speed( duration, easing, callback );\n\n\treturn this.queue( function() {\n\t\tvar animated = $( this ),\n\t\t\tbaseClass = animated.attr( \"class\" ) || \"\",\n\t\t\tapplyClassChange,\n\t\t\tallAnimations = o.children ? animated.find( \"*\" ).addBack() : animated;\n\n\t\t// map the animated objects to store the original styles.\n\t\tallAnimations = allAnimations.map(function() {\n\t\t\tvar el = $( this );\n\t\t\treturn {\n\t\t\t\tel: el,\n\t\t\t\tstart: getElementStyles( this )\n\t\t\t};\n\t\t});\n\n\t\t// apply class change\n\t\tapplyClassChange = function() {\n\t\t\t$.each( classAnimationActions, function(i, action) {\n\t\t\t\tif ( value[ action ] ) {\n\t\t\t\t\tanimated[ action + \"Class\" ]( value[ action ] );\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\t\tapplyClassChange();\n\n\t\t// map all animated objects again - calculate new styles and diff\n\t\tallAnimations = allAnimations.map(function() {\n\t\t\tthis.end = getElementStyles( this.el[ 0 ] );\n\t\t\tthis.diff = styleDifference( this.start, this.end );\n\t\t\treturn this;\n\t\t});\n\n\t\t// apply original class\n\t\tanimated.attr( \"class\", baseClass );\n\n\t\t// map all animated objects again - this time collecting a promise\n\t\tallAnimations = allAnimations.map(function() {\n\t\t\tvar styleInfo = this,\n\t\t\t\tdfd = $.Deferred(),\n\t\t\t\topts = $.extend({}, o, {\n\t\t\t\t\tqueue: false,\n\t\t\t\t\tcomplete: function() {\n\t\t\t\t\t\tdfd.resolve( styleInfo );\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\tthis.el.animate( this.diff, opts );\n\t\t\treturn dfd.promise();\n\t\t});\n\n\t\t// once all animations have completed:\n\t\t$.when.apply( $, allAnimations.get() ).done(function() {\n\n\t\t\t// set the final class\n\t\t\tapplyClassChange();\n\n\t\t\t// for each animated element,\n\t\t\t// clear all css properties that were animated\n\t\t\t$.each( arguments, function() {\n\t\t\t\tvar el = this.el;\n\t\t\t\t$.each( this.diff, function(key) {\n\t\t\t\t\tel.css( key, \"\" );\n\t\t\t\t});\n\t\t\t});\n\n\t\t\t// this is guarnteed to be there if you use jQuery.speed()\n\t\t\t// it also handles dequeuing the next anim...\n\t\t\to.complete.call( animated[ 0 ] );\n\t\t});\n\t});\n};\n\n$.fn.extend({\n\taddClass: (function( orig ) {\n\t\treturn function( classNames, speed, easing, callback ) {\n\t\t\treturn speed ?\n\t\t\t\t$.effects.animateClass.call( this,\n\t\t\t\t\t{ add: classNames }, speed, easing, callback ) :\n\t\t\t\torig.apply( this, arguments );\n\t\t};\n\t})( $.fn.addClass ),\n\n\tremoveClass: (function( orig ) {\n\t\treturn function( classNames, speed, easing, callback ) {\n\t\t\treturn arguments.length > 1 ?\n\t\t\t\t$.effects.animateClass.call( this,\n\t\t\t\t\t{ remove: classNames }, speed, easing, callback ) :\n\t\t\t\torig.apply( this, arguments );\n\t\t};\n\t})( $.fn.removeClass ),\n\n\ttoggleClass: (function( orig ) {\n\t\treturn function( classNames, force, speed, easing, callback ) {\n\t\t\tif ( typeof force === \"boolean\" || force === undefined ) {\n\t\t\t\tif ( !speed ) {\n\t\t\t\t\t// without speed parameter\n\t\t\t\t\treturn orig.apply( this, arguments );\n\t\t\t\t} else {\n\t\t\t\t\treturn $.effects.animateClass.call( this,\n\t\t\t\t\t\t(force ? { add: classNames } : { remove: classNames }),\n\t\t\t\t\t\tspeed, easing, callback );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// without force parameter\n\t\t\t\treturn $.effects.animateClass.call( this,\n\t\t\t\t\t{ toggle: classNames }, force, speed, easing );\n\t\t\t}\n\t\t};\n\t})( $.fn.toggleClass ),\n\n\tswitchClass: function( remove, add, speed, easing, callback) {\n\t\treturn $.effects.animateClass.call( this, {\n\t\t\tadd: add,\n\t\t\tremove: remove\n\t\t}, speed, easing, callback );\n\t}\n});\n\n})();\n\n/******************************************************************************/\n/*********************************** EFFECTS **********************************/\n/******************************************************************************/\n\n(function() {\n\n$.extend( $.effects, {\n\tversion: \"1.11.2\",\n\n\t// Saves a set of properties in a data storage\n\tsave: function( element, set ) {\n\t\tfor ( var i = 0; i < set.length; i++ ) {\n\t\t\tif ( set[ i ] !== null ) {\n\t\t\t\telement.data( dataSpace + set[ i ], element[ 0 ].style[ set[ i ] ] );\n\t\t\t}\n\t\t}\n\t},\n\n\t// Restores a set of previously saved properties from a data storage\n\trestore: function( element, set ) {\n\t\tvar val, i;\n\t\tfor ( i = 0; i < set.length; i++ ) {\n\t\t\tif ( set[ i ] !== null ) {\n\t\t\t\tval = element.data( dataSpace + set[ i ] );\n\t\t\t\t// support: jQuery 1.6.2\n\t\t\t\t// http://bugs.jquery.com/ticket/9917\n\t\t\t\t// jQuery 1.6.2 incorrectly returns undefined for any falsy value.\n\t\t\t\t// We can't differentiate between \"\" and 0 here, so we just assume\n\t\t\t\t// empty string since it's likely to be a more common value...\n\t\t\t\tif ( val === undefined ) {\n\t\t\t\t\tval = \"\";\n\t\t\t\t}\n\t\t\t\telement.css( set[ i ], val );\n\t\t\t}\n\t\t}\n\t},\n\n\tsetMode: function( el, mode ) {\n\t\tif (mode === \"toggle\") {\n\t\t\tmode = el.is( \":hidden\" ) ? \"show\" : \"hide\";\n\t\t}\n\t\treturn mode;\n\t},\n\n\t// Translates a [top,left] array into a baseline value\n\t// this should be a little more flexible in the future to handle a string & hash\n\tgetBaseline: function( origin, original ) {\n\t\tvar y, x;\n\t\tswitch ( origin[ 0 ] ) {\n\t\t\tcase \"top\": y = 0; break;\n\t\t\tcase \"middle\": y = 0.5; break;\n\t\t\tcase \"bottom\": y = 1; break;\n\t\t\tdefault: y = origin[ 0 ] / original.height;\n\t\t}\n\t\tswitch ( origin[ 1 ] ) {\n\t\t\tcase \"left\": x = 0; break;\n\t\t\tcase \"center\": x = 0.5; break;\n\t\t\tcase \"right\": x = 1; break;\n\t\t\tdefault: x = origin[ 1 ] / original.width;\n\t\t}\n\t\treturn {\n\t\t\tx: x,\n\t\t\ty: y\n\t\t};\n\t},\n\n\t// Wraps the element around a wrapper that copies position properties\n\tcreateWrapper: function( element ) {\n\n\t\t// if the element is already wrapped, return it\n\t\tif ( element.parent().is( \".ui-effects-wrapper\" )) {\n\t\t\treturn element.parent();\n\t\t}\n\n\t\t// wrap the element\n\t\tvar props = {\n\t\t\t\twidth: element.outerWidth(true),\n\t\t\t\theight: element.outerHeight(true),\n\t\t\t\t\"float\": element.css( \"float\" )\n\t\t\t},\n\t\t\twrapper = $( \"<div></div>\" )\n\t\t\t\t.addClass( \"ui-effects-wrapper\" )\n\t\t\t\t.css({\n\t\t\t\t\tfontSize: \"100%\",\n\t\t\t\t\tbackground: \"transparent\",\n\t\t\t\t\tborder: \"none\",\n\t\t\t\t\tmargin: 0,\n\t\t\t\t\tpadding: 0\n\t\t\t\t}),\n\t\t\t// Store the size in case width/height are defined in % - Fixes #5245\n\t\t\tsize = {\n\t\t\t\twidth: element.width(),\n\t\t\t\theight: element.height()\n\t\t\t},\n\t\t\tactive = document.activeElement;\n\n\t\t// support: Firefox\n\t\t// Firefox incorrectly exposes anonymous content\n\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=561664\n\t\ttry {\n\t\t\tactive.id;\n\t\t} catch ( e ) {\n\t\t\tactive = document.body;\n\t\t}\n\n\t\telement.wrap( wrapper );\n\n\t\t// Fixes #7595 - Elements lose focus when wrapped.\n\t\tif ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {\n\t\t\t$( active ).focus();\n\t\t}\n\n\t\twrapper = element.parent(); //Hotfix for jQuery 1.4 since some change in wrap() seems to actually lose the reference to the wrapped element\n\n\t\t// transfer positioning properties to the wrapper\n\t\tif ( element.css( \"position\" ) === \"static\" ) {\n\t\t\twrapper.css({ position: \"relative\" });\n\t\t\telement.css({ position: \"relative\" });\n\t\t} else {\n\t\t\t$.extend( props, {\n\t\t\t\tposition: element.css( \"position\" ),\n\t\t\t\tzIndex: element.css( \"z-index\" )\n\t\t\t});\n\t\t\t$.each([ \"top\", \"left\", \"bottom\", \"right\" ], function(i, pos) {\n\t\t\t\tprops[ pos ] = element.css( pos );\n\t\t\t\tif ( isNaN( parseInt( props[ pos ], 10 ) ) ) {\n\t\t\t\t\tprops[ pos ] = \"auto\";\n\t\t\t\t}\n\t\t\t});\n\t\t\telement.css({\n\t\t\t\tposition: \"relative\",\n\t\t\t\ttop: 0,\n\t\t\t\tleft: 0,\n\t\t\t\tright: \"auto\",\n\t\t\t\tbottom: \"auto\"\n\t\t\t});\n\t\t}\n\t\telement.css(size);\n\n\t\treturn wrapper.css( props ).show();\n\t},\n\n\tremoveWrapper: function( element ) {\n\t\tvar active = document.activeElement;\n\n\t\tif ( element.parent().is( \".ui-effects-wrapper\" ) ) {\n\t\t\telement.parent().replaceWith( element );\n\n\t\t\t// Fixes #7595 - Elements lose focus when wrapped.\n\t\t\tif ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {\n\t\t\t\t$( active ).focus();\n\t\t\t}\n\t\t}\n\n\t\treturn element;\n\t},\n\n\tsetTransition: function( element, list, factor, value ) {\n\t\tvalue = value || {};\n\t\t$.each( list, function( i, x ) {\n\t\t\tvar unit = element.cssUnit( x );\n\t\t\tif ( unit[ 0 ] > 0 ) {\n\t\t\t\tvalue[ x ] = unit[ 0 ] * factor + unit[ 1 ];\n\t\t\t}\n\t\t});\n\t\treturn value;\n\t}\n});\n\n// return an effect options object for the given parameters:\nfunction _normalizeArguments( effect, options, speed, callback ) {\n\n\t// allow passing all options as the first parameter\n\tif ( $.isPlainObject( effect ) ) {\n\t\toptions = effect;\n\t\teffect = effect.effect;\n\t}\n\n\t// convert to an object\n\teffect = { effect: effect };\n\n\t// catch (effect, null, ...)\n\tif ( options == null ) {\n\t\toptions = {};\n\t}\n\n\t// catch (effect, callback)\n\tif ( $.isFunction( options ) ) {\n\t\tcallback = options;\n\t\tspeed = null;\n\t\toptions = {};\n\t}\n\n\t// catch (effect, speed, ?)\n\tif ( typeof options === \"number\" || $.fx.speeds[ options ] ) {\n\t\tcallback = speed;\n\t\tspeed = options;\n\t\toptions = {};\n\t}\n\n\t// catch (effect, options, callback)\n\tif ( $.isFunction( speed ) ) {\n\t\tcallback = speed;\n\t\tspeed = null;\n\t}\n\n\t// add options to effect\n\tif ( options ) {\n\t\t$.extend( effect, options );\n\t}\n\n\tspeed = speed || options.duration;\n\teffect.duration = $.fx.off ? 0 :\n\t\ttypeof speed === \"number\" ? speed :\n\t\tspeed in $.fx.speeds ? $.fx.speeds[ speed ] :\n\t\t$.fx.speeds._default;\n\n\teffect.complete = callback || options.complete;\n\n\treturn effect;\n}\n\nfunction standardAnimationOption( option ) {\n\t// Valid standard speeds (nothing, number, named speed)\n\tif ( !option || typeof option === \"number\" || $.fx.speeds[ option ] ) {\n\t\treturn true;\n\t}\n\n\t// Invalid strings - treat as \"normal\" speed\n\tif ( typeof option === \"string\" && !$.effects.effect[ option ] ) {\n\t\treturn true;\n\t}\n\n\t// Complete callback\n\tif ( $.isFunction( option ) ) {\n\t\treturn true;\n\t}\n\n\t// Options hash (but not naming an effect)\n\tif ( typeof option === \"object\" && !option.effect ) {\n\t\treturn true;\n\t}\n\n\t// Didn't match any standard API\n\treturn false;\n}\n\n$.fn.extend({\n\teffect: function( /* effect, options, speed, callback */ ) {\n\t\tvar args = _normalizeArguments.apply( this, arguments ),\n\t\t\tmode = args.mode,\n\t\t\tqueue = args.queue,\n\t\t\teffectMethod = $.effects.effect[ args.effect ];\n\n\t\tif ( $.fx.off || !effectMethod ) {\n\t\t\t// delegate to the original method (e.g., .show()) if possible\n\t\t\tif ( mode ) {\n\t\t\t\treturn this[ mode ]( args.duration, args.complete );\n\t\t\t} else {\n\t\t\t\treturn this.each( function() {\n\t\t\t\t\tif ( args.complete ) {\n\t\t\t\t\t\targs.complete.call( this );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tfunction run( next ) {\n\t\t\tvar elem = $( this ),\n\t\t\t\tcomplete = args.complete,\n\t\t\t\tmode = args.mode;\n\n\t\t\tfunction done() {\n\t\t\t\tif ( $.isFunction( complete ) ) {\n\t\t\t\t\tcomplete.call( elem[0] );\n\t\t\t\t}\n\t\t\t\tif ( $.isFunction( next ) ) {\n\t\t\t\t\tnext();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If the element already has the correct final state, delegate to\n\t\t\t// the core methods so the internal tracking of \"olddisplay\" works.\n\t\t\tif ( elem.is( \":hidden\" ) ? mode === \"hide\" : mode === \"show\" ) {\n\t\t\t\telem[ mode ]();\n\t\t\t\tdone();\n\t\t\t} else {\n\t\t\t\teffectMethod.call( elem[0], args, done );\n\t\t\t}\n\t\t}\n\n\t\treturn queue === false ? this.each( run ) : this.queue( queue || \"fx\", run );\n\t},\n\n\tshow: (function( orig ) {\n\t\treturn function( option ) {\n\t\t\tif ( standardAnimationOption( option ) ) {\n\t\t\t\treturn orig.apply( this, arguments );\n\t\t\t} else {\n\t\t\t\tvar args = _normalizeArguments.apply( this, arguments );\n\t\t\t\targs.mode = \"show\";\n\t\t\t\treturn this.effect.call( this, args );\n\t\t\t}\n\t\t};\n\t})( $.fn.show ),\n\n\thide: (function( orig ) {\n\t\treturn function( option ) {\n\t\t\tif ( standardAnimationOption( option ) ) {\n\t\t\t\treturn orig.apply( this, arguments );\n\t\t\t} else {\n\t\t\t\tvar args = _normalizeArguments.apply( this, arguments );\n\t\t\t\targs.mode = \"hide\";\n\t\t\t\treturn this.effect.call( this, args );\n\t\t\t}\n\t\t};\n\t})( $.fn.hide ),\n\n\ttoggle: (function( orig ) {\n\t\treturn function( option ) {\n\t\t\tif ( standardAnimationOption( option ) || typeof option === \"boolean\" ) {\n\t\t\t\treturn orig.apply( this, arguments );\n\t\t\t} else {\n\t\t\t\tvar args = _normalizeArguments.apply( this, arguments );\n\t\t\t\targs.mode = \"toggle\";\n\t\t\t\treturn this.effect.call( this, args );\n\t\t\t}\n\t\t};\n\t})( $.fn.toggle ),\n\n\t// helper functions\n\tcssUnit: function(key) {\n\t\tvar style = this.css( key ),\n\t\t\tval = [];\n\n\t\t$.each( [ \"em\", \"px\", \"%\", \"pt\" ], function( i, unit ) {\n\t\t\tif ( style.indexOf( unit ) > 0 ) {\n\t\t\t\tval = [ parseFloat( style ), unit ];\n\t\t\t}\n\t\t});\n\t\treturn val;\n\t}\n});\n\n})();\n\n/******************************************************************************/\n/*********************************** EASING ***********************************/\n/******************************************************************************/\n\n(function() {\n\n// based on easing equations from Robert Penner (http://www.robertpenner.com/easing)\n\nvar baseEasings = {};\n\n$.each( [ \"Quad\", \"Cubic\", \"Quart\", \"Quint\", \"Expo\" ], function( i, name ) {\n\tbaseEasings[ name ] = function( p ) {\n\t\treturn Math.pow( p, i + 2 );\n\t};\n});\n\n$.extend( baseEasings, {\n\tSine: function( p ) {\n\t\treturn 1 - Math.cos( p * Math.PI / 2 );\n\t},\n\tCirc: function( p ) {\n\t\treturn 1 - Math.sqrt( 1 - p * p );\n\t},\n\tElastic: function( p ) {\n\t\treturn p === 0 || p === 1 ? p :\n\t\t\t-Math.pow( 2, 8 * (p - 1) ) * Math.sin( ( (p - 1) * 80 - 7.5 ) * Math.PI / 15 );\n\t},\n\tBack: function( p ) {\n\t\treturn p * p * ( 3 * p - 2 );\n\t},\n\tBounce: function( p ) {\n\t\tvar pow2,\n\t\t\tbounce = 4;\n\n\t\twhile ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {}\n\t\treturn 1 / Math.pow( 4, 3 - bounce ) - 7.5625 * Math.pow( ( pow2 * 3 - 2 ) / 22 - p, 2 );\n\t}\n});\n\n$.each( baseEasings, function( name, easeIn ) {\n\t$.easing[ \"easeIn\" + name ] = easeIn;\n\t$.easing[ \"easeOut\" + name ] = function( p ) {\n\t\treturn 1 - easeIn( 1 - p );\n\t};\n\t$.easing[ \"easeInOut\" + name ] = function( p ) {\n\t\treturn p < 0.5 ?\n\t\t\teaseIn( p * 2 ) / 2 :\n\t\t\t1 - easeIn( p * -2 + 2 ) / 2;\n\t};\n});\n\n})();\n\nvar effect = $.effects;\n\n\n/*!\n * jQuery UI Effects Blind 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/blind-effect/\n */\n\n\nvar effectBlind = $.effects.effect.blind = function( o, done ) {\n\t// Create element\n\tvar el = $( this ),\n\t\trvertical = /up|down|vertical/,\n\t\trpositivemotion = /up|left|vertical|horizontal/,\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"height\", \"width\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"hide\" ),\n\t\tdirection = o.direction || \"up\",\n\t\tvertical = rvertical.test( direction ),\n\t\tref = vertical ? \"height\" : \"width\",\n\t\tref2 = vertical ? \"top\" : \"left\",\n\t\tmotion = rpositivemotion.test( direction ),\n\t\tanimation = {},\n\t\tshow = mode === \"show\",\n\t\twrapper, distance, margin;\n\n\t// if already wrapped, the wrapper's properties are my property. #6245\n\tif ( el.parent().is( \".ui-effects-wrapper\" ) ) {\n\t\t$.effects.save( el.parent(), props );\n\t} else {\n\t\t$.effects.save( el, props );\n\t}\n\tel.show();\n\twrapper = $.effects.createWrapper( el ).css({\n\t\toverflow: \"hidden\"\n\t});\n\n\tdistance = wrapper[ ref ]();\n\tmargin = parseFloat( wrapper.css( ref2 ) ) || 0;\n\n\tanimation[ ref ] = show ? distance : 0;\n\tif ( !motion ) {\n\t\tel\n\t\t\t.css( vertical ? \"bottom\" : \"right\", 0 )\n\t\t\t.css( vertical ? \"top\" : \"left\", \"auto\" )\n\t\t\t.css({ position: \"absolute\" });\n\n\t\tanimation[ ref2 ] = show ? margin : distance + margin;\n\t}\n\n\t// start at 0 if we are showing\n\tif ( show ) {\n\t\twrapper.css( ref, 0 );\n\t\tif ( !motion ) {\n\t\t\twrapper.css( ref2, margin + distance );\n\t\t}\n\t}\n\n\t// Animate\n\twrapper.animate( animation, {\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tqueue: false,\n\t\tcomplete: function() {\n\t\t\tif ( mode === \"hide\" ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t}\n\t});\n};\n\n\n/*!\n * jQuery UI Effects Bounce 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/bounce-effect/\n */\n\n\nvar effectBounce = $.effects.effect.bounce = function( o, done ) {\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"height\", \"width\" ],\n\n\t\t// defaults:\n\t\tmode = $.effects.setMode( el, o.mode || \"effect\" ),\n\t\thide = mode === \"hide\",\n\t\tshow = mode === \"show\",\n\t\tdirection = o.direction || \"up\",\n\t\tdistance = o.distance,\n\t\ttimes = o.times || 5,\n\n\t\t// number of internal animations\n\t\tanims = times * 2 + ( show || hide ? 1 : 0 ),\n\t\tspeed = o.duration / anims,\n\t\teasing = o.easing,\n\n\t\t// utility:\n\t\tref = ( direction === \"up\" || direction === \"down\" ) ? \"top\" : \"left\",\n\t\tmotion = ( direction === \"up\" || direction === \"left\" ),\n\t\ti,\n\t\tupAnim,\n\t\tdownAnim,\n\n\t\t// we will need to re-assemble the queue to stack our animations in place\n\t\tqueue = el.queue(),\n\t\tqueuelen = queue.length;\n\n\t// Avoid touching opacity to prevent clearType and PNG issues in IE\n\tif ( show || hide ) {\n\t\tprops.push( \"opacity\" );\n\t}\n\n\t$.effects.save( el, props );\n\tel.show();\n\t$.effects.createWrapper( el ); // Create Wrapper\n\n\t// default distance for the BIGGEST bounce is the outer Distance / 3\n\tif ( !distance ) {\n\t\tdistance = el[ ref === \"top\" ? \"outerHeight\" : \"outerWidth\" ]() / 3;\n\t}\n\n\tif ( show ) {\n\t\tdownAnim = { opacity: 1 };\n\t\tdownAnim[ ref ] = 0;\n\n\t\t// if we are showing, force opacity 0 and set the initial position\n\t\t// then do the \"first\" animation\n\t\tel.css( \"opacity\", 0 )\n\t\t\t.css( ref, motion ? -distance * 2 : distance * 2 )\n\t\t\t.animate( downAnim, speed, easing );\n\t}\n\n\t// start at the smallest distance if we are hiding\n\tif ( hide ) {\n\t\tdistance = distance / Math.pow( 2, times - 1 );\n\t}\n\n\tdownAnim = {};\n\tdownAnim[ ref ] = 0;\n\t// Bounces up/down/left/right then back to 0 -- times * 2 animations happen here\n\tfor ( i = 0; i < times; i++ ) {\n\t\tupAnim = {};\n\t\tupAnim[ ref ] = ( motion ? \"-=\" : \"+=\" ) + distance;\n\n\t\tel.animate( upAnim, speed, easing )\n\t\t\t.animate( downAnim, speed, easing );\n\n\t\tdistance = hide ? distance * 2 : distance / 2;\n\t}\n\n\t// Last Bounce when Hiding\n\tif ( hide ) {\n\t\tupAnim = { opacity: 0 };\n\t\tupAnim[ ref ] = ( motion ? \"-=\" : \"+=\" ) + distance;\n\n\t\tel.animate( upAnim, speed, easing );\n\t}\n\n\tel.queue(function() {\n\t\tif ( hide ) {\n\t\t\tel.hide();\n\t\t}\n\t\t$.effects.restore( el, props );\n\t\t$.effects.removeWrapper( el );\n\t\tdone();\n\t});\n\n\t// inject all the animations we just queued to be first in line (after \"inprogress\")\n\tif ( queuelen > 1) {\n\t\tqueue.splice.apply( queue,\n\t\t\t[ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) );\n\t}\n\tel.dequeue();\n\n};\n\n\n/*!\n * jQuery UI Effects Clip 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/clip-effect/\n */\n\n\nvar effectClip = $.effects.effect.clip = function( o, done ) {\n\t// Create element\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"height\", \"width\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"hide\" ),\n\t\tshow = mode === \"show\",\n\t\tdirection = o.direction || \"vertical\",\n\t\tvert = direction === \"vertical\",\n\t\tsize = vert ? \"height\" : \"width\",\n\t\tposition = vert ? \"top\" : \"left\",\n\t\tanimation = {},\n\t\twrapper, animate, distance;\n\n\t// Save & Show\n\t$.effects.save( el, props );\n\tel.show();\n\n\t// Create Wrapper\n\twrapper = $.effects.createWrapper( el ).css({\n\t\toverflow: \"hidden\"\n\t});\n\tanimate = ( el[0].tagName === \"IMG\" ) ? wrapper : el;\n\tdistance = animate[ size ]();\n\n\t// Shift\n\tif ( show ) {\n\t\tanimate.css( size, 0 );\n\t\tanimate.css( position, distance / 2 );\n\t}\n\n\t// Create Animation Object:\n\tanimation[ size ] = show ? distance : 0;\n\tanimation[ position ] = show ? 0 : distance / 2;\n\n\t// Animate\n\tanimate.animate( animation, {\n\t\tqueue: false,\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tcomplete: function() {\n\t\t\tif ( !show ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t}\n\t});\n\n};\n\n\n/*!\n * jQuery UI Effects Drop 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/drop-effect/\n */\n\n\nvar effectDrop = $.effects.effect.drop = function( o, done ) {\n\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"opacity\", \"height\", \"width\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"hide\" ),\n\t\tshow = mode === \"show\",\n\t\tdirection = o.direction || \"left\",\n\t\tref = ( direction === \"up\" || direction === \"down\" ) ? \"top\" : \"left\",\n\t\tmotion = ( direction === \"up\" || direction === \"left\" ) ? \"pos\" : \"neg\",\n\t\tanimation = {\n\t\t\topacity: show ? 1 : 0\n\t\t},\n\t\tdistance;\n\n\t// Adjust\n\t$.effects.save( el, props );\n\tel.show();\n\t$.effects.createWrapper( el );\n\n\tdistance = o.distance || el[ ref === \"top\" ? \"outerHeight\" : \"outerWidth\" ]( true ) / 2;\n\n\tif ( show ) {\n\t\tel\n\t\t\t.css( \"opacity\", 0 )\n\t\t\t.css( ref, motion === \"pos\" ? -distance : distance );\n\t}\n\n\t// Animation\n\tanimation[ ref ] = ( show ?\n\t\t( motion === \"pos\" ? \"+=\" : \"-=\" ) :\n\t\t( motion === \"pos\" ? \"-=\" : \"+=\" ) ) +\n\t\tdistance;\n\n\t// Animate\n\tel.animate( animation, {\n\t\tqueue: false,\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tcomplete: function() {\n\t\t\tif ( mode === \"hide\" ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t}\n\t});\n};\n\n\n/*!\n * jQuery UI Effects Explode 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/explode-effect/\n */\n\n\nvar effectExplode = $.effects.effect.explode = function( o, done ) {\n\n\tvar rows = o.pieces ? Math.round( Math.sqrt( o.pieces ) ) : 3,\n\t\tcells = rows,\n\t\tel = $( this ),\n\t\tmode = $.effects.setMode( el, o.mode || \"hide\" ),\n\t\tshow = mode === \"show\",\n\n\t\t// show and then visibility:hidden the element before calculating offset\n\t\toffset = el.show().css( \"visibility\", \"hidden\" ).offset(),\n\n\t\t// width and height of a piece\n\t\twidth = Math.ceil( el.outerWidth() / cells ),\n\t\theight = Math.ceil( el.outerHeight() / rows ),\n\t\tpieces = [],\n\n\t\t// loop\n\t\ti, j, left, top, mx, my;\n\n\t// children animate complete:\n\tfunction childComplete() {\n\t\tpieces.push( this );\n\t\tif ( pieces.length === rows * cells ) {\n\t\t\tanimComplete();\n\t\t}\n\t}\n\n\t// clone the element for each row and cell.\n\tfor ( i = 0; i < rows ; i++ ) { // ===>\n\t\ttop = offset.top + i * height;\n\t\tmy = i - ( rows - 1 ) / 2 ;\n\n\t\tfor ( j = 0; j < cells ; j++ ) { // |||\n\t\t\tleft = offset.left + j * width;\n\t\t\tmx = j - ( cells - 1 ) / 2 ;\n\n\t\t\t// Create a clone of the now hidden main element that will be absolute positioned\n\t\t\t// within a wrapper div off the -left and -top equal to size of our pieces\n\t\t\tel\n\t\t\t\t.clone()\n\t\t\t\t.appendTo( \"body\" )\n\t\t\t\t.wrap( \"<div></div>\" )\n\t\t\t\t.css({\n\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\tvisibility: \"visible\",\n\t\t\t\t\tleft: -j * width,\n\t\t\t\t\ttop: -i * height\n\t\t\t\t})\n\n\t\t\t// select the wrapper - make it overflow: hidden and absolute positioned based on\n\t\t\t// where the original was located +left and +top equal to the size of pieces\n\t\t\t\t.parent()\n\t\t\t\t.addClass( \"ui-effects-explode\" )\n\t\t\t\t.css({\n\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\toverflow: \"hidden\",\n\t\t\t\t\twidth: width,\n\t\t\t\t\theight: height,\n\t\t\t\t\tleft: left + ( show ? mx * width : 0 ),\n\t\t\t\t\ttop: top + ( show ? my * height : 0 ),\n\t\t\t\t\topacity: show ? 0 : 1\n\t\t\t\t}).animate({\n\t\t\t\t\tleft: left + ( show ? 0 : mx * width ),\n\t\t\t\t\ttop: top + ( show ? 0 : my * height ),\n\t\t\t\t\topacity: show ? 1 : 0\n\t\t\t\t}, o.duration || 500, o.easing, childComplete );\n\t\t}\n\t}\n\n\tfunction animComplete() {\n\t\tel.css({\n\t\t\tvisibility: \"visible\"\n\t\t});\n\t\t$( pieces ).remove();\n\t\tif ( !show ) {\n\t\t\tel.hide();\n\t\t}\n\t\tdone();\n\t}\n};\n\n\n/*!\n * jQuery UI Effects Fade 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/fade-effect/\n */\n\n\nvar effectFade = $.effects.effect.fade = function( o, done ) {\n\tvar el = $( this ),\n\t\tmode = $.effects.setMode( el, o.mode || \"toggle\" );\n\n\tel.animate({\n\t\topacity: mode\n\t}, {\n\t\tqueue: false,\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tcomplete: done\n\t});\n};\n\n\n/*!\n * jQuery UI Effects Fold 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/fold-effect/\n */\n\n\nvar effectFold = $.effects.effect.fold = function( o, done ) {\n\n\t// Create element\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"height\", \"width\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"hide\" ),\n\t\tshow = mode === \"show\",\n\t\thide = mode === \"hide\",\n\t\tsize = o.size || 15,\n\t\tpercent = /([0-9]+)%/.exec( size ),\n\t\thorizFirst = !!o.horizFirst,\n\t\twidthFirst = show !== horizFirst,\n\t\tref = widthFirst ? [ \"width\", \"height\" ] : [ \"height\", \"width\" ],\n\t\tduration = o.duration / 2,\n\t\twrapper, distance,\n\t\tanimation1 = {},\n\t\tanimation2 = {};\n\n\t$.effects.save( el, props );\n\tel.show();\n\n\t// Create Wrapper\n\twrapper = $.effects.createWrapper( el ).css({\n\t\toverflow: \"hidden\"\n\t});\n\tdistance = widthFirst ?\n\t\t[ wrapper.width(), wrapper.height() ] :\n\t\t[ wrapper.height(), wrapper.width() ];\n\n\tif ( percent ) {\n\t\tsize = parseInt( percent[ 1 ], 10 ) / 100 * distance[ hide ? 0 : 1 ];\n\t}\n\tif ( show ) {\n\t\twrapper.css( horizFirst ? {\n\t\t\theight: 0,\n\t\t\twidth: size\n\t\t} : {\n\t\t\theight: size,\n\t\t\twidth: 0\n\t\t});\n\t}\n\n\t// Animation\n\tanimation1[ ref[ 0 ] ] = show ? distance[ 0 ] : size;\n\tanimation2[ ref[ 1 ] ] = show ? distance[ 1 ] : 0;\n\n\t// Animate\n\twrapper\n\t\t.animate( animation1, duration, o.easing )\n\t\t.animate( animation2, duration, o.easing, function() {\n\t\t\tif ( hide ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t});\n\n};\n\n\n/*!\n * jQuery UI Effects Highlight 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/highlight-effect/\n */\n\n\nvar effectHighlight = $.effects.effect.highlight = function( o, done ) {\n\tvar elem = $( this ),\n\t\tprops = [ \"backgroundImage\", \"backgroundColor\", \"opacity\" ],\n\t\tmode = $.effects.setMode( elem, o.mode || \"show\" ),\n\t\tanimation = {\n\t\t\tbackgroundColor: elem.css( \"backgroundColor\" )\n\t\t};\n\n\tif (mode === \"hide\") {\n\t\tanimation.opacity = 0;\n\t}\n\n\t$.effects.save( elem, props );\n\n\telem\n\t\t.show()\n\t\t.css({\n\t\t\tbackgroundImage: \"none\",\n\t\t\tbackgroundColor: o.color || \"#ffff99\"\n\t\t})\n\t\t.animate( animation, {\n\t\t\tqueue: false,\n\t\t\tduration: o.duration,\n\t\t\teasing: o.easing,\n\t\t\tcomplete: function() {\n\t\t\t\tif ( mode === \"hide\" ) {\n\t\t\t\t\telem.hide();\n\t\t\t\t}\n\t\t\t\t$.effects.restore( elem, props );\n\t\t\t\tdone();\n\t\t\t}\n\t\t});\n};\n\n\n/*!\n * jQuery UI Effects Size 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/size-effect/\n */\n\n\nvar effectSize = $.effects.effect.size = function( o, done ) {\n\n\t// Create element\n\tvar original, baseline, factor,\n\t\tel = $( this ),\n\t\tprops0 = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"width\", \"height\", \"overflow\", \"opacity\" ],\n\n\t\t// Always restore\n\t\tprops1 = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"overflow\", \"opacity\" ],\n\n\t\t// Copy for children\n\t\tprops2 = [ \"width\", \"height\", \"overflow\" ],\n\t\tcProps = [ \"fontSize\" ],\n\t\tvProps = [ \"borderTopWidth\", \"borderBottomWidth\", \"paddingTop\", \"paddingBottom\" ],\n\t\thProps = [ \"borderLeftWidth\", \"borderRightWidth\", \"paddingLeft\", \"paddingRight\" ],\n\n\t\t// Set options\n\t\tmode = $.effects.setMode( el, o.mode || \"effect\" ),\n\t\trestore = o.restore || mode !== \"effect\",\n\t\tscale = o.scale || \"both\",\n\t\torigin = o.origin || [ \"middle\", \"center\" ],\n\t\tposition = el.css( \"position\" ),\n\t\tprops = restore ? props0 : props1,\n\t\tzero = {\n\t\t\theight: 0,\n\t\t\twidth: 0,\n\t\t\touterHeight: 0,\n\t\t\touterWidth: 0\n\t\t};\n\n\tif ( mode === \"show\" ) {\n\t\tel.show();\n\t}\n\toriginal = {\n\t\theight: el.height(),\n\t\twidth: el.width(),\n\t\touterHeight: el.outerHeight(),\n\t\touterWidth: el.outerWidth()\n\t};\n\n\tif ( o.mode === \"toggle\" && mode === \"show\" ) {\n\t\tel.from = o.to || zero;\n\t\tel.to = o.from || original;\n\t} else {\n\t\tel.from = o.from || ( mode === \"show\" ? zero : original );\n\t\tel.to = o.to || ( mode === \"hide\" ? zero : original );\n\t}\n\n\t// Set scaling factor\n\tfactor = {\n\t\tfrom: {\n\t\t\ty: el.from.height / original.height,\n\t\t\tx: el.from.width / original.width\n\t\t},\n\t\tto: {\n\t\t\ty: el.to.height / original.height,\n\t\t\tx: el.to.width / original.width\n\t\t}\n\t};\n\n\t// Scale the css box\n\tif ( scale === \"box\" || scale === \"both\" ) {\n\n\t\t// Vertical props scaling\n\t\tif ( factor.from.y !== factor.to.y ) {\n\t\t\tprops = props.concat( vProps );\n\t\t\tel.from = $.effects.setTransition( el, vProps, factor.from.y, el.from );\n\t\t\tel.to = $.effects.setTransition( el, vProps, factor.to.y, el.to );\n\t\t}\n\n\t\t// Horizontal props scaling\n\t\tif ( factor.from.x !== factor.to.x ) {\n\t\t\tprops = props.concat( hProps );\n\t\t\tel.from = $.effects.setTransition( el, hProps, factor.from.x, el.from );\n\t\t\tel.to = $.effects.setTransition( el, hProps, factor.to.x, el.to );\n\t\t}\n\t}\n\n\t// Scale the content\n\tif ( scale === \"content\" || scale === \"both\" ) {\n\n\t\t// Vertical props scaling\n\t\tif ( factor.from.y !== factor.to.y ) {\n\t\t\tprops = props.concat( cProps ).concat( props2 );\n\t\t\tel.from = $.effects.setTransition( el, cProps, factor.from.y, el.from );\n\t\t\tel.to = $.effects.setTransition( el, cProps, factor.to.y, el.to );\n\t\t}\n\t}\n\n\t$.effects.save( el, props );\n\tel.show();\n\t$.effects.createWrapper( el );\n\tel.css( \"overflow\", \"hidden\" ).css( el.from );\n\n\t// Adjust\n\tif (origin) { // Calculate baseline shifts\n\t\tbaseline = $.effects.getBaseline( origin, original );\n\t\tel.from.top = ( original.outerHeight - el.outerHeight() ) * baseline.y;\n\t\tel.from.left = ( original.outerWidth - el.outerWidth() ) * baseline.x;\n\t\tel.to.top = ( original.outerHeight - el.to.outerHeight ) * baseline.y;\n\t\tel.to.left = ( original.outerWidth - el.to.outerWidth ) * baseline.x;\n\t}\n\tel.css( el.from ); // set top & left\n\n\t// Animate\n\tif ( scale === \"content\" || scale === \"both\" ) { // Scale the children\n\n\t\t// Add margins/font-size\n\t\tvProps = vProps.concat([ \"marginTop\", \"marginBottom\" ]).concat(cProps);\n\t\thProps = hProps.concat([ \"marginLeft\", \"marginRight\" ]);\n\t\tprops2 = props0.concat(vProps).concat(hProps);\n\n\t\tel.find( \"*[width]\" ).each( function() {\n\t\t\tvar child = $( this ),\n\t\t\t\tc_original = {\n\t\t\t\t\theight: child.height(),\n\t\t\t\t\twidth: child.width(),\n\t\t\t\t\touterHeight: child.outerHeight(),\n\t\t\t\t\touterWidth: child.outerWidth()\n\t\t\t\t};\n\t\t\tif (restore) {\n\t\t\t\t$.effects.save(child, props2);\n\t\t\t}\n\n\t\t\tchild.from = {\n\t\t\t\theight: c_original.height * factor.from.y,\n\t\t\t\twidth: c_original.width * factor.from.x,\n\t\t\t\touterHeight: c_original.outerHeight * factor.from.y,\n\t\t\t\touterWidth: c_original.outerWidth * factor.from.x\n\t\t\t};\n\t\t\tchild.to = {\n\t\t\t\theight: c_original.height * factor.to.y,\n\t\t\t\twidth: c_original.width * factor.to.x,\n\t\t\t\touterHeight: c_original.height * factor.to.y,\n\t\t\t\touterWidth: c_original.width * factor.to.x\n\t\t\t};\n\n\t\t\t// Vertical props scaling\n\t\t\tif ( factor.from.y !== factor.to.y ) {\n\t\t\t\tchild.from = $.effects.setTransition( child, vProps, factor.from.y, child.from );\n\t\t\t\tchild.to = $.effects.setTransition( child, vProps, factor.to.y, child.to );\n\t\t\t}\n\n\t\t\t// Horizontal props scaling\n\t\t\tif ( factor.from.x !== factor.to.x ) {\n\t\t\t\tchild.from = $.effects.setTransition( child, hProps, factor.from.x, child.from );\n\t\t\t\tchild.to = $.effects.setTransition( child, hProps, factor.to.x, child.to );\n\t\t\t}\n\n\t\t\t// Animate children\n\t\t\tchild.css( child.from );\n\t\t\tchild.animate( child.to, o.duration, o.easing, function() {\n\n\t\t\t\t// Restore children\n\t\t\t\tif ( restore ) {\n\t\t\t\t\t$.effects.restore( child, props2 );\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t// Animate\n\tel.animate( el.to, {\n\t\tqueue: false,\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tcomplete: function() {\n\t\t\tif ( el.to.opacity === 0 ) {\n\t\t\t\tel.css( \"opacity\", el.from.opacity );\n\t\t\t}\n\t\t\tif ( mode === \"hide\" ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\tif ( !restore ) {\n\n\t\t\t\t// we need to calculate our new positioning based on the scaling\n\t\t\t\tif ( position === \"static\" ) {\n\t\t\t\t\tel.css({\n\t\t\t\t\t\tposition: \"relative\",\n\t\t\t\t\t\ttop: el.to.top,\n\t\t\t\t\t\tleft: el.to.left\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t$.each([ \"top\", \"left\" ], function( idx, pos ) {\n\t\t\t\t\t\tel.css( pos, function( _, str ) {\n\t\t\t\t\t\t\tvar val = parseInt( str, 10 ),\n\t\t\t\t\t\t\t\ttoRef = idx ? el.to.left : el.to.top;\n\n\t\t\t\t\t\t\t// if original was \"auto\", recalculate the new value from wrapper\n\t\t\t\t\t\t\tif ( str === \"auto\" ) {\n\t\t\t\t\t\t\t\treturn toRef + \"px\";\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn val + toRef + \"px\";\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t}\n\t});\n\n};\n\n\n/*!\n * jQuery UI Effects Scale 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/scale-effect/\n */\n\n\nvar effectScale = $.effects.effect.scale = function( o, done ) {\n\n\t// Create element\n\tvar el = $( this ),\n\t\toptions = $.extend( true, {}, o ),\n\t\tmode = $.effects.setMode( el, o.mode || \"effect\" ),\n\t\tpercent = parseInt( o.percent, 10 ) ||\n\t\t\t( parseInt( o.percent, 10 ) === 0 ? 0 : ( mode === \"hide\" ? 0 : 100 ) ),\n\t\tdirection = o.direction || \"both\",\n\t\torigin = o.origin,\n\t\toriginal = {\n\t\t\theight: el.height(),\n\t\t\twidth: el.width(),\n\t\t\touterHeight: el.outerHeight(),\n\t\t\touterWidth: el.outerWidth()\n\t\t},\n\t\tfactor = {\n\t\t\ty: direction !== \"horizontal\" ? (percent / 100) : 1,\n\t\t\tx: direction !== \"vertical\" ? (percent / 100) : 1\n\t\t};\n\n\t// We are going to pass this effect to the size effect:\n\toptions.effect = \"size\";\n\toptions.queue = false;\n\toptions.complete = done;\n\n\t// Set default origin and restore for show/hide\n\tif ( mode !== \"effect\" ) {\n\t\toptions.origin = origin || [ \"middle\", \"center\" ];\n\t\toptions.restore = true;\n\t}\n\n\toptions.from = o.from || ( mode === \"show\" ? {\n\t\theight: 0,\n\t\twidth: 0,\n\t\touterHeight: 0,\n\t\touterWidth: 0\n\t} : original );\n\toptions.to = {\n\t\theight: original.height * factor.y,\n\t\twidth: original.width * factor.x,\n\t\touterHeight: original.outerHeight * factor.y,\n\t\touterWidth: original.outerWidth * factor.x\n\t};\n\n\t// Fade option to support puff\n\tif ( options.fade ) {\n\t\tif ( mode === \"show\" ) {\n\t\t\toptions.from.opacity = 0;\n\t\t\toptions.to.opacity = 1;\n\t\t}\n\t\tif ( mode === \"hide\" ) {\n\t\t\toptions.from.opacity = 1;\n\t\t\toptions.to.opacity = 0;\n\t\t}\n\t}\n\n\t// Animate\n\tel.effect( options );\n\n};\n\n\n/*!\n * jQuery UI Effects Puff 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/puff-effect/\n */\n\n\nvar effectPuff = $.effects.effect.puff = function( o, done ) {\n\tvar elem = $( this ),\n\t\tmode = $.effects.setMode( elem, o.mode || \"hide\" ),\n\t\thide = mode === \"hide\",\n\t\tpercent = parseInt( o.percent, 10 ) || 150,\n\t\tfactor = percent / 100,\n\t\toriginal = {\n\t\t\theight: elem.height(),\n\t\t\twidth: elem.width(),\n\t\t\touterHeight: elem.outerHeight(),\n\t\t\touterWidth: elem.outerWidth()\n\t\t};\n\n\t$.extend( o, {\n\t\teffect: \"scale\",\n\t\tqueue: false,\n\t\tfade: true,\n\t\tmode: mode,\n\t\tcomplete: done,\n\t\tpercent: hide ? percent : 100,\n\t\tfrom: hide ?\n\t\t\toriginal :\n\t\t\t{\n\t\t\t\theight: original.height * factor,\n\t\t\t\twidth: original.width * factor,\n\t\t\t\touterHeight: original.outerHeight * factor,\n\t\t\t\touterWidth: original.outerWidth * factor\n\t\t\t}\n\t});\n\n\telem.effect( o );\n};\n\n\n/*!\n * jQuery UI Effects Pulsate 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/pulsate-effect/\n */\n\n\nvar effectPulsate = $.effects.effect.pulsate = function( o, done ) {\n\tvar elem = $( this ),\n\t\tmode = $.effects.setMode( elem, o.mode || \"show\" ),\n\t\tshow = mode === \"show\",\n\t\thide = mode === \"hide\",\n\t\tshowhide = ( show || mode === \"hide\" ),\n\n\t\t// showing or hiding leaves of the \"last\" animation\n\t\tanims = ( ( o.times || 5 ) * 2 ) + ( showhide ? 1 : 0 ),\n\t\tduration = o.duration / anims,\n\t\tanimateTo = 0,\n\t\tqueue = elem.queue(),\n\t\tqueuelen = queue.length,\n\t\ti;\n\n\tif ( show || !elem.is(\":visible\")) {\n\t\telem.css( \"opacity\", 0 ).show();\n\t\tanimateTo = 1;\n\t}\n\n\t// anims - 1 opacity \"toggles\"\n\tfor ( i = 1; i < anims; i++ ) {\n\t\telem.animate({\n\t\t\topacity: animateTo\n\t\t}, duration, o.easing );\n\t\tanimateTo = 1 - animateTo;\n\t}\n\n\telem.animate({\n\t\topacity: animateTo\n\t}, duration, o.easing);\n\n\telem.queue(function() {\n\t\tif ( hide ) {\n\t\t\telem.hide();\n\t\t}\n\t\tdone();\n\t});\n\n\t// We just queued up \"anims\" animations, we need to put them next in the queue\n\tif ( queuelen > 1 ) {\n\t\tqueue.splice.apply( queue,\n\t\t\t[ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) );\n\t}\n\telem.dequeue();\n};\n\n\n/*!\n * jQuery UI Effects Shake 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/shake-effect/\n */\n\n\nvar effectShake = $.effects.effect.shake = function( o, done ) {\n\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"height\", \"width\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"effect\" ),\n\t\tdirection = o.direction || \"left\",\n\t\tdistance = o.distance || 20,\n\t\ttimes = o.times || 3,\n\t\tanims = times * 2 + 1,\n\t\tspeed = Math.round( o.duration / anims ),\n\t\tref = (direction === \"up\" || direction === \"down\") ? \"top\" : \"left\",\n\t\tpositiveMotion = (direction === \"up\" || direction === \"left\"),\n\t\tanimation = {},\n\t\tanimation1 = {},\n\t\tanimation2 = {},\n\t\ti,\n\n\t\t// we will need to re-assemble the queue to stack our animations in place\n\t\tqueue = el.queue(),\n\t\tqueuelen = queue.length;\n\n\t$.effects.save( el, props );\n\tel.show();\n\t$.effects.createWrapper( el );\n\n\t// Animation\n\tanimation[ ref ] = ( positiveMotion ? \"-=\" : \"+=\" ) + distance;\n\tanimation1[ ref ] = ( positiveMotion ? \"+=\" : \"-=\" ) + distance * 2;\n\tanimation2[ ref ] = ( positiveMotion ? \"-=\" : \"+=\" ) + distance * 2;\n\n\t// Animate\n\tel.animate( animation, speed, o.easing );\n\n\t// Shakes\n\tfor ( i = 1; i < times; i++ ) {\n\t\tel.animate( animation1, speed, o.easing ).animate( animation2, speed, o.easing );\n\t}\n\tel\n\t\t.animate( animation1, speed, o.easing )\n\t\t.animate( animation, speed / 2, o.easing )\n\t\t.queue(function() {\n\t\t\tif ( mode === \"hide\" ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t});\n\n\t// inject all the animations we just queued to be first in line (after \"inprogress\")\n\tif ( queuelen > 1) {\n\t\tqueue.splice.apply( queue,\n\t\t\t[ 1, 0 ].concat( queue.splice( queuelen, anims + 1 ) ) );\n\t}\n\tel.dequeue();\n\n};\n\n\n/*!\n * jQuery UI Effects Slide 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/slide-effect/\n */\n\n\nvar effectSlide = $.effects.effect.slide = function( o, done ) {\n\n\t// Create element\n\tvar el = $( this ),\n\t\tprops = [ \"position\", \"top\", \"bottom\", \"left\", \"right\", \"width\", \"height\" ],\n\t\tmode = $.effects.setMode( el, o.mode || \"show\" ),\n\t\tshow = mode === \"show\",\n\t\tdirection = o.direction || \"left\",\n\t\tref = (direction === \"up\" || direction === \"down\") ? \"top\" : \"left\",\n\t\tpositiveMotion = (direction === \"up\" || direction === \"left\"),\n\t\tdistance,\n\t\tanimation = {};\n\n\t// Adjust\n\t$.effects.save( el, props );\n\tel.show();\n\tdistance = o.distance || el[ ref === \"top\" ? \"outerHeight\" : \"outerWidth\" ]( true );\n\n\t$.effects.createWrapper( el ).css({\n\t\toverflow: \"hidden\"\n\t});\n\n\tif ( show ) {\n\t\tel.css( ref, positiveMotion ? (isNaN(distance) ? \"-\" + distance : -distance) : distance );\n\t}\n\n\t// Animation\n\tanimation[ ref ] = ( show ?\n\t\t( positiveMotion ? \"+=\" : \"-=\") :\n\t\t( positiveMotion ? \"-=\" : \"+=\")) +\n\t\tdistance;\n\n\t// Animate\n\tel.animate( animation, {\n\t\tqueue: false,\n\t\tduration: o.duration,\n\t\teasing: o.easing,\n\t\tcomplete: function() {\n\t\t\tif ( mode === \"hide\" ) {\n\t\t\t\tel.hide();\n\t\t\t}\n\t\t\t$.effects.restore( el, props );\n\t\t\t$.effects.removeWrapper( el );\n\t\t\tdone();\n\t\t}\n\t});\n};\n\n\n/*!\n * jQuery UI Effects Transfer 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/transfer-effect/\n */\n\n\nvar effectTransfer = $.effects.effect.transfer = function( o, done ) {\n\tvar elem = $( this ),\n\t\ttarget = $( o.to ),\n\t\ttargetFixed = target.css( \"position\" ) === \"fixed\",\n\t\tbody = $(\"body\"),\n\t\tfixTop = targetFixed ? body.scrollTop() : 0,\n\t\tfixLeft = targetFixed ? body.scrollLeft() : 0,\n\t\tendPosition = target.offset(),\n\t\tanimation = {\n\t\t\ttop: endPosition.top - fixTop,\n\t\t\tleft: endPosition.left - fixLeft,\n\t\t\theight: target.innerHeight(),\n\t\t\twidth: target.innerWidth()\n\t\t},\n\t\tstartPosition = elem.offset(),\n\t\ttransfer = $( \"<div class='ui-effects-transfer'></div>\" )\n\t\t\t.appendTo( document.body )\n\t\t\t.addClass( o.className )\n\t\t\t.css({\n\t\t\t\ttop: startPosition.top - fixTop,\n\t\t\t\tleft: startPosition.left - fixLeft,\n\t\t\t\theight: elem.innerHeight(),\n\t\t\t\twidth: elem.innerWidth(),\n\t\t\t\tposition: targetFixed ? \"fixed\" : \"absolute\"\n\t\t\t})\n\t\t\t.animate( animation, o.duration, o.easing, function() {\n\t\t\t\ttransfer.remove();\n\t\t\t\tdone();\n\t\t\t});\n};\n\n\n/*!\n * jQuery UI Progressbar 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/progressbar/\n */\n\n\nvar progressbar = $.widget( \"ui.progressbar\", {\n\tversion: \"1.11.2\",\n\toptions: {\n\t\tmax: 100,\n\t\tvalue: 0,\n\n\t\tchange: null,\n\t\tcomplete: null\n\t},\n\n\tmin: 0,\n\n\t_create: function() {\n\t\t// Constrain initial value\n\t\tthis.oldValue = this.options.value = this._constrainedValue();\n\n\t\tthis.element\n\t\t\t.addClass( \"ui-progressbar ui-widget ui-widget-content ui-corner-all\" )\n\t\t\t.attr({\n\t\t\t\t// Only set static values, aria-valuenow and aria-valuemax are\n\t\t\t\t// set inside _refreshValue()\n\t\t\t\trole: \"progressbar\",\n\t\t\t\t\"aria-valuemin\": this.min\n\t\t\t});\n\n\t\tthis.valueDiv = $( \"<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>\" )\n\t\t\t.appendTo( this.element );\n\n\t\tthis._refreshValue();\n\t},\n\n\t_destroy: function() {\n\t\tthis.element\n\t\t\t.removeClass( \"ui-progressbar ui-widget ui-widget-content ui-corner-all\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-valuemin\" )\n\t\t\t.removeAttr( \"aria-valuemax\" )\n\t\t\t.removeAttr( \"aria-valuenow\" );\n\n\t\tthis.valueDiv.remove();\n\t},\n\n\tvalue: function( newValue ) {\n\t\tif ( newValue === undefined ) {\n\t\t\treturn this.options.value;\n\t\t}\n\n\t\tthis.options.value = this._constrainedValue( newValue );\n\t\tthis._refreshValue();\n\t},\n\n\t_constrainedValue: function( newValue ) {\n\t\tif ( newValue === undefined ) {\n\t\t\tnewValue = this.options.value;\n\t\t}\n\n\t\tthis.indeterminate = newValue === false;\n\n\t\t// sanitize value\n\t\tif ( typeof newValue !== \"number\" ) {\n\t\t\tnewValue = 0;\n\t\t}\n\n\t\treturn this.indeterminate ? false :\n\t\t\tMath.min( this.options.max, Math.max( this.min, newValue ) );\n\t},\n\n\t_setOptions: function( options ) {\n\t\t// Ensure \"value\" option is set after other values (like max)\n\t\tvar value = options.value;\n\t\tdelete options.value;\n\n\t\tthis._super( options );\n\n\t\tthis.options.value = this._constrainedValue( value );\n\t\tthis._refreshValue();\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"max\" ) {\n\t\t\t// Don't allow a max less than min\n\t\t\tvalue = Math.max( this.min, value );\n\t\t}\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis.element\n\t\t\t\t.toggleClass( \"ui-state-disabled\", !!value )\n\t\t\t\t.attr( \"aria-disabled\", value );\n\t\t}\n\t\tthis._super( key, value );\n\t},\n\n\t_percentage: function() {\n\t\treturn this.indeterminate ? 100 : 100 * ( this.options.value - this.min ) / ( this.options.max - this.min );\n\t},\n\n\t_refreshValue: function() {\n\t\tvar value = this.options.value,\n\t\t\tpercentage = this._percentage();\n\n\t\tthis.valueDiv\n\t\t\t.toggle( this.indeterminate || value > this.min )\n\t\t\t.toggleClass( \"ui-corner-right\", value === this.options.max )\n\t\t\t.width( percentage.toFixed(0) + \"%\" );\n\n\t\tthis.element.toggleClass( \"ui-progressbar-indeterminate\", this.indeterminate );\n\n\t\tif ( this.indeterminate ) {\n\t\t\tthis.element.removeAttr( \"aria-valuenow\" );\n\t\t\tif ( !this.overlayDiv ) {\n\t\t\t\tthis.overlayDiv = $( \"<div class='ui-progressbar-overlay'></div>\" ).appendTo( this.valueDiv );\n\t\t\t}\n\t\t} else {\n\t\t\tthis.element.attr({\n\t\t\t\t\"aria-valuemax\": this.options.max,\n\t\t\t\t\"aria-valuenow\": value\n\t\t\t});\n\t\t\tif ( this.overlayDiv ) {\n\t\t\t\tthis.overlayDiv.remove();\n\t\t\t\tthis.overlayDiv = null;\n\t\t\t}\n\t\t}\n\n\t\tif ( this.oldValue !== value ) {\n\t\t\tthis.oldValue = value;\n\t\t\tthis._trigger( \"change\" );\n\t\t}\n\t\tif ( value === this.options.max ) {\n\t\t\tthis._trigger( \"complete\" );\n\t\t}\n\t}\n});\n\n\n/*!\n * jQuery UI Selectable 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/selectable/\n */\n\n\nvar selectable = $.widget(\"ui.selectable\", $.ui.mouse, {\n\tversion: \"1.11.2\",\n\toptions: {\n\t\tappendTo: \"body\",\n\t\tautoRefresh: true,\n\t\tdistance: 0,\n\t\tfilter: \"*\",\n\t\ttolerance: \"touch\",\n\n\t\t// callbacks\n\t\tselected: null,\n\t\tselecting: null,\n\t\tstart: null,\n\t\tstop: null,\n\t\tunselected: null,\n\t\tunselecting: null\n\t},\n\t_create: function() {\n\t\tvar selectees,\n\t\t\tthat = this;\n\n\t\tthis.element.addClass(\"ui-selectable\");\n\n\t\tthis.dragged = false;\n\n\t\t// cache selectee children based on filter\n\t\tthis.refresh = function() {\n\t\t\tselectees = $(that.options.filter, that.element[0]);\n\t\t\tselectees.addClass(\"ui-selectee\");\n\t\t\tselectees.each(function() {\n\t\t\t\tvar $this = $(this),\n\t\t\t\t\tpos = $this.offset();\n\t\t\t\t$.data(this, \"selectable-item\", {\n\t\t\t\t\telement: this,\n\t\t\t\t\t$element: $this,\n\t\t\t\t\tleft: pos.left,\n\t\t\t\t\ttop: pos.top,\n\t\t\t\t\tright: pos.left + $this.outerWidth(),\n\t\t\t\t\tbottom: pos.top + $this.outerHeight(),\n\t\t\t\t\tstartselected: false,\n\t\t\t\t\tselected: $this.hasClass(\"ui-selected\"),\n\t\t\t\t\tselecting: $this.hasClass(\"ui-selecting\"),\n\t\t\t\t\tunselecting: $this.hasClass(\"ui-unselecting\")\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\t\tthis.refresh();\n\n\t\tthis.selectees = selectees.addClass(\"ui-selectee\");\n\n\t\tthis._mouseInit();\n\n\t\tthis.helper = $(\"<div class='ui-selectable-helper'></div>\");\n\t},\n\n\t_destroy: function() {\n\t\tthis.selectees\n\t\t\t.removeClass(\"ui-selectee\")\n\t\t\t.removeData(\"selectable-item\");\n\t\tthis.element\n\t\t\t.removeClass(\"ui-selectable ui-selectable-disabled\");\n\t\tthis._mouseDestroy();\n\t},\n\n\t_mouseStart: function(event) {\n\t\tvar that = this,\n\t\t\toptions = this.options;\n\n\t\tthis.opos = [ event.pageX, event.pageY ];\n\n\t\tif (this.options.disabled) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.selectees = $(options.filter, this.element[0]);\n\n\t\tthis._trigger(\"start\", event);\n\n\t\t$(options.appendTo).append(this.helper);\n\t\t// position helper (lasso)\n\t\tthis.helper.css({\n\t\t\t\"left\": event.pageX,\n\t\t\t\"top\": event.pageY,\n\t\t\t\"width\": 0,\n\t\t\t\"height\": 0\n\t\t});\n\n\t\tif (options.autoRefresh) {\n\t\t\tthis.refresh();\n\t\t}\n\n\t\tthis.selectees.filter(\".ui-selected\").each(function() {\n\t\t\tvar selectee = $.data(this, \"selectable-item\");\n\t\t\tselectee.startselected = true;\n\t\t\tif (!event.metaKey && !event.ctrlKey) {\n\t\t\t\tselectee.$element.removeClass(\"ui-selected\");\n\t\t\t\tselectee.selected = false;\n\t\t\t\tselectee.$element.addClass(\"ui-unselecting\");\n\t\t\t\tselectee.unselecting = true;\n\t\t\t\t// selectable UNSELECTING callback\n\t\t\t\tthat._trigger(\"unselecting\", event, {\n\t\t\t\t\tunselecting: selectee.element\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\t$(event.target).parents().addBack().each(function() {\n\t\t\tvar doSelect,\n\t\t\t\tselectee = $.data(this, \"selectable-item\");\n\t\t\tif (selectee) {\n\t\t\t\tdoSelect = (!event.metaKey && !event.ctrlKey) || !selectee.$element.hasClass(\"ui-selected\");\n\t\t\t\tselectee.$element\n\t\t\t\t\t.removeClass(doSelect ? \"ui-unselecting\" : \"ui-selected\")\n\t\t\t\t\t.addClass(doSelect ? \"ui-selecting\" : \"ui-unselecting\");\n\t\t\t\tselectee.unselecting = !doSelect;\n\t\t\t\tselectee.selecting = doSelect;\n\t\t\t\tselectee.selected = doSelect;\n\t\t\t\t// selectable (UN)SELECTING callback\n\t\t\t\tif (doSelect) {\n\t\t\t\t\tthat._trigger(\"selecting\", event, {\n\t\t\t\t\t\tselecting: selectee.element\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tthat._trigger(\"unselecting\", event, {\n\t\t\t\t\t\tunselecting: selectee.element\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\n\t},\n\n\t_mouseDrag: function(event) {\n\n\t\tthis.dragged = true;\n\n\t\tif (this.options.disabled) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar tmp,\n\t\t\tthat = this,\n\t\t\toptions = this.options,\n\t\t\tx1 = this.opos[0],\n\t\t\ty1 = this.opos[1],\n\t\t\tx2 = event.pageX,\n\t\t\ty2 = event.pageY;\n\n\t\tif (x1 > x2) { tmp = x2; x2 = x1; x1 = tmp; }\n\t\tif (y1 > y2) { tmp = y2; y2 = y1; y1 = tmp; }\n\t\tthis.helper.css({ left: x1, top: y1, width: x2 - x1, height: y2 - y1 });\n\n\t\tthis.selectees.each(function() {\n\t\t\tvar selectee = $.data(this, \"selectable-item\"),\n\t\t\t\thit = false;\n\n\t\t\t//prevent helper from being selected if appendTo: selectable\n\t\t\tif (!selectee || selectee.element === that.element[0]) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (options.tolerance === \"touch\") {\n\t\t\t\thit = ( !(selectee.left > x2 || selectee.right < x1 || selectee.top > y2 || selectee.bottom < y1) );\n\t\t\t} else if (options.tolerance === \"fit\") {\n\t\t\t\thit = (selectee.left > x1 && selectee.right < x2 && selectee.top > y1 && selectee.bottom < y2);\n\t\t\t}\n\n\t\t\tif (hit) {\n\t\t\t\t// SELECT\n\t\t\t\tif (selectee.selected) {\n\t\t\t\t\tselectee.$element.removeClass(\"ui-selected\");\n\t\t\t\t\tselectee.selected = false;\n\t\t\t\t}\n\t\t\t\tif (selectee.unselecting) {\n\t\t\t\t\tselectee.$element.removeClass(\"ui-unselecting\");\n\t\t\t\t\tselectee.unselecting = false;\n\t\t\t\t}\n\t\t\t\tif (!selectee.selecting) {\n\t\t\t\t\tselectee.$element.addClass(\"ui-selecting\");\n\t\t\t\t\tselectee.selecting = true;\n\t\t\t\t\t// selectable SELECTING callback\n\t\t\t\t\tthat._trigger(\"selecting\", event, {\n\t\t\t\t\t\tselecting: selectee.element\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// UNSELECT\n\t\t\t\tif (selectee.selecting) {\n\t\t\t\t\tif ((event.metaKey || event.ctrlKey) && selectee.startselected) {\n\t\t\t\t\t\tselectee.$element.removeClass(\"ui-selecting\");\n\t\t\t\t\t\tselectee.selecting = false;\n\t\t\t\t\t\tselectee.$element.addClass(\"ui-selected\");\n\t\t\t\t\t\tselectee.selected = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tselectee.$element.removeClass(\"ui-selecting\");\n\t\t\t\t\t\tselectee.selecting = false;\n\t\t\t\t\t\tif (selectee.startselected) {\n\t\t\t\t\t\t\tselectee.$element.addClass(\"ui-unselecting\");\n\t\t\t\t\t\t\tselectee.unselecting = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// selectable UNSELECTING callback\n\t\t\t\t\t\tthat._trigger(\"unselecting\", event, {\n\t\t\t\t\t\t\tunselecting: selectee.element\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (selectee.selected) {\n\t\t\t\t\tif (!event.metaKey && !event.ctrlKey && !selectee.startselected) {\n\t\t\t\t\t\tselectee.$element.removeClass(\"ui-selected\");\n\t\t\t\t\t\tselectee.selected = false;\n\n\t\t\t\t\t\tselectee.$element.addClass(\"ui-unselecting\");\n\t\t\t\t\t\tselectee.unselecting = true;\n\t\t\t\t\t\t// selectable UNSELECTING callback\n\t\t\t\t\t\tthat._trigger(\"unselecting\", event, {\n\t\t\t\t\t\t\tunselecting: selectee.element\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\treturn false;\n\t},\n\n\t_mouseStop: function(event) {\n\t\tvar that = this;\n\n\t\tthis.dragged = false;\n\n\t\t$(\".ui-unselecting\", this.element[0]).each(function() {\n\t\t\tvar selectee = $.data(this, \"selectable-item\");\n\t\t\tselectee.$element.removeClass(\"ui-unselecting\");\n\t\t\tselectee.unselecting = false;\n\t\t\tselectee.startselected = false;\n\t\t\tthat._trigger(\"unselected\", event, {\n\t\t\t\tunselected: selectee.element\n\t\t\t});\n\t\t});\n\t\t$(\".ui-selecting\", this.element[0]).each(function() {\n\t\t\tvar selectee = $.data(this, \"selectable-item\");\n\t\t\tselectee.$element.removeClass(\"ui-selecting\").addClass(\"ui-selected\");\n\t\t\tselectee.selecting = false;\n\t\t\tselectee.selected = true;\n\t\t\tselectee.startselected = true;\n\t\t\tthat._trigger(\"selected\", event, {\n\t\t\t\tselected: selectee.element\n\t\t\t});\n\t\t});\n\t\tthis._trigger(\"stop\", event);\n\n\t\tthis.helper.remove();\n\n\t\treturn false;\n\t}\n\n});\n\n\n/*!\n * jQuery UI Selectmenu 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/selectmenu\n */\n\n\nvar selectmenu = $.widget( \"ui.selectmenu\", {\n\tversion: \"1.11.2\",\n\tdefaultElement: \"<select>\",\n\toptions: {\n\t\tappendTo: null,\n\t\tdisabled: null,\n\t\ticons: {\n\t\t\tbutton: \"ui-icon-triangle-1-s\"\n\t\t},\n\t\tposition: {\n\t\t\tmy: \"left top\",\n\t\t\tat: \"left bottom\",\n\t\t\tcollision: \"none\"\n\t\t},\n\t\twidth: null,\n\n\t\t// callbacks\n\t\tchange: null,\n\t\tclose: null,\n\t\tfocus: null,\n\t\topen: null,\n\t\tselect: null\n\t},\n\n\t_create: function() {\n\t\tvar selectmenuId = this.element.uniqueId().attr( \"id\" );\n\t\tthis.ids = {\n\t\t\telement: selectmenuId,\n\t\t\tbutton: selectmenuId + \"-button\",\n\t\t\tmenu: selectmenuId + \"-menu\"\n\t\t};\n\n\t\tthis._drawButton();\n\t\tthis._drawMenu();\n\n\t\tif ( this.options.disabled ) {\n\t\t\tthis.disable();\n\t\t}\n\t},\n\n\t_drawButton: function() {\n\t\tvar that = this,\n\t\t\ttabindex = this.element.attr( \"tabindex\" );\n\n\t\t// Associate existing label with the new button\n\t\tthis.label = $( \"label[for='\" + this.ids.element + \"']\" ).attr( \"for\", this.ids.button );\n\t\tthis._on( this.label, {\n\t\t\tclick: function( event ) {\n\t\t\t\tthis.button.focus();\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t});\n\n\t\t// Hide original select element\n\t\tthis.element.hide();\n\n\t\t// Create button\n\t\tthis.button = $( \"<span>\", {\n\t\t\t\"class\": \"ui-selectmenu-button ui-widget ui-state-default ui-corner-all\",\n\t\t\ttabindex: tabindex || this.options.disabled ? -1 : 0,\n\t\t\tid: this.ids.button,\n\t\t\trole: \"combobox\",\n\t\t\t\"aria-expanded\": \"false\",\n\t\t\t\"aria-autocomplete\": \"list\",\n\t\t\t\"aria-owns\": this.ids.menu,\n\t\t\t\"aria-haspopup\": \"true\"\n\t\t})\n\t\t\t.insertAfter( this.element );\n\n\t\t$( \"<span>\", {\n\t\t\t\"class\": \"ui-icon \" + this.options.icons.button\n\t\t})\n\t\t\t.prependTo( this.button );\n\n\t\tthis.buttonText = $( \"<span>\", {\n\t\t\t\"class\": \"ui-selectmenu-text\"\n\t\t})\n\t\t\t.appendTo( this.button );\n\n\t\tthis._setText( this.buttonText, this.element.find( \"option:selected\" ).text() );\n\t\tthis._resizeButton();\n\n\t\tthis._on( this.button, this._buttonEvents );\n\t\tthis.button.one( \"focusin\", function() {\n\n\t\t\t// Delay rendering the menu items until the button receives focus.\n\t\t\t// The menu may have already been rendered via a programmatic open.\n\t\t\tif ( !that.menuItems ) {\n\t\t\t\tthat._refreshMenu();\n\t\t\t}\n\t\t});\n\t\tthis._hoverable( this.button );\n\t\tthis._focusable( this.button );\n\t},\n\n\t_drawMenu: function() {\n\t\tvar that = this;\n\n\t\t// Create menu\n\t\tthis.menu = $( \"<ul>\", {\n\t\t\t\"aria-hidden\": \"true\",\n\t\t\t\"aria-labelledby\": this.ids.button,\n\t\t\tid: this.ids.menu\n\t\t});\n\n\t\t// Wrap menu\n\t\tthis.menuWrap = $( \"<div>\", {\n\t\t\t\"class\": \"ui-selectmenu-menu ui-front\"\n\t\t})\n\t\t\t.append( this.menu )\n\t\t\t.appendTo( this._appendTo() );\n\n\t\t// Initialize menu widget\n\t\tthis.menuInstance = this.menu\n\t\t\t.menu({\n\t\t\t\trole: \"listbox\",\n\t\t\t\tselect: function( event, ui ) {\n\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t// support: IE8\n\t\t\t\t\t// If the item was selected via a click, the text selection\n\t\t\t\t\t// will be destroyed in IE\n\t\t\t\t\tthat._setSelection();\n\n\t\t\t\t\tthat._select( ui.item.data( \"ui-selectmenu-item\" ), event );\n\t\t\t\t},\n\t\t\t\tfocus: function( event, ui ) {\n\t\t\t\t\tvar item = ui.item.data( \"ui-selectmenu-item\" );\n\n\t\t\t\t\t// Prevent inital focus from firing and check if its a newly focused item\n\t\t\t\t\tif ( that.focusIndex != null && item.index !== that.focusIndex ) {\n\t\t\t\t\t\tthat._trigger( \"focus\", event, { item: item } );\n\t\t\t\t\t\tif ( !that.isOpen ) {\n\t\t\t\t\t\t\tthat._select( item, event );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthat.focusIndex = item.index;\n\n\t\t\t\t\tthat.button.attr( \"aria-activedescendant\",\n\t\t\t\t\t\tthat.menuItems.eq( item.index ).attr( \"id\" ) );\n\t\t\t\t}\n\t\t\t})\n\t\t\t.menu( \"instance\" );\n\n\t\t// Adjust menu styles to dropdown\n\t\tthis.menu\n\t\t\t.addClass( \"ui-corner-bottom\" )\n\t\t\t.removeClass( \"ui-corner-all\" );\n\n\t\t// Don't close the menu on mouseleave\n\t\tthis.menuInstance._off( this.menu, \"mouseleave\" );\n\n\t\t// Cancel the menu's collapseAll on document click\n\t\tthis.menuInstance._closeOnDocumentClick = function() {\n\t\t\treturn false;\n\t\t};\n\n\t\t// Selects often contain empty items, but never contain dividers\n\t\tthis.menuInstance._isDivider = function() {\n\t\t\treturn false;\n\t\t};\n\t},\n\n\trefresh: function() {\n\t\tthis._refreshMenu();\n\t\tthis._setText( this.buttonText, this._getSelectedItem().text() );\n\t\tif ( !this.options.width ) {\n\t\t\tthis._resizeButton();\n\t\t}\n\t},\n\n\t_refreshMenu: function() {\n\t\tthis.menu.empty();\n\n\t\tvar item,\n\t\t\toptions = this.element.find( \"option\" );\n\n\t\tif ( !options.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._parseOptions( options );\n\t\tthis._renderMenu( this.menu, this.items );\n\n\t\tthis.menuInstance.refresh();\n\t\tthis.menuItems = this.menu.find( \"li\" ).not( \".ui-selectmenu-optgroup\" );\n\n\t\titem = this._getSelectedItem();\n\n\t\t// Update the menu to have the correct item focused\n\t\tthis.menuInstance.focus( null, item );\n\t\tthis._setAria( item.data( \"ui-selectmenu-item\" ) );\n\n\t\t// Set disabled state\n\t\tthis._setOption( \"disabled\", this.element.prop( \"disabled\" ) );\n\t},\n\n\topen: function( event ) {\n\t\tif ( this.options.disabled ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If this is the first time the menu is being opened, render the items\n\t\tif ( !this.menuItems ) {\n\t\t\tthis._refreshMenu();\n\t\t} else {\n\n\t\t\t// Menu clears focus on close, reset focus to selected item\n\t\t\tthis.menu.find( \".ui-state-focus\" ).removeClass( \"ui-state-focus\" );\n\t\t\tthis.menuInstance.focus( null, this._getSelectedItem() );\n\t\t}\n\n\t\tthis.isOpen = true;\n\t\tthis._toggleAttr();\n\t\tthis._resizeMenu();\n\t\tthis._position();\n\n\t\tthis._on( this.document, this._documentClick );\n\n\t\tthis._trigger( \"open\", event );\n\t},\n\n\t_position: function() {\n\t\tthis.menuWrap.position( $.extend( { of: this.button }, this.options.position ) );\n\t},\n\n\tclose: function( event ) {\n\t\tif ( !this.isOpen ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.isOpen = false;\n\t\tthis._toggleAttr();\n\n\t\tthis.range = null;\n\t\tthis._off( this.document );\n\n\t\tthis._trigger( \"close\", event );\n\t},\n\n\twidget: function() {\n\t\treturn this.button;\n\t},\n\n\tmenuWidget: function() {\n\t\treturn this.menu;\n\t},\n\n\t_renderMenu: function( ul, items ) {\n\t\tvar that = this,\n\t\t\tcurrentOptgroup = \"\";\n\n\t\t$.each( items, function( index, item ) {\n\t\t\tif ( item.optgroup !== currentOptgroup ) {\n\t\t\t\t$( \"<li>\", {\n\t\t\t\t\t\"class\": \"ui-selectmenu-optgroup ui-menu-divider\" +\n\t\t\t\t\t\t( item.element.parent( \"optgroup\" ).prop( \"disabled\" ) ?\n\t\t\t\t\t\t\t\" ui-state-disabled\" :\n\t\t\t\t\t\t\t\"\" ),\n\t\t\t\t\ttext: item.optgroup\n\t\t\t\t})\n\t\t\t\t\t.appendTo( ul );\n\n\t\t\t\tcurrentOptgroup = item.optgroup;\n\t\t\t}\n\n\t\t\tthat._renderItemData( ul, item );\n\t\t});\n\t},\n\n\t_renderItemData: function( ul, item ) {\n\t\treturn this._renderItem( ul, item ).data( \"ui-selectmenu-item\", item );\n\t},\n\n\t_renderItem: function( ul, item ) {\n\t\tvar li = $( \"<li>\" );\n\n\t\tif ( item.disabled ) {\n\t\t\tli.addClass( \"ui-state-disabled\" );\n\t\t}\n\t\tthis._setText( li, item.label );\n\n\t\treturn li.appendTo( ul );\n\t},\n\n\t_setText: function( element, value ) {\n\t\tif ( value ) {\n\t\t\telement.text( value );\n\t\t} else {\n\t\t\telement.html( \" \" );\n\t\t}\n\t},\n\n\t_move: function( direction, event ) {\n\t\tvar item, next,\n\t\t\tfilter = \".ui-menu-item\";\n\n\t\tif ( this.isOpen ) {\n\t\t\titem = this.menuItems.eq( this.focusIndex );\n\t\t} else {\n\t\t\titem = this.menuItems.eq( this.element[ 0 ].selectedIndex );\n\t\t\tfilter += \":not(.ui-state-disabled)\";\n\t\t}\n\n\t\tif ( direction === \"first\" || direction === \"last\" ) {\n\t\t\tnext = item[ direction === \"first\" ? \"prevAll\" : \"nextAll\" ]( filter ).eq( -1 );\n\t\t} else {\n\t\t\tnext = item[ direction + \"All\" ]( filter ).eq( 0 );\n\t\t}\n\n\t\tif ( next.length ) {\n\t\t\tthis.menuInstance.focus( event, next );\n\t\t}\n\t},\n\n\t_getSelectedItem: function() {\n\t\treturn this.menuItems.eq( this.element[ 0 ].selectedIndex );\n\t},\n\n\t_toggle: function( event ) {\n\t\tthis[ this.isOpen ? \"close\" : \"open\" ]( event );\n\t},\n\n\t_setSelection: function() {\n\t\tvar selection;\n\n\t\tif ( !this.range ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( window.getSelection ) {\n\t\t\tselection = window.getSelection();\n\t\t\tselection.removeAllRanges();\n\t\t\tselection.addRange( this.range );\n\n\t\t// support: IE8\n\t\t} else {\n\t\t\tthis.range.select();\n\t\t}\n\n\t\t// support: IE\n\t\t// Setting the text selection kills the button focus in IE, but\n\t\t// restoring the focus doesn't kill the selection.\n\t\tthis.button.focus();\n\t},\n\n\t_documentClick: {\n\t\tmousedown: function( event ) {\n\t\t\tif ( !this.isOpen ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( !$( event.target ).closest( \".ui-selectmenu-menu, #\" + this.ids.button ).length ) {\n\t\t\t\tthis.close( event );\n\t\t\t}\n\t\t}\n\t},\n\n\t_buttonEvents: {\n\n\t\t// Prevent text selection from being reset when interacting with the selectmenu (#10144)\n\t\tmousedown: function() {\n\t\t\tvar selection;\n\n\t\t\tif ( window.getSelection ) {\n\t\t\t\tselection = window.getSelection();\n\t\t\t\tif ( selection.rangeCount ) {\n\t\t\t\t\tthis.range = selection.getRangeAt( 0 );\n\t\t\t\t}\n\n\t\t\t// support: IE8\n\t\t\t} else {\n\t\t\t\tthis.range = document.selection.createRange();\n\t\t\t}\n\t\t},\n\n\t\tclick: function( event ) {\n\t\t\tthis._setSelection();\n\t\t\tthis._toggle( event );\n\t\t},\n\n\t\tkeydown: function( event ) {\n\t\t\tvar preventDefault = true;\n\t\t\tswitch ( event.keyCode ) {\n\t\t\t\tcase $.ui.keyCode.TAB:\n\t\t\t\tcase $.ui.keyCode.ESCAPE:\n\t\t\t\t\tthis.close( event );\n\t\t\t\t\tpreventDefault = false;\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.ENTER:\n\t\t\t\t\tif ( this.isOpen ) {\n\t\t\t\t\t\tthis._selectFocusedItem( event );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.UP:\n\t\t\t\t\tif ( event.altKey ) {\n\t\t\t\t\t\tthis._toggle( event );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis._move( \"prev\", event );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.DOWN:\n\t\t\t\t\tif ( event.altKey ) {\n\t\t\t\t\t\tthis._toggle( event );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis._move( \"next\", event );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.SPACE:\n\t\t\t\t\tif ( this.isOpen ) {\n\t\t\t\t\t\tthis._selectFocusedItem( event );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis._toggle( event );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.LEFT:\n\t\t\t\t\tthis._move( \"prev\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.RIGHT:\n\t\t\t\t\tthis._move( \"next\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.HOME:\n\t\t\t\tcase $.ui.keyCode.PAGE_UP:\n\t\t\t\t\tthis._move( \"first\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.END:\n\t\t\t\tcase $.ui.keyCode.PAGE_DOWN:\n\t\t\t\t\tthis._move( \"last\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthis.menu.trigger( event );\n\t\t\t\t\tpreventDefault = false;\n\t\t\t}\n\n\t\t\tif ( preventDefault ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t}\n\t},\n\n\t_selectFocusedItem: function( event ) {\n\t\tvar item = this.menuItems.eq( this.focusIndex );\n\t\tif ( !item.hasClass( \"ui-state-disabled\" ) ) {\n\t\t\tthis._select( item.data( \"ui-selectmenu-item\" ), event );\n\t\t}\n\t},\n\n\t_select: function( item, event ) {\n\t\tvar oldIndex = this.element[ 0 ].selectedIndex;\n\n\t\t// Change native select element\n\t\tthis.element[ 0 ].selectedIndex = item.index;\n\t\tthis._setText( this.buttonText, item.label );\n\t\tthis._setAria( item );\n\t\tthis._trigger( \"select\", event, { item: item } );\n\n\t\tif ( item.index !== oldIndex ) {\n\t\t\tthis._trigger( \"change\", event, { item: item } );\n\t\t}\n\n\t\tthis.close( event );\n\t},\n\n\t_setAria: function( item ) {\n\t\tvar id = this.menuItems.eq( item.index ).attr( \"id\" );\n\n\t\tthis.button.attr({\n\t\t\t\"aria-labelledby\": id,\n\t\t\t\"aria-activedescendant\": id\n\t\t});\n\t\tthis.menu.attr( \"aria-activedescendant\", id );\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"icons\" ) {\n\t\t\tthis.button.find( \"span.ui-icon\" )\n\t\t\t\t.removeClass( this.options.icons.button )\n\t\t\t\t.addClass( value.button );\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\tif ( key === \"appendTo\" ) {\n\t\t\tthis.menuWrap.appendTo( this._appendTo() );\n\t\t}\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis.menuInstance.option( \"disabled\", value );\n\t\t\tthis.button\n\t\t\t\t.toggleClass( \"ui-state-disabled\", value )\n\t\t\t\t.attr( \"aria-disabled\", value );\n\n\t\t\tthis.element.prop( \"disabled\", value );\n\t\t\tif ( value ) {\n\t\t\t\tthis.button.attr( \"tabindex\", -1 );\n\t\t\t\tthis.close();\n\t\t\t} else {\n\t\t\t\tthis.button.attr( \"tabindex\", 0 );\n\t\t\t}\n\t\t}\n\n\t\tif ( key === \"width\" ) {\n\t\t\tthis._resizeButton();\n\t\t}\n\t},\n\n\t_appendTo: function() {\n\t\tvar element = this.options.appendTo;\n\n\t\tif ( element ) {\n\t\t\telement = element.jquery || element.nodeType ?\n\t\t\t\t$( element ) :\n\t\t\t\tthis.document.find( element ).eq( 0 );\n\t\t}\n\n\t\tif ( !element || !element[ 0 ] ) {\n\t\t\telement = this.element.closest( \".ui-front\" );\n\t\t}\n\n\t\tif ( !element.length ) {\n\t\t\telement = this.document[ 0 ].body;\n\t\t}\n\n\t\treturn element;\n\t},\n\n\t_toggleAttr: function() {\n\t\tthis.button\n\t\t\t.toggleClass( \"ui-corner-top\", this.isOpen )\n\t\t\t.toggleClass( \"ui-corner-all\", !this.isOpen )\n\t\t\t.attr( \"aria-expanded\", this.isOpen );\n\t\tthis.menuWrap.toggleClass( \"ui-selectmenu-open\", this.isOpen );\n\t\tthis.menu.attr( \"aria-hidden\", !this.isOpen );\n\t},\n\n\t_resizeButton: function() {\n\t\tvar width = this.options.width;\n\n\t\tif ( !width ) {\n\t\t\twidth = this.element.show().outerWidth();\n\t\t\tthis.element.hide();\n\t\t}\n\n\t\tthis.button.outerWidth( width );\n\t},\n\n\t_resizeMenu: function() {\n\t\tthis.menu.outerWidth( Math.max(\n\t\t\tthis.button.outerWidth(),\n\n\t\t\t// support: IE10\n\t\t\t// IE10 wraps long text (possibly a rounding bug)\n\t\t\t// so we add 1px to avoid the wrapping\n\t\t\tthis.menu.width( \"\" ).outerWidth() + 1\n\t\t) );\n\t},\n\n\t_getCreateOptions: function() {\n\t\treturn { disabled: this.element.prop( \"disabled\" ) };\n\t},\n\n\t_parseOptions: function( options ) {\n\t\tvar data = [];\n\t\toptions.each(function( index, item ) {\n\t\t\tvar option = $( item ),\n\t\t\t\toptgroup = option.parent( \"optgroup\" );\n\t\t\tdata.push({\n\t\t\t\telement: option,\n\t\t\t\tindex: index,\n\t\t\t\tvalue: option.attr( \"value\" ),\n\t\t\t\tlabel: option.text(),\n\t\t\t\toptgroup: optgroup.attr( \"label\" ) || \"\",\n\t\t\t\tdisabled: optgroup.prop( \"disabled\" ) || option.prop( \"disabled\" )\n\t\t\t});\n\t\t});\n\t\tthis.items = data;\n\t},\n\n\t_destroy: function() {\n\t\tthis.menuWrap.remove();\n\t\tthis.button.remove();\n\t\tthis.element.show();\n\t\tthis.element.removeUniqueId();\n\t\tthis.label.attr( \"for\", this.ids.element );\n\t}\n});\n\n\n/*!\n * jQuery UI Slider 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/slider/\n */\n\n\nvar slider = $.widget( \"ui.slider\", $.ui.mouse, {\n\tversion: \"1.11.2\",\n\twidgetEventPrefix: \"slide\",\n\n\toptions: {\n\t\tanimate: false,\n\t\tdistance: 0,\n\t\tmax: 100,\n\t\tmin: 0,\n\t\torientation: \"horizontal\",\n\t\trange: false,\n\t\tstep: 1,\n\t\tvalue: 0,\n\t\tvalues: null,\n\n\t\t// callbacks\n\t\tchange: null,\n\t\tslide: null,\n\t\tstart: null,\n\t\tstop: null\n\t},\n\n\t// number of pages in a slider\n\t// (how many times can you page up/down to go through the whole range)\n\tnumPages: 5,\n\n\t_create: function() {\n\t\tthis._keySliding = false;\n\t\tthis._mouseSliding = false;\n\t\tthis._animateOff = true;\n\t\tthis._handleIndex = null;\n\t\tthis._detectOrientation();\n\t\tthis._mouseInit();\n\t\tthis._calculateNewMax();\n\n\t\tthis.element\n\t\t\t.addClass( \"ui-slider\" +\n\t\t\t\t\" ui-slider-\" + this.orientation +\n\t\t\t\t\" ui-widget\" +\n\t\t\t\t\" ui-widget-content\" +\n\t\t\t\t\" ui-corner-all\");\n\n\t\tthis._refresh();\n\t\tthis._setOption( \"disabled\", this.options.disabled );\n\n\t\tthis._animateOff = false;\n\t},\n\n\t_refresh: function() {\n\t\tthis._createRange();\n\t\tthis._createHandles();\n\t\tthis._setupEvents();\n\t\tthis._refreshValue();\n\t},\n\n\t_createHandles: function() {\n\t\tvar i, handleCount,\n\t\t\toptions = this.options,\n\t\t\texistingHandles = this.element.find( \".ui-slider-handle\" ).addClass( \"ui-state-default ui-corner-all\" ),\n\t\t\thandle = \"<span class='ui-slider-handle ui-state-default ui-corner-all' tabindex='0'></span>\",\n\t\t\thandles = [];\n\n\t\thandleCount = ( options.values && options.values.length ) || 1;\n\n\t\tif ( existingHandles.length > handleCount ) {\n\t\t\texistingHandles.slice( handleCount ).remove();\n\t\t\texistingHandles = existingHandles.slice( 0, handleCount );\n\t\t}\n\n\t\tfor ( i = existingHandles.length; i < handleCount; i++ ) {\n\t\t\thandles.push( handle );\n\t\t}\n\n\t\tthis.handles = existingHandles.add( $( handles.join( \"\" ) ).appendTo( this.element ) );\n\n\t\tthis.handle = this.handles.eq( 0 );\n\n\t\tthis.handles.each(function( i ) {\n\t\t\t$( this ).data( \"ui-slider-handle-index\", i );\n\t\t});\n\t},\n\n\t_createRange: function() {\n\t\tvar options = this.options,\n\t\t\tclasses = \"\";\n\n\t\tif ( options.range ) {\n\t\t\tif ( options.range === true ) {\n\t\t\t\tif ( !options.values ) {\n\t\t\t\t\toptions.values = [ this._valueMin(), this._valueMin() ];\n\t\t\t\t} else if ( options.values.length && options.values.length !== 2 ) {\n\t\t\t\t\toptions.values = [ options.values[0], options.values[0] ];\n\t\t\t\t} else if ( $.isArray( options.values ) ) {\n\t\t\t\t\toptions.values = options.values.slice(0);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( !this.range || !this.range.length ) {\n\t\t\t\tthis.range = $( \"<div></div>\" )\n\t\t\t\t\t.appendTo( this.element );\n\n\t\t\t\tclasses = \"ui-slider-range\" +\n\t\t\t\t// note: this isn't the most fittingly semantic framework class for this element,\n\t\t\t\t// but worked best visually with a variety of themes\n\t\t\t\t\" ui-widget-header ui-corner-all\";\n\t\t\t} else {\n\t\t\t\tthis.range.removeClass( \"ui-slider-range-min ui-slider-range-max\" )\n\t\t\t\t\t// Handle range switching from true to min/max\n\t\t\t\t\t.css({\n\t\t\t\t\t\t\"left\": \"\",\n\t\t\t\t\t\t\"bottom\": \"\"\n\t\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.range.addClass( classes +\n\t\t\t\t( ( options.range === \"min\" || options.range === \"max\" ) ? \" ui-slider-range-\" + options.range : \"\" ) );\n\t\t} else {\n\t\t\tif ( this.range ) {\n\t\t\t\tthis.range.remove();\n\t\t\t}\n\t\t\tthis.range = null;\n\t\t}\n\t},\n\n\t_setupEvents: function() {\n\t\tthis._off( this.handles );\n\t\tthis._on( this.handles, this._handleEvents );\n\t\tthis._hoverable( this.handles );\n\t\tthis._focusable( this.handles );\n\t},\n\n\t_destroy: function() {\n\t\tthis.handles.remove();\n\t\tif ( this.range ) {\n\t\t\tthis.range.remove();\n\t\t}\n\n\t\tthis.element\n\t\t\t.removeClass( \"ui-slider\" +\n\t\t\t\t\" ui-slider-horizontal\" +\n\t\t\t\t\" ui-slider-vertical\" +\n\t\t\t\t\" ui-widget\" +\n\t\t\t\t\" ui-widget-content\" +\n\t\t\t\t\" ui-corner-all\" );\n\n\t\tthis._mouseDestroy();\n\t},\n\n\t_mouseCapture: function( event ) {\n\t\tvar position, normValue, distance, closestHandle, index, allowed, offset, mouseOverHandle,\n\t\t\tthat = this,\n\t\t\to = this.options;\n\n\t\tif ( o.disabled ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.elementSize = {\n\t\t\twidth: this.element.outerWidth(),\n\t\t\theight: this.element.outerHeight()\n\t\t};\n\t\tthis.elementOffset = this.element.offset();\n\n\t\tposition = { x: event.pageX, y: event.pageY };\n\t\tnormValue = this._normValueFromMouse( position );\n\t\tdistance = this._valueMax() - this._valueMin() + 1;\n\t\tthis.handles.each(function( i ) {\n\t\t\tvar thisDistance = Math.abs( normValue - that.values(i) );\n\t\t\tif (( distance > thisDistance ) ||\n\t\t\t\t( distance === thisDistance &&\n\t\t\t\t\t(i === that._lastChangedValue || that.values(i) === o.min ))) {\n\t\t\t\tdistance = thisDistance;\n\t\t\t\tclosestHandle = $( this );\n\t\t\t\tindex = i;\n\t\t\t}\n\t\t});\n\n\t\tallowed = this._start( event, index );\n\t\tif ( allowed === false ) {\n\t\t\treturn false;\n\t\t}\n\t\tthis._mouseSliding = true;\n\n\t\tthis._handleIndex = index;\n\n\t\tclosestHandle\n\t\t\t.addClass( \"ui-state-active\" )\n\t\t\t.focus();\n\n\t\toffset = closestHandle.offset();\n\t\tmouseOverHandle = !$( event.target ).parents().addBack().is( \".ui-slider-handle\" );\n\t\tthis._clickOffset = mouseOverHandle ? { left: 0, top: 0 } : {\n\t\t\tleft: event.pageX - offset.left - ( closestHandle.width() / 2 ),\n\t\t\ttop: event.pageY - offset.top -\n\t\t\t\t( closestHandle.height() / 2 ) -\n\t\t\t\t( parseInt( closestHandle.css(\"borderTopWidth\"), 10 ) || 0 ) -\n\t\t\t\t( parseInt( closestHandle.css(\"borderBottomWidth\"), 10 ) || 0) +\n\t\t\t\t( parseInt( closestHandle.css(\"marginTop\"), 10 ) || 0)\n\t\t};\n\n\t\tif ( !this.handles.hasClass( \"ui-state-hover\" ) ) {\n\t\t\tthis._slide( event, index, normValue );\n\t\t}\n\t\tthis._animateOff = true;\n\t\treturn true;\n\t},\n\n\t_mouseStart: function() {\n\t\treturn true;\n\t},\n\n\t_mouseDrag: function( event ) {\n\t\tvar position = { x: event.pageX, y: event.pageY },\n\t\t\tnormValue = this._normValueFromMouse( position );\n\n\t\tthis._slide( event, this._handleIndex, normValue );\n\n\t\treturn false;\n\t},\n\n\t_mouseStop: function( event ) {\n\t\tthis.handles.removeClass( \"ui-state-active\" );\n\t\tthis._mouseSliding = false;\n\n\t\tthis._stop( event, this._handleIndex );\n\t\tthis._change( event, this._handleIndex );\n\n\t\tthis._handleIndex = null;\n\t\tthis._clickOffset = null;\n\t\tthis._animateOff = false;\n\n\t\treturn false;\n\t},\n\n\t_detectOrientation: function() {\n\t\tthis.orientation = ( this.options.orientation === \"vertical\" ) ? \"vertical\" : \"horizontal\";\n\t},\n\n\t_normValueFromMouse: function( position ) {\n\t\tvar pixelTotal,\n\t\t\tpixelMouse,\n\t\t\tpercentMouse,\n\t\t\tvalueTotal,\n\t\t\tvalueMouse;\n\n\t\tif ( this.orientation === \"horizontal\" ) {\n\t\t\tpixelTotal = this.elementSize.width;\n\t\t\tpixelMouse = position.x - this.elementOffset.left - ( this._clickOffset ? this._clickOffset.left : 0 );\n\t\t} else {\n\t\t\tpixelTotal = this.elementSize.height;\n\t\t\tpixelMouse = position.y - this.elementOffset.top - ( this._clickOffset ? this._clickOffset.top : 0 );\n\t\t}\n\n\t\tpercentMouse = ( pixelMouse / pixelTotal );\n\t\tif ( percentMouse > 1 ) {\n\t\t\tpercentMouse = 1;\n\t\t}\n\t\tif ( percentMouse < 0 ) {\n\t\t\tpercentMouse = 0;\n\t\t}\n\t\tif ( this.orientation === \"vertical\" ) {\n\t\t\tpercentMouse = 1 - percentMouse;\n\t\t}\n\n\t\tvalueTotal = this._valueMax() - this._valueMin();\n\t\tvalueMouse = this._valueMin() + percentMouse * valueTotal;\n\n\t\treturn this._trimAlignValue( valueMouse );\n\t},\n\n\t_start: function( event, index ) {\n\t\tvar uiHash = {\n\t\t\thandle: this.handles[ index ],\n\t\t\tvalue: this.value()\n\t\t};\n\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\tuiHash.value = this.values( index );\n\t\t\tuiHash.values = this.values();\n\t\t}\n\t\treturn this._trigger( \"start\", event, uiHash );\n\t},\n\n\t_slide: function( event, index, newVal ) {\n\t\tvar otherVal,\n\t\t\tnewValues,\n\t\t\tallowed;\n\n\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\totherVal = this.values( index ? 0 : 1 );\n\n\t\t\tif ( ( this.options.values.length === 2 && this.options.range === true ) &&\n\t\t\t\t\t( ( index === 0 && newVal > otherVal) || ( index === 1 && newVal < otherVal ) )\n\t\t\t\t) {\n\t\t\t\tnewVal = otherVal;\n\t\t\t}\n\n\t\t\tif ( newVal !== this.values( index ) ) {\n\t\t\t\tnewValues = this.values();\n\t\t\t\tnewValues[ index ] = newVal;\n\t\t\t\t// A slide can be canceled by returning false from the slide callback\n\t\t\t\tallowed = this._trigger( \"slide\", event, {\n\t\t\t\t\thandle: this.handles[ index ],\n\t\t\t\t\tvalue: newVal,\n\t\t\t\t\tvalues: newValues\n\t\t\t\t} );\n\t\t\t\totherVal = this.values( index ? 0 : 1 );\n\t\t\t\tif ( allowed !== false ) {\n\t\t\t\t\tthis.values( index, newVal );\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif ( newVal !== this.value() ) {\n\t\t\t\t// A slide can be canceled by returning false from the slide callback\n\t\t\t\tallowed = this._trigger( \"slide\", event, {\n\t\t\t\t\thandle: this.handles[ index ],\n\t\t\t\t\tvalue: newVal\n\t\t\t\t} );\n\t\t\t\tif ( allowed !== false ) {\n\t\t\t\t\tthis.value( newVal );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t_stop: function( event, index ) {\n\t\tvar uiHash = {\n\t\t\thandle: this.handles[ index ],\n\t\t\tvalue: this.value()\n\t\t};\n\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\tuiHash.value = this.values( index );\n\t\t\tuiHash.values = this.values();\n\t\t}\n\n\t\tthis._trigger( \"stop\", event, uiHash );\n\t},\n\n\t_change: function( event, index ) {\n\t\tif ( !this._keySliding && !this._mouseSliding ) {\n\t\t\tvar uiHash = {\n\t\t\t\thandle: this.handles[ index ],\n\t\t\t\tvalue: this.value()\n\t\t\t};\n\t\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\t\tuiHash.value = this.values( index );\n\t\t\t\tuiHash.values = this.values();\n\t\t\t}\n\n\t\t\t//store the last changed value index for reference when handles overlap\n\t\t\tthis._lastChangedValue = index;\n\n\t\t\tthis._trigger( \"change\", event, uiHash );\n\t\t}\n\t},\n\n\tvalue: function( newValue ) {\n\t\tif ( arguments.length ) {\n\t\t\tthis.options.value = this._trimAlignValue( newValue );\n\t\t\tthis._refreshValue();\n\t\t\tthis._change( null, 0 );\n\t\t\treturn;\n\t\t}\n\n\t\treturn this._value();\n\t},\n\n\tvalues: function( index, newValue ) {\n\t\tvar vals,\n\t\t\tnewValues,\n\t\t\ti;\n\n\t\tif ( arguments.length > 1 ) {\n\t\t\tthis.options.values[ index ] = this._trimAlignValue( newValue );\n\t\t\tthis._refreshValue();\n\t\t\tthis._change( null, index );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( arguments.length ) {\n\t\t\tif ( $.isArray( arguments[ 0 ] ) ) {\n\t\t\t\tvals = this.options.values;\n\t\t\t\tnewValues = arguments[ 0 ];\n\t\t\t\tfor ( i = 0; i < vals.length; i += 1 ) {\n\t\t\t\t\tvals[ i ] = this._trimAlignValue( newValues[ i ] );\n\t\t\t\t\tthis._change( null, i );\n\t\t\t\t}\n\t\t\t\tthis._refreshValue();\n\t\t\t} else {\n\t\t\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\t\t\treturn this._values( index );\n\t\t\t\t} else {\n\t\t\t\t\treturn this.value();\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\treturn this._values();\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tvar i,\n\t\t\tvalsLength = 0;\n\n\t\tif ( key === \"range\" && this.options.range === true ) {\n\t\t\tif ( value === \"min\" ) {\n\t\t\t\tthis.options.value = this._values( 0 );\n\t\t\t\tthis.options.values = null;\n\t\t\t} else if ( value === \"max\" ) {\n\t\t\t\tthis.options.value = this._values( this.options.values.length - 1 );\n\t\t\t\tthis.options.values = null;\n\t\t\t}\n\t\t}\n\n\t\tif ( $.isArray( this.options.values ) ) {\n\t\t\tvalsLength = this.options.values.length;\n\t\t}\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis.element.toggleClass( \"ui-state-disabled\", !!value );\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\tswitch ( key ) {\n\t\t\tcase \"orientation\":\n\t\t\t\tthis._detectOrientation();\n\t\t\t\tthis.element\n\t\t\t\t\t.removeClass( \"ui-slider-horizontal ui-slider-vertical\" )\n\t\t\t\t\t.addClass( \"ui-slider-\" + this.orientation );\n\t\t\t\tthis._refreshValue();\n\n\t\t\t\t// Reset positioning from previous orientation\n\t\t\t\tthis.handles.css( value === \"horizontal\" ? \"bottom\" : \"left\", \"\" );\n\t\t\t\tbreak;\n\t\t\tcase \"value\":\n\t\t\t\tthis._animateOff = true;\n\t\t\t\tthis._refreshValue();\n\t\t\t\tthis._change( null, 0 );\n\t\t\t\tthis._animateOff = false;\n\t\t\t\tbreak;\n\t\t\tcase \"values\":\n\t\t\t\tthis._animateOff = true;\n\t\t\t\tthis._refreshValue();\n\t\t\t\tfor ( i = 0; i < valsLength; i += 1 ) {\n\t\t\t\t\tthis._change( null, i );\n\t\t\t\t}\n\t\t\t\tthis._animateOff = false;\n\t\t\t\tbreak;\n\t\t\tcase \"step\":\n\t\t\tcase \"min\":\n\t\t\tcase \"max\":\n\t\t\t\tthis._animateOff = true;\n\t\t\t\tthis._calculateNewMax();\n\t\t\t\tthis._refreshValue();\n\t\t\t\tthis._animateOff = false;\n\t\t\t\tbreak;\n\t\t\tcase \"range\":\n\t\t\t\tthis._animateOff = true;\n\t\t\t\tthis._refresh();\n\t\t\t\tthis._animateOff = false;\n\t\t\t\tbreak;\n\t\t}\n\t},\n\n\t//internal value getter\n\t// _value() returns value trimmed by min and max, aligned by step\n\t_value: function() {\n\t\tvar val = this.options.value;\n\t\tval = this._trimAlignValue( val );\n\n\t\treturn val;\n\t},\n\n\t//internal values getter\n\t// _values() returns array of values trimmed by min and max, aligned by step\n\t// _values( index ) returns single value trimmed by min and max, aligned by step\n\t_values: function( index ) {\n\t\tvar val,\n\t\t\tvals,\n\t\t\ti;\n\n\t\tif ( arguments.length ) {\n\t\t\tval = this.options.values[ index ];\n\t\t\tval = this._trimAlignValue( val );\n\n\t\t\treturn val;\n\t\t} else if ( this.options.values && this.options.values.length ) {\n\t\t\t// .slice() creates a copy of the array\n\t\t\t// this copy gets trimmed by min and max and then returned\n\t\t\tvals = this.options.values.slice();\n\t\t\tfor ( i = 0; i < vals.length; i += 1) {\n\t\t\t\tvals[ i ] = this._trimAlignValue( vals[ i ] );\n\t\t\t}\n\n\t\t\treturn vals;\n\t\t} else {\n\t\t\treturn [];\n\t\t}\n\t},\n\n\t// returns the step-aligned value that val is closest to, between (inclusive) min and max\n\t_trimAlignValue: function( val ) {\n\t\tif ( val <= this._valueMin() ) {\n\t\t\treturn this._valueMin();\n\t\t}\n\t\tif ( val >= this._valueMax() ) {\n\t\t\treturn this._valueMax();\n\t\t}\n\t\tvar step = ( this.options.step > 0 ) ? this.options.step : 1,\n\t\t\tvalModStep = (val - this._valueMin()) % step,\n\t\t\talignValue = val - valModStep;\n\n\t\tif ( Math.abs(valModStep) * 2 >= step ) {\n\t\t\talignValue += ( valModStep > 0 ) ? step : ( -step );\n\t\t}\n\n\t\t// Since JavaScript has problems with large floats, round\n\t\t// the final value to 5 digits after the decimal point (see #4124)\n\t\treturn parseFloat( alignValue.toFixed(5) );\n\t},\n\n\t_calculateNewMax: function() {\n\t\tvar remainder = ( this.options.max - this._valueMin() ) % this.options.step;\n\t\tthis.max = this.options.max - remainder;\n\t},\n\n\t_valueMin: function() {\n\t\treturn this.options.min;\n\t},\n\n\t_valueMax: function() {\n\t\treturn this.max;\n\t},\n\n\t_refreshValue: function() {\n\t\tvar lastValPercent, valPercent, value, valueMin, valueMax,\n\t\t\toRange = this.options.range,\n\t\t\to = this.options,\n\t\t\tthat = this,\n\t\t\tanimate = ( !this._animateOff ) ? o.animate : false,\n\t\t\t_set = {};\n\n\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\tthis.handles.each(function( i ) {\n\t\t\t\tvalPercent = ( that.values(i) - that._valueMin() ) / ( that._valueMax() - that._valueMin() ) * 100;\n\t\t\t\t_set[ that.orientation === \"horizontal\" ? \"left\" : \"bottom\" ] = valPercent + \"%\";\n\t\t\t\t$( this ).stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( _set, o.animate );\n\t\t\t\tif ( that.options.range === true ) {\n\t\t\t\t\tif ( that.orientation === \"horizontal\" ) {\n\t\t\t\t\t\tif ( i === 0 ) {\n\t\t\t\t\t\t\tthat.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( { left: valPercent + \"%\" }, o.animate );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( i === 1 ) {\n\t\t\t\t\t\t\tthat.range[ animate ? \"animate\" : \"css\" ]( { width: ( valPercent - lastValPercent ) + \"%\" }, { queue: false, duration: o.animate } );\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif ( i === 0 ) {\n\t\t\t\t\t\t\tthat.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( { bottom: ( valPercent ) + \"%\" }, o.animate );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( i === 1 ) {\n\t\t\t\t\t\t\tthat.range[ animate ? \"animate\" : \"css\" ]( { height: ( valPercent - lastValPercent ) + \"%\" }, { queue: false, duration: o.animate } );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlastValPercent = valPercent;\n\t\t\t});\n\t\t} else {\n\t\t\tvalue = this.value();\n\t\t\tvalueMin = this._valueMin();\n\t\t\tvalueMax = this._valueMax();\n\t\t\tvalPercent = ( valueMax !== valueMin ) ?\n\t\t\t\t\t( value - valueMin ) / ( valueMax - valueMin ) * 100 :\n\t\t\t\t\t0;\n\t\t\t_set[ this.orientation === \"horizontal\" ? \"left\" : \"bottom\" ] = valPercent + \"%\";\n\t\t\tthis.handle.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( _set, o.animate );\n\n\t\t\tif ( oRange === \"min\" && this.orientation === \"horizontal\" ) {\n\t\t\t\tthis.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( { width: valPercent + \"%\" }, o.animate );\n\t\t\t}\n\t\t\tif ( oRange === \"max\" && this.orientation === \"horizontal\" ) {\n\t\t\t\tthis.range[ animate ? \"animate\" : \"css\" ]( { width: ( 100 - valPercent ) + \"%\" }, { queue: false, duration: o.animate } );\n\t\t\t}\n\t\t\tif ( oRange === \"min\" && this.orientation === \"vertical\" ) {\n\t\t\t\tthis.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( { height: valPercent + \"%\" }, o.animate );\n\t\t\t}\n\t\t\tif ( oRange === \"max\" && this.orientation === \"vertical\" ) {\n\t\t\t\tthis.range[ animate ? \"animate\" : \"css\" ]( { height: ( 100 - valPercent ) + \"%\" }, { queue: false, duration: o.animate } );\n\t\t\t}\n\t\t}\n\t},\n\n\t_handleEvents: {\n\t\tkeydown: function( event ) {\n\t\t\tvar allowed, curVal, newVal, step,\n\t\t\t\tindex = $( event.target ).data( \"ui-slider-handle-index\" );\n\n\t\t\tswitch ( event.keyCode ) {\n\t\t\t\tcase $.ui.keyCode.HOME:\n\t\t\t\tcase $.ui.keyCode.END:\n\t\t\t\tcase $.ui.keyCode.PAGE_UP:\n\t\t\t\tcase $.ui.keyCode.PAGE_DOWN:\n\t\t\t\tcase $.ui.keyCode.UP:\n\t\t\t\tcase $.ui.keyCode.RIGHT:\n\t\t\t\tcase $.ui.keyCode.DOWN:\n\t\t\t\tcase $.ui.keyCode.LEFT:\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tif ( !this._keySliding ) {\n\t\t\t\t\t\tthis._keySliding = true;\n\t\t\t\t\t\t$( event.target ).addClass( \"ui-state-active\" );\n\t\t\t\t\t\tallowed = this._start( event, index );\n\t\t\t\t\t\tif ( allowed === false ) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tstep = this.options.step;\n\t\t\tif ( this.options.values && this.options.values.length ) {\n\t\t\t\tcurVal = newVal = this.values( index );\n\t\t\t} else {\n\t\t\t\tcurVal = newVal = this.value();\n\t\t\t}\n\n\t\t\tswitch ( event.keyCode ) {\n\t\t\t\tcase $.ui.keyCode.HOME:\n\t\t\t\t\tnewVal = this._valueMin();\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.END:\n\t\t\t\t\tnewVal = this._valueMax();\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.PAGE_UP:\n\t\t\t\t\tnewVal = this._trimAlignValue(\n\t\t\t\t\t\tcurVal + ( ( this._valueMax() - this._valueMin() ) / this.numPages )\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.PAGE_DOWN:\n\t\t\t\t\tnewVal = this._trimAlignValue(\n\t\t\t\t\t\tcurVal - ( (this._valueMax() - this._valueMin()) / this.numPages ) );\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.UP:\n\t\t\t\tcase $.ui.keyCode.RIGHT:\n\t\t\t\t\tif ( curVal === this._valueMax() ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tnewVal = this._trimAlignValue( curVal + step );\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.DOWN:\n\t\t\t\tcase $.ui.keyCode.LEFT:\n\t\t\t\t\tif ( curVal === this._valueMin() ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tnewVal = this._trimAlignValue( curVal - step );\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tthis._slide( event, index, newVal );\n\t\t},\n\t\tkeyup: function( event ) {\n\t\t\tvar index = $( event.target ).data( \"ui-slider-handle-index\" );\n\n\t\t\tif ( this._keySliding ) {\n\t\t\t\tthis._keySliding = false;\n\t\t\t\tthis._stop( event, index );\n\t\t\t\tthis._change( event, index );\n\t\t\t\t$( event.target ).removeClass( \"ui-state-active\" );\n\t\t\t}\n\t\t}\n\t}\n});\n\n\n/*!\n * jQuery UI Sortable 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/sortable/\n */\n\n\nvar sortable = $.widget(\"ui.sortable\", $.ui.mouse, {\n\tversion: \"1.11.2\",\n\twidgetEventPrefix: \"sort\",\n\tready: false,\n\toptions: {\n\t\tappendTo: \"parent\",\n\t\taxis: false,\n\t\tconnectWith: false,\n\t\tcontainment: false,\n\t\tcursor: \"auto\",\n\t\tcursorAt: false,\n\t\tdropOnEmpty: true,\n\t\tforcePlaceholderSize: false,\n\t\tforceHelperSize: false,\n\t\tgrid: false,\n\t\thandle: false,\n\t\thelper: \"original\",\n\t\titems: \"> *\",\n\t\topacity: false,\n\t\tplaceholder: false,\n\t\trevert: false,\n\t\tscroll: true,\n\t\tscrollSensitivity: 20,\n\t\tscrollSpeed: 20,\n\t\tscope: \"default\",\n\t\ttolerance: \"intersect\",\n\t\tzIndex: 1000,\n\n\t\t// callbacks\n\t\tactivate: null,\n\t\tbeforeStop: null,\n\t\tchange: null,\n\t\tdeactivate: null,\n\t\tout: null,\n\t\tover: null,\n\t\treceive: null,\n\t\tremove: null,\n\t\tsort: null,\n\t\tstart: null,\n\t\tstop: null,\n\t\tupdate: null\n\t},\n\n\t_isOverAxis: function( x, reference, size ) {\n\t\treturn ( x >= reference ) && ( x < ( reference + size ) );\n\t},\n\n\t_isFloating: function( item ) {\n\t\treturn (/left|right/).test(item.css(\"float\")) || (/inline|table-cell/).test(item.css(\"display\"));\n\t},\n\n\t_create: function() {\n\n\t\tvar o = this.options;\n\t\tthis.containerCache = {};\n\t\tthis.element.addClass(\"ui-sortable\");\n\n\t\t//Get the items\n\t\tthis.refresh();\n\n\t\t//Let's determine if the items are being displayed horizontally\n\t\tthis.floating = this.items.length ? o.axis === \"x\" || this._isFloating(this.items[0].item) : false;\n\n\t\t//Let's determine the parent's offset\n\t\tthis.offset = this.element.offset();\n\n\t\t//Initialize mouse events for interaction\n\t\tthis._mouseInit();\n\n\t\tthis._setHandleClassName();\n\n\t\t//We're ready to go\n\t\tthis.ready = true;\n\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tthis._super( key, value );\n\n\t\tif ( key === \"handle\" ) {\n\t\t\tthis._setHandleClassName();\n\t\t}\n\t},\n\n\t_setHandleClassName: function() {\n\t\tthis.element.find( \".ui-sortable-handle\" ).removeClass( \"ui-sortable-handle\" );\n\t\t$.each( this.items, function() {\n\t\t\t( this.instance.options.handle ?\n\t\t\t\tthis.item.find( this.instance.options.handle ) : this.item )\n\t\t\t\t.addClass( \"ui-sortable-handle\" );\n\t\t});\n\t},\n\n\t_destroy: function() {\n\t\tthis.element\n\t\t\t.removeClass( \"ui-sortable ui-sortable-disabled\" )\n\t\t\t.find( \".ui-sortable-handle\" )\n\t\t\t\t.removeClass( \"ui-sortable-handle\" );\n\t\tthis._mouseDestroy();\n\n\t\tfor ( var i = this.items.length - 1; i >= 0; i-- ) {\n\t\t\tthis.items[i].item.removeData(this.widgetName + \"-item\");\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_mouseCapture: function(event, overrideHandle) {\n\t\tvar currentItem = null,\n\t\t\tvalidHandle = false,\n\t\t\tthat = this;\n\n\t\tif (this.reverting) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif(this.options.disabled || this.options.type === \"static\") {\n\t\t\treturn false;\n\t\t}\n\n\t\t//We have to refresh the items data once first\n\t\tthis._refreshItems(event);\n\n\t\t//Find out if the clicked node (or one of its parents) is a actual item in this.items\n\t\t$(event.target).parents().each(function() {\n\t\t\tif($.data(this, that.widgetName + \"-item\") === that) {\n\t\t\t\tcurrentItem = $(this);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t\tif($.data(event.target, that.widgetName + \"-item\") === that) {\n\t\t\tcurrentItem = $(event.target);\n\t\t}\n\n\t\tif(!currentItem) {\n\t\t\treturn false;\n\t\t}\n\t\tif(this.options.handle && !overrideHandle) {\n\t\t\t$(this.options.handle, currentItem).find(\"*\").addBack().each(function() {\n\t\t\t\tif(this === event.target) {\n\t\t\t\t\tvalidHandle = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif(!validHandle) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tthis.currentItem = currentItem;\n\t\tthis._removeCurrentsFromItems();\n\t\treturn true;\n\n\t},\n\n\t_mouseStart: function(event, overrideHandle, noActivation) {\n\n\t\tvar i, body,\n\t\t\to = this.options;\n\n\t\tthis.currentContainer = this;\n\n\t\t//We only need to call refreshPositions, because the refreshItems call has been moved to mouseCapture\n\t\tthis.refreshPositions();\n\n\t\t//Create and append the visible helper\n\t\tthis.helper = this._createHelper(event);\n\n\t\t//Cache the helper size\n\t\tthis._cacheHelperProportions();\n\n\t\t/*\n\t\t * - Position generation -\n\t\t * This block generates everything position related - it's the core of draggables.\n\t\t */\n\n\t\t//Cache the margins of the original element\n\t\tthis._cacheMargins();\n\n\t\t//Get the next scrolling parent\n\t\tthis.scrollParent = this.helper.scrollParent();\n\n\t\t//The element's absolute position on the page minus margins\n\t\tthis.offset = this.currentItem.offset();\n\t\tthis.offset = {\n\t\t\ttop: this.offset.top - this.margins.top,\n\t\t\tleft: this.offset.left - this.margins.left\n\t\t};\n\n\t\t$.extend(this.offset, {\n\t\t\tclick: { //Where the click happened, relative to the element\n\t\t\t\tleft: event.pageX - this.offset.left,\n\t\t\t\ttop: event.pageY - this.offset.top\n\t\t\t},\n\t\t\tparent: this._getParentOffset(),\n\t\t\trelative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper\n\t\t});\n\n\t\t// Only after we got the offset, we can change the helper's position to absolute\n\t\t// TODO: Still need to figure out a way to make relative sorting possible\n\t\tthis.helper.css(\"position\", \"absolute\");\n\t\tthis.cssPosition = this.helper.css(\"position\");\n\n\t\t//Generate the original position\n\t\tthis.originalPosition = this._generatePosition(event);\n\t\tthis.originalPageX = event.pageX;\n\t\tthis.originalPageY = event.pageY;\n\n\t\t//Adjust the mouse offset relative to the helper if \"cursorAt\" is supplied\n\t\t(o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt));\n\n\t\t//Cache the former DOM position\n\t\tthis.domPosition = { prev: this.currentItem.prev()[0], parent: this.currentItem.parent()[0] };\n\n\t\t//If the helper is not the original, hide the original so it's not playing any role during the drag, won't cause anything bad this way\n\t\tif(this.helper[0] !== this.currentItem[0]) {\n\t\t\tthis.currentItem.hide();\n\t\t}\n\n\t\t//Create the placeholder\n\t\tthis._createPlaceholder();\n\n\t\t//Set a containment if given in the options\n\t\tif(o.containment) {\n\t\t\tthis._setContainment();\n\t\t}\n\n\t\tif( o.cursor && o.cursor !== \"auto\" ) { // cursor option\n\t\t\tbody = this.document.find( \"body\" );\n\n\t\t\t// support: IE\n\t\t\tthis.storedCursor = body.css( \"cursor\" );\n\t\t\tbody.css( \"cursor\", o.cursor );\n\n\t\t\tthis.storedStylesheet = $( \"<style>*{ cursor: \"+o.cursor+\" !important; }</style>\" ).appendTo( body );\n\t\t}\n\n\t\tif(o.opacity) { // opacity option\n\t\t\tif (this.helper.css(\"opacity\")) {\n\t\t\t\tthis._storedOpacity = this.helper.css(\"opacity\");\n\t\t\t}\n\t\t\tthis.helper.css(\"opacity\", o.opacity);\n\t\t}\n\n\t\tif(o.zIndex) { // zIndex option\n\t\t\tif (this.helper.css(\"zIndex\")) {\n\t\t\t\tthis._storedZIndex = this.helper.css(\"zIndex\");\n\t\t\t}\n\t\t\tthis.helper.css(\"zIndex\", o.zIndex);\n\t\t}\n\n\t\t//Prepare scrolling\n\t\tif(this.scrollParent[0] !== document && this.scrollParent[0].tagName !== \"HTML\") {\n\t\t\tthis.overflowOffset = this.scrollParent.offset();\n\t\t}\n\n\t\t//Call callbacks\n\t\tthis._trigger(\"start\", event, this._uiHash());\n\n\t\t//Recache the helper size\n\t\tif(!this._preserveHelperProportions) {\n\t\t\tthis._cacheHelperProportions();\n\t\t}\n\n\n\t\t//Post \"activate\" events to possible containers\n\t\tif( !noActivation ) {\n\t\t\tfor ( i = this.containers.length - 1; i >= 0; i-- ) {\n\t\t\t\tthis.containers[ i ]._trigger( \"activate\", event, this._uiHash( this ) );\n\t\t\t}\n\t\t}\n\n\t\t//Prepare possible droppables\n\t\tif($.ui.ddmanager) {\n\t\t\t$.ui.ddmanager.current = this;\n\t\t}\n\n\t\tif ($.ui.ddmanager && !o.dropBehaviour) {\n\t\t\t$.ui.ddmanager.prepareOffsets(this, event);\n\t\t}\n\n\t\tthis.dragging = true;\n\n\t\tthis.helper.addClass(\"ui-sortable-helper\");\n\t\tthis._mouseDrag(event); //Execute the drag once - this causes the helper not to be visible before getting its correct position\n\t\treturn true;\n\n\t},\n\n\t_mouseDrag: function(event) {\n\t\tvar i, item, itemElement, intersection,\n\t\t\to = this.options,\n\t\t\tscrolled = false;\n\n\t\t//Compute the helpers position\n\t\tthis.position = this._generatePosition(event);\n\t\tthis.positionAbs = this._convertPositionTo(\"absolute\");\n\n\t\tif (!this.lastPositionAbs) {\n\t\t\tthis.lastPositionAbs = this.positionAbs;\n\t\t}\n\n\t\t//Do scrolling\n\t\tif(this.options.scroll) {\n\t\t\tif(this.scrollParent[0] !== document && this.scrollParent[0].tagName !== \"HTML\") {\n\n\t\t\t\tif((this.overflowOffset.top + this.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity) {\n\t\t\t\t\tthis.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop + o.scrollSpeed;\n\t\t\t\t} else if(event.pageY - this.overflowOffset.top < o.scrollSensitivity) {\n\t\t\t\t\tthis.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop - o.scrollSpeed;\n\t\t\t\t}\n\n\t\t\t\tif((this.overflowOffset.left + this.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity) {\n\t\t\t\t\tthis.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft + o.scrollSpeed;\n\t\t\t\t} else if(event.pageX - this.overflowOffset.left < o.scrollSensitivity) {\n\t\t\t\t\tthis.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft - o.scrollSpeed;\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif(event.pageY - $(document).scrollTop() < o.scrollSensitivity) {\n\t\t\t\t\tscrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed);\n\t\t\t\t} else if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity) {\n\t\t\t\t\tscrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed);\n\t\t\t\t}\n\n\t\t\t\tif(event.pageX - $(document).scrollLeft() < o.scrollSensitivity) {\n\t\t\t\t\tscrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed);\n\t\t\t\t} else if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity) {\n\t\t\t\t\tscrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed);\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour) {\n\t\t\t\t$.ui.ddmanager.prepareOffsets(this, event);\n\t\t\t}\n\t\t}\n\n\t\t//Regenerate the absolute position used for position checks\n\t\tthis.positionAbs = this._convertPositionTo(\"absolute\");\n\n\t\t//Set the helper position\n\t\tif(!this.options.axis || this.options.axis !== \"y\") {\n\t\t\tthis.helper[0].style.left = this.position.left+\"px\";\n\t\t}\n\t\tif(!this.options.axis || this.options.axis !== \"x\") {\n\t\t\tthis.helper[0].style.top = this.position.top+\"px\";\n\t\t}\n\n\t\t//Rearrange\n\t\tfor (i = this.items.length - 1; i >= 0; i--) {\n\n\t\t\t//Cache variables and intersection, continue if no intersection\n\t\t\titem = this.items[i];\n\t\t\titemElement = item.item[0];\n\t\t\tintersection = this._intersectsWithPointer(item);\n\t\t\tif (!intersection) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Only put the placeholder inside the current Container, skip all\n\t\t\t// items from other containers. This works because when moving\n\t\t\t// an item from one container to another the\n\t\t\t// currentContainer is switched before the placeholder is moved.\n\t\t\t//\n\t\t\t// Without this, moving items in \"sub-sortables\" can cause\n\t\t\t// the placeholder to jitter between the outer and inner container.\n\t\t\tif (item.instance !== this.currentContainer) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// cannot intersect with itself\n\t\t\t// no useless actions that have been done before\n\t\t\t// no action if the item moved is the parent of the item checked\n\t\t\tif (itemElement !== this.currentItem[0] &&\n\t\t\t\tthis.placeholder[intersection === 1 ? \"next\" : \"prev\"]()[0] !== itemElement &&\n\t\t\t\t!$.contains(this.placeholder[0], itemElement) &&\n\t\t\t\t(this.options.type === \"semi-dynamic\" ? !$.contains(this.element[0], itemElement) : true)\n\t\t\t) {\n\n\t\t\t\tthis.direction = intersection === 1 ? \"down\" : \"up\";\n\n\t\t\t\tif (this.options.tolerance === \"pointer\" || this._intersectsWithSides(item)) {\n\t\t\t\t\tthis._rearrange(event, item);\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tthis._trigger(\"change\", event, this._uiHash());\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t//Post events to containers\n\t\tthis._contactContainers(event);\n\n\t\t//Interconnect with droppables\n\t\tif($.ui.ddmanager) {\n\t\t\t$.ui.ddmanager.drag(this, event);\n\t\t}\n\n\t\t//Call callbacks\n\t\tthis._trigger(\"sort\", event, this._uiHash());\n\n\t\tthis.lastPositionAbs = this.positionAbs;\n\t\treturn false;\n\n\t},\n\n\t_mouseStop: function(event, noPropagation) {\n\n\t\tif(!event) {\n\t\t\treturn;\n\t\t}\n\n\t\t//If we are using droppables, inform the manager about the drop\n\t\tif ($.ui.ddmanager && !this.options.dropBehaviour) {\n\t\t\t$.ui.ddmanager.drop(this, event);\n\t\t}\n\n\t\tif(this.options.revert) {\n\t\t\tvar that = this,\n\t\t\t\tcur = this.placeholder.offset(),\n\t\t\t\taxis = this.options.axis,\n\t\t\t\tanimation = {};\n\n\t\t\tif ( !axis || axis === \"x\" ) {\n\t\t\t\tanimation.left = cur.left - this.offset.parent.left - this.margins.left + (this.offsetParent[0] === document.body ? 0 : this.offsetParent[0].scrollLeft);\n\t\t\t}\n\t\t\tif ( !axis || axis === \"y\" ) {\n\t\t\t\tanimation.top = cur.top - this.offset.parent.top - this.margins.top + (this.offsetParent[0] === document.body ? 0 : this.offsetParent[0].scrollTop);\n\t\t\t}\n\t\t\tthis.reverting = true;\n\t\t\t$(this.helper).animate( animation, parseInt(this.options.revert, 10) || 500, function() {\n\t\t\t\tthat._clear(event);\n\t\t\t});\n\t\t} else {\n\t\t\tthis._clear(event, noPropagation);\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\tcancel: function() {\n\n\t\tif(this.dragging) {\n\n\t\t\tthis._mouseUp({ target: null });\n\n\t\t\tif(this.options.helper === \"original\") {\n\t\t\t\tthis.currentItem.css(this._storedCSS).removeClass(\"ui-sortable-helper\");\n\t\t\t} else {\n\t\t\t\tthis.currentItem.show();\n\t\t\t}\n\n\t\t\t//Post deactivating events to containers\n\t\t\tfor (var i = this.containers.length - 1; i >= 0; i--){\n\t\t\t\tthis.containers[i]._trigger(\"deactivate\", null, this._uiHash(this));\n\t\t\t\tif(this.containers[i].containerCache.over) {\n\t\t\t\t\tthis.containers[i]._trigger(\"out\", null, this._uiHash(this));\n\t\t\t\t\tthis.containers[i].containerCache.over = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\tif (this.placeholder) {\n\t\t\t//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node!\n\t\t\tif(this.placeholder[0].parentNode) {\n\t\t\t\tthis.placeholder[0].parentNode.removeChild(this.placeholder[0]);\n\t\t\t}\n\t\t\tif(this.options.helper !== \"original\" && this.helper && this.helper[0].parentNode) {\n\t\t\t\tthis.helper.remove();\n\t\t\t}\n\n\t\t\t$.extend(this, {\n\t\t\t\thelper: null,\n\t\t\t\tdragging: false,\n\t\t\t\treverting: false,\n\t\t\t\t_noFinalSort: null\n\t\t\t});\n\n\t\t\tif(this.domPosition.prev) {\n\t\t\t\t$(this.domPosition.prev).after(this.currentItem);\n\t\t\t} else {\n\t\t\t\t$(this.domPosition.parent).prepend(this.currentItem);\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tserialize: function(o) {\n\n\t\tvar items = this._getItemsAsjQuery(o && o.connected),\n\t\t\tstr = [];\n\t\to = o || {};\n\n\t\t$(items).each(function() {\n\t\t\tvar res = ($(o.item || this).attr(o.attribute || \"id\") || \"\").match(o.expression || (/(.+)[\\-=_](.+)/));\n\t\t\tif (res) {\n\t\t\t\tstr.push((o.key || res[1]+\"[]\")+\"=\"+(o.key && o.expression ? res[1] : res[2]));\n\t\t\t}\n\t\t});\n\n\t\tif(!str.length && o.key) {\n\t\t\tstr.push(o.key + \"=\");\n\t\t}\n\n\t\treturn str.join(\"&\");\n\n\t},\n\n\ttoArray: function(o) {\n\n\t\tvar items = this._getItemsAsjQuery(o && o.connected),\n\t\t\tret = [];\n\n\t\to = o || {};\n\n\t\titems.each(function() { ret.push($(o.item || this).attr(o.attribute || \"id\") || \"\"); });\n\t\treturn ret;\n\n\t},\n\n\t/* Be careful with the following core functions */\n\t_intersectsWith: function(item) {\n\n\t\tvar x1 = this.positionAbs.left,\n\t\t\tx2 = x1 + this.helperProportions.width,\n\t\t\ty1 = this.positionAbs.top,\n\t\t\ty2 = y1 + this.helperProportions.height,\n\t\t\tl = item.left,\n\t\t\tr = l + item.width,\n\t\t\tt = item.top,\n\t\t\tb = t + item.height,\n\t\t\tdyClick = this.offset.click.top,\n\t\t\tdxClick = this.offset.click.left,\n\t\t\tisOverElementHeight = ( this.options.axis === \"x\" ) || ( ( y1 + dyClick ) > t && ( y1 + dyClick ) < b ),\n\t\t\tisOverElementWidth = ( this.options.axis === \"y\" ) || ( ( x1 + dxClick ) > l && ( x1 + dxClick ) < r ),\n\t\t\tisOverElement = isOverElementHeight && isOverElementWidth;\n\n\t\tif ( this.options.tolerance === \"pointer\" ||\n\t\t\tthis.options.forcePointerForContainers ||\n\t\t\t(this.options.tolerance !== \"pointer\" && this.helperProportions[this.floating ? \"width\" : \"height\"] > item[this.floating ? \"width\" : \"height\"])\n\t\t) {\n\t\t\treturn isOverElement;\n\t\t} else {\n\n\t\t\treturn (l < x1 + (this.helperProportions.width / 2) && // Right Half\n\t\t\t\tx2 - (this.helperProportions.width / 2) < r && // Left Half\n\t\t\t\tt < y1 + (this.helperProportions.height / 2) && // Bottom Half\n\t\t\t\ty2 - (this.helperProportions.height / 2) < b ); // Top Half\n\n\t\t}\n\t},\n\n\t_intersectsWithPointer: function(item) {\n\n\t\tvar isOverElementHeight = (this.options.axis === \"x\") || this._isOverAxis(this.positionAbs.top + this.offset.click.top, item.top, item.height),\n\t\t\tisOverElementWidth = (this.options.axis === \"y\") || this._isOverAxis(this.positionAbs.left + this.offset.click.left, item.left, item.width),\n\t\t\tisOverElement = isOverElementHeight && isOverElementWidth,\n\t\t\tverticalDirection = this._getDragVerticalDirection(),\n\t\t\thorizontalDirection = this._getDragHorizontalDirection();\n\n\t\tif (!isOverElement) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn this.floating ?\n\t\t\t( ((horizontalDirection && horizontalDirection === \"right\") || verticalDirection === \"down\") ? 2 : 1 )\n\t\t\t: ( verticalDirection && (verticalDirection === \"down\" ? 2 : 1) );\n\n\t},\n\n\t_intersectsWithSides: function(item) {\n\n\t\tvar isOverBottomHalf = this._isOverAxis(this.positionAbs.top + this.offset.click.top, item.top + (item.height/2), item.height),\n\t\t\tisOverRightHalf = this._isOverAxis(this.positionAbs.left + this.offset.click.left, item.left + (item.width/2), item.width),\n\t\t\tverticalDirection = this._getDragVerticalDirection(),\n\t\t\thorizontalDirection = this._getDragHorizontalDirection();\n\n\t\tif (this.floating && horizontalDirection) {\n\t\t\treturn ((horizontalDirection === \"right\" && isOverRightHalf) || (horizontalDirection === \"left\" && !isOverRightHalf));\n\t\t} else {\n\t\t\treturn verticalDirection && ((verticalDirection === \"down\" && isOverBottomHalf) || (verticalDirection === \"up\" && !isOverBottomHalf));\n\t\t}\n\n\t},\n\n\t_getDragVerticalDirection: function() {\n\t\tvar delta = this.positionAbs.top - this.lastPositionAbs.top;\n\t\treturn delta !== 0 && (delta > 0 ? \"down\" : \"up\");\n\t},\n\n\t_getDragHorizontalDirection: function() {\n\t\tvar delta = this.positionAbs.left - this.lastPositionAbs.left;\n\t\treturn delta !== 0 && (delta > 0 ? \"right\" : \"left\");\n\t},\n\n\trefresh: function(event) {\n\t\tthis._refreshItems(event);\n\t\tthis._setHandleClassName();\n\t\tthis.refreshPositions();\n\t\treturn this;\n\t},\n\n\t_connectWith: function() {\n\t\tvar options = this.options;\n\t\treturn options.connectWith.constructor === String ? [options.connectWith] : options.connectWith;\n\t},\n\n\t_getItemsAsjQuery: function(connected) {\n\n\t\tvar i, j, cur, inst,\n\t\t\titems = [],\n\t\t\tqueries = [],\n\t\t\tconnectWith = this._connectWith();\n\n\t\tif(connectWith && connected) {\n\t\t\tfor (i = connectWith.length - 1; i >= 0; i--){\n\t\t\t\tcur = $(connectWith[i]);\n\t\t\t\tfor ( j = cur.length - 1; j >= 0; j--){\n\t\t\t\t\tinst = $.data(cur[j], this.widgetFullName);\n\t\t\t\t\tif(inst && inst !== this && !inst.options.disabled) {\n\t\t\t\t\t\tqueries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element) : $(inst.options.items, inst.element).not(\".ui-sortable-helper\").not(\".ui-sortable-placeholder\"), inst]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tqueries.push([$.isFunction(this.options.items) ? this.options.items.call(this.element, null, { options: this.options, item: this.currentItem }) : $(this.options.items, this.element).not(\".ui-sortable-helper\").not(\".ui-sortable-placeholder\"), this]);\n\n\t\tfunction addItems() {\n\t\t\titems.push( this );\n\t\t}\n\t\tfor (i = queries.length - 1; i >= 0; i--){\n\t\t\tqueries[i][0].each( addItems );\n\t\t}\n\n\t\treturn $(items);\n\n\t},\n\n\t_removeCurrentsFromItems: function() {\n\n\t\tvar list = this.currentItem.find(\":data(\" + this.widgetName + \"-item)\");\n\n\t\tthis.items = $.grep(this.items, function (item) {\n\t\t\tfor (var j=0; j < list.length; j++) {\n\t\t\t\tif(list[j] === item.item[0]) {\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},\n\n\t_refreshItems: function(event) {\n\n\t\tthis.items = [];\n\t\tthis.containers = [this];\n\n\t\tvar i, j, cur, inst, targetData, _queries, item, queriesLength,\n\t\t\titems = this.items,\n\t\t\tqueries = [[$.isFunction(this.options.items) ? this.options.items.call(this.element[0], event, { item: this.currentItem }) : $(this.options.items, this.element), this]],\n\t\t\tconnectWith = this._connectWith();\n\n\t\tif(connectWith && this.ready) { //Shouldn't be run the first time through due to massive slow-down\n\t\t\tfor (i = connectWith.length - 1; i >= 0; i--){\n\t\t\t\tcur = $(connectWith[i]);\n\t\t\t\tfor (j = cur.length - 1; j >= 0; j--){\n\t\t\t\t\tinst = $.data(cur[j], this.widgetFullName);\n\t\t\t\t\tif(inst && inst !== this && !inst.options.disabled) {\n\t\t\t\t\t\tqueries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element[0], event, { item: this.currentItem }) : $(inst.options.items, inst.element), inst]);\n\t\t\t\t\t\tthis.containers.push(inst);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (i = queries.length - 1; i >= 0; i--) {\n\t\t\ttargetData = queries[i][1];\n\t\t\t_queries = queries[i][0];\n\n\t\t\tfor (j=0, queriesLength = _queries.length; j < queriesLength; j++) {\n\t\t\t\titem = $(_queries[j]);\n\n\t\t\t\titem.data(this.widgetName + \"-item\", targetData); // Data for target checking (mouse manager)\n\n\t\t\t\titems.push({\n\t\t\t\t\titem: item,\n\t\t\t\t\tinstance: targetData,\n\t\t\t\t\twidth: 0, height: 0,\n\t\t\t\t\tleft: 0, top: 0\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t},\n\n\trefreshPositions: function(fast) {\n\n\t\t//This has to be redone because due to the item being moved out/into the offsetParent, the offsetParent's position will change\n\t\tif(this.offsetParent && this.helper) {\n\t\t\tthis.offset.parent = this._getParentOffset();\n\t\t}\n\n\t\tvar i, item, t, p;\n\n\t\tfor (i = this.items.length - 1; i >= 0; i--){\n\t\t\titem = this.items[i];\n\n\t\t\t//We ignore calculating positions of all connected containers when we're not over them\n\t\t\tif(item.instance !== this.currentContainer && this.currentContainer && item.item[0] !== this.currentItem[0]) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tt = this.options.toleranceElement ? $(this.options.toleranceElement, item.item) : item.item;\n\n\t\t\tif (!fast) {\n\t\t\t\titem.width = t.outerWidth();\n\t\t\t\titem.height = t.outerHeight();\n\t\t\t}\n\n\t\t\tp = t.offset();\n\t\t\titem.left = p.left;\n\t\t\titem.top = p.top;\n\t\t}\n\n\t\tif(this.options.custom && this.options.custom.refreshContainers) {\n\t\t\tthis.options.custom.refreshContainers.call(this);\n\t\t} else {\n\t\t\tfor (i = this.containers.length - 1; i >= 0; i--){\n\t\t\t\tp = this.containers[i].element.offset();\n\t\t\t\tthis.containers[i].containerCache.left = p.left;\n\t\t\t\tthis.containers[i].containerCache.top = p.top;\n\t\t\t\tthis.containers[i].containerCache.width = this.containers[i].element.outerWidth();\n\t\t\t\tthis.containers[i].containerCache.height = this.containers[i].element.outerHeight();\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_createPlaceholder: function(that) {\n\t\tthat = that || this;\n\t\tvar className,\n\t\t\to = that.options;\n\n\t\tif(!o.placeholder || o.placeholder.constructor === String) {\n\t\t\tclassName = o.placeholder;\n\t\t\to.placeholder = {\n\t\t\t\telement: function() {\n\n\t\t\t\t\tvar nodeName = that.currentItem[0].nodeName.toLowerCase(),\n\t\t\t\t\t\telement = $( \"<\" + nodeName + \">\", that.document[0] )\n\t\t\t\t\t\t\t.addClass(className || that.currentItem[0].className+\" ui-sortable-placeholder\")\n\t\t\t\t\t\t\t.removeClass(\"ui-sortable-helper\");\n\n\t\t\t\t\tif ( nodeName === \"tr\" ) {\n\t\t\t\t\t\tthat.currentItem.children().each(function() {\n\t\t\t\t\t\t\t$( \"<td> </td>\", that.document[0] )\n\t\t\t\t\t\t\t\t.attr( \"colspan\", $( this ).attr( \"colspan\" ) || 1 )\n\t\t\t\t\t\t\t\t.appendTo( element );\n\t\t\t\t\t\t});\n\t\t\t\t\t} else if ( nodeName === \"img\" ) {\n\t\t\t\t\t\telement.attr( \"src\", that.currentItem.attr( \"src\" ) );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !className ) {\n\t\t\t\t\t\telement.css( \"visibility\", \"hidden\" );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn element;\n\t\t\t\t},\n\t\t\t\tupdate: function(container, p) {\n\n\t\t\t\t\t// 1. If a className is set as 'placeholder option, we don't force sizes - the class is responsible for that\n\t\t\t\t\t// 2. The option 'forcePlaceholderSize can be enabled to force it even if a class name is specified\n\t\t\t\t\tif(className && !o.forcePlaceholderSize) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t//If the element doesn't have a actual height by itself (without styles coming from a stylesheet), it receives the inline height from the dragged item\n\t\t\t\t\tif(!p.height()) { p.height(that.currentItem.innerHeight() - parseInt(that.currentItem.css(\"paddingTop\")||0, 10) - parseInt(that.currentItem.css(\"paddingBottom\")||0, 10)); }\n\t\t\t\t\tif(!p.width()) { p.width(that.currentItem.innerWidth() - parseInt(that.currentItem.css(\"paddingLeft\")||0, 10) - parseInt(that.currentItem.css(\"paddingRight\")||0, 10)); }\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\t//Create the placeholder\n\t\tthat.placeholder = $(o.placeholder.element.call(that.element, that.currentItem));\n\n\t\t//Append it after the actual current item\n\t\tthat.currentItem.after(that.placeholder);\n\n\t\t//Update the size of the placeholder (TODO: Logic to fuzzy, see line 316/317)\n\t\to.placeholder.update(that, that.placeholder);\n\n\t},\n\n\t_contactContainers: function(event) {\n\t\tvar i, j, dist, itemWithLeastDistance, posProperty, sizeProperty, cur, nearBottom, floating, axis,\n\t\t\tinnermostContainer = null,\n\t\t\tinnermostIndex = null;\n\n\t\t// get innermost container that intersects with item\n\t\tfor (i = this.containers.length - 1; i >= 0; i--) {\n\n\t\t\t// never consider a container that's located within the item itself\n\t\t\tif($.contains(this.currentItem[0], this.containers[i].element[0])) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif(this._intersectsWith(this.containers[i].containerCache)) {\n\n\t\t\t\t// if we've already found a container and it's more \"inner\" than this, then continue\n\t\t\t\tif(innermostContainer && $.contains(this.containers[i].element[0], innermostContainer.element[0])) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tinnermostContainer = this.containers[i];\n\t\t\t\tinnermostIndex = i;\n\n\t\t\t} else {\n\t\t\t\t// container doesn't intersect. trigger \"out\" event if necessary\n\t\t\t\tif(this.containers[i].containerCache.over) {\n\t\t\t\t\tthis.containers[i]._trigger(\"out\", event, this._uiHash(this));\n\t\t\t\t\tthis.containers[i].containerCache.over = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\t// if no intersecting containers found, return\n\t\tif(!innermostContainer) {\n\t\t\treturn;\n\t\t}\n\n\t\t// move the item into the container if it's not there already\n\t\tif(this.containers.length === 1) {\n\t\t\tif (!this.containers[innermostIndex].containerCache.over) {\n\t\t\t\tthis.containers[innermostIndex]._trigger(\"over\", event, this._uiHash(this));\n\t\t\t\tthis.containers[innermostIndex].containerCache.over = 1;\n\t\t\t}\n\t\t} else {\n\n\t\t\t//When entering a new container, we will find the item with the least distance and append our item near it\n\t\t\tdist = 10000;\n\t\t\titemWithLeastDistance = null;\n\t\t\tfloating = innermostContainer.floating || this._isFloating(this.currentItem);\n\t\t\tposProperty = floating ? \"left\" : \"top\";\n\t\t\tsizeProperty = floating ? \"width\" : \"height\";\n\t\t\taxis = floating ? \"clientX\" : \"clientY\";\n\n\t\t\tfor (j = this.items.length - 1; j >= 0; j--) {\n\t\t\t\tif(!$.contains(this.containers[innermostIndex].element[0], this.items[j].item[0])) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif(this.items[j].item[0] === this.currentItem[0]) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tcur = this.items[j].item.offset()[posProperty];\n\t\t\t\tnearBottom = false;\n\t\t\t\tif ( event[ axis ] - cur > this.items[ j ][ sizeProperty ] / 2 ) {\n\t\t\t\t\tnearBottom = true;\n\t\t\t\t}\n\n\t\t\t\tif ( Math.abs( event[ axis ] - cur ) < dist ) {\n\t\t\t\t\tdist = Math.abs( event[ axis ] - cur );\n\t\t\t\t\titemWithLeastDistance = this.items[ j ];\n\t\t\t\t\tthis.direction = nearBottom ? \"up\": \"down\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//Check if dropOnEmpty is enabled\n\t\t\tif(!itemWithLeastDistance && !this.options.dropOnEmpty) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif(this.currentContainer === this.containers[innermostIndex]) {\n\t\t\t\tif ( !this.currentContainer.containerCache.over ) {\n\t\t\t\t\tthis.containers[ innermostIndex ]._trigger( \"over\", event, this._uiHash() );\n\t\t\t\t\tthis.currentContainer.containerCache.over = 1;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\titemWithLeastDistance ? this._rearrange(event, itemWithLeastDistance, null, true) : this._rearrange(event, null, this.containers[innermostIndex].element, true);\n\t\t\tthis._trigger(\"change\", event, this._uiHash());\n\t\t\tthis.containers[innermostIndex]._trigger(\"change\", event, this._uiHash(this));\n\t\t\tthis.currentContainer = this.containers[innermostIndex];\n\n\t\t\t//Update the placeholder\n\t\t\tthis.options.placeholder.update(this.currentContainer, this.placeholder);\n\n\t\t\tthis.containers[innermostIndex]._trigger(\"over\", event, this._uiHash(this));\n\t\t\tthis.containers[innermostIndex].containerCache.over = 1;\n\t\t}\n\n\n\t},\n\n\t_createHelper: function(event) {\n\n\t\tvar o = this.options,\n\t\t\thelper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event, this.currentItem])) : (o.helper === \"clone\" ? this.currentItem.clone() : this.currentItem);\n\n\t\t//Add the helper to the DOM if that didn't happen already\n\t\tif(!helper.parents(\"body\").length) {\n\t\t\t$(o.appendTo !== \"parent\" ? o.appendTo : this.currentItem[0].parentNode)[0].appendChild(helper[0]);\n\t\t}\n\n\t\tif(helper[0] === this.currentItem[0]) {\n\t\t\tthis._storedCSS = { width: this.currentItem[0].style.width, height: this.currentItem[0].style.height, position: this.currentItem.css(\"position\"), top: this.currentItem.css(\"top\"), left: this.currentItem.css(\"left\") };\n\t\t}\n\n\t\tif(!helper[0].style.width || o.forceHelperSize) {\n\t\t\thelper.width(this.currentItem.width());\n\t\t}\n\t\tif(!helper[0].style.height || o.forceHelperSize) {\n\t\t\thelper.height(this.currentItem.height());\n\t\t}\n\n\t\treturn helper;\n\n\t},\n\n\t_adjustOffsetFromHelper: function(obj) {\n\t\tif (typeof obj === \"string\") {\n\t\t\tobj = obj.split(\" \");\n\t\t}\n\t\tif ($.isArray(obj)) {\n\t\t\tobj = {left: +obj[0], top: +obj[1] || 0};\n\t\t}\n\t\tif (\"left\" in obj) {\n\t\t\tthis.offset.click.left = obj.left + this.margins.left;\n\t\t}\n\t\tif (\"right\" in obj) {\n\t\t\tthis.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;\n\t\t}\n\t\tif (\"top\" in obj) {\n\t\t\tthis.offset.click.top = obj.top + this.margins.top;\n\t\t}\n\t\tif (\"bottom\" in obj) {\n\t\t\tthis.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;\n\t\t}\n\t},\n\n\t_getParentOffset: function() {\n\n\n\t\t//Get the offsetParent and cache its position\n\t\tthis.offsetParent = this.helper.offsetParent();\n\t\tvar po = this.offsetParent.offset();\n\n\t\t// This is a special case where we need to modify a offset calculated on start, since the following happened:\n\t\t// 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent\n\t\t// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that\n\t\t// the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag\n\t\tif(this.cssPosition === \"absolute\" && this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) {\n\t\t\tpo.left += this.scrollParent.scrollLeft();\n\t\t\tpo.top += this.scrollParent.scrollTop();\n\t\t}\n\n\t\t// This needs to be actually done for all browsers, since pageX/pageY includes this information\n\t\t// with an ugly IE fix\n\t\tif( this.offsetParent[0] === document.body || (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() === \"html\" && $.ui.ie)) {\n\t\t\tpo = { top: 0, left: 0 };\n\t\t}\n\n\t\treturn {\n\t\t\ttop: po.top + (parseInt(this.offsetParent.css(\"borderTopWidth\"),10) || 0),\n\t\t\tleft: po.left + (parseInt(this.offsetParent.css(\"borderLeftWidth\"),10) || 0)\n\t\t};\n\n\t},\n\n\t_getRelativeOffset: function() {\n\n\t\tif(this.cssPosition === \"relative\") {\n\t\t\tvar p = this.currentItem.position();\n\t\t\treturn {\n\t\t\t\ttop: p.top - (parseInt(this.helper.css(\"top\"),10) || 0) + this.scrollParent.scrollTop(),\n\t\t\t\tleft: p.left - (parseInt(this.helper.css(\"left\"),10) || 0) + this.scrollParent.scrollLeft()\n\t\t\t};\n\t\t} else {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t},\n\n\t_cacheMargins: function() {\n\t\tthis.margins = {\n\t\t\tleft: (parseInt(this.currentItem.css(\"marginLeft\"),10) || 0),\n\t\t\ttop: (parseInt(this.currentItem.css(\"marginTop\"),10) || 0)\n\t\t};\n\t},\n\n\t_cacheHelperProportions: function() {\n\t\tthis.helperProportions = {\n\t\t\twidth: this.helper.outerWidth(),\n\t\t\theight: this.helper.outerHeight()\n\t\t};\n\t},\n\n\t_setContainment: function() {\n\n\t\tvar ce, co, over,\n\t\t\to = this.options;\n\t\tif(o.containment === \"parent\") {\n\t\t\to.containment = this.helper[0].parentNode;\n\t\t}\n\t\tif(o.containment === \"document\" || o.containment === \"window\") {\n\t\t\tthis.containment = [\n\t\t\t\t0 - this.offset.relative.left - this.offset.parent.left,\n\t\t\t\t0 - this.offset.relative.top - this.offset.parent.top,\n\t\t\t\t$(o.containment === \"document\" ? document : window).width() - this.helperProportions.width - this.margins.left,\n\t\t\t\t($(o.containment === \"document\" ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top\n\t\t\t];\n\t\t}\n\n\t\tif(!(/^(document|window|parent)$/).test(o.containment)) {\n\t\t\tce = $(o.containment)[0];\n\t\t\tco = $(o.containment).offset();\n\t\t\tover = ($(ce).css(\"overflow\") !== \"hidden\");\n\n\t\t\tthis.containment = [\n\t\t\t\tco.left + (parseInt($(ce).css(\"borderLeftWidth\"),10) || 0) + (parseInt($(ce).css(\"paddingLeft\"),10) || 0) - this.margins.left,\n\t\t\t\tco.top + (parseInt($(ce).css(\"borderTopWidth\"),10) || 0) + (parseInt($(ce).css(\"paddingTop\"),10) || 0) - this.margins.top,\n\t\t\t\tco.left+(over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css(\"borderLeftWidth\"),10) || 0) - (parseInt($(ce).css(\"paddingRight\"),10) || 0) - this.helperProportions.width - this.margins.left,\n\t\t\t\tco.top+(over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css(\"borderTopWidth\"),10) || 0) - (parseInt($(ce).css(\"paddingBottom\"),10) || 0) - this.helperProportions.height - this.margins.top\n\t\t\t];\n\t\t}\n\n\t},\n\n\t_convertPositionTo: function(d, pos) {\n\n\t\tif(!pos) {\n\t\t\tpos = this.position;\n\t\t}\n\t\tvar mod = d === \"absolute\" ? 1 : -1,\n\t\t\tscroll = this.cssPosition === \"absolute\" && !(this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent,\n\t\t\tscrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);\n\n\t\treturn {\n\t\t\ttop: (\n\t\t\t\tpos.top\t+\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\tthis.offset.relative.top * mod +\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.parent.top * mod -\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t( ( this.cssPosition === \"fixed\" ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod)\n\t\t\t),\n\t\t\tleft: (\n\t\t\t\tpos.left +\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\tthis.offset.relative.left * mod +\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.parent.left * mod\t-\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t( ( this.cssPosition === \"fixed\" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod)\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_generatePosition: function(event) {\n\n\t\tvar top, left,\n\t\t\to = this.options,\n\t\t\tpageX = event.pageX,\n\t\t\tpageY = event.pageY,\n\t\t\tscroll = this.cssPosition === \"absolute\" && !(this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);\n\n\t\t// This is another very weird special case that only happens for relative elements:\n\t\t// 1. If the css position is relative\n\t\t// 2. and the scroll parent is the document or similar to the offset parent\n\t\t// we have to refresh the relative offset during the scroll so there are no jumps\n\t\tif(this.cssPosition === \"relative\" && !(this.scrollParent[0] !== document && this.scrollParent[0] !== this.offsetParent[0])) {\n\t\t\tthis.offset.relative = this._getRelativeOffset();\n\t\t}\n\n\t\t/*\n\t\t * - Position constraining -\n\t\t * Constrain the position to a mix of grid, containment.\n\t\t */\n\n\t\tif(this.originalPosition) { //If we are not dragging yet, we won't check for options\n\n\t\t\tif(this.containment) {\n\t\t\t\tif(event.pageX - this.offset.click.left < this.containment[0]) {\n\t\t\t\t\tpageX = this.containment[0] + this.offset.click.left;\n\t\t\t\t}\n\t\t\t\tif(event.pageY - this.offset.click.top < this.containment[1]) {\n\t\t\t\t\tpageY = this.containment[1] + this.offset.click.top;\n\t\t\t\t}\n\t\t\t\tif(event.pageX - this.offset.click.left > this.containment[2]) {\n\t\t\t\t\tpageX = this.containment[2] + this.offset.click.left;\n\t\t\t\t}\n\t\t\t\tif(event.pageY - this.offset.click.top > this.containment[3]) {\n\t\t\t\t\tpageY = this.containment[3] + this.offset.click.top;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(o.grid) {\n\t\t\t\ttop = this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1];\n\t\t\t\tpageY = this.containment ? ( (top - this.offset.click.top >= this.containment[1] && top - this.offset.click.top <= this.containment[3]) ? top : ((top - this.offset.click.top >= this.containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top;\n\n\t\t\t\tleft = this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0];\n\t\t\t\tpageX = this.containment ? ( (left - this.offset.click.left >= this.containment[0] && left - this.offset.click.left <= this.containment[2]) ? left : ((left - this.offset.click.left >= this.containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttop: (\n\t\t\t\tpageY -\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\tthis.offset.click.top -\t\t\t\t\t\t\t\t\t\t\t\t\t// Click offset (relative to the element)\n\t\t\t\tthis.offset.relative.top\t-\t\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.parent.top +\t\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t( ( this.cssPosition === \"fixed\" ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ))\n\t\t\t),\n\t\t\tleft: (\n\t\t\t\tpageX -\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// The absolute mouse position\n\t\t\t\tthis.offset.click.left -\t\t\t\t\t\t\t\t\t\t\t\t// Click offset (relative to the element)\n\t\t\t\tthis.offset.relative.left\t-\t\t\t\t\t\t\t\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.parent.left +\t\t\t\t\t\t\t\t\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\t( ( this.cssPosition === \"fixed\" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ))\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_rearrange: function(event, i, a, hardRefresh) {\n\n\t\ta ? a[0].appendChild(this.placeholder[0]) : i.item[0].parentNode.insertBefore(this.placeholder[0], (this.direction === \"down\" ? i.item[0] : i.item[0].nextSibling));\n\n\t\t//Various things done here to improve the performance:\n\t\t// 1. we create a setTimeout, that calls refreshPositions\n\t\t// 2. on the instance, we have a counter variable, that get's higher after every append\n\t\t// 3. on the local scope, we copy the counter variable, and check in the timeout, if it's still the same\n\t\t// 4. this lets only the last addition to the timeout stack through\n\t\tthis.counter = this.counter ? ++this.counter : 1;\n\t\tvar counter = this.counter;\n\n\t\tthis._delay(function() {\n\t\t\tif(counter === this.counter) {\n\t\t\t\tthis.refreshPositions(!hardRefresh); //Precompute after each DOM insertion, NOT on mousemove\n\t\t\t}\n\t\t});\n\n\t},\n\n\t_clear: function(event, noPropagation) {\n\n\t\tthis.reverting = false;\n\t\t// We delay all events that have to be triggered to after the point where the placeholder has been removed and\n\t\t// everything else normalized again\n\t\tvar i,\n\t\t\tdelayedTriggers = [];\n\n\t\t// We first have to update the dom position of the actual currentItem\n\t\t// Note: don't do it if the current item is already removed (by a user), or it gets reappended (see #4088)\n\t\tif(!this._noFinalSort && this.currentItem.parent().length) {\n\t\t\tthis.placeholder.before(this.currentItem);\n\t\t}\n\t\tthis._noFinalSort = null;\n\n\t\tif(this.helper[0] === this.currentItem[0]) {\n\t\t\tfor(i in this._storedCSS) {\n\t\t\t\tif(this._storedCSS[i] === \"auto\" || this._storedCSS[i] === \"static\") {\n\t\t\t\t\tthis._storedCSS[i] = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.currentItem.css(this._storedCSS).removeClass(\"ui-sortable-helper\");\n\t\t} else {\n\t\t\tthis.currentItem.show();\n\t\t}\n\n\t\tif(this.fromOutside && !noPropagation) {\n\t\t\tdelayedTriggers.push(function(event) { this._trigger(\"receive\", event, this._uiHash(this.fromOutside)); });\n\t\t}\n\t\tif((this.fromOutside || this.domPosition.prev !== this.currentItem.prev().not(\".ui-sortable-helper\")[0] || this.domPosition.parent !== this.currentItem.parent()[0]) && !noPropagation) {\n\t\t\tdelayedTriggers.push(function(event) { this._trigger(\"update\", event, this._uiHash()); }); //Trigger update callback if the DOM position has changed\n\t\t}\n\n\t\t// Check if the items Container has Changed and trigger appropriate\n\t\t// events.\n\t\tif (this !== this.currentContainer) {\n\t\t\tif(!noPropagation) {\n\t\t\t\tdelayedTriggers.push(function(event) { this._trigger(\"remove\", event, this._uiHash()); });\n\t\t\t\tdelayedTriggers.push((function(c) { return function(event) { c._trigger(\"receive\", event, this._uiHash(this)); }; }).call(this, this.currentContainer));\n\t\t\t\tdelayedTriggers.push((function(c) { return function(event) { c._trigger(\"update\", event, this._uiHash(this)); }; }).call(this, this.currentContainer));\n\t\t\t}\n\t\t}\n\n\n\t\t//Post events to containers\n\t\tfunction delayEvent( type, instance, container ) {\n\t\t\treturn function( event ) {\n\t\t\t\tcontainer._trigger( type, event, instance._uiHash( instance ) );\n\t\t\t};\n\t\t}\n\t\tfor (i = this.containers.length - 1; i >= 0; i--){\n\t\t\tif (!noPropagation) {\n\t\t\t\tdelayedTriggers.push( delayEvent( \"deactivate\", this, this.containers[ i ] ) );\n\t\t\t}\n\t\t\tif(this.containers[i].containerCache.over) {\n\t\t\t\tdelayedTriggers.push( delayEvent( \"out\", this, this.containers[ i ] ) );\n\t\t\t\tthis.containers[i].containerCache.over = 0;\n\t\t\t}\n\t\t}\n\n\t\t//Do what was originally in plugins\n\t\tif ( this.storedCursor ) {\n\t\t\tthis.document.find( \"body\" ).css( \"cursor\", this.storedCursor );\n\t\t\tthis.storedStylesheet.remove();\n\t\t}\n\t\tif(this._storedOpacity) {\n\t\t\tthis.helper.css(\"opacity\", this._storedOpacity);\n\t\t}\n\t\tif(this._storedZIndex) {\n\t\t\tthis.helper.css(\"zIndex\", this._storedZIndex === \"auto\" ? \"\" : this._storedZIndex);\n\t\t}\n\n\t\tthis.dragging = false;\n\n\t\tif(!noPropagation) {\n\t\t\tthis._trigger(\"beforeStop\", event, this._uiHash());\n\t\t}\n\n\t\t//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node!\n\t\tthis.placeholder[0].parentNode.removeChild(this.placeholder[0]);\n\n\t\tif ( !this.cancelHelperRemoval ) {\n\t\t\tif ( this.helper[ 0 ] !== this.currentItem[ 0 ] ) {\n\t\t\t\tthis.helper.remove();\n\t\t\t}\n\t\t\tthis.helper = null;\n\t\t}\n\n\t\tif(!noPropagation) {\n\t\t\tfor (i=0; i < delayedTriggers.length; i++) {\n\t\t\t\tdelayedTriggers[i].call(this, event);\n\t\t\t} //Trigger all delayed events\n\t\t\tthis._trigger(\"stop\", event, this._uiHash());\n\t\t}\n\n\t\tthis.fromOutside = false;\n\t\treturn !this.cancelHelperRemoval;\n\n\t},\n\n\t_trigger: function() {\n\t\tif ($.Widget.prototype._trigger.apply(this, arguments) === false) {\n\t\t\tthis.cancel();\n\t\t}\n\t},\n\n\t_uiHash: function(_inst) {\n\t\tvar inst = _inst || this;\n\t\treturn {\n\t\t\thelper: inst.helper,\n\t\t\tplaceholder: inst.placeholder || $([]),\n\t\t\tposition: inst.position,\n\t\t\toriginalPosition: inst.originalPosition,\n\t\t\toffset: inst.positionAbs,\n\t\t\titem: inst.currentItem,\n\t\t\tsender: _inst ? _inst.element : null\n\t\t};\n\t}\n\n});\n\n\n/*!\n * jQuery UI Spinner 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/spinner/\n */\n\n\nfunction spinner_modifier( fn ) {\n\treturn function() {\n\t\tvar previous = this.element.val();\n\t\tfn.apply( this, arguments );\n\t\tthis._refresh();\n\t\tif ( previous !== this.element.val() ) {\n\t\t\tthis._trigger( \"change\" );\n\t\t}\n\t};\n}\n\nvar spinner = $.widget( \"ui.spinner\", {\n\tversion: \"1.11.2\",\n\tdefaultElement: \"<input>\",\n\twidgetEventPrefix: \"spin\",\n\toptions: {\n\t\tculture: null,\n\t\ticons: {\n\t\t\tdown: \"ui-icon-triangle-1-s\",\n\t\t\tup: \"ui-icon-triangle-1-n\"\n\t\t},\n\t\tincremental: true,\n\t\tmax: null,\n\t\tmin: null,\n\t\tnumberFormat: null,\n\t\tpage: 10,\n\t\tstep: 1,\n\n\t\tchange: null,\n\t\tspin: null,\n\t\tstart: null,\n\t\tstop: null\n\t},\n\n\t_create: function() {\n\t\t// handle string values that need to be parsed\n\t\tthis._setOption( \"max\", this.options.max );\n\t\tthis._setOption( \"min\", this.options.min );\n\t\tthis._setOption( \"step\", this.options.step );\n\n\t\t// Only format if there is a value, prevents the field from being marked\n\t\t// as invalid in Firefox, see #9573.\n\t\tif ( this.value() !== \"\" ) {\n\t\t\t// Format the value, but don't constrain.\n\t\t\tthis._value( this.element.val(), true );\n\t\t}\n\n\t\tthis._draw();\n\t\tthis._on( this._events );\n\t\tthis._refresh();\n\n\t\t// turning off autocomplete prevents the browser from remembering the\n\t\t// value when navigating through history, so we re-enable autocomplete\n\t\t// if the page is unloaded before the widget is destroyed. #7790\n\t\tthis._on( this.window, {\n\t\t\tbeforeunload: function() {\n\t\t\t\tthis.element.removeAttr( \"autocomplete\" );\n\t\t\t}\n\t\t});\n\t},\n\n\t_getCreateOptions: function() {\n\t\tvar options = {},\n\t\t\telement = this.element;\n\n\t\t$.each( [ \"min\", \"max\", \"step\" ], function( i, option ) {\n\t\t\tvar value = element.attr( option );\n\t\t\tif ( value !== undefined && value.length ) {\n\t\t\t\toptions[ option ] = value;\n\t\t\t}\n\t\t});\n\n\t\treturn options;\n\t},\n\n\t_events: {\n\t\tkeydown: function( event ) {\n\t\t\tif ( this._start( event ) && this._keydown( event ) ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t},\n\t\tkeyup: \"_stop\",\n\t\tfocus: function() {\n\t\t\tthis.previous = this.element.val();\n\t\t},\n\t\tblur: function( event ) {\n\t\t\tif ( this.cancelBlur ) {\n\t\t\t\tdelete this.cancelBlur;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._stop();\n\t\t\tthis._refresh();\n\t\t\tif ( this.previous !== this.element.val() ) {\n\t\t\t\tthis._trigger( \"change\", event );\n\t\t\t}\n\t\t},\n\t\tmousewheel: function( event, delta ) {\n\t\t\tif ( !delta ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( !this.spinning && !this._start( event ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthis._spin( (delta > 0 ? 1 : -1) * this.options.step, event );\n\t\t\tclearTimeout( this.mousewheelTimer );\n\t\t\tthis.mousewheelTimer = this._delay(function() {\n\t\t\t\tif ( this.spinning ) {\n\t\t\t\t\tthis._stop( event );\n\t\t\t\t}\n\t\t\t}, 100 );\n\t\t\tevent.preventDefault();\n\t\t},\n\t\t\"mousedown .ui-spinner-button\": function( event ) {\n\t\t\tvar previous;\n\n\t\t\t// We never want the buttons to have focus; whenever the user is\n\t\t\t// interacting with the spinner, the focus should be on the input.\n\t\t\t// If the input is focused then this.previous is properly set from\n\t\t\t// when the input first received focus. If the input is not focused\n\t\t\t// then we need to set this.previous based on the value before spinning.\n\t\t\tprevious = this.element[0] === this.document[0].activeElement ?\n\t\t\t\tthis.previous : this.element.val();\n\t\t\tfunction checkFocus() {\n\t\t\t\tvar isActive = this.element[0] === this.document[0].activeElement;\n\t\t\t\tif ( !isActive ) {\n\t\t\t\t\tthis.element.focus();\n\t\t\t\t\tthis.previous = previous;\n\t\t\t\t\t// support: IE\n\t\t\t\t\t// IE sets focus asynchronously, so we need to check if focus\n\t\t\t\t\t// moved off of the input because the user clicked on the button.\n\t\t\t\t\tthis._delay(function() {\n\t\t\t\t\t\tthis.previous = previous;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// ensure focus is on (or stays on) the text field\n\t\t\tevent.preventDefault();\n\t\t\tcheckFocus.call( this );\n\n\t\t\t// support: IE\n\t\t\t// IE doesn't prevent moving focus even with event.preventDefault()\n\t\t\t// so we set a flag to know when we should ignore the blur event\n\t\t\t// and check (again) if focus moved off of the input.\n\t\t\tthis.cancelBlur = true;\n\t\t\tthis._delay(function() {\n\t\t\t\tdelete this.cancelBlur;\n\t\t\t\tcheckFocus.call( this );\n\t\t\t});\n\n\t\t\tif ( this._start( event ) === false ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._repeat( null, $( event.currentTarget ).hasClass( \"ui-spinner-up\" ) ? 1 : -1, event );\n\t\t},\n\t\t\"mouseup .ui-spinner-button\": \"_stop\",\n\t\t\"mouseenter .ui-spinner-button\": function( event ) {\n\t\t\t// button will add ui-state-active if mouse was down while mouseleave and kept down\n\t\t\tif ( !$( event.currentTarget ).hasClass( \"ui-state-active\" ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( this._start( event ) === false ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis._repeat( null, $( event.currentTarget ).hasClass( \"ui-spinner-up\" ) ? 1 : -1, event );\n\t\t},\n\t\t// TODO: do we really want to consider this a stop?\n\t\t// shouldn't we just stop the repeater and wait until mouseup before\n\t\t// we trigger the stop event?\n\t\t\"mouseleave .ui-spinner-button\": \"_stop\"\n\t},\n\n\t_draw: function() {\n\t\tvar uiSpinner = this.uiSpinner = this.element\n\t\t\t.addClass( \"ui-spinner-input\" )\n\t\t\t.attr( \"autocomplete\", \"off\" )\n\t\t\t.wrap( this._uiSpinnerHtml() )\n\t\t\t.parent()\n\t\t\t\t// add buttons\n\t\t\t\t.append( this._buttonHtml() );\n\n\t\tthis.element.attr( \"role\", \"spinbutton\" );\n\n\t\t// button bindings\n\t\tthis.buttons = uiSpinner.find( \".ui-spinner-button\" )\n\t\t\t.attr( \"tabIndex\", -1 )\n\t\t\t.button()\n\t\t\t.removeClass( \"ui-corner-all\" );\n\n\t\t// IE 6 doesn't understand height: 50% for the buttons\n\t\t// unless the wrapper has an explicit height\n\t\tif ( this.buttons.height() > Math.ceil( uiSpinner.height() * 0.5 ) &&\n\t\t\t\tuiSpinner.height() > 0 ) {\n\t\t\tuiSpinner.height( uiSpinner.height() );\n\t\t}\n\n\t\t// disable spinner if element was already disabled\n\t\tif ( this.options.disabled ) {\n\t\t\tthis.disable();\n\t\t}\n\t},\n\n\t_keydown: function( event ) {\n\t\tvar options = this.options,\n\t\t\tkeyCode = $.ui.keyCode;\n\n\t\tswitch ( event.keyCode ) {\n\t\tcase keyCode.UP:\n\t\t\tthis._repeat( null, 1, event );\n\t\t\treturn true;\n\t\tcase keyCode.DOWN:\n\t\t\tthis._repeat( null, -1, event );\n\t\t\treturn true;\n\t\tcase keyCode.PAGE_UP:\n\t\t\tthis._repeat( null, options.page, event );\n\t\t\treturn true;\n\t\tcase keyCode.PAGE_DOWN:\n\t\t\tthis._repeat( null, -options.page, event );\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_uiSpinnerHtml: function() {\n\t\treturn \"<span class='ui-spinner ui-widget ui-widget-content ui-corner-all'></span>\";\n\t},\n\n\t_buttonHtml: function() {\n\t\treturn \"\" +\n\t\t\t\"<a class='ui-spinner-button ui-spinner-up ui-corner-tr'>\" +\n\t\t\t\t\"<span class='ui-icon \" + this.options.icons.up + \"'>▲</span>\" +\n\t\t\t\"</a>\" +\n\t\t\t\"<a class='ui-spinner-button ui-spinner-down ui-corner-br'>\" +\n\t\t\t\t\"<span class='ui-icon \" + this.options.icons.down + \"'>▼</span>\" +\n\t\t\t\"</a>\";\n\t},\n\n\t_start: function( event ) {\n\t\tif ( !this.spinning && this._trigger( \"start\", event ) === false ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( !this.counter ) {\n\t\t\tthis.counter = 1;\n\t\t}\n\t\tthis.spinning = true;\n\t\treturn true;\n\t},\n\n\t_repeat: function( i, steps, event ) {\n\t\ti = i || 500;\n\n\t\tclearTimeout( this.timer );\n\t\tthis.timer = this._delay(function() {\n\t\t\tthis._repeat( 40, steps, event );\n\t\t}, i );\n\n\t\tthis._spin( steps * this.options.step, event );\n\t},\n\n\t_spin: function( step, event ) {\n\t\tvar value = this.value() || 0;\n\n\t\tif ( !this.counter ) {\n\t\t\tthis.counter = 1;\n\t\t}\n\n\t\tvalue = this._adjustValue( value + step * this._increment( this.counter ) );\n\n\t\tif ( !this.spinning || this._trigger( \"spin\", event, { value: value } ) !== false) {\n\t\t\tthis._value( value );\n\t\t\tthis.counter++;\n\t\t}\n\t},\n\n\t_increment: function( i ) {\n\t\tvar incremental = this.options.incremental;\n\n\t\tif ( incremental ) {\n\t\t\treturn $.isFunction( incremental ) ?\n\t\t\t\tincremental( i ) :\n\t\t\t\tMath.floor( i * i * i / 50000 - i * i / 500 + 17 * i / 200 + 1 );\n\t\t}\n\n\t\treturn 1;\n\t},\n\n\t_precision: function() {\n\t\tvar precision = this._precisionOf( this.options.step );\n\t\tif ( this.options.min !== null ) {\n\t\t\tprecision = Math.max( precision, this._precisionOf( this.options.min ) );\n\t\t}\n\t\treturn precision;\n\t},\n\n\t_precisionOf: function( num ) {\n\t\tvar str = num.toString(),\n\t\t\tdecimal = str.indexOf( \".\" );\n\t\treturn decimal === -1 ? 0 : str.length - decimal - 1;\n\t},\n\n\t_adjustValue: function( value ) {\n\t\tvar base, aboveMin,\n\t\t\toptions = this.options;\n\n\t\t// make sure we're at a valid step\n\t\t// - find out where we are relative to the base (min or 0)\n\t\tbase = options.min !== null ? options.min : 0;\n\t\taboveMin = value - base;\n\t\t// - round to the nearest step\n\t\taboveMin = Math.round(aboveMin / options.step) * options.step;\n\t\t// - rounding is based on 0, so adjust back to our base\n\t\tvalue = base + aboveMin;\n\n\t\t// fix precision from bad JS floating point math\n\t\tvalue = parseFloat( value.toFixed( this._precision() ) );\n\n\t\t// clamp the value\n\t\tif ( options.max !== null && value > options.max) {\n\t\t\treturn options.max;\n\t\t}\n\t\tif ( options.min !== null && value < options.min ) {\n\t\t\treturn options.min;\n\t\t}\n\n\t\treturn value;\n\t},\n\n\t_stop: function( event ) {\n\t\tif ( !this.spinning ) {\n\t\t\treturn;\n\t\t}\n\n\t\tclearTimeout( this.timer );\n\t\tclearTimeout( this.mousewheelTimer );\n\t\tthis.counter = 0;\n\t\tthis.spinning = false;\n\t\tthis._trigger( \"stop\", event );\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"culture\" || key === \"numberFormat\" ) {\n\t\t\tvar prevValue = this._parse( this.element.val() );\n\t\t\tthis.options[ key ] = value;\n\t\t\tthis.element.val( this._format( prevValue ) );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key === \"max\" || key === \"min\" || key === \"step\" ) {\n\t\t\tif ( typeof value === \"string\" ) {\n\t\t\t\tvalue = this._parse( value );\n\t\t\t}\n\t\t}\n\t\tif ( key === \"icons\" ) {\n\t\t\tthis.buttons.first().find( \".ui-icon\" )\n\t\t\t\t.removeClass( this.options.icons.up )\n\t\t\t\t.addClass( value.up );\n\t\t\tthis.buttons.last().find( \".ui-icon\" )\n\t\t\t\t.removeClass( this.options.icons.down )\n\t\t\t\t.addClass( value.down );\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis.widget().toggleClass( \"ui-state-disabled\", !!value );\n\t\t\tthis.element.prop( \"disabled\", !!value );\n\t\t\tthis.buttons.button( value ? \"disable\" : \"enable\" );\n\t\t}\n\t},\n\n\t_setOptions: spinner_modifier(function( options ) {\n\t\tthis._super( options );\n\t}),\n\n\t_parse: function( val ) {\n\t\tif ( typeof val === \"string\" && val !== \"\" ) {\n\t\t\tval = window.Globalize && this.options.numberFormat ?\n\t\t\t\tGlobalize.parseFloat( val, 10, this.options.culture ) : +val;\n\t\t}\n\t\treturn val === \"\" || isNaN( val ) ? null : val;\n\t},\n\n\t_format: function( value ) {\n\t\tif ( value === \"\" ) {\n\t\t\treturn \"\";\n\t\t}\n\t\treturn window.Globalize && this.options.numberFormat ?\n\t\t\tGlobalize.format( value, this.options.numberFormat, this.options.culture ) :\n\t\t\tvalue;\n\t},\n\n\t_refresh: function() {\n\t\tthis.element.attr({\n\t\t\t\"aria-valuemin\": this.options.min,\n\t\t\t\"aria-valuemax\": this.options.max,\n\t\t\t// TODO: what should we do with values that can't be parsed?\n\t\t\t\"aria-valuenow\": this._parse( this.element.val() )\n\t\t});\n\t},\n\n\tisValid: function() {\n\t\tvar value = this.value();\n\n\t\t// null is invalid\n\t\tif ( value === null ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// if value gets adjusted, it's invalid\n\t\treturn value === this._adjustValue( value );\n\t},\n\n\t// update the value without triggering change\n\t_value: function( value, allowAny ) {\n\t\tvar parsed;\n\t\tif ( value !== \"\" ) {\n\t\t\tparsed = this._parse( value );\n\t\t\tif ( parsed !== null ) {\n\t\t\t\tif ( !allowAny ) {\n\t\t\t\t\tparsed = this._adjustValue( parsed );\n\t\t\t\t}\n\t\t\t\tvalue = this._format( parsed );\n\t\t\t}\n\t\t}\n\t\tthis.element.val( value );\n\t\tthis._refresh();\n\t},\n\n\t_destroy: function() {\n\t\tthis.element\n\t\t\t.removeClass( \"ui-spinner-input\" )\n\t\t\t.prop( \"disabled\", false )\n\t\t\t.removeAttr( \"autocomplete\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"aria-valuemin\" )\n\t\t\t.removeAttr( \"aria-valuemax\" )\n\t\t\t.removeAttr( \"aria-valuenow\" );\n\t\tthis.uiSpinner.replaceWith( this.element );\n\t},\n\n\tstepUp: spinner_modifier(function( steps ) {\n\t\tthis._stepUp( steps );\n\t}),\n\t_stepUp: function( steps ) {\n\t\tif ( this._start() ) {\n\t\t\tthis._spin( (steps || 1) * this.options.step );\n\t\t\tthis._stop();\n\t\t}\n\t},\n\n\tstepDown: spinner_modifier(function( steps ) {\n\t\tthis._stepDown( steps );\n\t}),\n\t_stepDown: function( steps ) {\n\t\tif ( this._start() ) {\n\t\t\tthis._spin( (steps || 1) * -this.options.step );\n\t\t\tthis._stop();\n\t\t}\n\t},\n\n\tpageUp: spinner_modifier(function( pages ) {\n\t\tthis._stepUp( (pages || 1) * this.options.page );\n\t}),\n\n\tpageDown: spinner_modifier(function( pages ) {\n\t\tthis._stepDown( (pages || 1) * this.options.page );\n\t}),\n\n\tvalue: function( newVal ) {\n\t\tif ( !arguments.length ) {\n\t\t\treturn this._parse( this.element.val() );\n\t\t}\n\t\tspinner_modifier( this._value ).call( this, newVal );\n\t},\n\n\twidget: function() {\n\t\treturn this.uiSpinner;\n\t}\n});\n\n\n/*!\n * jQuery UI Tabs 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/tabs/\n */\n\n\nvar tabs = $.widget( \"ui.tabs\", {\n\tversion: \"1.11.2\",\n\tdelay: 300,\n\toptions: {\n\t\tactive: null,\n\t\tcollapsible: false,\n\t\tevent: \"click\",\n\t\theightStyle: \"content\",\n\t\thide: null,\n\t\tshow: null,\n\n\t\t// callbacks\n\t\tactivate: null,\n\t\tbeforeActivate: null,\n\t\tbeforeLoad: null,\n\t\tload: null\n\t},\n\n\t_isLocal: (function() {\n\t\tvar rhash = /#.*$/;\n\n\t\treturn function( anchor ) {\n\t\t\tvar anchorUrl, locationUrl;\n\n\t\t\t// support: IE7\n\t\t\t// IE7 doesn't normalize the href property when set via script (#9317)\n\t\t\tanchor = anchor.cloneNode( false );\n\n\t\t\tanchorUrl = anchor.href.replace( rhash, \"\" );\n\t\t\tlocationUrl = location.href.replace( rhash, \"\" );\n\n\t\t\t// decoding may throw an error if the URL isn't UTF-8 (#9518)\n\t\t\ttry {\n\t\t\t\tanchorUrl = decodeURIComponent( anchorUrl );\n\t\t\t} catch ( error ) {}\n\t\t\ttry {\n\t\t\t\tlocationUrl = decodeURIComponent( locationUrl );\n\t\t\t} catch ( error ) {}\n\n\t\t\treturn anchor.hash.length > 1 && anchorUrl === locationUrl;\n\t\t};\n\t})(),\n\n\t_create: function() {\n\t\tvar that = this,\n\t\t\toptions = this.options;\n\n\t\tthis.running = false;\n\n\t\tthis.element\n\t\t\t.addClass( \"ui-tabs ui-widget ui-widget-content ui-corner-all\" )\n\t\t\t.toggleClass( \"ui-tabs-collapsible\", options.collapsible );\n\n\t\tthis._processTabs();\n\t\toptions.active = this._initialActive();\n\n\t\t// Take disabling tabs via class attribute from HTML\n\t\t// into account and update option properly.\n\t\tif ( $.isArray( options.disabled ) ) {\n\t\t\toptions.disabled = $.unique( options.disabled.concat(\n\t\t\t\t$.map( this.tabs.filter( \".ui-state-disabled\" ), function( li ) {\n\t\t\t\t\treturn that.tabs.index( li );\n\t\t\t\t})\n\t\t\t) ).sort();\n\t\t}\n\n\t\t// check for length avoids error when initializing empty list\n\t\tif ( this.options.active !== false && this.anchors.length ) {\n\t\t\tthis.active = this._findActive( options.active );\n\t\t} else {\n\t\t\tthis.active = $();\n\t\t}\n\n\t\tthis._refresh();\n\n\t\tif ( this.active.length ) {\n\t\t\tthis.load( options.active );\n\t\t}\n\t},\n\n\t_initialActive: function() {\n\t\tvar active = this.options.active,\n\t\t\tcollapsible = this.options.collapsible,\n\t\t\tlocationHash = location.hash.substring( 1 );\n\n\t\tif ( active === null ) {\n\t\t\t// check the fragment identifier in the URL\n\t\t\tif ( locationHash ) {\n\t\t\t\tthis.tabs.each(function( i, tab ) {\n\t\t\t\t\tif ( $( tab ).attr( \"aria-controls\" ) === locationHash ) {\n\t\t\t\t\t\tactive = i;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// check for a tab marked active via a class\n\t\t\tif ( active === null ) {\n\t\t\t\tactive = this.tabs.index( this.tabs.filter( \".ui-tabs-active\" ) );\n\t\t\t}\n\n\t\t\t// no active tab, set to false\n\t\t\tif ( active === null || active === -1 ) {\n\t\t\t\tactive = this.tabs.length ? 0 : false;\n\t\t\t}\n\t\t}\n\n\t\t// handle numbers: negative, out of range\n\t\tif ( active !== false ) {\n\t\t\tactive = this.tabs.index( this.tabs.eq( active ) );\n\t\t\tif ( active === -1 ) {\n\t\t\t\tactive = collapsible ? false : 0;\n\t\t\t}\n\t\t}\n\n\t\t// don't allow collapsible: false and active: false\n\t\tif ( !collapsible && active === false && this.anchors.length ) {\n\t\t\tactive = 0;\n\t\t}\n\n\t\treturn active;\n\t},\n\n\t_getCreateEventData: function() {\n\t\treturn {\n\t\t\ttab: this.active,\n\t\t\tpanel: !this.active.length ? $() : this._getPanelForTab( this.active )\n\t\t};\n\t},\n\n\t_tabKeydown: function( event ) {\n\t\tvar focusedTab = $( this.document[0].activeElement ).closest( \"li\" ),\n\t\t\tselectedIndex = this.tabs.index( focusedTab ),\n\t\t\tgoingForward = true;\n\n\t\tif ( this._handlePageNav( event ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tswitch ( event.keyCode ) {\n\t\t\tcase $.ui.keyCode.RIGHT:\n\t\t\tcase $.ui.keyCode.DOWN:\n\t\t\t\tselectedIndex++;\n\t\t\t\tbreak;\n\t\t\tcase $.ui.keyCode.UP:\n\t\t\tcase $.ui.keyCode.LEFT:\n\t\t\t\tgoingForward = false;\n\t\t\t\tselectedIndex--;\n\t\t\t\tbreak;\n\t\t\tcase $.ui.keyCode.END:\n\t\t\t\tselectedIndex = this.anchors.length - 1;\n\t\t\t\tbreak;\n\t\t\tcase $.ui.keyCode.HOME:\n\t\t\t\tselectedIndex = 0;\n\t\t\t\tbreak;\n\t\t\tcase $.ui.keyCode.SPACE:\n\t\t\t\t// Activate only, no collapsing\n\t\t\t\tevent.preventDefault();\n\t\t\t\tclearTimeout( this.activating );\n\t\t\t\tthis._activate( selectedIndex );\n\t\t\t\treturn;\n\t\t\tcase $.ui.keyCode.ENTER:\n\t\t\t\t// Toggle (cancel delayed activation, allow collapsing)\n\t\t\t\tevent.preventDefault();\n\t\t\t\tclearTimeout( this.activating );\n\t\t\t\t// Determine if we should collapse or activate\n\t\t\t\tthis._activate( selectedIndex === this.options.active ? false : selectedIndex );\n\t\t\t\treturn;\n\t\t\tdefault:\n\t\t\t\treturn;\n\t\t}\n\n\t\t// Focus the appropriate tab, based on which key was pressed\n\t\tevent.preventDefault();\n\t\tclearTimeout( this.activating );\n\t\tselectedIndex = this._focusNextTab( selectedIndex, goingForward );\n\n\t\t// Navigating with control key will prevent automatic activation\n\t\tif ( !event.ctrlKey ) {\n\t\t\t// Update aria-selected immediately so that AT think the tab is already selected.\n\t\t\t// Otherwise AT may confuse the user by stating that they need to activate the tab,\n\t\t\t// but the tab will already be activated by the time the announcement finishes.\n\t\t\tfocusedTab.attr( \"aria-selected\", \"false\" );\n\t\t\tthis.tabs.eq( selectedIndex ).attr( \"aria-selected\", \"true\" );\n\n\t\t\tthis.activating = this._delay(function() {\n\t\t\t\tthis.option( \"active\", selectedIndex );\n\t\t\t}, this.delay );\n\t\t}\n\t},\n\n\t_panelKeydown: function( event ) {\n\t\tif ( this._handlePageNav( event ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Ctrl+up moves focus to the current tab\n\t\tif ( event.ctrlKey && event.keyCode === $.ui.keyCode.UP ) {\n\t\t\tevent.preventDefault();\n\t\t\tthis.active.focus();\n\t\t}\n\t},\n\n\t// Alt+page up/down moves focus to the previous/next tab (and activates)\n\t_handlePageNav: function( event ) {\n\t\tif ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_UP ) {\n\t\t\tthis._activate( this._focusNextTab( this.options.active - 1, false ) );\n\t\t\treturn true;\n\t\t}\n\t\tif ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_DOWN ) {\n\t\t\tthis._activate( this._focusNextTab( this.options.active + 1, true ) );\n\t\t\treturn true;\n\t\t}\n\t},\n\n\t_findNextTab: function( index, goingForward ) {\n\t\tvar lastTabIndex = this.tabs.length - 1;\n\n\t\tfunction constrain() {\n\t\t\tif ( index > lastTabIndex ) {\n\t\t\t\tindex = 0;\n\t\t\t}\n\t\t\tif ( index < 0 ) {\n\t\t\t\tindex = lastTabIndex;\n\t\t\t}\n\t\t\treturn index;\n\t\t}\n\n\t\twhile ( $.inArray( constrain(), this.options.disabled ) !== -1 ) {\n\t\t\tindex = goingForward ? index + 1 : index - 1;\n\t\t}\n\n\t\treturn index;\n\t},\n\n\t_focusNextTab: function( index, goingForward ) {\n\t\tindex = this._findNextTab( index, goingForward );\n\t\tthis.tabs.eq( index ).focus();\n\t\treturn index;\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"active\" ) {\n\t\t\t// _activate() will handle invalid values and update this.options\n\t\t\tthis._activate( value );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\t// don't use the widget factory's disabled handling\n\t\t\tthis._setupDisabled( value );\n\t\t\treturn;\n\t\t}\n\n\t\tthis._super( key, value);\n\n\t\tif ( key === \"collapsible\" ) {\n\t\t\tthis.element.toggleClass( \"ui-tabs-collapsible\", value );\n\t\t\t// Setting collapsible: false while collapsed; open first panel\n\t\t\tif ( !value && this.options.active === false ) {\n\t\t\t\tthis._activate( 0 );\n\t\t\t}\n\t\t}\n\n\t\tif ( key === \"event\" ) {\n\t\t\tthis._setupEvents( value );\n\t\t}\n\n\t\tif ( key === \"heightStyle\" ) {\n\t\t\tthis._setupHeightStyle( value );\n\t\t}\n\t},\n\n\t_sanitizeSelector: function( hash ) {\n\t\treturn hash ? hash.replace( /[!\"$%&'()*+,.\\/:;<=>?@\\[\\]\\^`{|}~]/g, \"\\\\$&\" ) : \"\";\n\t},\n\n\trefresh: function() {\n\t\tvar options = this.options,\n\t\t\tlis = this.tablist.children( \":has(a[href])\" );\n\n\t\t// get disabled tabs from class attribute from HTML\n\t\t// this will get converted to a boolean if needed in _refresh()\n\t\toptions.disabled = $.map( lis.filter( \".ui-state-disabled\" ), function( tab ) {\n\t\t\treturn lis.index( tab );\n\t\t});\n\n\t\tthis._processTabs();\n\n\t\t// was collapsed or no tabs\n\t\tif ( options.active === false || !this.anchors.length ) {\n\t\t\toptions.active = false;\n\t\t\tthis.active = $();\n\t\t// was active, but active tab is gone\n\t\t} else if ( this.active.length && !$.contains( this.tablist[ 0 ], this.active[ 0 ] ) ) {\n\t\t\t// all remaining tabs are disabled\n\t\t\tif ( this.tabs.length === options.disabled.length ) {\n\t\t\t\toptions.active = false;\n\t\t\t\tthis.active = $();\n\t\t\t// activate previous tab\n\t\t\t} else {\n\t\t\t\tthis._activate( this._findNextTab( Math.max( 0, options.active - 1 ), false ) );\n\t\t\t}\n\t\t// was active, active tab still exists\n\t\t} else {\n\t\t\t// make sure active index is correct\n\t\t\toptions.active = this.tabs.index( this.active );\n\t\t}\n\n\t\tthis._refresh();\n\t},\n\n\t_refresh: function() {\n\t\tthis._setupDisabled( this.options.disabled );\n\t\tthis._setupEvents( this.options.event );\n\t\tthis._setupHeightStyle( this.options.heightStyle );\n\n\t\tthis.tabs.not( this.active ).attr({\n\t\t\t\"aria-selected\": \"false\",\n\t\t\t\"aria-expanded\": \"false\",\n\t\t\ttabIndex: -1\n\t\t});\n\t\tthis.panels.not( this._getPanelForTab( this.active ) )\n\t\t\t.hide()\n\t\t\t.attr({\n\t\t\t\t\"aria-hidden\": \"true\"\n\t\t\t});\n\n\t\t// Make sure one tab is in the tab order\n\t\tif ( !this.active.length ) {\n\t\t\tthis.tabs.eq( 0 ).attr( \"tabIndex\", 0 );\n\t\t} else {\n\t\t\tthis.active\n\t\t\t\t.addClass( \"ui-tabs-active ui-state-active\" )\n\t\t\t\t.attr({\n\t\t\t\t\t\"aria-selected\": \"true\",\n\t\t\t\t\t\"aria-expanded\": \"true\",\n\t\t\t\t\ttabIndex: 0\n\t\t\t\t});\n\t\t\tthis._getPanelForTab( this.active )\n\t\t\t\t.show()\n\t\t\t\t.attr({\n\t\t\t\t\t\"aria-hidden\": \"false\"\n\t\t\t\t});\n\t\t}\n\t},\n\n\t_processTabs: function() {\n\t\tvar that = this,\n\t\t\tprevTabs = this.tabs,\n\t\t\tprevAnchors = this.anchors,\n\t\t\tprevPanels = this.panels;\n\n\t\tthis.tablist = this._getList()\n\t\t\t.addClass( \"ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all\" )\n\t\t\t.attr( \"role\", \"tablist\" )\n\n\t\t\t// Prevent users from focusing disabled tabs via click\n\t\t\t.delegate( \"> li\", \"mousedown\" + this.eventNamespace, function( event ) {\n\t\t\t\tif ( $( this ).is( \".ui-state-disabled\" ) ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t})\n\n\t\t\t// support: IE <9\n\t\t\t// Preventing the default action in mousedown doesn't prevent IE\n\t\t\t// from focusing the element, so if the anchor gets focused, blur.\n\t\t\t// We don't have to worry about focusing the previously focused\n\t\t\t// element since clicking on a non-focusable element should focus\n\t\t\t// the body anyway.\n\t\t\t.delegate( \".ui-tabs-anchor\", \"focus\" + this.eventNamespace, function() {\n\t\t\t\tif ( $( this ).closest( \"li\" ).is( \".ui-state-disabled\" ) ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t}\n\t\t\t});\n\n\t\tthis.tabs = this.tablist.find( \"> li:has(a[href])\" )\n\t\t\t.addClass( \"ui-state-default ui-corner-top\" )\n\t\t\t.attr({\n\t\t\t\trole: \"tab\",\n\t\t\t\ttabIndex: -1\n\t\t\t});\n\n\t\tthis.anchors = this.tabs.map(function() {\n\t\t\t\treturn $( \"a\", this )[ 0 ];\n\t\t\t})\n\t\t\t.addClass( \"ui-tabs-anchor\" )\n\t\t\t.attr({\n\t\t\t\trole: \"presentation\",\n\t\t\t\ttabIndex: -1\n\t\t\t});\n\n\t\tthis.panels = $();\n\n\t\tthis.anchors.each(function( i, anchor ) {\n\t\t\tvar selector, panel, panelId,\n\t\t\t\tanchorId = $( anchor ).uniqueId().attr( \"id\" ),\n\t\t\t\ttab = $( anchor ).closest( \"li\" ),\n\t\t\t\toriginalAriaControls = tab.attr( \"aria-controls\" );\n\n\t\t\t// inline tab\n\t\t\tif ( that._isLocal( anchor ) ) {\n\t\t\t\tselector = anchor.hash;\n\t\t\t\tpanelId = selector.substring( 1 );\n\t\t\t\tpanel = that.element.find( that._sanitizeSelector( selector ) );\n\t\t\t// remote tab\n\t\t\t} else {\n\t\t\t\t// If the tab doesn't already have aria-controls,\n\t\t\t\t// generate an id by using a throw-away element\n\t\t\t\tpanelId = tab.attr( \"aria-controls\" ) || $( {} ).uniqueId()[ 0 ].id;\n\t\t\t\tselector = \"#\" + panelId;\n\t\t\t\tpanel = that.element.find( selector );\n\t\t\t\tif ( !panel.length ) {\n\t\t\t\t\tpanel = that._createPanel( panelId );\n\t\t\t\t\tpanel.insertAfter( that.panels[ i - 1 ] || that.tablist );\n\t\t\t\t}\n\t\t\t\tpanel.attr( \"aria-live\", \"polite\" );\n\t\t\t}\n\n\t\t\tif ( panel.length) {\n\t\t\t\tthat.panels = that.panels.add( panel );\n\t\t\t}\n\t\t\tif ( originalAriaControls ) {\n\t\t\t\ttab.data( \"ui-tabs-aria-controls\", originalAriaControls );\n\t\t\t}\n\t\t\ttab.attr({\n\t\t\t\t\"aria-controls\": panelId,\n\t\t\t\t\"aria-labelledby\": anchorId\n\t\t\t});\n\t\t\tpanel.attr( \"aria-labelledby\", anchorId );\n\t\t});\n\n\t\tthis.panels\n\t\t\t.addClass( \"ui-tabs-panel ui-widget-content ui-corner-bottom\" )\n\t\t\t.attr( \"role\", \"tabpanel\" );\n\n\t\t// Avoid memory leaks (#10056)\n\t\tif ( prevTabs ) {\n\t\t\tthis._off( prevTabs.not( this.tabs ) );\n\t\t\tthis._off( prevAnchors.not( this.anchors ) );\n\t\t\tthis._off( prevPanels.not( this.panels ) );\n\t\t}\n\t},\n\n\t// allow overriding how to find the list for rare usage scenarios (#7715)\n\t_getList: function() {\n\t\treturn this.tablist || this.element.find( \"ol,ul\" ).eq( 0 );\n\t},\n\n\t_createPanel: function( id ) {\n\t\treturn $( \"<div>\" )\n\t\t\t.attr( \"id\", id )\n\t\t\t.addClass( \"ui-tabs-panel ui-widget-content ui-corner-bottom\" )\n\t\t\t.data( \"ui-tabs-destroy\", true );\n\t},\n\n\t_setupDisabled: function( disabled ) {\n\t\tif ( $.isArray( disabled ) ) {\n\t\t\tif ( !disabled.length ) {\n\t\t\t\tdisabled = false;\n\t\t\t} else if ( disabled.length === this.anchors.length ) {\n\t\t\t\tdisabled = true;\n\t\t\t}\n\t\t}\n\n\t\t// disable tabs\n\t\tfor ( var i = 0, li; ( li = this.tabs[ i ] ); i++ ) {\n\t\t\tif ( disabled === true || $.inArray( i, disabled ) !== -1 ) {\n\t\t\t\t$( li )\n\t\t\t\t\t.addClass( \"ui-state-disabled\" )\n\t\t\t\t\t.attr( \"aria-disabled\", \"true\" );\n\t\t\t} else {\n\t\t\t\t$( li )\n\t\t\t\t\t.removeClass( \"ui-state-disabled\" )\n\t\t\t\t\t.removeAttr( \"aria-disabled\" );\n\t\t\t}\n\t\t}\n\n\t\tthis.options.disabled = disabled;\n\t},\n\n\t_setupEvents: function( event ) {\n\t\tvar events = {};\n\t\tif ( event ) {\n\t\t\t$.each( event.split(\" \"), function( index, eventName ) {\n\t\t\t\tevents[ eventName ] = \"_eventHandler\";\n\t\t\t});\n\t\t}\n\n\t\tthis._off( this.anchors.add( this.tabs ).add( this.panels ) );\n\t\t// Always prevent the default action, even when disabled\n\t\tthis._on( true, this.anchors, {\n\t\t\tclick: function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t});\n\t\tthis._on( this.anchors, events );\n\t\tthis._on( this.tabs, { keydown: \"_tabKeydown\" } );\n\t\tthis._on( this.panels, { keydown: \"_panelKeydown\" } );\n\n\t\tthis._focusable( this.tabs );\n\t\tthis._hoverable( this.tabs );\n\t},\n\n\t_setupHeightStyle: function( heightStyle ) {\n\t\tvar maxHeight,\n\t\t\tparent = this.element.parent();\n\n\t\tif ( heightStyle === \"fill\" ) {\n\t\t\tmaxHeight = parent.height();\n\t\t\tmaxHeight -= this.element.outerHeight() - this.element.height();\n\n\t\t\tthis.element.siblings( \":visible\" ).each(function() {\n\t\t\t\tvar elem = $( this ),\n\t\t\t\t\tposition = elem.css( \"position\" );\n\n\t\t\t\tif ( position === \"absolute\" || position === \"fixed\" ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tmaxHeight -= elem.outerHeight( true );\n\t\t\t});\n\n\t\t\tthis.element.children().not( this.panels ).each(function() {\n\t\t\t\tmaxHeight -= $( this ).outerHeight( true );\n\t\t\t});\n\n\t\t\tthis.panels.each(function() {\n\t\t\t\t$( this ).height( Math.max( 0, maxHeight -\n\t\t\t\t\t$( this ).innerHeight() + $( this ).height() ) );\n\t\t\t})\n\t\t\t.css( \"overflow\", \"auto\" );\n\t\t} else if ( heightStyle === \"auto\" ) {\n\t\t\tmaxHeight = 0;\n\t\t\tthis.panels.each(function() {\n\t\t\t\tmaxHeight = Math.max( maxHeight, $( this ).height( \"\" ).height() );\n\t\t\t}).height( maxHeight );\n\t\t}\n\t},\n\n\t_eventHandler: function( event ) {\n\t\tvar options = this.options,\n\t\t\tactive = this.active,\n\t\t\tanchor = $( event.currentTarget ),\n\t\t\ttab = anchor.closest( \"li\" ),\n\t\t\tclickedIsActive = tab[ 0 ] === active[ 0 ],\n\t\t\tcollapsing = clickedIsActive && options.collapsible,\n\t\t\ttoShow = collapsing ? $() : this._getPanelForTab( tab ),\n\t\t\ttoHide = !active.length ? $() : this._getPanelForTab( active ),\n\t\t\teventData = {\n\t\t\t\toldTab: active,\n\t\t\t\toldPanel: toHide,\n\t\t\t\tnewTab: collapsing ? $() : tab,\n\t\t\t\tnewPanel: toShow\n\t\t\t};\n\n\t\tevent.preventDefault();\n\n\t\tif ( tab.hasClass( \"ui-state-disabled\" ) ||\n\t\t\t\t// tab is already loading\n\t\t\t\ttab.hasClass( \"ui-tabs-loading\" ) ||\n\t\t\t\t// can't switch durning an animation\n\t\t\t\tthis.running ||\n\t\t\t\t// click on active header, but not collapsible\n\t\t\t\t( clickedIsActive && !options.collapsible ) ||\n\t\t\t\t// allow canceling activation\n\t\t\t\t( this._trigger( \"beforeActivate\", event, eventData ) === false ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\toptions.active = collapsing ? false : this.tabs.index( tab );\n\n\t\tthis.active = clickedIsActive ? $() : tab;\n\t\tif ( this.xhr ) {\n\t\t\tthis.xhr.abort();\n\t\t}\n\n\t\tif ( !toHide.length && !toShow.length ) {\n\t\t\t$.error( \"jQuery UI Tabs: Mismatching fragment identifier.\" );\n\t\t}\n\n\t\tif ( toShow.length ) {\n\t\t\tthis.load( this.tabs.index( tab ), event );\n\t\t}\n\t\tthis._toggle( event, eventData );\n\t},\n\n\t// handles show/hide for selecting tabs\n\t_toggle: function( event, eventData ) {\n\t\tvar that = this,\n\t\t\ttoShow = eventData.newPanel,\n\t\t\ttoHide = eventData.oldPanel;\n\n\t\tthis.running = true;\n\n\t\tfunction complete() {\n\t\t\tthat.running = false;\n\t\t\tthat._trigger( \"activate\", event, eventData );\n\t\t}\n\n\t\tfunction show() {\n\t\t\teventData.newTab.closest( \"li\" ).addClass( \"ui-tabs-active ui-state-active\" );\n\n\t\t\tif ( toShow.length && that.options.show ) {\n\t\t\t\tthat._show( toShow, that.options.show, complete );\n\t\t\t} else {\n\t\t\t\ttoShow.show();\n\t\t\t\tcomplete();\n\t\t\t}\n\t\t}\n\n\t\t// start out by hiding, then showing, then completing\n\t\tif ( toHide.length && this.options.hide ) {\n\t\t\tthis._hide( toHide, this.options.hide, function() {\n\t\t\t\teventData.oldTab.closest( \"li\" ).removeClass( \"ui-tabs-active ui-state-active\" );\n\t\t\t\tshow();\n\t\t\t});\n\t\t} else {\n\t\t\teventData.oldTab.closest( \"li\" ).removeClass( \"ui-tabs-active ui-state-active\" );\n\t\t\ttoHide.hide();\n\t\t\tshow();\n\t\t}\n\n\t\ttoHide.attr( \"aria-hidden\", \"true\" );\n\t\teventData.oldTab.attr({\n\t\t\t\"aria-selected\": \"false\",\n\t\t\t\"aria-expanded\": \"false\"\n\t\t});\n\t\t// If we're switching tabs, remove the old tab from the tab order.\n\t\t// If we're opening from collapsed state, remove the previous tab from the tab order.\n\t\t// If we're collapsing, then keep the collapsing tab in the tab order.\n\t\tif ( toShow.length && toHide.length ) {\n\t\t\teventData.oldTab.attr( \"tabIndex\", -1 );\n\t\t} else if ( toShow.length ) {\n\t\t\tthis.tabs.filter(function() {\n\t\t\t\treturn $( this ).attr( \"tabIndex\" ) === 0;\n\t\t\t})\n\t\t\t.attr( \"tabIndex\", -1 );\n\t\t}\n\n\t\ttoShow.attr( \"aria-hidden\", \"false\" );\n\t\teventData.newTab.attr({\n\t\t\t\"aria-selected\": \"true\",\n\t\t\t\"aria-expanded\": \"true\",\n\t\t\ttabIndex: 0\n\t\t});\n\t},\n\n\t_activate: function( index ) {\n\t\tvar anchor,\n\t\t\tactive = this._findActive( index );\n\n\t\t// trying to activate the already active panel\n\t\tif ( active[ 0 ] === this.active[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// trying to collapse, simulate a click on the current active header\n\t\tif ( !active.length ) {\n\t\t\tactive = this.active;\n\t\t}\n\n\t\tanchor = active.find( \".ui-tabs-anchor\" )[ 0 ];\n\t\tthis._eventHandler({\n\t\t\ttarget: anchor,\n\t\t\tcurrentTarget: anchor,\n\t\t\tpreventDefault: $.noop\n\t\t});\n\t},\n\n\t_findActive: function( index ) {\n\t\treturn index === false ? $() : this.tabs.eq( index );\n\t},\n\n\t_getIndex: function( index ) {\n\t\t// meta-function to give users option to provide a href string instead of a numerical index.\n\t\tif ( typeof index === \"string\" ) {\n\t\t\tindex = this.anchors.index( this.anchors.filter( \"[href$='\" + index + \"']\" ) );\n\t\t}\n\n\t\treturn index;\n\t},\n\n\t_destroy: function() {\n\t\tif ( this.xhr ) {\n\t\t\tthis.xhr.abort();\n\t\t}\n\n\t\tthis.element.removeClass( \"ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible\" );\n\n\t\tthis.tablist\n\t\t\t.removeClass( \"ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all\" )\n\t\t\t.removeAttr( \"role\" );\n\n\t\tthis.anchors\n\t\t\t.removeClass( \"ui-tabs-anchor\" )\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.removeAttr( \"tabIndex\" )\n\t\t\t.removeUniqueId();\n\n\t\tthis.tablist.unbind( this.eventNamespace );\n\n\t\tthis.tabs.add( this.panels ).each(function() {\n\t\t\tif ( $.data( this, \"ui-tabs-destroy\" ) ) {\n\t\t\t\t$( this ).remove();\n\t\t\t} else {\n\t\t\t\t$( this )\n\t\t\t\t\t.removeClass( \"ui-state-default ui-state-active ui-state-disabled \" +\n\t\t\t\t\t\t\"ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel\" )\n\t\t\t\t\t.removeAttr( \"tabIndex\" )\n\t\t\t\t\t.removeAttr( \"aria-live\" )\n\t\t\t\t\t.removeAttr( \"aria-busy\" )\n\t\t\t\t\t.removeAttr( \"aria-selected\" )\n\t\t\t\t\t.removeAttr( \"aria-labelledby\" )\n\t\t\t\t\t.removeAttr( \"aria-hidden\" )\n\t\t\t\t\t.removeAttr( \"aria-expanded\" )\n\t\t\t\t\t.removeAttr( \"role\" );\n\t\t\t}\n\t\t});\n\n\t\tthis.tabs.each(function() {\n\t\t\tvar li = $( this ),\n\t\t\t\tprev = li.data( \"ui-tabs-aria-controls\" );\n\t\t\tif ( prev ) {\n\t\t\t\tli\n\t\t\t\t\t.attr( \"aria-controls\", prev )\n\t\t\t\t\t.removeData( \"ui-tabs-aria-controls\" );\n\t\t\t} else {\n\t\t\t\tli.removeAttr( \"aria-controls\" );\n\t\t\t}\n\t\t});\n\n\t\tthis.panels.show();\n\n\t\tif ( this.options.heightStyle !== \"content\" ) {\n\t\t\tthis.panels.css( \"height\", \"\" );\n\t\t}\n\t},\n\n\tenable: function( index ) {\n\t\tvar disabled = this.options.disabled;\n\t\tif ( disabled === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( index === undefined ) {\n\t\t\tdisabled = false;\n\t\t} else {\n\t\t\tindex = this._getIndex( index );\n\t\t\tif ( $.isArray( disabled ) ) {\n\t\t\t\tdisabled = $.map( disabled, function( num ) {\n\t\t\t\t\treturn num !== index ? num : null;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tdisabled = $.map( this.tabs, function( li, num ) {\n\t\t\t\t\treturn num !== index ? num : null;\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tthis._setupDisabled( disabled );\n\t},\n\n\tdisable: function( index ) {\n\t\tvar disabled = this.options.disabled;\n\t\tif ( disabled === true ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( index === undefined ) {\n\t\t\tdisabled = true;\n\t\t} else {\n\t\t\tindex = this._getIndex( index );\n\t\t\tif ( $.inArray( index, disabled ) !== -1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( $.isArray( disabled ) ) {\n\t\t\t\tdisabled = $.merge( [ index ], disabled ).sort();\n\t\t\t} else {\n\t\t\t\tdisabled = [ index ];\n\t\t\t}\n\t\t}\n\t\tthis._setupDisabled( disabled );\n\t},\n\n\tload: function( index, event ) {\n\t\tindex = this._getIndex( index );\n\t\tvar that = this,\n\t\t\ttab = this.tabs.eq( index ),\n\t\t\tanchor = tab.find( \".ui-tabs-anchor\" ),\n\t\t\tpanel = this._getPanelForTab( tab ),\n\t\t\teventData = {\n\t\t\t\ttab: tab,\n\t\t\t\tpanel: panel\n\t\t\t};\n\n\t\t// not remote\n\t\tif ( this._isLocal( anchor[ 0 ] ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.xhr = $.ajax( this._ajaxSettings( anchor, event, eventData ) );\n\n\t\t// support: jQuery <1.8\n\t\t// jQuery <1.8 returns false if the request is canceled in beforeSend,\n\t\t// but as of 1.8, $.ajax() always returns a jqXHR object.\n\t\tif ( this.xhr && this.xhr.statusText !== \"canceled\" ) {\n\t\t\ttab.addClass( \"ui-tabs-loading\" );\n\t\t\tpanel.attr( \"aria-busy\", \"true\" );\n\n\t\t\tthis.xhr\n\t\t\t\t.success(function( response ) {\n\t\t\t\t\t// support: jQuery <1.8\n\t\t\t\t\t// http://bugs.jquery.com/ticket/11778\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\tpanel.html( response );\n\t\t\t\t\t\tthat._trigger( \"load\", event, eventData );\n\t\t\t\t\t}, 1 );\n\t\t\t\t})\n\t\t\t\t.complete(function( jqXHR, status ) {\n\t\t\t\t\t// support: jQuery <1.8\n\t\t\t\t\t// http://bugs.jquery.com/ticket/11778\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\tif ( status === \"abort\" ) {\n\t\t\t\t\t\t\tthat.panels.stop( false, true );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ttab.removeClass( \"ui-tabs-loading\" );\n\t\t\t\t\t\tpanel.removeAttr( \"aria-busy\" );\n\n\t\t\t\t\t\tif ( jqXHR === that.xhr ) {\n\t\t\t\t\t\t\tdelete that.xhr;\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 1 );\n\t\t\t\t});\n\t\t}\n\t},\n\n\t_ajaxSettings: function( anchor, event, eventData ) {\n\t\tvar that = this;\n\t\treturn {\n\t\t\turl: anchor.attr( \"href\" ),\n\t\t\tbeforeSend: function( jqXHR, settings ) {\n\t\t\t\treturn that._trigger( \"beforeLoad\", event,\n\t\t\t\t\t$.extend( { jqXHR: jqXHR, ajaxSettings: settings }, eventData ) );\n\t\t\t}\n\t\t};\n\t},\n\n\t_getPanelForTab: function( tab ) {\n\t\tvar id = $( tab ).attr( \"aria-controls\" );\n\t\treturn this.element.find( this._sanitizeSelector( \"#\" + id ) );\n\t}\n});\n\n\n/*!\n * jQuery UI Tooltip 1.11.2\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/tooltip/\n */\n\n\nvar tooltip = $.widget( \"ui.tooltip\", {\n\tversion: \"1.11.2\",\n\toptions: {\n\t\tcontent: function() {\n\t\t\t// support: IE<9, Opera in jQuery <1.7\n\t\t\t// .text() can't accept undefined, so coerce to a string\n\t\t\tvar title = $( this ).attr( \"title\" ) || \"\";\n\t\t\t// Escape title, since we're going from an attribute to raw HTML\n\t\t\treturn $( \"<a>\" ).text( title ).html();\n\t\t},\n\t\thide: true,\n\t\t// Disabled elements have inconsistent behavior across browsers (#8661)\n\t\titems: \"[title]:not([disabled])\",\n\t\tposition: {\n\t\t\tmy: \"left top+15\",\n\t\t\tat: \"left bottom\",\n\t\t\tcollision: \"flipfit flip\"\n\t\t},\n\t\tshow: true,\n\t\ttooltipClass: null,\n\t\ttrack: false,\n\n\t\t// callbacks\n\t\tclose: null,\n\t\topen: null\n\t},\n\n\t_addDescribedBy: function( elem, id ) {\n\t\tvar describedby = (elem.attr( \"aria-describedby\" ) || \"\").split( /\\s+/ );\n\t\tdescribedby.push( id );\n\t\telem\n\t\t\t.data( \"ui-tooltip-id\", id )\n\t\t\t.attr( \"aria-describedby\", $.trim( describedby.join( \" \" ) ) );\n\t},\n\n\t_removeDescribedBy: function( elem ) {\n\t\tvar id = elem.data( \"ui-tooltip-id\" ),\n\t\t\tdescribedby = (elem.attr( \"aria-describedby\" ) || \"\").split( /\\s+/ ),\n\t\t\tindex = $.inArray( id, describedby );\n\n\t\tif ( index !== -1 ) {\n\t\t\tdescribedby.splice( index, 1 );\n\t\t}\n\n\t\telem.removeData( \"ui-tooltip-id\" );\n\t\tdescribedby = $.trim( describedby.join( \" \" ) );\n\t\tif ( describedby ) {\n\t\t\telem.attr( \"aria-describedby\", describedby );\n\t\t} else {\n\t\t\telem.removeAttr( \"aria-describedby\" );\n\t\t}\n\t},\n\n\t_create: function() {\n\t\tthis._on({\n\t\t\tmouseover: \"open\",\n\t\t\tfocusin: \"open\"\n\t\t});\n\n\t\t// IDs of generated tooltips, needed for destroy\n\t\tthis.tooltips = {};\n\n\t\t// IDs of parent tooltips where we removed the title attribute\n\t\tthis.parents = {};\n\n\t\tif ( this.options.disabled ) {\n\t\t\tthis._disable();\n\t\t}\n\n\t\t// Append the aria-live region so tooltips announce correctly\n\t\tthis.liveRegion = $( \"<div>\" )\n\t\t\t.attr({\n\t\t\t\trole: \"log\",\n\t\t\t\t\"aria-live\": \"assertive\",\n\t\t\t\t\"aria-relevant\": \"additions\"\n\t\t\t})\n\t\t\t.addClass( \"ui-helper-hidden-accessible\" )\n\t\t\t.appendTo( this.document[ 0 ].body );\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tvar that = this;\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis[ value ? \"_disable\" : \"_enable\" ]();\n\t\t\tthis.options[ key ] = value;\n\t\t\t// disable element style changes\n\t\t\treturn;\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\tif ( key === \"content\" ) {\n\t\t\t$.each( this.tooltips, function( id, tooltipData ) {\n\t\t\t\tthat._updateContent( tooltipData.element );\n\t\t\t});\n\t\t}\n\t},\n\n\t_disable: function() {\n\t\tvar that = this;\n\n\t\t// close open tooltips\n\t\t$.each( this.tooltips, function( id, tooltipData ) {\n\t\t\tvar event = $.Event( \"blur\" );\n\t\t\tevent.target = event.currentTarget = tooltipData.element[ 0 ];\n\t\t\tthat.close( event, true );\n\t\t});\n\n\t\t// remove title attributes to prevent native tooltips\n\t\tthis.element.find( this.options.items ).addBack().each(function() {\n\t\t\tvar element = $( this );\n\t\t\tif ( element.is( \"[title]\" ) ) {\n\t\t\t\telement\n\t\t\t\t\t.data( \"ui-tooltip-title\", element.attr( \"title\" ) )\n\t\t\t\t\t.removeAttr( \"title\" );\n\t\t\t}\n\t\t});\n\t},\n\n\t_enable: function() {\n\t\t// restore title attributes\n\t\tthis.element.find( this.options.items ).addBack().each(function() {\n\t\t\tvar element = $( this );\n\t\t\tif ( element.data( \"ui-tooltip-title\" ) ) {\n\t\t\t\telement.attr( \"title\", element.data( \"ui-tooltip-title\" ) );\n\t\t\t}\n\t\t});\n\t},\n\n\topen: function( event ) {\n\t\tvar that = this,\n\t\t\ttarget = $( event ? event.target : this.element )\n\t\t\t\t// we need closest here due to mouseover bubbling,\n\t\t\t\t// but always pointing at the same event target\n\t\t\t\t.closest( this.options.items );\n\n\t\t// No element to show a tooltip for or the tooltip is already open\n\t\tif ( !target.length || target.data( \"ui-tooltip-id\" ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( target.attr( \"title\" ) ) {\n\t\t\ttarget.data( \"ui-tooltip-title\", target.attr( \"title\" ) );\n\t\t}\n\n\t\ttarget.data( \"ui-tooltip-open\", true );\n\n\t\t// kill parent tooltips, custom or native, for hover\n\t\tif ( event && event.type === \"mouseover\" ) {\n\t\t\ttarget.parents().each(function() {\n\t\t\t\tvar parent = $( this ),\n\t\t\t\t\tblurEvent;\n\t\t\t\tif ( parent.data( \"ui-tooltip-open\" ) ) {\n\t\t\t\t\tblurEvent = $.Event( \"blur\" );\n\t\t\t\t\tblurEvent.target = blurEvent.currentTarget = this;\n\t\t\t\t\tthat.close( blurEvent, true );\n\t\t\t\t}\n\t\t\t\tif ( parent.attr( \"title\" ) ) {\n\t\t\t\t\tparent.uniqueId();\n\t\t\t\t\tthat.parents[ this.id ] = {\n\t\t\t\t\t\telement: this,\n\t\t\t\t\t\ttitle: parent.attr( \"title\" )\n\t\t\t\t\t};\n\t\t\t\t\tparent.attr( \"title\", \"\" );\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tthis._updateContent( target, event );\n\t},\n\n\t_updateContent: function( target, event ) {\n\t\tvar content,\n\t\t\tcontentOption = this.options.content,\n\t\t\tthat = this,\n\t\t\teventType = event ? event.type : null;\n\n\t\tif ( typeof contentOption === \"string\" ) {\n\t\t\treturn this._open( event, target, contentOption );\n\t\t}\n\n\t\tcontent = contentOption.call( target[0], function( response ) {\n\t\t\t// ignore async response if tooltip was closed already\n\t\t\tif ( !target.data( \"ui-tooltip-open\" ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// IE may instantly serve a cached response for ajax requests\n\t\t\t// delay this call to _open so the other call to _open runs first\n\t\t\tthat._delay(function() {\n\t\t\t\t// jQuery creates a special event for focusin when it doesn't\n\t\t\t\t// exist natively. To improve performance, the native event\n\t\t\t\t// object is reused and the type is changed. Therefore, we can't\n\t\t\t\t// rely on the type being correct after the event finished\n\t\t\t\t// bubbling, so we set it back to the previous value. (#8740)\n\t\t\t\tif ( event ) {\n\t\t\t\t\tevent.type = eventType;\n\t\t\t\t}\n\t\t\t\tthis._open( event, target, response );\n\t\t\t});\n\t\t});\n\t\tif ( content ) {\n\t\t\tthis._open( event, target, content );\n\t\t}\n\t},\n\n\t_open: function( event, target, content ) {\n\t\tvar tooltipData, tooltip, events, delayedShow, a11yContent,\n\t\t\tpositionOption = $.extend( {}, this.options.position );\n\n\t\tif ( !content ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Content can be updated multiple times. If the tooltip already\n\t\t// exists, then just update the content and bail.\n\t\ttooltipData = this._find( target );\n\t\tif ( tooltipData ) {\n\t\t\ttooltipData.tooltip.find( \".ui-tooltip-content\" ).html( content );\n\t\t\treturn;\n\t\t}\n\n\t\t// if we have a title, clear it to prevent the native tooltip\n\t\t// we have to check first to avoid defining a title if none exists\n\t\t// (we don't want to cause an element to start matching [title])\n\t\t//\n\t\t// We use removeAttr only for key events, to allow IE to export the correct\n\t\t// accessible attributes. For mouse events, set to empty string to avoid\n\t\t// native tooltip showing up (happens only when removing inside mouseover).\n\t\tif ( target.is( \"[title]\" ) ) {\n\t\t\tif ( event && event.type === \"mouseover\" ) {\n\t\t\t\ttarget.attr( \"title\", \"\" );\n\t\t\t} else {\n\t\t\t\ttarget.removeAttr( \"title\" );\n\t\t\t}\n\t\t}\n\n\t\ttooltipData = this._tooltip( target );\n\t\ttooltip = tooltipData.tooltip;\n\t\tthis._addDescribedBy( target, tooltip.attr( \"id\" ) );\n\t\ttooltip.find( \".ui-tooltip-content\" ).html( content );\n\n\t\t// Support: Voiceover on OS X, JAWS on IE <= 9\n\t\t// JAWS announces deletions even when aria-relevant=\"additions\"\n\t\t// Voiceover will sometimes re-read the entire log region's contents from the beginning\n\t\tthis.liveRegion.children().hide();\n\t\tif ( content.clone ) {\n\t\t\ta11yContent = content.clone();\n\t\t\ta11yContent.removeAttr( \"id\" ).find( \"[id]\" ).removeAttr( \"id\" );\n\t\t} else {\n\t\t\ta11yContent = content;\n\t\t}\n\t\t$( \"<div>\" ).html( a11yContent ).appendTo( this.liveRegion );\n\n\t\tfunction position( event ) {\n\t\t\tpositionOption.of = event;\n\t\t\tif ( tooltip.is( \":hidden\" ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttooltip.position( positionOption );\n\t\t}\n\t\tif ( this.options.track && event && /^mouse/.test( event.type ) ) {\n\t\t\tthis._on( this.document, {\n\t\t\t\tmousemove: position\n\t\t\t});\n\t\t\t// trigger once to override element-relative positioning\n\t\t\tposition( event );\n\t\t} else {\n\t\t\ttooltip.position( $.extend({\n\t\t\t\tof: target\n\t\t\t}, this.options.position ) );\n\t\t}\n\n\t\ttooltip.hide();\n\n\t\tthis._show( tooltip, this.options.show );\n\t\t// Handle tracking tooltips that are shown with a delay (#8644). As soon\n\t\t// as the tooltip is visible, position the tooltip using the most recent\n\t\t// event.\n\t\tif ( this.options.show && this.options.show.delay ) {\n\t\t\tdelayedShow = this.delayedShow = setInterval(function() {\n\t\t\t\tif ( tooltip.is( \":visible\" ) ) {\n\t\t\t\t\tposition( positionOption.of );\n\t\t\t\t\tclearInterval( delayedShow );\n\t\t\t\t}\n\t\t\t}, $.fx.interval );\n\t\t}\n\n\t\tthis._trigger( \"open\", event, { tooltip: tooltip } );\n\n\t\tevents = {\n\t\t\tkeyup: function( event ) {\n\t\t\t\tif ( event.keyCode === $.ui.keyCode.ESCAPE ) {\n\t\t\t\t\tvar fakeEvent = $.Event(event);\n\t\t\t\t\tfakeEvent.currentTarget = target[0];\n\t\t\t\t\tthis.close( fakeEvent, true );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t// Only bind remove handler for delegated targets. Non-delegated\n\t\t// tooltips will handle this in destroy.\n\t\tif ( target[ 0 ] !== this.element[ 0 ] ) {\n\t\t\tevents.remove = function() {\n\t\t\t\tthis._removeTooltip( tooltip );\n\t\t\t};\n\t\t}\n\n\t\tif ( !event || event.type === \"mouseover\" ) {\n\t\t\tevents.mouseleave = \"close\";\n\t\t}\n\t\tif ( !event || event.type === \"focusin\" ) {\n\t\t\tevents.focusout = \"close\";\n\t\t}\n\t\tthis._on( true, target, events );\n\t},\n\n\tclose: function( event ) {\n\t\tvar tooltip,\n\t\t\tthat = this,\n\t\t\ttarget = $( event ? event.currentTarget : this.element ),\n\t\t\ttooltipData = this._find( target );\n\n\t\t// The tooltip may already be closed\n\t\tif ( !tooltipData ) {\n\t\t\treturn;\n\t\t}\n\n\t\ttooltip = tooltipData.tooltip;\n\n\t\t// disabling closes the tooltip, so we need to track when we're closing\n\t\t// to avoid an infinite loop in case the tooltip becomes disabled on close\n\t\tif ( tooltipData.closing ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Clear the interval for delayed tracking tooltips\n\t\tclearInterval( this.delayedShow );\n\n\t\t// only set title if we had one before (see comment in _open())\n\t\t// If the title attribute has changed since open(), don't restore\n\t\tif ( target.data( \"ui-tooltip-title\" ) && !target.attr( \"title\" ) ) {\n\t\t\ttarget.attr( \"title\", target.data( \"ui-tooltip-title\" ) );\n\t\t}\n\n\t\tthis._removeDescribedBy( target );\n\n\t\ttooltipData.hiding = true;\n\t\ttooltip.stop( true );\n\t\tthis._hide( tooltip, this.options.hide, function() {\n\t\t\tthat._removeTooltip( $( this ) );\n\t\t});\n\n\t\ttarget.removeData( \"ui-tooltip-open\" );\n\t\tthis._off( target, \"mouseleave focusout keyup\" );\n\n\t\t// Remove 'remove' binding only on delegated targets\n\t\tif ( target[ 0 ] !== this.element[ 0 ] ) {\n\t\t\tthis._off( target, \"remove\" );\n\t\t}\n\t\tthis._off( this.document, \"mousemove\" );\n\n\t\tif ( event && event.type === \"mouseleave\" ) {\n\t\t\t$.each( this.parents, function( id, parent ) {\n\t\t\t\t$( parent.element ).attr( \"title\", parent.title );\n\t\t\t\tdelete that.parents[ id ];\n\t\t\t});\n\t\t}\n\n\t\ttooltipData.closing = true;\n\t\tthis._trigger( \"close\", event, { tooltip: tooltip } );\n\t\tif ( !tooltipData.hiding ) {\n\t\t\ttooltipData.closing = false;\n\t\t}\n\t},\n\n\t_tooltip: function( element ) {\n\t\tvar tooltip = $( \"<div>\" )\n\t\t\t\t.attr( \"role\", \"tooltip\" )\n\t\t\t\t.addClass( \"ui-tooltip ui-widget ui-corner-all ui-widget-content \" +\n\t\t\t\t\t( this.options.tooltipClass || \"\" ) ),\n\t\t\tid = tooltip.uniqueId().attr( \"id\" );\n\n\t\t$( \"<div>\" )\n\t\t\t.addClass( \"ui-tooltip-content\" )\n\t\t\t.appendTo( tooltip );\n\n\t\ttooltip.appendTo( this.document[0].body );\n\n\t\treturn this.tooltips[ id ] = {\n\t\t\telement: element,\n\t\t\ttooltip: tooltip\n\t\t};\n\t},\n\n\t_find: function( target ) {\n\t\tvar id = target.data( \"ui-tooltip-id\" );\n\t\treturn id ? this.tooltips[ id ] : null;\n\t},\n\n\t_removeTooltip: function( tooltip ) {\n\t\ttooltip.remove();\n\t\tdelete this.tooltips[ tooltip.attr( \"id\" ) ];\n\t},\n\n\t_destroy: function() {\n\t\tvar that = this;\n\n\t\t// close open tooltips\n\t\t$.each( this.tooltips, function( id, tooltipData ) {\n\t\t\t// Delegate to close method to handle common cleanup\n\t\t\tvar event = $.Event( \"blur\" ),\n\t\t\t\telement = tooltipData.element;\n\t\t\tevent.target = event.currentTarget = element[ 0 ];\n\t\t\tthat.close( event, true );\n\n\t\t\t// Remove immediately; destroying an open tooltip doesn't use the\n\t\t\t// hide animation\n\t\t\t$( \"#\" + id ).remove();\n\n\t\t\t// Restore the title\n\t\t\tif ( element.data( \"ui-tooltip-title\" ) ) {\n\t\t\t\t// If the title attribute has changed since open(), don't restore\n\t\t\t\tif ( !element.attr( \"title\" ) ) {\n\t\t\t\t\telement.attr( \"title\", element.data( \"ui-tooltip-title\" ) );\n\t\t\t\t}\n\t\t\t\telement.removeData( \"ui-tooltip-title\" );\n\t\t\t}\n\t\t});\n\t\tthis.liveRegion.remove();\n\t}\n});\n\n\n\n}));", "// ==================================================\n// fancyBox v3.1.28\n//\n// Licensed GPLv3 for open source use\n// or fancyBox Commercial License for commercial use\n//\n// http://fancyapps.com/fancybox/\n// Copyright 2017 fancyApps\n//\n// ==================================================\n!function(t,e,n,o){\"use strict\";function i(t){var e=t.currentTarget,o=t.data?t.data.options:{},i=o.selector?n(o.selector):t.data?t.data.items:[],a=n(e).attr(\"data-fancybox\")||\"\",s=0,r=n.fancybox.getInstance();t.preventDefault(),r&&r.current.opts.$orig.is(e)||(a?(i=i.length?i.filter('[data-fancybox=\"'+a+'\"]'):n('[data-fancybox=\"'+a+'\"]'),s=i.index(e),s<0&&(s=0)):i=[e],n.fancybox.open(i,o,s))}if(n){if(n.fn.fancybox)return void n.error(\"fancyBox already initialized\");var a={loop:!1,margin:[44,0],gutter:50,keyboard:!0,arrows:!0,infobar:!1,toolbar:!0,buttons:[\"slideShow\",\"fullScreen\",\"thumbs\",\"close\"],idleTime:4,smallBtn:\"auto\",protect:!1,modal:!1,image:{preload:\"auto\"},ajax:{settings:{data:{fancybox:!0}}},iframe:{tpl:'<iframe id=\"fancybox-frame{rnd}\" name=\"fancybox-frame{rnd}\" class=\"fancybox-iframe\" frameborder=\"0\" vspace=\"0\" hspace=\"0\" webkitAllowFullScreen mozallowfullscreen allowFullScreen allowtransparency=\"true\" src=\"\"></iframe>',preload:!0,css:{},attr:{scrolling:\"auto\"}},animationEffect:\"zoom\",animationDuration:366,zoomOpacity:\"auto\",transitionEffect:\"fade\",transitionDuration:366,slideClass:\"\",baseClass:\"\",baseTpl:'<div class=\"fancybox-container\" role=\"dialog\" tabindex=\"-1\"><div class=\"fancybox-bg\"></div><div class=\"fancybox-inner\"><div class=\"fancybox-infobar\"><button data-fancybox-prev title=\"{{PREV}}\" class=\"fancybox-button fancybox-button--left\"></button><div class=\"fancybox-infobar__body\"><span data-fancybox-index></span> / <span data-fancybox-count></span></div><button data-fancybox-next title=\"{{NEXT}}\" class=\"fancybox-button fancybox-button--right\"></button></div><div class=\"fancybox-toolbar\">{{BUTTONS}}</div><div class=\"fancybox-navigation\"><button data-fancybox-prev title=\"{{PREV}}\" class=\"fancybox-arrow fancybox-arrow--left\" /><button data-fancybox-next title=\"{{NEXT}}\" class=\"fancybox-arrow fancybox-arrow--right\" /></div><div class=\"fancybox-stage\"></div><div class=\"fancybox-caption-wrap\"><div class=\"fancybox-caption\"></div></div></div></div>',spinnerTpl:'<div class=\"fancybox-loading\"></div>',errorTpl:'<div class=\"fancybox-error\"><p>{{ERROR}}<p></div>',btnTpl:{slideShow:'<button data-fancybox-play class=\"fancybox-button fancybox-button--play\" title=\"{{PLAY_START}}\"></button>',fullScreen:'<button data-fancybox-fullscreen class=\"fancybox-button fancybox-button--fullscreen\" title=\"{{FULL_SCREEN}}\"></button>',thumbs:'<button data-fancybox-thumbs class=\"fancybox-button fancybox-button--thumbs\" title=\"{{THUMBS}}\"></button>',close:'<button data-fancybox-close class=\"fancybox-button fancybox-button--close\" title=\"{{CLOSE}}\"></button>',smallBtn:'<button data-fancybox-close class=\"fancybox-close-small\" title=\"{{CLOSE}}\"></button>'},parentEl:\"body\",autoFocus:!0,backFocus:!0,trapFocus:!0,fullScreen:{autoStart:!1},touch:{vertical:!0,momentum:!0},hash:null,media:{},slideShow:{autoStart:!1,speed:4e3},thumbs:{autoStart:!1,hideOnClose:!0},onInit:n.noop,beforeLoad:n.noop,afterLoad:n.noop,beforeShow:n.noop,afterShow:n.noop,beforeClose:n.noop,afterClose:n.noop,onActivate:n.noop,onDeactivate:n.noop,clickContent:function(t,e){return\"image\"===t.type&&\"zoom\"},clickSlide:\"close\",clickOutside:\"close\",dblclickContent:!1,dblclickSlide:!1,dblclickOutside:!1,mobile:{clickContent:function(t,e){return\"image\"===t.type&&\"toggleControls\"},clickSlide:function(t,e){return\"image\"===t.type?\"toggleControls\":\"close\"},dblclickContent:function(t,e){return\"image\"===t.type&&\"zoom\"},dblclickSlide:function(t,e){return\"image\"===t.type&&\"zoom\"}},lang:\"en\",i18n:{en:{CLOSE:\"Close\",NEXT:\"Next\",PREV:\"Previous\",ERROR:\"The requested content cannot be loaded. <br/> Please try again later.\",PLAY_START:\"Start slideshow\",PLAY_STOP:\"Pause slideshow\",FULL_SCREEN:\"Full screen\",THUMBS:\"Thumbnails\"},de:{CLOSE:\"Schliessen\",NEXT:\"Weiter\",PREV:\"Zur\u00FCck\",ERROR:\"Die angeforderten Daten konnten nicht geladen werden. <br/> Bitte versuchen Sie es sp\u00E4ter nochmal.\",PLAY_START:\"Diaschau starten\",PLAY_STOP:\"Diaschau beenden\",FULL_SCREEN:\"Vollbild\",THUMBS:\"Vorschaubilder\"}}},s=n(t),r=n(e),c=0,l=function(t){return t&&t.hasOwnProperty&&t instanceof n},u=function(){return t.requestAnimationFrame||t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||t.oRequestAnimationFrame||function(e){return t.setTimeout(e,1e3/60)}}(),d=function(){var t,n=e.createElement(\"fakeelement\"),i={transition:\"transitionend\",OTransition:\"oTransitionEnd\",MozTransition:\"transitionend\",WebkitTransition:\"webkitTransitionEnd\"};for(t in i)if(n.style[t]!==o)return i[t]}(),f=function(t){return t&&t.length&&t[0].offsetHeight},h=function(t,o,i){var s=this;s.opts=n.extend(!0,{index:i},a,o||{}),o&&n.isArray(o.buttons)&&(s.opts.buttons=o.buttons),s.id=s.opts.id||++c,s.group=[],s.currIndex=parseInt(s.opts.index,10)||0,s.prevIndex=null,s.prevPos=null,s.currPos=0,s.firstRun=null,s.createGroup(t),s.group.length&&(s.$lastFocus=n(e.activeElement).blur(),s.slides={},s.init(t))};n.extend(h.prototype,{init:function(){var t,e,o,i=this,a=i.group[i.currIndex].opts;i.scrollTop=r.scrollTop(),i.scrollLeft=r.scrollLeft(),n.fancybox.getInstance()||n.fancybox.isMobile||\"hidden\"===n(\"body\").css(\"overflow\")||(t=n(\"body\").width(),n(\"html\").addClass(\"fancybox-enabled\"),t=n(\"body\").width()-t,t>1&&n(\"head\").append('<style id=\"fancybox-style-noscroll\" type=\"text/css\">.compensate-for-scrollbar, .fancybox-enabled body { margin-right: '+t+\"px; }</style>\")),o=\"\",n.each(a.buttons,function(t,e){o+=a.btnTpl[e]||\"\"}),e=n(i.translate(i,a.baseTpl.replace(\"{{BUTTONS}}\",o))).addClass(\"fancybox-is-hidden\").attr(\"id\",\"fancybox-container-\"+i.id).addClass(a.baseClass).data(\"FancyBox\",i).prependTo(a.parentEl),i.$refs={container:e},[\"bg\",\"inner\",\"infobar\",\"toolbar\",\"stage\",\"caption\"].forEach(function(t){i.$refs[t]=e.find(\".fancybox-\"+t)}),(!a.arrows||i.group.length<2)&&e.find(\".fancybox-navigation\").remove(),a.infobar||i.$refs.infobar.remove(),a.toolbar||i.$refs.toolbar.remove(),i.trigger(\"onInit\"),i.activate(),i.jumpTo(i.currIndex)},translate:function(t,e){var n=t.opts.i18n[t.opts.lang];return e.replace(/\\{\\{(\\w+)\\}\\}/g,function(t,e){var i=n[e];return i===o?t:i})},createGroup:function(t){var e=this,i=n.makeArray(t);n.each(i,function(t,i){var a,s,r,c,l={},u={},d=[];n.isPlainObject(i)?(l=i,u=i.opts||i):\"object\"===n.type(i)&&n(i).length?(a=n(i),d=a.data(),u=\"options\"in d?d.options:{},u=\"object\"===n.type(u)?u:{},l.src=\"src\"in d?d.src:u.src||a.attr(\"href\"),[\"width\",\"height\",\"thumb\",\"type\",\"filter\"].forEach(function(t){t in d&&(u[t]=d[t])}),\"srcset\"in d&&(u.image={srcset:d.srcset}),u.$orig=a,l.type||l.src||(l.type=\"inline\",l.src=i)):l={type:\"html\",src:i+\"\"},l.opts=n.extend(!0,{},e.opts,u),n.fancybox.isMobile&&(l.opts=n.extend(!0,{},l.opts,l.opts.mobile)),s=l.type||l.opts.type,r=l.src||\"\",!s&&r&&(r.match(/(^data:image\\/[a-z0-9+\\/=]*,)|(\\.(jp(e|g|eg)|gif|png|bmp|webp|svg|ico)((\\?|#).*)?$)/i)?s=\"image\":r.match(/\\.(pdf)((\\?|#).*)?$/i)?s=\"pdf\":\"#\"===r.charAt(0)&&(s=\"inline\")),l.type=s,l.index=e.group.length,l.opts.$orig&&!l.opts.$orig.length&&delete l.opts.$orig,!l.opts.$thumb&&l.opts.$orig&&(l.opts.$thumb=l.opts.$orig.find(\"img:first\")),l.opts.$thumb&&!l.opts.$thumb.length&&delete l.opts.$thumb,\"function\"===n.type(l.opts.caption)?l.opts.caption=l.opts.caption.apply(i,[e,l]):\"caption\"in d&&(l.opts.caption=d.caption),l.opts.caption=l.opts.caption===o?\"\":l.opts.caption+\"\",\"ajax\"===s&&(c=r.split(/\\s+/,2),c.length>1&&(l.src=c.shift(),l.opts.filter=c.shift())),\"auto\"==l.opts.smallBtn&&(n.inArray(s,[\"html\",\"inline\",\"ajax\"])>-1?(l.opts.toolbar=!1,l.opts.smallBtn=!0):l.opts.smallBtn=!1),\"pdf\"===s&&(l.type=\"iframe\",l.opts.iframe.preload=!1),l.opts.modal&&(l.opts=n.extend(!0,l.opts,{infobar:0,toolbar:0,smallBtn:0,keyboard:0,slideShow:0,fullScreen:0,thumbs:0,touch:0,clickContent:!1,clickSlide:!1,clickOutside:!1,dblclickContent:!1,dblclickSlide:!1,dblclickOutside:!1})),e.group.push(l)})},addEvents:function(){var o=this;o.removeEvents(),o.$refs.container.on(\"click.fb-close\",\"[data-fancybox-close]\",function(t){t.stopPropagation(),t.preventDefault(),o.close(t)}).on(\"click.fb-prev touchend.fb-prev\",\"[data-fancybox-prev]\",function(t){t.stopPropagation(),t.preventDefault(),o.previous()}).on(\"click.fb-next touchend.fb-next\",\"[data-fancybox-next]\",function(t){t.stopPropagation(),t.preventDefault(),o.next()}),s.on(\"orientationchange.fb resize.fb\",function(t){t&&t.originalEvent&&\"resize\"===t.originalEvent.type?u(function(){o.update()}):(o.$refs.stage.hide(),setTimeout(function(){o.$refs.stage.show(),o.update()},500))}),r.on(\"focusin.fb\",function(t){var i=n.fancybox?n.fancybox.getInstance():null;i.isClosing||!i.current||!i.current.opts.trapFocus||n(t.target).hasClass(\"fancybox-container\")||n(t.target).is(e)||i&&\"fixed\"!==n(t.target).css(\"position\")&&!i.$refs.container.has(t.target).length&&(t.stopPropagation(),i.focus(),s.scrollTop(o.scrollTop).scrollLeft(o.scrollLeft))}),r.on(\"keydown.fb\",function(t){var e=o.current,i=t.keyCode||t.which;if(e&&e.opts.keyboard&&!n(t.target).is(\"input\")&&!n(t.target).is(\"textarea\"))return 8===i||27===i?(t.preventDefault(),void o.close(t)):37===i||38===i?(t.preventDefault(),void o.previous()):39===i||40===i?(t.preventDefault(),void o.next()):void o.trigger(\"afterKeydown\",t,i)}),o.group[o.currIndex].opts.idleTime&&(o.idleSecondsCounter=0,r.on(\"mousemove.fb-idle mouseenter.fb-idle mouseleave.fb-idle mousedown.fb-idle touchstart.fb-idle touchmove.fb-idle scroll.fb-idle keydown.fb-idle\",function(){o.idleSecondsCounter=0,o.isIdle&&o.showControls(),o.isIdle=!1}),o.idleInterval=t.setInterval(function(){o.idleSecondsCounter++,o.idleSecondsCounter>=o.group[o.currIndex].opts.idleTime&&(o.isIdle=!0,o.idleSecondsCounter=0,o.hideControls())},1e3))},removeEvents:function(){var e=this;s.off(\"orientationchange.fb resize.fb\"),r.off(\"focusin.fb keydown.fb .fb-idle\"),this.$refs.container.off(\".fb-close .fb-prev .fb-next\"),e.idleInterval&&(t.clearInterval(e.idleInterval),e.idleInterval=null)},previous:function(t){return this.jumpTo(this.currPos-1,t)},next:function(t){return this.jumpTo(this.currPos+1,t)},jumpTo:function(t,e,i){var a,s,r,c,l,u,d,h=this,p=h.group.length;if(!(h.isSliding||h.isClosing||h.isAnimating&&h.firstRun)){if(t=parseInt(t,10),s=h.current?h.current.opts.loop:h.opts.loop,!s&&(t<0||t>=p))return!1;if(a=h.firstRun=null===h.firstRun,!(p<2&&!a&&h.isSliding)){if(c=h.current,h.prevIndex=h.currIndex,h.prevPos=h.currPos,r=h.createSlide(t),p>1&&((s||r.index>0)&&h.createSlide(t-1),(s||r.index<p-1)&&h.createSlide(t+1)),h.current=r,h.currIndex=r.index,h.currPos=r.pos,h.trigger(\"beforeShow\",a),h.updateControls(),u=n.fancybox.getTranslate(r.$slide),r.isMoved=(0!==u.left||0!==u.top)&&!r.$slide.hasClass(\"fancybox-animated\"),r.forcedDuration=o,n.isNumeric(e)?r.forcedDuration=e:e=r.opts[a?\"animationDuration\":\"transitionDuration\"],e=parseInt(e,10),a)return r.opts.animationEffect&&e&&h.$refs.container.css(\"transition-duration\",e+\"ms\"),h.$refs.container.removeClass(\"fancybox-is-hidden\"),f(h.$refs.container),h.$refs.container.addClass(\"fancybox-is-open\"),r.$slide.addClass(\"fancybox-slide--current\"),h.loadSlide(r),void h.preload();n.each(h.slides,function(t,e){n.fancybox.stop(e.$slide)}),r.$slide.removeClass(\"fancybox-slide--next fancybox-slide--previous\").addClass(\"fancybox-slide--current\"),r.isMoved?(l=Math.round(r.$slide.width()),n.each(h.slides,function(t,o){var i=o.pos-r.pos;n.fancybox.animate(o.$slide,{top:0,left:i*l+i*o.opts.gutter},e,function(){o.$slide.removeAttr(\"style\").removeClass(\"fancybox-slide--next fancybox-slide--previous\"),o.pos===h.currPos&&(r.isMoved=!1,h.complete())})})):h.$refs.stage.children().removeAttr(\"style\"),r.isLoaded?h.revealContent(r):h.loadSlide(r),h.preload(),c.pos!==r.pos&&(d=\"fancybox-slide--\"+(c.pos>r.pos?\"next\":\"previous\"),c.$slide.removeClass(\"fancybox-slide--complete fancybox-slide--current fancybox-slide--next fancybox-slide--previous\"),c.isComplete=!1,e&&(r.isMoved||r.opts.transitionEffect)&&(r.isMoved?c.$slide.addClass(d):(d=\"fancybox-animated \"+d+\" fancybox-fx-\"+r.opts.transitionEffect,n.fancybox.animate(c.$slide,d,e,function(){c.$slide.removeClass(d).removeAttr(\"style\")}))))}}},createSlide:function(t){var e,o,i=this;return o=t%i.group.length,o=o<0?i.group.length+o:o,!i.slides[t]&&i.group[o]&&(e=n('<div class=\"fancybox-slide\"></div>').appendTo(i.$refs.stage),i.slides[t]=n.extend(!0,{},i.group[o],{pos:t,$slide:e,isLoaded:!1}),i.updateSlide(i.slides[t])),i.slides[t]},scaleToActual:function(t,e,i){var a,s,r,c,l,u=this,d=u.current,f=d.$content,h=parseInt(d.$slide.width(),10),p=parseInt(d.$slide.height(),10),g=d.width,b=d.height;\"image\"!=d.type||d.hasError||!f||u.isAnimating||(n.fancybox.stop(f),u.isAnimating=!0,t=t===o?.5*h:t,e=e===o?.5*p:e,a=n.fancybox.getTranslate(f),c=g/a.width,l=b/a.height,s=.5*h-.5*g,r=.5*p-.5*b,g>h&&(s=a.left*c-(t*c-t),s>0&&(s=0),s<h-g&&(s=h-g)),b>p&&(r=a.top*l-(e*l-e),r>0&&(r=0),r<p-b&&(r=p-b)),u.updateCursor(g,b),n.fancybox.animate(f,{top:r,left:s,scaleX:c,scaleY:l},i||330,function(){u.isAnimating=!1}),u.SlideShow&&u.SlideShow.isActive&&u.SlideShow.stop())},scaleToFit:function(t){var e,o=this,i=o.current,a=i.$content;\"image\"!=i.type||i.hasError||!a||o.isAnimating||(n.fancybox.stop(a),o.isAnimating=!0,e=o.getFitPos(i),o.updateCursor(e.width,e.height),n.fancybox.animate(a,{top:e.top,left:e.left,scaleX:e.width/a.width(),scaleY:e.height/a.height()},t||330,function(){o.isAnimating=!1}))},getFitPos:function(t){var e,o,i,a,r,c=this,l=t.$content,u=t.width,d=t.height,f=t.opts.margin;return!(!l||!l.length||!u&&!d)&&(\"number\"===n.type(f)&&(f=[f,f]),2==f.length&&(f=[f[0],f[1],f[0],f[1]]),s.width()<800&&(f=[0,0,0,0]),e=parseInt(c.$refs.stage.width(),10)-(f[1]+f[3]),o=parseInt(c.$refs.stage.height(),10)-(f[0]+f[2]),i=Math.min(1,e/u,o/d),a=Math.floor(i*u),r=Math.floor(i*d),{top:Math.floor(.5*(o-r))+f[0],left:Math.floor(.5*(e-a))+f[3],width:a,height:r})},update:function(){var t=this;n.each(t.slides,function(e,n){t.updateSlide(n)})},updateSlide:function(t){var e=this,o=t.$content;o&&(t.width||t.height)&&(n.fancybox.stop(o),n.fancybox.setTranslate(o,e.getFitPos(t)),t.pos===e.currPos&&e.updateCursor()),t.$slide.trigger(\"refresh\"),e.trigger(\"onUpdate\",t)},updateCursor:function(t,e){var n,i=this,a=i.$refs.container.removeClass(\"fancybox-is-zoomable fancybox-can-zoomIn fancybox-can-drag fancybox-can-zoomOut\");i.current&&!i.isClosing&&(i.isZoomable()?(a.addClass(\"fancybox-is-zoomable\"),n=t!==o&&e!==o?t<i.current.width&&e<i.current.height:i.isScaledDown(),n?a.addClass(\"fancybox-can-zoomIn\"):i.current.opts.touch?a.addClass(\"fancybox-can-drag\"):a.addClass(\"fancybox-can-zoomOut\")):i.current.opts.touch&&a.addClass(\"fancybox-can-drag\"))},isZoomable:function(){var t,e=this,o=e.current;if(o&&!e.isClosing)return!!(\"image\"===o.type&&o.isLoaded&&!o.hasError&&(\"zoom\"===o.opts.clickContent||n.isFunction(o.opts.clickContent)&&\"zoom\"===o.opts.clickContent(o))&&(t=e.getFitPos(o),o.width>t.width||o.height>t.height))},isScaledDown:function(){var t=this,e=t.current,o=e.$content,i=!1;return o&&(i=n.fancybox.getTranslate(o),i=i.width<e.width||i.height<e.height),i},canPan:function(){var t=this,e=t.current,n=e.$content,o=!1;return n&&(o=t.getFitPos(e),o=Math.abs(n.width()-o.width)>1||Math.abs(n.height()-o.height)>1),o},loadSlide:function(t){var e,o,i,a=this;if(!t.isLoading&&!t.isLoaded){switch(t.isLoading=!0,a.trigger(\"beforeLoad\",t),e=t.type,o=t.$slide,o.off(\"refresh\").trigger(\"onReset\").addClass(\"fancybox-slide--\"+(e||\"unknown\")).addClass(t.opts.slideClass),e){case\"image\":a.setImage(t);break;case\"iframe\":a.setIframe(t);break;case\"html\":a.setContent(t,t.src||t.content);break;case\"inline\":n(t.src).length?a.setContent(t,n(t.src)):a.setError(t);break;case\"ajax\":a.showLoading(t),i=n.ajax(n.extend({},t.opts.ajax.settings,{url:t.src,success:function(e,n){\"success\"===n&&a.setContent(t,e)},error:function(e,n){e&&\"abort\"!==n&&a.setError(t)}})),o.one(\"onReset\",function(){i.abort()});break;default:a.setError(t)}return!0}},setImage:function(e){var o,i,a,s,r=this,c=e.opts.image.srcset;if(c){a=t.devicePixelRatio||1,s=t.innerWidth*a,i=c.split(\",\").map(function(t){var e={};return t.trim().split(/\\s+/).forEach(function(t,n){var o=parseInt(t.substring(0,t.length-1),10);return 0===n?e.url=t:void(o&&(e.value=o,e.postfix=t[t.length-1]))}),e}),i.sort(function(t,e){return t.value-e.value});for(var l=0;l<i.length;l++){var u=i[l];if(\"w\"===u.postfix&&u.value>=s||\"x\"===u.postfix&&u.value>=a){o=u;break}}!o&&i.length&&(o=i[i.length-1]),o&&(e.src=o.url,e.width&&e.height&&\"w\"==o.postfix&&(e.height=e.width/e.height*o.value,e.width=o.value))}e.$content=n('<div class=\"fancybox-image-wrap\"></div>').addClass(\"fancybox-is-hidden\").appendTo(e.$slide),e.opts.preload!==!1&&e.opts.width&&e.opts.height&&(e.opts.thumb||e.opts.$thumb)?(e.width=e.opts.width,e.height=e.opts.height,e.$ghost=n(\"<img />\").one(\"error\",function(){n(this).remove(),e.$ghost=null,r.setBigImage(e)}).one(\"load\",function(){r.afterLoad(e),r.setBigImage(e)}).addClass(\"fancybox-image\").appendTo(e.$content).attr(\"src\",e.opts.thumb||e.opts.$thumb.attr(\"src\"))):r.setBigImage(e)},setBigImage:function(t){var e=this,o=n(\"<img />\");t.$image=o.one(\"error\",function(){e.setError(t)}).one(\"load\",function(){clearTimeout(t.timouts),t.timouts=null,e.isClosing||(t.width=this.naturalWidth,t.height=this.naturalHeight,t.opts.image.srcset&&o.attr(\"sizes\",\"100vw\").attr(\"srcset\",t.opts.image.srcset),e.hideLoading(t),t.$ghost?t.timouts=setTimeout(function(){t.timouts=null,t.$ghost.hide()},Math.min(300,Math.max(1e3,t.height/1600))):e.afterLoad(t))}).addClass(\"fancybox-image\").attr(\"src\",t.src).appendTo(t.$content),(o[0].complete||\"complete\"==o[0].readyState)&&o[0].naturalWidth&&o[0].naturalHeight?o.trigger(\"load\"):o[0].error?o.trigger(\"error\"):t.timouts=setTimeout(function(){o[0].complete||t.hasError||e.showLoading(t)},100)},setIframe:function(t){var e,i=this,a=t.opts.iframe,s=t.$slide;t.$content=n('<div class=\"fancybox-content'+(a.preload?\" fancybox-is-hidden\":\"\")+'\"></div>').css(a.css).appendTo(s),e=n(a.tpl.replace(/\\{rnd\\}/g,(new Date).getTime())).attr(a.attr).appendTo(t.$content),a.preload?(i.showLoading(t),e.on(\"load.fb error.fb\",function(e){this.isReady=1,t.$slide.trigger(\"refresh\"),i.afterLoad(t)}),s.on(\"refresh.fb\",function(){var n,i,s,r=t.$content,c=a.css.width,l=a.css.height;if(1===e[0].isReady){try{i=e.contents(),s=i.find(\"body\")}catch(t){}s&&s.length&&(c===o&&(n=e[0].contentWindow.document.documentElement.scrollWidth,c=Math.ceil(s.outerWidth(!0)+(r.width()-n)),c+=r.outerWidth()-r.innerWidth()),l===o&&(l=Math.ceil(s.outerHeight(!0)),l+=r.outerHeight()-r.innerHeight()),c&&r.width(c),l&&r.height(l)),r.removeClass(\"fancybox-is-hidden\")}})):this.afterLoad(t),e.attr(\"src\",t.src),t.opts.smallBtn===!0&&t.$content.prepend(i.translate(t,t.opts.btnTpl.smallBtn)),s.one(\"onReset\",function(){try{n(this).find(\"iframe\").hide().attr(\"src\",\"//about:blank\")}catch(t){}n(this).empty(),t.isLoaded=!1})},setContent:function(t,e){var o=this;o.isClosing||(o.hideLoading(t),t.$slide.empty(),l(e)&&e.parent().length?(e.parent(\".fancybox-slide--inline\").trigger(\"onReset\"),t.$placeholder=n(\"<div></div>\").hide().insertAfter(e),e.css(\"display\",\"inline-block\")):t.hasError||(\"string\"===n.type(e)&&(e=n(\"<div>\").append(n.trim(e)).contents(),3===e[0].nodeType&&(e=n(\"<div>\").html(e))),t.opts.filter&&(e=n(\"<div>\").html(e).find(t.opts.filter))),t.$slide.one(\"onReset\",function(){t.$placeholder&&(t.$placeholder.after(e.hide()).remove(),t.$placeholder=null),t.$smallBtn&&(t.$smallBtn.remove(),t.$smallBtn=null),t.hasError||(n(this).empty(),t.isLoaded=!1)}),t.$content=n(e).appendTo(t.$slide),t.opts.smallBtn&&!t.$smallBtn&&(t.$smallBtn=n(o.translate(t,t.opts.btnTpl.smallBtn)).appendTo(t.$content.filter(\"div\").first())),this.afterLoad(t))},setError:function(t){t.hasError=!0,t.$slide.removeClass(\"fancybox-slide--\"+t.type),this.setContent(t,this.translate(t,t.opts.errorTpl))},showLoading:function(t){var e=this;t=t||e.current,t&&!t.$spinner&&(t.$spinner=n(e.opts.spinnerTpl).appendTo(t.$slide))},hideLoading:function(t){var e=this;t=t||e.current,t&&t.$spinner&&(t.$spinner.remove(),delete t.$spinner)},afterLoad:function(t){var e=this;e.isClosing||(t.isLoading=!1,t.isLoaded=!0,e.trigger(\"afterLoad\",t),e.hideLoading(t),t.opts.protect&&t.$content&&!t.hasError&&(t.$content.on(\"contextmenu.fb\",function(t){return 2==t.button&&t.preventDefault(),!0}),\"image\"===t.type&&n('<div class=\"fancybox-spaceball\"></div>').appendTo(t.$content)),e.revealContent(t))},revealContent:function(t){var e,i,a,s,r,c=this,l=t.$slide,u=!1;return e=t.opts[c.firstRun?\"animationEffect\":\"transitionEffect\"],a=t.opts[c.firstRun?\"animationDuration\":\"transitionDuration\"],a=parseInt(t.forcedDuration===o?a:t.forcedDuration,10),!t.isMoved&&t.pos===c.currPos&&a||(e=!1),\"zoom\"!==e||t.pos===c.currPos&&a&&\"image\"===t.type&&!t.hasError&&(u=c.getThumbPos(t))||(e=\"fade\"),\"zoom\"===e?(r=c.getFitPos(t),r.scaleX=r.width/u.width,r.scaleY=r.height/u.height,delete r.width,delete r.height,s=t.opts.zoomOpacity,\"auto\"==s&&(s=Math.abs(t.width/t.height-u.width/u.height)>.1),s&&(u.opacity=.1,r.opacity=1),n.fancybox.setTranslate(t.$content.removeClass(\"fancybox-is-hidden\"),u),f(t.$content),void n.fancybox.animate(t.$content,r,a,function(){c.complete()})):(c.updateSlide(t),e?(n.fancybox.stop(l),i=\"fancybox-animated fancybox-slide--\"+(t.pos>c.prevPos?\"next\":\"previous\")+\" fancybox-fx-\"+e,l.removeAttr(\"style\").removeClass(\"fancybox-slide--current fancybox-slide--next fancybox-slide--previous\").addClass(i),t.$content.removeClass(\"fancybox-is-hidden\"),f(l),void n.fancybox.animate(l,\"fancybox-slide--current\",a,function(e){l.removeClass(i).removeAttr(\"style\"),t.pos===c.currPos&&c.complete()},!0)):(f(l),t.$content.removeClass(\"fancybox-is-hidden\"),void(t.pos===c.currPos&&c.complete())))},getThumbPos:function(o){var i,a=this,s=!1,r=function(e){for(var o,i=e[0],a=i.getBoundingClientRect(),s=[];null!==i.parentElement;)\"hidden\"!==n(i.parentElement).css(\"overflow\")&&\"auto\"!==n(i.parentElement).css(\"overflow\")||s.push(i.parentElement.getBoundingClientRect()),i=i.parentElement;return o=s.every(function(t){var e=Math.min(a.right,t.right)-Math.max(a.left,t.left),n=Math.min(a.bottom,t.bottom)-Math.max(a.top,t.top);return e>0&&n>0}),o&&a.bottom>0&&a.right>0&&a.left<n(t).width()&&a.top<n(t).height()},c=o.opts.$thumb,l=c?c.offset():0;return l&&c[0].ownerDocument===e&&r(c)&&(i=a.$refs.stage.offset(),s={top:l.top-i.top+parseFloat(c.css(\"border-top-width\")||0),left:l.left-i.left+parseFloat(c.css(\"border-left-width\")||0),width:c.width(),height:c.height(),scaleX:1,scaleY:1}),s},complete:function(){var t=this,o=t.current,i={};o.isMoved||!o.isLoaded||o.isComplete||(o.isComplete=!0,o.$slide.siblings().trigger(\"onReset\"),f(o.$slide),o.$slide.addClass(\"fancybox-slide--complete\"),n.each(t.slides,function(e,o){o.pos>=t.currPos-1&&o.pos<=t.currPos+1?i[o.pos]=o:o&&(n.fancybox.stop(o.$slide),o.$slide.off().remove())}),t.slides=i,t.updateCursor(),t.trigger(\"afterShow\"),(n(e.activeElement).is(\"[disabled]\")||o.opts.autoFocus&&\"image\"!=o.type&&\"iframe\"!==o.type)&&t.focus())},preload:function(){var t,e,n=this;n.group.length<2||(t=n.slides[n.currPos+1],e=n.slides[n.currPos-1],t&&\"image\"===t.type&&n.loadSlide(t),e&&\"image\"===e.type&&n.loadSlide(e))},focus:function(){var t,e=this.current;this.isClosing||(e&&e.isComplete&&(t=e.$slide.find(\"input[autofocus]:enabled:visible:first\"),t.length||(t=e.$slide.find(\"button,:input,[tabindex],a\").filter(\":enabled:visible:first\"))),t=t&&t.length?t:this.$refs.container,t.focus())},activate:function(){var t=this;n(\".fancybox-container\").each(function(){var e=n(this).data(\"FancyBox\");e&&e.uid!==t.uid&&!e.isClosing&&e.trigger(\"onDeactivate\")}),t.current&&(t.$refs.container.index()>0&&t.$refs.container.prependTo(e.body),t.updateControls()),t.trigger(\"onActivate\"),t.addEvents()},close:function(t,e){var o,i,a,s,r,c,l=this,f=l.current,h=function(){l.cleanUp(t)};return!l.isClosing&&(l.isClosing=!0,l.trigger(\"beforeClose\",t)===!1?(l.isClosing=!1,u(function(){l.update()}),!1):(l.removeEvents(),f.timouts&&clearTimeout(f.timouts),a=f.$content,o=f.opts.animationEffect,i=n.isNumeric(e)?e:o?f.opts.animationDuration:0,f.$slide.off(d).removeClass(\"fancybox-slide--complete fancybox-slide--next fancybox-slide--previous fancybox-animated\"),f.$slide.siblings().trigger(\"onReset\").remove(),i&&l.$refs.container.removeClass(\"fancybox-is-open\").addClass(\"fancybox-is-closing\"),l.hideLoading(f),l.hideControls(),l.updateCursor(),\"zoom\"!==o||t!==!0&&a&&i&&\"image\"===f.type&&!f.hasError&&(c=l.getThumbPos(f))||(o=\"fade\"),\"zoom\"===o?(n.fancybox.stop(a),r=n.fancybox.getTranslate(a),r.width=r.width*r.scaleX,r.height=r.height*r.scaleY,s=f.opts.zoomOpacity,\"auto\"==s&&(s=Math.abs(f.width/f.height-c.width/c.height)>.1),s&&(c.opacity=0),r.scaleX=r.width/c.width,r.scaleY=r.height/c.height,r.width=c.width,r.height=c.height,n.fancybox.setTranslate(f.$content,r),n.fancybox.animate(f.$content,c,i,h),!0):(o&&i?t===!0?setTimeout(h,i):n.fancybox.animate(f.$slide.removeClass(\"fancybox-slide--current\"),\"fancybox-animated fancybox-slide--previous fancybox-fx-\"+o,i,h):h(),!0)))},cleanUp:function(t){var e,o=this;o.current.$slide.trigger(\"onReset\"),o.$refs.container.empty().remove(),o.trigger(\"afterClose\",t),o.$lastFocus&&o.current.opts.backFocus&&o.$lastFocus.focus(),o.current=null,e=n.fancybox.getInstance(),e?e.activate():(s.scrollTop(o.scrollTop).scrollLeft(o.scrollLeft),n(\"html\").removeClass(\"fancybox-enabled\"),n(\"#fancybox-style-noscroll\").remove())},trigger:function(t,e){var o,i=Array.prototype.slice.call(arguments,1),a=this,s=e&&e.opts?e:a.current;return s?i.unshift(s):s=a,i.unshift(a),n.isFunction(s.opts[t])&&(o=s.opts[t].apply(s,i)),o===!1?o:void(\"afterClose\"===t?r.trigger(t+\".fb\",i):a.$refs.container.trigger(t+\".fb\",i))},updateControls:function(t){var e=this,o=e.current,i=o.index,a=o.opts,s=a.caption,r=e.$refs.caption;o.$slide.trigger(\"refresh\"),e.$caption=s&&s.length?r.html(s):null,e.isHiddenControls||e.showControls(),n(\"[data-fancybox-count]\").html(e.group.length),n(\"[data-fancybox-index]\").html(i+1),n(\"[data-fancybox-prev]\").prop(\"disabled\",!a.loop&&i<=0),n(\"[data-fancybox-next]\").prop(\"disabled\",!a.loop&&i>=e.group.length-1)},hideControls:function(){this.isHiddenControls=!0,this.$refs.container.removeClass(\"fancybox-show-infobar fancybox-show-toolbar fancybox-show-caption fancybox-show-nav\")},showControls:function(){var t=this,e=t.current?t.current.opts:t.opts,n=t.$refs.container;t.isHiddenControls=!1,t.idleSecondsCounter=0,n.toggleClass(\"fancybox-show-toolbar\",!(!e.toolbar||!e.buttons)).toggleClass(\"fancybox-show-infobar\",!!(e.infobar&&t.group.length>1)).toggleClass(\"fancybox-show-nav\",!!(e.arrows&&t.group.length>1)).toggleClass(\"fancybox-is-modal\",!!e.modal),t.$caption?n.addClass(\"fancybox-show-caption \"):n.removeClass(\"fancybox-show-caption\")},toggleControls:function(){this.isHiddenControls?this.showControls():this.hideControls()}}),n.fancybox={version:\"3.1.28\",defaults:a,getInstance:function(t){var e=n('.fancybox-container:not(\".fancybox-is-closing\"):first').data(\"FancyBox\"),o=Array.prototype.slice.call(arguments,1);return e instanceof h&&(\"string\"===n.type(t)?e[t].apply(e,o):\"function\"===n.type(t)&&t.apply(e,o),e)},open:function(t,e,n){return new h(t,e,n)},close:function(t){var e=this.getInstance();e&&(e.close(),t===!0&&this.close())},destroy:function(){this.close(!0),r.off(\"click.fb-start\")},isMobile:e.createTouch!==o&&/Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent),use3d:function(){var n=e.createElement(\"div\");return t.getComputedStyle&&t.getComputedStyle(n).getPropertyValue(\"transform\")&&!(e.documentMode&&e.documentMode<11)}(),getTranslate:function(t){var e;if(!t||!t.length)return!1;if(e=t.eq(0).css(\"transform\"),e&&e.indexOf(\"matrix\")!==-1?(e=e.split(\"(\")[1],e=e.split(\")\")[0],e=e.split(\",\")):e=[],e.length)e=e.length>10?[e[13],e[12],e[0],e[5]]:[e[5],e[4],e[0],e[3]],e=e.map(parseFloat);else{e=[0,0,1,1];var n=/\\.*translate\\((.*)px,(.*)px\\)/i,o=n.exec(t.eq(0).attr(\"style\"));o&&(e[0]=parseFloat(o[2]),e[1]=parseFloat(o[1]))}return{top:e[0],left:e[1],scaleX:e[2],scaleY:e[3],opacity:parseFloat(t.css(\"opacity\")),width:t.width(),height:t.height()}},setTranslate:function(t,e){var n=\"\",i={};if(t&&e)return e.left===o&&e.top===o||(n=(e.left===o?t.position().left:e.left)+\"px, \"+(e.top===o?t.position().top:e.top)+\"px\",n=this.use3d?\"translate3d(\"+n+\", 0px)\":\"translate(\"+n+\")\"),e.scaleX!==o&&e.scaleY!==o&&(n=(n.length?n+\" \":\"\")+\"scale(\"+e.scaleX+\", \"+e.scaleY+\")\"),n.length&&(i.transform=n),e.opacity!==o&&(i.opacity=e.opacity),e.width!==o&&(i.width=e.width),e.height!==o&&(i.height=e.height),t.css(i)},animate:function(t,e,i,a,s){var r=d||\"transitionend\";n.isFunction(i)&&(a=i,i=null),n.isPlainObject(e)||t.removeAttr(\"style\"),t.on(r,function(i){(!i||!i.originalEvent||t.is(i.originalEvent.target)&&\"z-index\"!=i.originalEvent.propertyName)&&(t.off(r),n.isPlainObject(e)?e.scaleX!==o&&e.scaleY!==o&&(t.css(\"transition-duration\",\"0ms\"),e.width=Math.round(t.width()*e.scaleX),e.height=Math.round(t.height()*e.scaleY),e.scaleX=1,e.scaleY=1,n.fancybox.setTranslate(t,e)):s!==!0&&t.removeClass(e),n.isFunction(a)&&a(i))}),n.isNumeric(i)&&t.css(\"transition-duration\",i+\"ms\"),n.isPlainObject(e)?n.fancybox.setTranslate(t,e):t.addClass(e),t.data(\"timer\",setTimeout(function(){t.trigger(\"transitionend\")},i+16))},stop:function(t){clearTimeout(t.data(\"timer\")),t.off(d)}},n.fn.fancybox=function(t){var e;return t=t||{},e=t.selector||!1,e?n(\"body\").off(\"click.fb-start\",e).on(\"click.fb-start\",e,{options:t},i):this.off(\"click.fb-start\").on(\"click.fb-start\",{items:this,options:t},i),this},r.on(\"click.fb-start\",\"[data-fancybox]\",i)}}(window,document,window.jQuery||jQuery),function(t){\"use strict\";var e=function(e,n,o){if(e)return o=o||\"\",\"object\"===t.type(o)&&(o=t.param(o,!0)),t.each(n,function(t,n){e=e.replace(\"$\"+t,n||\"\")}),o.length&&(e+=(e.indexOf(\"?\")>0?\"&\":\"?\")+o),e},n={youtube:{matcher:/(youtube\\.com|youtu\\.be|youtube\\-nocookie\\.com)\\/(watch\\?(.*&)?v=|v\\/|u\\/|embed\\/?)?(videoseries\\?list=(.*)|[\\w-]{11}|\\?listType=(.*)&list=(.*))(.*)/i,params:{autoplay:1,autohide:1,fs:1,rel:0,hd:1,wmode:\"transparent\",enablejsapi:1,html5:1},paramPlace:8,type:\"iframe\",url:\"//www.youtube.com/embed/$4\",thumb:\"//img.youtube.com/vi/$4/hqdefault.jpg\"},vimeo:{matcher:/^.+vimeo.com\\/(.*\\/)?([\\d]+)(.*)?/,params:{autoplay:1,hd:1,show_title:1,show_byline:1,show_portrait:0,fullscreen:1,api:1},paramPlace:3,type:\"iframe\",url:\"//player.vimeo.com/video/$2\"},metacafe:{matcher:/metacafe.com\\/watch\\/(\\d+)\\/(.*)?/,type:\"iframe\",url:\"//www.metacafe.com/embed/$1/?ap=1\"},dailymotion:{matcher:/dailymotion.com\\/video\\/(.*)\\/?(.*)/,params:{additionalInfos:0,autoStart:1},type:\"iframe\",url:\"//www.dailymotion.com/embed/video/$1\"},vine:{matcher:/vine.co\\/v\\/([a-zA-Z0-9\\?\\=\\-]+)/,type:\"iframe\",url:\"//vine.co/v/$1/embed/simple\"},instagram:{matcher:/(instagr\\.am|instagram\\.com)\\/p\\/([a-zA-Z0-9_\\-]+)\\/?/i,type:\"image\",url:\"//$1/p/$2/media/?size=l\"},gmap_place:{matcher:/(maps\\.)?google\\.([a-z]{2,3}(\\.[a-z]{2})?)\\/(((maps\\/(place\\/(.*)\\/)?\\@(.*),(\\d+.?\\d+?)z))|(\\?ll=))(.*)?/i,type:\"iframe\",url:function(t){return\"//maps.google.\"+t[2]+\"/?ll=\"+(t[9]?t[9]+\"&z=\"+Math.floor(t[10])+(t[12]?t[12].replace(/^\\//,\"&\"):\"\"):t[12])+\"&output=\"+(t[12]&&t[12].indexOf(\"layer=c\")>0?\"svembed\":\"embed\")}},gmap_search:{matcher:/(maps\\.)?google\\.([a-z]{2,3}(\\.[a-z]{2})?)\\/(maps\\/search\\/)(.*)/i,type:\"iframe\",url:function(t){return\"//maps.google.\"+t[2]+\"/maps?q=\"+t[5].replace(\"query=\",\"q=\").replace(\"api=1\",\"\")+\"&output=embed\"}}};t(document).on(\"onInit.fb\",function(o,i){t.each(i.group,function(o,i){var a,s,r,c,l,u,d,f=i.src||\"\",h=!1;i.type||(a=t.extend(!0,{},n,i.opts.media),t.each(a,function(n,o){if(r=f.match(o.matcher),u={},d=n,r){if(h=o.type,o.paramPlace&&r[o.paramPlace]){l=r[o.paramPlace],\"?\"==l[0]&&(l=l.substring(1)),l=l.split(\"&\");for(var a=0;a<l.length;++a){var p=l[a].split(\"=\",2);2==p.length&&(u[p[0]]=decodeURIComponent(p[1].replace(/\\+/g,\" \")))}}return c=t.extend(!0,{},o.params,i.opts[n],u),f=\"function\"===t.type(o.url)?o.url.call(this,r,c,i):e(o.url,r,c),s=\"function\"===t.type(o.thumb)?o.thumb.call(this,r,c,i):e(o.thumb,r),\"vimeo\"===d&&(f=f.replace(\"&%23\",\"#\")),!1}}),h?(i.src=f,i.type=h,i.opts.thumb||i.opts.$thumb&&i.opts.$thumb.length||(i.opts.thumb=s),\"iframe\"===h&&(t.extend(!0,i.opts,{\niframe:{preload:!1,attr:{scrolling:\"no\"}}}),i.contentProvider=d,i.opts.slideClass+=\" fancybox-slide--\"+(\"gmap_place\"==d||\"gmap_search\"==d?\"map\":\"video\"))):i.type=\"image\")})})}(window.jQuery),function(t,e,n){\"use strict\";var o=function(){return t.requestAnimationFrame||t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||t.oRequestAnimationFrame||function(e){return t.setTimeout(e,1e3/60)}}(),i=function(){return t.cancelAnimationFrame||t.webkitCancelAnimationFrame||t.mozCancelAnimationFrame||t.oCancelAnimationFrame||function(e){t.clearTimeout(e)}}(),a=function(e){var n=[];e=e.originalEvent||e||t.e,e=e.touches&&e.touches.length?e.touches:e.changedTouches&&e.changedTouches.length?e.changedTouches:[e];for(var o in e)e[o].pageX?n.push({x:e[o].pageX,y:e[o].pageY}):e[o].clientX&&n.push({x:e[o].clientX,y:e[o].clientY});return n},s=function(t,e,n){return e&&t?\"x\"===n?t.x-e.x:\"y\"===n?t.y-e.y:Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)):0},r=function(t){if(t.is(\"a,button,input,select,textarea,label\")||n.isFunction(t.get(0).onclick)||t.data(\"selectable\"))return!0;for(var e=0,o=t[0].attributes,i=o.length;e<i;e++)if(\"data-fancybox-\"===o[e].nodeName.substr(0,14))return!0;return!1},c=function(e){var n=t.getComputedStyle(e)[\"overflow-y\"],o=t.getComputedStyle(e)[\"overflow-x\"],i=(\"scroll\"===n||\"auto\"===n)&&e.scrollHeight>e.clientHeight,a=(\"scroll\"===o||\"auto\"===o)&&e.scrollWidth>e.clientWidth;return i||a},l=function(t){for(var e=!1;;){if(e=c(t.get(0)))break;if(t=t.parent(),!t.length||t.hasClass(\"fancybox-stage\")||t.is(\"body\"))break}return e},u=function(t){var e=this;e.instance=t,e.$bg=t.$refs.bg,e.$stage=t.$refs.stage,e.$container=t.$refs.container,e.destroy(),e.$container.on(\"touchstart.fb.touch mousedown.fb.touch\",n.proxy(e,\"ontouchstart\"))};u.prototype.destroy=function(){this.$container.off(\".fb.touch\")},u.prototype.ontouchstart=function(o){var i=this,c=n(o.target),u=i.instance,d=u.current,f=d.$content,h=\"touchstart\"==o.type;if(h&&i.$container.off(\"mousedown.fb.touch\"),!d||i.instance.isAnimating||i.instance.isClosing)return o.stopPropagation(),void o.preventDefault();if((!o.originalEvent||2!=o.originalEvent.button)&&c.length&&!r(c)&&!r(c.parent())&&!(o.originalEvent.clientX>c[0].clientWidth+c.offset().left)&&(i.startPoints=a(o),i.startPoints&&!(i.startPoints.length>1&&u.isSliding))){if(i.$target=c,i.$content=f,i.canTap=!0,n(e).off(\".fb.touch\"),n(e).on(h?\"touchend.fb.touch touchcancel.fb.touch\":\"mouseup.fb.touch mouseleave.fb.touch\",n.proxy(i,\"ontouchend\")),n(e).on(h?\"touchmove.fb.touch\":\"mousemove.fb.touch\",n.proxy(i,\"ontouchmove\")),!u.current.opts.touch&&!u.canPan()||!c.is(i.$stage)&&!i.$stage.find(c).length)return void(c.is(\"img\")&&o.preventDefault());o.stopPropagation(),n.fancybox.isMobile&&(l(i.$target)||l(i.$target.parent()))||o.preventDefault(),i.canvasWidth=Math.round(d.$slide[0].clientWidth),i.canvasHeight=Math.round(d.$slide[0].clientHeight),i.startTime=(new Date).getTime(),i.distanceX=i.distanceY=i.distance=0,i.isPanning=!1,i.isSwiping=!1,i.isZooming=!1,i.sliderStartPos=i.sliderLastPos||{top:0,left:0},i.contentStartPos=n.fancybox.getTranslate(i.$content),i.contentLastPos=null,1!==i.startPoints.length||i.isZooming||(i.canTap=!u.isSliding,\"image\"===d.type&&(i.contentStartPos.width>i.canvasWidth+1||i.contentStartPos.height>i.canvasHeight+1)?(n.fancybox.stop(i.$content),i.$content.css(\"transition-duration\",\"0ms\"),i.isPanning=!0):i.isSwiping=!0,i.$container.addClass(\"fancybox-controls--isGrabbing\")),2!==i.startPoints.length||u.isAnimating||d.hasError||\"image\"!==d.type||!d.isLoaded&&!d.$ghost||(i.isZooming=!0,i.isSwiping=!1,i.isPanning=!1,n.fancybox.stop(i.$content),i.$content.css(\"transition-duration\",\"0ms\"),i.centerPointStartX=.5*(i.startPoints[0].x+i.startPoints[1].x)-n(t).scrollLeft(),i.centerPointStartY=.5*(i.startPoints[0].y+i.startPoints[1].y)-n(t).scrollTop(),i.percentageOfImageAtPinchPointX=(i.centerPointStartX-i.contentStartPos.left)/i.contentStartPos.width,i.percentageOfImageAtPinchPointY=(i.centerPointStartY-i.contentStartPos.top)/i.contentStartPos.height,i.startDistanceBetweenFingers=s(i.startPoints[0],i.startPoints[1]))}},u.prototype.ontouchmove=function(t){var e=this;if(e.newPoints=a(t),n.fancybox.isMobile&&(l(e.$target)||l(e.$target.parent())))return t.stopPropagation(),void(e.canTap=!1);if((e.instance.current.opts.touch||e.instance.canPan())&&e.newPoints&&e.newPoints.length&&(e.distanceX=s(e.newPoints[0],e.startPoints[0],\"x\"),e.distanceY=s(e.newPoints[0],e.startPoints[0],\"y\"),e.distance=s(e.newPoints[0],e.startPoints[0]),e.distance>0)){if(!e.$target.is(e.$stage)&&!e.$stage.find(e.$target).length)return;t.stopPropagation(),t.preventDefault(),e.isSwiping?e.onSwipe():e.isPanning?e.onPan():e.isZooming&&e.onZoom()}},u.prototype.onSwipe=function(){var e,a=this,s=a.isSwiping,r=a.sliderStartPos.left||0;s===!0?Math.abs(a.distance)>10&&(a.canTap=!1,a.instance.group.length<2&&a.instance.opts.touch.vertical?a.isSwiping=\"y\":a.instance.isSliding||a.instance.opts.touch.vertical===!1||\"auto\"===a.instance.opts.touch.vertical&&n(t).width()>800?a.isSwiping=\"x\":(e=Math.abs(180*Math.atan2(a.distanceY,a.distanceX)/Math.PI),a.isSwiping=e>45&&e<135?\"y\":\"x\"),a.instance.isSliding=a.isSwiping,a.startPoints=a.newPoints,n.each(a.instance.slides,function(t,e){n.fancybox.stop(e.$slide),e.$slide.css(\"transition-duration\",\"0ms\"),e.inTransition=!1,e.pos===a.instance.current.pos&&(a.sliderStartPos.left=n.fancybox.getTranslate(e.$slide).left)}),a.instance.SlideShow&&a.instance.SlideShow.isActive&&a.instance.SlideShow.stop()):(\"x\"==s&&(a.distanceX>0&&(a.instance.group.length<2||0===a.instance.current.index&&!a.instance.current.opts.loop)?r+=Math.pow(a.distanceX,.8):a.distanceX<0&&(a.instance.group.length<2||a.instance.current.index===a.instance.group.length-1&&!a.instance.current.opts.loop)?r-=Math.pow(-a.distanceX,.8):r+=a.distanceX),a.sliderLastPos={top:\"x\"==s?0:a.sliderStartPos.top+a.distanceY,left:r},a.requestId&&(i(a.requestId),a.requestId=null),a.requestId=o(function(){a.sliderLastPos&&(n.each(a.instance.slides,function(t,e){var o=e.pos-a.instance.currPos;n.fancybox.setTranslate(e.$slide,{top:a.sliderLastPos.top,left:a.sliderLastPos.left+o*a.canvasWidth+o*e.opts.gutter})}),a.$container.addClass(\"fancybox-is-sliding\"))}))},u.prototype.onPan=function(){var t,e,a,s=this;s.canTap=!1,t=s.contentStartPos.width>s.canvasWidth?s.contentStartPos.left+s.distanceX:s.contentStartPos.left,e=s.contentStartPos.top+s.distanceY,a=s.limitMovement(t,e,s.contentStartPos.width,s.contentStartPos.height),a.scaleX=s.contentStartPos.scaleX,a.scaleY=s.contentStartPos.scaleY,s.contentLastPos=a,s.requestId&&(i(s.requestId),s.requestId=null),s.requestId=o(function(){n.fancybox.setTranslate(s.$content,s.contentLastPos)})},u.prototype.limitMovement=function(t,e,n,o){var i,a,s,r,c=this,l=c.canvasWidth,u=c.canvasHeight,d=c.contentStartPos.left,f=c.contentStartPos.top,h=c.distanceX,p=c.distanceY;return i=Math.max(0,.5*l-.5*n),a=Math.max(0,.5*u-.5*o),s=Math.min(l-n,.5*l-.5*n),r=Math.min(u-o,.5*u-.5*o),n>l&&(h>0&&t>i&&(t=i-1+Math.pow(-i+d+h,.8)||0),h<0&&t<s&&(t=s+1-Math.pow(s-d-h,.8)||0)),o>u&&(p>0&&e>a&&(e=a-1+Math.pow(-a+f+p,.8)||0),p<0&&e<r&&(e=r+1-Math.pow(r-f-p,.8)||0)),{top:e,left:t}},u.prototype.limitPosition=function(t,e,n,o){var i=this,a=i.canvasWidth,s=i.canvasHeight;return n>a?(t=t>0?0:t,t=t<a-n?a-n:t):t=Math.max(0,a/2-n/2),o>s?(e=e>0?0:e,e=e<s-o?s-o:e):e=Math.max(0,s/2-o/2),{top:e,left:t}},u.prototype.onZoom=function(){var e=this,a=e.contentStartPos.width,r=e.contentStartPos.height,c=e.contentStartPos.left,l=e.contentStartPos.top,u=s(e.newPoints[0],e.newPoints[1]),d=u/e.startDistanceBetweenFingers,f=Math.floor(a*d),h=Math.floor(r*d),p=(a-f)*e.percentageOfImageAtPinchPointX,g=(r-h)*e.percentageOfImageAtPinchPointY,b=(e.newPoints[0].x+e.newPoints[1].x)/2-n(t).scrollLeft(),m=(e.newPoints[0].y+e.newPoints[1].y)/2-n(t).scrollTop(),y=b-e.centerPointStartX,v=m-e.centerPointStartY,x=c+(p+y),w=l+(g+v),$={top:w,left:x,scaleX:e.contentStartPos.scaleX*d,scaleY:e.contentStartPos.scaleY*d};e.canTap=!1,e.newWidth=f,e.newHeight=h,e.contentLastPos=$,e.requestId&&(i(e.requestId),e.requestId=null),e.requestId=o(function(){n.fancybox.setTranslate(e.$content,e.contentLastPos)})},u.prototype.ontouchend=function(t){var o=this,s=Math.max((new Date).getTime()-o.startTime,1),r=o.isSwiping,c=o.isPanning,l=o.isZooming;return o.endPoints=a(t),o.$container.removeClass(\"fancybox-controls--isGrabbing\"),n(e).off(\".fb.touch\"),o.requestId&&(i(o.requestId),o.requestId=null),o.isSwiping=!1,o.isPanning=!1,o.isZooming=!1,o.canTap?o.onTap(t):(o.speed=366,o.velocityX=o.distanceX/s*.5,o.velocityY=o.distanceY/s*.5,o.speedX=Math.max(.5*o.speed,Math.min(1.5*o.speed,1/Math.abs(o.velocityX)*o.speed)),void(c?o.endPanning():l?o.endZooming():o.endSwiping(r)))},u.prototype.endSwiping=function(t){var e=this,o=!1;e.instance.isSliding=!1,e.sliderLastPos=null,\"y\"==t&&Math.abs(e.distanceY)>50?(n.fancybox.animate(e.instance.current.$slide,{top:e.sliderStartPos.top+e.distanceY+150*e.velocityY,opacity:0},150),o=e.instance.close(!0,300)):\"x\"==t&&e.distanceX>50&&e.instance.group.length>1?o=e.instance.previous(e.speedX):\"x\"==t&&e.distanceX<-50&&e.instance.group.length>1&&(o=e.instance.next(e.speedX)),o!==!1||\"x\"!=t&&\"y\"!=t||e.instance.jumpTo(e.instance.current.index,150),e.$container.removeClass(\"fancybox-is-sliding\")},u.prototype.endPanning=function(){var t,e,o,i=this;i.contentLastPos&&(i.instance.current.opts.touch.momentum===!1?(t=i.contentLastPos.left,e=i.contentLastPos.top):(t=i.contentLastPos.left+i.velocityX*i.speed,e=i.contentLastPos.top+i.velocityY*i.speed),o=i.limitPosition(t,e,i.contentStartPos.width,i.contentStartPos.height),o.width=i.contentStartPos.width,o.height=i.contentStartPos.height,n.fancybox.animate(i.$content,o,330))},u.prototype.endZooming=function(){var t,e,o,i,a=this,s=a.instance.current,r=a.newWidth,c=a.newHeight;a.contentLastPos&&(t=a.contentLastPos.left,e=a.contentLastPos.top,i={top:e,left:t,width:r,height:c,scaleX:1,scaleY:1},n.fancybox.setTranslate(a.$content,i),r<a.canvasWidth&&c<a.canvasHeight?a.instance.scaleToFit(150):r>s.width||c>s.height?a.instance.scaleToActual(a.centerPointStartX,a.centerPointStartY,150):(o=a.limitPosition(t,e,r,c),n.fancybox.setTranslate(a.content,n.fancybox.getTranslate(a.$content)),n.fancybox.animate(a.$content,o,150)))},u.prototype.onTap=function(t){var e,o=this,i=n(t.target),s=o.instance,r=s.current,c=t&&a(t)||o.startPoints,l=c[0]?c[0].x-o.$stage.offset().left:0,u=c[0]?c[0].y-o.$stage.offset().top:0,d=function(e){var i=r.opts[e];if(n.isFunction(i)&&(i=i.apply(s,[r,t])),i)switch(i){case\"close\":s.close(o.startEvent);break;case\"toggleControls\":s.toggleControls(!0);break;case\"next\":s.next();break;case\"nextOrClose\":s.group.length>1?s.next():s.close(o.startEvent);break;case\"zoom\":\"image\"==r.type&&(r.isLoaded||r.$ghost)&&(s.canPan()?s.scaleToFit():s.isScaledDown()?s.scaleToActual(l,u):s.group.length<2&&s.close(o.startEvent))}};if(!(t.originalEvent&&2==t.originalEvent.button||s.isSliding||l>i[0].clientWidth+i.offset().left)){if(i.is(\".fancybox-bg,.fancybox-inner,.fancybox-outer,.fancybox-container\"))e=\"Outside\";else if(i.is(\".fancybox-slide\"))e=\"Slide\";else{if(!s.current.$content||!s.current.$content.has(t.target).length)return;e=\"Content\"}if(o.tapped){if(clearTimeout(o.tapped),o.tapped=null,Math.abs(l-o.tapX)>50||Math.abs(u-o.tapY)>50||s.isSliding)return this;d(\"dblclick\"+e)}else o.tapX=l,o.tapY=u,r.opts[\"dblclick\"+e]&&r.opts[\"dblclick\"+e]!==r.opts[\"click\"+e]?o.tapped=setTimeout(function(){o.tapped=null,d(\"click\"+e)},300):d(\"click\"+e);return this}},n(e).on(\"onActivate.fb\",function(t,e){e&&!e.Guestures&&(e.Guestures=new u(e))}),n(e).on(\"beforeClose.fb\",function(t,e){e&&e.Guestures&&e.Guestures.destroy()})}(window,document,window.jQuery),function(t,e){\"use strict\";var n=function(t){this.instance=t,this.init()};e.extend(n.prototype,{timer:null,isActive:!1,$button:null,speed:3e3,init:function(){var t=this;t.$button=t.instance.$refs.toolbar.find(\"[data-fancybox-play]\").on(\"click\",function(){t.toggle()}),(t.instance.group.length<2||!t.instance.group[t.instance.currIndex].opts.slideShow)&&t.$button.hide()},set:function(){var t=this;t.instance&&t.instance.current&&(t.instance.current.opts.loop||t.instance.currIndex<t.instance.group.length-1)?t.timer=setTimeout(function(){t.instance.next()},t.instance.current.opts.slideShow.speed||t.speed):(t.stop(),t.instance.idleSecondsCounter=0,t.instance.showControls())},clear:function(){var t=this;clearTimeout(t.timer),t.timer=null},start:function(){var t=this,e=t.instance.current;t.instance&&e&&(e.opts.loop||e.index<t.instance.group.length-1)&&(t.isActive=!0,t.$button.attr(\"title\",e.opts.i18n[e.opts.lang].PLAY_STOP).addClass(\"fancybox-button--pause\"),e.isComplete&&t.set())},stop:function(){var t=this,e=t.instance.current;t.clear(),t.$button.attr(\"title\",e.opts.i18n[e.opts.lang].PLAY_START).removeClass(\"fancybox-button--pause\"),t.isActive=!1},toggle:function(){var t=this;t.isActive?t.stop():t.start()}}),e(t).on({\"onInit.fb\":function(t,e){e&&!e.SlideShow&&(e.SlideShow=new n(e))},\"beforeShow.fb\":function(t,e,n,o){var i=e&&e.SlideShow;o?i&&n.opts.slideShow.autoStart&&i.start():i&&i.isActive&&i.clear()},\"afterShow.fb\":function(t,e,n){var o=e&&e.SlideShow;o&&o.isActive&&o.set()},\"afterKeydown.fb\":function(n,o,i,a,s){var r=o&&o.SlideShow;!r||!i.opts.slideShow||80!==s&&32!==s||e(t.activeElement).is(\"button,a,input\")||(a.preventDefault(),r.toggle())},\"beforeClose.fb onDeactivate.fb\":function(t,e){var n=e&&e.SlideShow;n&&n.stop()}}),e(t).on(\"visibilitychange\",function(){var n=e.fancybox.getInstance(),o=n&&n.SlideShow;o&&o.isActive&&(t.hidden?o.clear():o.set())})}(document,window.jQuery),function(t,e){\"use strict\";var n=function(){var e,n,o,i=[[\"requestFullscreen\",\"exitFullscreen\",\"fullscreenElement\",\"fullscreenEnabled\",\"fullscreenchange\",\"fullscreenerror\"],[\"webkitRequestFullscreen\",\"webkitExitFullscreen\",\"webkitFullscreenElement\",\"webkitFullscreenEnabled\",\"webkitfullscreenchange\",\"webkitfullscreenerror\"],[\"webkitRequestFullScreen\",\"webkitCancelFullScreen\",\"webkitCurrentFullScreenElement\",\"webkitCancelFullScreen\",\"webkitfullscreenchange\",\"webkitfullscreenerror\"],[\"mozRequestFullScreen\",\"mozCancelFullScreen\",\"mozFullScreenElement\",\"mozFullScreenEnabled\",\"mozfullscreenchange\",\"mozfullscreenerror\"],[\"msRequestFullscreen\",\"msExitFullscreen\",\"msFullscreenElement\",\"msFullscreenEnabled\",\"MSFullscreenChange\",\"MSFullscreenError\"]],a={};for(n=0;n<i.length;n++)if(e=i[n],e&&e[1]in t){for(o=0;o<e.length;o++)a[i[0][o]]=e[o];return a}return!1}();if(!n)return void(e&&e.fancybox&&(e.fancybox.defaults.btnTpl.fullScreen=!1));var o={request:function(e){e=e||t.documentElement,e[n.requestFullscreen](e.ALLOW_KEYBOARD_INPUT)},exit:function(){t[n.exitFullscreen]()},toggle:function(e){e=e||t.documentElement,this.isFullscreen()?this.exit():this.request(e)},isFullscreen:function(){return Boolean(t[n.fullscreenElement])},enabled:function(){return Boolean(t[n.fullscreenEnabled])}};e(t).on({\"onInit.fb\":function(t,e){var n,i=e.$refs.toolbar.find(\"[data-fancybox-fullscreen]\");e&&!e.FullScreen&&e.group[e.currIndex].opts.fullScreen?(n=e.$refs.container,n.on(\"click.fb-fullscreen\",\"[data-fancybox-fullscreen]\",function(t){t.stopPropagation(),t.preventDefault(),o.toggle(n[0])}),e.opts.fullScreen&&e.opts.fullScreen.autoStart===!0&&o.request(n[0]),e.FullScreen=o):i.hide()},\"afterKeydown.fb\":function(t,e,n,o,i){e&&e.FullScreen&&70===i&&(o.preventDefault(),e.FullScreen.toggle(e.$refs.container[0]))},\"beforeClose.fb\":function(t){t&&t.FullScreen&&o.exit()}}),e(t).on(n.fullscreenchange,function(){var t=e.fancybox.getInstance();t.current&&\"image\"===t.current.type&&t.isAnimating&&(t.current.$content.css(\"transition\",\"none\"),t.isAnimating=!1,t.update(!0,!0,0)),t.trigger(\"onFullscreenChange\",o.isFullscreen())})}(document,window.jQuery),function(t,e){\"use strict\";var n=function(t){this.instance=t,this.init()};e.extend(n.prototype,{$button:null,$grid:null,$list:null,isVisible:!1,init:function(){var t=this,e=t.instance.group[0],n=t.instance.group[1];t.$button=t.instance.$refs.toolbar.find(\"[data-fancybox-thumbs]\"),t.instance.group.length>1&&t.instance.group[t.instance.currIndex].opts.thumbs&&(\"image\"==e.type||e.opts.thumb||e.opts.$thumb)&&(\"image\"==n.type||n.opts.thumb||n.opts.$thumb)?(t.$button.on(\"click\",function(){t.toggle()}),t.isActive=!0):(t.$button.hide(),t.isActive=!1)},create:function(){var t,n,o=this.instance;this.$grid=e('<div class=\"fancybox-thumbs\"></div>').appendTo(o.$refs.container),t=\"<ul>\",e.each(o.group,function(e,o){n=o.opts.thumb||(o.opts.$thumb?o.opts.$thumb.attr(\"src\"):null),n||\"image\"!==o.type||(n=o.src),n&&n.length&&(t+='<li data-index=\"'+e+'\" tabindex=\"0\" class=\"fancybox-thumbs-loading\"><img data-src=\"'+n+'\" /></li>')}),t+=\"</ul>\",this.$list=e(t).appendTo(this.$grid).on(\"click\",\"li\",function(){o.jumpTo(e(this).data(\"index\"))}),this.$list.find(\"img\").hide().one(\"load\",function(){var t,n,o,i,a=e(this).parent().removeClass(\"fancybox-thumbs-loading\"),s=a.outerWidth(),r=a.outerHeight();t=this.naturalWidth||this.width,n=this.naturalHeight||this.height,o=t/s,i=n/r,o>=1&&i>=1&&(o>i?(t/=i,n=r):(t=s,n/=o)),e(this).css({width:Math.floor(t),height:Math.floor(n),\"margin-top\":Math.min(0,Math.floor(.3*r-.3*n)),\"margin-left\":Math.min(0,Math.floor(.5*s-.5*t))}).show()}).each(function(){this.src=e(this).data(\"src\")})},focus:function(){this.instance.current&&this.$list.children().removeClass(\"fancybox-thumbs-active\").filter('[data-index=\"'+this.instance.current.index+'\"]').addClass(\"fancybox-thumbs-active\").focus()},close:function(){this.$grid.hide()},update:function(){this.instance.$refs.container.toggleClass(\"fancybox-show-thumbs\",this.isVisible),this.isVisible?(this.$grid||this.create(),this.instance.trigger(\"onThumbsShow\"),this.focus()):this.$grid&&this.instance.trigger(\"onThumbsHide\"),this.instance.update()},hide:function(){this.isVisible=!1,this.update()},show:function(){this.isVisible=!0,this.update()},toggle:function(){this.isVisible=!this.isVisible,this.update()}}),e(t).on({\"onInit.fb\":function(t,e){e&&!e.Thumbs&&(e.Thumbs=new n(e))},\"beforeShow.fb\":function(t,e,n,o){var i=e&&e.Thumbs;if(i&&i.isActive){if(n.modal)return i.$button.hide(),void i.hide();o&&n.opts.thumbs.autoStart===!0&&i.show(),i.isVisible&&i.focus()}},\"afterKeydown.fb\":function(t,e,n,o,i){var a=e&&e.Thumbs;a&&a.isActive&&71===i&&(o.preventDefault(),a.toggle())},\"beforeClose.fb\":function(t,e){var n=e&&e.Thumbs;n&&n.isVisible&&e.opts.thumbs.hideOnClose!==!1&&n.close()}})}(document,window.jQuery),function(t,e,n){\"use strict\";function o(){var t=e.location.hash.substr(1),n=t.split(\"-\"),o=n.length>1&&/^\\+?\\d+$/.test(n[n.length-1])?parseInt(n.pop(-1),10)||1:1,i=n.join(\"-\");return o<1&&(o=1),{hash:t,index:o,gallery:i}}function i(t){var e;\"\"!==t.gallery&&(e=n(\"[data-fancybox='\"+n.escapeSelector(t.gallery)+\"']\").eq(t.index-1),e.length||(e=n(\"#\"+n.escapeSelector(t.gallery))),e.length&&(s=!1,e.trigger(\"click\")))}function a(t){var e;return!!t&&(e=t.current?t.current.opts:t.opts,e.hash||(e.$orig?e.$orig.data(\"fancybox\"):\"\"))}n.escapeSelector||(n.escapeSelector=function(t){var e=/([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g,n=function(t,e){return e?\"\\0\"===t?\"\uFFFD\":t.slice(0,-1)+\"\\\\\"+t.charCodeAt(t.length-1).toString(16)+\" \":\"\\\\\"+t};return(t+\"\").replace(e,n)});var s=!0,r=null,c=null;n(function(){setTimeout(function(){n.fancybox.defaults.hash!==!1&&(n(t).on({\"onInit.fb\":function(t,e){var n,i;e.group[e.currIndex].opts.hash!==!1&&(n=o(),i=a(e),i&&n.gallery&&i==n.gallery&&(e.currIndex=n.index-1))},\"beforeShow.fb\":function(n,o,i){var l;i&&i.opts.hash!==!1&&(l=a(o),l&&\"\"!==l&&(e.location.hash.indexOf(l)<0&&(o.opts.origHash=e.location.hash),r=l+(o.group.length>1?\"-\"+(i.index+1):\"\"),\"replaceState\"in e.history?(c&&clearTimeout(c),c=setTimeout(function(){e.history[s?\"pushState\":\"replaceState\"]({},t.title,e.location.pathname+e.location.search+\"#\"+r),c=null,s=!1},300)):e.location.hash=r))},\"beforeClose.fb\":function(o,i,s){var l,u;c&&clearTimeout(c),s.opts.hash!==!1&&(l=a(i),u=i&&i.opts.origHash?i.opts.origHash:\"\",l&&\"\"!==l&&(\"replaceState\"in history?e.history.replaceState({},t.title,e.location.pathname+e.location.search+u):(e.location.hash=u,n(e).scrollTop(i.scrollTop).scrollLeft(i.scrollLeft))),r=null)}}),n(e).on(\"hashchange.fb\",function(){var t=o();n.fancybox.getInstance()?!r||r===t.gallery+\"-\"+t.index||1===t.index&&r==t.gallery||(r=null,n.fancybox.close()):\"\"!==t.gallery&&i(t)}),i(o()))},50)})}(document,window,window.jQuery);", "document.addEventListener('DOMContentLoaded', function () {\n\n const resourceButton = document.querySelector('.btn-resource');\n\n if (resourceButton) {\n resourceButton.addEventListener('click', function () {\n\n document.getElementById('resource-personal-plan').innerHTML = `\n <div class=\"pix-content text-center pix_feature_std gray-dark-bg pix_orange_border\">\n <h3 class=\"pix-white secondary-font\"><strong>Personal</strong></h3>\n <p class=\"pix-black-gray-light pix-margin-bottom-10 secondary-font\">\n <strong>FOR RESOURCE</strong>\n </p>\n <h4><span class=\"label label-default pix-light-gray gray-6-bg\">$19.99/mo</span></h4>\n <p class=\"pix-black-gray-light pix-margin-bottom-10 big-line-height big-text\">\n 3 Landing Pages<br>10,000 Page views<br>Resource Support<br>-<br>-\n </p>\n <a href=\"#\" class=\"btn btn-md btn-round-lg orange-bg pix-white pix-margin-bottom-10 pix-margin-right-10 wide pix-margin-top-10 secondary-font\">\n <strong>Book a Call</strong>\n </a>\n </div>\n `;\n\n // Change content for Startup Plan\n document.getElementById('resource-startup-plan').innerHTML = `\n <div class=\"pix-content text-center pix_feature_std gray-dark-bg pix_orange_border\">\n <h3 class=\"pix-white secondary-font\"><strong>Startup</strong></h3>\n <p class=\"pix-orange pix-margin-bottom-10 secondary-font\">\n <strong>FOR RESOURCE</strong>\n </p>\n <h4><span class=\"label label-default pix-light-gray gray-6-bg\">$49.99/mo</span></h4>\n <p class=\"pix-black-gray-light pix-margin-bottom-10 big-line-height big-text\">\n 10 Landing Pages<br>20,000 Page views<br>Resource Support<br>Priority Support<br>-\n </p>\n <a href=\"#\" class=\"btn btn-md btn-round-lg orange-bg pix-white pix-margin-bottom-10 pix-margin-right-10 wide pix-margin-top-10 secondary-font\">\n <strong>Book a Call</strong>\n </a>\n </div>\n `;\n\n // Change content for Business Plan\n document.getElementById('resource-business-plan').innerHTML = `\n <div class=\"pix-content text-center pix_feature_std gray-dark-bg pix_orange_border\">\n <h3 class=\"pix-white secondary-font\"><strong>Business</strong></h3>\n <p class=\"pix-black-gray-light pix-margin-bottom-10 secondary-font\">\n <strong>FOR RESOURCE</strong>\n </p>\n <h4><span class=\"label label-default pix-light-gray gray-6-bg\">$99.99/mo</span></h4>\n <p class=\"pix-black-gray-light pix-margin-bottom-10 big-line-height big-text\">\n 50 Landing Pages<br>100,000 Page views<br>Resource Support<br>Premium Support<br>Free Updates\n </p>\n <a href=\"#\" class=\"btn btn-md btn-round-lg orange-bg pix-white pix-margin-bottom-10 pix-margin-right-10 wide pix-margin-top-10 secondary-font\">\n <strong>Book a Call</strong>\n </a>\n </div>\n `;\n });\n }\n\n\n const mvpButton = document.querySelector('.btn-mvp');\n\n if (mvpButton) {\n mvpButton.addEventListener('click', function () {\n\n document.getElementById('resource-personal-plan').innerHTML = `\n <div class=\"pix-content text-center pix_feature_std gray-dark-bg pix_orange_border\">\n <h3 class=\"pix-white secondary-font\"><strong>Personal</strong></h3>\n <p class=\"pix-black-gray-light pix-margin-bottom-10 secondary-font\">\n <strong>FOR MVP</strong>\n </p>\n <h4><span class=\"label label-default pix-light-gray gray-6-bg\">$19.99/mo</span></h4>\n <p class=\"pix-black-gray-light pix-margin-bottom-10 big-line-height big-text\">\n 3 Landing Pages<br>10,000 Page views<br>Resource Support<br>-<br>-\n </p>\n <a href=\"#\" class=\"btn btn-md btn-round-lg orange-bg pix-white pix-margin-bottom-10 pix-margin-right-10 wide pix-margin-top-10 secondary-font\">\n <strong>Book a Call</strong>\n </a>\n </div>\n `;\n\n // Change content for Startup Plan\n document.getElementById('resource-startup-plan').innerHTML = `\n <div class=\"pix-content text-center pix_feature_std gray-dark-bg pix_orange_border\">\n <h3 class=\"pix-white secondary-font\"><strong>Startup</strong></h3>\n <p class=\"pix-orange pix-margin-bottom-10 secondary-font\">\n <strong>FOR MVP</strong>\n </p>\n <h4><span class=\"label label-default pix-light-gray gray-6-bg\">$49.99/mo</span></h4>\n <p class=\"pix-black-gray-light pix-margin-bottom-10 big-line-height big-text\">\n 10 Landing Pages<br>20,000 Page views<br>Resource Support<br>Priority Support<br>-\n </p>\n <a href=\"#\" class=\"btn btn-md btn-round-lg orange-bg pix-white pix-margin-bottom-10 pix-margin-right-10 wide pix-margin-top-10 secondary-font\">\n <strong>Book a Call</strong>\n </a>\n </div>\n `;\n\n // Change content for Business Plan\n document.getElementById('resource-business-plan').innerHTML = `\n <div class=\"pix-content text-center pix_feature_std gray-dark-bg pix_orange_border\">\n <h3 class=\"pix-white secondary-font\"><strong>Business</strong></h3>\n <p class=\"pix-black-gray-light pix-margin-bottom-10 secondary-font\">\n <strong>FOR MVP</strong>\n </p>\n <h4><span class=\"label label-default pix-light-gray gray-6-bg\">$99.99/mo</span></h4>\n <p class=\"pix-black-gray-light pix-margin-bottom-10 big-line-height big-text\">\n 50 Landing Pages<br>100,000 Page views<br>Resource Support<br>Premium Support<br>Free Updates\n </p>\n <a href=\"#\" class=\"btn btn-md btn-round-lg orange-bg pix-white pix-margin-bottom-10 pix-margin-right-10 wide pix-margin-top-10 secondary-font\">\n <strong>Book a Call</strong>\n </a>\n </div>\n `;\n });\n }\n\n\n\n\n});\n"], "mappings": "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", "names": ["consumer", "data", "error", "state", "event", "consumer", "data", "consumer", "subscription", "a", "data", "exports", "module", "global", "window", "indexOf", "jQuery", "i", "options", "data", "fn", "support", "tokenize", "document", "docElem", "contains", "a", "hasOwn", "push", "slice", "rtrim", "rquickExpr", "Sizzle", "cache", "arr", "matches", "node", "tag", "start", "idx", "hash", "isXML", "elem", "self", "add", "state", "top", "el", "key", "value", "event", "left", "div", "name", "end", "prop", "index", "length", "max", "j", "error", "val", "_", "getWindow", "win", "offset", "method", "type", "define", "module", "exports", "o", "a", "e", "n", "require", "defaultOptions", "el", "options", "offset", "NAME", "b", "c", "d", "exports", "module", "e", "t", "r", "$", "a", "n", "o", "i", "s", "l", "u", "c", "m", "p", "b", "x", "f", "h", "v", "d", "y", "g", "S", "P", "V", "C", "A", "F", "E", "j", "H", "R", "O", "z", "exports", "module", "a", "t", "e", "$", "r", "n", "s", "o", "l", "c", "start", "submitter", "event", "fn", "config", "location", "anchor", "left", "right", "options", "error", "cookie", "morphChildren", "potentialMatch", "session", "visit", "state", "recentRequests", "document", "createConsumer", "data", "event", "event", "submitter", "event", "left", "right", "application", "error", "options", "property", "match", "oldValue", "left", "right", "error", "constructor", "module", "extend", "a", "application", "element", "read", "write", "event", "createPopper", "end", "start", "top", "top", "start", "end", "state", "name", "style", "property", "getComputedStyle", "getComputedStyle", "window", "min", "max", "toPaddingObject", "state", "options", "popperOffsets", "top", "min", "max", "offset", "effect", "win", "popper", "top", "getComputedStyle", "end", "state", "options", "effect", "state", "options", "window", "hash", "win", "win", "getComputedStyle", "getComputedStyle", "win", "clippingParents", "getComputedStyle", "reference", "top", "start", "end", "state", "options", "popperOffsets", "offset", "top", "state", "options", "placements", "placement", "a", "state", "options", "placements", "placement", "start", "top", "_loop", "_i", "checks", "top", "state", "offset", "top", "state", "options", "data", "state", "state", "options", "popperOffsets", "data", "top", "offset", "min", "max", "start", "debounce", "fn", "merged", "defaultModifiers", "defaultOptions", "createPopper", "reference", "popper", "options", "state", "fn", "debounce", "effect", "noopFn", "createPopper", "defaultModifiers", "createPopper", "elementMap", "Map", "set", "element", "key", "instance", "has", "instanceMap", "get", "size", "console", "error", "Array", "from", "keys", "remove", "delete", "MAX_UID", "MILLISECONDS_MULTIPLIER", "TRANSITION_END", "parseSelector", "selector", "window", "CSS", "escape", "replace", "match", "id", "toType", "object", "undefined", "Object", "prototype", "toString", "call", "toLowerCase", "getUID", "prefix", "Math", "floor", "random", "document", "getElementById", "getTransitionDurationFromElement", "transitionDuration", "transitionDelay", "getComputedStyle", "floatTransitionDuration", "Number", "parseFloat", "floatTransitionDelay", "split", "triggerTransitionEnd", "dispatchEvent", "Event", "isElement", "jquery", "nodeType", "getElement", "length", "querySelector", "isVisible", "getClientRects", "elementIsVisible", "getPropertyValue", "closedDetails", "closest", "summary", "parentNode", "isDisabled", "Node", "ELEMENT_NODE", "classList", "contains", "disabled", "hasAttribute", "getAttribute", "findShadowRoot", "documentElement", "attachShadow", "getRootNode", "root", "ShadowRoot", "noop", "reflow", "offsetHeight", "getjQuery", "jQuery", "body", "DOMContentLoadedCallbacks", "onDOMContentLoaded", "callback", "readyState", "addEventListener", "push", "isRTL", "dir", "defineJQueryPlugin", "plugin", "$", "name", "NAME", "JQUERY_NO_CONFLICT", "fn", "jQueryInterface", "Constructor", "noConflict", "execute", "possibleCallback", "args", "defaultValue", "executeAfterTransition", "transitionElement", "waitForTransition", "durationPadding", "emulatedDuration", "called", "handler", "target", "removeEventListener", "setTimeout", "getNextActiveElement", "list", "activeElement", "shouldGetNext", "isCycleAllowed", "listLength", "index", "indexOf", "max", "min", "namespaceRegex", "stripNameRegex", "stripUidRegex", "eventRegistry", "uidEvent", "customEvents", "mouseenter", "mouseleave", "nativeEvents", "Set", "makeEventUid", "uid", "getElementEvents", "bootstrapHandler", "event", "hydrateObj", "delegateTarget", "oneOff", "EventHandler", "off", "type", "apply", "bootstrapDelegationHandler", "domElements", "querySelectorAll", "domElement", "findHandler", "events", "callable", "delegationSelector", "values", "find", "normalizeParameters", "originalTypeEvent", "delegationFunction", "isDelegated", "typeEvent", "getTypeEvent", "addHandler", "wrapFunction", "relatedTarget", "handlers", "previousFunction", "removeHandler", "Boolean", "removeNamespacedHandlers", "namespace", "storeElementEvent", "handlerKey", "entries", "includes", "on", "one", "inNamespace", "isNamespace", "startsWith", "elementEvent", "slice", "keyHandlers", "trigger", "jQueryEvent", "bubbles", "nativeDispatch", "defaultPrevented", "isPropagationStopped", "isImmediatePropagationStopped", "isDefaultPrevented", "evt", "cancelable", "preventDefault", "obj", "meta", "value", "_unused", "defineProperty", "configurable", "normalizeData", "JSON", "parse", "decodeURIComponent", "normalizeDataKey", "chr", "Manipulator", "setDataAttribute", "setAttribute", "removeDataAttribute", "removeAttribute", "getDataAttributes", "attributes", "bsKeys", "dataset", "filter", "pureKey", "charAt", "getDataAttribute", "Config", "Default", "DefaultType", "Error", "_getConfig", "config", "_mergeConfigObj", "_configAfterMerge", "_typeCheckConfig", "jsonConfig", "constructor", "configTypes", "property", "expectedTypes", "valueType", "RegExp", "test", "TypeError", "toUpperCase", "VERSION", "BaseComponent", "_element", "_config", "Data", "DATA_KEY", "dispose", "EVENT_KEY", "propertyName", "getOwnPropertyNames", "_queueCallback", "isAnimated", "getInstance", "getOrCreateInstance", "eventName", "getSelector", "hrefAttribute", "trim", "map", "sel", "join", "SelectorEngine", "concat", "Element", "findOne", "children", "child", "matches", "parents", "ancestor", "prev", "previous", "previousElementSibling", "next", "nextElementSibling", "focusableChildren", "focusables", "el", "getSelectorFromElement", "getElementFromSelector", "getMultipleElementsFromSelector", "enableDismissTrigger", "component", "method", "clickEvent", "tagName", "EVENT_CLOSE", "EVENT_CLOSED", "CLASS_NAME_FADE", "CLASS_NAME_SHOW", "Alert", "close", "closeEvent", "_destroyElement", "each", "data", "DATA_API_KEY", "CLASS_NAME_ACTIVE", "SELECTOR_DATA_TOGGLE", "EVENT_CLICK_DATA_API", "Button", "toggle", "button", "EVENT_TOUCHSTART", "EVENT_TOUCHMOVE", "EVENT_TOUCHEND", "EVENT_POINTERDOWN", "EVENT_POINTERUP", "POINTER_TYPE_TOUCH", "POINTER_TYPE_PEN", "CLASS_NAME_POINTER_EVENT", "SWIPE_THRESHOLD", "endCallback", "leftCallback", "rightCallback", "Swipe", "isSupported", "_deltaX", "_supportPointerEvents", "PointerEvent", "_initEvents", "_start", "touches", "clientX", "_eventIsPointerPenTouch", "_end", "_handleSwipe", "_move", "absDeltaX", "abs", "direction", "add", "pointerType", "navigator", "maxTouchPoints", "ARROW_LEFT_KEY", "ARROW_RIGHT_KEY", "TOUCHEVENT_COMPAT_WAIT", "ORDER_NEXT", "ORDER_PREV", "DIRECTION_LEFT", "DIRECTION_RIGHT", "EVENT_SLIDE", "EVENT_SLID", "EVENT_KEYDOWN", "EVENT_MOUSEENTER", "EVENT_MOUSELEAVE", "EVENT_DRAG_START", "EVENT_LOAD_DATA_API", "CLASS_NAME_CAROUSEL", "CLASS_NAME_SLIDE", "CLASS_NAME_END", "CLASS_NAME_START", "CLASS_NAME_NEXT", "CLASS_NAME_PREV", "SELECTOR_ACTIVE", "SELECTOR_ITEM", "SELECTOR_ACTIVE_ITEM", "SELECTOR_ITEM_IMG", "SELECTOR_INDICATORS", "SELECTOR_DATA_SLIDE", "SELECTOR_DATA_RIDE", "KEY_TO_DIRECTION", "interval", "keyboard", "pause", "ride", "touch", "wrap", "Carousel", "_interval", "_activeElement", "_isSliding", "touchTimeout", "_swipeHelper", "_indicatorsElement", "_addEventListeners", "cycle", "_slide", "nextWhenVisible", "hidden", "_clearInterval", "_updateInterval", "setInterval", "_maybeEnableCycle", "to", "items", "_getItems", "activeIndex", "_getItemIndex", "_getActive", "order", "defaultInterval", "_keydown", "_addTouchEventListeners", "img", "endCallBack", "clearTimeout", "swipeConfig", "_directionToOrder", "_setActiveIndicatorElement", "activeIndicator", "newActiveIndicator", "elementInterval", "parseInt", "isNext", "nextElement", "nextElementIndex", "triggerEvent", "_orderToDirection", "slideEvent", "isCycling", "directionalClassName", "orderClassName", "completeCallBack", "_isAnimated", "clearInterval", "carousel", "slideIndex", "carousels", "EVENT_SHOW", "EVENT_SHOWN", "EVENT_HIDE", "EVENT_HIDDEN", "CLASS_NAME_COLLAPSE", "CLASS_NAME_COLLAPSING", "CLASS_NAME_COLLAPSED", "CLASS_NAME_DEEPER_CHILDREN", "CLASS_NAME_HORIZONTAL", "WIDTH", "HEIGHT", "SELECTOR_ACTIVES", "parent", "Collapse", "_isTransitioning", "_triggerArray", "toggleList", "elem", "filterElement", "foundElement", "_initializeChildren", "_addAriaAndCollapsedClass", "_isShown", "hide", "show", "activeChildren", "_getFirstLevelChildren", "startEvent", "activeInstance", "dimension", "_getDimension", "style", "complete", "capitalizedDimension", "scrollSize", "getBoundingClientRect", "selected", "triggerArray", "isOpen", "ESCAPE_KEY", "TAB_KEY", "ARROW_UP_KEY", "ARROW_DOWN_KEY", "RIGHT_MOUSE_BUTTON", "EVENT_KEYDOWN_DATA_API", "EVENT_KEYUP_DATA_API", "CLASS_NAME_DROPUP", "CLASS_NAME_DROPEND", "CLASS_NAME_DROPSTART", "CLASS_NAME_DROPUP_CENTER", "CLASS_NAME_DROPDOWN_CENTER", "SELECTOR_DATA_TOGGLE_SHOWN", "SELECTOR_MENU", "SELECTOR_NAVBAR", "SELECTOR_NAVBAR_NAV", "SELECTOR_VISIBLE_ITEMS", "PLACEMENT_TOP", "PLACEMENT_TOPEND", "PLACEMENT_BOTTOM", "PLACEMENT_BOTTOMEND", "PLACEMENT_RIGHT", "PLACEMENT_LEFT", "PLACEMENT_TOPCENTER", "PLACEMENT_BOTTOMCENTER", "autoClose", "boundary", "display", "offset", "popperConfig", "reference", "Dropdown", "_popper", "_parent", "_menu", "_inNavbar", "_detectNavbar", "showEvent", "_createPopper", "focus", "_completeHide", "destroy", "update", "hideEvent", "Popper", "referenceElement", "_getPopperConfig", "createPopper", "_getPlacement", "parentDropdown", "isEnd", "_getOffset", "popperData", "defaultBsPopperConfig", "placement", "modifiers", "options", "enabled", "_selectMenuItem", "clearMenus", "openToggles", "context", "composedPath", "isMenuTarget", "dataApiKeydownHandler", "isInput", "isEscapeEvent", "isUpOrDownEvent", "getToggleButton", "stopPropagation", "EVENT_MOUSEDOWN", "className", "clickCallback", "rootElement", "Backdrop", "_isAppended", "_append", "_getElement", "_emulateAnimation", "backdrop", "createElement", "append", "EVENT_FOCUSIN", "EVENT_KEYDOWN_TAB", "TAB_NAV_FORWARD", "TAB_NAV_BACKWARD", "autofocus", "trapElement", "FocusTrap", "_isActive", "_lastTabNavDirection", "activate", "_handleFocusin", "_handleKeydown", "deactivate", "elements", "shiftKey", "SELECTOR_FIXED_CONTENT", "SELECTOR_STICKY_CONTENT", "PROPERTY_PADDING", "PROPERTY_MARGIN", "ScrollBarHelper", "getWidth", "documentWidth", "clientWidth", "innerWidth", "width", "_disableOverFlow", "_setElementAttributes", "calculatedValue", "reset", "_resetElementAttributes", "isOverflowing", "_saveInitialAttribute", "overflow", "styleProperty", "scrollbarWidth", "manipulationCallBack", "setProperty", "_applyManipulationCallback", "actualValue", "removeProperty", "callBack", "EVENT_HIDE_PREVENTED", "EVENT_RESIZE", "EVENT_CLICK_DISMISS", "EVENT_MOUSEDOWN_DISMISS", "EVENT_KEYDOWN_DISMISS", "CLASS_NAME_OPEN", "CLASS_NAME_STATIC", "OPEN_SELECTOR", "SELECTOR_DIALOG", "SELECTOR_MODAL_BODY", "Modal", "_dialog", "_backdrop", "_initializeBackDrop", "_focustrap", "_initializeFocusTrap", "_scrollBar", "_adjustDialog", "_showElement", "_hideModal", "handleUpdate", "scrollTop", "modalBody", "transitionComplete", "_triggerBackdropTransition", "event2", "_resetAdjustments", "isModalOverflowing", "scrollHeight", "clientHeight", "initialOverflowY", "overflowY", "isBodyOverflowing", "paddingLeft", "paddingRight", "alreadyOpen", "CLASS_NAME_SHOWING", "CLASS_NAME_HIDING", "CLASS_NAME_BACKDROP", "scroll", "Offcanvas", "blur", "completeCallback", "position", "ARIA_ATTRIBUTE_PATTERN", "DefaultAllowlist", "a", "area", "b", "br", "col", "code", "dd", "div", "dl", "dt", "em", "hr", "h1", "h2", "h3", "h4", "h5", "h6", "i", "li", "ol", "p", "pre", "s", "small", "span", "sub", "sup", "strong", "u", "ul", "uriAttributes", "SAFE_URL_PATTERN", "allowedAttribute", "attribute", "allowedAttributeList", "attributeName", "nodeName", "nodeValue", "attributeRegex", "some", "regex", "sanitizeHtml", "unsafeHtml", "allowList", "sanitizeFunction", "domParser", "DOMParser", "createdDocument", "parseFromString", "elementName", "attributeList", "allowedAttributes", "innerHTML", "content", "extraClass", "html", "sanitize", "sanitizeFn", "template", "DefaultContentType", "entry", "TemplateFactory", "getContent", "_resolvePossibleFunction", "hasContent", "changeContent", "_checkContent", "toHtml", "templateWrapper", "_maybeSanitize", "text", "_setContent", "arg", "templateElement", "_putElementInTemplate", "textContent", "DISALLOWED_ATTRIBUTES", "CLASS_NAME_MODAL", "SELECTOR_TOOLTIP_INNER", "SELECTOR_MODAL", "EVENT_MODAL_HIDE", "TRIGGER_HOVER", "TRIGGER_FOCUS", "TRIGGER_CLICK", "TRIGGER_MANUAL", "EVENT_INSERTED", "EVENT_CLICK", "EVENT_FOCUSOUT", "AttachmentMap", "AUTO", "TOP", "RIGHT", "BOTTOM", "LEFT", "animation", "container", "customClass", "delay", "fallbackPlacements", "title", "Tooltip", "_isEnabled", "_timeout", "_isHovered", "_activeTrigger", "_templateFactory", "_newContent", "tip", "_setListeners", "_fixTitle", "enable", "disable", "toggleEnabled", "click", "_leave", "_enter", "_hideModalHandler", "_disposePopper", "_isWithContent", "shadowRoot", "isInTheDom", "ownerDocument", "_getTipElement", "_isWithActiveTrigger", "_getTitle", "_createTipElement", "_getContentForTemplate", "_getTemplateFactory", "tipId", "setContent", "_initializeOnDelegatedTarget", "_getDelegateConfig", "attachment", "phase", "state", "triggers", "eventIn", "eventOut", "_setTimeout", "timeout", "dataAttributes", "dataAttribute", "SELECTOR_TITLE", "SELECTOR_CONTENT", "Popover", "_getContent", "EVENT_ACTIVATE", "CLASS_NAME_DROPDOWN_ITEM", "SELECTOR_DATA_SPY", "SELECTOR_TARGET_LINKS", "SELECTOR_NAV_LIST_GROUP", "SELECTOR_NAV_LINKS", "SELECTOR_NAV_ITEMS", "SELECTOR_LIST_ITEMS", "SELECTOR_LINK_ITEMS", "SELECTOR_DROPDOWN", "SELECTOR_DROPDOWN_TOGGLE", "rootMargin", "smoothScroll", "threshold", "ScrollSpy", "_targetLinks", "_observableSections", "_rootElement", "_activeTarget", "_observer", "_previousScrollData", "visibleEntryTop", "parentScrollTop", "refresh", "_initializeTargetsAndObservables", "_maybeEnableSmoothScroll", "disconnect", "_getNewObserver", "section", "observe", "observableSection", "hash", "height", "offsetTop", "scrollTo", "top", "behavior", "IntersectionObserver", "_observerCallback", "targetElement", "_process", "userScrollsDown", "isIntersecting", "_clearActiveClass", "entryIsLowerThanPrevious", "targetLinks", "anchor", "decodeURI", "_activateParents", "listGroup", "item", "activeNodes", "node", "spy", "HOME_KEY", "END_KEY", "CLASS_DROPDOWN", "SELECTOR_DROPDOWN_MENU", "NOT_SELECTOR_DROPDOWN_TOGGLE", "SELECTOR_TAB_PANEL", "SELECTOR_OUTER", "SELECTOR_INNER", "SELECTOR_INNER_ELEM", "SELECTOR_DATA_TOGGLE_ACTIVE", "Tab", "_setInitialAttributes", "_getChildren", "innerElem", "_elemIsActive", "active", "_getActiveElem", "_deactivate", "_activate", "relatedElem", "_toggleDropDown", "nextActiveElement", "preventScroll", "_setAttributeIfNotExists", "_setInitialAttributesOnChild", "_getInnerElement", "isActive", "outerElem", "_getOuterElement", "_setInitialAttributesOnTargetPanel", "open", "EVENT_MOUSEOVER", "EVENT_MOUSEOUT", "CLASS_NAME_HIDE", "autohide", "Toast", "_hasMouseInteraction", "_hasKeyboardInteraction", "_clearTimeout", "_maybeScheduleHide", "isShown", "_onInteraction", "isInteracting", "$", "el", "Alert", "data", "Button", "options", "state", "Carousel", "Collapse", "Dropdown", "Modal", "e", "Tooltip", "self", "offset", "Popover", "ScrollSpy", "a", "Tab", "n", "e", "t", "s", "o", "a", "$", "position", "uuid", "fn", "eventType", "event", "module", "options", "data", "max", "round", "property", "within", "left", "right", "top", "bottom", "offset", "now", "menu", "isDisabled", "isRTL", "a", "date", "controls", "year", "document", "error", "draggable", "sortable", "min", "el", "i", "axis", "wrapper", "start", "isVisible", "reference", "droppable", "jQuery", "undefined", "color", "cache", "_", "end", "add", "hook", "effect", "mode", "hide", "idx", "anchor", "hash", "tooltip", "t", "e", "o", "i", "a", "s", "r", "n", "c", "l", "u", "d", "h", "f", "$"] }