{"version":3,"file":"shared-p03RpzFS.js","sources":["../../../vendor/assets/javascripts/jquery-1.8.2.js","../../../vendor/assets/javascripts/bootstrap.js"],"sourcesContent":["/*!\n * jQuery JavaScript Library v1.8.2\n * http://jquery.com/\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n *\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: Thu Sep 20 2012 21:13:05 GMT-0400 (Eastern Daylight Time)\n */\n(function( window, undefined ) {\nvar\n\t// A central reference to the root jQuery(document)\n\trootjQuery,\n\n\t// The deferred used on DOM ready\n\treadyList,\n\n\t// Use the correct document accordingly with window argument (sandbox)\n\tdocument = window.document,\n\tlocation = window.location,\n\tnavigator = window.navigator,\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$,\n\n\t// Save a reference to some core methods\n\tcore_push = Array.prototype.push,\n\tcore_slice = Array.prototype.slice,\n\tcore_indexOf = Array.prototype.indexOf,\n\tcore_toString = Object.prototype.toString,\n\tcore_hasOwn = Object.prototype.hasOwnProperty,\n\tcore_trim = String.prototype.trim,\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\treturn new jQuery.fn.init( selector, context, rootjQuery );\n\t},\n\n\t// Used for matching numbers\n\tcore_pnum = /[\\-+]?(?:\\d*\\.|)\\d+(?:[eE][\\-+]?\\d+|)/.source,\n\n\t// Used for detecting and trimming whitespace\n\tcore_rnotwhite = /\\S/,\n\tcore_rspace = /\\s+/,\n\n\t// Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE)\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (#9521)\n\trquickExpr = /^(?:[^#<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]*)$)/,\n\n\t// Match a standalone tag\n\trsingleTag = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/,\n\n\t// JSON RegExp\n\trvalidchars = /^[\\],:{}\\s]*$/,\n\trvalidbraces = /(?:^|:|,)(?:\\s*\\[)+/g,\n\trvalidescape = /\\\\(?:[\"\\\\\\/bfnrt]|u[\\da-fA-F]{4})/g,\n\trvalidtokens = /\"[^\"\\\\\\r\\n]*\"|true|false|null|-?(?:\\d\\d*\\.|)\\d+(?:[eE][\\-+]?\\d+|)/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\n\t// The ready event handler and self cleanup method\n\tDOMContentLoaded = function() {\n\t\tif ( document.addEventListener ) {\n\t\t\tdocument.removeEventListener( 'DOMContentLoaded', DOMContentLoaded, false );\n\t\t\tjQuery.ready();\n\t\t} else if ( document.readyState === 'complete' ) {\n\t\t\t// we're here because readyState === \"complete\" in oldIE\n\t\t\t// which is good enough for us to call the dom ready!\n\t\t\tdocument.detachEvent( 'onreadystatechange', DOMContentLoaded );\n\t\t\tjQuery.ready();\n\t\t}\n\t},\n\n\t// [[Class]] -> type pairs\n\tclass2type = {};\n\njQuery.fn = jQuery.prototype = {\n\tconstructor: jQuery,\n\tinit: function( selector, context, rootjQuery ) {\n\t\tvar match, elem, ret, doc;\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 $(DOMElement)\n\t\tif ( selector.nodeType ) {\n\t\t\tthis.context = this[0] = selector;\n\t\t\tthis.length = 1;\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\t\t\t\t\tdoc = ( context && context.nodeType ? context.ownerDocument || context : document );\n\n\t\t\t\t\t// scripts is true for back-compat\n\t\t\t\t\tselector = jQuery.parseHTML( match[1], doc, true );\n\t\t\t\t\tif ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tthis.attr.call( selector, context, true );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.merge( this, selector );\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: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn rootjQuery.ready( selector );\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\t// Start with an empty selector\n\tselector: '',\n\n\t// The current version of jQuery being used\n\tjquery: '1.8.2',\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\t// The number of elements contained in the matched element set\n\tsize: function() {\n\t\treturn this.length;\n\t},\n\n\ttoArray: function() {\n\t\treturn core_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 a 'clean' array\n\t\t\tthis.toArray() :\n\n\t\t\t// Return just the object\n\t\t\t( num < 0 ? this[ this.length + num ] : this[ num ] );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems, name, selector ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\tret.context = this.context;\n\n\t\tif ( name === 'find' ) {\n\t\t\tret.selector = this.selector + ( this.selector ? ' ' : '' ) + selector;\n\t\t} else if ( name ) {\n\t\t\tret.selector = this.selector + '.' + name + '(' + selector + ')';\n\t\t}\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\tready: function( fn ) {\n\t\t// Add the callback\n\t\tjQuery.ready.promise().done( fn );\n\n\t\treturn this;\n\t},\n\n\teq: function( i ) {\n\t\ti = +i;\n\t\treturn i === -1 ?\n\t\t\tthis.slice( i ) :\n\t\t\tthis.slice( i, i + 1 );\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\tslice: function() {\n\t\treturn this.pushStack( core_slice.apply( this, arguments ),\n\t\t\t'slice', core_slice.call(arguments).join(',') );\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\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: core_push,\n\tsort: [].sort,\n\tsplice: [].splice\n};\n\n// Give the init function the jQuery prototype for later instantiation\njQuery.fn.init.prototype = jQuery.fn;\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[0] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === 'boolean' ) {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\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 ( length === i ) {\n\t\ttarget = this;\n\t\t--i;\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\tnoConflict: function( deep ) {\n\t\tif ( window.$ === jQuery ) {\n\t\t\twindow.$ = _$;\n\t\t}\n\n\t\tif ( deep && window.jQuery === jQuery ) {\n\t\t\twindow.jQuery = _jQuery;\n\t\t}\n\n\t\treturn jQuery;\n\t},\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// 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, 1 );\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.trigger ) {\n\t\t\tjQuery( document ).trigger('ready').off('ready');\n\t\t}\n\t},\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\treturn obj != null && obj == obj.window;\n\t},\n\n\tisNumeric: function( obj ) {\n\t\treturn !isNaN( parseFloat(obj) ) && isFinite( obj );\n\t},\n\n\ttype: function( obj ) {\n\t\treturn obj == null ?\n\t\t\tString( obj ) :\n\t\t\tclass2type[ core_toString.call(obj) ] || 'object';\n\t},\n\n\tisPlainObject: function( obj ) {\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!core_hasOwn.call(obj, 'constructor') &&\n\t\t\t\t!core_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// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\n\t\tvar key;\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || core_hasOwn.call( obj, key );\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\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\t// data: string of html\n\t// context (optional): If specified, the fragment will be created in this context, defaults to document\n\t// scripts (optional): If true, will include scripts passed in the html string\n\tparseHTML: function( data, context, scripts ) {\n\t\tvar parsed;\n\t\tif ( !data || typeof data !== 'string' ) {\n\t\t\treturn null;\n\t\t}\n\t\tif ( typeof context === 'boolean' ) {\n\t\t\tscripts = context;\n\t\t\tcontext = 0;\n\t\t}\n\t\tcontext = context || document;\n\n\t\t// Single tag\n\t\tif ( (parsed = rsingleTag.exec( data )) ) {\n\t\t\treturn [ context.createElement( parsed[1] ) ];\n\t\t}\n\n\t\tparsed = jQuery.buildFragment( [ data ], context, scripts ? null : [] );\n\t\treturn jQuery.merge( [],\n\t\t\t(parsed.cacheable ? jQuery.clone( parsed.fragment ) : parsed.fragment).childNodes );\n\t},\n\n\tparseJSON: function( data ) {\n\t\tif ( !data || typeof data !== 'string') {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Make sure leading/trailing whitespace is removed (IE can't handle it)\n\t\tdata = jQuery.trim( data );\n\n\t\t// Attempt to parse using the native JSON parser first\n\t\tif ( window.JSON && window.JSON.parse ) {\n\t\t\treturn window.JSON.parse( data );\n\t\t}\n\n\t\t// Make sure the incoming data is actual JSON\n\t\t// Logic borrowed from http://json.org/json2.js\n\t\tif ( rvalidchars.test( data.replace( rvalidescape, '@' )\n\t\t\t.replace( rvalidtokens, ']' )\n\t\t\t.replace( rvalidbraces, '')) ) {\n\n\t\t\treturn ( new Function( 'return ' + data ) )();\n\n\t\t}\n\t\tjQuery.error( 'Invalid JSON: ' + data );\n\t},\n\n\t// Cross-browser xml parsing\n\tparseXML: function( data ) {\n\t\tvar xml, tmp;\n\t\tif ( !data || typeof data !== 'string' ) {\n\t\t\treturn null;\n\t\t}\n\t\ttry {\n\t\t\tif ( window.DOMParser ) { // Standard\n\t\t\t\ttmp = new DOMParser();\n\t\t\t\txml = tmp.parseFromString( data , 'text/xml' );\n\t\t\t} else { // IE\n\t\t\t\txml = new ActiveXObject( 'Microsoft.XMLDOM' );\n\t\t\t\txml.async = 'false';\n\t\t\t\txml.loadXML( data );\n\t\t\t}\n\t\t} catch( e ) {\n\t\t\txml = undefined;\n\t\t}\n\t\tif ( !xml || !xml.documentElement || xml.getElementsByTagName( 'parsererror' ).length ) {\n\t\t\tjQuery.error( 'Invalid XML: ' + data );\n\t\t}\n\t\treturn xml;\n\t},\n\n\tnoop: function() {},\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 && core_rnotwhite.test( 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 name,\n\t\t\ti = 0,\n\t\t\tlength = obj.length,\n\t\t\tisObj = length === undefined || jQuery.isFunction( obj );\n\n\t\tif ( args ) {\n\t\t\tif ( isObj ) {\n\t\t\t\tfor ( name in obj ) {\n\t\t\t\t\tif ( callback.apply( obj[ name ], args ) === 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 < length; ) {\n\t\t\t\t\tif ( callback.apply( obj[ i++ ], args ) === 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 ( isObj ) {\n\t\t\t\tfor ( name in obj ) {\n\t\t\t\t\tif ( callback.call( obj[ name ], name, obj[ name ] ) === 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 < length; ) {\n\t\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i++ ] ) === 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// Use native String.trim function wherever possible\n\ttrim: core_trim && !core_trim.call('\\uFEFF\\xA0') ?\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t'' :\n\t\t\t\tcore_trim.call( text );\n\t\t} :\n\n\t\t// Otherwise use our own trimming functionality\n\t\tfunction( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t'' :\n\t\t\t\t( text + '' ).replace( rtrim, '' );\n\t\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar type,\n\t\t\tret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\t// The window, strings (and functions) also have 'length'\n\t\t\t// Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930\n\t\t\ttype = jQuery.type( arr );\n\n\t\t\tif ( arr.length == null || type === 'string' || type === 'function' || type === 'regexp' || jQuery.isWindow( arr ) ) {\n\t\t\t\tcore_push.call( ret, arr );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( 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 ( core_indexOf ) {\n\t\t\t\treturn core_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 l = second.length,\n\t\t\ti = first.length,\n\t\t\tj = 0;\n\n\t\tif ( typeof l === 'number' ) {\n\t\t\tfor ( ; j < l; j++ ) {\n\t\t\t\tfirst[ i++ ] = second[ j ];\n\t\t\t}\n\n\t\t} else {\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, inv ) {\n\t\tvar retVal,\n\t\t\tret = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length;\n\t\tinv = !!inv;\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\tretVal = !!callback( elems[ i ], i );\n\t\t\tif ( inv !== retVal ) {\n\t\t\t\tret.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar value, key,\n\t\t\tret = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\t// jquery objects are treated as arrays\n\t\t\tisArray = elems instanceof jQuery || length !== undefined && typeof length === 'number' && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ;\n\n\t\t// Go through the array, translating each of the items to their\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[ ret.length ] = 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 ( key in elems ) {\n\t\t\t\tvalue = callback( elems[ key ], key, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret[ ret.length ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn ret.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 tmp, args, proxy;\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 = core_slice.call( arguments, 2 );\n\t\tproxy = function() {\n\t\t\treturn fn.apply( context, args.concat( core_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\t// Multifunctional method to get and set values of a collection\n\t// The value/s can optionally be executed if it's a function\n\taccess: function( elems, fn, key, value, chainable, emptyGet, pass ) {\n\t\tvar exec,\n\t\t\tbulk = key == null,\n\t\t\ti = 0,\n\t\t\tlength = elems.length;\n\n\t\t// Sets many values\n\t\tif ( key && typeof key === 'object' ) {\n\t\t\tfor ( i in key ) {\n\t\t\t\tjQuery.access( elems, fn, i, key[i], 1, emptyGet, value );\n\t\t\t}\n\t\t\tchainable = 1;\n\n\t\t// Sets one value\n\t\t} else if ( value !== undefined ) {\n\t\t\t// Optionally, function values get executed if exec is true\n\t\t\texec = pass === undefined && jQuery.isFunction( value );\n\n\t\t\tif ( bulk ) {\n\t\t\t\t// Bulk operations only iterate when executing function values\n\t\t\t\tif ( exec ) {\n\t\t\t\t\texec = fn;\n\t\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\t\treturn exec.call( jQuery( elem ), value );\n\t\t\t\t\t};\n\n\t\t\t\t// Otherwise they run against the entire set\n\t\t\t\t} else {\n\t\t\t\t\tfn.call( elems, value );\n\t\t\t\t\tfn = null;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( fn ) {\n\t\t\t\tfor (; i < length; i++ ) {\n\t\t\t\t\tfn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tchainable = 1;\n\t\t}\n\n\t\treturn chainable ?\n\t\t\telems :\n\n\t\t\t// Gets\n\t\t\tbulk ?\n\t\t\t\tfn.call( elems ) :\n\t\t\t\tlength ? fn( elems[0], key ) : emptyGet;\n\t},\n\n\tnow: function() {\n\t\treturn ( new Date() ).getTime();\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, 1 );\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', DOMContentLoaded, false );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( 'load', jQuery.ready, 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', DOMContentLoaded );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.attachEvent( 'onload', jQuery.ready );\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// 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// Populate the class2type map\njQuery.each('Boolean Number String Function Array Date RegExp Object'.split(' '), function(i, name) {\n\tclass2type[ '[object ' + name + ']' ] = name.toLowerCase();\n});\n\n// All jQuery objects should point back to these\nrootjQuery = jQuery(document);\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.split( core_rspace ), 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 // 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// Flag to know if list is currently firing\n\t\tfiring,\n\t\t// First callback to fire (used internally by add and fireWith)\n\t\tfiringStart,\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// 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' && ( !options.unique || !self.has( arg ) ) ) {\n\t\t\t\t\t\t\t\tlist.push( arg );\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// Control if a given callback is in the list\n\t\t\thas: function( fn ) {\n\t\t\t\treturn jQuery.inArray( fn, list ) > -1;\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\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\targs = args || [];\n\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\tif ( list && ( !fired || stack ) ) {\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};\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 action = tuple[ 0 ],\n\t\t\t\t\t\t\t\tfn = 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] ]( jQuery.isFunction( fn ) ?\n\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\tvar returned = fn.apply( this, arguments );\n\t\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject )\n\t\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify );\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tnewDefer[ action + 'With' ]( this === deferred ? newDefer : this, [ returned ] );\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\tnewDefer[ action ]\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 ] = list.fire\n\t\t\tdeferred[ tuple[0] ] = list.fire;\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 = core_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 ? core_slice.call( arguments ) : value;\n\t\t\t\t\tif( values === progressValues ) {\n\t\t\t\t\t\tdeferred.notifyWith( contexts, values );\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});\njQuery.support = (function() {\n\n\tvar support,\n\t\tall,\n\t\ta,\n\t\tselect,\n\t\topt,\n\t\tinput,\n\t\tfragment,\n\t\teventName,\n\t\ti,\n\t\tisSupported,\n\t\tclickFn,\n\t\tdiv = document.createElement('div');\n\n\t// Preliminary tests\n\tdiv.setAttribute( 'className', 't' );\n\tdiv.innerHTML = '
a';\n\n\tall = div.getElementsByTagName('*');\n\ta = div.getElementsByTagName('a')[ 0 ];\n\ta.style.cssText = 'top:1px;float:left;opacity:.5';\n\n\t// Can't get basic test support\n\tif ( !all || !all.length ) {\n\t\treturn {};\n\t}\n\n\t// First batch of supports tests\n\tselect = document.createElement('select');\n\topt = select.appendChild( document.createElement('option') );\n\tinput = div.getElementsByTagName('input')[ 0 ];\n\n\tsupport = {\n\t\t// IE strips leading whitespace when .innerHTML is used\n\t\tleadingWhitespace: ( div.firstChild.nodeType === 3 ),\n\n\t\t// Make sure that tbody elements aren't automatically inserted\n\t\t// IE will insert them into empty tables\n\t\ttbody: !div.getElementsByTagName('tbody').length,\n\n\t\t// Make sure that link elements get serialized correctly by innerHTML\n\t\t// This requires a wrapper element in IE\n\t\thtmlSerialize: !!div.getElementsByTagName('link').length,\n\n\t\t// Get the style information from getAttribute\n\t\t// (IE uses .cssText instead)\n\t\tstyle: /top/.test( a.getAttribute('style') ),\n\n\t\t// Make sure that URLs aren't manipulated\n\t\t// (IE normalizes it by default)\n\t\threfNormalized: ( a.getAttribute('href') === '/a' ),\n\n\t\t// Make sure that element opacity exists\n\t\t// (IE uses filter instead)\n\t\t// Use a regex to work around a WebKit issue. See #5145\n\t\topacity: /^0.5/.test( a.style.opacity ),\n\n\t\t// Verify style float existence\n\t\t// (IE uses styleFloat instead of cssFloat)\n\t\tcssFloat: !!a.style.cssFloat,\n\n\t\t// Make sure that if no value is specified for a checkbox\n\t\t// that it defaults to \"on\".\n\t\t// (WebKit defaults to \"\" instead)\n\t\tcheckOn: ( input.value === 'on' ),\n\n\t\t// Make sure that a selected-by-default option has a working selected property.\n\t\t// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)\n\t\toptSelected: opt.selected,\n\n\t\t// Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)\n\t\tgetSetAttribute: div.className !== 't',\n\n\t\t// Tests for enctype support on a form(#6743)\n\t\tenctype: !!document.createElement('form').enctype,\n\n\t\t// Makes sure cloning an html5 element does not cause problems\n\t\t// Where outerHTML is undefined, this still works\n\t\thtml5Clone: document.createElement('nav').cloneNode( true ).outerHTML !== '<:nav>',\n\n\t\t// jQuery.support.boxModel DEPRECATED in 1.8 since we don't support Quirks Mode\n\t\tboxModel: ( document.compatMode === 'CSS1Compat' ),\n\n\t\t// Will be defined later\n\t\tsubmitBubbles: true,\n\t\tchangeBubbles: true,\n\t\tfocusinBubbles: false,\n\t\tdeleteExpando: true,\n\t\tnoCloneEvent: true,\n\t\tinlineBlockNeedsLayout: false,\n\t\tshrinkWrapBlocks: false,\n\t\treliableMarginRight: true,\n\t\tboxSizingReliable: true,\n\t\tpixelPosition: false\n\t};\n\n\t// Make sure checked status is properly cloned\n\tinput.checked = true;\n\tsupport.noCloneChecked = input.cloneNode( true ).checked;\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// Test to see if it's possible to delete an expando from an element\n\t// Fails in Internet Explorer\n\ttry {\n\t\tdelete div.test;\n\t} catch( e ) {\n\t\tsupport.deleteExpando = false;\n\t}\n\n\tif ( !div.addEventListener && div.attachEvent && div.fireEvent ) {\n\t\tdiv.attachEvent( 'onclick', clickFn = function() {\n\t\t\t// Cloning a node shouldn't copy over any\n\t\t\t// bound event handlers (IE does this)\n\t\t\tsupport.noCloneEvent = false;\n\t\t});\n\t\tdiv.cloneNode( true ).fireEvent('onclick');\n\t\tdiv.detachEvent( 'onclick', clickFn );\n\t}\n\n\t// Check if a radio maintains its value\n\t// after being appended to the DOM\n\tinput = document.createElement('input');\n\tinput.value = 't';\n\tinput.setAttribute( 'type', 'radio' );\n\tsupport.radioValue = input.value === 't';\n\n\tinput.setAttribute( 'checked', 'checked' );\n\n\t// #11217 - WebKit loses check when the name is after the checked attribute\n\tinput.setAttribute( 'name', 't' );\n\n\tdiv.appendChild( input );\n\tfragment = document.createDocumentFragment();\n\tfragment.appendChild( div.lastChild );\n\n\t// WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;\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\tsupport.appendChecked = input.checked;\n\n\tfragment.removeChild( input );\n\tfragment.appendChild( div );\n\n\t// Technique from Juriy Zaytsev\n\t// http://perfectionkills.com/detecting-event-support-without-browser-sniffing/\n\t// We only care about the case where non-standard event systems\n\t// are used, namely in IE. Short-circuiting here helps us to\n\t// avoid an eval call (in setAttribute) which can cause CSP\n\t// to go haywire. See: https://developer.mozilla.org/en/Security/CSP\n\tif ( div.attachEvent ) {\n\t\tfor ( i in {\n\t\t\tsubmit: true,\n\t\t\tchange: true,\n\t\t\tfocusin: true\n\t\t}) {\n\t\t\teventName = 'on' + i;\n\t\t\tisSupported = ( eventName in div );\n\t\t\tif ( !isSupported ) {\n\t\t\t\tdiv.setAttribute( eventName, 'return;' );\n\t\t\t\tisSupported = ( typeof div[ eventName ] === 'function' );\n\t\t\t}\n\t\t\tsupport[ i + 'Bubbles' ] = isSupported;\n\t\t}\n\t}\n\n\t// Run tests that need a body at doc ready\n\tjQuery(function() {\n\t\tvar container, div, tds, marginDiv,\n\t\t\tdivReset = 'padding:0;margin:0;border:0;display:block;overflow:hidden;',\n\t\t\tbody = document.getElementsByTagName('body')[0];\n\n\t\tif ( !body ) {\n\t\t\t// Return for frameset docs that don't have a body\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer = document.createElement('div');\n\t\tcontainer.style.cssText = 'visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px';\n\t\tbody.insertBefore( container, body.firstChild );\n\n\t\t// Construct the test element\n\t\tdiv = document.createElement('div');\n\t\tcontainer.appendChild( div );\n\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\t// (only IE 8 fails this test)\n\t\tdiv.innerHTML = '
t
';\n\t\ttds = div.getElementsByTagName('td');\n\t\ttds[ 0 ].style.cssText = 'padding:0;margin:0;border:0;display:none';\n\t\tisSupported = ( tds[ 0 ].offsetHeight === 0 );\n\n\t\ttds[ 0 ].style.display = '';\n\t\ttds[ 1 ].style.display = 'none';\n\n\t\t// Check if empty table cells still have offsetWidth/Height\n\t\t// (IE <= 8 fail this test)\n\t\tsupport.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );\n\n\t\t// Check box-sizing and margin behavior\n\t\tdiv.innerHTML = '';\n\t\tdiv.style.cssText = 'box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;';\n\t\tsupport.boxSizing = ( div.offsetWidth === 4 );\n\t\tsupport.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== 1 );\n\n\t\t// NOTE: To any future maintainer, we've window.getComputedStyle\n\t\t// because jsdom on node.js will break without it.\n\t\tif ( window.getComputedStyle ) {\n\t\t\tsupport.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== '1%';\n\t\t\tsupport.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: '4px' } ).width === '4px';\n\n\t\t\t// Check if div with explicit width and no margin-right incorrectly\n\t\t\t// gets computed margin-right based on width of container. For more\n\t\t\t// info see bug #3333\n\t\t\t// Fails in WebKit before Feb 2011 nightlies\n\t\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\t\tmarginDiv = document.createElement('div');\n\t\t\tmarginDiv.style.cssText = div.style.cssText = divReset;\n\t\t\tmarginDiv.style.marginRight = marginDiv.style.width = '0';\n\t\t\tdiv.style.width = '1px';\n\t\t\tdiv.appendChild( marginDiv );\n\t\t\tsupport.reliableMarginRight =\n\t\t\t\t!parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight );\n\t\t}\n\n\t\tif ( typeof div.style.zoom !== 'undefined' ) {\n\t\t\t// Check if natively block-level elements act like inline-block\n\t\t\t// elements when setting their display to 'inline' and giving\n\t\t\t// them layout\n\t\t\t// (IE < 8 does this)\n\t\t\tdiv.innerHTML = '';\n\t\t\tdiv.style.cssText = divReset + 'width:1px;padding:1px;display:inline;zoom:1';\n\t\t\tsupport.inlineBlockNeedsLayout = ( div.offsetWidth === 3 );\n\n\t\t\t// Check if elements with layout shrink-wrap their children\n\t\t\t// (IE 6 does this)\n\t\t\tdiv.style.display = 'block';\n\t\t\tdiv.style.overflow = 'visible';\n\t\t\tdiv.innerHTML = '
';\n\t\t\tdiv.firstChild.style.width = '5px';\n\t\t\tsupport.shrinkWrapBlocks = ( div.offsetWidth !== 3 );\n\n\t\t\tcontainer.style.zoom = 1;\n\t\t}\n\n\t\t// Null elements to avoid leaks in IE\n\t\tbody.removeChild( container );\n\t\tcontainer = div = tds = marginDiv = null;\n\t});\n\n\t// Null elements to avoid leaks in IE\n\tfragment.removeChild( div );\n\tall = a = select = opt = input = fragment = div = null;\n\n\treturn support;\n})();\nvar rbrace = /(?:\\{[\\s\\S]*\\}|\\[[\\s\\S]*\\])$/,\n\trmultiDash = /([A-Z])/g;\n\njQuery.extend({\n\tcache: {},\n\n\tdeletedIds: [],\n\n\t// Remove at next major release (1.9/2.0)\n\tuuid: 0,\n\n\t// Unique for each copy of jQuery on the page\n\t// Non-digits removed to match rinlinejQuery\n\texpando: 'jQuery' + ( jQuery.fn.jquery + Math.random() ).replace( /\\D/g, '' ),\n\n\t// The following elements throw uncatchable exceptions if you\n\t// attempt to add expando properties to them.\n\tnoData: {\n\t\t'embed': true,\n\t\t// Ban all objects except for Flash (which handle expandos)\n\t\t'object': 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000',\n\t\t'applet': true\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, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar thisCache, ret,\n\t\t\tinternalKey = jQuery.expando,\n\t\t\tgetByName = typeof name === 'string',\n\n\t\t\t// We have to handle DOM nodes and JS objects differently because IE6-7\n\t\t\t// can't GC object references properly across the DOM-JS boundary\n\t\t\tisNode = elem.nodeType,\n\n\t\t\t// Only DOM nodes need the global jQuery cache; JS object data is\n\t\t\t// attached directly to the object so GC can occur automatically\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t\t// Only defining an ID for JS objects if its cache already exists allows\n\t\t\t// the code to shortcut on the same path as a DOM node with no cache\n\t\t\tid = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey;\n\n\t\t// Avoid doing any more work than we need to when trying to get data on an\n\t\t// object that has no data at all\n\t\tif ( (!id || !cache[id] || (!pvt && !cache[id].data)) && getByName && data === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !id ) {\n\t\t\t// Only DOM nodes need a new unique ID for each element since their data\n\t\t\t// ends up in the global cache\n\t\t\tif ( isNode ) {\n\t\t\t\telem[ internalKey ] = id = jQuery.deletedIds.pop() || jQuery.guid++;\n\t\t\t} else {\n\t\t\t\tid = internalKey;\n\t\t\t}\n\t\t}\n\n\t\tif ( !cache[ id ] ) {\n\t\t\tcache[ id ] = {};\n\n\t\t\t// Avoids exposing jQuery metadata on plain JS objects when the object\n\t\t\t// is serialized using JSON.stringify\n\t\t\tif ( !isNode ) {\n\t\t\t\tcache[ id ].toJSON = jQuery.noop;\n\t\t\t}\n\t\t}\n\n\t\t// An object can be passed to jQuery.data instead of a key/value pair; this gets\n\t\t// shallow copied over onto the existing cache\n\t\tif ( typeof name === 'object' || typeof name === 'function' ) {\n\t\t\tif ( pvt ) {\n\t\t\t\tcache[ id ] = jQuery.extend( cache[ id ], name );\n\t\t\t} else {\n\t\t\t\tcache[ id ].data = jQuery.extend( cache[ id ].data, name );\n\t\t\t}\n\t\t}\n\n\t\tthisCache = cache[ id ];\n\n\t\t// jQuery data() is stored in a separate object inside the object's internal data\n\t\t// cache in order to avoid key collisions between internal data and user-defined\n\t\t// data.\n\t\tif ( !pvt ) {\n\t\t\tif ( !thisCache.data ) {\n\t\t\t\tthisCache.data = {};\n\t\t\t}\n\n\t\t\tthisCache = thisCache.data;\n\t\t}\n\n\t\tif ( data !== undefined ) {\n\t\t\tthisCache[ jQuery.camelCase( name ) ] = data;\n\t\t}\n\n\t\t// Check for both converted-to-camel and non-converted data property names\n\t\t// If a data property was specified\n\t\tif ( getByName ) {\n\n\t\t\t// First Try to find as-is property data\n\t\t\tret = thisCache[ name ];\n\n\t\t\t// Test for null|undefined property data\n\t\t\tif ( ret == null ) {\n\n\t\t\t\t// Try to find the camelCased property\n\t\t\t\tret = thisCache[ jQuery.camelCase( name ) ];\n\t\t\t}\n\t\t} else {\n\t\t\tret = thisCache;\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tremoveData: function( elem, name, pvt /* Internal Use Only */ ) {\n\t\tif ( !jQuery.acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar thisCache, i, l,\n\n\t\t\tisNode = elem.nodeType,\n\n\t\t\t// See jQuery.data for more information\n\t\t\tcache = isNode ? jQuery.cache : elem,\n\t\t\tid = isNode ? elem[ jQuery.expando ] : jQuery.expando;\n\n\t\t// If there is already no cache entry for this object, there is no\n\t\t// purpose in continuing\n\t\tif ( !cache[ id ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( name ) {\n\n\t\t\tthisCache = pvt ? cache[ id ] : cache[ id ].data;\n\n\t\t\tif ( thisCache ) {\n\n\t\t\t\t// Support array or space separated string names for data keys\n\t\t\t\tif ( !jQuery.isArray( name ) ) {\n\n\t\t\t\t\t// try the string as a key before any manipulation\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\n\t\t\t\t\t\t// split the camel cased version by spaces unless a key with the spaces exists\n\t\t\t\t\t\tname = jQuery.camelCase( name );\n\t\t\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\t\t\tname = [ name ];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tname = name.split(' ');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfor ( i = 0, l = name.length; i < l; i++ ) {\n\t\t\t\t\tdelete thisCache[ name[i] ];\n\t\t\t\t}\n\n\t\t\t\t// If there is no data left in the cache, we want to continue\n\t\t\t\t// and let the cache object itself get destroyed\n\t\t\t\tif ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// See jQuery.data for more information\n\t\tif ( !pvt ) {\n\t\t\tdelete cache[ id ].data;\n\n\t\t\t// Don't destroy the parent cache unless the internal data object\n\t\t\t// had been the only thing left in it\n\t\t\tif ( !isEmptyDataObject( cache[ id ] ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// Destroy the cache\n\t\tif ( isNode ) {\n\t\t\tjQuery.cleanData( [ elem ], true );\n\n\t\t// Use delete when supported for expandos or `cache` is not a window per isWindow (#10080)\n\t\t} else if ( jQuery.support.deleteExpando || cache != cache.window ) {\n\t\t\tdelete cache[ id ];\n\n\t\t// When all else fails, null\n\t\t} else {\n\t\t\tcache[ id ] = null;\n\t\t}\n\t},\n\n\t// For internal use only.\n\t_data: function( elem, name, data ) {\n\t\treturn jQuery.data( elem, name, data, true );\n\t},\n\n\t// A method for determining if a DOM node can handle the data expando\n\tacceptData: function( elem ) {\n\t\tvar noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ];\n\n\t\t// nodes accept data unless otherwise specified; rejection can be conditional\n\t\treturn !noData || noData !== true && elem.getAttribute('classid') === noData;\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ) {\n\t\tvar parts, part, attr, name, l,\n\t\t\telem = this[0],\n\t\t\ti = 0,\n\t\t\tdata = null;\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\tattr = elem.attributes;\n\t\t\t\t\tfor ( l = attr.length; i < l; i++ ) {\n\t\t\t\t\t\tname = attr[i].name;\n\n\t\t\t\t\t\tif ( !name.indexOf( 'data-' ) ) {\n\t\t\t\t\t\t\tname = jQuery.camelCase( name.substring(5) );\n\n\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\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\tparts = key.split( '.', 2 );\n\t\tparts[1] = parts[1] ? '.' + parts[1] : '';\n\t\tpart = parts[1] + '!';\n\n\t\treturn jQuery.access( this, function( value ) {\n\n\t\t\tif ( value === undefined ) {\n\t\t\t\tdata = this.triggerHandler( 'getData' + part, [ parts[0] ] );\n\n\t\t\t\t// Try to fetch any internally stored data first\n\t\t\t\tif ( data === undefined && elem ) {\n\t\t\t\t\tdata = jQuery.data( elem, key );\n\t\t\t\t\tdata = dataAttr( elem, key, data );\n\t\t\t\t}\n\n\t\t\t\treturn data === undefined && parts[1] ?\n\t\t\t\t\tthis.data( parts[0] ) :\n\t\t\t\t\tdata;\n\t\t\t}\n\n\t\t\tparts[1] = value;\n\t\t\tthis.each(function() {\n\t\t\t\tvar self = jQuery( this );\n\n\t\t\t\tself.triggerHandler( 'setData' + part, parts );\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t\tself.triggerHandler( 'changeData' + part, parts );\n\t\t\t});\n\t\t}, null, value, arguments.length > 1, null, false );\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\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\tdata === 'false' ? false :\n\t\t\t\tdata === 'null' ? null :\n\t\t\t\t// Only convert to a number if it doesn't change the string\n\t\t\t\t+data + '' === data ? +data :\n\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}\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', true );\n\t\t\t\tjQuery.removeData( elem, key, true );\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\t// Based off of the plugin by Clint Helfers, with permission.\n\t// http://blindsignals.com/index.php/2009/07/jquery-delay/\n\tdelay: function( time, type ) {\n\t\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\t\ttype = type || 'fx';\n\n\t\treturn this.queue( type, function( next, hooks ) {\n\t\t\tvar timeout = setTimeout( next, time );\n\t\t\thooks.stop = function() {\n\t\t\t\tclearTimeout( timeout );\n\t\t\t};\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 nodeHook, boolHook, fixSpecified,\n\trclass = /[\\t\\r\\n]/g,\n\trreturn = /\\r/g,\n\trtype = /^(?:button|input)$/i,\n\trfocusable = /^(?:button|input|object|select|textarea)$/i,\n\trclickable = /^a(?:rea|)$/i,\n\trboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,\n\tgetSetAttribute = jQuery.support.getSetAttribute;\n\njQuery.fn.extend({\n\tattr: function( name, value ) {\n\t\treturn jQuery.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\tprop: function( name, value ) {\n\t\treturn jQuery.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\taddClass: function( value ) {\n\t\tvar classNames, i, l, elem,\n\t\t\tsetClass, c, cl;\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 ( value && typeof value === 'string' ) {\n\t\t\tclassNames = value.split( core_rspace );\n\n\t\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\telem = this[ i ];\n\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\tif ( !elem.className && classNames.length === 1 ) {\n\t\t\t\t\t\telem.className = value;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsetClass = ' ' + elem.className + ' ';\n\n\t\t\t\t\t\tfor ( c = 0, cl = classNames.length; c < cl; c++ ) {\n\t\t\t\t\t\t\tif ( setClass.indexOf( ' ' + classNames[ c ] + ' ' ) < 0 ) {\n\t\t\t\t\t\t\t\tsetClass += classNames[ c ] + ' ';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telem.className = jQuery.trim( setClass );\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 removes, className, elem, c, cl, i, l;\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 ( (value && typeof value === 'string') || value === undefined ) {\n\t\t\tremoves = ( value || '' ).split( core_rspace );\n\n\t\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\t\telem = this[ i ];\n\t\t\t\tif ( elem.nodeType === 1 && elem.className ) {\n\n\t\t\t\t\tclassName = (' ' + elem.className + ' ').replace( rclass, ' ' );\n\n\t\t\t\t\t// loop over each item in the removal list\n\t\t\t\t\tfor ( c = 0, cl = removes.length; c < cl; c++ ) {\n\t\t\t\t\t\t// Remove until there is nothing to remove,\n\t\t\t\t\t\twhile ( className.indexOf(' ' + removes[ c ] + ' ') >= 0 ) {\n\t\t\t\t\t\t\tclassName = className.replace( ' ' + removes[ c ] + ' ' , ' ' );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telem.className = value ? jQuery.trim( className ) : '';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisBool = typeof stateVal === 'boolean';\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\tstate = stateVal,\n\t\t\t\t\tclassNames = value.split( core_rspace );\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\tstate = isBool ? state : !self.hasClass( className );\n\t\t\t\t\tself[ state ? 'addClass' : 'removeClass' ]( className );\n\t\t\t\t}\n\n\t\t\t} else if ( type === 'undefined' || 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// toggle whole className\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\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\t\t\t\tself = jQuery(this);\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, self.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\t// attributes.value is undefined in Blackberry 4.7 but\n\t\t\t\t// uses .value. See #6932\n\t\t\t\tvar val = elem.attributes.value;\n\t\t\t\treturn !val || val.specified ? elem.value : elem.text;\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, i, max, option,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tvalues = [],\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tone = elem.type === 'select-one';\n\n\t\t\t\t// Nothing was selected\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\ti = one ? index : 0;\n\t\t\t\tmax = one ? index + 1 : options.length;\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\tif ( option.selected && (jQuery.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\t// Fixes Bug #2551 -- select.val() broken in IE after form.reset()\n\t\t\t\tif ( one && !values.length && options.length ) {\n\t\t\t\t\treturn jQuery( options[ index ] ).val();\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 values = jQuery.makeArray( value );\n\n\t\t\t\tjQuery(elem).find('option').each(function() {\n\t\t\t\t\tthis.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;\n\t\t\t\t});\n\n\t\t\t\tif ( !values.length ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t},\n\n\t// Unused in 1.8, left in so attrFn-stabbers won't die; remove in 1.9\n\tattrFn: {},\n\n\tattr: function( elem, name, value, pass ) {\n\t\tvar ret, hooks, notxml,\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\tif ( pass && jQuery.isFunction( jQuery.fn[ name ] ) ) {\n\t\t\treturn jQuery( elem )[ name ]( value );\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === 'undefined' ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\tnotxml = nType !== 1 || !jQuery.isXMLDoc( elem );\n\n\t\t// All attributes are lowercase\n\t\t// Grab necessary hook if one is defined\n\t\tif ( notxml ) {\n\t\t\tname = name.toLowerCase();\n\t\t\thooks = jQuery.attrHooks[ name ] || ( rboolean.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\t\t\t\treturn;\n\n\t\t\t} else if ( hooks && 'set' in hooks && notxml && (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 && notxml && (ret = hooks.get( elem, name )) !== null ) {\n\t\t\treturn ret;\n\n\t\t} else {\n\n\t\t\tret = elem.getAttribute( 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 propName, attrNames, name, isBool,\n\t\t\ti = 0;\n\n\t\tif ( value && elem.nodeType === 1 ) {\n\n\t\t\tattrNames = value.split( core_rspace );\n\n\t\t\tfor ( ; i < attrNames.length; i++ ) {\n\t\t\t\tname = attrNames[ i ];\n\n\t\t\t\tif ( name ) {\n\t\t\t\t\tpropName = jQuery.propFix[ name ] || name;\n\t\t\t\t\tisBool = rboolean.test( name );\n\n\t\t\t\t\t// See #9699 for explanation of this approach (setting first, then removal)\n\t\t\t\t\t// Do not do this for boolean attributes (see #10870)\n\t\t\t\t\tif ( !isBool ) {\n\t\t\t\t\t\tjQuery.attr( elem, name, '' );\n\t\t\t\t\t}\n\t\t\t\t\telem.removeAttribute( getSetAttribute ? name : propName );\n\n\t\t\t\t\t// Set corresponding property to false for boolean attributes\n\t\t\t\t\tif ( isBool && propName in elem ) {\n\t\t\t\t\t\telem[ propName ] = false;\n\t\t\t\t\t}\n\t\t\t\t}\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\t// We can't allow the type property to be changed (since it causes problems in IE)\n\t\t\t\tif ( rtype.test( elem.nodeName ) && elem.parentNode ) {\n\t\t\t\t\tjQuery.error( 'type property can\\'t be changed' );\n\t\t\t\t} else if ( !jQuery.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 it's default in case type is set after value\n\t\t\t\t\t// This is for element 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\t// Use the value property for back compat\n\t\t// Use the nodeHook for button elements in IE6/7 (#1954)\n\t\tvalue: {\n\t\t\tget: function( elem, name ) {\n\t\t\t\tif ( nodeHook && jQuery.nodeName( elem, 'button' ) ) {\n\t\t\t\t\treturn nodeHook.get( elem, name );\n\t\t\t\t}\n\t\t\t\treturn name in elem ?\n\t\t\t\t\telem.value :\n\t\t\t\t\tnull;\n\t\t\t},\n\t\t\tset: function( elem, value, name ) {\n\t\t\t\tif ( nodeHook && jQuery.nodeName( elem, 'button' ) ) {\n\t\t\t\t\treturn nodeHook.set( elem, value, name );\n\t\t\t\t}\n\t\t\t\t// Does not return so that setAttribute is also used\n\t\t\t\telem.value = value;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\ttabindex: 'tabIndex',\n\t\treadonly: 'readOnly',\n\t\t'for': 'htmlFor',\n\t\t'class': 'className',\n\t\tmaxlength: 'maxLength',\n\t\tcellspacing: 'cellSpacing',\n\t\tcellpadding: 'cellPadding',\n\t\trowspan: 'rowSpan',\n\t\tcolspan: 'colSpan',\n\t\tusemap: 'useMap',\n\t\tframeborder: 'frameBorder',\n\t\tcontenteditable: 'contentEditable'\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\tif ( 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\treturn ( elem[ name ] = value );\n\t\t\t}\n\n\t\t} else {\n\t\t\tif ( hooks && 'get' in hooks && (ret = hooks.get( elem, name )) !== null ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\treturn elem[ name ];\n\t\t\t}\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\tvar attributeNode = elem.getAttributeNode('tabindex');\n\n\t\t\t\treturn attributeNode && attributeNode.specified ?\n\t\t\t\t\tparseInt( attributeNode.value, 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\tundefined;\n\t\t\t}\n\t\t}\n\t}\n});\n\n// Hook for boolean attributes\nboolHook = {\n\tget: function( elem, name ) {\n\t\t// Align boolean attributes with corresponding properties\n\t\t// Fall back to attribute presence where some booleans are not supported\n\t\tvar attrNode,\n\t\t\tproperty = jQuery.prop( elem, name );\n\t\treturn property === true || typeof property !== 'boolean' && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ?\n\t\t\tname.toLowerCase() :\n\t\t\tundefined;\n\t},\n\tset: function( elem, value, name ) {\n\t\tvar propName;\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 {\n\t\t\t// value is true since we know at this point it's type boolean and not false\n\t\t\t// Set boolean attributes to the same name and set the DOM property\n\t\t\tpropName = jQuery.propFix[ name ] || name;\n\t\t\tif ( propName in elem ) {\n\t\t\t\t// Only set the IDL specifically if it already exists on the element\n\t\t\t\telem[ propName ] = true;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, name.toLowerCase() );\n\t\t}\n\t\treturn name;\n\t}\n};\n\n// IE6/7 do not support getting/setting some attributes with get/setAttribute\nif ( !getSetAttribute ) {\n\n\tfixSpecified = {\n\t\tname: true,\n\t\tid: true,\n\t\tcoords: true\n\t};\n\n\t// Use this for any attribute in IE6/7\n\t// This fixes almost every IE6/7 issue\n\tnodeHook = jQuery.valHooks.button = {\n\t\tget: function( elem, name ) {\n\t\t\tvar ret;\n\t\t\tret = elem.getAttributeNode( name );\n\t\t\treturn ret && ( fixSpecified[ name ] ? ret.value !== '' : ret.specified ) ?\n\t\t\t\tret.value :\n\t\t\t\tundefined;\n\t\t},\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\tret = document.createAttribute( name );\n\t\t\t\telem.setAttributeNode( ret );\n\t\t\t}\n\t\t\treturn ( ret.value = value + '' );\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 ] = jQuery.extend( jQuery.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\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\tget: nodeHook.get,\n\t\tset: function( elem, value, name ) {\n\t\t\tif ( value === '' ) {\n\t\t\t\tvalue = 'false';\n\t\t\t}\n\t\t\tnodeHook.set( elem, value, name );\n\t\t}\n\t};\n}\n\n\n// Some attributes require a special call on IE\nif ( !jQuery.support.hrefNormalized ) {\n\tjQuery.each([ 'href', 'src', 'width', 'height' ], function( i, name ) {\n\t\tjQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar ret = elem.getAttribute( name, 2 );\n\t\t\t\treturn ret === null ? undefined : ret;\n\t\t\t}\n\t\t});\n\t});\n}\n\nif ( !jQuery.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// Normalize to lowercase since IE uppercases css property names\n\t\t\treturn elem.style.cssText.toLowerCase() || 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// Safari mis-reports the default selected property of an option\n// Accessing the parent's selectedIndex property fixes it\nif ( !jQuery.support.optSelected ) {\n\tjQuery.propHooks.selected = jQuery.extend( jQuery.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\n// IE6/7 call enctype encoding\nif ( !jQuery.support.enctype ) {\n\tjQuery.propFix.enctype = 'encoding';\n}\n\n// Radios and checkboxes getter/setter\nif ( !jQuery.support.checkOn ) {\n\tjQuery.each([ 'radio', 'checkbox' ], function() {\n\t\tjQuery.valHooks[ this ] = {\n\t\t\tget: function( elem ) {\n\t\t\t\t// Handle the case where in Webkit \"\" is returned instead of \"on\" if a value isn't specified\n\t\t\t\treturn elem.getAttribute('value') === null ? 'on' : elem.value;\n\t\t\t}\n\t\t};\n\t});\n}\njQuery.each([ 'radio', 'checkbox' ], function() {\n\tjQuery.valHooks[ this ] = jQuery.extend( jQuery.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});\nvar rformElems = /^(?:textarea|input|select)$/i,\n\trtypenamespace = /^([^\\.]*|)(?:\\.(.+)|)$/,\n\trhoverHack = /(?:^|\\s)hover(\\.\\S+|)\\b/,\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|contextmenu)|click/,\n\trfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\thoverHack = function( events ) {\n\t\treturn jQuery.event.special.hover ? events : events.replace( rhoverHack, 'mouseenter$1 mouseleave$1' );\n\t};\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\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar elemData, eventHandle, events,\n\t\t\tt, tns, type, namespaces, handleObj,\n\t\t\thandleObjIn, handlers, special;\n\n\t\t// Don't attach events to noData or text/comment nodes (allow plain objects tho)\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// 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\tevents = elemData.events;\n\t\tif ( !events ) {\n\t\t\telemData.events = events = {};\n\t\t}\n\t\teventHandle = elemData.handle;\n\t\tif ( !eventHandle ) {\n\t\t\telemData.handle = eventHandle = 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 !== 'undefined' && (!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\t// jQuery(...).bind(\"mouseover mouseout\", fn);\n\t\ttypes = jQuery.trim( hoverHack(types) ).split( ' ' );\n\t\tfor ( t = 0; t < types.length; t++ ) {\n\n\t\t\ttns = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = tns[1];\n\t\t\tnamespaces = ( tns[2] || '' ).split( '.' ).sort();\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: tns[1],\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\thandlers = events[ type ];\n\t\t\tif ( !handlers ) {\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\tglobal: {},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar t, tns, type, origType, namespaces, origCount,\n\t\t\tj, events, special, eventType, handleObj,\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 = jQuery.trim( hoverHack( types || '' ) ).split(' ');\n\t\tfor ( t = 0; t < types.length; t++ ) {\n\t\t\ttns = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = origType = tns[1];\n\t\t\tnamespaces = tns[2];\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\teventType = events[ type ] || [];\n\t\t\torigCount = eventType.length;\n\t\t\tnamespaces = namespaces ? new RegExp('(^|\\\\.)' + namespaces.split('.').sort().join('\\\\.(?:.*\\\\.|)') + '(\\\\.|$)') : null;\n\n\t\t\t// Remove matching events\n\t\t\tfor ( j = 0; j < eventType.length; j++ ) {\n\t\t\t\thandleObj = eventType[ 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 ( !namespaces || namespaces.test( handleObj.namespace ) ) &&\n\t\t\t\t\t ( !selector || selector === handleObj.selector || selector === '**' && handleObj.selector ) ) {\n\t\t\t\t\teventType.splice( j--, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\teventType.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 ( eventType.length === 0 && origCount !== eventType.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', true );\n\t\t}\n\t},\n\n\t// Events that are safe to short-circuit if no handlers are attached.\n\t// Native DOM events should not be added, they may have inline handlers.\n\tcustomEvent: {\n\t\t'getData': true,\n\t\t'setData': true,\n\t\t'changeData': true\n\t},\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Event object or event type\n\t\tvar cache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType,\n\t\t\ttype = event.type || event,\n\t\t\tnamespaces = [];\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// Exclusive events trigger only for the exact event (no namespaces)\n\t\t\ttype = type.slice(0, -1);\n\t\t\texclusive = true;\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\n\t\tif ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) {\n\t\t\t// No jQuery handlers for this event type, and it can't have inline handlers\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an Event, Object, or just an event type string\n\t\tevent = typeof event === 'object' ?\n\t\t\t// jQuery.Event object\n\t\t\tevent[ jQuery.expando ] ? event :\n\t\t\t// Object literal\n\t\t\tnew jQuery.Event( type, event ) :\n\t\t\t// Just the event type (string)\n\t\t\tnew jQuery.Event( type );\n\n\t\tevent.type = type;\n\t\tevent.isTrigger = true;\n\t\tevent.exclusive = exclusive;\n\t\tevent.namespace = namespaces.join( '.' );\n\t\tevent.namespace_re = event.namespace? new RegExp('(^|\\\\.)' + namespaces.join('\\\\.(?:.*\\\\.|)') + '(\\\\.|$)') : null;\n\t\tontype = type.indexOf( ':' ) < 0 ? 'on' + type : '';\n\n\t\t// Handle a global trigger\n\t\tif ( !elem ) {\n\n\t\t\t// TODO: Stop taunting the data cache; remove global events and always attach to document\n\t\t\tcache = jQuery.cache;\n\t\t\tfor ( i in cache ) {\n\t\t\t\tif ( cache[ i ].events && cache[ i ].events[ type ] ) {\n\t\t\t\t\tjQuery.event.trigger( event, data, cache[ i ].handle.elem, true );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn;\n\t\t}\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 ? jQuery.makeArray( data ) : [];\n\t\tdata.unshift( event );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( 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\teventPath = [[ elem, special.bindType || type ]];\n\t\tif ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tcur = rfocusMorph.test( bubbleType + type ) ? elem : elem.parentNode;\n\t\t\tfor ( old = elem; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push([ cur, bubbleType ]);\n\t\t\t\told = 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 ( old === (elem.ownerDocument || document) ) {\n\t\t\t\teventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]);\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\tfor ( i = 0; i < eventPath.length && !event.isPropagationStopped(); i++ ) {\n\n\t\t\tcur = eventPath[i][0];\n\t\t\tevent.type = eventPath[i][1];\n\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\t\t\t// Note that this is a bare JS function and not a jQuery handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) {\n\t\t\t\tevent.preventDefault();\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( elem.ownerDocument, data ) === false) &&\n\t\t\t\t!(type === 'click' && jQuery.nodeName( elem, 'a' )) && jQuery.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\t// IE<9 dies on focus/blur to hidden element (#1486)\n\t\t\t\tif ( ontype && elem[ type ] && ((type !== 'focus' && type !== 'blur') || event.target.offsetWidth !== 0) && !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\told = elem[ ontype ];\n\n\t\t\t\t\tif ( old ) {\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\telem[ type ]();\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( old ) {\n\t\t\t\t\t\telem[ ontype ] = old;\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 || window.event );\n\n\t\tvar i, j, cur, ret, selMatch, matched, matches, handleObj, sel, related,\n\t\t\thandlers = ( (jQuery._data( this, 'events' ) || {} )[ event.type ] || []),\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\targs = core_slice.call( arguments ),\n\t\t\trun_all = !event.exclusive && !event.namespace,\n\t\t\tspecial = jQuery.event.special[ event.type ] || {},\n\t\t\thandlerQueue = [];\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 that should run if there are delegated events\n\t\t// Avoid non-left-click bubbling in Firefox (#3861)\n\t\tif ( delegateCount && !(event.button && event.type === 'click') ) {\n\n\t\t\tfor ( cur = event.target; cur != this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't process clicks (ONLY) on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.disabled !== true || event.type !== 'click' ) {\n\t\t\t\t\tselMatch = {};\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\t\t\t\t\t\tsel = handleObj.selector;\n\n\t\t\t\t\t\tif ( selMatch[ sel ] === undefined ) {\n\t\t\t\t\t\t\tselMatch[ 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 ( selMatch[ 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, matches: 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 ( handlers.length > delegateCount ) {\n\t\t\thandlerQueue.push({ elem: this, matches: handlers.slice( delegateCount ) });\n\t\t}\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\tfor ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) {\n\t\t\tmatched = handlerQueue[ i ];\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tfor ( j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++ ) {\n\t\t\t\thandleObj = matched.matches[ j ];\n\n\t\t\t\t// Triggered event must either 1) be non-exclusive and 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 ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.data = handleObj.data;\n\t\t\t\t\tevent.handleObj = handleObj;\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\tevent.result = ret;\n\t\t\t\t\t\tif ( 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\t// Includes some event props shared by KeyEvent and MouseEvent\n\t// *** attrChange attrName relatedNode srcElement are not normalized, non-W3C, deprecated, will be removed in 1.8 ***\n\tprops: 'attrChange attrName relatedNode srcElement 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 eventDoc, doc, body,\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\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,\n\t\t\toriginalEvent = event,\n\t\t\tfixHook = jQuery.event.fixHooks[ event.type ] || {},\n\t\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\n\n\t\tevent = jQuery.Event( originalEvent );\n\n\t\tfor ( i = copy.length; i; ) {\n\t\t\tprop = copy[ --i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Fix target property, if necessary (#1925, IE 6/7/8 & Safari2)\n\t\tif ( !event.target ) {\n\t\t\tevent.target = originalEvent.srcElement || document;\n\t\t}\n\n\t\t// Target should not be a text node (#504, Safari)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\t// For mouse/key events, metaKey==false if it's undefined (#3368, #11328; IE6/7/8)\n\t\tevent.metaKey = !!event.metaKey;\n\n\t\treturn fixHook.filter? fixHook.filter( event, originalEvent ) : event;\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\n\t\tfocus: {\n\t\t\tdelegateType: 'focusin'\n\t\t},\n\t\tblur: {\n\t\t\tdelegateType: 'focusout'\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tsetup: function( data, namespaces, eventHandle ) {\n\t\t\t\t// We only want to do this special case on windows\n\t\t\t\tif ( jQuery.isWindow( this ) ) {\n\t\t\t\t\tthis.onbeforeunload = eventHandle;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tteardown: function( namespaces, eventHandle ) {\n\t\t\t\tif ( this.onbeforeunload === eventHandle ) {\n\t\t\t\t\tthis.onbeforeunload = null;\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{ type: 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\n// Some plugins are using, but it's undocumented/deprecated and will be removed.\n// The 1.7 special event interface should provide all the hooks needed now.\njQuery.event.handle = jQuery.event.dispatch;\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 ] === 'undefined' ) {\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 || src.returnValue === false ||\n\t\t\tsrc.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;\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\nfunction returnFalse() {\n\treturn false;\n}\nfunction returnTrue() {\n\treturn 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\tpreventDefault: function() {\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tvar e = this.originalEvent;\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// otherwise set the returnValue property of the original event to false (IE)\n\t\t} else {\n\t\t\te.returnValue = false;\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tvar e = this.originalEvent;\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\t\t// otherwise set the cancelBubble property of the original event to true (IE)\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation: function() {\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\t\tthis.stopPropagation();\n\t},\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse\n};\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\njQuery.each({\n\tmouseenter: 'mouseover',\n\tmouseleave: 'mouseout'\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\t\t\t\tselector = handleObj.selector;\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 ( !jQuery.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, '_submit_attached' ) ) {\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, '_submit_attached', 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 ( !jQuery.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, '_change_attached' ) ) {\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, '_change_attached', 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 ( !jQuery.support.focusinBubbles ) {\n\tjQuery.each({ focus: 'focusin', blur: 'focusout' }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler while someone wants focusin/focusout\n\t\tvar attaches = 0,\n\t\t\thandler = 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\tif ( attaches++ === 0 ) {\n\t\t\t\t\tdocument.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tif ( --attaches === 0 ) {\n\t\t\t\t\tdocument.removeEventListener( orig, handler, true );\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 origFn, type;\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' ) { // && selector != null\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\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\tlive: function( types, data, fn ) {\n\t\tjQuery( this.context ).on( types, this.selector, data, fn );\n\t\treturn this;\n\t},\n\tdie: function( types, fn ) {\n\t\tjQuery( this.context ).off( types, this.selector || '**', fn );\n\t\treturn this;\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\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\tif ( this[0] ) {\n\t\t\treturn jQuery.event.trigger( type, data, this[0], true );\n\t\t}\n\t},\n\n\ttoggle: function( fn ) {\n\t\t// Save reference to arguments for access in closure\n\t\tvar args = arguments,\n\t\t\tguid = fn.guid || jQuery.guid++,\n\t\t\ti = 0,\n\t\t\ttoggler = function( event ) {\n\t\t\t\t// Figure out which function to execute\n\t\t\t\tvar lastToggle = ( jQuery._data( this, 'lastToggle' + fn.guid ) || 0 ) % i;\n\t\t\t\tjQuery._data( this, 'lastToggle' + fn.guid, lastToggle + 1 );\n\n\t\t\t\t// Make sure that clicks stop\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\t// and execute the function\n\t\t\t\treturn args[ lastToggle ].apply( this, arguments ) || false;\n\t\t\t};\n\n\t\t// link all the functions, so any of them can unbind this click handler\n\t\ttoggler.guid = guid;\n\t\twhile ( i < args.length ) {\n\t\t\targs[ i++ ].guid = guid;\n\t\t}\n\n\t\treturn this.click( toggler );\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\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\tif ( fn == null ) {\n\t\t\tfn = data;\n\t\t\tdata = null;\n\t\t}\n\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\tif ( rkeyEvent.test( name ) ) {\n\t\tjQuery.event.fixHooks[ name ] = jQuery.event.keyHooks;\n\t}\n\n\tif ( rmouseEvent.test( name ) ) {\n\t\tjQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks;\n\t}\n});\n/*!\n * Sizzle CSS Selector Engine\n * Copyright 2012 jQuery Foundation and other contributors\n * Released under the MIT license\n * http://sizzlejs.com/\n */\n(function( window, undefined ) {\n\nvar cachedruns,\n\tassertGetIdNotName,\n\tExpr,\n\tgetText,\n\tisXML,\n\tcontains,\n\tcompile,\n\tsortOrder,\n\thasDuplicate,\n\toutermostContext,\n\n\tbaseHasDuplicate = true,\n\tstrundefined = 'undefined',\n\n\texpando = ( 'sizcache' + Math.random() ).replace( '.', '' ),\n\n\tToken = String,\n\tdocument = window.document,\n\tdocElem = document.documentElement,\n\tdirruns = 0,\n\tdone = 0,\n\tpop = [].pop,\n\tpush = [].push,\n\tslice = [].slice,\n\t// Use a stripped-down indexOf if a native one is unavailable\n\tindexOf = [].indexOf || function( elem ) {\n\t\tvar i = 0,\n\t\t\tlen = this.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( this[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\t// Augment a function for special use by Sizzle\n\tmarkFunction = function( fn, value ) {\n\t\tfn[ expando ] = value == null || value;\n\t\treturn fn;\n\t},\n\n\tcreateCache = function() {\n\t\tvar cache = {},\n\t\t\tkeys = [];\n\n\t\treturn markFunction(function( key, value ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tif ( keys.push( key ) > Expr.cacheLength ) {\n\t\t\t\tdelete cache[ keys.shift() ];\n\t\t\t}\n\n\t\t\treturn (cache[ key ] = value);\n\t\t}, cache );\n\t},\n\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\n\t// Regex\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// Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors\n\toperators = '([*^$|!~]?=)',\n\tattributes = '\\\\[' + whitespace + '*(' + characterEncoding + ')' + whitespace +\n\t\t'*(?:' + operators + whitespace + '*(?:([\\'\"])((?:\\\\\\\\.|[^\\\\\\\\])*?)\\\\3|(' + identifier + ')|)|)' + whitespace + '*\\\\]',\n\n\t// Prefer arguments not in parens/brackets,\n\t// then attribute selectors and non-pseudos (denoted by :),\n\t// then anything else\n\t// These preferences are here to reduce the number of selectors\n\t// needing tokenize in the PSEUDO preFilter\n\tpseudos = ':(' + characterEncoding + ')(?:\\\\((?:([\\'\"])((?:\\\\\\\\.|[^\\\\\\\\])*?)\\\\2|([^()[\\\\]]*|(?:(?:' + attributes + ')|[^:]|\\\\\\\\.)*|.*))\\\\)|)',\n\n\t// For matchExpr.POS and matchExpr.needsContext\n\tpos = ':(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(' + whitespace +\n\t\t'*((?:-\\\\d)?\\\\d*)' + whitespace + '*\\\\)|)(?=[^-]|$)',\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trtrim = new RegExp( '^' + whitespace + '+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)' + whitespace + '+$', 'g' ),\n\n\trcomma = new RegExp( '^' + whitespace + '*,' + whitespace + '*' ),\n\trcombinators = new RegExp( '^' + whitespace + '*([\\\\x20\\\\t\\\\r\\\\n\\\\f>+~])' + whitespace + '*' ),\n\trpseudo = new RegExp( pseudos ),\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w\\-]+)|(\\w+)|\\.([\\w\\-]+))$/,\n\n\trnot = /^:not/,\n\trsibling = /[\\x20\\t\\r\\n\\f]*[+~]/,\n\trendsWithNot = /:not\\($/,\n\n\trheader = /h\\d/i,\n\trinputs = /input|select|textarea|button/i,\n\n\trbackslash = /\\\\(?!\\\\)/g,\n\n\tmatchExpr = {\n\t\t'ID': new RegExp( '^#(' + characterEncoding + ')' ),\n\t\t'CLASS': new RegExp( '^\\\\.(' + characterEncoding + ')' ),\n\t\t'NAME': new RegExp( '^\\\\[name=[\\'\"]?(' + 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'POS': new RegExp( pos, 'i' ),\n\t\t'CHILD': new RegExp( '^:(only|nth|first|last)-child(?:\\\\(' + whitespace +\n\t\t\t'*(even|odd|(([+-]|)(\\\\d*)n|)' + whitespace + '*(?:([+-]|)' + whitespace +\n\t\t\t'*(\\\\d+)|))' + whitespace + '*\\\\)|)', 'i' ),\n\t\t// For use in libraries implementing .is()\n\t\t'needsContext': new RegExp( '^' + whitespace + '*[>+~]|' + pos, 'i' )\n\t},\n\n\t// Support\n\n\t// Used for testing something on an element\n\tassert = function( fn ) {\n\t\tvar div = document.createElement('div');\n\n\t\ttry {\n\t\t\treturn fn( div );\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t} finally {\n\t\t\t// release memory in IE\n\t\t\tdiv = null;\n\t\t}\n\t},\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tassertTagNameNoComments = assert(function( div ) {\n\t\tdiv.appendChild( document.createComment('') );\n\t\treturn !div.getElementsByTagName('*').length;\n\t}),\n\n\t// Check if getAttribute returns normalized href attributes\n\tassertHrefNotNormalized = assert(function( div ) {\n\t\tdiv.innerHTML = '';\n\t\treturn div.firstChild && typeof div.firstChild.getAttribute !== strundefined &&\n\t\t\tdiv.firstChild.getAttribute('href') === '#';\n\t}),\n\n\t// Check if attributes should be retrieved by attribute nodes\n\tassertAttributes = assert(function( div ) {\n\t\tdiv.innerHTML = '';\n\t\tvar type = typeof div.lastChild.getAttribute('multiple');\n\t\t// IE8 returns a string for some attributes even when not present\n\t\treturn type !== 'boolean' && type !== 'string';\n\t}),\n\n\t// Check if getElementsByClassName can be trusted\n\tassertUsableClassName = assert(function( div ) {\n\t\t// Opera can't find a second classname (in 9.6)\n\t\tdiv.innerHTML = '
';\n\t\tif ( !div.getElementsByClassName || !div.getElementsByClassName('e').length ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Safari 3.2 caches class attributes and doesn't catch changes\n\t\tdiv.lastChild.className = 'e';\n\t\treturn div.getElementsByClassName('e').length === 2;\n\t}),\n\n\t// Check if getElementById returns elements by name\n\t// Check if getElementsByName privileges form controls or returns elements by ID\n\tassertUsableName = assert(function( div ) {\n\t\t// Inject content\n\t\tdiv.id = expando + 0;\n\t\tdiv.innerHTML = '
';\n\t\tdocElem.insertBefore( div, docElem.firstChild );\n\n\t\t// Test\n\t\tvar pass = document.getElementsByName &&\n\t\t\t// buggy browsers will return fewer than the correct 2\n\t\t\tdocument.getElementsByName( expando ).length === 2 +\n\t\t\t// buggy browsers will return more than the correct 0\n\t\t\tdocument.getElementsByName( expando + 0 ).length;\n\t\tassertGetIdNotName = !document.getElementById( expando );\n\n\t\t// Cleanup\n\t\tdocElem.removeChild( div );\n\n\t\treturn pass;\n\t});\n\n// If slice is not available, provide a backup\ntry {\n\tslice.call( docElem.childNodes, 0 )[0].nodeType;\n} catch ( e ) {\n\tslice = function( i ) {\n\t\tvar elem,\n\t\t\tresults = [];\n\t\tfor ( ; (elem = this[i]); i++ ) {\n\t\t\tresults.push( elem );\n\t\t}\n\t\treturn results;\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tresults = results || [];\n\tcontext = context || document;\n\tvar match, elem, xml, m,\n\t\tnodeType = context.nodeType;\n\n\tif ( !selector || typeof selector !== 'string' ) {\n\t\treturn results;\n\t}\n\n\tif ( nodeType !== 1 && nodeType !== 9 ) {\n\t\treturn [];\n\t}\n\n\txml = isXML( context );\n\n\tif ( !xml && !seed ) {\n\t\tif ( (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 #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, slice.call(context.getElementsByTagName( selector ), 0) );\n\t\t\t\treturn results;\n\n\t\t\t// Speed-up: Sizzle(\".CLASS\")\n\t\t\t} else if ( (m = match[3]) && assertUsableClassName && context.getElementsByClassName ) {\n\t\t\t\tpush.apply( results, slice.call(context.getElementsByClassName( m ), 0) );\n\t\t\t\treturn results;\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, '$1' ), context, results, seed, xml );\n}\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\treturn Sizzle( expr, null, null, [ elem ] ).length > 0;\n};\n\n// Returns a function to use in pseudos for input types\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// Returns a function to use in pseudos for buttons\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// Returns a function to use in pseudos for positionals\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 * 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\tif ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t\t// Use textContent for elements\n\t\t\t// innerText usage removed for consistency of new lines (see #11153)\n\t\t\tif ( typeof elem.textContent === 'string' ) {\n\t\t\t\treturn elem.textContent;\n\t\t\t} else {\n\t\t\t\t// Traverse its children\n\t\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\t\tret += getText( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\t\treturn elem.nodeValue;\n\t\t}\n\t\t// Do not include comment or processing instruction nodes\n\t} else {\n\n\t\t// If no nodeType, this is expected to be an array\n\t\tfor ( ; (node = elem[i]); i++ ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t}\n\treturn ret;\n};\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// Element contains another\ncontains = Sizzle.contains = docElem.contains ?\n\tfunction( a, b ) {\n\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\tbup = b && b.parentNode;\n\t\treturn a === bup || !!( bup && bup.nodeType === 1 && adown.contains && adown.contains(bup) );\n\t} :\n\tdocElem.compareDocumentPosition ?\n\tfunction( a, b ) {\n\t\treturn b && !!( a.compareDocumentPosition( b ) & 16 );\n\t} :\n\tfunction( a, b ) {\n\t\twhile ( (b = b.parentNode) ) {\n\t\t\tif ( b === a ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t};\n\nSizzle.attr = function( elem, name ) {\n\tvar val,\n\t\txml = isXML( elem );\n\n\tif ( !xml ) {\n\t\tname = name.toLowerCase();\n\t}\n\tif ( (val = Expr.attrHandle[ name ]) ) {\n\t\treturn val( elem );\n\t}\n\tif ( xml || assertAttributes ) {\n\t\treturn elem.getAttribute( name );\n\t}\n\tval = elem.getAttributeNode( name );\n\treturn val ?\n\t\ttypeof elem[ name ] === 'boolean' ?\n\t\t\telem[ name ] ? name : null :\n\t\t\tval.specified ? val.value : null :\n\t\tnull;\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\t// IE6/7 return a modified href\n\tattrHandle: assertHrefNotNormalized ?\n\t\t{} :\n\t\t{\n\t\t\t'href': function( elem ) {\n\t\t\t\treturn elem.getAttribute( 'href', 2 );\n\t\t\t},\n\t\t\t'type': function( elem ) {\n\t\t\t\treturn elem.getAttribute('type');\n\t\t\t}\n\t\t},\n\n\tfind: {\n\t\t'ID': assertGetIdNotName ?\n\t\t\tfunction( id, context, xml ) {\n\t\t\t\tif ( typeof context.getElementById !== strundefined && !xml ) {\n\t\t\t\t\tvar m = context.getElementById( id );\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\treturn m && m.parentNode ? [m] : [];\n\t\t\t\t}\n\t\t\t} :\n\t\t\tfunction( id, context, xml ) {\n\t\t\t\tif ( typeof context.getElementById !== strundefined && !xml ) {\n\t\t\t\t\tvar m = context.getElementById( id );\n\n\t\t\t\t\treturn m ?\n\t\t\t\t\t\tm.id === id || typeof m.getAttributeNode !== strundefined && m.getAttributeNode('id').value === id ?\n\t\t\t\t\t\t\t[m] :\n\t\t\t\t\t\t\tundefined :\n\t\t\t\t\t\t[];\n\t\t\t\t}\n\t\t\t},\n\n\t\t'TAG': assertTagNameNoComments ?\n\t\t\tfunction( tag, context ) {\n\t\t\t\tif ( typeof context.getElementsByTagName !== strundefined ) {\n\t\t\t\t\treturn context.getElementsByTagName( tag );\n\t\t\t\t}\n\t\t\t} :\n\t\t\tfunction( tag, context ) {\n\t\t\t\tvar results = context.getElementsByTagName( tag );\n\n\t\t\t\t// Filter out possible comments\n\t\t\t\tif ( tag === '*' ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\ttmp = [],\n\t\t\t\t\t\ti = 0;\n\n\t\t\t\t\tfor ( ; (elem = results[i]); i++ ) {\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn tmp;\n\t\t\t\t}\n\t\t\t\treturn results;\n\t\t\t},\n\n\t\t'NAME': assertUsableName && function( tag, context ) {\n\t\t\tif ( typeof context.getElementsByName !== strundefined ) {\n\t\t\t\treturn context.getElementsByName( name );\n\t\t\t}\n\t\t},\n\n\t\t'CLASS': assertUsableClassName && function( className, context, xml ) {\n\t\t\tif ( typeof context.getElementsByClassName !== strundefined && !xml ) {\n\t\t\t\treturn context.getElementsByClassName( className );\n\t\t\t}\n\t\t}\n\t},\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( rbackslash, '' );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[4] || match[5] || '' ).replace( rbackslash, '' );\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 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t3 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t4 sign of xn-component\n\t\t\t\t5 x of xn-component\n\t\t\t\t6 sign of y-component\n\t\t\t\t7 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1] === 'nth' ) {\n\t\t\t\t// nth-child requires argument\n\t\t\t\tif ( !match[2] ) {\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[3] = +( match[3] ? match[4] + (match[5] || 1) : 2 * ( match[2] === 'even' || match[2] === 'odd' ) );\n\t\t\t\tmatch[4] = +( ( match[6] + match[7] ) || match[2] === 'odd' );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[2] ) {\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 unquoted, excess;\n\t\t\tif ( matchExpr['CHILD'].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[3];\n\t\t\t} else if ( (unquoted = match[4]) ) {\n\t\t\t\t// Only check arguments that contain a pseudo\n\t\t\t\tif ( rpseudo.test(unquoted) &&\n\t\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t\t(excess = unquoted.indexOf( ')', unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t\t// excess is a negative index\n\t\t\t\t\tunquoted = unquoted.slice( 0, excess );\n\t\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\t}\n\t\t\t\tmatch[2] = unquoted;\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\t\t'ID': assertGetIdNotName ?\n\t\t\tfunction( id ) {\n\t\t\t\tid = id.replace( rbackslash, '' );\n\t\t\t\treturn function( elem ) {\n\t\t\t\t\treturn elem.getAttribute('id') === id;\n\t\t\t\t};\n\t\t\t} :\n\t\t\tfunction( id ) {\n\t\t\t\tid = id.replace( rbackslash, '' );\n\t\t\t\treturn function( elem ) {\n\t\t\t\t\tvar node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode('id');\n\t\t\t\t\treturn node && node.value === id;\n\t\t\t\t};\n\t\t\t},\n\n\t\t'TAG': function( nodeName ) {\n\t\t\tif ( nodeName === '*' ) {\n\t\t\t\treturn function() { return true; };\n\t\t\t}\n\t\t\tnodeName = nodeName.replace( rbackslash, '' ).toLowerCase();\n\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t};\n\t\t},\n\n\t\t'CLASS': function( className ) {\n\t\t\tvar pattern = classCache[ expando ][ className ];\n\t\t\tif ( !pattern ) {\n\t\t\t\tpattern = classCache( className, new RegExp('(^|' + whitespace + ')' + className + '(' + whitespace + '|$)') );\n\t\t\t}\n\t\t\treturn function( elem ) {\n\t\t\t\treturn pattern.test( elem.className || (typeof elem.getAttribute !== strundefined && elem.getAttribute('class')) || '' );\n\t\t\t};\n\t\t},\n\n\t\t'ATTR': function( name, operator, check ) {\n\t\t\treturn function( elem, context ) {\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.substr( result.length - check.length ) === check :\n\t\t\t\t\toperator === '~=' ? ( ' ' + result + ' ' ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === '|=' ? result === check || result.substr( 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, argument, first, last ) {\n\n\t\t\tif ( type === 'nth' ) {\n\t\t\t\treturn function( elem ) {\n\t\t\t\t\tvar node, diff,\n\t\t\t\t\t\tparent = elem.parentNode;\n\n\t\t\t\t\tif ( first === 1 && last === 0 ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( parent ) {\n\t\t\t\t\t\tdiff = 0;\n\t\t\t\t\t\tfor ( node = parent.firstChild; node; node = node.nextSibling ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\tdiff++;\n\t\t\t\t\t\t\t\tif ( elem === node ) {\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\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Incorporate the offset (or cast to NaN), then check against cycle size\n\t\t\t\t\tdiff -= last;\n\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = elem;\n\n\t\t\t\tswitch ( type ) {\n\t\t\t\t\tcase 'only':\n\t\t\t\t\tcase 'first':\n\t\t\t\t\t\twhile ( (node = node.previousSibling) ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( type === 'first' ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tnode = elem;\n\n\t\t\t\t\t\t/* falls through */\n\t\t\t\t\tcase 'last':\n\t\t\t\t\t\twhile ( (node = node.nextSibling) ) {\n\t\t\t\t\t\t\tif ( node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\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.call( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\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\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\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'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'parent': function( elem ) {\n\t\t\treturn !Expr.pseudos['empty']( elem );\n\t\t},\n\n\t\t'empty': function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is only affected by element nodes and content nodes(including text(3), cdata(4)),\n\t\t\t// not comment, processing instructions, or others\n\t\t\t// Thanks to Diego Perini for the nodeName shortcut\n\t\t\t// Greater than \"@\" means alpha characters (specifically not starting with \"#\" or \"?\")\n\t\t\tvar nodeType;\n\t\t\telem = elem.firstChild;\n\t\t\twhile ( elem ) {\n\t\t\t\tif ( elem.nodeName > '@' || (nodeType = elem.nodeType) === 3 || nodeType === 4 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\telem = elem.nextSibling;\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t'header': function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t'text': function( elem ) {\n\t\t\tvar type, attr;\n\t\t\t// IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)\n\t\t\t// use getAttribute instead to test this case\n\t\t\treturn elem.nodeName.toLowerCase() === 'input' &&\n\t\t\t\t(type = elem.type) === 'text' &&\n\t\t\t\t( (attr = elem.getAttribute('type')) == null || attr.toLowerCase() === type );\n\t\t},\n\n\t\t// Input types\n\t\t'radio': createInputPseudo('radio'),\n\t\t'checkbox': createInputPseudo('checkbox'),\n\t\t'file': createInputPseudo('file'),\n\t\t'password': createInputPseudo('password'),\n\t\t'image': createInputPseudo('image'),\n\n\t\t'submit': createButtonPseudo('submit'),\n\t\t'reset': createButtonPseudo('reset'),\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'input': function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t'focus': function( elem ) {\n\t\t\tvar doc = elem.ownerDocument;\n\t\t\treturn elem === doc.activeElement && (!doc.hasFocus || doc.hasFocus()) && !!(elem.type || elem.href);\n\t\t},\n\n\t\t'active': function( elem ) {\n\t\t\treturn elem === elem.ownerDocument.activeElement;\n\t\t},\n\n\t\t// Positional types\n\t\t'first': createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t'last': createPositionalPseudo(function( matchIndexes, length, argument ) {\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, argument ) {\n\t\t\tfor ( var i = 0; 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, argument ) {\n\t\t\tfor ( var i = 1; 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\tfor ( var i = argument < 0 ? argument + length : argument; --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\tfor ( var i = argument < 0 ? argument + length : argument; ++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\nfunction siblingCheck( a, b, ret ) {\n\tif ( a === b ) {\n\t\treturn ret;\n\t}\n\n\tvar cur = a.nextSibling;\n\n\twhile ( cur ) {\n\t\tif ( cur === b ) {\n\t\t\treturn -1;\n\t\t}\n\n\t\tcur = cur.nextSibling;\n\t}\n\n\treturn 1;\n}\n\nsortOrder = docElem.compareDocumentPosition ?\n\tfunction( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn ( !a.compareDocumentPosition || !b.compareDocumentPosition ?\n\t\t\ta.compareDocumentPosition :\n\t\t\ta.compareDocumentPosition(b) & 4\n\t\t) ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// The nodes are identical, we can exit early\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\n\t\t// Fallback to using sourceIndex (in IE) if it's available on both nodes\n\t\t} else if ( a.sourceIndex && b.sourceIndex ) {\n\t\t\treturn a.sourceIndex - b.sourceIndex;\n\t\t}\n\n\t\tvar al, bl,\n\t\t\tap = [],\n\t\t\tbp = [],\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tcur = aup;\n\n\t\t// If the nodes are siblings (or identical) we can do a quick check\n\t\tif ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\n\t\t// If no parents were found then the nodes are disconnected\n\t\t} else if ( !aup ) {\n\t\t\treturn -1;\n\n\t\t} else if ( !bup ) {\n\t\t\treturn 1;\n\t\t}\n\n\t\t// Otherwise they're somewhere else in the tree so we need\n\t\t// to build up a full list of the parentNodes for comparison\n\t\twhile ( cur ) {\n\t\t\tap.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tcur = bup;\n\n\t\twhile ( cur ) {\n\t\t\tbp.unshift( cur );\n\t\t\tcur = cur.parentNode;\n\t\t}\n\n\t\tal = ap.length;\n\t\tbl = bp.length;\n\n\t\t// Start walking down the tree looking for a discrepancy\n\t\tfor ( var i = 0; i < al && i < bl; i++ ) {\n\t\t\tif ( ap[i] !== bp[i] ) {\n\t\t\t\treturn siblingCheck( ap[i], bp[i] );\n\t\t\t}\n\t\t}\n\n\t\t// We ended someplace up the tree so do a sibling check\n\t\treturn i === al ?\n\t\t\tsiblingCheck( a, bp[i], -1 ) :\n\t\t\tsiblingCheck( ap[i], b, 1 );\n\t};\n\n// Always assume the presence of duplicates if sort doesn't\n// pass them to our comparison function (as in Google Chrome).\n[0, 0].sort( sortOrder );\nbaseHasDuplicate = !hasDuplicate;\n\n// Document sorting and removing duplicates\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\ti = 1;\n\n\thasDuplicate = baseHasDuplicate;\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\tfor ( ; (elem = results[i]); i++ ) {\n\t\t\tif ( elem === results[ i - 1 ] ) {\n\t\t\t\tresults.splice( i--, 1 );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn results;\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( 'Syntax error, unrecognized expression: ' + msg );\n};\n\nfunction tokenize( selector, parseOnly ) {\n\tvar matched, match, tokens, type, soFar, groups, preFilters,\n\t\tcached = tokenCache[ expando ][ 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\tsoFar = soFar.slice( match[0].length );\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\ttokens.push( matched = new Token( match.shift() ) );\n\t\t\tsoFar = soFar.slice( matched.length );\n\n\t\t\t// Cast descendant combinators to space\n\t\t\tmatched.type = match[0].replace( rtrim, ' ' );\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// The last two arguments here are (context, xml) for backCompat\n\t\t\t\t(match = preFilters[ type ]( match, document, true ))) ) {\n\n\t\t\t\ttokens.push( matched = new Token( match.shift() ) );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t\tmatched.type = type;\n\t\t\t\tmatched.matches = match;\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 addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tcheckNonElements = base && combinator.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 ( checkNonElements || elem.nodeType === 1 ) {\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\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\tvar cache,\n\t\t\t\t\tdirkey = dirruns + ' ' + doneName + ' ',\n\t\t\t\t\tcachedkey = dirkey + cachedruns;\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( checkNonElements || elem.nodeType === 1 ) {\n\t\t\t\t\t\tif ( (cache = elem[ expando ]) === cachedkey ) {\n\t\t\t\t\t\t\treturn elem.sizset;\n\t\t\t\t\t\t} else if ( typeof cache === 'string' && cache.indexOf(dirkey) === 0 ) {\n\t\t\t\t\t\t\tif ( elem.sizset ) {\n\t\t\t\t\t\t\t\treturn elem;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\telem[ expando ] = cachedkey;\n\t\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\t\telem.sizset = true;\n\t\t\t\t\t\t\t\treturn elem;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telem.sizset = false;\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 ( checkNonElements || elem.nodeType === 1 ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn elem;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\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 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\t// Positional selectors apply to seed elements, so it is invalid to follow them with relative ones\n\t\tif ( seed && postFinder ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar i, elem, postFilterIn,\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, [], seed ),\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\tpostFilterIn = condense( matcherOut, postMap );\n\t\t\tpostFilter( postFilterIn, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = postFilterIn.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = postFilterIn[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\t// Keep seed and results synchronized\n\t\tif ( seed ) {\n\t\t\t// Ignore postFinder because it can't coexist with seed\n\t\t\ti = preFilter && matcherOut.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\tseed[ preMap[i] ] = !(results[ preMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[' '],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf.call( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\treturn ( !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} ];\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\t// The concatenated values are (context, xml) for backCompat\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 && tokens.slice( 0, i - 1 ).join('').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 && tokens.join('')\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, expandContext ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tsetMatched = [],\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = '0',\n\t\t\t\tunmatched = seed && [],\n\t\t\t\toutermost = expandContext != null,\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or context\n\t\t\t\telems = seed || byElement && Expr.find['TAG']( '*', expandContext && context.parentNode || context ),\n\t\t\t\t// Nested matchers should use non-integer dirruns\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.E);\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context !== document && context;\n\t\t\t\tcachedruns = superMatcher.el;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tfor ( j = 0; (matcher = elementMatchers[j]); 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\tcachedruns = ++superMatcher.el;\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\tfor ( j = 0; (matcher = setMatchers[j]); 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\tsuperMatcher.el = 0;\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ expando ][ 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 ( !group ) {\n\t\t\tgroup = tokenize( selector );\n\t\t}\n\t\ti = group.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( group[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\t}\n\treturn cached;\n};\n\nfunction multipleContexts( selector, contexts, results, seed ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results, seed );\n\t}\n\treturn results;\n}\n\nfunction select( selector, context, results, seed, xml ) {\n\tvar i, tokens, token, type, find,\n\t\tmatch = tokenize( selector ),\n\t\tj = match.length;\n\n\tif ( !seed ) {\n\t\t// Try to minimize operations if there is only one group\n\t\tif ( match.length === 1 ) {\n\n\t\t\t// Take a shortcut and set the context if the root selector is an ID\n\t\t\ttokens = match[0] = match[0].slice( 0 );\n\t\t\tif ( tokens.length > 2 && (token = tokens[0]).type === 'ID' &&\n\t\t\t\t\tcontext.nodeType === 9 && !xml &&\n\t\t\t\t\tExpr.relative[ tokens[1].type ] ) {\n\n\t\t\t\tcontext = Expr.find['ID']( token.matches[0].replace( rbackslash, '' ), context, xml )[0];\n\t\t\t\tif ( !context ) {\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\n\t\t\t\tselector = selector.slice( tokens.shift().length );\n\t\t\t}\n\n\t\t\t// Fetch a seed set for right-to-left matching\n\t\t\tfor ( i = matchExpr['POS'].test( selector ) ? -1 : tokens.length - 1; i >= 0; i-- ) {\n\t\t\t\ttoken = tokens[i];\n\n\t\t\t\t// Abort if we hit a combinator\n\t\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\t\tif ( (seed = find(\n\t\t\t\t\t\ttoken.matches[0].replace( rbackslash, '' ),\n\t\t\t\t\t\trsibling.test( tokens[0].type ) && context.parentNode || context,\n\t\t\t\t\t\txml\n\t\t\t\t\t)) ) {\n\n\t\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\t\tselector = seed.length && tokens.join('');\n\t\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\t\tpush.apply( results, slice.call( seed, 0 ) );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\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\t}\n\n\t// Compile and execute a filtering function\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\tcompile( selector, match )(\n\t\tseed,\n\t\tcontext,\n\t\txml,\n\t\tresults,\n\t\trsibling.test( selector )\n\t);\n\treturn results;\n}\n\nif ( document.querySelectorAll ) {\n\t(function() {\n\t\tvar disconnectedMatch,\n\t\t\toldSelect = select,\n\t\t\trescape = /'|\\\\/g,\n\t\t\trattributeQuotes = /\\=[\\x20\\t\\r\\n\\f]*([^'\"\\]]*)[\\x20\\t\\r\\n\\f]*\\]/g,\n\n\t\t\t// qSa(:focus) reports false when true (Chrome 21),\n\t\t\t// A support test would require too much code (would include document ready)\n\t\t\trbuggyQSA = [':focus'],\n\n\t\t\t// matchesSelector(:focus) reports false when true (Chrome 21),\n\t\t\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\t\t\t// A support test would require too much code (would include document ready)\n\t\t\t// just skip matchesSelector for :active\n\t\t\trbuggyMatches = [ ':active', ':focus' ],\n\t\t\tmatches = docElem.matchesSelector ||\n\t\t\t\tdocElem.mozMatchesSelector ||\n\t\t\t\tdocElem.webkitMatchesSelector ||\n\t\t\t\tdocElem.oMatchesSelector ||\n\t\t\t\tdocElem.msMatchesSelector;\n\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 explictly\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\tdiv.innerHTML = '';\n\n\t\t\t// IE8 - Some boolean attributes are not treated correctly\n\t\t\tif ( !div.querySelectorAll('[selected]').length ) {\n\t\t\t\trbuggyQSA.push( '\\\\[' + whitespace + '*(?:checked|disabled|ismap|multiple|readonly|selected|value)' );\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 (do not put tests after this one)\n\t\t\tif ( !div.querySelectorAll(':checked').length ) {\n\t\t\t\trbuggyQSA.push(':checked');\n\t\t\t}\n\t\t});\n\n\t\tassert(function( div ) {\n\n\t\t\t// Opera 10-12/IE9 - ^= $= *= and empty values\n\t\t\t// Should not select anything\n\t\t\tdiv.innerHTML = '

