{"id":6355,"artifact_id":6002,"version":1,"data":{"version":1,"artifact":{"chain":"tezos","title":"Tezos Current Price","artist":"tz1WtuA6uNVk6KCS9DLj6XJ4NvWJ2eraygJW","tokenId":"162624","description":"This widget shows Tezos Current Price","contractAddress":"KT1RJ6PbjHpwc3M5rw5s2Nbmefwbuwbdxton"},"snapshot":{"net":[{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmRYxuaq52kVZsZXor1vj9bkPg1bLaRKc96sYy29z7kP68?creator=tz1WtuA6uNVk6KCS9DLj6XJ4NvWJ2eraygJW&viewer=&objkt=162624","host":"ipfs.arkivo.art","path":"/ipfs/QmRYxuaq52kVZsZXor1vj9bkPg1bLaRKc96sYy29z7kP68","type":"http","query":"?creator=tz1WtuA6uNVk6KCS9DLj6XJ4NvWJ2eraygJW&viewer=&objkt=162624","method":"GET","headers":{"sec-ch-ua":"\"HeadlessChrome\";v=\"119\", \"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/119.0.6045.9 Safari/537.36","sec-ch-ua-mobile":"?0","sec-ch-ua-platform":"\"Linux\"","upgrade-insecure-requests":"1"},"fragment":"","postData":null,"protocol":"https:"},"type":1,"external":false,"timestamp":1723864869951},{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmRYxuaq52kVZsZXor1vj9bkPg1bLaRKc96sYy29z7kP68?creator=tz1WtuA6uNVk6KCS9DLj6XJ4NvWJ2eraygJW&viewer=&objkt=162624","body":"","status":200,"headers":{"date":"Sat, 17 Aug 2024 03:21:10 GMT","etag":"\"QmRYxuaq52kVZsZXor1vj9bkPg1bLaRKc96sYy29z7kP68\"","server":"nginx/1.27.0","connection":"keep-alive","x-ipfs-path":"/ipfs/QmRYxuaq52kVZsZXor1vj9bkPg1bLaRKc96sYy29z7kP68","content-type":"image/svg+xml","x-ipfs-roots":"QmRYxuaq52kVZsZXor1vj9bkPg1bLaRKc96sYy29z7kP68","accept-ranges":"bytes","cache-control":"public, max-age=29030400, immutable","content-length":"621","access-control-allow-origin":"*","access-control-allow-headers":"Content-Type\nRange\nUser-Agent\nX-Requested-With","access-control-allow-methods":"GET\nHEAD\nOPTIONS","access-control-expose-headers":"Content-Length\nContent-Range\nX-Chunked-Output\nX-Ipfs-Path\nX-Ipfs-Roots\nX-Stream-Output"}},"type":2,"external":false,"timestamp":1723864870090},{"data":{"url":"https://arjunkrishna.github.io/cryptoPrices/tezos.html","host":"arjunkrishna.github.io","path":"/cryptoPrices/tezos.html","type":"http","query":"","method":"GET","headers":{"referer":"https://ipfs.arkivo.art/","sec-ch-ua":"\"HeadlessChrome\";v=\"119\", \"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/119.0.6045.9 Safari/537.36","sec-ch-ua-mobile":"?0","sec-ch-ua-platform":"\"Linux\"","upgrade-insecure-requests":"1"},"fragment":"","postData":null,"protocol":"https:"},"type":1,"external":true,"timestamp":1723864870137},{"data":{"url":"https://code.jquery.com/jquery-3.5.0.js","host":"code.jquery.com","path":"/jquery-3.5.0.js","type":"http","query":"","method":"GET","headers":{"referer":"https://arjunkrishna.github.io/","sec-ch-ua":"\"HeadlessChrome\";v=\"119\", \"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/119.0.6045.9 Safari/537.36","sec-ch-ua-mobile":"?0","sec-ch-ua-platform":"\"Linux\""},"fragment":"","postData":null,"protocol":"https:"},"type":1,"external":true,"timestamp":1723864870317},{"data":{"url":"https://arjunkrishna.github.io/cryptoPrices/Tezoslogo.png","host":"arjunkrishna.github.io","path":"/cryptoPrices/Tezoslogo.png","type":"http","query":"","method":"GET","headers":{"referer":"https://arjunkrishna.github.io/cryptoPrices/tezos.html","sec-ch-ua":"\"HeadlessChrome\";v=\"119\", \"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/119.0.6045.9 Safari/537.36","sec-ch-ua-mobile":"?0","sec-ch-ua-platform":"\"Linux\""},"fragment":"","postData":null,"protocol":"https:"},"type":1,"external":true,"timestamp":1723864870317},{"data":{"url":"https://arjunkrishna.github.io/cryptoPrices/tezos.html","body":"\"<!DOCTYPE html>\\n<html>\\n<head>\\n <meta http-equiv=\\\\\\\"refresh\\\\\\\" content=\\\\\\\"60\\\\\\\">\\n <script src=\\\\\\\"https://code.jquery.com/jquery-3.5.0.js\\\\\\\"></script>\\n <style>\\n     .card {\\n  /* Add shadows to create the \\\\\\\"card\\\\\\\" effect */\\n  box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2);\\n  transition: 0.3s;\\n}\\n\\n/* On mouse-over, add a deeper shadow */\\n.card:hover {\\n  box-shadow: 0 8px 16px 0 rgba(0,0,0,0.2);\\n}\\n\\n/* Add some padding inside the card container */\\n.container {\\n  padding: 2px 16px;\\n  background-color: aliceblue\\n  }\\n  \\n  .center {\\n  display: block;\\n  margin-left: auto;\\n  margin-right: auto;\\n  width: 50%;\\n}\\n\\n.move-area{/*normally use body*/\\n  width: 20vw;\\n  height: 2vh;  \\n}\\n.eyecontainer {\\n  width: 100%;\\n}\\n.eye {\\n  position: relative;\\n  display: inline-block;\\n  border-radius: 50%;\\n  height: 30px;\\n  width: 30px;\\n  background: #CCC;\\n}\\n.eye:after { /*pupil*/\\n  position: absolute;\\n  bottom: 17px;\\n  right: 10px;\\n  width: 10px;\\n  height: 10px;\\n  background: #000;\\n  border-radius: 50%;\\n  content: \\\\\\\" \\\\\\\";\\n}\\n </style>\\n</head>  \\n<body>    \\n    <div style=\\\\\\\"height:100px;width:150px\\\\\\\">\\n    <div class=\\\\\\\"card\\\\\\\">\\n        <br>\\n        <img src=\\\\\\\"Tezoslogo.png\\\\\\\" alt=\\\\\\\"Avatar\\\\\\\" style=\\\\\\\"height:100px;width:100px;\\\\\\\" class=\\\\\\\"center\\\\\\\">\\n        <br>\\n        \\n        <div class=\\\\\\\"container\\\\\\\">          \\n          <p id=\\\\\\\"BTCPrice\\\\\\\" style=\\\\\\\"font-size: 40px\\\\\\\"></p>\\n        </div>\\n      </div>\\n    </div>\\n<script>\\n$.getJSON(\\\\\\\"https://min-api.cryptocompare.com/data/price?fsym=XTZ&tsyms=USD\\\\\\\", function(data){\\n    $(\\\\\\\"#BTCPrice\\\\\\\").text(\\\\\\\"$\\\\\\\"+data[\\\\\\\"USD\\\\\\\"]);\\n}).fail(function( dat, textStatus, error ) {\\n    var err = textStatus + \\\\\\\", \\\\\\\" + error;\\n    alert(err);\\n});\\n\\n$(\\\\\\\".move-area\\\\\\\").mousemove(function(event) {\\n  var eye = $(\\\\\\\".eye\\\\\\\");\\n  var x = (eye.offset().left) + (eye.width() / 2);\\n  var y = (eye.offset().top) + (eye.height() / 2);\\n  var rad = Math.atan2(event.pageX - x, event.pageY - y);\\n  var rot = (rad * (180 / Math.PI) * -1) + 180;\\n  eye.css({\\n    '-webkit-transform': 'rotate(' + rot + 'deg)',\\n    '-moz-transform': 'rotate(' + rot + 'deg)',\\n    '-ms-transform': 'rotate(' + rot + 'deg)',\\n    'transform': 'rotate(' + rot + 'deg)'\\n  });\\n});\\n</script>\\n</body>\\n</html>\"","status":200,"headers":{"age":"0","via":"1.1 varnish","date":"Sat, 17 Aug 2024 03:21:10 GMT","etag":"W/\"60e90d65-83b\"","vary":"Accept-Encoding","server":"GitHub.com","expires":"Sat, 17 Aug 2024 03:31:10 GMT","x-cache":"MISS","x-timer":"S1723864870.170494,VS0,VE124","x-served-by":"cache-fra-eddf8230020-FRA","content-type":"text/html; charset=utf-8","x-cache-hits":"0","accept-ranges":"bytes","cache-control":"max-age=600","last-modified":"Sat, 10 Jul 2021 03:00:53 GMT","x-proxy-cache":"MISS","content-length":"1014","content-encoding":"gzip","permissions-policy":"interest-cohort=()","x-fastly-request-id":"38138d352c318d6e67015794985722883ed74066","x-github-request-id":"5EE3:1C8474:65DC9C:68A408:66C01726","access-control-allow-origin":"*"}},"type":2,"external":true,"timestamp":1723864870327},{"data":{"url":"https://code.jquery.com/jquery-3.5.0.js","body":"\"/*!\\n * jQuery JavaScript Library v3.5.0\\n * https://jquery.com/\\n *\\n * Includes Sizzle.js\\n * https://sizzlejs.com/\\n *\\n * Copyright JS Foundation and other contributors\\n * Released under the MIT license\\n * https://jquery.org/license\\n *\\n * Date: 2020-04-10T15:07Z\\n */\\n( function( global, factory ) {\\n\\n\\t\\\\\\\"use strict\\\\\\\";\\n\\n\\tif ( typeof module === \\\\\\\"object\\\\\\\" && typeof module.exports === \\\\\\\"object\\\\\\\" ) {\\n\\n\\t\\t// For CommonJS and CommonJS-like environments where a proper `window`\\n\\t\\t// is present, execute the factory and get jQuery.\\n\\t\\t// For environments that do not have a `window` with a `document`\\n\\t\\t// (such as Node.js), expose a factory as module.exports.\\n\\t\\t// This accentuates the need for the creation of a real `window`.\\n\\t\\t// e.g. var jQuery = require(\\\\\\\"jquery\\\\\\\")(window);\\n\\t\\t// See ticket #14549 for more info.\\n\\t\\tmodule.exports = global.document ?\\n\\t\\t\\tfactory( global, true ) :\\n\\t\\t\\tfunction( w ) {\\n\\t\\t\\t\\tif ( !w.document ) {\\n\\t\\t\\t\\t\\tthrow new Error( \\\\\\\"jQuery requires a window with a document\\\\\\\" );\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\treturn factory( w );\\n\\t\\t\\t};\\n\\t} else {\\n\\t\\tfactory( global );\\n\\t}\\n\\n// Pass this if window is not defined yet\\n} )( typeof window !== \\\\\\\"undefined\\\\\\\" ? window : this, function( window, noGlobal ) {\\n\\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\\n// enough that all such attempts are guarded in a try block.\\n\\\\\\\"use strict\\\\\\\";\\n\\nvar arr = [];\\n\\nvar getProto = Object.getPrototypeOf;\\n\\nvar slice = arr.slice;\\n\\nvar flat = arr.flat ? function( array ) {\\n\\treturn arr.flat.call( array );\\n} : function( array ) {\\n\\treturn arr.concat.apply( [], array );\\n};\\n\\n\\nvar push = arr.push;\\n\\nvar indexOf = arr.indexOf;\\n\\nvar class2type = {};\\n\\nvar toString = class2type.toString;\\n\\nvar hasOwn = class2type.hasOwnProperty;\\n\\nvar fnToString = hasOwn.toString;\\n\\nvar ObjectFunctionString = fnToString.call( Object );\\n\\nvar support = {};\\n\\nvar isFunction = function isFunction( obj ) {\\n\\n      // Support: Chrome <=57, Firefox <=52\\n      // In some browsers, typeof returns \\\\\\\"function\\\\\\\" for HTML <object> elements\\n      // (i.e., `typeof document.createElement( \\\\\\\"object\\\\\\\" ) === \\\\\\\"function\\\\\\\"`).\\n      // We don't want to classify *any* DOM node as a function.\\n      return typeof obj === \\\\\\\"function\\\\\\\" && typeof obj.nodeType !== \\\\\\\"number\\\\\\\";\\n  };\\n\\n\\nvar isWindow = function isWindow( obj ) {\\n\\t\\treturn obj != null && obj === obj.window;\\n\\t};\\n\\n\\nvar document = window.document;\\n\\n\\n\\n\\tvar preservedScriptAttributes = {\\n\\t\\ttype: true,\\n\\t\\tsrc: true,\\n\\t\\tnonce: true,\\n\\t\\tnoModule: true\\n\\t};\\n\\n\\tfunction DOMEval( code, node, doc ) {\\n\\t\\tdoc = doc || document;\\n\\n\\t\\tvar i, val,\\n\\t\\t\\tscript = doc.createElement( \\\\\\\"script\\\\\\\" );\\n\\n\\t\\tscript.text = code;\\n\\t\\tif ( node ) {\\n\\t\\t\\tfor ( i in preservedScriptAttributes ) {\\n\\n\\t\\t\\t\\t// Support: Firefox 64+, Edge 18+\\n\\t\\t\\t\\t// Some browsers don't support the \\\\\\\"nonce\\\\\\\" property on scripts.\\n\\t\\t\\t\\t// On the other hand, just using `getAttribute` is not enough as\\n\\t\\t\\t\\t// the `nonce` attribute is reset to an empty string whenever it\\n\\t\\t\\t\\t// becomes browsing-context connected.\\n\\t\\t\\t\\t// See https://github.com/whatwg/html/issues/2369\\n\\t\\t\\t\\t// See https://html.spec.whatwg.org/#nonce-attributes\\n\\t\\t\\t\\t// The `node.getAttribute` check was added for the sake of\\n\\t\\t\\t\\t// `jQuery.globalEval` so that it can fake a nonce-containing node\\n\\t\\t\\t\\t// via an object.\\n\\t\\t\\t\\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\\n\\t\\t\\t\\tif ( val ) {\\n\\t\\t\\t\\t\\tscript.setAttribute( i, val );\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tdoc.head.appendChild( script ).parentNode.removeChild( script );\\n\\t}\\n\\n\\nfunction toType( obj ) {\\n\\tif ( obj == null ) {\\n\\t\\treturn obj + \\\\\\\"\\\\\\\";\\n\\t}\\n\\n\\t// Support: Android <=2.3 only (functionish RegExp)\\n\\treturn typeof obj === \\\\\\\"object\\\\\\\" || typeof obj === \\\\\\\"function\\\\\\\" ?\\n\\t\\tclass2type[ toString.call( obj ) ] || \\\\\\\"object\\\\\\\" :\\n\\t\\ttypeof obj;\\n}\\n/* global Symbol */\\n// Defining this global in .eslintrc.json would create a danger of using the global\\n// unguarded in another place, it seems safer to define global only for this module\\n\\n\\n\\nvar\\n\\tversion = \\\\\\\"3.5.0\\\\\\\",\\n\\n\\t// Define a local copy of jQuery\\n\\tjQuery = function( selector, context ) {\\n\\n\\t\\t// The jQuery object is actually just the init constructor 'enhanced'\\n\\t\\t// Need init if jQuery is called (just allow error to be thrown if not included)\\n\\t\\treturn new jQuery.fn.init( selector, context );\\n\\t};\\n\\njQuery.fn = jQuery.prototype = {\\n\\n\\t// The current version of jQuery being used\\n\\tjquery: version,\\n\\n\\tconstructor: jQuery,\\n\\n\\t// The default length of a jQuery object is 0\\n\\tlength: 0,\\n\\n\\ttoArray: function() {\\n\\t\\treturn slice.call( this );\\n\\t},\\n\\n\\t// Get the Nth element in the matched element set OR\\n\\t// Get the whole matched element set as a clean array\\n\\tget: function( num ) {\\n\\n\\t\\t// Return all the elements in a clean array\\n\\t\\tif ( num == null ) {\\n\\t\\t\\treturn slice.call( this );\\n\\t\\t}\\n\\n\\t\\t// Return just the one element from the set\\n\\t\\treturn num < 0 ? this[ num + this.length ] : this[ num ];\\n\\t},\\n\\n\\t// Take an array of elements and push it onto the stack\\n\\t// (returning the new matched element set)\\n\\tpushStack: function( elems ) {\\n\\n\\t\\t// Build a new jQuery matched element set\\n\\t\\tvar ret = jQuery.merge( this.constructor(), elems );\\n\\n\\t\\t// Add the old object onto the stack (as a reference)\\n\\t\\tret.prevObject = this;\\n\\n\\t\\t// Return the newly-formed element set\\n\\t\\treturn ret;\\n\\t},\\n\\n\\t// Execute a callback for every element in the matched set.\\n\\teach: function( callback ) {\\n\\t\\treturn jQuery.each( this, callback );\\n\\t},\\n\\n\\tmap: function( callback ) {\\n\\t\\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\\n\\t\\t\\treturn callback.call( elem, i, elem );\\n\\t\\t} ) );\\n\\t},\\n\\n\\tslice: function() {\\n\\t\\treturn this.pushStack( slice.apply( this, arguments ) );\\n\\t},\\n\\n\\tfirst: function() {\\n\\t\\treturn this.eq( 0 );\\n\\t},\\n\\n\\tlast: function() {\\n\\t\\treturn this.eq( -1 );\\n\\t},\\n\\n\\teven: function() {\\n\\t\\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\\n\\t\\t\\treturn ( i + 1 ) % 2;\\n\\t\\t} ) );\\n\\t},\\n\\n\\todd: function() {\\n\\t\\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\\n\\t\\t\\treturn i % 2;\\n\\t\\t} ) );\\n\\t},\\n\\n\\teq: function( i ) {\\n\\t\\tvar len = this.length,\\n\\t\\t\\tj = +i + ( i < 0 ? len : 0 );\\n\\t\\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\\n\\t},\\n\\n\\tend: function() {\\n\\t\\treturn this.prevObject || this.constructor();\\n\\t},\\n\\n\\t// For internal use only.\\n\\t// Behaves like an Array's method, not like a jQuery method.\\n\\tpush: push,\\n\\tsort: arr.sort,\\n\\tsplice: arr.splice\\n};\\n\\njQuery.extend = jQuery.fn.extend = function() {\\n\\tvar options, name, src, copy, copyIsArray, clone,\\n\\t\\ttarget = arguments[ 0 ] || {},\\n\\t\\ti = 1,\\n\\t\\tlength = arguments.length,\\n\\t\\tdeep = false;\\n\\n\\t// Handle a deep copy situation\\n\\tif ( typeof target === \\\\\\\"boolean\\\\\\\" ) {\\n\\t\\tdeep = target;\\n\\n\\t\\t// Skip the boolean and the target\\n\\t\\ttarget = arguments[ i ] || {};\\n\\t\\ti++;\\n\\t}\\n\\n\\t// Handle case when target is a string or something (possible in deep copy)\\n\\tif ( typeof target !== \\\\\\\"object\\\\\\\" && !isFunction( target ) ) {\\n\\t\\ttarget = {};\\n\\t}\\n\\n\\t// Extend jQuery itself if only one argument is passed\\n\\tif ( i === length ) {\\n\\t\\ttarget = this;\\n\\t\\ti--;\\n\\t}\\n\\n\\tfor ( ; i < length; i++ ) {\\n\\n\\t\\t// Only deal with non-null/undefined values\\n\\t\\tif ( ( options = arguments[ i ] ) != null ) {\\n\\n\\t\\t\\t// Extend the base object\\n\\t\\t\\tfor ( name in options ) {\\n\\t\\t\\t\\tcopy = options[ name ];\\n\\n\\t\\t\\t\\t// Prevent Object.prototype pollution\\n\\t\\t\\t\\t// Prevent never-ending loop\\n\\t\\t\\t\\tif ( name === \\\\\\\"__proto__\\\\\\\" || target === copy ) {\\n\\t\\t\\t\\t\\tcontinue;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Recurse if we're merging plain objects or arrays\\n\\t\\t\\t\\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\\n\\t\\t\\t\\t\\t( copyIsArray = Array.isArray( copy ) ) ) ) {\\n\\t\\t\\t\\t\\tsrc = target[ name ];\\n\\n\\t\\t\\t\\t\\t// Ensure proper type for the source value\\n\\t\\t\\t\\t\\tif ( copyIsArray && !Array.isArray( src ) ) {\\n\\t\\t\\t\\t\\t\\tclone = [];\\n\\t\\t\\t\\t\\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\\n\\t\\t\\t\\t\\t\\tclone = {};\\n\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\tclone = src;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tcopyIsArray = false;\\n\\n\\t\\t\\t\\t\\t// Never move original objects, clone them\\n\\t\\t\\t\\t\\ttarget[ name ] = jQuery.extend( deep, clone, copy );\\n\\n\\t\\t\\t\\t// Don't bring in undefined values\\n\\t\\t\\t\\t} else if ( copy !== undefined ) {\\n\\t\\t\\t\\t\\ttarget[ name ] = copy;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t// Return the modified object\\n\\treturn target;\\n};\\n\\njQuery.extend( {\\n\\n\\t// Unique for each copy of jQuery on the page\\n\\texpando: \\\\\\\"jQuery\\\\\\\" + ( version + Math.random() ).replace( /\\\\D/g, \\\\\\\"\\\\\\\" ),\\n\\n\\t// Assume jQuery is ready without the ready module\\n\\tisReady: true,\\n\\n\\terror: function( msg ) {\\n\\t\\tthrow new Error( msg );\\n\\t},\\n\\n\\tnoop: function() {},\\n\\n\\tisPlainObject: function( obj ) {\\n\\t\\tvar proto, Ctor;\\n\\n\\t\\t// Detect obvious negatives\\n\\t\\t// Use toString instead of jQuery.type to catch host objects\\n\\t\\tif ( !obj || toString.call( obj ) !== \\\\\\\"[object Object]\\\\\\\" ) {\\n\\t\\t\\treturn false;\\n\\t\\t}\\n\\n\\t\\tproto = getProto( obj );\\n\\n\\t\\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\\n\\t\\tif ( !proto ) {\\n\\t\\t\\treturn true;\\n\\t\\t}\\n\\n\\t\\t// Objects with prototype are plain iff they were constructed by a global Object function\\n\\t\\tCtor = hasOwn.call( proto, \\\\\\\"constructor\\\\\\\" ) && proto.constructor;\\n\\t\\treturn typeof Ctor === \\\\\\\"function\\\\\\\" && fnToString.call( Ctor ) === ObjectFunctionString;\\n\\t},\\n\\n\\tisEmptyObject: function( obj ) {\\n\\t\\tvar name;\\n\\n\\t\\tfor ( name in obj ) {\\n\\t\\t\\treturn false;\\n\\t\\t}\\n\\t\\treturn true;\\n\\t},\\n\\n\\t// Evaluates a script in a provided context; falls back to the global one\\n\\t// if not specified.\\n\\tglobalEval: function( code, options, doc ) {\\n\\t\\tDOMEval( code, { nonce: options && options.nonce }, doc );\\n\\t},\\n\\n\\teach: function( obj, callback ) {\\n\\t\\tvar length, i = 0;\\n\\n\\t\\tif ( isArrayLike( obj ) ) {\\n\\t\\t\\tlength = obj.length;\\n\\t\\t\\tfor ( ; i < length; i++ ) {\\n\\t\\t\\t\\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\\n\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t} else {\\n\\t\\t\\tfor ( i in obj ) {\\n\\t\\t\\t\\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\\n\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\treturn obj;\\n\\t},\\n\\n\\t// results is for internal usage only\\n\\tmakeArray: function( arr, results ) {\\n\\t\\tvar ret = results || [];\\n\\n\\t\\tif ( arr != null ) {\\n\\t\\t\\tif ( isArrayLike( Object( arr ) ) ) {\\n\\t\\t\\t\\tjQuery.merge( ret,\\n\\t\\t\\t\\t\\ttypeof arr === \\\\\\\"string\\\\\\\" ?\\n\\t\\t\\t\\t\\t[ arr ] : arr\\n\\t\\t\\t\\t);\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tpush.call( ret, arr );\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\treturn ret;\\n\\t},\\n\\n\\tinArray: function( elem, arr, i ) {\\n\\t\\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\\n\\t},\\n\\n\\t// Support: Android <=4.0 only, PhantomJS 1 only\\n\\t// push.apply(_, arraylike) throws on ancient WebKit\\n\\tmerge: function( first, second ) {\\n\\t\\tvar len = +second.length,\\n\\t\\t\\tj = 0,\\n\\t\\t\\ti = first.length;\\n\\n\\t\\tfor ( ; j < len; j++ ) {\\n\\t\\t\\tfirst[ i++ ] = second[ j ];\\n\\t\\t}\\n\\n\\t\\tfirst.length = i;\\n\\n\\t\\treturn first;\\n\\t},\\n\\n\\tgrep: function( elems, callback, invert ) {\\n\\t\\tvar callbackInverse,\\n\\t\\t\\tmatches = [],\\n\\t\\t\\ti = 0,\\n\\t\\t\\tlength = elems.length,\\n\\t\\t\\tcallbackExpect = !invert;\\n\\n\\t\\t// Go through the array, only saving the items\\n\\t\\t// that pass the validator function\\n\\t\\tfor ( ; i < length; i++ ) {\\n\\t\\t\\tcallbackInverse = !callback( elems[ i ], i );\\n\\t\\t\\tif ( callbackInverse !== callbackExpect ) {\\n\\t\\t\\t\\tmatches.push( elems[ i ] );\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\treturn matches;\\n\\t},\\n\\n\\t// arg is for internal usage only\\n\\tmap: function( elems, callback, arg ) {\\n\\t\\tvar length, value,\\n\\t\\t\\ti = 0,\\n\\t\\t\\tret = [];\\n\\n\\t\\t// Go through the array, translating each of the items to their new values\\n\\t\\tif ( isArrayLike( elems ) ) {\\n\\t\\t\\tlength = elems.length;\\n\\t\\t\\tfor ( ; i < length; i++ ) {\\n\\t\\t\\t\\tvalue = callback( elems[ i ], i, arg );\\n\\n\\t\\t\\t\\tif ( value != null ) {\\n\\t\\t\\t\\t\\tret.push( value );\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t// Go through every key on the object,\\n\\t\\t} else {\\n\\t\\t\\tfor ( i in elems ) {\\n\\t\\t\\t\\tvalue = callback( elems[ i ], i, arg );\\n\\n\\t\\t\\t\\tif ( value != null ) {\\n\\t\\t\\t\\t\\tret.push( value );\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Flatten any nested arrays\\n\\t\\treturn flat( ret );\\n\\t},\\n\\n\\t// A global GUID counter for objects\\n\\tguid: 1,\\n\\n\\t// jQuery.support is not used in Core but other projects attach their\\n\\t// properties to it so it needs to exist.\\n\\tsupport: support\\n} );\\n\\nif ( typeof Symbol === \\\\\\\"function\\\\\\\" ) {\\n\\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\\n}\\n\\n// Populate the class2type map\\njQuery.each( \\\\\\\"Boolean Number String Function Array Date RegExp Object Error Symbol\\\\\\\".split( \\\\\\\" \\\\\\\" ),\\nfunction( _i, name ) {\\n\\tclass2type[ \\\\\\\"[object \\\\\\\" + name + \\\\\\\"]\\\\\\\" ] = name.toLowerCase();\\n} );\\n\\nfunction isArrayLike( obj ) {\\n\\n\\t// Support: real iOS 8.2 only (not reproducible in simulator)\\n\\t// `in` check used to prevent JIT error (gh-2145)\\n\\t// hasOwn isn't used here due to false negatives\\n\\t// regarding Nodelist length in IE\\n\\tvar length = !!obj && \\\\\\\"length\\\\\\\" in obj && obj.length,\\n\\t\\ttype = toType( obj );\\n\\n\\tif ( isFunction( obj ) || isWindow( obj ) ) {\\n\\t\\treturn false;\\n\\t}\\n\\n\\treturn type === \\\\\\\"array\\\\\\\" || length === 0 ||\\n\\t\\ttypeof length === \\\\\\\"number\\\\\\\" && length > 0 && ( length - 1 ) in obj;\\n}\\nvar Sizzle =\\n/*!\\n * Sizzle CSS Selector Engine v2.3.5\\n * https://sizzlejs.com/\\n *\\n * Copyright JS Foundation and other contributors\\n * Released under the MIT license\\n * https://js.foundation/\\n *\\n * Date: 2020-03-14\\n */\\n( function( window ) {\\nvar i,\\n\\tsupport,\\n\\tExpr,\\n\\tgetText,\\n\\tisXML,\\n\\ttokenize,\\n\\tcompile,\\n\\tselect,\\n\\toutermostContext,\\n\\tsortInput,\\n\\thasDuplicate,\\n\\n\\t// Local document vars\\n\\tsetDocument,\\n\\tdocument,\\n\\tdocElem,\\n\\tdocumentIsHTML,\\n\\trbuggyQSA,\\n\\trbuggyMatches,\\n\\tmatches,\\n\\tcontains,\\n\\n\\t// Instance-specific data\\n\\texpando = \\\\\\\"sizzle\\\\\\\" + 1 * new Date(),\\n\\tpreferredDoc = window.document,\\n\\tdirruns = 0,\\n\\tdone = 0,\\n\\tclassCache = createCache(),\\n\\ttokenCache = createCache(),\\n\\tcompilerCache = createCache(),\\n\\tnonnativeSelectorCache = createCache(),\\n\\tsortOrder = function( a, b ) {\\n\\t\\tif ( a === b ) {\\n\\t\\t\\thasDuplicate = true;\\n\\t\\t}\\n\\t\\treturn 0;\\n\\t},\\n\\n\\t// Instance methods\\n\\thasOwn = ( {} ).hasOwnProperty,\\n\\tarr = [],\\n\\tpop = arr.pop,\\n\\tpushNative = arr.push,\\n\\tpush = arr.push,\\n\\tslice = arr.slice,\\n\\n\\t// Use a stripped-down indexOf as it's faster than native\\n\\t// https://jsperf.com/thor-indexof-vs-for/5\\n\\tindexOf = function( list, elem ) {\\n\\t\\tvar i = 0,\\n\\t\\t\\tlen = list.length;\\n\\t\\tfor ( ; i < len; i++ ) {\\n\\t\\t\\tif ( list[ i ] === elem ) {\\n\\t\\t\\t\\treturn i;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\treturn -1;\\n\\t},\\n\\n\\tbooleans = \\\\\\\"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|\\\\\\\" +\\n\\t\\t\\\\\\\"ismap|loop|multiple|open|readonly|required|scoped\\\\\\\",\\n\\n\\t// Regular expressions\\n\\n\\t// http://www.w3.org/TR/css3-selectors/#whitespace\\n\\twhitespace = \\\\\\\"[\\\\\\\\x20\\\\\\\\t\\\\\\\\r\\\\\\\\n\\\\\\\\f]\\\\\\\",\\n\\n\\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\\n\\tidentifier = \\\\\\\"(?:\\\\\\\\\\\\\\\\[\\\\\\\\da-fA-F]{1,6}\\\\\\\" + whitespace +\\n\\t\\t\\\\\\\"?|\\\\\\\\\\\\\\\\[^\\\\\\\\r\\\\\\\\n\\\\\\\\f]|[\\\\\\\\w-]|[^\\\\0-\\\\\\\\x7f])+\\\\\\\",\\n\\n\\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\\n\\tattributes = \\\\\\\"\\\\\\\\[\\\\\\\" + whitespace + \\\\\\\"*(\\\\\\\" + identifier + \\\\\\\")(?:\\\\\\\" + whitespace +\\n\\n\\t\\t// Operator (capture 2)\\n\\t\\t\\\\\\\"*([*^$|!~]?=)\\\\\\\" + whitespace +\\n\\n\\t\\t// \\\\\\\"Attribute values must be CSS identifiers [capture 5]\\n\\t\\t// or strings [capture 3 or capture 4]\\\\\\\"\\n\\t\\t\\\\\\\"*(?:'((?:\\\\\\\\\\\\\\\\.|[^\\\\\\\\\\\\\\\\'])*)'|\\\\\\\\\\\"((?:\\\\\\\\\\\\\\\\.|[^\\\\\\\\\\\\\\\\\\\\\\\\\\\"])*)\\\\\\\\\\\"|(\\\\\\\" + identifier + \\\\\\\"))|)\\\\\\\" +\\n\\t\\twhitespace + \\\\\\\"*\\\\\\\\]\\\\\\\",\\n\\n\\tpseudos = \\\\\\\":(\\\\\\\" + identifier + \\\\\\\")(?:\\\\\\\\((\\\\\\\" +\\n\\n\\t\\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\\n\\t\\t// 1. quoted (capture 3; capture 4 or capture 5)\\n\\t\\t\\\\\\\"('((?:\\\\\\\\\\\\\\\\.|[^\\\\\\\\\\\\\\\\'])*)'|\\\\\\\\\\\"((?:\\\\\\\\\\\\\\\\.|[^\\\\\\\\\\\\\\\\\\\\\\\\\\\"])*)\\\\\\\\\\\")|\\\\\\\" +\\n\\n\\t\\t// 2. simple (capture 6)\\n\\t\\t\\\\\\\"((?:\\\\\\\\\\\\\\\\.|[^\\\\\\\\\\\\\\\\()[\\\\\\\\]]|\\\\\\\" + attributes + \\\\\\\")*)|\\\\\\\" +\\n\\n\\t\\t// 3. anything else (capture 2)\\n\\t\\t\\\\\\\".*\\\\\\\" +\\n\\t\\t\\\\\\\")\\\\\\\\)|)\\\\\\\",\\n\\n\\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\\n\\trwhitespace = new RegExp( whitespace + \\\\\\\"+\\\\\\\", \\\\\\\"g\\\\\\\" ),\\n\\trtrim = new RegExp( \\\\\\\"^\\\\\\\" + whitespace + \\\\\\\"+|((?:^|[^\\\\\\\\\\\\\\\\])(?:\\\\\\\\\\\\\\\\.)*)\\\\\\\" +\\n\\t\\twhitespace + \\\\\\\"+$\\\\\\\", \\\\\\\"g\\\\\\\" ),\\n\\n\\trcomma = new RegExp( \\\\\\\"^\\\\\\\" + whitespace + \\\\\\\"*,\\\\\\\" + whitespace + \\\\\\\"*\\\\\\\" ),\\n\\trcombinators = new RegExp( \\\\\\\"^\\\\\\\" + whitespace + \\\\\\\"*([>+~]|\\\\\\\" + whitespace + \\\\\\\")\\\\\\\" + whitespace +\\n\\t\\t\\\\\\\"*\\\\\\\" ),\\n\\trdescend = new RegExp( whitespace + \\\\\\\"|>\\\\\\\" ),\\n\\n\\trpseudo = new RegExp( pseudos ),\\n\\tridentifier = new RegExp( \\\\\\\"^\\\\\\\" + identifier + \\\\\\\"$\\\\\\\" ),\\n\\n\\tmatchExpr = {\\n\\t\\t\\\\\\\"ID\\\\\\\": new RegExp( \\\\\\\"^#(\\\\\\\" + identifier + \\\\\\\")\\\\\\\" ),\\n\\t\\t\\\\\\\"CLASS\\\\\\\": new RegExp( \\\\\\\"^\\\\\\\\.(\\\\\\\" + identifier + \\\\\\\")\\\\\\\" ),\\n\\t\\t\\\\\\\"TAG\\\\\\\": new RegExp( \\\\\\\"^(\\\\\\\" + identifier + \\\\\\\"|[*])\\\\\\\" ),\\n\\t\\t\\\\\\\"ATTR\\\\\\\": new RegExp( \\\\\\\"^\\\\\\\" + attributes ),\\n\\t\\t\\\\\\\"PSEUDO\\\\\\\": new RegExp( \\\\\\\"^\\\\\\\" + pseudos ),\\n\\t\\t\\\\\\\"CHILD\\\\\\\": new RegExp( \\\\\\\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\\\\\(\\\\\\\" +\\n\\t\\t\\twhitespace + \\\\\\\"*(even|odd|(([+-]|)(\\\\\\\\d*)n|)\\\\\\\" + whitespace + \\\\\\\"*(?:([+-]|)\\\\\\\" +\\n\\t\\t\\twhitespace + \\\\\\\"*(\\\\\\\\d+)|))\\\\\\\" + whitespace + \\\\\\\"*\\\\\\\\)|)\\\\\\\", \\\\\\\"i\\\\\\\" ),\\n\\t\\t\\\\\\\"bool\\\\\\\": new RegExp( \\\\\\\"^(?:\\\\\\\" + booleans + \\\\\\\")$\\\\\\\", \\\\\\\"i\\\\\\\" ),\\n\\n\\t\\t// For use in libraries implementing .is()\\n\\t\\t// We use this for POS matching in `select`\\n\\t\\t\\\\\\\"needsContext\\\\\\\": new RegExp( \\\\\\\"^\\\\\\\" + whitespace +\\n\\t\\t\\t\\\\\\\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\\\\\(\\\\\\\" + whitespace +\\n\\t\\t\\t\\\\\\\"*((?:-\\\\\\\\d)?\\\\\\\\d*)\\\\\\\" + whitespace + \\\\\\\"*\\\\\\\\)|)(?=[^-]|$)\\\\\\\", \\\\\\\"i\\\\\\\" )\\n\\t},\\n\\n\\trhtml = /HTML$/i,\\n\\trinputs = /^(?:input|select|textarea|button)$/i,\\n\\trheader = /^h\\\\d$/i,\\n\\n\\trnative = /^[^{]+\\\\{\\\\s*\\\\[native \\\\w/,\\n\\n\\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\\n\\trquickExpr = /^(?:#([\\\\w-]+)|(\\\\w+)|\\\\.([\\\\w-]+))$/,\\n\\n\\trsibling = /[+~]/,\\n\\n\\t// CSS escapes\\n\\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\\n\\trunescape = new RegExp( \\\\\\\"\\\\\\\\\\\\\\\\[\\\\\\\\da-fA-F]{1,6}\\\\\\\" + whitespace + \\\\\\\"?|\\\\\\\\\\\\\\\\([^\\\\\\\\r\\\\\\\\n\\\\\\\\f])\\\\\\\", \\\\\\\"g\\\\\\\" ),\\n\\tfunescape = function( escape, nonHex ) {\\n\\t\\tvar high = \\\\\\\"0x\\\\\\\" + escape.slice( 1 ) - 0x10000;\\n\\n\\t\\treturn nonHex ?\\n\\n\\t\\t\\t// Strip the backslash prefix from a non-hex escape sequence\\n\\t\\t\\tnonHex :\\n\\n\\t\\t\\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\\n\\t\\t\\t// Support: IE <=11+\\n\\t\\t\\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\\n\\t\\t\\t// surrogate pair\\n\\t\\t\\thigh < 0 ?\\n\\t\\t\\t\\tString.fromCharCode( high + 0x10000 ) :\\n\\t\\t\\t\\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\\n\\t},\\n\\n\\t// CSS string/identifier serialization\\n\\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\\n\\trcssescape = /([\\\\0-\\\\x1f\\\\x7f]|^-?\\\\d)|^-$|[^\\\\0-\\\\x1f\\\\x7f-\\\\uFFFF\\\\w-]/g,\\n\\tfcssescape = function( ch, asCodePoint ) {\\n\\t\\tif ( asCodePoint ) {\\n\\n\\t\\t\\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\\n\\t\\t\\tif ( ch === \\\\\\\"\\\\0\\\\\\\" ) {\\n\\t\\t\\t\\treturn \\\\\\\"\\\\uFFFD\\\\\\\";\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Control characters and (dependent upon position) numbers get escaped as code points\\n\\t\\t\\treturn ch.slice( 0, -1 ) + \\\\\\\"\\\\\\\\\\\\\\\" +\\n\\t\\t\\t\\tch.charCodeAt( ch.length - 1 ).toString( 16 ) + \\\\\\\" \\\\\\\";\\n\\t\\t}\\n\\n\\t\\t// Other potentially-special ASCII characters get backslash-escaped\\n\\t\\treturn \\\\\\\"\\\\\\\\\\\\\\\" + ch;\\n\\t},\\n\\n\\t// Used for iframes\\n\\t// See setDocument()\\n\\t// Removing the function wrapper causes a \\\\\\\"Permission Denied\\\\\\\"\\n\\t// error in IE\\n\\tunloadHandler = function() {\\n\\t\\tsetDocument();\\n\\t},\\n\\n\\tinDisabledFieldset = addCombinator(\\n\\t\\tfunction( elem ) {\\n\\t\\t\\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \\\\\\\"fieldset\\\\\\\";\\n\\t\\t},\\n\\t\\t{ dir: \\\\\\\"parentNode\\\\\\\", next: \\\\\\\"legend\\\\\\\" }\\n\\t);\\n\\n// Optimize for push.apply( _, NodeList )\\ntry {\\n\\tpush.apply(\\n\\t\\t( arr = slice.call( preferredDoc.childNodes ) ),\\n\\t\\tpreferredDoc.childNodes\\n\\t);\\n\\n\\t// Support: Android<4.0\\n\\t// Detect silently failing push.apply\\n\\t// eslint-disable-next-line no-unused-expressions\\n\\tarr[ preferredDoc.childNodes.length ].nodeType;\\n} catch ( e ) {\\n\\tpush = { apply: arr.length ?\\n\\n\\t\\t// Leverage slice if possible\\n\\t\\tfunction( target, els ) {\\n\\t\\t\\tpushNative.apply( target, slice.call( els ) );\\n\\t\\t} :\\n\\n\\t\\t// Support: IE<9\\n\\t\\t// Otherwise append directly\\n\\t\\tfunction( target, els ) {\\n\\t\\t\\tvar j = target.length,\\n\\t\\t\\t\\ti = 0;\\n\\n\\t\\t\\t// Can't trust NodeList.length\\n\\t\\t\\twhile ( ( target[ j++ ] = els[ i++ ] ) ) {}\\n\\t\\t\\ttarget.length = j - 1;\\n\\t\\t}\\n\\t};\\n}\\n\\nfunction Sizzle( selector, context, results, seed ) {\\n\\tvar m, i, elem, nid, match, groups, newSelector,\\n\\t\\tnewContext = context && context.ownerDocument,\\n\\n\\t\\t// nodeType defaults to 9, since context defaults to document\\n\\t\\tnodeType = context ? context.nodeType : 9;\\n\\n\\tresults = results || [];\\n\\n\\t// Return early from calls with invalid selector or context\\n\\tif ( typeof selector !== \\\\\\\"string\\\\\\\" || !selector ||\\n\\t\\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\\n\\n\\t\\treturn results;\\n\\t}\\n\\n\\t// Try to shortcut find operations (as opposed to filters) in HTML documents\\n\\tif ( !seed ) {\\n\\t\\tsetDocument( context );\\n\\t\\tcontext = context || document;\\n\\n\\t\\tif ( documentIsHTML ) {\\n\\n\\t\\t\\t// If the selector is sufficiently simple, try using a \\\\\\\"get*By*\\\\\\\" DOM method\\n\\t\\t\\t// (excepting DocumentFragment context, where the methods don't exist)\\n\\t\\t\\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\\n\\n\\t\\t\\t\\t// ID selector\\n\\t\\t\\t\\tif ( ( m = match[ 1 ] ) ) {\\n\\n\\t\\t\\t\\t\\t// Document context\\n\\t\\t\\t\\t\\tif ( nodeType === 9 ) {\\n\\t\\t\\t\\t\\t\\tif ( ( elem = context.getElementById( m ) ) ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t// Support: IE, Opera, Webkit\\n\\t\\t\\t\\t\\t\\t\\t// TODO: identify versions\\n\\t\\t\\t\\t\\t\\t\\t// getElementById can match elements by name instead of ID\\n\\t\\t\\t\\t\\t\\t\\tif ( elem.id === m ) {\\n\\t\\t\\t\\t\\t\\t\\t\\tresults.push( elem );\\n\\t\\t\\t\\t\\t\\t\\t\\treturn results;\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\t\\treturn results;\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t// Element context\\n\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\t// Support: IE, Opera, Webkit\\n\\t\\t\\t\\t\\t\\t// TODO: identify versions\\n\\t\\t\\t\\t\\t\\t// getElementById can match elements by name instead of ID\\n\\t\\t\\t\\t\\t\\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\\n\\t\\t\\t\\t\\t\\t\\tcontains( context, elem ) &&\\n\\t\\t\\t\\t\\t\\t\\telem.id === m ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tresults.push( elem );\\n\\t\\t\\t\\t\\t\\t\\treturn results;\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Type selector\\n\\t\\t\\t\\t} else if ( match[ 2 ] ) {\\n\\t\\t\\t\\t\\tpush.apply( results, context.getElementsByTagName( selector ) );\\n\\t\\t\\t\\t\\treturn results;\\n\\n\\t\\t\\t\\t// Class selector\\n\\t\\t\\t\\t} else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&\\n\\t\\t\\t\\t\\tcontext.getElementsByClassName ) {\\n\\n\\t\\t\\t\\t\\tpush.apply( results, context.getElementsByClassName( m ) );\\n\\t\\t\\t\\t\\treturn results;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Take advantage of querySelectorAll\\n\\t\\t\\tif ( support.qsa &&\\n\\t\\t\\t\\t!nonnativeSelectorCache[ selector + \\\\\\\" \\\\\\\" ] &&\\n\\t\\t\\t\\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&\\n\\n\\t\\t\\t\\t// Support: IE 8 only\\n\\t\\t\\t\\t// Exclude object elements\\n\\t\\t\\t\\t( nodeType !== 1 || context.nodeName.toLowerCase() !== \\\\\\\"object\\\\\\\" ) ) {\\n\\n\\t\\t\\t\\tnewSelector = selector;\\n\\t\\t\\t\\tnewContext = context;\\n\\n\\t\\t\\t\\t// qSA considers elements outside a scoping root when evaluating child or\\n\\t\\t\\t\\t// descendant combinators, which is not what we want.\\n\\t\\t\\t\\t// In such cases, we work around the behavior by prefixing every selector in the\\n\\t\\t\\t\\t// list with an ID selector referencing the scope context.\\n\\t\\t\\t\\t// The technique has to be used as well when a leading combinator is used\\n\\t\\t\\t\\t// as such selectors are not recognized by querySelectorAll.\\n\\t\\t\\t\\t// Thanks to Andrew Dupont for this technique.\\n\\t\\t\\t\\tif ( nodeType === 1 &&\\n\\t\\t\\t\\t\\t( rdescend.test( selector ) || rcombinators.test( selector ) ) ) {\\n\\n\\t\\t\\t\\t\\t// Expand context for sibling selectors\\n\\t\\t\\t\\t\\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\\n\\t\\t\\t\\t\\t\\tcontext;\\n\\n\\t\\t\\t\\t\\t// We can use :scope instead of the ID hack if the browser\\n\\t\\t\\t\\t\\t// supports it & if we're not changing the context.\\n\\t\\t\\t\\t\\tif ( newContext !== context || !support.scope ) {\\n\\n\\t\\t\\t\\t\\t\\t// Capture the context ID, setting it first if necessary\\n\\t\\t\\t\\t\\t\\tif ( ( nid = context.getAttribute( \\\\\\\"id\\\\\\\" ) ) ) {\\n\\t\\t\\t\\t\\t\\t\\tnid = nid.replace( rcssescape, fcssescape );\\n\\t\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\t\\tcontext.setAttribute( \\\\\\\"id\\\\\\\", ( nid = expando ) );\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t// Prefix every selector in the list\\n\\t\\t\\t\\t\\tgroups = tokenize( selector );\\n\\t\\t\\t\\t\\ti = groups.length;\\n\\t\\t\\t\\t\\twhile ( i-- ) {\\n\\t\\t\\t\\t\\t\\tgroups[ i ] = ( nid ? \\\\\\\"#\\\\\\\" + nid : \\\\\\\":scope\\\\\\\" ) + \\\\\\\" \\\\\\\" +\\n\\t\\t\\t\\t\\t\\t\\ttoSelector( groups[ i ] );\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tnewSelector = groups.join( \\\\\\\",\\\\\\\" );\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\ttry {\\n\\t\\t\\t\\t\\tpush.apply( results,\\n\\t\\t\\t\\t\\t\\tnewContext.querySelectorAll( newSelector )\\n\\t\\t\\t\\t\\t);\\n\\t\\t\\t\\t\\treturn results;\\n\\t\\t\\t\\t} catch ( qsaError ) {\\n\\t\\t\\t\\t\\tnonnativeSelectorCache( selector, true );\\n\\t\\t\\t\\t} finally {\\n\\t\\t\\t\\t\\tif ( nid === expando ) {\\n\\t\\t\\t\\t\\t\\tcontext.removeAttribute( \\\\\\\"id\\\\\\\" );\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t// All others\\n\\treturn select( selector.replace( rtrim, \\\\\\\"$1\\\\\\\" ), context, results, seed );\\n}\\n\\n/**\\n * Create key-value caches of limited size\\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\\n *\\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\\n *\\tdeleting the oldest entry\\n */\\nfunction createCache() {\\n\\tvar keys = [];\\n\\n\\tfunction cache( key, value ) {\\n\\n\\t\\t// Use (key + \\\\\\\" \\\\\\\") to avoid collision with native prototype properties (see Issue #157)\\n\\t\\tif ( keys.push( key + \\\\\\\" \\\\\\\" ) > Expr.cacheLength ) {\\n\\n\\t\\t\\t// Only keep the most recent entries\\n\\t\\t\\tdelete cache[ keys.shift() ];\\n\\t\\t}\\n\\t\\treturn ( cache[ key + \\\\\\\" \\\\\\\" ] = value );\\n\\t}\\n\\treturn cache;\\n}\\n\\n/**\\n * Mark a function for special use by Sizzle\\n * @param {Function} fn The function to mark\\n */\\nfunction markFunction( fn ) {\\n\\tfn[ expando ] = true;\\n\\treturn fn;\\n}\\n\\n/**\\n * Support testing using an element\\n * @param {Function} fn Passed the created element and returns a boolean result\\n */\\nfunction assert( fn ) {\\n\\tvar el = document.createElement( \\\\\\\"fieldset\\\\\\\" );\\n\\n\\ttry {\\n\\t\\treturn !!fn( el );\\n\\t} catch ( e ) {\\n\\t\\treturn false;\\n\\t} finally {\\n\\n\\t\\t// Remove from its parent by default\\n\\t\\tif ( el.parentNode ) {\\n\\t\\t\\tel.parentNode.removeChild( el );\\n\\t\\t}\\n\\n\\t\\t// release memory in IE\\n\\t\\tel = null;\\n\\t}\\n}\\n\\n/**\\n * Adds the same handler for all of the specified attrs\\n * @param {String} attrs Pipe-separated list of attributes\\n * @param {Function} handler The method that will be applied\\n */\\nfunction addHandle( attrs, handler ) {\\n\\tvar arr = attrs.split( \\\\\\\"|\\\\\\\" ),\\n\\t\\ti = arr.length;\\n\\n\\twhile ( i-- ) {\\n\\t\\tExpr.attrHandle[ arr[ i ] ] = handler;\\n\\t}\\n}\\n\\n/**\\n * Checks document order of two siblings\\n * @param {Element} a\\n * @param {Element} b\\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\\n */\\nfunction siblingCheck( a, b ) {\\n\\tvar cur = b && a,\\n\\t\\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\\n\\t\\t\\ta.sourceIndex - b.sourceIndex;\\n\\n\\t// Use IE sourceIndex if available on both nodes\\n\\tif ( diff ) {\\n\\t\\treturn diff;\\n\\t}\\n\\n\\t// Check if b follows a\\n\\tif ( cur ) {\\n\\t\\twhile ( ( cur = cur.nextSibling ) ) {\\n\\t\\t\\tif ( cur === b ) {\\n\\t\\t\\t\\treturn -1;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\treturn a ? 1 : -1;\\n}\\n\\n/**\\n * Returns a function to use in pseudos for input types\\n * @param {String} type\\n */\\nfunction createInputPseudo( type ) {\\n\\treturn function( elem ) {\\n\\t\\tvar name = elem.nodeName.toLowerCase();\\n\\t\\treturn name === \\\\\\\"input\\\\\\\" && elem.type === type;\\n\\t};\\n}\\n\\n/**\\n * Returns a function to use in pseudos for buttons\\n * @param {String} type\\n */\\nfunction createButtonPseudo( type ) {\\n\\treturn function( elem ) {\\n\\t\\tvar name = elem.nodeName.toLowerCase();\\n\\t\\treturn ( name === \\\\\\\"input\\\\\\\" || name === \\\\\\\"button\\\\\\\" ) && elem.type === type;\\n\\t};\\n}\\n\\n/**\\n * Returns a function to use in pseudos for :enabled/:disabled\\n * @param {Boolean} disabled true for :disabled; false for :enabled\\n */\\nfunction createDisabledPseudo( disabled ) {\\n\\n\\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\\n\\treturn function( elem ) {\\n\\n\\t\\t// Only certain elements can match :enabled or :disabled\\n\\t\\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\\n\\t\\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\\n\\t\\tif ( \\\\\\\"form\\\\\\\" in elem ) {\\n\\n\\t\\t\\t// Check for inherited disabledness on relevant non-disabled elements:\\n\\t\\t\\t// * listed form-associated elements in a disabled fieldset\\n\\t\\t\\t//   https://html.spec.whatwg.org/multipage/forms.html#category-listed\\n\\t\\t\\t//   https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\\n\\t\\t\\t// * option elements in a disabled optgroup\\n\\t\\t\\t//   https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\\n\\t\\t\\t// All such elements have a \\\\\\\"form\\\\\\\" property.\\n\\t\\t\\tif ( elem.parentNode && elem.disabled === false ) {\\n\\n\\t\\t\\t\\t// Option elements defer to a parent optgroup if present\\n\\t\\t\\t\\tif ( \\\\\\\"label\\\\\\\" in elem ) {\\n\\t\\t\\t\\t\\tif ( \\\\\\\"label\\\\\\\" in elem.parentNode ) {\\n\\t\\t\\t\\t\\t\\treturn elem.parentNode.disabled === disabled;\\n\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\treturn elem.disabled === disabled;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Support: IE 6 - 11\\n\\t\\t\\t\\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\\n\\t\\t\\t\\treturn elem.isDisabled === disabled ||\\n\\n\\t\\t\\t\\t\\t// Where there is no isDisabled, check manually\\n\\t\\t\\t\\t\\t/* jshint -W018 */\\n\\t\\t\\t\\t\\telem.isDisabled !== !disabled &&\\n\\t\\t\\t\\t\\tinDisabledFieldset( elem ) === disabled;\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn elem.disabled === disabled;\\n\\n\\t\\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\\n\\t\\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\\n\\t\\t// even exist on them, let alone have a boolean value.\\n\\t\\t} else if ( \\\\\\\"label\\\\\\\" in elem ) {\\n\\t\\t\\treturn elem.disabled === disabled;\\n\\t\\t}\\n\\n\\t\\t// Remaining elements are neither :enabled nor :disabled\\n\\t\\treturn false;\\n\\t};\\n}\\n\\n/**\\n * Returns a function to use in pseudos for positionals\\n * @param {Function} fn\\n */\\nfunction createPositionalPseudo( fn ) {\\n\\treturn markFunction( function( argument ) {\\n\\t\\targument = +argument;\\n\\t\\treturn markFunction( function( seed, matches ) {\\n\\t\\t\\tvar j,\\n\\t\\t\\t\\tmatchIndexes = fn( [], seed.length, argument ),\\n\\t\\t\\t\\ti = matchIndexes.length;\\n\\n\\t\\t\\t// Match elements found at the specified indexes\\n\\t\\t\\twhile ( i-- ) {\\n\\t\\t\\t\\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\\n\\t\\t\\t\\t\\tseed[ j ] = !( matches[ j ] = seed[ j ] );\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t} );\\n\\t} );\\n}\\n\\n/**\\n * Checks a node for validity as a Sizzle context\\n * @param {Element|Object=} context\\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\\n */\\nfunction testContext( context ) {\\n\\treturn context && typeof context.getElementsByTagName !== \\\\\\\"undefined\\\\\\\" && context;\\n}\\n\\n// Expose support vars for convenience\\nsupport = Sizzle.support = {};\\n\\n/**\\n * Detects XML nodes\\n * @param {Element|Object} elem An element or a document\\n * @returns {Boolean} True iff elem is a non-HTML XML node\\n */\\nisXML = Sizzle.isXML = function( elem ) {\\n\\tvar namespace = elem.namespaceURI,\\n\\t\\tdocElem = ( elem.ownerDocument || elem ).documentElement;\\n\\n\\t// Support: IE <=8\\n\\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\\n\\t// https://bugs.jquery.com/ticket/4833\\n\\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \\\\\\\"HTML\\\\\\\" );\\n};\\n\\n/**\\n * Sets document-related variables once based on the current document\\n * @param {Element|Object} [doc] An element or document object to use to set the document\\n * @returns {Object} Returns the current document\\n */\\nsetDocument = Sizzle.setDocument = function( node ) {\\n\\tvar hasCompare, subWindow,\\n\\t\\tdoc = node ? node.ownerDocument || node : preferredDoc;\\n\\n\\t// Return early if doc is invalid or already selected\\n\\t// Support: IE 11+, Edge 17 - 18+\\n\\t// IE/Edge sometimes throw a \\\\\\\"Permission denied\\\\\\\" error when strict-comparing\\n\\t// two documents; shallow comparisons work.\\n\\t// eslint-disable-next-line eqeqeq\\n\\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\\n\\t\\treturn document;\\n\\t}\\n\\n\\t// Update global variables\\n\\tdocument = doc;\\n\\tdocElem = document.documentElement;\\n\\tdocumentIsHTML = !isXML( document );\\n\\n\\t// Support: IE 9 - 11+, Edge 12 - 18+\\n\\t// Accessing iframe documents after unload throws \\\\\\\"permission denied\\\\\\\" errors (jQuery #13936)\\n\\t// Support: IE 11+, Edge 17 - 18+\\n\\t// IE/Edge sometimes throw a \\\\\\\"Permission denied\\\\\\\" error when strict-comparing\\n\\t// two documents; shallow comparisons work.\\n\\t// eslint-disable-next-line eqeqeq\\n\\tif ( preferredDoc != document &&\\n\\t\\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\\n\\n\\t\\t// Support: IE 11, Edge\\n\\t\\tif ( subWindow.addEventListener ) {\\n\\t\\t\\tsubWindow.addEventListener( \\\\\\\"unload\\\\\\\", unloadHandler, false );\\n\\n\\t\\t// Support: IE 9 - 10 only\\n\\t\\t} else if ( subWindow.attachEvent ) {\\n\\t\\t\\tsubWindow.attachEvent( \\\\\\\"onunload\\\\\\\", unloadHandler );\\n\\t\\t}\\n\\t}\\n\\n\\t// Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,\\n\\t// Safari 4 - 5 only, Opera <=11.6 - 12.x only\\n\\t// IE/Edge & older browsers don't support the :scope pseudo-class.\\n\\t// Support: Safari 6.0 only\\n\\t// Safari 6.0 supports :scope but it's an alias of :root there.\\n\\tsupport.scope = assert( function( el ) {\\n\\t\\tdocElem.appendChild( el ).appendChild( document.createElement( \\\\\\\"div\\\\\\\" ) );\\n\\t\\treturn typeof el.querySelectorAll !== \\\\\\\"undefined\\\\\\\" &&\\n\\t\\t\\t!el.querySelectorAll( \\\\\\\":scope fieldset div\\\\\\\" ).length;\\n\\t} );\\n\\n\\t/* Attributes\\n\\t---------------------------------------------------------------------- */\\n\\n\\t// Support: IE<8\\n\\t// Verify that getAttribute really returns attributes and not properties\\n\\t// (excepting IE8 booleans)\\n\\tsupport.attributes = assert( function( el ) {\\n\\t\\tel.className = \\\\\\\"i\\\\\\\";\\n\\t\\treturn !el.getAttribute( \\\\\\\"className\\\\\\\" );\\n\\t} );\\n\\n\\t/* getElement(s)By*\\n\\t---------------------------------------------------------------------- */\\n\\n\\t// Check if getElementsByTagName(\\\\\\\"*\\\\\\\") returns only elements\\n\\tsupport.getElementsByTagName = assert( function( el ) {\\n\\t\\tel.appendChild( document.createComment( \\\\\\\"\\\\\\\" ) );\\n\\t\\treturn !el.getElementsByTagName( \\\\\\\"*\\\\\\\" ).length;\\n\\t} );\\n\\n\\t// Support: IE<9\\n\\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\\n\\n\\t// Support: IE<10\\n\\t// Check if getElementById returns elements by name\\n\\t// The broken getElementById methods don't pick up programmatically-set names,\\n\\t// so use a roundabout getElementsByName test\\n\\tsupport.getById = assert( function( el ) {\\n\\t\\tdocElem.appendChild( el ).id = expando;\\n\\t\\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\\n\\t} );\\n\\n\\t// ID filter and find\\n\\tif ( support.getById ) {\\n\\t\\tExpr.filter[ \\\\\\\"ID\\\\\\\" ] = function( id ) {\\n\\t\\t\\tvar attrId = id.replace( runescape, funescape );\\n\\t\\t\\treturn function( elem ) {\\n\\t\\t\\t\\treturn elem.getAttribute( \\\\\\\"id\\\\\\\" ) === attrId;\\n\\t\\t\\t};\\n\\t\\t};\\n\\t\\tExpr.find[ \\\\\\\"ID\\\\\\\" ] = function( id, context ) {\\n\\t\\t\\tif ( typeof context.getElementById !== \\\\\\\"undefined\\\\\\\" && documentIsHTML ) {\\n\\t\\t\\t\\tvar elem = context.getElementById( id );\\n\\t\\t\\t\\treturn elem ? [ elem ] : [];\\n\\t\\t\\t}\\n\\t\\t};\\n\\t} else {\\n\\t\\tExpr.filter[ \\\\\\\"ID\\\\\\\" ] =  function( id ) {\\n\\t\\t\\tvar attrId = id.replace( runescape, funescape );\\n\\t\\t\\treturn function( elem ) {\\n\\t\\t\\t\\tvar node = typeof elem.getAttributeNode !== \\\\\\\"undefined\\\\\\\" &&\\n\\t\\t\\t\\t\\telem.getAttributeNode( \\\\\\\"id\\\\\\\" );\\n\\t\\t\\t\\treturn node && node.value === attrId;\\n\\t\\t\\t};\\n\\t\\t};\\n\\n\\t\\t// Support: IE 6 - 7 only\\n\\t\\t// getElementById is not reliable as a find shortcut\\n\\t\\tExpr.find[ \\\\\\\"ID\\\\\\\" ] = function( id, context ) {\\n\\t\\t\\tif ( typeof context.getElementById !== \\\\\\\"undefined\\\\\\\" && documentIsHTML ) {\\n\\t\\t\\t\\tvar node, i, elems,\\n\\t\\t\\t\\t\\telem = context.getElementById( id );\\n\\n\\t\\t\\t\\tif ( elem ) {\\n\\n\\t\\t\\t\\t\\t// Verify the id attribute\\n\\t\\t\\t\\t\\tnode = elem.getAttributeNode( \\\\\\\"id\\\\\\\" );\\n\\t\\t\\t\\t\\tif ( node && node.value === id ) {\\n\\t\\t\\t\\t\\t\\treturn [ elem ];\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t// Fall back on getElementsByName\\n\\t\\t\\t\\t\\telems = context.getElementsByName( id );\\n\\t\\t\\t\\t\\ti = 0;\\n\\t\\t\\t\\t\\twhile ( ( elem = elems[ i++ ] ) ) {\\n\\t\\t\\t\\t\\t\\tnode = elem.getAttributeNode( \\\\\\\"id\\\\\\\" );\\n\\t\\t\\t\\t\\t\\tif ( node && node.value === id ) {\\n\\t\\t\\t\\t\\t\\t\\treturn [ elem ];\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\treturn [];\\n\\t\\t\\t}\\n\\t\\t};\\n\\t}\\n\\n\\t// Tag\\n\\tExpr.find[ \\\\\\\"TAG\\\\\\\" ] = support.getElementsByTagName ?\\n\\t\\tfunction( tag, context ) {\\n\\t\\t\\tif ( typeof context.getElementsByTagName !== \\\\\\\"undefined\\\\\\\" ) {\\n\\t\\t\\t\\treturn context.getElementsByTagName( tag );\\n\\n\\t\\t\\t// DocumentFragment nodes don't have gEBTN\\n\\t\\t\\t} else if ( support.qsa ) {\\n\\t\\t\\t\\treturn context.querySelectorAll( tag );\\n\\t\\t\\t}\\n\\t\\t} :\\n\\n\\t\\tfunction( tag, context ) {\\n\\t\\t\\tvar elem,\\n\\t\\t\\t\\ttmp = [],\\n\\t\\t\\t\\ti = 0,\\n\\n\\t\\t\\t\\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\\n\\t\\t\\t\\tresults = context.getElementsByTagName( tag );\\n\\n\\t\\t\\t// Filter out possible comments\\n\\t\\t\\tif ( tag === \\\\\\\"*\\\\\\\" ) {\\n\\t\\t\\t\\twhile ( ( elem = results[ i++ ] ) ) {\\n\\t\\t\\t\\t\\tif ( elem.nodeType === 1 ) {\\n\\t\\t\\t\\t\\t\\ttmp.push( elem );\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\treturn tmp;\\n\\t\\t\\t}\\n\\t\\t\\treturn results;\\n\\t\\t};\\n\\n\\t// Class\\n\\tExpr.find[ \\\\\\\"CLASS\\\\\\\" ] = support.getElementsByClassName && function( className, context ) {\\n\\t\\tif ( typeof context.getElementsByClassName !== \\\\\\\"undefined\\\\\\\" && documentIsHTML ) {\\n\\t\\t\\treturn context.getElementsByClassName( className );\\n\\t\\t}\\n\\t};\\n\\n\\t/* QSA/matchesSelector\\n\\t---------------------------------------------------------------------- */\\n\\n\\t// QSA and matchesSelector support\\n\\n\\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\\n\\trbuggyMatches = [];\\n\\n\\t// qSa(:focus) reports false when true (Chrome 21)\\n\\t// We allow this because of a bug in IE8/9 that throws an error\\n\\t// whenever `document.activeElement` is accessed on an iframe\\n\\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\\n\\t// See https://bugs.jquery.com/ticket/13378\\n\\trbuggyQSA = [];\\n\\n\\tif ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {\\n\\n\\t\\t// Build QSA regex\\n\\t\\t// Regex strategy adopted from Diego Perini\\n\\t\\tassert( function( el ) {\\n\\n\\t\\t\\tvar input;\\n\\n\\t\\t\\t// Select is set to empty string on purpose\\n\\t\\t\\t// This is to test IE's treatment of not explicitly\\n\\t\\t\\t// setting a boolean content attribute,\\n\\t\\t\\t// since its presence should be enough\\n\\t\\t\\t// https://bugs.jquery.com/ticket/12359\\n\\t\\t\\tdocElem.appendChild( el ).innerHTML = \\\\\\\"<a id='\\\\\\\" + expando + \\\\\\\"'></a>\\\\\\\" +\\n\\t\\t\\t\\t\\\\\\\"<select id='\\\\\\\" + expando + \\\\\\\"-\\\\r\\\\\\\\' msallowcapture=''>\\\\\\\" +\\n\\t\\t\\t\\t\\\\\\\"<option selected=''></option></select>\\\\\\\";\\n\\n\\t\\t\\t// Support: IE8, Opera 11-12.16\\n\\t\\t\\t// Nothing should be selected when empty strings follow ^= or $= or *=\\n\\t\\t\\t// The test attribute must be unknown in Opera but \\\\\\\"safe\\\\\\\" for WinRT\\n\\t\\t\\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\\n\\t\\t\\tif ( el.querySelectorAll( \\\\\\\"[msallowcapture^='']\\\\\\\" ).length ) {\\n\\t\\t\\t\\trbuggyQSA.push( \\\\\\\"[*^$]=\\\\\\\" + whitespace + \\\\\\\"*(?:''|\\\\\\\\\\\"\\\\\\\\\\\")\\\\\\\" );\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Support: IE8\\n\\t\\t\\t// Boolean attributes and \\\\\\\"value\\\\\\\" are not treated correctly\\n\\t\\t\\tif ( !el.querySelectorAll( \\\\\\\"[selected]\\\\\\\" ).length ) {\\n\\t\\t\\t\\trbuggyQSA.push( \\\\\\\"\\\\\\\\[\\\\\\\" + whitespace + \\\\\\\"*(?:value|\\\\\\\" + booleans + \\\\\\\")\\\\\\\" );\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\\n\\t\\t\\tif ( !el.querySelectorAll( \\\\\\\"[id~=\\\\\\\" + expando + \\\\\\\"-]\\\\\\\" ).length ) {\\n\\t\\t\\t\\trbuggyQSA.push( \\\\\\\"~=\\\\\\\" );\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Support: IE 11+, Edge 15 - 18+\\n\\t\\t\\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\\n\\t\\t\\t// Adding a temporary attribute to the document before the selection works\\n\\t\\t\\t// around the issue.\\n\\t\\t\\t// Interestingly, IE 10 & older don't seem to have the issue.\\n\\t\\t\\tinput = document.createElement( \\\\\\\"input\\\\\\\" );\\n\\t\\t\\tinput.setAttribute( \\\\\\\"name\\\\\\\", \\\\\\\"\\\\\\\" );\\n\\t\\t\\tel.appendChild( input );\\n\\t\\t\\tif ( !el.querySelectorAll( \\\\\\\"[name='']\\\\\\\" ).length ) {\\n\\t\\t\\t\\trbuggyQSA.push( \\\\\\\"\\\\\\\\[\\\\\\\" + whitespace + \\\\\\\"*name\\\\\\\" + whitespace + \\\\\\\"*=\\\\\\\" +\\n\\t\\t\\t\\t\\twhitespace + \\\\\\\"*(?:''|\\\\\\\\\\\"\\\\\\\\\\\")\\\\\\\" );\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Webkit/Opera - :checked should return selected option elements\\n\\t\\t\\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\\n\\t\\t\\t// IE8 throws error here and will not see later tests\\n\\t\\t\\tif ( !el.querySelectorAll( \\\\\\\":checked\\\\\\\" ).length ) {\\n\\t\\t\\t\\trbuggyQSA.push( \\\\\\\":checked\\\\\\\" );\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Support: Safari 8+, iOS 8+\\n\\t\\t\\t// https://bugs.webkit.org/show_bug.cgi?id=136851\\n\\t\\t\\t// In-page `selector#id sibling-combinator selector` fails\\n\\t\\t\\tif ( !el.querySelectorAll( \\\\\\\"a#\\\\\\\" + expando + \\\\\\\"+*\\\\\\\" ).length ) {\\n\\t\\t\\t\\trbuggyQSA.push( \\\\\\\".#.+[+~]\\\\\\\" );\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Support: Firefox <=3.6 - 5 only\\n\\t\\t\\t// Old Firefox doesn't throw on a badly-escaped identifier.\\n\\t\\t\\tel.querySelectorAll( \\\\\\\"\\\\\\\\\\\\f\\\\\\\" );\\n\\t\\t\\trbuggyQSA.push( \\\\\\\"[\\\\\\\\r\\\\\\\\n\\\\\\\\f]\\\\\\\" );\\n\\t\\t} );\\n\\n\\t\\tassert( function( el ) {\\n\\t\\t\\tel.innerHTML = \\\\\\\"<a href='' disabled='disabled'></a>\\\\\\\" +\\n\\t\\t\\t\\t\\\\\\\"<select disabled='disabled'><option/></select>\\\\\\\";\\n\\n\\t\\t\\t// Support: Windows 8 Native Apps\\n\\t\\t\\t// The type and name attributes are restricted during .innerHTML assignment\\n\\t\\t\\tvar input = document.createElement( \\\\\\\"input\\\\\\\" );\\n\\t\\t\\tinput.setAttribute( \\\\\\\"type\\\\\\\", \\\\\\\"hidden\\\\\\\" );\\n\\t\\t\\tel.appendChild( input ).setAttribute( \\\\\\\"name\\\\\\\", \\\\\\\"D\\\\\\\" );\\n\\n\\t\\t\\t// Support: IE8\\n\\t\\t\\t// Enforce case-sensitivity of name attribute\\n\\t\\t\\tif ( el.querySelectorAll( \\\\\\\"[name=d]\\\\\\\" ).length ) {\\n\\t\\t\\t\\trbuggyQSA.push( \\\\\\\"name\\\\\\\" + whitespace + \\\\\\\"*[*^$|!~]?=\\\\\\\" );\\n\\t\\t\\t}\\n\\n\\t\\t\\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\\n\\t\\t\\t// IE8 throws error here and will not see later tests\\n\\t\\t\\tif ( el.querySelectorAll( \\\\\\\":enabled\\\\\\\" ).length !== 2 ) {\\n\\t\\t\\t\\trbuggyQSA.push( \\\\\\\":enabled\\\\\\\", \\\\\\\":disabled\\\\\\\" );\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Support: IE9-11+\\n\\t\\t\\t// IE's :disabled selector does not pick up the children of disabled fieldsets\\n\\t\\t\\tdocElem.appendChild( el ).disabled = true;\\n\\t\\t\\tif ( el.querySelectorAll( \\\\\\\":disabled\\\\\\\" ).length !== 2 ) {\\n\\t\\t\\t\\trbuggyQSA.push( \\\\\\\":enabled\\\\\\\", \\\\\\\":disabled\\\\\\\" );\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Support: Opera 10 - 11 only\\n\\t\\t\\t// Opera 10-11 does not throw on post-comma invalid pseudos\\n\\t\\t\\tel.querySelectorAll( \\\\\\\"*,:x\\\\\\\" );\\n\\t\\t\\trbuggyQSA.push( \\\\\\\",.*:\\\\\\\" );\\n\\t\\t} );\\n\\t}\\n\\n\\tif ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||\\n\\t\\tdocElem.webkitMatchesSelector ||\\n\\t\\tdocElem.mozMatchesSelector ||\\n\\t\\tdocElem.oMatchesSelector ||\\n\\t\\tdocElem.msMatchesSelector ) ) ) ) {\\n\\n\\t\\tassert( function( el ) {\\n\\n\\t\\t\\t// Check to see if it's possible to do matchesSelector\\n\\t\\t\\t// on a disconnected node (IE 9)\\n\\t\\t\\tsupport.disconnectedMatch = matches.call( el, \\\\\\\"*\\\\\\\" );\\n\\n\\t\\t\\t// This should fail with an exception\\n\\t\\t\\t// Gecko does not error, returns false instead\\n\\t\\t\\tmatches.call( el, \\\\\\\"[s!='']:x\\\\\\\" );\\n\\t\\t\\trbuggyMatches.push( \\\\\\\"!=\\\\\\\", pseudos );\\n\\t\\t} );\\n\\t}\\n\\n\\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \\\\\\\"|\\\\\\\" ) );\\n\\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( \\\\\\\"|\\\\\\\" ) );\\n\\n\\t/* Contains\\n\\t---------------------------------------------------------------------- */\\n\\thasCompare = rnative.test( docElem.compareDocumentPosition );\\n\\n\\t// Element contains another\\n\\t// Purposefully self-exclusive\\n\\t// As in, an element does not contain itself\\n\\tcontains = hasCompare || rnative.test( docElem.contains ) ?\\n\\t\\tfunction( a, b ) {\\n\\t\\t\\tvar adown = a.nodeType === 9 ? a.documentElement : a,\\n\\t\\t\\t\\tbup = b && b.parentNode;\\n\\t\\t\\treturn a === bup || !!( bup && bup.nodeType === 1 && (\\n\\t\\t\\t\\tadown.contains ?\\n\\t\\t\\t\\t\\tadown.contains( bup ) :\\n\\t\\t\\t\\t\\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\\n\\t\\t\\t) );\\n\\t\\t} :\\n\\t\\tfunction( a, b ) {\\n\\t\\t\\tif ( b ) {\\n\\t\\t\\t\\twhile ( ( b = b.parentNode ) ) {\\n\\t\\t\\t\\t\\tif ( b === a ) {\\n\\t\\t\\t\\t\\t\\treturn true;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\treturn false;\\n\\t\\t};\\n\\n\\t/* Sorting\\n\\t---------------------------------------------------------------------- */\\n\\n\\t// Document order sorting\\n\\tsortOrder = hasCompare ?\\n\\tfunction( a, b ) {\\n\\n\\t\\t// Flag for duplicate removal\\n\\t\\tif ( a === b ) {\\n\\t\\t\\thasDuplicate = true;\\n\\t\\t\\treturn 0;\\n\\t\\t}\\n\\n\\t\\t// Sort on method existence if only one input has compareDocumentPosition\\n\\t\\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\\n\\t\\tif ( compare ) {\\n\\t\\t\\treturn compare;\\n\\t\\t}\\n\\n\\t\\t// Calculate position if both inputs belong to the same document\\n\\t\\t// Support: IE 11+, Edge 17 - 18+\\n\\t\\t// IE/Edge sometimes throw a \\\\\\\"Permission denied\\\\\\\" error when strict-comparing\\n\\t\\t// two documents; shallow comparisons work.\\n\\t\\t// eslint-disable-next-line eqeqeq\\n\\t\\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\\n\\t\\t\\ta.compareDocumentPosition( b ) :\\n\\n\\t\\t\\t// Otherwise we know they are disconnected\\n\\t\\t\\t1;\\n\\n\\t\\t// Disconnected nodes\\n\\t\\tif ( compare & 1 ||\\n\\t\\t\\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\\n\\n\\t\\t\\t// Choose the first element that is related to our preferred document\\n\\t\\t\\t// Support: IE 11+, Edge 17 - 18+\\n\\t\\t\\t// IE/Edge sometimes throw a \\\\\\\"Permission denied\\\\\\\" error when strict-comparing\\n\\t\\t\\t// two documents; shallow comparisons work.\\n\\t\\t\\t// eslint-disable-next-line eqeqeq\\n\\t\\t\\tif ( a == document || a.ownerDocument == preferredDoc &&\\n\\t\\t\\t\\tcontains( preferredDoc, a ) ) {\\n\\t\\t\\t\\treturn -1;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Support: IE 11+, Edge 17 - 18+\\n\\t\\t\\t// IE/Edge sometimes throw a \\\\\\\"Permission denied\\\\\\\" error when strict-comparing\\n\\t\\t\\t// two documents; shallow comparisons work.\\n\\t\\t\\t// eslint-disable-next-line eqeqeq\\n\\t\\t\\tif ( b == document || b.ownerDocument == preferredDoc &&\\n\\t\\t\\t\\tcontains( preferredDoc, b ) ) {\\n\\t\\t\\t\\treturn 1;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Maintain original order\\n\\t\\t\\treturn sortInput ?\\n\\t\\t\\t\\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\\n\\t\\t\\t\\t0;\\n\\t\\t}\\n\\n\\t\\treturn compare & 4 ? -1 : 1;\\n\\t} :\\n\\tfunction( a, b ) {\\n\\n\\t\\t// Exit early if the nodes are identical\\n\\t\\tif ( a === b ) {\\n\\t\\t\\thasDuplicate = true;\\n\\t\\t\\treturn 0;\\n\\t\\t}\\n\\n\\t\\tvar cur,\\n\\t\\t\\ti = 0,\\n\\t\\t\\taup = a.parentNode,\\n\\t\\t\\tbup = b.parentNode,\\n\\t\\t\\tap = [ a ],\\n\\t\\t\\tbp = [ b ];\\n\\n\\t\\t// Parentless nodes are either documents or disconnected\\n\\t\\tif ( !aup || !bup ) {\\n\\n\\t\\t\\t// Support: IE 11+, Edge 17 - 18+\\n\\t\\t\\t// IE/Edge sometimes throw a \\\\\\\"Permission denied\\\\\\\" error when strict-comparing\\n\\t\\t\\t// two documents; shallow comparisons work.\\n\\t\\t\\t/* eslint-disable eqeqeq */\\n\\t\\t\\treturn a == document ? -1 :\\n\\t\\t\\t\\tb == document ? 1 :\\n\\t\\t\\t\\t/* eslint-enable eqeqeq */\\n\\t\\t\\t\\taup ? -1 :\\n\\t\\t\\t\\tbup ? 1 :\\n\\t\\t\\t\\tsortInput ?\\n\\t\\t\\t\\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\\n\\t\\t\\t\\t0;\\n\\n\\t\\t// If the nodes are siblings, we can do a quick check\\n\\t\\t} else if ( aup === bup ) {\\n\\t\\t\\treturn siblingCheck( a, b );\\n\\t\\t}\\n\\n\\t\\t// Otherwise we need full lists of their ancestors for comparison\\n\\t\\tcur = a;\\n\\t\\twhile ( ( cur = cur.parentNode ) ) {\\n\\t\\t\\tap.unshift( cur );\\n\\t\\t}\\n\\t\\tcur = b;\\n\\t\\twhile ( ( cur = cur.parentNode ) ) {\\n\\t\\t\\tbp.unshift( cur );\\n\\t\\t}\\n\\n\\t\\t// Walk down the tree looking for a discrepancy\\n\\t\\twhile ( ap[ i ] === bp[ i ] ) {\\n\\t\\t\\ti++;\\n\\t\\t}\\n\\n\\t\\treturn i ?\\n\\n\\t\\t\\t// Do a sibling check if the nodes have a common ancestor\\n\\t\\t\\tsiblingCheck( ap[ i ], bp[ i ] ) :\\n\\n\\t\\t\\t// Otherwise nodes in our document sort first\\n\\t\\t\\t// Support: IE 11+, Edge 17 - 18+\\n\\t\\t\\t// IE/Edge sometimes throw a \\\\\\\"Permission denied\\\\\\\" error when strict-comparing\\n\\t\\t\\t// two documents; shallow comparisons work.\\n\\t\\t\\t/* eslint-disable eqeqeq */\\n\\t\\t\\tap[ i ] == preferredDoc ? -1 :\\n\\t\\t\\tbp[ i ] == preferredDoc ? 1 :\\n\\t\\t\\t/* eslint-enable eqeqeq */\\n\\t\\t\\t0;\\n\\t};\\n\\n\\treturn document;\\n};\\n\\nSizzle.matches = function( expr, elements ) {\\n\\treturn Sizzle( expr, null, null, elements );\\n};\\n\\nSizzle.matchesSelector = function( elem, expr ) {\\n\\tsetDocument( elem );\\n\\n\\tif ( support.matchesSelector && documentIsHTML &&\\n\\t\\t!nonnativeSelectorCache[ expr + \\\\\\\" \\\\\\\" ] &&\\n\\t\\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\\n\\t\\t( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {\\n\\n\\t\\ttry {\\n\\t\\t\\tvar ret = matches.call( elem, expr );\\n\\n\\t\\t\\t// IE 9's matchesSelector returns false on disconnected nodes\\n\\t\\t\\tif ( ret || support.disconnectedMatch ||\\n\\n\\t\\t\\t\\t// As well, disconnected nodes are said to be in a document\\n\\t\\t\\t\\t// fragment in IE 9\\n\\t\\t\\t\\telem.document && elem.document.nodeType !== 11 ) {\\n\\t\\t\\t\\treturn ret;\\n\\t\\t\\t}\\n\\t\\t} catch ( e ) {\\n\\t\\t\\tnonnativeSelectorCache( expr, true );\\n\\t\\t}\\n\\t}\\n\\n\\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\\n};\\n\\nSizzle.contains = function( context, elem ) {\\n\\n\\t// Set document vars if needed\\n\\t// Support: IE 11+, Edge 17 - 18+\\n\\t// IE/Edge sometimes throw a \\\\\\\"Permission denied\\\\\\\" error when strict-comparing\\n\\t// two documents; shallow comparisons work.\\n\\t// eslint-disable-next-line eqeqeq\\n\\tif ( ( context.ownerDocument || context ) != document ) {\\n\\t\\tsetDocument( context );\\n\\t}\\n\\treturn contains( context, elem );\\n};\\n\\nSizzle.attr = function( elem, name ) {\\n\\n\\t// Set document vars if needed\\n\\t// Support: IE 11+, Edge 17 - 18+\\n\\t// IE/Edge sometimes throw a \\\\\\\"Permission denied\\\\\\\" error when strict-comparing\\n\\t// two documents; shallow comparisons work.\\n\\t// eslint-disable-next-line eqeqeq\\n\\tif ( ( elem.ownerDocument || elem ) != document ) {\\n\\t\\tsetDocument( elem );\\n\\t}\\n\\n\\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\\n\\n\\t\\t// Don't get fooled by Object.prototype properties (jQuery #13807)\\n\\t\\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\\n\\t\\t\\tfn( elem, name, !documentIsHTML ) :\\n\\t\\t\\tundefined;\\n\\n\\treturn val !== undefined ?\\n\\t\\tval :\\n\\t\\tsupport.attributes || !documentIsHTML ?\\n\\t\\t\\telem.getAttribute( name ) :\\n\\t\\t\\t( val = elem.getAttributeNode( name ) ) && val.specified ?\\n\\t\\t\\t\\tval.value :\\n\\t\\t\\t\\tnull;\\n};\\n\\nSizzle.escape = function( sel ) {\\n\\treturn ( sel + \\\\\\\"\\\\\\\" ).replace( rcssescape, fcssescape );\\n};\\n\\nSizzle.error = function( msg ) {\\n\\tthrow new Error( \\\\\\\"Syntax error, unrecognized expression: \\\\\\\" + msg );\\n};\\n\\n/**\\n * Document sorting and removing duplicates\\n * @param {ArrayLike} results\\n */\\nSizzle.uniqueSort = function( results ) {\\n\\tvar elem,\\n\\t\\tduplicates = [],\\n\\t\\tj = 0,\\n\\t\\ti = 0;\\n\\n\\t// Unless we *know* we can detect duplicates, assume their presence\\n\\thasDuplicate = !support.detectDuplicates;\\n\\tsortInput = !support.sortStable && results.slice( 0 );\\n\\tresults.sort( sortOrder );\\n\\n\\tif ( hasDuplicate ) {\\n\\t\\twhile ( ( elem = results[ i++ ] ) ) {\\n\\t\\t\\tif ( elem === results[ i ] ) {\\n\\t\\t\\t\\tj = duplicates.push( i );\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\twhile ( j-- ) {\\n\\t\\t\\tresults.splice( duplicates[ j ], 1 );\\n\\t\\t}\\n\\t}\\n\\n\\t// Clear input after sorting to release objects\\n\\t// See https://github.com/jquery/sizzle/pull/225\\n\\tsortInput = null;\\n\\n\\treturn results;\\n};\\n\\n/**\\n * Utility function for retrieving the text value of an array of DOM nodes\\n * @param {Array|Element} elem\\n */\\ngetText = Sizzle.getText = function( elem ) {\\n\\tvar node,\\n\\t\\tret = \\\\\\\"\\\\\\\",\\n\\t\\ti = 0,\\n\\t\\tnodeType = elem.nodeType;\\n\\n\\tif ( !nodeType ) {\\n\\n\\t\\t// If no nodeType, this is expected to be an array\\n\\t\\twhile ( ( node = elem[ i++ ] ) ) {\\n\\n\\t\\t\\t// Do not traverse comment nodes\\n\\t\\t\\tret += getText( node );\\n\\t\\t}\\n\\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\\n\\n\\t\\t// Use textContent for elements\\n\\t\\t// innerText usage removed for consistency of new lines (jQuery #11153)\\n\\t\\tif ( typeof elem.textContent === \\\\\\\"string\\\\\\\" ) {\\n\\t\\t\\treturn elem.textContent;\\n\\t\\t} else {\\n\\n\\t\\t\\t// Traverse its children\\n\\t\\t\\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\\n\\t\\t\\t\\tret += getText( elem );\\n\\t\\t\\t}\\n\\t\\t}\\n\\t} else if ( nodeType === 3 || nodeType === 4 ) {\\n\\t\\treturn elem.nodeValue;\\n\\t}\\n\\n\\t// Do not include comment or processing instruction nodes\\n\\n\\treturn ret;\\n};\\n\\nExpr = Sizzle.selectors = {\\n\\n\\t// Can be adjusted by the user\\n\\tcacheLength: 50,\\n\\n\\tcreatePseudo: markFunction,\\n\\n\\tmatch: matchExpr,\\n\\n\\tattrHandle: {},\\n\\n\\tfind: {},\\n\\n\\trelative: {\\n\\t\\t\\\\\\\">\\\\\\\": { dir: \\\\\\\"parentNode\\\\\\\", first: true },\\n\\t\\t\\\\\\\" \\\\\\\": { dir: \\\\\\\"parentNode\\\\\\\" },\\n\\t\\t\\\\\\\"+\\\\\\\": { dir: \\\\\\\"previousSibling\\\\\\\", first: true },\\n\\t\\t\\\\\\\"~\\\\\\\": { dir: \\\\\\\"previousSibling\\\\\\\" }\\n\\t},\\n\\n\\tpreFilter: {\\n\\t\\t\\\\\\\"ATTR\\\\\\\": function( match ) {\\n\\t\\t\\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\\n\\n\\t\\t\\t// Move the given value to match[3] whether quoted or unquoted\\n\\t\\t\\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] ||\\n\\t\\t\\t\\tmatch[ 5 ] || \\\\\\\"\\\\\\\" ).replace( runescape, funescape );\\n\\n\\t\\t\\tif ( match[ 2 ] === \\\\\\\"~=\\\\\\\" ) {\\n\\t\\t\\t\\tmatch[ 3 ] = \\\\\\\" \\\\\\\" + match[ 3 ] + \\\\\\\" \\\\\\\";\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn match.slice( 0, 4 );\\n\\t\\t},\\n\\n\\t\\t\\\\\\\"CHILD\\\\\\\": function( match ) {\\n\\n\\t\\t\\t/* matches from matchExpr[\\\\\\\"CHILD\\\\\\\"]\\n\\t\\t\\t\\t1 type (only|nth|...)\\n\\t\\t\\t\\t2 what (child|of-type)\\n\\t\\t\\t\\t3 argument (even|odd|\\\\d*|\\\\d*n([+-]\\\\d+)?|...)\\n\\t\\t\\t\\t4 xn-component of xn+y argument ([+-]?\\\\d*n|)\\n\\t\\t\\t\\t5 sign of xn-component\\n\\t\\t\\t\\t6 x of xn-component\\n\\t\\t\\t\\t7 sign of y-component\\n\\t\\t\\t\\t8 y of y-component\\n\\t\\t\\t*/\\n\\t\\t\\tmatch[ 1 ] = match[ 1 ].toLowerCase();\\n\\n\\t\\t\\tif ( match[ 1 ].slice( 0, 3 ) === \\\\\\\"nth\\\\\\\" ) {\\n\\n\\t\\t\\t\\t// nth-* requires argument\\n\\t\\t\\t\\tif ( !match[ 3 ] ) {\\n\\t\\t\\t\\t\\tSizzle.error( match[ 0 ] );\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// numeric x and y parameters for Expr.filter.CHILD\\n\\t\\t\\t\\t// remember that false/true cast respectively to 0/1\\n\\t\\t\\t\\tmatch[ 4 ] = +( match[ 4 ] ?\\n\\t\\t\\t\\t\\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\\n\\t\\t\\t\\t\\t2 * ( match[ 3 ] === \\\\\\\"even\\\\\\\" || match[ 3 ] === \\\\\\\"odd\\\\\\\" ) );\\n\\t\\t\\t\\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \\\\\\\"odd\\\\\\\" );\\n\\n\\t\\t\\t\\t// other types prohibit arguments\\n\\t\\t\\t} else if ( match[ 3 ] ) {\\n\\t\\t\\t\\tSizzle.error( match[ 0 ] );\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn match;\\n\\t\\t},\\n\\n\\t\\t\\\\\\\"PSEUDO\\\\\\\": function( match ) {\\n\\t\\t\\tvar excess,\\n\\t\\t\\t\\tunquoted = !match[ 6 ] && match[ 2 ];\\n\\n\\t\\t\\tif ( matchExpr[ \\\\\\\"CHILD\\\\\\\" ].test( match[ 0 ] ) ) {\\n\\t\\t\\t\\treturn null;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Accept quoted arguments as-is\\n\\t\\t\\tif ( match[ 3 ] ) {\\n\\t\\t\\t\\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \\\\\\\"\\\\\\\";\\n\\n\\t\\t\\t// Strip excess characters from unquoted arguments\\n\\t\\t\\t} else if ( unquoted && rpseudo.test( unquoted ) &&\\n\\n\\t\\t\\t\\t// Get excess from tokenize (recursively)\\n\\t\\t\\t\\t( excess = tokenize( unquoted, true ) ) &&\\n\\n\\t\\t\\t\\t// advance to the next closing parenthesis\\n\\t\\t\\t\\t( excess = unquoted.indexOf( \\\\\\\")\\\\\\\", unquoted.length - excess ) - unquoted.length ) ) {\\n\\n\\t\\t\\t\\t// excess is a negative index\\n\\t\\t\\t\\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\\n\\t\\t\\t\\tmatch[ 2 ] = unquoted.slice( 0, excess );\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Return only captures needed by the pseudo filter method (type and argument)\\n\\t\\t\\treturn match.slice( 0, 3 );\\n\\t\\t}\\n\\t},\\n\\n\\tfilter: {\\n\\n\\t\\t\\\\\\\"TAG\\\\\\\": function( nodeNameSelector ) {\\n\\t\\t\\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\\n\\t\\t\\treturn nodeNameSelector === \\\\\\\"*\\\\\\\" ?\\n\\t\\t\\t\\tfunction() {\\n\\t\\t\\t\\t\\treturn true;\\n\\t\\t\\t\\t} :\\n\\t\\t\\t\\tfunction( elem ) {\\n\\t\\t\\t\\t\\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\\n\\t\\t\\t\\t};\\n\\t\\t},\\n\\n\\t\\t\\\\\\\"CLASS\\\\\\\": function( className ) {\\n\\t\\t\\tvar pattern = classCache[ className + \\\\\\\" \\\\\\\" ];\\n\\n\\t\\t\\treturn pattern ||\\n\\t\\t\\t\\t( pattern = new RegExp( \\\\\\\"(^|\\\\\\\" + whitespace +\\n\\t\\t\\t\\t\\t\\\\\\\")\\\\\\\" + className + \\\\\\\"(\\\\\\\" + whitespace + \\\\\\\"|$)\\\\\\\" ) ) && classCache(\\n\\t\\t\\t\\t\\t\\tclassName, function( elem ) {\\n\\t\\t\\t\\t\\t\\t\\treturn pattern.test(\\n\\t\\t\\t\\t\\t\\t\\t\\ttypeof elem.className === \\\\\\\"string\\\\\\\" && elem.className ||\\n\\t\\t\\t\\t\\t\\t\\t\\ttypeof elem.getAttribute !== \\\\\\\"undefined\\\\\\\" &&\\n\\t\\t\\t\\t\\t\\t\\t\\t\\telem.getAttribute( \\\\\\\"class\\\\\\\" ) ||\\n\\t\\t\\t\\t\\t\\t\\t\\t\\\\\\\"\\\\\\\"\\n\\t\\t\\t\\t\\t\\t\\t);\\n\\t\\t\\t\\t} );\\n\\t\\t},\\n\\n\\t\\t\\\\\\\"ATTR\\\\\\\": function( name, operator, check ) {\\n\\t\\t\\treturn function( elem ) {\\n\\t\\t\\t\\tvar result = Sizzle.attr( elem, name );\\n\\n\\t\\t\\t\\tif ( result == null ) {\\n\\t\\t\\t\\t\\treturn operator === \\\\\\\"!=\\\\\\\";\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif ( !operator ) {\\n\\t\\t\\t\\t\\treturn true;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tresult += \\\\\\\"\\\\\\\";\\n\\n\\t\\t\\t\\t/* eslint-disable max-len */\\n\\n\\t\\t\\t\\treturn operator === \\\\\\\"=\\\\\\\" ? result === check :\\n\\t\\t\\t\\t\\toperator === \\\\\\\"!=\\\\\\\" ? result !== check :\\n\\t\\t\\t\\t\\toperator === \\\\\\\"^=\\\\\\\" ? check && result.indexOf( check ) === 0 :\\n\\t\\t\\t\\t\\toperator === \\\\\\\"*=\\\\\\\" ? check && result.indexOf( check ) > -1 :\\n\\t\\t\\t\\t\\toperator === \\\\\\\"$=\\\\\\\" ? check && result.slice( -check.length ) === check :\\n\\t\\t\\t\\t\\toperator === \\\\\\\"~=\\\\\\\" ? ( \\\\\\\" \\\\\\\" + result.replace( rwhitespace, \\\\\\\" \\\\\\\" ) + \\\\\\\" \\\\\\\" ).indexOf( check ) > -1 :\\n\\t\\t\\t\\t\\toperator === \\\\\\\"|=\\\\\\\" ? result === check || result.slice( 0, check.length + 1 ) === check + \\\\\\\"-\\\\\\\" :\\n\\t\\t\\t\\t\\tfalse;\\n\\t\\t\\t\\t/* eslint-enable max-len */\\n\\n\\t\\t\\t};\\n\\t\\t},\\n\\n\\t\\t\\\\\\\"CHILD\\\\\\\": function( type, what, _argument, first, last ) {\\n\\t\\t\\tvar simple = type.slice( 0, 3 ) !== \\\\\\\"nth\\\\\\\",\\n\\t\\t\\t\\tforward = type.slice( -4 ) !== \\\\\\\"last\\\\\\\",\\n\\t\\t\\t\\tofType = what === \\\\\\\"of-type\\\\\\\";\\n\\n\\t\\t\\treturn first === 1 && last === 0 ?\\n\\n\\t\\t\\t\\t// Shortcut for :nth-*(n)\\n\\t\\t\\t\\tfunction( elem ) {\\n\\t\\t\\t\\t\\treturn !!elem.parentNode;\\n\\t\\t\\t\\t} :\\n\\n\\t\\t\\t\\tfunction( elem, _context, xml ) {\\n\\t\\t\\t\\t\\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\\n\\t\\t\\t\\t\\t\\tdir = simple !== forward ? \\\\\\\"nextSibling\\\\\\\" : \\\\\\\"previousSibling\\\\\\\",\\n\\t\\t\\t\\t\\t\\tparent = elem.parentNode,\\n\\t\\t\\t\\t\\t\\tname = ofType && elem.nodeName.toLowerCase(),\\n\\t\\t\\t\\t\\t\\tuseCache = !xml && !ofType,\\n\\t\\t\\t\\t\\t\\tdiff = false;\\n\\n\\t\\t\\t\\t\\tif ( parent ) {\\n\\n\\t\\t\\t\\t\\t\\t// :(first|last|only)-(child|of-type)\\n\\t\\t\\t\\t\\t\\tif ( simple ) {\\n\\t\\t\\t\\t\\t\\t\\twhile ( dir ) {\\n\\t\\t\\t\\t\\t\\t\\t\\tnode = elem;\\n\\t\\t\\t\\t\\t\\t\\t\\twhile ( ( node = node[ dir ] ) ) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( ofType ?\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tnode.nodeName.toLowerCase() === name :\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tnode.nodeType === 1 ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\treturn false;\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t// Reverse direction for :only-* (if we haven't yet done so)\\n\\t\\t\\t\\t\\t\\t\\t\\tstart = dir = type === \\\\\\\"only\\\\\\\" && !start && \\\\\\\"nextSibling\\\\\\\";\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\treturn true;\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\tstart = [ forward ? parent.firstChild : parent.lastChild ];\\n\\n\\t\\t\\t\\t\\t\\t// non-xml :nth-child(...) stores cache data on `parent`\\n\\t\\t\\t\\t\\t\\tif ( forward && useCache ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t// Seek `elem` from a previously-cached index\\n\\n\\t\\t\\t\\t\\t\\t\\t// ...in a gzip-friendly way\\n\\t\\t\\t\\t\\t\\t\\tnode = parent;\\n\\t\\t\\t\\t\\t\\t\\touterCache = node[ expando ] || ( node[ expando ] = {} );\\n\\n\\t\\t\\t\\t\\t\\t\\t// Support: IE <9 only\\n\\t\\t\\t\\t\\t\\t\\t// Defend against cloned attroperties (jQuery gh-1709)\\n\\t\\t\\t\\t\\t\\t\\tuniqueCache = outerCache[ node.uniqueID ] ||\\n\\t\\t\\t\\t\\t\\t\\t\\t( outerCache[ node.uniqueID ] = {} );\\n\\n\\t\\t\\t\\t\\t\\t\\tcache = uniqueCache[ type ] || [];\\n\\t\\t\\t\\t\\t\\t\\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\\n\\t\\t\\t\\t\\t\\t\\tdiff = nodeIndex && cache[ 2 ];\\n\\t\\t\\t\\t\\t\\t\\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\\n\\n\\t\\t\\t\\t\\t\\t\\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t// Fallback to seeking `elem` from the start\\n\\t\\t\\t\\t\\t\\t\\t\\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t// When found, cache indexes on `parent` and break\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( node.nodeType === 1 && ++diff && node === elem ) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\t\\t// Use previously-cached element index if available\\n\\t\\t\\t\\t\\t\\t\\tif ( useCache ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t// ...in a gzip-friendly way\\n\\t\\t\\t\\t\\t\\t\\t\\tnode = elem;\\n\\t\\t\\t\\t\\t\\t\\t\\touterCache = node[ expando ] || ( node[ expando ] = {} );\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t// Support: IE <9 only\\n\\t\\t\\t\\t\\t\\t\\t\\t// Defend against cloned attroperties (jQuery gh-1709)\\n\\t\\t\\t\\t\\t\\t\\t\\tuniqueCache = outerCache[ node.uniqueID ] ||\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t( outerCache[ node.uniqueID ] = {} );\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tcache = uniqueCache[ type ] || [];\\n\\t\\t\\t\\t\\t\\t\\t\\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\\n\\t\\t\\t\\t\\t\\t\\t\\tdiff = nodeIndex;\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\t// xml :nth-child(...)\\n\\t\\t\\t\\t\\t\\t\\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\\n\\t\\t\\t\\t\\t\\t\\tif ( diff === false ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t// Use the same loop as above to seek `elem` from the start\\n\\t\\t\\t\\t\\t\\t\\t\\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( ( ofType ?\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tnode.nodeName.toLowerCase() === name :\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tnode.nodeType === 1 ) &&\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t++diff ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// Cache the index of each encountered element\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( useCache ) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\touterCache = node[ expando ] ||\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t( node[ expando ] = {} );\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// Support: IE <9 only\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// Defend against cloned attroperties (jQuery gh-1709)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tuniqueCache = outerCache[ node.uniqueID ] ||\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t( outerCache[ node.uniqueID ] = {} );\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tuniqueCache[ type ] = [ dirruns, diff ];\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( node === elem ) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t// Incorporate the offset, then check against cycle size\\n\\t\\t\\t\\t\\t\\tdiff -= last;\\n\\t\\t\\t\\t\\t\\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t};\\n\\t\\t},\\n\\n\\t\\t\\\\\\\"PSEUDO\\\\\\\": function( pseudo, argument ) {\\n\\n\\t\\t\\t// pseudo-class names are case-insensitive\\n\\t\\t\\t// http://www.w3.org/TR/selectors/#pseudo-classes\\n\\t\\t\\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\\n\\t\\t\\t// Remember that setFilters inherits from pseudos\\n\\t\\t\\tvar args,\\n\\t\\t\\t\\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\\n\\t\\t\\t\\t\\tSizzle.error( \\\\\\\"unsupported pseudo: \\\\\\\" + pseudo );\\n\\n\\t\\t\\t// The user may use createPseudo to indicate that\\n\\t\\t\\t// arguments are needed to create the filter function\\n\\t\\t\\t// just as Sizzle does\\n\\t\\t\\tif ( fn[ expando ] ) {\\n\\t\\t\\t\\treturn fn( argument );\\n\\t\\t\\t}\\n\\n\\t\\t\\t// But maintain support for old signatures\\n\\t\\t\\tif ( fn.length > 1 ) {\\n\\t\\t\\t\\targs = [ pseudo, pseudo, \\\\\\\"\\\\\\\", argument ];\\n\\t\\t\\t\\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\\n\\t\\t\\t\\t\\tmarkFunction( function( seed, matches ) {\\n\\t\\t\\t\\t\\t\\tvar idx,\\n\\t\\t\\t\\t\\t\\t\\tmatched = fn( seed, argument ),\\n\\t\\t\\t\\t\\t\\t\\ti = matched.length;\\n\\t\\t\\t\\t\\t\\twhile ( i-- ) {\\n\\t\\t\\t\\t\\t\\t\\tidx = indexOf( seed, matched[ i ] );\\n\\t\\t\\t\\t\\t\\t\\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t} ) :\\n\\t\\t\\t\\t\\tfunction( elem ) {\\n\\t\\t\\t\\t\\t\\treturn fn( elem, 0, args );\\n\\t\\t\\t\\t\\t};\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn fn;\\n\\t\\t}\\n\\t},\\n\\n\\tpseudos: {\\n\\n\\t\\t// Potentially complex pseudos\\n\\t\\t\\\\\\\"not\\\\\\\": markFunction( function( selector ) {\\n\\n\\t\\t\\t// Trim the selector passed to compile\\n\\t\\t\\t// to avoid treating leading and trailing\\n\\t\\t\\t// spaces as combinators\\n\\t\\t\\tvar input = [],\\n\\t\\t\\t\\tresults = [],\\n\\t\\t\\t\\tmatcher = compile( selector.replace( rtrim, \\\\\\\"$1\\\\\\\" ) );\\n\\n\\t\\t\\treturn matcher[ expando ] ?\\n\\t\\t\\t\\tmarkFunction( function( seed, matches, _context, xml ) {\\n\\t\\t\\t\\t\\tvar elem,\\n\\t\\t\\t\\t\\t\\tunmatched = matcher( seed, null, xml, [] ),\\n\\t\\t\\t\\t\\t\\ti = seed.length;\\n\\n\\t\\t\\t\\t\\t// Match elements unmatched by `matcher`\\n\\t\\t\\t\\t\\twhile ( i-- ) {\\n\\t\\t\\t\\t\\t\\tif ( ( elem = unmatched[ i ] ) ) {\\n\\t\\t\\t\\t\\t\\t\\tseed[ i ] = !( matches[ i ] = elem );\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t} ) :\\n\\t\\t\\t\\tfunction( elem, _context, xml ) {\\n\\t\\t\\t\\t\\tinput[ 0 ] = elem;\\n\\t\\t\\t\\t\\tmatcher( input, null, xml, results );\\n\\n\\t\\t\\t\\t\\t// Don't keep the element (issue #299)\\n\\t\\t\\t\\t\\tinput[ 0 ] = null;\\n\\t\\t\\t\\t\\treturn !results.pop();\\n\\t\\t\\t\\t};\\n\\t\\t} ),\\n\\n\\t\\t\\\\\\\"has\\\\\\\": markFunction( function( selector ) {\\n\\t\\t\\treturn function( elem ) {\\n\\t\\t\\t\\treturn Sizzle( selector, elem ).length > 0;\\n\\t\\t\\t};\\n\\t\\t} ),\\n\\n\\t\\t\\\\\\\"contains\\\\\\\": markFunction( function( text ) {\\n\\t\\t\\ttext = text.replace( runescape, funescape );\\n\\t\\t\\treturn function( elem ) {\\n\\t\\t\\t\\treturn ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;\\n\\t\\t\\t};\\n\\t\\t} ),\\n\\n\\t\\t// \\\\\\\"Whether an element is represented by a :lang() selector\\n\\t\\t// is based solely on the element's language value\\n\\t\\t// being equal to the identifier C,\\n\\t\\t// or beginning with the identifier C immediately followed by \\\\\\\"-\\\\\\\".\\n\\t\\t// The matching of C against the element's language value is performed case-insensitively.\\n\\t\\t// The identifier C does not have to be a valid language name.\\\\\\\"\\n\\t\\t// http://www.w3.org/TR/selectors/#lang-pseudo\\n\\t\\t\\\\\\\"lang\\\\\\\": markFunction( function( lang ) {\\n\\n\\t\\t\\t// lang value must be a valid identifier\\n\\t\\t\\tif ( !ridentifier.test( lang || \\\\\\\"\\\\\\\" ) ) {\\n\\t\\t\\t\\tSizzle.error( \\\\\\\"unsupported lang: \\\\\\\" + lang );\\n\\t\\t\\t}\\n\\t\\t\\tlang = lang.replace( runescape, funescape ).toLowerCase();\\n\\t\\t\\treturn function( elem ) {\\n\\t\\t\\t\\tvar elemLang;\\n\\t\\t\\t\\tdo {\\n\\t\\t\\t\\t\\tif ( ( elemLang = documentIsHTML ?\\n\\t\\t\\t\\t\\t\\telem.lang :\\n\\t\\t\\t\\t\\t\\telem.getAttribute( \\\\\\\"xml:lang\\\\\\\" ) || elem.getAttribute( \\\\\\\"lang\\\\\\\" ) ) ) {\\n\\n\\t\\t\\t\\t\\t\\telemLang = elemLang.toLowerCase();\\n\\t\\t\\t\\t\\t\\treturn elemLang === lang || elemLang.indexOf( lang + \\\\\\\"-\\\\\\\" ) === 0;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\\n\\t\\t\\t\\treturn false;\\n\\t\\t\\t};\\n\\t\\t} ),\\n\\n\\t\\t// Miscellaneous\\n\\t\\t\\\\\\\"target\\\\\\\": function( elem ) {\\n\\t\\t\\tvar hash = window.location && window.location.hash;\\n\\t\\t\\treturn hash && hash.slice( 1 ) === elem.id;\\n\\t\\t},\\n\\n\\t\\t\\\\\\\"root\\\\\\\": function( elem ) {\\n\\t\\t\\treturn elem === docElem;\\n\\t\\t},\\n\\n\\t\\t\\\\\\\"focus\\\\\\\": function( elem ) {\\n\\t\\t\\treturn elem === document.activeElement &&\\n\\t\\t\\t\\t( !document.hasFocus || document.hasFocus() ) &&\\n\\t\\t\\t\\t!!( elem.type || elem.href || ~elem.tabIndex );\\n\\t\\t},\\n\\n\\t\\t// Boolean properties\\n\\t\\t\\\\\\\"enabled\\\\\\\": createDisabledPseudo( false ),\\n\\t\\t\\\\\\\"disabled\\\\\\\": createDisabledPseudo( true ),\\n\\n\\t\\t\\\\\\\"checked\\\\\\\": function( elem ) {\\n\\n\\t\\t\\t// In CSS3, :checked should return both checked and selected elements\\n\\t\\t\\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\\n\\t\\t\\tvar nodeName = elem.nodeName.toLowerCase();\\n\\t\\t\\treturn ( nodeName === \\\\\\\"input\\\\\\\" && !!elem.checked ) ||\\n\\t\\t\\t\\t( nodeName === \\\\\\\"option\\\\\\\" && !!elem.selected );\\n\\t\\t},\\n\\n\\t\\t\\\\\\\"selected\\\\\\\": function( elem ) {\\n\\n\\t\\t\\t// Accessing this property makes selected-by-default\\n\\t\\t\\t// options in Safari work properly\\n\\t\\t\\tif ( elem.parentNode ) {\\n\\t\\t\\t\\t// eslint-disable-next-line no-unused-expressions\\n\\t\\t\\t\\telem.parentNode.selectedIndex;\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn elem.selected === true;\\n\\t\\t},\\n\\n\\t\\t// Contents\\n\\t\\t\\\\\\\"empty\\\\\\\": function( elem ) {\\n\\n\\t\\t\\t// http://www.w3.org/TR/selectors/#empty-pseudo\\n\\t\\t\\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\\n\\t\\t\\t//   but not by others (comment: 8; processing instruction: 7; etc.)\\n\\t\\t\\t// nodeType < 6 works because attributes (2) do not appear as children\\n\\t\\t\\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\\n\\t\\t\\t\\tif ( elem.nodeType < 6 ) {\\n\\t\\t\\t\\t\\treturn false;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\treturn true;\\n\\t\\t},\\n\\n\\t\\t\\\\\\\"parent\\\\\\\": function( elem ) {\\n\\t\\t\\treturn !Expr.pseudos[ \\\\\\\"empty\\\\\\\" ]( elem );\\n\\t\\t},\\n\\n\\t\\t// Element/input types\\n\\t\\t\\\\\\\"header\\\\\\\": function( elem ) {\\n\\t\\t\\treturn rheader.test( elem.nodeName );\\n\\t\\t},\\n\\n\\t\\t\\\\\\\"input\\\\\\\": function( elem ) {\\n\\t\\t\\treturn rinputs.test( elem.nodeName );\\n\\t\\t},\\n\\n\\t\\t\\\\\\\"button\\\\\\\": function( elem ) {\\n\\t\\t\\tvar name = elem.nodeName.toLowerCase();\\n\\t\\t\\treturn name === \\\\\\\"input\\\\\\\" && elem.type === \\\\\\\"button\\\\\\\" || name === \\\\\\\"button\\\\\\\";\\n\\t\\t},\\n\\n\\t\\t\\\\\\\"text\\\\\\\": function( elem ) {\\n\\t\\t\\tvar attr;\\n\\t\\t\\treturn elem.nodeName.toLowerCase() === \\\\\\\"input\\\\\\\" &&\\n\\t\\t\\t\\telem.type === \\\\\\\"text\\\\\\\" &&\\n\\n\\t\\t\\t\\t// Support: IE<8\\n\\t\\t\\t\\t// New HTML5 attribute values (e.g., \\\\\\\"search\\\\\\\") appear with elem.type === \\\\\\\"text\\\\\\\"\\n\\t\\t\\t\\t( ( attr = elem.getAttribute( \\\\\\\"type\\\\\\\" ) ) == null ||\\n\\t\\t\\t\\t\\tattr.toLowerCase() === \\\\\\\"text\\\\\\\" );\\n\\t\\t},\\n\\n\\t\\t// Position-in-collection\\n\\t\\t\\\\\\\"first\\\\\\\": createPositionalPseudo( function() {\\n\\t\\t\\treturn [ 0 ];\\n\\t\\t} ),\\n\\n\\t\\t\\\\\\\"last\\\\\\\": createPositionalPseudo( function( _matchIndexes, length ) {\\n\\t\\t\\treturn [ length - 1 ];\\n\\t\\t} ),\\n\\n\\t\\t\\\\\\\"eq\\\\\\\": createPositionalPseudo( function( _matchIndexes, length, argument ) {\\n\\t\\t\\treturn [ argument < 0 ? argument + length : argument ];\\n\\t\\t} ),\\n\\n\\t\\t\\\\\\\"even\\\\\\\": createPositionalPseudo( function( matchIndexes, length ) {\\n\\t\\t\\tvar i = 0;\\n\\t\\t\\tfor ( ; i < length; i += 2 ) {\\n\\t\\t\\t\\tmatchIndexes.push( i );\\n\\t\\t\\t}\\n\\t\\t\\treturn matchIndexes;\\n\\t\\t} ),\\n\\n\\t\\t\\\\\\\"odd\\\\\\\": createPositionalPseudo( function( matchIndexes, length ) {\\n\\t\\t\\tvar i = 1;\\n\\t\\t\\tfor ( ; i < length; i += 2 ) {\\n\\t\\t\\t\\tmatchIndexes.push( i );\\n\\t\\t\\t}\\n\\t\\t\\treturn matchIndexes;\\n\\t\\t} ),\\n\\n\\t\\t\\\\\\\"lt\\\\\\\": createPositionalPseudo( function( matchIndexes, length, argument ) {\\n\\t\\t\\tvar i = argument < 0 ?\\n\\t\\t\\t\\targument + length :\\n\\t\\t\\t\\targument > length ?\\n\\t\\t\\t\\t\\tlength :\\n\\t\\t\\t\\t\\targument;\\n\\t\\t\\tfor ( ; --i >= 0; ) {\\n\\t\\t\\t\\tmatchIndexes.push( i );\\n\\t\\t\\t}\\n\\t\\t\\treturn matchIndexes;\\n\\t\\t} ),\\n\\n\\t\\t\\\\\\\"gt\\\\\\\": createPositionalPseudo( function( matchIndexes, length, argument ) {\\n\\t\\t\\tvar i = argument < 0 ? argument + length : argument;\\n\\t\\t\\tfor ( ; ++i < length; ) {\\n\\t\\t\\t\\tmatchIndexes.push( i );\\n\\t\\t\\t}\\n\\t\\t\\treturn matchIndexes;\\n\\t\\t} )\\n\\t}\\n};\\n\\nExpr.pseudos[ \\\\\\\"nth\\\\\\\" ] = Expr.pseudos[ \\\\\\\"eq\\\\\\\" ];\\n\\n// Add button/input type pseudos\\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\\n\\tExpr.pseudos[ i ] = createInputPseudo( i );\\n}\\nfor ( i in { submit: true, reset: true } ) {\\n\\tExpr.pseudos[ i ] = createButtonPseudo( i );\\n}\\n\\n// Easy API for creating new setFilters\\nfunction setFilters() {}\\nsetFilters.prototype = Expr.filters = Expr.pseudos;\\nExpr.setFilters = new setFilters();\\n\\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\\n\\tvar matched, match, tokens, type,\\n\\t\\tsoFar, groups, preFilters,\\n\\t\\tcached = tokenCache[ selector + \\\\\\\" \\\\\\\" ];\\n\\n\\tif ( cached ) {\\n\\t\\treturn parseOnly ? 0 : cached.slice( 0 );\\n\\t}\\n\\n\\tsoFar = selector;\\n\\tgroups = [];\\n\\tpreFilters = Expr.preFilter;\\n\\n\\twhile ( soFar ) {\\n\\n\\t\\t// Comma and first run\\n\\t\\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\\n\\t\\t\\tif ( match ) {\\n\\n\\t\\t\\t\\t// Don't consume trailing commas as valid\\n\\t\\t\\t\\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\\n\\t\\t\\t}\\n\\t\\t\\tgroups.push( ( tokens = [] ) );\\n\\t\\t}\\n\\n\\t\\tmatched = false;\\n\\n\\t\\t// Combinators\\n\\t\\tif ( ( match = rcombinators.exec( soFar ) ) ) {\\n\\t\\t\\tmatched = match.shift();\\n\\t\\t\\ttokens.push( {\\n\\t\\t\\t\\tvalue: matched,\\n\\n\\t\\t\\t\\t// Cast descendant combinators to space\\n\\t\\t\\t\\ttype: match[ 0 ].replace( rtrim, \\\\\\\" \\\\\\\" )\\n\\t\\t\\t} );\\n\\t\\t\\tsoFar = soFar.slice( matched.length );\\n\\t\\t}\\n\\n\\t\\t// Filters\\n\\t\\tfor ( type in Expr.filter ) {\\n\\t\\t\\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\\n\\t\\t\\t\\t( match = preFilters[ type ]( match ) ) ) ) {\\n\\t\\t\\t\\tmatched = match.shift();\\n\\t\\t\\t\\ttokens.push( {\\n\\t\\t\\t\\t\\tvalue: matched,\\n\\t\\t\\t\\t\\ttype: type,\\n\\t\\t\\t\\t\\tmatches: match\\n\\t\\t\\t\\t} );\\n\\t\\t\\t\\tsoFar = soFar.slice( matched.length );\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\tif ( !matched ) {\\n\\t\\t\\tbreak;\\n\\t\\t}\\n\\t}\\n\\n\\t// Return the length of the invalid excess\\n\\t// if we're just parsing\\n\\t// Otherwise, throw an error or return tokens\\n\\treturn parseOnly ?\\n\\t\\tsoFar.length :\\n\\t\\tsoFar ?\\n\\t\\t\\tSizzle.error( selector ) :\\n\\n\\t\\t\\t// Cache the tokens\\n\\t\\t\\ttokenCache( selector, groups ).slice( 0 );\\n};\\n\\nfunction toSelector( tokens ) {\\n\\tvar i = 0,\\n\\t\\tlen = tokens.length,\\n\\t\\tselector = \\\\\\\"\\\\\\\";\\n\\tfor ( ; i < len; i++ ) {\\n\\t\\tselector += tokens[ i ].value;\\n\\t}\\n\\treturn selector;\\n}\\n\\nfunction addCombinator( matcher, combinator, base ) {\\n\\tvar dir = combinator.dir,\\n\\t\\tskip = combinator.next,\\n\\t\\tkey = skip || dir,\\n\\t\\tcheckNonElements = base && key === \\\\\\\"parentNode\\\\\\\",\\n\\t\\tdoneName = done++;\\n\\n\\treturn combinator.first ?\\n\\n\\t\\t// Check against closest ancestor/preceding element\\n\\t\\tfunction( elem, context, xml ) {\\n\\t\\t\\twhile ( ( elem = elem[ dir ] ) ) {\\n\\t\\t\\t\\tif ( elem.nodeType === 1 || checkNonElements ) {\\n\\t\\t\\t\\t\\treturn matcher( elem, context, xml );\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\treturn false;\\n\\t\\t} :\\n\\n\\t\\t// Check against all ancestor/preceding elements\\n\\t\\tfunction( elem, context, xml ) {\\n\\t\\t\\tvar oldCache, uniqueCache, outerCache,\\n\\t\\t\\t\\tnewCache = [ dirruns, doneName ];\\n\\n\\t\\t\\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\\n\\t\\t\\tif ( xml ) {\\n\\t\\t\\t\\twhile ( ( elem = elem[ dir ] ) ) {\\n\\t\\t\\t\\t\\tif ( elem.nodeType === 1 || checkNonElements ) {\\n\\t\\t\\t\\t\\t\\tif ( matcher( elem, context, xml ) ) {\\n\\t\\t\\t\\t\\t\\t\\treturn true;\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t} else {\\n\\t\\t\\t\\twhile ( ( elem = elem[ dir ] ) ) {\\n\\t\\t\\t\\t\\tif ( elem.nodeType === 1 || checkNonElements ) {\\n\\t\\t\\t\\t\\t\\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\\n\\n\\t\\t\\t\\t\\t\\t// Support: IE <9 only\\n\\t\\t\\t\\t\\t\\t// Defend against cloned attroperties (jQuery gh-1709)\\n\\t\\t\\t\\t\\t\\tuniqueCache = outerCache[ elem.uniqueID ] ||\\n\\t\\t\\t\\t\\t\\t\\t( outerCache[ elem.uniqueID ] = {} );\\n\\n\\t\\t\\t\\t\\t\\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\\n\\t\\t\\t\\t\\t\\t\\telem = elem[ dir ] || elem;\\n\\t\\t\\t\\t\\t\\t} else if ( ( oldCache = uniqueCache[ key ] ) &&\\n\\t\\t\\t\\t\\t\\t\\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t// Assign to newCache so results back-propagate to previous elements\\n\\t\\t\\t\\t\\t\\t\\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\\n\\t\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\t\\t// Reuse newcache so results back-propagate to previous elements\\n\\t\\t\\t\\t\\t\\t\\tuniqueCache[ key ] = newCache;\\n\\n\\t\\t\\t\\t\\t\\t\\t// A match means we're done; a fail means we have to keep checking\\n\\t\\t\\t\\t\\t\\t\\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\\n\\t\\t\\t\\t\\t\\t\\t\\treturn true;\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\treturn false;\\n\\t\\t};\\n}\\n\\nfunction elementMatcher( matchers ) {\\n\\treturn matchers.length > 1 ?\\n\\t\\tfunction( elem, context, xml ) {\\n\\t\\t\\tvar i = matchers.length;\\n\\t\\t\\twhile ( i-- ) {\\n\\t\\t\\t\\tif ( !matchers[ i ]( elem, context, xml ) ) {\\n\\t\\t\\t\\t\\treturn false;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\treturn true;\\n\\t\\t} :\\n\\t\\tmatchers[ 0 ];\\n}\\n\\nfunction multipleContexts( selector, contexts, results ) {\\n\\tvar i = 0,\\n\\t\\tlen = contexts.length;\\n\\tfor ( ; i < len; i++ ) {\\n\\t\\tSizzle( selector, contexts[ i ], results );\\n\\t}\\n\\treturn results;\\n}\\n\\nfunction condense( unmatched, map, filter, context, xml ) {\\n\\tvar elem,\\n\\t\\tnewUnmatched = [],\\n\\t\\ti = 0,\\n\\t\\tlen = unmatched.length,\\n\\t\\tmapped = map != null;\\n\\n\\tfor ( ; i < len; i++ ) {\\n\\t\\tif ( ( elem = unmatched[ i ] ) ) {\\n\\t\\t\\tif ( !filter || filter( elem, context, xml ) ) {\\n\\t\\t\\t\\tnewUnmatched.push( elem );\\n\\t\\t\\t\\tif ( mapped ) {\\n\\t\\t\\t\\t\\tmap.push( i );\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\treturn newUnmatched;\\n}\\n\\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\\n\\tif ( postFilter && !postFilter[ expando ] ) {\\n\\t\\tpostFilter = setMatcher( postFilter );\\n\\t}\\n\\tif ( postFinder && !postFinder[ expando ] ) {\\n\\t\\tpostFinder = setMatcher( postFinder, postSelector );\\n\\t}\\n\\treturn markFunction( function( seed, results, context, xml ) {\\n\\t\\tvar temp, i, elem,\\n\\t\\t\\tpreMap = [],\\n\\t\\t\\tpostMap = [],\\n\\t\\t\\tpreexisting = results.length,\\n\\n\\t\\t\\t// Get initial elements from seed or context\\n\\t\\t\\telems = seed || multipleContexts(\\n\\t\\t\\t\\tselector || \\\\\\\"*\\\\\\\",\\n\\t\\t\\t\\tcontext.nodeType ? [ context ] : context,\\n\\t\\t\\t\\t[]\\n\\t\\t\\t),\\n\\n\\t\\t\\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\\n\\t\\t\\tmatcherIn = preFilter && ( seed || !selector ) ?\\n\\t\\t\\t\\tcondense( elems, preMap, preFilter, context, xml ) :\\n\\t\\t\\t\\telems,\\n\\n\\t\\t\\tmatcherOut = matcher ?\\n\\n\\t\\t\\t\\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\\n\\t\\t\\t\\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\\n\\n\\t\\t\\t\\t\\t// ...intermediate processing is necessary\\n\\t\\t\\t\\t\\t[] :\\n\\n\\t\\t\\t\\t\\t// ...otherwise use results directly\\n\\t\\t\\t\\t\\tresults :\\n\\t\\t\\t\\tmatcherIn;\\n\\n\\t\\t// Find primary matches\\n\\t\\tif ( matcher ) {\\n\\t\\t\\tmatcher( matcherIn, matcherOut, context, xml );\\n\\t\\t}\\n\\n\\t\\t// Apply postFilter\\n\\t\\tif ( postFilter ) {\\n\\t\\t\\ttemp = condense( matcherOut, postMap );\\n\\t\\t\\tpostFilter( temp, [], context, xml );\\n\\n\\t\\t\\t// Un-match failing elements by moving them back to matcherIn\\n\\t\\t\\ti = temp.length;\\n\\t\\t\\twhile ( i-- ) {\\n\\t\\t\\t\\tif ( ( elem = temp[ i ] ) ) {\\n\\t\\t\\t\\t\\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\tif ( seed ) {\\n\\t\\t\\tif ( postFinder || preFilter ) {\\n\\t\\t\\t\\tif ( postFinder ) {\\n\\n\\t\\t\\t\\t\\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\\n\\t\\t\\t\\t\\ttemp = [];\\n\\t\\t\\t\\t\\ti = matcherOut.length;\\n\\t\\t\\t\\t\\twhile ( i-- ) {\\n\\t\\t\\t\\t\\t\\tif ( ( elem = matcherOut[ i ] ) ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t// Restore matcherIn since elem is not yet a final match\\n\\t\\t\\t\\t\\t\\t\\ttemp.push( ( matcherIn[ i ] = elem ) );\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tpostFinder( null, ( matcherOut = [] ), temp, xml );\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Move matched elements from seed to results to keep them synchronized\\n\\t\\t\\t\\ti = matcherOut.length;\\n\\t\\t\\t\\twhile ( i-- ) {\\n\\t\\t\\t\\t\\tif ( ( elem = matcherOut[ i ] ) &&\\n\\t\\t\\t\\t\\t\\t( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) {\\n\\n\\t\\t\\t\\t\\t\\tseed[ temp ] = !( results[ temp ] = elem );\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t// Add elements to results, through postFinder if defined\\n\\t\\t} else {\\n\\t\\t\\tmatcherOut = condense(\\n\\t\\t\\t\\tmatcherOut === results ?\\n\\t\\t\\t\\t\\tmatcherOut.splice( preexisting, matcherOut.length ) :\\n\\t\\t\\t\\t\\tmatcherOut\\n\\t\\t\\t);\\n\\t\\t\\tif ( postFinder ) {\\n\\t\\t\\t\\tpostFinder( null, results, matcherOut, xml );\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tpush.apply( results, matcherOut );\\n\\t\\t\\t}\\n\\t\\t}\\n\\t} );\\n}\\n\\nfunction matcherFromTokens( tokens ) {\\n\\tvar checkContext, matcher, j,\\n\\t\\tlen = tokens.length,\\n\\t\\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\\n\\t\\timplicitRelative = leadingRelative || Expr.relative[ \\\\\\\" \\\\\\\" ],\\n\\t\\ti = leadingRelative ? 1 : 0,\\n\\n\\t\\t// The foundational matcher ensures that elements are reachable from top-level context(s)\\n\\t\\tmatchContext = addCombinator( function( elem ) {\\n\\t\\t\\treturn elem === checkContext;\\n\\t\\t}, implicitRelative, true ),\\n\\t\\tmatchAnyContext = addCombinator( function( elem ) {\\n\\t\\t\\treturn indexOf( checkContext, elem ) > -1;\\n\\t\\t}, implicitRelative, true ),\\n\\t\\tmatchers = [ function( elem, context, xml ) {\\n\\t\\t\\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\\n\\t\\t\\t\\t( checkContext = context ).nodeType ?\\n\\t\\t\\t\\t\\tmatchContext( elem, context, xml ) :\\n\\t\\t\\t\\t\\tmatchAnyContext( elem, context, xml ) );\\n\\n\\t\\t\\t// Avoid hanging onto element (issue #299)\\n\\t\\t\\tcheckContext = null;\\n\\t\\t\\treturn ret;\\n\\t\\t} ];\\n\\n\\tfor ( ; i < len; i++ ) {\\n\\t\\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\\n\\t\\t\\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\\n\\t\\t} else {\\n\\t\\t\\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\\n\\n\\t\\t\\t// Return special upon seeing a positional matcher\\n\\t\\t\\tif ( matcher[ expando ] ) {\\n\\n\\t\\t\\t\\t// Find the next relative operator (if any) for proper handling\\n\\t\\t\\t\\tj = ++i;\\n\\t\\t\\t\\tfor ( ; j < len; j++ ) {\\n\\t\\t\\t\\t\\tif ( Expr.relative[ tokens[ j ].type ] ) {\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\treturn setMatcher(\\n\\t\\t\\t\\t\\ti > 1 && elementMatcher( matchers ),\\n\\t\\t\\t\\t\\ti > 1 && toSelector(\\n\\n\\t\\t\\t\\t\\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\\n\\t\\t\\t\\t\\ttokens\\n\\t\\t\\t\\t\\t\\t.slice( 0, i - 1 )\\n\\t\\t\\t\\t\\t\\t.concat( { value: tokens[ i - 2 ].type === \\\\\\\" \\\\\\\" ? \\\\\\\"*\\\\\\\" : \\\\\\\"\\\\\\\" } )\\n\\t\\t\\t\\t\\t).replace( rtrim, \\\\\\\"$1\\\\\\\" ),\\n\\t\\t\\t\\t\\tmatcher,\\n\\t\\t\\t\\t\\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\\n\\t\\t\\t\\t\\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\\n\\t\\t\\t\\t\\tj < len && toSelector( tokens )\\n\\t\\t\\t\\t);\\n\\t\\t\\t}\\n\\t\\t\\tmatchers.push( matcher );\\n\\t\\t}\\n\\t}\\n\\n\\treturn elementMatcher( matchers );\\n}\\n\\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\\n\\tvar bySet = setMatchers.length > 0,\\n\\t\\tbyElement = elementMatchers.length > 0,\\n\\t\\tsuperMatcher = function( seed, context, xml, results, outermost ) {\\n\\t\\t\\tvar elem, j, matcher,\\n\\t\\t\\t\\tmatchedCount = 0,\\n\\t\\t\\t\\ti = \\\\\\\"0\\\\\\\",\\n\\t\\t\\t\\tunmatched = seed && [],\\n\\t\\t\\t\\tsetMatched = [],\\n\\t\\t\\t\\tcontextBackup = outermostContext,\\n\\n\\t\\t\\t\\t// We must always have either seed elements or outermost context\\n\\t\\t\\t\\telems = seed || byElement && Expr.find[ \\\\\\\"TAG\\\\\\\" ]( \\\\\\\"*\\\\\\\", outermost ),\\n\\n\\t\\t\\t\\t// Use integer dirruns iff this is the outermost matcher\\n\\t\\t\\t\\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\\n\\t\\t\\t\\tlen = elems.length;\\n\\n\\t\\t\\tif ( outermost ) {\\n\\n\\t\\t\\t\\t// Support: IE 11+, Edge 17 - 18+\\n\\t\\t\\t\\t// IE/Edge sometimes throw a \\\\\\\"Permission denied\\\\\\\" error when strict-comparing\\n\\t\\t\\t\\t// two documents; shallow comparisons work.\\n\\t\\t\\t\\t// eslint-disable-next-line eqeqeq\\n\\t\\t\\t\\toutermostContext = context == document || context || outermost;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Add elements passing elementMatchers directly to results\\n\\t\\t\\t// Support: IE<9, Safari\\n\\t\\t\\t// Tolerate NodeList properties (IE: \\\\\\\"length\\\\\\\"; Safari: <number>) matching elements by id\\n\\t\\t\\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\\n\\t\\t\\t\\tif ( byElement && elem ) {\\n\\t\\t\\t\\t\\tj = 0;\\n\\n\\t\\t\\t\\t\\t// Support: IE 11+, Edge 17 - 18+\\n\\t\\t\\t\\t\\t// IE/Edge sometimes throw a \\\\\\\"Permission denied\\\\\\\" error when strict-comparing\\n\\t\\t\\t\\t\\t// two documents; shallow comparisons work.\\n\\t\\t\\t\\t\\t// eslint-disable-next-line eqeqeq\\n\\t\\t\\t\\t\\tif ( !context && elem.ownerDocument != document ) {\\n\\t\\t\\t\\t\\t\\tsetDocument( elem );\\n\\t\\t\\t\\t\\t\\txml = !documentIsHTML;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\\n\\t\\t\\t\\t\\t\\tif ( matcher( elem, context || document, xml ) ) {\\n\\t\\t\\t\\t\\t\\t\\tresults.push( elem );\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tif ( outermost ) {\\n\\t\\t\\t\\t\\t\\tdirruns = dirrunsUnique;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Track unmatched elements for set filters\\n\\t\\t\\t\\tif ( bySet ) {\\n\\n\\t\\t\\t\\t\\t// They will have gone through all possible matchers\\n\\t\\t\\t\\t\\tif ( ( elem = !matcher && elem ) ) {\\n\\t\\t\\t\\t\\t\\tmatchedCount--;\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t// Lengthen the array for every element, matched or not\\n\\t\\t\\t\\t\\tif ( seed ) {\\n\\t\\t\\t\\t\\t\\tunmatched.push( elem );\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\\n\\t\\t\\t// makes the latter nonnegative.\\n\\t\\t\\tmatchedCount += i;\\n\\n\\t\\t\\t// Apply set filters to unmatched elements\\n\\t\\t\\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\\n\\t\\t\\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\\n\\t\\t\\t// no element matchers and no seed.\\n\\t\\t\\t// Incrementing an initially-string \\\\\\\"0\\\\\\\" `i` allows `i` to remain a string only in that\\n\\t\\t\\t// case, which will result in a \\\\\\\"00\\\\\\\" `matchedCount` that differs from `i` but is also\\n\\t\\t\\t// numerically zero.\\n\\t\\t\\tif ( bySet && i !== matchedCount ) {\\n\\t\\t\\t\\tj = 0;\\n\\t\\t\\t\\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\\n\\t\\t\\t\\t\\tmatcher( unmatched, setMatched, context, xml );\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( seed ) {\\n\\n\\t\\t\\t\\t\\t// Reintegrate element matches to eliminate the need for sorting\\n\\t\\t\\t\\t\\tif ( matchedCount > 0 ) {\\n\\t\\t\\t\\t\\t\\twhile ( i-- ) {\\n\\t\\t\\t\\t\\t\\t\\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\\n\\t\\t\\t\\t\\t\\t\\t\\tsetMatched[ i ] = pop.call( results );\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t// Discard index placeholder values to get only actual matches\\n\\t\\t\\t\\t\\tsetMatched = condense( setMatched );\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Add matches to results\\n\\t\\t\\t\\tpush.apply( results, setMatched );\\n\\n\\t\\t\\t\\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\\n\\t\\t\\t\\tif ( outermost && !seed && setMatched.length > 0 &&\\n\\t\\t\\t\\t\\t( matchedCount + setMatchers.length ) > 1 ) {\\n\\n\\t\\t\\t\\t\\tSizzle.uniqueSort( results );\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Override manipulation of globals by nested matchers\\n\\t\\t\\tif ( outermost ) {\\n\\t\\t\\t\\tdirruns = dirrunsUnique;\\n\\t\\t\\t\\toutermostContext = contextBackup;\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn unmatched;\\n\\t\\t};\\n\\n\\treturn bySet ?\\n\\t\\tmarkFunction( superMatcher ) :\\n\\t\\tsuperMatcher;\\n}\\n\\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\\n\\tvar i,\\n\\t\\tsetMatchers = [],\\n\\t\\telementMatchers = [],\\n\\t\\tcached = compilerCache[ selector + \\\\\\\" \\\\\\\" ];\\n\\n\\tif ( !cached ) {\\n\\n\\t\\t// Generate a function of recursive functions that can be used to check each element\\n\\t\\tif ( !match ) {\\n\\t\\t\\tmatch = tokenize( selector );\\n\\t\\t}\\n\\t\\ti = match.length;\\n\\t\\twhile ( i-- ) {\\n\\t\\t\\tcached = matcherFromTokens( match[ i ] );\\n\\t\\t\\tif ( cached[ expando ] ) {\\n\\t\\t\\t\\tsetMatchers.push( cached );\\n\\t\\t\\t} else {\\n\\t\\t\\t\\telementMatchers.push( cached );\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Cache the compiled function\\n\\t\\tcached = compilerCache(\\n\\t\\t\\tselector,\\n\\t\\t\\tmatcherFromGroupMatchers( elementMatchers, setMatchers )\\n\\t\\t);\\n\\n\\t\\t// Save selector and tokenization\\n\\t\\tcached.selector = selector;\\n\\t}\\n\\treturn cached;\\n};\\n\\n/**\\n * A low-level selection function that works with Sizzle's compiled\\n *  selector functions\\n * @param {String|Function} selector A selector or a pre-compiled\\n *  selector function built with Sizzle.compile\\n * @param {Element} context\\n * @param {Array} [results]\\n * @param {Array} [seed] A set of elements to match against\\n */\\nselect = Sizzle.select = function( selector, context, results, seed ) {\\n\\tvar i, tokens, token, type, find,\\n\\t\\tcompiled = typeof selector === \\\\\\\"function\\\\\\\" && selector,\\n\\t\\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\\n\\n\\tresults = results || [];\\n\\n\\t// Try to minimize operations if there is only one selector in the list and no seed\\n\\t// (the latter of which guarantees us context)\\n\\tif ( match.length === 1 ) {\\n\\n\\t\\t// Reduce context if the leading compound selector is an ID\\n\\t\\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\\n\\t\\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \\\\\\\"ID\\\\\\\" &&\\n\\t\\t\\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\\n\\n\\t\\t\\tcontext = ( Expr.find[ \\\\\\\"ID\\\\\\\" ]( token.matches[ 0 ]\\n\\t\\t\\t\\t.replace( runescape, funescape ), context ) || [] )[ 0 ];\\n\\t\\t\\tif ( !context ) {\\n\\t\\t\\t\\treturn results;\\n\\n\\t\\t\\t// Precompiled matchers will still verify ancestry, so step up a level\\n\\t\\t\\t} else if ( compiled ) {\\n\\t\\t\\t\\tcontext = context.parentNode;\\n\\t\\t\\t}\\n\\n\\t\\t\\tselector = selector.slice( tokens.shift().value.length );\\n\\t\\t}\\n\\n\\t\\t// Fetch a seed set for right-to-left matching\\n\\t\\ti = matchExpr[ \\\\\\\"needsContext\\\\\\\" ].test( selector ) ? 0 : tokens.length;\\n\\t\\twhile ( i-- ) {\\n\\t\\t\\ttoken = tokens[ i ];\\n\\n\\t\\t\\t// Abort if we hit a combinator\\n\\t\\t\\tif ( Expr.relative[ ( type = token.type ) ] ) {\\n\\t\\t\\t\\tbreak;\\n\\t\\t\\t}\\n\\t\\t\\tif ( ( find = Expr.find[ type ] ) ) {\\n\\n\\t\\t\\t\\t// Search, expanding context for leading sibling combinators\\n\\t\\t\\t\\tif ( ( seed = find(\\n\\t\\t\\t\\t\\ttoken.matches[ 0 ].replace( runescape, funescape ),\\n\\t\\t\\t\\t\\trsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) ||\\n\\t\\t\\t\\t\\t\\tcontext\\n\\t\\t\\t\\t) ) ) {\\n\\n\\t\\t\\t\\t\\t// If seed is empty or no tokens remain, we can return early\\n\\t\\t\\t\\t\\ttokens.splice( i, 1 );\\n\\t\\t\\t\\t\\tselector = seed.length && toSelector( tokens );\\n\\t\\t\\t\\t\\tif ( !selector ) {\\n\\t\\t\\t\\t\\t\\tpush.apply( results, seed );\\n\\t\\t\\t\\t\\t\\treturn results;\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t// Compile and execute a filtering function if one is not provided\\n\\t// Provide `match` to avoid retokenization if we modified the selector above\\n\\t( compiled || compile( selector, match ) )(\\n\\t\\tseed,\\n\\t\\tcontext,\\n\\t\\t!documentIsHTML,\\n\\t\\tresults,\\n\\t\\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\\n\\t);\\n\\treturn results;\\n};\\n\\n// One-time assignments\\n\\n// Sort stability\\nsupport.sortStable = expando.split( \\\\\\\"\\\\\\\" ).sort( sortOrder ).join( \\\\\\\"\\\\\\\" ) === expando;\\n\\n// Support: Chrome 14-35+\\n// Always assume duplicates if they aren't passed to the comparison function\\nsupport.detectDuplicates = !!hasDuplicate;\\n\\n// Initialize against the default document\\nsetDocument();\\n\\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\\n// Detached nodes confoundingly follow *each other*\\nsupport.sortDetached = assert( function( el ) {\\n\\n\\t// Should return 1, but returns 4 (following)\\n\\treturn el.compareDocumentPosition( document.createElement( \\\\\\\"fieldset\\\\\\\" ) ) & 1;\\n} );\\n\\n// Support: IE<8\\n// Prevent attribute/property \\\\\\\"interpolation\\\\\\\"\\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\\nif ( !assert( function( el ) {\\n\\tel.innerHTML = \\\\\\\"<a href='#'></a>\\\\\\\";\\n\\treturn el.firstChild.getAttribute( \\\\\\\"href\\\\\\\" ) === \\\\\\\"#\\\\\\\";\\n} ) ) {\\n\\taddHandle( \\\\\\\"type|href|height|width\\\\\\\", function( elem, name, isXML ) {\\n\\t\\tif ( !isXML ) {\\n\\t\\t\\treturn elem.getAttribute( name, name.toLowerCase() === \\\\\\\"type\\\\\\\" ? 1 : 2 );\\n\\t\\t}\\n\\t} );\\n}\\n\\n// Support: IE<9\\n// Use defaultValue in place of getAttribute(\\\\\\\"value\\\\\\\")\\nif ( !support.attributes || !assert( function( el ) {\\n\\tel.innerHTML = \\\\\\\"<input/>\\\\\\\";\\n\\tel.firstChild.setAttribute( \\\\\\\"value\\\\\\\", \\\\\\\"\\\\\\\" );\\n\\treturn el.firstChild.getAttribute( \\\\\\\"value\\\\\\\" ) === \\\\\\\"\\\\\\\";\\n} ) ) {\\n\\taddHandle( \\\\\\\"value\\\\\\\", function( elem, _name, isXML ) {\\n\\t\\tif ( !isXML && elem.nodeName.toLowerCase() === \\\\\\\"input\\\\\\\" ) {\\n\\t\\t\\treturn elem.defaultValue;\\n\\t\\t}\\n\\t} );\\n}\\n\\n// Support: IE<9\\n// Use getAttributeNode to fetch booleans when getAttribute lies\\nif ( !assert( function( el ) {\\n\\treturn el.getAttribute( \\\\\\\"disabled\\\\\\\" ) == null;\\n} ) ) {\\n\\taddHandle( booleans, function( elem, name, isXML ) {\\n\\t\\tvar val;\\n\\t\\tif ( !isXML ) {\\n\\t\\t\\treturn elem[ name ] === true ? name.toLowerCase() :\\n\\t\\t\\t\\t( val = elem.getAttributeNode( name ) ) && val.specified ?\\n\\t\\t\\t\\t\\tval.value :\\n\\t\\t\\t\\t\\tnull;\\n\\t\\t}\\n\\t} );\\n}\\n\\nreturn Sizzle;\\n\\n} )( window );\\n\\n\\n\\njQuery.find = Sizzle;\\njQuery.expr = Sizzle.selectors;\\n\\n// Deprecated\\njQuery.expr[ \\\\\\\":\\\\\\\" ] = jQuery.expr.pseudos;\\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\\njQuery.text = Sizzle.getText;\\njQuery.isXMLDoc = Sizzle.isXML;\\njQuery.contains = Sizzle.contains;\\njQuery.escapeSelector = Sizzle.escape;\\n\\n\\n\\n\\nvar dir = function( elem, dir, until ) {\\n\\tvar matched = [],\\n\\t\\ttruncate = until !== undefined;\\n\\n\\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\\n\\t\\tif ( elem.nodeType === 1 ) {\\n\\t\\t\\tif ( truncate && jQuery( elem ).is( until ) ) {\\n\\t\\t\\t\\tbreak;\\n\\t\\t\\t}\\n\\t\\t\\tmatched.push( elem );\\n\\t\\t}\\n\\t}\\n\\treturn matched;\\n};\\n\\n\\nvar siblings = function( n, elem ) {\\n\\tvar matched = [];\\n\\n\\tfor ( ; n; n = n.nextSibling ) {\\n\\t\\tif ( n.nodeType === 1 && n !== elem ) {\\n\\t\\t\\tmatched.push( n );\\n\\t\\t}\\n\\t}\\n\\n\\treturn matched;\\n};\\n\\n\\nvar rneedsContext = jQuery.expr.match.needsContext;\\n\\n\\n\\nfunction nodeName( elem, name ) {\\n\\n  return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\\n\\n};\\nvar rsingleTag = ( /^<([a-z][^\\\\/\\\\0>:\\\\x20\\\\t\\\\r\\\\n\\\\f]*)[\\\\x20\\\\t\\\\r\\\\n\\\\f]*\\\\/?>(?:<\\\\/\\\\1>|)$/i );\\n\\n\\n\\n// Implement the identical functionality for filter and not\\nfunction winnow( elements, qualifier, not ) {\\n\\tif ( isFunction( qualifier ) ) {\\n\\t\\treturn jQuery.grep( elements, function( elem, i ) {\\n\\t\\t\\treturn !!qualifier.call( elem, i, elem ) !== not;\\n\\t\\t} );\\n\\t}\\n\\n\\t// Single element\\n\\tif ( qualifier.nodeType ) {\\n\\t\\treturn jQuery.grep( elements, function( elem ) {\\n\\t\\t\\treturn ( elem === qualifier ) !== not;\\n\\t\\t} );\\n\\t}\\n\\n\\t// Arraylike of elements (jQuery, arguments, Array)\\n\\tif ( typeof qualifier !== \\\\\\\"string\\\\\\\" ) {\\n\\t\\treturn jQuery.grep( elements, function( elem ) {\\n\\t\\t\\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\\n\\t\\t} );\\n\\t}\\n\\n\\t// Filtered directly for both simple and complex selectors\\n\\treturn jQuery.filter( qualifier, elements, not );\\n}\\n\\njQuery.filter = function( expr, elems, not ) {\\n\\tvar elem = elems[ 0 ];\\n\\n\\tif ( not ) {\\n\\t\\texpr = \\\\\\\":not(\\\\\\\" + expr + \\\\\\\")\\\\\\\";\\n\\t}\\n\\n\\tif ( elems.length === 1 && elem.nodeType === 1 ) {\\n\\t\\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\\n\\t}\\n\\n\\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\\n\\t\\treturn elem.nodeType === 1;\\n\\t} ) );\\n};\\n\\njQuery.fn.extend( {\\n\\tfind: function( selector ) {\\n\\t\\tvar i, ret,\\n\\t\\t\\tlen = this.length,\\n\\t\\t\\tself = this;\\n\\n\\t\\tif ( typeof selector !== \\\\\\\"string\\\\\\\" ) {\\n\\t\\t\\treturn this.pushStack( jQuery( selector ).filter( function() {\\n\\t\\t\\t\\tfor ( i = 0; i < len; i++ ) {\\n\\t\\t\\t\\t\\tif ( jQuery.contains( self[ i ], this ) ) {\\n\\t\\t\\t\\t\\t\\treturn true;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t} ) );\\n\\t\\t}\\n\\n\\t\\tret = this.pushStack( [] );\\n\\n\\t\\tfor ( i = 0; i < len; i++ ) {\\n\\t\\t\\tjQuery.find( selector, self[ i ], ret );\\n\\t\\t}\\n\\n\\t\\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\\n\\t},\\n\\tfilter: function( selector ) {\\n\\t\\treturn this.pushStack( winnow( this, selector || [], false ) );\\n\\t},\\n\\tnot: function( selector ) {\\n\\t\\treturn this.pushStack( winnow( this, selector || [], true ) );\\n\\t},\\n\\tis: function( selector ) {\\n\\t\\treturn !!winnow(\\n\\t\\t\\tthis,\\n\\n\\t\\t\\t// If this is a positional/relative selector, check membership in the returned set\\n\\t\\t\\t// so $(\\\\\\\"p:first\\\\\\\").is(\\\\\\\"p:last\\\\\\\") won't return true for a doc with two \\\\\\\"p\\\\\\\".\\n\\t\\t\\ttypeof selector === \\\\\\\"string\\\\\\\" && rneedsContext.test( selector ) ?\\n\\t\\t\\t\\tjQuery( selector ) :\\n\\t\\t\\t\\tselector || [],\\n\\t\\t\\tfalse\\n\\t\\t).length;\\n\\t}\\n} );\\n\\n\\n// Initialize a jQuery object\\n\\n\\n// A central reference to the root jQuery(document)\\nvar rootjQuery,\\n\\n\\t// A simple way to check for HTML strings\\n\\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\\n\\t// Strict HTML recognition (#11290: must start with <)\\n\\t// Shortcut simple #id case for speed\\n\\trquickExpr = /^(?:\\\\s*(<[\\\\w\\\\W]+>)[^>]*|#([\\\\w-]+))$/,\\n\\n\\tinit = jQuery.fn.init = function( selector, context, root ) {\\n\\t\\tvar match, elem;\\n\\n\\t\\t// HANDLE: $(\\\\\\\"\\\\\\\"), $(null), $(undefined), $(false)\\n\\t\\tif ( !selector ) {\\n\\t\\t\\treturn this;\\n\\t\\t}\\n\\n\\t\\t// Method init() accepts an alternate rootjQuery\\n\\t\\t// so migrate can support jQuery.sub (gh-2101)\\n\\t\\troot = root || rootjQuery;\\n\\n\\t\\t// Handle HTML strings\\n\\t\\tif ( typeof selector === \\\\\\\"string\\\\\\\" ) {\\n\\t\\t\\tif ( selector[ 0 ] === \\\\\\\"<\\\\\\\" &&\\n\\t\\t\\t\\tselector[ selector.length - 1 ] === \\\\\\\">\\\\\\\" &&\\n\\t\\t\\t\\tselector.length >= 3 ) {\\n\\n\\t\\t\\t\\t// Assume that strings that start and end with <> are HTML and skip the regex check\\n\\t\\t\\t\\tmatch = [ null, selector, null ];\\n\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tmatch = rquickExpr.exec( selector );\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Match html or make sure no context is specified for #id\\n\\t\\t\\tif ( match && ( match[ 1 ] || !context ) ) {\\n\\n\\t\\t\\t\\t// HANDLE: $(html) -> $(array)\\n\\t\\t\\t\\tif ( match[ 1 ] ) {\\n\\t\\t\\t\\t\\tcontext = context instanceof jQuery ? context[ 0 ] : context;\\n\\n\\t\\t\\t\\t\\t// Option to run scripts is true for back-compat\\n\\t\\t\\t\\t\\t// Intentionally let the error be thrown if parseHTML is not present\\n\\t\\t\\t\\t\\tjQuery.merge( this, jQuery.parseHTML(\\n\\t\\t\\t\\t\\t\\tmatch[ 1 ],\\n\\t\\t\\t\\t\\t\\tcontext && context.nodeType ? context.ownerDocument || context : document,\\n\\t\\t\\t\\t\\t\\ttrue\\n\\t\\t\\t\\t\\t) );\\n\\n\\t\\t\\t\\t\\t// HANDLE: $(html, props)\\n\\t\\t\\t\\t\\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\\n\\t\\t\\t\\t\\t\\tfor ( match in context ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t// Properties of context are called as methods if possible\\n\\t\\t\\t\\t\\t\\t\\tif ( isFunction( this[ match ] ) ) {\\n\\t\\t\\t\\t\\t\\t\\t\\tthis[ match ]( context[ match ] );\\n\\n\\t\\t\\t\\t\\t\\t\\t// ...and otherwise set as attributes\\n\\t\\t\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\t\\t\\tthis.attr( match, context[ match ] );\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\treturn this;\\n\\n\\t\\t\\t\\t// HANDLE: $(#id)\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\telem = document.getElementById( match[ 2 ] );\\n\\n\\t\\t\\t\\t\\tif ( elem ) {\\n\\n\\t\\t\\t\\t\\t\\t// Inject the element directly into the jQuery object\\n\\t\\t\\t\\t\\t\\tthis[ 0 ] = elem;\\n\\t\\t\\t\\t\\t\\tthis.length = 1;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\treturn this;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t// HANDLE: $(expr, $(...))\\n\\t\\t\\t} else if ( !context || context.jquery ) {\\n\\t\\t\\t\\treturn ( context || root ).find( selector );\\n\\n\\t\\t\\t// HANDLE: $(expr, context)\\n\\t\\t\\t// (which is just equivalent to: $(context).find(expr)\\n\\t\\t\\t} else {\\n\\t\\t\\t\\treturn this.constructor( context ).find( selector );\\n\\t\\t\\t}\\n\\n\\t\\t// HANDLE: $(DOMElement)\\n\\t\\t} else if ( selector.nodeType ) {\\n\\t\\t\\tthis[ 0 ] = selector;\\n\\t\\t\\tthis.length = 1;\\n\\t\\t\\treturn this;\\n\\n\\t\\t// HANDLE: $(function)\\n\\t\\t// Shortcut for document ready\\n\\t\\t} else if ( isFunction( selector ) ) {\\n\\t\\t\\treturn root.ready !== undefined ?\\n\\t\\t\\t\\troot.ready( selector ) :\\n\\n\\t\\t\\t\\t// Execute immediately if ready is not present\\n\\t\\t\\t\\tselector( jQuery );\\n\\t\\t}\\n\\n\\t\\treturn jQuery.makeArray( selector, this );\\n\\t};\\n\\n// Give the init function the jQuery prototype for later instantiation\\ninit.prototype = jQuery.fn;\\n\\n// Initialize central reference\\nrootjQuery = jQuery( document );\\n\\n\\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\\n\\n\\t// Methods guaranteed to produce a unique set when starting from a unique set\\n\\tguaranteedUnique = {\\n\\t\\tchildren: true,\\n\\t\\tcontents: true,\\n\\t\\tnext: true,\\n\\t\\tprev: true\\n\\t};\\n\\njQuery.fn.extend( {\\n\\thas: function( target ) {\\n\\t\\tvar targets = jQuery( target, this ),\\n\\t\\t\\tl = targets.length;\\n\\n\\t\\treturn this.filter( function() {\\n\\t\\t\\tvar i = 0;\\n\\t\\t\\tfor ( ; i < l; i++ ) {\\n\\t\\t\\t\\tif ( jQuery.contains( this, targets[ i ] ) ) {\\n\\t\\t\\t\\t\\treturn true;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t} );\\n\\t},\\n\\n\\tclosest: function( selectors, context ) {\\n\\t\\tvar cur,\\n\\t\\t\\ti = 0,\\n\\t\\t\\tl = this.length,\\n\\t\\t\\tmatched = [],\\n\\t\\t\\ttargets = typeof selectors !== \\\\\\\"string\\\\\\\" && jQuery( selectors );\\n\\n\\t\\t// Positional selectors never match, since there's no _selection_ context\\n\\t\\tif ( !rneedsContext.test( selectors ) ) {\\n\\t\\t\\tfor ( ; i < l; i++ ) {\\n\\t\\t\\t\\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\\n\\n\\t\\t\\t\\t\\t// Always skip document fragments\\n\\t\\t\\t\\t\\tif ( cur.nodeType < 11 && ( targets ?\\n\\t\\t\\t\\t\\t\\ttargets.index( cur ) > -1 :\\n\\n\\t\\t\\t\\t\\t\\t// Don't pass non-elements to Sizzle\\n\\t\\t\\t\\t\\t\\tcur.nodeType === 1 &&\\n\\t\\t\\t\\t\\t\\t\\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\\n\\n\\t\\t\\t\\t\\t\\tmatched.push( cur );\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\\n\\t},\\n\\n\\t// Determine the position of an element within the set\\n\\tindex: function( elem ) {\\n\\n\\t\\t// No argument, return index in parent\\n\\t\\tif ( !elem ) {\\n\\t\\t\\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\\n\\t\\t}\\n\\n\\t\\t// Index in selector\\n\\t\\tif ( typeof elem === \\\\\\\"string\\\\\\\" ) {\\n\\t\\t\\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\\n\\t\\t}\\n\\n\\t\\t// Locate the position of the desired element\\n\\t\\treturn indexOf.call( this,\\n\\n\\t\\t\\t// If it receives a jQuery object, the first element is used\\n\\t\\t\\telem.jquery ? elem[ 0 ] : elem\\n\\t\\t);\\n\\t},\\n\\n\\tadd: function( selector, context ) {\\n\\t\\treturn this.pushStack(\\n\\t\\t\\tjQuery.uniqueSort(\\n\\t\\t\\t\\tjQuery.merge( this.get(), jQuery( selector, context ) )\\n\\t\\t\\t)\\n\\t\\t);\\n\\t},\\n\\n\\taddBack: function( selector ) {\\n\\t\\treturn this.add( selector == null ?\\n\\t\\t\\tthis.prevObject : this.prevObject.filter( selector )\\n\\t\\t);\\n\\t}\\n} );\\n\\nfunction sibling( cur, dir ) {\\n\\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\\n\\treturn cur;\\n}\\n\\njQuery.each( {\\n\\tparent: function( elem ) {\\n\\t\\tvar parent = elem.parentNode;\\n\\t\\treturn parent && parent.nodeType !== 11 ? parent : null;\\n\\t},\\n\\tparents: function( elem ) {\\n\\t\\treturn dir( elem, \\\\\\\"parentNode\\\\\\\" );\\n\\t},\\n\\tparentsUntil: function( elem, _i, until ) {\\n\\t\\treturn dir( elem, \\\\\\\"parentNode\\\\\\\", until );\\n\\t},\\n\\tnext: function( elem ) {\\n\\t\\treturn sibling( elem, \\\\\\\"nextSibling\\\\\\\" );\\n\\t},\\n\\tprev: function( elem ) {\\n\\t\\treturn sibling( elem, \\\\\\\"previousSibling\\\\\\\" );\\n\\t},\\n\\tnextAll: function( elem ) {\\n\\t\\treturn dir( elem, \\\\\\\"nextSibling\\\\\\\" );\\n\\t},\\n\\tprevAll: function( elem ) {\\n\\t\\treturn dir( elem, \\\\\\\"previousSibling\\\\\\\" );\\n\\t},\\n\\tnextUntil: function( elem, _i, until ) {\\n\\t\\treturn dir( elem, \\\\\\\"nextSibling\\\\\\\", until );\\n\\t},\\n\\tprevUntil: function( elem, _i, until ) {\\n\\t\\treturn dir( elem, \\\\\\\"previousSibling\\\\\\\", until );\\n\\t},\\n\\tsiblings: function( elem ) {\\n\\t\\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\\n\\t},\\n\\tchildren: function( elem ) {\\n\\t\\treturn siblings( elem.firstChild );\\n\\t},\\n\\tcontents: function( elem ) {\\n\\t\\tif ( elem.contentDocument != null &&\\n\\n\\t\\t\\t// Support: IE 11+\\n\\t\\t\\t// <object> elements with no `data` attribute has an object\\n\\t\\t\\t// `contentDocument` with a `null` prototype.\\n\\t\\t\\tgetProto( elem.contentDocument ) ) {\\n\\n\\t\\t\\treturn elem.contentDocument;\\n\\t\\t}\\n\\n\\t\\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\\n\\t\\t// Treat the template element as a regular one in browsers that\\n\\t\\t// don't support it.\\n\\t\\tif ( nodeName( elem, \\\\\\\"template\\\\\\\" ) ) {\\n\\t\\t\\telem = elem.content || elem;\\n\\t\\t}\\n\\n\\t\\treturn jQuery.merge( [], elem.childNodes );\\n\\t}\\n}, function( name, fn ) {\\n\\tjQuery.fn[ name ] = function( until, selector ) {\\n\\t\\tvar matched = jQuery.map( this, fn, until );\\n\\n\\t\\tif ( name.slice( -5 ) !== \\\\\\\"Until\\\\\\\" ) {\\n\\t\\t\\tselector = until;\\n\\t\\t}\\n\\n\\t\\tif ( selector && typeof selector === \\\\\\\"string\\\\\\\" ) {\\n\\t\\t\\tmatched = jQuery.filter( selector, matched );\\n\\t\\t}\\n\\n\\t\\tif ( this.length > 1 ) {\\n\\n\\t\\t\\t// Remove duplicates\\n\\t\\t\\tif ( !guaranteedUnique[ name ] ) {\\n\\t\\t\\t\\tjQuery.uniqueSort( matched );\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Reverse order for parents* and prev-derivatives\\n\\t\\t\\tif ( rparentsprev.test( name ) ) {\\n\\t\\t\\t\\tmatched.reverse();\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\treturn this.pushStack( matched );\\n\\t};\\n} );\\nvar rnothtmlwhite = ( /[^\\\\x20\\\\t\\\\r\\\\n\\\\f]+/g );\\n\\n\\n\\n// Convert String-formatted options into Object-formatted ones\\nfunction createOptions( options ) {\\n\\tvar object = {};\\n\\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\\n\\t\\tobject[ flag ] = true;\\n\\t} );\\n\\treturn object;\\n}\\n\\n/*\\n * Create a callback list using the following parameters:\\n *\\n *\\toptions: an optional list of space-separated options that will change how\\n *\\t\\t\\tthe callback list behaves or a more traditional option object\\n *\\n * By default a callback list will act like an event callback list and can be\\n * \\\\\\\"fired\\\\\\\" multiple times.\\n *\\n * Possible options:\\n *\\n *\\tonce:\\t\\t\\twill ensure the callback list can only be fired once (like a Deferred)\\n *\\n *\\tmemory:\\t\\t\\twill keep track of previous values and will call any callback added\\n *\\t\\t\\t\\t\\tafter the list has been fired right away with the latest \\\\\\\"memorized\\\\\\\"\\n *\\t\\t\\t\\t\\tvalues (like a Deferred)\\n *\\n *\\tunique:\\t\\t\\twill ensure a callback can only be added once (no duplicate in the list)\\n *\\n *\\tstopOnFalse:\\tinterrupt callings when a callback returns false\\n *\\n */\\njQuery.Callbacks = function( options ) {\\n\\n\\t// Convert options from String-formatted to Object-formatted if needed\\n\\t// (we check in cache first)\\n\\toptions = typeof options === \\\\\\\"string\\\\\\\" ?\\n\\t\\tcreateOptions( options ) :\\n\\t\\tjQuery.extend( {}, options );\\n\\n\\tvar // Flag to know if list is currently firing\\n\\t\\tfiring,\\n\\n\\t\\t// Last fire value for non-forgettable lists\\n\\t\\tmemory,\\n\\n\\t\\t// Flag to know if list was already fired\\n\\t\\tfired,\\n\\n\\t\\t// Flag to prevent firing\\n\\t\\tlocked,\\n\\n\\t\\t// Actual callback list\\n\\t\\tlist = [],\\n\\n\\t\\t// Queue of execution data for repeatable lists\\n\\t\\tqueue = [],\\n\\n\\t\\t// Index of currently firing callback (modified by add/remove as needed)\\n\\t\\tfiringIndex = -1,\\n\\n\\t\\t// Fire callbacks\\n\\t\\tfire = function() {\\n\\n\\t\\t\\t// Enforce single-firing\\n\\t\\t\\tlocked = locked || options.once;\\n\\n\\t\\t\\t// Execute callbacks for all pending executions,\\n\\t\\t\\t// respecting firingIndex overrides and runtime changes\\n\\t\\t\\tfired = firing = true;\\n\\t\\t\\tfor ( ; queue.length; firingIndex = -1 ) {\\n\\t\\t\\t\\tmemory = queue.shift();\\n\\t\\t\\t\\twhile ( ++firingIndex < list.length ) {\\n\\n\\t\\t\\t\\t\\t// Run callback and check for early termination\\n\\t\\t\\t\\t\\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\\n\\t\\t\\t\\t\\t\\toptions.stopOnFalse ) {\\n\\n\\t\\t\\t\\t\\t\\t// Jump to end and forget the data so .add doesn't re-fire\\n\\t\\t\\t\\t\\t\\tfiringIndex = list.length;\\n\\t\\t\\t\\t\\t\\tmemory = false;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Forget the data if we're done with it\\n\\t\\t\\tif ( !options.memory ) {\\n\\t\\t\\t\\tmemory = false;\\n\\t\\t\\t}\\n\\n\\t\\t\\tfiring = false;\\n\\n\\t\\t\\t// Clean up if we're done firing for good\\n\\t\\t\\tif ( locked ) {\\n\\n\\t\\t\\t\\t// Keep an empty list if we have data for future add calls\\n\\t\\t\\t\\tif ( memory ) {\\n\\t\\t\\t\\t\\tlist = [];\\n\\n\\t\\t\\t\\t// Otherwise, this object is spent\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tlist = \\\\\\\"\\\\\\\";\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t},\\n\\n\\t\\t// Actual Callbacks object\\n\\t\\tself = {\\n\\n\\t\\t\\t// Add a callback or a collection of callbacks to the list\\n\\t\\t\\tadd: function() {\\n\\t\\t\\t\\tif ( list ) {\\n\\n\\t\\t\\t\\t\\t// If we have memory from a past run, we should fire after adding\\n\\t\\t\\t\\t\\tif ( memory && !firing ) {\\n\\t\\t\\t\\t\\t\\tfiringIndex = list.length - 1;\\n\\t\\t\\t\\t\\t\\tqueue.push( memory );\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t( function add( args ) {\\n\\t\\t\\t\\t\\t\\tjQuery.each( args, function( _, arg ) {\\n\\t\\t\\t\\t\\t\\t\\tif ( isFunction( arg ) ) {\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( !options.unique || !self.has( arg ) ) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tlist.push( arg );\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\t} else if ( arg && arg.length && toType( arg ) !== \\\\\\\"string\\\\\\\" ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t// Inspect recursively\\n\\t\\t\\t\\t\\t\\t\\t\\tadd( arg );\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t} );\\n\\t\\t\\t\\t\\t} )( arguments );\\n\\n\\t\\t\\t\\t\\tif ( memory && !firing ) {\\n\\t\\t\\t\\t\\t\\tfire();\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\treturn this;\\n\\t\\t\\t},\\n\\n\\t\\t\\t// Remove a callback from the list\\n\\t\\t\\tremove: function() {\\n\\t\\t\\t\\tjQuery.each( arguments, function( _, arg ) {\\n\\t\\t\\t\\t\\tvar index;\\n\\t\\t\\t\\t\\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\\n\\t\\t\\t\\t\\t\\tlist.splice( index, 1 );\\n\\n\\t\\t\\t\\t\\t\\t// Handle firing indexes\\n\\t\\t\\t\\t\\t\\tif ( index <= firingIndex ) {\\n\\t\\t\\t\\t\\t\\t\\tfiringIndex--;\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t} );\\n\\t\\t\\t\\treturn this;\\n\\t\\t\\t},\\n\\n\\t\\t\\t// Check if a given callback is in the list.\\n\\t\\t\\t// If no argument is given, return whether or not list has callbacks attached.\\n\\t\\t\\thas: function( fn ) {\\n\\t\\t\\t\\treturn fn ?\\n\\t\\t\\t\\t\\tjQuery.inArray( fn, list ) > -1 :\\n\\t\\t\\t\\t\\tlist.length > 0;\\n\\t\\t\\t},\\n\\n\\t\\t\\t// Remove all callbacks from the list\\n\\t\\t\\tempty: function() {\\n\\t\\t\\t\\tif ( list ) {\\n\\t\\t\\t\\t\\tlist = [];\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\treturn this;\\n\\t\\t\\t},\\n\\n\\t\\t\\t// Disable .fire and .add\\n\\t\\t\\t// Abort any current/pending executions\\n\\t\\t\\t// Clear all callbacks and values\\n\\t\\t\\tdisable: function() {\\n\\t\\t\\t\\tlocked = queue = [];\\n\\t\\t\\t\\tlist = memory = \\\\\\\"\\\\\\\";\\n\\t\\t\\t\\treturn this;\\n\\t\\t\\t},\\n\\t\\t\\tdisabled: function() {\\n\\t\\t\\t\\treturn !list;\\n\\t\\t\\t},\\n\\n\\t\\t\\t// Disable .fire\\n\\t\\t\\t// Also disable .add unless we have memory (since it would have no effect)\\n\\t\\t\\t// Abort any pending executions\\n\\t\\t\\tlock: function() {\\n\\t\\t\\t\\tlocked = queue = [];\\n\\t\\t\\t\\tif ( !memory && !firing ) {\\n\\t\\t\\t\\t\\tlist = memory = \\\\\\\"\\\\\\\";\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\treturn this;\\n\\t\\t\\t},\\n\\t\\t\\tlocked: function() {\\n\\t\\t\\t\\treturn !!locked;\\n\\t\\t\\t},\\n\\n\\t\\t\\t// Call all callbacks with the given context and arguments\\n\\t\\t\\tfireWith: function( context, args ) {\\n\\t\\t\\t\\tif ( !locked ) {\\n\\t\\t\\t\\t\\targs = args || [];\\n\\t\\t\\t\\t\\targs = [ context, args.slice ? args.slice() : args ];\\n\\t\\t\\t\\t\\tqueue.push( args );\\n\\t\\t\\t\\t\\tif ( !firing ) {\\n\\t\\t\\t\\t\\t\\tfire();\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\treturn this;\\n\\t\\t\\t},\\n\\n\\t\\t\\t// Call all the callbacks with the given arguments\\n\\t\\t\\tfire: function() {\\n\\t\\t\\t\\tself.fireWith( this, arguments );\\n\\t\\t\\t\\treturn this;\\n\\t\\t\\t},\\n\\n\\t\\t\\t// To know if the callbacks have already been called at least once\\n\\t\\t\\tfired: function() {\\n\\t\\t\\t\\treturn !!fired;\\n\\t\\t\\t}\\n\\t\\t};\\n\\n\\treturn self;\\n};\\n\\n\\nfunction Identity( v ) {\\n\\treturn v;\\n}\\nfunction Thrower( ex ) {\\n\\tthrow ex;\\n}\\n\\nfunction adoptValue( value, resolve, reject, noValue ) {\\n\\tvar method;\\n\\n\\ttry {\\n\\n\\t\\t// Check for promise aspect first to privilege synchronous behavior\\n\\t\\tif ( value && isFunction( ( method = value.promise ) ) ) {\\n\\t\\t\\tmethod.call( value ).done( resolve ).fail( reject );\\n\\n\\t\\t// Other thenables\\n\\t\\t} else if ( value && isFunction( ( method = value.then ) ) ) {\\n\\t\\t\\tmethod.call( value, resolve, reject );\\n\\n\\t\\t// Other non-thenables\\n\\t\\t} else {\\n\\n\\t\\t\\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\\n\\t\\t\\t// * false: [ value ].slice( 0 ) => resolve( value )\\n\\t\\t\\t// * true: [ value ].slice( 1 ) => resolve()\\n\\t\\t\\tresolve.apply( undefined, [ value ].slice( noValue ) );\\n\\t\\t}\\n\\n\\t// For Promises/A+, convert exceptions into rejections\\n\\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\\n\\t// Deferred#then to conditionally suppress rejection.\\n\\t} catch ( value ) {\\n\\n\\t\\t// Support: Android 4.0 only\\n\\t\\t// Strict mode functions invoked without .call/.apply get global-object context\\n\\t\\treject.apply( undefined, [ value ] );\\n\\t}\\n}\\n\\njQuery.extend( {\\n\\n\\tDeferred: function( func ) {\\n\\t\\tvar tuples = [\\n\\n\\t\\t\\t\\t// action, add listener, callbacks,\\n\\t\\t\\t\\t// ... .then handlers, argument index, [final state]\\n\\t\\t\\t\\t[ \\\\\\\"notify\\\\\\\", \\\\\\\"progress\\\\\\\", jQuery.Callbacks( \\\\\\\"memory\\\\\\\" ),\\n\\t\\t\\t\\t\\tjQuery.Callbacks( \\\\\\\"memory\\\\\\\" ), 2 ],\\n\\t\\t\\t\\t[ \\\\\\\"resolve\\\\\\\", \\\\\\\"done\\\\\\\", jQuery.Callbacks( \\\\\\\"once memory\\\\\\\" ),\\n\\t\\t\\t\\t\\tjQuery.Callbacks( \\\\\\\"once memory\\\\\\\" ), 0, \\\\\\\"resolved\\\\\\\" ],\\n\\t\\t\\t\\t[ \\\\\\\"reject\\\\\\\", \\\\\\\"fail\\\\\\\", jQuery.Callbacks( \\\\\\\"once memory\\\\\\\" ),\\n\\t\\t\\t\\t\\tjQuery.Callbacks( \\\\\\\"once memory\\\\\\\" ), 1, \\\\\\\"rejected\\\\\\\" ]\\n\\t\\t\\t],\\n\\t\\t\\tstate = \\\\\\\"pending\\\\\\\",\\n\\t\\t\\tpromise = {\\n\\t\\t\\t\\tstate: function() {\\n\\t\\t\\t\\t\\treturn state;\\n\\t\\t\\t\\t},\\n\\t\\t\\t\\talways: function() {\\n\\t\\t\\t\\t\\tdeferred.done( arguments ).fail( arguments );\\n\\t\\t\\t\\t\\treturn this;\\n\\t\\t\\t\\t},\\n\\t\\t\\t\\t\\\\\\\"catch\\\\\\\": function( fn ) {\\n\\t\\t\\t\\t\\treturn promise.then( null, fn );\\n\\t\\t\\t\\t},\\n\\n\\t\\t\\t\\t// Keep pipe for back-compat\\n\\t\\t\\t\\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\\n\\t\\t\\t\\t\\tvar fns = arguments;\\n\\n\\t\\t\\t\\t\\treturn jQuery.Deferred( function( newDefer ) {\\n\\t\\t\\t\\t\\t\\tjQuery.each( tuples, function( _i, tuple ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\\n\\t\\t\\t\\t\\t\\t\\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\\n\\n\\t\\t\\t\\t\\t\\t\\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\\n\\t\\t\\t\\t\\t\\t\\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\\n\\t\\t\\t\\t\\t\\t\\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\\n\\t\\t\\t\\t\\t\\t\\tdeferred[ tuple[ 1 ] ]( function() {\\n\\t\\t\\t\\t\\t\\t\\t\\tvar returned = fn && fn.apply( this, arguments );\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( returned && isFunction( returned.promise ) ) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\treturned.promise()\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t.progress( newDefer.notify )\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t.done( newDefer.resolve )\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t.fail( newDefer.reject );\\n\\t\\t\\t\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tnewDefer[ tuple[ 0 ] + \\\\\\\"With\\\\\\\" ](\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tthis,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tfn ? [ returned ] : arguments\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t);\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\t} );\\n\\t\\t\\t\\t\\t\\t} );\\n\\t\\t\\t\\t\\t\\tfns = null;\\n\\t\\t\\t\\t\\t} ).promise();\\n\\t\\t\\t\\t},\\n\\t\\t\\t\\tthen: function( onFulfilled, onRejected, onProgress ) {\\n\\t\\t\\t\\t\\tvar maxDepth = 0;\\n\\t\\t\\t\\t\\tfunction resolve( depth, deferred, handler, special ) {\\n\\t\\t\\t\\t\\t\\treturn function() {\\n\\t\\t\\t\\t\\t\\t\\tvar that = this,\\n\\t\\t\\t\\t\\t\\t\\t\\targs = arguments,\\n\\t\\t\\t\\t\\t\\t\\t\\tmightThrow = function() {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tvar returned, then;\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t// Support: Promises/A+ section 2.3.3.3.3\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t// https://promisesaplus.com/#point-59\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t// Ignore double-resolution attempts\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( depth < maxDepth ) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\treturn;\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\treturned = handler.apply( that, args );\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t// Support: Promises/A+ section 2.3.1\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t// https://promisesaplus.com/#point-48\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( returned === deferred.promise() ) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tthrow new TypeError( \\\\\\\"Thenable self-resolution\\\\\\\" );\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t// Support: Promises/A+ sections 2.3.3.1, 3.5\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t// https://promisesaplus.com/#point-54\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t// https://promisesaplus.com/#point-75\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t// Retrieve `then` only once\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tthen = returned &&\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// Support: Promises/A+ section 2.3.4\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// https://promisesaplus.com/#point-64\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// Only check objects and functions for thenability\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t( typeof returned === \\\\\\\"object\\\\\\\" ||\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttypeof returned === \\\\\\\"function\\\\\\\" ) &&\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\treturned.then;\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t// Handle a returned thenable\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( isFunction( then ) ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// Special processors (notify) just wait for resolution\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( special ) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tthen.call(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\treturned,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tresolve( maxDepth, deferred, Identity, special ),\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tresolve( maxDepth, deferred, Thrower, special )\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t);\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// Normal processors (resolve) also hook into progress\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// ...and disregard older resolution values\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tmaxDepth++;\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tthen.call(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\treturned,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tresolve( maxDepth, deferred, Identity, special ),\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tresolve( maxDepth, deferred, Thrower, special ),\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tresolve( maxDepth, deferred, Identity,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdeferred.notifyWith )\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t);\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t// Handle all other returned values\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// Only substitute handlers pass on context\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// and multiple values (non-spec behavior)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( handler !== Identity ) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tthat = undefined;\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\targs = [ returned ];\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// Process the value(s)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// Default process is resolve\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t( special || deferred.resolveWith )( that, args );\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\t\\t},\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t// Only normal processors (resolve) catch and reject exceptions\\n\\t\\t\\t\\t\\t\\t\\t\\tprocess = special ?\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tmightThrow :\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tfunction() {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttry {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tmightThrow();\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t} catch ( e ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( jQuery.Deferred.exceptionHook ) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tjQuery.Deferred.exceptionHook( e,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tprocess.stackTrace );\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// Support: Promises/A+ section 2.3.3.3.4.1\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// https://promisesaplus.com/#point-61\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// Ignore post-resolution exceptions\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( depth + 1 >= maxDepth ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// Only substitute handlers pass on context\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// and multiple values (non-spec behavior)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( handler !== Thrower ) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tthat = undefined;\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\targs = [ e ];\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdeferred.rejectWith( that, args );\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t};\\n\\n\\t\\t\\t\\t\\t\\t\\t// Support: Promises/A+ section 2.3.3.3.1\\n\\t\\t\\t\\t\\t\\t\\t// https://promisesaplus.com/#point-57\\n\\t\\t\\t\\t\\t\\t\\t// Re-resolve promises immediately to dodge false rejection from\\n\\t\\t\\t\\t\\t\\t\\t// subsequent errors\\n\\t\\t\\t\\t\\t\\t\\tif ( depth ) {\\n\\t\\t\\t\\t\\t\\t\\t\\tprocess();\\n\\t\\t\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t// Call an optional hook to record the stack, in case of exception\\n\\t\\t\\t\\t\\t\\t\\t\\t// since it's otherwise lost when execution goes async\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( jQuery.Deferred.getStackHook ) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tprocess.stackTrace = jQuery.Deferred.getStackHook();\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\t\\twindow.setTimeout( process );\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t};\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\treturn jQuery.Deferred( function( newDefer ) {\\n\\n\\t\\t\\t\\t\\t\\t// progress_handlers.add( ... )\\n\\t\\t\\t\\t\\t\\ttuples[ 0 ][ 3 ].add(\\n\\t\\t\\t\\t\\t\\t\\tresolve(\\n\\t\\t\\t\\t\\t\\t\\t\\t0,\\n\\t\\t\\t\\t\\t\\t\\t\\tnewDefer,\\n\\t\\t\\t\\t\\t\\t\\t\\tisFunction( onProgress ) ?\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tonProgress :\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tIdentity,\\n\\t\\t\\t\\t\\t\\t\\t\\tnewDefer.notifyWith\\n\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t);\\n\\n\\t\\t\\t\\t\\t\\t// fulfilled_handlers.add( ... )\\n\\t\\t\\t\\t\\t\\ttuples[ 1 ][ 3 ].add(\\n\\t\\t\\t\\t\\t\\t\\tresolve(\\n\\t\\t\\t\\t\\t\\t\\t\\t0,\\n\\t\\t\\t\\t\\t\\t\\t\\tnewDefer,\\n\\t\\t\\t\\t\\t\\t\\t\\tisFunction( onFulfilled ) ?\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tonFulfilled :\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tIdentity\\n\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t);\\n\\n\\t\\t\\t\\t\\t\\t// rejected_handlers.add( ... )\\n\\t\\t\\t\\t\\t\\ttuples[ 2 ][ 3 ].add(\\n\\t\\t\\t\\t\\t\\t\\tresolve(\\n\\t\\t\\t\\t\\t\\t\\t\\t0,\\n\\t\\t\\t\\t\\t\\t\\t\\tnewDefer,\\n\\t\\t\\t\\t\\t\\t\\t\\tisFunction( onRejected ) ?\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tonRejected :\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tThrower\\n\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t);\\n\\t\\t\\t\\t\\t} ).promise();\\n\\t\\t\\t\\t},\\n\\n\\t\\t\\t\\t// Get a promise for this deferred\\n\\t\\t\\t\\t// If obj is provided, the promise aspect is added to the object\\n\\t\\t\\t\\tpromise: function( obj ) {\\n\\t\\t\\t\\t\\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\\n\\t\\t\\t\\t}\\n\\t\\t\\t},\\n\\t\\t\\tdeferred = {};\\n\\n\\t\\t// Add list-specific methods\\n\\t\\tjQuery.each( tuples, function( i, tuple ) {\\n\\t\\t\\tvar list = tuple[ 2 ],\\n\\t\\t\\t\\tstateString = tuple[ 5 ];\\n\\n\\t\\t\\t// promise.progress = list.add\\n\\t\\t\\t// promise.done = list.add\\n\\t\\t\\t// promise.fail = list.add\\n\\t\\t\\tpromise[ tuple[ 1 ] ] = list.add;\\n\\n\\t\\t\\t// Handle state\\n\\t\\t\\tif ( stateString ) {\\n\\t\\t\\t\\tlist.add(\\n\\t\\t\\t\\t\\tfunction() {\\n\\n\\t\\t\\t\\t\\t\\t// state = \\\\\\\"resolved\\\\\\\" (i.e., fulfilled)\\n\\t\\t\\t\\t\\t\\t// state = \\\\\\\"rejected\\\\\\\"\\n\\t\\t\\t\\t\\t\\tstate = stateString;\\n\\t\\t\\t\\t\\t},\\n\\n\\t\\t\\t\\t\\t// rejected_callbacks.disable\\n\\t\\t\\t\\t\\t// fulfilled_callbacks.disable\\n\\t\\t\\t\\t\\ttuples[ 3 - i ][ 2 ].disable,\\n\\n\\t\\t\\t\\t\\t// rejected_handlers.disable\\n\\t\\t\\t\\t\\t// fulfilled_handlers.disable\\n\\t\\t\\t\\t\\ttuples[ 3 - i ][ 3 ].disable,\\n\\n\\t\\t\\t\\t\\t// progress_callbacks.lock\\n\\t\\t\\t\\t\\ttuples[ 0 ][ 2 ].lock,\\n\\n\\t\\t\\t\\t\\t// progress_handlers.lock\\n\\t\\t\\t\\t\\ttuples[ 0 ][ 3 ].lock\\n\\t\\t\\t\\t);\\n\\t\\t\\t}\\n\\n\\t\\t\\t// progress_handlers.fire\\n\\t\\t\\t// fulfilled_handlers.fire\\n\\t\\t\\t// rejected_handlers.fire\\n\\t\\t\\tlist.add( tuple[ 3 ].fire );\\n\\n\\t\\t\\t// deferred.notify = function() { deferred.notifyWith(...) }\\n\\t\\t\\t// deferred.resolve = function() { deferred.resolveWith(...) }\\n\\t\\t\\t// deferred.reject = function() { deferred.rejectWith(...) }\\n\\t\\t\\tdeferred[ tuple[ 0 ] ] = function() {\\n\\t\\t\\t\\tdeferred[ tuple[ 0 ] + \\\\\\\"With\\\\\\\" ]( this === deferred ? undefined : this, arguments );\\n\\t\\t\\t\\treturn this;\\n\\t\\t\\t};\\n\\n\\t\\t\\t// deferred.notifyWith = list.fireWith\\n\\t\\t\\t// deferred.resolveWith = list.fireWith\\n\\t\\t\\t// deferred.rejectWith = list.fireWith\\n\\t\\t\\tdeferred[ tuple[ 0 ] + \\\\\\\"With\\\\\\\" ] = list.fireWith;\\n\\t\\t} );\\n\\n\\t\\t// Make the deferred a promise\\n\\t\\tpromise.promise( deferred );\\n\\n\\t\\t// Call given func if any\\n\\t\\tif ( func ) {\\n\\t\\t\\tfunc.call( deferred, deferred );\\n\\t\\t}\\n\\n\\t\\t// All done!\\n\\t\\treturn deferred;\\n\\t},\\n\\n\\t// Deferred helper\\n\\twhen: function( singleValue ) {\\n\\t\\tvar\\n\\n\\t\\t\\t// count of uncompleted subordinates\\n\\t\\t\\tremaining = arguments.length,\\n\\n\\t\\t\\t// count of unprocessed arguments\\n\\t\\t\\ti = remaining,\\n\\n\\t\\t\\t// subordinate fulfillment data\\n\\t\\t\\tresolveContexts = Array( i ),\\n\\t\\t\\tresolveValues = slice.call( arguments ),\\n\\n\\t\\t\\t// the master Deferred\\n\\t\\t\\tmaster = jQuery.Deferred(),\\n\\n\\t\\t\\t// subordinate callback factory\\n\\t\\t\\tupdateFunc = function( i ) {\\n\\t\\t\\t\\treturn function( value ) {\\n\\t\\t\\t\\t\\tresolveContexts[ i ] = this;\\n\\t\\t\\t\\t\\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\\n\\t\\t\\t\\t\\tif ( !( --remaining ) ) {\\n\\t\\t\\t\\t\\t\\tmaster.resolveWith( resolveContexts, resolveValues );\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t};\\n\\t\\t\\t};\\n\\n\\t\\t// Single- and empty arguments are adopted like Promise.resolve\\n\\t\\tif ( remaining <= 1 ) {\\n\\t\\t\\tadoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,\\n\\t\\t\\t\\t!remaining );\\n\\n\\t\\t\\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\\n\\t\\t\\tif ( master.state() === \\\\\\\"pending\\\\\\\" ||\\n\\t\\t\\t\\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\\n\\n\\t\\t\\t\\treturn master.then();\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Multiple arguments are aggregated like Promise.all array elements\\n\\t\\twhile ( i-- ) {\\n\\t\\t\\tadoptValue( resolveValues[ i ], updateFunc( i ), master.reject );\\n\\t\\t}\\n\\n\\t\\treturn master.promise();\\n\\t}\\n} );\\n\\n\\n// These usually indicate a programmer mistake during development,\\n// warn about them ASAP rather than swallowing them by default.\\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\\n\\njQuery.Deferred.exceptionHook = function( error, stack ) {\\n\\n\\t// Support: IE 8 - 9 only\\n\\t// Console exists when dev tools are open, which can happen at any time\\n\\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\\n\\t\\twindow.console.warn( \\\\\\\"jQuery.Deferred exception: \\\\\\\" + error.message, error.stack, stack );\\n\\t}\\n};\\n\\n\\n\\n\\njQuery.readyException = function( error ) {\\n\\twindow.setTimeout( function() {\\n\\t\\tthrow error;\\n\\t} );\\n};\\n\\n\\n\\n\\n// The deferred used on DOM ready\\nvar readyList = jQuery.Deferred();\\n\\njQuery.fn.ready = function( fn ) {\\n\\n\\treadyList\\n\\t\\t.then( fn )\\n\\n\\t\\t// Wrap jQuery.readyException in a function so that the lookup\\n\\t\\t// happens at the time of error handling instead of callback\\n\\t\\t// registration.\\n\\t\\t.catch( function( error ) {\\n\\t\\t\\tjQuery.readyException( error );\\n\\t\\t} );\\n\\n\\treturn this;\\n};\\n\\njQuery.extend( {\\n\\n\\t// Is the DOM ready to be used? Set to true once it occurs.\\n\\tisReady: false,\\n\\n\\t// A counter to track how many items to wait for before\\n\\t// the ready event fires. See #6781\\n\\treadyWait: 1,\\n\\n\\t// Handle when the DOM is ready\\n\\tready: function( wait ) {\\n\\n\\t\\t// Abort if there are pending holds or we're already ready\\n\\t\\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\n\\t\\t// Remember that the DOM is ready\\n\\t\\tjQuery.isReady = true;\\n\\n\\t\\t// If a normal DOM Ready event fired, decrement, and wait if need be\\n\\t\\tif ( wait !== true && --jQuery.readyWait > 0 ) {\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\n\\t\\t// If there are functions bound, to execute\\n\\t\\treadyList.resolveWith( document, [ jQuery ] );\\n\\t}\\n} );\\n\\njQuery.ready.then = readyList.then;\\n\\n// The ready event handler and self cleanup method\\nfunction completed() {\\n\\tdocument.removeEventListener( \\\\\\\"DOMContentLoaded\\\\\\\", completed );\\n\\twindow.removeEventListener( \\\\\\\"load\\\\\\\", completed );\\n\\tjQuery.ready();\\n}\\n\\n// Catch cases where $(document).ready() is called\\n// after the browser event has already occurred.\\n// Support: IE <=9 - 10 only\\n// Older IE sometimes signals \\\\\\\"interactive\\\\\\\" too soon\\nif ( document.readyState === \\\\\\\"complete\\\\\\\" ||\\n\\t( document.readyState !== \\\\\\\"loading\\\\\\\" && !document.documentElement.doScroll ) ) {\\n\\n\\t// Handle it asynchronously to allow scripts the opportunity to delay ready\\n\\twindow.setTimeout( jQuery.ready );\\n\\n} else {\\n\\n\\t// Use the handy event callback\\n\\tdocument.addEventListener( \\\\\\\"DOMContentLoaded\\\\\\\", completed );\\n\\n\\t// A fallback to window.onload, that will always work\\n\\twindow.addEventListener( \\\\\\\"load\\\\\\\", completed );\\n}\\n\\n\\n\\n\\n// Multifunctional method to get and set values of a collection\\n// The value/s can optionally be executed if it's a function\\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\\n\\tvar i = 0,\\n\\t\\tlen = elems.length,\\n\\t\\tbulk = key == null;\\n\\n\\t// Sets many values\\n\\tif ( toType( key ) === \\\\\\\"object\\\\\\\" ) {\\n\\t\\tchainable = true;\\n\\t\\tfor ( i in key ) {\\n\\t\\t\\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\\n\\t\\t}\\n\\n\\t// Sets one value\\n\\t} else if ( value !== undefined ) {\\n\\t\\tchainable = true;\\n\\n\\t\\tif ( !isFunction( value ) ) {\\n\\t\\t\\traw = true;\\n\\t\\t}\\n\\n\\t\\tif ( bulk ) {\\n\\n\\t\\t\\t// Bulk operations run against the entire set\\n\\t\\t\\tif ( raw ) {\\n\\t\\t\\t\\tfn.call( elems, value );\\n\\t\\t\\t\\tfn = null;\\n\\n\\t\\t\\t// ...except when executing function values\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tbulk = fn;\\n\\t\\t\\t\\tfn = function( elem, _key, value ) {\\n\\t\\t\\t\\t\\treturn bulk.call( jQuery( elem ), value );\\n\\t\\t\\t\\t};\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\tif ( fn ) {\\n\\t\\t\\tfor ( ; i < len; i++ ) {\\n\\t\\t\\t\\tfn(\\n\\t\\t\\t\\t\\telems[ i ], key, raw ?\\n\\t\\t\\t\\t\\tvalue :\\n\\t\\t\\t\\t\\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\\n\\t\\t\\t\\t);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\tif ( chainable ) {\\n\\t\\treturn elems;\\n\\t}\\n\\n\\t// Gets\\n\\tif ( bulk ) {\\n\\t\\treturn fn.call( elems );\\n\\t}\\n\\n\\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\\n};\\n\\n\\n// Matches dashed string for camelizing\\nvar rmsPrefix = /^-ms-/,\\n\\trdashAlpha = /-([a-z])/g;\\n\\n// Used by camelCase as callback to replace()\\nfunction fcamelCase( _all, letter ) {\\n\\treturn letter.toUpperCase();\\n}\\n\\n// Convert dashed to camelCase; used by the css and data modules\\n// Support: IE <=9 - 11, Edge 12 - 15\\n// Microsoft forgot to hump their vendor prefix (#9572)\\nfunction camelCase( string ) {\\n\\treturn string.replace( rmsPrefix, \\\\\\\"ms-\\\\\\\" ).replace( rdashAlpha, fcamelCase );\\n}\\nvar acceptData = function( owner ) {\\n\\n\\t// Accepts only:\\n\\t//  - Node\\n\\t//    - Node.ELEMENT_NODE\\n\\t//    - Node.DOCUMENT_NODE\\n\\t//  - Object\\n\\t//    - Any\\n\\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\\n};\\n\\n\\n\\n\\nfunction Data() {\\n\\tthis.expando = jQuery.expando + Data.uid++;\\n}\\n\\nData.uid = 1;\\n\\nData.prototype = {\\n\\n\\tcache: function( owner ) {\\n\\n\\t\\t// Check if the owner object already has a cache\\n\\t\\tvar value = owner[ this.expando ];\\n\\n\\t\\t// If not, create one\\n\\t\\tif ( !value ) {\\n\\t\\t\\tvalue = Object.create( null );\\n\\n\\t\\t\\t// We can accept data for non-element nodes in modern browsers,\\n\\t\\t\\t// but we should not, see #8335.\\n\\t\\t\\t// Always return an empty object.\\n\\t\\t\\tif ( acceptData( owner ) ) {\\n\\n\\t\\t\\t\\t// If it is a node unlikely to be stringify-ed or looped over\\n\\t\\t\\t\\t// use plain assignment\\n\\t\\t\\t\\tif ( owner.nodeType ) {\\n\\t\\t\\t\\t\\towner[ this.expando ] = value;\\n\\n\\t\\t\\t\\t// Otherwise secure it in a non-enumerable property\\n\\t\\t\\t\\t// configurable must be true to allow the property to be\\n\\t\\t\\t\\t// deleted when data is removed\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tObject.defineProperty( owner, this.expando, {\\n\\t\\t\\t\\t\\t\\tvalue: value,\\n\\t\\t\\t\\t\\t\\tconfigurable: true\\n\\t\\t\\t\\t\\t} );\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\treturn value;\\n\\t},\\n\\tset: function( owner, data, value ) {\\n\\t\\tvar prop,\\n\\t\\t\\tcache = this.cache( owner );\\n\\n\\t\\t// Handle: [ owner, key, value ] args\\n\\t\\t// Always use camelCase key (gh-2257)\\n\\t\\tif ( typeof data === \\\\\\\"string\\\\\\\" ) {\\n\\t\\t\\tcache[ camelCase( data ) ] = value;\\n\\n\\t\\t// Handle: [ owner, { properties } ] args\\n\\t\\t} else {\\n\\n\\t\\t\\t// Copy the properties one-by-one to the cache object\\n\\t\\t\\tfor ( prop in data ) {\\n\\t\\t\\t\\tcache[ camelCase( prop ) ] = data[ prop ];\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\treturn cache;\\n\\t},\\n\\tget: function( owner, key ) {\\n\\t\\treturn key === undefined ?\\n\\t\\t\\tthis.cache( owner ) :\\n\\n\\t\\t\\t// Always use camelCase key (gh-2257)\\n\\t\\t\\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\\n\\t},\\n\\taccess: function( owner, key, value ) {\\n\\n\\t\\t// In cases where either:\\n\\t\\t//\\n\\t\\t//   1. No key was specified\\n\\t\\t//   2. A string key was specified, but no value provided\\n\\t\\t//\\n\\t\\t// Take the \\\\\\\"read\\\\\\\" path and allow the get method to determine\\n\\t\\t// which value to return, respectively either:\\n\\t\\t//\\n\\t\\t//   1. The entire cache object\\n\\t\\t//   2. The data stored at the key\\n\\t\\t//\\n\\t\\tif ( key === undefined ||\\n\\t\\t\\t\\t( ( key && typeof key === \\\\\\\"string\\\\\\\" ) && value === undefined ) ) {\\n\\n\\t\\t\\treturn this.get( owner, key );\\n\\t\\t}\\n\\n\\t\\t// When the key is not a string, or both a key and value\\n\\t\\t// are specified, set or extend (existing objects) with either:\\n\\t\\t//\\n\\t\\t//   1. An object of properties\\n\\t\\t//   2. A key and value\\n\\t\\t//\\n\\t\\tthis.set( owner, key, value );\\n\\n\\t\\t// Since the \\\\\\\"set\\\\\\\" path can have two possible entry points\\n\\t\\t// return the expected data based on which path was taken[*]\\n\\t\\treturn value !== undefined ? value : key;\\n\\t},\\n\\tremove: function( owner, key ) {\\n\\t\\tvar i,\\n\\t\\t\\tcache = owner[ this.expando ];\\n\\n\\t\\tif ( cache === undefined ) {\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\n\\t\\tif ( key !== undefined ) {\\n\\n\\t\\t\\t// Support array or space separated string of keys\\n\\t\\t\\tif ( Array.isArray( key ) ) {\\n\\n\\t\\t\\t\\t// If key is an array of keys...\\n\\t\\t\\t\\t// We always set camelCase keys, so remove that.\\n\\t\\t\\t\\tkey = key.map( camelCase );\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tkey = camelCase( key );\\n\\n\\t\\t\\t\\t// If a key with the spaces exists, use it.\\n\\t\\t\\t\\t// Otherwise, create an array by matching non-whitespace\\n\\t\\t\\t\\tkey = key in cache ?\\n\\t\\t\\t\\t\\t[ key ] :\\n\\t\\t\\t\\t\\t( key.match( rnothtmlwhite ) || [] );\\n\\t\\t\\t}\\n\\n\\t\\t\\ti = key.length;\\n\\n\\t\\t\\twhile ( i-- ) {\\n\\t\\t\\t\\tdelete cache[ key[ i ] ];\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Remove the expando if there's no more data\\n\\t\\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\\n\\n\\t\\t\\t// Support: Chrome <=35 - 45\\n\\t\\t\\t// Webkit & Blink performance suffers when deleting properties\\n\\t\\t\\t// from DOM nodes, so set to undefined instead\\n\\t\\t\\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\\n\\t\\t\\tif ( owner.nodeType ) {\\n\\t\\t\\t\\towner[ this.expando ] = undefined;\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tdelete owner[ this.expando ];\\n\\t\\t\\t}\\n\\t\\t}\\n\\t},\\n\\thasData: function( owner ) {\\n\\t\\tvar cache = owner[ this.expando ];\\n\\t\\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\\n\\t}\\n};\\nvar dataPriv = new Data();\\n\\nvar dataUser = new Data();\\n\\n\\n\\n//\\tImplementation Summary\\n//\\n//\\t1. Enforce API surface and semantic compatibility with 1.9.x branch\\n//\\t2. Improve the module's maintainability by reducing the storage\\n//\\t\\tpaths to a single mechanism.\\n//\\t3. Use the same single mechanism to support \\\\\\\"private\\\\\\\" and \\\\\\\"user\\\\\\\" data.\\n//\\t4. _Never_ expose \\\\\\\"private\\\\\\\" data to user code (TODO: Drop _data, _removeData)\\n//\\t5. Avoid exposing implementation details on user objects (eg. expando properties)\\n//\\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\\n\\nvar rbrace = /^(?:\\\\{[\\\\w\\\\W]*\\\\}|\\\\[[\\\\w\\\\W]*\\\\])$/,\\n\\trmultiDash = /[A-Z]/g;\\n\\nfunction getData( data ) {\\n\\tif ( data === \\\\\\\"true\\\\\\\" ) {\\n\\t\\treturn true;\\n\\t}\\n\\n\\tif ( data === \\\\\\\"false\\\\\\\" ) {\\n\\t\\treturn false;\\n\\t}\\n\\n\\tif ( data === \\\\\\\"null\\\\\\\" ) {\\n\\t\\treturn null;\\n\\t}\\n\\n\\t// Only convert to a number if it doesn't change the string\\n\\tif ( data === +data + \\\\\\\"\\\\\\\" ) {\\n\\t\\treturn +data;\\n\\t}\\n\\n\\tif ( rbrace.test( data ) ) {\\n\\t\\treturn JSON.parse( data );\\n\\t}\\n\\n\\treturn data;\\n}\\n\\nfunction dataAttr( elem, key, data ) {\\n\\tvar name;\\n\\n\\t// If nothing was found internally, try to fetch any\\n\\t// data from the HTML5 data-* attribute\\n\\tif ( data === undefined && elem.nodeType === 1 ) {\\n\\t\\tname = \\\\\\\"data-\\\\\\\" + key.replace( rmultiDash, \\\\\\\"-$&\\\\\\\" ).toLowerCase();\\n\\t\\tdata = elem.getAttribute( name );\\n\\n\\t\\tif ( typeof data === \\\\\\\"string\\\\\\\" ) {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tdata = getData( data );\\n\\t\\t\\t} catch ( e ) {}\\n\\n\\t\\t\\t// Make sure we set the data so it isn't changed later\\n\\t\\t\\tdataUser.set( elem, key, data );\\n\\t\\t} else {\\n\\t\\t\\tdata = undefined;\\n\\t\\t}\\n\\t}\\n\\treturn data;\\n}\\n\\njQuery.extend( {\\n\\thasData: function( elem ) {\\n\\t\\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\\n\\t},\\n\\n\\tdata: function( elem, name, data ) {\\n\\t\\treturn dataUser.access( elem, name, data );\\n\\t},\\n\\n\\tremoveData: function( elem, name ) {\\n\\t\\tdataUser.remove( elem, name );\\n\\t},\\n\\n\\t// TODO: Now that all calls to _data and _removeData have been replaced\\n\\t// with direct calls to dataPriv methods, these can be deprecated.\\n\\t_data: function( elem, name, data ) {\\n\\t\\treturn dataPriv.access( elem, name, data );\\n\\t},\\n\\n\\t_removeData: function( elem, name ) {\\n\\t\\tdataPriv.remove( elem, name );\\n\\t}\\n} );\\n\\njQuery.fn.extend( {\\n\\tdata: function( key, value ) {\\n\\t\\tvar i, name, data,\\n\\t\\t\\telem = this[ 0 ],\\n\\t\\t\\tattrs = elem && elem.attributes;\\n\\n\\t\\t// Gets all values\\n\\t\\tif ( key === undefined ) {\\n\\t\\t\\tif ( this.length ) {\\n\\t\\t\\t\\tdata = dataUser.get( elem );\\n\\n\\t\\t\\t\\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \\\\\\\"hasDataAttrs\\\\\\\" ) ) {\\n\\t\\t\\t\\t\\ti = attrs.length;\\n\\t\\t\\t\\t\\twhile ( i-- ) {\\n\\n\\t\\t\\t\\t\\t\\t// Support: IE 11 only\\n\\t\\t\\t\\t\\t\\t// The attrs elements can be null (#14894)\\n\\t\\t\\t\\t\\t\\tif ( attrs[ i ] ) {\\n\\t\\t\\t\\t\\t\\t\\tname = attrs[ i ].name;\\n\\t\\t\\t\\t\\t\\t\\tif ( name.indexOf( \\\\\\\"data-\\\\\\\" ) === 0 ) {\\n\\t\\t\\t\\t\\t\\t\\t\\tname = camelCase( name.slice( 5 ) );\\n\\t\\t\\t\\t\\t\\t\\t\\tdataAttr( elem, name, data[ name ] );\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tdataPriv.set( elem, \\\\\\\"hasDataAttrs\\\\\\\", true );\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn data;\\n\\t\\t}\\n\\n\\t\\t// Sets multiple values\\n\\t\\tif ( typeof key === \\\\\\\"object\\\\\\\" ) {\\n\\t\\t\\treturn this.each( function() {\\n\\t\\t\\t\\tdataUser.set( this, key );\\n\\t\\t\\t} );\\n\\t\\t}\\n\\n\\t\\treturn access( this, function( value ) {\\n\\t\\t\\tvar data;\\n\\n\\t\\t\\t// The calling jQuery object (element matches) is not empty\\n\\t\\t\\t// (and therefore has an element appears at this[ 0 ]) and the\\n\\t\\t\\t// `value` parameter was not undefined. An empty jQuery object\\n\\t\\t\\t// will result in `undefined` for elem = this[ 0 ] which will\\n\\t\\t\\t// throw an exception if an attempt to read a data cache is made.\\n\\t\\t\\tif ( elem && value === undefined ) {\\n\\n\\t\\t\\t\\t// Attempt to get data from the cache\\n\\t\\t\\t\\t// The key will always be camelCased in Data\\n\\t\\t\\t\\tdata = dataUser.get( elem, key );\\n\\t\\t\\t\\tif ( data !== undefined ) {\\n\\t\\t\\t\\t\\treturn data;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Attempt to \\\\\\\"discover\\\\\\\" the data in\\n\\t\\t\\t\\t// HTML5 custom data-* attrs\\n\\t\\t\\t\\tdata = dataAttr( elem, key );\\n\\t\\t\\t\\tif ( data !== undefined ) {\\n\\t\\t\\t\\t\\treturn data;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// We tried really hard, but the data doesn't exist.\\n\\t\\t\\t\\treturn;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Set the data...\\n\\t\\t\\tthis.each( function() {\\n\\n\\t\\t\\t\\t// We always store the camelCased key\\n\\t\\t\\t\\tdataUser.set( this, key, value );\\n\\t\\t\\t} );\\n\\t\\t}, null, value, arguments.length > 1, null, true );\\n\\t},\\n\\n\\tremoveData: function( key ) {\\n\\t\\treturn this.each( function() {\\n\\t\\t\\tdataUser.remove( this, key );\\n\\t\\t} );\\n\\t}\\n} );\\n\\n\\njQuery.extend( {\\n\\tqueue: function( elem, type, data ) {\\n\\t\\tvar queue;\\n\\n\\t\\tif ( elem ) {\\n\\t\\t\\ttype = ( type || \\\\\\\"fx\\\\\\\" ) + \\\\\\\"queue\\\\\\\";\\n\\t\\t\\tqueue = dataPriv.get( elem, type );\\n\\n\\t\\t\\t// Speed up dequeue by getting out quickly if this is just a lookup\\n\\t\\t\\tif ( data ) {\\n\\t\\t\\t\\tif ( !queue || Array.isArray( data ) ) {\\n\\t\\t\\t\\t\\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tqueue.push( data );\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\treturn queue || [];\\n\\t\\t}\\n\\t},\\n\\n\\tdequeue: function( elem, type ) {\\n\\t\\ttype = type || \\\\\\\"fx\\\\\\\";\\n\\n\\t\\tvar queue = jQuery.queue( elem, type ),\\n\\t\\t\\tstartLength = queue.length,\\n\\t\\t\\tfn = queue.shift(),\\n\\t\\t\\thooks = jQuery._queueHooks( elem, type ),\\n\\t\\t\\tnext = function() {\\n\\t\\t\\t\\tjQuery.dequeue( elem, type );\\n\\t\\t\\t};\\n\\n\\t\\t// If the fx queue is dequeued, always remove the progress sentinel\\n\\t\\tif ( fn === \\\\\\\"inprogress\\\\\\\" ) {\\n\\t\\t\\tfn = queue.shift();\\n\\t\\t\\tstartLength--;\\n\\t\\t}\\n\\n\\t\\tif ( fn ) {\\n\\n\\t\\t\\t// Add a progress sentinel to prevent the fx queue from being\\n\\t\\t\\t// automatically dequeued\\n\\t\\t\\tif ( type === \\\\\\\"fx\\\\\\\" ) {\\n\\t\\t\\t\\tqueue.unshift( \\\\\\\"inprogress\\\\\\\" );\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Clear up the last queue stop function\\n\\t\\t\\tdelete hooks.stop;\\n\\t\\t\\tfn.call( elem, next, hooks );\\n\\t\\t}\\n\\n\\t\\tif ( !startLength && hooks ) {\\n\\t\\t\\thooks.empty.fire();\\n\\t\\t}\\n\\t},\\n\\n\\t// Not public - generate a queueHooks object, or return the current one\\n\\t_queueHooks: function( elem, type ) {\\n\\t\\tvar key = type + \\\\\\\"queueHooks\\\\\\\";\\n\\t\\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\\n\\t\\t\\tempty: jQuery.Callbacks( \\\\\\\"once memory\\\\\\\" ).add( function() {\\n\\t\\t\\t\\tdataPriv.remove( elem, [ type + \\\\\\\"queue\\\\\\\", key ] );\\n\\t\\t\\t} )\\n\\t\\t} );\\n\\t}\\n} );\\n\\njQuery.fn.extend( {\\n\\tqueue: function( type, data ) {\\n\\t\\tvar setter = 2;\\n\\n\\t\\tif ( typeof type !== \\\\\\\"string\\\\\\\" ) {\\n\\t\\t\\tdata = type;\\n\\t\\t\\ttype = \\\\\\\"fx\\\\\\\";\\n\\t\\t\\tsetter--;\\n\\t\\t}\\n\\n\\t\\tif ( arguments.length < setter ) {\\n\\t\\t\\treturn jQuery.queue( this[ 0 ], type );\\n\\t\\t}\\n\\n\\t\\treturn data === undefined ?\\n\\t\\t\\tthis :\\n\\t\\t\\tthis.each( function() {\\n\\t\\t\\t\\tvar queue = jQuery.queue( this, type, data );\\n\\n\\t\\t\\t\\t// Ensure a hooks for this queue\\n\\t\\t\\t\\tjQuery._queueHooks( this, type );\\n\\n\\t\\t\\t\\tif ( type === \\\\\\\"fx\\\\\\\" && queue[ 0 ] !== \\\\\\\"inprogress\\\\\\\" ) {\\n\\t\\t\\t\\t\\tjQuery.dequeue( this, type );\\n\\t\\t\\t\\t}\\n\\t\\t\\t} );\\n\\t},\\n\\tdequeue: function( type ) {\\n\\t\\treturn this.each( function() {\\n\\t\\t\\tjQuery.dequeue( this, type );\\n\\t\\t} );\\n\\t},\\n\\tclearQueue: function( type ) {\\n\\t\\treturn this.queue( type || \\\\\\\"fx\\\\\\\", [] );\\n\\t},\\n\\n\\t// Get a promise resolved when queues of a certain type\\n\\t// are emptied (fx is the type by default)\\n\\tpromise: function( type, obj ) {\\n\\t\\tvar tmp,\\n\\t\\t\\tcount = 1,\\n\\t\\t\\tdefer = jQuery.Deferred(),\\n\\t\\t\\telements = this,\\n\\t\\t\\ti = this.length,\\n\\t\\t\\tresolve = function() {\\n\\t\\t\\t\\tif ( !( --count ) ) {\\n\\t\\t\\t\\t\\tdefer.resolveWith( elements, [ elements ] );\\n\\t\\t\\t\\t}\\n\\t\\t\\t};\\n\\n\\t\\tif ( typeof type !== \\\\\\\"string\\\\\\\" ) {\\n\\t\\t\\tobj = type;\\n\\t\\t\\ttype = undefined;\\n\\t\\t}\\n\\t\\ttype = type || \\\\\\\"fx\\\\\\\";\\n\\n\\t\\twhile ( i-- ) {\\n\\t\\t\\ttmp = dataPriv.get( elements[ i ], type + \\\\\\\"queueHooks\\\\\\\" );\\n\\t\\t\\tif ( tmp && tmp.empty ) {\\n\\t\\t\\t\\tcount++;\\n\\t\\t\\t\\ttmp.empty.add( resolve );\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tresolve();\\n\\t\\treturn defer.promise( obj );\\n\\t}\\n} );\\nvar pnum = ( /[+-]?(?:\\\\d*\\\\.|)\\\\d+(?:[eE][+-]?\\\\d+|)/ ).source;\\n\\nvar rcssNum = new RegExp( \\\\\\\"^(?:([+-])=|)(\\\\\\\" + pnum + \\\\\\\")([a-z%]*)$\\\\\\\", \\\\\\\"i\\\\\\\" );\\n\\n\\nvar cssExpand = [ \\\\\\\"Top\\\\\\\", \\\\\\\"Right\\\\\\\", \\\\\\\"Bottom\\\\\\\", \\\\\\\"Left\\\\\\\" ];\\n\\nvar documentElement = document.documentElement;\\n\\n\\n\\n\\tvar isAttached = function( elem ) {\\n\\t\\t\\treturn jQuery.contains( elem.ownerDocument, elem );\\n\\t\\t},\\n\\t\\tcomposed = { composed: true };\\n\\n\\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\\n\\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\\n\\t// Support: iOS 10.0-10.2 only\\n\\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\\n\\t// leading to errors. We need to check for `getRootNode`.\\n\\tif ( documentElement.getRootNode ) {\\n\\t\\tisAttached = function( elem ) {\\n\\t\\t\\treturn jQuery.contains( elem.ownerDocument, elem ) ||\\n\\t\\t\\t\\telem.getRootNode( composed ) === elem.ownerDocument;\\n\\t\\t};\\n\\t}\\nvar isHiddenWithinTree = function( elem, el ) {\\n\\n\\t\\t// isHiddenWithinTree might be called from jQuery#filter function;\\n\\t\\t// in that case, element will be second argument\\n\\t\\telem = el || elem;\\n\\n\\t\\t// Inline style trumps all\\n\\t\\treturn elem.style.display === \\\\\\\"none\\\\\\\" ||\\n\\t\\t\\telem.style.display === \\\\\\\"\\\\\\\" &&\\n\\n\\t\\t\\t// Otherwise, check computed style\\n\\t\\t\\t// Support: Firefox <=43 - 45\\n\\t\\t\\t// Disconnected elements can have computed display: none, so first confirm that elem is\\n\\t\\t\\t// in the document.\\n\\t\\t\\tisAttached( elem ) &&\\n\\n\\t\\t\\tjQuery.css( elem, \\\\\\\"display\\\\\\\" ) === \\\\\\\"none\\\\\\\";\\n\\t};\\n\\n\\n\\nfunction adjustCSS( elem, prop, valueParts, tween ) {\\n\\tvar adjusted, scale,\\n\\t\\tmaxIterations = 20,\\n\\t\\tcurrentValue = tween ?\\n\\t\\t\\tfunction() {\\n\\t\\t\\t\\treturn tween.cur();\\n\\t\\t\\t} :\\n\\t\\t\\tfunction() {\\n\\t\\t\\t\\treturn jQuery.css( elem, prop, \\\\\\\"\\\\\\\" );\\n\\t\\t\\t},\\n\\t\\tinitial = currentValue(),\\n\\t\\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \\\\\\\"\\\\\\\" : \\\\\\\"px\\\\\\\" ),\\n\\n\\t\\t// Starting value computation is required for potential unit mismatches\\n\\t\\tinitialInUnit = elem.nodeType &&\\n\\t\\t\\t( jQuery.cssNumber[ prop ] || unit !== \\\\\\\"px\\\\\\\" && +initial ) &&\\n\\t\\t\\trcssNum.exec( jQuery.css( elem, prop ) );\\n\\n\\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\\n\\n\\t\\t// Support: Firefox <=54\\n\\t\\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\\n\\t\\tinitial = initial / 2;\\n\\n\\t\\t// Trust units reported by jQuery.css\\n\\t\\tunit = unit || initialInUnit[ 3 ];\\n\\n\\t\\t// Iteratively approximate from a nonzero starting point\\n\\t\\tinitialInUnit = +initial || 1;\\n\\n\\t\\twhile ( maxIterations-- ) {\\n\\n\\t\\t\\t// Evaluate and update our best guess (doubling guesses that zero out).\\n\\t\\t\\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\\n\\t\\t\\tjQuery.style( elem, prop, initialInUnit + unit );\\n\\t\\t\\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\\n\\t\\t\\t\\tmaxIterations = 0;\\n\\t\\t\\t}\\n\\t\\t\\tinitialInUnit = initialInUnit / scale;\\n\\n\\t\\t}\\n\\n\\t\\tinitialInUnit = initialInUnit * 2;\\n\\t\\tjQuery.style( elem, prop, initialInUnit + unit );\\n\\n\\t\\t// Make sure we update the tween properties later on\\n\\t\\tvalueParts = valueParts || [];\\n\\t}\\n\\n\\tif ( valueParts ) {\\n\\t\\tinitialInUnit = +initialInUnit || +initial || 0;\\n\\n\\t\\t// Apply relative offset (+=/-=) if specified\\n\\t\\tadjusted = valueParts[ 1 ] ?\\n\\t\\t\\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\\n\\t\\t\\t+valueParts[ 2 ];\\n\\t\\tif ( tween ) {\\n\\t\\t\\ttween.unit = unit;\\n\\t\\t\\ttween.start = initialInUnit;\\n\\t\\t\\ttween.end = adjusted;\\n\\t\\t}\\n\\t}\\n\\treturn adjusted;\\n}\\n\\n\\nvar defaultDisplayMap = {};\\n\\nfunction getDefaultDisplay( elem ) {\\n\\tvar temp,\\n\\t\\tdoc = elem.ownerDocument,\\n\\t\\tnodeName = elem.nodeName,\\n\\t\\tdisplay = defaultDisplayMap[ nodeName ];\\n\\n\\tif ( display ) {\\n\\t\\treturn display;\\n\\t}\\n\\n\\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\\n\\tdisplay = jQuery.css( temp, \\\\\\\"display\\\\\\\" );\\n\\n\\ttemp.parentNode.removeChild( temp );\\n\\n\\tif ( display === \\\\\\\"none\\\\\\\" ) {\\n\\t\\tdisplay = \\\\\\\"block\\\\\\\";\\n\\t}\\n\\tdefaultDisplayMap[ nodeName ] = display;\\n\\n\\treturn display;\\n}\\n\\nfunction showHide( elements, show ) {\\n\\tvar display, elem,\\n\\t\\tvalues = [],\\n\\t\\tindex = 0,\\n\\t\\tlength = elements.length;\\n\\n\\t// Determine new display value for elements that need to change\\n\\tfor ( ; index < length; index++ ) {\\n\\t\\telem = elements[ index ];\\n\\t\\tif ( !elem.style ) {\\n\\t\\t\\tcontinue;\\n\\t\\t}\\n\\n\\t\\tdisplay = elem.style.display;\\n\\t\\tif ( show ) {\\n\\n\\t\\t\\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\\n\\t\\t\\t// check is required in this first loop unless we have a nonempty display value (either\\n\\t\\t\\t// inline or about-to-be-restored)\\n\\t\\t\\tif ( display === \\\\\\\"none\\\\\\\" ) {\\n\\t\\t\\t\\tvalues[ index ] = dataPriv.get( elem, \\\\\\\"display\\\\\\\" ) || null;\\n\\t\\t\\t\\tif ( !values[ index ] ) {\\n\\t\\t\\t\\t\\telem.style.display = \\\\\\\"\\\\\\\";\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\tif ( elem.style.display === \\\\\\\"\\\\\\\" && isHiddenWithinTree( elem ) ) {\\n\\t\\t\\t\\tvalues[ index ] = getDefaultDisplay( elem );\\n\\t\\t\\t}\\n\\t\\t} else {\\n\\t\\t\\tif ( display !== \\\\\\\"none\\\\\\\" ) {\\n\\t\\t\\t\\tvalues[ index ] = \\\\\\\"none\\\\\\\";\\n\\n\\t\\t\\t\\t// Remember what we're overwriting\\n\\t\\t\\t\\tdataPriv.set( elem, \\\\\\\"display\\\\\\\", display );\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t// Set the display of the elements in a second loop to avoid constant reflow\\n\\tfor ( index = 0; index < length; index++ ) {\\n\\t\\tif ( values[ index ] != null ) {\\n\\t\\t\\telements[ index ].style.display = values[ index ];\\n\\t\\t}\\n\\t}\\n\\n\\treturn elements;\\n}\\n\\njQuery.fn.extend( {\\n\\tshow: function() {\\n\\t\\treturn showHide( this, true );\\n\\t},\\n\\thide: function() {\\n\\t\\treturn showHide( this );\\n\\t},\\n\\ttoggle: function( state ) {\\n\\t\\tif ( typeof state === \\\\\\\"boolean\\\\\\\" ) {\\n\\t\\t\\treturn state ? this.show() : this.hide();\\n\\t\\t}\\n\\n\\t\\treturn this.each( function() {\\n\\t\\t\\tif ( isHiddenWithinTree( this ) ) {\\n\\t\\t\\t\\tjQuery( this ).show();\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tjQuery( this ).hide();\\n\\t\\t\\t}\\n\\t\\t} );\\n\\t}\\n} );\\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\\n\\nvar rtagName = ( /<([a-z][^\\\\/\\\\0>\\\\x20\\\\t\\\\r\\\\n\\\\f]*)/i );\\n\\nvar rscriptType = ( /^$|^module$|\\\\/(?:java|ecma)script/i );\\n\\n\\n\\n( function() {\\n\\tvar fragment = document.createDocumentFragment(),\\n\\t\\tdiv = fragment.appendChild( document.createElement( \\\\\\\"div\\\\\\\" ) ),\\n\\t\\tinput = document.createElement( \\\\\\\"input\\\\\\\" );\\n\\n\\t// Support: Android 4.0 - 4.3 only\\n\\t// Check state lost if the name is set (#11217)\\n\\t// Support: Windows Web Apps (WWA)\\n\\t// `name` and `type` must use .setAttribute for WWA (#14901)\\n\\tinput.setAttribute( \\\\\\\"type\\\\\\\", \\\\\\\"radio\\\\\\\" );\\n\\tinput.setAttribute( \\\\\\\"checked\\\\\\\", \\\\\\\"checked\\\\\\\" );\\n\\tinput.setAttribute( \\\\\\\"name\\\\\\\", \\\\\\\"t\\\\\\\" );\\n\\n\\tdiv.appendChild( input );\\n\\n\\t// Support: Android <=4.1 only\\n\\t// Older WebKit doesn't clone checked state correctly in fragments\\n\\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\\n\\n\\t// Support: IE <=11 only\\n\\t// Make sure textarea (and checkbox) defaultValue is properly cloned\\n\\tdiv.innerHTML = \\\\\\\"<textarea>x</textarea>\\\\\\\";\\n\\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\\n\\n\\t// Support: IE <=9 only\\n\\t// IE <=9 replaces <option> tags with their contents when inserted outside of\\n\\t// the select element.\\n\\tdiv.innerHTML = \\\\\\\"<option></option>\\\\\\\";\\n\\tsupport.option = !!div.lastChild;\\n} )();\\n\\n\\n// We have to close these tags to support XHTML (#13200)\\nvar wrapMap = {\\n\\n\\t// XHTML parsers do not magically insert elements in the\\n\\t// same way that tag soup parsers do. So we cannot shorten\\n\\t// this by omitting <tbody> or other required elements.\\n\\tthead: [ 1, \\\\\\\"<table>\\\\\\\", \\\\\\\"</table>\\\\\\\" ],\\n\\tcol: [ 2, \\\\\\\"<table><colgroup>\\\\\\\", \\\\\\\"</colgroup></table>\\\\\\\" ],\\n\\ttr: [ 2, \\\\\\\"<table><tbody>\\\\\\\", \\\\\\\"</tbody></table>\\\\\\\" ],\\n\\ttd: [ 3, \\\\\\\"<table><tbody><tr>\\\\\\\", \\\\\\\"</tr></tbody></table>\\\\\\\" ],\\n\\n\\t_default: [ 0, \\\\\\\"\\\\\\\", \\\\\\\"\\\\\\\" ]\\n};\\n\\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\\nwrapMap.th = wrapMap.td;\\n\\n// Support: IE <=9 only\\nif ( !support.option ) {\\n\\twrapMap.optgroup = wrapMap.option = [ 1, \\\\\\\"<select multiple='multiple'>\\\\\\\", \\\\\\\"</select>\\\\\\\" ];\\n}\\n\\n\\nfunction getAll( context, tag ) {\\n\\n\\t// Support: IE <=9 - 11 only\\n\\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\\n\\tvar ret;\\n\\n\\tif ( typeof context.getElementsByTagName !== \\\\\\\"undefined\\\\\\\" ) {\\n\\t\\tret = context.getElementsByTagName( tag || \\\\\\\"*\\\\\\\" );\\n\\n\\t} else if ( typeof context.querySelectorAll !== \\\\\\\"undefined\\\\\\\" ) {\\n\\t\\tret = context.querySelectorAll( tag || \\\\\\\"*\\\\\\\" );\\n\\n\\t} else {\\n\\t\\tret = [];\\n\\t}\\n\\n\\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\\n\\t\\treturn jQuery.merge( [ context ], ret );\\n\\t}\\n\\n\\treturn ret;\\n}\\n\\n\\n// Mark scripts as having already been evaluated\\nfunction setGlobalEval( elems, refElements ) {\\n\\tvar i = 0,\\n\\t\\tl = elems.length;\\n\\n\\tfor ( ; i < l; i++ ) {\\n\\t\\tdataPriv.set(\\n\\t\\t\\telems[ i ],\\n\\t\\t\\t\\\\\\\"globalEval\\\\\\\",\\n\\t\\t\\t!refElements || dataPriv.get( refElements[ i ], \\\\\\\"globalEval\\\\\\\" )\\n\\t\\t);\\n\\t}\\n}\\n\\n\\nvar rhtml = /<|&#?\\\\w+;/;\\n\\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\\n\\tvar elem, tmp, tag, wrap, attached, j,\\n\\t\\tfragment = context.createDocumentFragment(),\\n\\t\\tnodes = [],\\n\\t\\ti = 0,\\n\\t\\tl = elems.length;\\n\\n\\tfor ( ; i < l; i++ ) {\\n\\t\\telem = elems[ i ];\\n\\n\\t\\tif ( elem || elem === 0 ) {\\n\\n\\t\\t\\t// Add nodes directly\\n\\t\\t\\tif ( toType( elem ) === \\\\\\\"object\\\\\\\" ) {\\n\\n\\t\\t\\t\\t// Support: Android <=4.0 only, PhantomJS 1 only\\n\\t\\t\\t\\t// push.apply(_, arraylike) throws on ancient WebKit\\n\\t\\t\\t\\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\\n\\n\\t\\t\\t// Convert non-html into a text node\\n\\t\\t\\t} else if ( !rhtml.test( elem ) ) {\\n\\t\\t\\t\\tnodes.push( context.createTextNode( elem ) );\\n\\n\\t\\t\\t// Convert html into DOM nodes\\n\\t\\t\\t} else {\\n\\t\\t\\t\\ttmp = tmp || fragment.appendChild( context.createElement( \\\\\\\"div\\\\\\\" ) );\\n\\n\\t\\t\\t\\t// Deserialize a standard representation\\n\\t\\t\\t\\ttag = ( rtagName.exec( elem ) || [ \\\\\\\"\\\\\\\", \\\\\\\"\\\\\\\" ] )[ 1 ].toLowerCase();\\n\\t\\t\\t\\twrap = wrapMap[ tag ] || wrapMap._default;\\n\\t\\t\\t\\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\\n\\n\\t\\t\\t\\t// Descend through wrappers to the right content\\n\\t\\t\\t\\tj = wrap[ 0 ];\\n\\t\\t\\t\\twhile ( j-- ) {\\n\\t\\t\\t\\t\\ttmp = tmp.lastChild;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Support: Android <=4.0 only, PhantomJS 1 only\\n\\t\\t\\t\\t// push.apply(_, arraylike) throws on ancient WebKit\\n\\t\\t\\t\\tjQuery.merge( nodes, tmp.childNodes );\\n\\n\\t\\t\\t\\t// Remember the top-level container\\n\\t\\t\\t\\ttmp = fragment.firstChild;\\n\\n\\t\\t\\t\\t// Ensure the created nodes are orphaned (#12392)\\n\\t\\t\\t\\ttmp.textContent = \\\\\\\"\\\\\\\";\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t// Remove wrapper from fragment\\n\\tfragment.textContent = \\\\\\\"\\\\\\\";\\n\\n\\ti = 0;\\n\\twhile ( ( elem = nodes[ i++ ] ) ) {\\n\\n\\t\\t// Skip elements already in the context collection (trac-4087)\\n\\t\\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\\n\\t\\t\\tif ( ignored ) {\\n\\t\\t\\t\\tignored.push( elem );\\n\\t\\t\\t}\\n\\t\\t\\tcontinue;\\n\\t\\t}\\n\\n\\t\\tattached = isAttached( elem );\\n\\n\\t\\t// Append to fragment\\n\\t\\ttmp = getAll( fragment.appendChild( elem ), \\\\\\\"script\\\\\\\" );\\n\\n\\t\\t// Preserve script evaluation history\\n\\t\\tif ( attached ) {\\n\\t\\t\\tsetGlobalEval( tmp );\\n\\t\\t}\\n\\n\\t\\t// Capture executables\\n\\t\\tif ( scripts ) {\\n\\t\\t\\tj = 0;\\n\\t\\t\\twhile ( ( elem = tmp[ j++ ] ) ) {\\n\\t\\t\\t\\tif ( rscriptType.test( elem.type || \\\\\\\"\\\\\\\" ) ) {\\n\\t\\t\\t\\t\\tscripts.push( elem );\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\treturn fragment;\\n}\\n\\n\\nvar\\n\\trkeyEvent = /^key/,\\n\\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\\n\\trtypenamespace = /^([^.]*)(?:\\\\.(.+)|)/;\\n\\nfunction returnTrue() {\\n\\treturn true;\\n}\\n\\nfunction returnFalse() {\\n\\treturn false;\\n}\\n\\n// Support: IE <=9 - 11+\\n// focus() and blur() are asynchronous, except when they are no-op.\\n// So expect focus to be synchronous when the element is already active,\\n// and blur to be synchronous when the element is not already active.\\n// (focus and blur are always synchronous in other supported browsers,\\n// this just defines when we can count on it).\\nfunction expectSync( elem, type ) {\\n\\treturn ( elem === safeActiveElement() ) === ( type === \\\\\\\"focus\\\\\\\" );\\n}\\n\\n// Support: IE <=9 only\\n// Accessing document.activeElement can throw unexpectedly\\n// https://bugs.jquery.com/ticket/13393\\nfunction safeActiveElement() {\\n\\ttry {\\n\\t\\treturn document.activeElement;\\n\\t} catch ( err ) { }\\n}\\n\\nfunction on( elem, types, selector, data, fn, one ) {\\n\\tvar origFn, type;\\n\\n\\t// Types can be a map of types/handlers\\n\\tif ( typeof types === \\\\\\\"object\\\\\\\" ) {\\n\\n\\t\\t// ( types-Object, selector, data )\\n\\t\\tif ( typeof selector !== \\\\\\\"string\\\\\\\" ) {\\n\\n\\t\\t\\t// ( types-Object, data )\\n\\t\\t\\tdata = data || selector;\\n\\t\\t\\tselector = undefined;\\n\\t\\t}\\n\\t\\tfor ( type in types ) {\\n\\t\\t\\ton( elem, type, selector, data, types[ type ], one );\\n\\t\\t}\\n\\t\\treturn elem;\\n\\t}\\n\\n\\tif ( data == null && fn == null ) {\\n\\n\\t\\t// ( types, fn )\\n\\t\\tfn = selector;\\n\\t\\tdata = selector = undefined;\\n\\t} else if ( fn == null ) {\\n\\t\\tif ( typeof selector === \\\\\\\"string\\\\\\\" ) {\\n\\n\\t\\t\\t// ( types, selector, fn )\\n\\t\\t\\tfn = data;\\n\\t\\t\\tdata = undefined;\\n\\t\\t} else {\\n\\n\\t\\t\\t// ( types, data, fn )\\n\\t\\t\\tfn = data;\\n\\t\\t\\tdata = selector;\\n\\t\\t\\tselector = undefined;\\n\\t\\t}\\n\\t}\\n\\tif ( fn === false ) {\\n\\t\\tfn = returnFalse;\\n\\t} else if ( !fn ) {\\n\\t\\treturn elem;\\n\\t}\\n\\n\\tif ( one === 1 ) {\\n\\t\\torigFn = fn;\\n\\t\\tfn = function( event ) {\\n\\n\\t\\t\\t// Can use an empty set, since event contains the info\\n\\t\\t\\tjQuery().off( event );\\n\\t\\t\\treturn origFn.apply( this, arguments );\\n\\t\\t};\\n\\n\\t\\t// Use same guid so caller can remove using origFn\\n\\t\\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\\n\\t}\\n\\treturn elem.each( function() {\\n\\t\\tjQuery.event.add( this, types, fn, data, selector );\\n\\t} );\\n}\\n\\n/*\\n * Helper functions for managing events -- not part of the public interface.\\n * Props to Dean Edwards' addEvent library for many of the ideas.\\n */\\njQuery.event = {\\n\\n\\tglobal: {},\\n\\n\\tadd: function( elem, types, handler, data, selector ) {\\n\\n\\t\\tvar handleObjIn, eventHandle, tmp,\\n\\t\\t\\tevents, t, handleObj,\\n\\t\\t\\tspecial, handlers, type, namespaces, origType,\\n\\t\\t\\telemData = dataPriv.get( elem );\\n\\n\\t\\t// Only attach events to objects that accept data\\n\\t\\tif ( !acceptData( elem ) ) {\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\n\\t\\t// Caller can pass in an object of custom data in lieu of the handler\\n\\t\\tif ( handler.handler ) {\\n\\t\\t\\thandleObjIn = handler;\\n\\t\\t\\thandler = handleObjIn.handler;\\n\\t\\t\\tselector = handleObjIn.selector;\\n\\t\\t}\\n\\n\\t\\t// Ensure that invalid selectors throw exceptions at attach time\\n\\t\\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\\n\\t\\tif ( selector ) {\\n\\t\\t\\tjQuery.find.matchesSelector( documentElement, selector );\\n\\t\\t}\\n\\n\\t\\t// Make sure that the handler has a unique ID, used to find/remove it later\\n\\t\\tif ( !handler.guid ) {\\n\\t\\t\\thandler.guid = jQuery.guid++;\\n\\t\\t}\\n\\n\\t\\t// Init the element's event structure and main handler, if this is the first\\n\\t\\tif ( !( events = elemData.events ) ) {\\n\\t\\t\\tevents = elemData.events = Object.create( null );\\n\\t\\t}\\n\\t\\tif ( !( eventHandle = elemData.handle ) ) {\\n\\t\\t\\teventHandle = elemData.handle = function( e ) {\\n\\n\\t\\t\\t\\t// Discard the second event of a jQuery.event.trigger() and\\n\\t\\t\\t\\t// when an event is called after a page has unloaded\\n\\t\\t\\t\\treturn typeof jQuery !== \\\\\\\"undefined\\\\\\\" && jQuery.event.triggered !== e.type ?\\n\\t\\t\\t\\t\\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\\n\\t\\t\\t};\\n\\t\\t}\\n\\n\\t\\t// Handle multiple events separated by a space\\n\\t\\ttypes = ( types || \\\\\\\"\\\\\\\" ).match( rnothtmlwhite ) || [ \\\\\\\"\\\\\\\" ];\\n\\t\\tt = types.length;\\n\\t\\twhile ( t-- ) {\\n\\t\\t\\ttmp = rtypenamespace.exec( types[ t ] ) || [];\\n\\t\\t\\ttype = origType = tmp[ 1 ];\\n\\t\\t\\tnamespaces = ( tmp[ 2 ] || \\\\\\\"\\\\\\\" ).split( \\\\\\\".\\\\\\\" ).sort();\\n\\n\\t\\t\\t// There *must* be a type, no attaching namespace-only handlers\\n\\t\\t\\tif ( !type ) {\\n\\t\\t\\t\\tcontinue;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// If event changes its type, use the special event handlers for the changed type\\n\\t\\t\\tspecial = jQuery.event.special[ type ] || {};\\n\\n\\t\\t\\t// If selector defined, determine special event api type, otherwise given type\\n\\t\\t\\ttype = ( selector ? special.delegateType : special.bindType ) || type;\\n\\n\\t\\t\\t// Update special based on newly reset type\\n\\t\\t\\tspecial = jQuery.event.special[ type ] || {};\\n\\n\\t\\t\\t// handleObj is passed to all event handlers\\n\\t\\t\\thandleObj = jQuery.extend( {\\n\\t\\t\\t\\ttype: type,\\n\\t\\t\\t\\torigType: origType,\\n\\t\\t\\t\\tdata: data,\\n\\t\\t\\t\\thandler: handler,\\n\\t\\t\\t\\tguid: handler.guid,\\n\\t\\t\\t\\tselector: selector,\\n\\t\\t\\t\\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\\n\\t\\t\\t\\tnamespace: namespaces.join( \\\\\\\".\\\\\\\" )\\n\\t\\t\\t}, handleObjIn );\\n\\n\\t\\t\\t// Init the event handler queue if we're the first\\n\\t\\t\\tif ( !( handlers = events[ type ] ) ) {\\n\\t\\t\\t\\thandlers = events[ type ] = [];\\n\\t\\t\\t\\thandlers.delegateCount = 0;\\n\\n\\t\\t\\t\\t// Only use addEventListener if the special events handler returns false\\n\\t\\t\\t\\tif ( !special.setup ||\\n\\t\\t\\t\\t\\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\\n\\n\\t\\t\\t\\t\\tif ( elem.addEventListener ) {\\n\\t\\t\\t\\t\\t\\telem.addEventListener( type, eventHandle );\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( special.add ) {\\n\\t\\t\\t\\tspecial.add.call( elem, handleObj );\\n\\n\\t\\t\\t\\tif ( !handleObj.handler.guid ) {\\n\\t\\t\\t\\t\\thandleObj.handler.guid = handler.guid;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Add to the element's handler list, delegates in front\\n\\t\\t\\tif ( selector ) {\\n\\t\\t\\t\\thandlers.splice( handlers.delegateCount++, 0, handleObj );\\n\\t\\t\\t} else {\\n\\t\\t\\t\\thandlers.push( handleObj );\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Keep track of which events have ever been used, for event optimization\\n\\t\\t\\tjQuery.event.global[ type ] = true;\\n\\t\\t}\\n\\n\\t},\\n\\n\\t// Detach an event or set of events from an element\\n\\tremove: function( elem, types, handler, selector, mappedTypes ) {\\n\\n\\t\\tvar j, origCount, tmp,\\n\\t\\t\\tevents, t, handleObj,\\n\\t\\t\\tspecial, handlers, type, namespaces, origType,\\n\\t\\t\\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\\n\\n\\t\\tif ( !elemData || !( events = elemData.events ) ) {\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\n\\t\\t// Once for each type.namespace in types; type may be omitted\\n\\t\\ttypes = ( types || \\\\\\\"\\\\\\\" ).match( rnothtmlwhite ) || [ \\\\\\\"\\\\\\\" ];\\n\\t\\tt = types.length;\\n\\t\\twhile ( t-- ) {\\n\\t\\t\\ttmp = rtypenamespace.exec( types[ t ] ) || [];\\n\\t\\t\\ttype = origType = tmp[ 1 ];\\n\\t\\t\\tnamespaces = ( tmp[ 2 ] || \\\\\\\"\\\\\\\" ).split( \\\\\\\".\\\\\\\" ).sort();\\n\\n\\t\\t\\t// Unbind all events (on this namespace, if provided) for the element\\n\\t\\t\\tif ( !type ) {\\n\\t\\t\\t\\tfor ( type in events ) {\\n\\t\\t\\t\\t\\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tcontinue;\\n\\t\\t\\t}\\n\\n\\t\\t\\tspecial = jQuery.event.special[ type ] || {};\\n\\t\\t\\ttype = ( selector ? special.delegateType : special.bindType ) || type;\\n\\t\\t\\thandlers = events[ type ] || [];\\n\\t\\t\\ttmp = tmp[ 2 ] &&\\n\\t\\t\\t\\tnew RegExp( \\\\\\\"(^|\\\\\\\\.)\\\\\\\" + namespaces.join( \\\\\\\"\\\\\\\\.(?:.*\\\\\\\\.|)\\\\\\\" ) + \\\\\\\"(\\\\\\\\.|$)\\\\\\\" );\\n\\n\\t\\t\\t// Remove matching events\\n\\t\\t\\torigCount = j = handlers.length;\\n\\t\\t\\twhile ( j-- ) {\\n\\t\\t\\t\\thandleObj = handlers[ j ];\\n\\n\\t\\t\\t\\tif ( ( mappedTypes || origType === handleObj.origType ) &&\\n\\t\\t\\t\\t\\t( !handler || handler.guid === handleObj.guid ) &&\\n\\t\\t\\t\\t\\t( !tmp || tmp.test( handleObj.namespace ) ) &&\\n\\t\\t\\t\\t\\t( !selector || selector === handleObj.selector ||\\n\\t\\t\\t\\t\\t\\tselector === \\\\\\\"**\\\\\\\" && handleObj.selector ) ) {\\n\\t\\t\\t\\t\\thandlers.splice( j, 1 );\\n\\n\\t\\t\\t\\t\\tif ( handleObj.selector ) {\\n\\t\\t\\t\\t\\t\\thandlers.delegateCount--;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tif ( special.remove ) {\\n\\t\\t\\t\\t\\t\\tspecial.remove.call( elem, handleObj );\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Remove generic event handler if we removed something and no more handlers exist\\n\\t\\t\\t// (avoids potential for endless recursion during removal of special event handlers)\\n\\t\\t\\tif ( origCount && !handlers.length ) {\\n\\t\\t\\t\\tif ( !special.teardown ||\\n\\t\\t\\t\\t\\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\\n\\n\\t\\t\\t\\t\\tjQuery.removeEvent( elem, type, elemData.handle );\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tdelete events[ type ];\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Remove data and the expando if it's no longer used\\n\\t\\tif ( jQuery.isEmptyObject( events ) ) {\\n\\t\\t\\tdataPriv.remove( elem, \\\\\\\"handle events\\\\\\\" );\\n\\t\\t}\\n\\t},\\n\\n\\tdispatch: function( nativeEvent ) {\\n\\n\\t\\tvar i, j, ret, matched, handleObj, handlerQueue,\\n\\t\\t\\targs = new Array( arguments.length ),\\n\\n\\t\\t\\t// Make a writable jQuery.Event from the native event object\\n\\t\\t\\tevent = jQuery.event.fix( nativeEvent ),\\n\\n\\t\\t\\thandlers = (\\n\\t\\t\\t\\t\\tdataPriv.get( this, \\\\\\\"events\\\\\\\" ) || Object.create( null )\\n\\t\\t\\t\\t)[ event.type ] || [],\\n\\t\\t\\tspecial = jQuery.event.special[ event.type ] || {};\\n\\n\\t\\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\\n\\t\\targs[ 0 ] = event;\\n\\n\\t\\tfor ( i = 1; i < arguments.length; i++ ) {\\n\\t\\t\\targs[ i ] = arguments[ i ];\\n\\t\\t}\\n\\n\\t\\tevent.delegateTarget = this;\\n\\n\\t\\t// Call the preDispatch hook for the mapped type, and let it bail if desired\\n\\t\\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\n\\t\\t// Determine handlers\\n\\t\\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\\n\\n\\t\\t// Run delegates first; they may want to stop propagation beneath us\\n\\t\\ti = 0;\\n\\t\\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\\n\\t\\t\\tevent.currentTarget = matched.elem;\\n\\n\\t\\t\\tj = 0;\\n\\t\\t\\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\\n\\t\\t\\t\\t!event.isImmediatePropagationStopped() ) {\\n\\n\\t\\t\\t\\t// If the event is namespaced, then each handler is only invoked if it is\\n\\t\\t\\t\\t// specially universal or its namespaces are a superset of the event's.\\n\\t\\t\\t\\tif ( !event.rnamespace || handleObj.namespace === false ||\\n\\t\\t\\t\\t\\tevent.rnamespace.test( handleObj.namespace ) ) {\\n\\n\\t\\t\\t\\t\\tevent.handleObj = handleObj;\\n\\t\\t\\t\\t\\tevent.data = handleObj.data;\\n\\n\\t\\t\\t\\t\\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\\n\\t\\t\\t\\t\\t\\thandleObj.handler ).apply( matched.elem, args );\\n\\n\\t\\t\\t\\t\\tif ( ret !== undefined ) {\\n\\t\\t\\t\\t\\t\\tif ( ( event.result = ret ) === false ) {\\n\\t\\t\\t\\t\\t\\t\\tevent.preventDefault();\\n\\t\\t\\t\\t\\t\\t\\tevent.stopPropagation();\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Call the postDispatch hook for the mapped type\\n\\t\\tif ( special.postDispatch ) {\\n\\t\\t\\tspecial.postDispatch.call( this, event );\\n\\t\\t}\\n\\n\\t\\treturn event.result;\\n\\t},\\n\\n\\thandlers: function( event, handlers ) {\\n\\t\\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\\n\\t\\t\\thandlerQueue = [],\\n\\t\\t\\tdelegateCount = handlers.delegateCount,\\n\\t\\t\\tcur = event.target;\\n\\n\\t\\t// Find delegate handlers\\n\\t\\tif ( delegateCount &&\\n\\n\\t\\t\\t// Support: IE <=9\\n\\t\\t\\t// Black-hole SVG <use> instance trees (trac-13180)\\n\\t\\t\\tcur.nodeType &&\\n\\n\\t\\t\\t// Support: Firefox <=42\\n\\t\\t\\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\\n\\t\\t\\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\\n\\t\\t\\t// Support: IE 11 only\\n\\t\\t\\t// ...but not arrow key \\\\\\\"clicks\\\\\\\" of radio inputs, which can have `button` -1 (gh-2343)\\n\\t\\t\\t!( event.type === \\\\\\\"click\\\\\\\" && event.button >= 1 ) ) {\\n\\n\\t\\t\\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\\n\\n\\t\\t\\t\\t// Don't check non-elements (#13208)\\n\\t\\t\\t\\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\\n\\t\\t\\t\\tif ( cur.nodeType === 1 && !( event.type === \\\\\\\"click\\\\\\\" && cur.disabled === true ) ) {\\n\\t\\t\\t\\t\\tmatchedHandlers = [];\\n\\t\\t\\t\\t\\tmatchedSelectors = {};\\n\\t\\t\\t\\t\\tfor ( i = 0; i < delegateCount; i++ ) {\\n\\t\\t\\t\\t\\t\\thandleObj = handlers[ i ];\\n\\n\\t\\t\\t\\t\\t\\t// Don't conflict with Object.prototype properties (#13203)\\n\\t\\t\\t\\t\\t\\tsel = handleObj.selector + \\\\\\\" \\\\\\\";\\n\\n\\t\\t\\t\\t\\t\\tif ( matchedSelectors[ sel ] === undefined ) {\\n\\t\\t\\t\\t\\t\\t\\tmatchedSelectors[ sel ] = handleObj.needsContext ?\\n\\t\\t\\t\\t\\t\\t\\t\\tjQuery( sel, this ).index( cur ) > -1 :\\n\\t\\t\\t\\t\\t\\t\\t\\tjQuery.find( sel, this, null, [ cur ] ).length;\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\tif ( matchedSelectors[ sel ] ) {\\n\\t\\t\\t\\t\\t\\t\\tmatchedHandlers.push( handleObj );\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tif ( matchedHandlers.length ) {\\n\\t\\t\\t\\t\\t\\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Add the remaining (directly-bound) handlers\\n\\t\\tcur = this;\\n\\t\\tif ( delegateCount < handlers.length ) {\\n\\t\\t\\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\\n\\t\\t}\\n\\n\\t\\treturn handlerQueue;\\n\\t},\\n\\n\\taddProp: function( name, hook ) {\\n\\t\\tObject.defineProperty( jQuery.Event.prototype, name, {\\n\\t\\t\\tenumerable: true,\\n\\t\\t\\tconfigurable: true,\\n\\n\\t\\t\\tget: isFunction( hook ) ?\\n\\t\\t\\t\\tfunction() {\\n\\t\\t\\t\\t\\tif ( this.originalEvent ) {\\n\\t\\t\\t\\t\\t\\t\\treturn hook( this.originalEvent );\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t} :\\n\\t\\t\\t\\tfunction() {\\n\\t\\t\\t\\t\\tif ( this.originalEvent ) {\\n\\t\\t\\t\\t\\t\\t\\treturn this.originalEvent[ name ];\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t},\\n\\n\\t\\t\\tset: function( value ) {\\n\\t\\t\\t\\tObject.defineProperty( this, name, {\\n\\t\\t\\t\\t\\tenumerable: true,\\n\\t\\t\\t\\t\\tconfigurable: true,\\n\\t\\t\\t\\t\\twritable: true,\\n\\t\\t\\t\\t\\tvalue: value\\n\\t\\t\\t\\t} );\\n\\t\\t\\t}\\n\\t\\t} );\\n\\t},\\n\\n\\tfix: function( originalEvent ) {\\n\\t\\treturn originalEvent[ jQuery.expando ] ?\\n\\t\\t\\toriginalEvent :\\n\\t\\t\\tnew jQuery.Event( originalEvent );\\n\\t},\\n\\n\\tspecial: {\\n\\t\\tload: {\\n\\n\\t\\t\\t// Prevent triggered image.load events from bubbling to window.load\\n\\t\\t\\tnoBubble: true\\n\\t\\t},\\n\\t\\tclick: {\\n\\n\\t\\t\\t// Utilize native event to ensure correct state for checkable inputs\\n\\t\\t\\tsetup: function( data ) {\\n\\n\\t\\t\\t\\t// For mutual compressibility with _default, replace `this` access with a local var.\\n\\t\\t\\t\\t// `|| data` is dead code meant only to preserve the variable through minification.\\n\\t\\t\\t\\tvar el = this || data;\\n\\n\\t\\t\\t\\t// Claim the first handler\\n\\t\\t\\t\\tif ( rcheckableType.test( el.type ) &&\\n\\t\\t\\t\\t\\tel.click && nodeName( el, \\\\\\\"input\\\\\\\" ) ) {\\n\\n\\t\\t\\t\\t\\t// dataPriv.set( el, \\\\\\\"click\\\\\\\", ... )\\n\\t\\t\\t\\t\\tleverageNative( el, \\\\\\\"click\\\\\\\", returnTrue );\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Return false to allow normal processing in the caller\\n\\t\\t\\t\\treturn false;\\n\\t\\t\\t},\\n\\t\\t\\ttrigger: function( data ) {\\n\\n\\t\\t\\t\\t// For mutual compressibility with _default, replace `this` access with a local var.\\n\\t\\t\\t\\t// `|| data` is dead code meant only to preserve the variable through minification.\\n\\t\\t\\t\\tvar el = this || data;\\n\\n\\t\\t\\t\\t// Force setup before triggering a click\\n\\t\\t\\t\\tif ( rcheckableType.test( el.type ) &&\\n\\t\\t\\t\\t\\tel.click && nodeName( el, \\\\\\\"input\\\\\\\" ) ) {\\n\\n\\t\\t\\t\\t\\tleverageNative( el, \\\\\\\"click\\\\\\\" );\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Return non-false to allow normal event-path propagation\\n\\t\\t\\t\\treturn true;\\n\\t\\t\\t},\\n\\n\\t\\t\\t// For cross-browser consistency, suppress native .click() on links\\n\\t\\t\\t// Also prevent it if we're currently inside a leveraged native-event stack\\n\\t\\t\\t_default: function( event ) {\\n\\t\\t\\t\\tvar target = event.target;\\n\\t\\t\\t\\treturn rcheckableType.test( target.type ) &&\\n\\t\\t\\t\\t\\ttarget.click && nodeName( target, \\\\\\\"input\\\\\\\" ) &&\\n\\t\\t\\t\\t\\tdataPriv.get( target, \\\\\\\"click\\\\\\\" ) ||\\n\\t\\t\\t\\t\\tnodeName( target, \\\\\\\"a\\\\\\\" );\\n\\t\\t\\t}\\n\\t\\t},\\n\\n\\t\\tbeforeunload: {\\n\\t\\t\\tpostDispatch: function( event ) {\\n\\n\\t\\t\\t\\t// Support: Firefox 20+\\n\\t\\t\\t\\t// Firefox doesn't alert if the returnValue field is not set.\\n\\t\\t\\t\\tif ( event.result !== undefined && event.originalEvent ) {\\n\\t\\t\\t\\t\\tevent.originalEvent.returnValue = event.result;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n};\\n\\n// Ensure the presence of an event listener that handles manually-triggered\\n// synthetic events by interrupting progress until reinvoked in response to\\n// *native* events that it fires directly, ensuring that state changes have\\n// already occurred before other listeners are invoked.\\nfunction leverageNative( el, type, expectSync ) {\\n\\n\\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\\n\\tif ( !expectSync ) {\\n\\t\\tif ( dataPriv.get( el, type ) === undefined ) {\\n\\t\\t\\tjQuery.event.add( el, type, returnTrue );\\n\\t\\t}\\n\\t\\treturn;\\n\\t}\\n\\n\\t// Register the controller as a special universal handler for all event namespaces\\n\\tdataPriv.set( el, type, false );\\n\\tjQuery.event.add( el, type, {\\n\\t\\tnamespace: false,\\n\\t\\thandler: function( event ) {\\n\\t\\t\\tvar notAsync, result,\\n\\t\\t\\t\\tsaved = dataPriv.get( this, type );\\n\\n\\t\\t\\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\\n\\n\\t\\t\\t\\t// Interrupt processing of the outer synthetic .trigger()ed event\\n\\t\\t\\t\\t// Saved data should be false in such cases, but might be a leftover capture object\\n\\t\\t\\t\\t// from an async native handler (gh-4350)\\n\\t\\t\\t\\tif ( !saved.length ) {\\n\\n\\t\\t\\t\\t\\t// Store arguments for use when handling the inner native event\\n\\t\\t\\t\\t\\t// There will always be at least one argument (an event object), so this array\\n\\t\\t\\t\\t\\t// will not be confused with a leftover capture object.\\n\\t\\t\\t\\t\\tsaved = slice.call( arguments );\\n\\t\\t\\t\\t\\tdataPriv.set( this, type, saved );\\n\\n\\t\\t\\t\\t\\t// Trigger the native event and capture its result\\n\\t\\t\\t\\t\\t// Support: IE <=9 - 11+\\n\\t\\t\\t\\t\\t// focus() and blur() are asynchronous\\n\\t\\t\\t\\t\\tnotAsync = expectSync( this, type );\\n\\t\\t\\t\\t\\tthis[ type ]();\\n\\t\\t\\t\\t\\tresult = dataPriv.get( this, type );\\n\\t\\t\\t\\t\\tif ( saved !== result || notAsync ) {\\n\\t\\t\\t\\t\\t\\tdataPriv.set( this, type, false );\\n\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\tresult = {};\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tif ( saved !== result ) {\\n\\n\\t\\t\\t\\t\\t\\t// Cancel the outer synthetic event\\n\\t\\t\\t\\t\\t\\tevent.stopImmediatePropagation();\\n\\t\\t\\t\\t\\t\\tevent.preventDefault();\\n\\t\\t\\t\\t\\t\\treturn result.value;\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// If this is an inner synthetic event for an event with a bubbling surrogate\\n\\t\\t\\t\\t// (focus or blur), assume that the surrogate already propagated from triggering the\\n\\t\\t\\t\\t// native event and prevent that from happening again here.\\n\\t\\t\\t\\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\\n\\t\\t\\t\\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\\n\\t\\t\\t\\t// less bad than duplication.\\n\\t\\t\\t\\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\\n\\t\\t\\t\\t\\tevent.stopPropagation();\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t// If this is a native event triggered above, everything is now in order\\n\\t\\t\\t// Fire an inner synthetic event with the original arguments\\n\\t\\t\\t} else if ( saved.length ) {\\n\\n\\t\\t\\t\\t// ...and capture the result\\n\\t\\t\\t\\tdataPriv.set( this, type, {\\n\\t\\t\\t\\t\\tvalue: jQuery.event.trigger(\\n\\n\\t\\t\\t\\t\\t\\t// Support: IE <=9 - 11+\\n\\t\\t\\t\\t\\t\\t// Extend with the prototype to reset the above stopImmediatePropagation()\\n\\t\\t\\t\\t\\t\\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\\n\\t\\t\\t\\t\\t\\tsaved.slice( 1 ),\\n\\t\\t\\t\\t\\t\\tthis\\n\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t} );\\n\\n\\t\\t\\t\\t// Abort handling of the native event\\n\\t\\t\\t\\tevent.stopImmediatePropagation();\\n\\t\\t\\t}\\n\\t\\t}\\n\\t} );\\n}\\n\\njQuery.removeEvent = function( elem, type, handle ) {\\n\\n\\t// This \\\\\\\"if\\\\\\\" is needed for plain objects\\n\\tif ( elem.removeEventListener ) {\\n\\t\\telem.removeEventListener( type, handle );\\n\\t}\\n};\\n\\njQuery.Event = function( src, props ) {\\n\\n\\t// Allow instantiation without the 'new' keyword\\n\\tif ( !( this instanceof jQuery.Event ) ) {\\n\\t\\treturn new jQuery.Event( src, props );\\n\\t}\\n\\n\\t// Event object\\n\\tif ( src && src.type ) {\\n\\t\\tthis.originalEvent = src;\\n\\t\\tthis.type = src.type;\\n\\n\\t\\t// Events bubbling up the document may have been marked as prevented\\n\\t\\t// by a handler lower down the tree; reflect the correct value.\\n\\t\\tthis.isDefaultPrevented = src.defaultPrevented ||\\n\\t\\t\\t\\tsrc.defaultPrevented === undefined &&\\n\\n\\t\\t\\t\\t// Support: Android <=2.3 only\\n\\t\\t\\t\\tsrc.returnValue === false ?\\n\\t\\t\\treturnTrue :\\n\\t\\t\\treturnFalse;\\n\\n\\t\\t// Create target properties\\n\\t\\t// Support: Safari <=6 - 7 only\\n\\t\\t// Target should not be a text node (#504, #13143)\\n\\t\\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\\n\\t\\t\\tsrc.target.parentNode :\\n\\t\\t\\tsrc.target;\\n\\n\\t\\tthis.currentTarget = src.currentTarget;\\n\\t\\tthis.relatedTarget = src.relatedTarget;\\n\\n\\t// Event type\\n\\t} else {\\n\\t\\tthis.type = src;\\n\\t}\\n\\n\\t// Put explicitly provided properties onto the event object\\n\\tif ( props ) {\\n\\t\\tjQuery.extend( this, props );\\n\\t}\\n\\n\\t// Create a timestamp if incoming event doesn't have one\\n\\tthis.timeStamp = src && src.timeStamp || Date.now();\\n\\n\\t// Mark it as fixed\\n\\tthis[ jQuery.expando ] = true;\\n};\\n\\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\\njQuery.Event.prototype = {\\n\\tconstructor: jQuery.Event,\\n\\tisDefaultPrevented: returnFalse,\\n\\tisPropagationStopped: returnFalse,\\n\\tisImmediatePropagationStopped: returnFalse,\\n\\tisSimulated: false,\\n\\n\\tpreventDefault: function() {\\n\\t\\tvar e = this.originalEvent;\\n\\n\\t\\tthis.isDefaultPrevented = returnTrue;\\n\\n\\t\\tif ( e && !this.isSimulated ) {\\n\\t\\t\\te.preventDefault();\\n\\t\\t}\\n\\t},\\n\\tstopPropagation: function() {\\n\\t\\tvar e = this.originalEvent;\\n\\n\\t\\tthis.isPropagationStopped = returnTrue;\\n\\n\\t\\tif ( e && !this.isSimulated ) {\\n\\t\\t\\te.stopPropagation();\\n\\t\\t}\\n\\t},\\n\\tstopImmediatePropagation: function() {\\n\\t\\tvar e = this.originalEvent;\\n\\n\\t\\tthis.isImmediatePropagationStopped = returnTrue;\\n\\n\\t\\tif ( e && !this.isSimulated ) {\\n\\t\\t\\te.stopImmediatePropagation();\\n\\t\\t}\\n\\n\\t\\tthis.stopPropagation();\\n\\t}\\n};\\n\\n// Includes all common event props including KeyEvent and MouseEvent specific props\\njQuery.each( {\\n\\taltKey: true,\\n\\tbubbles: true,\\n\\tcancelable: true,\\n\\tchangedTouches: true,\\n\\tctrlKey: true,\\n\\tdetail: true,\\n\\teventPhase: true,\\n\\tmetaKey: true,\\n\\tpageX: true,\\n\\tpageY: true,\\n\\tshiftKey: true,\\n\\tview: true,\\n\\t\\\\\\\"char\\\\\\\": true,\\n\\tcode: true,\\n\\tcharCode: true,\\n\\tkey: true,\\n\\tkeyCode: true,\\n\\tbutton: true,\\n\\tbuttons: true,\\n\\tclientX: true,\\n\\tclientY: true,\\n\\toffsetX: true,\\n\\toffsetY: true,\\n\\tpointerId: true,\\n\\tpointerType: true,\\n\\tscreenX: true,\\n\\tscreenY: true,\\n\\ttargetTouches: true,\\n\\ttoElement: true,\\n\\ttouches: true,\\n\\n\\twhich: function( event ) {\\n\\t\\tvar button = event.button;\\n\\n\\t\\t// Add which for key events\\n\\t\\tif ( event.which == null && rkeyEvent.test( event.type ) ) {\\n\\t\\t\\treturn event.charCode != null ? event.charCode : event.keyCode;\\n\\t\\t}\\n\\n\\t\\t// Add which for click: 1 === left; 2 === middle; 3 === right\\n\\t\\tif ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {\\n\\t\\t\\tif ( button & 1 ) {\\n\\t\\t\\t\\treturn 1;\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( button & 2 ) {\\n\\t\\t\\t\\treturn 3;\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( button & 4 ) {\\n\\t\\t\\t\\treturn 2;\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn 0;\\n\\t\\t}\\n\\n\\t\\treturn event.which;\\n\\t}\\n}, jQuery.event.addProp );\\n\\njQuery.each( { focus: \\\\\\\"focusin\\\\\\\", blur: \\\\\\\"focusout\\\\\\\" }, function( type, delegateType ) {\\n\\tjQuery.event.special[ type ] = {\\n\\n\\t\\t// Utilize native event if possible so blur/focus sequence is correct\\n\\t\\tsetup: function() {\\n\\n\\t\\t\\t// Claim the first handler\\n\\t\\t\\t// dataPriv.set( this, \\\\\\\"focus\\\\\\\", ... )\\n\\t\\t\\t// dataPriv.set( this, \\\\\\\"blur\\\\\\\", ... )\\n\\t\\t\\tleverageNative( this, type, expectSync );\\n\\n\\t\\t\\t// Return false to allow normal processing in the caller\\n\\t\\t\\treturn false;\\n\\t\\t},\\n\\t\\ttrigger: function() {\\n\\n\\t\\t\\t// Force setup before trigger\\n\\t\\t\\tleverageNative( this, type );\\n\\n\\t\\t\\t// Return non-false to allow normal event-path propagation\\n\\t\\t\\treturn true;\\n\\t\\t},\\n\\n\\t\\tdelegateType: delegateType\\n\\t};\\n} );\\n\\n// Create mouseenter/leave events using mouseover/out and event-time checks\\n// so that event delegation works in jQuery.\\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\\n//\\n// Support: Safari 7 only\\n// Safari sends mouseenter too often; see:\\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\\n// for the description of the bug (it existed in older Chrome versions as well).\\njQuery.each( {\\n\\tmouseenter: \\\\\\\"mouseover\\\\\\\",\\n\\tmouseleave: \\\\\\\"mouseout\\\\\\\",\\n\\tpointerenter: \\\\\\\"pointerover\\\\\\\",\\n\\tpointerleave: \\\\\\\"pointerout\\\\\\\"\\n}, function( orig, fix ) {\\n\\tjQuery.event.special[ orig ] = {\\n\\t\\tdelegateType: fix,\\n\\t\\tbindType: fix,\\n\\n\\t\\thandle: function( event ) {\\n\\t\\t\\tvar ret,\\n\\t\\t\\t\\ttarget = this,\\n\\t\\t\\t\\trelated = event.relatedTarget,\\n\\t\\t\\t\\thandleObj = event.handleObj;\\n\\n\\t\\t\\t// For mouseenter/leave call the handler if related is outside the target.\\n\\t\\t\\t// NB: No relatedTarget if the mouse left/entered the browser window\\n\\t\\t\\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\\n\\t\\t\\t\\tevent.type = handleObj.origType;\\n\\t\\t\\t\\tret = handleObj.handler.apply( this, arguments );\\n\\t\\t\\t\\tevent.type = fix;\\n\\t\\t\\t}\\n\\t\\t\\treturn ret;\\n\\t\\t}\\n\\t};\\n} );\\n\\njQuery.fn.extend( {\\n\\n\\ton: function( types, selector, data, fn ) {\\n\\t\\treturn on( this, types, selector, data, fn );\\n\\t},\\n\\tone: function( types, selector, data, fn ) {\\n\\t\\treturn on( this, types, selector, data, fn, 1 );\\n\\t},\\n\\toff: function( types, selector, fn ) {\\n\\t\\tvar handleObj, type;\\n\\t\\tif ( types && types.preventDefault && types.handleObj ) {\\n\\n\\t\\t\\t// ( event )  dispatched jQuery.Event\\n\\t\\t\\thandleObj = types.handleObj;\\n\\t\\t\\tjQuery( types.delegateTarget ).off(\\n\\t\\t\\t\\thandleObj.namespace ?\\n\\t\\t\\t\\t\\thandleObj.origType + \\\\\\\".\\\\\\\" + handleObj.namespace :\\n\\t\\t\\t\\t\\thandleObj.origType,\\n\\t\\t\\t\\thandleObj.selector,\\n\\t\\t\\t\\thandleObj.handler\\n\\t\\t\\t);\\n\\t\\t\\treturn this;\\n\\t\\t}\\n\\t\\tif ( typeof types === \\\\\\\"object\\\\\\\" ) {\\n\\n\\t\\t\\t// ( types-object [, selector] )\\n\\t\\t\\tfor ( type in types ) {\\n\\t\\t\\t\\tthis.off( type, selector, types[ type ] );\\n\\t\\t\\t}\\n\\t\\t\\treturn this;\\n\\t\\t}\\n\\t\\tif ( selector === false || typeof selector === \\\\\\\"function\\\\\\\" ) {\\n\\n\\t\\t\\t// ( types [, fn] )\\n\\t\\t\\tfn = selector;\\n\\t\\t\\tselector = undefined;\\n\\t\\t}\\n\\t\\tif ( fn === false ) {\\n\\t\\t\\tfn = returnFalse;\\n\\t\\t}\\n\\t\\treturn this.each( function() {\\n\\t\\t\\tjQuery.event.remove( this, types, fn, selector );\\n\\t\\t} );\\n\\t}\\n} );\\n\\n\\nvar\\n\\n\\t// Support: IE <=10 - 11, Edge 12 - 13 only\\n\\t// In IE/Edge using regex groups here causes severe slowdowns.\\n\\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\\n\\trnoInnerhtml = /<script|<style|<link/i,\\n\\n\\t// checked=\\\\\\\"checked\\\\\\\" or checked\\n\\trchecked = /checked\\\\s*(?:[^=]|=\\\\s*.checked.)/i,\\n\\trcleanScript = /^\\\\s*<!(?:\\\\[CDATA\\\\[|--)|(?:\\\\]\\\\]|--)>\\\\s*$/g;\\n\\n// Prefer a tbody over its parent table for containing new rows\\nfunction manipulationTarget( elem, content ) {\\n\\tif ( nodeName( elem, \\\\\\\"table\\\\\\\" ) &&\\n\\t\\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \\\\\\\"tr\\\\\\\" ) ) {\\n\\n\\t\\treturn jQuery( elem ).children( \\\\\\\"tbody\\\\\\\" )[ 0 ] || elem;\\n\\t}\\n\\n\\treturn elem;\\n}\\n\\n// Replace/restore the type attribute of script elements for safe DOM manipulation\\nfunction disableScript( elem ) {\\n\\telem.type = ( elem.getAttribute( \\\\\\\"type\\\\\\\" ) !== null ) + \\\\\\\"/\\\\\\\" + elem.type;\\n\\treturn elem;\\n}\\nfunction restoreScript( elem ) {\\n\\tif ( ( elem.type || \\\\\\\"\\\\\\\" ).slice( 0, 5 ) === \\\\\\\"true/\\\\\\\" ) {\\n\\t\\telem.type = elem.type.slice( 5 );\\n\\t} else {\\n\\t\\telem.removeAttribute( \\\\\\\"type\\\\\\\" );\\n\\t}\\n\\n\\treturn elem;\\n}\\n\\nfunction cloneCopyEvent( src, dest ) {\\n\\tvar i, l, type, pdataOld, udataOld, udataCur, events;\\n\\n\\tif ( dest.nodeType !== 1 ) {\\n\\t\\treturn;\\n\\t}\\n\\n\\t// 1. Copy private data: events, handlers, etc.\\n\\tif ( dataPriv.hasData( src ) ) {\\n\\t\\tpdataOld = dataPriv.get( src );\\n\\t\\tevents = pdataOld.events;\\n\\n\\t\\tif ( events ) {\\n\\t\\t\\tdataPriv.remove( dest, \\\\\\\"handle events\\\\\\\" );\\n\\n\\t\\t\\tfor ( type in events ) {\\n\\t\\t\\t\\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\\n\\t\\t\\t\\t\\tjQuery.event.add( dest, type, events[ type ][ i ] );\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t// 2. Copy user data\\n\\tif ( dataUser.hasData( src ) ) {\\n\\t\\tudataOld = dataUser.access( src );\\n\\t\\tudataCur = jQuery.extend( {}, udataOld );\\n\\n\\t\\tdataUser.set( dest, udataCur );\\n\\t}\\n}\\n\\n// Fix IE bugs, see support tests\\nfunction fixInput( src, dest ) {\\n\\tvar nodeName = dest.nodeName.toLowerCase();\\n\\n\\t// Fails to persist the checked state of a cloned checkbox or radio button.\\n\\tif ( nodeName === \\\\\\\"input\\\\\\\" && rcheckableType.test( src.type ) ) {\\n\\t\\tdest.checked = src.checked;\\n\\n\\t// Fails to return the selected option to the default selected state when cloning options\\n\\t} else if ( nodeName === \\\\\\\"input\\\\\\\" || nodeName === \\\\\\\"textarea\\\\\\\" ) {\\n\\t\\tdest.defaultValue = src.defaultValue;\\n\\t}\\n}\\n\\nfunction domManip( collection, args, callback, ignored ) {\\n\\n\\t// Flatten any nested arrays\\n\\targs = flat( args );\\n\\n\\tvar fragment, first, scripts, hasScripts, node, doc,\\n\\t\\ti = 0,\\n\\t\\tl = collection.length,\\n\\t\\tiNoClone = l - 1,\\n\\t\\tvalue = args[ 0 ],\\n\\t\\tvalueIsFunction = isFunction( value );\\n\\n\\t// We can't cloneNode fragments that contain checked, in WebKit\\n\\tif ( valueIsFunction ||\\n\\t\\t\\t( l > 1 && typeof value === \\\\\\\"string\\\\\\\" &&\\n\\t\\t\\t\\t!support.checkClone && rchecked.test( value ) ) ) {\\n\\t\\treturn collection.each( function( index ) {\\n\\t\\t\\tvar self = collection.eq( index );\\n\\t\\t\\tif ( valueIsFunction ) {\\n\\t\\t\\t\\targs[ 0 ] = value.call( this, index, self.html() );\\n\\t\\t\\t}\\n\\t\\t\\tdomManip( self, args, callback, ignored );\\n\\t\\t} );\\n\\t}\\n\\n\\tif ( l ) {\\n\\t\\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\\n\\t\\tfirst = fragment.firstChild;\\n\\n\\t\\tif ( fragment.childNodes.length === 1 ) {\\n\\t\\t\\tfragment = first;\\n\\t\\t}\\n\\n\\t\\t// Require either new content or an interest in ignored elements to invoke the callback\\n\\t\\tif ( first || ignored ) {\\n\\t\\t\\tscripts = jQuery.map( getAll( fragment, \\\\\\\"script\\\\\\\" ), disableScript );\\n\\t\\t\\thasScripts = scripts.length;\\n\\n\\t\\t\\t// Use the original fragment for the last item\\n\\t\\t\\t// instead of the first because it can end up\\n\\t\\t\\t// being emptied incorrectly in certain situations (#8070).\\n\\t\\t\\tfor ( ; i < l; i++ ) {\\n\\t\\t\\t\\tnode = fragment;\\n\\n\\t\\t\\t\\tif ( i !== iNoClone ) {\\n\\t\\t\\t\\t\\tnode = jQuery.clone( node, true, true );\\n\\n\\t\\t\\t\\t\\t// Keep references to cloned scripts for later restoration\\n\\t\\t\\t\\t\\tif ( hasScripts ) {\\n\\n\\t\\t\\t\\t\\t\\t// Support: Android <=4.0 only, PhantomJS 1 only\\n\\t\\t\\t\\t\\t\\t// push.apply(_, arraylike) throws on ancient WebKit\\n\\t\\t\\t\\t\\t\\tjQuery.merge( scripts, getAll( node, \\\\\\\"script\\\\\\\" ) );\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tcallback.call( collection[ i ], node, i );\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( hasScripts ) {\\n\\t\\t\\t\\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\\n\\n\\t\\t\\t\\t// Reenable scripts\\n\\t\\t\\t\\tjQuery.map( scripts, restoreScript );\\n\\n\\t\\t\\t\\t// Evaluate executable scripts on first document insertion\\n\\t\\t\\t\\tfor ( i = 0; i < hasScripts; i++ ) {\\n\\t\\t\\t\\t\\tnode = scripts[ i ];\\n\\t\\t\\t\\t\\tif ( rscriptType.test( node.type || \\\\\\\"\\\\\\\" ) &&\\n\\t\\t\\t\\t\\t\\t!dataPriv.access( node, \\\\\\\"globalEval\\\\\\\" ) &&\\n\\t\\t\\t\\t\\t\\tjQuery.contains( doc, node ) ) {\\n\\n\\t\\t\\t\\t\\t\\tif ( node.src && ( node.type || \\\\\\\"\\\\\\\" ).toLowerCase()  !== \\\\\\\"module\\\\\\\" ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t// Optional AJAX dependency, but won't run scripts if not present\\n\\t\\t\\t\\t\\t\\t\\tif ( jQuery._evalUrl && !node.noModule ) {\\n\\t\\t\\t\\t\\t\\t\\t\\tjQuery._evalUrl( node.src, {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tnonce: node.nonce || node.getAttribute( \\\\\\\"nonce\\\\\\\" )\\n\\t\\t\\t\\t\\t\\t\\t\\t}, doc );\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\t\\tDOMEval( node.textContent.replace( rcleanScript, \\\\\\\"\\\\\\\" ), node, doc );\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\treturn collection;\\n}\\n\\nfunction remove( elem, selector, keepData ) {\\n\\tvar node,\\n\\t\\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\\n\\t\\ti = 0;\\n\\n\\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\\n\\t\\tif ( !keepData && node.nodeType === 1 ) {\\n\\t\\t\\tjQuery.cleanData( getAll( node ) );\\n\\t\\t}\\n\\n\\t\\tif ( node.parentNode ) {\\n\\t\\t\\tif ( keepData && isAttached( node ) ) {\\n\\t\\t\\t\\tsetGlobalEval( getAll( node, \\\\\\\"script\\\\\\\" ) );\\n\\t\\t\\t}\\n\\t\\t\\tnode.parentNode.removeChild( node );\\n\\t\\t}\\n\\t}\\n\\n\\treturn elem;\\n}\\n\\njQuery.extend( {\\n\\thtmlPrefilter: function( html ) {\\n\\t\\treturn html;\\n\\t},\\n\\n\\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\\n\\t\\tvar i, l, srcElements, destElements,\\n\\t\\t\\tclone = elem.cloneNode( true ),\\n\\t\\t\\tinPage = isAttached( elem );\\n\\n\\t\\t// Fix IE cloning issues\\n\\t\\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\\n\\t\\t\\t\\t!jQuery.isXMLDoc( elem ) ) {\\n\\n\\t\\t\\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\\n\\t\\t\\tdestElements = getAll( clone );\\n\\t\\t\\tsrcElements = getAll( elem );\\n\\n\\t\\t\\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\\n\\t\\t\\t\\tfixInput( srcElements[ i ], destElements[ i ] );\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Copy the events from the original to the clone\\n\\t\\tif ( dataAndEvents ) {\\n\\t\\t\\tif ( deepDataAndEvents ) {\\n\\t\\t\\t\\tsrcElements = srcElements || getAll( elem );\\n\\t\\t\\t\\tdestElements = destElements || getAll( clone );\\n\\n\\t\\t\\t\\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\\n\\t\\t\\t\\t\\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\\n\\t\\t\\t\\t}\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tcloneCopyEvent( elem, clone );\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Preserve script evaluation history\\n\\t\\tdestElements = getAll( clone, \\\\\\\"script\\\\\\\" );\\n\\t\\tif ( destElements.length > 0 ) {\\n\\t\\t\\tsetGlobalEval( destElements, !inPage && getAll( elem, \\\\\\\"script\\\\\\\" ) );\\n\\t\\t}\\n\\n\\t\\t// Return the cloned set\\n\\t\\treturn clone;\\n\\t},\\n\\n\\tcleanData: function( elems ) {\\n\\t\\tvar data, elem, type,\\n\\t\\t\\tspecial = jQuery.event.special,\\n\\t\\t\\ti = 0;\\n\\n\\t\\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\\n\\t\\t\\tif ( acceptData( elem ) ) {\\n\\t\\t\\t\\tif ( ( data = elem[ dataPriv.expando ] ) ) {\\n\\t\\t\\t\\t\\tif ( data.events ) {\\n\\t\\t\\t\\t\\t\\tfor ( type in data.events ) {\\n\\t\\t\\t\\t\\t\\t\\tif ( special[ type ] ) {\\n\\t\\t\\t\\t\\t\\t\\t\\tjQuery.event.remove( elem, type );\\n\\n\\t\\t\\t\\t\\t\\t\\t// This is a shortcut to avoid jQuery.event.remove's overhead\\n\\t\\t\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\t\\t\\tjQuery.removeEvent( elem, type, data.handle );\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t// Support: Chrome <=35 - 45+\\n\\t\\t\\t\\t\\t// Assign undefined instead of using delete, see Data#remove\\n\\t\\t\\t\\t\\telem[ dataPriv.expando ] = undefined;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif ( elem[ dataUser.expando ] ) {\\n\\n\\t\\t\\t\\t\\t// Support: Chrome <=35 - 45+\\n\\t\\t\\t\\t\\t// Assign undefined instead of using delete, see Data#remove\\n\\t\\t\\t\\t\\telem[ dataUser.expando ] = undefined;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n} );\\n\\njQuery.fn.extend( {\\n\\tdetach: function( selector ) {\\n\\t\\treturn remove( this, selector, true );\\n\\t},\\n\\n\\tremove: function( selector ) {\\n\\t\\treturn remove( this, selector );\\n\\t},\\n\\n\\ttext: function( value ) {\\n\\t\\treturn access( this, function( value ) {\\n\\t\\t\\treturn value === undefined ?\\n\\t\\t\\t\\tjQuery.text( this ) :\\n\\t\\t\\t\\tthis.empty().each( function() {\\n\\t\\t\\t\\t\\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\\n\\t\\t\\t\\t\\t\\tthis.textContent = value;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t} );\\n\\t\\t}, null, value, arguments.length );\\n\\t},\\n\\n\\tappend: function() {\\n\\t\\treturn domManip( this, arguments, function( elem ) {\\n\\t\\t\\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\\n\\t\\t\\t\\tvar target = manipulationTarget( this, elem );\\n\\t\\t\\t\\ttarget.appendChild( elem );\\n\\t\\t\\t}\\n\\t\\t} );\\n\\t},\\n\\n\\tprepend: function() {\\n\\t\\treturn domManip( this, arguments, function( elem ) {\\n\\t\\t\\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\\n\\t\\t\\t\\tvar target = manipulationTarget( this, elem );\\n\\t\\t\\t\\ttarget.insertBefore( elem, target.firstChild );\\n\\t\\t\\t}\\n\\t\\t} );\\n\\t},\\n\\n\\tbefore: function() {\\n\\t\\treturn domManip( this, arguments, function( elem ) {\\n\\t\\t\\tif ( this.parentNode ) {\\n\\t\\t\\t\\tthis.parentNode.insertBefore( elem, this );\\n\\t\\t\\t}\\n\\t\\t} );\\n\\t},\\n\\n\\tafter: function() {\\n\\t\\treturn domManip( this, arguments, function( elem ) {\\n\\t\\t\\tif ( this.parentNode ) {\\n\\t\\t\\t\\tthis.parentNode.insertBefore( elem, this.nextSibling );\\n\\t\\t\\t}\\n\\t\\t} );\\n\\t},\\n\\n\\tempty: function() {\\n\\t\\tvar elem,\\n\\t\\t\\ti = 0;\\n\\n\\t\\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\\n\\t\\t\\tif ( elem.nodeType === 1 ) {\\n\\n\\t\\t\\t\\t// Prevent memory leaks\\n\\t\\t\\t\\tjQuery.cleanData( getAll( elem, false ) );\\n\\n\\t\\t\\t\\t// Remove any remaining nodes\\n\\t\\t\\t\\telem.textContent = \\\\\\\"\\\\\\\";\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\treturn this;\\n\\t},\\n\\n\\tclone: function( dataAndEvents, deepDataAndEvents ) {\\n\\t\\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\\n\\t\\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\\n\\n\\t\\treturn this.map( function() {\\n\\t\\t\\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\\n\\t\\t} );\\n\\t},\\n\\n\\thtml: function( value ) {\\n\\t\\treturn access( this, function( value ) {\\n\\t\\t\\tvar elem = this[ 0 ] || {},\\n\\t\\t\\t\\ti = 0,\\n\\t\\t\\t\\tl = this.length;\\n\\n\\t\\t\\tif ( value === undefined && elem.nodeType === 1 ) {\\n\\t\\t\\t\\treturn elem.innerHTML;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// See if we can take a shortcut and just use innerHTML\\n\\t\\t\\tif ( typeof value === \\\\\\\"string\\\\\\\" && !rnoInnerhtml.test( value ) &&\\n\\t\\t\\t\\t!wrapMap[ ( rtagName.exec( value ) || [ \\\\\\\"\\\\\\\", \\\\\\\"\\\\\\\" ] )[ 1 ].toLowerCase() ] ) {\\n\\n\\t\\t\\t\\tvalue = jQuery.htmlPrefilter( value );\\n\\n\\t\\t\\t\\ttry {\\n\\t\\t\\t\\t\\tfor ( ; i < l; i++ ) {\\n\\t\\t\\t\\t\\t\\telem = this[ i ] || {};\\n\\n\\t\\t\\t\\t\\t\\t// Remove element nodes and prevent memory leaks\\n\\t\\t\\t\\t\\t\\tif ( elem.nodeType === 1 ) {\\n\\t\\t\\t\\t\\t\\t\\tjQuery.cleanData( getAll( elem, false ) );\\n\\t\\t\\t\\t\\t\\t\\telem.innerHTML = value;\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\telem = 0;\\n\\n\\t\\t\\t\\t// If using innerHTML throws an exception, use the fallback method\\n\\t\\t\\t\\t} catch ( e ) {}\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( elem ) {\\n\\t\\t\\t\\tthis.empty().append( value );\\n\\t\\t\\t}\\n\\t\\t}, null, value, arguments.length );\\n\\t},\\n\\n\\treplaceWith: function() {\\n\\t\\tvar ignored = [];\\n\\n\\t\\t// Make the changes, replacing each non-ignored context element with the new content\\n\\t\\treturn domManip( this, arguments, function( elem ) {\\n\\t\\t\\tvar parent = this.parentNode;\\n\\n\\t\\t\\tif ( jQuery.inArray( this, ignored ) < 0 ) {\\n\\t\\t\\t\\tjQuery.cleanData( getAll( this ) );\\n\\t\\t\\t\\tif ( parent ) {\\n\\t\\t\\t\\t\\tparent.replaceChild( elem, this );\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t// Force callback invocation\\n\\t\\t}, ignored );\\n\\t}\\n} );\\n\\njQuery.each( {\\n\\tappendTo: \\\\\\\"append\\\\\\\",\\n\\tprependTo: \\\\\\\"prepend\\\\\\\",\\n\\tinsertBefore: \\\\\\\"before\\\\\\\",\\n\\tinsertAfter: \\\\\\\"after\\\\\\\",\\n\\treplaceAll: \\\\\\\"replaceWith\\\\\\\"\\n}, function( name, original ) {\\n\\tjQuery.fn[ name ] = function( selector ) {\\n\\t\\tvar elems,\\n\\t\\t\\tret = [],\\n\\t\\t\\tinsert = jQuery( selector ),\\n\\t\\t\\tlast = insert.length - 1,\\n\\t\\t\\ti = 0;\\n\\n\\t\\tfor ( ; i <= last; i++ ) {\\n\\t\\t\\telems = i === last ? this : this.clone( true );\\n\\t\\t\\tjQuery( insert[ i ] )[ original ]( elems );\\n\\n\\t\\t\\t// Support: Android <=4.0 only, PhantomJS 1 only\\n\\t\\t\\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\\n\\t\\t\\tpush.apply( ret, elems.get() );\\n\\t\\t}\\n\\n\\t\\treturn this.pushStack( ret );\\n\\t};\\n} );\\nvar rnumnonpx = new RegExp( \\\\\\\"^(\\\\\\\" + pnum + \\\\\\\")(?!px)[a-z%]+$\\\\\\\", \\\\\\\"i\\\\\\\" );\\n\\nvar getStyles = function( elem ) {\\n\\n\\t\\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\\n\\t\\t// IE throws on elements created in popups\\n\\t\\t// FF meanwhile throws on frame elements through \\\\\\\"defaultView.getComputedStyle\\\\\\\"\\n\\t\\tvar view = elem.ownerDocument.defaultView;\\n\\n\\t\\tif ( !view || !view.opener ) {\\n\\t\\t\\tview = window;\\n\\t\\t}\\n\\n\\t\\treturn view.getComputedStyle( elem );\\n\\t};\\n\\nvar swap = function( elem, options, callback ) {\\n\\tvar ret, name,\\n\\t\\told = {};\\n\\n\\t// Remember the old values, and insert the new ones\\n\\tfor ( name in options ) {\\n\\t\\told[ name ] = elem.style[ name ];\\n\\t\\telem.style[ name ] = options[ name ];\\n\\t}\\n\\n\\tret = callback.call( elem );\\n\\n\\t// Revert the old values\\n\\tfor ( name in options ) {\\n\\t\\telem.style[ name ] = old[ name ];\\n\\t}\\n\\n\\treturn ret;\\n};\\n\\n\\nvar rboxStyle = new RegExp( cssExpand.join( \\\\\\\"|\\\\\\\" ), \\\\\\\"i\\\\\\\" );\\n\\n\\n\\n( function() {\\n\\n\\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\\n\\t// so they're executed at the same time to save the second computation.\\n\\tfunction computeStyleTests() {\\n\\n\\t\\t// This is a singleton, we need to execute it only once\\n\\t\\tif ( !div ) {\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\n\\t\\tcontainer.style.cssText = \\\\\\\"position:absolute;left:-11111px;width:60px;\\\\\\\" +\\n\\t\\t\\t\\\\\\\"margin-top:1px;padding:0;border:0\\\\\\\";\\n\\t\\tdiv.style.cssText =\\n\\t\\t\\t\\\\\\\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\\\\\\\" +\\n\\t\\t\\t\\\\\\\"margin:auto;border:1px;padding:1px;\\\\\\\" +\\n\\t\\t\\t\\\\\\\"width:60%;top:1%\\\\\\\";\\n\\t\\tdocumentElement.appendChild( container ).appendChild( div );\\n\\n\\t\\tvar divStyle = window.getComputedStyle( div );\\n\\t\\tpixelPositionVal = divStyle.top !== \\\\\\\"1%\\\\\\\";\\n\\n\\t\\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\\n\\t\\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\\n\\n\\t\\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\\n\\t\\t// Some styles come back with percentage values, even though they shouldn't\\n\\t\\tdiv.style.right = \\\\\\\"60%\\\\\\\";\\n\\t\\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\\n\\n\\t\\t// Support: IE 9 - 11 only\\n\\t\\t// Detect misreporting of content dimensions for box-sizing:border-box elements\\n\\t\\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\\n\\n\\t\\t// Support: IE 9 only\\n\\t\\t// Detect overflow:scroll screwiness (gh-3699)\\n\\t\\t// Support: Chrome <=64\\n\\t\\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\\n\\t\\tdiv.style.position = \\\\\\\"absolute\\\\\\\";\\n\\t\\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\\n\\n\\t\\tdocumentElement.removeChild( container );\\n\\n\\t\\t// Nullify the div so it wouldn't be stored in the memory and\\n\\t\\t// it will also be a sign that checks already performed\\n\\t\\tdiv = null;\\n\\t}\\n\\n\\tfunction roundPixelMeasures( measure ) {\\n\\t\\treturn Math.round( parseFloat( measure ) );\\n\\t}\\n\\n\\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\\n\\t\\treliableTrDimensionsVal, reliableMarginLeftVal,\\n\\t\\tcontainer = document.createElement( \\\\\\\"div\\\\\\\" ),\\n\\t\\tdiv = document.createElement( \\\\\\\"div\\\\\\\" );\\n\\n\\t// Finish early in limited (non-browser) environments\\n\\tif ( !div.style ) {\\n\\t\\treturn;\\n\\t}\\n\\n\\t// Support: IE <=9 - 11 only\\n\\t// Style of cloned element affects source element cloned (#8908)\\n\\tdiv.style.backgroundClip = \\\\\\\"content-box\\\\\\\";\\n\\tdiv.cloneNode( true ).style.backgroundClip = \\\\\\\"\\\\\\\";\\n\\tsupport.clearCloneStyle = div.style.backgroundClip === \\\\\\\"content-box\\\\\\\";\\n\\n\\tjQuery.extend( support, {\\n\\t\\tboxSizingReliable: function() {\\n\\t\\t\\tcomputeStyleTests();\\n\\t\\t\\treturn boxSizingReliableVal;\\n\\t\\t},\\n\\t\\tpixelBoxStyles: function() {\\n\\t\\t\\tcomputeStyleTests();\\n\\t\\t\\treturn pixelBoxStylesVal;\\n\\t\\t},\\n\\t\\tpixelPosition: function() {\\n\\t\\t\\tcomputeStyleTests();\\n\\t\\t\\treturn pixelPositionVal;\\n\\t\\t},\\n\\t\\treliableMarginLeft: function() {\\n\\t\\t\\tcomputeStyleTests();\\n\\t\\t\\treturn reliableMarginLeftVal;\\n\\t\\t},\\n\\t\\tscrollboxSize: function() {\\n\\t\\t\\tcomputeStyleTests();\\n\\t\\t\\treturn scrollboxSizeVal;\\n\\t\\t},\\n\\n\\t\\t// Support: IE 9 - 11+, Edge 15 - 18+\\n\\t\\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\\n\\t\\t// set in CSS while `offset*` properties report correct values.\\n\\t\\t// Behavior in IE 9 is more subtle than in newer versions & it passes\\n\\t\\t// some versions of this test; make sure not to make it pass there!\\n\\t\\treliableTrDimensions: function() {\\n\\t\\t\\tvar table, tr, trChild, trStyle;\\n\\t\\t\\tif ( reliableTrDimensionsVal == null ) {\\n\\t\\t\\t\\ttable = document.createElement( \\\\\\\"table\\\\\\\" );\\n\\t\\t\\t\\ttr = document.createElement( \\\\\\\"tr\\\\\\\" );\\n\\t\\t\\t\\ttrChild = document.createElement( \\\\\\\"div\\\\\\\" );\\n\\n\\t\\t\\t\\ttable.style.cssText = \\\\\\\"position:absolute;left:-11111px\\\\\\\";\\n\\t\\t\\t\\ttr.style.height = \\\\\\\"1px\\\\\\\";\\n\\t\\t\\t\\ttrChild.style.height = \\\\\\\"9px\\\\\\\";\\n\\n\\t\\t\\t\\tdocumentElement\\n\\t\\t\\t\\t\\t.appendChild( table )\\n\\t\\t\\t\\t\\t.appendChild( tr )\\n\\t\\t\\t\\t\\t.appendChild( trChild );\\n\\n\\t\\t\\t\\ttrStyle = window.getComputedStyle( tr );\\n\\t\\t\\t\\treliableTrDimensionsVal = parseInt( trStyle.height ) > 3;\\n\\n\\t\\t\\t\\tdocumentElement.removeChild( table );\\n\\t\\t\\t}\\n\\t\\t\\treturn reliableTrDimensionsVal;\\n\\t\\t}\\n\\t} );\\n} )();\\n\\n\\nfunction curCSS( elem, name, computed ) {\\n\\tvar width, minWidth, maxWidth, ret,\\n\\n\\t\\t// Support: Firefox 51+\\n\\t\\t// Retrieving style before computed somehow\\n\\t\\t// fixes an issue with getting wrong values\\n\\t\\t// on detached elements\\n\\t\\tstyle = elem.style;\\n\\n\\tcomputed = computed || getStyles( elem );\\n\\n\\t// getPropertyValue is needed for:\\n\\t//   .css('filter') (IE 9 only, #12537)\\n\\t//   .css('--customProperty) (#3144)\\n\\tif ( computed ) {\\n\\t\\tret = computed.getPropertyValue( name ) || computed[ name ];\\n\\n\\t\\tif ( ret === \\\\\\\"\\\\\\\" && !isAttached( elem ) ) {\\n\\t\\t\\tret = jQuery.style( elem, name );\\n\\t\\t}\\n\\n\\t\\t// A tribute to the \\\\\\\"awesome hack by Dean Edwards\\\\\\\"\\n\\t\\t// Android Browser returns percentage for some values,\\n\\t\\t// but width seems to be reliably pixels.\\n\\t\\t// This is against the CSSOM draft spec:\\n\\t\\t// https://drafts.csswg.org/cssom/#resolved-values\\n\\t\\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\\n\\n\\t\\t\\t// Remember the original values\\n\\t\\t\\twidth = style.width;\\n\\t\\t\\tminWidth = style.minWidth;\\n\\t\\t\\tmaxWidth = style.maxWidth;\\n\\n\\t\\t\\t// Put in the new values to get a computed value out\\n\\t\\t\\tstyle.minWidth = style.maxWidth = style.width = ret;\\n\\t\\t\\tret = computed.width;\\n\\n\\t\\t\\t// Revert the changed values\\n\\t\\t\\tstyle.width = width;\\n\\t\\t\\tstyle.minWidth = minWidth;\\n\\t\\t\\tstyle.maxWidth = maxWidth;\\n\\t\\t}\\n\\t}\\n\\n\\treturn ret !== undefined ?\\n\\n\\t\\t// Support: IE <=9 - 11 only\\n\\t\\t// IE returns zIndex value as an integer.\\n\\t\\tret + \\\\\\\"\\\\\\\" :\\n\\t\\tret;\\n}\\n\\n\\nfunction addGetHookIf( conditionFn, hookFn ) {\\n\\n\\t// Define the hook, we'll check on the first run if it's really needed.\\n\\treturn {\\n\\t\\tget: function() {\\n\\t\\t\\tif ( conditionFn() ) {\\n\\n\\t\\t\\t\\t// Hook not needed (or it's not possible to use it due\\n\\t\\t\\t\\t// to missing dependency), remove it.\\n\\t\\t\\t\\tdelete this.get;\\n\\t\\t\\t\\treturn;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Hook needed; redefine it so that the support test is not executed again.\\n\\t\\t\\treturn ( this.get = hookFn ).apply( this, arguments );\\n\\t\\t}\\n\\t};\\n}\\n\\n\\nvar cssPrefixes = [ \\\\\\\"Webkit\\\\\\\", \\\\\\\"Moz\\\\\\\", \\\\\\\"ms\\\\\\\" ],\\n\\temptyStyle = document.createElement( \\\\\\\"div\\\\\\\" ).style,\\n\\tvendorProps = {};\\n\\n// Return a vendor-prefixed property or undefined\\nfunction vendorPropName( name ) {\\n\\n\\t// Check for vendor prefixed names\\n\\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\\n\\t\\ti = cssPrefixes.length;\\n\\n\\twhile ( i-- ) {\\n\\t\\tname = cssPrefixes[ i ] + capName;\\n\\t\\tif ( name in emptyStyle ) {\\n\\t\\t\\treturn name;\\n\\t\\t}\\n\\t}\\n}\\n\\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\\nfunction finalPropName( name ) {\\n\\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\\n\\n\\tif ( final ) {\\n\\t\\treturn final;\\n\\t}\\n\\tif ( name in emptyStyle ) {\\n\\t\\treturn name;\\n\\t}\\n\\treturn vendorProps[ name ] = vendorPropName( name ) || name;\\n}\\n\\n\\nvar\\n\\n\\t// Swappable if display is none or starts with table\\n\\t// except \\\\\\\"table\\\\\\\", \\\\\\\"table-cell\\\\\\\", or \\\\\\\"table-caption\\\\\\\"\\n\\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\\n\\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\\n\\trcustomProp = /^--/,\\n\\tcssShow = { position: \\\\\\\"absolute\\\\\\\", visibility: \\\\\\\"hidden\\\\\\\", display: \\\\\\\"block\\\\\\\" },\\n\\tcssNormalTransform = {\\n\\t\\tletterSpacing: \\\\\\\"0\\\\\\\",\\n\\t\\tfontWeight: \\\\\\\"400\\\\\\\"\\n\\t};\\n\\nfunction setPositiveNumber( _elem, value, subtract ) {\\n\\n\\t// Any relative (+/-) values have already been\\n\\t// normalized at this point\\n\\tvar matches = rcssNum.exec( value );\\n\\treturn matches ?\\n\\n\\t\\t// Guard against undefined \\\\\\\"subtract\\\\\\\", e.g., when used as in cssHooks\\n\\t\\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \\\\\\\"px\\\\\\\" ) :\\n\\t\\tvalue;\\n}\\n\\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\\n\\tvar i = dimension === \\\\\\\"width\\\\\\\" ? 1 : 0,\\n\\t\\textra = 0,\\n\\t\\tdelta = 0;\\n\\n\\t// Adjustment may not be necessary\\n\\tif ( box === ( isBorderBox ? \\\\\\\"border\\\\\\\" : \\\\\\\"content\\\\\\\" ) ) {\\n\\t\\treturn 0;\\n\\t}\\n\\n\\tfor ( ; i < 4; i += 2 ) {\\n\\n\\t\\t// Both box models exclude margin\\n\\t\\tif ( box === \\\\\\\"margin\\\\\\\" ) {\\n\\t\\t\\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\\n\\t\\t}\\n\\n\\t\\t// If we get here with a content-box, we're seeking \\\\\\\"padding\\\\\\\" or \\\\\\\"border\\\\\\\" or \\\\\\\"margin\\\\\\\"\\n\\t\\tif ( !isBorderBox ) {\\n\\n\\t\\t\\t// Add padding\\n\\t\\t\\tdelta += jQuery.css( elem, \\\\\\\"padding\\\\\\\" + cssExpand[ i ], true, styles );\\n\\n\\t\\t\\t// For \\\\\\\"border\\\\\\\" or \\\\\\\"margin\\\\\\\", add border\\n\\t\\t\\tif ( box !== \\\\\\\"padding\\\\\\\" ) {\\n\\t\\t\\t\\tdelta += jQuery.css( elem, \\\\\\\"border\\\\\\\" + cssExpand[ i ] + \\\\\\\"Width\\\\\\\", true, styles );\\n\\n\\t\\t\\t// But still keep track of it otherwise\\n\\t\\t\\t} else {\\n\\t\\t\\t\\textra += jQuery.css( elem, \\\\\\\"border\\\\\\\" + cssExpand[ i ] + \\\\\\\"Width\\\\\\\", true, styles );\\n\\t\\t\\t}\\n\\n\\t\\t// If we get here with a border-box (content + padding + border), we're seeking \\\\\\\"content\\\\\\\" or\\n\\t\\t// \\\\\\\"padding\\\\\\\" or \\\\\\\"margin\\\\\\\"\\n\\t\\t} else {\\n\\n\\t\\t\\t// For \\\\\\\"content\\\\\\\", subtract padding\\n\\t\\t\\tif ( box === \\\\\\\"content\\\\\\\" ) {\\n\\t\\t\\t\\tdelta -= jQuery.css( elem, \\\\\\\"padding\\\\\\\" + cssExpand[ i ], true, styles );\\n\\t\\t\\t}\\n\\n\\t\\t\\t// For \\\\\\\"content\\\\\\\" or \\\\\\\"padding\\\\\\\", subtract border\\n\\t\\t\\tif ( box !== \\\\\\\"margin\\\\\\\" ) {\\n\\t\\t\\t\\tdelta -= jQuery.css( elem, \\\\\\\"border\\\\\\\" + cssExpand[ i ] + \\\\\\\"Width\\\\\\\", true, styles );\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t// Account for positive content-box scroll gutter when requested by providing computedVal\\n\\tif ( !isBorderBox && computedVal >= 0 ) {\\n\\n\\t\\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\\n\\t\\t// Assuming integer scroll gutter, subtract the rest and round down\\n\\t\\tdelta += Math.max( 0, Math.ceil(\\n\\t\\t\\telem[ \\\\\\\"offset\\\\\\\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\\n\\t\\t\\tcomputedVal -\\n\\t\\t\\tdelta -\\n\\t\\t\\textra -\\n\\t\\t\\t0.5\\n\\n\\t\\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\\n\\t\\t// Use an explicit zero to avoid NaN (gh-3964)\\n\\t\\t) ) || 0;\\n\\t}\\n\\n\\treturn delta;\\n}\\n\\nfunction getWidthOrHeight( elem, dimension, extra ) {\\n\\n\\t// Start with computed style\\n\\tvar styles = getStyles( elem ),\\n\\n\\t\\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\\n\\t\\t// Fake content-box until we know it's needed to know the true value.\\n\\t\\tboxSizingNeeded = !support.boxSizingReliable() || extra,\\n\\t\\tisBorderBox = boxSizingNeeded &&\\n\\t\\t\\tjQuery.css( elem, \\\\\\\"boxSizing\\\\\\\", false, styles ) === \\\\\\\"border-box\\\\\\\",\\n\\t\\tvalueIsBorderBox = isBorderBox,\\n\\n\\t\\tval = curCSS( elem, dimension, styles ),\\n\\t\\toffsetProp = \\\\\\\"offset\\\\\\\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\\n\\n\\t// Support: Firefox <=54\\n\\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\\n\\tif ( rnumnonpx.test( val ) ) {\\n\\t\\tif ( !extra ) {\\n\\t\\t\\treturn val;\\n\\t\\t}\\n\\t\\tval = \\\\\\\"auto\\\\\\\";\\n\\t}\\n\\n\\n\\t// Support: IE 9 - 11 only\\n\\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\\n\\t// In those cases, the computed value can be trusted to be border-box.\\n\\tif ( ( !support.boxSizingReliable() && isBorderBox ||\\n\\n\\t\\t// Support: IE 10 - 11+, Edge 15 - 18+\\n\\t\\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\\n\\t\\t// set in CSS while `offset*` properties report correct values.\\n\\t\\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\\n\\t\\t!support.reliableTrDimensions() && nodeName( elem, \\\\\\\"tr\\\\\\\" ) ||\\n\\n\\t\\t// Fall back to offsetWidth/offsetHeight when value is \\\\\\\"auto\\\\\\\"\\n\\t\\t// This happens for inline elements with no explicit setting (gh-3571)\\n\\t\\tval === \\\\\\\"auto\\\\\\\" ||\\n\\n\\t\\t// Support: Android <=4.1 - 4.3 only\\n\\t\\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\\n\\t\\t!parseFloat( val ) && jQuery.css( elem, \\\\\\\"display\\\\\\\", false, styles ) === \\\\\\\"inline\\\\\\\" ) &&\\n\\n\\t\\t// Make sure the element is visible & connected\\n\\t\\telem.getClientRects().length ) {\\n\\n\\t\\tisBorderBox = jQuery.css( elem, \\\\\\\"boxSizing\\\\\\\", false, styles ) === \\\\\\\"border-box\\\\\\\";\\n\\n\\t\\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\\n\\t\\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\\n\\t\\t// retrieved value as a content box dimension.\\n\\t\\tvalueIsBorderBox = offsetProp in elem;\\n\\t\\tif ( valueIsBorderBox ) {\\n\\t\\t\\tval = elem[ offsetProp ];\\n\\t\\t}\\n\\t}\\n\\n\\t// Normalize \\\\\\\"\\\\\\\" and auto\\n\\tval = parseFloat( val ) || 0;\\n\\n\\t// Adjust for the element's box model\\n\\treturn ( val +\\n\\t\\tboxModelAdjustment(\\n\\t\\t\\telem,\\n\\t\\t\\tdimension,\\n\\t\\t\\textra || ( isBorderBox ? \\\\\\\"border\\\\\\\" : \\\\\\\"content\\\\\\\" ),\\n\\t\\t\\tvalueIsBorderBox,\\n\\t\\t\\tstyles,\\n\\n\\t\\t\\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\\n\\t\\t\\tval\\n\\t\\t)\\n\\t) + \\\\\\\"px\\\\\\\";\\n}\\n\\njQuery.extend( {\\n\\n\\t// Add in style property hooks for overriding the default\\n\\t// behavior of getting and setting a style property\\n\\tcssHooks: {\\n\\t\\topacity: {\\n\\t\\t\\tget: function( elem, computed ) {\\n\\t\\t\\t\\tif ( computed ) {\\n\\n\\t\\t\\t\\t\\t// We should always get a number back from opacity\\n\\t\\t\\t\\t\\tvar ret = curCSS( elem, \\\\\\\"opacity\\\\\\\" );\\n\\t\\t\\t\\t\\treturn ret === \\\\\\\"\\\\\\\" ? \\\\\\\"1\\\\\\\" : ret;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t},\\n\\n\\t// Don't automatically add \\\\\\\"px\\\\\\\" to these possibly-unitless properties\\n\\tcssNumber: {\\n\\t\\t\\\\\\\"animationIterationCount\\\\\\\": true,\\n\\t\\t\\\\\\\"columnCount\\\\\\\": true,\\n\\t\\t\\\\\\\"fillOpacity\\\\\\\": true,\\n\\t\\t\\\\\\\"flexGrow\\\\\\\": true,\\n\\t\\t\\\\\\\"flexShrink\\\\\\\": true,\\n\\t\\t\\\\\\\"fontWeight\\\\\\\": true,\\n\\t\\t\\\\\\\"gridArea\\\\\\\": true,\\n\\t\\t\\\\\\\"gridColumn\\\\\\\": true,\\n\\t\\t\\\\\\\"gridColumnEnd\\\\\\\": true,\\n\\t\\t\\\\\\\"gridColumnStart\\\\\\\": true,\\n\\t\\t\\\\\\\"gridRow\\\\\\\": true,\\n\\t\\t\\\\\\\"gridRowEnd\\\\\\\": true,\\n\\t\\t\\\\\\\"gridRowStart\\\\\\\": true,\\n\\t\\t\\\\\\\"lineHeight\\\\\\\": true,\\n\\t\\t\\\\\\\"opacity\\\\\\\": true,\\n\\t\\t\\\\\\\"order\\\\\\\": true,\\n\\t\\t\\\\\\\"orphans\\\\\\\": true,\\n\\t\\t\\\\\\\"widows\\\\\\\": true,\\n\\t\\t\\\\\\\"zIndex\\\\\\\": true,\\n\\t\\t\\\\\\\"zoom\\\\\\\": true\\n\\t},\\n\\n\\t// Add in properties whose names you wish to fix before\\n\\t// setting or getting the value\\n\\tcssProps: {},\\n\\n\\t// Get and set the style property on a DOM Node\\n\\tstyle: function( elem, name, value, extra ) {\\n\\n\\t\\t// Don't set styles on text and comment nodes\\n\\t\\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\n\\t\\t// Make sure that we're working with the right name\\n\\t\\tvar ret, type, hooks,\\n\\t\\t\\torigName = camelCase( name ),\\n\\t\\t\\tisCustomProp = rcustomProp.test( name ),\\n\\t\\t\\tstyle = elem.style;\\n\\n\\t\\t// Make sure that we're working with the right name. We don't\\n\\t\\t// want to query the value if it is a CSS custom property\\n\\t\\t// since they are user-defined.\\n\\t\\tif ( !isCustomProp ) {\\n\\t\\t\\tname = finalPropName( origName );\\n\\t\\t}\\n\\n\\t\\t// Gets hook for the prefixed version, then unprefixed version\\n\\t\\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\\n\\n\\t\\t// Check if we're setting a value\\n\\t\\tif ( value !== undefined ) {\\n\\t\\t\\ttype = typeof value;\\n\\n\\t\\t\\t// Convert \\\\\\\"+=\\\\\\\" or \\\\\\\"-=\\\\\\\" to relative numbers (#7345)\\n\\t\\t\\tif ( type === \\\\\\\"string\\\\\\\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\\n\\t\\t\\t\\tvalue = adjustCSS( elem, name, ret );\\n\\n\\t\\t\\t\\t// Fixes bug #9237\\n\\t\\t\\t\\ttype = \\\\\\\"number\\\\\\\";\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Make sure that null and NaN values aren't set (#7116)\\n\\t\\t\\tif ( value == null || value !== value ) {\\n\\t\\t\\t\\treturn;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// If a number was passed in, add the unit (except for certain CSS properties)\\n\\t\\t\\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\\n\\t\\t\\t// \\\\\\\"px\\\\\\\" to a few hardcoded values.\\n\\t\\t\\tif ( type === \\\\\\\"number\\\\\\\" && !isCustomProp ) {\\n\\t\\t\\t\\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \\\\\\\"\\\\\\\" : \\\\\\\"px\\\\\\\" );\\n\\t\\t\\t}\\n\\n\\t\\t\\t// background-* props affect original clone's values\\n\\t\\t\\tif ( !support.clearCloneStyle && value === \\\\\\\"\\\\\\\" && name.indexOf( \\\\\\\"background\\\\\\\" ) === 0 ) {\\n\\t\\t\\t\\tstyle[ name ] = \\\\\\\"inherit\\\\\\\";\\n\\t\\t\\t}\\n\\n\\t\\t\\t// If a hook was provided, use that value, otherwise just set the specified value\\n\\t\\t\\tif ( !hooks || !( \\\\\\\"set\\\\\\\" in hooks ) ||\\n\\t\\t\\t\\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\\n\\n\\t\\t\\t\\tif ( isCustomProp ) {\\n\\t\\t\\t\\t\\tstyle.setProperty( name, value );\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tstyle[ name ] = value;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t} else {\\n\\n\\t\\t\\t// If a hook was provided get the non-computed value from there\\n\\t\\t\\tif ( hooks && \\\\\\\"get\\\\\\\" in hooks &&\\n\\t\\t\\t\\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\\n\\n\\t\\t\\t\\treturn ret;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Otherwise just get the value from the style object\\n\\t\\t\\treturn style[ name ];\\n\\t\\t}\\n\\t},\\n\\n\\tcss: function( elem, name, extra, styles ) {\\n\\t\\tvar val, num, hooks,\\n\\t\\t\\torigName = camelCase( name ),\\n\\t\\t\\tisCustomProp = rcustomProp.test( name );\\n\\n\\t\\t// Make sure that we're working with the right name. We don't\\n\\t\\t// want to modify the value if it is a CSS custom property\\n\\t\\t// since they are user-defined.\\n\\t\\tif ( !isCustomProp ) {\\n\\t\\t\\tname = finalPropName( origName );\\n\\t\\t}\\n\\n\\t\\t// Try prefixed name followed by the unprefixed name\\n\\t\\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\\n\\n\\t\\t// If a hook was provided get the computed value from there\\n\\t\\tif ( hooks && \\\\\\\"get\\\\\\\" in hooks ) {\\n\\t\\t\\tval = hooks.get( elem, true, extra );\\n\\t\\t}\\n\\n\\t\\t// Otherwise, if a way to get the computed value exists, use that\\n\\t\\tif ( val === undefined ) {\\n\\t\\t\\tval = curCSS( elem, name, styles );\\n\\t\\t}\\n\\n\\t\\t// Convert \\\\\\\"normal\\\\\\\" to computed value\\n\\t\\tif ( val === \\\\\\\"normal\\\\\\\" && name in cssNormalTransform ) {\\n\\t\\t\\tval = cssNormalTransform[ name ];\\n\\t\\t}\\n\\n\\t\\t// Make numeric if forced or a qualifier was provided and val looks numeric\\n\\t\\tif ( extra === \\\\\\\"\\\\\\\" || extra ) {\\n\\t\\t\\tnum = parseFloat( val );\\n\\t\\t\\treturn extra === true || isFinite( num ) ? num || 0 : val;\\n\\t\\t}\\n\\n\\t\\treturn val;\\n\\t}\\n} );\\n\\njQuery.each( [ \\\\\\\"height\\\\\\\", \\\\\\\"width\\\\\\\" ], function( _i, dimension ) {\\n\\tjQuery.cssHooks[ dimension ] = {\\n\\t\\tget: function( elem, computed, extra ) {\\n\\t\\t\\tif ( computed ) {\\n\\n\\t\\t\\t\\t// Certain elements can have dimension info if we invisibly show them\\n\\t\\t\\t\\t// but it must have a current display style that would benefit\\n\\t\\t\\t\\treturn rdisplayswap.test( jQuery.css( elem, \\\\\\\"display\\\\\\\" ) ) &&\\n\\n\\t\\t\\t\\t\\t// Support: Safari 8+\\n\\t\\t\\t\\t\\t// Table columns in Safari have non-zero offsetWidth & zero\\n\\t\\t\\t\\t\\t// getBoundingClientRect().width unless display is changed.\\n\\t\\t\\t\\t\\t// Support: IE <=11 only\\n\\t\\t\\t\\t\\t// Running getBoundingClientRect on a disconnected node\\n\\t\\t\\t\\t\\t// in IE throws an error.\\n\\t\\t\\t\\t\\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\\n\\t\\t\\t\\t\\t\\tswap( elem, cssShow, function() {\\n\\t\\t\\t\\t\\t\\t\\treturn getWidthOrHeight( elem, dimension, extra );\\n\\t\\t\\t\\t\\t\\t} ) :\\n\\t\\t\\t\\t\\t\\tgetWidthOrHeight( elem, dimension, extra );\\n\\t\\t\\t}\\n\\t\\t},\\n\\n\\t\\tset: function( elem, value, extra ) {\\n\\t\\t\\tvar matches,\\n\\t\\t\\t\\tstyles = getStyles( elem ),\\n\\n\\t\\t\\t\\t// Only read styles.position if the test has a chance to fail\\n\\t\\t\\t\\t// to avoid forcing a reflow.\\n\\t\\t\\t\\tscrollboxSizeBuggy = !support.scrollboxSize() &&\\n\\t\\t\\t\\t\\tstyles.position === \\\\\\\"absolute\\\\\\\",\\n\\n\\t\\t\\t\\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\\n\\t\\t\\t\\tboxSizingNeeded = scrollboxSizeBuggy || extra,\\n\\t\\t\\t\\tisBorderBox = boxSizingNeeded &&\\n\\t\\t\\t\\t\\tjQuery.css( elem, \\\\\\\"boxSizing\\\\\\\", false, styles ) === \\\\\\\"border-box\\\\\\\",\\n\\t\\t\\t\\tsubtract = extra ?\\n\\t\\t\\t\\t\\tboxModelAdjustment(\\n\\t\\t\\t\\t\\t\\telem,\\n\\t\\t\\t\\t\\t\\tdimension,\\n\\t\\t\\t\\t\\t\\textra,\\n\\t\\t\\t\\t\\t\\tisBorderBox,\\n\\t\\t\\t\\t\\t\\tstyles\\n\\t\\t\\t\\t\\t) :\\n\\t\\t\\t\\t\\t0;\\n\\n\\t\\t\\t// Account for unreliable border-box dimensions by comparing offset* to computed and\\n\\t\\t\\t// faking a content-box to get border and padding (gh-3699)\\n\\t\\t\\tif ( isBorderBox && scrollboxSizeBuggy ) {\\n\\t\\t\\t\\tsubtract -= Math.ceil(\\n\\t\\t\\t\\t\\telem[ \\\\\\\"offset\\\\\\\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\\n\\t\\t\\t\\t\\tparseFloat( styles[ dimension ] ) -\\n\\t\\t\\t\\t\\tboxModelAdjustment( elem, dimension, \\\\\\\"border\\\\\\\", false, styles ) -\\n\\t\\t\\t\\t\\t0.5\\n\\t\\t\\t\\t);\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Convert to pixels if value adjustment is needed\\n\\t\\t\\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\\n\\t\\t\\t\\t( matches[ 3 ] || \\\\\\\"px\\\\\\\" ) !== \\\\\\\"px\\\\\\\" ) {\\n\\n\\t\\t\\t\\telem.style[ dimension ] = value;\\n\\t\\t\\t\\tvalue = jQuery.css( elem, dimension );\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn setPositiveNumber( elem, value, subtract );\\n\\t\\t}\\n\\t};\\n} );\\n\\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\\n\\tfunction( elem, computed ) {\\n\\t\\tif ( computed ) {\\n\\t\\t\\treturn ( parseFloat( curCSS( elem, \\\\\\\"marginLeft\\\\\\\" ) ) ||\\n\\t\\t\\t\\telem.getBoundingClientRect().left -\\n\\t\\t\\t\\t\\tswap( elem, { marginLeft: 0 }, function() {\\n\\t\\t\\t\\t\\t\\treturn elem.getBoundingClientRect().left;\\n\\t\\t\\t\\t\\t} )\\n\\t\\t\\t\\t) + \\\\\\\"px\\\\\\\";\\n\\t\\t}\\n\\t}\\n);\\n\\n// These hooks are used by animate to expand properties\\njQuery.each( {\\n\\tmargin: \\\\\\\"\\\\\\\",\\n\\tpadding: \\\\\\\"\\\\\\\",\\n\\tborder: \\\\\\\"Width\\\\\\\"\\n}, function( prefix, suffix ) {\\n\\tjQuery.cssHooks[ prefix + suffix ] = {\\n\\t\\texpand: function( value ) {\\n\\t\\t\\tvar i = 0,\\n\\t\\t\\t\\texpanded = {},\\n\\n\\t\\t\\t\\t// Assumes a single number if not a string\\n\\t\\t\\t\\tparts = typeof value === \\\\\\\"string\\\\\\\" ? value.split( \\\\\\\" \\\\\\\" ) : [ value ];\\n\\n\\t\\t\\tfor ( ; i < 4; i++ ) {\\n\\t\\t\\t\\texpanded[ prefix + cssExpand[ i ] + suffix ] =\\n\\t\\t\\t\\t\\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn expanded;\\n\\t\\t}\\n\\t};\\n\\n\\tif ( prefix !== \\\\\\\"margin\\\\\\\" ) {\\n\\t\\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\\n\\t}\\n} );\\n\\njQuery.fn.extend( {\\n\\tcss: function( name, value ) {\\n\\t\\treturn access( this, function( elem, name, value ) {\\n\\t\\t\\tvar styles, len,\\n\\t\\t\\t\\tmap = {},\\n\\t\\t\\t\\ti = 0;\\n\\n\\t\\t\\tif ( Array.isArray( name ) ) {\\n\\t\\t\\t\\tstyles = getStyles( elem );\\n\\t\\t\\t\\tlen = name.length;\\n\\n\\t\\t\\t\\tfor ( ; i < len; i++ ) {\\n\\t\\t\\t\\t\\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\treturn map;\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn value !== undefined ?\\n\\t\\t\\t\\tjQuery.style( elem, name, value ) :\\n\\t\\t\\t\\tjQuery.css( elem, name );\\n\\t\\t}, name, value, arguments.length > 1 );\\n\\t}\\n} );\\n\\n\\nfunction Tween( elem, options, prop, end, easing ) {\\n\\treturn new Tween.prototype.init( elem, options, prop, end, easing );\\n}\\njQuery.Tween = Tween;\\n\\nTween.prototype = {\\n\\tconstructor: Tween,\\n\\tinit: function( elem, options, prop, end, easing, unit ) {\\n\\t\\tthis.elem = elem;\\n\\t\\tthis.prop = prop;\\n\\t\\tthis.easing = easing || jQuery.easing._default;\\n\\t\\tthis.options = options;\\n\\t\\tthis.start = this.now = this.cur();\\n\\t\\tthis.end = end;\\n\\t\\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \\\\\\\"\\\\\\\" : \\\\\\\"px\\\\\\\" );\\n\\t},\\n\\tcur: function() {\\n\\t\\tvar hooks = Tween.propHooks[ this.prop ];\\n\\n\\t\\treturn hooks && hooks.get ?\\n\\t\\t\\thooks.get( this ) :\\n\\t\\t\\tTween.propHooks._default.get( this );\\n\\t},\\n\\trun: function( percent ) {\\n\\t\\tvar eased,\\n\\t\\t\\thooks = Tween.propHooks[ this.prop ];\\n\\n\\t\\tif ( this.options.duration ) {\\n\\t\\t\\tthis.pos = eased = jQuery.easing[ this.easing ](\\n\\t\\t\\t\\tpercent, this.options.duration * percent, 0, 1, this.options.duration\\n\\t\\t\\t);\\n\\t\\t} else {\\n\\t\\t\\tthis.pos = eased = percent;\\n\\t\\t}\\n\\t\\tthis.now = ( this.end - this.start ) * eased + this.start;\\n\\n\\t\\tif ( this.options.step ) {\\n\\t\\t\\tthis.options.step.call( this.elem, this.now, this );\\n\\t\\t}\\n\\n\\t\\tif ( hooks && hooks.set ) {\\n\\t\\t\\thooks.set( this );\\n\\t\\t} else {\\n\\t\\t\\tTween.propHooks._default.set( this );\\n\\t\\t}\\n\\t\\treturn this;\\n\\t}\\n};\\n\\nTween.prototype.init.prototype = Tween.prototype;\\n\\nTween.propHooks = {\\n\\t_default: {\\n\\t\\tget: function( tween ) {\\n\\t\\t\\tvar result;\\n\\n\\t\\t\\t// Use a property on the element directly when it is not a DOM element,\\n\\t\\t\\t// or when there is no matching style property that exists.\\n\\t\\t\\tif ( tween.elem.nodeType !== 1 ||\\n\\t\\t\\t\\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\\n\\t\\t\\t\\treturn tween.elem[ tween.prop ];\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Passing an empty string as a 3rd parameter to .css will automatically\\n\\t\\t\\t// attempt a parseFloat and fallback to a string if the parse fails.\\n\\t\\t\\t// Simple values such as \\\\\\\"10px\\\\\\\" are parsed to Float;\\n\\t\\t\\t// complex values such as \\\\\\\"rotate(1rad)\\\\\\\" are returned as-is.\\n\\t\\t\\tresult = jQuery.css( tween.elem, tween.prop, \\\\\\\"\\\\\\\" );\\n\\n\\t\\t\\t// Empty strings, null, undefined and \\\\\\\"auto\\\\\\\" are converted to 0.\\n\\t\\t\\treturn !result || result === \\\\\\\"auto\\\\\\\" ? 0 : result;\\n\\t\\t},\\n\\t\\tset: function( tween ) {\\n\\n\\t\\t\\t// Use step hook for back compat.\\n\\t\\t\\t// Use cssHook if its there.\\n\\t\\t\\t// Use .style if available and use plain properties where available.\\n\\t\\t\\tif ( jQuery.fx.step[ tween.prop ] ) {\\n\\t\\t\\t\\tjQuery.fx.step[ tween.prop ]( tween );\\n\\t\\t\\t} else if ( tween.elem.nodeType === 1 && (\\n\\t\\t\\t\\t\\tjQuery.cssHooks[ tween.prop ] ||\\n\\t\\t\\t\\t\\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\\n\\t\\t\\t\\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\\n\\t\\t\\t} else {\\n\\t\\t\\t\\ttween.elem[ tween.prop ] = tween.now;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n};\\n\\n// Support: IE <=9 only\\n// Panic based approach to setting things on disconnected nodes\\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\\n\\tset: function( tween ) {\\n\\t\\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\\n\\t\\t\\ttween.elem[ tween.prop ] = tween.now;\\n\\t\\t}\\n\\t}\\n};\\n\\njQuery.easing = {\\n\\tlinear: function( p ) {\\n\\t\\treturn p;\\n\\t},\\n\\tswing: function( p ) {\\n\\t\\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\\n\\t},\\n\\t_default: \\\\\\\"swing\\\\\\\"\\n};\\n\\njQuery.fx = Tween.prototype.init;\\n\\n// Back compat <1.8 extension point\\njQuery.fx.step = {};\\n\\n\\n\\n\\nvar\\n\\tfxNow, inProgress,\\n\\trfxtypes = /^(?:toggle|show|hide)$/,\\n\\trrun = /queueHooks$/;\\n\\nfunction schedule() {\\n\\tif ( inProgress ) {\\n\\t\\tif ( document.hidden === false && window.requestAnimationFrame ) {\\n\\t\\t\\twindow.requestAnimationFrame( schedule );\\n\\t\\t} else {\\n\\t\\t\\twindow.setTimeout( schedule, jQuery.fx.interval );\\n\\t\\t}\\n\\n\\t\\tjQuery.fx.tick();\\n\\t}\\n}\\n\\n// Animations created synchronously will run synchronously\\nfunction createFxNow() {\\n\\twindow.setTimeout( function() {\\n\\t\\tfxNow = undefined;\\n\\t} );\\n\\treturn ( fxNow = Date.now() );\\n}\\n\\n// Generate parameters to create a standard animation\\nfunction genFx( type, includeWidth ) {\\n\\tvar which,\\n\\t\\ti = 0,\\n\\t\\tattrs = { height: type };\\n\\n\\t// If we include width, step value is 1 to do all cssExpand values,\\n\\t// otherwise step value is 2 to skip over Left and Right\\n\\tincludeWidth = includeWidth ? 1 : 0;\\n\\tfor ( ; i < 4; i += 2 - includeWidth ) {\\n\\t\\twhich = cssExpand[ i ];\\n\\t\\tattrs[ \\\\\\\"margin\\\\\\\" + which ] = attrs[ \\\\\\\"padding\\\\\\\" + which ] = type;\\n\\t}\\n\\n\\tif ( includeWidth ) {\\n\\t\\tattrs.opacity = attrs.width = type;\\n\\t}\\n\\n\\treturn attrs;\\n}\\n\\nfunction createTween( value, prop, animation ) {\\n\\tvar tween,\\n\\t\\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \\\\\\\"*\\\\\\\" ] ),\\n\\t\\tindex = 0,\\n\\t\\tlength = collection.length;\\n\\tfor ( ; index < length; index++ ) {\\n\\t\\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\\n\\n\\t\\t\\t// We're done with this property\\n\\t\\t\\treturn tween;\\n\\t\\t}\\n\\t}\\n}\\n\\nfunction defaultPrefilter( elem, props, opts ) {\\n\\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\\n\\t\\tisBox = \\\\\\\"width\\\\\\\" in props || \\\\\\\"height\\\\\\\" in props,\\n\\t\\tanim = this,\\n\\t\\torig = {},\\n\\t\\tstyle = elem.style,\\n\\t\\thidden = elem.nodeType && isHiddenWithinTree( elem ),\\n\\t\\tdataShow = dataPriv.get( elem, \\\\\\\"fxshow\\\\\\\" );\\n\\n\\t// Queue-skipping animations hijack the fx hooks\\n\\tif ( !opts.queue ) {\\n\\t\\thooks = jQuery._queueHooks( elem, \\\\\\\"fx\\\\\\\" );\\n\\t\\tif ( hooks.unqueued == null ) {\\n\\t\\t\\thooks.unqueued = 0;\\n\\t\\t\\toldfire = hooks.empty.fire;\\n\\t\\t\\thooks.empty.fire = function() {\\n\\t\\t\\t\\tif ( !hooks.unqueued ) {\\n\\t\\t\\t\\t\\toldfire();\\n\\t\\t\\t\\t}\\n\\t\\t\\t};\\n\\t\\t}\\n\\t\\thooks.unqueued++;\\n\\n\\t\\tanim.always( function() {\\n\\n\\t\\t\\t// Ensure the complete handler is called before this completes\\n\\t\\t\\tanim.always( function() {\\n\\t\\t\\t\\thooks.unqueued--;\\n\\t\\t\\t\\tif ( !jQuery.queue( elem, \\\\\\\"fx\\\\\\\" ).length ) {\\n\\t\\t\\t\\t\\thooks.empty.fire();\\n\\t\\t\\t\\t}\\n\\t\\t\\t} );\\n\\t\\t} );\\n\\t}\\n\\n\\t// Detect show/hide animations\\n\\tfor ( prop in props ) {\\n\\t\\tvalue = props[ prop ];\\n\\t\\tif ( rfxtypes.test( value ) ) {\\n\\t\\t\\tdelete props[ prop ];\\n\\t\\t\\ttoggle = toggle || value === \\\\\\\"toggle\\\\\\\";\\n\\t\\t\\tif ( value === ( hidden ? \\\\\\\"hide\\\\\\\" : \\\\\\\"show\\\\\\\" ) ) {\\n\\n\\t\\t\\t\\t// Pretend to be hidden if this is a \\\\\\\"show\\\\\\\" and\\n\\t\\t\\t\\t// there is still data from a stopped show/hide\\n\\t\\t\\t\\tif ( value === \\\\\\\"show\\\\\\\" && dataShow && dataShow[ prop ] !== undefined ) {\\n\\t\\t\\t\\t\\thidden = true;\\n\\n\\t\\t\\t\\t// Ignore all other no-op show/hide data\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tcontinue;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\\n\\t\\t}\\n\\t}\\n\\n\\t// Bail out if this is a no-op like .hide().hide()\\n\\tpropTween = !jQuery.isEmptyObject( props );\\n\\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\\n\\t\\treturn;\\n\\t}\\n\\n\\t// Restrict \\\\\\\"overflow\\\\\\\" and \\\\\\\"display\\\\\\\" styles during box animations\\n\\tif ( isBox && elem.nodeType === 1 ) {\\n\\n\\t\\t// Support: IE <=9 - 11, Edge 12 - 15\\n\\t\\t// Record all 3 overflow attributes because IE does not infer the shorthand\\n\\t\\t// from identically-valued overflowX and overflowY and Edge just mirrors\\n\\t\\t// the overflowX value there.\\n\\t\\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\\n\\n\\t\\t// Identify a display type, preferring old show/hide data over the CSS cascade\\n\\t\\trestoreDisplay = dataShow && dataShow.display;\\n\\t\\tif ( restoreDisplay == null ) {\\n\\t\\t\\trestoreDisplay = dataPriv.get( elem, \\\\\\\"display\\\\\\\" );\\n\\t\\t}\\n\\t\\tdisplay = jQuery.css( elem, \\\\\\\"display\\\\\\\" );\\n\\t\\tif ( display === \\\\\\\"none\\\\\\\" ) {\\n\\t\\t\\tif ( restoreDisplay ) {\\n\\t\\t\\t\\tdisplay = restoreDisplay;\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t// Get nonempty value(s) by temporarily forcing visibility\\n\\t\\t\\t\\tshowHide( [ elem ], true );\\n\\t\\t\\t\\trestoreDisplay = elem.style.display || restoreDisplay;\\n\\t\\t\\t\\tdisplay = jQuery.css( elem, \\\\\\\"display\\\\\\\" );\\n\\t\\t\\t\\tshowHide( [ elem ] );\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Animate inline elements as inline-block\\n\\t\\tif ( display === \\\\\\\"inline\\\\\\\" || display === \\\\\\\"inline-block\\\\\\\" && restoreDisplay != null ) {\\n\\t\\t\\tif ( jQuery.css( elem, \\\\\\\"float\\\\\\\" ) === \\\\\\\"none\\\\\\\" ) {\\n\\n\\t\\t\\t\\t// Restore the original display value at the end of pure show/hide animations\\n\\t\\t\\t\\tif ( !propTween ) {\\n\\t\\t\\t\\t\\tanim.done( function() {\\n\\t\\t\\t\\t\\t\\tstyle.display = restoreDisplay;\\n\\t\\t\\t\\t\\t} );\\n\\t\\t\\t\\t\\tif ( restoreDisplay == null ) {\\n\\t\\t\\t\\t\\t\\tdisplay = style.display;\\n\\t\\t\\t\\t\\t\\trestoreDisplay = display === \\\\\\\"none\\\\\\\" ? \\\\\\\"\\\\\\\" : display;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tstyle.display = \\\\\\\"inline-block\\\\\\\";\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\tif ( opts.overflow ) {\\n\\t\\tstyle.overflow = \\\\\\\"hidden\\\\\\\";\\n\\t\\tanim.always( function() {\\n\\t\\t\\tstyle.overflow = opts.overflow[ 0 ];\\n\\t\\t\\tstyle.overflowX = opts.overflow[ 1 ];\\n\\t\\t\\tstyle.overflowY = opts.overflow[ 2 ];\\n\\t\\t} );\\n\\t}\\n\\n\\t// Implement show/hide animations\\n\\tpropTween = false;\\n\\tfor ( prop in orig ) {\\n\\n\\t\\t// General show/hide setup for this element animation\\n\\t\\tif ( !propTween ) {\\n\\t\\t\\tif ( dataShow ) {\\n\\t\\t\\t\\tif ( \\\\\\\"hidden\\\\\\\" in dataShow ) {\\n\\t\\t\\t\\t\\thidden = dataShow.hidden;\\n\\t\\t\\t\\t}\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tdataShow = dataPriv.access( elem, \\\\\\\"fxshow\\\\\\\", { display: restoreDisplay } );\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Store hidden/visible for toggle so `.stop().toggle()` \\\\\\\"reverses\\\\\\\"\\n\\t\\t\\tif ( toggle ) {\\n\\t\\t\\t\\tdataShow.hidden = !hidden;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Show elements before animating them\\n\\t\\t\\tif ( hidden ) {\\n\\t\\t\\t\\tshowHide( [ elem ], true );\\n\\t\\t\\t}\\n\\n\\t\\t\\t/* eslint-disable no-loop-func */\\n\\n\\t\\t\\tanim.done( function() {\\n\\n\\t\\t\\t/* eslint-enable no-loop-func */\\n\\n\\t\\t\\t\\t// The final step of a \\\\\\\"hide\\\\\\\" animation is actually hiding the element\\n\\t\\t\\t\\tif ( !hidden ) {\\n\\t\\t\\t\\t\\tshowHide( [ elem ] );\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tdataPriv.remove( elem, \\\\\\\"fxshow\\\\\\\" );\\n\\t\\t\\t\\tfor ( prop in orig ) {\\n\\t\\t\\t\\t\\tjQuery.style( elem, prop, orig[ prop ] );\\n\\t\\t\\t\\t}\\n\\t\\t\\t} );\\n\\t\\t}\\n\\n\\t\\t// Per-property setup\\n\\t\\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\\n\\t\\tif ( !( prop in dataShow ) ) {\\n\\t\\t\\tdataShow[ prop ] = propTween.start;\\n\\t\\t\\tif ( hidden ) {\\n\\t\\t\\t\\tpropTween.end = propTween.start;\\n\\t\\t\\t\\tpropTween.start = 0;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\nfunction propFilter( props, specialEasing ) {\\n\\tvar index, name, easing, value, hooks;\\n\\n\\t// camelCase, specialEasing and expand cssHook pass\\n\\tfor ( index in props ) {\\n\\t\\tname = camelCase( index );\\n\\t\\teasing = specialEasing[ name ];\\n\\t\\tvalue = props[ index ];\\n\\t\\tif ( Array.isArray( value ) ) {\\n\\t\\t\\teasing = value[ 1 ];\\n\\t\\t\\tvalue = props[ index ] = value[ 0 ];\\n\\t\\t}\\n\\n\\t\\tif ( index !== name ) {\\n\\t\\t\\tprops[ name ] = value;\\n\\t\\t\\tdelete props[ index ];\\n\\t\\t}\\n\\n\\t\\thooks = jQuery.cssHooks[ name ];\\n\\t\\tif ( hooks && \\\\\\\"expand\\\\\\\" in hooks ) {\\n\\t\\t\\tvalue = hooks.expand( value );\\n\\t\\t\\tdelete props[ name ];\\n\\n\\t\\t\\t// Not quite $.extend, this won't overwrite existing keys.\\n\\t\\t\\t// Reusing 'index' because we have the correct \\\\\\\"name\\\\\\\"\\n\\t\\t\\tfor ( index in value ) {\\n\\t\\t\\t\\tif ( !( index in props ) ) {\\n\\t\\t\\t\\t\\tprops[ index ] = value[ index ];\\n\\t\\t\\t\\t\\tspecialEasing[ index ] = easing;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t} else {\\n\\t\\t\\tspecialEasing[ name ] = easing;\\n\\t\\t}\\n\\t}\\n}\\n\\nfunction Animation( elem, properties, options ) {\\n\\tvar result,\\n\\t\\tstopped,\\n\\t\\tindex = 0,\\n\\t\\tlength = Animation.prefilters.length,\\n\\t\\tdeferred = jQuery.Deferred().always( function() {\\n\\n\\t\\t\\t// Don't match elem in the :animated selector\\n\\t\\t\\tdelete tick.elem;\\n\\t\\t} ),\\n\\t\\ttick = function() {\\n\\t\\t\\tif ( stopped ) {\\n\\t\\t\\t\\treturn false;\\n\\t\\t\\t}\\n\\t\\t\\tvar currentTime = fxNow || createFxNow(),\\n\\t\\t\\t\\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\\n\\n\\t\\t\\t\\t// Support: Android 2.3 only\\n\\t\\t\\t\\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\\n\\t\\t\\t\\ttemp = remaining / animation.duration || 0,\\n\\t\\t\\t\\tpercent = 1 - temp,\\n\\t\\t\\t\\tindex = 0,\\n\\t\\t\\t\\tlength = animation.tweens.length;\\n\\n\\t\\t\\tfor ( ; index < length; index++ ) {\\n\\t\\t\\t\\tanimation.tweens[ index ].run( percent );\\n\\t\\t\\t}\\n\\n\\t\\t\\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\\n\\n\\t\\t\\t// If there's more to do, yield\\n\\t\\t\\tif ( percent < 1 && length ) {\\n\\t\\t\\t\\treturn remaining;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// If this was an empty animation, synthesize a final progress notification\\n\\t\\t\\tif ( !length ) {\\n\\t\\t\\t\\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Resolve the animation and report its conclusion\\n\\t\\t\\tdeferred.resolveWith( elem, [ animation ] );\\n\\t\\t\\treturn false;\\n\\t\\t},\\n\\t\\tanimation = deferred.promise( {\\n\\t\\t\\telem: elem,\\n\\t\\t\\tprops: jQuery.extend( {}, properties ),\\n\\t\\t\\topts: jQuery.extend( true, {\\n\\t\\t\\t\\tspecialEasing: {},\\n\\t\\t\\t\\teasing: jQuery.easing._default\\n\\t\\t\\t}, options ),\\n\\t\\t\\toriginalProperties: properties,\\n\\t\\t\\toriginalOptions: options,\\n\\t\\t\\tstartTime: fxNow || createFxNow(),\\n\\t\\t\\tduration: options.duration,\\n\\t\\t\\ttweens: [],\\n\\t\\t\\tcreateTween: function( prop, end ) {\\n\\t\\t\\t\\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\\n\\t\\t\\t\\t\\t\\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\\n\\t\\t\\t\\tanimation.tweens.push( tween );\\n\\t\\t\\t\\treturn tween;\\n\\t\\t\\t},\\n\\t\\t\\tstop: function( gotoEnd ) {\\n\\t\\t\\t\\tvar index = 0,\\n\\n\\t\\t\\t\\t\\t// If we are going to the end, we want to run all the tweens\\n\\t\\t\\t\\t\\t// otherwise we skip this part\\n\\t\\t\\t\\t\\tlength = gotoEnd ? animation.tweens.length : 0;\\n\\t\\t\\t\\tif ( stopped ) {\\n\\t\\t\\t\\t\\treturn this;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tstopped = true;\\n\\t\\t\\t\\tfor ( ; index < length; index++ ) {\\n\\t\\t\\t\\t\\tanimation.tweens[ index ].run( 1 );\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Resolve when we played the last frame; otherwise, reject\\n\\t\\t\\t\\tif ( gotoEnd ) {\\n\\t\\t\\t\\t\\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\\n\\t\\t\\t\\t\\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\treturn this;\\n\\t\\t\\t}\\n\\t\\t} ),\\n\\t\\tprops = animation.props;\\n\\n\\tpropFilter( props, animation.opts.specialEasing );\\n\\n\\tfor ( ; index < length; index++ ) {\\n\\t\\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\\n\\t\\tif ( result ) {\\n\\t\\t\\tif ( isFunction( result.stop ) ) {\\n\\t\\t\\t\\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\\n\\t\\t\\t\\t\\tresult.stop.bind( result );\\n\\t\\t\\t}\\n\\t\\t\\treturn result;\\n\\t\\t}\\n\\t}\\n\\n\\tjQuery.map( props, createTween, animation );\\n\\n\\tif ( isFunction( animation.opts.start ) ) {\\n\\t\\tanimation.opts.start.call( elem, animation );\\n\\t}\\n\\n\\t// Attach callbacks from options\\n\\tanimation\\n\\t\\t.progress( animation.opts.progress )\\n\\t\\t.done( animation.opts.done, animation.opts.complete )\\n\\t\\t.fail( animation.opts.fail )\\n\\t\\t.always( animation.opts.always );\\n\\n\\tjQuery.fx.timer(\\n\\t\\tjQuery.extend( tick, {\\n\\t\\t\\telem: elem,\\n\\t\\t\\tanim: animation,\\n\\t\\t\\tqueue: animation.opts.queue\\n\\t\\t} )\\n\\t);\\n\\n\\treturn animation;\\n}\\n\\njQuery.Animation = jQuery.extend( Animation, {\\n\\n\\ttweeners: {\\n\\t\\t\\\\\\\"*\\\\\\\": [ function( prop, value ) {\\n\\t\\t\\tvar tween = this.createTween( prop, value );\\n\\t\\t\\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\\n\\t\\t\\treturn tween;\\n\\t\\t} ]\\n\\t},\\n\\n\\ttweener: function( props, callback ) {\\n\\t\\tif ( isFunction( props ) ) {\\n\\t\\t\\tcallback = props;\\n\\t\\t\\tprops = [ \\\\\\\"*\\\\\\\" ];\\n\\t\\t} else {\\n\\t\\t\\tprops = props.match( rnothtmlwhite );\\n\\t\\t}\\n\\n\\t\\tvar prop,\\n\\t\\t\\tindex = 0,\\n\\t\\t\\tlength = props.length;\\n\\n\\t\\tfor ( ; index < length; index++ ) {\\n\\t\\t\\tprop = props[ index ];\\n\\t\\t\\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\\n\\t\\t\\tAnimation.tweeners[ prop ].unshift( callback );\\n\\t\\t}\\n\\t},\\n\\n\\tprefilters: [ defaultPrefilter ],\\n\\n\\tprefilter: function( callback, prepend ) {\\n\\t\\tif ( prepend ) {\\n\\t\\t\\tAnimation.prefilters.unshift( callback );\\n\\t\\t} else {\\n\\t\\t\\tAnimation.prefilters.push( callback );\\n\\t\\t}\\n\\t}\\n} );\\n\\njQuery.speed = function( speed, easing, fn ) {\\n\\tvar opt = speed && typeof speed === \\\\\\\"object\\\\\\\" ? jQuery.extend( {}, speed ) : {\\n\\t\\tcomplete: fn || !fn && easing ||\\n\\t\\t\\tisFunction( speed ) && speed,\\n\\t\\tduration: speed,\\n\\t\\teasing: fn && easing || easing && !isFunction( easing ) && easing\\n\\t};\\n\\n\\t// Go to the end state if fx are off\\n\\tif ( jQuery.fx.off ) {\\n\\t\\topt.duration = 0;\\n\\n\\t} else {\\n\\t\\tif ( typeof opt.duration !== \\\\\\\"number\\\\\\\" ) {\\n\\t\\t\\tif ( opt.duration in jQuery.fx.speeds ) {\\n\\t\\t\\t\\topt.duration = jQuery.fx.speeds[ opt.duration ];\\n\\n\\t\\t\\t} else {\\n\\t\\t\\t\\topt.duration = jQuery.fx.speeds._default;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t// Normalize opt.queue - true/undefined/null -> \\\\\\\"fx\\\\\\\"\\n\\tif ( opt.queue == null || opt.queue === true ) {\\n\\t\\topt.queue = \\\\\\\"fx\\\\\\\";\\n\\t}\\n\\n\\t// Queueing\\n\\topt.old = opt.complete;\\n\\n\\topt.complete = function() {\\n\\t\\tif ( isFunction( opt.old ) ) {\\n\\t\\t\\topt.old.call( this );\\n\\t\\t}\\n\\n\\t\\tif ( opt.queue ) {\\n\\t\\t\\tjQuery.dequeue( this, opt.queue );\\n\\t\\t}\\n\\t};\\n\\n\\treturn opt;\\n};\\n\\njQuery.fn.extend( {\\n\\tfadeTo: function( speed, to, easing, callback ) {\\n\\n\\t\\t// Show any hidden elements after setting opacity to 0\\n\\t\\treturn this.filter( isHiddenWithinTree ).css( \\\\\\\"opacity\\\\\\\", 0 ).show()\\n\\n\\t\\t\\t// Animate to the value specified\\n\\t\\t\\t.end().animate( { opacity: to }, speed, easing, callback );\\n\\t},\\n\\tanimate: function( prop, speed, easing, callback ) {\\n\\t\\tvar empty = jQuery.isEmptyObject( prop ),\\n\\t\\t\\toptall = jQuery.speed( speed, easing, callback ),\\n\\t\\t\\tdoAnimation = function() {\\n\\n\\t\\t\\t\\t// Operate on a copy of prop so per-property easing won't be lost\\n\\t\\t\\t\\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\\n\\n\\t\\t\\t\\t// Empty animations, or finishing resolves immediately\\n\\t\\t\\t\\tif ( empty || dataPriv.get( this, \\\\\\\"finish\\\\\\\" ) ) {\\n\\t\\t\\t\\t\\tanim.stop( true );\\n\\t\\t\\t\\t}\\n\\t\\t\\t};\\n\\t\\t\\tdoAnimation.finish = doAnimation;\\n\\n\\t\\treturn empty || optall.queue === false ?\\n\\t\\t\\tthis.each( doAnimation ) :\\n\\t\\t\\tthis.queue( optall.queue, doAnimation );\\n\\t},\\n\\tstop: function( type, clearQueue, gotoEnd ) {\\n\\t\\tvar stopQueue = function( hooks ) {\\n\\t\\t\\tvar stop = hooks.stop;\\n\\t\\t\\tdelete hooks.stop;\\n\\t\\t\\tstop( gotoEnd );\\n\\t\\t};\\n\\n\\t\\tif ( typeof type !== \\\\\\\"string\\\\\\\" ) {\\n\\t\\t\\tgotoEnd = clearQueue;\\n\\t\\t\\tclearQueue = type;\\n\\t\\t\\ttype = undefined;\\n\\t\\t}\\n\\t\\tif ( clearQueue ) {\\n\\t\\t\\tthis.queue( type || \\\\\\\"fx\\\\\\\", [] );\\n\\t\\t}\\n\\n\\t\\treturn this.each( function() {\\n\\t\\t\\tvar dequeue = true,\\n\\t\\t\\t\\tindex = type != null && type + \\\\\\\"queueHooks\\\\\\\",\\n\\t\\t\\t\\ttimers = jQuery.timers,\\n\\t\\t\\t\\tdata = dataPriv.get( this );\\n\\n\\t\\t\\tif ( index ) {\\n\\t\\t\\t\\tif ( data[ index ] && data[ index ].stop ) {\\n\\t\\t\\t\\t\\tstopQueue( data[ index ] );\\n\\t\\t\\t\\t}\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tfor ( index in data ) {\\n\\t\\t\\t\\t\\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\\n\\t\\t\\t\\t\\t\\tstopQueue( data[ index ] );\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\tfor ( index = timers.length; index--; ) {\\n\\t\\t\\t\\tif ( timers[ index ].elem === this &&\\n\\t\\t\\t\\t\\t( type == null || timers[ index ].queue === type ) ) {\\n\\n\\t\\t\\t\\t\\ttimers[ index ].anim.stop( gotoEnd );\\n\\t\\t\\t\\t\\tdequeue = false;\\n\\t\\t\\t\\t\\ttimers.splice( index, 1 );\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Start the next in the queue if the last step wasn't forced.\\n\\t\\t\\t// Timers currently will call their complete callbacks, which\\n\\t\\t\\t// will dequeue but only if they were gotoEnd.\\n\\t\\t\\tif ( dequeue || !gotoEnd ) {\\n\\t\\t\\t\\tjQuery.dequeue( this, type );\\n\\t\\t\\t}\\n\\t\\t} );\\n\\t},\\n\\tfinish: function( type ) {\\n\\t\\tif ( type !== false ) {\\n\\t\\t\\ttype = type || \\\\\\\"fx\\\\\\\";\\n\\t\\t}\\n\\t\\treturn this.each( function() {\\n\\t\\t\\tvar index,\\n\\t\\t\\t\\tdata = dataPriv.get( this ),\\n\\t\\t\\t\\tqueue = data[ type + \\\\\\\"queue\\\\\\\" ],\\n\\t\\t\\t\\thooks = data[ type + \\\\\\\"queueHooks\\\\\\\" ],\\n\\t\\t\\t\\ttimers = jQuery.timers,\\n\\t\\t\\t\\tlength = queue ? queue.length : 0;\\n\\n\\t\\t\\t// Enable finishing flag on private data\\n\\t\\t\\tdata.finish = true;\\n\\n\\t\\t\\t// Empty the queue first\\n\\t\\t\\tjQuery.queue( this, type, [] );\\n\\n\\t\\t\\tif ( hooks && hooks.stop ) {\\n\\t\\t\\t\\thooks.stop.call( this, true );\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Look for any active animations, and finish them\\n\\t\\t\\tfor ( index = timers.length; index--; ) {\\n\\t\\t\\t\\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\\n\\t\\t\\t\\t\\ttimers[ index ].anim.stop( true );\\n\\t\\t\\t\\t\\ttimers.splice( index, 1 );\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Look for any animations in the old queue and finish them\\n\\t\\t\\tfor ( index = 0; index < length; index++ ) {\\n\\t\\t\\t\\tif ( queue[ index ] && queue[ index ].finish ) {\\n\\t\\t\\t\\t\\tqueue[ index ].finish.call( this );\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Turn off finishing flag\\n\\t\\t\\tdelete data.finish;\\n\\t\\t} );\\n\\t}\\n} );\\n\\njQuery.each( [ \\\\\\\"toggle\\\\\\\", \\\\\\\"show\\\\\\\", \\\\\\\"hide\\\\\\\" ], function( _i, name ) {\\n\\tvar cssFn = jQuery.fn[ name ];\\n\\tjQuery.fn[ name ] = function( speed, easing, callback ) {\\n\\t\\treturn speed == null || typeof speed === \\\\\\\"boolean\\\\\\\" ?\\n\\t\\t\\tcssFn.apply( this, arguments ) :\\n\\t\\t\\tthis.animate( genFx( name, true ), speed, easing, callback );\\n\\t};\\n} );\\n\\n// Generate shortcuts for custom animations\\njQuery.each( {\\n\\tslideDown: genFx( \\\\\\\"show\\\\\\\" ),\\n\\tslideUp: genFx( \\\\\\\"hide\\\\\\\" ),\\n\\tslideToggle: genFx( \\\\\\\"toggle\\\\\\\" ),\\n\\tfadeIn: { opacity: \\\\\\\"show\\\\\\\" },\\n\\tfadeOut: { opacity: \\\\\\\"hide\\\\\\\" },\\n\\tfadeToggle: { opacity: \\\\\\\"toggle\\\\\\\" }\\n}, function( name, props ) {\\n\\tjQuery.fn[ name ] = function( speed, easing, callback ) {\\n\\t\\treturn this.animate( props, speed, easing, callback );\\n\\t};\\n} );\\n\\njQuery.timers = [];\\njQuery.fx.tick = function() {\\n\\tvar timer,\\n\\t\\ti = 0,\\n\\t\\ttimers = jQuery.timers;\\n\\n\\tfxNow = Date.now();\\n\\n\\tfor ( ; i < timers.length; i++ ) {\\n\\t\\ttimer = timers[ i ];\\n\\n\\t\\t// Run the timer and safely remove it when done (allowing for external removal)\\n\\t\\tif ( !timer() && timers[ i ] === timer ) {\\n\\t\\t\\ttimers.splice( i--, 1 );\\n\\t\\t}\\n\\t}\\n\\n\\tif ( !timers.length ) {\\n\\t\\tjQuery.fx.stop();\\n\\t}\\n\\tfxNow = undefined;\\n};\\n\\njQuery.fx.timer = function( timer ) {\\n\\tjQuery.timers.push( timer );\\n\\tjQuery.fx.start();\\n};\\n\\njQuery.fx.interval = 13;\\njQuery.fx.start = function() {\\n\\tif ( inProgress ) {\\n\\t\\treturn;\\n\\t}\\n\\n\\tinProgress = true;\\n\\tschedule();\\n};\\n\\njQuery.fx.stop = function() {\\n\\tinProgress = null;\\n};\\n\\njQuery.fx.speeds = {\\n\\tslow: 600,\\n\\tfast: 200,\\n\\n\\t// Default speed\\n\\t_default: 400\\n};\\n\\n\\n// Based off of the plugin by Clint Helfers, with permission.\\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\\njQuery.fn.delay = function( time, type ) {\\n\\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\\n\\ttype = type || \\\\\\\"fx\\\\\\\";\\n\\n\\treturn this.queue( type, function( next, hooks ) {\\n\\t\\tvar timeout = window.setTimeout( next, time );\\n\\t\\thooks.stop = function() {\\n\\t\\t\\twindow.clearTimeout( timeout );\\n\\t\\t};\\n\\t} );\\n};\\n\\n\\n( function() {\\n\\tvar input = document.createElement( \\\\\\\"input\\\\\\\" ),\\n\\t\\tselect = document.createElement( \\\\\\\"select\\\\\\\" ),\\n\\t\\topt = select.appendChild( document.createElement( \\\\\\\"option\\\\\\\" ) );\\n\\n\\tinput.type = \\\\\\\"checkbox\\\\\\\";\\n\\n\\t// Support: Android <=4.3 only\\n\\t// Default value for a checkbox should be \\\\\\\"on\\\\\\\"\\n\\tsupport.checkOn = input.value !== \\\\\\\"\\\\\\\";\\n\\n\\t// Support: IE <=11 only\\n\\t// Must access selectedIndex to make default options select\\n\\tsupport.optSelected = opt.selected;\\n\\n\\t// Support: IE <=11 only\\n\\t// An input loses its value after becoming a radio\\n\\tinput = document.createElement( \\\\\\\"input\\\\\\\" );\\n\\tinput.value = \\\\\\\"t\\\\\\\";\\n\\tinput.type = \\\\\\\"radio\\\\\\\";\\n\\tsupport.radioValue = input.value === \\\\\\\"t\\\\\\\";\\n} )();\\n\\n\\nvar boolHook,\\n\\tattrHandle = jQuery.expr.attrHandle;\\n\\njQuery.fn.extend( {\\n\\tattr: function( name, value ) {\\n\\t\\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\\n\\t},\\n\\n\\tremoveAttr: function( name ) {\\n\\t\\treturn this.each( function() {\\n\\t\\t\\tjQuery.removeAttr( this, name );\\n\\t\\t} );\\n\\t}\\n} );\\n\\njQuery.extend( {\\n\\tattr: function( elem, name, value ) {\\n\\t\\tvar ret, hooks,\\n\\t\\t\\tnType = elem.nodeType;\\n\\n\\t\\t// Don't get/set attributes on text, comment and attribute nodes\\n\\t\\tif ( nType === 3 || nType === 8 || nType === 2 ) {\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\n\\t\\t// Fallback to prop when attributes are not supported\\n\\t\\tif ( typeof elem.getAttribute === \\\\\\\"undefined\\\\\\\" ) {\\n\\t\\t\\treturn jQuery.prop( elem, name, value );\\n\\t\\t}\\n\\n\\t\\t// Attribute hooks are determined by the lowercase version\\n\\t\\t// Grab necessary hook if one is defined\\n\\t\\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\\n\\t\\t\\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\\n\\t\\t\\t\\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\\n\\t\\t}\\n\\n\\t\\tif ( value !== undefined ) {\\n\\t\\t\\tif ( value === null ) {\\n\\t\\t\\t\\tjQuery.removeAttr( elem, name );\\n\\t\\t\\t\\treturn;\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( hooks && \\\\\\\"set\\\\\\\" in hooks &&\\n\\t\\t\\t\\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\\n\\t\\t\\t\\treturn ret;\\n\\t\\t\\t}\\n\\n\\t\\t\\telem.setAttribute( name, value + \\\\\\\"\\\\\\\" );\\n\\t\\t\\treturn value;\\n\\t\\t}\\n\\n\\t\\tif ( hooks && \\\\\\\"get\\\\\\\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\\n\\t\\t\\treturn ret;\\n\\t\\t}\\n\\n\\t\\tret = jQuery.find.attr( elem, name );\\n\\n\\t\\t// Non-existent attributes return null, we normalize to undefined\\n\\t\\treturn ret == null ? undefined : ret;\\n\\t},\\n\\n\\tattrHooks: {\\n\\t\\ttype: {\\n\\t\\t\\tset: function( elem, value ) {\\n\\t\\t\\t\\tif ( !support.radioValue && value === \\\\\\\"radio\\\\\\\" &&\\n\\t\\t\\t\\t\\tnodeName( elem, \\\\\\\"input\\\\\\\" ) ) {\\n\\t\\t\\t\\t\\tvar val = elem.value;\\n\\t\\t\\t\\t\\telem.setAttribute( \\\\\\\"type\\\\\\\", value );\\n\\t\\t\\t\\t\\tif ( val ) {\\n\\t\\t\\t\\t\\t\\telem.value = val;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\treturn value;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t},\\n\\n\\tremoveAttr: function( elem, value ) {\\n\\t\\tvar name,\\n\\t\\t\\ti = 0,\\n\\n\\t\\t\\t// Attribute names can contain non-HTML whitespace characters\\n\\t\\t\\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\\n\\t\\t\\tattrNames = value && value.match( rnothtmlwhite );\\n\\n\\t\\tif ( attrNames && elem.nodeType === 1 ) {\\n\\t\\t\\twhile ( ( name = attrNames[ i++ ] ) ) {\\n\\t\\t\\t\\telem.removeAttribute( name );\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n} );\\n\\n// Hooks for boolean attributes\\nboolHook = {\\n\\tset: function( elem, value, name ) {\\n\\t\\tif ( value === false ) {\\n\\n\\t\\t\\t// Remove boolean attributes when set to false\\n\\t\\t\\tjQuery.removeAttr( elem, name );\\n\\t\\t} else {\\n\\t\\t\\telem.setAttribute( name, name );\\n\\t\\t}\\n\\t\\treturn name;\\n\\t}\\n};\\n\\njQuery.each( jQuery.expr.match.bool.source.match( /\\\\w+/g ), function( _i, name ) {\\n\\tvar getter = attrHandle[ name ] || jQuery.find.attr;\\n\\n\\tattrHandle[ name ] = function( elem, name, isXML ) {\\n\\t\\tvar ret, handle,\\n\\t\\t\\tlowercaseName = name.toLowerCase();\\n\\n\\t\\tif ( !isXML ) {\\n\\n\\t\\t\\t// Avoid an infinite loop by temporarily removing this function from the getter\\n\\t\\t\\thandle = attrHandle[ lowercaseName ];\\n\\t\\t\\tattrHandle[ lowercaseName ] = ret;\\n\\t\\t\\tret = getter( elem, name, isXML ) != null ?\\n\\t\\t\\t\\tlowercaseName :\\n\\t\\t\\t\\tnull;\\n\\t\\t\\tattrHandle[ lowercaseName ] = handle;\\n\\t\\t}\\n\\t\\treturn ret;\\n\\t};\\n} );\\n\\n\\n\\n\\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\\n\\trclickable = /^(?:a|area)$/i;\\n\\njQuery.fn.extend( {\\n\\tprop: function( name, value ) {\\n\\t\\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\\n\\t},\\n\\n\\tremoveProp: function( name ) {\\n\\t\\treturn this.each( function() {\\n\\t\\t\\tdelete this[ jQuery.propFix[ name ] || name ];\\n\\t\\t} );\\n\\t}\\n} );\\n\\njQuery.extend( {\\n\\tprop: function( elem, name, value ) {\\n\\t\\tvar ret, hooks,\\n\\t\\t\\tnType = elem.nodeType;\\n\\n\\t\\t// Don't get/set properties on text, comment and attribute nodes\\n\\t\\tif ( nType === 3 || nType === 8 || nType === 2 ) {\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\n\\t\\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\\n\\n\\t\\t\\t// Fix name and attach hooks\\n\\t\\t\\tname = jQuery.propFix[ name ] || name;\\n\\t\\t\\thooks = jQuery.propHooks[ name ];\\n\\t\\t}\\n\\n\\t\\tif ( value !== undefined ) {\\n\\t\\t\\tif ( hooks && \\\\\\\"set\\\\\\\" in hooks &&\\n\\t\\t\\t\\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\\n\\t\\t\\t\\treturn ret;\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn ( elem[ name ] = value );\\n\\t\\t}\\n\\n\\t\\tif ( hooks && \\\\\\\"get\\\\\\\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\\n\\t\\t\\treturn ret;\\n\\t\\t}\\n\\n\\t\\treturn elem[ name ];\\n\\t},\\n\\n\\tpropHooks: {\\n\\t\\ttabIndex: {\\n\\t\\t\\tget: function( elem ) {\\n\\n\\t\\t\\t\\t// Support: IE <=9 - 11 only\\n\\t\\t\\t\\t// elem.tabIndex doesn't always return the\\n\\t\\t\\t\\t// correct value when it hasn't been explicitly set\\n\\t\\t\\t\\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\\n\\t\\t\\t\\t// Use proper attribute retrieval(#12072)\\n\\t\\t\\t\\tvar tabindex = jQuery.find.attr( elem, \\\\\\\"tabindex\\\\\\\" );\\n\\n\\t\\t\\t\\tif ( tabindex ) {\\n\\t\\t\\t\\t\\treturn parseInt( tabindex, 10 );\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif (\\n\\t\\t\\t\\t\\trfocusable.test( elem.nodeName ) ||\\n\\t\\t\\t\\t\\trclickable.test( elem.nodeName ) &&\\n\\t\\t\\t\\t\\telem.href\\n\\t\\t\\t\\t) {\\n\\t\\t\\t\\t\\treturn 0;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\treturn -1;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t},\\n\\n\\tpropFix: {\\n\\t\\t\\\\\\\"for\\\\\\\": \\\\\\\"htmlFor\\\\\\\",\\n\\t\\t\\\\\\\"class\\\\\\\": \\\\\\\"className\\\\\\\"\\n\\t}\\n} );\\n\\n// Support: IE <=11 only\\n// Accessing the selectedIndex property\\n// forces the browser to respect setting selected\\n// on the option\\n// The getter ensures a default option is selected\\n// when in an optgroup\\n// eslint rule \\\\\\\"no-unused-expressions\\\\\\\" is disabled for this code\\n// since it considers such accessions noop\\nif ( !support.optSelected ) {\\n\\tjQuery.propHooks.selected = {\\n\\t\\tget: function( elem ) {\\n\\n\\t\\t\\t/* eslint no-unused-expressions: \\\\\\\"off\\\\\\\" */\\n\\n\\t\\t\\tvar parent = elem.parentNode;\\n\\t\\t\\tif ( parent && parent.parentNode ) {\\n\\t\\t\\t\\tparent.parentNode.selectedIndex;\\n\\t\\t\\t}\\n\\t\\t\\treturn null;\\n\\t\\t},\\n\\t\\tset: function( elem ) {\\n\\n\\t\\t\\t/* eslint no-unused-expressions: \\\\\\\"off\\\\\\\" */\\n\\n\\t\\t\\tvar parent = elem.parentNode;\\n\\t\\t\\tif ( parent ) {\\n\\t\\t\\t\\tparent.selectedIndex;\\n\\n\\t\\t\\t\\tif ( parent.parentNode ) {\\n\\t\\t\\t\\t\\tparent.parentNode.selectedIndex;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t};\\n}\\n\\njQuery.each( [\\n\\t\\\\\\\"tabIndex\\\\\\\",\\n\\t\\\\\\\"readOnly\\\\\\\",\\n\\t\\\\\\\"maxLength\\\\\\\",\\n\\t\\\\\\\"cellSpacing\\\\\\\",\\n\\t\\\\\\\"cellPadding\\\\\\\",\\n\\t\\\\\\\"rowSpan\\\\\\\",\\n\\t\\\\\\\"colSpan\\\\\\\",\\n\\t\\\\\\\"useMap\\\\\\\",\\n\\t\\\\\\\"frameBorder\\\\\\\",\\n\\t\\\\\\\"contentEditable\\\\\\\"\\n], function() {\\n\\tjQuery.propFix[ this.toLowerCase() ] = this;\\n} );\\n\\n\\n\\n\\n\\t// Strip and collapse whitespace according to HTML spec\\n\\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\\n\\tfunction stripAndCollapse( value ) {\\n\\t\\tvar tokens = value.match( rnothtmlwhite ) || [];\\n\\t\\treturn tokens.join( \\\\\\\" \\\\\\\" );\\n\\t}\\n\\n\\nfunction getClass( elem ) {\\n\\treturn elem.getAttribute && elem.getAttribute( \\\\\\\"class\\\\\\\" ) || \\\\\\\"\\\\\\\";\\n}\\n\\nfunction classesToArray( value ) {\\n\\tif ( Array.isArray( value ) ) {\\n\\t\\treturn value;\\n\\t}\\n\\tif ( typeof value === \\\\\\\"string\\\\\\\" ) {\\n\\t\\treturn value.match( rnothtmlwhite ) || [];\\n\\t}\\n\\treturn [];\\n}\\n\\njQuery.fn.extend( {\\n\\taddClass: function( value ) {\\n\\t\\tvar classes, elem, cur, curValue, clazz, j, finalValue,\\n\\t\\t\\ti = 0;\\n\\n\\t\\tif ( isFunction( value ) ) {\\n\\t\\t\\treturn this.each( function( j ) {\\n\\t\\t\\t\\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\\n\\t\\t\\t} );\\n\\t\\t}\\n\\n\\t\\tclasses = classesToArray( value );\\n\\n\\t\\tif ( classes.length ) {\\n\\t\\t\\twhile ( ( elem = this[ i++ ] ) ) {\\n\\t\\t\\t\\tcurValue = getClass( elem );\\n\\t\\t\\t\\tcur = elem.nodeType === 1 && ( \\\\\\\" \\\\\\\" + stripAndCollapse( curValue ) + \\\\\\\" \\\\\\\" );\\n\\n\\t\\t\\t\\tif ( cur ) {\\n\\t\\t\\t\\t\\tj = 0;\\n\\t\\t\\t\\t\\twhile ( ( clazz = classes[ j++ ] ) ) {\\n\\t\\t\\t\\t\\t\\tif ( cur.indexOf( \\\\\\\" \\\\\\\" + clazz + \\\\\\\" \\\\\\\" ) < 0 ) {\\n\\t\\t\\t\\t\\t\\t\\tcur += clazz + \\\\\\\" \\\\\\\";\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t// Only assign if different to avoid unneeded rendering.\\n\\t\\t\\t\\t\\tfinalValue = stripAndCollapse( cur );\\n\\t\\t\\t\\t\\tif ( curValue !== finalValue ) {\\n\\t\\t\\t\\t\\t\\telem.setAttribute( \\\\\\\"class\\\\\\\", finalValue );\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\treturn this;\\n\\t},\\n\\n\\tremoveClass: function( value ) {\\n\\t\\tvar classes, elem, cur, curValue, clazz, j, finalValue,\\n\\t\\t\\ti = 0;\\n\\n\\t\\tif ( isFunction( value ) ) {\\n\\t\\t\\treturn this.each( function( j ) {\\n\\t\\t\\t\\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\\n\\t\\t\\t} );\\n\\t\\t}\\n\\n\\t\\tif ( !arguments.length ) {\\n\\t\\t\\treturn this.attr( \\\\\\\"class\\\\\\\", \\\\\\\"\\\\\\\" );\\n\\t\\t}\\n\\n\\t\\tclasses = classesToArray( value );\\n\\n\\t\\tif ( classes.length ) {\\n\\t\\t\\twhile ( ( elem = this[ i++ ] ) ) {\\n\\t\\t\\t\\tcurValue = getClass( elem );\\n\\n\\t\\t\\t\\t// This expression is here for better compressibility (see addClass)\\n\\t\\t\\t\\tcur = elem.nodeType === 1 && ( \\\\\\\" \\\\\\\" + stripAndCollapse( curValue ) + \\\\\\\" \\\\\\\" );\\n\\n\\t\\t\\t\\tif ( cur ) {\\n\\t\\t\\t\\t\\tj = 0;\\n\\t\\t\\t\\t\\twhile ( ( clazz = classes[ j++ ] ) ) {\\n\\n\\t\\t\\t\\t\\t\\t// Remove *all* instances\\n\\t\\t\\t\\t\\t\\twhile ( cur.indexOf( \\\\\\\" \\\\\\\" + clazz + \\\\\\\" \\\\\\\" ) > -1 ) {\\n\\t\\t\\t\\t\\t\\t\\tcur = cur.replace( \\\\\\\" \\\\\\\" + clazz + \\\\\\\" \\\\\\\", \\\\\\\" \\\\\\\" );\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t// Only assign if different to avoid unneeded rendering.\\n\\t\\t\\t\\t\\tfinalValue = stripAndCollapse( cur );\\n\\t\\t\\t\\t\\tif ( curValue !== finalValue ) {\\n\\t\\t\\t\\t\\t\\telem.setAttribute( \\\\\\\"class\\\\\\\", finalValue );\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\treturn this;\\n\\t},\\n\\n\\ttoggleClass: function( value, stateVal ) {\\n\\t\\tvar type = typeof value,\\n\\t\\t\\tisValidValue = type === \\\\\\\"string\\\\\\\" || Array.isArray( value );\\n\\n\\t\\tif ( typeof stateVal === \\\\\\\"boolean\\\\\\\" && isValidValue ) {\\n\\t\\t\\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\\n\\t\\t}\\n\\n\\t\\tif ( isFunction( value ) ) {\\n\\t\\t\\treturn this.each( function( i ) {\\n\\t\\t\\t\\tjQuery( this ).toggleClass(\\n\\t\\t\\t\\t\\tvalue.call( this, i, getClass( this ), stateVal ),\\n\\t\\t\\t\\t\\tstateVal\\n\\t\\t\\t\\t);\\n\\t\\t\\t} );\\n\\t\\t}\\n\\n\\t\\treturn this.each( function() {\\n\\t\\t\\tvar className, i, self, classNames;\\n\\n\\t\\t\\tif ( isValidValue ) {\\n\\n\\t\\t\\t\\t// Toggle individual class names\\n\\t\\t\\t\\ti = 0;\\n\\t\\t\\t\\tself = jQuery( this );\\n\\t\\t\\t\\tclassNames = classesToArray( value );\\n\\n\\t\\t\\t\\twhile ( ( className = classNames[ i++ ] ) ) {\\n\\n\\t\\t\\t\\t\\t// Check each className given, space separated list\\n\\t\\t\\t\\t\\tif ( self.hasClass( className ) ) {\\n\\t\\t\\t\\t\\t\\tself.removeClass( className );\\n\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\tself.addClass( className );\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t// Toggle whole class name\\n\\t\\t\\t} else if ( value === undefined || type === \\\\\\\"boolean\\\\\\\" ) {\\n\\t\\t\\t\\tclassName = getClass( this );\\n\\t\\t\\t\\tif ( className ) {\\n\\n\\t\\t\\t\\t\\t// Store className if set\\n\\t\\t\\t\\t\\tdataPriv.set( this, \\\\\\\"__className__\\\\\\\", className );\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// If the element has a class name or if we're passed `false`,\\n\\t\\t\\t\\t// then remove the whole classname (if there was one, the above saved it).\\n\\t\\t\\t\\t// Otherwise bring back whatever was previously saved (if anything),\\n\\t\\t\\t\\t// falling back to the empty string if nothing was stored.\\n\\t\\t\\t\\tif ( this.setAttribute ) {\\n\\t\\t\\t\\t\\tthis.setAttribute( \\\\\\\"class\\\\\\\",\\n\\t\\t\\t\\t\\t\\tclassName || value === false ?\\n\\t\\t\\t\\t\\t\\t\\\\\\\"\\\\\\\" :\\n\\t\\t\\t\\t\\t\\tdataPriv.get( this, \\\\\\\"__className__\\\\\\\" ) || \\\\\\\"\\\\\\\"\\n\\t\\t\\t\\t\\t);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t} );\\n\\t},\\n\\n\\thasClass: function( selector ) {\\n\\t\\tvar className, elem,\\n\\t\\t\\ti = 0;\\n\\n\\t\\tclassName = \\\\\\\" \\\\\\\" + selector + \\\\\\\" \\\\\\\";\\n\\t\\twhile ( ( elem = this[ i++ ] ) ) {\\n\\t\\t\\tif ( elem.nodeType === 1 &&\\n\\t\\t\\t\\t( \\\\\\\" \\\\\\\" + stripAndCollapse( getClass( elem ) ) + \\\\\\\" \\\\\\\" ).indexOf( className ) > -1 ) {\\n\\t\\t\\t\\t\\treturn true;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\treturn false;\\n\\t}\\n} );\\n\\n\\n\\n\\nvar rreturn = /\\\\r/g;\\n\\njQuery.fn.extend( {\\n\\tval: function( value ) {\\n\\t\\tvar hooks, ret, valueIsFunction,\\n\\t\\t\\telem = this[ 0 ];\\n\\n\\t\\tif ( !arguments.length ) {\\n\\t\\t\\tif ( elem ) {\\n\\t\\t\\t\\thooks = jQuery.valHooks[ elem.type ] ||\\n\\t\\t\\t\\t\\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\\n\\n\\t\\t\\t\\tif ( hooks &&\\n\\t\\t\\t\\t\\t\\\\\\\"get\\\\\\\" in hooks &&\\n\\t\\t\\t\\t\\t( ret = hooks.get( elem, \\\\\\\"value\\\\\\\" ) ) !== undefined\\n\\t\\t\\t\\t) {\\n\\t\\t\\t\\t\\treturn ret;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tret = elem.value;\\n\\n\\t\\t\\t\\t// Handle most common string cases\\n\\t\\t\\t\\tif ( typeof ret === \\\\\\\"string\\\\\\\" ) {\\n\\t\\t\\t\\t\\treturn ret.replace( rreturn, \\\\\\\"\\\\\\\" );\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Handle cases where value is null/undef or number\\n\\t\\t\\t\\treturn ret == null ? \\\\\\\"\\\\\\\" : ret;\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\n\\t\\tvalueIsFunction = isFunction( value );\\n\\n\\t\\treturn this.each( function( i ) {\\n\\t\\t\\tvar val;\\n\\n\\t\\t\\tif ( this.nodeType !== 1 ) {\\n\\t\\t\\t\\treturn;\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( valueIsFunction ) {\\n\\t\\t\\t\\tval = value.call( this, i, jQuery( this ).val() );\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tval = value;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Treat null/undefined as \\\\\\\"\\\\\\\"; convert numbers to string\\n\\t\\t\\tif ( val == null ) {\\n\\t\\t\\t\\tval = \\\\\\\"\\\\\\\";\\n\\n\\t\\t\\t} else if ( typeof val === \\\\\\\"number\\\\\\\" ) {\\n\\t\\t\\t\\tval += \\\\\\\"\\\\\\\";\\n\\n\\t\\t\\t} else if ( Array.isArray( val ) ) {\\n\\t\\t\\t\\tval = jQuery.map( val, function( value ) {\\n\\t\\t\\t\\t\\treturn value == null ? \\\\\\\"\\\\\\\" : value + \\\\\\\"\\\\\\\";\\n\\t\\t\\t\\t} );\\n\\t\\t\\t}\\n\\n\\t\\t\\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\\n\\n\\t\\t\\t// If set returns undefined, fall back to normal setting\\n\\t\\t\\tif ( !hooks || !( \\\\\\\"set\\\\\\\" in hooks ) || hooks.set( this, val, \\\\\\\"value\\\\\\\" ) === undefined ) {\\n\\t\\t\\t\\tthis.value = val;\\n\\t\\t\\t}\\n\\t\\t} );\\n\\t}\\n} );\\n\\njQuery.extend( {\\n\\tvalHooks: {\\n\\t\\toption: {\\n\\t\\t\\tget: function( elem ) {\\n\\n\\t\\t\\t\\tvar val = jQuery.find.attr( elem, \\\\\\\"value\\\\\\\" );\\n\\t\\t\\t\\treturn val != null ?\\n\\t\\t\\t\\t\\tval :\\n\\n\\t\\t\\t\\t\\t// Support: IE <=10 - 11 only\\n\\t\\t\\t\\t\\t// option.text throws exceptions (#14686, #14858)\\n\\t\\t\\t\\t\\t// Strip and collapse whitespace\\n\\t\\t\\t\\t\\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\\n\\t\\t\\t\\t\\tstripAndCollapse( jQuery.text( elem ) );\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tselect: {\\n\\t\\t\\tget: function( elem ) {\\n\\t\\t\\t\\tvar value, option, i,\\n\\t\\t\\t\\t\\toptions = elem.options,\\n\\t\\t\\t\\t\\tindex = elem.selectedIndex,\\n\\t\\t\\t\\t\\tone = elem.type === \\\\\\\"select-one\\\\\\\",\\n\\t\\t\\t\\t\\tvalues = one ? null : [],\\n\\t\\t\\t\\t\\tmax = one ? index + 1 : options.length;\\n\\n\\t\\t\\t\\tif ( index < 0 ) {\\n\\t\\t\\t\\t\\ti = max;\\n\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\ti = one ? index : 0;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Loop through all the selected options\\n\\t\\t\\t\\tfor ( ; i < max; i++ ) {\\n\\t\\t\\t\\t\\toption = options[ i ];\\n\\n\\t\\t\\t\\t\\t// Support: IE <=9 only\\n\\t\\t\\t\\t\\t// IE8-9 doesn't update selected after form reset (#2551)\\n\\t\\t\\t\\t\\tif ( ( option.selected || i === index ) &&\\n\\n\\t\\t\\t\\t\\t\\t\\t// Don't return options that are disabled or in a disabled optgroup\\n\\t\\t\\t\\t\\t\\t\\t!option.disabled &&\\n\\t\\t\\t\\t\\t\\t\\t( !option.parentNode.disabled ||\\n\\t\\t\\t\\t\\t\\t\\t\\t!nodeName( option.parentNode, \\\\\\\"optgroup\\\\\\\" ) ) ) {\\n\\n\\t\\t\\t\\t\\t\\t// Get the specific value for the option\\n\\t\\t\\t\\t\\t\\tvalue = jQuery( option ).val();\\n\\n\\t\\t\\t\\t\\t\\t// We don't need an array for one selects\\n\\t\\t\\t\\t\\t\\tif ( one ) {\\n\\t\\t\\t\\t\\t\\t\\treturn value;\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t// Multi-Selects return an array\\n\\t\\t\\t\\t\\t\\tvalues.push( value );\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\treturn values;\\n\\t\\t\\t},\\n\\n\\t\\t\\tset: function( elem, value ) {\\n\\t\\t\\t\\tvar optionSet, option,\\n\\t\\t\\t\\t\\toptions = elem.options,\\n\\t\\t\\t\\t\\tvalues = jQuery.makeArray( value ),\\n\\t\\t\\t\\t\\ti = options.length;\\n\\n\\t\\t\\t\\twhile ( i-- ) {\\n\\t\\t\\t\\t\\toption = options[ i ];\\n\\n\\t\\t\\t\\t\\t/* eslint-disable no-cond-assign */\\n\\n\\t\\t\\t\\t\\tif ( option.selected =\\n\\t\\t\\t\\t\\t\\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\\n\\t\\t\\t\\t\\t) {\\n\\t\\t\\t\\t\\t\\toptionSet = true;\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t/* eslint-enable no-cond-assign */\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Force browsers to behave consistently when non-matching value is set\\n\\t\\t\\t\\tif ( !optionSet ) {\\n\\t\\t\\t\\t\\telem.selectedIndex = -1;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\treturn values;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n} );\\n\\n// Radios and checkboxes getter/setter\\njQuery.each( [ \\\\\\\"radio\\\\\\\", \\\\\\\"checkbox\\\\\\\" ], function() {\\n\\tjQuery.valHooks[ this ] = {\\n\\t\\tset: function( elem, value ) {\\n\\t\\t\\tif ( Array.isArray( value ) ) {\\n\\t\\t\\t\\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\\n\\t\\t\\t}\\n\\t\\t}\\n\\t};\\n\\tif ( !support.checkOn ) {\\n\\t\\tjQuery.valHooks[ this ].get = function( elem ) {\\n\\t\\t\\treturn elem.getAttribute( \\\\\\\"value\\\\\\\" ) === null ? \\\\\\\"on\\\\\\\" : elem.value;\\n\\t\\t};\\n\\t}\\n} );\\n\\n\\n\\n\\n// Return jQuery for attributes-only inclusion\\n\\n\\nsupport.focusin = \\\\\\\"onfocusin\\\\\\\" in window;\\n\\n\\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\\n\\tstopPropagationCallback = function( e ) {\\n\\t\\te.stopPropagation();\\n\\t};\\n\\njQuery.extend( jQuery.event, {\\n\\n\\ttrigger: function( event, data, elem, onlyHandlers ) {\\n\\n\\t\\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\\n\\t\\t\\teventPath = [ elem || document ],\\n\\t\\t\\ttype = hasOwn.call( event, \\\\\\\"type\\\\\\\" ) ? event.type : event,\\n\\t\\t\\tnamespaces = hasOwn.call( event, \\\\\\\"namespace\\\\\\\" ) ? event.namespace.split( \\\\\\\".\\\\\\\" ) : [];\\n\\n\\t\\tcur = lastElement = tmp = elem = elem || document;\\n\\n\\t\\t// Don't do events on text and comment nodes\\n\\t\\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\n\\t\\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\\n\\t\\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\n\\t\\tif ( type.indexOf( \\\\\\\".\\\\\\\" ) > -1 ) {\\n\\n\\t\\t\\t// Namespaced trigger; create a regexp to match event type in handle()\\n\\t\\t\\tnamespaces = type.split( \\\\\\\".\\\\\\\" );\\n\\t\\t\\ttype = namespaces.shift();\\n\\t\\t\\tnamespaces.sort();\\n\\t\\t}\\n\\t\\tontype = type.indexOf( \\\\\\\":\\\\\\\" ) < 0 && \\\\\\\"on\\\\\\\" + type;\\n\\n\\t\\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\\n\\t\\tevent = event[ jQuery.expando ] ?\\n\\t\\t\\tevent :\\n\\t\\t\\tnew jQuery.Event( type, typeof event === \\\\\\\"object\\\\\\\" && event );\\n\\n\\t\\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\\n\\t\\tevent.isTrigger = onlyHandlers ? 2 : 3;\\n\\t\\tevent.namespace = namespaces.join( \\\\\\\".\\\\\\\" );\\n\\t\\tevent.rnamespace = event.namespace ?\\n\\t\\t\\tnew RegExp( \\\\\\\"(^|\\\\\\\\.)\\\\\\\" + namespaces.join( \\\\\\\"\\\\\\\\.(?:.*\\\\\\\\.|)\\\\\\\" ) + \\\\\\\"(\\\\\\\\.|$)\\\\\\\" ) :\\n\\t\\t\\tnull;\\n\\n\\t\\t// Clean up the event in case it is being reused\\n\\t\\tevent.result = undefined;\\n\\t\\tif ( !event.target ) {\\n\\t\\t\\tevent.target = elem;\\n\\t\\t}\\n\\n\\t\\t// Clone any incoming data and prepend the event, creating the handler arg list\\n\\t\\tdata = data == null ?\\n\\t\\t\\t[ event ] :\\n\\t\\t\\tjQuery.makeArray( data, [ event ] );\\n\\n\\t\\t// Allow special events to draw outside the lines\\n\\t\\tspecial = jQuery.event.special[ type ] || {};\\n\\t\\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\n\\t\\t// Determine event propagation path in advance, per W3C events spec (#9951)\\n\\t\\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\\n\\t\\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\\n\\n\\t\\t\\tbubbleType = special.delegateType || type;\\n\\t\\t\\tif ( !rfocusMorph.test( bubbleType + type ) ) {\\n\\t\\t\\t\\tcur = cur.parentNode;\\n\\t\\t\\t}\\n\\t\\t\\tfor ( ; cur; cur = cur.parentNode ) {\\n\\t\\t\\t\\teventPath.push( cur );\\n\\t\\t\\t\\ttmp = cur;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\\n\\t\\t\\tif ( tmp === ( elem.ownerDocument || document ) ) {\\n\\t\\t\\t\\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Fire handlers on the event path\\n\\t\\ti = 0;\\n\\t\\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\\n\\t\\t\\tlastElement = cur;\\n\\t\\t\\tevent.type = i > 1 ?\\n\\t\\t\\t\\tbubbleType :\\n\\t\\t\\t\\tspecial.bindType || type;\\n\\n\\t\\t\\t// jQuery handler\\n\\t\\t\\thandle = (\\n\\t\\t\\t\\t\\tdataPriv.get( cur, \\\\\\\"events\\\\\\\" ) || Object.create( null )\\n\\t\\t\\t\\t)[ event.type ] &&\\n\\t\\t\\t\\tdataPriv.get( cur, \\\\\\\"handle\\\\\\\" );\\n\\t\\t\\tif ( handle ) {\\n\\t\\t\\t\\thandle.apply( cur, data );\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Native handler\\n\\t\\t\\thandle = ontype && cur[ ontype ];\\n\\t\\t\\tif ( handle && handle.apply && acceptData( cur ) ) {\\n\\t\\t\\t\\tevent.result = handle.apply( cur, data );\\n\\t\\t\\t\\tif ( event.result === false ) {\\n\\t\\t\\t\\t\\tevent.preventDefault();\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tevent.type = type;\\n\\n\\t\\t// If nobody prevented the default action, do it now\\n\\t\\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\\n\\n\\t\\t\\tif ( ( !special._default ||\\n\\t\\t\\t\\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\\n\\t\\t\\t\\tacceptData( elem ) ) {\\n\\n\\t\\t\\t\\t// Call a native DOM method on the target with the same name as the event.\\n\\t\\t\\t\\t// Don't do default actions on window, that's where global variables be (#6170)\\n\\t\\t\\t\\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\\n\\n\\t\\t\\t\\t\\t// Don't re-trigger an onFOO event when we call its FOO() method\\n\\t\\t\\t\\t\\ttmp = elem[ ontype ];\\n\\n\\t\\t\\t\\t\\tif ( tmp ) {\\n\\t\\t\\t\\t\\t\\telem[ ontype ] = null;\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t// Prevent re-triggering of the same event, since we already bubbled it above\\n\\t\\t\\t\\t\\tjQuery.event.triggered = type;\\n\\n\\t\\t\\t\\t\\tif ( event.isPropagationStopped() ) {\\n\\t\\t\\t\\t\\t\\tlastElement.addEventListener( type, stopPropagationCallback );\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\telem[ type ]();\\n\\n\\t\\t\\t\\t\\tif ( event.isPropagationStopped() ) {\\n\\t\\t\\t\\t\\t\\tlastElement.removeEventListener( type, stopPropagationCallback );\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tjQuery.event.triggered = undefined;\\n\\n\\t\\t\\t\\t\\tif ( tmp ) {\\n\\t\\t\\t\\t\\t\\telem[ ontype ] = tmp;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\treturn event.result;\\n\\t},\\n\\n\\t// Piggyback on a donor event to simulate a different one\\n\\t// Used only for `focus(in | out)` events\\n\\tsimulate: function( type, elem, event ) {\\n\\t\\tvar e = jQuery.extend(\\n\\t\\t\\tnew jQuery.Event(),\\n\\t\\t\\tevent,\\n\\t\\t\\t{\\n\\t\\t\\t\\ttype: type,\\n\\t\\t\\t\\tisSimulated: true\\n\\t\\t\\t}\\n\\t\\t);\\n\\n\\t\\tjQuery.event.trigger( e, null, elem );\\n\\t}\\n\\n} );\\n\\njQuery.fn.extend( {\\n\\n\\ttrigger: function( type, data ) {\\n\\t\\treturn this.each( function() {\\n\\t\\t\\tjQuery.event.trigger( type, data, this );\\n\\t\\t} );\\n\\t},\\n\\ttriggerHandler: function( type, data ) {\\n\\t\\tvar elem = this[ 0 ];\\n\\t\\tif ( elem ) {\\n\\t\\t\\treturn jQuery.event.trigger( type, data, elem, true );\\n\\t\\t}\\n\\t}\\n} );\\n\\n\\n// Support: Firefox <=44\\n// Firefox doesn't have focus(in | out) events\\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\\n//\\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\\n// focus(in | out) events fire after focus & blur events,\\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\\nif ( !support.focusin ) {\\n\\tjQuery.each( { focus: \\\\\\\"focusin\\\\\\\", blur: \\\\\\\"focusout\\\\\\\" }, function( orig, fix ) {\\n\\n\\t\\t// Attach a single capturing handler on the document while someone wants focusin/focusout\\n\\t\\tvar handler = function( event ) {\\n\\t\\t\\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\\n\\t\\t};\\n\\n\\t\\tjQuery.event.special[ fix ] = {\\n\\t\\t\\tsetup: function() {\\n\\n\\t\\t\\t\\t// Handle: regular nodes (via `this.ownerDocument`), window\\n\\t\\t\\t\\t// (via `this.document`) & document (via `this`).\\n\\t\\t\\t\\tvar doc = this.ownerDocument || this.document || this,\\n\\t\\t\\t\\t\\tattaches = dataPriv.access( doc, fix );\\n\\n\\t\\t\\t\\tif ( !attaches ) {\\n\\t\\t\\t\\t\\tdoc.addEventListener( orig, handler, true );\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\\n\\t\\t\\t},\\n\\t\\t\\tteardown: function() {\\n\\t\\t\\t\\tvar doc = this.ownerDocument || this.document || this,\\n\\t\\t\\t\\t\\tattaches = dataPriv.access( doc, fix ) - 1;\\n\\n\\t\\t\\t\\tif ( !attaches ) {\\n\\t\\t\\t\\t\\tdoc.removeEventListener( orig, handler, true );\\n\\t\\t\\t\\t\\tdataPriv.remove( doc, fix );\\n\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tdataPriv.access( doc, fix, attaches );\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t};\\n\\t} );\\n}\\nvar location = window.location;\\n\\nvar nonce = { guid: Date.now() };\\n\\nvar rquery = ( /\\\\?/ );\\n\\n\\n\\n// Cross-browser xml parsing\\njQuery.parseXML = function( data ) {\\n\\tvar xml;\\n\\tif ( !data || typeof data !== \\\\\\\"string\\\\\\\" ) {\\n\\t\\treturn null;\\n\\t}\\n\\n\\t// Support: IE 9 - 11 only\\n\\t// IE throws on parseFromString with invalid input.\\n\\ttry {\\n\\t\\txml = ( new window.DOMParser() ).parseFromString( data, \\\\\\\"text/xml\\\\\\\" );\\n\\t} catch ( e ) {\\n\\t\\txml = undefined;\\n\\t}\\n\\n\\tif ( !xml || xml.getElementsByTagName( \\\\\\\"parsererror\\\\\\\" ).length ) {\\n\\t\\tjQuery.error( \\\\\\\"Invalid XML: \\\\\\\" + data );\\n\\t}\\n\\treturn xml;\\n};\\n\\n\\nvar\\n\\trbracket = /\\\\[\\\\]$/,\\n\\trCRLF = /\\\\r?\\\\n/g,\\n\\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\\n\\trsubmittable = /^(?:input|select|textarea|keygen)/i;\\n\\nfunction buildParams( prefix, obj, traditional, add ) {\\n\\tvar name;\\n\\n\\tif ( Array.isArray( obj ) ) {\\n\\n\\t\\t// Serialize array item.\\n\\t\\tjQuery.each( obj, function( i, v ) {\\n\\t\\t\\tif ( traditional || rbracket.test( prefix ) ) {\\n\\n\\t\\t\\t\\t// Treat each array item as a scalar.\\n\\t\\t\\t\\tadd( prefix, v );\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t// Item is non-scalar (array or object), encode its numeric index.\\n\\t\\t\\t\\tbuildParams(\\n\\t\\t\\t\\t\\tprefix + \\\\\\\"[\\\\\\\" + ( typeof v === \\\\\\\"object\\\\\\\" && v != null ? i : \\\\\\\"\\\\\\\" ) + \\\\\\\"]\\\\\\\",\\n\\t\\t\\t\\t\\tv,\\n\\t\\t\\t\\t\\ttraditional,\\n\\t\\t\\t\\t\\tadd\\n\\t\\t\\t\\t);\\n\\t\\t\\t}\\n\\t\\t} );\\n\\n\\t} else if ( !traditional && toType( obj ) === \\\\\\\"object\\\\\\\" ) {\\n\\n\\t\\t// Serialize object item.\\n\\t\\tfor ( name in obj ) {\\n\\t\\t\\tbuildParams( prefix + \\\\\\\"[\\\\\\\" + name + \\\\\\\"]\\\\\\\", obj[ name ], traditional, add );\\n\\t\\t}\\n\\n\\t} else {\\n\\n\\t\\t// Serialize scalar item.\\n\\t\\tadd( prefix, obj );\\n\\t}\\n}\\n\\n// Serialize an array of form elements or a set of\\n// key/values into a query string\\njQuery.param = function( a, traditional ) {\\n\\tvar prefix,\\n\\t\\ts = [],\\n\\t\\tadd = function( key, valueOrFunction ) {\\n\\n\\t\\t\\t// If value is a function, invoke it and use its return value\\n\\t\\t\\tvar value = isFunction( valueOrFunction ) ?\\n\\t\\t\\t\\tvalueOrFunction() :\\n\\t\\t\\t\\tvalueOrFunction;\\n\\n\\t\\t\\ts[ s.length ] = encodeURIComponent( key ) + \\\\\\\"=\\\\\\\" +\\n\\t\\t\\t\\tencodeURIComponent( value == null ? \\\\\\\"\\\\\\\" : value );\\n\\t\\t};\\n\\n\\tif ( a == null ) {\\n\\t\\treturn \\\\\\\"\\\\\\\";\\n\\t}\\n\\n\\t// If an array was passed in, assume that it is an array of form elements.\\n\\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\\n\\n\\t\\t// Serialize the form elements\\n\\t\\tjQuery.each( a, function() {\\n\\t\\t\\tadd( this.name, this.value );\\n\\t\\t} );\\n\\n\\t} else {\\n\\n\\t\\t// If traditional, encode the \\\\\\\"old\\\\\\\" way (the way 1.3.2 or older\\n\\t\\t// did it), otherwise encode params recursively.\\n\\t\\tfor ( prefix in a ) {\\n\\t\\t\\tbuildParams( prefix, a[ prefix ], traditional, add );\\n\\t\\t}\\n\\t}\\n\\n\\t// Return the resulting serialization\\n\\treturn s.join( \\\\\\\"&\\\\\\\" );\\n};\\n\\njQuery.fn.extend( {\\n\\tserialize: function() {\\n\\t\\treturn jQuery.param( this.serializeArray() );\\n\\t},\\n\\tserializeArray: function() {\\n\\t\\treturn this.map( function() {\\n\\n\\t\\t\\t// Can add propHook for \\\\\\\"elements\\\\\\\" to filter or add form elements\\n\\t\\t\\tvar elements = jQuery.prop( this, \\\\\\\"elements\\\\\\\" );\\n\\t\\t\\treturn elements ? jQuery.makeArray( elements ) : this;\\n\\t\\t} )\\n\\t\\t.filter( function() {\\n\\t\\t\\tvar type = this.type;\\n\\n\\t\\t\\t// Use .is( \\\\\\\":disabled\\\\\\\" ) so that fieldset[disabled] works\\n\\t\\t\\treturn this.name && !jQuery( this ).is( \\\\\\\":disabled\\\\\\\" ) &&\\n\\t\\t\\t\\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\\n\\t\\t\\t\\t( this.checked || !rcheckableType.test( type ) );\\n\\t\\t} )\\n\\t\\t.map( function( _i, elem ) {\\n\\t\\t\\tvar val = jQuery( this ).val();\\n\\n\\t\\t\\tif ( val == null ) {\\n\\t\\t\\t\\treturn null;\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( Array.isArray( val ) ) {\\n\\t\\t\\t\\treturn jQuery.map( val, function( val ) {\\n\\t\\t\\t\\t\\treturn { name: elem.name, value: val.replace( rCRLF, \\\\\\\"\\\\r\\\\n\\\\\\\" ) };\\n\\t\\t\\t\\t} );\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn { name: elem.name, value: val.replace( rCRLF, \\\\\\\"\\\\r\\\\n\\\\\\\" ) };\\n\\t\\t} ).get();\\n\\t}\\n} );\\n\\n\\nvar\\n\\tr20 = /%20/g,\\n\\trhash = /#.*$/,\\n\\trantiCache = /([?&])_=[^&]*/,\\n\\trheaders = /^(.*?):[ \\\\t]*([^\\\\r\\\\n]*)$/mg,\\n\\n\\t// #7653, #8125, #8152: local protocol detection\\n\\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\\n\\trnoContent = /^(?:GET|HEAD)$/,\\n\\trprotocol = /^\\\\/\\\\//,\\n\\n\\t/* Prefilters\\n\\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\\n\\t * 2) These are called:\\n\\t *    - BEFORE asking for a transport\\n\\t *    - AFTER param serialization (s.data is a string if s.processData is true)\\n\\t * 3) key is the dataType\\n\\t * 4) the catchall symbol \\\\\\\"*\\\\\\\" can be used\\n\\t * 5) execution will start with transport dataType and THEN continue down to \\\\\\\"*\\\\\\\" if needed\\n\\t */\\n\\tprefilters = {},\\n\\n\\t/* Transports bindings\\n\\t * 1) key is the dataType\\n\\t * 2) the catchall symbol \\\\\\\"*\\\\\\\" can be used\\n\\t * 3) selection will start with transport dataType and THEN go to \\\\\\\"*\\\\\\\" if needed\\n\\t */\\n\\ttransports = {},\\n\\n\\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\\n\\tallTypes = \\\\\\\"*/\\\\\\\".concat( \\\\\\\"*\\\\\\\" ),\\n\\n\\t// Anchor tag for parsing the document origin\\n\\toriginAnchor = document.createElement( \\\\\\\"a\\\\\\\" );\\n\\toriginAnchor.href = location.href;\\n\\n// Base \\\\\\\"constructor\\\\\\\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\\nfunction addToPrefiltersOrTransports( structure ) {\\n\\n\\t// dataTypeExpression is optional and defaults to \\\\\\\"*\\\\\\\"\\n\\treturn function( dataTypeExpression, func ) {\\n\\n\\t\\tif ( typeof dataTypeExpression !== \\\\\\\"string\\\\\\\" ) {\\n\\t\\t\\tfunc = dataTypeExpression;\\n\\t\\t\\tdataTypeExpression = \\\\\\\"*\\\\\\\";\\n\\t\\t}\\n\\n\\t\\tvar dataType,\\n\\t\\t\\ti = 0,\\n\\t\\t\\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\\n\\n\\t\\tif ( isFunction( func ) ) {\\n\\n\\t\\t\\t// For each dataType in the dataTypeExpression\\n\\t\\t\\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\\n\\n\\t\\t\\t\\t// Prepend if requested\\n\\t\\t\\t\\tif ( dataType[ 0 ] === \\\\\\\"+\\\\\\\" ) {\\n\\t\\t\\t\\t\\tdataType = dataType.slice( 1 ) || \\\\\\\"*\\\\\\\";\\n\\t\\t\\t\\t\\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\\n\\n\\t\\t\\t\\t// Otherwise append\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t};\\n}\\n\\n// Base inspection function for prefilters and transports\\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\\n\\n\\tvar inspected = {},\\n\\t\\tseekingTransport = ( structure === transports );\\n\\n\\tfunction inspect( dataType ) {\\n\\t\\tvar selected;\\n\\t\\tinspected[ dataType ] = true;\\n\\t\\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\\n\\t\\t\\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\\n\\t\\t\\tif ( typeof dataTypeOrTransport === \\\\\\\"string\\\\\\\" &&\\n\\t\\t\\t\\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\\n\\n\\t\\t\\t\\toptions.dataTypes.unshift( dataTypeOrTransport );\\n\\t\\t\\t\\tinspect( dataTypeOrTransport );\\n\\t\\t\\t\\treturn false;\\n\\t\\t\\t} else if ( seekingTransport ) {\\n\\t\\t\\t\\treturn !( selected = dataTypeOrTransport );\\n\\t\\t\\t}\\n\\t\\t} );\\n\\t\\treturn selected;\\n\\t}\\n\\n\\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \\\\\\\"*\\\\\\\" ] && inspect( \\\\\\\"*\\\\\\\" );\\n}\\n\\n// A special extend for ajax options\\n// that takes \\\\\\\"flat\\\\\\\" options (not to be deep extended)\\n// Fixes #9887\\nfunction ajaxExtend( target, src ) {\\n\\tvar key, deep,\\n\\t\\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\\n\\n\\tfor ( key in src ) {\\n\\t\\tif ( src[ key ] !== undefined ) {\\n\\t\\t\\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\\n\\t\\t}\\n\\t}\\n\\tif ( deep ) {\\n\\t\\tjQuery.extend( true, target, deep );\\n\\t}\\n\\n\\treturn target;\\n}\\n\\n/* Handles responses to an ajax request:\\n * - finds the right dataType (mediates between content-type and expected dataType)\\n * - returns the corresponding response\\n */\\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\\n\\n\\tvar ct, type, finalDataType, firstDataType,\\n\\t\\tcontents = s.contents,\\n\\t\\tdataTypes = s.dataTypes;\\n\\n\\t// Remove auto dataType and get content-type in the process\\n\\twhile ( dataTypes[ 0 ] === \\\\\\\"*\\\\\\\" ) {\\n\\t\\tdataTypes.shift();\\n\\t\\tif ( ct === undefined ) {\\n\\t\\t\\tct = s.mimeType || jqXHR.getResponseHeader( \\\\\\\"Content-Type\\\\\\\" );\\n\\t\\t}\\n\\t}\\n\\n\\t// Check if we're dealing with a known content-type\\n\\tif ( ct ) {\\n\\t\\tfor ( type in contents ) {\\n\\t\\t\\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\\n\\t\\t\\t\\tdataTypes.unshift( type );\\n\\t\\t\\t\\tbreak;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t// Check to see if we have a response for the expected dataType\\n\\tif ( dataTypes[ 0 ] in responses ) {\\n\\t\\tfinalDataType = dataTypes[ 0 ];\\n\\t} else {\\n\\n\\t\\t// Try convertible dataTypes\\n\\t\\tfor ( type in responses ) {\\n\\t\\t\\tif ( !dataTypes[ 0 ] || s.converters[ type + \\\\\\\" \\\\\\\" + dataTypes[ 0 ] ] ) {\\n\\t\\t\\t\\tfinalDataType = type;\\n\\t\\t\\t\\tbreak;\\n\\t\\t\\t}\\n\\t\\t\\tif ( !firstDataType ) {\\n\\t\\t\\t\\tfirstDataType = type;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Or just use first one\\n\\t\\tfinalDataType = finalDataType || firstDataType;\\n\\t}\\n\\n\\t// If we found a dataType\\n\\t// We add the dataType to the list if needed\\n\\t// and return the corresponding response\\n\\tif ( finalDataType ) {\\n\\t\\tif ( finalDataType !== dataTypes[ 0 ] ) {\\n\\t\\t\\tdataTypes.unshift( finalDataType );\\n\\t\\t}\\n\\t\\treturn responses[ finalDataType ];\\n\\t}\\n}\\n\\n/* Chain conversions given the request and the original response\\n * Also sets the responseXXX fields on the jqXHR instance\\n */\\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\\n\\tvar conv2, current, conv, tmp, prev,\\n\\t\\tconverters = {},\\n\\n\\t\\t// Work with a copy of dataTypes in case we need to modify it for conversion\\n\\t\\tdataTypes = s.dataTypes.slice();\\n\\n\\t// Create converters map with lowercased keys\\n\\tif ( dataTypes[ 1 ] ) {\\n\\t\\tfor ( conv in s.converters ) {\\n\\t\\t\\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\\n\\t\\t}\\n\\t}\\n\\n\\tcurrent = dataTypes.shift();\\n\\n\\t// Convert to each sequential dataType\\n\\twhile ( current ) {\\n\\n\\t\\tif ( s.responseFields[ current ] ) {\\n\\t\\t\\tjqXHR[ s.responseFields[ current ] ] = response;\\n\\t\\t}\\n\\n\\t\\t// Apply the dataFilter if provided\\n\\t\\tif ( !prev && isSuccess && s.dataFilter ) {\\n\\t\\t\\tresponse = s.dataFilter( response, s.dataType );\\n\\t\\t}\\n\\n\\t\\tprev = current;\\n\\t\\tcurrent = dataTypes.shift();\\n\\n\\t\\tif ( current ) {\\n\\n\\t\\t\\t// There's only work to do if current dataType is non-auto\\n\\t\\t\\tif ( current === \\\\\\\"*\\\\\\\" ) {\\n\\n\\t\\t\\t\\tcurrent = prev;\\n\\n\\t\\t\\t// Convert response if prev dataType is non-auto and differs from current\\n\\t\\t\\t} else if ( prev !== \\\\\\\"*\\\\\\\" && prev !== current ) {\\n\\n\\t\\t\\t\\t// Seek a direct converter\\n\\t\\t\\t\\tconv = converters[ prev + \\\\\\\" \\\\\\\" + current ] || converters[ \\\\\\\"* \\\\\\\" + current ];\\n\\n\\t\\t\\t\\t// If none found, seek a pair\\n\\t\\t\\t\\tif ( !conv ) {\\n\\t\\t\\t\\t\\tfor ( conv2 in converters ) {\\n\\n\\t\\t\\t\\t\\t\\t// If conv2 outputs current\\n\\t\\t\\t\\t\\t\\ttmp = conv2.split( \\\\\\\" \\\\\\\" );\\n\\t\\t\\t\\t\\t\\tif ( tmp[ 1 ] === current ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t// If prev can be converted to accepted input\\n\\t\\t\\t\\t\\t\\t\\tconv = converters[ prev + \\\\\\\" \\\\\\\" + tmp[ 0 ] ] ||\\n\\t\\t\\t\\t\\t\\t\\t\\tconverters[ \\\\\\\"* \\\\\\\" + tmp[ 0 ] ];\\n\\t\\t\\t\\t\\t\\t\\tif ( conv ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t// Condense equivalence converters\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( conv === true ) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tconv = converters[ conv2 ];\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t// Otherwise, insert the intermediate dataType\\n\\t\\t\\t\\t\\t\\t\\t\\t} else if ( converters[ conv2 ] !== true ) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tcurrent = tmp[ 0 ];\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tdataTypes.unshift( tmp[ 1 ] );\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Apply converter (if not an equivalence)\\n\\t\\t\\t\\tif ( conv !== true ) {\\n\\n\\t\\t\\t\\t\\t// Unless errors are allowed to bubble, catch and return them\\n\\t\\t\\t\\t\\tif ( conv && s.throws ) {\\n\\t\\t\\t\\t\\t\\tresponse = conv( response );\\n\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\ttry {\\n\\t\\t\\t\\t\\t\\t\\tresponse = conv( response );\\n\\t\\t\\t\\t\\t\\t} catch ( e ) {\\n\\t\\t\\t\\t\\t\\t\\treturn {\\n\\t\\t\\t\\t\\t\\t\\t\\tstate: \\\\\\\"parsererror\\\\\\\",\\n\\t\\t\\t\\t\\t\\t\\t\\terror: conv ? e : \\\\\\\"No conversion from \\\\\\\" + prev + \\\\\\\" to \\\\\\\" + current\\n\\t\\t\\t\\t\\t\\t\\t};\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\treturn { state: \\\\\\\"success\\\\\\\", data: response };\\n}\\n\\njQuery.extend( {\\n\\n\\t// Counter for holding the number of active queries\\n\\tactive: 0,\\n\\n\\t// Last-Modified header cache for next request\\n\\tlastModified: {},\\n\\tetag: {},\\n\\n\\tajaxSettings: {\\n\\t\\turl: location.href,\\n\\t\\ttype: \\\\\\\"GET\\\\\\\",\\n\\t\\tisLocal: rlocalProtocol.test( location.protocol ),\\n\\t\\tglobal: true,\\n\\t\\tprocessData: true,\\n\\t\\tasync: true,\\n\\t\\tcontentType: \\\\\\\"application/x-www-form-urlencoded; charset=UTF-8\\\\\\\",\\n\\n\\t\\t/*\\n\\t\\ttimeout: 0,\\n\\t\\tdata: null,\\n\\t\\tdataType: null,\\n\\t\\tusername: null,\\n\\t\\tpassword: null,\\n\\t\\tcache: null,\\n\\t\\tthrows: false,\\n\\t\\ttraditional: false,\\n\\t\\theaders: {},\\n\\t\\t*/\\n\\n\\t\\taccepts: {\\n\\t\\t\\t\\\\\\\"*\\\\\\\": allTypes,\\n\\t\\t\\ttext: \\\\\\\"text/plain\\\\\\\",\\n\\t\\t\\thtml: \\\\\\\"text/html\\\\\\\",\\n\\t\\t\\txml: \\\\\\\"application/xml, text/xml\\\\\\\",\\n\\t\\t\\tjson: \\\\\\\"application/json, text/javascript\\\\\\\"\\n\\t\\t},\\n\\n\\t\\tcontents: {\\n\\t\\t\\txml: /\\\\bxml\\\\b/,\\n\\t\\t\\thtml: /\\\\bhtml/,\\n\\t\\t\\tjson: /\\\\bjson\\\\b/\\n\\t\\t},\\n\\n\\t\\tresponseFields: {\\n\\t\\t\\txml: \\\\\\\"responseXML\\\\\\\",\\n\\t\\t\\ttext: \\\\\\\"responseText\\\\\\\",\\n\\t\\t\\tjson: \\\\\\\"responseJSON\\\\\\\"\\n\\t\\t},\\n\\n\\t\\t// Data converters\\n\\t\\t// Keys separate source (or catchall \\\\\\\"*\\\\\\\") and destination types with a single space\\n\\t\\tconverters: {\\n\\n\\t\\t\\t// Convert anything to text\\n\\t\\t\\t\\\\\\\"* text\\\\\\\": String,\\n\\n\\t\\t\\t// Text to html (true = no transformation)\\n\\t\\t\\t\\\\\\\"text html\\\\\\\": true,\\n\\n\\t\\t\\t// Evaluate text as a json expression\\n\\t\\t\\t\\\\\\\"text json\\\\\\\": JSON.parse,\\n\\n\\t\\t\\t// Parse text as xml\\n\\t\\t\\t\\\\\\\"text xml\\\\\\\": jQuery.parseXML\\n\\t\\t},\\n\\n\\t\\t// For options that shouldn't be deep extended:\\n\\t\\t// you can add your own custom options here if\\n\\t\\t// and when you create one that shouldn't be\\n\\t\\t// deep extended (see ajaxExtend)\\n\\t\\tflatOptions: {\\n\\t\\t\\turl: true,\\n\\t\\t\\tcontext: true\\n\\t\\t}\\n\\t},\\n\\n\\t// Creates a full fledged settings object into target\\n\\t// with both ajaxSettings and settings fields.\\n\\t// If target is omitted, writes into ajaxSettings.\\n\\tajaxSetup: function( target, settings ) {\\n\\t\\treturn settings ?\\n\\n\\t\\t\\t// Building a settings object\\n\\t\\t\\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\\n\\n\\t\\t\\t// Extending ajaxSettings\\n\\t\\t\\tajaxExtend( jQuery.ajaxSettings, target );\\n\\t},\\n\\n\\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\\n\\tajaxTransport: addToPrefiltersOrTransports( transports ),\\n\\n\\t// Main method\\n\\tajax: function( url, options ) {\\n\\n\\t\\t// If url is an object, simulate pre-1.5 signature\\n\\t\\tif ( typeof url === \\\\\\\"object\\\\\\\" ) {\\n\\t\\t\\toptions = url;\\n\\t\\t\\turl = undefined;\\n\\t\\t}\\n\\n\\t\\t// Force options to be an object\\n\\t\\toptions = options || {};\\n\\n\\t\\tvar transport,\\n\\n\\t\\t\\t// URL without anti-cache param\\n\\t\\t\\tcacheURL,\\n\\n\\t\\t\\t// Response headers\\n\\t\\t\\tresponseHeadersString,\\n\\t\\t\\tresponseHeaders,\\n\\n\\t\\t\\t// timeout handle\\n\\t\\t\\ttimeoutTimer,\\n\\n\\t\\t\\t// Url cleanup var\\n\\t\\t\\turlAnchor,\\n\\n\\t\\t\\t// Request state (becomes false upon send and true upon completion)\\n\\t\\t\\tcompleted,\\n\\n\\t\\t\\t// To know if global events are to be dispatched\\n\\t\\t\\tfireGlobals,\\n\\n\\t\\t\\t// Loop variable\\n\\t\\t\\ti,\\n\\n\\t\\t\\t// uncached part of the url\\n\\t\\t\\tuncached,\\n\\n\\t\\t\\t// Create the final options object\\n\\t\\t\\ts = jQuery.ajaxSetup( {}, options ),\\n\\n\\t\\t\\t// Callbacks context\\n\\t\\t\\tcallbackContext = s.context || s,\\n\\n\\t\\t\\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\\n\\t\\t\\tglobalEventContext = s.context &&\\n\\t\\t\\t\\t( callbackContext.nodeType || callbackContext.jquery ) ?\\n\\t\\t\\t\\t\\tjQuery( callbackContext ) :\\n\\t\\t\\t\\t\\tjQuery.event,\\n\\n\\t\\t\\t// Deferreds\\n\\t\\t\\tdeferred = jQuery.Deferred(),\\n\\t\\t\\tcompleteDeferred = jQuery.Callbacks( \\\\\\\"once memory\\\\\\\" ),\\n\\n\\t\\t\\t// Status-dependent callbacks\\n\\t\\t\\tstatusCode = s.statusCode || {},\\n\\n\\t\\t\\t// Headers (they are sent all at once)\\n\\t\\t\\trequestHeaders = {},\\n\\t\\t\\trequestHeadersNames = {},\\n\\n\\t\\t\\t// Default abort message\\n\\t\\t\\tstrAbort = \\\\\\\"canceled\\\\\\\",\\n\\n\\t\\t\\t// Fake xhr\\n\\t\\t\\tjqXHR = {\\n\\t\\t\\t\\treadyState: 0,\\n\\n\\t\\t\\t\\t// Builds headers hashtable if needed\\n\\t\\t\\t\\tgetResponseHeader: function( key ) {\\n\\t\\t\\t\\t\\tvar match;\\n\\t\\t\\t\\t\\tif ( completed ) {\\n\\t\\t\\t\\t\\t\\tif ( !responseHeaders ) {\\n\\t\\t\\t\\t\\t\\t\\tresponseHeaders = {};\\n\\t\\t\\t\\t\\t\\t\\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\\n\\t\\t\\t\\t\\t\\t\\t\\tresponseHeaders[ match[ 1 ].toLowerCase() + \\\\\\\" \\\\\\\" ] =\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t( responseHeaders[ match[ 1 ].toLowerCase() + \\\\\\\" \\\\\\\" ] || [] )\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t.concat( match[ 2 ] );\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\tmatch = responseHeaders[ key.toLowerCase() + \\\\\\\" \\\\\\\" ];\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\treturn match == null ? null : match.join( \\\\\\\", \\\\\\\" );\\n\\t\\t\\t\\t},\\n\\n\\t\\t\\t\\t// Raw string\\n\\t\\t\\t\\tgetAllResponseHeaders: function() {\\n\\t\\t\\t\\t\\treturn completed ? responseHeadersString : null;\\n\\t\\t\\t\\t},\\n\\n\\t\\t\\t\\t// Caches the header\\n\\t\\t\\t\\tsetRequestHeader: function( name, value ) {\\n\\t\\t\\t\\t\\tif ( completed == null ) {\\n\\t\\t\\t\\t\\t\\tname = requestHeadersNames[ name.toLowerCase() ] =\\n\\t\\t\\t\\t\\t\\t\\trequestHeadersNames[ name.toLowerCase() ] || name;\\n\\t\\t\\t\\t\\t\\trequestHeaders[ name ] = value;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\treturn this;\\n\\t\\t\\t\\t},\\n\\n\\t\\t\\t\\t// Overrides response content-type header\\n\\t\\t\\t\\toverrideMimeType: function( type ) {\\n\\t\\t\\t\\t\\tif ( completed == null ) {\\n\\t\\t\\t\\t\\t\\ts.mimeType = type;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\treturn this;\\n\\t\\t\\t\\t},\\n\\n\\t\\t\\t\\t// Status-dependent callbacks\\n\\t\\t\\t\\tstatusCode: function( map ) {\\n\\t\\t\\t\\t\\tvar code;\\n\\t\\t\\t\\t\\tif ( map ) {\\n\\t\\t\\t\\t\\t\\tif ( completed ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t// Execute the appropriate callbacks\\n\\t\\t\\t\\t\\t\\t\\tjqXHR.always( map[ jqXHR.status ] );\\n\\t\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\t\\t// Lazy-add the new callbacks in a way that preserves old ones\\n\\t\\t\\t\\t\\t\\t\\tfor ( code in map ) {\\n\\t\\t\\t\\t\\t\\t\\t\\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\treturn this;\\n\\t\\t\\t\\t},\\n\\n\\t\\t\\t\\t// Cancel the request\\n\\t\\t\\t\\tabort: function( statusText ) {\\n\\t\\t\\t\\t\\tvar finalText = statusText || strAbort;\\n\\t\\t\\t\\t\\tif ( transport ) {\\n\\t\\t\\t\\t\\t\\ttransport.abort( finalText );\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tdone( 0, finalText );\\n\\t\\t\\t\\t\\treturn this;\\n\\t\\t\\t\\t}\\n\\t\\t\\t};\\n\\n\\t\\t// Attach deferreds\\n\\t\\tdeferred.promise( jqXHR );\\n\\n\\t\\t// Add protocol if not provided (prefilters might expect it)\\n\\t\\t// Handle falsy url in the settings object (#10093: consistency with old signature)\\n\\t\\t// We also use the url parameter if available\\n\\t\\ts.url = ( ( url || s.url || location.href ) + \\\\\\\"\\\\\\\" )\\n\\t\\t\\t.replace( rprotocol, location.protocol + \\\\\\\"//\\\\\\\" );\\n\\n\\t\\t// Alias method option to type as per ticket #12004\\n\\t\\ts.type = options.method || options.type || s.method || s.type;\\n\\n\\t\\t// Extract dataTypes list\\n\\t\\ts.dataTypes = ( s.dataType || \\\\\\\"*\\\\\\\" ).toLowerCase().match( rnothtmlwhite ) || [ \\\\\\\"\\\\\\\" ];\\n\\n\\t\\t// A cross-domain request is in order when the origin doesn't match the current origin.\\n\\t\\tif ( s.crossDomain == null ) {\\n\\t\\t\\turlAnchor = document.createElement( \\\\\\\"a\\\\\\\" );\\n\\n\\t\\t\\t// Support: IE <=8 - 11, Edge 12 - 15\\n\\t\\t\\t// IE throws exception on accessing the href property if url is malformed,\\n\\t\\t\\t// e.g. http://example.com:80x/\\n\\t\\t\\ttry {\\n\\t\\t\\t\\turlAnchor.href = s.url;\\n\\n\\t\\t\\t\\t// Support: IE <=8 - 11 only\\n\\t\\t\\t\\t// Anchor's host property isn't correctly set when s.url is relative\\n\\t\\t\\t\\turlAnchor.href = urlAnchor.href;\\n\\t\\t\\t\\ts.crossDomain = originAnchor.protocol + \\\\\\\"//\\\\\\\" + originAnchor.host !==\\n\\t\\t\\t\\t\\turlAnchor.protocol + \\\\\\\"//\\\\\\\" + urlAnchor.host;\\n\\t\\t\\t} catch ( e ) {\\n\\n\\t\\t\\t\\t// If there is an error parsing the URL, assume it is crossDomain,\\n\\t\\t\\t\\t// it can be rejected by the transport if it is invalid\\n\\t\\t\\t\\ts.crossDomain = true;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Convert data if not already a string\\n\\t\\tif ( s.data && s.processData && typeof s.data !== \\\\\\\"string\\\\\\\" ) {\\n\\t\\t\\ts.data = jQuery.param( s.data, s.traditional );\\n\\t\\t}\\n\\n\\t\\t// Apply prefilters\\n\\t\\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\\n\\n\\t\\t// If request was aborted inside a prefilter, stop there\\n\\t\\tif ( completed ) {\\n\\t\\t\\treturn jqXHR;\\n\\t\\t}\\n\\n\\t\\t// We can fire global events as of now if asked to\\n\\t\\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\\n\\t\\tfireGlobals = jQuery.event && s.global;\\n\\n\\t\\t// Watch for a new set of requests\\n\\t\\tif ( fireGlobals && jQuery.active++ === 0 ) {\\n\\t\\t\\tjQuery.event.trigger( \\\\\\\"ajaxStart\\\\\\\" );\\n\\t\\t}\\n\\n\\t\\t// Uppercase the type\\n\\t\\ts.type = s.type.toUpperCase();\\n\\n\\t\\t// Determine if request has content\\n\\t\\ts.hasContent = !rnoContent.test( s.type );\\n\\n\\t\\t// Save the URL in case we're toying with the If-Modified-Since\\n\\t\\t// and/or If-None-Match header later on\\n\\t\\t// Remove hash to simplify url manipulation\\n\\t\\tcacheURL = s.url.replace( rhash, \\\\\\\"\\\\\\\" );\\n\\n\\t\\t// More options handling for requests with no content\\n\\t\\tif ( !s.hasContent ) {\\n\\n\\t\\t\\t// Remember the hash so we can put it back\\n\\t\\t\\tuncached = s.url.slice( cacheURL.length );\\n\\n\\t\\t\\t// If data is available and should be processed, append data to url\\n\\t\\t\\tif ( s.data && ( s.processData || typeof s.data === \\\\\\\"string\\\\\\\" ) ) {\\n\\t\\t\\t\\tcacheURL += ( rquery.test( cacheURL ) ? \\\\\\\"&\\\\\\\" : \\\\\\\"?\\\\\\\" ) + s.data;\\n\\n\\t\\t\\t\\t// #9682: remove data so that it's not used in an eventual retry\\n\\t\\t\\t\\tdelete s.data;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Add or update anti-cache param if needed\\n\\t\\t\\tif ( s.cache === false ) {\\n\\t\\t\\t\\tcacheURL = cacheURL.replace( rantiCache, \\\\\\\"$1\\\\\\\" );\\n\\t\\t\\t\\tuncached = ( rquery.test( cacheURL ) ? \\\\\\\"&\\\\\\\" : \\\\\\\"?\\\\\\\" ) + \\\\\\\"_=\\\\\\\" + ( nonce.guid++ ) +\\n\\t\\t\\t\\t\\tuncached;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\\n\\t\\t\\ts.url = cacheURL + uncached;\\n\\n\\t\\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\\n\\t\\t} else if ( s.data && s.processData &&\\n\\t\\t\\t( s.contentType || \\\\\\\"\\\\\\\" ).indexOf( \\\\\\\"application/x-www-form-urlencoded\\\\\\\" ) === 0 ) {\\n\\t\\t\\ts.data = s.data.replace( r20, \\\\\\\"+\\\\\\\" );\\n\\t\\t}\\n\\n\\t\\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\\n\\t\\tif ( s.ifModified ) {\\n\\t\\t\\tif ( jQuery.lastModified[ cacheURL ] ) {\\n\\t\\t\\t\\tjqXHR.setRequestHeader( \\\\\\\"If-Modified-Since\\\\\\\", jQuery.lastModified[ cacheURL ] );\\n\\t\\t\\t}\\n\\t\\t\\tif ( jQuery.etag[ cacheURL ] ) {\\n\\t\\t\\t\\tjqXHR.setRequestHeader( \\\\\\\"If-None-Match\\\\\\\", jQuery.etag[ cacheURL ] );\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Set the correct header, if data is being sent\\n\\t\\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\\n\\t\\t\\tjqXHR.setRequestHeader( \\\\\\\"Content-Type\\\\\\\", s.contentType );\\n\\t\\t}\\n\\n\\t\\t// Set the Accepts header for the server, depending on the dataType\\n\\t\\tjqXHR.setRequestHeader(\\n\\t\\t\\t\\\\\\\"Accept\\\\\\\",\\n\\t\\t\\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\\n\\t\\t\\t\\ts.accepts[ s.dataTypes[ 0 ] ] +\\n\\t\\t\\t\\t\\t( s.dataTypes[ 0 ] !== \\\\\\\"*\\\\\\\" ? \\\\\\\", \\\\\\\" + allTypes + \\\\\\\"; q=0.01\\\\\\\" : \\\\\\\"\\\\\\\" ) :\\n\\t\\t\\t\\ts.accepts[ \\\\\\\"*\\\\\\\" ]\\n\\t\\t);\\n\\n\\t\\t// Check for headers option\\n\\t\\tfor ( i in s.headers ) {\\n\\t\\t\\tjqXHR.setRequestHeader( i, s.headers[ i ] );\\n\\t\\t}\\n\\n\\t\\t// Allow custom headers/mimetypes and early abort\\n\\t\\tif ( s.beforeSend &&\\n\\t\\t\\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\\n\\n\\t\\t\\t// Abort if not done already and return\\n\\t\\t\\treturn jqXHR.abort();\\n\\t\\t}\\n\\n\\t\\t// Aborting is no longer a cancellation\\n\\t\\tstrAbort = \\\\\\\"abort\\\\\\\";\\n\\n\\t\\t// Install callbacks on deferreds\\n\\t\\tcompleteDeferred.add( s.complete );\\n\\t\\tjqXHR.done( s.success );\\n\\t\\tjqXHR.fail( s.error );\\n\\n\\t\\t// Get transport\\n\\t\\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\\n\\n\\t\\t// If no transport, we auto-abort\\n\\t\\tif ( !transport ) {\\n\\t\\t\\tdone( -1, \\\\\\\"No Transport\\\\\\\" );\\n\\t\\t} else {\\n\\t\\t\\tjqXHR.readyState = 1;\\n\\n\\t\\t\\t// Send global event\\n\\t\\t\\tif ( fireGlobals ) {\\n\\t\\t\\t\\tglobalEventContext.trigger( \\\\\\\"ajaxSend\\\\\\\", [ jqXHR, s ] );\\n\\t\\t\\t}\\n\\n\\t\\t\\t// If request was aborted inside ajaxSend, stop there\\n\\t\\t\\tif ( completed ) {\\n\\t\\t\\t\\treturn jqXHR;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Timeout\\n\\t\\t\\tif ( s.async && s.timeout > 0 ) {\\n\\t\\t\\t\\ttimeoutTimer = window.setTimeout( function() {\\n\\t\\t\\t\\t\\tjqXHR.abort( \\\\\\\"timeout\\\\\\\" );\\n\\t\\t\\t\\t}, s.timeout );\\n\\t\\t\\t}\\n\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tcompleted = false;\\n\\t\\t\\t\\ttransport.send( requestHeaders, done );\\n\\t\\t\\t} catch ( e ) {\\n\\n\\t\\t\\t\\t// Rethrow post-completion exceptions\\n\\t\\t\\t\\tif ( completed ) {\\n\\t\\t\\t\\t\\tthrow e;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Propagate others as results\\n\\t\\t\\t\\tdone( -1, e );\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Callback for when everything is done\\n\\t\\tfunction done( status, nativeStatusText, responses, headers ) {\\n\\t\\t\\tvar isSuccess, success, error, response, modified,\\n\\t\\t\\t\\tstatusText = nativeStatusText;\\n\\n\\t\\t\\t// Ignore repeat invocations\\n\\t\\t\\tif ( completed ) {\\n\\t\\t\\t\\treturn;\\n\\t\\t\\t}\\n\\n\\t\\t\\tcompleted = true;\\n\\n\\t\\t\\t// Clear timeout if it exists\\n\\t\\t\\tif ( timeoutTimer ) {\\n\\t\\t\\t\\twindow.clearTimeout( timeoutTimer );\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Dereference transport for early garbage collection\\n\\t\\t\\t// (no matter how long the jqXHR object will be used)\\n\\t\\t\\ttransport = undefined;\\n\\n\\t\\t\\t// Cache response headers\\n\\t\\t\\tresponseHeadersString = headers || \\\\\\\"\\\\\\\";\\n\\n\\t\\t\\t// Set readyState\\n\\t\\t\\tjqXHR.readyState = status > 0 ? 4 : 0;\\n\\n\\t\\t\\t// Determine if successful\\n\\t\\t\\tisSuccess = status >= 200 && status < 300 || status === 304;\\n\\n\\t\\t\\t// Get response data\\n\\t\\t\\tif ( responses ) {\\n\\t\\t\\t\\tresponse = ajaxHandleResponses( s, jqXHR, responses );\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Use a noop converter for missing script\\n\\t\\t\\tif ( !isSuccess && jQuery.inArray( \\\\\\\"script\\\\\\\", s.dataTypes ) > -1 ) {\\n\\t\\t\\t\\ts.converters[ \\\\\\\"text script\\\\\\\" ] = function() {};\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Convert no matter what (that way responseXXX fields are always set)\\n\\t\\t\\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\\n\\n\\t\\t\\t// If successful, handle type chaining\\n\\t\\t\\tif ( isSuccess ) {\\n\\n\\t\\t\\t\\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\\n\\t\\t\\t\\tif ( s.ifModified ) {\\n\\t\\t\\t\\t\\tmodified = jqXHR.getResponseHeader( \\\\\\\"Last-Modified\\\\\\\" );\\n\\t\\t\\t\\t\\tif ( modified ) {\\n\\t\\t\\t\\t\\t\\tjQuery.lastModified[ cacheURL ] = modified;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tmodified = jqXHR.getResponseHeader( \\\\\\\"etag\\\\\\\" );\\n\\t\\t\\t\\t\\tif ( modified ) {\\n\\t\\t\\t\\t\\t\\tjQuery.etag[ cacheURL ] = modified;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// if no content\\n\\t\\t\\t\\tif ( status === 204 || s.type === \\\\\\\"HEAD\\\\\\\" ) {\\n\\t\\t\\t\\t\\tstatusText = \\\\\\\"nocontent\\\\\\\";\\n\\n\\t\\t\\t\\t// if not modified\\n\\t\\t\\t\\t} else if ( status === 304 ) {\\n\\t\\t\\t\\t\\tstatusText = \\\\\\\"notmodified\\\\\\\";\\n\\n\\t\\t\\t\\t// If we have data, let's convert it\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tstatusText = response.state;\\n\\t\\t\\t\\t\\tsuccess = response.data;\\n\\t\\t\\t\\t\\terror = response.error;\\n\\t\\t\\t\\t\\tisSuccess = !error;\\n\\t\\t\\t\\t}\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t// Extract error from statusText and normalize for non-aborts\\n\\t\\t\\t\\terror = statusText;\\n\\t\\t\\t\\tif ( status || !statusText ) {\\n\\t\\t\\t\\t\\tstatusText = \\\\\\\"error\\\\\\\";\\n\\t\\t\\t\\t\\tif ( status < 0 ) {\\n\\t\\t\\t\\t\\t\\tstatus = 0;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Set data for the fake xhr object\\n\\t\\t\\tjqXHR.status = status;\\n\\t\\t\\tjqXHR.statusText = ( nativeStatusText || statusText ) + \\\\\\\"\\\\\\\";\\n\\n\\t\\t\\t// Success/Error\\n\\t\\t\\tif ( isSuccess ) {\\n\\t\\t\\t\\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Status-dependent callbacks\\n\\t\\t\\tjqXHR.statusCode( statusCode );\\n\\t\\t\\tstatusCode = undefined;\\n\\n\\t\\t\\tif ( fireGlobals ) {\\n\\t\\t\\t\\tglobalEventContext.trigger( isSuccess ? \\\\\\\"ajaxSuccess\\\\\\\" : \\\\\\\"ajaxError\\\\\\\",\\n\\t\\t\\t\\t\\t[ jqXHR, s, isSuccess ? success : error ] );\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Complete\\n\\t\\t\\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\\n\\n\\t\\t\\tif ( fireGlobals ) {\\n\\t\\t\\t\\tglobalEventContext.trigger( \\\\\\\"ajaxComplete\\\\\\\", [ jqXHR, s ] );\\n\\n\\t\\t\\t\\t// Handle the global AJAX counter\\n\\t\\t\\t\\tif ( !( --jQuery.active ) ) {\\n\\t\\t\\t\\t\\tjQuery.event.trigger( \\\\\\\"ajaxStop\\\\\\\" );\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\treturn jqXHR;\\n\\t},\\n\\n\\tgetJSON: function( url, data, callback ) {\\n\\t\\treturn jQuery.get( url, data, callback, \\\\\\\"json\\\\\\\" );\\n\\t},\\n\\n\\tgetScript: function( url, callback ) {\\n\\t\\treturn jQuery.get( url, undefined, callback, \\\\\\\"script\\\\\\\" );\\n\\t}\\n} );\\n\\njQuery.each( [ \\\\\\\"get\\\\\\\", \\\\\\\"post\\\\\\\" ], function( _i, method ) {\\n\\tjQuery[ method ] = function( url, data, callback, type ) {\\n\\n\\t\\t// Shift arguments if data argument was omitted\\n\\t\\tif ( isFunction( data ) ) {\\n\\t\\t\\ttype = type || callback;\\n\\t\\t\\tcallback = data;\\n\\t\\t\\tdata = undefined;\\n\\t\\t}\\n\\n\\t\\t// The url can be an options object (which then must have .url)\\n\\t\\treturn jQuery.ajax( jQuery.extend( {\\n\\t\\t\\turl: url,\\n\\t\\t\\ttype: method,\\n\\t\\t\\tdataType: type,\\n\\t\\t\\tdata: data,\\n\\t\\t\\tsuccess: callback\\n\\t\\t}, jQuery.isPlainObject( url ) && url ) );\\n\\t};\\n} );\\n\\njQuery.ajaxPrefilter( function( s ) {\\n\\tvar i;\\n\\tfor ( i in s.headers ) {\\n\\t\\tif ( i.toLowerCase() === \\\\\\\"content-type\\\\\\\" ) {\\n\\t\\t\\ts.contentType = s.headers[ i ] || \\\\\\\"\\\\\\\";\\n\\t\\t}\\n\\t}\\n} );\\n\\n\\njQuery._evalUrl = function( url, options, doc ) {\\n\\treturn jQuery.ajax( {\\n\\t\\turl: url,\\n\\n\\t\\t// Make this explicit, since user can override this through ajaxSetup (#11264)\\n\\t\\ttype: \\\\\\\"GET\\\\\\\",\\n\\t\\tdataType: \\\\\\\"script\\\\\\\",\\n\\t\\tcache: true,\\n\\t\\tasync: false,\\n\\t\\tglobal: false,\\n\\n\\t\\t// Only evaluate the response if it is successful (gh-4126)\\n\\t\\t// dataFilter is not invoked for failure responses, so using it instead\\n\\t\\t// of the default converter is kludgy but it works.\\n\\t\\tconverters: {\\n\\t\\t\\t\\\\\\\"text script\\\\\\\": function() {}\\n\\t\\t},\\n\\t\\tdataFilter: function( response ) {\\n\\t\\t\\tjQuery.globalEval( response, options, doc );\\n\\t\\t}\\n\\t} );\\n};\\n\\n\\njQuery.fn.extend( {\\n\\twrapAll: function( html ) {\\n\\t\\tvar wrap;\\n\\n\\t\\tif ( this[ 0 ] ) {\\n\\t\\t\\tif ( isFunction( html ) ) {\\n\\t\\t\\t\\thtml = html.call( this[ 0 ] );\\n\\t\\t\\t}\\n\\n\\t\\t\\t// The elements to wrap the target around\\n\\t\\t\\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\\n\\n\\t\\t\\tif ( this[ 0 ].parentNode ) {\\n\\t\\t\\t\\twrap.insertBefore( this[ 0 ] );\\n\\t\\t\\t}\\n\\n\\t\\t\\twrap.map( function() {\\n\\t\\t\\t\\tvar elem = this;\\n\\n\\t\\t\\t\\twhile ( elem.firstElementChild ) {\\n\\t\\t\\t\\t\\telem = elem.firstElementChild;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\treturn elem;\\n\\t\\t\\t} ).append( this );\\n\\t\\t}\\n\\n\\t\\treturn this;\\n\\t},\\n\\n\\twrapInner: function( html ) {\\n\\t\\tif ( isFunction( html ) ) {\\n\\t\\t\\treturn this.each( function( i ) {\\n\\t\\t\\t\\tjQuery( this ).wrapInner( html.call( this, i ) );\\n\\t\\t\\t} );\\n\\t\\t}\\n\\n\\t\\treturn this.each( function() {\\n\\t\\t\\tvar self = jQuery( this ),\\n\\t\\t\\t\\tcontents = self.contents();\\n\\n\\t\\t\\tif ( contents.length ) {\\n\\t\\t\\t\\tcontents.wrapAll( html );\\n\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tself.append( html );\\n\\t\\t\\t}\\n\\t\\t} );\\n\\t},\\n\\n\\twrap: function( html ) {\\n\\t\\tvar htmlIsFunction = isFunction( html );\\n\\n\\t\\treturn this.each( function( i ) {\\n\\t\\t\\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\\n\\t\\t} );\\n\\t},\\n\\n\\tunwrap: function( selector ) {\\n\\t\\tthis.parent( selector ).not( \\\\\\\"body\\\\\\\" ).each( function() {\\n\\t\\t\\tjQuery( this ).replaceWith( this.childNodes );\\n\\t\\t} );\\n\\t\\treturn this;\\n\\t}\\n} );\\n\\n\\njQuery.expr.pseudos.hidden = function( elem ) {\\n\\treturn !jQuery.expr.pseudos.visible( elem );\\n};\\njQuery.expr.pseudos.visible = function( elem ) {\\n\\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\\n};\\n\\n\\n\\n\\njQuery.ajaxSettings.xhr = function() {\\n\\ttry {\\n\\t\\treturn new window.XMLHttpRequest();\\n\\t} catch ( e ) {}\\n};\\n\\nvar xhrSuccessStatus = {\\n\\n\\t\\t// File protocol always yields status code 0, assume 200\\n\\t\\t0: 200,\\n\\n\\t\\t// Support: IE <=9 only\\n\\t\\t// #1450: sometimes IE returns 1223 when it should be 204\\n\\t\\t1223: 204\\n\\t},\\n\\txhrSupported = jQuery.ajaxSettings.xhr();\\n\\nsupport.cors = !!xhrSupported && ( \\\\\\\"withCredentials\\\\\\\" in xhrSupported );\\nsupport.ajax = xhrSupported = !!xhrSupported;\\n\\njQuery.ajaxTransport( function( options ) {\\n\\tvar callback, errorCallback;\\n\\n\\t// Cross domain only allowed if supported through XMLHttpRequest\\n\\tif ( support.cors || xhrSupported && !options.crossDomain ) {\\n\\t\\treturn {\\n\\t\\t\\tsend: function( headers, complete ) {\\n\\t\\t\\t\\tvar i,\\n\\t\\t\\t\\t\\txhr = options.xhr();\\n\\n\\t\\t\\t\\txhr.open(\\n\\t\\t\\t\\t\\toptions.type,\\n\\t\\t\\t\\t\\toptions.url,\\n\\t\\t\\t\\t\\toptions.async,\\n\\t\\t\\t\\t\\toptions.username,\\n\\t\\t\\t\\t\\toptions.password\\n\\t\\t\\t\\t);\\n\\n\\t\\t\\t\\t// Apply custom fields if provided\\n\\t\\t\\t\\tif ( options.xhrFields ) {\\n\\t\\t\\t\\t\\tfor ( i in options.xhrFields ) {\\n\\t\\t\\t\\t\\t\\txhr[ i ] = options.xhrFields[ i ];\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Override mime type if needed\\n\\t\\t\\t\\tif ( options.mimeType && xhr.overrideMimeType ) {\\n\\t\\t\\t\\t\\txhr.overrideMimeType( options.mimeType );\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// X-Requested-With header\\n\\t\\t\\t\\t// For cross-domain requests, seeing as conditions for a preflight are\\n\\t\\t\\t\\t// akin to a jigsaw puzzle, we simply never set it to be sure.\\n\\t\\t\\t\\t// (it can always be set on a per-request basis or even using ajaxSetup)\\n\\t\\t\\t\\t// For same-domain requests, won't change header if already provided.\\n\\t\\t\\t\\tif ( !options.crossDomain && !headers[ \\\\\\\"X-Requested-With\\\\\\\" ] ) {\\n\\t\\t\\t\\t\\theaders[ \\\\\\\"X-Requested-With\\\\\\\" ] = \\\\\\\"XMLHttpRequest\\\\\\\";\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Set headers\\n\\t\\t\\t\\tfor ( i in headers ) {\\n\\t\\t\\t\\t\\txhr.setRequestHeader( i, headers[ i ] );\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Callback\\n\\t\\t\\t\\tcallback = function( type ) {\\n\\t\\t\\t\\t\\treturn function() {\\n\\t\\t\\t\\t\\t\\tif ( callback ) {\\n\\t\\t\\t\\t\\t\\t\\tcallback = errorCallback = xhr.onload =\\n\\t\\t\\t\\t\\t\\t\\t\\txhr.onerror = xhr.onabort = xhr.ontimeout =\\n\\t\\t\\t\\t\\t\\t\\t\\t\\txhr.onreadystatechange = null;\\n\\n\\t\\t\\t\\t\\t\\t\\tif ( type === \\\\\\\"abort\\\\\\\" ) {\\n\\t\\t\\t\\t\\t\\t\\t\\txhr.abort();\\n\\t\\t\\t\\t\\t\\t\\t} else if ( type === \\\\\\\"error\\\\\\\" ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t// Support: IE <=9 only\\n\\t\\t\\t\\t\\t\\t\\t\\t// On a manual native abort, IE9 throws\\n\\t\\t\\t\\t\\t\\t\\t\\t// errors on any property access that is not readyState\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( typeof xhr.status !== \\\\\\\"number\\\\\\\" ) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tcomplete( 0, \\\\\\\"error\\\\\\\" );\\n\\t\\t\\t\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tcomplete(\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t// File: protocol always yields status 0; see #8605, #14207\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\txhr.status,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\txhr.statusText\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t);\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\t\\t\\tcomplete(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\txhrSuccessStatus[ xhr.status ] || xhr.status,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\txhr.statusText,\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t// Support: IE <=9 only\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t// IE9 has no XHR2 but throws on binary (trac-11426)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t// For XHR2 non-text, let the caller handle it (gh-2498)\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t( xhr.responseType || \\\\\\\"text\\\\\\\" ) !== \\\\\\\"text\\\\\\\"  ||\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttypeof xhr.responseText !== \\\\\\\"string\\\\\\\" ?\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{ binary: xhr.response } :\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{ text: xhr.responseText },\\n\\t\\t\\t\\t\\t\\t\\t\\t\\txhr.getAllResponseHeaders()\\n\\t\\t\\t\\t\\t\\t\\t\\t);\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t};\\n\\t\\t\\t\\t};\\n\\n\\t\\t\\t\\t// Listen to events\\n\\t\\t\\t\\txhr.onload = callback();\\n\\t\\t\\t\\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \\\\\\\"error\\\\\\\" );\\n\\n\\t\\t\\t\\t// Support: IE 9 only\\n\\t\\t\\t\\t// Use onreadystatechange to replace onabort\\n\\t\\t\\t\\t// to handle uncaught aborts\\n\\t\\t\\t\\tif ( xhr.onabort !== undefined ) {\\n\\t\\t\\t\\t\\txhr.onabort = errorCallback;\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\txhr.onreadystatechange = function() {\\n\\n\\t\\t\\t\\t\\t\\t// Check readyState before timeout as it changes\\n\\t\\t\\t\\t\\t\\tif ( xhr.readyState === 4 ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t// Allow onerror to be called first,\\n\\t\\t\\t\\t\\t\\t\\t// but that will not handle a native abort\\n\\t\\t\\t\\t\\t\\t\\t// Also, save errorCallback to a variable\\n\\t\\t\\t\\t\\t\\t\\t// as xhr.onerror cannot be accessed\\n\\t\\t\\t\\t\\t\\t\\twindow.setTimeout( function() {\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( callback ) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\terrorCallback();\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\t} );\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t};\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Create the abort callback\\n\\t\\t\\t\\tcallback = callback( \\\\\\\"abort\\\\\\\" );\\n\\n\\t\\t\\t\\ttry {\\n\\n\\t\\t\\t\\t\\t// Do send the request (this may raise an exception)\\n\\t\\t\\t\\t\\txhr.send( options.hasContent && options.data || null );\\n\\t\\t\\t\\t} catch ( e ) {\\n\\n\\t\\t\\t\\t\\t// #14683: Only rethrow if this hasn't been notified as an error yet\\n\\t\\t\\t\\t\\tif ( callback ) {\\n\\t\\t\\t\\t\\t\\tthrow e;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t},\\n\\n\\t\\t\\tabort: function() {\\n\\t\\t\\t\\tif ( callback ) {\\n\\t\\t\\t\\t\\tcallback();\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t};\\n\\t}\\n} );\\n\\n\\n\\n\\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\\njQuery.ajaxPrefilter( function( s ) {\\n\\tif ( s.crossDomain ) {\\n\\t\\ts.contents.script = false;\\n\\t}\\n} );\\n\\n// Install script dataType\\njQuery.ajaxSetup( {\\n\\taccepts: {\\n\\t\\tscript: \\\\\\\"text/javascript, application/javascript, \\\\\\\" +\\n\\t\\t\\t\\\\\\\"application/ecmascript, application/x-ecmascript\\\\\\\"\\n\\t},\\n\\tcontents: {\\n\\t\\tscript: /\\\\b(?:java|ecma)script\\\\b/\\n\\t},\\n\\tconverters: {\\n\\t\\t\\\\\\\"text script\\\\\\\": function( text ) {\\n\\t\\t\\tjQuery.globalEval( text );\\n\\t\\t\\treturn text;\\n\\t\\t}\\n\\t}\\n} );\\n\\n// Handle cache's special case and crossDomain\\njQuery.ajaxPrefilter( \\\\\\\"script\\\\\\\", function( s ) {\\n\\tif ( s.cache === undefined ) {\\n\\t\\ts.cache = false;\\n\\t}\\n\\tif ( s.crossDomain ) {\\n\\t\\ts.type = \\\\\\\"GET\\\\\\\";\\n\\t}\\n} );\\n\\n// Bind script tag hack transport\\njQuery.ajaxTransport( \\\\\\\"script\\\\\\\", function( s ) {\\n\\n\\t// This transport only deals with cross domain or forced-by-attrs requests\\n\\tif ( s.crossDomain || s.scriptAttrs ) {\\n\\t\\tvar script, callback;\\n\\t\\treturn {\\n\\t\\t\\tsend: function( _, complete ) {\\n\\t\\t\\t\\tscript = jQuery( \\\\\\\"<script>\\\\\\\" )\\n\\t\\t\\t\\t\\t.attr( s.scriptAttrs || {} )\\n\\t\\t\\t\\t\\t.prop( { charset: s.scriptCharset, src: s.url } )\\n\\t\\t\\t\\t\\t.on( \\\\\\\"load error\\\\\\\", callback = function( evt ) {\\n\\t\\t\\t\\t\\t\\tscript.remove();\\n\\t\\t\\t\\t\\t\\tcallback = null;\\n\\t\\t\\t\\t\\t\\tif ( evt ) {\\n\\t\\t\\t\\t\\t\\t\\tcomplete( evt.type === \\\\\\\"error\\\\\\\" ? 404 : 200, evt.type );\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t} );\\n\\n\\t\\t\\t\\t// Use native DOM manipulation to avoid our domManip AJAX trickery\\n\\t\\t\\t\\tdocument.head.appendChild( script[ 0 ] );\\n\\t\\t\\t},\\n\\t\\t\\tabort: function() {\\n\\t\\t\\t\\tif ( callback ) {\\n\\t\\t\\t\\t\\tcallback();\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t};\\n\\t}\\n} );\\n\\n\\n\\n\\nvar oldCallbacks = [],\\n\\trjsonp = /(=)\\\\?(?=&|$)|\\\\?\\\\?/;\\n\\n// Default jsonp settings\\njQuery.ajaxSetup( {\\n\\tjsonp: \\\\\\\"callback\\\\\\\",\\n\\tjsonpCallback: function() {\\n\\t\\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \\\\\\\"_\\\\\\\" + ( nonce.guid++ ) );\\n\\t\\tthis[ callback ] = true;\\n\\t\\treturn callback;\\n\\t}\\n} );\\n\\n// Detect, normalize options and install callbacks for jsonp requests\\njQuery.ajaxPrefilter( \\\\\\\"json jsonp\\\\\\\", function( s, originalSettings, jqXHR ) {\\n\\n\\tvar callbackName, overwritten, responseContainer,\\n\\t\\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\\n\\t\\t\\t\\\\\\\"url\\\\\\\" :\\n\\t\\t\\ttypeof s.data === \\\\\\\"string\\\\\\\" &&\\n\\t\\t\\t\\t( s.contentType || \\\\\\\"\\\\\\\" )\\n\\t\\t\\t\\t\\t.indexOf( \\\\\\\"application/x-www-form-urlencoded\\\\\\\" ) === 0 &&\\n\\t\\t\\t\\trjsonp.test( s.data ) && \\\\\\\"data\\\\\\\"\\n\\t\\t);\\n\\n\\t// Handle iff the expected data type is \\\\\\\"jsonp\\\\\\\" or we have a parameter to set\\n\\tif ( jsonProp || s.dataTypes[ 0 ] === \\\\\\\"jsonp\\\\\\\" ) {\\n\\n\\t\\t// Get callback name, remembering preexisting value associated with it\\n\\t\\tcallbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?\\n\\t\\t\\ts.jsonpCallback() :\\n\\t\\t\\ts.jsonpCallback;\\n\\n\\t\\t// Insert callback into url or form data\\n\\t\\tif ( jsonProp ) {\\n\\t\\t\\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \\\\\\\"$1\\\\\\\" + callbackName );\\n\\t\\t} else if ( s.jsonp !== false ) {\\n\\t\\t\\ts.url += ( rquery.test( s.url ) ? \\\\\\\"&\\\\\\\" : \\\\\\\"?\\\\\\\" ) + s.jsonp + \\\\\\\"=\\\\\\\" + callbackName;\\n\\t\\t}\\n\\n\\t\\t// Use data converter to retrieve json after script execution\\n\\t\\ts.converters[ \\\\\\\"script json\\\\\\\" ] = function() {\\n\\t\\t\\tif ( !responseContainer ) {\\n\\t\\t\\t\\tjQuery.error( callbackName + \\\\\\\" was not called\\\\\\\" );\\n\\t\\t\\t}\\n\\t\\t\\treturn responseContainer[ 0 ];\\n\\t\\t};\\n\\n\\t\\t// Force json dataType\\n\\t\\ts.dataTypes[ 0 ] = \\\\\\\"json\\\\\\\";\\n\\n\\t\\t// Install callback\\n\\t\\toverwritten = window[ callbackName ];\\n\\t\\twindow[ callbackName ] = function() {\\n\\t\\t\\tresponseContainer = arguments;\\n\\t\\t};\\n\\n\\t\\t// Clean-up function (fires after converters)\\n\\t\\tjqXHR.always( function() {\\n\\n\\t\\t\\t// If previous value didn't exist - remove it\\n\\t\\t\\tif ( overwritten === undefined ) {\\n\\t\\t\\t\\tjQuery( window ).removeProp( callbackName );\\n\\n\\t\\t\\t// Otherwise restore preexisting value\\n\\t\\t\\t} else {\\n\\t\\t\\t\\twindow[ callbackName ] = overwritten;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Save back as free\\n\\t\\t\\tif ( s[ callbackName ] ) {\\n\\n\\t\\t\\t\\t// Make sure that re-using the options doesn't screw things around\\n\\t\\t\\t\\ts.jsonpCallback = originalSettings.jsonpCallback;\\n\\n\\t\\t\\t\\t// Save the callback name for future use\\n\\t\\t\\t\\toldCallbacks.push( callbackName );\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Call if it was a function and we have a response\\n\\t\\t\\tif ( responseContainer && isFunction( overwritten ) ) {\\n\\t\\t\\t\\toverwritten( responseContainer[ 0 ] );\\n\\t\\t\\t}\\n\\n\\t\\t\\tresponseContainer = overwritten = undefined;\\n\\t\\t} );\\n\\n\\t\\t// Delegate to script\\n\\t\\treturn \\\\\\\"script\\\\\\\";\\n\\t}\\n} );\\n\\n\\n\\n\\n// Support: Safari 8 only\\n// In Safari 8 documents created via document.implementation.createHTMLDocument\\n// collapse sibling forms: the second one becomes a child of the first one.\\n// Because of that, this security measure has to be disabled in Safari 8.\\n// https://bugs.webkit.org/show_bug.cgi?id=137337\\nsupport.createHTMLDocument = ( function() {\\n\\tvar body = document.implementation.createHTMLDocument( \\\\\\\"\\\\\\\" ).body;\\n\\tbody.innerHTML = \\\\\\\"<form></form><form></form>\\\\\\\";\\n\\treturn body.childNodes.length === 2;\\n} )();\\n\\n\\n// Argument \\\\\\\"data\\\\\\\" should be string of html\\n// context (optional): If specified, the fragment will be created in this context,\\n// defaults to document\\n// keepScripts (optional): If true, will include scripts passed in the html string\\njQuery.parseHTML = function( data, context, keepScripts ) {\\n\\tif ( typeof data !== \\\\\\\"string\\\\\\\" ) {\\n\\t\\treturn [];\\n\\t}\\n\\tif ( typeof context === \\\\\\\"boolean\\\\\\\" ) {\\n\\t\\tkeepScripts = context;\\n\\t\\tcontext = false;\\n\\t}\\n\\n\\tvar base, parsed, scripts;\\n\\n\\tif ( !context ) {\\n\\n\\t\\t// Stop scripts or inline event handlers from being executed immediately\\n\\t\\t// by using document.implementation\\n\\t\\tif ( support.createHTMLDocument ) {\\n\\t\\t\\tcontext = document.implementation.createHTMLDocument( \\\\\\\"\\\\\\\" );\\n\\n\\t\\t\\t// Set the base href for the created document\\n\\t\\t\\t// so any parsed elements with URLs\\n\\t\\t\\t// are based on the document's URL (gh-2965)\\n\\t\\t\\tbase = context.createElement( \\\\\\\"base\\\\\\\" );\\n\\t\\t\\tbase.href = document.location.href;\\n\\t\\t\\tcontext.head.appendChild( base );\\n\\t\\t} else {\\n\\t\\t\\tcontext = document;\\n\\t\\t}\\n\\t}\\n\\n\\tparsed = rsingleTag.exec( data );\\n\\tscripts = !keepScripts && [];\\n\\n\\t// Single tag\\n\\tif ( parsed ) {\\n\\t\\treturn [ context.createElement( parsed[ 1 ] ) ];\\n\\t}\\n\\n\\tparsed = buildFragment( [ data ], context, scripts );\\n\\n\\tif ( scripts && scripts.length ) {\\n\\t\\tjQuery( scripts ).remove();\\n\\t}\\n\\n\\treturn jQuery.merge( [], parsed.childNodes );\\n};\\n\\n\\n/**\\n * Load a url into a page\\n */\\njQuery.fn.load = function( url, params, callback ) {\\n\\tvar selector, type, response,\\n\\t\\tself = this,\\n\\t\\toff = url.indexOf( \\\\\\\" \\\\\\\" );\\n\\n\\tif ( off > -1 ) {\\n\\t\\tselector = stripAndCollapse( url.slice( off ) );\\n\\t\\turl = url.slice( 0, off );\\n\\t}\\n\\n\\t// If it's a function\\n\\tif ( isFunction( params ) ) {\\n\\n\\t\\t// We assume that it's the callback\\n\\t\\tcallback = params;\\n\\t\\tparams = undefined;\\n\\n\\t// Otherwise, build a param string\\n\\t} else if ( params && typeof params === \\\\\\\"object\\\\\\\" ) {\\n\\t\\ttype = \\\\\\\"POST\\\\\\\";\\n\\t}\\n\\n\\t// If we have elements to modify, make the request\\n\\tif ( self.length > 0 ) {\\n\\t\\tjQuery.ajax( {\\n\\t\\t\\turl: url,\\n\\n\\t\\t\\t// If \\\\\\\"type\\\\\\\" variable is undefined, then \\\\\\\"GET\\\\\\\" method will be used.\\n\\t\\t\\t// Make value of this field explicit since\\n\\t\\t\\t// user can override it through ajaxSetup method\\n\\t\\t\\ttype: type || \\\\\\\"GET\\\\\\\",\\n\\t\\t\\tdataType: \\\\\\\"html\\\\\\\",\\n\\t\\t\\tdata: params\\n\\t\\t} ).done( function( responseText ) {\\n\\n\\t\\t\\t// Save response for use in complete callback\\n\\t\\t\\tresponse = arguments;\\n\\n\\t\\t\\tself.html( selector ?\\n\\n\\t\\t\\t\\t// If a selector was specified, locate the right elements in a dummy div\\n\\t\\t\\t\\t// Exclude scripts to avoid IE 'Permission Denied' errors\\n\\t\\t\\t\\tjQuery( \\\\\\\"<div>\\\\\\\" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\\n\\n\\t\\t\\t\\t// Otherwise use the full result\\n\\t\\t\\t\\tresponseText );\\n\\n\\t\\t// If the request succeeds, this function gets \\\\\\\"data\\\\\\\", \\\\\\\"status\\\\\\\", \\\\\\\"jqXHR\\\\\\\"\\n\\t\\t// but they are ignored because response was set above.\\n\\t\\t// If it fails, this function gets \\\\\\\"jqXHR\\\\\\\", \\\\\\\"status\\\\\\\", \\\\\\\"error\\\\\\\"\\n\\t\\t} ).always( callback && function( jqXHR, status ) {\\n\\t\\t\\tself.each( function() {\\n\\t\\t\\t\\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\\n\\t\\t\\t} );\\n\\t\\t} );\\n\\t}\\n\\n\\treturn this;\\n};\\n\\n\\n\\n\\njQuery.expr.pseudos.animated = function( elem ) {\\n\\treturn jQuery.grep( jQuery.timers, function( fn ) {\\n\\t\\treturn elem === fn.elem;\\n\\t} ).length;\\n};\\n\\n\\n\\n\\njQuery.offset = {\\n\\tsetOffset: function( elem, options, i ) {\\n\\t\\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\\n\\t\\t\\tposition = jQuery.css( elem, \\\\\\\"position\\\\\\\" ),\\n\\t\\t\\tcurElem = jQuery( elem ),\\n\\t\\t\\tprops = {};\\n\\n\\t\\t// Set position first, in-case top/left are set even on static elem\\n\\t\\tif ( position === \\\\\\\"static\\\\\\\" ) {\\n\\t\\t\\telem.style.position = \\\\\\\"relative\\\\\\\";\\n\\t\\t}\\n\\n\\t\\tcurOffset = curElem.offset();\\n\\t\\tcurCSSTop = jQuery.css( elem, \\\\\\\"top\\\\\\\" );\\n\\t\\tcurCSSLeft = jQuery.css( elem, \\\\\\\"left\\\\\\\" );\\n\\t\\tcalculatePosition = ( position === \\\\\\\"absolute\\\\\\\" || position === \\\\\\\"fixed\\\\\\\" ) &&\\n\\t\\t\\t( curCSSTop + curCSSLeft ).indexOf( \\\\\\\"auto\\\\\\\" ) > -1;\\n\\n\\t\\t// Need to be able to calculate position if either\\n\\t\\t// top or left is auto and position is either absolute or fixed\\n\\t\\tif ( calculatePosition ) {\\n\\t\\t\\tcurPosition = curElem.position();\\n\\t\\t\\tcurTop = curPosition.top;\\n\\t\\t\\tcurLeft = curPosition.left;\\n\\n\\t\\t} else {\\n\\t\\t\\tcurTop = parseFloat( curCSSTop ) || 0;\\n\\t\\t\\tcurLeft = parseFloat( curCSSLeft ) || 0;\\n\\t\\t}\\n\\n\\t\\tif ( isFunction( options ) ) {\\n\\n\\t\\t\\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\\n\\t\\t\\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\\n\\t\\t}\\n\\n\\t\\tif ( options.top != null ) {\\n\\t\\t\\tprops.top = ( options.top - curOffset.top ) + curTop;\\n\\t\\t}\\n\\t\\tif ( options.left != null ) {\\n\\t\\t\\tprops.left = ( options.left - curOffset.left ) + curLeft;\\n\\t\\t}\\n\\n\\t\\tif ( \\\\\\\"using\\\\\\\" in options ) {\\n\\t\\t\\toptions.using.call( elem, props );\\n\\n\\t\\t} else {\\n\\t\\t\\tif ( typeof props.top === \\\\\\\"number\\\\\\\" ) {\\n\\t\\t\\t\\tprops.top += \\\\\\\"px\\\\\\\";\\n\\t\\t\\t}\\n\\t\\t\\tif ( typeof props.left === \\\\\\\"number\\\\\\\" ) {\\n\\t\\t\\t\\tprops.left += \\\\\\\"px\\\\\\\";\\n\\t\\t\\t}\\n\\t\\t\\tcurElem.css( props );\\n\\t\\t}\\n\\t}\\n};\\n\\njQuery.fn.extend( {\\n\\n\\t// offset() relates an element's border box to the document origin\\n\\toffset: function( options ) {\\n\\n\\t\\t// Preserve chaining for setter\\n\\t\\tif ( arguments.length ) {\\n\\t\\t\\treturn options === undefined ?\\n\\t\\t\\t\\tthis :\\n\\t\\t\\t\\tthis.each( function( i ) {\\n\\t\\t\\t\\t\\tjQuery.offset.setOffset( this, options, i );\\n\\t\\t\\t\\t} );\\n\\t\\t}\\n\\n\\t\\tvar rect, win,\\n\\t\\t\\telem = this[ 0 ];\\n\\n\\t\\tif ( !elem ) {\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\n\\t\\t// Return zeros for disconnected and hidden (display: none) elements (gh-2310)\\n\\t\\t// Support: IE <=11 only\\n\\t\\t// Running getBoundingClientRect on a\\n\\t\\t// disconnected node in IE throws an error\\n\\t\\tif ( !elem.getClientRects().length ) {\\n\\t\\t\\treturn { top: 0, left: 0 };\\n\\t\\t}\\n\\n\\t\\t// Get document-relative position by adding viewport scroll to viewport-relative gBCR\\n\\t\\trect = elem.getBoundingClientRect();\\n\\t\\twin = elem.ownerDocument.defaultView;\\n\\t\\treturn {\\n\\t\\t\\ttop: rect.top + win.pageYOffset,\\n\\t\\t\\tleft: rect.left + win.pageXOffset\\n\\t\\t};\\n\\t},\\n\\n\\t// position() relates an element's margin box to its offset parent's padding box\\n\\t// This corresponds to the behavior of CSS absolute positioning\\n\\tposition: function() {\\n\\t\\tif ( !this[ 0 ] ) {\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\n\\t\\tvar offsetParent, offset, doc,\\n\\t\\t\\telem = this[ 0 ],\\n\\t\\t\\tparentOffset = { top: 0, left: 0 };\\n\\n\\t\\t// position:fixed elements are offset from the viewport, which itself always has zero offset\\n\\t\\tif ( jQuery.css( elem, \\\\\\\"position\\\\\\\" ) === \\\\\\\"fixed\\\\\\\" ) {\\n\\n\\t\\t\\t// Assume position:fixed implies availability of getBoundingClientRect\\n\\t\\t\\toffset = elem.getBoundingClientRect();\\n\\n\\t\\t} else {\\n\\t\\t\\toffset = this.offset();\\n\\n\\t\\t\\t// Account for the *real* offset parent, which can be the document or its root element\\n\\t\\t\\t// when a statically positioned element is identified\\n\\t\\t\\tdoc = elem.ownerDocument;\\n\\t\\t\\toffsetParent = elem.offsetParent || doc.documentElement;\\n\\t\\t\\twhile ( offsetParent &&\\n\\t\\t\\t\\t( offsetParent === doc.body || offsetParent === doc.documentElement ) &&\\n\\t\\t\\t\\tjQuery.css( offsetParent, \\\\\\\"position\\\\\\\" ) === \\\\\\\"static\\\\\\\" ) {\\n\\n\\t\\t\\t\\toffsetParent = offsetParent.parentNode;\\n\\t\\t\\t}\\n\\t\\t\\tif ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {\\n\\n\\t\\t\\t\\t// Incorporate borders into its offset, since they are outside its content origin\\n\\t\\t\\t\\tparentOffset = jQuery( offsetParent ).offset();\\n\\t\\t\\t\\tparentOffset.top += jQuery.css( offsetParent, \\\\\\\"borderTopWidth\\\\\\\", true );\\n\\t\\t\\t\\tparentOffset.left += jQuery.css( offsetParent, \\\\\\\"borderLeftWidth\\\\\\\", true );\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Subtract parent offsets and element margins\\n\\t\\treturn {\\n\\t\\t\\ttop: offset.top - parentOffset.top - jQuery.css( elem, \\\\\\\"marginTop\\\\\\\", true ),\\n\\t\\t\\tleft: offset.left - parentOffset.left - jQuery.css( elem, \\\\\\\"marginLeft\\\\\\\", true )\\n\\t\\t};\\n\\t},\\n\\n\\t// This method will return documentElement in the following cases:\\n\\t// 1) For the element inside the iframe without offsetParent, this method will return\\n\\t//    documentElement of the parent window\\n\\t// 2) For the hidden or detached element\\n\\t// 3) For body or html element, i.e. in case of the html node - it will return itself\\n\\t//\\n\\t// but those exceptions were never presented as a real life use-cases\\n\\t// and might be considered as more preferable results.\\n\\t//\\n\\t// This logic, however, is not guaranteed and can change at any point in the future\\n\\toffsetParent: function() {\\n\\t\\treturn this.map( function() {\\n\\t\\t\\tvar offsetParent = this.offsetParent;\\n\\n\\t\\t\\twhile ( offsetParent && jQuery.css( offsetParent, \\\\\\\"position\\\\\\\" ) === \\\\\\\"static\\\\\\\" ) {\\n\\t\\t\\t\\toffsetParent = offsetParent.offsetParent;\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn offsetParent || documentElement;\\n\\t\\t} );\\n\\t}\\n} );\\n\\n// Create scrollLeft and scrollTop methods\\njQuery.each( { scrollLeft: \\\\\\\"pageXOffset\\\\\\\", scrollTop: \\\\\\\"pageYOffset\\\\\\\" }, function( method, prop ) {\\n\\tvar top = \\\\\\\"pageYOffset\\\\\\\" === prop;\\n\\n\\tjQuery.fn[ method ] = function( val ) {\\n\\t\\treturn access( this, function( elem, method, val ) {\\n\\n\\t\\t\\t// Coalesce documents and windows\\n\\t\\t\\tvar win;\\n\\t\\t\\tif ( isWindow( elem ) ) {\\n\\t\\t\\t\\twin = elem;\\n\\t\\t\\t} else if ( elem.nodeType === 9 ) {\\n\\t\\t\\t\\twin = elem.defaultView;\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( val === undefined ) {\\n\\t\\t\\t\\treturn win ? win[ prop ] : elem[ method ];\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( win ) {\\n\\t\\t\\t\\twin.scrollTo(\\n\\t\\t\\t\\t\\t!top ? val : win.pageXOffset,\\n\\t\\t\\t\\t\\ttop ? val : win.pageYOffset\\n\\t\\t\\t\\t);\\n\\n\\t\\t\\t} else {\\n\\t\\t\\t\\telem[ method ] = val;\\n\\t\\t\\t}\\n\\t\\t}, method, val, arguments.length );\\n\\t};\\n} );\\n\\n// Support: Safari <=7 - 9.1, Chrome <=37 - 49\\n// Add the top/left cssHooks using jQuery.fn.position\\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\\n// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\\n// getComputedStyle returns percent when specified for top/left/bottom/right;\\n// rather than make the css module depend on the offset module, just check for it here\\njQuery.each( [ \\\\\\\"top\\\\\\\", \\\\\\\"left\\\\\\\" ], function( _i, prop ) {\\n\\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\\n\\t\\tfunction( elem, computed ) {\\n\\t\\t\\tif ( computed ) {\\n\\t\\t\\t\\tcomputed = curCSS( elem, prop );\\n\\n\\t\\t\\t\\t// If curCSS returns percentage, fallback to offset\\n\\t\\t\\t\\treturn rnumnonpx.test( computed ) ?\\n\\t\\t\\t\\t\\tjQuery( elem ).position()[ prop ] + \\\\\\\"px\\\\\\\" :\\n\\t\\t\\t\\t\\tcomputed;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t);\\n} );\\n\\n\\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\\njQuery.each( { Height: \\\\\\\"height\\\\\\\", Width: \\\\\\\"width\\\\\\\" }, function( name, type ) {\\n\\tjQuery.each( { padding: \\\\\\\"inner\\\\\\\" + name, content: type, \\\\\\\"\\\\\\\": \\\\\\\"outer\\\\\\\" + name },\\n\\t\\tfunction( defaultExtra, funcName ) {\\n\\n\\t\\t// Margin is only for outerHeight, outerWidth\\n\\t\\tjQuery.fn[ funcName ] = function( margin, value ) {\\n\\t\\t\\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \\\\\\\"boolean\\\\\\\" ),\\n\\t\\t\\t\\textra = defaultExtra || ( margin === true || value === true ? \\\\\\\"margin\\\\\\\" : \\\\\\\"border\\\\\\\" );\\n\\n\\t\\t\\treturn access( this, function( elem, type, value ) {\\n\\t\\t\\t\\tvar doc;\\n\\n\\t\\t\\t\\tif ( isWindow( elem ) ) {\\n\\n\\t\\t\\t\\t\\t// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\\n\\t\\t\\t\\t\\treturn funcName.indexOf( \\\\\\\"outer\\\\\\\" ) === 0 ?\\n\\t\\t\\t\\t\\t\\telem[ \\\\\\\"inner\\\\\\\" + name ] :\\n\\t\\t\\t\\t\\t\\telem.document.documentElement[ \\\\\\\"client\\\\\\\" + name ];\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Get document width or height\\n\\t\\t\\t\\tif ( elem.nodeType === 9 ) {\\n\\t\\t\\t\\t\\tdoc = elem.documentElement;\\n\\n\\t\\t\\t\\t\\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\\n\\t\\t\\t\\t\\t// whichever is greatest\\n\\t\\t\\t\\t\\treturn Math.max(\\n\\t\\t\\t\\t\\t\\telem.body[ \\\\\\\"scroll\\\\\\\" + name ], doc[ \\\\\\\"scroll\\\\\\\" + name ],\\n\\t\\t\\t\\t\\t\\telem.body[ \\\\\\\"offset\\\\\\\" + name ], doc[ \\\\\\\"offset\\\\\\\" + name ],\\n\\t\\t\\t\\t\\t\\tdoc[ \\\\\\\"client\\\\\\\" + name ]\\n\\t\\t\\t\\t\\t);\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\treturn value === undefined ?\\n\\n\\t\\t\\t\\t\\t// Get width or height on the element, requesting but not forcing parseFloat\\n\\t\\t\\t\\t\\tjQuery.css( elem, type, extra ) :\\n\\n\\t\\t\\t\\t\\t// Set width or height on the element\\n\\t\\t\\t\\t\\tjQuery.style( elem, type, value, extra );\\n\\t\\t\\t}, type, chainable ? margin : undefined, chainable );\\n\\t\\t};\\n\\t} );\\n} );\\n\\n\\njQuery.each( [\\n\\t\\\\\\\"ajaxStart\\\\\\\",\\n\\t\\\\\\\"ajaxStop\\\\\\\",\\n\\t\\\\\\\"ajaxComplete\\\\\\\",\\n\\t\\\\\\\"ajaxError\\\\\\\",\\n\\t\\\\\\\"ajaxSuccess\\\\\\\",\\n\\t\\\\\\\"ajaxSend\\\\\\\"\\n], function( _i, type ) {\\n\\tjQuery.fn[ type ] = function( fn ) {\\n\\t\\treturn this.on( type, fn );\\n\\t};\\n} );\\n\\n\\n\\n\\njQuery.fn.extend( {\\n\\n\\tbind: function( types, data, fn ) {\\n\\t\\treturn this.on( types, null, data, fn );\\n\\t},\\n\\tunbind: function( types, fn ) {\\n\\t\\treturn this.off( types, null, fn );\\n\\t},\\n\\n\\tdelegate: function( selector, types, data, fn ) {\\n\\t\\treturn this.on( types, selector, data, fn );\\n\\t},\\n\\tundelegate: function( selector, types, fn ) {\\n\\n\\t\\t// ( namespace ) or ( selector, types [, fn] )\\n\\t\\treturn arguments.length === 1 ?\\n\\t\\t\\tthis.off( selector, \\\\\\\"**\\\\\\\" ) :\\n\\t\\t\\tthis.off( types, selector || \\\\\\\"**\\\\\\\", fn );\\n\\t},\\n\\n\\thover: function( fnOver, fnOut ) {\\n\\t\\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\\n\\t}\\n} );\\n\\njQuery.each( ( \\\\\\\"blur focus focusin focusout resize scroll click dblclick \\\\\\\" +\\n\\t\\\\\\\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \\\\\\\" +\\n\\t\\\\\\\"change select submit keydown keypress keyup contextmenu\\\\\\\" ).split( \\\\\\\" \\\\\\\" ),\\n\\tfunction( _i, name ) {\\n\\n\\t\\t// Handle event binding\\n\\t\\tjQuery.fn[ name ] = function( data, fn ) {\\n\\t\\t\\treturn arguments.length > 0 ?\\n\\t\\t\\t\\tthis.on( name, null, data, fn ) :\\n\\t\\t\\t\\tthis.trigger( name );\\n\\t\\t};\\n\\t} );\\n\\n\\n\\n\\n// Support: Android <=4.0 only\\n// Make sure we trim BOM and NBSP\\nvar rtrim = /^[\\\\s\\\\uFEFF\\\\xA0]+|[\\\\s\\\\uFEFF\\\\xA0]+$/g;\\n\\n// Bind a function to a context, optionally partially applying any\\n// arguments.\\n// jQuery.proxy is deprecated to promote standards (specifically Function#bind)\\n// However, it is not slated for removal any time soon\\njQuery.proxy = function( fn, context ) {\\n\\tvar tmp, args, proxy;\\n\\n\\tif ( typeof context === \\\\\\\"string\\\\\\\" ) {\\n\\t\\ttmp = fn[ context ];\\n\\t\\tcontext = fn;\\n\\t\\tfn = tmp;\\n\\t}\\n\\n\\t// Quick check to determine if target is callable, in the spec\\n\\t// this throws a TypeError, but we will just return undefined.\\n\\tif ( !isFunction( fn ) ) {\\n\\t\\treturn undefined;\\n\\t}\\n\\n\\t// Simulated bind\\n\\targs = slice.call( arguments, 2 );\\n\\tproxy = function() {\\n\\t\\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\\n\\t};\\n\\n\\t// Set the guid of unique handler to the same of original handler, so it can be removed\\n\\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\\n\\n\\treturn proxy;\\n};\\n\\njQuery.holdReady = function( hold ) {\\n\\tif ( hold ) {\\n\\t\\tjQuery.readyWait++;\\n\\t} else {\\n\\t\\tjQuery.ready( true );\\n\\t}\\n};\\njQuery.isArray = Array.isArray;\\njQuery.parseJSON = JSON.parse;\\njQuery.nodeName = nodeName;\\njQuery.isFunction = isFunction;\\njQuery.isWindow = isWindow;\\njQuery.camelCase = camelCase;\\njQuery.type = toType;\\n\\njQuery.now = Date.now;\\n\\njQuery.isNumeric = function( obj ) {\\n\\n\\t// As of jQuery 3.0, isNumeric is limited to\\n\\t// strings and numbers (primitives or objects)\\n\\t// that can be coerced to finite numbers (gh-2662)\\n\\tvar type = jQuery.type( obj );\\n\\treturn ( type === \\\\\\\"number\\\\\\\" || type === \\\\\\\"string\\\\\\\" ) &&\\n\\n\\t\\t// parseFloat NaNs numeric-cast false positives (\\\\\\\"\\\\\\\")\\n\\t\\t// ...but misinterprets leading-number strings, particularly hex literals (\\\\\\\"0x...\\\\\\\")\\n\\t\\t// subtraction forces infinities to NaN\\n\\t\\t!isNaN( obj - parseFloat( obj ) );\\n};\\n\\njQuery.trim = function( text ) {\\n\\treturn text == null ?\\n\\t\\t\\\\\\\"\\\\\\\" :\\n\\t\\t( text + \\\\\\\"\\\\\\\" ).replace( rtrim, \\\\\\\"\\\\\\\" );\\n};\\n\\n\\n\\n// Register as a named AMD module, since jQuery can be concatenated with other\\n// files that may use define, but not via a proper concatenation script that\\n// understands anonymous AMD modules. A named AMD is safest and most robust\\n// way to register. Lowercase jquery is used because AMD module names are\\n// derived from file names, and jQuery is normally delivered in a lowercase\\n// file name. Do this after creating the global so that if an AMD module wants\\n// to call noConflict to hide this version of jQuery, it will work.\\n\\n// Note that for maximum portability, libraries that are not jQuery should\\n// declare themselves as anonymous modules, and avoid setting a global if an\\n// AMD loader is present. jQuery is a special case. For more information, see\\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\\n\\nif ( typeof define === \\\\\\\"function\\\\\\\" && define.amd ) {\\n\\tdefine( \\\\\\\"jquery\\\\\\\", [], function() {\\n\\t\\treturn jQuery;\\n\\t} );\\n}\\n\\n\\n\\n\\nvar\\n\\n\\t// Map over jQuery in case of overwrite\\n\\t_jQuery = window.jQuery,\\n\\n\\t// Map over the $ in case of overwrite\\n\\t_$ = window.$;\\n\\njQuery.noConflict = function( deep ) {\\n\\tif ( window.$ === jQuery ) {\\n\\t\\twindow.$ = _$;\\n\\t}\\n\\n\\tif ( deep && window.jQuery === jQuery ) {\\n\\t\\twindow.jQuery = _jQuery;\\n\\t}\\n\\n\\treturn jQuery;\\n};\\n\\n// Expose jQuery and $ identifiers, even in AMD\\n// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)\\n// and CommonJS for browser emulators (#13566)\\nif ( typeof noGlobal === \\\\\\\"undefined\\\\\\\" ) {\\n\\twindow.jQuery = window.$ = jQuery;\\n}\\n\\n\\n\\n\\nreturn jQuery;\\n} );\\n\"","status":200,"headers":{"age":"1630151","via":"1.1 varnish, 1.1 varnish","date":"Sat, 17 Aug 2024 03:21:10 GMT","etag":"W/\"28feccc0-463a1\"","vary":"Accept-Encoding","server":"nginx","x-cache":"HIT, HIT","x-timer":"S1723864870.338543,VS0,VE0","x-served-by":"cache-lga21959-LGA, cache-fra-etou8220069-FRA","content-type":"application/javascript; charset=utf-8","x-cache-hits":"25, 1328","accept-ranges":"bytes","cache-control":"public, max-age=31536000, stale-while-revalidate=604800","last-modified":"Fri, 18 Oct 1991 12:00:00 GMT","content-length":"84374","content-encoding":"gzip","access-control-allow-origin":"*"}},"type":2,"external":true,"timestamp":1723864870405},{"data":{"url":"https://min-api.cryptocompare.com/data/price?fsym=XTZ&tsyms=USD","host":"min-api.cryptocompare.com","path":"/data/price","type":"http","query":"?fsym=XTZ&tsyms=USD","method":"GET","headers":{"accept":"application/json, text/javascript, */*; q=0.01","referer":"https://arjunkrishna.github.io/","sec-ch-ua":"\"HeadlessChrome\";v=\"119\", \"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/119.0.6045.9 Safari/537.36","sec-ch-ua-mobile":"?0","sec-ch-ua-platform":"\"Linux\""},"fragment":"","postData":null,"protocol":"https:"},"type":1,"external":true,"timestamp":1723864870406},{"data":{"url":"https://arjunkrishna.github.io/cryptoPrices/Tezoslogo.png","body":"\"�PNG\\r\\n\\u001a\\n\\u0000\\u0000\\u0000\\rIHDR\\u0000\\u0000\\u0000d\\u0000\\u0000\\u0000�\\b\\u0002\\u0000\\u0000\\u0000�\\u0006��\\u0000\\u0000\\u0000\\tpHYs\\u0000\\u0000\\u0017\\u0012\\u0000\\u0000\\u0017\\u0012\\u0001g��R\\u0000\\u0000\\u000e�IDATx��itTE\\u0016�o�[�;�t\\u0012Z��\\u0006\\b\\t;�Ȯ�Q�Q�Q� \\\\\\\"��\\u0002st8�̠\\u001eA\\u001d�����\\\\\\\"�\\u001c\\u0015Gq���\\u001b[\\u0014\\u0015D%ʞ��!$�ٓN��j>4�,�T�~�t����t��{�nݺuo=D)\\u0005\\u001eպ�5*�?uI@٣�K�\\u0010�O��\\u0010/��Z:n����b-0e��3F�\\u0010\\u001b��Z\\u001d�G�6�:R�\\u001e#�Y��1��C�3�.xc���j54?�J�\\u0015kA�I\\u0006\\u0007\\u0014��p\\u00137,Y��3�>)\\u0011�\\f��0t��✋��A�u�\\u001d-��x\\u0019w�N;Z�#��t\\u0011�\\nj6t���\\u0013%�.%�\\u0015l�`���\\u0015�7Eaq(\\n�CQX\\u001c���P\\u0014\\u0016���8\\u0014�š(,\\u000eEaq(\\n�CQX\\u001c���P\\u0014\\u0016���8$�\\u0004x7\\u0001\\u001bK�9>L)h<��\\b��\\\\P0�%`��^���[��-1~Q:��5�\\u0017e� �Ƒ,tk��\\t\\u0000\\u0000\\u0014�\\u001a�y�J��\\u0014yx���\\u000eM_��q<�'�Ne��+S�\\u0011=����,�q�}�+�\\u001cibFQX>U���lk�+\\n˟j�0{����󼢰\\u0002ȥ����u\\n@\\u0014V@�Y�s��\\u0018\\u0019\\u0000@t�P0ef�@��u��\\u0004����>#\\u0005���+G�[ᵩҰ��&�\\u0014��������\\t\\u000b݌\\u001f\\u001e�\\u001b�:�[�\\u0017\\u0012�٩?���~�v\\u000b,�.7�\\u0002\\u0000Q\\u0012��\\u0002I��0B �|�D\\u001d:M�_�A*Ί\\u001a۔Gmt��U�\\u0002sW*��\\u0003\\u0000b-�ڴ��b�E)<����$�U����ӥK�y����l�z���\\u000e���\\u0006�HA����'ɳ_���x\\u001bZ�-\\r��Ӏڳeոa����d@yF�\\u001fRЎ-�\\u0002<�z�4�U9��ߦ<j��>���U%Ġק\\u0005&\\u0005�u\\u0018�?I�c��\\u001c6�p�4؇Go�vhY5���G*KT�\\u0018��Ȗ\\u0006tf���fY���/ԣ�\\u0002[Ub\\f,��A\\nڟe�nӿ�\\u0015�U%Ġ%9R?\\u001eR��`\\u0015��\\u0017�\\u0005vU����r������\\u0003��\\u001e\\u001eZ��\\u0002��%Ơ��r~R�n|\\u0016���գg\\u0003XU�X�8G2F\\n�\\r�����{\\u0002���\\u0018�([���\\u001a�=\\f��'Ȃ�\\u0003�m;�h�\\f9#9�<m�[V���[�*~���v�8;XR\\u0010�E(<��z�oT崣�3��IA�[�\\u0007?�\\u001b\\n��\\u001ex�\\\\\\\"3�͹�\\b��]����\\\\\\\"���� �T˪���V�~�l.��%9��� BaQ��֨Ee>]�ӎ\\u0016�H\\u0019)&�]D\\u000e�w�h~\\\\UR\\u001cZv�ܫ�����\\u0007k{\\u0011Y��s�%9В�V!\\u0005\\u0011\\u0007��������\\u001chٌ�\\\\\\\"\\u0005��t\\u0002��VK*���$\\u0007Z�j6�Q$�zw��i�wW��@Kg�iF�}aT�\\f�ߎ���4�F�\\u0019}=[Ӧ<�\\fX\\u0015ut�*�\\u000b�$\\u0007Z�#�kt�VRPJ���g��E\\u0002g,Ꚉ2R���g�� \\u0019\\u0001�(���5��\\n!\\u0018��_^��\\u001f%�6S����G\\u0001\\u0000�\\u0012\\f펯�+\\\\�\\u000f';�b\\u0016\\u0001��)�W��=WE)|�;@\\u001a�^�����C���0:\\r�>R\\u001c�\\u000b#C��\\u001dVq9}|���Q��Va�>�i��7\\u0005��\\u0014��/���[Xφn\\r�T+]&����\\\\u�R����0�\\u0017\\u0016\\u0005xu���պ?\\nJ��\\u0015ʜ\\u000f������\\u0017V^���� �w\\u0018D)l, �\\u0017�7�e��\\bS�U\\\\N�\\\\��\\u001f$�6��D\\u000e\\u001b�U�t��JZ]o��k�\\\\uf&�۟D���#,�\\n\\u000f�\\u0015u^P\\t\\u0018\\u0006w�Y\\u0003��B7g�9�T\\u0015�QD6\\u001f ��N�k9�\\u0011���;��\\u001c��d�$\\u001ca��^�s����\\u0004�~�0}��7��ğ�@Y\\u0003���B�\\u001b�\\u0017��7k��p [�G�\\t,�,��%�\\u000eV^����M<�$��\\u0003��W��:�FG�\\u0016�8T�˥§��\\u000b��ʘ�lC����ȍ���\\u0011v��\\u0017]�\\u0000\\u00141�\\u001f ��\\u0014��8�\\u0018n\\u001d.d����V\\u001b��\\u0002*7_��\\tO��K@��!W\\\\�\\u001e[�\\u0018�\\u001f$��ky�V)Ƚ�d\\u0007Z8M�2��9�RX��{%@��e�9\\u001f���L\\u0012��A��L1݌����|��\\u0012���6�\\u0010���Sk�ew��&�`aq\\u001d�X�\\u000e�;�:N��\\u0000�*�ޡ[E�v����\\u0010��n�NT��\\u0007��;�(Y�W�aP\\u0013{\\fv\\u0018�$p07z�VЀ=���R���:�s��O�\\t��كo\\u0000�\\u0004��Ęx�\\u0000/��j�\\u000e\\u0005\\u0013\\\\\\\"��\\u0004�O�kp�lP˗�v�\\u001b���K*�o�B|g,�?�u0���͖\\u0010&����)��\\u000f\\u001b�UPB���Ia\\u001f�j����e-:�|i�Oz�U�\\t�\\u00062T�7����X{cq9�����\\u0012\\u0006Nn�\\bfe�������̿`\\\\&�\\u001a�Ƒ�-,%�\\u0015q�Érz���SU��\\u0018;�~t\\u001aNg����\\u0017�!�m\\u0002�T'b��u\\u0002/�\\u000f�Bn�}'�]o+^�.�i��\\u0005\\f7\\ra\\r�J*趣�u�c\\u0004\\u0013�r� ;���7�:�u{�;�T�&��\\u0016�4�`\\u001fn�\\u0000�}4|����bN>�桘�+�Ս�\\u001b�4����(���@}0W��\\u0011�ޝ):�\\u0006\\u0003הxԲQ՗6��U\\u001d�,XqV43�ø\\b�E�h3�R6\\u0014讦>[�a{\\u0011yl�:�uw^��k��%�i#�����a��\\u001a7�=A�ą�mÅ�w�[�V�h�q2�Cb��T'�\\u0018�(��:z�\\u001c\\r�*�\\u0005xj����&v\\r��a(�\\u001c!C�c�`�\\\\\\\"�g��󦻊s�^��'�~�\\u001ef��_׊,\\u001do����c-L�U\\u0000�]L��\\u001c|Z\\u0012Z0I\\u000e��\\u0003�B\\u00009��i�Lx�v\\u000b�ud��\\u0003��N�ް\\u0018��_�]n��6!\\u00049c���Dc[�-��\\u0012�/:]M�j���;�\\u0019���-��\\u001e&�d���\\u001b�����0��s\\u0002�w�:�T�Vɔ�'�wgʟ���٢1v)�\\u0011B0�'~�F�'�!0�k\\\\\\\"�\\u0017\\u0016��\\u000e,\\u0000\\u00100L\\u0018*�8X�z��ۣ[�W\\u0019ڧ\\u001a�\\u0015��\\u001433��M*cJ���Z�� Q�+���X�I:p�l/\\\\\\\"�%��Yz���\\u0014�h�W�12�:��8k��7\\u0005�8�Z�\\u0010��V�2�\\u0006I\\u0002��\\u001b:�t\\u0002����\\r\\u0015u�\\u0013��*�R�[�ӎR\\u001c�\\u001e�7�Y%��PV�F�;\\u0002��\\u0018�\\u0010\\u0003]x���E��5��R[a6� y`1J�¸0$\\u0004\\\\\\\"\\u0004اj�.nX�f\\u0018��ŋ\\u001b�[�8�&��߾�W���V�(\\u0000xNk����v�\\nG��!��j\\u001d\\b�-\\u0007�����\\\\\\\"ڸ�(!\\u0006\\r�o\\u001d.�2Z&ˮ��<��mdYe���O��tV��\\r\\u0005��B}|?ቛE\\u0007�)߼*�٣휀��g���w����o�+���@��\\\\�d>\\u0004ՀJ}�\\u0001yU�\\u000e!��\\u0013xd��XcVXJ\\u001eo�WO\\u0017�3�d/B����X�oa.�\\u0002��B���V)XVu�W�\\n�S\\u0002�\\u0010\\u0013rX�lE?M�%�Uj��T�3�\\u000e~`\\u0017�B\\u001c��)��;z{\\u0011e<�K{Op��adO\\f!��/:GUnÂj\\u0017�\\t���C���\\u0011��\\u0015rXƦ6\\nPe��H(|��\\n��`O\\u0002:2�;�G���\\t�����RHaqe&\\u001b��S���a5+Q���(�\\f),c���6�\\u0014g&�*ׅZ��\\u001a�\\u000b7�߇\\u0014V\\u0007;J�����P�;����o��^��B\\u0000SF\\\\�|\\u000b),\\u0011�\\u0000�#�\\u0010�m��\\\\�V���-�f�;\\u0019_�~\\u0001Q�\\u001d���|�xE\\u0006��0�\\\\\\\"\\u0017�i���5+Sh�\\u0005\\u0017jXW�\\u0013d�b���h�D3��8@>�g5�\\u0001��\\u0003L���U�D�\\t�\\u0002jlo��]r0oni��g�ëXۭE\\u0001y�a\\u001b��\\u001c+n>�o���Ds��q\\u0019����%\\u0015t�{\\n�_\\u0007�IÄ�o�k��tD/��s�VRY@&��QD��)�\\t�>)hN���v�D�\\u000f]/�I�+\\u001a��P���F�]�\\u000e˷h3�+�\\u0019�x\\u001bzn��+\\u0006\\u0005��� ��\\u000f�K\\u001b��^\\u0010��=�=W��R�T�\\u0010\\n[\\u000f�l�\\u000bK9�\\u001c6\\t\\u0016No�Z�\\u000b��V�t\\u0002_��\\u0010��\\u0004!H���\\u0017�H�};a?\\r�\\r����B}կ��b�\\u000e\\f�\\u0004��$_���i3X\\u0000PVK�xS9\\u0012�@d�\\u0010@�\\r2RpF\\u0012��\\u0011��#g,�X��@%PYGOUу��\\\\\\\"��\\u0004\\tx\\u001cuK9��)�(�3u[�\\u0002��s�������XiI���r�@�-m\\f\\u000b\\u0000\\u000e����뽇\\\\\\\"\\u0004B\\b&^&<�%����=,\\u0000��\\u0018��ʾ\\n1Kv\\u000b�\\u001a'f�f}�\\\\X�\\u0002�����5���Ac�\\u0004�0T�5N��S)\\u0019.�\\u0000�P�j��d���\\u000eÊ����\\nSG\\t]�K�\\u001b\\u0014F�<rk��.}կ��b�m�^%\\n0�\\u001b�i�0�?6�w\\r;X\\u001eQ\\n\\u0007OӼ\\u0002��C���\\u0018{U9F�\\u0018����cz�+�qǸ`ky�\\u0014VcU������S��)ZRA�TCy\\u001d�WA�)!������dd� 1\\u0016uM��\\u001dpz2��\\tww\\\\\\\"����(\\u0002`��F@�@'�P�t\\u0010\\u0005\\u0000\\u0000YD\\u0016�\\u001aQ\\u0003�?�\\u001e�C����\\u0000\\u0000\\u0000\\u0000IEND�B`�\"","status":200,"headers":{"age":"0","via":"1.1 varnish","date":"Sat, 17 Aug 2024 03:21:10 GMT","etag":"\"60e90d65-f03\"","vary":"Accept-Encoding","server":"GitHub.com","expires":"Sat, 17 Aug 2024 03:31:10 GMT","x-cache":"MISS","x-timer":"S1723864870.315771,VS0,VE112","x-served-by":"cache-fra-eddf8230020-FRA","content-type":"image/png","x-cache-hits":"0","accept-ranges":"bytes","cache-control":"max-age=600","last-modified":"Sat, 10 Jul 2021 03:00:53 GMT","x-proxy-cache":"MISS","content-length":"3843","permissions-policy":"interest-cohort=()","x-fastly-request-id":"724a267097bf4296c2ab3cb9c31138681a9581d4","x-github-request-id":"D52E:2B0FC4:4808AF:4A4246:66C01726","access-control-allow-origin":"*"}},"type":2,"external":true,"timestamp":1723864870477},{"data":{"url":"https://min-api.cryptocompare.com/data/price?fsym=XTZ&tsyms=USD","body":"\"{\\\\\\\"USD\\\\\\\":0.647}\"","status":200,"headers":{"date":"Sat, 17 Aug 2024 03:21:10 GMT","vary":"Accept-Encoding","server":"nginx","connection":"keep-alive","content-type":"application/json; charset=UTF-8","cache-control":"public, max-age=10","content-encoding":"gzip","transfer-encoding":"chunked","content-security-policy":"frame-ancestors 'none'","x-cryptocompare-cache-hit":"false","x-cryptocompare-server-id":"cc-api-min-v2-20","access-control-allow-origin":"https://arjunkrishna.github.io","access-control-allow-headers":"Content-Type, Cookie, Set-Cookie, Authorization","access-control-allow-methods":"GET, POST, OPTIONS","access-control-allow-credentials":"true"}},"type":2,"external":true,"timestamp":1723864870552}],"browser":{"name":"chromium","version":"119.0.6045.9"},"viewport":{"width":2000,"height":2000},"screenshot":"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ACQR0AEAAAAAAAAgiYAOAAAAAAAAAEkEdAAAAAAAAABIIqADAAAAAAAAQBIBHQAAAAAAAACSCOgAAAAAAAAAkERABwAAAAAAAIAkAjoAAAAAAAAAJBHQAQAAAAAAACCJgA4AAAAAAAAASQR0AAAAAAAAAEgioAMAAAAAAABAEgEdAAAAAAAAAJII6AAAAAAAAACQREAHAAAAAAAAgCQCOgAAAAAAAAAkEdABAAAAAAAAIImADgAAAAAAAABJBHQAAAAAAAAASCKgAwAAAAAAAEASAR0AAAAAAAAAkgjoAAAAAAAAAJBEQAcAAAAAAACAJAI6AAAAAAAAACQR0AEAAAAAAAAgiYAOAAAAAAAAAEkEdAAAAAAAAABIIqADAAAAAAAAQBIBHQAAAAAAAACSCOgAAAAAAAAAkERABwAAAAAAAIAkAjoAAAAAAAAAJBHQAQAAAAAAACCJgA4AAAAAAAAASQR0AAAAAAAAAEgioAMAAAAAAABAEgEdAAAAAAAAAJII6AAAAAAAAACQREAHAAAAAAAAgCQCOgAAAAAAAAAkEdABAAAAAAAAIImADgAAAAAAAABJBHQAAAAAAAAASCKgAwAAAAAAAEASAR0AAAAAAAAAkgjoAAAAAAAAAJBEQAcAAAAAAACAJAI6AAAAAAAAACQR0AEAAAAAAAAgiYAOAAAAAAAAAEkEdAAAAAAAAABIIqADAAAAAAAAQBIBHQAAAAAAAACSCOgAAAAAAAAAkERABwAAAAAAAIAkAjoAAAAAAAAAJBHQAQAAAAAAACCJgA4AAAAAAAAASQR0AAAAAAAAAEgioAMAAAAAAABAEgEdAAAAAAAAAJII6AAAAAAAAACQREAHAAAAAAAAgCQCOgAAAAAAAAAkEdABAAAAAAAAIImADgAAAAAAAABJBHQAAAAAAAAASCKgAwAAAAAAAEASAR0AAAAAAAAAkgjoAAAAAAAAAJBEQAcAAAAAAACAJAI6AAAAAAAAACQR0AEAAAAAAAAgiYAOAAAAAAAAAEkEdAAAAAAAAABIIqADAAAAAAAAQBIBHQAAAAAAAACSCOgAAAAAAAAAkERABwAAAAAAAIAkAjoAAAAAAAAAJBHQAQAAAAAAACCJgA4AAAAAAAAASQR0AAAAAAAAAEgioAMAAAAAAABAEgEdAAAAAAAAAJII6AAAAAAAAACQREAHAAAAAAAAgCQCOgAAAAAAAAAkEdABAAAAAAAAIImADgAAAAAAAABJBHQAAAAAAAAASCKgAwAAAAAAAEASAR0AAAAAAAAAkgjoAAAAAAAAAJBEQAcAAAAAAACAJAI6AAAAAAAAACQR0AEAAAAAAAAgiYAOAAAAAAAAAEkEdAAAAAAAAABIIqADAAAAAAAAQBIBHQAAAAAAAACSCOgAAAAAAAAAkERABwAAAAAAAIAkAjoAAAAAAAAAJBHQAQAAAAAAACCJgA4AAAAAAAAASQR0AAAAAAAAAEgioAMAAAAAAABAEgEdAAAAAAAAAJII6AAAAAAAAACQREAHAAAAAAAAgCQCOgAAAAAAAAAkEdABAAAAAAAAIImADgAAAAAAAABJBHQAAAAAAAAASCKgAwAAAAAAAEASAR0AAAAAAAAAkgjoAAAAAAAAAJBEQAcAAAAAAACAJAI6AAAAAAAAACQR0AEAAAAAAAAgiYAOAAAAAAAAAEkEdAAAAAAAAABIIqADAAAAAAAAQBIBHQAAAAAAAACSCOgAAAAAAAAAkERABwAAAAAAAIAkAjoAAAAAAAAAJBHQAQAAAAAAACCJgA4AAAAAAAAASQR0AAAAAAAAAEgioAMAAAAAAABAEgEdAAAAAAAAAJII6AAAAAAAAACQREAHAAAAAAAAgCQCOgAAAAAAAAAkEdABAAAAAAAAIImADgAAAAAAAABJBHQAAAAAAAAASCKgAwAAAAAAAEASAR0AAAAAAAAAkgjoAAAAAAAAAJBEQAcAAAAAAACAJAI6AAAAAAAAACQR0AEAAAAAAAAgiYAOAAAAAAAAAEkEdAAAAAAAAABIIqADAAAAAAAAQBIBHQAAAAAAAACSCOgAAAAAAAAAkERABwAAAAAAAIAkAjoAAAAAAAAAJBHQAQAAAAAAACCJgA4AAAAAAAAASQR0AAAAAAAAAEgioAMAAAAAAABAEgEdAAAAAAAAAJII6AAAAAAAAACQREAHAAAAAAAAgCQCOgAAAAAAAAAkEdABAAAAAAAAIImADgAAAAAAAABJBHQAAAAAAAAASCKgAwAAAAAAAEASAR0AAAAAAAAAkgjoAAAAAAAAAJBEQAcAAAAAAACAJAI6AAAAAAAAACQR0AEAAAAAAAAgiYAOAAAAAAAAAEkEdAAAAAAAAABIIqADAAAAAAAAQBIBHQAAAAAAAACSCOgAAAAAAAAAkERABwAAAAAAAIAkAjoAAAAAAAAAJBHQAQAAAAAAACCJgA4AAAAAAAAASQR0AAAAAAAAAEgioAMAAAAAAABAEgEdAAAAAAAAAJII6AAAAAAAAACQREAHAAAAAAAAgCQCOgAAAAAAAAAkEdABAAAAAAAAIImADgAAAAAAAABJBHQAAAAAAAAASCKgAwAAAAAAAEASAR0AAAAAAAAAkgjoAAAAAAAAAJBEQAcAAAAAAACAJAI6AAAAAAAAACQR0AEAAAAAAAAgiYAOAAAAAAAAAEkEdAAAAAAAAABIIqADAAAAAAAAQBIBHQAAAAAAAACSCOgAAAAAAAAAkERABwAAAAAAAIAkAjoAAAAAAAAAJBHQAQAAAAAAACCJgA4AAAAAAAAASQR0AAAAAAAAAEgioAMAAAAAAABAEgEdAAAAAAAAAJII6AAAAAAAAACQREAHAAAAAAAAgCQCOgAAAAAAAAAkEdABAAAAAAAAIImADgAAAAAAAABJBHQAAAAAAAAASCKgAwAAAAAAAEASAR0A4HPuu+fuLNCq4hv/bLv5xmWvCgAAAABAwQR0AAAAAAAAAIiADgAAAAAAAABJBHQAAAAAAAAASCKgAwAAAAAAAEASAR0AAAAAAAAAkgjoAAAAAAAAAJBEQAcAAAAAAACAJAI6AAAAAAAAACQR0AEAAAAAAAAgiYAOAAAAAAAAAEkEdAAAAAAAAABIIqADAAAAAAAAQBIBHQAAAAAAAACSCOgAAAAAAAAAkCRpWfYCAABQH8aNHZuX//Vi3nzj9bz5xut5e8zojP/ow4z/6KNMmPBxZkyfnhkzZmTmzJlp0aJFampqUl1Tk3bt2qdDx47p2HHhdF58iXTp2i1duy2T7j17pWu3ZVJRUVH2hwaFmTFjxn8/J6ZPm5aZM2dm1qyZqaxskZYtW6aqqiotW7ZMTatWmW++tpl//vkzX9u2qaqqKnt1AAAAgEJUzJs3b17ZSwBQrC/70v5Nr/uml7/qdV98+xdf93Uvf9Pf2yzUqVYfN3xbM2bMyKsv/ysvvfh83nrzjYx95+28PWZMxr7zdsa+83ZmzJjxreb8JyZVVVWlqro6VVVVadt2/rRfYIG0a9c+7dq3T7t27bPoYotl0cU6pVOnzll0sU5ZrFPnLL7EEqmsdDGgujJ37tw8P/zZPPTAfXnisaF5bviwfPD++4U/Tvv27dNnhX5ZY62186N1N8jKq66Wli09R5WGbfbs2Rk54tW89MLzeenF5/PG669l9JtvZMzotzJp0qTvNLOmpiYLdeiQjh0XToeOC6fjwgtn4UUWzRJL/CCLf+bPYp06+doHQKNV0yKZ8OG7qaio+O+TKP/z8jf9/Zte/qrXffHtX3zd1738da/7Nm8DAGiuBHSAJkhAh8975eV/5eEH78+wp5/MSy88n1EjR2T27Nml7lRdXZ0ll1o6Xbp2+/efbstkueW7Z7nle2TxJZYodbfGatasWXnogftyy0035K47hmTihAn1vsP888+fn2y2Rbbebsesv+FGqa6urvcd4IvmzJmTp5/8Zx5+8P48/ugjefrJJzJ16tRSdqmurs7SXbqma7dl0qXbMum2zLJZbvnuWb57zyy8yCKl7MT39/5772WNlfvkow8/rPWxf7j0T9lltz3rYCuA4gnoAADNg4AO0AQJ6DR3H48fn7/feVseeuC+PPLQA3n/vffKXqlW2rVrlx/+X1Dq1advevXum959+qb9AguUvVqDNPqtN3PFpYNzzVVXZPxHH5W9zn8t1KFDdttz7/xs34FZaukuZa9DMzNz5szce/ddGXLLTbnvnrvz8fjxZa/0jRbq0CHde/RMz1590nfFfumzQr8s372Hy8M3cPPmzcv2W26S++65+zsd31gC+ty5c7P9lpuUvQZf8Kvf/DYrrbxK2WvQjAjoAADNg4AO0AQJ6DRHkydPzp233Zqbb7w+D95/b2bNmlX2SoVbcqml0meFfum30srp13/lrNivf7OO6i88NzxnnnZS7rp9SObOnVv2Ol+psrIyW2y9bY761W/So2evstehiRv29FO56opLM+SWmzJp4sSy1/neampq0qtP36yy2oCsutqArLLagHRefPGy1+IzBl90fo4+8tDvfHxjCeizZ89Ox7aezNHQXH/z7dl4k83KXoNmREAHAGgeBHSAJkhApzl5fvizGXzRebnlphsyffr0stepVxUVFVlm2R9m1dXXyOprrJnVBqyZbsssW/Zade61USNz/K+Oyp23Dyl7lVqpqKjI1tvtkBNPOTM/WHLJstehCZk5c2ZuuO6aXDr4ojw//Nmy16lzY8dPyXzzzVf2GuTft0hZd0D/7/X9V0Dn+xDQqW8COgBA89Cy7AUAAGprzpw5ufO2W3Pxhefm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AAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAABkWBOBAAAZfElEQVQAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6ADt4eXkZfTzlGAAAAG7VnGvcoWtjAABui4AOAAAA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AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAAAAAAVAI6AAAAAAAAAFQCOgAAAAAAAABUAjoAAAAA/F97diAAAAAAIGh/6kVKIwAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKhqSmCv93CuvtgAAAAASUVORK5CYII=","consoleMessages":[{"text":"Error with Permissions-Policy header: Origin trial controlled feature not enabled: 'interest-cohort'.","level":"warning","timestamp":1723864870312}],"screenshotDelay":10000},"timestamp":1723864869387},"created_at":"2024-08-17T03:21:20.025+00:00","updated_at":"2024-08-17T03:21:20.026+00:00"}