diff --git a/AUTHORS.txt b/AUTHORS.txt
index fc0456e37222593870b196076250fd7b4f0e8e12..0d44990fc30e425f8a475dfd6794a82b4e0b286a 100644
--- a/AUTHORS.txt
+++ b/AUTHORS.txt
@@ -325,3 +325,7 @@ Christian Wenz <christian@wenz.org>
 Sean Robinson <sean.robinson@scottsdalecc.edu>
 Jonathan <vanillajonathan@users.noreply.github.com>
 Pierre Grimaud <grimaud.pierre@gmail.com>
+Beatriz Rezener <beatrizrezener@users.noreply.github.com>
+Natalia Sroka <37873210+natipo@users.noreply.github.com>
+Wonhyoung Park <wh05.park@samsung.com>
+Dallas Fraser <dallas.fraser.waterloo@gmail.com>
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
index 773687ae98388d5bedd94c66f423c3953be8a500..1dc3de996bd138bd34152dc26460da1ed53d3913 100644
--- a/CODE_OF_CONDUCT.md
+++ b/CODE_OF_CONDUCT.md
@@ -1,3 +1,3 @@
-jQuery is a [JS Foundation](https://js.foundation/) project and subscribes to its code of conduct.
+jQuery is an [OpenJS Foundation](https://openjsf.org/) project and subscribes to its code of conduct.
 
-It is available at https://js.foundation/community/code-of-conduct.
+It is available at https://code-of-conduct.openjsf.org/.
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 18c6bc80250ddff3e0dec5aa1039cd36a219c046..71fc258e8ba4f8f1b54ec844a46163902b43db7a 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -85,16 +85,16 @@ Change directory to the newly created dir jquery/
 $ cd jquery
 ```
 
-Add the jQuery master as a remote. I label mine "upstream"
+Add the jQuery main as a remote. I label mine "upstream"
 
 ```bash
 $ git remote add upstream git://github.com/jquery/jquery.git
 ```
 
-Get in the habit of pulling in the "upstream" master to stay up to date as jQuery receives new commits
+Get in the habit of pulling in the "upstream" main to stay up to date as jQuery receives new commits
 
 ```bash
-$ git pull upstream master
+$ git pull upstream main
 ```
 
 Run the build script
diff --git a/Gruntfile.js b/Gruntfile.js
index 486a0f303932734b868b065d3c7b99a36002fac5..25223aee4fe52a037e5c042a4b184b04cddbe284 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -305,7 +305,7 @@ module.exports = function( grunt ) {
 						"ie8": true
 					},
 					banner: "/*! jQuery v<%= pkg.version %> | " +
-						"(c) JS Foundation and other contributors | jquery.org/license */",
+						"(c) OpenJS Foundation and other contributors | jquery.org/license */",
 					compress: {
 						"hoist_funs": false,
 						loops: false,
diff --git a/LICENSE.txt b/LICENSE.txt
index e3dbacb999cef3718b1c4cc83d9aa45f869256a6..f642c3f7a77a5833bc3dfee643ad8ca6387b23e7 100644
--- a/LICENSE.txt
+++ b/LICENSE.txt
@@ -1,4 +1,4 @@
-Copyright JS Foundation and other contributors, https://js.foundation/
+Copyright OpenJS Foundation and other contributors, https://openjsf.org/
 
 Permission is hereby granted, free of charge, to any person obtaining
 a copy of this software and associated documentation files (the
diff --git a/README.md b/README.md
index fd6630eaa3efbe95d930334fdcf465e70a29cf4f..f36cefef28aa46b878c28a672bae772f1be61309 100644
--- a/README.md
+++ b/README.md
@@ -102,7 +102,7 @@ Some example modules that can be excluded are:
 
 As a special case, you may also replace Sizzle by using a special flag `grunt custom:-sizzle`.
 
-- **sizzle**: The Sizzle selector engine. When this module is excluded, it is replaced by a rudimentary selector engine based on the browser's `querySelectorAll` method that does not support jQuery selector extensions or enhanced semantics. See the [selector-native.js](https://github.com/jquery/jquery/blob/master/src/selector-native.js) file for details.
+- **sizzle**: The Sizzle selector engine. When this module is excluded, it is replaced by a rudimentary selector engine based on the browser's `querySelectorAll` method that does not support jQuery selector extensions or enhanced semantics. See the [selector-native.js](https://github.com/jquery/jquery/blob/main/src/selector-native.js) file for details.
 
 *Note*: Excluding Sizzle will also exclude all jQuery selector extensions (such as `effects/animatedSelector` and `css/hiddenVisibleSelectors`).
 
@@ -227,7 +227,7 @@ As the source code is handled by the Git version control system, it's useful to
 If you want to purge your working directory back to the status of upstream, the following commands can be used (remember everything you've worked on is gone after these):
 
 ```bash
-git reset --hard upstream/master
+git reset --hard upstream/main
 git clean -fdx
 ```
 
@@ -285,7 +285,7 @@ throws( block, [expected], [message] );
 ```
 
 
-Test Suite Convenience Methods Reference (See [test/data/testinit.js](https://github.com/jquery/jquery/blob/master/test/data/testinit.js))
+Test Suite Convenience Methods Reference (See [test/data/testinit.js](https://github.com/jquery/jquery/blob/main/test/data/testinit.js))
 ------------------------------
 
 ### Returns an array of elements with the given IDs ###
diff --git a/build/release.js b/build/release.js
index 8b7d7d21b84b0222de00094f72ed17ce89dd4def..6b22d95c0b750d2fa75241a7b274e3d100b9c1dd 100644
--- a/build/release.js
+++ b/build/release.js
@@ -51,10 +51,10 @@ module.exports = function( Release ) {
 		 * @param {Function} callback
 		 */
 		generateArtifacts: function( callback ) {
-			Release.exec( "grunt", "Grunt command failed" );
+			Release.exec( "npx grunt", "Grunt command failed" );
 			Release.exec(
-				"grunt custom:slim --filename=jquery.slim.js && " +
-					"grunt remove_map_comment --filename=jquery.slim.js",
+				"npx grunt custom:slim --filename=jquery.slim.js && " +
+					"npx grunt remove_map_comment --filename=jquery.slim.js",
 				"Grunt custom failed"
 			);
 			cdn.makeReleaseCopies( Release );
@@ -87,9 +87,8 @@ module.exports = function( Release ) {
 };
 
 module.exports.dependencies = [
-	"archiver@1.3.0",
-	"shelljs@0.7.7",
-	"inquirer@7.0.4",
-	"npm@4.4.1",
-	"chalk@1.1.3"
+	"archiver@5.2.0",
+	"shelljs@0.8.4",
+	"inquirer@8.0.0",
+	"chalk@4.1.0"
 ];
diff --git a/build/release/dist.js b/build/release/dist.js
index 3071e466ed5660b2dc04c17463ea70e69c78f0d7..3bbccd41aeaa6e6cc7df063b5d61141589a5bf85 100644
--- a/build/release/dist.js
+++ b/build/release/dist.js
@@ -30,9 +30,9 @@ module.exports = function( Release, files, complete ) {
 		Release.exec( `git clone ${ distRemote } ${ Release.dir.dist }`,
 			"Error cloning repo." );
 
-		// Distribution always works on master
+		// Distribution always works on main
 		Release.chdir( Release.dir.dist );
-		Release.exec( "git checkout master", "Error checking out branch." );
+		Release.exec( "git checkout main", "Error checking out branch." );
 		console.log();
 	}
 
@@ -110,7 +110,7 @@ module.exports = function( Release, files, complete ) {
 		await fs.writeFile( `${ Release.dir.dist }/bower.json`, generateBower() );
 
 		await fs.writeFile( `${ Release.dir.dist }/README.md`,
-			editReadme( readme, blogPostLink ) );
+			editReadme( readme, blogPostLink ) );
 
 		console.log( "Files ready to add." );
 	}
@@ -144,8 +144,8 @@ module.exports = function( Release, files, complete ) {
 		Release.exec(
 			`git push ${
 				Release.isTest ? " --dry-run" : ""
-			} ${ distRemote } master --tags`,
-			"Error pushing master and tags to git repo."
+			} ${ distRemote } main --tags`,
+			"Error pushing main and tags to git repo."
 		);
 
 		// Set repo for npm publish
diff --git a/build/release/ensure-sizzle.js b/build/release/ensure-sizzle.js
index eb1cbd8e80d1624ecbff2aa8828df1814e94e273..605b141ba0bdb830e47877b3b49f39c23bad70bf 100644
--- a/build/release/ensure-sizzle.js
+++ b/build/release/ensure-sizzle.js
@@ -1,29 +1,10 @@
 "use strict";
 
 var fs = require( "fs" ),
-	npm = require( "npm" ),
 	chalk = require( "chalk" ),
 	sizzleLoc = __dirname + "/../../external/sizzle/dist/sizzle.js",
 	rversion = /Engine v(\d+\.\d+\.\d+(?:-[-\.\d\w]+)?)/;
 
-/**
- * Retrieve the latest tag of Sizzle from npm
- * @param {Function(string)} callback
- */
-function getLatestSizzle( callback ) {
-	npm.load( function( err, npm ) {
-		if ( err ) {
-			throw err;
-		}
-		npm.commands.info( [ "sizzle", "version" ], function( err, info ) {
-			if ( err ) {
-				throw err;
-			}
-			callback( Object.keys( info )[ 0 ] );
-		} );
-	} );
-}
-
 /**
  * Ensure the /src folder has the latest tag of Sizzle
  * @param {Object} Release
@@ -32,23 +13,23 @@ function getLatestSizzle( callback ) {
 function ensureSizzle( Release, callback ) {
 	console.log();
 	console.log( "Checking Sizzle version..." );
-	getLatestSizzle( function( latest ) {
-		var match = rversion.exec( fs.readFileSync( sizzleLoc, "utf8" ) ),
-			version = match ? match[ 1 ] : "Not Found";
-
-		if ( version !== latest ) {
+	var match = rversion.exec( fs.readFileSync( sizzleLoc, "utf8" ) ),
+		version = match ? match[ 1 ] : "Not Found",
+		latest = Release.exec( {
+			command: "npm info sizzle version",
+			silent: true
+		} );
 
-			// colors is inherited from jquery-release
-			console.log(
-				"The Sizzle version in the src folder (" + chalk.red( version ) +
-				") is not the latest tag (" + chalk.green( latest ) + ")."
-			);
-			Release.confirm( callback );
-		} else {
-			console.log( "Sizzle is latest (" + chalk.green( latest ) + ")" );
-			callback();
-		}
-	} );
+	if ( version !== latest ) {
+		console.log(
+			"The Sizzle version in the src folder (" + chalk.red( version ) +
+			") is not the latest tag (" + chalk.green( latest ) + ")."
+		);
+		Release.confirm( callback );
+	} else {
+		console.log( "Sizzle is latest (" + chalk.green( latest ) + ")" );
+		callback();
+	}
 }
 
 module.exports = ensureSizzle;
diff --git a/package.json b/package.json
index 7541abc982d738b45d09f448788c47e3c0d66310..c060d7d1e5ca43cc0854e9146071d23759747db7 100644
--- a/package.json
+++ b/package.json
@@ -2,12 +2,12 @@
   "name": "jquery",
   "title": "jQuery",
   "description": "JavaScript library for DOM operations",
-  "version": "3.5.1",
+  "version": "3.6.0",
   "main": "dist/jquery.js",
   "homepage": "https://jquery.com",
   "author": {
-    "name": "JS Foundation and other contributors",
-    "url": "https://github.com/jquery/jquery/blob/3.5.1/AUTHORS.txt"
+    "name": "OpenJS Foundation and other contributors",
+    "url": "https://github.com/jquery/jquery/blob/3.6.0/AUTHORS.txt"
   },
   "repository": {
     "type": "git",
@@ -23,14 +23,13 @@
     "url": "https://github.com/jquery/jquery/issues"
   },
   "license": "MIT",
-  "dependencies": {},
   "devDependencies": {
     "@babel/core": "7.3.3",
     "@babel/plugin-transform-for-of": "7.2.0",
     "commitplease": "3.2.0",
     "core-js": "2.6.5",
-    "eslint-config-jquery": "2.0.0",
-    "grunt": "1.0.3",
+    "eslint-config-jquery": "3.0.0",
+    "grunt": "1.3.0",
     "grunt-babel": "8.0.0",
     "grunt-cli": "1.3.2",
     "grunt-compare-size": "0.4.2",
@@ -39,21 +38,21 @@
     "grunt-eslint": "22.0.0",
     "grunt-git-authors": "3.2.0",
     "grunt-jsonlint": "1.1.0",
-    "grunt-karma": "3.0.1",
+    "grunt-karma": "4.0.0",
     "grunt-newer": "1.3.0",
-    "grunt-npmcopy": "0.1.0",
+    "grunt-npmcopy": "0.2.0",
     "gzip-js": "0.3.2",
     "husky": "1.3.1",
     "insight": "0.10.1",
     "jsdom": "13.2.0",
-    "karma": "4.0.1",
+    "karma": "5.2.3",
     "karma-browserstack-launcher": "1.4.0",
     "karma-chrome-launcher": "2.2.0",
     "karma-firefox-launcher": "1.1.0",
     "karma-ie-launcher": "1.0.0",
-    "karma-jsdom-launcher": "7.1.0",
+    "karma-jsdom-launcher": "8.0.2",
     "karma-qunit": "3.0.0",
-    "load-grunt-tasks": "4.0.0",
+    "load-grunt-tasks": "5.1.0",
     "native-promise-only": "0.8.1",
     "promises-aplus-tests": "2.1.2",
     "q": "1.5.1",
@@ -61,9 +60,9 @@
     "raw-body": "2.3.3",
     "requirejs": "2.3.6",
     "sinon": "2.3.7",
-    "sizzle": "2.3.5",
+    "sizzle": "2.3.6",
     "strip-json-comments": "2.0.1",
-    "testswarm": "1.1.0",
+    "testswarm": "1.1.2",
     "uglify-js": "3.4.7"
   },
   "scripts": {
@@ -110,7 +109,7 @@
   },
   "husky": {
     "hooks": {
-      "commit-msg": "node node_modules/commitplease",
+      "commit-msg": "commitplease .git/COMMIT_EDITMSG",
       "pre-commit": "grunt lint:newer qunit_fixture"
     }
   }
diff --git a/src/.eslintrc.json b/src/.eslintrc.json
index 3d0ca185a21bae7e8538785643670bc3e101b061..21a0225a764fcb59ee2d4ca64e309340580ec534 100644
--- a/src/.eslintrc.json
+++ b/src/.eslintrc.json
@@ -3,9 +3,33 @@
 
 	"extends": "../.eslintrc-browser.json",
 
+	"rules": {
+		"indent": [ "error", "tab", {
+			"outerIIFEBody": 0,
+
+			// Ignore the top level function defining an AMD module
+			"ignoredNodes": [
+				"Program > ExpressionStatement > CallExpression > :last-child > *"
+			]
+		} ]
+	},
+
 	"overrides": [
 		{
 			"files": "wrapper.js",
+			"rules": {
+				"no-unused-vars": "off",
+				"indent": [ "error", "tab", {
+
+					// Unlike other codes, "wrapper.js" is implemented in UMD.
+					// So it required a specific exception for jQuery's UMD
+					// Code Style. This makes that indentation check is not
+					// performed for 1 depth of outer FunctionExpressions
+					"ignoredNodes": [
+						"Program > ExpressionStatement > CallExpression > :last-child > *"
+					]
+				} ]
+			},
 			"globals": {
 				"jQuery": false
 			}
diff --git a/src/ajax.js b/src/ajax.js
index d1bebd540e2acf40a6e8e60fa3b3e63da90bbc0e..4be4a9e920123905a937c3f493b1d68e93c0625b 100644
--- a/src/ajax.js
+++ b/src/ajax.js
@@ -50,7 +50,8 @@ var
 
 	// Anchor tag for parsing the document origin
 	originAnchor = document.createElement( "a" );
-	originAnchor.href = location.href;
+
+originAnchor.href = location.href;
 
 // Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
 function addToPrefiltersOrTransports( structure ) {
@@ -431,8 +432,8 @@ jQuery.extend( {
 			// Context for global events is callbackContext if it is a DOM node or jQuery collection
 			globalEventContext = s.context &&
 				( callbackContext.nodeType || callbackContext.jquery ) ?
-					jQuery( callbackContext ) :
-					jQuery.event,
+				jQuery( callbackContext ) :
+				jQuery.event,
 
 			// Deferreds
 			deferred = jQuery.Deferred(),
@@ -744,8 +745,10 @@ jQuery.extend( {
 				response = ajaxHandleResponses( s, jqXHR, responses );
 			}
 
-			// Use a noop converter for missing script
-			if ( !isSuccess && jQuery.inArray( "script", s.dataTypes ) > -1 ) {
+			// Use a noop converter for missing script but not if jsonp
+			if ( !isSuccess &&
+				jQuery.inArray( "script", s.dataTypes ) > -1 &&
+				jQuery.inArray( "json", s.dataTypes ) < 0 ) {
 				s.converters[ "text script" ] = function() {};
 			}
 
diff --git a/src/attributes/classes.js b/src/attributes/classes.js
index 0c90a8dffdb95ec4678f18e07623f9d111c32540..23e48471c9304ea6246ea3f493a86e540fa98a2d 100644
--- a/src/attributes/classes.js
+++ b/src/attributes/classes.js
@@ -159,8 +159,8 @@ jQuery.fn.extend( {
 				if ( this.setAttribute ) {
 					this.setAttribute( "class",
 						className || value === false ?
-						"" :
-						dataPriv.get( this, "__className__" ) || ""
+							"" :
+							dataPriv.get( this, "__className__" ) || ""
 					);
 				}
 			}
@@ -175,7 +175,7 @@ jQuery.fn.extend( {
 		while ( ( elem = this[ i++ ] ) ) {
 			if ( elem.nodeType === 1 &&
 				( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) {
-					return true;
+				return true;
 			}
 		}
 
diff --git a/src/core.js b/src/core.js
index d43cae326f21c7cc358f655d35fc25255762860b..03eefa73a808849c77f8bf61eff22b6c82bd342a 100644
--- a/src/core.js
+++ b/src/core.js
@@ -26,7 +26,7 @@ define( [
 "use strict";
 
 var
-	version = "3.5.1",
+	version = "3.6.0",
 
 	// Define a local copy of jQuery
 	jQuery = function( selector, context ) {
@@ -280,7 +280,7 @@ jQuery.extend( {
 			if ( isArrayLike( Object( arr ) ) ) {
 				jQuery.merge( ret,
 					typeof arr === "string" ?
-					[ arr ] : arr
+						[ arr ] : arr
 				);
 			} else {
 				push.call( ret, arr );
@@ -375,9 +375,9 @@ if ( typeof Symbol === "function" ) {
 
 // Populate the class2type map
 jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
-function( _i, name ) {
-	class2type[ "[object " + name + "]" ] = name.toLowerCase();
-} );
+	function( _i, name ) {
+		class2type[ "[object " + name + "]" ] = name.toLowerCase();
+	} );
 
 function isArrayLike( obj ) {
 
diff --git a/src/core/access.js b/src/core/access.js
index 54bcc7447145c1fc89607d9583ebffa64abec5d0..524c98030f0c40f4edde1ad9675a8d31a551a602 100644
--- a/src/core/access.js
+++ b/src/core/access.js
@@ -48,8 +48,8 @@ var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
 			for ( ; i < len; i++ ) {
 				fn(
 					elems[ i ], key, raw ?
-					value :
-					value.call( elems[ i ], i, fn( elems[ i ], key ) )
+						value :
+						value.call( elems[ i ], i, fn( elems[ i ], key ) )
 				);
 			}
 		}
diff --git a/src/core/nodeName.js b/src/core/nodeName.js
index 8a5f5f036473cbe1b5e6aff48b1deb312be186f8..ef1b80bcd82b7f95c1f6635c85d7b31cd522a2de 100644
--- a/src/core/nodeName.js
+++ b/src/core/nodeName.js
@@ -4,9 +4,9 @@ define( function() {
 
 function nodeName( elem, name ) {
 
-  return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
+	return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
 
-};
+}
 
 return nodeName;
 
diff --git a/src/core/parseXML.js b/src/core/parseXML.js
index acf7ab259fa6f7d50de8ae4e26e46bc8a8aaf8bf..9b5d2901162493661fc75c4689e755dc76746d1f 100644
--- a/src/core/parseXML.js
+++ b/src/core/parseXML.js
@@ -6,7 +6,7 @@ define( [
 
 // Cross-browser xml parsing
 jQuery.parseXML = function( data ) {
-	var xml;
+	var xml, parserErrorElem;
 	if ( !data || typeof data !== "string" ) {
 		return null;
 	}
@@ -15,12 +15,17 @@ jQuery.parseXML = function( data ) {
 	// IE throws on parseFromString with invalid input.
 	try {
 		xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" );
-	} catch ( e ) {
-		xml = undefined;
-	}
+	} catch ( e ) {}
 
-	if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) {
-		jQuery.error( "Invalid XML: " + data );
+	parserErrorElem = xml && xml.getElementsByTagName( "parsererror" )[ 0 ];
+	if ( !xml || parserErrorElem ) {
+		jQuery.error( "Invalid XML: " + (
+			parserErrorElem ?
+				jQuery.map( parserErrorElem.childNodes, function( el ) {
+					return el.textContent;
+				} ).join( "\n" ) :
+				data
+		) );
 	}
 	return xml;
 };
diff --git a/src/css.js b/src/css.js
index a7a70614fec0ad1a6d45d04eda969df45ac4fd38..a41cc2c920cdcb9e8a39f8786677a40fd9c9ede1 100644
--- a/src/css.js
+++ b/src/css.js
@@ -370,10 +370,10 @@ jQuery.each( [ "height", "width" ], function( _i, dimension ) {
 					// Running getBoundingClientRect on a disconnected node
 					// in IE throws an error.
 					( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?
-						swap( elem, cssShow, function() {
-							return getWidthOrHeight( elem, dimension, extra );
-						} ) :
-						getWidthOrHeight( elem, dimension, extra );
+					swap( elem, cssShow, function() {
+						return getWidthOrHeight( elem, dimension, extra );
+					} ) :
+					getWidthOrHeight( elem, dimension, extra );
 			}
 		},
 
@@ -432,7 +432,7 @@ jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,
 					swap( elem, { marginLeft: 0 }, function() {
 						return elem.getBoundingClientRect().left;
 					} )
-				) + "px";
+			) + "px";
 		}
 	}
 );
diff --git a/src/css/support.js b/src/css/support.js
index fb2a1b2045a3b35405459f458f6994edb11aabf8..3a9d25c7341418ea87a8481dffde7bc16ac0b33f 100644
--- a/src/css/support.js
+++ b/src/css/support.js
@@ -102,6 +102,10 @@ define( [
 		// set in CSS while `offset*` properties report correct values.
 		// Behavior in IE 9 is more subtle than in newer versions & it passes
 		// some versions of this test; make sure not to make it pass there!
+		//
+		// Support: Firefox 70+
+		// Only Firefox includes border widths
+		// in computed dimensions. (gh-4529)
 		reliableTrDimensions: function() {
 			var table, tr, trChild, trStyle;
 			if ( reliableTrDimensionsVal == null ) {
@@ -109,17 +113,32 @@ define( [
 				tr = document.createElement( "tr" );
 				trChild = document.createElement( "div" );
 
-				table.style.cssText = "position:absolute;left:-11111px";
+				table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate";
+				tr.style.cssText = "border:1px solid";
+
+				// Support: Chrome 86+
+				// Height set through cssText does not get applied.
+				// Computed height then comes back as 0.
 				tr.style.height = "1px";
 				trChild.style.height = "9px";
 
+				// Support: Android 8 Chrome 86+
+				// In our bodyBackground.html iframe,
+				// display for all div elements is set to "inline",
+				// which causes a problem only in Android 8 Chrome 86.
+				// Ensuring the div is display: block
+				// gets around this issue.
+				trChild.style.display = "block";
+
 				documentElement
 					.appendChild( table )
 					.appendChild( tr )
 					.appendChild( trChild );
 
 				trStyle = window.getComputedStyle( tr );
-				reliableTrDimensionsVal = parseInt( trStyle.height ) > 3;
+				reliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +
+					parseInt( trStyle.borderTopWidth, 10 ) +
+					parseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;
 
 				documentElement.removeChild( table );
 			}
diff --git a/src/deferred.js b/src/deferred.js
index c05a37a23606f4efbb58c559f71a7c4f10da0e04..439653f5870ee59fe50220d88ca105070e92b192 100644
--- a/src/deferred.js
+++ b/src/deferred.js
@@ -359,8 +359,8 @@ jQuery.extend( {
 			resolveContexts = Array( i ),
 			resolveValues = slice.call( arguments ),
 
-			// the master Deferred
-			master = jQuery.Deferred(),
+			// the primary Deferred
+			primary = jQuery.Deferred(),
 
 			// subordinate callback factory
 			updateFunc = function( i ) {
@@ -368,30 +368,30 @@ jQuery.extend( {
 					resolveContexts[ i ] = this;
 					resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
 					if ( !( --remaining ) ) {
-						master.resolveWith( resolveContexts, resolveValues );
+						primary.resolveWith( resolveContexts, resolveValues );
 					}
 				};
 			};
 
 		// Single- and empty arguments are adopted like Promise.resolve
 		if ( remaining <= 1 ) {
-			adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,
+			adoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,
 				!remaining );
 
 			// Use .then() to unwrap secondary thenables (cf. gh-3000)
-			if ( master.state() === "pending" ||
+			if ( primary.state() === "pending" ||
 				isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {
 
-				return master.then();
+				return primary.then();
 			}
 		}
 
 		// Multiple arguments are aggregated like Promise.all array elements
 		while ( i-- ) {
-			adoptValue( resolveValues[ i ], updateFunc( i ), master.reject );
+			adoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );
 		}
 
-		return master.promise();
+		return primary.promise();
 	}
 } );
 
diff --git a/src/deprecated/event.js b/src/deprecated/event.js
index d2d26bc3eab879eea1db8cb893a60e032ecc9c61..d46a3b87cd54abd54d05db00be1d88b8624d234f 100644
--- a/src/deprecated/event.js
+++ b/src/deprecated/event.js
@@ -32,7 +32,8 @@ jQuery.fn.extend( {
 	}
 } );
 
-jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " +
+jQuery.each(
+	( "blur focus focusin focusout resize scroll click dblclick " +
 	"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
 	"change select submit keydown keypress keyup contextmenu" ).split( " " ),
 	function( _i, name ) {
@@ -43,6 +44,7 @@ jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " +
 				this.on( name, null, data, fn ) :
 				this.trigger( name );
 		};
-	} );
+	}
+);
 
 } );
diff --git a/src/dimensions.js b/src/dimensions.js
index 2a2c0391df5ac34cc4800670191cee39709ff661..5d12450233bd59ee767663ef5c607cc7581b5754 100644
--- a/src/dimensions.js
+++ b/src/dimensions.js
@@ -9,8 +9,11 @@ define( [
 
 // Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
 jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
-	jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name },
-		function( defaultExtra, funcName ) {
+	jQuery.each( {
+		padding: "inner" + name,
+		content: type,
+		"": "outer" + name
+	}, function( defaultExtra, funcName ) {
 
 		// Margin is only for outerHeight, outerWidth
 		jQuery.fn[ funcName ] = function( margin, value ) {
diff --git a/src/effects.js b/src/effects.js
index 76b7cc765828d79e0fb36c4d7ea5308465b11ba1..4c011b1059abf6a8dfaf72de26560849d358620b 100644
--- a/src/effects.js
+++ b/src/effects.js
@@ -230,7 +230,7 @@ function defaultPrefilter( elem, props, opts ) {
 
 			anim.done( function() {
 
-			/* eslint-enable no-loop-func */
+				/* eslint-enable no-loop-func */
 
 				// The final step of a "hide" animation is actually hiding the element
 				if ( !hidden ) {
@@ -350,7 +350,7 @@ function Animation( elem, properties, options ) {
 			tweens: [],
 			createTween: function( prop, end ) {
 				var tween = jQuery.Tween( elem, animation.opts, prop, end,
-						animation.opts.specialEasing[ prop ] || animation.opts.easing );
+					animation.opts.specialEasing[ prop ] || animation.opts.easing );
 				animation.tweens.push( tween );
 				return tween;
 			},
@@ -523,7 +523,8 @@ jQuery.fn.extend( {
 					anim.stop( true );
 				}
 			};
-			doAnimation.finish = doAnimation;
+
+		doAnimation.finish = doAnimation;
 
 		return empty || optall.queue === false ?
 			this.each( doAnimation ) :
diff --git a/src/effects/Tween.js b/src/effects/Tween.js
index bf501ead074b8a2bf67738eb97c681028625a2a5..c452b7f454c1ca5d16f805c91260c16ebc233d41 100644
--- a/src/effects/Tween.js
+++ b/src/effects/Tween.js
@@ -87,7 +87,7 @@ Tween.propHooks = {
 			if ( jQuery.fx.step[ tween.prop ] ) {
 				jQuery.fx.step[ tween.prop ]( tween );
 			} else if ( tween.elem.nodeType === 1 && (
-					jQuery.cssHooks[ tween.prop ] ||
+				jQuery.cssHooks[ tween.prop ] ||
 					tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {
 				jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
 			} else {
diff --git a/src/event.js b/src/event.js
index 6510d6a300e3b6197b6dd01efed493921c9b79e0..a954400a38deb28c758ee96b1d171d9f087ee670 100644
--- a/src/event.js
+++ b/src/event.js
@@ -17,10 +17,7 @@ define( [
 
 "use strict";
 
-var
-	rkeyEvent = /^key/,
-	rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
-	rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
+var rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
 
 function returnTrue() {
 	return true;
@@ -315,8 +312,8 @@ jQuery.event = {
 			event = jQuery.event.fix( nativeEvent ),
 
 			handlers = (
-					dataPriv.get( this, "events" ) || Object.create( null )
-				)[ event.type ] || [],
+				dataPriv.get( this, "events" ) || Object.create( null )
+			)[ event.type ] || [],
 			special = jQuery.event.special[ event.type ] || {};
 
 		// Use the fix-ed jQuery.Event rather than the (read-only) native event
@@ -440,12 +437,12 @@ jQuery.event = {
 			get: isFunction( hook ) ?
 				function() {
 					if ( this.originalEvent ) {
-							return hook( this.originalEvent );
+						return hook( this.originalEvent );
 					}
 				} :
 				function() {
 					if ( this.originalEvent ) {
-							return this.originalEvent[ name ];
+						return this.originalEvent[ name ];
 					}
 				},
 
@@ -584,7 +581,13 @@ function leverageNative( el, type, expectSync ) {
 						// Cancel the outer synthetic event
 						event.stopImmediatePropagation();
 						event.preventDefault();
-						return result.value;
+
+						// Support: Chrome 86+
+						// In Chrome, if an element having a focusout handler is blurred by
+						// clicking outside of it, it invokes the handler synchronously. If
+						// that handler calls `.remove()` on the element, the data is cleared,
+						// leaving `result` undefined. We need to guard against this.
+						return result && result.value;
 					}
 
 				// If this is an inner synthetic event for an event with a bubbling surrogate
@@ -749,34 +752,7 @@ jQuery.each( {
 	targetTouches: true,
 	toElement: true,
 	touches: true,
-
-	which: function( event ) {
-		var button = event.button;
-
-		// Add which for key events
-		if ( event.which == null && rkeyEvent.test( event.type ) ) {
-			return event.charCode != null ? event.charCode : event.keyCode;
-		}
-
-		// Add which for click: 1 === left; 2 === middle; 3 === right
-		if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {
-			if ( button & 1 ) {
-				return 1;
-			}
-
-			if ( button & 2 ) {
-				return 3;
-			}
-
-			if ( button & 4 ) {
-				return 2;
-			}
-
-			return 0;
-		}
-
-		return event.which;
-	}
+	which: true
 }, jQuery.event.addProp );
 
 jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) {
@@ -802,6 +778,12 @@ jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateTyp
 			return true;
 		},
 
+		// Suppress native focus or blur as it's already being fired
+		// in leverageNative.
+		_default: function() {
+			return true;
+		},
+
 		delegateType: delegateType
 	};
 } );
diff --git a/src/event/trigger.js b/src/event/trigger.js
index c3769e1f1690863222a1094a883a04d4dd353de9..2f5e65e05183c8d03e51dee2ae706e55357a183e 100644
--- a/src/event/trigger.js
+++ b/src/event/trigger.js
@@ -103,9 +103,7 @@ jQuery.extend( jQuery.event, {
 				special.bindType || type;
 
 			// jQuery handler
-			handle = (
-					dataPriv.get( cur, "events" ) || Object.create( null )
-				)[ event.type ] &&
+			handle = ( dataPriv.get( cur, "events" ) || Object.create( null ) )[ event.type ] &&
 				dataPriv.get( cur, "handle" );
 			if ( handle ) {
 				handle.apply( cur, data );
diff --git a/src/offset.js b/src/offset.js
index 62166bc9999f37838abf3544aa62876cfcc25727..6e973587062b47e09a5e5bcc58bf2e1988bad5a3 100644
--- a/src/offset.js
+++ b/src/offset.js
@@ -63,12 +63,6 @@ jQuery.offset = {
 			options.using.call( elem, props );
 
 		} else {
-			if ( typeof props.top === "number" ) {
-				props.top += "px";
-			}
-			if ( typeof props.left === "number" ) {
-				props.left += "px";
-			}
 			curElem.css( props );
 		}
 	}
diff --git a/src/serialize.js b/src/serialize.js
index cd4e99f9f4ae5732534c1c53922825eacaa2e5a8..11a862453b80985262efb4e8e9297108f0a0471c 100644
--- a/src/serialize.js
+++ b/src/serialize.js
@@ -105,16 +105,14 @@ jQuery.fn.extend( {
 			// Can add propHook for "elements" to filter or add form elements
 			var elements = jQuery.prop( this, "elements" );
 			return elements ? jQuery.makeArray( elements ) : this;
-		} )
-		.filter( function() {
+		} ).filter( function() {
 			var type = this.type;
 
 			// Use .is( ":disabled" ) so that fieldset[disabled] works
 			return this.name && !jQuery( this ).is( ":disabled" ) &&
 				rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
 				( this.checked || !rcheckableType.test( type ) );
-		} )
-		.map( function( _i, elem ) {
+		} ).map( function( _i, elem ) {
 			var val = jQuery( this ).val();
 
 			if ( val == null ) {
diff --git a/src/var/isFunction.js b/src/var/isFunction.js
index dad662e4fd21e8f4642d31e9fb3ff0c5e67e41f9..6e2d3a7436582187fad174e5ed89844572e0c67a 100644
--- a/src/var/isFunction.js
+++ b/src/var/isFunction.js
@@ -3,11 +3,15 @@ define( function() {
 
 	return function isFunction( obj ) {
 
-      // Support: Chrome <=57, Firefox <=52
-      // In some browsers, typeof returns "function" for HTML <object> elements
-      // (i.e., `typeof document.createElement( "object" ) === "function"`).
-      // We don't want to classify *any* DOM node as a function.
-      return typeof obj === "function" && typeof obj.nodeType !== "number";
-  };
+		// Support: Chrome <=57, Firefox <=52
+		// In some browsers, typeof returns "function" for HTML <object> elements
+		// (i.e., `typeof document.createElement( "object" ) === "function"`).
+		// We don't want to classify *any* DOM node as a function.
+		// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5
+		// Plus for old WebKit, typeof returns "function" for HTML collections
+		// (e.g., `typeof document.getElementsByTagName("div") === "function"`). (gh-4756)
+		return typeof obj === "function" && typeof obj.nodeType !== "number" &&
+			typeof obj.item !== "function";
+	};
 
 } );
diff --git a/src/wrapper.js b/src/wrapper.js
index 0af1f4964435caf3a38649b7660fbf4df1aa248d..44a07fe161b0335dfcf42932f5a7c5a94c61c37a 100644
--- a/src/wrapper.js
+++ b/src/wrapper.js
@@ -1,4 +1,3 @@
-/* eslint-disable no-unused-vars*/
 /*!
  * jQuery JavaScript Library v@VERSION
  * https://jquery.com/
@@ -6,7 +5,7 @@
  * Includes Sizzle.js
  * https://sizzlejs.com/
  *
- * Copyright JS Foundation and other contributors
+ * Copyright OpenJS Foundation and other contributors
  * Released under the MIT license
  * https://jquery.org/license
  *
diff --git a/test/data/testrunner.js b/test/data/testrunner.js
index 39000c33b405ec2b1f83003b9f4151f86a1b654f..efe88c3c6458d0d6513fb372f50babd3d755ad9d 100644
--- a/test/data/testrunner.js
+++ b/test/data/testrunner.js
@@ -1,11 +1,11 @@
 ( function() {
 
-// Store the old counts so that we only assert on tests that have actually leaked,
+"use strict";
+
+// Store the old count so that we only assert on tests that have actually leaked,
 // instead of asserting every time a test has leaked sometime in the past
-var oldCacheLength = 0,
-	oldActive = 0,
+var oldActive = 0,
 
-	expectedDataKeys = {},
 	splice = [].splice,
 	ajaxSettings = jQuery.ajaxSettings;
 
@@ -19,108 +19,11 @@ QUnit.config.testTimeout = 60e3; // 1 minute
 // Enforce an "expect" argument or expect() call in all test bodies.
 QUnit.config.requireExpects = true;
 
-/**
- * @param {jQuery|HTMLElement|Object|Array} elems Target (or array of targets) for jQuery.data.
- * @param {string} key
- */
-QUnit.assert.expectJqData = function( env, elems, key ) {
-	var i, elem, expando;
-
-	// As of jQuery 2.0, there will be no "cache"-data is
-	// stored and managed completely below the API surface
-	if ( jQuery.cache ) {
-		env.checkJqData = true;
-
-		if ( elems.jquery && elems.toArray ) {
-			elems = elems.toArray();
-		}
-		if ( !Array.isArray( elems ) ) {
-			elems = [ elems ];
-		}
-
-		for ( i = 0; i < elems.length; i++ ) {
-			elem = elems[ i ];
-
-			// jQuery.data only stores data for nodes in jQuery.cache,
-			// for other data targets the data is stored in the object itself,
-			// in that case we can't test that target for memory leaks.
-			// But we don't have to since in that case the data will/must will
-			// be available as long as the object is not garbage collected by
-			// the js engine, and when it is, the data will be removed with it.
-			if ( !elem.nodeType ) {
-
-				// Fixes false positives for dataTests(window), dataTests({}).
-				continue;
-			}
-
-			expando = elem[ jQuery.expando ];
-
-			if ( expando === undefined ) {
-
-				// In this case the element exists fine, but
-				// jQuery.data (or internal data) was never (in)directly
-				// called.
-				// Since this method was called it means some data was
-				// expected to be found, but since there is nothing, fail early
-				// (instead of in teardown).
-				this.notStrictEqual(
-					expando,
-					undefined,
-					"Target for expectJqData must have an expando, " +
-						"for else there can be no data to expect."
-				);
-			} else {
-				if ( expectedDataKeys[ expando ] ) {
-					expectedDataKeys[ expando ].push( key );
-				} else {
-					expectedDataKeys[ expando ] = [ key ];
-				}
-			}
-		}
-	}
-
-};
-QUnit.config.urlConfig.push( {
-	id: "jqdata",
-	label: "Always check jQuery.data",
-	tooltip: "Trigger QUnit.expectJqData detection for all tests " +
-		"instead of just the ones that call it"
-} );
-
 /**
  * Ensures that tests have cleaned up properly after themselves. Should be passed as the
  * teardown function on all modules' lifecycle object.
  */
 window.moduleTeardown = function( assert ) {
-	var i, expectedKeys, actualKeys,
-		cacheLength = 0;
-
-	// Only look for jQuery data problems if this test actually
-	// provided some information to compare against.
-	if ( QUnit.urlParams.jqdata || this.checkJqData ) {
-		for ( i in jQuery.cache ) {
-			expectedKeys = expectedDataKeys[ i ];
-			actualKeys = jQuery.cache[ i ] ? Object.keys( jQuery.cache[ i ] ) : jQuery.cache[ i ];
-			if ( !QUnit.equiv( expectedKeys, actualKeys ) ) {
-				assert.deepEqual( actualKeys, expectedKeys, "Expected keys exist in jQuery.cache" );
-			}
-			delete jQuery.cache[ i ];
-			delete expectedDataKeys[ i ];
-		}
-
-		// In case it was removed from cache before (or never there in the first place)
-		for ( i in expectedDataKeys ) {
-			assert.deepEqual(
-				expectedDataKeys[ i ],
-				undefined,
-				"No unexpected keys were left in jQuery.cache (#" + i + ")"
-			);
-			delete expectedDataKeys[ i ];
-		}
-	}
-
-	// Reset data register
-	expectedDataKeys = {};
 
 	// Check for (and clean up, if possible) incomplete animations/requests/etc.
 	if ( jQuery.timers && jQuery.timers.length !== 0 ) {
@@ -137,19 +40,6 @@ window.moduleTeardown = function( assert ) {
 	}
 
 	Globals.cleanup();
-
-	for ( i in jQuery.cache ) {
-		++cacheLength;
-	}
-
-	// Because QUnit doesn't have a mechanism for retrieving
-	// the number of expected assertions for a test,
-	// if we unconditionally assert any of these,
-	// the test will fail with too many assertions :|
-	if ( cacheLength !== oldCacheLength ) {
-		assert.equal( cacheLength, oldCacheLength, "No unit tests leak memory in jQuery.cache" );
-		oldCacheLength = cacheLength;
-	}
 };
 
 QUnit.done( function() {
diff --git a/test/middleware-mockserver.js b/test/middleware-mockserver.js
index 6fc3bb1c168fb97592b6f28dcad00e0e50e37b41..36216ecc195795f151d2d44b76bcb3d7270ac2b5 100644
--- a/test/middleware-mockserver.js
+++ b/test/middleware-mockserver.js
@@ -62,7 +62,7 @@ var mocks = {
 	script: function( req, resp ) {
 		if ( req.query.header === "ecma" ) {
 			resp.writeHead( 200, { "content-type": "application/ecmascript" } );
-		} else if ( req.query.header ) {
+		} else if ( "header" in req.query ) {
 			resp.writeHead( 200, { "content-type": "text/javascript" } );
 		} else {
 			resp.writeHead( 200, { "content-type": "text/html" } );
@@ -98,7 +98,7 @@ var mocks = {
 		} else if ( req.query.callback ) {
 			callback = Promise.resolve( req.query.callback );
 		} else if ( req.method === "GET" ) {
-			callback = Promise.resolve( req.url.match( /^.+\/([^\/?.]+)\?.+$/ )[ 1 ] );
+			callback = Promise.resolve( req.url.match( /^.+\/([^\/?]+)\?.+$/ )[ 1 ] );
 		} else {
 			callback = getBody( req ).then( function( body ) {
 				return body.trim().replace( "callback=", "" );
@@ -277,8 +277,7 @@ function MockserverMiddlewareFactory() {
 	 * @param {Function} next Continue request handling
 	 */
 	return function( req, resp, next ) {
-		var method = req.method,
-			parsed = url.parse( req.url, /* parseQuery */ true ),
+		var parsed = url.parse( req.url, /* parseQuery */ true ),
 			path = parsed.pathname.replace( /^\/base\//, "" ),
 			query = parsed.query,
 			subReq = Object.assign( Object.create( req ), {
diff --git a/test/unit/ajax.js b/test/unit/ajax.js
index 8b3850605ebe48324fce8c0c48b305c2fd9e8cc8..bcb2346400ad961d16a3bc74817be876060b029c 100644
--- a/test/unit/ajax.js
+++ b/test/unit/ajax.js
@@ -114,7 +114,7 @@ QUnit.module( "ajax", {
 		return {
 			create: function( options ) {
 				options.crossDomain = true;
-				return jQuery.ajax( url( "mock.php?action=script" ), options );
+				return jQuery.ajax( url( "mock.php?action=script&header" ), options );
 			},
 			success: function() {
 				assert.ok( true, "success" );
@@ -837,6 +837,19 @@ QUnit.module( "ajax", {
 		};
 	} );
 
+	ajaxTest( "jQuery.ajax() - do execute scripts if JSONP from unsuccessful responses", 1, function( assert ) {
+		var testMsg = "Unsuccessful JSONP requests should have a JSON body";
+		return {
+			dataType: "jsonp",
+			url: url( "mock.php?action=errorWithScript" ),
+			// error is the significant assertion
+			error: function( xhr ) {
+				var expected = { "status": 404, "msg": "Not Found" };
+				assert.deepEqual( xhr.responseJSON, expected, testMsg );
+			}
+		};
+	} );
+
 	ajaxTest( "jQuery.ajax() - do not execute scripts from unsuccessful responses (gh-4250)", 11, function( assert ) {
 		var globalEval = jQuery.globalEval;
 
@@ -2165,7 +2178,10 @@ if ( typeof window.ArrayBuffer === "undefined" || typeof new XMLHttpRequest().re
 	// Chrome 78 dropped support for synchronous XHR requests inside of
 	// beforeunload, unload, pagehide, and visibilitychange event handlers.
 	// See https://bugs.chromium.org/p/chromium/issues/detail?id=952452
-	if ( !/chrome/i.test( navigator.userAgent ) ) {
+	// Safari 13 did similar changes. The below check will catch them both.
+	// Edge Legacy fakes Chrome which fakes Safari in their user agents so we need
+	// to exclude Edge specifically here so that the test continues to run there.
+	if ( !/safari/i.test( navigator.userAgent ) || /edge\//i.test( navigator.userAgent ) ) {
 		testIframe(
 			"#14379 - jQuery.ajax() on unload",
 			"ajax/onunload.html",
diff --git a/test/unit/attributes.js b/test/unit/attributes.js
index 5bfc0cef5a190745c75fb0ba3db124ad6fda2cfe..9d24ff13056f4c06afb6a24b84326dec05717912 100644
--- a/test/unit/attributes.js
+++ b/test/unit/attributes.js
@@ -1430,10 +1430,6 @@ var testToggleClass = function( valueObj, assert ) {
 	e.toggleClass( false );
 	e.toggleClass();
 	assert.ok( e.is( ".testD.testE" ), "Assert class present (restored from data)" );
-
-	// Cleanup
-	e.removeClass( "testD" );
-	assert.expectJqData( this, e[ 0 ], "__className__" );
 };
 
 QUnit.test( "toggleClass(String|boolean|undefined[, boolean])", function( assert ) {
diff --git a/test/unit/core.js b/test/unit/core.js
index b31ee9e2bed7c9b76e2eb16e36f6255f1bc1ee8c..e45e493e0c9836b33d327bf7078d12daf9f86b08 100644
--- a/test/unit/core.js
+++ b/test/unit/core.js
@@ -1411,9 +1411,9 @@ QUnit.test( "jQuery.parseXML", function( assert ) {
 	}
 	try {
 		xml = jQuery.parseXML( "<p>Not a <<b>well-formed</b> xml string</p>" );
-		assert.ok( false, "invalid xml not detected" );
+		assert.ok( false, "invalid XML not detected" );
 	} catch ( e ) {
-		assert.strictEqual( e.message, "Invalid XML: <p>Not a <<b>well-formed</b> xml string</p>", "invalid xml detected" );
+		assert.ok( e.message.indexOf( "Invalid XML:" ) === 0, "invalid XML detected" );
 	}
 	try {
 		xml = jQuery.parseXML( "" );
@@ -1429,6 +1429,34 @@ QUnit.test( "jQuery.parseXML", function( assert ) {
 	}
 } );
 
+// Support: IE 11+, Edge 12 - 18 only
+// IE throws an error when parsing invalid XML instead of reporting the error
+// in a `parsererror` element, IE & Legacy Edge don't report errors in a parsererror
+// element; skip the test there.
+QUnit[
+	document.documentMode || /edge\//i.test( navigator.userAgent ) ?
+		"skip" :
+		"test"
+]( "jQuery.parseXML - error reporting", function( assert ) {
+	assert.expect( 2 );
+
+	var errorArg, lineMatch, line, columnMatch, column;
+
+	sinon.stub( jQuery, "error" );
+
+	jQuery.parseXML( "<p>Not a <<b>well-formed</b> xml string</p>" );
+	errorArg = jQuery.error.firstCall.args[ 0 ].toLowerCase();
+	console.log( "errorArg", errorArg );
+
+	lineMatch = errorArg.match( /line\s*(?:number)?\s*(\d+)/ );
+	line = lineMatch && lineMatch[ 1 ];
+	columnMatch = errorArg.match( /column\s*(\d+)/ );
+	column = columnMatch && columnMatch[ 1 ];
+
+	assert.strictEqual( line, "1", "reports error line" );
+	assert.strictEqual( column, "11", "reports error column" );
+} );
+
 testIframe(
 	"Conditional compilation compatibility (#13274)",
 	"core/cc_on.html",
diff --git a/test/unit/data.js b/test/unit/data.js
index 3a2047cff5ea4846390d3868ed040e95da6d3192..b19833a6bc914f0c3912530a00f5911eb9538ee0 100644
--- a/test/unit/data.js
+++ b/test/unit/data.js
@@ -132,11 +132,6 @@ QUnit.test( "jQuery.data(div)", function( assert ) {
 	var div = document.createElement( "div" );
 
 	dataTests( div, assert );
-
-	// We stored one key in the private data
-	// assert that nothing else was put in there, and that that
-	// one stayed there.
-	assert.expectJqData( this, div, "foo" );
 } );
 
 QUnit.test( "jQuery.data({})", function( assert ) {
@@ -159,8 +154,6 @@ QUnit.test( "jQuery.data(document)", function( assert ) {
 	assert.expect( 25 );
 
 	dataTests( document, assert );
-
-	assert.expectJqData( this, document, "foo" );
 } );
 
 QUnit.test( "jQuery.data(<embed>)", function( assert ) {
diff --git a/test/unit/dimensions.js b/test/unit/dimensions.js
index 230f047f31fdb53ae31ab8dd8a45004a791daac4..9338af3c3226b4745f7fc7955c0408eb29e8e845 100644
--- a/test/unit/dimensions.js
+++ b/test/unit/dimensions.js
@@ -627,13 +627,7 @@ QUnit.test( "width/height on an inline element with percentage dimensions (gh-36
 	}
 );
 
-// Support: Firefox 70+
-// Firefox 70 & newer fail this test but the issue there is more profound - Firefox doesn't
-// subtract borders from table row computed widths.
-// See https://github.com/jquery/jquery/issues/4529
-// See https://bugzilla.mozilla.org/show_bug.cgi?id=1590837
-// See https://github.com/w3c/csswg-drafts/issues/4444
-QUnit[ /firefox/i.test( navigator.userAgent ) ? "skip" : "test" ](
+QUnit.test(
 	"width/height on a table row with phantom borders (gh-3698)", function( assert ) {
 	assert.expect( 4 );
 
diff --git a/test/unit/effects.js b/test/unit/effects.js
index dfe5b7c3210b1d81a4142f4e92ab5d9037ae6b9d..a1fd642ba5495de15db869327fa60a3ca95fd283 100644
--- a/test/unit/effects.js
+++ b/test/unit/effects.js
@@ -90,9 +90,6 @@ QUnit.test( "show()", function( assert ) {
 		assert.ok( pass, "Show with " + name + " does not call animate callback" );
 	} );
 
-	// Tolerate data from show()/hide()
-	assert.expectJqData( this, div, "olddisplay" );
-
 	jQuery(
 		"<div id='show-tests'>" +
 		"<div><p><a href='#'></a></p><code></code><pre></pre><span></span></div>" +
@@ -217,8 +214,6 @@ supportjQuery.each( hideOptions, function( type, setup ) {
 		} );
 
 		clock.tick( 300 );
-
-		assert.expectJqData( this, $span, "olddisplay" );
 	} );
 
 	QUnit[
@@ -252,8 +247,6 @@ supportjQuery.each( hideOptions, function( type, setup ) {
 		} );
 
 		clock.tick( 300 );
-
-		assert.expectJqData( this, $shadowChild, "olddisplay" );
 	} );
 } );
 
@@ -1171,9 +1164,6 @@ QUnit.test( "interrupt toggle", function( assert ) {
 
 			// Save original property value for comparison
 			jQuery.data( this, "startVal", jQuery( this ).css( prop ) );
-
-			// Expect olddisplay data from our .hide() call below
-			assert.expectJqData( env, this, "olddisplay" );
 		} );
 
 		// Interrupt a hiding toggle
@@ -1623,8 +1613,6 @@ QUnit.test( "animate should set display for disconnected nodes", function( asser
 	assert.strictEqual( $divInline.show()[ 0 ].style.display, "inline",
 		"show() should not change display if it already set" );
 
-	assert.expectJqData( env, $divNone[ 0 ], "olddisplay" );
-
 	jQuery.each( showMethods, function( name, opt ) {
 		jQuery.fn[ name ].apply( jQuery( "<div></div>" ), opt.concat( [ function() {
 			assert.strictEqual( jQuery( this ).css( "display" ), nullParentDisplay,
diff --git a/test/unit/event.js b/test/unit/event.js
index 17f15b2a6faaccab31a9937c8f00ace653614872..252c0c8756cce7508b17bd4945a4746d9194f998 100644
--- a/test/unit/event.js
+++ b/test/unit/event.js
@@ -2625,6 +2625,33 @@ QUnit.test( "focusin on document & window", function( assert ) {
 	jQuery( document ).off( "focusout", increment );
 } );
 
+QUnit.test( "element removed during focusout (gh-4417)", function( assert ) {
+	assert.expect( 1 );
+
+	var button = jQuery( "<button>Click me</button>" );
+
+	button.appendTo( "#qunit-fixture" );
+
+	button.on( "click", function() {
+		button.trigger( "blur" );
+		assert.ok( true, "Removing the element didn't crash" );
+	} );
+
+	// Support: Chrome 86+
+	// In Chrome, if an element having a focusout handler is blurred by
+	// clicking outside of it, it invokes the handler synchronously. However,
+	// if the click happens programmatically, the invocation is asynchronous.
+	// As we have no way to simulate real user input in unit tests, simulate
+	// this behavior by calling `jQuery.cleanData` & removing the element using
+	// native APIs.
+	button[ 0 ].blur = function() {
+		jQuery.cleanData( [ this ] );
+		this.parentNode.removeChild( this );
+	};
+
+	button[ 0 ].click();
+} );
+
 testIframe(
 	"jQuery.ready promise",
 	"event/promiseReady.html",
@@ -3236,6 +3263,40 @@ QUnit.test( "native-backed events preserve trigger data (gh-1741, gh-4139)", fun
 	}, 50 );
 } );
 
+QUnit.test( "focus change during a focus handler (gh-4382)", function( assert ) {
+	assert.expect( 2 );
+
+	var done = assert.async(),
+		select = jQuery( "<select><option selected='selected'>A</option></select>" ),
+		button = jQuery( "<button>Focus target</button>" );
+
+	jQuery( "#qunit-fixture" )
+		.append( select )
+		.append( button );
+
+	select.on( "focus", function() {
+		button.trigger( "focus" );
+	} );
+
+	jQuery( document ).on( "focusin.focusTests", function( ev ) {
+		// Support: IE 11+
+		// In IE focus is async so focusin on document is fired multiple times,
+		// for each of the elements. In other browsers it's fired just once, for
+		// the last one.
+		if ( ev.target === button[ 0 ] ) {
+			assert.ok( true, "focusin propagated to document from the button" );
+		}
+	} );
+
+	select.trigger( "focus" );
+
+	setTimeout( function() {
+		assert.strictEqual( document.activeElement, button[ 0 ], "Focus redirect worked" );
+		jQuery( document ).off( ".focusTests" );
+		done();
+	} );
+} );
+
 // TODO replace with an adaptation of
 // https://github.com/jquery/jquery/pull/1367/files#diff-a215316abbaabdf71857809e8673ea28R2464
 ( function() {
diff --git a/test/unit/offset.js b/test/unit/offset.js
index 5607ddaf96a5f48ddbd5d13ec1454ce9d9acf9b6..814de29a9ab639ecf33e77f3cffb5d570f35e4bb 100644
--- a/test/unit/offset.js
+++ b/test/unit/offset.js
@@ -69,7 +69,7 @@ QUnit.test( "disconnected element", function( assert ) {
 
 	var result = jQuery( document.createElement( "div" ) ).offset();
 
-	// These tests are solely for master/compat consistency
+	// These tests are solely for main/compat consistency
 	// Retrieving offset on disconnected/hidden elements is not officially
 	// valid input, but will return zeros for back-compat
 	assert.equal( result.top, 0, "Retrieving offset on disconnected elements returns zeros (gh-2310)" );
@@ -86,7 +86,7 @@ QUnit.test( "hidden (display: none) element", function( assert ) {
 
 	node.remove();
 
-	// These tests are solely for master/compat consistency
+	// These tests are solely for main/compat consistency
 	// Retrieving offset on disconnected/hidden elements is not officially
 	// valid input, but will return zeros for back-compat
 	assert.equal( result.top, 0, "Retrieving offset on hidden elements returns zeros (gh-2310)" );
@@ -484,7 +484,7 @@ testIframe( "scroll", "offset/scroll.html", function( assert, $, win ) {
 	assert.equal( $( "#scroll-1-1" ).offset().top, 11, "jQuery('#scroll-1-1').offset().top" );
 	assert.equal( $( "#scroll-1-1" ).offset().left, 11, "jQuery('#scroll-1-1').offset().left" );
 
-	// These tests are solely for master/compat consistency
+	// These tests are solely for main/compat consistency
 	// Retrieving offset on disconnected/hidden elements is not officially
 	// valid input, but will return zeros for back-compat
 	assert.equal( $( "#hidden" ).offset().top, 0, "Hidden elements do not subtract scroll" );
diff --git a/test/unit/support.js b/test/unit/support.js
index dde4e41972617082b37ffc65f21063219cf369b6..684a397ec526054c14b03bb3457824c4a4ea5058 100644
--- a/test/unit/support.js
+++ b/test/unit/support.js
@@ -188,7 +188,7 @@ testIframe(
 				"pixelPosition": true,
 				"radioValue": true,
 				"reliableMarginLeft": true,
-				"reliableTrDimensions": true,
+				"reliableTrDimensions": false,
 				"scrollboxSize": true
 			},
 			firefox_60: {
diff --git a/test/unit/wrap.js b/test/unit/wrap.js
index 21335c36f6bb1aeb36e80d55d63932c40331d776..3c0990eac25b70a433153cf2a213e7775275eb6a 100644
--- a/test/unit/wrap.js
+++ b/test/unit/wrap.js
@@ -21,7 +21,7 @@ function manipulationFunctionReturningObj( value ) {
 
 function testWrap( val, assert ) {
 
-	assert.expect( 19 );
+	assert.expect( 18 );
 
 	var defaultText, result, j, i, cacheLength;
 
@@ -68,12 +68,6 @@ function testWrap( val, assert ) {
 		"Check node,textnode,comment wraps doesn't hurt text"
 	);
 
-	// Try wrapping a disconnected node
-	cacheLength = 0;
-	for ( i in jQuery.cache ) {
-		cacheLength++;
-	}
-
 	j = jQuery( "<label></label>" ).wrap( val( "<li></li>" ) );
 	assert.equal(
 		j[ 0 ] .nodeName.toUpperCase(), "LABEL", "Element is a label"
@@ -82,13 +76,6 @@ function testWrap( val, assert ) {
 		j[ 0 ].parentNode.nodeName.toUpperCase(), "LI", "Element has been wrapped"
 	);
 
-	for ( i in jQuery.cache ) {
-		cacheLength--;
-	}
-	assert.equal(
-		cacheLength, 0, "No memory leak in jQuery.cache (bug #7165)"
-	);
-
 	// Wrap an element containing a text node
 	j = jQuery( "<span></span>" ).wrap( "<div>test</div>" );
 	assert.equal(
diff --git a/types-jquery/JQuery.d.ts b/types-jquery/JQuery.d.ts
old mode 100644
new mode 100755
index f6b1d7e909f910243bd48e7904cfbb141b7bd080..1e463ab75536a0f56e01dd206099a2fe510e859f
--- a/types-jquery/JQuery.d.ts
+++ b/types-jquery/JQuery.d.ts
@@ -1780,7 +1780,9 @@ $( "div" ).children( ".selected" ).css( "color", "blue" );
 </html>
 ```
      */
-    children(selector?: JQuery.Selector): this;
+    children<K extends keyof HTMLElementTagNameMap>(selector: K): JQuery<HTMLElementTagNameMap[K]>;
+    children<K extends keyof SVGElementTagNameMap>(selector: K): JQuery<SVGElementTagNameMap[K]>;
+    children(selector?: JQuery.Selector): JQuery;
     /**
      * Remove from the queue all items that have not yet been run.
      * @param queueName A string containing the name of the queue. Defaults to fx, the standard effects queue.
@@ -4526,9 +4528,9 @@ $( "*", document.body ).click(function( event ) {
 </html>
 ```
      */
-    get(index: number): TElement;
+    get(index: number): TElement | undefined;
     /**
-     * Retrieve the elements matched by the jQuery object.
+     * Retrieve the elements matched by the jQuery object. If the value of index is out of bounds — less than the negative number of elements or equal to or greater than the number of elements — it returns undefined.
      * @see \`{@link https://api.jquery.com/get/ }\`
      * @since 1.0
      * @example ​ ````Select all divs in the document and return the DOM Elements as an Array; then use the built-in reverse() method to reverse that array.
diff --git a/types-jquery/JQueryStatic.d.ts b/types-jquery/JQueryStatic.d.ts
old mode 100644
new mode 100755
index 3386f6db49f51cc81a4b5d752ba895b6998fe24c..4ca5428d71ca417da99a88fa1320de22d5951b1c
--- a/types-jquery/JQueryStatic.d.ts
+++ b/types-jquery/JQueryStatic.d.ts
@@ -1542,8 +1542,11 @@ $( "#log" ).append( "<div><b>settings -- </b>" + JSON.stringify( settings ) + "<
     /**
      * Load data from the server using a HTTP GET request.
      * @param url A string containing the URL to which the request is sent.
-     * @param success A callback function that is executed if the request succeeds. Required if `dataType` is provided,
-     *                but you can use `null` or \`{@link noop jQuery.noop}\` as a placeholder.
+     * @param success_data _&#x40;param_ `success_data`
+     * <br>
+     * * `success` — A callback function that is executed if the request succeeds. Required if `dataType` is provided,
+     *               but you can use `null` or \`{@link noop jQuery.noop}\` as a placeholder. <br>
+     * * `data` — A plain object or string that is sent to the server with the request.
      * @param dataType The type of data expected from the server. Default: Intelligent Guess (xml, json, script, text, html).
      * @see \`{@link https://api.jquery.com/jQuery.get/ }\`
      * @since 1.0
@@ -1557,7 +1560,7 @@ $.get( "test.php", function( data ) {
 ```
      */
     get(url: string,
-        success: JQuery.jqXHR.DoneCallback | null,
+        data_success: JQuery.PlainObject | string | JQuery.jqXHR.DoneCallback | null,
         dataType: string): JQuery.jqXHR;
     /**
      * Load data from the server using a HTTP GET request.
@@ -2652,14 +2655,17 @@ $.post( "test.php", { func: "getNameAndTime" }, function( data ) {
     /**
      * Load data from the server using a HTTP POST request.
      * @param url A string containing the URL to which the request is sent.
-     * @param success A callback function that is executed if the request succeeds. Required if dataType is provided, but
-     *                can be null in that case.
+     * @param success_data _&#x40;param_ `success_data`
+     * <br>
+     * * `success` — A callback function that is executed if the request succeeds. Required if `dataType` is provided,
+     *               but can be `null` in that case. <br>
+     * * `data` — A plain object or string that is sent to the server with the request.
      * @param dataType The type of data expected from the server. Default: Intelligent Guess (xml, json, script, text, html).
      * @see \`{@link https://api.jquery.com/jQuery.post/ }\`
      * @since 1.0
      */
     post(url: string,
-         success: JQuery.jqXHR.DoneCallback | null,
+         data_success: JQuery.PlainObject | string | JQuery.jqXHR.DoneCallback | null,
          dataType: string): JQuery.jqXHR;
     /**
      * Load data from the server using a HTTP POST request.
@@ -13203,6 +13209,7 @@ $( "span:eq(3)" ).text( "" + jQuery.data( div, "test2" ) );
      * @param str The string to trim.
      * @see \`{@link https://api.jquery.com/jQuery.trim/ }\`
      * @since 1.0
+     * @deprecated ​ Deprecated since 3.5. See \`{@link https://api.jquery.com/category/deprecated/deprecated-3.5/ }\`.
      * @example ​ ````Remove the white spaces at the start and at the end of the string.
 ```html
 <!doctype html>
diff --git a/types-jquery/LICENSE b/types-jquery/LICENSE
old mode 100644
new mode 100755
diff --git a/types-jquery/README.md b/types-jquery/README.md
old mode 100644
new mode 100755
index b8c191c716423b5d9bf492d6f1384800973a8167..ee6913bfb5628911582f21a3361e16997f284958
--- a/types-jquery/README.md
+++ b/types-jquery/README.md
@@ -8,9 +8,9 @@ This package contains type definitions for jquery (https://jquery.com).
 Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/jquery.
 
 ### Additional Details
- * Last updated: Mon, 07 Dec 2020 19:49:03 GMT
+ * Last updated: Tue, 11 Jan 2022 22:31:39 GMT
  * Dependencies: [@types/sizzle](https://npmjs.com/package/@types/sizzle)
  * Global values: `$`, `Symbol`, `jQuery`
 
 # Credits
-These definitions were written by [Leonard Thieu](https://github.com/leonard-thieu), [Boris Yankov](https://github.com/borisyankov), [Christian Hoffmeister](https://github.com/choffmeister), [Steve Fenton](https://github.com/Steve-Fenton), [Diullei Gomes](https://github.com/Diullei), [Tass Iliopoulos](https://github.com/tasoili), [Jason Swearingen](https://github.com/jasons-novaleaf), [Sean Hill](https://github.com/seanski), [Guus Goossens](https://github.com/Guuz), [Kelly Summerlin](https://github.com/ksummerlin), [Basarat Ali Syed](https://github.com/basarat), [Nicholas Wolverson](https://github.com/nwolverson), [Derek Cicerone](https://github.com/derekcicerone), [Andrew Gaspar](https://github.com/AndrewGaspar), [Seikichi Kondo](https://github.com/seikichi), [Benjamin Jackman](https://github.com/benjaminjackman), [Poul Sorensen](https://github.com/s093294), [Josh Strobl](https://github.com/JoshStrobl), [John Reilly](https://github.com/johnnyreilly), [Dick van den Brink](https://github.com/DickvdBrink), [Thomas Schulz](https://github.com/King2500), [Terry Mun](https://github.com/terrymun), and [Martin Badin](https://github.com/martin-badin).
+These definitions were written by [Leonard Thieu](https://github.com/leonard-thieu), [Boris Yankov](https://github.com/borisyankov), [Christian Hoffmeister](https://github.com/choffmeister), [Steve Fenton](https://github.com/Steve-Fenton), [Diullei Gomes](https://github.com/Diullei), [Tass Iliopoulos](https://github.com/tasoili), [Sean Hill](https://github.com/seanski), [Guus Goossens](https://github.com/Guuz), [Kelly Summerlin](https://github.com/ksummerlin), [Basarat Ali Syed](https://github.com/basarat), [Nicholas Wolverson](https://github.com/nwolverson), [Derek Cicerone](https://github.com/derekcicerone), [Andrew Gaspar](https://github.com/AndrewGaspar), [Seikichi Kondo](https://github.com/seikichi), [Benjamin Jackman](https://github.com/benjaminjackman), [Josh Strobl](https://github.com/JoshStrobl), [John Reilly](https://github.com/johnnyreilly), [Dick van den Brink](https://github.com/DickvdBrink), [Thomas Schulz](https://github.com/King2500), [Terry Mun](https://github.com/terrymun), [Martin Badin](https://github.com/martin-badin), and [Chris Frewin](https://github.com/princefishthrower).
diff --git a/types-jquery/dist/jquery.slim.d.ts b/types-jquery/dist/jquery.slim.d.ts
old mode 100644
new mode 100755
diff --git a/types-jquery/index.d.ts b/types-jquery/index.d.ts
old mode 100644
new mode 100755
index cba9887578e142aae4f2f7f1cb456e38fc66df3e..2a1acd12a9c541a1177740f1cf19edeeef66c12d
--- a/types-jquery/index.d.ts
+++ b/types-jquery/index.d.ts
@@ -6,7 +6,6 @@
 //                 Steve Fenton <https://github.com/Steve-Fenton>
 //                 Diullei Gomes <https://github.com/Diullei>
 //                 Tass Iliopoulos <https://github.com/tasoili>
-//                 Jason Swearingen <https://github.com/jasons-novaleaf>
 //                 Sean Hill <https://github.com/seanski>
 //                 Guus Goossens <https://github.com/Guuz>
 //                 Kelly Summerlin <https://github.com/ksummerlin>
@@ -16,13 +15,13 @@
 //                 Andrew Gaspar <https://github.com/AndrewGaspar>
 //                 Seikichi Kondo <https://github.com/seikichi>
 //                 Benjamin Jackman <https://github.com/benjaminjackman>
-//                 Poul Sorensen <https://github.com/s093294>
 //                 Josh Strobl <https://github.com/JoshStrobl>
 //                 John Reilly <https://github.com/johnnyreilly>
 //                 Dick van den Brink <https://github.com/DickvdBrink>
 //                 Thomas Schulz <https://github.com/King2500>
 //                 Terry Mun <https://github.com/terrymun>
 //                 Martin Badin <https://github.com/martin-badin>
+//                 Chris Frewin <https://github.com/princefishthrower>
 // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
 // TypeScript Version: 2.7
 
diff --git a/types-jquery/legacy.d.ts b/types-jquery/legacy.d.ts
old mode 100644
new mode 100755
diff --git a/types-jquery/misc.d.ts b/types-jquery/misc.d.ts
old mode 100644
new mode 100755
index 126d374477db459e1a251f5af548e88b46f43cdd..087e1cc46e031c691b48e294d073b38fac7cac42
--- a/types-jquery/misc.d.ts
+++ b/types-jquery/misc.d.ts
@@ -50,7 +50,7 @@ declare namespace JQuery {
         /**
          * A string containing the URL to which the request is sent.
          */
-        url?: string;
+        url?: string | undefined;
     }
 
     interface UrlAjaxSettings<TContext = any> extends Ajax.AjaxSettingsBase<TContext> {
@@ -78,11 +78,11 @@ declare namespace JQuery {
             /**
              * A set of key/value pairs that map a given dataType to its MIME type, which gets sent in the Accept request header. This header tells the server what kind of response it will accept in return.
              */
-            accepts?: PlainObject<string>;
+            accepts?: PlainObject<string> | undefined;
             /**
              * By default, all requests are sent asynchronously (i.e. this is set to true by default). If you need synchronous requests, set this option to false. Cross-domain requests and dataType: "jsonp" requests do not support synchronous operation. Note that synchronous requests may temporarily lock the browser, disabling any actions while the request is active. As of jQuery 1.8, the use of async: false with jqXHR ($.Deferred) is deprecated; you must use the success/error/complete callback options instead of the corresponding methods of the jqXHR object such as jqXHR.done().
              */
-            async?: boolean;
+            async?: boolean | undefined;
             /**
              * A pre-request callback function that can be used to modify the jqXHR (in jQuery 1.4.x, XMLHTTPRequest) object before it is sent. Use this to set custom headers, etc. The jqXHR and settings objects are passed as arguments. This is an Ajax Event. Returning false in the beforeSend function will cancel the request. As of jQuery 1.5, the beforeSend option will be called regardless of the type of request.
              */
@@ -90,35 +90,35 @@ declare namespace JQuery {
             /**
              * If set to false, it will force requested pages not to be cached by the browser. Note: Setting cache to false will only work correctly with HEAD and GET requests. It works by appending "_={timestamp}" to the GET parameters. The parameter is not needed for other types of requests, except in IE8 when a POST is made to a URL that has already been requested by a GET.
              */
-            cache?: boolean;
+            cache?: boolean | undefined;
             /**
              * A function to be called when the request finishes (after success and error callbacks are executed). The function gets passed two arguments: The jqXHR (in jQuery 1.4.x, XMLHTTPRequest) object and a string categorizing the status of the request ("success", "notmodified", "nocontent", "error", "timeout", "abort", or "parsererror"). As of jQuery 1.5, the complete setting can accept an array of functions. Each function will be called in turn. This is an Ajax Event.
              */
-            complete?: TypeOrArray<CompleteCallback<TContext>>;
+            complete?: TypeOrArray<CompleteCallback<TContext>> | undefined;
             /**
              * An object of string/regular-expression pairs that determine how jQuery will parse the response, given its content type.
              */
-            contents?: PlainObject<RegExp>;
+            contents?: PlainObject<RegExp> | undefined;
             /**
              * When sending data to the server, use this content type. Default is "application/x-www-form-urlencoded; charset=UTF-8", which is fine for most cases. If you explicitly pass in a content-type to $.ajax(), then it is always sent to the server (even if no data is sent). As of jQuery 1.6 you can pass false to tell jQuery to not set any content type header. Note: The W3C XMLHttpRequest specification dictates that the charset is always UTF-8; specifying another charset will not force the browser to change the encoding. Note: For cross-domain requests, setting the content type to anything other than application/x-www-form-urlencoded, multipart/form-data, or text/plain will trigger the browser to send a preflight OPTIONS request to the server.
              */
-            contentType?: string | false;
+            contentType?: string | false | undefined;
             /**
              * This object will be the context of all Ajax-related callbacks. By default, the context is an object that represents the Ajax settings used in the call ($.ajaxSettings merged with the settings passed to $.ajax).
              */
-            context?: TContext;
+            context?: TContext | undefined;
             /**
              * An object containing dataType-to-dataType converters. Each converter's value is a function that returns the transformed value of the response.
              */
-            converters?: PlainObject<((value: any) => any) | true>;
+            converters?: PlainObject<((value: any) => any) | true> | undefined;
             /**
              * If you wish to force a crossDomain request (such as JSONP) on the same domain, set the value of crossDomain to true. This allows, for example, server-side redirection to another domain.
              */
-            crossDomain?: boolean;
+            crossDomain?: boolean | undefined;
             /**
              * Data to be sent to the server. It is converted to a query string, if not already a string. It's appended to the url for GET-requests. See processData option to prevent this automatic processing. Object must be Key/Value pairs. If value is an Array, jQuery serializes multiple values with same key based on the value of the traditional setting (described below).
              */
-            data?: PlainObject | string;
+            data?: PlainObject | string | undefined;
             /**
              * A function to be used to handle the raw response data of XMLHttpRequest. This is a pre-filtering function to sanitize the response. You should return the sanitized data. The function accepts two arguments: The raw data returned from the server and the 'dataType' parameter.
              */
@@ -140,7 +140,7 @@ declare namespace JQuery {
              *
              * multiple, space-separated values: As of jQuery 1.5, jQuery can convert a dataType from what it received in the Content-Type header to what you require. For example, if you want a text response to be treated as XML, use "text xml" for the dataType. You can also make a JSONP request, have it received as text, and interpreted by jQuery as XML: "jsonp text xml". Similarly, a shorthand string such as "jsonp xml" will first attempt to convert from jsonp to xml, and, failing that, convert from jsonp to text, and then from text to xml.
              */
-            dataType?: 'xml' | 'html' | 'script' | 'json' | 'jsonp' | 'text' | string;
+            dataType?: 'xml' | 'html' | 'script' | 'json' | 'jsonp' | 'text' | string | undefined;
             /**
              * The MIME type of content that is used to submit the form to the server. Possible values are:
              *
@@ -150,81 +150,81 @@ declare namespace JQuery {
              *
              * "text/plain": A type introduced in HTML5.
              */
-            enctype?: 'application/x-www-form-urlencoded' | 'multipart/form-data' | 'text/plain';
+            enctype?: 'application/x-www-form-urlencoded' | 'multipart/form-data' | 'text/plain' | undefined;
             /**
              * A function to be called if the request fails. The function receives three arguments: The jqXHR (in jQuery 1.4.x, XMLHttpRequest) object, a string describing the type of error that occurred and an optional exception object, if one occurred. Possible values for the second argument (besides null) are "timeout", "error", "abort", and "parsererror". When an HTTP error occurs, errorThrown receives the textual portion of the HTTP status, such as "Not Found" or "Internal Server Error." As of jQuery 1.5, the error setting can accept an array of functions. Each function will be called in turn. Note: This handler is not called for cross-domain script and cross-domain JSONP requests. This is an Ajax Event.
              */
-            error?: TypeOrArray<ErrorCallback<TContext>>;
+            error?: TypeOrArray<ErrorCallback<TContext>> | undefined;
             /**
              * Whether to trigger global Ajax event handlers for this request. The default is true. Set to false to prevent the global handlers like ajaxStart or ajaxStop from being triggered. This can be used to control various Ajax Events.
              */
-            global?: boolean;
+            global?: boolean | undefined;
             /**
              * An object of additional header key/value pairs to send along with requests using the XMLHttpRequest transport. The header X-Requested-With: XMLHttpRequest is always added, but its default XMLHttpRequest value can be changed here. Values in the headers setting can also be overwritten from within the beforeSend function.
              */
-            headers?: PlainObject<string | null | undefined>;
+            headers?: PlainObject<string | null | undefined> | undefined;
             /**
              * Allow the request to be successful only if the response has changed since the last request. This is done by checking the Last-Modified header. Default value is false, ignoring the header. In jQuery 1.4 this technique also checks the 'etag' specified by the server to catch unmodified data.
              */
-            ifModified?: boolean;
+            ifModified?: boolean | undefined;
             /**
              * Allow the current environment to be recognized as "local," (e.g. the filesystem), even if jQuery does not recognize it as such by default. The following protocols are currently recognized as local: file, *-extension, and widget. If the isLocal setting needs modification, it is recommended to do so once in the $.ajaxSetup() method.
              */
-            isLocal?: boolean;
+            isLocal?: boolean | undefined;
             /**
              * Override the callback function name in a JSONP request. This value will be used instead of 'callback' in the 'callback=?' part of the query string in the url. So {jsonp:'onJSONPLoad'} would result in 'onJSONPLoad=?' passed to the server. As of jQuery 1.5, setting the jsonp option to false prevents jQuery from adding the "?callback" string to the URL or attempting to use "=?" for transformation. In this case, you should also explicitly set the jsonpCallback setting. For example, { jsonp: false, jsonpCallback: "callbackName" }. If you don't trust the target of your Ajax requests, consider setting the jsonp property to false for security reasons.
              */
-            jsonp?: string | false;
+            jsonp?: string | false | undefined;
             /**
              * Specify the callback function name for a JSONP request. This value will be used instead of the random name automatically generated by jQuery. It is preferable to let jQuery generate a unique name as it'll make it easier to manage the requests and provide callbacks and error handling. You may want to specify the callback when you want to enable better browser caching of GET requests. As of jQuery 1.5, you can also use a function for this setting, in which case the value of jsonpCallback is set to the return value of that function.
              */
-            jsonpCallback?: string | ((this: TContext) => string);
+            jsonpCallback?: string | ((this: TContext) => string) | undefined;
             /**
              * The HTTP method to use for the request (e.g. "POST", "GET", "PUT").
              */
-            method?: string;
+            method?: string | undefined;
             /**
              * A mime type to override the XHR mime type.
              */
-            mimeType?: string;
+            mimeType?: string | undefined;
             /**
              * A password to be used with XMLHttpRequest in response to an HTTP access authentication request.
              */
-            password?: string;
+            password?: string | undefined;
             /**
              * By default, data passed in to the data option as an object (technically, anything other than a string) will be processed and transformed into a query string, fitting to the default content-type "application/x-www-form-urlencoded". If you want to send a DOMDocument, or other non-processed data, set this option to false.
              */
-            processData?: boolean;
+            processData?: boolean | undefined;
             /**
              * Only applies when the "script" transport is used (e.g., cross-domain requests with "jsonp" or "script" dataType and "GET" type). Sets the charset attribute on the script tag used in the request. Used when the character set on the local page is not the same as the one on the remote script.
              */
-            scriptCharset?: string;
+            scriptCharset?: string | undefined;
             /**
              * An object of numeric HTTP codes and functions to be called when the response has the corresponding code.
              *
              * If the request is successful, the status code functions take the same parameters as the success callback; if it results in an error (including 3xx redirect), they take the same parameters as the error callback.
              */
-            statusCode?: StatusCodeCallbacks<TContext>;
+            statusCode?: StatusCodeCallbacks<TContext> | undefined;
             /**
              * A function to be called if the request succeeds. The function gets passed three arguments: The data returned from the server, formatted according to the dataType parameter or the dataFilter callback function, if specified; a string describing the status; and the jqXHR (in jQuery 1.4.x, XMLHttpRequest) object. As of jQuery 1.5, the success setting can accept an array of functions. Each function will be called in turn. This is an Ajax Event.
              */
-            success?: TypeOrArray<SuccessCallback<TContext>>;
+            success?: TypeOrArray<SuccessCallback<TContext>> | undefined;
             /**
              * Set a timeout (in milliseconds) for the request. A value of 0 means there will be no timeout. This will override any global timeout set with $.ajaxSetup(). The timeout period starts at the point the $.ajax call is made; if several other requests are in progress and the browser has no connections available, it is possible for a request to time out before it can be sent. In jQuery 1.4.x and below, the XMLHttpRequest object will be in an invalid state if the request times out; accessing any object members may throw an exception. In Firefox 3.0+ only, script and JSONP requests cannot be cancelled by a timeout; the script will run even if it arrives after the timeout period.
              */
-            timeout?: number;
+            timeout?: number | undefined;
             /**
              * Set this to true if you wish to use the traditional style of param serialization.
              */
-            traditional?: boolean;
+            traditional?: boolean | undefined;
             /**
              * An alias for method. You should use type if you're using versions of jQuery prior to 1.9.0.
              */
-            type?: string;
+            type?: string | undefined;
             /**
              * A username to be used with XMLHttpRequest in response to an HTTP access authentication request.
              */
-            username?: string;
+            username?: string | undefined;
             // ActiveXObject requires "lib": ["scripthost"] which consumers would also require
             /**
              * Callback for creating the XMLHttpRequest object. Defaults to the ActiveXObject when available (IE), the XMLHttpRequest otherwise. Override to provide your own implementation for XMLHttpRequest or enhancements to the factory.
@@ -235,7 +235,7 @@ declare namespace JQuery {
              *
              * In jQuery 1.5, the withCredentials property was not propagated to the native XHR and thus CORS requests requiring it would ignore this flag. For this reason, we recommend using jQuery 1.5.1+ should you require the use of it.
              */
-            xhrFields?: XHRFields;
+            xhrFields?: XHRFields | undefined;
         }
 
         // region StatusCodeCallbacks
@@ -247,412 +247,412 @@ declare namespace JQuery {
 
             // jQuery treats 2xx and 304 status codes as a success
 
-            200?: SuccessCallback<TContext>;
-            201?: SuccessCallback<TContext>;
-            202?: SuccessCallback<TContext>;
-            203?: SuccessCallback<TContext>;
-            204?: SuccessCallback<TContext>;
-            205?: SuccessCallback<TContext>;
-            206?: SuccessCallback<TContext>;
-            207?: SuccessCallback<TContext>;
-            208?: SuccessCallback<TContext>;
-            209?: SuccessCallback<TContext>;
-            210?: SuccessCallback<TContext>;
-            211?: SuccessCallback<TContext>;
-            212?: SuccessCallback<TContext>;
-            213?: SuccessCallback<TContext>;
-            214?: SuccessCallback<TContext>;
-            215?: SuccessCallback<TContext>;
-            216?: SuccessCallback<TContext>;
-            217?: SuccessCallback<TContext>;
-            218?: SuccessCallback<TContext>;
-            219?: SuccessCallback<TContext>;
-            220?: SuccessCallback<TContext>;
-            221?: SuccessCallback<TContext>;
-            222?: SuccessCallback<TContext>;
-            223?: SuccessCallback<TContext>;
-            224?: SuccessCallback<TContext>;
-            225?: SuccessCallback<TContext>;
-            226?: SuccessCallback<TContext>;
-            227?: SuccessCallback<TContext>;
-            228?: SuccessCallback<TContext>;
-            229?: SuccessCallback<TContext>;
-            230?: SuccessCallback<TContext>;
-            231?: SuccessCallback<TContext>;
-            232?: SuccessCallback<TContext>;
-            233?: SuccessCallback<TContext>;
-            234?: SuccessCallback<TContext>;
-            235?: SuccessCallback<TContext>;
-            236?: SuccessCallback<TContext>;
-            237?: SuccessCallback<TContext>;
-            238?: SuccessCallback<TContext>;
-            239?: SuccessCallback<TContext>;
-            240?: SuccessCallback<TContext>;
-            241?: SuccessCallback<TContext>;
-            242?: SuccessCallback<TContext>;
-            243?: SuccessCallback<TContext>;
-            244?: SuccessCallback<TContext>;
-            245?: SuccessCallback<TContext>;
-            246?: SuccessCallback<TContext>;
-            247?: SuccessCallback<TContext>;
-            248?: SuccessCallback<TContext>;
-            249?: SuccessCallback<TContext>;
-            250?: SuccessCallback<TContext>;
-            251?: SuccessCallback<TContext>;
-            252?: SuccessCallback<TContext>;
-            253?: SuccessCallback<TContext>;
-            254?: SuccessCallback<TContext>;
-            255?: SuccessCallback<TContext>;
-            256?: SuccessCallback<TContext>;
-            257?: SuccessCallback<TContext>;
-            258?: SuccessCallback<TContext>;
-            259?: SuccessCallback<TContext>;
-            260?: SuccessCallback<TContext>;
-            261?: SuccessCallback<TContext>;
-            262?: SuccessCallback<TContext>;
-            263?: SuccessCallback<TContext>;
-            264?: SuccessCallback<TContext>;
-            265?: SuccessCallback<TContext>;
-            266?: SuccessCallback<TContext>;
-            267?: SuccessCallback<TContext>;
-            268?: SuccessCallback<TContext>;
-            269?: SuccessCallback<TContext>;
-            270?: SuccessCallback<TContext>;
-            271?: SuccessCallback<TContext>;
-            272?: SuccessCallback<TContext>;
-            273?: SuccessCallback<TContext>;
-            274?: SuccessCallback<TContext>;
-            275?: SuccessCallback<TContext>;
-            276?: SuccessCallback<TContext>;
-            277?: SuccessCallback<TContext>;
-            278?: SuccessCallback<TContext>;
-            279?: SuccessCallback<TContext>;
-            280?: SuccessCallback<TContext>;
-            281?: SuccessCallback<TContext>;
-            282?: SuccessCallback<TContext>;
-            283?: SuccessCallback<TContext>;
-            284?: SuccessCallback<TContext>;
-            285?: SuccessCallback<TContext>;
-            286?: SuccessCallback<TContext>;
-            287?: SuccessCallback<TContext>;
-            288?: SuccessCallback<TContext>;
-            289?: SuccessCallback<TContext>;
-            290?: SuccessCallback<TContext>;
-            291?: SuccessCallback<TContext>;
-            292?: SuccessCallback<TContext>;
-            293?: SuccessCallback<TContext>;
-            294?: SuccessCallback<TContext>;
-            295?: SuccessCallback<TContext>;
-            296?: SuccessCallback<TContext>;
-            297?: SuccessCallback<TContext>;
-            298?: SuccessCallback<TContext>;
-            299?: SuccessCallback<TContext>;
-            304?: SuccessCallback<TContext>;
+            200?: SuccessCallback<TContext> | undefined;
+            201?: SuccessCallback<TContext> | undefined;
+            202?: SuccessCallback<TContext> | undefined;
+            203?: SuccessCallback<TContext> | undefined;
+            204?: SuccessCallback<TContext> | undefined;
+            205?: SuccessCallback<TContext> | undefined;
+            206?: SuccessCallback<TContext> | undefined;
+            207?: SuccessCallback<TContext> | undefined;
+            208?: SuccessCallback<TContext> | undefined;
+            209?: SuccessCallback<TContext> | undefined;
+            210?: SuccessCallback<TContext> | undefined;
+            211?: SuccessCallback<TContext> | undefined;
+            212?: SuccessCallback<TContext> | undefined;
+            213?: SuccessCallback<TContext> | undefined;
+            214?: SuccessCallback<TContext> | undefined;
+            215?: SuccessCallback<TContext> | undefined;
+            216?: SuccessCallback<TContext> | undefined;
+            217?: SuccessCallback<TContext> | undefined;
+            218?: SuccessCallback<TContext> | undefined;
+            219?: SuccessCallback<TContext> | undefined;
+            220?: SuccessCallback<TContext> | undefined;
+            221?: SuccessCallback<TContext> | undefined;
+            222?: SuccessCallback<TContext> | undefined;
+            223?: SuccessCallback<TContext> | undefined;
+            224?: SuccessCallback<TContext> | undefined;
+            225?: SuccessCallback<TContext> | undefined;
+            226?: SuccessCallback<TContext> | undefined;
+            227?: SuccessCallback<TContext> | undefined;
+            228?: SuccessCallback<TContext> | undefined;
+            229?: SuccessCallback<TContext> | undefined;
+            230?: SuccessCallback<TContext> | undefined;
+            231?: SuccessCallback<TContext> | undefined;
+            232?: SuccessCallback<TContext> | undefined;
+            233?: SuccessCallback<TContext> | undefined;
+            234?: SuccessCallback<TContext> | undefined;
+            235?: SuccessCallback<TContext> | undefined;
+            236?: SuccessCallback<TContext> | undefined;
+            237?: SuccessCallback<TContext> | undefined;
+            238?: SuccessCallback<TContext> | undefined;
+            239?: SuccessCallback<TContext> | undefined;
+            240?: SuccessCallback<TContext> | undefined;
+            241?: SuccessCallback<TContext> | undefined;
+            242?: SuccessCallback<TContext> | undefined;
+            243?: SuccessCallback<TContext> | undefined;
+            244?: SuccessCallback<TContext> | undefined;
+            245?: SuccessCallback<TContext> | undefined;
+            246?: SuccessCallback<TContext> | undefined;
+            247?: SuccessCallback<TContext> | undefined;
+            248?: SuccessCallback<TContext> | undefined;
+            249?: SuccessCallback<TContext> | undefined;
+            250?: SuccessCallback<TContext> | undefined;
+            251?: SuccessCallback<TContext> | undefined;
+            252?: SuccessCallback<TContext> | undefined;
+            253?: SuccessCallback<TContext> | undefined;
+            254?: SuccessCallback<TContext> | undefined;
+            255?: SuccessCallback<TContext> | undefined;
+            256?: SuccessCallback<TContext> | undefined;
+            257?: SuccessCallback<TContext> | undefined;
+            258?: SuccessCallback<TContext> | undefined;
+            259?: SuccessCallback<TContext> | undefined;
+            260?: SuccessCallback<TContext> | undefined;
+            261?: SuccessCallback<TContext> | undefined;
+            262?: SuccessCallback<TContext> | undefined;
+            263?: SuccessCallback<TContext> | undefined;
+            264?: SuccessCallback<TContext> | undefined;
+            265?: SuccessCallback<TContext> | undefined;
+            266?: SuccessCallback<TContext> | undefined;
+            267?: SuccessCallback<TContext> | undefined;
+            268?: SuccessCallback<TContext> | undefined;
+            269?: SuccessCallback<TContext> | undefined;
+            270?: SuccessCallback<TContext> | undefined;
+            271?: SuccessCallback<TContext> | undefined;
+            272?: SuccessCallback<TContext> | undefined;
+            273?: SuccessCallback<TContext> | undefined;
+            274?: SuccessCallback<TContext> | undefined;
+            275?: SuccessCallback<TContext> | undefined;
+            276?: SuccessCallback<TContext> | undefined;
+            277?: SuccessCallback<TContext> | undefined;
+            278?: SuccessCallback<TContext> | undefined;
+            279?: SuccessCallback<TContext> | undefined;
+            280?: SuccessCallback<TContext> | undefined;
+            281?: SuccessCallback<TContext> | undefined;
+            282?: SuccessCallback<TContext> | undefined;
+            283?: SuccessCallback<TContext> | undefined;
+            284?: SuccessCallback<TContext> | undefined;
+            285?: SuccessCallback<TContext> | undefined;
+            286?: SuccessCallback<TContext> | undefined;
+            287?: SuccessCallback<TContext> | undefined;
+            288?: SuccessCallback<TContext> | undefined;
+            289?: SuccessCallback<TContext> | undefined;
+            290?: SuccessCallback<TContext> | undefined;
+            291?: SuccessCallback<TContext> | undefined;
+            292?: SuccessCallback<TContext> | undefined;
+            293?: SuccessCallback<TContext> | undefined;
+            294?: SuccessCallback<TContext> | undefined;
+            295?: SuccessCallback<TContext> | undefined;
+            296?: SuccessCallback<TContext> | undefined;
+            297?: SuccessCallback<TContext> | undefined;
+            298?: SuccessCallback<TContext> | undefined;
+            299?: SuccessCallback<TContext> | undefined;
+            304?: SuccessCallback<TContext> | undefined;
 
             // #endregion
 
             // region Error Status Codes
             // #region Error Status Codes
 
-            300?: ErrorCallback<TContext>;
-            301?: ErrorCallback<TContext>;
-            302?: ErrorCallback<TContext>;
-            303?: ErrorCallback<TContext>;
-            305?: ErrorCallback<TContext>;
-            306?: ErrorCallback<TContext>;
-            307?: ErrorCallback<TContext>;
-            308?: ErrorCallback<TContext>;
-            309?: ErrorCallback<TContext>;
-            310?: ErrorCallback<TContext>;
-            311?: ErrorCallback<TContext>;
-            312?: ErrorCallback<TContext>;
-            313?: ErrorCallback<TContext>;
-            314?: ErrorCallback<TContext>;
-            315?: ErrorCallback<TContext>;
-            316?: ErrorCallback<TContext>;
-            317?: ErrorCallback<TContext>;
-            318?: ErrorCallback<TContext>;
-            319?: ErrorCallback<TContext>;
-            320?: ErrorCallback<TContext>;
-            321?: ErrorCallback<TContext>;
-            322?: ErrorCallback<TContext>;
-            323?: ErrorCallback<TContext>;
-            324?: ErrorCallback<TContext>;
-            325?: ErrorCallback<TContext>;
-            326?: ErrorCallback<TContext>;
-            327?: ErrorCallback<TContext>;
-            328?: ErrorCallback<TContext>;
-            329?: ErrorCallback<TContext>;
-            330?: ErrorCallback<TContext>;
-            331?: ErrorCallback<TContext>;
-            332?: ErrorCallback<TContext>;
-            333?: ErrorCallback<TContext>;
-            334?: ErrorCallback<TContext>;
-            335?: ErrorCallback<TContext>;
-            336?: ErrorCallback<TContext>;
-            337?: ErrorCallback<TContext>;
-            338?: ErrorCallback<TContext>;
-            339?: ErrorCallback<TContext>;
-            340?: ErrorCallback<TContext>;
-            341?: ErrorCallback<TContext>;
-            342?: ErrorCallback<TContext>;
-            343?: ErrorCallback<TContext>;
-            344?: ErrorCallback<TContext>;
-            345?: ErrorCallback<TContext>;
-            346?: ErrorCallback<TContext>;
-            347?: ErrorCallback<TContext>;
-            348?: ErrorCallback<TContext>;
-            349?: ErrorCallback<TContext>;
-            350?: ErrorCallback<TContext>;
-            351?: ErrorCallback<TContext>;
-            352?: ErrorCallback<TContext>;
-            353?: ErrorCallback<TContext>;
-            354?: ErrorCallback<TContext>;
-            355?: ErrorCallback<TContext>;
-            356?: ErrorCallback<TContext>;
-            357?: ErrorCallback<TContext>;
-            358?: ErrorCallback<TContext>;
-            359?: ErrorCallback<TContext>;
-            360?: ErrorCallback<TContext>;
-            361?: ErrorCallback<TContext>;
-            362?: ErrorCallback<TContext>;
-            363?: ErrorCallback<TContext>;
-            364?: ErrorCallback<TContext>;
-            365?: ErrorCallback<TContext>;
-            366?: ErrorCallback<TContext>;
-            367?: ErrorCallback<TContext>;
-            368?: ErrorCallback<TContext>;
-            369?: ErrorCallback<TContext>;
-            370?: ErrorCallback<TContext>;
-            371?: ErrorCallback<TContext>;
-            372?: ErrorCallback<TContext>;
-            373?: ErrorCallback<TContext>;
-            374?: ErrorCallback<TContext>;
-            375?: ErrorCallback<TContext>;
-            376?: ErrorCallback<TContext>;
-            377?: ErrorCallback<TContext>;
-            378?: ErrorCallback<TContext>;
-            379?: ErrorCallback<TContext>;
-            380?: ErrorCallback<TContext>;
-            381?: ErrorCallback<TContext>;
-            382?: ErrorCallback<TContext>;
-            383?: ErrorCallback<TContext>;
-            384?: ErrorCallback<TContext>;
-            385?: ErrorCallback<TContext>;
-            386?: ErrorCallback<TContext>;
-            387?: ErrorCallback<TContext>;
-            388?: ErrorCallback<TContext>;
-            389?: ErrorCallback<TContext>;
-            390?: ErrorCallback<TContext>;
-            391?: ErrorCallback<TContext>;
-            392?: ErrorCallback<TContext>;
-            393?: ErrorCallback<TContext>;
-            394?: ErrorCallback<TContext>;
-            395?: ErrorCallback<TContext>;
-            396?: ErrorCallback<TContext>;
-            397?: ErrorCallback<TContext>;
-            398?: ErrorCallback<TContext>;
-            399?: ErrorCallback<TContext>;
-            400?: ErrorCallback<TContext>;
-            401?: ErrorCallback<TContext>;
-            402?: ErrorCallback<TContext>;
-            403?: ErrorCallback<TContext>;
-            404?: ErrorCallback<TContext>;
-            405?: ErrorCallback<TContext>;
-            406?: ErrorCallback<TContext>;
-            407?: ErrorCallback<TContext>;
-            408?: ErrorCallback<TContext>;
-            409?: ErrorCallback<TContext>;
-            410?: ErrorCallback<TContext>;
-            411?: ErrorCallback<TContext>;
-            412?: ErrorCallback<TContext>;
-            413?: ErrorCallback<TContext>;
-            414?: ErrorCallback<TContext>;
-            415?: ErrorCallback<TContext>;
-            416?: ErrorCallback<TContext>;
-            417?: ErrorCallback<TContext>;
-            418?: ErrorCallback<TContext>;
-            419?: ErrorCallback<TContext>;
-            420?: ErrorCallback<TContext>;
-            421?: ErrorCallback<TContext>;
-            422?: ErrorCallback<TContext>;
-            423?: ErrorCallback<TContext>;
-            424?: ErrorCallback<TContext>;
-            425?: ErrorCallback<TContext>;
-            426?: ErrorCallback<TContext>;
-            427?: ErrorCallback<TContext>;
-            428?: ErrorCallback<TContext>;
-            429?: ErrorCallback<TContext>;
-            430?: ErrorCallback<TContext>;
-            431?: ErrorCallback<TContext>;
-            432?: ErrorCallback<TContext>;
-            433?: ErrorCallback<TContext>;
-            434?: ErrorCallback<TContext>;
-            435?: ErrorCallback<TContext>;
-            436?: ErrorCallback<TContext>;
-            437?: ErrorCallback<TContext>;
-            438?: ErrorCallback<TContext>;
-            439?: ErrorCallback<TContext>;
-            440?: ErrorCallback<TContext>;
-            441?: ErrorCallback<TContext>;
-            442?: ErrorCallback<TContext>;
-            443?: ErrorCallback<TContext>;
-            444?: ErrorCallback<TContext>;
-            445?: ErrorCallback<TContext>;
-            446?: ErrorCallback<TContext>;
-            447?: ErrorCallback<TContext>;
-            448?: ErrorCallback<TContext>;
-            449?: ErrorCallback<TContext>;
-            450?: ErrorCallback<TContext>;
-            451?: ErrorCallback<TContext>;
-            452?: ErrorCallback<TContext>;
-            453?: ErrorCallback<TContext>;
-            454?: ErrorCallback<TContext>;
-            455?: ErrorCallback<TContext>;
-            456?: ErrorCallback<TContext>;
-            457?: ErrorCallback<TContext>;
-            458?: ErrorCallback<TContext>;
-            459?: ErrorCallback<TContext>;
-            460?: ErrorCallback<TContext>;
-            461?: ErrorCallback<TContext>;
-            462?: ErrorCallback<TContext>;
-            463?: ErrorCallback<TContext>;
-            464?: ErrorCallback<TContext>;
-            465?: ErrorCallback<TContext>;
-            466?: ErrorCallback<TContext>;
-            467?: ErrorCallback<TContext>;
-            468?: ErrorCallback<TContext>;
-            469?: ErrorCallback<TContext>;
-            470?: ErrorCallback<TContext>;
-            471?: ErrorCallback<TContext>;
-            472?: ErrorCallback<TContext>;
-            473?: ErrorCallback<TContext>;
-            474?: ErrorCallback<TContext>;
-            475?: ErrorCallback<TContext>;
-            476?: ErrorCallback<TContext>;
-            477?: ErrorCallback<TContext>;
-            478?: ErrorCallback<TContext>;
-            479?: ErrorCallback<TContext>;
-            480?: ErrorCallback<TContext>;
-            481?: ErrorCallback<TContext>;
-            482?: ErrorCallback<TContext>;
-            483?: ErrorCallback<TContext>;
-            484?: ErrorCallback<TContext>;
-            485?: ErrorCallback<TContext>;
-            486?: ErrorCallback<TContext>;
-            487?: ErrorCallback<TContext>;
-            488?: ErrorCallback<TContext>;
-            489?: ErrorCallback<TContext>;
-            490?: ErrorCallback<TContext>;
-            491?: ErrorCallback<TContext>;
-            492?: ErrorCallback<TContext>;
-            493?: ErrorCallback<TContext>;
-            494?: ErrorCallback<TContext>;
-            495?: ErrorCallback<TContext>;
-            496?: ErrorCallback<TContext>;
-            497?: ErrorCallback<TContext>;
-            498?: ErrorCallback<TContext>;
-            499?: ErrorCallback<TContext>;
-            500?: ErrorCallback<TContext>;
-            501?: ErrorCallback<TContext>;
-            502?: ErrorCallback<TContext>;
-            503?: ErrorCallback<TContext>;
-            504?: ErrorCallback<TContext>;
-            505?: ErrorCallback<TContext>;
-            506?: ErrorCallback<TContext>;
-            507?: ErrorCallback<TContext>;
-            508?: ErrorCallback<TContext>;
-            509?: ErrorCallback<TContext>;
-            510?: ErrorCallback<TContext>;
-            511?: ErrorCallback<TContext>;
-            512?: ErrorCallback<TContext>;
-            513?: ErrorCallback<TContext>;
-            514?: ErrorCallback<TContext>;
-            515?: ErrorCallback<TContext>;
-            516?: ErrorCallback<TContext>;
-            517?: ErrorCallback<TContext>;
-            518?: ErrorCallback<TContext>;
-            519?: ErrorCallback<TContext>;
-            520?: ErrorCallback<TContext>;
-            521?: ErrorCallback<TContext>;
-            522?: ErrorCallback<TContext>;
-            523?: ErrorCallback<TContext>;
-            524?: ErrorCallback<TContext>;
-            525?: ErrorCallback<TContext>;
-            526?: ErrorCallback<TContext>;
-            527?: ErrorCallback<TContext>;
-            528?: ErrorCallback<TContext>;
-            529?: ErrorCallback<TContext>;
-            530?: ErrorCallback<TContext>;
-            531?: ErrorCallback<TContext>;
-            532?: ErrorCallback<TContext>;
-            533?: ErrorCallback<TContext>;
-            534?: ErrorCallback<TContext>;
-            535?: ErrorCallback<TContext>;
-            536?: ErrorCallback<TContext>;
-            537?: ErrorCallback<TContext>;
-            538?: ErrorCallback<TContext>;
-            539?: ErrorCallback<TContext>;
-            540?: ErrorCallback<TContext>;
-            541?: ErrorCallback<TContext>;
-            542?: ErrorCallback<TContext>;
-            543?: ErrorCallback<TContext>;
-            544?: ErrorCallback<TContext>;
-            545?: ErrorCallback<TContext>;
-            546?: ErrorCallback<TContext>;
-            547?: ErrorCallback<TContext>;
-            548?: ErrorCallback<TContext>;
-            549?: ErrorCallback<TContext>;
-            550?: ErrorCallback<TContext>;
-            551?: ErrorCallback<TContext>;
-            552?: ErrorCallback<TContext>;
-            553?: ErrorCallback<TContext>;
-            554?: ErrorCallback<TContext>;
-            555?: ErrorCallback<TContext>;
-            556?: ErrorCallback<TContext>;
-            557?: ErrorCallback<TContext>;
-            558?: ErrorCallback<TContext>;
-            559?: ErrorCallback<TContext>;
-            560?: ErrorCallback<TContext>;
-            561?: ErrorCallback<TContext>;
-            562?: ErrorCallback<TContext>;
-            563?: ErrorCallback<TContext>;
-            564?: ErrorCallback<TContext>;
-            565?: ErrorCallback<TContext>;
-            566?: ErrorCallback<TContext>;
-            567?: ErrorCallback<TContext>;
-            568?: ErrorCallback<TContext>;
-            569?: ErrorCallback<TContext>;
-            570?: ErrorCallback<TContext>;
-            571?: ErrorCallback<TContext>;
-            572?: ErrorCallback<TContext>;
-            573?: ErrorCallback<TContext>;
-            574?: ErrorCallback<TContext>;
-            575?: ErrorCallback<TContext>;
-            576?: ErrorCallback<TContext>;
-            577?: ErrorCallback<TContext>;
-            578?: ErrorCallback<TContext>;
-            579?: ErrorCallback<TContext>;
-            580?: ErrorCallback<TContext>;
-            581?: ErrorCallback<TContext>;
-            582?: ErrorCallback<TContext>;
-            583?: ErrorCallback<TContext>;
-            584?: ErrorCallback<TContext>;
-            585?: ErrorCallback<TContext>;
-            586?: ErrorCallback<TContext>;
-            587?: ErrorCallback<TContext>;
-            588?: ErrorCallback<TContext>;
-            589?: ErrorCallback<TContext>;
-            590?: ErrorCallback<TContext>;
-            591?: ErrorCallback<TContext>;
-            592?: ErrorCallback<TContext>;
-            593?: ErrorCallback<TContext>;
-            594?: ErrorCallback<TContext>;
-            595?: ErrorCallback<TContext>;
-            596?: ErrorCallback<TContext>;
-            597?: ErrorCallback<TContext>;
-            598?: ErrorCallback<TContext>;
-            599?: ErrorCallback<TContext>;
+            300?: ErrorCallback<TContext> | undefined;
+            301?: ErrorCallback<TContext> | undefined;
+            302?: ErrorCallback<TContext> | undefined;
+            303?: ErrorCallback<TContext> | undefined;
+            305?: ErrorCallback<TContext> | undefined;
+            306?: ErrorCallback<TContext> | undefined;
+            307?: ErrorCallback<TContext> | undefined;
+            308?: ErrorCallback<TContext> | undefined;
+            309?: ErrorCallback<TContext> | undefined;
+            310?: ErrorCallback<TContext> | undefined;
+            311?: ErrorCallback<TContext> | undefined;
+            312?: ErrorCallback<TContext> | undefined;
+            313?: ErrorCallback<TContext> | undefined;
+            314?: ErrorCallback<TContext> | undefined;
+            315?: ErrorCallback<TContext> | undefined;
+            316?: ErrorCallback<TContext> | undefined;
+            317?: ErrorCallback<TContext> | undefined;
+            318?: ErrorCallback<TContext> | undefined;
+            319?: ErrorCallback<TContext> | undefined;
+            320?: ErrorCallback<TContext> | undefined;
+            321?: ErrorCallback<TContext> | undefined;
+            322?: ErrorCallback<TContext> | undefined;
+            323?: ErrorCallback<TContext> | undefined;
+            324?: ErrorCallback<TContext> | undefined;
+            325?: ErrorCallback<TContext> | undefined;
+            326?: ErrorCallback<TContext> | undefined;
+            327?: ErrorCallback<TContext> | undefined;
+            328?: ErrorCallback<TContext> | undefined;
+            329?: ErrorCallback<TContext> | undefined;
+            330?: ErrorCallback<TContext> | undefined;
+            331?: ErrorCallback<TContext> | undefined;
+            332?: ErrorCallback<TContext> | undefined;
+            333?: ErrorCallback<TContext> | undefined;
+            334?: ErrorCallback<TContext> | undefined;
+            335?: ErrorCallback<TContext> | undefined;
+            336?: ErrorCallback<TContext> | undefined;
+            337?: ErrorCallback<TContext> | undefined;
+            338?: ErrorCallback<TContext> | undefined;
+            339?: ErrorCallback<TContext> | undefined;
+            340?: ErrorCallback<TContext> | undefined;
+            341?: ErrorCallback<TContext> | undefined;
+            342?: ErrorCallback<TContext> | undefined;
+            343?: ErrorCallback<TContext> | undefined;
+            344?: ErrorCallback<TContext> | undefined;
+            345?: ErrorCallback<TContext> | undefined;
+            346?: ErrorCallback<TContext> | undefined;
+            347?: ErrorCallback<TContext> | undefined;
+            348?: ErrorCallback<TContext> | undefined;
+            349?: ErrorCallback<TContext> | undefined;
+            350?: ErrorCallback<TContext> | undefined;
+            351?: ErrorCallback<TContext> | undefined;
+            352?: ErrorCallback<TContext> | undefined;
+            353?: ErrorCallback<TContext> | undefined;
+            354?: ErrorCallback<TContext> | undefined;
+            355?: ErrorCallback<TContext> | undefined;
+            356?: ErrorCallback<TContext> | undefined;
+            357?: ErrorCallback<TContext> | undefined;
+            358?: ErrorCallback<TContext> | undefined;
+            359?: ErrorCallback<TContext> | undefined;
+            360?: ErrorCallback<TContext> | undefined;
+            361?: ErrorCallback<TContext> | undefined;
+            362?: ErrorCallback<TContext> | undefined;
+            363?: ErrorCallback<TContext> | undefined;
+            364?: ErrorCallback<TContext> | undefined;
+            365?: ErrorCallback<TContext> | undefined;
+            366?: ErrorCallback<TContext> | undefined;
+            367?: ErrorCallback<TContext> | undefined;
+            368?: ErrorCallback<TContext> | undefined;
+            369?: ErrorCallback<TContext> | undefined;
+            370?: ErrorCallback<TContext> | undefined;
+            371?: ErrorCallback<TContext> | undefined;
+            372?: ErrorCallback<TContext> | undefined;
+            373?: ErrorCallback<TContext> | undefined;
+            374?: ErrorCallback<TContext> | undefined;
+            375?: ErrorCallback<TContext> | undefined;
+            376?: ErrorCallback<TContext> | undefined;
+            377?: ErrorCallback<TContext> | undefined;
+            378?: ErrorCallback<TContext> | undefined;
+            379?: ErrorCallback<TContext> | undefined;
+            380?: ErrorCallback<TContext> | undefined;
+            381?: ErrorCallback<TContext> | undefined;
+            382?: ErrorCallback<TContext> | undefined;
+            383?: ErrorCallback<TContext> | undefined;
+            384?: ErrorCallback<TContext> | undefined;
+            385?: ErrorCallback<TContext> | undefined;
+            386?: ErrorCallback<TContext> | undefined;
+            387?: ErrorCallback<TContext> | undefined;
+            388?: ErrorCallback<TContext> | undefined;
+            389?: ErrorCallback<TContext> | undefined;
+            390?: ErrorCallback<TContext> | undefined;
+            391?: ErrorCallback<TContext> | undefined;
+            392?: ErrorCallback<TContext> | undefined;
+            393?: ErrorCallback<TContext> | undefined;
+            394?: ErrorCallback<TContext> | undefined;
+            395?: ErrorCallback<TContext> | undefined;
+            396?: ErrorCallback<TContext> | undefined;
+            397?: ErrorCallback<TContext> | undefined;
+            398?: ErrorCallback<TContext> | undefined;
+            399?: ErrorCallback<TContext> | undefined;
+            400?: ErrorCallback<TContext> | undefined;
+            401?: ErrorCallback<TContext> | undefined;
+            402?: ErrorCallback<TContext> | undefined;
+            403?: ErrorCallback<TContext> | undefined;
+            404?: ErrorCallback<TContext> | undefined;
+            405?: ErrorCallback<TContext> | undefined;
+            406?: ErrorCallback<TContext> | undefined;
+            407?: ErrorCallback<TContext> | undefined;
+            408?: ErrorCallback<TContext> | undefined;
+            409?: ErrorCallback<TContext> | undefined;
+            410?: ErrorCallback<TContext> | undefined;
+            411?: ErrorCallback<TContext> | undefined;
+            412?: ErrorCallback<TContext> | undefined;
+            413?: ErrorCallback<TContext> | undefined;
+            414?: ErrorCallback<TContext> | undefined;
+            415?: ErrorCallback<TContext> | undefined;
+            416?: ErrorCallback<TContext> | undefined;
+            417?: ErrorCallback<TContext> | undefined;
+            418?: ErrorCallback<TContext> | undefined;
+            419?: ErrorCallback<TContext> | undefined;
+            420?: ErrorCallback<TContext> | undefined;
+            421?: ErrorCallback<TContext> | undefined;
+            422?: ErrorCallback<TContext> | undefined;
+            423?: ErrorCallback<TContext> | undefined;
+            424?: ErrorCallback<TContext> | undefined;
+            425?: ErrorCallback<TContext> | undefined;
+            426?: ErrorCallback<TContext> | undefined;
+            427?: ErrorCallback<TContext> | undefined;
+            428?: ErrorCallback<TContext> | undefined;
+            429?: ErrorCallback<TContext> | undefined;
+            430?: ErrorCallback<TContext> | undefined;
+            431?: ErrorCallback<TContext> | undefined;
+            432?: ErrorCallback<TContext> | undefined;
+            433?: ErrorCallback<TContext> | undefined;
+            434?: ErrorCallback<TContext> | undefined;
+            435?: ErrorCallback<TContext> | undefined;
+            436?: ErrorCallback<TContext> | undefined;
+            437?: ErrorCallback<TContext> | undefined;
+            438?: ErrorCallback<TContext> | undefined;
+            439?: ErrorCallback<TContext> | undefined;
+            440?: ErrorCallback<TContext> | undefined;
+            441?: ErrorCallback<TContext> | undefined;
+            442?: ErrorCallback<TContext> | undefined;
+            443?: ErrorCallback<TContext> | undefined;
+            444?: ErrorCallback<TContext> | undefined;
+            445?: ErrorCallback<TContext> | undefined;
+            446?: ErrorCallback<TContext> | undefined;
+            447?: ErrorCallback<TContext> | undefined;
+            448?: ErrorCallback<TContext> | undefined;
+            449?: ErrorCallback<TContext> | undefined;
+            450?: ErrorCallback<TContext> | undefined;
+            451?: ErrorCallback<TContext> | undefined;
+            452?: ErrorCallback<TContext> | undefined;
+            453?: ErrorCallback<TContext> | undefined;
+            454?: ErrorCallback<TContext> | undefined;
+            455?: ErrorCallback<TContext> | undefined;
+            456?: ErrorCallback<TContext> | undefined;
+            457?: ErrorCallback<TContext> | undefined;
+            458?: ErrorCallback<TContext> | undefined;
+            459?: ErrorCallback<TContext> | undefined;
+            460?: ErrorCallback<TContext> | undefined;
+            461?: ErrorCallback<TContext> | undefined;
+            462?: ErrorCallback<TContext> | undefined;
+            463?: ErrorCallback<TContext> | undefined;
+            464?: ErrorCallback<TContext> | undefined;
+            465?: ErrorCallback<TContext> | undefined;
+            466?: ErrorCallback<TContext> | undefined;
+            467?: ErrorCallback<TContext> | undefined;
+            468?: ErrorCallback<TContext> | undefined;
+            469?: ErrorCallback<TContext> | undefined;
+            470?: ErrorCallback<TContext> | undefined;
+            471?: ErrorCallback<TContext> | undefined;
+            472?: ErrorCallback<TContext> | undefined;
+            473?: ErrorCallback<TContext> | undefined;
+            474?: ErrorCallback<TContext> | undefined;
+            475?: ErrorCallback<TContext> | undefined;
+            476?: ErrorCallback<TContext> | undefined;
+            477?: ErrorCallback<TContext> | undefined;
+            478?: ErrorCallback<TContext> | undefined;
+            479?: ErrorCallback<TContext> | undefined;
+            480?: ErrorCallback<TContext> | undefined;
+            481?: ErrorCallback<TContext> | undefined;
+            482?: ErrorCallback<TContext> | undefined;
+            483?: ErrorCallback<TContext> | undefined;
+            484?: ErrorCallback<TContext> | undefined;
+            485?: ErrorCallback<TContext> | undefined;
+            486?: ErrorCallback<TContext> | undefined;
+            487?: ErrorCallback<TContext> | undefined;
+            488?: ErrorCallback<TContext> | undefined;
+            489?: ErrorCallback<TContext> | undefined;
+            490?: ErrorCallback<TContext> | undefined;
+            491?: ErrorCallback<TContext> | undefined;
+            492?: ErrorCallback<TContext> | undefined;
+            493?: ErrorCallback<TContext> | undefined;
+            494?: ErrorCallback<TContext> | undefined;
+            495?: ErrorCallback<TContext> | undefined;
+            496?: ErrorCallback<TContext> | undefined;
+            497?: ErrorCallback<TContext> | undefined;
+            498?: ErrorCallback<TContext> | undefined;
+            499?: ErrorCallback<TContext> | undefined;
+            500?: ErrorCallback<TContext> | undefined;
+            501?: ErrorCallback<TContext> | undefined;
+            502?: ErrorCallback<TContext> | undefined;
+            503?: ErrorCallback<TContext> | undefined;
+            504?: ErrorCallback<TContext> | undefined;
+            505?: ErrorCallback<TContext> | undefined;
+            506?: ErrorCallback<TContext> | undefined;
+            507?: ErrorCallback<TContext> | undefined;
+            508?: ErrorCallback<TContext> | undefined;
+            509?: ErrorCallback<TContext> | undefined;
+            510?: ErrorCallback<TContext> | undefined;
+            511?: ErrorCallback<TContext> | undefined;
+            512?: ErrorCallback<TContext> | undefined;
+            513?: ErrorCallback<TContext> | undefined;
+            514?: ErrorCallback<TContext> | undefined;
+            515?: ErrorCallback<TContext> | undefined;
+            516?: ErrorCallback<TContext> | undefined;
+            517?: ErrorCallback<TContext> | undefined;
+            518?: ErrorCallback<TContext> | undefined;
+            519?: ErrorCallback<TContext> | undefined;
+            520?: ErrorCallback<TContext> | undefined;
+            521?: ErrorCallback<TContext> | undefined;
+            522?: ErrorCallback<TContext> | undefined;
+            523?: ErrorCallback<TContext> | undefined;
+            524?: ErrorCallback<TContext> | undefined;
+            525?: ErrorCallback<TContext> | undefined;
+            526?: ErrorCallback<TContext> | undefined;
+            527?: ErrorCallback<TContext> | undefined;
+            528?: ErrorCallback<TContext> | undefined;
+            529?: ErrorCallback<TContext> | undefined;
+            530?: ErrorCallback<TContext> | undefined;
+            531?: ErrorCallback<TContext> | undefined;
+            532?: ErrorCallback<TContext> | undefined;
+            533?: ErrorCallback<TContext> | undefined;
+            534?: ErrorCallback<TContext> | undefined;
+            535?: ErrorCallback<TContext> | undefined;
+            536?: ErrorCallback<TContext> | undefined;
+            537?: ErrorCallback<TContext> | undefined;
+            538?: ErrorCallback<TContext> | undefined;
+            539?: ErrorCallback<TContext> | undefined;
+            540?: ErrorCallback<TContext> | undefined;
+            541?: ErrorCallback<TContext> | undefined;
+            542?: ErrorCallback<TContext> | undefined;
+            543?: ErrorCallback<TContext> | undefined;
+            544?: ErrorCallback<TContext> | undefined;
+            545?: ErrorCallback<TContext> | undefined;
+            546?: ErrorCallback<TContext> | undefined;
+            547?: ErrorCallback<TContext> | undefined;
+            548?: ErrorCallback<TContext> | undefined;
+            549?: ErrorCallback<TContext> | undefined;
+            550?: ErrorCallback<TContext> | undefined;
+            551?: ErrorCallback<TContext> | undefined;
+            552?: ErrorCallback<TContext> | undefined;
+            553?: ErrorCallback<TContext> | undefined;
+            554?: ErrorCallback<TContext> | undefined;
+            555?: ErrorCallback<TContext> | undefined;
+            556?: ErrorCallback<TContext> | undefined;
+            557?: ErrorCallback<TContext> | undefined;
+            558?: ErrorCallback<TContext> | undefined;
+            559?: ErrorCallback<TContext> | undefined;
+            560?: ErrorCallback<TContext> | undefined;
+            561?: ErrorCallback<TContext> | undefined;
+            562?: ErrorCallback<TContext> | undefined;
+            563?: ErrorCallback<TContext> | undefined;
+            564?: ErrorCallback<TContext> | undefined;
+            565?: ErrorCallback<TContext> | undefined;
+            566?: ErrorCallback<TContext> | undefined;
+            567?: ErrorCallback<TContext> | undefined;
+            568?: ErrorCallback<TContext> | undefined;
+            569?: ErrorCallback<TContext> | undefined;
+            570?: ErrorCallback<TContext> | undefined;
+            571?: ErrorCallback<TContext> | undefined;
+            572?: ErrorCallback<TContext> | undefined;
+            573?: ErrorCallback<TContext> | undefined;
+            574?: ErrorCallback<TContext> | undefined;
+            575?: ErrorCallback<TContext> | undefined;
+            576?: ErrorCallback<TContext> | undefined;
+            577?: ErrorCallback<TContext> | undefined;
+            578?: ErrorCallback<TContext> | undefined;
+            579?: ErrorCallback<TContext> | undefined;
+            580?: ErrorCallback<TContext> | undefined;
+            581?: ErrorCallback<TContext> | undefined;
+            582?: ErrorCallback<TContext> | undefined;
+            583?: ErrorCallback<TContext> | undefined;
+            584?: ErrorCallback<TContext> | undefined;
+            585?: ErrorCallback<TContext> | undefined;
+            586?: ErrorCallback<TContext> | undefined;
+            587?: ErrorCallback<TContext> | undefined;
+            588?: ErrorCallback<TContext> | undefined;
+            589?: ErrorCallback<TContext> | undefined;
+            590?: ErrorCallback<TContext> | undefined;
+            591?: ErrorCallback<TContext> | undefined;
+            592?: ErrorCallback<TContext> | undefined;
+            593?: ErrorCallback<TContext> | undefined;
+            594?: ErrorCallback<TContext> | undefined;
+            595?: ErrorCallback<TContext> | undefined;
+            596?: ErrorCallback<TContext> | undefined;
+            597?: ErrorCallback<TContext> | undefined;
+            598?: ErrorCallback<TContext> | undefined;
+            599?: ErrorCallback<TContext> | undefined;
 
             // #endregion
         } & {
@@ -664,7 +664,7 @@ declare namespace JQuery {
 
         // Writable properties on XMLHttpRequest
         interface XHRFields extends Partial<Pick<XMLHttpRequest, 'onreadystatechange' | 'responseType' | 'timeout' | 'withCredentials'>> {
-            msCaching?: string;
+            msCaching?: string | undefined;
         }
     }
 
@@ -3496,11 +3496,11 @@ $.get( "test.php" )
         /**
          * A string or number determining how long the animation will run.
          */
-        duration?: Duration;
+        duration?: Duration | undefined;
         /**
          * A string indicating which easing function to use for the transition.
          */
-        easing?: string;
+        easing?: string | undefined;
         /**
          * A function to be called when the animation on an element fails to complete (its Promise object is rejected).
          */
@@ -3512,11 +3512,11 @@ $.get( "test.php" )
         /**
          * A Boolean indicating whether to place the animation in the effects queue. If false, the animation will begin immediately. As of jQuery 1.7, the queue option can also accept a string, in which case the animation is added to the queue represented by that string. When a custom queue name is used the animation does not automatically start; you must call .dequeue("queuename") to start it.
          */
-        queue?: boolean | string;
+        queue?: boolean | string | undefined;
         /**
          * An object containing one or more of the CSS properties defined by the properties argument and their corresponding easing functions.
          */
-        specialEasing?: PlainObject<string>;
+        specialEasing?: PlainObject<string> | undefined;
         /**
          * A function to call when the animation on an element begins.
          */
@@ -3712,7 +3712,7 @@ jQuery.Tween.propHooks[ property ] = {
          */
         options: EffectsOptions<TElement>;
         // Undocumented. Is this intended to be public?
-        pos?: number;
+        pos?: number | undefined;
         /**
          * The property being animated
          * @see \`{@link https://gist.github.com/gnarf/54829d408993526fe475#tweens }\`
@@ -4696,8 +4696,8 @@ $( "button" ).click(function( event ) {
 </html>
 ```
          */
-        namespace?: string;
-        originalEvent?: _Event;
+        namespace?: string | undefined;
+        originalEvent?: _Event | undefined;
         /**
          * The last value returned by an event handler that was triggered by this event, unless the value was undefined.
          * @see \`{@link https://api.jquery.com/event.result/ }\`
@@ -4970,7 +4970,7 @@ $( "#checkMetaKey" ).click(function( event ) {
         metaKey: undefined;
         shiftKey: undefined;
 
-        originalEvent?: _Event;
+        originalEvent?: _Event | undefined;
     }
 
     interface ChangeEvent<
@@ -5040,7 +5040,7 @@ $( "#checkMetaKey" ).click(function( event ) {
         detail: number;
         view: Window;
 
-        originalEvent?: _UIEvent;
+        originalEvent?: _UIEvent | undefined;
     }
 
     // region MouseEvent
@@ -5063,7 +5063,7 @@ $( "a" ).mouseout(function( event ) {
 });
 ```
         */
-        relatedTarget?: EventTarget | null;
+        relatedTarget?: EventTarget | null | undefined;
 
         // MouseEvent
 
@@ -5270,7 +5270,7 @@ $( "#checkMetaKey" ).click(function( event ) {
         metaKey: boolean;
         shiftKey: boolean;
 
-        originalEvent?: _MouseEvent;
+        originalEvent?: _MouseEvent | undefined;
     }
 
     interface ClickEvent<
@@ -5290,7 +5290,7 @@ $( "#checkMetaKey" ).click(function( event ) {
  });
  ```
         */
-        relatedTarget?: null;
+        relatedTarget?: null | undefined;
 
         type: 'click';
     }
@@ -5312,7 +5312,7 @@ $( "#checkMetaKey" ).click(function( event ) {
  });
  ```
         */
-        relatedTarget?: null;
+        relatedTarget?: null | undefined;
 
         type: 'contextmenu';
     }
@@ -5334,7 +5334,7 @@ $( "#checkMetaKey" ).click(function( event ) {
  });
  ```
         */
-        relatedTarget?: null;
+        relatedTarget?: null | undefined;
 
         type: 'dblclick';
     }
@@ -5356,7 +5356,7 @@ $( "#checkMetaKey" ).click(function( event ) {
  });
  ```
         */
-        relatedTarget?: null;
+        relatedTarget?: null | undefined;
 
         type: 'mousedown';
     }
@@ -5398,7 +5398,7 @@ $( "#checkMetaKey" ).click(function( event ) {
  });
  ```
         */
-        relatedTarget?: null;
+        relatedTarget?: null | undefined;
 
         type: 'mousemove';
     }
@@ -5438,7 +5438,7 @@ $( "#checkMetaKey" ).click(function( event ) {
  });
  ```
         */
-        relatedTarget?: null;
+        relatedTarget?: null | undefined;
 
         type: 'mouseup';
     }
@@ -5452,7 +5452,7 @@ $( "#checkMetaKey" ).click(function( event ) {
         TCurrentTarget = any,
         TTarget = any
     > extends UIEventBase<TDelegateTarget, TData, TCurrentTarget, TTarget> {
-        originalEvent?: _DragEvent;
+        originalEvent?: _DragEvent | undefined;
     }
 
     interface DragEvent<
@@ -5759,7 +5759,7 @@ $( "#checkMetaKey" ).click(function( event ) {
         metaKey: boolean;
         shiftKey: boolean;
 
-        originalEvent?: _KeyboardEvent;
+        originalEvent?: _KeyboardEvent | undefined;
     }
 
     interface KeyDownEvent<
@@ -6018,7 +6018,7 @@ $( "#checkMetaKey" ).click(function( event ) {
         metaKey: boolean;
         shiftKey: boolean;
 
-        originalEvent?: _TouchEvent;
+        originalEvent?: _TouchEvent | undefined;
     }
 
     interface TouchCancelEvent<
@@ -6079,7 +6079,7 @@ $( "a" ).mouseout(function( event ) {
 });
 ```
         */
-        relatedTarget?: EventTarget | null;
+        relatedTarget?: EventTarget | null | undefined;
 
         // MouseEvent
 
@@ -6286,7 +6286,7 @@ $( "#checkMetaKey" ).click(function( event ) {
         metaKey: undefined;
         shiftKey: undefined;
 
-        originalEvent?: _FocusEvent;
+        originalEvent?: _FocusEvent | undefined;
     }
 
     interface BlurEvent<
@@ -6530,7 +6530,7 @@ $( "#checkMetaKey" ).click(function( event ) {
     } | {
         postDispatch(this: TTarget, event: Event): void;
     } | {
-        [key: string]: never;
+        [key: string]: any;
     };
 
     interface SpecialEventHooks {
diff --git a/types-jquery/package.json b/types-jquery/package.json
old mode 100644
new mode 100755
index ba0d9c636b6525de865693379c81f35101b03b37..66dfc090b092e367838edfc9b8ada86fb017b4fc
--- a/types-jquery/package.json
+++ b/types-jquery/package.json
@@ -1,7 +1,8 @@
 {
     "name": "@types/jquery",
-    "version": "3.5.5",
+    "version": "3.5.13",
     "description": "TypeScript definitions for jquery",
+    "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/jquery",
     "license": "MIT",
     "contributors": [
         {
@@ -34,11 +35,6 @@
             "url": "https://github.com/tasoili",
             "githubUsername": "tasoili"
         },
-        {
-            "name": "Jason Swearingen",
-            "url": "https://github.com/jasons-novaleaf",
-            "githubUsername": "jasons-novaleaf"
-        },
         {
             "name": "Sean Hill",
             "url": "https://github.com/seanski",
@@ -84,11 +80,6 @@
             "url": "https://github.com/benjaminjackman",
             "githubUsername": "benjaminjackman"
         },
-        {
-            "name": "Poul Sorensen",
-            "url": "https://github.com/s093294",
-            "githubUsername": "s093294"
-        },
         {
             "name": "Josh Strobl",
             "url": "https://github.com/JoshStrobl",
@@ -118,6 +109,11 @@
             "name": "Martin Badin",
             "url": "https://github.com/martin-badin",
             "githubUsername": "martin-badin"
+        },
+        {
+            "name": "Chris Frewin",
+            "url": "https://github.com/princefishthrower",
+            "githubUsername": "princefishthrower"
         }
     ],
     "main": "",
@@ -131,6 +127,6 @@
     "dependencies": {
         "@types/sizzle": "*"
     },
-    "typesPublisherContentHash": "a02c9cdea2ee3a153561f214a6ee588b209cc5b3e960a1c4e14467ee5e3962d2",
-    "typeScriptVersion": "3.3"
+    "typesPublisherContentHash": "5a36c8286c4bd77b937e018aacd7b1960cefa0e826ab4ab44b14cdf92d083175",
+    "typeScriptVersion": "3.8"
 }
\ No newline at end of file