@swisspost/internet-header 1.7.1 → 1.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) hide show
  1. package/dist/cjs/{klp-widget.controller-5d5afa10.js → klp-widget.controller-d23f72bb.js} +784 -1047
  2. package/dist/cjs/klp-widget.controller-d23f72bb.js.map +1 -0
  3. package/dist/cjs/{language.service-56d68ec3.js → language.service-dcd7bae3.js} +16 -1
  4. package/dist/cjs/language.service-dcd7bae3.js.map +1 -0
  5. package/dist/cjs/post-klp-login-widget.cjs.entry.js +1 -1
  6. package/dist/cjs/post-language-switch.cjs.entry.js +3 -4
  7. package/dist/cjs/post-language-switch.cjs.entry.js.map +1 -1
  8. package/dist/cjs/post-main-navigation.cjs.entry.js +22 -25
  9. package/dist/cjs/post-main-navigation.cjs.entry.js.map +1 -1
  10. package/dist/cjs/post-meta-navigation.cjs.entry.js +3 -3
  11. package/dist/cjs/post-meta-navigation.cjs.entry.js.map +1 -1
  12. package/dist/cjs/post-search.cjs.entry.js +2 -2
  13. package/dist/cjs/post-search.cjs.entry.js.map +1 -1
  14. package/dist/cjs/post-skiplinks.cjs.entry.js +2 -2
  15. package/dist/cjs/post-skiplinks.cjs.entry.js.map +1 -1
  16. package/dist/cjs/swisspost-internet-breadcrumbs.cjs.entry.js +4 -4
  17. package/dist/cjs/swisspost-internet-breadcrumbs.cjs.entry.js.map +1 -1
  18. package/dist/cjs/swisspost-internet-header.cjs.entry.js +9 -9
  19. package/dist/cjs/swisspost-internet-header.cjs.entry.js.map +1 -1
  20. package/dist/collection/assets/i18n/translations.js +15 -0
  21. package/dist/collection/assets/i18n/translations.js.map +1 -1
  22. package/dist/collection/components/post-internet-breadcrumbs/components/middle-dropdown.component.js +1 -1
  23. package/dist/collection/components/post-internet-breadcrumbs/components/middle-dropdown.component.js.map +1 -1
  24. package/dist/collection/components/post-internet-breadcrumbs/post-internet-breadcrumbs.js +1 -1
  25. package/dist/collection/components/post-internet-breadcrumbs/post-internet-breadcrumbs.js.map +1 -1
  26. package/dist/collection/components/post-internet-header/post-internet-header.js +2 -1
  27. package/dist/collection/components/post-internet-header/post-internet-header.js.map +1 -1
  28. package/dist/collection/components/post-language-switch/components/post-language-switch-list.js +1 -1
  29. package/dist/collection/components/post-language-switch/components/post-language-switch-list.js.map +1 -1
  30. package/dist/collection/components/post-main-navigation/components/level-one-action.component.js +2 -1
  31. package/dist/collection/components/post-main-navigation/components/level-one-action.component.js.map +1 -1
  32. package/dist/collection/components/post-main-navigation/post-main-navigation.js +21 -25
  33. package/dist/collection/components/post-main-navigation/post-main-navigation.js.map +1 -1
  34. package/dist/collection/components/post-meta-navigation/post-meta-navigation.js +3 -3
  35. package/dist/collection/components/post-meta-navigation/post-meta-navigation.js.map +1 -1
  36. package/dist/collection/components/post-search/post-search.js +2 -2
  37. package/dist/collection/components/post-search/post-search.js.map +1 -1
  38. package/dist/collection/components/post-skiplinks/post-skiplinks.js +1 -1
  39. package/dist/collection/components/post-skiplinks/post-skiplinks.js.map +1 -1
  40. package/dist/components/klp-widget.controller.js +783 -1046
  41. package/dist/components/klp-widget.controller.js.map +1 -1
  42. package/dist/components/language.service.js +15 -0
  43. package/dist/components/language.service.js.map +1 -1
  44. package/dist/components/post-language-switch2.js +2 -3
  45. package/dist/components/post-language-switch2.js.map +1 -1
  46. package/dist/components/post-main-navigation2.js +22 -25
  47. package/dist/components/post-main-navigation2.js.map +1 -1
  48. package/dist/components/post-meta-navigation2.js +3 -3
  49. package/dist/components/post-meta-navigation2.js.map +1 -1
  50. package/dist/components/post-search2.js +2 -2
  51. package/dist/components/post-search2.js.map +1 -1
  52. package/dist/components/post-skiplinks2.js +1 -1
  53. package/dist/components/post-skiplinks2.js.map +1 -1
  54. package/dist/components/swisspost-internet-breadcrumbs.js +3 -3
  55. package/dist/components/swisspost-internet-breadcrumbs.js.map +1 -1
  56. package/dist/components/swisspost-internet-header.js +9 -9
  57. package/dist/components/swisspost-internet-header.js.map +1 -1
  58. package/dist/esm/{klp-widget.controller-9f7e3c54.js → klp-widget.controller-945d9271.js} +784 -1047
  59. package/dist/esm/klp-widget.controller-945d9271.js.map +1 -0
  60. package/dist/esm/{language.service-74bc1f43.js → language.service-55e5ef74.js} +16 -1
  61. package/dist/esm/language.service-55e5ef74.js.map +1 -0
  62. package/dist/esm/post-klp-login-widget.entry.js +1 -1
  63. package/dist/esm/post-language-switch.entry.js +3 -4
  64. package/dist/esm/post-language-switch.entry.js.map +1 -1
  65. package/dist/esm/post-main-navigation.entry.js +22 -25
  66. package/dist/esm/post-main-navigation.entry.js.map +1 -1
  67. package/dist/esm/post-meta-navigation.entry.js +3 -3
  68. package/dist/esm/post-meta-navigation.entry.js.map +1 -1
  69. package/dist/esm/post-search.entry.js +2 -2
  70. package/dist/esm/post-search.entry.js.map +1 -1
  71. package/dist/esm/post-skiplinks.entry.js +2 -2
  72. package/dist/esm/post-skiplinks.entry.js.map +1 -1
  73. package/dist/esm/swisspost-internet-breadcrumbs.entry.js +4 -4
  74. package/dist/esm/swisspost-internet-breadcrumbs.entry.js.map +1 -1
  75. package/dist/esm/swisspost-internet-header.entry.js +9 -9
  76. package/dist/esm/swisspost-internet-header.entry.js.map +1 -1
  77. package/dist/esm-es5/klp-widget.controller-945d9271.js +13 -0
  78. package/dist/esm-es5/klp-widget.controller-945d9271.js.map +1 -0
  79. package/dist/esm-es5/language.service-55e5ef74.js +2 -0
  80. package/dist/esm-es5/language.service-55e5ef74.js.map +1 -0
  81. package/dist/esm-es5/post-klp-login-widget.entry.js +1 -1
  82. package/dist/esm-es5/post-language-switch.entry.js +1 -1
  83. package/dist/esm-es5/post-language-switch.entry.js.map +1 -1
  84. package/dist/esm-es5/post-main-navigation.entry.js +1 -1
  85. package/dist/esm-es5/post-main-navigation.entry.js.map +1 -1
  86. package/dist/esm-es5/post-meta-navigation.entry.js +1 -1
  87. package/dist/esm-es5/post-meta-navigation.entry.js.map +1 -1
  88. package/dist/esm-es5/post-search.entry.js +1 -1
  89. package/dist/esm-es5/post-search.entry.js.map +1 -1
  90. package/dist/esm-es5/post-skiplinks.entry.js +1 -1
  91. package/dist/esm-es5/post-skiplinks.entry.js.map +1 -1
  92. package/dist/esm-es5/swisspost-internet-breadcrumbs.entry.js +3 -3
  93. package/dist/esm-es5/swisspost-internet-breadcrumbs.entry.js.map +1 -1
  94. package/dist/esm-es5/swisspost-internet-header.entry.js +1 -1
  95. package/dist/esm-es5/swisspost-internet-header.entry.js.map +1 -1
  96. package/dist/swisspost-internet-header/p-0d7864f3.js +13 -0
  97. package/dist/swisspost-internet-header/p-0d7864f3.js.map +1 -0
  98. package/dist/swisspost-internet-header/p-1195cffa.entry.js +2 -0
  99. package/dist/swisspost-internet-header/p-1195cffa.entry.js.map +1 -0
  100. package/dist/swisspost-internet-header/{p-f62f50ce.system.entry.js → p-1c0ba4e8.system.entry.js} +2 -2
  101. package/dist/swisspost-internet-header/p-1c0ba4e8.system.entry.js.map +1 -0
  102. package/dist/swisspost-internet-header/p-242b61d1.system.js +2 -0
  103. package/dist/swisspost-internet-header/p-242b61d1.system.js.map +1 -0
  104. package/dist/swisspost-internet-header/p-30695393.entry.js +7 -0
  105. package/dist/swisspost-internet-header/{p-3f72b002.entry.js.map → p-30695393.entry.js.map} +1 -1
  106. package/dist/swisspost-internet-header/{p-6032d37e.entry.js → p-3462fe1c.entry.js} +2 -2
  107. package/dist/swisspost-internet-header/p-3462fe1c.entry.js.map +1 -0
  108. package/dist/swisspost-internet-header/p-3cabcfa7.entry.js +2 -0
  109. package/dist/swisspost-internet-header/{p-21ef11a4.entry.js.map → p-3cabcfa7.entry.js.map} +1 -1
  110. package/dist/swisspost-internet-header/p-3df8cabd.system.entry.js +2 -0
  111. package/dist/swisspost-internet-header/p-3df8cabd.system.entry.js.map +1 -0
  112. package/dist/swisspost-internet-header/p-49fe20ff.system.js +1 -1
  113. package/dist/swisspost-internet-header/p-4c9f1f1a.system.entry.js +7 -0
  114. package/dist/swisspost-internet-header/{p-8f34abed.system.entry.js.map → p-4c9f1f1a.system.entry.js.map} +1 -1
  115. package/dist/swisspost-internet-header/{p-996a552e.system.entry.js → p-57f4eea0.system.entry.js} +2 -2
  116. package/dist/swisspost-internet-header/p-6582303e.js +2 -0
  117. package/dist/swisspost-internet-header/p-6582303e.js.map +1 -0
  118. package/dist/swisspost-internet-header/p-73208b0d.system.entry.js +2 -0
  119. package/dist/swisspost-internet-header/p-73208b0d.system.entry.js.map +1 -0
  120. package/dist/swisspost-internet-header/p-96623613.system.entry.js +2 -0
  121. package/dist/swisspost-internet-header/{p-73b6ce0d.system.entry.js.map → p-96623613.system.entry.js.map} +1 -1
  122. package/dist/swisspost-internet-header/{p-c435e138.entry.js → p-99228f51.entry.js} +2 -2
  123. package/dist/swisspost-internet-header/p-99228f51.entry.js.map +1 -0
  124. package/dist/swisspost-internet-header/p-9a6083cb.entry.js +2 -0
  125. package/dist/swisspost-internet-header/p-9a6083cb.entry.js.map +1 -0
  126. package/dist/swisspost-internet-header/p-afdd23a8.system.entry.js +2 -0
  127. package/dist/swisspost-internet-header/p-afdd23a8.system.entry.js.map +1 -0
  128. package/dist/swisspost-internet-header/p-b8d05765.system.js +13 -0
  129. package/dist/swisspost-internet-header/p-b8d05765.system.js.map +1 -0
  130. package/dist/swisspost-internet-header/p-d5d1f301.entry.js +2 -0
  131. package/dist/swisspost-internet-header/p-d5d1f301.entry.js.map +1 -0
  132. package/dist/swisspost-internet-header/{p-5e5d587a.entry.js → p-e95ed009.entry.js} +2 -2
  133. package/dist/swisspost-internet-header/{p-30335ce0.system.entry.js → p-f349687c.system.entry.js} +2 -2
  134. package/dist/swisspost-internet-header/p-f349687c.system.entry.js.map +1 -0
  135. package/dist/swisspost-internet-header/swisspost-internet-header.css +1 -1
  136. package/dist/swisspost-internet-header/swisspost-internet-header.esm.js +1 -1
  137. package/dist/types/assets/i18n/translations.d.ts +15 -0
  138. package/dist/types/components/post-main-navigation/post-main-navigation.d.ts +1 -7
  139. package/dist/types/services/language.service.d.ts +19 -1
  140. package/package.json +7 -7
  141. package/dist/cjs/klp-widget.controller-5d5afa10.js.map +0 -1
  142. package/dist/cjs/language.service-56d68ec3.js.map +0 -1
  143. package/dist/esm/klp-widget.controller-9f7e3c54.js.map +0 -1
  144. package/dist/esm/language.service-74bc1f43.js.map +0 -1
  145. package/dist/esm-es5/klp-widget.controller-9f7e3c54.js +0 -27
  146. package/dist/esm-es5/klp-widget.controller-9f7e3c54.js.map +0 -1
  147. package/dist/esm-es5/language.service-74bc1f43.js +0 -2
  148. package/dist/esm-es5/language.service-74bc1f43.js.map +0 -1
  149. package/dist/swisspost-internet-header/p-21ef11a4.entry.js +0 -2
  150. package/dist/swisspost-internet-header/p-2fd2c574.system.entry.js +0 -2
  151. package/dist/swisspost-internet-header/p-2fd2c574.system.entry.js.map +0 -1
  152. package/dist/swisspost-internet-header/p-30335ce0.system.entry.js.map +0 -1
  153. package/dist/swisspost-internet-header/p-3f72b002.entry.js +0 -7
  154. package/dist/swisspost-internet-header/p-6032d37e.entry.js.map +0 -1
  155. package/dist/swisspost-internet-header/p-6df0c486.entry.js +0 -2
  156. package/dist/swisspost-internet-header/p-6df0c486.entry.js.map +0 -1
  157. package/dist/swisspost-internet-header/p-73b6ce0d.system.entry.js +0 -2
  158. package/dist/swisspost-internet-header/p-8bd39c64.js +0 -2
  159. package/dist/swisspost-internet-header/p-8bd39c64.js.map +0 -1
  160. package/dist/swisspost-internet-header/p-8f34abed.system.entry.js +0 -7
  161. package/dist/swisspost-internet-header/p-9efee6d6.system.entry.js +0 -2
  162. package/dist/swisspost-internet-header/p-9efee6d6.system.entry.js.map +0 -1
  163. package/dist/swisspost-internet-header/p-ad7071ea.system.js +0 -27
  164. package/dist/swisspost-internet-header/p-ad7071ea.system.js.map +0 -1
  165. package/dist/swisspost-internet-header/p-c24585eb.entry.js +0 -2
  166. package/dist/swisspost-internet-header/p-c24585eb.entry.js.map +0 -1
  167. package/dist/swisspost-internet-header/p-c435e138.entry.js.map +0 -1
  168. package/dist/swisspost-internet-header/p-cce32859.entry.js +0 -2
  169. package/dist/swisspost-internet-header/p-cce32859.entry.js.map +0 -1
  170. package/dist/swisspost-internet-header/p-f0396178.system.entry.js +0 -2
  171. package/dist/swisspost-internet-header/p-f0396178.system.entry.js.map +0 -1
  172. package/dist/swisspost-internet-header/p-f4f5ca86.system.js +0 -2
  173. package/dist/swisspost-internet-header/p-f4f5ca86.system.js.map +0 -1
  174. package/dist/swisspost-internet-header/p-f62f50ce.system.entry.js.map +0 -1
  175. package/dist/swisspost-internet-header/p-fefa1082.js +0 -27
  176. package/dist/swisspost-internet-header/p-fefa1082.js.map +0 -1
  177. /package/dist/swisspost-internet-header/{p-996a552e.system.entry.js.map → p-57f4eea0.system.entry.js.map} +0 -0
  178. /package/dist/swisspost-internet-header/{p-5e5d587a.entry.js.map → p-e95ed009.entry.js.map} +0 -0
@@ -5295,17 +5295,14 @@ import { a as commonjsGlobal, c as createCommonjsModule } from './_commonjsHelpe
5295
5295
 