';\n\t\t\tif ( div.querySelectorAll('[test^=\\'\\']').length ) {\n\t\t\t\trbuggyQSA.push( '[*^$]=' + 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 (do not put tests after this one)\n\t\t\tdiv.innerHTML = '';\n\t\t\tif ( !div.querySelectorAll(':enabled').length ) {\n\t\t\t\trbuggyQSA.push(':enabled', ':disabled');\n\t\t\t}\n\t\t});\n\n\t\t// rbuggyQSA always contains :focus, so no need for a length check\n\t\trbuggyQSA = /* rbuggyQSA.length && */ new RegExp( rbuggyQSA.join('|') );\n\n\t\tselect = function( selector, context, results, seed, xml ) {\n\t\t\t// Only use querySelectorAll when not filtering,\n\t\t\t// when this is not xml,\n\t\t\t// and when no QSA bugs apply\n\t\t\tif ( !seed && !xml && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\n\t\t\t\tvar groups, i,\n\t\t\t\t\told = true,\n\t\t\t\t\tnid = expando,\n\t\t\t\t\tnewContext = context,\n\t\t\t\t\tnewSelector = context.nodeType === 9 && selector;\n\n\t\t\t\t// qSA works strangely on Element-rooted queries\n\t\t\t\t// We can work around this by specifying an extra ID on the root\n\t\t\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\n\t\t\t\t// IE 8 doesn't work on object elements\n\t\t\t\tif ( context.nodeType === 1 && context.nodeName.toLowerCase() !== 'object' ) {\n\t\t\t\t\tgroups = tokenize( selector );\n\n\t\t\t\t\tif ( (old = context.getAttribute('id')) ) {\n\t\t\t\t\t\tnid = old.replace( rescape, '\\\\$&' );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.setAttribute( 'id', nid );\n\t\t\t\t\t}\n\t\t\t\t\tnid = '[id=\\'' + nid + '\\'] ';\n\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[i] = nid + groups[i].join('');\n\t\t\t\t\t}\n\t\t\t\t\tnewContext = rsibling.test( selector ) && context.parentNode || context;\n\t\t\t\t\tnewSelector = groups.join(',');\n\t\t\t\t}\n\n\t\t\t\tif ( newSelector ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tpush.apply( results, slice.call( newContext.querySelectorAll(\n\t\t\t\t\t\t\tnewSelector\n\t\t\t\t\t\t), 0 ) );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t} catch(qsaError) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\t\tcontext.removeAttribute('id');\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\treturn oldSelect( selector, context, results, seed, xml );\n\t\t};\n\n\t\tif ( matches ) {\n\t\t\tassert(function( div ) {\n\t\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t\t// on a disconnected node (IE 9)\n\t\t\t\tdisconnectedMatch = matches.call( div, 'div' );\n\n\t\t\t\t// This should fail with an exception\n\t\t\t\t// Gecko does not error, returns false instead\n\t\t\t\ttry {\n\t\t\t\t\tmatches.call( div, '[test!=\\'\\']:sizzle' );\n\t\t\t\t\trbuggyMatches.push( '!=', pseudos );\n\t\t\t\t} catch ( e ) {}\n\t\t\t});\n\n\t\t\t// rbuggyMatches always contains :active and :focus, so no need for a length check\n\t\t\trbuggyMatches = /* rbuggyMatches.length && */ new RegExp( rbuggyMatches.join('|') );\n\n\t\t\tSizzle.matchesSelector = function( elem, expr ) {\n\t\t\t\t// Make sure that attribute selectors are quoted\n\t\t\t\texpr = expr.replace( rattributeQuotes, '=\\'$1\\']' );\n\n\t\t\t\t// rbuggyMatches always contains :active, so no need for an existence check\n\t\t\t\tif ( !isXML( elem ) && !rbuggyMatches.test( expr ) && (!rbuggyQSA || !rbuggyQSA.test( expr )) ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\t\t\t\tif ( ret || disconnectedMatch ||\n\t\t\t\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\t\t\t\treturn ret;\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch(e) {}\n\t\t\t\t}\n\n\t\t\t\treturn Sizzle( expr, null, null, [ elem ] ).length > 0;\n\t\t\t};\n\t\t}\n\t})();\n}\n\n// Deprecated\nExpr.pseudos['nth'] = Expr.pseudos['eq'];\n\n// Back-compat\nfunction setFilters() {}\nExpr.filters = setFilters.prototype = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\n// Override sizzle attribute retrieval\nSizzle.attr = jQuery.attr;\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})( window );\nvar runtil = /Until$/,\n\trparentsprev = /^(?:parents|prev(?:Until|All))/,\n\tisSimple = /^.[^:#\\[\\.,]*$/,\n\trneedsContext = jQuery.expr.match.needsContext,\n\t// methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar i, l, length, n, r, ret,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== 'string' ) {\n\t\t\treturn jQuery( selector ).filter(function() {\n\t\t\t\tfor ( i = 0, l = self.length; i < l; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tret = this.pushStack( '', 'find', selector );\n\n\t\tfor ( i = 0, l = this.length; i < l; i++ ) {\n\t\t\tlength = ret.length;\n\t\t\tjQuery.find( selector, this[i], ret );\n\n\t\t\tif ( i > 0 ) {\n\t\t\t\t// Make sure that the results are unique\n\t\t\t\tfor ( n = length; n < ret.length; n++ ) {\n\t\t\t\t\tfor ( r = 0; r < length; r++ ) {\n\t\t\t\t\t\tif ( ret[r] === ret[n] ) {\n\t\t\t\t\t\t\tret.splice(n--, 1);\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}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\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\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, false), 'not', selector);\n\t},\n\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector, true), 'filter', selector );\n\t},\n\n\tis: function( selector ) {\n\t\treturn !!selector && (\n\t\t\ttypeof selector === 'string' ?\n\t\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\t\trneedsContext.test( selector ) ?\n\t\t\t\t\tjQuery( selector, this.context ).index( this[0] ) >= 0 :\n\t\t\t\t\tjQuery.filter( selector, this ).length > 0 :\n\t\t\t\tthis.filter( selector ).length > 0 );\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\tret = [],\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\tcur = this[i];\n\n\t\t\twhile ( cur && cur.ownerDocument && cur !== context && cur.nodeType !== 11 ) {\n\t\t\t\tif ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {\n\t\t\t\t\tret.push( cur );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t}\n\n\t\tret = ret.length > 1 ? jQuery.unique( ret ) : ret;\n\n\t\treturn this.pushStack( ret, 'closest', selectors );\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.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\tvar set = typeof selector === 'string' ?\n\t\t\t\tjQuery( selector, context ) :\n\t\t\t\tjQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),\n\t\t\tall = jQuery.merge( this.get(), set );\n\n\t\treturn this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?\n\t\t\tall :\n\t\t\tjQuery.unique( all ) );\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\njQuery.fn.andSelf = jQuery.fn.addBack;\n\n// A painfully simple check to see if an element is disconnected\n// from a document (should be improved, where feasible).\nfunction isDisconnected( node ) {\n\treturn !node || !node.parentNode || node.parentNode.nodeType === 11;\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 ( !runtil.test( name ) ) {\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\tret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;\n\n\t\tif ( this.length > 1 && rparentsprev.test( name ) ) {\n\t\t\tret = ret.reverse();\n\t\t}\n\n\t\treturn this.pushStack( ret, name, core_slice.call( arguments ).join(',') );\n\t};\n});\n\njQuery.extend({\n\tfilter: function( expr, elems, not ) {\n\t\tif ( not ) {\n\t\t\texpr = ':not(' + expr + ')';\n\t\t}\n\n\t\treturn elems.length === 1 ?\n\t\t\tjQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :\n\t\t\tjQuery.find.matches(expr, elems);\n\t},\n\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\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, keep ) {\n\n\t// Can't pass null or undefined to indexOf in Firefox 4\n\t// Set to 0 to skip string check\n\tqualifier = qualifier || 0;\n\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\tvar retVal = !!qualifier.call( elem, i, elem );\n\t\t\treturn retVal === keep;\n\t\t});\n\n\t} else if ( qualifier.nodeType ) {\n\t\treturn jQuery.grep(elements, function( elem, i ) {\n\t\t\treturn ( elem === qualifier ) === keep;\n\t\t});\n\n\t} else if ( typeof qualifier === 'string' ) {\n\t\tvar filtered = jQuery.grep(elements, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t});\n\n\t\tif ( isSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter(qualifier, filtered, !keep);\n\t\t} else {\n\t\t\tqualifier = jQuery.filter( qualifier, filtered );\n\t\t}\n\t}\n\n\treturn jQuery.grep(elements, function( elem, i ) {\n\t\treturn ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep;\n\t});\n}\nfunction createSafeFragment( document ) {\n\tvar list = nodeNames.split( '|' ),\n\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\trleadingWhitespace = /^\\s+/,\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/gi,\n\trtagName = /<([\\w:]+)/,\n\trtbody = /]', 'i'),\n\trcheckableType = /^(?:checkbox|radio)$/,\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trscriptType = /\\/(java|ecma)script/i,\n\trcleanScript = /^\\s*\\s*$/g,\n\twrapMap = {\n\t\toption: [ 1, '' ],\n\t\tlegend: [ 1, '
', '
' ],\n\t\tthead: [ 1, '', '
' ],\n\t\ttr: [ 2, '', '
' ],\n\t\ttd: [ 3, '', '
' ],\n\t\tcol: [ 2, '', '
' ],\n\t\tarea: [ 1, '', '' ],\n\t\t_default: [ 0, '', '' ]\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\n// IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags,\n// unless wrapped in a div with non-breaking characters in front of it.\nif ( !jQuery.support.htmlSerialize ) {\n\twrapMap._default = [ 1, 'X
', '
' ];\n}\n\njQuery.fn.extend({\n\ttext: function( value ) {\n\t\treturn jQuery.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\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\tappend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 ) {\n\t\t\t\tthis.appendChild( elem );\n\t\t\t}\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip(arguments, true, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 ) {\n\t\t\t\tthis.insertBefore( elem, this.firstChild );\n\t\t\t}\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\tif ( !isDisconnected( this[0] ) ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t});\n\t\t}\n\n\t\tif ( arguments.length ) {\n\t\t\tvar set = jQuery.clean( arguments );\n\t\t\treturn this.pushStack( jQuery.merge( set, this ), 'before', this.selector );\n\t\t}\n\t},\n\n\tafter: function() {\n\t\tif ( !isDisconnected( this[0] ) ) {\n\t\t\treturn this.domManip(arguments, false, function( elem ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t});\n\t\t}\n\n\t\tif ( arguments.length ) {\n\t\t\tvar set = jQuery.clean( arguments );\n\t\t\treturn this.pushStack( jQuery.merge( this, set ), 'after', this.selector );\n\t\t}\n\t},\n\n\t// keepData is for internal use only--do not document\n\tremove: function( selector, keepData ) {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; (elem = this[i]) != null; i++ ) {\n\t\t\tif ( !selector || jQuery.filter( selector, [ elem ] ).length ) {\n\t\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\t\tjQuery.cleanData( elem.getElementsByTagName('*') );\n\t\t\t\t\tjQuery.cleanData( [ elem ] );\n\t\t\t\t}\n\n\t\t\t\tif ( elem.parentNode ) {\n\t\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t\t}\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( elem.getElementsByTagName('*') );\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\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 jQuery.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( jQuery.support.htmlSerialize || !rnoshimcache.test( value ) ) &&\n\t\t\t\t( jQuery.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>' );\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( elem.getElementsByTagName( '*' ) );\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( value ) {\n\t\tif ( !isDisconnected( this[0] ) ) {\n\t\t\t// Make sure that the elements are removed from the DOM before they are inserted\n\t\t\t// this can help fix replacing a parent with child elements\n\t\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\t\treturn this.each(function(i) {\n\t\t\t\t\tvar self = jQuery(this), old = self.html();\n\t\t\t\t\tself.replaceWith( value.call( this, i, old ) );\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( typeof value !== 'string' ) {\n\t\t\t\tvalue = jQuery( value ).detach();\n\t\t\t}\n\n\t\t\treturn this.each(function() {\n\t\t\t\tvar next = this.nextSibling,\n\t\t\t\t\tparent = this.parentNode;\n\n\t\t\t\tjQuery( this ).remove();\n\n\t\t\t\tif ( next ) {\n\t\t\t\t\tjQuery(next).before( value );\n\t\t\t\t} else {\n\t\t\t\t\tjQuery(parent).append( value );\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn this.length ?\n\t\t\tthis.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), 'replaceWith', value ) :\n\t\t\tthis;\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, table, callback ) {\n\n\t\t// Flatten any nested arrays\n\t\targs = [].concat.apply( [], args );\n\n\t\tvar results, first, fragment, iNoClone,\n\t\t\ti = 0,\n\t\t\tvalue = args[0],\n\t\t\tscripts = [],\n\t\t\tl = this.length;\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( !jQuery.support.checkClone && l > 1 && typeof value === 'string' && rchecked.test( value ) ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery(this).domManip( args, table, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( jQuery.isFunction(value) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tvar self = jQuery(this);\n\t\t\t\targs[0] = value.call( this, i, table ? self.html() : undefined );\n\t\t\t\tself.domManip( args, table, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\tresults = jQuery.buildFragment( args, this, scripts );\n\t\t\tfragment = results.fragment;\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\ttable = table && jQuery.nodeName( first, 'tr' );\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\t// Fragments from the fragment cache must always be cloned and never used in place.\n\t\t\t\tfor ( iNoClone = results.cacheable || l - 1; i < l; i++ ) {\n\t\t\t\t\tcallback.call(\n\t\t\t\t\t\ttable && jQuery.nodeName( this[i], 'table' ) ?\n\t\t\t\t\t\t\tfindOrAppend( this[i], 'tbody' ) :\n\t\t\t\t\t\t\tthis[i],\n\t\t\t\t\t\ti === iNoClone ?\n\t\t\t\t\t\t\tfragment :\n\t\t\t\t\t\t\tjQuery.clone( fragment, true, true )\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Fix #11809: Avoid leaking memory\n\t\t\tfragment = first = null;\n\n\t\t\tif ( scripts.length ) {\n\t\t\t\tjQuery.each( scripts, function( i, elem ) {\n\t\t\t\t\tif ( elem.src ) {\n\t\t\t\t\t\tif ( jQuery.ajax ) {\n\t\t\t\t\t\t\tjQuery.ajax({\n\t\t\t\t\t\t\t\turl: elem.src,\n\t\t\t\t\t\t\t\ttype: 'GET',\n\t\t\t\t\t\t\t\tdataType: 'script',\n\t\t\t\t\t\t\t\tasync: false,\n\t\t\t\t\t\t\t\tglobal: false,\n\t\t\t\t\t\t\t\t'throws': true\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tjQuery.error('no ajax');\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tjQuery.globalEval( ( elem.text || elem.textContent || elem.innerHTML || '' ).replace( rcleanScript, '' ) );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( elem.parentNode ) {\n\t\t\t\t\t\telem.parentNode.removeChild( elem );\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\nfunction findOrAppend( elem, tag ) {\n\treturn elem.getElementsByTagName( tag )[0] || elem.appendChild( elem.ownerDocument.createElement( tag ) );\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 cloneFixAttributes( src, dest ) {\n\tvar nodeName;\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\t// clearAttributes removes the attributes, which we don't want,\n\t// but also removes the attachEvent events, which we *do* want\n\tif ( dest.clearAttributes ) {\n\t\tdest.clearAttributes();\n\t}\n\n\t// mergeAttributes, in contrast, only merges back on the\n\t// original attributes, not the events\n\tif ( dest.mergeAttributes ) {\n\t\tdest.mergeAttributes( src );\n\t}\n\n\tnodeName = dest.nodeName.toLowerCase();\n\n\tif ( nodeName === 'object' ) {\n\t\t// IE6-10 improperly clones children of object elements using classid.\n\t\t// IE10 throws NoModificationAllowedError if parent is null, #12132.\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 ( jQuery.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.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\n\t// IE blanks contents when cloning scripts\n\t} else if ( nodeName === 'script' && dest.text !== src.text ) {\n\t\tdest.text = src.text;\n\t}\n\n\t// Event data gets referenced instead of copied if the expando\n\t// gets copied too\n\tdest.removeAttribute( jQuery.expando );\n}\n\njQuery.buildFragment = function( args, context, scripts ) {\n\tvar fragment, cacheable, cachehit,\n\t\tfirst = args[ 0 ];\n\n\t// Set context from what may come in as undefined or a jQuery collection or a node\n\t// Updated to fix #12266 where accessing context[0] could throw an exception in IE9/10 &\n\t// also doubles as fix for #8950 where plain objects caused createDocumentFragment exception\n\tcontext = context || document;\n\tcontext = !context.nodeType && context[0] || context;\n\tcontext = context.ownerDocument || context;\n\n\t// Only cache \"small\" (1/2 KB) HTML strings that are associated with the main document\n\t// Cloning options loses the selected state, so don't cache them\n\t// IE 6 doesn't like it when you put or elements in a fragment\n\t// Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache\n\t// Lastly, IE6,7,8 will not correctly reuse cached fragments that were created from unknown elems #10501\n\tif ( args.length === 1 && typeof first === 'string' && first.length < 512 && context === document &&\n\t\tfirst.charAt(0) === '<' && !rnocache.test( first ) &&\n\t\t(jQuery.support.checkClone || !rchecked.test( first )) &&\n\t\t(jQuery.support.html5Clone || !rnoshimcache.test( first )) ) {\n\n\t\t// Mark cacheable and look for a hit\n\t\tcacheable = true;\n\t\tfragment = jQuery.fragments[ first ];\n\t\tcachehit = fragment !== undefined;\n\t}\n\n\tif ( !fragment ) {\n\t\tfragment = context.createDocumentFragment();\n\t\tjQuery.clean( args, context, fragment, scripts );\n\n\t\t// Update the cache, but only store false\n\t\t// unless this is a second parsing of the same content\n\t\tif ( cacheable ) {\n\t\t\tjQuery.fragments[ first ] = cachehit && fragment;\n\t\t}\n\t}\n\n\treturn { fragment: fragment, cacheable: cacheable };\n};\n\njQuery.fragments = {};\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\tl = insert.length,\n\t\t\tparent = this.length === 1 && this[0].parentNode;\n\n\t\tif ( (parent == null || parent && parent.nodeType === 11 && parent.childNodes.length === 1) && l === 1 ) {\n\t\t\tinsert[ original ]( this[0] );\n\t\t\treturn this;\n\t\t} else {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\telems = ( i > 0 ? this.clone(true) : this ).get();\n\t\t\t\tjQuery( insert[i] )[ original ]( elems );\n\t\t\t\tret = ret.concat( elems );\n\t\t\t}\n\n\t\t\treturn this.pushStack( ret, name, insert.selector );\n\t\t}\n\t};\n});\n\nfunction getAll( elem ) {\n\tif ( typeof elem.getElementsByTagName !== 'undefined' ) {\n\t\treturn elem.getElementsByTagName( '*' );\n\n\t} else if ( typeof elem.querySelectorAll !== 'undefined' ) {\n\t\treturn elem.querySelectorAll( '*' );\n\n\t} else {\n\t\treturn [];\n\t}\n}\n\n// Used in clean, fixes the defaultChecked property\nfunction fixDefaultChecked( elem ) {\n\tif ( rcheckableType.test( elem.type ) ) {\n\t\telem.defaultChecked = elem.checked;\n\t}\n}\n\njQuery.extend({\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar srcElements,\n\t\t\tdestElements,\n\t\t\ti,\n\t\t\tclone;\n\n\t\tif ( jQuery.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 ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&\n\t\t\t\t(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {\n\t\t\t// IE copies events bound via attachEvent when using cloneNode.\n\t\t\t// Calling detachEvent on the clone will also remove the events\n\t\t\t// from the original. In order to get around this, we use some\n\t\t\t// proprietary methods to clear the events. Thanks to MooTools\n\t\t\t// guys for this hotness.\n\n\t\t\tcloneFixAttributes( elem, clone );\n\n\t\t\t// Using Sizzle here is crazy slow, so we use getElementsByTagName instead\n\t\t\tsrcElements = getAll( elem );\n\t\t\tdestElements = getAll( clone );\n\n\t\t\t// Weird iteration because IE will replace the length property\n\t\t\t// with an element if you are cloning the body and one of the\n\t\t\t// elements on the page has a name or id of \"length\"\n\t\t\tfor ( i = 0; srcElements[i]; ++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\tcloneFixAttributes( srcElements[i], 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\tcloneCopyEvent( elem, clone );\n\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = getAll( elem );\n\t\t\t\tdestElements = getAll( clone );\n\n\t\t\t\tfor ( i = 0; srcElements[i]; ++i ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[i], destElements[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tsrcElements = destElements = null;\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tclean: function( elems, context, fragment, scripts ) {\n\t\tvar i, j, elem, tag, wrap, depth, div, hasBody, tbody, len, handleScript, jsTags,\n\t\t\tsafe = context === document && safeFragment,\n\t\t\tret = [];\n\n\t\t// Ensure that context is a document\n\t\tif ( !context || typeof context.createDocumentFragment === 'undefined' ) {\n\t\t\tcontext = document;\n\t\t}\n\n\t\t// Use the already-created safe fragment if context permits\n\t\tfor ( i = 0; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( typeof elem === 'number' ) {\n\t\t\t\telem += '';\n\t\t\t}\n\n\t\t\tif ( !elem ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Convert html string into DOM nodes\n\t\t\tif ( typeof elem === 'string' ) {\n\t\t\t\tif ( !rhtml.test( elem ) ) {\n\t\t\t\t\telem = context.createTextNode( elem );\n\t\t\t\t} else {\n\t\t\t\t\t// Ensure a safe container in which to render the html\n\t\t\t\t\tsafe = safe || createSafeFragment( context );\n\t\t\t\t\tdiv = context.createElement('div');\n\t\t\t\t\tsafe.appendChild( div );\n\n\t\t\t\t\t// Fix \"XHTML\"-style tags in all browsers\n\t\t\t\t\telem = elem.replace(rxhtmlTag, '<$1>');\n\n\t\t\t\t\t// Go to html and back, then peel off extra wrappers\n\t\t\t\t\ttag = ( rtagName.exec( elem ) || ['', ''] )[1].toLowerCase();\n\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\t\tdepth = wrap[0];\n\t\t\t\t\tdiv.innerHTML = wrap[1] + elem + wrap[2];\n\n\t\t\t\t\t// Move to the right depth\n\t\t\t\t\twhile ( depth-- ) {\n\t\t\t\t\t\tdiv = div.lastChild;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remove IE's autoinserted from table fragments\n\t\t\t\t\tif ( !jQuery.support.tbody ) {\n\n\t\t\t\t\t\t// String was a , *may* have spurious \n\t\t\t\t\t\thasBody = rtbody.test(elem);\n\t\t\t\t\t\t\ttbody = tag === 'table' && !hasBody ?\n\t\t\t\t\t\t\t\tdiv.firstChild && div.firstChild.childNodes :\n\n\t\t\t\t\t\t\t\t// String was a bare or \n\t\t\t\t\t\t\t\twrap[1] === '
' && !hasBody ?\n\t\t\t\t\t\t\t\t\tdiv.childNodes :\n\t\t\t\t\t\t\t\t\t[];\n\n\t\t\t\t\t\tfor ( j = tbody.length - 1; j >= 0 ; --j ) {\n\t\t\t\t\t\t\tif ( jQuery.nodeName( tbody[ j ], 'tbody' ) && !tbody[ j ].childNodes.length ) {\n\t\t\t\t\t\t\t\ttbody[ j ].parentNode.removeChild( tbody[ j ] );\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// IE completely kills leading whitespace when innerHTML is used\n\t\t\t\t\tif ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {\n\t\t\t\t\t\tdiv.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );\n\t\t\t\t\t}\n\n\t\t\t\t\telem = div.childNodes;\n\n\t\t\t\t\t// Take out of fragment container (we need a fresh div each time)\n\t\t\t\t\tdiv.parentNode.removeChild( div );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( elem.nodeType ) {\n\t\t\t\tret.push( elem );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( ret, elem );\n\t\t\t}\n\t\t}\n\n\t\t// Fix #11356: Clear elements from safeFragment\n\t\tif ( div ) {\n\t\t\telem = div = safe = null;\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 ( !jQuery.support.appendChecked ) {\n\t\t\tfor ( i = 0; (elem = ret[i]) != null; i++ ) {\n\t\t\t\tif ( jQuery.nodeName( elem, 'input' ) ) {\n\t\t\t\t\tfixDefaultChecked( elem );\n\t\t\t\t} else if ( typeof elem.getElementsByTagName !== 'undefined' ) {\n\t\t\t\t\tjQuery.grep( elem.getElementsByTagName('input'), fixDefaultChecked );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Append elements to a provided document fragment\n\t\tif ( fragment ) {\n\t\t\t// Special handling of each script element\n\t\t\thandleScript = function( elem ) {\n\t\t\t\t// Check if we consider it executable\n\t\t\t\tif ( !elem.type || rscriptType.test( elem.type ) ) {\n\t\t\t\t\t// Detach the script and store it in the scripts array (if provided) or the fragment\n\t\t\t\t\t// Return truthy to indicate that it has been handled\n\t\t\t\t\treturn scripts ?\n\t\t\t\t\t\tscripts.push( elem.parentNode ? elem.parentNode.removeChild( elem ) : elem ) :\n\t\t\t\t\t\tfragment.appendChild( elem );\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tfor ( i = 0; (elem = ret[i]) != null; i++ ) {\n\t\t\t\t// Check if we're done after handling an executable script\n\t\t\t\tif ( !( jQuery.nodeName( elem, 'script' ) && handleScript( elem ) ) ) {\n\t\t\t\t\t// Append to fragment and handle embedded scripts\n\t\t\t\t\tfragment.appendChild( elem );\n\t\t\t\t\tif ( typeof elem.getElementsByTagName !== 'undefined' ) {\n\t\t\t\t\t\t// handleScript alters the DOM, so use jQuery.merge to ensure snapshot iteration\n\t\t\t\t\t\tjsTags = jQuery.grep( jQuery.merge( [], elem.getElementsByTagName('script') ), handleScript );\n\n\t\t\t\t\t\t// Splice the scripts into ret after their former ancestor and advance our index beyond them\n\t\t\t\t\t\tret.splice.apply( ret, [i + 1, 0].concat( jsTags ) );\n\t\t\t\t\t\ti += jsTags.length;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tcleanData: function( elems, /* internal */ acceptData ) {\n\t\tvar data, id, elem, type,\n\t\t\ti = 0,\n\t\t\tinternalKey = jQuery.expando,\n\t\t\tcache = jQuery.cache,\n\t\t\tdeleteExpando = jQuery.support.deleteExpando,\n\t\t\tspecial = jQuery.event.special;\n\n\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\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 ( elem.removeAttribute ) {\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\tjQuery.deletedIds.push( id );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n});\n// Limit scope pollution from any deprecated API\n(function() {\n\nvar matched, browser;\n\n// Use of jQuery.browser is frowned upon.\n// More details: http://api.jquery.com/jQuery.browser\n// jQuery.uaMatch maintained for back-compat\njQuery.uaMatch = function( ua ) {\n\tua = ua.toLowerCase();\n\n\tvar match = /(chrome)[ \\/]([\\w.]+)/.exec( ua ) ||\n\t\t/(webkit)[ \\/]([\\w.]+)/.exec( ua ) ||\n\t\t/(opera)(?:.*version|)[ \\/]([\\w.]+)/.exec( ua ) ||\n\t\t/(msie) ([\\w.]+)/.exec( ua ) ||\n\t\tua.indexOf('compatible') < 0 && /(mozilla)(?:.*? rv:([\\w.]+)|)/.exec( ua ) ||\n\t\t[];\n\n\treturn {\n\t\tbrowser: match[ 1 ] || '',\n\t\tversion: match[ 2 ] || '0'\n\t};\n};\n\nmatched = jQuery.uaMatch( navigator.userAgent );\nbrowser = {};\n\nif ( matched.browser ) {\n\tbrowser[ matched.browser ] = true;\n\tbrowser.version = matched.version;\n}\n\n// Chrome is Webkit, but Webkit is also Safari.\nif ( browser.chrome ) {\n\tbrowser.webkit = true;\n} else if ( browser.webkit ) {\n\tbrowser.safari = true;\n}\n\njQuery.browser = browser;\n\njQuery.sub = function() {\n\tfunction jQuerySub( selector, context ) {\n\t\treturn new jQuerySub.fn.init( selector, context );\n\t}\n\tjQuery.extend( true, jQuerySub, this );\n\tjQuerySub.superclass = this;\n\tjQuerySub.fn = jQuerySub.prototype = this();\n\tjQuerySub.fn.constructor = jQuerySub;\n\tjQuerySub.sub = this.sub;\n\tjQuerySub.fn.init = function init( selector, context ) {\n\t\tif ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {\n\t\t\tcontext = jQuerySub( context );\n\t\t}\n\n\t\treturn jQuery.fn.init.call( this, selector, context, rootjQuerySub );\n\t};\n\tjQuerySub.fn.init.prototype = jQuerySub.fn;\n\tvar rootjQuerySub = jQuerySub(document);\n\treturn jQuerySub;\n};\n\n})();\nvar curCSS, iframe, iframeDoc,\n\tralpha = /alpha\\([^)]*\\)/i,\n\tropacity = /opacity=([^)]*)/,\n\trposition = /^(top|right|bottom|left)$/,\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\trmargin = /^margin/,\n\trnumsplit = new RegExp( '^(' + core_pnum + ')(.*)$', 'i' ),\n\trnumnonpx = new RegExp( '^(' + core_pnum + ')(?!px)[a-z%]+$', 'i' ),\n\trrelNum = new RegExp( '^([-+])=(' + core_pnum + ')', 'i' ),\n\telemdisplay = {},\n\n\tcssShow = { position: 'absolute', visibility: 'hidden', display: 'block' },\n\tcssNormalTransform = {\n\t\tletterSpacing: 0,\n\t\tfontWeight: 400\n\t},\n\n\tcssExpand = [ 'Top', 'Right', 'Bottom', 'Left' ],\n\tcssPrefixes = [ 'Webkit', 'O', 'Moz', 'ms' ],\n\n\teventsToggle = jQuery.fn.toggle;\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 isHidden( elem, el ) {\n\telem = el || elem;\n\treturn jQuery.css( elem, 'display' ) === 'none' || !jQuery.contains( elem.ownerDocument, elem );\n}\n\nfunction showHide( elements, show ) {\n\tvar elem, display,\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\t\tvalues[ index ] = jQuery._data( elem, 'olddisplay' );\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 ] && elem.style.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', css_defaultDisplay(elem.nodeName) );\n\t\t\t}\n\t\t} else {\n\t\t\tdisplay = curCSS( elem, 'display' );\n\n\t\t\tif ( !values[ index ] && display !== 'none' ) {\n\t\t\t\tjQuery._data( elem, 'olddisplay', 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\njQuery.fn.extend({\n\tcss: function( name, value ) {\n\t\treturn jQuery.access( this, function( elem, name, value ) {\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, fn2 ) {\n\t\tvar bool = typeof state === 'boolean';\n\n\t\tif ( jQuery.isFunction( state ) && jQuery.isFunction( fn2 ) ) {\n\t\t\treturn eventsToggle.apply( this, arguments );\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( bool ? state : 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\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\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Exclude the following css properties to add px\n\tcssNumber: {\n\t\t'fillOpacity': true,\n\t\t'fontWeight': true,\n\t\t'lineHeight': true,\n\t\t'opacity': 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': jQuery.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 NaN and null values aren't set. See: #7116\n\t\t\tif ( value == null || type === 'number' && isNaN( 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// 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\t\t\t\t// Wrapped to prevent IE from throwing errors when 'invalid' values are provided\n\t\t\t\t// Fixes bug #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, numeric, extra ) {\n\t\tvar val, num, 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 );\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 ( numeric || extra !== undefined ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn numeric || jQuery.isNumeric( num ) ? num || 0 : val;\n\t\t}\n\t\treturn val;\n\t},\n\n\t// A method for quickly swapping in/out CSS properties to get correct calculations\n\tswap: function( elem, options, callback ) {\n\t\tvar ret, name,\n\t\t\told = {};\n\n\t\t// Remember the old values, and insert the new ones\n\t\tfor ( name in options ) {\n\t\t\told[ name ] = elem.style[ name ];\n\t\t\telem.style[ name ] = options[ name ];\n\t\t}\n\n\t\tret = callback.call( elem );\n\n\t\t// Revert the old values\n\t\tfor ( name in options ) {\n\t\t\telem.style[ name ] = old[ name ];\n\t\t}\n\n\t\treturn ret;\n\t}\n});\n\n// NOTE: To any future maintainer, we've window.getComputedStyle\n// because jsdom on node.js will break without it.\nif ( window.getComputedStyle ) {\n\tcurCSS = function( elem, name ) {\n\t\tvar ret, width, minWidth, maxWidth,\n\t\t\tcomputed = window.getComputedStyle( elem, null ),\n\t\t\tstyle = elem.style;\n\n\t\tif ( computed ) {\n\n\t\t\tret = computed[ name ];\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\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\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\t\tret = computed.width;\n\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\treturn ret;\n\t};\n} else if ( document.documentElement.currentStyle ) {\n\tcurCSS = function( elem, name ) {\n\t\tvar left, rsLeft,\n\t\t\tret = elem.currentStyle && elem.currentStyle[ name ],\n\t\t\tstyle = elem.style;\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\trsLeft = elem.runtimeStyle && elem.runtimeStyle.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\telem.runtimeStyle.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\telem.runtimeStyle.left = rsLeft;\n\t\t\t}\n\t\t}\n\n\t\treturn ret === '' ? 'auto' : ret;\n\t};\n}\n\nfunction setPositiveNumber( elem, value, subtract ) {\n\tvar matches = rnumsplit.exec( value );\n\treturn matches ?\n\t\t\tMath.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || 'px' ) :\n\t\t\tvalue;\n}\n\nfunction augmentWidthOrHeight( elem, name, extra, isBorderBox ) {\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\t// we use jQuery.css instead of curCSS here\n\t\t\t// because of the reliableMarginRight CSS hook!\n\t\t\tval += jQuery.css( elem, extra + cssExpand[ i ], true );\n\t\t}\n\n\t\t// From this point on we use curCSS for maximum performance (relevant in animations)\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 -= parseFloat( curCSS( elem, 'padding' + cssExpand[ i ] ) ) || 0;\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 -= parseFloat( curCSS( elem, 'border' + cssExpand[ i ] + 'Width' ) ) || 0;\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 += parseFloat( curCSS( elem, 'padding' + cssExpand[ i ] ) ) || 0;\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 += parseFloat( curCSS( elem, 'border' + cssExpand[ i ] + 'Width' ) ) || 0;\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 val = name === 'width' ? elem.offsetWidth : elem.offsetHeight,\n\t\tvalueIsBorderBox = true,\n\t\tisBorderBox = jQuery.support.boxSizing && jQuery.css( elem, 'boxSizing' ) === '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 );\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 && ( jQuery.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)\n\t) + 'px';\n}\n\n\n// Try to determine the default display value of an element\nfunction css_defaultDisplay( nodeName ) {\n\tif ( elemdisplay[ nodeName ] ) {\n\t\treturn elemdisplay[ nodeName ];\n\t}\n\n\tvar elem = jQuery( '<' + nodeName + '>' ).appendTo( document.body ),\n\t\tdisplay = elem.css('display');\n\telem.remove();\n\n\t// If the simple way fails,\n\t// get element's real default display by attaching it to a temp iframe\n\tif ( display === 'none' || display === '' ) {\n\t\t// Use the already-created iframe if possible\n\t\tiframe = document.body.appendChild(\n\t\t\tiframe || jQuery.extend( document.createElement('iframe'), {\n\t\t\t\tframeBorder: 0,\n\t\t\t\twidth: 0,\n\t\t\t\theight: 0\n\t\t\t})\n\t\t);\n\n\t\t// Create a cacheable copy of the iframe document on first call.\n\t\t// IE and Opera will allow us to reuse the iframeDoc without re-writing the fake HTML\n\t\t// document to it; WebKit & Firefox won't allow reusing the iframe document.\n\t\tif ( !iframeDoc || !iframe.createElement ) {\n\t\t\tiframeDoc = ( iframe.contentWindow || iframe.contentDocument ).document;\n\t\t\tiframeDoc.write('');\n\t\t\tiframeDoc.close();\n\t\t}\n\n\t\telem = iframeDoc.body.appendChild( iframeDoc.createElement(nodeName) );\n\n\t\tdisplay = curCSS( elem, 'display' );\n\t\tdocument.body.removeChild( iframe );\n\t}\n\n\t// Store the correct default display\n\telemdisplay[ nodeName ] = display;\n\n\treturn display;\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\tif ( elem.offsetWidth === 0 && rdisplayswap.test( curCSS( elem, 'display' ) ) ) {\n\t\t\t\t\treturn jQuery.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} else {\n\t\t\t\t\treturn getWidthOrHeight( elem, name, extra );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\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\tjQuery.support.boxSizing && jQuery.css( elem, 'boxSizing' ) === 'border-box'\n\t\t\t\t) : 0\n\t\t\t);\n\t\t}\n\t};\n});\n\nif ( !jQuery.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\tif ( value >= 1 && jQuery.trim( filter.replace( ralpha, '' ) ) === '' &&\n\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 there is no filter style applied in a css rule, we are done\n\t\t\t\tif ( 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\n// These hooks cannot be added until DOM ready because the support test\n// for it is not run until after DOM ready\njQuery(function() {\n\tif ( !jQuery.support.reliableMarginRight ) {\n\t\tjQuery.cssHooks.marginRight = {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\t\t\t// Work around by temporarily setting element display to inline-block\n\t\t\t\treturn jQuery.swap( elem, { 'display': 'inline-block' }, function() {\n\t\t\t\t\tif ( computed ) {\n\t\t\t\t\t\treturn curCSS( elem, 'marginRight' );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\t}\n\n\t// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n\t// getComputedStyle returns percent when specified for top/left/bottom/right\n\t// rather than make the css module depend on the offset module, we just check for it here\n\tif ( !jQuery.support.pixelPosition && jQuery.fn.position ) {\n\t\tjQuery.each( [ 'top', 'left' ], function( i, prop ) {\n\t\t\tjQuery.cssHooks[ prop ] = {\n\t\t\t\tget: function( elem, computed ) {\n\t\t\t\t\tif ( computed ) {\n\t\t\t\t\t\tvar ret = curCSS( elem, prop );\n\t\t\t\t\t\t// if curCSS returns percentage, fallback to offset\n\t\t\t\t\t\treturn rnumnonpx.test( ret ) ? jQuery( elem ).position()[ prop ] + 'px' : ret;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t});\n\t}\n\n});\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.hidden = function( elem ) {\n\t\treturn ( elem.offsetWidth === 0 && elem.offsetHeight === 0 ) || (!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || curCSS( elem, 'display' )) === 'none');\n\t};\n\n\tjQuery.expr.filters.visible = function( elem ) {\n\t\treturn !jQuery.expr.filters.hidden( elem );\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,\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\t\t\t\texpanded = {};\n\n\t\t\tfor ( i = 0; 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});\nvar r20 = /%20/g,\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trinput = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,\n\trselectTextarea = /^(?:select|textarea)/i;\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\treturn this.elements ? jQuery.makeArray( this.elements ) : this;\n\t\t})\n\t\t.filter(function(){\n\t\t\treturn this.name && !this.disabled &&\n\t\t\t\t( this.checked || rselectTextarea.test( this.nodeName ) ||\n\t\t\t\t\trinput.test( this.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, i ){\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//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\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// If array item is non-scalar (array or object), encode its\n\t\t\t\t// numeric index to resolve deserialization ambiguity issues.\n\t\t\t\t// Note that rack (as of 1.0.0) can't currently deserialize\n\t\t\t\t// nested arrays properly, and attempting to do so may cause\n\t\t\t\t// a server error. Possible fixes are to modify rack's\n\t\t\t\t// deserialization algorithm or to provide an option or flag\n\t\t\t\t// to force array serialization to be shallow.\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}\nvar\n\t// Document location\n\tajaxLocParts,\n\tajaxLocation,\n\n\trhash = /#.*$/,\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\trquery = /\\?/,\n\trscript = /)<[^<]*)*<\\/script>/gi,\n\trts = /([?&])_=[^&]*/,\n\trurl = /^([\\w\\+\\.\\-]+:)(?:\\/\\/([^\\/?#:]*)(?::(\\d+)|)|)/,\n\n\t// Keep a copy of the old load method\n\t_load = jQuery.fn.load,\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 = ['*/'] + ['*'];\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, list, placeBefore,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().split( core_rspace ),\n\t\t\ti = 0,\n\t\t\tlength = dataTypes.length;\n\n\t\tif ( jQuery.isFunction( func ) ) {\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tdataType = dataTypes[ i ];\n\t\t\t\t// We control if we're asked to add before\n\t\t\t\t// any existing element\n\t\t\t\tplaceBefore = /^\\+/.test( dataType );\n\t\t\t\tif ( placeBefore ) {\n\t\t\t\t\tdataType = dataType.substr( 1 ) || '*';\n\t\t\t\t}\n\t\t\t\tlist = structure[ dataType ] = structure[ dataType ] || [];\n\t\t\t\t// then we add to the structure accordingly\n\t\t\t\tlist[ placeBefore ? 'unshift' : 'push' ]( func );\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\t\tdataType /* internal */, inspected /* internal */ ) {\n\n\tdataType = dataType || options.dataTypes[ 0 ];\n\tinspected = inspected || {};\n\n\tinspected[ dataType ] = true;\n\n\tvar selection,\n\t\tlist = structure[ dataType ],\n\t\ti = 0,\n\t\tlength = list ? list.length : 0,\n\t\texecuteOnly = ( structure === prefilters );\n\n\tfor ( ; i < length && ( executeOnly || !selection ); i++ ) {\n\t\tselection = list[ i ]( options, originalOptions, jqXHR );\n\t\t// If we got redirected to another dataType\n\t\t// we try there if executing only and not done already\n\t\tif ( typeof selection === 'string' ) {\n\t\t\tif ( !executeOnly || inspected[ selection ] ) {\n\t\t\t\tselection = undefined;\n\t\t\t} else {\n\t\t\t\toptions.dataTypes.unshift( selection );\n\t\t\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\t\t\tstructure, options, originalOptions, jqXHR, selection, inspected );\n\t\t\t}\n\t\t}\n\t}\n\t// If we're only executing or nothing was selected\n\t// we try the catchall dataType if not done already\n\tif ( ( executeOnly || !selection ) && !inspected[ '*' ] ) {\n\t\tselection = inspectPrefiltersOrTransports(\n\t\t\t\tstructure, options, originalOptions, jqXHR, '*', inspected );\n\t}\n\t// unnecessary when only executing (prefilters)\n\t// but it'll be ignored by the caller in that case\n\treturn selection;\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\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\njQuery.fn.load = function( url, params, callback ) {\n\tif ( typeof url !== 'string' && _load ) {\n\t\treturn _load.apply( this, arguments );\n\t}\n\n\t// Don't do a request if no elements are being requested\n\tif ( !this.length ) {\n\t\treturn this;\n\t}\n\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf(' ');\n\n\tif ( off >= 0 ) {\n\t\tselector = 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// Request the remote document\n\tjQuery.ajax({\n\t\turl: url,\n\n\t\t// if \"type\" variable is undefined, then \"GET\" method will be used\n\t\ttype: type,\n\t\tdataType: 'html',\n\t\tdata: params,\n\t\tcomplete: function( jqXHR, status ) {\n\t\t\tif ( callback ) {\n\t\t\t\tself.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t}\n\t\t}\n\t}).done(function( responseText ) {\n\n\t\t// Save response for use in complete callback\n\t\tresponse = arguments;\n\n\t\t// See if a selector was specified\n\t\tself.html( selector ?\n\n\t\t\t// Create a dummy div to hold the results\n\t\t\tjQuery('
')\n\n\t\t\t\t// inject the contents of the document in, removing the scripts\n\t\t\t\t// to avoid any 'Permission Denied' errors in IE\n\t\t\t\t.append( responseText.replace( rscript, '' ) )\n\n\t\t\t\t// Locate the specified elements\n\t\t\t\t.find( selector ) :\n\n\t\t\t// If not, just inject the full result\n\t\t\tresponseText );\n\n\t});\n\n\treturn this;\n};\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( 'ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend'.split( ' ' ), function( i, o ){\n\tjQuery.fn[ o ] = function( f ){\n\t\treturn this.on( o, f );\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\ttype: method,\n\t\t\turl: url,\n\t\t\tdata: data,\n\t\t\tsuccess: callback,\n\t\t\tdataType: type\n\t\t});\n\t};\n});\n\njQuery.extend({\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, 'script' );\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, 'json' );\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\tif ( settings ) {\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( target, jQuery.ajaxSettings );\n\t\t} else {\n\t\t\t// Extending ajaxSettings\n\t\t\tsettings = target;\n\t\t\ttarget = jQuery.ajaxSettings;\n\t\t}\n\t\tajaxExtend( target, settings );\n\t\treturn target;\n\t},\n\n\tajaxSettings: {\n\t\turl: ajaxLocation,\n\t\tisLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),\n\t\tglobal: true,\n\t\ttype: 'GET',\n\t\tcontentType: 'application/x-www-form-urlencoded; charset=UTF-8',\n\t\tprocessData: true,\n\t\tasync: true,\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\txml: 'application/xml, text/xml',\n\t\t\thtml: 'text/html',\n\t\t\ttext: 'text/plain',\n\t\t\tjson: 'application/json, text/javascript',\n\t\t\t'*': allTypes\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},\n\n\t\t// List of data converters\n\t\t// 1) key format is \"source_type destination_type\" (a single space in-between)\n\t\t// 2) the catchall symbol \"*\" can be used for source_type\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t'* text': window.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\tcontext: true,\n\t\t\turl: true\n\t\t}\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 // ifModified key\n\t\t\tifModifiedKey,\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\t\t\t// transport\n\t\t\ttransport,\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\t\t\t// Cross-domain detection vars\n\t\t\tparts,\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\t\t\t// Loop variable\n\t\t\ti,\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\n\t\t\t// It's the callbackContext if one was provided in the options\n\t\t\t// and if it's a DOM node or a jQuery collection\n\t\t\tglobalEventContext = callbackContext !== s &&\n\t\t\t\t( callbackContext.nodeType || callbackContext instanceof jQuery ) ?\n\t\t\t\t\t\tjQuery( callbackContext ) : jQuery.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\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\tvar lname = name.toLowerCase();\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// 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// 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 === undefined ? null : match;\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// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tstatusText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( statusText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, statusText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Callback for when everything is done\n\t\t// It is defined here because jslint complains if it is declared\n\t\t// at the end of the function (which would be more logical and readable)\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// 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// If successful, handle type chaining\n\t\t\tif ( status >= 200 && status < 300 || status === 304 ) {\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\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[ ifModifiedKey ] = 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[ ifModifiedKey ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// If not modified\n\t\t\t\tif ( status === 304 ) {\n\n\t\t\t\t\tstatusText = 'notmodified';\n\t\t\t\t\tisSuccess = true;\n\n\t\t\t\t// If we have data\n\t\t\t\t} else {\n\n\t\t\t\t\tisSuccess = ajaxConvert( s, response );\n\t\t\t\t\tstatusText = isSuccess.state;\n\t\t\t\t\tsuccess = isSuccess.data;\n\t\t\t\t\terror = isSuccess.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 ( !statusText || status ) {\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( 'ajax' + ( isSuccess ? 'Success' : 'Error' ),\n\t\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\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\t\tjqXHR.success = jqXHR.done;\n\t\tjqXHR.error = jqXHR.fail;\n\t\tjqXHR.complete = completeDeferred.add;\n\n\t\t// Status-dependent callbacks\n\t\tjqXHR.statusCode = function( map ) {\n\t\t\tif ( map ) {\n\t\t\t\tvar tmp;\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tfor ( tmp in map ) {\n\t\t\t\t\t\tstatusCode[ tmp ] = [ statusCode[tmp], map[tmp] ];\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\ttmp = map[ jqXHR.status ];\n\t\t\t\t\tjqXHR.always( tmp );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this;\n\t\t};\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// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url ) + '' ).replace( rhash, '' ).replace( rprotocol, ajaxLocParts[ 1 ] + '//' );\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = jQuery.trim( s.dataType || '*' ).toLowerCase().split( core_rspace );\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() ) || false;\n\t\t\ts.crossDomain = parts && ( parts.join(':') + ( parts[ 3 ] ? '' : parts[ 1 ] === 'http:' ? 80 : 443 ) ) !==\n\t\t\t\t( ajaxLocParts.join(':') + ( ajaxLocParts[ 3 ] ? '' : ajaxLocParts[ 1 ] === 'http:' ? 80 : 443 ) );\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\tfireGlobals = s.global;\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// 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// 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\ts.url += ( rquery.test( s.url ) ? '&' : '?' ) + 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// Get ifModifiedKey before adding the anti-cache parameter\n\t\t\tifModifiedKey = s.url;\n\n\t\t\t// Add anti-cache in url if needed\n\t\t\tif ( s.cache === false ) {\n\n\t\t\t\tvar ts = jQuery.now(),\n\t\t\t\t\t// try replacing _= if it is there\n\t\t\t\t\tret = s.url.replace( rts, '$1_=' + ts );\n\n\t\t\t\t// if nothing was replaced, add timestamp to the end\n\t\t\t\ts.url = ret + ( ( ret === s.url ) ? ( rquery.test( s.url ) ? '&' : '?' ) + '_=' + ts : '' );\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 If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tifModifiedKey = ifModifiedKey || s.url;\n\t\t\tif ( jQuery.lastModified[ ifModifiedKey ] ) {\n\t\t\t\tjqXHR.setRequestHeader( 'If-Modified-Since', jQuery.lastModified[ ifModifiedKey ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ ifModifiedKey ] ) {\n\t\t\t\tjqXHR.setRequestHeader( 'If-None-Match', jQuery.etag[ ifModifiedKey ] );\n\t\t\t}\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\t// Abort if not done already and return\n\t\t\t\treturn jqXHR.abort();\n\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\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\treturn jqXHR;\n\t},\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});\n\n/* Handles responses to an ajax request:\n * - sets all responseXXX fields accordingly\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes,\n\t\tresponseFields = s.responseFields;\n\n\t// Fill responseXXX fields\n\tfor ( type in responseFields ) {\n\t\tif ( type in responses ) {\n\t\t\tjqXHR[ responseFields[type] ] = responses[ type ];\n\t\t}\n\t}\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\nfunction ajaxConvert( s, response ) {\n\n\tvar conv, conv2, current, tmp,\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\t\tprev = dataTypes[ 0 ],\n\t\tconverters = {},\n\t\ti = 0;\n\n\t// Apply the dataFilter if provided\n\tif ( s.dataFilter ) {\n\t\tresponse = s.dataFilter( response, s.dataType );\n\t}\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\t// Convert to each sequential dataType, tolerating list modification\n\tfor ( ; (current = dataTypes[++i]); ) {\n\n\t\t// There's only work to do if current dataType is non-auto\n\t\tif ( current !== '*' ) {\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\tif ( 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.splice( i--, 0, current );\n\t\t\t\t\t\t\t\t}\n\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\n\t\t\t// Update prev for next iteration\n\t\t\tprev = current;\n\t\t}\n\t}\n\n\treturn { state: 'success', data: response };\n}\nvar oldCallbacks = [],\n\trquestion = /\\?/,\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/,\n\tnonce = jQuery.now();\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\tdata = s.data,\n\t\turl = s.url,\n\t\thasCallback = s.jsonp !== false,\n\t\treplaceInUrl = hasCallback && rjsonp.test( url ),\n\t\treplaceInData = hasCallback && !replaceInUrl && typeof data === 'string' &&\n\t\t\t!( s.contentType || '' ).indexOf('application/x-www-form-urlencoded') &&\n\t\t\trjsonp.test( data );\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( s.dataTypes[ 0 ] === 'jsonp' || replaceInUrl || replaceInData ) {\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\t\toverwritten = window[ callbackName ];\n\n\t\t// Insert callback into url or form data\n\t\tif ( replaceInUrl ) {\n\t\t\ts.url = url.replace( rjsonp, '$1' + callbackName );\n\t\t} else if ( replaceInData ) {\n\t\t\ts.data = data.replace( rjsonp, '$1' + callbackName );\n\t\t} else if ( hasCallback ) {\n\t\t\ts.url += ( rquestion.test( 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\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// 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: /javascript|ecmascript/\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 || document.getElementsByTagName( '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 = 'async';\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 ( head && script.parentNode ) {\n\t\t\t\t\t\t\thead.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 = undefined;\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\t\t\t\t// Use insertBefore instead of appendChild to circumvent an IE6 bug.\n\t\t\t\t// This arises when a base node is used (#2709 and #4378).\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( 0, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n});\nvar xhrCallbacks,\n\t// #5280: Internet Explorer will keep connections alive if we don't abort on unload\n\txhrOnUnloadAbort = window.ActiveXObject ? function() {\n\t\t// Abort all pending requests\n\t\tfor ( var key in xhrCallbacks ) {\n\t\t\txhrCallbacks[ key ]( 0, 1 );\n\t\t}\n\t} : false,\n\txhrId = 0;\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// Create the request object\n// (This is still attached to ajaxSettings for backward compatibility)\njQuery.ajaxSettings.xhr = window.ActiveXObject ?\n\t/* Microsoft failed to properly\n\t * implement the XMLHttpRequest in IE7 (can't request local files),\n\t * so we use the ActiveXObject when it is available\n\t * Additionally XMLHttpRequest can be disabled in IE7/IE8 so\n\t * we need a fallback.\n\t */\n\tfunction() {\n\t\treturn !this.isLocal && createStandardXHR() || createActiveXHR();\n\t} :\n\t// For all other browsers, use the standard XMLHttpRequest object\n\tcreateStandardXHR;\n\n// Determine support properties\n(function( xhr ) {\n\tjQuery.extend( jQuery.support, {\n\t\tajax: !!xhr,\n\t\tcors: !!xhr && ( 'withCredentials' in xhr )\n\t});\n})( jQuery.ajaxSettings.xhr() );\n\n// Create transport if the browser can provide an xhr\nif ( jQuery.support.ajax ) {\n\n\tjQuery.ajaxTransport(function( s ) {\n\t\t// Cross domain only allowed if supported through XMLHttpRequest\n\t\tif ( !s.crossDomain || jQuery.support.cors ) {\n\n\t\t\tvar callback;\n\n\t\t\treturn {\n\t\t\t\tsend: function( headers, complete ) {\n\n\t\t\t\t\t// Get a new xhr\n\t\t\t\t\tvar handle, i,\n\t\t\t\t\t\txhr = s.xhr();\n\n\t\t\t\t\t// Open the socket\n\t\t\t\t\t// Passing null username, generates a login popup on Opera (#2865)\n\t\t\t\t\tif ( s.username ) {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async, s.username, s.password );\n\t\t\t\t\t} else {\n\t\t\t\t\t\txhr.open( s.type, s.url, s.async );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Apply custom fields if provided\n\t\t\t\t\tif ( s.xhrFields ) {\n\t\t\t\t\t\tfor ( i in s.xhrFields ) {\n\t\t\t\t\t\t\txhr[ i ] = s.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 ( s.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\t\txhr.overrideMimeType( s.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 ( !s.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// Need an extra try/catch for cross domain requests in Firefox 3\n\t\t\t\t\ttry {\n\t\t\t\t\t\tfor ( i in headers ) {\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} catch( _ ) {}\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( ( s.hasContent && s.data ) || null );\n\n\t\t\t\t\t// Listener\n\t\t\t\t\tcallback = function( _, isAbort ) {\n\n\t\t\t\t\t\tvar status,\n\t\t\t\t\t\t\tstatusText,\n\t\t\t\t\t\t\tresponseHeaders,\n\t\t\t\t\t\t\tresponses,\n\t\t\t\t\t\t\txml;\n\n\t\t\t\t\t\t// Firefox throws exceptions when accessing properties\n\t\t\t\t\t\t// of an xhr when a network error occurred\n\t\t\t\t\t\t// http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)\n\t\t\t\t\t\ttry {\n\n\t\t\t\t\t\t\t// Was never called and is aborted or complete\n\t\t\t\t\t\t\tif ( callback && ( isAbort || xhr.readyState === 4 ) ) {\n\n\t\t\t\t\t\t\t\t// Only called once\n\t\t\t\t\t\t\t\tcallback = undefined;\n\n\t\t\t\t\t\t\t\t// Do not keep as active anymore\n\t\t\t\t\t\t\t\tif ( handle ) {\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = jQuery.noop;\n\t\t\t\t\t\t\t\t\tif ( xhrOnUnloadAbort ) {\n\t\t\t\t\t\t\t\t\t\tdelete xhrCallbacks[ handle ];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// If it's an abort\n\t\t\t\t\t\t\t\tif ( isAbort ) {\n\t\t\t\t\t\t\t\t\t// Abort it manually if needed\n\t\t\t\t\t\t\t\t\tif ( xhr.readyState !== 4 ) {\n\t\t\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tstatus = xhr.status;\n\t\t\t\t\t\t\t\t\tresponseHeaders = xhr.getAllResponseHeaders();\n\t\t\t\t\t\t\t\t\tresponses = {};\n\t\t\t\t\t\t\t\t\txml = xhr.responseXML;\n\n\t\t\t\t\t\t\t\t\t// Construct response list\n\t\t\t\t\t\t\t\t\tif ( xml && xml.documentElement /* #4958 */ ) {\n\t\t\t\t\t\t\t\t\t\tresponses.xml = xml;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// When requesting binary data, IE6-9 will throw an exception\n\t\t\t\t\t\t\t\t\t// on any attempt to access responseText (#11426)\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tresponses.text = xhr.responseText;\n\t\t\t\t\t\t\t\t\t} catch( _ ) {\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Firefox throws an exception when accessing\n\t\t\t\t\t\t\t\t\t// statusText for faulty cross-domain requests\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tstatusText = xhr.statusText;\n\t\t\t\t\t\t\t\t\t} catch( e ) {\n\t\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\t\tstatusText = '';\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Filter status for non standard behaviors\n\n\t\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\t// (success with no data won't get notified, that's the best we\n\t\t\t\t\t\t\t\t\t// can do given current implementations)\n\t\t\t\t\t\t\t\t\tif ( !status && s.isLocal && !s.crossDomain ) {\n\t\t\t\t\t\t\t\t\t\tstatus = responses.text ? 200 : 404;\n\t\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\t} else if ( status === 1223 ) {\n\t\t\t\t\t\t\t\t\t\tstatus = 204;\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} catch( firefoxAccessException ) {\n\t\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\t\tcomplete( -1, firefoxAccessException );\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, responseHeaders );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\tif ( !s.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, 0 );\n\t\t\t\t\t} else {\n\t\t\t\t\t\thandle = ++xhrId;\n\t\t\t\t\t\tif ( xhrOnUnloadAbort ) {\n\t\t\t\t\t\t\t// Create the active xhrs callbacks list if needed\n\t\t\t\t\t\t\t// and attach the unload handler\n\t\t\t\t\t\t\tif ( !xhrCallbacks ) {\n\t\t\t\t\t\t\t\txhrCallbacks = {};\n\t\t\t\t\t\t\t\tjQuery( window ).unload( xhrOnUnloadAbort );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// Add to list of active xhrs callbacks\n\t\t\t\t\t\t\txhrCallbacks[ handle ] = callback;\n\t\t\t\t\t\t}\n\t\t\t\t\t\txhr.onreadystatechange = 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(0,1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t});\n}\nvar fxNow, timerId,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trfxnum = new RegExp( '^(?:([-+])=|)(' + core_pnum + ')([a-z%]*)$', 'i' ),\n\trrun = /queueHooks$/,\n\tanimationPrefilters = [ defaultPrefilter ],\n\ttweeners = {\n\t\t'*': [function( prop, value ) {\n\t\t\tvar end, unit,\n\t\t\t\ttween = this.createTween( prop, value ),\n\t\t\t\tparts = rfxnum.exec( value ),\n\t\t\t\ttarget = tween.cur(),\n\t\t\t\tstart = +target || 0,\n\t\t\t\tscale = 1,\n\t\t\t\tmaxIterations = 20;\n\n\t\t\tif ( parts ) {\n\t\t\t\tend = +parts[2];\n\t\t\t\tunit = parts[3] || ( jQuery.cssNumber[ prop ] ? '' : 'px' );\n\n\t\t\t\t// We need to compute starting value\n\t\t\t\tif ( unit !== 'px' && start ) {\n\t\t\t\t\t// Iteratively approximate from a nonzero starting point\n\t\t\t\t\t// Prefer the current property, because this process will be trivial if it uses the same units\n\t\t\t\t\t// Fallback to end or a simple constant\n\t\t\t\t\tstart = jQuery.css( tween.elem, prop, true ) || end || 1;\n\n\t\t\t\t\tdo {\n\t\t\t\t\t\t// If previous iteration zeroed out, double until we get *something*\n\t\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\t\tscale = scale || '.5';\n\n\t\t\t\t\t\t// Adjust and apply\n\t\t\t\t\t\tstart = start / scale;\n\t\t\t\t\t\tjQuery.style( tween.elem, prop, start + unit );\n\n\t\t\t\t\t// Update scale, tolerating zero or NaN from tween.cur()\n\t\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\t} while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );\n\t\t\t\t}\n\n\t\t\t\ttween.unit = unit;\n\t\t\t\ttween.start = start;\n\t\t\t\t// If a +=/-= token was provided, we're doing a relative animation\n\t\t\t\ttween.end = parts[1] ? start + ( parts[1] + 1 ) * end : end;\n\t\t\t}\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}, 0 );\n\treturn ( fxNow = jQuery.now() );\n}\n\nfunction createTweens( animation, props ) {\n\tjQuery.each( props, function( prop, value ) {\n\t\tvar collection = ( tweeners[ prop ] || [] ).concat( tweeners[ '*' ] ),\n\t\t\tindex = 0,\n\t\t\tlength = collection.length;\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tif ( collection[ index ].call( animation, prop, value ) ) {\n\n\t\t\t\t// we're done with this property\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tindex = 0,\n\t\ttweenerIndex = 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\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\t\t\t\tpercent = 1 - ( remaining / animation.duration || 0 ),\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, easing ) {\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\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\tcreateTweens( animation, props );\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\tanim: animation,\n\t\t\tqueue: animation.opts.queue,\n\t\t\telem: elem\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\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\njQuery.Animation = jQuery.extend( Animation, {\n\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\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar index, prop, value, length, dataShow, tween, hooks, oldfire,\n\t\tanim = this,\n\t\tstyle = elem.style,\n\t\torig = {},\n\t\thandled = [],\n\t\thidden = elem.nodeType && isHidden( elem );\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\tif ( jQuery.css( elem, 'display' ) === 'inline' &&\n\t\t\t\tjQuery.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 ( !jQuery.support.inlineBlockNeedsLayout || css_defaultDisplay( elem.nodeName ) === 'inline' ) {\n\t\t\t\tstyle.display = 'inline-block';\n\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 ( !jQuery.support.shrinkWrapBlocks ) {\n\t\t\tanim.done(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\n\t// show/hide pass\n\tfor ( index in props ) {\n\t\tvalue = props[ index ];\n\t\tif ( rfxtypes.exec( value ) ) {\n\t\t\tdelete props[ index ];\n\t\t\tif ( value === ( hidden ? 'hide' : 'show' ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\thandled.push( index );\n\t\t}\n\t}\n\n\tlength = handled.length;\n\tif ( length ) {\n\t\tdataShow = jQuery._data( elem, 'fxshow' ) || jQuery._data( elem, 'fxshow', {} );\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', true );\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 ( index = 0 ; index < length ; index++ ) {\n\t\t\tprop = handled[ index ];\n\t\t\ttween = anim.createTween( prop, hidden ? dataShow[ prop ] : 0 );\n\t\t\torig[ prop ] = dataShow[ prop ] || jQuery.style( elem, prop );\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\t}\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 any value as a 4th 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, false, '' );\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// Remove in 2.0 - this supports IE8's panic based approach\n// 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.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\t// special check for .toggle( handler, handler, ... )\n\t\t\t( !i && jQuery.isFunction( speed ) && jQuery.isFunction( easing ) ) ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\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 resolve immediately\n\t\t\t\tif ( empty ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\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});\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\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.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.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.timers = [];\njQuery.fx = Tween.prototype.init;\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ttimers = jQuery.timers,\n\t\ti = 0;\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};\n\njQuery.fx.timer = function( timer ) {\n\tif ( timer() && jQuery.timers.push( timer ) && !timerId ) {\n\t\ttimerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );\n\t}\n};\n\njQuery.fx.interval = 13;\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// Back Compat <1.8 extension point\njQuery.fx.step = {};\n\nif ( jQuery.expr && jQuery.expr.filters ) {\n\tjQuery.expr.filters.animated = function( elem ) {\n\t\treturn jQuery.grep(jQuery.timers, function( fn ) {\n\t\t\treturn elem === fn.elem;\n\t\t}).length;\n\t};\n}\nvar rroot = /^(?:body|html)$/i;\n\njQuery.fn.offset = function( options ) {\n\tif ( arguments.length ) {\n\t\treturn options === undefined ?\n\t\t\tthis :\n\t\t\tthis.each(function( i ) {\n\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t});\n\t}\n\n\tvar docElem, body, win, clientTop, clientLeft, scrollTop, scrollLeft,\n\t\tbox = { top: 0, left: 0 },\n\t\telem = this[ 0 ],\n\t\tdoc = elem && elem.ownerDocument;\n\n\tif ( !doc ) {\n\t\treturn;\n\t}\n\n\tif ( (body = doc.body) === elem ) {\n\t\treturn jQuery.offset.bodyOffset( elem );\n\t}\n\n\tdocElem = doc.documentElement;\n\n\t// Make sure it's not a disconnected DOM node\n\tif ( !jQuery.contains( docElem, elem ) ) {\n\t\treturn box;\n\t}\n\n\t// If we don't have gBCR, just use 0,0 rather than error\n\t// BlackBerry 5, iOS 3 (original iPhone)\n\tif ( typeof elem.getBoundingClientRect !== 'undefined' ) {\n\t\tbox = elem.getBoundingClientRect();\n\t}\n\twin = getWindow( doc );\n\tclientTop = docElem.clientTop || body.clientTop || 0;\n\tclientLeft = docElem.clientLeft || body.clientLeft || 0;\n\tscrollTop = win.pageYOffset || docElem.scrollTop;\n\tscrollLeft = win.pageXOffset || docElem.scrollLeft;\n\treturn {\n\t\ttop: box.top + scrollTop - clientTop,\n\t\tleft: box.left + scrollLeft - clientLeft\n\t};\n};\n\njQuery.offset = {\n\n\tbodyOffset: function( body ) {\n\t\tvar top = body.offsetTop,\n\t\t\tleft = body.offsetLeft;\n\n\t\tif ( jQuery.support.doesNotIncludeMarginInBodyOffset ) {\n\t\t\ttop += parseFloat( jQuery.css(body, 'marginTop') ) || 0;\n\t\t\tleft += parseFloat( jQuery.css(body, 'marginLeft') ) || 0;\n\t\t}\n\n\t\treturn { top: top, left: left };\n\t},\n\n\tsetOffset: function( elem, options, i ) {\n\t\tvar position = jQuery.css( elem, 'position' );\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\tvar curElem = jQuery( elem ),\n\t\t\tcurOffset = curElem.offset(),\n\t\t\tcurCSSTop = jQuery.css( elem, 'top' ),\n\t\t\tcurCSSLeft = jQuery.css( elem, 'left' ),\n\t\t\tcalculatePosition = ( position === 'absolute' || position === 'fixed' ) && jQuery.inArray('auto', [curCSSTop, curCSSLeft]) > -1,\n\t\t\tprops = {}, curPosition = {}, curTop, curLeft;\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\n\njQuery.fn.extend({\n\n\tposition: function() {\n\t\tif ( !this[0] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar elem = this[0],\n\n\t\t// Get *real* offsetParent\n\t\toffsetParent = this.offsetParent(),\n\n\t\t// Get correct offsets\n\t\toffset = this.offset(),\n\t\tparentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();\n\n\t\t// Subtract 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\toffset.top -= parseFloat( jQuery.css(elem, 'marginTop') ) || 0;\n\t\toffset.left -= parseFloat( jQuery.css(elem, 'marginLeft') ) || 0;\n\n\t\t// Add offsetParent borders\n\t\tparentOffset.top += parseFloat( jQuery.css(offsetParent[0], 'borderTopWidth') ) || 0;\n\t\tparentOffset.left += parseFloat( jQuery.css(offsetParent[0], 'borderLeftWidth') ) || 0;\n\n\t\t// Subtract the two offsets\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top,\n\t\t\tleft: offset.left - parentOffset.left\n\t\t};\n\t},\n\n\toffsetParent: function() {\n\t\treturn this.map(function() {\n\t\t\tvar offsetParent = this.offsetParent || document.body;\n\t\t\twhile ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, 'position') === 'static') ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\t\t\treturn offsetParent || document.body;\n\t\t});\n\t}\n});\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 jQuery.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\t top ? 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\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// 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 jQuery.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, value, 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// Expose jQuery to the global object\nwindow.jQuery = window.$ = jQuery;\n\n// Expose jQuery as an AMD module, but only for AMD loaders that\n// understand the issues with loading multiple versions of jQuery\n// in a page that all might call define(). The loader will indicate\n// they have special allowances for multiple jQuery versions by\n// specifying define.amd.jQuery = true. Register as a named module,\n// since jQuery can be concatenated with other files that may use define,\n// but not use a proper concatenation script that understands anonymous\n// AMD modules. A named AMD is safest and most robust way to register.\n// Lowercase jquery is used because AMD module names are derived from\n// file names, and jQuery is normally delivered in a lowercase file name.\n// Do this after creating the global so that if an AMD module wants to call\n// noConflict to hide this version of jQuery, it will work.\nif ( typeof define === 'function' && define.amd && define.amd.jQuery ) {\n\tdefine( 'jquery', [], function () { return jQuery; } );\n}\n\n})( window );\n","/*!\n * Bootstrap v3.2.0 (http://getbootstrap.com)\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\nif (typeof jQuery === 'undefined') { throw new Error('Bootstrap\\'s JavaScript requires jQuery') }\n\n/* ========================================================================\n * Bootstrap: transition.js v3.2.0\n * http://getbootstrap.com/javascript/#transitions\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n '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 return false // explicit for ie8 ( ._.)\n }\n\n // http://blog.alexmaccaw.com/css-transitions\n $.fn.emulateTransitionEnd = function (duration) {\n var called = false\n var $el = this\n $(this).one('bsTransitionEnd', 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 if (!$.support.transition) return\n\n $.event.special.bsTransitionEnd = {\n bindType: $.support.transition.end,\n delegateType: $.support.transition.end,\n handle: function (e) {\n if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)\n }\n }\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: alert.js v3.2.0\n * http://getbootstrap.com/javascript/#alerts\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n '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.VERSION = '3.2.0'\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 // detach from parent, fire event then clean up data\n $parent.detach().trigger('closed.bs.alert').remove()\n }\n\n $.support.transition && $parent.hasClass('fade') ?\n $parent\n .one('bsTransitionEnd', removeElement)\n .emulateTransitionEnd(150) :\n removeElement()\n }\n\n\n // ALERT PLUGIN DEFINITION\n // =======================\n\n function Plugin(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 var old = $.fn.alert\n\n $.fn.alert = Plugin\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.2.0\n * http://getbootstrap.com/javascript/#buttons\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n '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 this.isLoading = false\n }\n\n Button.VERSION = '3.2.0'\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 == null) $el.data('resetText', $el[val]())\n\n $el[val](data[state] == null ? this.options[state] : data[state])\n\n // push to event loop to allow forms to submit\n setTimeout($.proxy(function () {\n if (state == 'loadingText') {\n this.isLoading = true\n $el.addClass(d).attr(d, d)\n } else if (this.isLoading) {\n this.isLoading = false\n $el.removeClass(d).removeAttr(d)\n }\n }, this), 0)\n }\n\n Button.prototype.toggle = function () {\n var changed = true\n var $parent = this.$element.closest('[data-toggle=\"buttons\"]')\n\n if ($parent.length) {\n var $input = this.$element.find('input')\n if ($input.prop('type') == 'radio') {\n if ($input.prop('checked') && this.$element.hasClass('active')) changed = false\n else $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 function Plugin(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 var old = $.fn.button\n\n $.fn.button = Plugin\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 Plugin.call($btn, 'toggle')\n e.preventDefault()\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: carousel.js v3.2.0\n * http://getbootstrap.com/javascript/#carousel\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // CAROUSEL CLASS DEFINITION\n // =========================\n\n var Carousel = function (element, options) {\n this.$element = $(element).on('keydown.bs.carousel', $.proxy(this.keydown, this))\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.bs.carousel', $.proxy(this.pause, this))\n .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))\n }\n\n Carousel.VERSION = '3.2.0'\n\n Carousel.DEFAULTS = {\n interval: 5000,\n pause: 'hover',\n wrap: true\n }\n\n Carousel.prototype.keydown = function (e) {\n switch (e.which) {\n case 37: this.prev(); break\n case 39: this.next(); break\n default: return\n }\n\n e.preventDefault()\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.getItemIndex = function (item) {\n this.$items = item.parent().children('.item')\n return this.$items.index(item || this.$active)\n }\n\n Carousel.prototype.to = function (pos) {\n var that = this\n var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))\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) }) // yes, \"slid\"\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) {\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 if ($next.hasClass('active')) return (this.sliding = false)\n\n var relatedTarget = $next[0]\n var slideEvent = $.Event('slide.bs.carousel', {\n relatedTarget: relatedTarget,\n direction: direction\n })\n this.$element.trigger(slideEvent)\n if (slideEvent.isDefaultPrevented()) return\n\n this.sliding = true\n\n isCycling && this.pause()\n\n if (this.$indicators.length) {\n this.$indicators.find('.active').removeClass('active')\n var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])\n $nextIndicator && $nextIndicator.addClass('active')\n }\n\n var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, \"slid\"\n if ($.support.transition && this.$element.hasClass('slide')) {\n $next.addClass(type)\n $next[0].offsetWidth // force reflow\n $active.addClass(direction)\n $next.addClass(direction)\n $active\n .one('bsTransitionEnd', function () {\n $next.removeClass([type, direction].join(' ')).addClass('active')\n $active.removeClass(['active', direction].join(' '))\n that.sliding = false\n setTimeout(function () {\n that.$element.trigger(slidEvent)\n }, 0)\n })\n .emulateTransitionEnd($active.css('transition-duration').slice(0, -1) * 1000)\n } else {\n $active.removeClass('active')\n $next.addClass('active')\n this.sliding = false\n this.$element.trigger(slidEvent)\n }\n\n isCycling && this.cycle()\n\n return this\n }\n\n\n // CAROUSEL PLUGIN DEFINITION\n // ==========================\n\n function Plugin(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 var old = $.fn.carousel\n\n $.fn.carousel = Plugin\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 href\n var $this = $(this)\n var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '')) // strip for ie7\n if (!$target.hasClass('carousel')) return\n var options = $.extend({}, $target.data(), $this.data())\n var slideIndex = $this.attr('data-slide-to')\n if (slideIndex) options.interval = false\n\n Plugin.call($target, options)\n\n if (slideIndex) {\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 Plugin.call($carousel, $carousel.data())\n })\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: collapse.js v3.2.0\n * http://getbootstrap.com/javascript/#collapse\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n '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.VERSION = '3.2.0'\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 Plugin.call(actives, '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')[dimension](0)\n\n this.transitioning = 1\n\n var complete = function () {\n this.$element\n .removeClass('collapsing')\n .addClass('collapse in')[dimension]('')\n this.transitioning = 0\n this.$element\n .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('bsTransitionEnd', $.proxy(complete, this))\n .emulateTransitionEnd(350)[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[dimension](this.$element[dimension]())[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('bsTransitionEnd', $.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 function Plugin(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 && options.toggle && option == 'show') option = !option\n if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.collapse\n\n $.fn.collapse = Plugin\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 href\n var $this = $(this)\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 Plugin.call($target, option)\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: dropdown.js v3.2.0\n * http://getbootstrap.com/javascript/#dropdowns\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n '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.VERSION = '3.2.0'\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 $('
').insertAfter($(this)).on('click', clearMenus)\n }\n\n var relatedTarget = { relatedTarget: this }\n $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))\n\n if (e.isDefaultPrevented()) return\n\n $this.trigger('focus')\n\n $parent\n .toggleClass('open')\n .trigger('shown.bs.dropdown', relatedTarget)\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).trigger('focus')\n return $this.trigger('click')\n }\n\n var desc = ' li:not(.divider):visible a'\n var $items = $parent.find('[role=\"menu\"]' + desc + ', [role=\"listbox\"]' + desc)\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).trigger('focus')\n }\n\n function clearMenus(e) {\n if (e && e.which === 3) return\n $(backdrop).remove()\n $(toggle).each(function () {\n var $parent = getParent($(this))\n var relatedTarget = { relatedTarget: this }\n if (!$parent.hasClass('open')) return\n $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))\n if (e.isDefaultPrevented()) return\n $parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget)\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 && /#[A-Za-z]/.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 function Plugin(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 var old = $.fn.dropdown\n\n $.fn.dropdown = Plugin\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\"], [role=\"listbox\"]', Dropdown.prototype.keydown)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: modal.js v3.2.0\n * http://getbootstrap.com/javascript/#modals\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // MODAL CLASS DEFINITION\n // ======================\n\n var Modal = function (element, options) {\n this.options = options\n this.$body = $(document.body)\n this.$element = $(element)\n this.$backdrop =\n this.isShown = null\n this.scrollbarWidth = 0\n\n if (this.options.remote) {\n this.$element\n .find('.modal-content')\n .load(this.options.remote, $.proxy(function () {\n this.$element.trigger('loaded.bs.modal')\n }, this))\n }\n }\n\n Modal.VERSION = '3.2.0'\n\n Modal.DEFAULTS = {\n backdrop: true,\n keyboard: true,\n show: true\n }\n\n Modal.prototype.toggle = function (_relatedTarget) {\n return this.isShown ? this.hide() : this.show(_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.checkScrollbar()\n this.$body.addClass('modal-open')\n\n this.setScrollbar()\n this.escape()\n\n this.$element.on('click.dismiss.bs.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(that.$body) // don't move modals dom position\n }\n\n that.$element\n .show()\n .scrollTop(0)\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('bsTransitionEnd', function () {\n that.$element.trigger('focus').trigger(e)\n })\n .emulateTransitionEnd(300) :\n that.$element.trigger('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.$body.removeClass('modal-open')\n\n this.resetScrollbar()\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.bs.modal')\n\n $.support.transition && this.$element.hasClass('fade') ?\n this.$element\n .one('bsTransitionEnd', $.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.trigger('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.$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 = $('
')\n .appendTo(this.$body)\n\n this.$element.on('click.dismiss.bs.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('bsTransitionEnd', callback)\n .emulateTransitionEnd(150) :\n callback()\n\n } else if (!this.isShown && this.$backdrop) {\n this.$backdrop.removeClass('in')\n\n var callbackRemove = function () {\n that.removeBackdrop()\n callback && callback()\n }\n $.support.transition && this.$element.hasClass('fade') ?\n this.$backdrop\n .one('bsTransitionEnd', callbackRemove)\n .emulateTransitionEnd(150) :\n callbackRemove()\n\n } else if (callback) {\n callback()\n }\n }\n\n Modal.prototype.checkScrollbar = function () {\n if (document.body.clientWidth >= window.innerWidth) return\n this.scrollbarWidth = this.scrollbarWidth || this.measureScrollbar()\n }\n\n Modal.prototype.setScrollbar = function () {\n var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)\n if (this.scrollbarWidth) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)\n }\n\n Modal.prototype.resetScrollbar = function () {\n this.$body.css('padding-right', '')\n }\n\n Modal.prototype.measureScrollbar = function () { // thx walsh\n var scrollDiv = document.createElement('div')\n scrollDiv.className = 'modal-scrollbar-measure'\n this.$body.append(scrollDiv)\n var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth\n this.$body[0].removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n\n // MODAL PLUGIN DEFINITION\n // =======================\n\n function Plugin(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 var old = $.fn.modal\n\n $.fn.modal = Plugin\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('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())\n\n if ($this.is('a')) e.preventDefault()\n\n $target.one('show.bs.modal', function (showEvent) {\n if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown\n $target.one('hidden.bs.modal', function () {\n $this.is(':visible') && $this.trigger('focus')\n })\n })\n Plugin.call($target, option, this)\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: tooltip.js v3.2.0\n * http://getbootstrap.com/javascript/#tooltip\n * Inspired by the original jQuery.tipsy by Jason Frame\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n '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.VERSION = '3.2.0'\n\n Tooltip.DEFAULTS = {\n animation: true,\n placement: 'top',\n selector: false,\n template: '
',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n container: false,\n viewport: {\n selector: 'body',\n padding: 0\n }\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 this.$viewport = this.options.viewport && $(this.options.viewport.selector || this.options.viewport)\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' : 'focusin'\n var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'\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).data('bs.' + this.type)\n\n if (!self) {\n self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n $(obj.currentTarget).data('bs.' + this.type, self)\n }\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).data('bs.' + this.type)\n\n if (!self) {\n self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n $(obj.currentTarget).data('bs.' + this.type, self)\n }\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 var inDom = $.contains(document.documentElement, this.$element[0])\n if (e.isDefaultPrevented() || !inDom) return\n var that = this\n\n var $tip = this.tip()\n\n var tipId = this.getUID(this.type)\n\n this.setContent()\n $tip.attr('id', tipId)\n this.$element.attr('aria-describedby', tipId)\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 .data('bs.' + this.type, this)\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 orgPlacement = placement\n var $parent = this.$element.parent()\n var parentDim = this.getPosition($parent)\n\n placement = placement == 'bottom' && pos.top + pos.height + actualHeight - parentDim.scroll > parentDim.height ? 'top' :\n placement == 'top' && pos.top - parentDim.scroll - actualHeight < 0 ? 'bottom' :\n placement == 'right' && pos.right + actualWidth > parentDim.width ? 'left' :\n placement == 'left' && pos.left - actualWidth < parentDim.left ? '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\n var complete = function () {\n that.$element.trigger('shown.bs.' + that.type)\n that.hoverState = null\n }\n\n $.support.transition && this.$tip.hasClass('fade') ?\n $tip\n .one('bsTransitionEnd', complete)\n .emulateTransitionEnd(150) :\n complete()\n }\n }\n\n Tooltip.prototype.applyPlacement = function (offset, placement) {\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 // $.fn.offset doesn't round pixel values\n // so we use setOffset directly with our own function B-0\n $.offset.setOffset($tip[0], $.extend({\n using: function (props) {\n $tip.css({\n top: Math.round(props.top),\n left: Math.round(props.left)\n })\n }\n }, offset), 0)\n\n $tip.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 offset.top = offset.top + height - actualHeight\n }\n\n var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)\n\n if (delta.left) offset.left += delta.left\n else offset.top += delta.top\n\n var arrowDelta = delta.left ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight\n var arrowPosition = delta.left ? 'left' : 'top'\n var arrowOffsetPosition = delta.left ? 'offsetWidth' : 'offsetHeight'\n\n $tip.offset(offset)\n this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], arrowPosition)\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 this.$element.removeAttr('aria-describedby')\n\n function complete() {\n if (that.hoverState != 'in') $tip.detach()\n that.$element.trigger('hidden.bs.' + that.type)\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('bsTransitionEnd', complete)\n .emulateTransitionEnd(150) :\n complete()\n\n this.hoverState = null\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 ($element) {\n $element = $element || this.$element\n var el = $element[0]\n var isBody = el.tagName == 'BODY'\n return $.extend({}, (typeof el.getBoundingClientRect == 'function') ? el.getBoundingClientRect() : null, {\n scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop(),\n width: isBody ? $(window).width() : $element.outerWidth(),\n height: isBody ? $(window).height() : $element.outerHeight()\n }, isBody ? { top: 0, left: 0 } : $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\n Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {\n var delta = { top: 0, left: 0 }\n if (!this.$viewport) return delta\n\n var viewportPadding = this.options.viewport && this.options.viewport.padding || 0\n var viewportDimensions = this.getPosition(this.$viewport)\n\n if (/right|left/.test(placement)) {\n var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll\n var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight\n if (topEdgeOffset < viewportDimensions.top) { // top overflow\n delta.top = viewportDimensions.top - topEdgeOffset\n } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow\n delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset\n }\n } else {\n var leftEdgeOffset = pos.left - viewportPadding\n var rightEdgeOffset = pos.left + viewportPadding + actualWidth\n if (leftEdgeOffset < viewportDimensions.left) { // left overflow\n delta.left = viewportDimensions.left - leftEdgeOffset\n } else if (rightEdgeOffset > viewportDimensions.width) { // right overflow\n delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset\n }\n }\n\n return delta\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.getUID = function (prefix) {\n do prefix += ~~(Math.random() * 1000000)\n while (document.getElementById(prefix))\n return prefix\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 = this\n if (e) {\n self = $(e.currentTarget).data('bs.' + this.type)\n if (!self) {\n self = new this.constructor(e.currentTarget, this.getDelegateOptions())\n $(e.currentTarget).data('bs.' + this.type, self)\n }\n }\n\n self.tip().hasClass('in') ? self.leave(self) : self.enter(self)\n }\n\n Tooltip.prototype.destroy = function () {\n clearTimeout(this.timeout)\n this.hide().$element.off('.' + this.type).removeData('bs.' + this.type)\n }\n\n\n // TOOLTIP PLUGIN DEFINITION\n // =========================\n\n function Plugin(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 && option == 'destroy') return\n if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.tooltip\n\n $.fn.tooltip = Plugin\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.2.0\n * http://getbootstrap.com/javascript/#popovers\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n '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.VERSION = '3.2.0'\n\n Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '

'\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').empty()[ // we use append for html objects to maintain js events\n this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'\n ](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 function Plugin(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 && option == 'destroy') return\n if (!data) $this.data('bs.popover', (data = new Popover(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.popover\n\n $.fn.popover = Plugin\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.2.0\n * http://getbootstrap.com/javascript/#scrollspy\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // SCROLLSPY CLASS DEFINITION\n // ==========================\n\n function ScrollSpy(element, options) {\n var process = $.proxy(this.process, this)\n\n this.$body = $('body')\n this.$scrollElement = $(element).is('body') ? $(window) : $(element)\n this.options = $.extend({}, ScrollSpy.DEFAULTS, options)\n this.selector = (this.options.target || '') + ' .nav li > a'\n this.offsets = []\n this.targets = []\n this.activeTarget = null\n this.scrollHeight = 0\n\n this.$scrollElement.on('scroll.bs.scrollspy', process)\n this.refresh()\n this.process()\n }\n\n ScrollSpy.VERSION = '3.2.0'\n\n ScrollSpy.DEFAULTS = {\n offset: 10\n }\n\n ScrollSpy.prototype.getScrollHeight = function () {\n return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)\n }\n\n ScrollSpy.prototype.refresh = function () {\n var offsetMethod = 'offset'\n var offsetBase = 0\n\n if (!$.isWindow(this.$scrollElement[0])) {\n offsetMethod = 'position'\n offsetBase = this.$scrollElement.scrollTop()\n }\n\n this.offsets = []\n this.targets = []\n this.scrollHeight = this.getScrollHeight()\n\n var self = this\n\n 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 = /^#./.test(href) && $(href)\n\n return ($href\n && $href.length\n && $href.is(':visible')\n && [[$href[offsetMethod]().top + offsetBase, 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.getScrollHeight()\n var maxScroll = this.options.offset + 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 (this.scrollHeight != scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)\n }\n\n if (activeTarget && scrollTop <= offsets[0]) {\n return activeTarget != (i = targets[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 .parentsUntil(this.options.target, '.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 function Plugin(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 var old = $.fn.scrollspy\n\n $.fn.scrollspy = Plugin\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.bs.scrollspy.data-api', function () {\n $('[data-spy=\"scroll\"]').each(function () {\n var $spy = $(this)\n Plugin.call($spy, $spy.data())\n })\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: tab.js v3.2.0\n * http://getbootstrap.com/javascript/#tabs\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // TAB CLASS DEFINITION\n // ====================\n\n var Tab = function (element) {\n this.element = $(element)\n }\n\n Tab.VERSION = '3.2.0'\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.closest('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('bsTransitionEnd', next)\n .emulateTransitionEnd(150) :\n next()\n\n $active.removeClass('in')\n }\n\n\n // TAB PLUGIN DEFINITION\n // =====================\n\n function Plugin(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 var old = $.fn.tab\n\n $.fn.tab = Plugin\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 Plugin.call($(this), 'show')\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: affix.js v3.2.0\n * http://getbootstrap.com/javascript/#affix\n * ========================================================================\n * Copyright 2011-2014 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // AFFIX CLASS DEFINITION\n // ======================\n\n var Affix = function (element, options) {\n this.options = $.extend({}, Affix.DEFAULTS, options)\n\n this.$target = $(this.options.target)\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 =\n this.pinnedOffset = null\n\n this.checkPosition()\n }\n\n Affix.VERSION = '3.2.0'\n\n Affix.RESET = 'affix affix-top affix-bottom'\n\n Affix.DEFAULTS = {\n offset: 0,\n target: window\n }\n\n Affix.prototype.getPinnedOffset = function () {\n if (this.pinnedOffset) return this.pinnedOffset\n this.$element.removeClass(Affix.RESET).addClass('affix')\n var scrollTop = this.$target.scrollTop()\n var position = this.$element.offset()\n return (this.pinnedOffset = position.top - scrollTop)\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.$target.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(this.$element)\n if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)\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 != null) this.$element.css('top', '')\n\n var affixType = 'affix' + (affix ? '-' + affix : '')\n var e = $.Event(affixType + '.bs.affix')\n\n this.$element.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n this.affixed = affix\n this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null\n\n this.$element\n .removeClass(Affix.RESET)\n .addClass(affixType)\n .trigger($.Event(affixType.replace('affix', 'affixed')))\n\n if (affix == 'bottom') {\n this.$element.offset({\n top: scrollHeight - this.$element.height() - offsetBottom\n })\n }\n }\n\n\n // AFFIX PLUGIN DEFINITION\n // =======================\n\n function Plugin(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 var old = $.fn.affix\n\n $.fn.affix = Plugin\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 Plugin.call($spy, data)\n })\n })\n\n}(jQuery);\n"],"names":["window","undefined","rootjQuery","readyList","document","location","navigator","_jQuery","_$","core_push","core_slice","core_indexOf","core_toString","core_hasOwn","core_trim","jQuery","selector","context","core_pnum","core_rnotwhite","core_rspace","rtrim","rquickExpr","rsingleTag","rvalidchars","rvalidbraces","rvalidescape","rvalidtokens","rmsPrefix","rdashAlpha","fcamelCase","all","letter","DOMContentLoaded","class2type","match","elem","doc","num","elems","name","ret","callback","args","fn","i","options","src","copy","copyIsArray","clone","target","length","deep","hold","wait","obj","key","msg","data","scripts","parsed","xml","tmp","string","isObj","text","arr","results","type","len","first","second","l","j","inv","retVal","arg","value","isArray","proxy","chainable","emptyGet","pass","exec","bulk","top","doScrollCheck","optionsCache","createOptions","object","_","flag","memory","fired","firing","firingStart","firingLength","firingIndex","list","stack","fire","self","start","add","index","func","tuples","state","promise","deferred","fns","newDefer","tuple","action","returned","stateString","subordinate","resolveValues","remaining","updateFunc","contexts","values","progressValues","progressContexts","resolveContexts","support","a","select","opt","input","fragment","eventName","isSupported","clickFn","div","container","tds","marginDiv","divReset","body","rbrace","rmultiDash","isEmptyDataObject","pvt","thisCache","internalKey","getByName","isNode","cache","id","noData","parts","part","attr","dataAttr","queue","startLength","hooks","next","setter","time","timeout","count","defer","elements","resolve","nodeHook","boolHook","fixSpecified","rclass","rreturn","rtype","rfocusable","rclickable","rboolean","getSetAttribute","classNames","setClass","c","cl","removes","className","stateVal","isBool","isFunction","val","max","option","one","notxml","nType","propName","attrNames","attributeNode","attrNode","property","parent","rformElems","rtypenamespace","rhoverHack","rkeyEvent","rmouseEvent","rfocusMorph","hoverHack","events","types","handler","elemData","eventHandle","t","tns","namespaces","handleObj","handleObjIn","handlers","special","e","mappedTypes","origType","origCount","eventType","event","onlyHandlers","exclusive","cur","old","ontype","handle","eventPath","bubbleType","selMatch","matched","matches","sel","delegateCount","run_all","handlerQueue","original","eventDoc","button","fromElement","prop","originalEvent","fixHook","bubble","props","returnTrue","returnFalse","orig","fix","related","form","attaches","origFn","guid","toggler","lastToggle","fnOver","fnOut","cachedruns","assertGetIdNotName","Expr","getText","isXML","contains","compile","sortOrder","hasDuplicate","outermostContext","baseHasDuplicate","strundefined","expando","Token","docElem","dirruns","done","pop","push","slice","indexOf","markFunction","createCache","keys","classCache","tokenCache","compilerCache","whitespace","characterEncoding","identifier","operators","attributes","pseudos","pos","rcomma","rcombinators","rpseudo","rsibling","rheader","rinputs","rbackslash","matchExpr","assert","assertTagNameNoComments","assertHrefNotNormalized","assertAttributes","assertUsableClassName","assertUsableName","Sizzle","seed","m","nodeType","expr","createInputPseudo","createButtonPseudo","createPositionalPseudo","argument","matchIndexes","node","documentElement","b","adown","bup","tag","unquoted","excess","tokenize","nodeName","pattern","operator","check","result","last","diff","pseudo","idx","matcher","unmatched","siblingCheck","al","bl","ap","bp","aup","parseOnly","tokens","soFar","groups","preFilters","cached","addCombinator","combinator","base","dir","checkNonElements","doneName","dirkey","cachedkey","elementMatcher","matchers","condense","map","filter","newUnmatched","mapped","setMatcher","preFilter","postFilter","postFinder","postSelector","postFilterIn","preMap","postMap","preexisting","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","expandContext","setMatched","matchedCount","outermost","contextBackup","dirrunsUnique","group","token","find","disconnectedMatch","oldSelect","rescape","rattributeQuotes","rbuggyQSA","rbuggyMatches","nid","newContext","newSelector","setFilters","runtil","rparentsprev","isSimple","rneedsContext","guaranteedUnique","n","r","targets","winnow","selectors","set","isDisconnected","sibling","until","not","qualifier","keep","filtered","createSafeFragment","nodeNames","safeFrag","rinlinejQuery","rleadingWhitespace","rxhtmlTag","rtagName","rtbody","rhtml","rnoInnerhtml","rnocache","rnoshimcache","rcheckableType","rchecked","rscriptType","rcleanScript","wrapMap","safeFragment","fragmentDiv","html","wrap","contents","keepData","dataAndEvents","deepDataAndEvents","table","iNoClone","findOrAppend","cloneCopyEvent","dest","oldData","curData","cloneFixAttributes","cacheable","cachehit","insert","getAll","fixDefaultChecked","srcElements","destElements","depth","hasBody","tbody","handleScript","jsTags","safe","acceptData","deleteExpando","browser","ua","jQuerySub","rootjQuerySub","curCSS","iframe","iframeDoc","ralpha","ropacity","rposition","rdisplayswap","rmargin","rnumsplit","rnumnonpx","rrelNum","elemdisplay","cssShow","cssNormalTransform","cssExpand","cssPrefixes","eventsToggle","vendorPropName","style","capName","origName","isHidden","el","showHide","show","display","css_defaultDisplay","fn2","bool","computed","extra","numeric","width","minWidth","maxWidth","left","rsLeft","setPositiveNumber","subtract","augmentWidthOrHeight","isBorderBox","getWidthOrHeight","valueIsBorderBox","currentStyle","opacity","prefix","suffix","expanded","r20","rbracket","rCRLF","rinput","rselectTextarea","traditional","s","buildParams","v","ajaxLocParts","ajaxLocation","rhash","rheaders","rlocalProtocol","rnoContent","rprotocol","rquery","rscript","rts","rurl","_load","prefilters","transports","allTypes","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","placeBefore","dataTypes","inspectPrefiltersOrTransports","originalOptions","jqXHR","inspected","selection","executeOnly","ajaxExtend","flatOptions","url","params","response","off","status","responseText","o","f","method","settings","ifModifiedKey","responseHeadersString","responseHeaders","transport","timeoutTimer","fireGlobals","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","lname","statusText","nativeStatusText","responses","headers","isSuccess","success","error","modified","ajaxHandleResponses","ajaxConvert","ts","ct","finalDataType","firstDataType","responseFields","conv","conv2","current","prev","converters","oldCallbacks","rquestion","rjsonp","nonce","originalSettings","callbackName","overwritten","responseContainer","hasCallback","replaceInUrl","replaceInData","script","head","isAbort","xhrCallbacks","xhrOnUnloadAbort","xhrId","createStandardXHR","createActiveXHR","xhr","complete","firefoxAccessException","fxNow","timerId","rfxtypes","rfxnum","rrun","animationPrefilters","defaultPrefilter","tweeners","end","unit","tween","scale","maxIterations","createFxNow","createTweens","animation","collection","Animation","properties","tick","currentTime","percent","easing","gotoEnd","propFilter","specialEasing","prepend","opts","dataShow","oldfire","anim","handled","hidden","Tween","eased","cssFn","speed","genFx","to","empty","optall","doAnimation","clearQueue","stopQueue","stop","dequeue","timers","includeWidth","which","attrs","p","timer","rroot","win","clientTop","clientLeft","scrollTop","scrollLeft","box","getWindow","position","curElem","curOffset","curCSSTop","curCSSLeft","calculatePosition","curPosition","curTop","curLeft","offsetParent","offset","parentOffset","defaultExtra","funcName","margin","$","transitionEnd","transEndEventNames","duration","called","$el","dismiss","Alert","$this","$parent","removeElement","Plugin","Button","element","d","changed","$input","$btn","Carousel","item","that","activeIndex","$active","$next","isCycling","direction","fallback","relatedTarget","slideEvent","$nextIndicator","slidEvent","href","$target","slideIndex","$carousel","Collapse","hasWidth","startEvent","actives","hasData","dimension","scrollSize","backdrop","toggle","Dropdown","getParent","isActive","clearMenus","desc","$items","Modal","_relatedTarget","transition","animate","doAnimate","callbackRemove","bodyPad","scrollDiv","scrollbarWidth","showEvent","Tooltip","triggers","trigger","eventIn","eventOut","defaults","inDom","$tip","tipId","placement","autoToken","autoPlace","actualWidth","actualHeight","orgPlacement","parentDim","calculatedOffset","height","marginTop","marginLeft","delta","arrowDelta","arrowPosition","arrowOffsetPosition","title","$e","$element","isBody","viewportPadding","viewportDimensions","topEdgeOffset","bottomEdgeOffset","leftEdgeOffset","rightEdgeOffset","Popover","content","ScrollSpy","process","offsetMethod","offsetBase","$href","scrollHeight","maxScroll","offsets","activeTarget","active","$spy","Tab","$ul","previous","Affix","offsetTop","offsetBottom","affix","affixType"],"mappings":"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"}