5296
5296
  var jquery_slim = createCommonjsModule(function (module) {
5297
5297
  /*!
5298
- * jQuery JavaScript Library v3.6.4 -ajax,-ajax/jsonp,-ajax/load,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-deprecated/ajax-event-alias,-effects,-effects/animatedSelector,-effects/Tween
5298
+ * jQuery JavaScript Library v3.7.0 -ajax,-ajax/jsonp,-ajax/load,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-deprecated/ajax-event-alias,-effects,-effects/animatedSelector,-effects/Tween
5299
5299
  * https://jquery.com/
5300
5300
  *
5301
- * Includes Sizzle.js
5302
- * https://sizzlejs.com/
5303
- *
5304
5301
  * Copyright OpenJS Foundation and other contributors
5305
5302
  * Released under the MIT license
5306
5303
  * https://jquery.org/license
5307
5304
  *
5308
- * Date: 2023-03-08T15:29Z
5305
+ * Date: 2023-05-11T18:29Z
5309
5306
  */
5310
5307
  ( function( global, factory ) {
5311
5308
 
@@ -5436,8 +5433,9 @@ function toType( obj ) {
5436
5433
 
5437
5434
 
5438
5435
 
5439
- var
5440
- version = "3.6.4 -ajax,-ajax/jsonp,-ajax/load,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-deprecated/ajax-event-alias,-effects,-effects/animatedSelector,-effects/Tween",
5436
+ var version = "3.7.0 -ajax,-ajax/jsonp,-ajax/load,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-deprecated/ajax-event-alias,-effects,-effects/animatedSelector,-effects/Tween",
5437
+
5438
+ rhtmlSuffix = /HTML$/i,
5441
5439
 
5442
5440
  // Define a local copy of jQuery
5443
5441
  jQuery = function( selector, context ) {
@@ -5683,6 +5681,33 @@ jQuery.extend( {
5683
5681
  return obj;
5684
5682
  },
5685
5683
 
5684
+
5685
+ // Retrieve the text value of an array of DOM nodes
5686
+ text: function( elem ) {
5687
+ var node,
5688
+ ret = "",
5689
+ i = 0,
5690
+ nodeType = elem.nodeType;
5691
+
5692
+ if ( !nodeType ) {
5693
+
5694
+ // If no nodeType, this is expected to be an array
5695
+ while ( ( node = elem[ i++ ] ) ) {
5696
+
5697
+ // Do not traverse comment nodes
5698
+ ret += jQuery.text( node );
5699
+ }
5700
+ } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
5701
+ return elem.textContent;
5702
+ } else if ( nodeType === 3 || nodeType === 4 ) {
5703
+ return elem.nodeValue;
5704
+ }
5705
+
5706
+ // Do not include comment or processing instruction nodes
5707
+
5708
+ return ret;
5709
+ },
5710
+
5686
5711
  // results is for internal usage only
5687
5712
  makeArray: function( arr, results ) {
5688
5713
  var ret = results || [];
@@ -5705,6 +5730,15 @@ jQuery.extend( {
5705
5730
  return arr == null ? -1 : indexOf.call( arr, elem, i );
5706
5731
  },
5707
5732
 
5733
+ isXMLDoc: function( elem ) {
5734
+ var namespace = elem && elem.namespaceURI,
5735
+ docElem = elem && ( elem.ownerDocument || elem ).documentElement;
5736
+
5737
+ // Assume HTML when documentElement doesn't yet exist, such as inside
5738
+ // document fragments.
5739
+ return !rhtmlSuffix.test( namespace || docElem && docElem.nodeName || "HTML" );
5740
+ },
5741
+
5708
5742
  // Support: Android <=4.0 only, PhantomJS 1 only
5709
5743
  // push.apply(_, arraylike) throws on ancient WebKit
5710
5744
  merge: function( first, second ) {
@@ -5806,43 +5840,98 @@ function isArrayLike( obj ) {
5806
5840
  return type === "array" || length === 0 ||
5807
5841
  typeof length === "number" && length > 0 && ( length - 1 ) in obj;
5808
5842
  }
5809
- var Sizzle =
5810
- /*!
5811
- * Sizzle CSS Selector Engine v2.3.10
5812
- * https://sizzlejs.com/
5813
- *
5814
- * Copyright JS Foundation and other contributors
5815
- * Released under the MIT license
5816
- * https://js.foundation/
5817
- *
5818
- * Date: 2023-02-14
5819
- */
5820
- ( function( window ) {
5843
+
5844
+
5845
+ function nodeName( elem, name ) {
5846
+
5847
+ return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
5848
+
5849
+ }
5850
+ var pop = arr.pop;
5851
+
5852
+
5853
+ var sort = arr.sort;
5854
+
5855
+
5856
+ var splice = arr.splice;
5857
+
5858
+
5859
+ var whitespace = "[\\x20\\t\\r\\n\\f]";
5860
+
5861
+
5862
+ var rtrimCSS = new RegExp(
5863
+ "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$",
5864
+ "g"
5865
+ );
5866
+
5867
+
5868
+
5869
+
5870
+ // Note: an element does not contain itself
5871
+ jQuery.contains = function( a, b ) {
5872
+ var bup = b && b.parentNode;
5873
+
5874
+ return a === bup || !!( bup && bup.nodeType === 1 && (
5875
+
5876
+ // Support: IE 9 - 11+
5877
+ // IE doesn't have `contains` on SVG.
5878
+ a.contains ?
5879
+ a.contains( bup ) :
5880
+ a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
5881
+ ) );
5882
+ };
5883
+
5884
+
5885
+
5886
+
5887
+ // CSS string/identifier serialization
5888
+ // https://drafts.csswg.org/cssom/#common-serializing-idioms
5889
+ var rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g;
5890
+
5891
+ function fcssescape( ch, asCodePoint ) {
5892
+ if ( asCodePoint ) {
5893
+
5894
+ // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
5895
+ if ( ch === "\0" ) {
5896
+ return "\uFFFD";
5897
+ }
5898
+
5899
+ // Control characters and (dependent upon position) numbers get escaped as code points
5900
+ return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
5901
+ }
5902
+
5903
+ // Other potentially-special ASCII characters get backslash-escaped
5904
+ return "\\" + ch;
5905
+ }
5906
+
5907
+ jQuery.escapeSelector = function( sel ) {
5908
+ return ( sel + "" ).replace( rcssescape, fcssescape );
5909
+ };
5910
+
5911
+
5912
+
5913
+
5914
+ var preferredDoc = document,
5915
+ pushNative = push;
5916
+
5917
+ ( function() {
5918
+
5821
5919
  var i,
5822
- support,
5823
5920
  Expr,
5824
- getText,
5825
- isXML,
5826
- tokenize,
5827
- compile,
5828
- select,
5829
5921
  outermostContext,
5830
5922
  sortInput,
5831
5923
  hasDuplicate,
5924
+ push = pushNative,
5832
5925
 
5833
5926
  // Local document vars
5834
- setDocument,
5835
5927
  document,
5836
- docElem,
5928
+ documentElement,
5837
5929
  documentIsHTML,
5838
5930
  rbuggyQSA,
5839
- rbuggyMatches,
5840
5931
  matches,
5841
- contains,
5842
5932
 
5843
5933
  // Instance-specific data
5844
- expando = "sizzle" + 1 * new Date(),
5845
- preferredDoc = window.document,
5934
+ expando = jQuery.expando,
5846
5935
  dirruns = 0,
5847
5936
  done = 0,
5848
5937
  classCache = createCache(),
@@ -5856,47 +5945,22 @@ var i,
5856
5945
  return 0;
5857
5946
  },
5858
5947
 
5859
- // Instance methods
5860
- hasOwn = ( {} ).hasOwnProperty,
5861
- arr = [],
5862
- pop = arr.pop,
5863
- pushNative = arr.push,
5864
- push = arr.push,
5865
- slice = arr.slice,
5866
-
5867
- // Use a stripped-down indexOf as it's faster than native
5868
- // https://jsperf.com/thor-indexof-vs-for/5
5869
- indexOf = function( list, elem ) {
5870
- var i = 0,
5871
- len = list.length;
5872
- for ( ; i < len; i++ ) {
5873
- if ( list[ i ] === elem ) {
5874
- return i;
5875
- }
5876
- }
5877
- return -1;
5878
- },
5879
-
5880
- booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|" +
5881
- "ismap|loop|multiple|open|readonly|required|scoped",
5948
+ booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|" +
5949
+ "loop|multiple|open|readonly|required|scoped",
5882
5950
 
5883
5951
  // Regular expressions
5884
5952
 
5885
- // http://www.w3.org/TR/css3-selectors/#whitespace
5886
- whitespace = "[\\x20\\t\\r\\n\\f]",
5887
-
5888
5953
  // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram
5889
5954
  identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace +
5890
5955
  "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",
5891
5956
 
5892
- // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
5957
+ // Attribute selectors: https://www.w3.org/TR/selectors/#attribute-selectors
5893
5958
  attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
5894
5959
 
5895
5960
  // Operator (capture 2)
5896
5961
  "*([*^$|!~]?=)" + whitespace +
5897
5962
 
5898
- // "Attribute values must be CSS identifiers [capture 5]
5899
- // or strings [capture 3 or capture 4]"
5963
+ // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
5900
5964
  "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" +
5901
5965
  whitespace + "*\\]",
5902
5966
 
@@ -5915,101 +5979,88 @@ var i,
5915
5979
 
5916
5980
  // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
5917
5981
  rwhitespace = new RegExp( whitespace + "+", "g" ),
5918
- rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" +
5919
- whitespace + "+$", "g" ),
5920
5982
 
5921
5983
  rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
5922
- rleadingCombinator = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace +
5923
- "*" ),
5984
+ rleadingCombinator = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" +
5985
+ whitespace + "*" ),
5924
5986
  rdescend = new RegExp( whitespace + "|>" ),
5925
5987
 
5926
5988
  rpseudo = new RegExp( pseudos ),
5927
5989
  ridentifier = new RegExp( "^" + identifier + "$" ),
5928
5990
 
5929
5991
  matchExpr = {
5930
- "ID": new RegExp( "^#(" + identifier + ")" ),
5931
- "CLASS": new RegExp( "^\\.(" + identifier + ")" ),
5932
- "TAG": new RegExp( "^(" + identifier + "|[*])" ),
5933
- "ATTR": new RegExp( "^" + attributes ),
5934
- "PSEUDO": new RegExp( "^" + pseudos ),
5935
- "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" +
5936
- whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" +
5937
- whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
5938
- "bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
5992
+ ID: new RegExp( "^#(" + identifier + ")" ),
5993
+ CLASS: new RegExp( "^\\.(" + identifier + ")" ),
5994
+ TAG: new RegExp( "^(" + identifier + "|[*])" ),
5995
+ ATTR: new RegExp( "^" + attributes ),
5996
+ PSEUDO: new RegExp( "^" + pseudos ),
5997
+ CHILD: new RegExp(
5998
+ "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" +
5999
+ whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" +
6000
+ whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
6001
+ bool: new RegExp( "^(?:" + booleans + ")$", "i" ),
5939
6002
 
5940
6003
  // For use in libraries implementing .is()
5941
6004
  // We use this for POS matching in `select`
5942
- "needsContext": new RegExp( "^" + whitespace +
6005
+ needsContext: new RegExp( "^" + whitespace +
5943
6006
  "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace +
5944
6007
  "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
5945
6008
  },
5946
6009
 
5947
- rhtml = /HTML$/i,
5948
6010
  rinputs = /^(?:input|select|textarea|button)$/i,
5949
6011
  rheader = /^h\d$/i,
5950
6012
 
5951
- rnative = /^[^{]+\{\s*\[native \w/,
5952
-
5953
6013
  // Easily-parseable/retrievable ID or TAG or CLASS selectors
5954
6014
  rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
5955
6015
 
5956
6016
  rsibling = /[+~]/,
5957
6017
 
5958
6018
  // CSS escapes
5959
- // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
5960
- runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g" ),
6019
+ // https://www.w3.org/TR/CSS21/syndata.html#escaped-characters
6020
+ runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace +
6021
+ "?|\\\\([^\\r\\n\\f])", "g" ),
5961
6022
  funescape = function( escape, nonHex ) {
5962
6023
  var high = "0x" + escape.slice( 1 ) - 0x10000;
5963
6024
 
5964
- return nonHex ?
6025
+ if ( nonHex ) {
5965
6026
 
5966
6027
  // Strip the backslash prefix from a non-hex escape sequence
5967
- nonHex :
5968
-
5969
- // Replace a hexadecimal escape sequence with the encoded Unicode code point
5970
- // Support: IE <=11+
5971
- // For values outside the Basic Multilingual Plane (BMP), manually construct a
5972
- // surrogate pair
5973
- high < 0 ?
5974
- String.fromCharCode( high + 0x10000 ) :
5975
- String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
5976
- },
5977
-
5978
- // CSS string/identifier serialization
5979
- // https://drafts.csswg.org/cssom/#common-serializing-idioms
5980
- rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
5981
- fcssescape = function( ch, asCodePoint ) {
5982
- if ( asCodePoint ) {
5983
-
5984
- // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
5985
- if ( ch === "\0" ) {
5986
- return "\uFFFD";
5987
- }
5988
-
5989
- // Control characters and (dependent upon position) numbers get escaped as code points
5990
- return ch.slice( 0, -1 ) + "\\" +
5991
- ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
6028
+ return nonHex;
5992
6029
  }
5993
6030
 
5994
- // Other potentially-special ASCII characters get backslash-escaped
5995
- return "\\" + ch;
6031
+ // Replace a hexadecimal escape sequence with the encoded Unicode code point
6032
+ // Support: IE <=11+
6033
+ // For values outside the Basic Multilingual Plane (BMP), manually construct a
6034
+ // surrogate pair
6035
+ return high < 0 ?
6036
+ String.fromCharCode( high + 0x10000 ) :
6037
+ String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
5996
6038
  },
5997
6039
 
5998
- // Used for iframes
5999
- // See setDocument()
6040
+ // Used for iframes; see `setDocument`.
6041
+ // Support: IE 9 - 11+, Edge 12 - 18+
6000
6042
  // Removing the function wrapper causes a "Permission Denied"
6001
- // error in IE
6043
+ // error in IE/Edge.
6002
6044
  unloadHandler = function() {
6003
6045
  setDocument();
6004
6046
  },
6005
6047
 
6006
6048
  inDisabledFieldset = addCombinator(
6007
6049
  function( elem ) {
6008
- return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset";
6050
+ return elem.disabled === true && nodeName( elem, "fieldset" );
6009
6051
  },
6010
6052
  { dir: "parentNode", next: "legend" }
6011
6053
  );
6012
6054
 
6055
+ // Support: IE <=9 only
6056
+ // Accessing document.activeElement can throw unexpectedly
6057
+ // https://bugs.jquery.com/ticket/13393
6058
+ function safeActiveElement() {
6059
+ try {
6060
+ return document.activeElement;
6061
+ } catch ( err ) { }
6062
+ }
6063
+
6013
6064
  // Optimize for push.apply( _, NodeList )
6014
6065
  try {
6015
6066
  push.apply(
@@ -6017,27 +6068,17 @@ try {
6017
6068
  preferredDoc.childNodes
6018
6069
  );
6019
6070
  } catch ( e ) {
6020
- push = { apply: arr.length ?
6021
-
6022
- // Leverage slice if possible
6023
- function( target, els ) {
6071
+ push = {
6072
+ apply: function( target, els ) {
6024
6073
  pushNative.apply( target, slice.call( els ) );
6025
- } :
6026
-
6027
- // Support: IE<9
6028
- // Otherwise append directly
6029
- function( target, els ) {
6030
- var j = target.length,
6031
- i = 0;
6032
-
6033
- // Can't trust NodeList.length
6034
- while ( ( target[ j++ ] = els[ i++ ] ) ) {}
6035
- target.length = j - 1;
6074
+ },
6075
+ call: function( target ) {
6076
+ pushNative.apply( target, slice.call( arguments, 1 ) );
6036
6077
  }
6037
6078
  };
6038
6079
  }
6039
6080
 
6040
- function Sizzle( selector, context, results, seed ) {
6081
+ function find( selector, context, results, seed ) {
6041
6082
  var m, i, elem, nid, match, groups, newSelector,
6042
6083
  newContext = context && context.ownerDocument,
6043
6084
 
@@ -6071,11 +6112,10 @@ function Sizzle( selector, context, results, seed ) {
6071
6112
  if ( nodeType === 9 ) {
6072
6113
  if ( ( elem = context.getElementById( m ) ) ) {
6073
6114
 
6074
- // Support: IE, Opera, Webkit
6075
- // TODO: identify versions
6115
+ // Support: IE 9 only
6076
6116
  // getElementById can match elements by name instead of ID
6077
6117
  if ( elem.id === m ) {
6078
- results.push( elem );
6118
+ push.call( results, elem );
6079
6119
  return results;
6080
6120
  }
6081
6121
  } else {
@@ -6085,14 +6125,13 @@ function Sizzle( selector, context, results, seed ) {
6085
6125
  // Element context
6086
6126
  } else {
6087
6127
 
6088
- // Support: IE, Opera, Webkit
6089
- // TODO: identify versions
6128
+ // Support: IE 9 only
6090
6129
  // getElementById can match elements by name instead of ID
6091
6130
  if ( newContext && ( elem = newContext.getElementById( m ) ) &&
6092
- contains( context, elem ) &&
6131
+ find.contains( context, elem ) &&
6093
6132
  elem.id === m ) {
6094
6133
 
6095
- results.push( elem );
6134
+ push.call( results, elem );
6096
6135
  return results;
6097
6136
  }
6098
6137
  }
@@ -6103,22 +6142,15 @@ function Sizzle( selector, context, results, seed ) {
6103
6142
  return results;
6104
6143
 
6105
6144
  // Class selector
6106
- } else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&
6107
- context.getElementsByClassName ) {
6108
-
6145
+ } else if ( ( m = match[ 3 ] ) && context.getElementsByClassName ) {
6109
6146
  push.apply( results, context.getElementsByClassName( m ) );
6110
6147
  return results;
6111
6148
  }
6112
6149
  }
6113
6150
 
6114
6151
  // Take advantage of querySelectorAll
6115
- if ( support.qsa &&
6116
- !nonnativeSelectorCache[ selector + " " ] &&
6117
- ( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&
6118
-
6119
- // Support: IE 8 only
6120
- // Exclude object elements
6121
- ( nodeType !== 1 || context.nodeName.toLowerCase() !== "object" ) ) {
6152
+ if ( !nonnativeSelectorCache[ selector + " " ] &&
6153
+ ( !rbuggyQSA || !rbuggyQSA.test( selector ) ) ) {
6122
6154
 
6123
6155
  newSelector = selector;
6124
6156
  newContext = context;
@@ -6139,11 +6171,15 @@ function Sizzle( selector, context, results, seed ) {
6139
6171
 
6140
6172
  // We can use :scope instead of the ID hack if the browser
6141
6173
  // supports it & if we're not changing the context.
6142
- if ( newContext !== context || !support.scope ) {
6174
+ // Support: IE 11+, Edge 17 - 18+
6175
+ // IE/Edge sometimes throw a "Permission denied" error when
6176
+ // strict-comparing two documents; shallow comparisons work.
6177
+ // eslint-disable-next-line eqeqeq
6178
+ if ( newContext != context || !support.scope ) {
6143
6179
 
6144
6180
  // Capture the context ID, setting it first if necessary
6145
6181
  if ( ( nid = context.getAttribute( "id" ) ) ) {
6146
- nid = nid.replace( rcssescape, fcssescape );
6182
+ nid = jQuery.escapeSelector( nid );
6147
6183
  } else {
6148
6184
  context.setAttribute( "id", ( nid = expando ) );
6149
6185
  }
@@ -6176,7 +6212,7 @@ function Sizzle( selector, context, results, seed ) {
6176
6212
  }
6177
6213
 
6178
6214
  // All others
6179
- return select( selector.replace( rtrim, "$1" ), context, results, seed );
6215
+ return select( selector.replace( rtrimCSS, "$1" ), context, results, seed );
6180
6216
  }
6181
6217
 
6182
6218
  /**
@@ -6190,7 +6226,8 @@ function createCache() {
6190
6226
 
6191
6227
  function cache( key, value ) {
6192
6228
 
6193
- // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
6229
+ // Use (key + " ") to avoid collision with native prototype properties
6230
+ // (see https://github.com/jquery/sizzle/issues/157)
6194
6231
  if ( keys.push( key + " " ) > Expr.cacheLength ) {
6195
6232
 
6196
6233
  // Only keep the most recent entries
@@ -6202,7 +6239,7 @@ function createCache() {
6202
6239
  }
6203
6240
 
6204
6241
  /**
6205
- * Mark a function for special use by Sizzle
6242
+ * Mark a function for special use by jQuery selector module
6206
6243
  * @param {Function} fn The function to mark
6207
6244
  */
6208
6245
  function markFunction( fn ) {
@@ -6233,56 +6270,13 @@ function assert( fn ) {
6233
6270
  }
6234
6271
  }
6235
6272
 
6236
- /**
6237
- * Adds the same handler for all of the specified attrs
6238
- * @param {String} attrs Pipe-separated list of attributes
6239
- * @param {Function} handler The method that will be applied
6240
- */
6241
- function addHandle( attrs, handler ) {
6242
- var arr = attrs.split( "|" ),
6243
- i = arr.length;
6244
-
6245
- while ( i-- ) {
6246
- Expr.attrHandle[ arr[ i ] ] = handler;
6247
- }
6248
- }
6249
-
6250
- /**
6251
- * Checks document order of two siblings
6252
- * @param {Element} a
6253
- * @param {Element} b
6254
- * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
6255
- */
6256
- function siblingCheck( a, b ) {
6257
- var cur = b && a,
6258
- diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
6259
- a.sourceIndex - b.sourceIndex;
6260
-
6261
- // Use IE sourceIndex if available on both nodes
6262
- if ( diff ) {
6263
- return diff;
6264
- }
6265
-
6266
- // Check if b follows a
6267
- if ( cur ) {
6268
- while ( ( cur = cur.nextSibling ) ) {
6269
- if ( cur === b ) {
6270
- return -1;
6271
- }
6272
- }
6273
- }
6274
-
6275
- return a ? 1 : -1;
6276
- }
6277
-
6278
6273
  /**
6279
6274
  * Returns a function to use in pseudos for input types
6280
6275
  * @param {String} type
6281
6276
  */
6282
6277
  function createInputPseudo( type ) {
6283
6278
  return function( elem ) {
6284
- var name = elem.nodeName.toLowerCase();
6285
- return name === "input" && elem.type === type;
6279
+ return nodeName( elem, "input" ) && elem.type === type;
6286
6280
  };
6287
6281
  }
6288
6282
 
@@ -6292,8 +6286,8 @@ function createInputPseudo( type ) {
6292
6286
  */
6293
6287
  function createButtonPseudo( type ) {
6294
6288
  return function( elem ) {
6295
- var name = elem.nodeName.toLowerCase();
6296
- return ( name === "input" || name === "button" ) && elem.type === type;
6289
+ return ( nodeName( elem, "input" ) || nodeName( elem, "button" ) ) &&
6290
+ elem.type === type;
6297
6291
  };
6298
6292
  }
6299
6293
 
@@ -6329,14 +6323,13 @@ function createDisabledPseudo( disabled ) {
6329
6323
  }
6330
6324
  }
6331
6325
 
6332
- // Support: IE 6 - 11
6326
+ // Support: IE 6 - 11+
6333
6327
  // Use the isDisabled shortcut property to check for disabled fieldset ancestors
6334
6328
  return elem.isDisabled === disabled ||
6335
6329
 
6336
6330
  // Where there is no isDisabled, check manually
6337
- /* jshint -W018 */
6338
6331
  elem.isDisabled !== !disabled &&
6339
- inDisabledFieldset( elem ) === disabled;
6332
+ inDisabledFieldset( elem ) === disabled;
6340
6333
  }
6341
6334
 
6342
6335
  return elem.disabled === disabled;
@@ -6376,7 +6369,7 @@ function createPositionalPseudo( fn ) {
6376
6369
  }
6377
6370
 
6378
6371
  /**
6379
- * Checks a node for validity as a Sizzle context
6372
+ * Checks a node for validity as a jQuery selector context
6380
6373
  * @param {Element|Object=} context
6381
6374
  * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
6382
6375
  */
@@ -6384,31 +6377,13 @@ function testContext( context ) {
6384
6377
  return context && typeof context.getElementsByTagName !== "undefined" && context;
6385
6378
  }
6386
6379
 
6387
- // Expose support vars for convenience
6388
- support = Sizzle.support = {};
6389
-
6390
- /**
6391
- * Detects XML nodes
6392
- * @param {Element|Object} elem An element or a document
6393
- * @returns {Boolean} True iff elem is a non-HTML XML node
6394
- */
6395
- isXML = Sizzle.isXML = function( elem ) {
6396
- var namespace = elem && elem.namespaceURI,
6397
- docElem = elem && ( elem.ownerDocument || elem ).documentElement;
6398
-
6399
- // Support: IE <=8
6400
- // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes
6401
- // https://bugs.jquery.com/ticket/4833
6402
- return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" );
6403
- };
6404
-
6405
6380
  /**
6406
6381
  * Sets document-related variables once based on the current document
6407
- * @param {Element|Object} [doc] An element or document object to use to set the document
6382
+ * @param {Element|Object} [node] An element or document object to use to set the document
6408
6383
  * @returns {Object} Returns the current document
6409
6384
  */
6410
- setDocument = Sizzle.setDocument = function( node ) {
6411
- var hasCompare, subWindow,
6385
+ function setDocument( node ) {
6386
+ var subWindow,
6412
6387
  doc = node ? node.ownerDocument || node : preferredDoc;
6413
6388
 
6414
6389
  // Return early if doc is invalid or already selected
@@ -6422,11 +6397,17 @@ setDocument = Sizzle.setDocument = function( node ) {
6422
6397
 
6423
6398
  // Update global variables
6424
6399
  document = doc;
6425
- docElem = document.documentElement;
6426
- documentIsHTML = !isXML( document );
6400
+ documentElement = document.documentElement;
6401
+ documentIsHTML = !jQuery.isXMLDoc( document );
6402
+
6403
+ // Support: iOS 7 only, IE 9 - 11+
6404
+ // Older browsers didn't support unprefixed `matches`.
6405
+ matches = documentElement.matches ||
6406
+ documentElement.webkitMatchesSelector ||
6407
+ documentElement.msMatchesSelector;
6427
6408
 
6428
6409
  // Support: IE 9 - 11+, Edge 12 - 18+
6429
- // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
6410
+ // Accessing iframe documents after unload throws "permission denied" errors (see trac-13936)
6430
6411
  // Support: IE 11+, Edge 17 - 18+
6431
6412
  // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
6432
6413
  // two documents; shallow comparisons work.
@@ -6434,29 +6415,35 @@ setDocument = Sizzle.setDocument = function( node ) {
6434
6415
  if ( preferredDoc != document &&
6435
6416
  ( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {
6436
6417
 
6437
- // Support: IE 11, Edge
6438
- if ( subWindow.addEventListener ) {
6439
- subWindow.addEventListener( "unload", unloadHandler, false );
6440
-
6441
- // Support: IE 9 - 10 only
6442
- } else if ( subWindow.attachEvent ) {
6443
- subWindow.attachEvent( "onunload", unloadHandler );
6444
- }
6418
+ // Support: IE 9 - 11+, Edge 12 - 18+
6419
+ subWindow.addEventListener( "unload", unloadHandler );
6445
6420
  }
6446
6421
 
6447
- // Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,
6448
- // Safari 4 - 5 only, Opera <=11.6 - 12.x only
6449
- // IE/Edge & older browsers don't support the :scope pseudo-class.
6450
- // Support: Safari 6.0 only
6451
- // Safari 6.0 supports :scope but it's an alias of :root there.
6452
- support.scope = assert( function( el ) {
6453
- docElem.appendChild( el ).appendChild( document.createElement( "div" ) );
6454
- return typeof el.querySelectorAll !== "undefined" &&
6455
- !el.querySelectorAll( ":scope fieldset div" ).length;
6422
+ // Support: IE <10
6423
+ // Check if getElementById returns elements by name
6424
+ // The broken getElementById methods don't pick up programmatically-set names,
6425
+ // so use a roundabout getElementsByName test
6426
+ support.getById = assert( function( el ) {
6427
+ documentElement.appendChild( el ).id = jQuery.expando;
6428
+ return !document.getElementsByName ||
6429
+ !document.getElementsByName( jQuery.expando ).length;
6430
+ } );
6431
+
6432
+ // Support: IE 9 only
6433
+ // Check to see if it's possible to do matchesSelector
6434
+ // on a disconnected node.
6435
+ support.disconnectedMatch = assert( function( el ) {
6436
+ return matches.call( el, "*" );
6437
+ } );
6438
+
6439
+ // Support: IE 9 - 11+, Edge 12 - 18+
6440
+ // IE/Edge don't support the :scope pseudo-class.
6441
+ support.scope = assert( function() {
6442
+ return document.querySelectorAll( ":scope" );
6456
6443
  } );
6457
6444
 
6458
- // Support: Chrome 105 - 110+, Safari 15.4 - 16.3+
6459
- // Make sure the the `:has()` argument is parsed unforgivingly.
6445
+ // Support: Chrome 105 - 111 only, Safari 15.4 - 16.3 only
6446
+ // Make sure the `:has()` argument is parsed unforgivingly.
6460
6447
  // We include `*` in the test to detect buggy implementations that are
6461
6448
  // _selectively_ forgiving (specifically when the list includes at least
6462
6449
  // one valid selector).
@@ -6473,54 +6460,22 @@ setDocument = Sizzle.setDocument = function( node ) {
6473
6460
  }
6474
6461
  } );
6475
6462
 
6476
- /* Attributes
6477
- ---------------------------------------------------------------------- */
6478
-
6479
- // Support: IE<8
6480
- // Verify that getAttribute really returns attributes and not properties
6481
- // (excepting IE8 booleans)
6482
- support.attributes = assert( function( el ) {
6483
- el.className = "i";
6484
- return !el.getAttribute( "className" );
6485
- } );
6486
-
6487
- /* getElement(s)By*
6488
- ---------------------------------------------------------------------- */
6489
-
6490
- // Check if getElementsByTagName("*") returns only elements
6491
- support.getElementsByTagName = assert( function( el ) {
6492
- el.appendChild( document.createComment( "" ) );
6493
- return !el.getElementsByTagName( "*" ).length;
6494
- } );
6495
-
6496
- // Support: IE<9
6497
- support.getElementsByClassName = rnative.test( document.getElementsByClassName );
6498
-
6499
- // Support: IE<10
6500
- // Check if getElementById returns elements by name
6501
- // The broken getElementById methods don't pick up programmatically-set names,
6502
- // so use a roundabout getElementsByName test
6503
- support.getById = assert( function( el ) {
6504
- docElem.appendChild( el ).id = expando;
6505
- return !document.getElementsByName || !document.getElementsByName( expando ).length;
6506
- } );
6507
-
6508
6463
  // ID filter and find
6509
6464
  if ( support.getById ) {
6510
- Expr.filter[ "ID" ] = function( id ) {
6465
+ Expr.filter.ID = function( id ) {
6511
6466
  var attrId = id.replace( runescape, funescape );
6512
6467
  return function( elem ) {
6513
6468
  return elem.getAttribute( "id" ) === attrId;
6514
6469
  };
6515
6470
  };
6516
- Expr.find[ "ID" ] = function( id, context ) {
6471
+ Expr.find.ID = function( id, context ) {
6517
6472
  if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
6518
6473
  var elem = context.getElementById( id );
6519
6474
  return elem ? [ elem ] : [];
6520
6475
  }
6521
6476
  };
6522
6477
  } else {
6523
- Expr.filter[ "ID" ] = function( id ) {
6478
+ Expr.filter.ID = function( id ) {
6524
6479
  var attrId = id.replace( runescape, funescape );
6525
6480
  return function( elem ) {
6526
6481
  var node = typeof elem.getAttributeNode !== "undefined" &&
@@ -6531,7 +6486,7 @@ setDocument = Sizzle.setDocument = function( node ) {
6531
6486
 
6532
6487
  // Support: IE 6 - 7 only
6533
6488
  // getElementById is not reliable as a find shortcut
6534
- Expr.find[ "ID" ] = function( id, context ) {
6489
+ Expr.find.ID = function( id, context ) {
6535
6490
  if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
6536
6491
  var node, i, elems,
6537
6492
  elem = context.getElementById( id );
@@ -6561,40 +6516,18 @@ setDocument = Sizzle.setDocument = function( node ) {
6561
6516
  }
6562
6517
 
6563
6518
  // Tag
6564
- Expr.find[ "TAG" ] = support.getElementsByTagName ?
6565
- function( tag, context ) {
6566
- if ( typeof context.getElementsByTagName !== "undefined" ) {
6567
- return context.getElementsByTagName( tag );
6519
+ Expr.find.TAG = function( tag, context ) {
6520
+ if ( typeof context.getElementsByTagName !== "undefined" ) {
6521
+ return context.getElementsByTagName( tag );
6568
6522
 
6569
- // DocumentFragment nodes don't have gEBTN
6570
- } else if ( support.qsa ) {
6571
- return context.querySelectorAll( tag );
6572
- }
6573
- } :
6574
-
6575
- function( tag, context ) {
6576
- var elem,
6577
- tmp = [],
6578
- i = 0,
6579
-
6580
- // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
6581
- results = context.getElementsByTagName( tag );
6582
-
6583
- // Filter out possible comments
6584
- if ( tag === "*" ) {
6585
- while ( ( elem = results[ i++ ] ) ) {
6586
- if ( elem.nodeType === 1 ) {
6587
- tmp.push( elem );
6588
- }
6589
- }
6590
-
6591
- return tmp;
6592
- }
6593
- return results;
6594
- };
6523
+ // DocumentFragment nodes don't have gEBTN
6524
+ } else {
6525
+ return context.querySelectorAll( tag );
6526
+ }
6527
+ };
6595
6528
 
6596
6529
  // Class
6597
- Expr.find[ "CLASS" ] = support.getElementsByClassName && function( className, context ) {
6530
+ Expr.find.CLASS = function( className, context ) {
6598
6531
  if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {
6599
6532
  return context.getElementsByClassName( className );
6600
6533
  }
@@ -6605,139 +6538,75 @@ setDocument = Sizzle.setDocument = function( node ) {
6605
6538
 
6606
6539
  // QSA and matchesSelector support
6607
6540
 
6608
- // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
6609
- rbuggyMatches = [];
6610
-
6611
- // qSa(:focus) reports false when true (Chrome 21)
6612
- // We allow this because of a bug in IE8/9 that throws an error
6613
- // whenever `document.activeElement` is accessed on an iframe
6614
- // So, we allow :focus to pass through QSA all the time to avoid the IE error
6615
- // See https://bugs.jquery.com/ticket/13378
6616
6541
  rbuggyQSA = [];
6617
6542
 
6618
- if ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {
6543
+ // Build QSA regex
6544
+ // Regex strategy adopted from Diego Perini
6545
+ assert( function( el ) {
6619
6546
 
6620
- // Build QSA regex
6621
- // Regex strategy adopted from Diego Perini
6622
- assert( function( el ) {
6547
+ var input;
6623
6548
 
6624
- var input;
6625
-
6626
- // Select is set to empty string on purpose
6627
- // This is to test IE's treatment of not explicitly
6628
- // setting a boolean content attribute,
6629
- // since its presence should be enough
6630
- // https://bugs.jquery.com/ticket/12359
6631
- docElem.appendChild( el ).innerHTML = "<a id='" + expando + "'></a>" +
6632
- "<select id='" + expando + "-\r\\' msallowcapture=''>" +
6633
- "<option selected=''></option></select>";
6634
-
6635
- // Support: IE8, Opera 11-12.16
6636
- // Nothing should be selected when empty strings follow ^= or $= or *=
6637
- // The test attribute must be unknown in Opera but "safe" for WinRT
6638
- // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
6639
- if ( el.querySelectorAll( "[msallowcapture^='']" ).length ) {
6640
- rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
6641
- }
6642
-
6643
- // Support: IE8
6644
- // Boolean attributes and "value" are not treated correctly
6645
- if ( !el.querySelectorAll( "[selected]" ).length ) {
6646
- rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
6647
- }
6648
-
6649
- // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
6650
- if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
6651
- rbuggyQSA.push( "~=" );
6652
- }
6653
-
6654
- // Support: IE 11+, Edge 15 - 18+
6655
- // IE 11/Edge don't find elements on a `[name='']` query in some cases.
6656
- // Adding a temporary attribute to the document before the selection works
6657
- // around the issue.
6658
- // Interestingly, IE 10 & older don't seem to have the issue.
6659
- input = document.createElement( "input" );
6660
- input.setAttribute( "name", "" );
6661
- el.appendChild( input );
6662
- if ( !el.querySelectorAll( "[name='']" ).length ) {
6663
- rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" +
6664
- whitespace + "*(?:''|\"\")" );
6665
- }
6666
-
6667
- // Webkit/Opera - :checked should return selected option elements
6668
- // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
6669
- // IE8 throws error here and will not see later tests
6670
- if ( !el.querySelectorAll( ":checked" ).length ) {
6671
- rbuggyQSA.push( ":checked" );
6672
- }
6673
-
6674
- // Support: Safari 8+, iOS 8+
6675
- // https://bugs.webkit.org/show_bug.cgi?id=136851
6676
- // In-page `selector#id sibling-combinator selector` fails
6677
- if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {
6678
- rbuggyQSA.push( ".#.+[+~]" );
6679
- }
6680
-
6681
- // Support: Firefox <=3.6 - 5 only
6682
- // Old Firefox doesn't throw on a badly-escaped identifier.
6683
- el.querySelectorAll( "\\\f" );
6684
- rbuggyQSA.push( "[\\r\\n\\f]" );
6685
- } );
6549
+ documentElement.appendChild( el ).innerHTML =
6550
+ "<a id='" + expando + "' href='' disabled='disabled'></a>" +
6551
+ "<select id='" + expando + "-\r\\' disabled='disabled'>" +
6552
+ "<option selected=''></option></select>";
6686
6553
 
6687
- assert( function( el ) {
6688
- el.innerHTML = "<a href='' disabled='disabled'></a>" +
6689
- "<select disabled='disabled'><option/></select>";
6690
-
6691
- // Support: Windows 8 Native Apps
6692
- // The type and name attributes are restricted during .innerHTML assignment
6693
- var input = document.createElement( "input" );
6694
- input.setAttribute( "type", "hidden" );
6695
- el.appendChild( input ).setAttribute( "name", "D" );
6696
-
6697
- // Support: IE8
6698
- // Enforce case-sensitivity of name attribute
6699
- if ( el.querySelectorAll( "[name=d]" ).length ) {
6700
- rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
6701
- }
6702
-
6703
- // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
6704
- // IE8 throws error here and will not see later tests
6705
- if ( el.querySelectorAll( ":enabled" ).length !== 2 ) {
6706
- rbuggyQSA.push( ":enabled", ":disabled" );
6707
- }
6708
-
6709
- // Support: IE9-11+
6710
- // IE's :disabled selector does not pick up the children of disabled fieldsets
6711
- docElem.appendChild( el ).disabled = true;
6712
- if ( el.querySelectorAll( ":disabled" ).length !== 2 ) {
6713
- rbuggyQSA.push( ":enabled", ":disabled" );
6714
- }
6715
-
6716
- // Support: Opera 10 - 11 only
6717
- // Opera 10-11 does not throw on post-comma invalid pseudos
6718
- el.querySelectorAll( "*,:x" );
6719
- rbuggyQSA.push( ",.*:" );
6720
- } );
6721
- }
6554
+ // Support: iOS <=7 - 8 only
6555
+ // Boolean attributes and "value" are not treated correctly in some XML documents
6556
+ if ( !el.querySelectorAll( "[selected]" ).length ) {
6557
+ rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
6558
+ }
6722
6559
 
6723
- if ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||
6724
- docElem.webkitMatchesSelector ||
6725
- docElem.mozMatchesSelector ||
6726
- docElem.oMatchesSelector ||
6727
- docElem.msMatchesSelector ) ) ) ) {
6560
+ // Support: iOS <=7 - 8 only
6561
+ if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
6562
+ rbuggyQSA.push( "~=" );
6563
+ }
6728
6564
 
6729
- assert( function( el ) {
6565
+ // Support: iOS 8 only
6566
+ // https://bugs.webkit.org/show_bug.cgi?id=136851
6567
+ // In-page `selector#id sibling-combinator selector` fails
6568
+ if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {
6569
+ rbuggyQSA.push( ".#.+[+~]" );
6570
+ }
6730
6571
 
6731
- // Check to see if it's possible to do matchesSelector
6732
- // on a disconnected node (IE 9)
6733
- support.disconnectedMatch = matches.call( el, "*" );
6572
+ // Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+
6573
+ // In some of the document kinds, these selectors wouldn't work natively.
6574
+ // This is probably OK but for backwards compatibility we want to maintain
6575
+ // handling them through jQuery traversal in jQuery 3.x.
6576
+ if ( !el.querySelectorAll( ":checked" ).length ) {
6577
+ rbuggyQSA.push( ":checked" );
6578
+ }
6734
6579
 
6735
- // This should fail with an exception
6736
- // Gecko does not error, returns false instead
6737
- matches.call( el, "[s!='']:x" );
6738
- rbuggyMatches.push( "!=", pseudos );
6739
- } );
6740
- }
6580
+ // Support: Windows 8 Native Apps
6581
+ // The type and name attributes are restricted during .innerHTML assignment
6582
+ input = document.createElement( "input" );
6583
+ input.setAttribute( "type", "hidden" );
6584
+ el.appendChild( input ).setAttribute( "name", "D" );
6585
+
6586
+ // Support: IE 9 - 11+
6587
+ // IE's :disabled selector does not pick up the children of disabled fieldsets
6588
+ // Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+
6589
+ // In some of the document kinds, these selectors wouldn't work natively.
6590
+ // This is probably OK but for backwards compatibility we want to maintain
6591
+ // handling them through jQuery traversal in jQuery 3.x.
6592
+ documentElement.appendChild( el ).disabled = true;
6593
+ if ( el.querySelectorAll( ":disabled" ).length !== 2 ) {
6594
+ rbuggyQSA.push( ":enabled", ":disabled" );
6595
+ }
6596
+
6597
+ // Support: IE 11+, Edge 15 - 18+
6598
+ // IE 11/Edge don't find elements on a `[name='']` query in some cases.
6599
+ // Adding a temporary attribute to the document before the selection works
6600
+ // around the issue.
6601
+ // Interestingly, IE 10 & older don't seem to have the issue.
6602
+ input = document.createElement( "input" );
6603
+ input.setAttribute( "name", "" );
6604
+ el.appendChild( input );
6605
+ if ( !el.querySelectorAll( "[name='']" ).length ) {
6606
+ rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" +
6607
+ whitespace + "*(?:''|\"\")" );
6608
+ }
6609
+ } );
6741
6610
 
6742
6611
  if ( !support.cssHas ) {
6743
6612
 
@@ -6751,49 +6620,12 @@ setDocument = Sizzle.setDocument = function( node ) {
6751
6620
  }
6752
6621
 
6753
6622
  rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) );
6754
- rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( "|" ) );
6755
-
6756
- /* Contains
6757
- ---------------------------------------------------------------------- */
6758
- hasCompare = rnative.test( docElem.compareDocumentPosition );
6759
-
6760
- // Element contains another
6761
- // Purposefully self-exclusive
6762
- // As in, an element does not contain itself
6763
- contains = hasCompare || rnative.test( docElem.contains ) ?
6764
- function( a, b ) {
6765
-
6766
- // Support: IE <9 only
6767
- // IE doesn't have `contains` on `document` so we need to check for
6768
- // `documentElement` presence.
6769
- // We need to fall back to `a` when `documentElement` is missing
6770
- // as `ownerDocument` of elements within `<template/>` may have
6771
- // a null one - a default behavior of all modern browsers.
6772
- var adown = a.nodeType === 9 && a.documentElement || a,
6773
- bup = b && b.parentNode;
6774
- return a === bup || !!( bup && bup.nodeType === 1 && (
6775
- adown.contains ?
6776
- adown.contains( bup ) :
6777
- a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
6778
- ) );
6779
- } :
6780
- function( a, b ) {
6781
- if ( b ) {
6782
- while ( ( b = b.parentNode ) ) {
6783
- if ( b === a ) {
6784
- return true;
6785
- }
6786
- }
6787
- }
6788
- return false;
6789
- };
6790
6623
 
6791
6624
  /* Sorting
6792
6625
  ---------------------------------------------------------------------- */
6793
6626
 
6794
6627
  // Document order sorting
6795
- sortOrder = hasCompare ?
6796
- function( a, b ) {
6628
+ sortOrder = function( a, b ) {
6797
6629
 
6798
6630
  // Flag for duplicate removal
6799
6631
  if ( a === b ) {
@@ -6827,8 +6659,8 @@ setDocument = Sizzle.setDocument = function( node ) {
6827
6659
  // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
6828
6660
  // two documents; shallow comparisons work.
6829
6661
  // eslint-disable-next-line eqeqeq
6830
- if ( a == document || a.ownerDocument == preferredDoc &&
6831
- contains( preferredDoc, a ) ) {
6662
+ if ( a === document || a.ownerDocument == preferredDoc &&
6663
+ find.contains( preferredDoc, a ) ) {
6832
6664
  return -1;
6833
6665
  }
6834
6666
 
@@ -6836,100 +6668,33 @@ setDocument = Sizzle.setDocument = function( node ) {
6836
6668
  // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
6837
6669
  // two documents; shallow comparisons work.
6838
6670
  // eslint-disable-next-line eqeqeq
6839
- if ( b == document || b.ownerDocument == preferredDoc &&
6840
- contains( preferredDoc, b ) ) {
6671
+ if ( b === document || b.ownerDocument == preferredDoc &&
6672
+ find.contains( preferredDoc, b ) ) {
6841
6673
  return 1;
6842
6674
  }
6843
6675
 
6844
6676
  // Maintain original order
6845
6677
  return sortInput ?
6846
- ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
6678
+ ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
6847
6679
  0;
6848
6680
  }
6849
6681
 
6850
6682
  return compare & 4 ? -1 : 1;
6851
- } :
6852
- function( a, b ) {
6853
-
6854
- // Exit early if the nodes are identical
6855
- if ( a === b ) {
6856
- hasDuplicate = true;
6857
- return 0;
6858
- }
6859
-
6860
- var cur,
6861
- i = 0,
6862
- aup = a.parentNode,
6863
- bup = b.parentNode,
6864
- ap = [ a ],
6865
- bp = [ b ];
6866
-
6867
- // Parentless nodes are either documents or disconnected
6868
- if ( !aup || !bup ) {
6869
-
6870
- // Support: IE 11+, Edge 17 - 18+
6871
- // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
6872
- // two documents; shallow comparisons work.
6873
- /* eslint-disable eqeqeq */
6874
- return a == document ? -1 :
6875
- b == document ? 1 :
6876
- /* eslint-enable eqeqeq */
6877
- aup ? -1 :
6878
- bup ? 1 :
6879
- sortInput ?
6880
- ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
6881
- 0;
6882
-
6883
- // If the nodes are siblings, we can do a quick check
6884
- } else if ( aup === bup ) {
6885
- return siblingCheck( a, b );
6886
- }
6887
-
6888
- // Otherwise we need full lists of their ancestors for comparison
6889
- cur = a;
6890
- while ( ( cur = cur.parentNode ) ) {
6891
- ap.unshift( cur );
6892
- }
6893
- cur = b;
6894
- while ( ( cur = cur.parentNode ) ) {
6895
- bp.unshift( cur );
6896
- }
6897
-
6898
- // Walk down the tree looking for a discrepancy
6899
- while ( ap[ i ] === bp[ i ] ) {
6900
- i++;
6901
- }
6902
-
6903
- return i ?
6904
-
6905
- // Do a sibling check if the nodes have a common ancestor
6906
- siblingCheck( ap[ i ], bp[ i ] ) :
6907
-
6908
- // Otherwise nodes in our document sort first
6909
- // Support: IE 11+, Edge 17 - 18+
6910
- // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
6911
- // two documents; shallow comparisons work.
6912
- /* eslint-disable eqeqeq */
6913
- ap[ i ] == preferredDoc ? -1 :
6914
- bp[ i ] == preferredDoc ? 1 :
6915
- /* eslint-enable eqeqeq */
6916
- 0;
6917
6683
  };
6918
6684
 
6919
6685
  return document;
6920
- };
6686
+ }
6921
6687
 
6922
- Sizzle.matches = function( expr, elements ) {
6923
- return Sizzle( expr, null, null, elements );
6688
+ find.matches = function( expr, elements ) {
6689
+ return find( expr, null, null, elements );
6924
6690
  };
6925
6691
 
6926
- Sizzle.matchesSelector = function( elem, expr ) {
6692
+ find.matchesSelector = function( elem, expr ) {
6927
6693
  setDocument( elem );
6928
6694
 
6929
- if ( support.matchesSelector && documentIsHTML &&
6695
+ if ( documentIsHTML &&
6930
6696
  !nonnativeSelectorCache[ expr + " " ] &&
6931
- ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
6932
- ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {
6697
+ ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {
6933
6698
 
6934
6699
  try {
6935
6700
  var ret = matches.call( elem, expr );
@@ -6937,9 +6702,9 @@ Sizzle.matchesSelector = function( elem, expr ) {
6937
6702
  // IE 9's matchesSelector returns false on disconnected nodes
6938
6703
  if ( ret || support.disconnectedMatch ||
6939
6704
 
6940
- // As well, disconnected nodes are said to be in a document
6941
- // fragment in IE 9
6942
- elem.document && elem.document.nodeType !== 11 ) {
6705
+ // As well, disconnected nodes are said to be in a document
6706
+ // fragment in IE 9
6707
+ elem.document && elem.document.nodeType !== 11 ) {
6943
6708
  return ret;
6944
6709
  }
6945
6710
  } catch ( e ) {
@@ -6947,10 +6712,10 @@ Sizzle.matchesSelector = function( elem, expr ) {
6947
6712
  }
6948
6713
  }
6949
6714
 
6950
- return Sizzle( expr, document, null, [ elem ] ).length > 0;
6715
+ return find( expr, document, null, [ elem ] ).length > 0;
6951
6716
  };
6952
6717
 
6953
- Sizzle.contains = function( context, elem ) {
6718
+ find.contains = function( context, elem ) {
6954
6719
 
6955
6720
  // Set document vars if needed
6956
6721
  // Support: IE 11+, Edge 17 - 18+
@@ -6960,10 +6725,11 @@ Sizzle.contains = function( context, elem ) {
6960
6725
  if ( ( context.ownerDocument || context ) != document ) {
6961
6726
  setDocument( context );
6962
6727
  }
6963
- return contains( context, elem );
6728
+ return jQuery.contains( context, elem );
6964
6729
  };
6965
6730
 
6966
- Sizzle.attr = function( elem, name ) {
6731
+
6732
+ find.attr = function( elem, name ) {
6967
6733
 
6968
6734
  // Set document vars if needed
6969
6735
  // Support: IE 11+, Edge 17 - 18+
@@ -6976,25 +6742,19 @@ Sizzle.attr = function( elem, name ) {
6976
6742
 
6977
6743
  var fn = Expr.attrHandle[ name.toLowerCase() ],
6978
6744
 
6979
- // Don't get fooled by Object.prototype properties (jQuery #13807)
6745
+ // Don't get fooled by Object.prototype properties (see trac-13807)
6980
6746
  val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
6981
6747
  fn( elem, name, !documentIsHTML ) :
6982
6748
  undefined;
6983
6749
 
6984
- return val !== undefined ?
6985
- val :
6986
- support.attributes || !documentIsHTML ?
6987
- elem.getAttribute( name ) :
6988
- ( val = elem.getAttributeNode( name ) ) && val.specified ?
6989
- val.value :
6990
- null;
6991
- };
6750
+ if ( val !== undefined ) {
6751
+ return val;
6752
+ }
6992
6753
 
6993
- Sizzle.escape = function( sel ) {
6994
- return ( sel + "" ).replace( rcssescape, fcssescape );
6754
+ return elem.getAttribute( name );
6995
6755
  };
6996
6756
 
6997
- Sizzle.error = function( msg ) {
6757
+ find.error = function( msg ) {
6998
6758
  throw new Error( "Syntax error, unrecognized expression: " + msg );
6999
6759
  };
7000
6760
 
@@ -7002,16 +6762,20 @@ Sizzle.error = function( msg ) {
7002
6762
  * Document sorting and removing duplicates
7003
6763
  * @param {ArrayLike} results
7004
6764
  */
7005
- Sizzle.uniqueSort = function( results ) {
6765
+ jQuery.uniqueSort = function( results ) {
7006
6766
  var elem,
7007
6767
  duplicates = [],
7008
6768
  j = 0,
7009
6769
  i = 0;
7010
6770
 
7011
6771
  // Unless we *know* we can detect duplicates, assume their presence
7012
- hasDuplicate = !support.detectDuplicates;
7013
- sortInput = !support.sortStable && results.slice( 0 );
7014
- results.sort( sortOrder );
6772
+ //
6773
+ // Support: Android <=4.0+
6774
+ // Testing for detecting duplicates is unpredictable so instead assume we can't
6775
+ // depend on duplicate detection in all browsers without a stable sort.
6776
+ hasDuplicate = !support.sortStable;
6777
+ sortInput = !support.sortStable && slice.call( results, 0 );
6778
+ sort.call( results, sortOrder );
7015
6779
 
7016
6780
  if ( hasDuplicate ) {
7017
6781
  while ( ( elem = results[ i++ ] ) ) {
@@ -7020,7 +6784,7 @@ Sizzle.uniqueSort = function( results ) {
7020
6784
  }
7021
6785
  }
7022
6786
  while ( j-- ) {
7023
- results.splice( duplicates[ j ], 1 );
6787
+ splice.call( results, duplicates[ j ], 1 );
7024
6788
  }
7025
6789
  }
7026
6790
 
@@ -7031,47 +6795,11 @@ Sizzle.uniqueSort = function( results ) {
7031
6795
  return results;
7032
6796
  };
7033
6797
 
7034
- /**
7035
- * Utility function for retrieving the text value of an array of DOM nodes
7036
- * @param {Array|Element} elem
7037
- */
7038
- getText = Sizzle.getText = function( elem ) {
7039
- var node,
7040
- ret = "",
7041
- i = 0,
7042
- nodeType = elem.nodeType;
7043
-
7044
- if ( !nodeType ) {
7045
-
7046
- // If no nodeType, this is expected to be an array
7047
- while ( ( node = elem[ i++ ] ) ) {
7048
-
7049
- // Do not traverse comment nodes
7050
- ret += getText( node );
7051
- }
7052
- } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
7053
-
7054
- // Use textContent for elements
7055
- // innerText usage removed for consistency of new lines (jQuery #11153)
7056
- if ( typeof elem.textContent === "string" ) {
7057
- return elem.textContent;
7058
- } else {
7059
-
7060
- // Traverse its children
7061
- for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
7062
- ret += getText( elem );
7063
- }
7064
- }
7065
- } else if ( nodeType === 3 || nodeType === 4 ) {
7066
- return elem.nodeValue;
7067
- }
7068
-
7069
- // Do not include comment or processing instruction nodes
7070
-
7071
- return ret;
6798
+ jQuery.fn.uniqueSort = function() {
6799
+ return this.pushStack( jQuery.uniqueSort( slice.apply( this ) ) );
7072
6800
  };
7073
6801
 
7074
- Expr = Sizzle.selectors = {
6802
+ Expr = jQuery.expr = {
7075
6803
 
7076
6804
  // Can be adjusted by the user
7077
6805
  cacheLength: 50,
@@ -7092,12 +6820,12 @@ Expr = Sizzle.selectors = {
7092
6820
  },
7093
6821
 
7094
6822
  preFilter: {
7095
- "ATTR": function( match ) {
6823
+ ATTR: function( match ) {
7096
6824
  match[ 1 ] = match[ 1 ].replace( runescape, funescape );
7097
6825
 
7098
6826
  // Move the given value to match[3] whether quoted or unquoted
7099
- match[ 3 ] = ( match[ 3 ] || match[ 4 ] ||
7100
- match[ 5 ] || "" ).replace( runescape, funescape );
6827
+ match[ 3 ] = ( match[ 3 ] || match[ 4 ] || match[ 5 ] || "" )
6828
+ .replace( runescape, funescape );
7101
6829
 
7102
6830
  if ( match[ 2 ] === "~=" ) {
7103
6831
  match[ 3 ] = " " + match[ 3 ] + " ";
@@ -7106,7 +6834,7 @@ Expr = Sizzle.selectors = {
7106
6834
  return match.slice( 0, 4 );
7107
6835
  },
7108
6836
 
7109
- "CHILD": function( match ) {
6837
+ CHILD: function( match ) {
7110
6838
 
7111
6839
  /* matches from matchExpr["CHILD"]
7112
6840
  1 type (only|nth|...)
@@ -7124,29 +6852,30 @@ Expr = Sizzle.selectors = {
7124
6852
 
7125
6853
  // nth-* requires argument
7126
6854
  if ( !match[ 3 ] ) {
7127
- Sizzle.error( match[ 0 ] );
6855
+ find.error( match[ 0 ] );
7128
6856
  }
7129
6857
 
7130
6858
  // numeric x and y parameters for Expr.filter.CHILD
7131
6859
  // remember that false/true cast respectively to 0/1
7132
6860
  match[ 4 ] = +( match[ 4 ] ?
7133
6861
  match[ 5 ] + ( match[ 6 ] || 1 ) :
7134
- 2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" ) );
6862
+ 2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" )
6863
+ );
7135
6864
  match[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === "odd" );
7136
6865
 
7137
- // other types prohibit arguments
6866
+ // other types prohibit arguments
7138
6867
  } else if ( match[ 3 ] ) {
7139
- Sizzle.error( match[ 0 ] );
6868
+ find.error( match[ 0 ] );
7140
6869
  }
7141
6870
 
7142
6871
  return match;
7143
6872
  },
7144
6873
 
7145
- "PSEUDO": function( match ) {
6874
+ PSEUDO: function( match ) {
7146
6875
  var excess,
7147
6876
  unquoted = !match[ 6 ] && match[ 2 ];
7148
6877
 
7149
- if ( matchExpr[ "CHILD" ].test( match[ 0 ] ) ) {
6878
+ if ( matchExpr.CHILD.test( match[ 0 ] ) ) {
7150
6879
  return null;
7151
6880
  }
7152
6881
 
@@ -7175,36 +6904,36 @@ Expr = Sizzle.selectors = {
7175
6904
 
7176
6905
  filter: {
7177
6906
 
7178
- "TAG": function( nodeNameSelector ) {
7179
- var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
6907
+ TAG: function( nodeNameSelector ) {
6908
+ var expectedNodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
7180
6909
  return nodeNameSelector === "*" ?
7181
6910
  function() {
7182
6911
  return true;
7183
6912
  } :
7184
6913
  function( elem ) {
7185
- return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
6914
+ return nodeName( elem, expectedNodeName );
7186
6915
  };
7187
6916
  },
7188
6917
 
7189
- "CLASS": function( className ) {
6918
+ CLASS: function( className ) {
7190
6919
  var pattern = classCache[ className + " " ];
7191
6920
 
7192
6921
  return pattern ||
7193
- ( pattern = new RegExp( "(^|" + whitespace +
7194
- ")" + className + "(" + whitespace + "|$)" ) ) && classCache(
7195
- className, function( elem ) {
7196
- return pattern.test(
7197
- typeof elem.className === "string" && elem.className ||
7198
- typeof elem.getAttribute !== "undefined" &&
7199
- elem.getAttribute( "class" ) ||
7200
- ""
7201
- );
6922
+ ( pattern = new RegExp( "(^|" + whitespace + ")" + className +
6923
+ "(" + whitespace + "|$)" ) ) &&
6924
+ classCache( className, function( elem ) {
6925
+ return pattern.test(
6926
+ typeof elem.className === "string" && elem.className ||
6927
+ typeof elem.getAttribute !== "undefined" &&
6928
+ elem.getAttribute( "class" ) ||
6929
+ ""
6930
+ );
7202
6931
  } );
7203
6932
  },
7204
6933
 
7205
- "ATTR": function( name, operator, check ) {
6934
+ ATTR: function( name, operator, check ) {
7206
6935
  return function( elem ) {
7207
- var result = Sizzle.attr( elem, name );
6936
+ var result = find.attr( elem, name );
7208
6937
 
7209
6938
  if ( result == null ) {
7210
6939
  return operator === "!=";
@@ -7215,22 +6944,34 @@ Expr = Sizzle.selectors = {
7215
6944
 
7216
6945
  result += "";
7217
6946
 
7218
- /* eslint-disable max-len */
7219
-
7220
- return operator === "=" ? result === check :
7221
- operator === "!=" ? result !== check :
7222
- operator === "^=" ? check && result.indexOf( check ) === 0 :
7223
- operator === "*=" ? check && result.indexOf( check ) > -1 :
7224
- operator === "$=" ? check && result.slice( -check.length ) === check :
7225
- operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
7226
- operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
7227
- false;
7228
- /* eslint-enable max-len */
6947
+ if ( operator === "=" ) {
6948
+ return result === check;
6949
+ }
6950
+ if ( operator === "!=" ) {
6951
+ return result !== check;
6952
+ }
6953
+ if ( operator === "^=" ) {
6954
+ return check && result.indexOf( check ) === 0;
6955
+ }
6956
+ if ( operator === "*=" ) {
6957
+ return check && result.indexOf( check ) > -1;
6958
+ }
6959
+ if ( operator === "$=" ) {
6960
+ return check && result.slice( -check.length ) === check;
6961
+ }
6962
+ if ( operator === "~=" ) {
6963
+ return ( " " + result.replace( rwhitespace, " " ) + " " )
6964
+ .indexOf( check ) > -1;
6965
+ }
6966
+ if ( operator === "|=" ) {
6967
+ return result === check || result.slice( 0, check.length + 1 ) === check + "-";
6968
+ }
7229
6969
 
6970
+ return false;
7230
6971
  };
7231
6972
  },
7232
6973
 
7233
- "CHILD": function( type, what, _argument, first, last ) {
6974
+ CHILD: function( type, what, _argument, first, last ) {
7234
6975
  var simple = type.slice( 0, 3 ) !== "nth",
7235
6976
  forward = type.slice( -4 ) !== "last",
7236
6977
  ofType = what === "of-type";
@@ -7243,7 +6984,7 @@ Expr = Sizzle.selectors = {
7243
6984
  } :
7244
6985
 
7245
6986
  function( elem, _context, xml ) {
7246
- var cache, uniqueCache, outerCache, node, nodeIndex, start,
6987
+ var cache, outerCache, node, nodeIndex, start,
7247
6988
  dir = simple !== forward ? "nextSibling" : "previousSibling",
7248
6989
  parent = elem.parentNode,
7249
6990
  name = ofType && elem.nodeName.toLowerCase(),
@@ -7258,7 +6999,7 @@ Expr = Sizzle.selectors = {
7258
6999
  node = elem;
7259
7000
  while ( ( node = node[ dir ] ) ) {
7260
7001
  if ( ofType ?
7261
- node.nodeName.toLowerCase() === name :
7002
+ nodeName( node, name ) :
7262
7003
  node.nodeType === 1 ) {
7263
7004
 
7264
7005
  return false;
@@ -7277,17 +7018,8 @@ Expr = Sizzle.selectors = {
7277
7018
  if ( forward && useCache ) {
7278
7019
 
7279
7020
  // Seek `elem` from a previously-cached index
7280
-
7281
- // ...in a gzip-friendly way
7282
- node = parent;
7283
- outerCache = node[ expando ] || ( node[ expando ] = {} );
7284
-
7285
- // Support: IE <9 only
7286
- // Defend against cloned attroperties (jQuery gh-1709)
7287
- uniqueCache = outerCache[ node.uniqueID ] ||
7288
- ( outerCache[ node.uniqueID ] = {} );
7289
-
7290
- cache = uniqueCache[ type ] || [];
7021
+ outerCache = parent[ expando ] || ( parent[ expando ] = {} );
7022
+ cache = outerCache[ type ] || [];
7291
7023
  nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
7292
7024
  diff = nodeIndex && cache[ 2 ];
7293
7025
  node = nodeIndex && parent.childNodes[ nodeIndex ];
@@ -7299,7 +7031,7 @@ Expr = Sizzle.selectors = {
7299
7031
 
7300
7032
  // When found, cache indexes on `parent` and break
7301
7033
  if ( node.nodeType === 1 && ++diff && node === elem ) {
7302
- uniqueCache[ type ] = [ dirruns, nodeIndex, diff ];
7034
+ outerCache[ type ] = [ dirruns, nodeIndex, diff ];
7303
7035
  break;
7304
7036
  }
7305
7037
  }
@@ -7308,17 +7040,8 @@ Expr = Sizzle.selectors = {
7308
7040
 
7309
7041
  // Use previously-cached element index if available
7310
7042
  if ( useCache ) {
7311
-
7312
- // ...in a gzip-friendly way
7313
- node = elem;
7314
- outerCache = node[ expando ] || ( node[ expando ] = {} );
7315
-
7316
- // Support: IE <9 only
7317
- // Defend against cloned attroperties (jQuery gh-1709)
7318
- uniqueCache = outerCache[ node.uniqueID ] ||
7319
- ( outerCache[ node.uniqueID ] = {} );
7320
-
7321
- cache = uniqueCache[ type ] || [];
7043
+ outerCache = elem[ expando ] || ( elem[ expando ] = {} );
7044
+ cache = outerCache[ type ] || [];
7322
7045
  nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
7323
7046
  diff = nodeIndex;
7324
7047
  }
@@ -7332,7 +7055,7 @@ Expr = Sizzle.selectors = {
7332
7055
  ( diff = nodeIndex = 0 ) || start.pop() ) ) {
7333
7056
 
7334
7057
  if ( ( ofType ?
7335
- node.nodeName.toLowerCase() === name :
7058
+ nodeName( node, name ) :
7336
7059
  node.nodeType === 1 ) &&
7337
7060
  ++diff ) {
7338
7061
 
@@ -7340,13 +7063,7 @@ Expr = Sizzle.selectors = {
7340
7063
  if ( useCache ) {
7341
7064
  outerCache = node[ expando ] ||
7342
7065
  ( node[ expando ] = {} );
7343
-
7344
- // Support: IE <9 only
7345
- // Defend against cloned attroperties (jQuery gh-1709)
7346
- uniqueCache = outerCache[ node.uniqueID ] ||
7347
- ( outerCache[ node.uniqueID ] = {} );
7348
-
7349
- uniqueCache[ type ] = [ dirruns, diff ];
7066
+ outerCache[ type ] = [ dirruns, diff ];
7350
7067
  }
7351
7068
 
7352
7069
  if ( node === elem ) {
@@ -7364,19 +7081,19 @@ Expr = Sizzle.selectors = {
7364
7081
  };
7365
7082
  },
7366
7083
 
7367
- "PSEUDO": function( pseudo, argument ) {
7084
+ PSEUDO: function( pseudo, argument ) {
7368
7085
 
7369
7086
  // pseudo-class names are case-insensitive
7370
- // http://www.w3.org/TR/selectors/#pseudo-classes
7087
+ // https://www.w3.org/TR/selectors/#pseudo-classes
7371
7088
  // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
7372
7089
  // Remember that setFilters inherits from pseudos
7373
7090
  var args,
7374
7091
  fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
7375
- Sizzle.error( "unsupported pseudo: " + pseudo );
7092
+ find.error( "unsupported pseudo: " + pseudo );
7376
7093
 
7377
7094
  // The user may use createPseudo to indicate that
7378
7095
  // arguments are needed to create the filter function
7379
- // just as Sizzle does
7096
+ // just as jQuery does
7380
7097
  if ( fn[ expando ] ) {
7381
7098
  return fn( argument );
7382
7099
  }
@@ -7390,7 +7107,7 @@ Expr = Sizzle.selectors = {
7390
7107
  matched = fn( seed, argument ),
7391
7108
  i = matched.length;
7392
7109
  while ( i-- ) {
7393
- idx = indexOf( seed, matched[ i ] );
7110
+ idx = indexOf.call( seed, matched[ i ] );
7394
7111
  seed[ idx ] = !( matches[ idx ] = matched[ i ] );
7395
7112
  }
7396
7113
  } ) :
@@ -7406,14 +7123,14 @@ Expr = Sizzle.selectors = {
7406
7123
  pseudos: {
7407
7124
 
7408
7125
  // Potentially complex pseudos
7409
- "not": markFunction( function( selector ) {
7126
+ not: markFunction( function( selector ) {
7410
7127
 
7411
7128
  // Trim the selector passed to compile
7412
7129
  // to avoid treating leading and trailing
7413
7130
  // spaces as combinators
7414
7131
  var input = [],
7415
7132
  results = [],
7416
- matcher = compile( selector.replace( rtrim, "$1" ) );
7133
+ matcher = compile( selector.replace( rtrimCSS, "$1" ) );
7417
7134
 
7418
7135
  return matcher[ expando ] ?
7419
7136
  markFunction( function( seed, matches, _context, xml ) {
@@ -7432,22 +7149,23 @@ Expr = Sizzle.selectors = {
7432
7149
  input[ 0 ] = elem;
7433
7150
  matcher( input, null, xml, results );
7434
7151
 
7435
- // Don't keep the element (issue #299)
7152
+ // Don't keep the element
7153
+ // (see https://github.com/jquery/sizzle/issues/299)
7436
7154
  input[ 0 ] = null;
7437
7155
  return !results.pop();
7438
7156
  };
7439
7157
  } ),
7440
7158
 
7441
- "has": markFunction( function( selector ) {
7159
+ has: markFunction( function( selector ) {
7442
7160
  return function( elem ) {
7443
- return Sizzle( selector, elem ).length > 0;
7161
+ return find( selector, elem ).length > 0;
7444
7162
  };
7445
7163
  } ),
7446
7164
 
7447
- "contains": markFunction( function( text ) {
7165
+ contains: markFunction( function( text ) {
7448
7166
  text = text.replace( runescape, funescape );
7449
7167
  return function( elem ) {
7450
- return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;
7168
+ return ( elem.textContent || jQuery.text( elem ) ).indexOf( text ) > -1;
7451
7169
  };
7452
7170
  } ),
7453
7171
 
@@ -7457,12 +7175,12 @@ Expr = Sizzle.selectors = {
7457
7175
  // or beginning with the identifier C immediately followed by "-".
7458
7176
  // The matching of C against the element's language value is performed case-insensitively.
7459
7177
  // The identifier C does not have to be a valid language name."
7460
- // http://www.w3.org/TR/selectors/#lang-pseudo
7461
- "lang": markFunction( function( lang ) {
7178
+ // https://www.w3.org/TR/selectors/#lang-pseudo
7179
+ lang: markFunction( function( lang ) {
7462
7180
 
7463
7181
  // lang value must be a valid identifier
7464
7182
  if ( !ridentifier.test( lang || "" ) ) {
7465
- Sizzle.error( "unsupported lang: " + lang );
7183
+ find.error( "unsupported lang: " + lang );
7466
7184
  }
7467
7185
  lang = lang.replace( runescape, funescape ).toLowerCase();
7468
7186
  return function( elem ) {
@@ -7481,43 +7199,42 @@ Expr = Sizzle.selectors = {
7481
7199
  } ),
7482
7200
 
7483
7201
  // Miscellaneous
7484
- "target": function( elem ) {
7202
+ target: function( elem ) {
7485
7203
  var hash = window.location && window.location.hash;
7486
7204
  return hash && hash.slice( 1 ) === elem.id;
7487
7205
  },
7488
7206
 
7489
- "root": function( elem ) {
7490
- return elem === docElem;
7207
+ root: function( elem ) {
7208
+ return elem === documentElement;
7491
7209
  },
7492
7210
 
7493
- "focus": function( elem ) {
7494
- return elem === document.activeElement &&
7495
- ( !document.hasFocus || document.hasFocus() ) &&
7211
+ focus: function( elem ) {
7212
+ return elem === safeActiveElement() &&
7213
+ document.hasFocus() &&
7496
7214
  !!( elem.type || elem.href || ~elem.tabIndex );
7497
7215
  },
7498
7216
 
7499
7217
  // Boolean properties
7500
- "enabled": createDisabledPseudo( false ),
7501
- "disabled": createDisabledPseudo( true ),
7218
+ enabled: createDisabledPseudo( false ),
7219
+ disabled: createDisabledPseudo( true ),
7502
7220
 
7503
- "checked": function( elem ) {
7221
+ checked: function( elem ) {
7504
7222
 
7505
7223
  // In CSS3, :checked should return both checked and selected elements
7506
- // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
7507
- var nodeName = elem.nodeName.toLowerCase();
7508
- return ( nodeName === "input" && !!elem.checked ) ||
7509
- ( nodeName === "option" && !!elem.selected );
7224
+ // https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
7225
+ return ( nodeName( elem, "input" ) && !!elem.checked ) ||
7226
+ ( nodeName( elem, "option" ) && !!elem.selected );
7510
7227
  },
7511
7228
 
7512
- "selected": function( elem ) {
7229
+ selected: function( elem ) {
7513
7230
 
7514
7231
  return elem.selected === true;
7515
7232
  },
7516
7233
 
7517
7234
  // Contents
7518
- "empty": function( elem ) {
7235
+ empty: function( elem ) {
7519
7236
 
7520
- // http://www.w3.org/TR/selectors/#empty-pseudo
7237
+ // https://www.w3.org/TR/selectors/#empty-pseudo
7521
7238
  // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
7522
7239
  // but not by others (comment: 8; processing instruction: 7; etc.)
7523
7240
  // nodeType < 6 works because attributes (2) do not appear as children
@@ -7529,49 +7246,49 @@ Expr = Sizzle.selectors = {
7529
7246
  return true;
7530
7247
  },
7531
7248
 
7532
- "parent": function( elem ) {
7533
- return !Expr.pseudos[ "empty" ]( elem );
7249
+ parent: function( elem ) {
7250
+ return !Expr.pseudos.empty( elem );
7534
7251
  },
7535
7252
 
7536
7253
  // Element/input types
7537
- "header": function( elem ) {
7254
+ header: function( elem ) {
7538
7255
  return rheader.test( elem.nodeName );
7539
7256
  },
7540
7257
 
7541
- "input": function( elem ) {
7258
+ input: function( elem ) {
7542
7259
  return rinputs.test( elem.nodeName );
7543
7260
  },
7544
7261
 
7545
- "button": function( elem ) {
7546
- var name = elem.nodeName.toLowerCase();
7547
- return name === "input" && elem.type === "button" || name === "button";
7262
+ button: function( elem ) {
7263
+ return nodeName( elem, "input" ) && elem.type === "button" ||
7264
+ nodeName( elem, "button" );
7548
7265
  },
7549
7266
 
7550
- "text": function( elem ) {
7267
+ text: function( elem ) {
7551
7268
  var attr;
7552
- return elem.nodeName.toLowerCase() === "input" &&
7553
- elem.type === "text" &&
7269
+ return nodeName( elem, "input" ) && elem.type === "text" &&
7554
7270
 
7555
7271
  // Support: IE <10 only
7556
- // New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
7272
+ // New HTML5 attribute values (e.g., "search") appear
7273
+ // with elem.type === "text"
7557
7274
  ( ( attr = elem.getAttribute( "type" ) ) == null ||
7558
7275
  attr.toLowerCase() === "text" );
7559
7276
  },
7560
7277
 
7561
7278
  // Position-in-collection
7562
- "first": createPositionalPseudo( function() {
7279
+ first: createPositionalPseudo( function() {
7563
7280
  return [ 0 ];
7564
7281
  } ),
7565
7282
 
7566
- "last": createPositionalPseudo( function( _matchIndexes, length ) {
7283
+ last: createPositionalPseudo( function( _matchIndexes, length ) {
7567
7284
  return [ length - 1 ];
7568
7285
  } ),
7569
7286
 
7570
- "eq": createPositionalPseudo( function( _matchIndexes, length, argument ) {
7287
+ eq: createPositionalPseudo( function( _matchIndexes, length, argument ) {
7571
7288
  return [ argument < 0 ? argument + length : argument ];
7572
7289
  } ),
7573
7290
 
7574
- "even": createPositionalPseudo( function( matchIndexes, length ) {
7291
+ even: createPositionalPseudo( function( matchIndexes, length ) {
7575
7292
  var i = 0;
7576
7293
  for ( ; i < length; i += 2 ) {
7577
7294
  matchIndexes.push( i );
@@ -7579,7 +7296,7 @@ Expr = Sizzle.selectors = {
7579
7296
  return matchIndexes;
7580
7297
  } ),
7581
7298
 
7582
- "odd": createPositionalPseudo( function( matchIndexes, length ) {
7299
+ odd: createPositionalPseudo( function( matchIndexes, length ) {
7583
7300
  var i = 1;
7584
7301
  for ( ; i < length; i += 2 ) {
7585
7302
  matchIndexes.push( i );
@@ -7587,19 +7304,24 @@ Expr = Sizzle.selectors = {
7587
7304
  return matchIndexes;
7588
7305
  } ),
7589
7306
 
7590
- "lt": createPositionalPseudo( function( matchIndexes, length, argument ) {
7591
- var i = argument < 0 ?
7592
- argument + length :
7593
- argument > length ?
7594
- length :
7595
- argument;
7307
+ lt: createPositionalPseudo( function( matchIndexes, length, argument ) {
7308
+ var i;
7309
+
7310
+ if ( argument < 0 ) {
7311
+ i = argument + length;
7312
+ } else if ( argument > length ) {
7313
+ i = length;
7314
+ } else {
7315
+ i = argument;
7316
+ }
7317
+
7596
7318
  for ( ; --i >= 0; ) {
7597
7319
  matchIndexes.push( i );
7598
7320
  }
7599
7321
  return matchIndexes;
7600
7322
  } ),
7601
7323
 
7602
- "gt": createPositionalPseudo( function( matchIndexes, length, argument ) {
7324
+ gt: createPositionalPseudo( function( matchIndexes, length, argument ) {
7603
7325
  var i = argument < 0 ? argument + length : argument;
7604
7326
  for ( ; ++i < length; ) {
7605
7327
  matchIndexes.push( i );
@@ -7609,7 +7331,7 @@ Expr = Sizzle.selectors = {
7609
7331
  }
7610
7332
  };
7611
7333
 
7612
- Expr.pseudos[ "nth" ] = Expr.pseudos[ "eq" ];
7334
+ Expr.pseudos.nth = Expr.pseudos.eq;
7613
7335
 
7614
7336
  // Add button/input type pseudos
7615
7337
  for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
@@ -7624,7 +7346,7 @@ function setFilters() {}
7624
7346
  setFilters.prototype = Expr.filters = Expr.pseudos;
7625
7347
  Expr.setFilters = new setFilters();
7626
7348
 
7627
- tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
7349
+ function tokenize( selector, parseOnly ) {
7628
7350
  var matched, match, tokens, type,
7629
7351
  soFar, groups, preFilters,
7630
7352
  cached = tokenCache[ selector + " " ];
@@ -7658,7 +7380,7 @@ tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
7658
7380
  value: matched,
7659
7381
 
7660
7382
  // Cast descendant combinators to space
7661
- type: match[ 0 ].replace( rtrim, " " )
7383
+ type: match[ 0 ].replace( rtrimCSS, " " )
7662
7384
  } );
7663
7385
  soFar = soFar.slice( matched.length );
7664
7386
  }
@@ -7685,14 +7407,16 @@ tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
7685
7407
  // Return the length of the invalid excess
7686
7408
  // if we're just parsing
7687
7409
  // Otherwise, throw an error or return tokens
7688
- return parseOnly ?
7689
- soFar.length :
7690
- soFar ?
7691
- Sizzle.error( selector ) :
7410
+ if ( parseOnly ) {
7411
+ return soFar.length;
7412
+ }
7692
7413
 
7693
- // Cache the tokens
7694
- tokenCache( selector, groups ).slice( 0 );
7695
- };
7414
+ return soFar ?
7415
+ find.error( selector ) :
7416
+
7417
+ // Cache the tokens
7418
+ tokenCache( selector, groups ).slice( 0 );
7419
+ }
7696
7420
 
7697
7421
  function toSelector( tokens ) {
7698
7422
  var i = 0,
@@ -7725,7 +7449,7 @@ function addCombinator( matcher, combinator, base ) {
7725
7449
 
7726
7450
  // Check against all ancestor/preceding elements
7727
7451
  function( elem, context, xml ) {
7728
- var oldCache, uniqueCache, outerCache,
7452
+ var oldCache, outerCache,
7729
7453
  newCache = [ dirruns, doneName ];
7730
7454
 
7731
7455
  // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
@@ -7742,14 +7466,9 @@ function addCombinator( matcher, combinator, base ) {
7742
7466
  if ( elem.nodeType === 1 || checkNonElements ) {
7743
7467
  outerCache = elem[ expando ] || ( elem[ expando ] = {} );
7744
7468
 
7745
- // Support: IE <9 only
7746
- // Defend against cloned attroperties (jQuery gh-1709)
7747
- uniqueCache = outerCache[ elem.uniqueID ] ||
7748
- ( outerCache[ elem.uniqueID ] = {} );
7749
-
7750
- if ( skip && skip === elem.nodeName.toLowerCase() ) {
7469
+ if ( skip && nodeName( elem, skip ) ) {
7751
7470
  elem = elem[ dir ] || elem;
7752
- } else if ( ( oldCache = uniqueCache[ key ] ) &&
7471
+ } else if ( ( oldCache = outerCache[ key ] ) &&
7753
7472
  oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
7754
7473
 
7755
7474
  // Assign to newCache so results back-propagate to previous elements
@@ -7757,7 +7476,7 @@ function addCombinator( matcher, combinator, base ) {
7757
7476
  } else {
7758
7477
 
7759
7478
  // Reuse newcache so results back-propagate to previous elements
7760
- uniqueCache[ key ] = newCache;
7479
+ outerCache[ key ] = newCache;
7761
7480
 
7762
7481
  // A match means we're done; a fail means we have to keep checking
7763
7482
  if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {
@@ -7789,7 +7508,7 @@ function multipleContexts( selector, contexts, results ) {
7789
7508
  var i = 0,
7790
7509
  len = contexts.length;
7791
7510
  for ( ; i < len; i++ ) {
7792
- Sizzle( selector, contexts[ i ], results );
7511
+ find( selector, contexts[ i ], results );
7793
7512
  }
7794
7513
  return results;
7795
7514
  }
@@ -7823,38 +7542,37 @@ function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postS
7823
7542
  postFinder = setMatcher( postFinder, postSelector );
7824
7543
  }
7825
7544
  return markFunction( function( seed, results, context, xml ) {
7826
- var temp, i, elem,
7545
+ var temp, i, elem, matcherOut,
7827
7546
  preMap = [],
7828
7547
  postMap = [],
7829
7548
  preexisting = results.length,
7830
7549
 
7831
7550
  // Get initial elements from seed or context
7832
- elems = seed || multipleContexts(
7833
- selector || "*",
7834
- context.nodeType ? [ context ] : context,
7835
- []
7836
- ),
7551
+ elems = seed ||
7552
+ multipleContexts( selector || "*",
7553
+ context.nodeType ? [ context ] : context, [] ),
7837
7554
 
7838
7555
  // Prefilter to get matcher input, preserving a map for seed-results synchronization
7839
7556
  matcherIn = preFilter && ( seed || !selector ) ?
7840
7557
  condense( elems, preMap, preFilter, context, xml ) :
7841
- elems,
7558
+ elems;
7842
7559
 
7843
- matcherOut = matcher ?
7560
+ if ( matcher ) {
7844
7561
 
7845
- // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
7846
- postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
7562
+ // If we have a postFinder, or filtered seed, or non-seed postFilter
7563
+ // or preexisting results,
7564
+ matcherOut = postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
7847
7565
 
7848
- // ...intermediate processing is necessary
7849
- [] :
7566
+ // ...intermediate processing is necessary
7567
+ [] :
7850
7568
 
7851
- // ...otherwise use results directly
7852
- results :
7853
- matcherIn;
7569
+ // ...otherwise use results directly
7570
+ results;
7854
7571
 
7855
- // Find primary matches
7856
- if ( matcher ) {
7572
+ // Find primary matches
7857
7573
  matcher( matcherIn, matcherOut, context, xml );
7574
+ } else {
7575
+ matcherOut = matcherIn;
7858
7576
  }
7859
7577
 
7860
7578
  // Apply postFilter
@@ -7892,7 +7610,7 @@ function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postS
7892
7610
  i = matcherOut.length;
7893
7611
  while ( i-- ) {
7894
7612
  if ( ( elem = matcherOut[ i ] ) &&
7895
- ( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) {
7613
+ ( temp = postFinder ? indexOf.call( seed, elem ) : preMap[ i ] ) > -1 ) {
7896
7614
 
7897
7615
  seed[ temp ] = !( results[ temp ] = elem );
7898
7616
  }
@@ -7927,15 +7645,21 @@ function matcherFromTokens( tokens ) {
7927
7645
  return elem === checkContext;
7928
7646
  }, implicitRelative, true ),
7929
7647
  matchAnyContext = addCombinator( function( elem ) {
7930
- return indexOf( checkContext, elem ) > -1;
7648
+ return indexOf.call( checkContext, elem ) > -1;
7931
7649
  }, implicitRelative, true ),
7932
7650
  matchers = [ function( elem, context, xml ) {
7933
- var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
7651
+
7652
+ // Support: IE 11+, Edge 17 - 18+
7653
+ // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
7654
+ // two documents; shallow comparisons work.
7655
+ // eslint-disable-next-line eqeqeq
7656
+ var ret = ( !leadingRelative && ( xml || context != outermostContext ) ) || (
7934
7657
  ( checkContext = context ).nodeType ?
7935
7658
  matchContext( elem, context, xml ) :
7936
7659
  matchAnyContext( elem, context, xml ) );
7937
7660
 
7938
- // Avoid hanging onto element (issue #299)
7661
+ // Avoid hanging onto element
7662
+ // (see https://github.com/jquery/sizzle/issues/299)
7939
7663
  checkContext = null;
7940
7664
  return ret;
7941
7665
  } ];
@@ -7960,11 +7684,10 @@ function matcherFromTokens( tokens ) {
7960
7684
  i > 1 && elementMatcher( matchers ),
7961
7685
  i > 1 && toSelector(
7962
7686
 
7963
- // If the preceding token was a descendant combinator, insert an implicit any-element `*`
7964
- tokens
7965
- .slice( 0, i - 1 )
7966
- .concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } )
7967
- ).replace( rtrim, "$1" ),
7687
+ // If the preceding token was a descendant combinator, insert an implicit any-element `*`
7688
+ tokens.slice( 0, i - 1 )
7689
+ .concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } )
7690
+ ).replace( rtrimCSS, "$1" ),
7968
7691
  matcher,
7969
7692
  i < j && matcherFromTokens( tokens.slice( i, j ) ),
7970
7693
  j < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),
@@ -7990,7 +7713,7 @@ function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
7990
7713
  contextBackup = outermostContext,
7991
7714
 
7992
7715
  // We must always have either seed elements or outermost context
7993
- elems = seed || byElement && Expr.find[ "TAG" ]( "*", outermost ),
7716
+ elems = seed || byElement && Expr.find.TAG( "*", outermost ),
7994
7717
 
7995
7718
  // Use integer dirruns iff this is the outermost matcher
7996
7719
  dirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),
@@ -8006,8 +7729,9 @@ function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
8006
7729
  }
8007
7730
 
8008
7731
  // Add elements passing elementMatchers directly to results
8009
- // Support: IE<9, Safari
8010
- // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
7732
+ // Support: iOS <=7 - 9 only
7733
+ // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching
7734
+ // elements by id. (see trac-14142)
8011
7735
  for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {
8012
7736
  if ( byElement && elem ) {
8013
7737
  j = 0;
@@ -8022,7 +7746,7 @@ function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
8022
7746
  }
8023
7747
  while ( ( matcher = elementMatchers[ j++ ] ) ) {
8024
7748
  if ( matcher( elem, context || document, xml ) ) {
8025
- results.push( elem );
7749
+ push.call( results, elem );
8026
7750
  break;
8027
7751
  }
8028
7752
  }
@@ -8085,7 +7809,7 @@ function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
8085
7809
  if ( outermost && !seed && setMatched.length > 0 &&
8086
7810
  ( matchedCount + setMatchers.length ) > 1 ) {
8087
7811
 
8088
- Sizzle.uniqueSort( results );
7812
+ jQuery.uniqueSort( results );
8089
7813
  }
8090
7814
  }
8091
7815
 
@@ -8103,7 +7827,7 @@ function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
8103
7827
  superMatcher;
8104
7828
  }
8105
7829
 
8106
- compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
7830
+ function compile( selector, match /* Internal Use Only */ ) {
8107
7831
  var i,
8108
7832
  setMatchers = [],
8109
7833
  elementMatchers = [],
@@ -8126,27 +7850,25 @@ compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
8126
7850
  }
8127
7851
 
8128
7852
  // Cache the compiled function
8129
- cached = compilerCache(
8130
- selector,
8131
- matcherFromGroupMatchers( elementMatchers, setMatchers )
8132
- );
7853
+ cached = compilerCache( selector,
7854
+ matcherFromGroupMatchers( elementMatchers, setMatchers ) );
8133
7855
 
8134
7856
  // Save selector and tokenization
8135
7857
  cached.selector = selector;
8136
7858
  }
8137
7859
  return cached;
8138
- };
7860
+ }
8139
7861
 
8140
7862
  /**
8141
- * A low-level selection function that works with Sizzle's compiled
7863
+ * A low-level selection function that works with jQuery's compiled
8142
7864
  * selector functions
8143
7865
  * @param {String|Function} selector A selector or a pre-compiled
8144
- * selector function built with Sizzle.compile
7866
+ * selector function built with jQuery selector compile
8145
7867
  * @param {Element} context
8146
7868
  * @param {Array} [results]
8147
7869
  * @param {Array} [seed] A set of elements to match against
8148
7870
  */
8149
- select = Sizzle.select = function( selector, context, results, seed ) {
7871
+ function select( selector, context, results, seed ) {
8150
7872
  var i, tokens, token, type, find,
8151
7873
  compiled = typeof selector === "function" && selector,
8152
7874
  match = !seed && tokenize( ( selector = compiled.selector || selector ) );
@@ -8160,10 +7882,12 @@ select = Sizzle.select = function( selector, context, results, seed ) {
8160
7882
  // Reduce context if the leading compound selector is an ID
8161
7883
  tokens = match[ 0 ] = match[ 0 ].slice( 0 );
8162
7884
  if ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === "ID" &&
8163
- context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {
7885
+ context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {
8164
7886
 
8165
- context = ( Expr.find[ "ID" ]( token.matches[ 0 ]
8166
- .replace( runescape, funescape ), context ) || [] )[ 0 ];
7887
+ context = ( Expr.find.ID(
7888
+ token.matches[ 0 ].replace( runescape, funescape ),
7889
+ context
7890
+ ) || [] )[ 0 ];
8167
7891
  if ( !context ) {
8168
7892
  return results;
8169
7893
 
@@ -8176,7 +7900,7 @@ select = Sizzle.select = function( selector, context, results, seed ) {
8176
7900
  }
8177
7901
 
8178
7902
  // Fetch a seed set for right-to-left matching
8179
- i = matchExpr[ "needsContext" ].test( selector ) ? 0 : tokens.length;
7903
+ i = matchExpr.needsContext.test( selector ) ? 0 : tokens.length;
8180
7904
  while ( i-- ) {
8181
7905
  token = tokens[ i ];
8182
7906
 
@@ -8189,8 +7913,8 @@ select = Sizzle.select = function( selector, context, results, seed ) {
8189
7913
  // Search, expanding context for leading sibling combinators
8190
7914
  if ( ( seed = find(
8191
7915
  token.matches[ 0 ].replace( runescape, funescape ),
8192
- rsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) ||
8193
- context
7916
+ rsibling.test( tokens[ 0 ].type ) &&
7917
+ testContext( context.parentNode ) || context
8194
7918
  ) ) ) {
8195
7919
 
8196
7920
  // If seed is empty or no tokens remain, we can return early
@@ -8217,21 +7941,18 @@ select = Sizzle.select = function( selector, context, results, seed ) {
8217
7941
  !context || rsibling.test( selector ) && testContext( context.parentNode ) || context
8218
7942
  );
8219
7943
  return results;
8220
- };
7944
+ }
8221
7945
 
8222
7946
  // One-time assignments
8223
7947
 
7948
+ // Support: Android <=4.0 - 4.1+
8224
7949
  // Sort stability
8225
7950
  support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando;
8226
7951
 
8227
- // Support: Chrome 14-35+
8228
- // Always assume duplicates if they aren't passed to the comparison function
8229
- support.detectDuplicates = !!hasDuplicate;
8230
-
8231
7952
  // Initialize against the default document
8232
7953
  setDocument();
8233
7954
 
8234
- // Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
7955
+ // Support: Android <=4.0 - 4.1+
8235
7956
  // Detached nodes confoundingly follow *each other*
8236
7957
  support.sortDetached = assert( function( el ) {
8237
7958
 
@@ -8239,68 +7960,29 @@ support.sortDetached = assert( function( el ) {
8239
7960
  return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1;
8240
7961
  } );
8241
7962
 
8242
- // Support: IE<8
8243
- // Prevent attribute/property "interpolation"
8244
- // https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
8245
- if ( !assert( function( el ) {
8246
- el.innerHTML = "<a href='#'></a>";
8247
- return el.firstChild.getAttribute( "href" ) === "#";
8248
- } ) ) {
8249
- addHandle( "type|href|height|width", function( elem, name, isXML ) {
8250
- if ( !isXML ) {
8251
- return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
8252
- }
8253
- } );
8254
- }
8255
-
8256
- // Support: IE<9
8257
- // Use defaultValue in place of getAttribute("value")
8258
- if ( !support.attributes || !assert( function( el ) {
8259
- el.innerHTML = "<input/>";
8260
- el.firstChild.setAttribute( "value", "" );
8261
- return el.firstChild.getAttribute( "value" ) === "";
8262
- } ) ) {
8263
- addHandle( "value", function( elem, _name, isXML ) {
8264
- if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
8265
- return elem.defaultValue;
8266
- }
8267
- } );
8268
- }
8269
-
8270
- // Support: IE<9
8271
- // Use getAttributeNode to fetch booleans when getAttribute lies
8272
- if ( !assert( function( el ) {
8273
- return el.getAttribute( "disabled" ) == null;
8274
- } ) ) {
8275
- addHandle( booleans, function( elem, name, isXML ) {
8276
- var val;
8277
- if ( !isXML ) {
8278
- return elem[ name ] === true ? name.toLowerCase() :
8279
- ( val = elem.getAttributeNode( name ) ) && val.specified ?
8280
- val.value :
8281
- null;
8282
- }
8283
- } );
8284
- }
8285
-
8286
- return Sizzle;
8287
-
8288
- } )( window );
8289
-
8290
-
8291
-
8292
- jQuery.find = Sizzle;
8293
- jQuery.expr = Sizzle.selectors;
7963
+ jQuery.find = find;
8294
7964
 
8295
7965
  // Deprecated
8296
7966
  jQuery.expr[ ":" ] = jQuery.expr.pseudos;
8297
- jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
8298
- jQuery.text = Sizzle.getText;
8299
- jQuery.isXMLDoc = Sizzle.isXML;
8300
- jQuery.contains = Sizzle.contains;
8301
- jQuery.escapeSelector = Sizzle.escape;
7967
+ jQuery.unique = jQuery.uniqueSort;
8302
7968
 
7969
+ // These have always been private, but they used to be documented
7970
+ // as part of Sizzle so let's maintain them in the 3.x line
7971
+ // for backwards compatibility purposes.
7972
+ find.compile = compile;
7973
+ find.select = select;
7974
+ find.setDocument = setDocument;
8303
7975
 
7976
+ find.escape = jQuery.escapeSelector;
7977
+ find.getText = jQuery.text;
7978
+ find.isXML = jQuery.isXMLDoc;
7979
+ find.selectors = jQuery.expr;
7980
+ find.support = jQuery.support;
7981
+ find.uniqueSort = jQuery.uniqueSort;
7982
+
7983
+ /* eslint-enable */
7984
+
7985
+ } )();
8304
7986
 
8305
7987
 
8306
7988
  var dir = function( elem, dir, until ) {
@@ -8334,13 +8016,6 @@ var siblings = function( n, elem ) {
8334
8016
 
8335
8017
  var rneedsContext = jQuery.expr.match.needsContext;
8336
8018
 
8337
-
8338
-
8339
- function nodeName( elem, name ) {
8340
-
8341
- return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
8342
-
8343
- }
8344
8019
  var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i );
8345
8020
 
8346
8021
 
@@ -8591,7 +8266,7 @@ jQuery.fn.extend( {
8591
8266
  if ( cur.nodeType < 11 && ( targets ?
8592
8267
  targets.index( cur ) > -1 :
8593
8268
 
8594
- // Don't pass non-elements to Sizzle
8269
+ // Don't pass non-elements to jQuery#find
8595
8270
  cur.nodeType === 1 &&
8596
8271
  jQuery.find.matchesSelector( cur, selectors ) ) ) {
8597
8272
 
@@ -9146,7 +8821,7 @@ jQuery.extend( {
9146
8821
 
9147
8822
  if ( jQuery.Deferred.exceptionHook ) {
9148
8823
  jQuery.Deferred.exceptionHook( e,
9149
- process.stackTrace );
8824
+ process.error );
9150
8825
  }
9151
8826
 
9152
8827
  // Support: Promises/A+ section 2.3.3.3.4.1
@@ -9174,10 +8849,17 @@ jQuery.extend( {
9174
8849
  process();
9175
8850
  } else {
9176
8851
 
9177
- // Call an optional hook to record the stack, in case of exception
8852
+ // Call an optional hook to record the error, in case of exception
9178
8853
  // since it's otherwise lost when execution goes async
9179
- if ( jQuery.Deferred.getStackHook ) {
9180
- process.stackTrace = jQuery.Deferred.getStackHook();
8854
+ if ( jQuery.Deferred.getErrorHook ) {
8855
+ process.error = jQuery.Deferred.getErrorHook();
8856
+
8857
+ // The deprecated alias of the above. While the name suggests
8858
+ // returning the stack, not an error instance, jQuery just passes
8859
+ // it directly to `console.warn` so both will work; an instance
8860
+ // just better cooperates with source maps.
8861
+ } else if ( jQuery.Deferred.getStackHook ) {
8862
+ process.error = jQuery.Deferred.getStackHook();
9181
8863
  }
9182
8864
  window.setTimeout( process );
9183
8865
  }
@@ -9352,12 +9034,16 @@ jQuery.extend( {
9352
9034
  // warn about them ASAP rather than swallowing them by default.
9353
9035
  var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
9354
9036
 
9355
- jQuery.Deferred.exceptionHook = function( error, stack ) {
9037
+ // If `jQuery.Deferred.getErrorHook` is defined, `asyncError` is an error
9038
+ // captured before the async barrier to get the original error cause
9039
+ // which may otherwise be hidden.
9040
+ jQuery.Deferred.exceptionHook = function( error, asyncError ) {
9356
9041
 
9357
9042
  // Support: IE 8 - 9 only
9358
9043
  // Console exists when dev tools are open, which can happen at any time
9359
9044
  if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {
9360
- window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack );
9045
+ window.console.warn( "jQuery.Deferred exception: " + error.message,
9046
+ error.stack, asyncError );
9361
9047
  }
9362
9048
  };
9363
9049
 
@@ -10413,25 +10099,6 @@ function returnFalse() {
10413
10099
  return false;
10414
10100
  }
10415
10101
 
10416
- // Support: IE <=9 - 11+
10417
- // focus() and blur() are asynchronous, except when they are no-op.
10418
- // So expect focus to be synchronous when the element is already active,
10419
- // and blur to be synchronous when the element is not already active.
10420
- // (focus and blur are always synchronous in other supported browsers,
10421
- // this just defines when we can count on it).
10422
- function expectSync( elem, type ) {
10423
- return ( elem === safeActiveElement() ) === ( type === "focus" );
10424
- }
10425
-
10426
- // Support: IE <=9 only
10427
- // Accessing document.activeElement can throw unexpectedly
10428
- // https://bugs.jquery.com/ticket/13393
10429
- function safeActiveElement() {
10430
- try {
10431
- return document.activeElement;
10432
- } catch ( err ) { }
10433
- }
10434
-
10435
10102
  function on( elem, types, selector, data, fn, one ) {
10436
10103
  var origFn, type;
10437
10104
 
@@ -10869,7 +10536,7 @@ jQuery.event = {
10869
10536
  el.click && nodeName( el, "input" ) ) {
10870
10537
 
10871
10538
  // dataPriv.set( el, "click", ... )
10872
- leverageNative( el, "click", returnTrue );
10539
+ leverageNative( el, "click", true );
10873
10540
  }
10874
10541
 
10875
10542
  // Return false to allow normal processing in the caller
@@ -10920,10 +10587,10 @@ jQuery.event = {
10920
10587
  // synthetic events by interrupting progress until reinvoked in response to
10921
10588
  // *native* events that it fires directly, ensuring that state changes have
10922
10589
  // already occurred before other listeners are invoked.
10923
- function leverageNative( el, type, expectSync ) {
10590
+ function leverageNative( el, type, isSetup ) {
10924
10591
 
10925
- // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add
10926
- if ( !expectSync ) {
10592
+ // Missing `isSetup` indicates a trigger call, which must force setup through jQuery.event.add
10593
+ if ( !isSetup ) {
10927
10594
  if ( dataPriv.get( el, type ) === undefined ) {
10928
10595
  jQuery.event.add( el, type, returnTrue );
10929
10596
  }
@@ -10935,15 +10602,13 @@ function leverageNative( el, type, expectSync ) {
10935
10602
  jQuery.event.add( el, type, {
10936
10603
  namespace: false,
10937
10604
  handler: function( event ) {
10938
- var notAsync, result,
10605
+ var result,
10939
10606
  saved = dataPriv.get( this, type );
10940
10607
 
10941
10608
  if ( ( event.isTrigger & 1 ) && this[ type ] ) {
10942
10609
 
10943
10610
  // Interrupt processing of the outer synthetic .trigger()ed event
10944
- // Saved data should be false in such cases, but might be a leftover capture object
10945
- // from an async native handler (gh-4350)
10946
- if ( !saved.length ) {
10611
+ if ( !saved ) {
10947
10612
 
10948
10613
  // Store arguments for use when handling the inner native event
10949
10614
  // There will always be at least one argument (an event object), so this array
@@ -10952,33 +10617,22 @@ function leverageNative( el, type, expectSync ) {
10952
10617
  dataPriv.set( this, type, saved );
10953
10618
 
10954
10619
  // Trigger the native event and capture its result
10955
- // Support: IE <=9 - 11+
10956
- // focus() and blur() are asynchronous
10957
- notAsync = expectSync( this, type );
10958
10620
  this[ type ]();
10959
10621
  result = dataPriv.get( this, type );
10960
- if ( saved !== result || notAsync ) {
10961
- dataPriv.set( this, type, false );
10962
- } else {
10963
- result = {};
10964
- }
10622
+ dataPriv.set( this, type, false );
10623
+
10965
10624
  if ( saved !== result ) {
10966
10625
 
10967
10626
  // Cancel the outer synthetic event
10968
10627
  event.stopImmediatePropagation();
10969
10628
  event.preventDefault();
10970
10629
 
10971
- // Support: Chrome 86+
10972
- // In Chrome, if an element having a focusout handler is blurred by
10973
- // clicking outside of it, it invokes the handler synchronously. If
10974
- // that handler calls `.remove()` on the element, the data is cleared,
10975
- // leaving `result` undefined. We need to guard against this.
10976
- return result && result.value;
10630
+ return result;
10977
10631
  }
10978
10632
 
10979
10633
  // If this is an inner synthetic event for an event with a bubbling surrogate
10980
- // (focus or blur), assume that the surrogate already propagated from triggering the
10981
- // native event and prevent that from happening again here.
10634
+ // (focus or blur), assume that the surrogate already propagated from triggering
10635
+ // the native event and prevent that from happening again here.
10982
10636
  // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the
10983
10637
  // bubbling surrogate propagates *after* the non-bubbling base), but that seems
10984
10638
  // less bad than duplication.
@@ -10988,22 +10642,25 @@ function leverageNative( el, type, expectSync ) {
10988
10642
 
10989
10643
  // If this is a native event triggered above, everything is now in order
10990
10644
  // Fire an inner synthetic event with the original arguments
10991
- } else if ( saved.length ) {
10645
+ } else if ( saved ) {
10992
10646
 
10993
10647
  // ...and capture the result
10994
- dataPriv.set( this, type, {
10995
- value: jQuery.event.trigger(
10996
-
10997
- // Support: IE <=9 - 11+
10998
- // Extend with the prototype to reset the above stopImmediatePropagation()
10999
- jQuery.extend( saved[ 0 ], jQuery.Event.prototype ),
11000
- saved.slice( 1 ),
11001
- this
11002
- )
11003
- } );
11004
-
11005
- // Abort handling of the native event
11006
- event.stopImmediatePropagation();
10648
+ dataPriv.set( this, type, jQuery.event.trigger(
10649
+ saved[ 0 ],
10650
+ saved.slice( 1 ),
10651
+ this
10652
+ ) );
10653
+
10654
+ // Abort handling of the native event by all jQuery handlers while allowing
10655
+ // native handlers on the same element to run. On target, this is achieved
10656
+ // by stopping immediate propagation just on the jQuery event. However,
10657
+ // the native event is re-wrapped by a jQuery one on each level of the
10658
+ // propagation so the only way to stop it for jQuery is to stop it for
10659
+ // everyone via native `stopPropagation()`. This is not a problem for
10660
+ // focus/blur which don't bubble, but it does also stop click on checkboxes
10661
+ // and radios. We accept this limitation.
10662
+ event.stopPropagation();
10663
+ event.isImmediatePropagationStopped = returnTrue;
11007
10664
  }
11008
10665
  }
11009
10666
  } );
@@ -11142,18 +10799,73 @@ jQuery.each( {
11142
10799
  }, jQuery.event.addProp );
11143
10800
 
11144
10801
  jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) {
10802
+
10803
+ function focusMappedHandler( nativeEvent ) {
10804
+ if ( document.documentMode ) {
10805
+
10806
+ // Support: IE 11+
10807
+ // Attach a single focusin/focusout handler on the document while someone wants
10808
+ // focus/blur. This is because the former are synchronous in IE while the latter
10809
+ // are async. In other browsers, all those handlers are invoked synchronously.
10810
+
10811
+ // `handle` from private data would already wrap the event, but we need
10812
+ // to change the `type` here.
10813
+ var handle = dataPriv.get( this, "handle" ),
10814
+ event = jQuery.event.fix( nativeEvent );
10815
+ event.type = nativeEvent.type === "focusin" ? "focus" : "blur";
10816
+ event.isSimulated = true;
10817
+
10818
+ // First, handle focusin/focusout
10819
+ handle( nativeEvent );
10820
+
10821
+ // ...then, handle focus/blur
10822
+ //
10823
+ // focus/blur don't bubble while focusin/focusout do; simulate the former by only
10824
+ // invoking the handler at the lower level.
10825
+ if ( event.target === event.currentTarget ) {
10826
+
10827
+ // The setup part calls `leverageNative`, which, in turn, calls
10828
+ // `jQuery.event.add`, so event handle will already have been set
10829
+ // by this point.
10830
+ handle( event );
10831
+ }
10832
+ } else {
10833
+
10834
+ // For non-IE browsers, attach a single capturing handler on the document
10835
+ // while someone wants focusin/focusout.
10836
+ jQuery.event.simulate( delegateType, nativeEvent.target,
10837
+ jQuery.event.fix( nativeEvent ) );
10838
+ }
10839
+ }
10840
+
11145
10841
  jQuery.event.special[ type ] = {
11146
10842
 
11147
10843
  // Utilize native event if possible so blur/focus sequence is correct
11148
10844
  setup: function() {
11149
10845
 
10846
+ var attaches;
10847
+
11150
10848
  // Claim the first handler
11151
10849
  // dataPriv.set( this, "focus", ... )
11152
10850
  // dataPriv.set( this, "blur", ... )
11153
- leverageNative( this, type, expectSync );
10851
+ leverageNative( this, type, true );
11154
10852
 
11155
- // Return false to allow normal processing in the caller
11156
- return false;
10853
+ if ( document.documentMode ) {
10854
+
10855
+ // Support: IE 9 - 11+
10856
+ // We use the same native handler for focusin & focus (and focusout & blur)
10857
+ // so we need to coordinate setup & teardown parts between those events.
10858
+ // Use `delegateType` as the key as `type` is already used by `leverageNative`.
10859
+ attaches = dataPriv.get( this, delegateType );
10860
+ if ( !attaches ) {
10861
+ this.addEventListener( delegateType, focusMappedHandler );
10862
+ }
10863
+ dataPriv.set( this, delegateType, ( attaches || 0 ) + 1 );
10864
+ } else {
10865
+
10866
+ // Return false to allow normal processing in the caller
10867
+ return false;
10868
+ }
11157
10869
  },
11158
10870
  trigger: function() {
11159
10871
 
@@ -11164,6 +10876,24 @@ jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateTyp
11164
10876
  return true;
11165
10877
  },
11166
10878
 
10879
+ teardown: function() {
10880
+ var attaches;
10881
+
10882
+ if ( document.documentMode ) {
10883
+ attaches = dataPriv.get( this, delegateType ) - 1;
10884
+ if ( !attaches ) {
10885
+ this.removeEventListener( delegateType, focusMappedHandler );
10886
+ dataPriv.remove( this, delegateType );
10887
+ } else {
10888
+ dataPriv.set( this, delegateType, attaches );
10889
+ }
10890
+ } else {
10891
+
10892
+ // Return false to indicate standard teardown should be applied
10893
+ return false;
10894
+ }
10895
+ },
10896
+
11167
10897
  // Suppress native focus or blur if we're currently inside
11168
10898
  // a leveraged native-event stack
11169
10899
  _default: function( event ) {
@@ -11172,6 +10902,58 @@ jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateTyp
11172
10902
 
11173
10903
  delegateType: delegateType
11174
10904
  };
10905
+
10906
+ // Support: Firefox <=44
10907
+ // Firefox doesn't have focus(in | out) events
10908
+ // Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
10909
+ //
10910
+ // Support: Chrome <=48 - 49, Safari <=9.0 - 9.1
10911
+ // focus(in | out) events fire after focus & blur events,
10912
+ // which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
10913
+ // Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857
10914
+ //
10915
+ // Support: IE 9 - 11+
10916
+ // To preserve relative focusin/focus & focusout/blur event order guaranteed on the 3.x branch,
10917
+ // attach a single handler for both events in IE.
10918
+ jQuery.event.special[ delegateType ] = {
10919
+ setup: function() {
10920
+
10921
+ // Handle: regular nodes (via `this.ownerDocument`), window
10922
+ // (via `this.document`) & document (via `this`).
10923
+ var doc = this.ownerDocument || this.document || this,
10924
+ dataHolder = document.documentMode ? this : doc,
10925
+ attaches = dataPriv.get( dataHolder, delegateType );
10926
+
10927
+ // Support: IE 9 - 11+
10928
+ // We use the same native handler for focusin & focus (and focusout & blur)
10929
+ // so we need to coordinate setup & teardown parts between those events.
10930
+ // Use `delegateType` as the key as `type` is already used by `leverageNative`.
10931
+ if ( !attaches ) {
10932
+ if ( document.documentMode ) {
10933
+ this.addEventListener( delegateType, focusMappedHandler );
10934
+ } else {
10935
+ doc.addEventListener( type, focusMappedHandler, true );
10936
+ }
10937
+ }
10938
+ dataPriv.set( dataHolder, delegateType, ( attaches || 0 ) + 1 );
10939
+ },
10940
+ teardown: function() {
10941
+ var doc = this.ownerDocument || this.document || this,
10942
+ dataHolder = document.documentMode ? this : doc,
10943
+ attaches = dataPriv.get( dataHolder, delegateType ) - 1;
10944
+
10945
+ if ( !attaches ) {
10946
+ if ( document.documentMode ) {
10947
+ this.removeEventListener( delegateType, focusMappedHandler );
10948
+ } else {
10949
+ doc.removeEventListener( type, focusMappedHandler, true );
10950
+ }
10951
+ dataPriv.remove( dataHolder, delegateType );
10952
+ } else {
10953
+ dataPriv.set( dataHolder, delegateType, attaches );
10954
+ }
10955
+ }
10956
+ };
11175
10957
  } );
11176
10958
 
11177
10959
  // Create mouseenter/leave events using mouseover/out and event-time checks
@@ -11474,7 +11256,8 @@ jQuery.extend( {
11474
11256
  if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
11475
11257
  !jQuery.isXMLDoc( elem ) ) {
11476
11258
 
11477
- // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2
11259
+ // We eschew jQuery#find here for performance reasons:
11260
+ // https://jsperf.com/getall-vs-sizzle/2
11478
11261
  destElements = getAll( clone );
11479
11262
  srcElements = getAll( elem );
11480
11263
 
@@ -11750,15 +11533,6 @@ var swap = function( elem, options, callback ) {
11750
11533
 
11751
11534
  var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
11752
11535
 
11753
- var whitespace = "[\\x20\\t\\r\\n\\f]";
11754
-
11755
-
11756
- var rtrimCSS = new RegExp(
11757
- "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$",
11758
- "g"
11759
- );
11760
-
11761
-
11762
11536
 
11763
11537
 
11764
11538
  ( function() {
@@ -12067,7 +11841,8 @@ function setPositiveNumber( _elem, value, subtract ) {
12067
11841
  function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {
12068
11842
  var i = dimension === "width" ? 1 : 0,
12069
11843
  extra = 0,
12070
- delta = 0;
11844
+ delta = 0,
11845
+ marginDelta = 0;
12071
11846
 
12072
11847
  // Adjustment may not be necessary
12073
11848
  if ( box === ( isBorderBox ? "border" : "content" ) ) {
@@ -12077,8 +11852,10 @@ function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computed
12077
11852
  for ( ; i < 4; i += 2 ) {
12078
11853
 
12079
11854
  // Both box models exclude margin
11855
+ // Count margin delta separately to only add it after scroll gutter adjustment.
11856
+ // This is needed to make negative margins work with `outerHeight( true )` (gh-3982).
12080
11857
  if ( box === "margin" ) {
12081
- delta += jQuery.css( elem, box + cssExpand[ i ], true, styles );
11858
+ marginDelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );
12082
11859
  }
12083
11860
 
12084
11861
  // If we get here with a content-box, we're seeking "padding" or "border" or "margin"
@@ -12129,7 +11906,7 @@ function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computed
12129
11906
  ) ) || 0;
12130
11907
  }
12131
11908
 
12132
- return delta;
11909
+ return delta + marginDelta;
12133
11910
  }
12134
11911
 
12135
11912
  function getWidthOrHeight( elem, dimension, extra ) {
@@ -12227,26 +12004,35 @@ jQuery.extend( {
12227
12004
 
12228
12005
  // Don't automatically add "px" to these possibly-unitless properties
12229
12006
  cssNumber: {
12230
- "animationIterationCount": true,
12231
- "columnCount": true,
12232
- "fillOpacity": true,
12233
- "flexGrow": true,
12234
- "flexShrink": true,
12235
- "fontWeight": true,
12236
- "gridArea": true,
12237
- "gridColumn": true,
12238
- "gridColumnEnd": true,
12239
- "gridColumnStart": true,
12240
- "gridRow": true,
12241
- "gridRowEnd": true,
12242
- "gridRowStart": true,
12243
- "lineHeight": true,
12244
- "opacity": true,
12245
- "order": true,
12246
- "orphans": true,
12247
- "widows": true,
12248
- "zIndex": true,
12249
- "zoom": true
12007
+ animationIterationCount: true,
12008
+ aspectRatio: true,
12009
+ borderImageSlice: true,
12010
+ columnCount: true,
12011
+ flexGrow: true,
12012
+ flexShrink: true,
12013
+ fontWeight: true,
12014
+ gridArea: true,
12015
+ gridColumn: true,
12016
+ gridColumnEnd: true,
12017
+ gridColumnStart: true,
12018
+ gridRow: true,
12019
+ gridRowEnd: true,
12020
+ gridRowStart: true,
12021
+ lineHeight: true,
12022
+ opacity: true,
12023
+ order: true,
12024
+ orphans: true,
12025
+ scale: true,
12026
+ widows: true,
12027
+ zIndex: true,
12028
+ zoom: true,
12029
+
12030
+ // SVG-related
12031
+ fillOpacity: true,
12032
+ floodOpacity: true,
12033
+ stopOpacity: true,
12034
+ strokeMiterlimit: true,
12035
+ strokeOpacity: true
12250
12036
  },
12251
12037
 
12252
12038
  // Add in properties whose names you wish to fix before
@@ -13162,7 +12948,31 @@ jQuery.each( [ "radio", "checkbox" ], function() {
13162
12948
  // Return jQuery for attributes-only inclusion
13163
12949
 
13164
12950
 
13165
- support.focusin = "onfocusin" in window;
12951
+ // Cross-browser xml parsing
12952
+ jQuery.parseXML = function( data ) {
12953
+ var xml, parserErrorElem;
12954
+ if ( !data || typeof data !== "string" ) {
12955
+ return null;
12956
+ }
12957
+
12958
+ // Support: IE 9 - 11 only
12959
+ // IE throws on parseFromString with invalid input.
12960
+ try {
12961
+ xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" );
12962
+ } catch ( e ) {}
12963
+
12964
+ parserErrorElem = xml && xml.getElementsByTagName( "parsererror" )[ 0 ];
12965
+ if ( !xml || parserErrorElem ) {
12966
+ jQuery.error( "Invalid XML: " + (
12967
+ parserErrorElem ?
12968
+ jQuery.map( parserErrorElem.childNodes, function( el ) {
12969
+ return el.textContent;
12970
+ } ).join( "\n" ) :
12971
+ data
12972
+ ) );
12973
+ }
12974
+ return xml;
12975
+ };
13166
12976
 
13167
12977
 
13168
12978
  var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
@@ -13350,79 +13160,6 @@ jQuery.fn.extend( {
13350
13160
  } );
13351
13161
 
13352
13162
 
13353
- // Support: Firefox <=44
13354
- // Firefox doesn't have focus(in | out) events
13355
- // Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
13356
- //
13357
- // Support: Chrome <=48 - 49, Safari <=9.0 - 9.1
13358
- // focus(in | out) events fire after focus & blur events,
13359
- // which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
13360
- // Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857
13361
- if ( !support.focusin ) {
13362
- jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) {
13363
-
13364
- // Attach a single capturing handler on the document while someone wants focusin/focusout
13365
- var handler = function( event ) {
13366
- jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );
13367
- };
13368
-
13369
- jQuery.event.special[ fix ] = {
13370
- setup: function() {
13371
-
13372
- // Handle: regular nodes (via `this.ownerDocument`), window
13373
- // (via `this.document`) & document (via `this`).
13374
- var doc = this.ownerDocument || this.document || this,
13375
- attaches = dataPriv.access( doc, fix );
13376
-
13377
- if ( !attaches ) {
13378
- doc.addEventListener( orig, handler, true );
13379
- }
13380
- dataPriv.access( doc, fix, ( attaches || 0 ) + 1 );
13381
- },
13382
- teardown: function() {
13383
- var doc = this.ownerDocument || this.document || this,
13384
- attaches = dataPriv.access( doc, fix ) - 1;
13385
-
13386
- if ( !attaches ) {
13387
- doc.removeEventListener( orig, handler, true );
13388
- dataPriv.remove( doc, fix );
13389
-
13390
- } else {
13391
- dataPriv.access( doc, fix, attaches );
13392
- }
13393
- }
13394
- };
13395
- } );
13396
- }
13397
-
13398
-
13399
- // Cross-browser xml parsing
13400
- jQuery.parseXML = function( data ) {
13401
- var xml, parserErrorElem;
13402
- if ( !data || typeof data !== "string" ) {
13403
- return null;
13404
- }
13405
-
13406
- // Support: IE 9 - 11 only
13407
- // IE throws on parseFromString with invalid input.
13408
- try {
13409
- xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" );
13410
- } catch ( e ) {}
13411
-
13412
- parserErrorElem = xml && xml.getElementsByTagName( "parsererror" )[ 0 ];
13413
- if ( !xml || parserErrorElem ) {
13414
- jQuery.error( "Invalid XML: " + (
13415
- parserErrorElem ?
13416
- jQuery.map( parserErrorElem.childNodes, function( el ) {
13417
- return el.textContent;
13418
- } ).join( "\n" ) :
13419
- data
13420
- ) );
13421
- }
13422
- return xml;
13423
- };
13424
-
13425
-
13426
13163
  var
13427
13164
  rbracket = /\[\]$/,
13428
13165
  rCRLF = /\r?\n/g,
@@ -15829,4 +15566,4 @@ const initializeKLPLoginWidget = (containerId, options) => {
15829
15566
 
15830
15567
  export { initializeKLPLoginWidget };
15831
15568
 
15832
- //# sourceMappingURL=klp-widget.controller-9f7e3c54.js.map
15569
+ //# sourceMappingURL=klp-widget.controller-945d9271.js.map