Advertisement
Guest User

Untitled

a guest
Oct 1st, 2016
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 233.79 KB | None | 0 0
  1. (function(win, undefined) {
  2. /**
  3. * @param {Object} obj
  4. * @return {?}
  5. */
  6. function isArraylike(obj) {
  7. var length = obj.length;
  8. var type = jQuery.type(obj);
  9. return jQuery.isWindow(obj) ? false : 1 === obj.nodeType && length ? true : "array" === type || "function" !== type && (0 === length || "number" == typeof length && (length > 0 && length - 1 in obj));
  10. }
  11. /**
  12. * @param {string} options
  13. * @return {?}
  14. */
  15. function createOptions(options) {
  16. var buf = optionsCache[options] = {};
  17. return jQuery.each(options.match(core_rnotwhite) || [], function(dataAndEvents, off) {
  18. /** @type {boolean} */
  19. buf[off] = true;
  20. }), buf;
  21. }
  22. /**
  23. * @return {undefined}
  24. */
  25. function Data() {
  26. Object.defineProperty(this.cache = {}, 0, {
  27. /**
  28. * @return {?}
  29. */
  30. get : function() {
  31. return{};
  32. }
  33. });
  34. this.expando = jQuery.expando + Math.random();
  35. }
  36. /**
  37. * @param {Object} elem
  38. * @param {string} key
  39. * @param {string} data
  40. * @return {?}
  41. */
  42. function dataAttr(elem, key, data) {
  43. var name;
  44. if (data === undefined && 1 === elem.nodeType) {
  45. if (name = "data-" + key.replace(r20, "-$1").toLowerCase(), data = elem.getAttribute(name), "string" == typeof data) {
  46. try {
  47. /** @type {*} */
  48. data = "true" === data ? true : "false" === data ? false : "null" === data ? null : +data + "" === data ? +data : rbrace.test(data) ? JSON.parse(data) : data;
  49. } catch (i) {
  50. }
  51. data_user.set(elem, key, data);
  52. } else {
  53. /** @type {string} */
  54. data = undefined;
  55. }
  56. }
  57. return data;
  58. }
  59. /**
  60. * @return {?}
  61. */
  62. function returnTrue() {
  63. return true;
  64. }
  65. /**
  66. * @return {?}
  67. */
  68. function returnFalse() {
  69. return false;
  70. }
  71. /**
  72. * @return {?}
  73. */
  74. function safeActiveElement() {
  75. try {
  76. return doc.activeElement;
  77. } catch (e) {
  78. }
  79. }
  80. /**
  81. * @param {Object} cur
  82. * @param {string} dir
  83. * @return {?}
  84. */
  85. function sibling(cur, dir) {
  86. for (;(cur = cur[dir]) && 1 !== cur.nodeType;) {
  87. }
  88. return cur;
  89. }
  90. /**
  91. * @param {string} elements
  92. * @param {Object} qualifier
  93. * @param {boolean} not
  94. * @return {?}
  95. */
  96. function winnow(elements, qualifier, not) {
  97. if (jQuery.isFunction(qualifier)) {
  98. return jQuery.grep(elements, function(elem, i) {
  99. return!!qualifier.call(elem, i, elem) !== not;
  100. });
  101. }
  102. if (qualifier.nodeType) {
  103. return jQuery.grep(elements, function(elem) {
  104. return elem === qualifier !== not;
  105. });
  106. }
  107. if ("string" == typeof qualifier) {
  108. if (isSimple.test(qualifier)) {
  109. return jQuery.filter(qualifier, elements, not);
  110. }
  111. qualifier = jQuery.filter(qualifier, elements);
  112. }
  113. return jQuery.grep(elements, function(elem) {
  114. return core_indexOf.call(qualifier, elem) >= 0 !== not;
  115. });
  116. }
  117. /**
  118. * @param {Node} elem
  119. * @param {Array} content
  120. * @return {?}
  121. */
  122. function manipulationTarget(elem, content) {
  123. return jQuery.nodeName(elem, "table") && jQuery.nodeName(1 === content.nodeType ? content : content.firstChild, "tr") ? elem.getElementsByTagName("tbody")[0] || elem.appendChild(elem.ownerDocument.createElement("tbody")) : elem;
  124. }
  125. /**
  126. * @param {Element} elem
  127. * @return {?}
  128. */
  129. function restoreScript(elem) {
  130. return elem.type = (null !== elem.getAttribute("type")) + "/" + elem.type, elem;
  131. }
  132. /**
  133. * @param {Element} elem
  134. * @return {?}
  135. */
  136. function fn(elem) {
  137. /** @type {(Array.<string>|null)} */
  138. var match = rscriptTypeMasked.exec(elem.type);
  139. return match ? elem.type = match[1] : elem.removeAttribute("type"), elem;
  140. }
  141. /**
  142. * @param {(Array|NodeList)} elems
  143. * @param {Array} refElements
  144. * @return {undefined}
  145. */
  146. function setGlobalEval(elems, refElements) {
  147. var l = elems.length;
  148. /** @type {number} */
  149. var i = 0;
  150. for (;l > i;i++) {
  151. data_priv.set(elems[i], "globalEval", !refElements || data_priv.get(refElements[i], "globalEval"));
  152. }
  153. }
  154. /**
  155. * @param {Object} src
  156. * @param {Object} dest
  157. * @return {undefined}
  158. */
  159. function cloneCopyEvent(src, dest) {
  160. var i;
  161. var ilen;
  162. var type;
  163. var pdataOld;
  164. var pdataCur;
  165. var udataOld;
  166. var udataCur;
  167. var events;
  168. if (1 === dest.nodeType) {
  169. if (data_priv.hasData(src) && (pdataOld = data_priv.access(src), pdataCur = data_priv.set(dest, pdataOld), events = pdataOld.events)) {
  170. delete pdataCur.handle;
  171. pdataCur.events = {};
  172. for (type in events) {
  173. /** @type {number} */
  174. i = 0;
  175. ilen = events[type].length;
  176. for (;ilen > i;i++) {
  177. jQuery.event.add(dest, type, events[type][i]);
  178. }
  179. }
  180. }
  181. if (data_user.hasData(src)) {
  182. udataOld = data_user.access(src);
  183. udataCur = jQuery.extend({}, udataOld);
  184. data_user.set(dest, udataCur);
  185. }
  186. }
  187. }
  188. /**
  189. * @param {Node} context
  190. * @param {string} tag
  191. * @return {?}
  192. */
  193. function getAll(context, tag) {
  194. var ret = context.getElementsByTagName ? context.getElementsByTagName(tag || "*") : context.querySelectorAll ? context.querySelectorAll(tag || "*") : [];
  195. return tag === undefined || tag && jQuery.nodeName(context, tag) ? jQuery.merge([context], ret) : ret;
  196. }
  197. /**
  198. * @param {Element} src
  199. * @param {Element} dest
  200. * @return {undefined}
  201. */
  202. function fixInput(src, dest) {
  203. var name = dest.nodeName.toLowerCase();
  204. if ("input" === name && manipulation_rcheckableType.test(src.type)) {
  205. dest.checked = src.checked;
  206. } else {
  207. if ("input" === name || "textarea" === name) {
  208. dest.defaultValue = src.defaultValue;
  209. }
  210. }
  211. }
  212. /**
  213. * @param {Object} style
  214. * @param {string} name
  215. * @return {?}
  216. */
  217. function vendorPropName(style, name) {
  218. if (name in style) {
  219. return name;
  220. }
  221. var capName = name.charAt(0).toUpperCase() + name.slice(1);
  222. /** @type {string} */
  223. var origName = name;
  224. /** @type {number} */
  225. var i = cssPrefixes.length;
  226. for (;i--;) {
  227. if (name = cssPrefixes[i] + capName, name in style) {
  228. return name;
  229. }
  230. }
  231. return origName;
  232. }
  233. /**
  234. * @param {Object} node
  235. * @param {Function} context
  236. * @return {?}
  237. */
  238. function isHidden(node, context) {
  239. return node = context || node, "none" === jQuery.css(node, "display") || !jQuery.contains(node.ownerDocument, node);
  240. }
  241. /**
  242. * @param {Object} elem
  243. * @return {?}
  244. */
  245. function getStyles(elem) {
  246. return win.getComputedStyle(elem, null);
  247. }
  248. /**
  249. * @param {Array} elements
  250. * @param {boolean} show
  251. * @return {?}
  252. */
  253. function showHide(elements, show) {
  254. var display;
  255. var elem;
  256. var hidden;
  257. /** @type {Array} */
  258. var values = [];
  259. /** @type {number} */
  260. var index = 0;
  261. var length = elements.length;
  262. for (;length > index;index++) {
  263. elem = elements[index];
  264. if (elem.style) {
  265. values[index] = data_priv.get(elem, "olddisplay");
  266. display = elem.style.display;
  267. if (show) {
  268. if (!values[index]) {
  269. if (!("none" !== display)) {
  270. /** @type {string} */
  271. elem.style.display = "";
  272. }
  273. }
  274. if ("" === elem.style.display) {
  275. if (isHidden(elem)) {
  276. values[index] = data_priv.access(elem, "olddisplay", defaultDisplay(elem.nodeName));
  277. }
  278. }
  279. } else {
  280. if (!values[index]) {
  281. hidden = isHidden(elem);
  282. if (display && "none" !== display || !hidden) {
  283. data_priv.set(elem, "olddisplay", hidden ? display : jQuery.css(elem, "display"));
  284. }
  285. }
  286. }
  287. }
  288. }
  289. /** @type {number} */
  290. index = 0;
  291. for (;length > index;index++) {
  292. elem = elements[index];
  293. if (elem.style) {
  294. if (!(show && ("none" !== elem.style.display && "" !== elem.style.display))) {
  295. elem.style.display = show ? values[index] || "" : "none";
  296. }
  297. }
  298. }
  299. return elements;
  300. }
  301. /**
  302. * @param {Object} elem
  303. * @param {string} value
  304. * @param {string} actual
  305. * @return {?}
  306. */
  307. function setPositiveNumber(elem, value, actual) {
  308. /** @type {(Array.<string>|null)} */
  309. var iterator = ret.exec(value);
  310. return iterator ? Math.max(0, iterator[1] - (actual || 0)) + (iterator[2] || "px") : value;
  311. }
  312. /**
  313. * @param {Object} elem
  314. * @param {string} keepData
  315. * @param {string} extra
  316. * @param {boolean} isBorderBox
  317. * @param {?} styles
  318. * @return {?}
  319. */
  320. function augmentWidthOrHeight(elem, keepData, extra, isBorderBox, styles) {
  321. /** @type {number} */
  322. var i = extra === (isBorderBox ? "border" : "content") ? 4 : "width" === keepData ? 1 : 0;
  323. /** @type {number} */
  324. var val = 0;
  325. for (;4 > i;i += 2) {
  326. if ("margin" === extra) {
  327. val += jQuery.css(elem, extra + cssExpand[i], true, styles);
  328. }
  329. if (isBorderBox) {
  330. if ("content" === extra) {
  331. val -= jQuery.css(elem, "padding" + cssExpand[i], true, styles);
  332. }
  333. if ("margin" !== extra) {
  334. val -= jQuery.css(elem, "border" + cssExpand[i] + "Width", true, styles);
  335. }
  336. } else {
  337. val += jQuery.css(elem, "padding" + cssExpand[i], true, styles);
  338. if ("padding" !== extra) {
  339. val += jQuery.css(elem, "border" + cssExpand[i] + "Width", true, styles);
  340. }
  341. }
  342. }
  343. return val;
  344. }
  345. /**
  346. * @param {Object} elem
  347. * @param {string} name
  348. * @param {string} extra
  349. * @return {?}
  350. */
  351. function getWidthOrHeight(elem, name, extra) {
  352. /** @type {boolean} */
  353. var valueIsBorderBox = true;
  354. var val = "width" === name ? elem.offsetWidth : elem.offsetHeight;
  355. var styles = getStyles(elem);
  356. var isBorderBox = jQuery.support.boxSizing && "border-box" === jQuery.css(elem, "boxSizing", false, styles);
  357. if (0 >= val || null == val) {
  358. if (val = curCSS(elem, name, styles), (0 > val || null == val) && (val = elem.style[name]), re.test(val)) {
  359. return val;
  360. }
  361. valueIsBorderBox = isBorderBox && (jQuery.support.boxSizingReliable || val === elem.style[name]);
  362. /** @type {number} */
  363. val = parseFloat(val) || 0;
  364. }
  365. return val + augmentWidthOrHeight(elem, name, extra || (isBorderBox ? "border" : "content"), valueIsBorderBox, styles) + "px";
  366. }
  367. /**
  368. * @param {?} key
  369. * @return {?}
  370. */
  371. function defaultDisplay(key) {
  372. /** @type {Document} */
  373. var d = doc;
  374. var value = flags[key];
  375. return value || (value = get(key, d), "none" !== value && value || (iframe = (iframe || jQuery("<iframe frameborder='0' width='0' height='0'/>").css("cssText", "display:block !important")).appendTo(d.documentElement), d = (iframe[0].contentWindow || iframe[0].contentDocument).document, d.write("<!doctype html><html><body>"), d.close(), value = get(key, d), iframe.detach()), flags[key] = value), value;
  376. }
  377. /**
  378. * @param {?} name
  379. * @param {Document} d
  380. * @return {?}
  381. */
  382. function get(name, d) {
  383. var el = jQuery(d.createElement(name)).appendTo(d.body);
  384. var displayStyle = jQuery.css(el[0], "display");
  385. return el.remove(), displayStyle;
  386. }
  387. /**
  388. * @param {string} prefix
  389. * @param {Object} obj
  390. * @param {boolean} traditional
  391. * @param {Function} add
  392. * @return {undefined}
  393. */
  394. function buildParams(prefix, obj, traditional, add) {
  395. var name;
  396. if (jQuery.isArray(obj)) {
  397. jQuery.each(obj, function(i, v) {
  398. if (traditional || rmargin.test(prefix)) {
  399. add(prefix, v);
  400. } else {
  401. buildParams(prefix + "[" + ("object" == typeof v ? i : "") + "]", v, traditional, add);
  402. }
  403. });
  404. } else {
  405. if (traditional || "object" !== jQuery.type(obj)) {
  406. add(prefix, obj);
  407. } else {
  408. for (name in obj) {
  409. buildParams(prefix + "[" + name + "]", obj[name], traditional, add);
  410. }
  411. }
  412. }
  413. }
  414. /**
  415. * @param {Object} structure
  416. * @return {?}
  417. */
  418. function addToPrefiltersOrTransports(structure) {
  419. return function(selector, fn) {
  420. if ("string" != typeof selector) {
  421. /** @type {(Function|string)} */
  422. fn = selector;
  423. /** @type {string} */
  424. selector = "*";
  425. }
  426. var node;
  427. /** @type {number} */
  428. var i = 0;
  429. var elem = selector.toLowerCase().match(core_rnotwhite) || [];
  430. if (jQuery.isFunction(fn)) {
  431. for (;node = elem[i++];) {
  432. if ("+" === node[0]) {
  433. node = node.slice(1) || "*";
  434. (structure[node] = structure[node] || []).unshift(fn);
  435. } else {
  436. (structure[node] = structure[node] || []).push(fn);
  437. }
  438. }
  439. }
  440. };
  441. }
  442. /**
  443. * @param {?} structure
  444. * @param {?} options
  445. * @param {Object} originalOptions
  446. * @param {?} jqXHR
  447. * @return {?}
  448. */
  449. function inspectPrefiltersOrTransports(structure, options, originalOptions, jqXHR) {
  450. /**
  451. * @param {string} key
  452. * @return {?}
  453. */
  454. function inspect(key) {
  455. var oldName;
  456. return old[key] = true, jQuery.each(structure[key] || [], function(dataAndEvents, prefilterOrFactory) {
  457. var name = prefilterOrFactory(options, originalOptions, jqXHR);
  458. return "string" != typeof name || (seekingTransport || old[name]) ? seekingTransport ? !(oldName = name) : undefined : (options.dataTypes.unshift(name), inspect(name), false);
  459. }), oldName;
  460. }
  461. var old = {};
  462. /** @type {boolean} */
  463. var seekingTransport = structure === transports;
  464. return inspect(options.dataTypes[0]) || !old["*"] && inspect("*");
  465. }
  466. /**
  467. * @param {(Object|string)} target
  468. * @param {Object} src
  469. * @return {?}
  470. */
  471. function ajaxExtend(target, src) {
  472. var key;
  473. var deep;
  474. var flatOptions = jQuery.ajaxSettings.flatOptions || {};
  475. for (key in src) {
  476. if (src[key] !== undefined) {
  477. (flatOptions[key] ? target : deep || (deep = {}))[key] = src[key];
  478. }
  479. }
  480. return deep && jQuery.extend(true, target, deep), target;
  481. }
  482. /**
  483. * @param {Object} s
  484. * @param {XMLHttpRequest} jqXHR
  485. * @param {Object} responses
  486. * @return {?}
  487. */
  488. function ajaxHandleResponses(s, jqXHR, responses) {
  489. var ct;
  490. var type;
  491. var finalDataType;
  492. var firstDataType;
  493. var contents = s.contents;
  494. var dataTypes = s.dataTypes;
  495. for (;"*" === dataTypes[0];) {
  496. dataTypes.shift();
  497. if (ct === undefined) {
  498. ct = s.mimeType || jqXHR.getResponseHeader("Content-Type");
  499. }
  500. }
  501. if (ct) {
  502. for (type in contents) {
  503. if (contents[type] && contents[type].test(ct)) {
  504. dataTypes.unshift(type);
  505. break;
  506. }
  507. }
  508. }
  509. if (dataTypes[0] in responses) {
  510. finalDataType = dataTypes[0];
  511. } else {
  512. for (type in responses) {
  513. if (!dataTypes[0] || s.converters[type + " " + dataTypes[0]]) {
  514. /** @type {string} */
  515. finalDataType = type;
  516. break;
  517. }
  518. if (!firstDataType) {
  519. /** @type {string} */
  520. firstDataType = type;
  521. }
  522. }
  523. /** @type {(string|undefined)} */
  524. finalDataType = finalDataType || firstDataType;
  525. }
  526. return finalDataType ? (finalDataType !== dataTypes[0] && dataTypes.unshift(finalDataType), responses[finalDataType]) : undefined;
  527. }
  528. /**
  529. * @param {Object} s
  530. * @param {Object} response
  531. * @param {?} jqXHR
  532. * @param {Object} isSuccess
  533. * @return {?}
  534. */
  535. function ajaxConvert(s, response, jqXHR, isSuccess) {
  536. var conv2;
  537. var current;
  538. var conv;
  539. var tmp;
  540. var prev;
  541. var converters = {};
  542. var dataTypes = s.dataTypes.slice();
  543. if (dataTypes[1]) {
  544. for (conv in s.converters) {
  545. converters[conv.toLowerCase()] = s.converters[conv];
  546. }
  547. }
  548. current = dataTypes.shift();
  549. for (;current;) {
  550. if (s.responseFields[current] && (jqXHR[s.responseFields[current]] = response), !prev && (isSuccess && (s.dataFilter && (response = s.dataFilter(response, s.dataType)))), prev = current, current = dataTypes.shift()) {
  551. if ("*" === current) {
  552. current = prev;
  553. } else {
  554. if ("*" !== prev && prev !== current) {
  555. if (conv = converters[prev + " " + current] || converters["* " + current], !conv) {
  556. for (conv2 in converters) {
  557. if (tmp = conv2.split(" "), tmp[1] === current && (conv = converters[prev + " " + tmp[0]] || converters["* " + tmp[0]])) {
  558. if (conv === true) {
  559. conv = converters[conv2];
  560. } else {
  561. if (converters[conv2] !== true) {
  562. /** @type {string} */
  563. current = tmp[0];
  564. dataTypes.unshift(tmp[1]);
  565. }
  566. }
  567. break;
  568. }
  569. }
  570. }
  571. if (conv !== true) {
  572. if (conv && s["throws"]) {
  573. response = conv(response);
  574. } else {
  575. try {
  576. response = conv(response);
  577. } catch (e) {
  578. return{
  579. state : "parsererror",
  580. error : conv ? e : "No conversion from " + prev + " to " + current
  581. };
  582. }
  583. }
  584. }
  585. }
  586. }
  587. }
  588. }
  589. return{
  590. state : "success",
  591. data : response
  592. };
  593. }
  594. /**
  595. * @return {?}
  596. */
  597. function createFxNow() {
  598. return setTimeout(function() {
  599. /** @type {string} */
  600. fxNow = undefined;
  601. }), fxNow = jQuery.now();
  602. }
  603. /**
  604. * @param {?} value
  605. * @param {?} prop
  606. * @param {?} animation
  607. * @return {?}
  608. */
  609. function createTween(value, prop, animation) {
  610. var tween;
  611. var q = (cache[prop] || []).concat(cache["*"]);
  612. /** @type {number} */
  613. var i = 0;
  614. var l = q.length;
  615. for (;l > i;i++) {
  616. if (tween = q[i].call(animation, prop, value)) {
  617. return tween;
  618. }
  619. }
  620. }
  621. /**
  622. * @param {string} elem
  623. * @param {?} properties
  624. * @param {Object} options
  625. * @return {?}
  626. */
  627. function Animation(elem, properties, options) {
  628. var result;
  629. var i;
  630. /** @type {number} */
  631. var index = 0;
  632. /** @type {number} */
  633. var length = animationPrefilters.length;
  634. var deferred = jQuery.Deferred().always(function() {
  635. delete tick.elem;
  636. });
  637. /**
  638. * @return {?}
  639. */
  640. var tick = function() {
  641. if (i) {
  642. return false;
  643. }
  644. var currentTime = fxNow || createFxNow();
  645. /** @type {number} */
  646. var remaining = Math.max(0, animation.startTime + animation.duration - currentTime);
  647. /** @type {number} */
  648. var temp = remaining / animation.duration || 0;
  649. /** @type {number} */
  650. var percent = 1 - temp;
  651. /** @type {number} */
  652. var index = 0;
  653. var startOffset = animation.tweens.length;
  654. for (;startOffset > index;index++) {
  655. animation.tweens[index].run(percent);
  656. }
  657. return deferred.notifyWith(elem, [animation, percent, remaining]), 1 > percent && startOffset ? remaining : (deferred.resolveWith(elem, [animation]), false);
  658. };
  659. var animation = deferred.promise({
  660. elem : elem,
  661. props : jQuery.extend({}, properties),
  662. opts : jQuery.extend(true, {
  663. specialEasing : {}
  664. }, options),
  665. originalProperties : properties,
  666. originalOptions : options,
  667. startTime : fxNow || createFxNow(),
  668. duration : options.duration,
  669. tweens : [],
  670. /**
  671. * @param {string} prop
  672. * @param {string} end
  673. * @return {?}
  674. */
  675. createTween : function(prop, end) {
  676. var tween = jQuery.Tween(elem, animation.opts, prop, end, animation.opts.specialEasing[prop] || animation.opts.easing);
  677. return animation.tweens.push(tween), tween;
  678. },
  679. /**
  680. * @param {boolean} gotoEnd
  681. * @return {?}
  682. */
  683. stop : function(gotoEnd) {
  684. /** @type {number} */
  685. var index = 0;
  686. var length = gotoEnd ? animation.tweens.length : 0;
  687. if (i) {
  688. return this;
  689. }
  690. /** @type {boolean} */
  691. i = true;
  692. for (;length > index;index++) {
  693. animation.tweens[index].run(1);
  694. }
  695. return gotoEnd ? deferred.resolveWith(elem, [animation, gotoEnd]) : deferred.rejectWith(elem, [animation, gotoEnd]), this;
  696. }
  697. });
  698. var scripts = animation.props;
  699. propFilter(scripts, animation.opts.specialEasing);
  700. for (;length > index;index++) {
  701. if (result = animationPrefilters[index].call(animation, elem, scripts, animation.opts)) {
  702. return result;
  703. }
  704. }
  705. return jQuery.map(scripts, createTween, animation), jQuery.isFunction(animation.opts.start) && animation.opts.start.call(elem, animation), jQuery.fx.timer(jQuery.extend(tick, {
  706. elem : elem,
  707. anim : animation,
  708. queue : animation.opts.queue
  709. })), animation.progress(animation.opts.progress).done(animation.opts.done, animation.opts.complete).fail(animation.opts.fail).always(animation.opts.always);
  710. }
  711. /**
  712. * @param {Object} object
  713. * @param {Object} paramMap
  714. * @return {undefined}
  715. */
  716. function propFilter(object, paramMap) {
  717. var key;
  718. var name;
  719. var value;
  720. var data;
  721. var hooks;
  722. for (key in object) {
  723. if (name = jQuery.camelCase(key), value = paramMap[name], data = object[key], jQuery.isArray(data) && (value = data[1], data = object[key] = data[0]), key !== name && (object[name] = data, delete object[key]), hooks = jQuery.cssHooks[name], hooks && "expand" in hooks) {
  724. data = hooks.expand(data);
  725. delete object[name];
  726. for (key in data) {
  727. if (!(key in object)) {
  728. object[key] = data[key];
  729. paramMap[key] = value;
  730. }
  731. }
  732. } else {
  733. paramMap[name] = value;
  734. }
  735. }
  736. }
  737. /**
  738. * @param {Object} elem
  739. * @param {Object} props
  740. * @param {Object} opts
  741. * @return {undefined}
  742. */
  743. function defaultPrefilter(elem, props, opts) {
  744. var prop;
  745. var value;
  746. var thisp;
  747. var tween;
  748. var hooks;
  749. var oldfire;
  750. var anim = this;
  751. var orig = {};
  752. var style = elem.style;
  753. var hidden = elem.nodeType && isHidden(elem);
  754. var dataShow = data_priv.get(elem, "fxshow");
  755. if (!opts.queue) {
  756. hooks = jQuery._queueHooks(elem, "fx");
  757. if (null == hooks.unqueued) {
  758. /** @type {number} */
  759. hooks.unqueued = 0;
  760. /** @type {function (): undefined} */
  761. oldfire = hooks.empty.fire;
  762. /**
  763. * @return {undefined}
  764. */
  765. hooks.empty.fire = function() {
  766. if (!hooks.unqueued) {
  767. oldfire();
  768. }
  769. };
  770. }
  771. hooks.unqueued++;
  772. anim.always(function() {
  773. anim.always(function() {
  774. hooks.unqueued--;
  775. if (!jQuery.queue(elem, "fx").length) {
  776. hooks.empty.fire();
  777. }
  778. });
  779. });
  780. }
  781. if (1 === elem.nodeType) {
  782. if ("height" in props || "width" in props) {
  783. /** @type {Array} */
  784. opts.overflow = [style.overflow, style.overflowX, style.overflowY];
  785. if ("inline" === jQuery.css(elem, "display")) {
  786. if ("none" === jQuery.css(elem, "float")) {
  787. /** @type {string} */
  788. style.display = "inline-block";
  789. }
  790. }
  791. }
  792. }
  793. if (opts.overflow) {
  794. /** @type {string} */
  795. style.overflow = "hidden";
  796. anim.always(function() {
  797. style.overflow = opts.overflow[0];
  798. style.overflowX = opts.overflow[1];
  799. style.overflowY = opts.overflow[2];
  800. });
  801. }
  802. for (prop in props) {
  803. if (value = props[prop], rplusequals.exec(value)) {
  804. if (delete props[prop], thisp = thisp || "toggle" === value, value === (hidden ? "hide" : "show")) {
  805. if ("show" !== value || (!dataShow || dataShow[prop] === undefined)) {
  806. continue;
  807. }
  808. /** @type {boolean} */
  809. hidden = true;
  810. }
  811. orig[prop] = dataShow && dataShow[prop] || jQuery.style(elem, prop);
  812. }
  813. }
  814. if (!jQuery.isEmptyObject(orig)) {
  815. if (dataShow) {
  816. if ("hidden" in dataShow) {
  817. hidden = dataShow.hidden;
  818. }
  819. } else {
  820. dataShow = data_priv.access(elem, "fxshow", {});
  821. }
  822. if (thisp) {
  823. /** @type {boolean} */
  824. dataShow.hidden = !hidden;
  825. }
  826. if (hidden) {
  827. jQuery(elem).show();
  828. } else {
  829. anim.done(function() {
  830. jQuery(elem).hide();
  831. });
  832. }
  833. anim.done(function() {
  834. var prop;
  835. data_priv.remove(elem, "fxshow");
  836. for (prop in orig) {
  837. jQuery.style(elem, prop, orig[prop]);
  838. }
  839. });
  840. for (prop in orig) {
  841. tween = createTween(hidden ? dataShow[prop] : 0, prop, anim);
  842. if (!(prop in dataShow)) {
  843. dataShow[prop] = tween.start;
  844. if (hidden) {
  845. tween.end = tween.start;
  846. /** @type {number} */
  847. tween.start = "width" === prop || "height" === prop ? 1 : 0;
  848. }
  849. }
  850. }
  851. }
  852. }
  853. /**
  854. * @param {string} selector
  855. * @param {string} context
  856. * @param {string} prop
  857. * @param {string} end
  858. * @param {string} easing
  859. * @return {?}
  860. */
  861. function Tween(selector, context, prop, end, easing) {
  862. return new Tween.prototype.init(selector, context, prop, end, easing);
  863. }
  864. /**
  865. * @param {string} type
  866. * @param {boolean} includeWidth
  867. * @return {?}
  868. */
  869. function genFx(type, includeWidth) {
  870. var which;
  871. var attrs = {
  872. height : type
  873. };
  874. /** @type {number} */
  875. var i = 0;
  876. /** @type {number} */
  877. includeWidth = includeWidth ? 1 : 0;
  878. for (;4 > i;i += 2 - includeWidth) {
  879. which = cssExpand[i];
  880. attrs["margin" + which] = attrs["padding" + which] = type;
  881. }
  882. return includeWidth && (attrs.opacity = attrs.width = type), attrs;
  883. }
  884. /**
  885. * @param {Object} element
  886. * @return {?}
  887. */
  888. function getWindow(element) {
  889. return jQuery.isWindow(element) ? element : 9 === element.nodeType && element.defaultView;
  890. }
  891. var element;
  892. var readyList;
  893. /** @type {string} */
  894. var core_strundefined = typeof undefined;
  895. /** @type {Location} */
  896. var location = win.location;
  897. /** @type {Document} */
  898. var doc = win.document;
  899. /** @type {Element} */
  900. var docElem = doc.documentElement;
  901. var $ = win.jQuery;
  902. var _$ = win.$;
  903. var class2type = {};
  904. /** @type {Array} */
  905. var core_deletedIds = [];
  906. /** @type {string} */
  907. var core_version = "2.0.3";
  908. /** @type {function (this:*, ...[*]): Array} */
  909. var core_concat = core_deletedIds.concat;
  910. /** @type {function (this:(Array.<T>|{length: number}), ...[T]): number} */
  911. var core_push = core_deletedIds.push;
  912. /** @type {function (this:(Array.<T>|string|{length: number}), *=, *=): Array.<T>} */
  913. var core_slice = core_deletedIds.slice;
  914. /** @type {function (this:(Array.<T>|string|{length: number}), T, number=): number} */
  915. var core_indexOf = core_deletedIds.indexOf;
  916. /** @type {function (this:*): string} */
  917. var core_toString = class2type.toString;
  918. /** @type {function (this:Object, *): boolean} */
  919. var core_hasOwn = class2type.hasOwnProperty;
  920. /** @type {function (this:string): string} */
  921. var core_trim = core_version.trim;
  922. /**
  923. * @param {string} selector
  924. * @param {Function} context
  925. * @return {?}
  926. */
  927. var jQuery = function(selector, context) {
  928. return new jQuery.fn.init(selector, context, element);
  929. };
  930. /** @type {string} */
  931. var core_pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source;
  932. /** @type {RegExp} */
  933. var core_rnotwhite = /\S+/g;
  934. /** @type {RegExp} */
  935. var rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/;
  936. /** @type {RegExp} */
  937. var rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/;
  938. /** @type {RegExp} */
  939. var rmsPrefix = /^-ms-/;
  940. /** @type {RegExp} */
  941. var emptyParagraphRegexp = /-([\da-z])/gi;
  942. /**
  943. * @param {?} all
  944. * @param {string} letter
  945. * @return {?}
  946. */
  947. var fcamelCase = function(all, letter) {
  948. return letter.toUpperCase();
  949. };
  950. /**
  951. * @return {undefined}
  952. */
  953. var completed = function() {
  954. doc.removeEventListener("DOMContentLoaded", completed, false);
  955. win.removeEventListener("load", completed, false);
  956. jQuery.ready();
  957. };
  958. jQuery.fn = jQuery.prototype = {
  959. jquery : core_version,
  960. /** @type {function (string, Function): ?} */
  961. constructor : jQuery,
  962. /**
  963. * @param {string} selector
  964. * @param {Object} context
  965. * @param {undefined} rootjQuery
  966. * @return {?}
  967. */
  968. init : function(selector, context, rootjQuery) {
  969. var match;
  970. var a;
  971. if (!selector) {
  972. return this;
  973. }
  974. if ("string" == typeof selector) {
  975. if (match = "<" === selector.charAt(0) && (">" === selector.charAt(selector.length - 1) && selector.length >= 3) ? [null, selector, null] : rquickExpr.exec(selector), !match || !match[1] && context) {
  976. return!context || context.jquery ? (context || rootjQuery).find(selector) : this.constructor(context).find(selector);
  977. }
  978. if (match[1]) {
  979. if (context = context instanceof jQuery ? context[0] : context, jQuery.merge(this, jQuery.parseHTML(match[1], context && context.nodeType ? context.ownerDocument || context : doc, true)), rsingleTag.test(match[1]) && jQuery.isPlainObject(context)) {
  980. for (match in context) {
  981. if (jQuery.isFunction(this[match])) {
  982. this[match](context[match]);
  983. } else {
  984. this.attr(match, context[match]);
  985. }
  986. }
  987. }
  988. return this;
  989. }
  990. return a = doc.getElementById(match[2]), a && (a.parentNode && (this.length = 1, this[0] = a)), this.context = doc, this.selector = selector, this;
  991. }
  992. return selector.nodeType ? (this.context = this[0] = selector, this.length = 1, this) : jQuery.isFunction(selector) ? rootjQuery.ready(selector) : (selector.selector !== undefined && (this.selector = selector.selector, this.context = selector.context), jQuery.makeArray(selector, this));
  993. },
  994. selector : "",
  995. length : 0,
  996. /**
  997. * @return {?}
  998. */
  999. toArray : function() {
  1000. return core_slice.call(this);
  1001. },
  1002. /**
  1003. * @param {Object} num
  1004. * @return {?}
  1005. */
  1006. get : function(num) {
  1007. return null == num ? this.toArray() : 0 > num ? this[this.length + num] : this[num];
  1008. },
  1009. /**
  1010. * @param {Array} elems
  1011. * @return {?}
  1012. */
  1013. pushStack : function(elems) {
  1014. var ret = jQuery.merge(this.constructor(), elems);
  1015. return ret.prevObject = this, ret.context = this.context, ret;
  1016. },
  1017. /**
  1018. * @param {Function} opt_attributes
  1019. * @param {Function} args
  1020. * @return {?}
  1021. */
  1022. each : function(opt_attributes, args) {
  1023. return jQuery.each(this, opt_attributes, args);
  1024. },
  1025. /**
  1026. * @param {Object} fn
  1027. * @return {?}
  1028. */
  1029. ready : function(fn) {
  1030. return jQuery.ready.promise().done(fn), this;
  1031. },
  1032. /**
  1033. * @return {?}
  1034. */
  1035. slice : function() {
  1036. return this.pushStack(core_slice.apply(this, arguments));
  1037. },
  1038. /**
  1039. * @return {?}
  1040. */
  1041. first : function() {
  1042. return this.eq(0);
  1043. },
  1044. /**
  1045. * @return {?}
  1046. */
  1047. last : function() {
  1048. return this.eq(-1);
  1049. },
  1050. /**
  1051. * @param {number} b
  1052. * @return {?}
  1053. */
  1054. eq : function(b) {
  1055. var l = this.length;
  1056. var i = +b + (0 > b ? l : 0);
  1057. return this.pushStack(i >= 0 && l > i ? [this[i]] : []);
  1058. },
  1059. /**
  1060. * @param {Function} callback
  1061. * @return {?}
  1062. */
  1063. map : function(callback) {
  1064. return this.pushStack(jQuery.map(this, function(el, operation) {
  1065. return callback.call(el, operation, el);
  1066. }));
  1067. },
  1068. /**
  1069. * @return {?}
  1070. */
  1071. end : function() {
  1072. return this.prevObject || this.constructor(null);
  1073. },
  1074. /** @type {function (this:(Array.<T>|{length: number}), ...[T]): number} */
  1075. push : core_push,
  1076. /** @type {function (this:(Array.<T>|{length: number}), function (T, T): number=): ?} */
  1077. sort : [].sort,
  1078. /** @type {function (this:(Array.<T>|{length: number}), *=, *=, ...[T]): Array.<T>} */
  1079. splice : [].splice
  1080. };
  1081. jQuery.fn.init.prototype = jQuery.fn;
  1082. /** @type {function (): ?} */
  1083. jQuery.extend = jQuery.fn.extend = function() {
  1084. var options;
  1085. var name;
  1086. var src;
  1087. var copy;
  1088. var copyIsArray;
  1089. var clone;
  1090. var target = arguments[0] || {};
  1091. /** @type {number} */
  1092. var b = 1;
  1093. /** @type {number} */
  1094. var a = arguments.length;
  1095. /** @type {boolean} */
  1096. var deep = false;
  1097. if ("boolean" == typeof target) {
  1098. /** @type {boolean} */
  1099. deep = target;
  1100. target = arguments[1] || {};
  1101. /** @type {number} */
  1102. b = 2;
  1103. }
  1104. if (!("object" == typeof target)) {
  1105. if (!jQuery.isFunction(target)) {
  1106. target = {};
  1107. }
  1108. }
  1109. if (a === b) {
  1110. target = this;
  1111. --b;
  1112. }
  1113. for (;a > b;b++) {
  1114. if (null != (options = arguments[b])) {
  1115. for (name in options) {
  1116. src = target[name];
  1117. copy = options[name];
  1118. if (target !== copy) {
  1119. if (deep && (copy && (jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy))))) {
  1120. if (copyIsArray) {
  1121. /** @type {boolean} */
  1122. copyIsArray = false;
  1123. clone = src && jQuery.isArray(src) ? src : [];
  1124. } else {
  1125. clone = src && jQuery.isPlainObject(src) ? src : {};
  1126. }
  1127. target[name] = jQuery.extend(deep, clone, copy);
  1128. } else {
  1129. if (copy !== undefined) {
  1130. target[name] = copy;
  1131. }
  1132. }
  1133. }
  1134. }
  1135. }
  1136. }
  1137. return target;
  1138. };
  1139. jQuery.extend({
  1140. expando : "jQuery" + (core_version + Math.random()).replace(/\D/g, ""),
  1141. /**
  1142. * @param {boolean} deep
  1143. * @return {?}
  1144. */
  1145. noConflict : function(deep) {
  1146. return win.$ === jQuery && (win.$ = _$), deep && (win.jQuery === jQuery && (win.jQuery = $)), jQuery;
  1147. },
  1148. isReady : false,
  1149. readyWait : 1,
  1150. /**
  1151. * @param {?} hold
  1152. * @return {undefined}
  1153. */
  1154. holdReady : function(hold) {
  1155. if (hold) {
  1156. jQuery.readyWait++;
  1157. } else {
  1158. jQuery.ready(true);
  1159. }
  1160. },
  1161. /**
  1162. * @param {boolean} wait
  1163. * @return {undefined}
  1164. */
  1165. ready : function(wait) {
  1166. if (!(wait === true ? --jQuery.readyWait : jQuery.isReady)) {
  1167. /** @type {boolean} */
  1168. jQuery.isReady = true;
  1169. if (!(wait !== true && --jQuery.readyWait > 0)) {
  1170. readyList.resolveWith(doc, [jQuery]);
  1171. if (jQuery.fn.trigger) {
  1172. jQuery(doc).trigger("ready").off("ready");
  1173. }
  1174. }
  1175. }
  1176. },
  1177. /**
  1178. * @param {Object} obj
  1179. * @return {?}
  1180. */
  1181. isFunction : function(obj) {
  1182. return "function" === jQuery.type(obj);
  1183. },
  1184. /** @type {function (*): boolean} */
  1185. isArray : Array.isArray,
  1186. /**
  1187. * @param {Object} obj
  1188. * @return {?}
  1189. */
  1190. isWindow : function(obj) {
  1191. return null != obj && obj === obj.window;
  1192. },
  1193. /**
  1194. * @param {?} obj
  1195. * @return {?}
  1196. */
  1197. isNumeric : function(obj) {
  1198. return!isNaN(parseFloat(obj)) && isFinite(obj);
  1199. },
  1200. /**
  1201. * @param {string} obj
  1202. * @return {?}
  1203. */
  1204. type : function(obj) {
  1205. return null == obj ? obj + "" : "object" == typeof obj || "function" == typeof obj ? class2type[core_toString.call(obj)] || "object" : typeof obj;
  1206. },
  1207. /**
  1208. * @param {Object} obj
  1209. * @return {?}
  1210. */
  1211. isPlainObject : function(obj) {
  1212. if ("object" !== jQuery.type(obj) || (obj.nodeType || jQuery.isWindow(obj))) {
  1213. return false;
  1214. }
  1215. try {
  1216. if (obj.constructor && !core_hasOwn.call(obj.constructor.prototype, "isPrototypeOf")) {
  1217. return false;
  1218. }
  1219. } catch (t) {
  1220. return false;
  1221. }
  1222. return true;
  1223. },
  1224. /**
  1225. * @param {?} obj
  1226. * @return {?}
  1227. */
  1228. isEmptyObject : function(obj) {
  1229. var prop;
  1230. for (prop in obj) {
  1231. return false;
  1232. }
  1233. return true;
  1234. },
  1235. /**
  1236. * @param {Object} elem
  1237. * @return {?}
  1238. */
  1239. error : function(elem) {
  1240. throw Error(elem);
  1241. },
  1242. /**
  1243. * @param {?} data
  1244. * @param {Object} context
  1245. * @param {(Function|string)} keepScripts
  1246. * @return {?}
  1247. */
  1248. parseHTML : function(data, context, keepScripts) {
  1249. if (!data || "string" != typeof data) {
  1250. return null;
  1251. }
  1252. if ("boolean" == typeof context) {
  1253. /** @type {Object} */
  1254. keepScripts = context;
  1255. /** @type {boolean} */
  1256. context = false;
  1257. }
  1258. context = context || doc;
  1259. /** @type {(Array.<string>|null)} */
  1260. var parsed = rsingleTag.exec(data);
  1261. /** @type {(Array|boolean)} */
  1262. var scripts = !keepScripts && [];
  1263. return parsed ? [context.createElement(parsed[1])] : (parsed = jQuery.buildFragment([data], context, scripts), scripts && jQuery(scripts).remove(), jQuery.merge([], parsed.childNodes));
  1264. },
  1265. /** @type {function (this:JSONType, string, function (string, *): *=): *} */
  1266. parseJSON : JSON.parse,
  1267. /**
  1268. * @param {string} data
  1269. * @return {?}
  1270. */
  1271. parseXML : function(data) {
  1272. var xml;
  1273. var tmp;
  1274. if (!data || "string" != typeof data) {
  1275. return null;
  1276. }
  1277. try {
  1278. /** @type {DOMParser} */
  1279. tmp = new DOMParser;
  1280. /** @type {(Document|null)} */
  1281. xml = tmp.parseFromString(data, "text/xml");
  1282. } catch (r) {
  1283. /** @type {string} */
  1284. xml = undefined;
  1285. }
  1286. return(!xml || xml.getElementsByTagName("parsererror").length) && jQuery.error("Invalid XML: " + data), xml;
  1287. },
  1288. /**
  1289. * @return {undefined}
  1290. */
  1291. noop : function() {
  1292. },
  1293. /**
  1294. * @param {(Object|string)} code
  1295. * @return {undefined}
  1296. */
  1297. globalEval : function(code) {
  1298. var script;
  1299. /** @type {function (string): *} */
  1300. var indirect = eval;
  1301. code = jQuery.trim(code);
  1302. if (code) {
  1303. if (1 === code.indexOf("use strict")) {
  1304. /** @type {Element} */
  1305. script = doc.createElement("script");
  1306. /** @type {(Object|string)} */
  1307. script.text = code;
  1308. doc.head.appendChild(script).parentNode.removeChild(script);
  1309. } else {
  1310. indirect(code);
  1311. }
  1312. }
  1313. },
  1314. /**
  1315. * @param {string} string
  1316. * @return {?}
  1317. */
  1318. camelCase : function(string) {
  1319. return string.replace(rmsPrefix, "ms-").replace(emptyParagraphRegexp, fcamelCase);
  1320. },
  1321. /**
  1322. * @param {Node} elem
  1323. * @param {string} name
  1324. * @return {?}
  1325. */
  1326. nodeName : function(elem, name) {
  1327. return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
  1328. },
  1329. /**
  1330. * @param {Function} obj
  1331. * @param {Function} callback
  1332. * @param {Object} args
  1333. * @return {?}
  1334. */
  1335. each : function(obj, callback, args) {
  1336. var value;
  1337. /** @type {number} */
  1338. var i = 0;
  1339. var l = obj.length;
  1340. var isArray = isArraylike(obj);
  1341. if (args) {
  1342. if (isArray) {
  1343. for (;l > i;i++) {
  1344. if (value = callback.apply(obj[i], args), value === false) {
  1345. break;
  1346. }
  1347. }
  1348. } else {
  1349. for (i in obj) {
  1350. if (value = callback.apply(obj[i], args), value === false) {
  1351. break;
  1352. }
  1353. }
  1354. }
  1355. } else {
  1356. if (isArray) {
  1357. for (;l > i;i++) {
  1358. if (value = callback.call(obj[i], i, obj[i]), value === false) {
  1359. break;
  1360. }
  1361. }
  1362. } else {
  1363. for (i in obj) {
  1364. if (value = callback.call(obj[i], i, obj[i]), value === false) {
  1365. break;
  1366. }
  1367. }
  1368. }
  1369. }
  1370. return obj;
  1371. },
  1372. /**
  1373. * @param {Object} text
  1374. * @return {?}
  1375. */
  1376. trim : function(text) {
  1377. return null == text ? "" : core_trim.call(text);
  1378. },
  1379. /**
  1380. * @param {?} arr
  1381. * @param {Array} results
  1382. * @return {?}
  1383. */
  1384. makeArray : function(arr, results) {
  1385. var ret = results || [];
  1386. return null != arr && (isArraylike(Object(arr)) ? jQuery.merge(ret, "string" == typeof arr ? [arr] : arr) : core_push.call(ret, arr)), ret;
  1387. },
  1388. /**
  1389. * @param {?} elem
  1390. * @param {?} arr
  1391. * @param {?} i
  1392. * @return {?}
  1393. */
  1394. inArray : function(elem, arr, i) {
  1395. return null == arr ? -1 : core_indexOf.call(arr, elem, i);
  1396. },
  1397. /**
  1398. * @param {(Function|string)} first
  1399. * @param {?} second
  1400. * @return {?}
  1401. */
  1402. merge : function(first, second) {
  1403. var len = second.length;
  1404. var i = first.length;
  1405. /** @type {number} */
  1406. var j = 0;
  1407. if ("number" == typeof len) {
  1408. for (;len > j;j++) {
  1409. first[i++] = second[j];
  1410. }
  1411. } else {
  1412. for (;second[j] !== undefined;) {
  1413. first[i++] = second[j++];
  1414. }
  1415. }
  1416. return first.length = i, first;
  1417. },
  1418. /**
  1419. * @param {Array} elems
  1420. * @param {Function} callback
  1421. * @param {boolean} inv
  1422. * @return {?}
  1423. */
  1424. grep : function(elems, callback, inv) {
  1425. var retVal;
  1426. /** @type {Array} */
  1427. var ret = [];
  1428. /** @type {number} */
  1429. var i = 0;
  1430. var l = elems.length;
  1431. /** @type {boolean} */
  1432. inv = !!inv;
  1433. for (;l > i;i++) {
  1434. /** @type {boolean} */
  1435. retVal = !!callback(elems[i], i);
  1436. if (inv !== retVal) {
  1437. ret.push(elems[i]);
  1438. }
  1439. }
  1440. return ret;
  1441. },
  1442. /**
  1443. * @param {Object} elems
  1444. * @param {Function} callback
  1445. * @param {boolean} arg
  1446. * @return {?}
  1447. */
  1448. map : function(elems, callback, arg) {
  1449. var value;
  1450. /** @type {number} */
  1451. var i = 0;
  1452. var l = elems.length;
  1453. var isArray = isArraylike(elems);
  1454. /** @type {Array} */
  1455. var ret = [];
  1456. if (isArray) {
  1457. for (;l > i;i++) {
  1458. value = callback(elems[i], i, arg);
  1459. if (null != value) {
  1460. ret[ret.length] = value;
  1461. }
  1462. }
  1463. } else {
  1464. for (i in elems) {
  1465. value = callback(elems[i], i, arg);
  1466. if (null != value) {
  1467. ret[ret.length] = value;
  1468. }
  1469. }
  1470. }
  1471. return core_concat.apply([], ret);
  1472. },
  1473. guid : 1,
  1474. /**
  1475. * @param {Object} fn
  1476. * @param {(Function|string)} context
  1477. * @return {?}
  1478. */
  1479. proxy : function(fn, context) {
  1480. var tmp;
  1481. var args;
  1482. var proxy;
  1483. return "string" == typeof context && (tmp = fn[context], context = fn, fn = tmp), jQuery.isFunction(fn) ? (args = core_slice.call(arguments, 2), proxy = function() {
  1484. return fn.apply(context || this, args.concat(core_slice.call(arguments)));
  1485. }, proxy.guid = fn.guid = fn.guid || jQuery.guid++, proxy) : undefined;
  1486. },
  1487. /**
  1488. * @param {Object} elems
  1489. * @param {Function} fn
  1490. * @param {Object} key
  1491. * @param {string} value
  1492. * @param {boolean} chainable
  1493. * @param {string} emptyGet
  1494. * @param {boolean} raw
  1495. * @return {?}
  1496. */
  1497. access : function(elems, fn, key, value, chainable, emptyGet, raw) {
  1498. /** @type {number} */
  1499. var i = 0;
  1500. var length = elems.length;
  1501. /** @type {boolean} */
  1502. var bulk = null == key;
  1503. if ("object" === jQuery.type(key)) {
  1504. /** @type {boolean} */
  1505. chainable = true;
  1506. for (i in key) {
  1507. jQuery.access(elems, fn, i, key[i], true, emptyGet, raw);
  1508. }
  1509. } else {
  1510. if (value !== undefined && (chainable = true, jQuery.isFunction(value) || (raw = true), bulk && (raw ? (fn.call(elems, value), fn = null) : (bulk = fn, fn = function(elem, event, value) {
  1511. return bulk.call(jQuery(elem), value);
  1512. })), fn)) {
  1513. for (;length > i;i++) {
  1514. fn(elems[i], key, raw ? value : value.call(elems[i], i, fn(elems[i], key)));
  1515. }
  1516. }
  1517. }
  1518. return chainable ? elems : bulk ? fn.call(elems) : length ? fn(elems[0], key) : emptyGet;
  1519. },
  1520. /** @type {function (): number} */
  1521. now : Date.now,
  1522. /**
  1523. * @param {Object} elem
  1524. * @param {?} options
  1525. * @param {Function} callback
  1526. * @param {Array} args
  1527. * @return {?}
  1528. */
  1529. swap : function(elem, options, callback, args) {
  1530. var ret;
  1531. var name;
  1532. var old = {};
  1533. for (name in options) {
  1534. old[name] = elem.style[name];
  1535. elem.style[name] = options[name];
  1536. }
  1537. ret = callback.apply(elem, args || []);
  1538. for (name in options) {
  1539. elem.style[name] = old[name];
  1540. }
  1541. return ret;
  1542. }
  1543. });
  1544. /**
  1545. * @param {string} obj
  1546. * @return {?}
  1547. */
  1548. jQuery.ready.promise = function(obj) {
  1549. return readyList || (readyList = jQuery.Deferred(), "complete" === doc.readyState ? setTimeout(jQuery.ready) : (doc.addEventListener("DOMContentLoaded", completed, false), win.addEventListener("load", completed, false))), readyList.promise(obj);
  1550. };
  1551. jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(dataAndEvents, m3) {
  1552. class2type["[object " + m3 + "]"] = m3.toLowerCase();
  1553. });
  1554. element = jQuery(doc);
  1555. (function(win, undefined) {
  1556. /**
  1557. * @param {string} selector
  1558. * @param {Object} context
  1559. * @param {Object} results
  1560. * @param {?} seed
  1561. * @return {?}
  1562. */
  1563. function Sizzle(selector, context, results, seed) {
  1564. var match;
  1565. var elem;
  1566. var m;
  1567. var nodeType;
  1568. var i;
  1569. var groups;
  1570. var old;
  1571. var nid;
  1572. var newContext;
  1573. var newSelector;
  1574. if ((context ? context.ownerDocument || context : preferredDoc) !== doc && setDocument(context), context = context || doc, results = results || [], !selector || "string" != typeof selector) {
  1575. return results;
  1576. }
  1577. if (1 !== (nodeType = context.nodeType) && 9 !== nodeType) {
  1578. return[];
  1579. }
  1580. if (documentIsHTML && !seed) {
  1581. if (match = rquickExpr.exec(selector)) {
  1582. if (m = match[1]) {
  1583. if (9 === nodeType) {
  1584. if (elem = context.getElementById(m), !elem || !elem.parentNode) {
  1585. return results;
  1586. }
  1587. if (elem.id === m) {
  1588. return results.push(elem), results;
  1589. }
  1590. } else {
  1591. if (context.ownerDocument && ((elem = context.ownerDocument.getElementById(m)) && (contains(context, elem) && elem.id === m))) {
  1592. return results.push(elem), results;
  1593. }
  1594. }
  1595. } else {
  1596. if (match[2]) {
  1597. return push.apply(results, context.getElementsByTagName(selector)), results;
  1598. }
  1599. if ((m = match[3]) && (support.getElementsByClassName && context.getElementsByClassName)) {
  1600. return push.apply(results, context.getElementsByClassName(m)), results;
  1601. }
  1602. }
  1603. }
  1604. if (support.qsa && (!params || !params.test(selector))) {
  1605. if (nid = old = expando, newContext = context, newSelector = 9 === nodeType && selector, 1 === nodeType && "object" !== context.nodeName.toLowerCase()) {
  1606. groups = tokenize(selector);
  1607. if (old = context.getAttribute("id")) {
  1608. nid = old.replace(r20, "\\$&");
  1609. } else {
  1610. context.setAttribute("id", nid);
  1611. }
  1612. /** @type {string} */
  1613. nid = "[id='" + nid + "'] ";
  1614. i = groups.length;
  1615. for (;i--;) {
  1616. /** @type {string} */
  1617. groups[i] = nid + toSelector(groups[i]);
  1618. }
  1619. newContext = rsibling.test(selector) && context.parentNode || context;
  1620. newSelector = groups.join(",");
  1621. }
  1622. if (newSelector) {
  1623. try {
  1624. return push.apply(results, newContext.querySelectorAll(newSelector)), results;
  1625. } catch (T) {
  1626. } finally {
  1627. if (!old) {
  1628. context.removeAttribute("id");
  1629. }
  1630. }
  1631. }
  1632. }
  1633. }
  1634. return select(selector.replace(rtrim, "$1"), context, results, seed);
  1635. }
  1636. /**
  1637. * @return {?}
  1638. */
  1639. function createCache() {
  1640. /**
  1641. * @param {string} key
  1642. * @param {?} value
  1643. * @return {?}
  1644. */
  1645. function cache(key, value) {
  1646. return keys.push(key += " ") > Expr.cacheLength && delete cache[keys.shift()], cache[key] = value;
  1647. }
  1648. /** @type {Array} */
  1649. var keys = [];
  1650. return cache;
  1651. }
  1652. /**
  1653. * @param {Function} fn
  1654. * @return {?}
  1655. */
  1656. function markFunction(fn) {
  1657. return fn[expando] = true, fn;
  1658. }
  1659. /**
  1660. * @param {Function} fn
  1661. * @return {?}
  1662. */
  1663. function assert(fn) {
  1664. var t = doc.createElement("div");
  1665. try {
  1666. return!!fn(t);
  1667. } catch (n) {
  1668. return false;
  1669. } finally {
  1670. if (t.parentNode) {
  1671. t.parentNode.removeChild(t);
  1672. }
  1673. /** @type {null} */
  1674. t = null;
  1675. }
  1676. }
  1677. /**
  1678. * @param {string} str
  1679. * @param {Function} handler
  1680. * @return {undefined}
  1681. */
  1682. function addHandle(str, handler) {
  1683. var arr = str.split("|");
  1684. var i = str.length;
  1685. for (;i--;) {
  1686. /** @type {Function} */
  1687. Expr.attrHandle[arr[i]] = handler;
  1688. }
  1689. }
  1690. /**
  1691. * @param {Object} a
  1692. * @param {Object} b
  1693. * @return {?}
  1694. */
  1695. function siblingCheck(a, b) {
  1696. var cur = b && a;
  1697. var diff = cur && (1 === a.nodeType && (1 === b.nodeType && (~b.sourceIndex || MAX_NEGATIVE) - (~a.sourceIndex || MAX_NEGATIVE)));
  1698. if (diff) {
  1699. return diff;
  1700. }
  1701. if (cur) {
  1702. for (;cur = cur.nextSibling;) {
  1703. if (cur === b) {
  1704. return-1;
  1705. }
  1706. }
  1707. }
  1708. return a ? 1 : -1;
  1709. }
  1710. /**
  1711. * @param {?} type
  1712. * @return {?}
  1713. */
  1714. function createInputPseudo(type) {
  1715. return function(elem) {
  1716. var b = elem.nodeName.toLowerCase();
  1717. return "input" === b && elem.type === type;
  1718. };
  1719. }
  1720. /**
  1721. * @param {?} type
  1722. * @return {?}
  1723. */
  1724. function createButtonPseudo(type) {
  1725. return function(elem) {
  1726. var NULL = elem.nodeName.toLowerCase();
  1727. return("input" === NULL || "button" === NULL) && elem.type === type;
  1728. };
  1729. }
  1730. /**
  1731. * @param {Function} fn
  1732. * @return {?}
  1733. */
  1734. function createPositionalPseudo(fn) {
  1735. return markFunction(function(argument) {
  1736. return argument = +argument, markFunction(function(seed, matches) {
  1737. var j;
  1738. var matchIndexes = fn([], seed.length, argument);
  1739. var i = matchIndexes.length;
  1740. for (;i--;) {
  1741. if (seed[j = matchIndexes[i]]) {
  1742. /** @type {boolean} */
  1743. seed[j] = !(matches[j] = seed[j]);
  1744. }
  1745. }
  1746. });
  1747. });
  1748. }
  1749. /**
  1750. * @return {undefined}
  1751. */
  1752. function setFilters() {
  1753. }
  1754. /**
  1755. * @param {(Object|string)} selector
  1756. * @param {boolean} parseOnly
  1757. * @return {?}
  1758. */
  1759. function tokenize(selector, parseOnly) {
  1760. var matched;
  1761. var match;
  1762. var tokens;
  1763. var type;
  1764. var soFar;
  1765. var groups;
  1766. var preFilters;
  1767. var cached = tokenCache[selector + " "];
  1768. if (cached) {
  1769. return parseOnly ? 0 : cached.slice(0);
  1770. }
  1771. /** @type {(Object|string)} */
  1772. soFar = selector;
  1773. /** @type {Array} */
  1774. groups = [];
  1775. preFilters = Expr.preFilter;
  1776. for (;soFar;) {
  1777. if (!matched || (match = rcombinators.exec(soFar))) {
  1778. if (match) {
  1779. soFar = soFar.slice(match[0].length) || soFar;
  1780. }
  1781. groups.push(tokens = []);
  1782. }
  1783. /** @type {boolean} */
  1784. matched = false;
  1785. if (match = rcomma.exec(soFar)) {
  1786. /** @type {string} */
  1787. matched = match.shift();
  1788. tokens.push({
  1789. value : matched,
  1790. type : match[0].replace(rtrim, " ")
  1791. });
  1792. soFar = soFar.slice(matched.length);
  1793. }
  1794. for (type in Expr.filter) {
  1795. if (!!(match = matchExpr[type].exec(soFar))) {
  1796. if (!(preFilters[type] && !(match = preFilters[type](match)))) {
  1797. matched = match.shift();
  1798. tokens.push({
  1799. value : matched,
  1800. type : type,
  1801. matches : match
  1802. });
  1803. soFar = soFar.slice(matched.length);
  1804. }
  1805. }
  1806. }
  1807. if (!matched) {
  1808. break;
  1809. }
  1810. }
  1811. return parseOnly ? soFar.length : soFar ? Sizzle.error(selector) : tokenCache(selector, groups).slice(0);
  1812. }
  1813. /**
  1814. * @param {Array} tokens
  1815. * @return {?}
  1816. */
  1817. function toSelector(tokens) {
  1818. /** @type {number} */
  1819. var i = 0;
  1820. var nTokens = tokens.length;
  1821. /** @type {string} */
  1822. var selector = "";
  1823. for (;nTokens > i;i++) {
  1824. selector += tokens[i].value;
  1825. }
  1826. return selector;
  1827. }
  1828. /**
  1829. * @param {Function} matcher
  1830. * @param {Object} combinator
  1831. * @param {boolean} dataAndEvents
  1832. * @return {?}
  1833. */
  1834. function addCombinator(matcher, combinator, dataAndEvents) {
  1835. var dir = combinator.dir;
  1836. var o = dataAndEvents && "parentNode" === dir;
  1837. /** @type {number} */
  1838. var doneName = done++;
  1839. return combinator.first ? function(elem, context, xml) {
  1840. for (;elem = elem[dir];) {
  1841. if (1 === elem.nodeType || o) {
  1842. return matcher(elem, context, xml);
  1843. }
  1844. }
  1845. } : function(elem, context, xml) {
  1846. var data;
  1847. var cache;
  1848. var outerCache;
  1849. var dirkey = dirruns + " " + doneName;
  1850. if (xml) {
  1851. for (;elem = elem[dir];) {
  1852. if ((1 === elem.nodeType || o) && matcher(elem, context, xml)) {
  1853. return true;
  1854. }
  1855. }
  1856. } else {
  1857. for (;elem = elem[dir];) {
  1858. if (1 === elem.nodeType || o) {
  1859. if (outerCache = elem[expando] || (elem[expando] = {}), (cache = outerCache[dir]) && cache[0] === dirkey) {
  1860. if ((data = cache[1]) === true || data === cachedruns) {
  1861. return data === true;
  1862. }
  1863. } else {
  1864. if (cache = outerCache[dir] = [dirkey], cache[1] = matcher(elem, context, xml) || cachedruns, cache[1] === true) {
  1865. return true;
  1866. }
  1867. }
  1868. }
  1869. }
  1870. }
  1871. };
  1872. }
  1873. /**
  1874. * @param {Array} matchers
  1875. * @return {?}
  1876. */
  1877. function elementMatcher(matchers) {
  1878. return matchers.length > 1 ? function(elem, context, xml) {
  1879. var i = matchers.length;
  1880. for (;i--;) {
  1881. if (!matchers[i](elem, context, xml)) {
  1882. return false;
  1883. }
  1884. }
  1885. return true;
  1886. } : matchers[0];
  1887. }
  1888. /**
  1889. * @param {Array} collection
  1890. * @param {Object} map
  1891. * @param {string} filter
  1892. * @param {Object} context
  1893. * @param {?} xml
  1894. * @return {?}
  1895. */
  1896. function condense(collection, map, filter, context, xml) {
  1897. var val;
  1898. /** @type {Array} */
  1899. var output = [];
  1900. /** @type {number} */
  1901. var key = 0;
  1902. var e = collection.length;
  1903. /** @type {boolean} */
  1904. var l = null != map;
  1905. for (;e > key;key++) {
  1906. if (val = collection[key]) {
  1907. if (!filter || filter(val, context, xml)) {
  1908. output.push(val);
  1909. if (l) {
  1910. map.push(key);
  1911. }
  1912. }
  1913. }
  1914. }
  1915. return output;
  1916. }
  1917. /**
  1918. * @param {string} preFilter
  1919. * @param {string} selector
  1920. * @param {boolean} matcher
  1921. * @param {Object} postFilter
  1922. * @param {(Object|string)} postFinder
  1923. * @param {string} postSelector
  1924. * @return {?}
  1925. */
  1926. function setMatcher(preFilter, selector, matcher, postFilter, postFinder, postSelector) {
  1927. return postFilter && (!postFilter[expando] && (postFilter = setMatcher(postFilter))), postFinder && (!postFinder[expando] && (postFinder = setMatcher(postFinder, postSelector))), markFunction(function(seed, results, context, xml) {
  1928. var temp;
  1929. var i;
  1930. var elem;
  1931. /** @type {Array} */
  1932. var preMap = [];
  1933. /** @type {Array} */
  1934. var postMap = [];
  1935. var preexisting = results.length;
  1936. var dontCloseTags = seed || multipleContexts(selector || "*", context.nodeType ? [context] : context, []);
  1937. var matcherIn = !preFilter || !seed && selector ? dontCloseTags : condense(dontCloseTags, preMap, preFilter, context, xml);
  1938. var matcherOut = matcher ? postFinder || (seed ? preFilter : preexisting || postFilter) ? [] : results : matcherIn;
  1939. if (matcher && matcher(matcherIn, matcherOut, context, xml), postFilter) {
  1940. temp = condense(matcherOut, postMap);
  1941. postFilter(temp, [], context, xml);
  1942. i = temp.length;
  1943. for (;i--;) {
  1944. if (elem = temp[i]) {
  1945. /** @type {boolean} */
  1946. matcherOut[postMap[i]] = !(matcherIn[postMap[i]] = elem);
  1947. }
  1948. }
  1949. }
  1950. if (seed) {
  1951. if (postFinder || preFilter) {
  1952. if (postFinder) {
  1953. /** @type {Array} */
  1954. temp = [];
  1955. i = matcherOut.length;
  1956. for (;i--;) {
  1957. if (elem = matcherOut[i]) {
  1958. temp.push(matcherIn[i] = elem);
  1959. }
  1960. }
  1961. postFinder(null, matcherOut = [], temp, xml);
  1962. }
  1963. i = matcherOut.length;
  1964. for (;i--;) {
  1965. if (elem = matcherOut[i]) {
  1966. if ((temp = postFinder ? indexOf.call(seed, elem) : preMap[i]) > -1) {
  1967. /** @type {boolean} */
  1968. seed[temp] = !(results[temp] = elem);
  1969. }
  1970. }
  1971. }
  1972. }
  1973. } else {
  1974. matcherOut = condense(matcherOut === results ? matcherOut.splice(preexisting, matcherOut.length) : matcherOut);
  1975. if (postFinder) {
  1976. postFinder(null, results, matcherOut, xml);
  1977. } else {
  1978. push.apply(results, matcherOut);
  1979. }
  1980. }
  1981. });
  1982. }
  1983. /**
  1984. * @param {Object} tokens
  1985. * @return {?}
  1986. */
  1987. function matcherFromTokens(tokens) {
  1988. var checkContext;
  1989. var matcher;
  1990. var j;
  1991. var len = tokens.length;
  1992. var leadingRelative = Expr.relative[tokens[0].type];
  1993. var implicitRelative = leadingRelative || Expr.relative[" "];
  1994. /** @type {number} */
  1995. var i = leadingRelative ? 1 : 0;
  1996. var matchContext = addCombinator(function(dataAndEvents) {
  1997. return dataAndEvents === checkContext;
  1998. }, implicitRelative, true);
  1999. var matchAnyContext = addCombinator(function(elem) {
  2000. return indexOf.call(checkContext, elem) > -1;
  2001. }, implicitRelative, true);
  2002. /** @type {Array} */
  2003. var matchers = [function(elem, context, xml) {
  2004. return!leadingRelative && (xml || context !== outermostContext) || ((checkContext = context).nodeType ? matchContext(elem, context, xml) : matchAnyContext(elem, context, xml));
  2005. }];
  2006. for (;len > i;i++) {
  2007. if (matcher = Expr.relative[tokens[i].type]) {
  2008. /** @type {Array} */
  2009. matchers = [addCombinator(elementMatcher(matchers), matcher)];
  2010. } else {
  2011. if (matcher = Expr.filter[tokens[i].type].apply(null, tokens[i].matches), matcher[expando]) {
  2012. /** @type {number} */
  2013. j = ++i;
  2014. for (;len > j;j++) {
  2015. if (Expr.relative[tokens[j].type]) {
  2016. break;
  2017. }
  2018. }
  2019. return setMatcher(i > 1 && elementMatcher(matchers), i > 1 && toSelector(tokens.slice(0, i - 1).concat({
  2020. value : " " === tokens[i - 2].type ? "*" : ""
  2021. })).replace(rtrim, "$1"), matcher, j > i && matcherFromTokens(tokens.slice(i, j)), len > j && matcherFromTokens(tokens = tokens.slice(j)), len > j && toSelector(tokens));
  2022. }
  2023. matchers.push(matcher);
  2024. }
  2025. }
  2026. return elementMatcher(matchers);
  2027. }
  2028. /**
  2029. * @param {Array} elementMatchers
  2030. * @param {Array} setMatchers
  2031. * @return {?}
  2032. */
  2033. function matcherFromGroupMatchers(elementMatchers, setMatchers) {
  2034. /** @type {number} */
  2035. var matcherCachedRuns = 0;
  2036. /** @type {boolean} */
  2037. var bySet = setMatchers.length > 0;
  2038. /** @type {boolean} */
  2039. var byElement = elementMatchers.length > 0;
  2040. /**
  2041. * @param {boolean} seed
  2042. * @param {Object} context
  2043. * @param {?} xml
  2044. * @param {Array} results
  2045. * @param {Object} expandContext
  2046. * @return {?}
  2047. */
  2048. var superMatcher = function(seed, context, xml, results, expandContext) {
  2049. var elem;
  2050. var j;
  2051. var matcher;
  2052. /** @type {Array} */
  2053. var setMatched = [];
  2054. /** @type {number} */
  2055. var matchedCount = 0;
  2056. /** @type {string} */
  2057. var i = "0";
  2058. var unmatched = seed && [];
  2059. /** @type {boolean} */
  2060. var T = null != expandContext;
  2061. var contextBackup = outermostContext;
  2062. var elems = seed || byElement && Expr.find.TAG("*", expandContext && context.parentNode || context);
  2063. var dirrunsUnique = dirruns += null == contextBackup ? 1 : Math.random() || 0.1;
  2064. if (T) {
  2065. outermostContext = context !== doc && context;
  2066. cachedruns = matcherCachedRuns;
  2067. }
  2068. for (;null != (elem = elems[i]);i++) {
  2069. if (byElement && elem) {
  2070. /** @type {number} */
  2071. j = 0;
  2072. for (;matcher = elementMatchers[j++];) {
  2073. if (matcher(elem, context, xml)) {
  2074. results.push(elem);
  2075. break;
  2076. }
  2077. }
  2078. if (T) {
  2079. dirruns = dirrunsUnique;
  2080. /** @type {number} */
  2081. cachedruns = ++matcherCachedRuns;
  2082. }
  2083. }
  2084. if (bySet) {
  2085. if (elem = !matcher && elem) {
  2086. matchedCount--;
  2087. }
  2088. if (seed) {
  2089. unmatched.push(elem);
  2090. }
  2091. }
  2092. }
  2093. if (matchedCount += i, bySet && i !== matchedCount) {
  2094. /** @type {number} */
  2095. j = 0;
  2096. for (;matcher = setMatchers[j++];) {
  2097. matcher(unmatched, setMatched, context, xml);
  2098. }
  2099. if (seed) {
  2100. if (matchedCount > 0) {
  2101. for (;i--;) {
  2102. if (!unmatched[i]) {
  2103. if (!setMatched[i]) {
  2104. setMatched[i] = pop.call(results);
  2105. }
  2106. }
  2107. }
  2108. }
  2109. setMatched = condense(setMatched);
  2110. }
  2111. push.apply(results, setMatched);
  2112. if (T) {
  2113. if (!seed) {
  2114. if (setMatched.length > 0) {
  2115. if (matchedCount + setMatchers.length > 1) {
  2116. Sizzle.uniqueSort(results);
  2117. }
  2118. }
  2119. }
  2120. }
  2121. }
  2122. return T && (dirruns = dirrunsUnique, outermostContext = contextBackup), unmatched;
  2123. };
  2124. return bySet ? markFunction(superMatcher) : superMatcher;
  2125. }
  2126. /**
  2127. * @param {string} selector
  2128. * @param {Array} contexts
  2129. * @param {Object} results
  2130. * @return {?}
  2131. */
  2132. function multipleContexts(selector, contexts, results) {
  2133. /** @type {number} */
  2134. var i = 0;
  2135. var len = contexts.length;
  2136. for (;len > i;i++) {
  2137. Sizzle(selector, contexts[i], results);
  2138. }
  2139. return results;
  2140. }
  2141. /**
  2142. * @param {(Function|string)} selector
  2143. * @param {Object} context
  2144. * @param {?} results
  2145. * @param {?} seed
  2146. * @return {?}
  2147. */
  2148. function select(selector, context, results, seed) {
  2149. var i;
  2150. var tokens;
  2151. var token;
  2152. var type;
  2153. var find;
  2154. var match = tokenize(selector);
  2155. if (!seed && 1 === match.length) {
  2156. if (tokens = match[0] = match[0].slice(0), tokens.length > 2 && ("ID" === (token = tokens[0]).type && (support.getById && (9 === context.nodeType && (documentIsHTML && Expr.relative[tokens[1].type]))))) {
  2157. if (context = (Expr.find.ID(token.matches[0].replace(runescape, funescape), context) || [])[0], !context) {
  2158. return results;
  2159. }
  2160. selector = selector.slice(tokens.shift().value.length);
  2161. }
  2162. i = matchExpr.needsContext.test(selector) ? 0 : tokens.length;
  2163. for (;i--;) {
  2164. if (token = tokens[i], Expr.relative[type = token.type]) {
  2165. break;
  2166. }
  2167. if ((find = Expr.find[type]) && (seed = find(token.matches[0].replace(runescape, funescape), rsibling.test(tokens[0].type) && context.parentNode || context))) {
  2168. if (tokens.splice(i, 1), selector = seed.length && toSelector(tokens), !selector) {
  2169. return push.apply(results, seed), results;
  2170. }
  2171. break;
  2172. }
  2173. }
  2174. }
  2175. return compile(selector, match)(seed, context, !documentIsHTML, results, rsibling.test(selector)), results;
  2176. }
  2177. var i;
  2178. var support;
  2179. var cachedruns;
  2180. var Expr;
  2181. var getText;
  2182. var objectToString;
  2183. var compile;
  2184. var outermostContext;
  2185. var sortInput;
  2186. var setDocument;
  2187. var doc;
  2188. var docElem;
  2189. var documentIsHTML;
  2190. var params;
  2191. var rbuggyQSA;
  2192. var matches;
  2193. var contains;
  2194. /** @type {string} */
  2195. var expando = "sizzle" + -new Date;
  2196. /** @type {Document} */
  2197. var preferredDoc = win.document;
  2198. /** @type {number} */
  2199. var dirruns = 0;
  2200. /** @type {number} */
  2201. var done = 0;
  2202. var classCache = createCache();
  2203. var tokenCache = createCache();
  2204. var compilerCache = createCache();
  2205. /** @type {boolean} */
  2206. var hasDuplicate = false;
  2207. /**
  2208. * @param {?} a
  2209. * @param {?} b
  2210. * @return {?}
  2211. */
  2212. var sortOrder = function(a, b) {
  2213. return a === b ? (hasDuplicate = true, 0) : 0;
  2214. };
  2215. /** @type {string} */
  2216. var strundefined = typeof undefined;
  2217. /** @type {number} */
  2218. var MAX_NEGATIVE = 1 << 31;
  2219. /** @type {function (this:Object, *): boolean} */
  2220. var hasOwn = {}.hasOwnProperty;
  2221. /** @type {Array} */
  2222. var arr = [];
  2223. /** @type {function (this:(Array.<T>|{length: number})): T} */
  2224. var pop = arr.pop;
  2225. /** @type {function (this:(Array.<T>|{length: number}), ...[T]): number} */
  2226. var push_native = arr.push;
  2227. /** @type {function (this:(Array.<T>|{length: number}), ...[T]): number} */
  2228. var push = arr.push;
  2229. /** @type {function (this:(Array.<T>|string|{length: number}), *=, *=): Array.<T>} */
  2230. var slice = arr.slice;
  2231. /** @type {function (this:(Array.<T>|string|{length: number}), T, number=): number} */
  2232. var indexOf = arr.indexOf || function(val) {
  2233. /** @type {number} */
  2234. var i = 0;
  2235. var l = this.length;
  2236. for (;l > i;i++) {
  2237. if (this[i] === val) {
  2238. return i;
  2239. }
  2240. }
  2241. return-1;
  2242. };
  2243. /** @type {string} */
  2244. var errStr = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped";
  2245. /** @type {string} */
  2246. var M = "[\\x20\\t\\r\\n\\f]";
  2247. /** @type {string} */
  2248. var characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+";
  2249. /** @type {string} */
  2250. var identifier = characterEncoding.replace("w", "w#");
  2251. /** @type {string} */
  2252. var base = "\\[" + M + "*(" + characterEncoding + ")" + M + "*(?:([*^$|!~]?=)" + M + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + M + "*\\]";
  2253. /** @type {string} */
  2254. var value = ":(" + characterEncoding + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + base.replace(3, 8) + ")*)|.*)\\)|)";
  2255. /** @type {RegExp} */
  2256. var rtrim = RegExp("^" + M + "+|((?:^|[^\\\\])(?:\\\\.)*)" + M + "+$", "g");
  2257. /** @type {RegExp} */
  2258. var rcombinators = RegExp("^" + M + "*," + M + "*");
  2259. /** @type {RegExp} */
  2260. var rcomma = RegExp("^" + M + "*([>+~]|" + M + ")" + M + "*");
  2261. /** @type {RegExp} */
  2262. var rsibling = RegExp(M + "*[+~]");
  2263. /** @type {RegExp} */
  2264. var reTrimSpace = RegExp("=" + M + "*([^\\]'\"]*)" + M + "*\\]", "g");
  2265. /** @type {RegExp} */
  2266. var isFunction = RegExp(value);
  2267. /** @type {RegExp} */
  2268. var ridentifier = RegExp("^" + identifier + "$");
  2269. var matchExpr = {
  2270. ID : RegExp("^#(" + characterEncoding + ")"),
  2271. CLASS : RegExp("^\\.(" + characterEncoding + ")"),
  2272. TAG : RegExp("^(" + characterEncoding.replace("w", "w*") + ")"),
  2273. ATTR : RegExp("^" + base),
  2274. PSEUDO : RegExp("^" + value),
  2275. CHILD : RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + M + "*(even|odd|(([+-]|)(\\d*)n|)" + M + "*(?:([+-]|)" + M + "*(\\d+)|))" + M + "*\\)|)", "i"),
  2276. bool : RegExp("^(?:" + errStr + ")$", "i"),
  2277. needsContext : RegExp("^" + M + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + M + "*((?:-\\d)?\\d*)" + M + "*\\)|)(?=[^-]|$)", "i")
  2278. };
  2279. /** @type {RegExp} */
  2280. var rnative = /^[^{]+\{\s*\[native \w/;
  2281. /** @type {RegExp} */
  2282. var rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/;
  2283. /** @type {RegExp} */
  2284. var rinputs = /^(?:input|select|textarea|button)$/i;
  2285. /** @type {RegExp} */
  2286. var rheader = /^h\d$/i;
  2287. /** @type {RegExp} */
  2288. var r20 = /'|\\/g;
  2289. /** @type {RegExp} */
  2290. var runescape = RegExp("\\\\([\\da-f]{1,6}" + M + "?|(" + M + ")|.)", "ig");
  2291. /**
  2292. * @param {?} _
  2293. * @param {(number|string)} escaped
  2294. * @param {boolean} escapedWhitespace
  2295. * @return {?}
  2296. */
  2297. var funescape = function(_, escaped, escapedWhitespace) {
  2298. /** @type {number} */
  2299. var high = "0x" + escaped - 65536;
  2300. return high !== high || escapedWhitespace ? escaped : 0 > high ? String.fromCharCode(high + 65536) : String.fromCharCode(55296 | high >> 10, 56320 | 1023 & high);
  2301. };
  2302. try {
  2303. push.apply(arr = slice.call(preferredDoc.childNodes), preferredDoc.childNodes);
  2304. arr[preferredDoc.childNodes.length].nodeType;
  2305. } catch (it) {
  2306. push = {
  2307. /** @type {function (?, Array): undefined} */
  2308. apply : arr.length ? function(target, els) {
  2309. push_native.apply(target, slice.call(els));
  2310. } : function(target, els) {
  2311. var j = target.length;
  2312. /** @type {number} */
  2313. var i = 0;
  2314. for (;target[j++] = els[i++];) {
  2315. }
  2316. /** @type {number} */
  2317. target.length = j - 1;
  2318. }
  2319. };
  2320. }
  2321. /** @type {function (Object): ?} */
  2322. objectToString = Sizzle.isXML = function(elem) {
  2323. var node = elem && (elem.ownerDocument || elem).documentElement;
  2324. return node ? "HTML" !== node.nodeName : false;
  2325. };
  2326. support = Sizzle.support = {};
  2327. /** @type {function (boolean): ?} */
  2328. setDocument = Sizzle.setDocument = function(node) {
  2329. var d = node ? node.ownerDocument || node : preferredDoc;
  2330. var parent = d.defaultView;
  2331. return d !== doc && (9 === d.nodeType && d.documentElement) ? (doc = d, docElem = d.documentElement, documentIsHTML = !objectToString(d), parent && (parent.attachEvent && (parent !== parent.top && parent.attachEvent("onbeforeunload", function() {
  2332. setDocument();
  2333. }))), support.attributes = assert(function(div) {
  2334. return div.className = "i", !div.getAttribute("className");
  2335. }), support.getElementsByTagName = assert(function(div) {
  2336. return div.appendChild(d.createComment("")), !div.getElementsByTagName("*").length;
  2337. }), support.getElementsByClassName = assert(function(div) {
  2338. return div.innerHTML = "<div class='a'></div><div class='a i'></div>", div.firstChild.className = "i", 2 === div.getElementsByClassName("i").length;
  2339. }), support.getById = assert(function(div) {
  2340. return docElem.appendChild(div).id = expando, !d.getElementsByName || !d.getElementsByName(expando).length;
  2341. }), support.getById ? (Expr.find.ID = function(id, context) {
  2342. if (typeof context.getElementById !== strundefined && documentIsHTML) {
  2343. var m = context.getElementById(id);
  2344. return m && m.parentNode ? [m] : [];
  2345. }
  2346. }, Expr.filter.ID = function(id) {
  2347. var attrId = id.replace(runescape, funescape);
  2348. return function(elem) {
  2349. return elem.getAttribute("id") === attrId;
  2350. };
  2351. }) : (delete Expr.find.ID, Expr.filter.ID = function(id) {
  2352. var attrId = id.replace(runescape, funescape);
  2353. return function(elem) {
  2354. var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id");
  2355. return node && node.value === attrId;
  2356. };
  2357. }), Expr.find.TAG = support.getElementsByTagName ? function(tag, root) {
  2358. return typeof root.getElementsByTagName !== strundefined ? root.getElementsByTagName(tag) : undefined;
  2359. } : function(tag, root) {
  2360. var cur;
  2361. /** @type {Array} */
  2362. var eventPath = [];
  2363. /** @type {number} */
  2364. var ri = 0;
  2365. var tmp = root.getElementsByTagName(tag);
  2366. if ("*" === tag) {
  2367. for (;cur = tmp[ri++];) {
  2368. if (1 === cur.nodeType) {
  2369. eventPath.push(cur);
  2370. }
  2371. }
  2372. return eventPath;
  2373. }
  2374. return tmp;
  2375. }, Expr.find.CLASS = support.getElementsByClassName && function(className, context) {
  2376. return typeof context.getElementsByClassName !== strundefined && documentIsHTML ? context.getElementsByClassName(className) : undefined;
  2377. }, rbuggyQSA = [], params = [], (support.qsa = rnative.test(d.querySelectorAll)) && (assert(function(div) {
  2378. /** @type {string} */
  2379. div.innerHTML = "<select><option selected=''></option></select>";
  2380. if (!div.querySelectorAll("[selected]").length) {
  2381. params.push("\\[" + M + "*(?:value|" + errStr + ")");
  2382. }
  2383. if (!div.querySelectorAll(":checked").length) {
  2384. params.push(":checked");
  2385. }
  2386. }), assert(function(div) {
  2387. var input = d.createElement("input");
  2388. input.setAttribute("type", "hidden");
  2389. div.appendChild(input).setAttribute("t", "");
  2390. if (div.querySelectorAll("[t^='']").length) {
  2391. params.push("[*^$]=" + M + "*(?:''|\"\")");
  2392. }
  2393. if (!div.querySelectorAll(":enabled").length) {
  2394. params.push(":enabled", ":disabled");
  2395. }
  2396. div.querySelectorAll("*,:x");
  2397. params.push(",.*:");
  2398. })), (support.matchesSelector = rnative.test(matches = docElem.webkitMatchesSelector || (docElem.mozMatchesSelector || (docElem.oMatchesSelector || docElem.msMatchesSelector)))) && assert(function(div) {
  2399. support.disconnectedMatch = matches.call(div, "div");
  2400. matches.call(div, "[s!='']:x");
  2401. rbuggyQSA.push("!=", value);
  2402. }), params = params.length && RegExp(params.join("|")), rbuggyQSA = rbuggyQSA.length && RegExp(rbuggyQSA.join("|")), contains = rnative.test(docElem.contains) || docElem.compareDocumentPosition ? function(a, b) {
  2403. var adown = 9 === a.nodeType ? a.documentElement : a;
  2404. var bup = b && b.parentNode;
  2405. return a === bup || !(!bup || (1 !== bup.nodeType || !(adown.contains ? adown.contains(bup) : a.compareDocumentPosition && 16 & a.compareDocumentPosition(bup))));
  2406. } : function(a, b) {
  2407. if (b) {
  2408. for (;b = b.parentNode;) {
  2409. if (b === a) {
  2410. return true;
  2411. }
  2412. }
  2413. }
  2414. return false;
  2415. }, sortOrder = docElem.compareDocumentPosition ? function(a, b) {
  2416. if (a === b) {
  2417. return hasDuplicate = true, 0;
  2418. }
  2419. var compare = b.compareDocumentPosition && (a.compareDocumentPosition && a.compareDocumentPosition(b));
  2420. return compare ? 1 & compare || !support.sortDetached && b.compareDocumentPosition(a) === compare ? a === d || contains(preferredDoc, a) ? -1 : b === d || contains(preferredDoc, b) ? 1 : sortInput ? indexOf.call(sortInput, a) - indexOf.call(sortInput, b) : 0 : 4 & compare ? -1 : 1 : a.compareDocumentPosition ? -1 : 1;
  2421. } : function(a, b) {
  2422. var cur;
  2423. /** @type {number} */
  2424. var i = 0;
  2425. var aup = a.parentNode;
  2426. var bup = b.parentNode;
  2427. /** @type {Array} */
  2428. var ap = [a];
  2429. /** @type {Array} */
  2430. var bp = [b];
  2431. if (a === b) {
  2432. return hasDuplicate = true, 0;
  2433. }
  2434. if (!aup || !bup) {
  2435. return a === d ? -1 : b === d ? 1 : aup ? -1 : bup ? 1 : sortInput ? indexOf.call(sortInput, a) - indexOf.call(sortInput, b) : 0;
  2436. }
  2437. if (aup === bup) {
  2438. return siblingCheck(a, b);
  2439. }
  2440. cur = a;
  2441. for (;cur = cur.parentNode;) {
  2442. ap.unshift(cur);
  2443. }
  2444. cur = b;
  2445. for (;cur = cur.parentNode;) {
  2446. bp.unshift(cur);
  2447. }
  2448. for (;ap[i] === bp[i];) {
  2449. i++;
  2450. }
  2451. return i ? siblingCheck(ap[i], bp[i]) : ap[i] === preferredDoc ? -1 : bp[i] === preferredDoc ? 1 : 0;
  2452. }, d) : doc;
  2453. };
  2454. /**
  2455. * @param {string} expr
  2456. * @param {?} elements
  2457. * @return {?}
  2458. */
  2459. Sizzle.matches = function(expr, elements) {
  2460. return Sizzle(expr, null, null, elements);
  2461. };
  2462. /**
  2463. * @param {HTMLElement} elem
  2464. * @param {string} expr
  2465. * @return {?}
  2466. */
  2467. Sizzle.matchesSelector = function(elem, expr) {
  2468. if ((elem.ownerDocument || elem) !== doc && setDocument(elem), expr = expr.replace(reTrimSpace, "='$1']"), !(!support.matchesSelector || (!documentIsHTML || (rbuggyQSA && rbuggyQSA.test(expr) || params && params.test(expr))))) {
  2469. try {
  2470. var ret = matches.call(elem, expr);
  2471. if (ret || (support.disconnectedMatch || elem.document && 11 !== elem.document.nodeType)) {
  2472. return ret;
  2473. }
  2474. } catch (i) {
  2475. }
  2476. }
  2477. return Sizzle(expr, doc, null, [elem]).length > 0;
  2478. };
  2479. /**
  2480. * @param {Object} context
  2481. * @param {Object} b
  2482. * @return {?}
  2483. */
  2484. Sizzle.contains = function(context, b) {
  2485. return(context.ownerDocument || context) !== doc && setDocument(context), contains(context, b);
  2486. };
  2487. /**
  2488. * @param {Object} elem
  2489. * @param {string} name
  2490. * @return {?}
  2491. */
  2492. Sizzle.attr = function(elem, name) {
  2493. if ((elem.ownerDocument || elem) !== doc) {
  2494. setDocument(elem);
  2495. }
  2496. var fn = Expr.attrHandle[name.toLowerCase()];
  2497. var val = fn && hasOwn.call(Expr.attrHandle, name.toLowerCase()) ? fn(elem, name, !documentIsHTML) : undefined;
  2498. return val === undefined ? support.attributes || !documentIsHTML ? elem.getAttribute(name) : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null : val;
  2499. };
  2500. /**
  2501. * @param {Object} elem
  2502. * @return {?}
  2503. */
  2504. Sizzle.error = function(elem) {
  2505. throw Error("Syntax error, unrecognized expression: " + elem);
  2506. };
  2507. /**
  2508. * @param {Array} results
  2509. * @return {?}
  2510. */
  2511. Sizzle.uniqueSort = function(results) {
  2512. var elem;
  2513. /** @type {Array} */
  2514. var duplicates = [];
  2515. /** @type {number} */
  2516. var j = 0;
  2517. /** @type {number} */
  2518. var i = 0;
  2519. if (hasDuplicate = !support.detectDuplicates, sortInput = !support.sortStable && results.slice(0), results.sort(sortOrder), hasDuplicate) {
  2520. for (;elem = results[i++];) {
  2521. if (elem === results[i]) {
  2522. /** @type {number} */
  2523. j = duplicates.push(i);
  2524. }
  2525. }
  2526. for (;j--;) {
  2527. results.splice(duplicates[j], 1);
  2528. }
  2529. }
  2530. return results;
  2531. };
  2532. /** @type {function (Object): ?} */
  2533. getText = Sizzle.getText = function(elem) {
  2534. var node;
  2535. /** @type {string} */
  2536. var ret = "";
  2537. /** @type {number} */
  2538. var pos = 0;
  2539. var nodeType = elem.nodeType;
  2540. if (nodeType) {
  2541. if (1 === nodeType || (9 === nodeType || 11 === nodeType)) {
  2542. if ("string" == typeof elem.textContent) {
  2543. return elem.textContent;
  2544. }
  2545. elem = elem.firstChild;
  2546. for (;elem;elem = elem.nextSibling) {
  2547. ret += getText(elem);
  2548. }
  2549. } else {
  2550. if (3 === nodeType || 4 === nodeType) {
  2551. return elem.nodeValue;
  2552. }
  2553. }
  2554. } else {
  2555. for (;node = elem[pos];pos++) {
  2556. ret += getText(node);
  2557. }
  2558. }
  2559. return ret;
  2560. };
  2561. Expr = Sizzle.selectors = {
  2562. cacheLength : 50,
  2563. /** @type {function (Function): ?} */
  2564. createPseudo : markFunction,
  2565. match : matchExpr,
  2566. attrHandle : {},
  2567. find : {},
  2568. relative : {
  2569. ">" : {
  2570. dir : "parentNode",
  2571. first : true
  2572. },
  2573. " " : {
  2574. dir : "parentNode"
  2575. },
  2576. "+" : {
  2577. dir : "previousSibling",
  2578. first : true
  2579. },
  2580. "~" : {
  2581. dir : "previousSibling"
  2582. }
  2583. },
  2584. preFilter : {
  2585. /**
  2586. * @param {Array} match
  2587. * @return {?}
  2588. */
  2589. ATTR : function(match) {
  2590. return match[1] = match[1].replace(runescape, funescape), match[3] = (match[4] || (match[5] || "")).replace(runescape, funescape), "~=" === match[2] && (match[3] = " " + match[3] + " "), match.slice(0, 4);
  2591. },
  2592. /**
  2593. * @param {Array} match
  2594. * @return {?}
  2595. */
  2596. CHILD : function(match) {
  2597. return match[1] = match[1].toLowerCase(), "nth" === match[1].slice(0, 3) ? (match[3] || Sizzle.error(match[0]), match[4] = +(match[4] ? match[5] + (match[6] || 1) : 2 * ("even" === match[3] || "odd" === match[3])), match[5] = +(match[7] + match[8] || "odd" === match[3])) : match[3] && Sizzle.error(match[0]), match;
  2598. },
  2599. /**
  2600. * @param {Array} match
  2601. * @return {?}
  2602. */
  2603. PSEUDO : function(match) {
  2604. var excess;
  2605. var unquoted = !match[5] && match[2];
  2606. return matchExpr.CHILD.test(match[0]) ? null : (match[3] && match[4] !== undefined ? match[2] = match[4] : unquoted && (isFunction.test(unquoted) && ((excess = tokenize(unquoted, true)) && ((excess = unquoted.indexOf(")", unquoted.length - excess) - unquoted.length) && (match[0] = match[0].slice(0, excess), match[2] = unquoted.slice(0, excess))))), match.slice(0, 3));
  2607. }
  2608. },
  2609. filter : {
  2610. /**
  2611. * @param {string} nodeNameSelector
  2612. * @return {?}
  2613. */
  2614. TAG : function(nodeNameSelector) {
  2615. var nodeName = nodeNameSelector.replace(runescape, funescape).toLowerCase();
  2616. return "*" === nodeNameSelector ? function() {
  2617. return true;
  2618. } : function(elem) {
  2619. return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
  2620. };
  2621. },
  2622. /**
  2623. * @param {string} className
  2624. * @return {?}
  2625. */
  2626. CLASS : function(className) {
  2627. var pattern = classCache[className + " "];
  2628. return pattern || (pattern = RegExp("(^|" + M + ")" + className + "(" + M + "|$)")) && classCache(className, function(elem) {
  2629. return pattern.test("string" == typeof elem.className && elem.className || (typeof elem.getAttribute !== strundefined && elem.getAttribute("class") || ""));
  2630. });
  2631. },
  2632. /**
  2633. * @param {string} name
  2634. * @param {string} not
  2635. * @param {string} b
  2636. * @return {?}
  2637. */
  2638. ATTR : function(name, not, b) {
  2639. return function(elem) {
  2640. var a = Sizzle.attr(elem, name);
  2641. return null == a ? "!=" === not : not ? (a += "", "=" === not ? a === b : "!=" === not ? a !== b : "^=" === not ? b && 0 === a.indexOf(b) : "*=" === not ? b && a.indexOf(b) > -1 : "$=" === not ? b && a.slice(-b.length) === b : "~=" === not ? (" " + a + " ").indexOf(b) > -1 : "|=" === not ? a === b || a.slice(0, b.length + 1) === b + "-" : false) : true;
  2642. };
  2643. },
  2644. /**
  2645. * @param {string} type
  2646. * @param {string} argument
  2647. * @param {?} dataAndEvents
  2648. * @param {number} first
  2649. * @param {number} last
  2650. * @return {?}
  2651. */
  2652. CHILD : function(type, argument, dataAndEvents, first, last) {
  2653. /** @type {boolean} */
  2654. var simple = "nth" !== type.slice(0, 3);
  2655. /** @type {boolean} */
  2656. var forward = "last" !== type.slice(-4);
  2657. /** @type {boolean} */
  2658. var ofType = "of-type" === argument;
  2659. return 1 === first && 0 === last ? function(contestant) {
  2660. return!!contestant.parentNode;
  2661. } : function(elem, dataAndEvents, xml) {
  2662. var cache;
  2663. var outerCache;
  2664. var node;
  2665. var diff;
  2666. var nodeIndex;
  2667. var eventPath;
  2668. /** @type {string} */
  2669. var which = simple !== forward ? "nextSibling" : "previousSibling";
  2670. var parent = elem.parentNode;
  2671. var name = ofType && elem.nodeName.toLowerCase();
  2672. /** @type {boolean} */
  2673. var useCache = !xml && !ofType;
  2674. if (parent) {
  2675. if (simple) {
  2676. for (;which;) {
  2677. /** @type {Node} */
  2678. node = elem;
  2679. for (;node = node[which];) {
  2680. if (ofType ? node.nodeName.toLowerCase() === name : 1 === node.nodeType) {
  2681. return false;
  2682. }
  2683. }
  2684. /** @type {(boolean|string)} */
  2685. eventPath = which = "only" === type && (!eventPath && "nextSibling");
  2686. }
  2687. return true;
  2688. }
  2689. if (eventPath = [forward ? parent.firstChild : parent.lastChild], forward && useCache) {
  2690. outerCache = parent[expando] || (parent[expando] = {});
  2691. cache = outerCache[type] || [];
  2692. nodeIndex = cache[0] === dirruns && cache[1];
  2693. diff = cache[0] === dirruns && cache[2];
  2694. node = nodeIndex && parent.childNodes[nodeIndex];
  2695. for (;node = ++nodeIndex && (node && node[which]) || ((diff = nodeIndex = 0) || eventPath.pop());) {
  2696. if (1 === node.nodeType && (++diff && node === elem)) {
  2697. /** @type {Array} */
  2698. outerCache[type] = [dirruns, nodeIndex, diff];
  2699. break;
  2700. }
  2701. }
  2702. } else {
  2703. if (useCache && ((cache = (elem[expando] || (elem[expando] = {}))[type]) && cache[0] === dirruns)) {
  2704. diff = cache[1];
  2705. } else {
  2706. for (;node = ++nodeIndex && (node && node[which]) || ((diff = nodeIndex = 0) || eventPath.pop());) {
  2707. if ((ofType ? node.nodeName.toLowerCase() === name : 1 === node.nodeType) && (++diff && (useCache && ((node[expando] || (node[expando] = {}))[type] = [dirruns, diff]), node === elem))) {
  2708. break;
  2709. }
  2710. }
  2711. }
  2712. }
  2713. return diff -= last, diff === first || 0 === diff % first && diff / first >= 0;
  2714. }
  2715. };
  2716. },
  2717. /**
  2718. * @param {string} pseudo
  2719. * @param {?} argument
  2720. * @return {?}
  2721. */
  2722. PSEUDO : function(pseudo, argument) {
  2723. var args;
  2724. var fn = Expr.pseudos[pseudo] || (Expr.setFilters[pseudo.toLowerCase()] || Sizzle.error("unsupported pseudo: " + pseudo));
  2725. return fn[expando] ? fn(argument) : fn.length > 1 ? (args = [pseudo, pseudo, "", argument], Expr.setFilters.hasOwnProperty(pseudo.toLowerCase()) ? markFunction(function(seed, matches) {
  2726. var idx;
  2727. var matched = fn(seed, argument);
  2728. var i = matched.length;
  2729. for (;i--;) {
  2730. /** @type {number} */
  2731. idx = indexOf.call(seed, matched[i]);
  2732. /** @type {boolean} */
  2733. seed[idx] = !(matches[idx] = matched[i]);
  2734. }
  2735. }) : function(err) {
  2736. return fn(err, 0, args);
  2737. }) : fn;
  2738. }
  2739. },
  2740. pseudos : {
  2741. not : markFunction(function(selector) {
  2742. /** @type {Array} */
  2743. var elem = [];
  2744. /** @type {Array} */
  2745. var memory = [];
  2746. var matcher = compile(selector.replace(rtrim, "$1"));
  2747. return matcher[expando] ? markFunction(function(seed, qs, dataAndEvents, xml) {
  2748. var val;
  2749. var unmatched = matcher(seed, null, xml, []);
  2750. var i = seed.length;
  2751. for (;i--;) {
  2752. if (val = unmatched[i]) {
  2753. /** @type {boolean} */
  2754. seed[i] = !(qs[i] = val);
  2755. }
  2756. }
  2757. }) : function(value, dataAndEvents, xml) {
  2758. return elem[0] = value, matcher(elem, null, xml, memory), !memory.pop();
  2759. };
  2760. }),
  2761. has : markFunction(function(expr) {
  2762. return function(elem) {
  2763. return Sizzle(expr, elem).length > 0;
  2764. };
  2765. }),
  2766. contains : markFunction(function(objId) {
  2767. return function(elem) {
  2768. return(elem.textContent || (elem.innerText || getText(elem))).indexOf(objId) > -1;
  2769. };
  2770. }),
  2771. lang : markFunction(function(lang) {
  2772. return ridentifier.test(lang || "") || Sizzle.error("unsupported lang: " + lang), lang = lang.replace(runescape, funescape).toLowerCase(), function(elem) {
  2773. var elemLang;
  2774. do {
  2775. if (elemLang = documentIsHTML ? elem.lang : elem.getAttribute("xml:lang") || elem.getAttribute("lang")) {
  2776. return elemLang = elemLang.toLowerCase(), elemLang === lang || 0 === elemLang.indexOf(lang + "-");
  2777. }
  2778. } while ((elem = elem.parentNode) && 1 === elem.nodeType);
  2779. return false;
  2780. };
  2781. }),
  2782. /**
  2783. * @param {Object} path
  2784. * @return {?}
  2785. */
  2786. target : function(path) {
  2787. /** @type {string} */
  2788. var models = win.location && win.location.hash;
  2789. return models && models.slice(1) === path.id;
  2790. },
  2791. /**
  2792. * @param {undefined} elem
  2793. * @return {?}
  2794. */
  2795. root : function(elem) {
  2796. return elem === docElem;
  2797. },
  2798. /**
  2799. * @param {Object} elem
  2800. * @return {?}
  2801. */
  2802. focus : function(elem) {
  2803. return elem === doc.activeElement && ((!doc.hasFocus || doc.hasFocus()) && !!(elem.type || (elem.href || ~elem.tabIndex)));
  2804. },
  2805. /**
  2806. * @param {EventTarget} a
  2807. * @return {?}
  2808. */
  2809. enabled : function(a) {
  2810. return a.disabled === false;
  2811. },
  2812. /**
  2813. * @param {EventTarget} elem
  2814. * @return {?}
  2815. */
  2816. disabled : function(elem) {
  2817. return elem.disabled === true;
  2818. },
  2819. /**
  2820. * @param {Node} node
  2821. * @return {?}
  2822. */
  2823. checked : function(node) {
  2824. var b = node.nodeName.toLowerCase();
  2825. return "input" === b && !!node.checked || "option" === b && !!node.selected;
  2826. },
  2827. /**
  2828. * @param {Node} elem
  2829. * @return {?}
  2830. */
  2831. selected : function(elem) {
  2832. return elem.parentNode && elem.parentNode.selectedIndex, elem.selected === true;
  2833. },
  2834. /**
  2835. * @param {Object} elem
  2836. * @return {?}
  2837. */
  2838. empty : function(elem) {
  2839. elem = elem.firstChild;
  2840. for (;elem;elem = elem.nextSibling) {
  2841. if (elem.nodeName > "@" || (3 === elem.nodeType || 4 === elem.nodeType)) {
  2842. return false;
  2843. }
  2844. }
  2845. return true;
  2846. },
  2847. /**
  2848. * @param {Object} elem
  2849. * @return {?}
  2850. */
  2851. parent : function(elem) {
  2852. return!Expr.pseudos.empty(elem);
  2853. },
  2854. /**
  2855. * @param {Node} elem
  2856. * @return {?}
  2857. */
  2858. header : function(elem) {
  2859. return rheader.test(elem.nodeName);
  2860. },
  2861. /**
  2862. * @param {Node} elem
  2863. * @return {?}
  2864. */
  2865. input : function(elem) {
  2866. return rinputs.test(elem.nodeName);
  2867. },
  2868. /**
  2869. * @param {Node} elem
  2870. * @return {?}
  2871. */
  2872. button : function(elem) {
  2873. var b = elem.nodeName.toLowerCase();
  2874. return "input" === b && "button" === elem.type || "button" === b;
  2875. },
  2876. /**
  2877. * @param {Object} elem
  2878. * @return {?}
  2879. */
  2880. text : function(elem) {
  2881. var evt;
  2882. return "input" === elem.nodeName.toLowerCase() && ("text" === elem.type && (null == (evt = elem.getAttribute("type")) || evt.toLowerCase() === elem.type));
  2883. },
  2884. first : createPositionalPseudo(function() {
  2885. return[0];
  2886. }),
  2887. last : createPositionalPseudo(function(dataAndEvents, deepDataAndEvents) {
  2888. return[deepDataAndEvents - 1];
  2889. }),
  2890. eq : createPositionalPseudo(function(dataAndEvents, length, index) {
  2891. return[0 > index ? index + length : index];
  2892. }),
  2893. even : createPositionalPseudo(function(assigns, dataAndEvents) {
  2894. /** @type {number} */
  2895. var vvar = 0;
  2896. for (;dataAndEvents > vvar;vvar += 2) {
  2897. assigns.push(vvar);
  2898. }
  2899. return assigns;
  2900. }),
  2901. odd : createPositionalPseudo(function(assigns, dataAndEvents) {
  2902. /** @type {number} */
  2903. var vvar = 1;
  2904. for (;dataAndEvents > vvar;vvar += 2) {
  2905. assigns.push(vvar);
  2906. }
  2907. return assigns;
  2908. }),
  2909. lt : createPositionalPseudo(function(assigns, length, index) {
  2910. var vvar = 0 > index ? index + length : index;
  2911. for (;--vvar >= 0;) {
  2912. assigns.push(vvar);
  2913. }
  2914. return assigns;
  2915. }),
  2916. gt : createPositionalPseudo(function(assigns, length, index) {
  2917. var vvar = 0 > index ? index + length : index;
  2918. for (;length > ++vvar;) {
  2919. assigns.push(vvar);
  2920. }
  2921. return assigns;
  2922. })
  2923. }
  2924. };
  2925. Expr.pseudos.nth = Expr.pseudos.eq;
  2926. for (i in{
  2927. radio : true,
  2928. checkbox : true,
  2929. file : true,
  2930. password : true,
  2931. image : true
  2932. }) {
  2933. Expr.pseudos[i] = createInputPseudo(i);
  2934. }
  2935. for (i in{
  2936. submit : true,
  2937. reset : true
  2938. }) {
  2939. Expr.pseudos[i] = createButtonPseudo(i);
  2940. }
  2941. setFilters.prototype = Expr.filters = Expr.pseudos;
  2942. Expr.setFilters = new setFilters;
  2943. /** @type {function (string, Array): ?} */
  2944. compile = Sizzle.compile = function(selector, group) {
  2945. var i;
  2946. /** @type {Array} */
  2947. var setMatchers = [];
  2948. /** @type {Array} */
  2949. var elementMatchers = [];
  2950. var cached = compilerCache[selector + " "];
  2951. if (!cached) {
  2952. if (!group) {
  2953. group = tokenize(selector);
  2954. }
  2955. i = group.length;
  2956. for (;i--;) {
  2957. cached = matcherFromTokens(group[i]);
  2958. if (cached[expando]) {
  2959. setMatchers.push(cached);
  2960. } else {
  2961. elementMatchers.push(cached);
  2962. }
  2963. }
  2964. cached = compilerCache(selector, matcherFromGroupMatchers(elementMatchers, setMatchers));
  2965. }
  2966. return cached;
  2967. };
  2968. /** @type {boolean} */
  2969. support.sortStable = expando.split("").sort(sortOrder).join("") === expando;
  2970. support.detectDuplicates = hasDuplicate;
  2971. setDocument();
  2972. support.sortDetached = assert(function(div1) {
  2973. return 1 & div1.compareDocumentPosition(doc.createElement("div"));
  2974. });
  2975. if (!assert(function(div) {
  2976. return div.innerHTML = "<a href='#'></a>", "#" === div.firstChild.getAttribute("href");
  2977. })) {
  2978. addHandle("type|href|height|width", function(elem, name, isXML) {
  2979. return isXML ? undefined : elem.getAttribute(name, "type" === name.toLowerCase() ? 1 : 2);
  2980. });
  2981. }
  2982. if (!(support.attributes && assert(function(div) {
  2983. return div.innerHTML = "<input/>", div.firstChild.setAttribute("value", ""), "" === div.firstChild.getAttribute("value");
  2984. }))) {
  2985. addHandle("value", function(target, dataAndEvents, defaultValue) {
  2986. return defaultValue || "input" !== target.nodeName.toLowerCase() ? undefined : target.defaultValue;
  2987. });
  2988. }
  2989. if (!assert(function(div) {
  2990. return null == div.getAttribute("disabled");
  2991. })) {
  2992. addHandle(errStr, function(elem, name, isXML) {
  2993. var val;
  2994. return isXML ? undefined : (val = elem.getAttributeNode(name)) && val.specified ? val.value : elem[name] === true ? name.toLowerCase() : null;
  2995. });
  2996. }
  2997. /** @type {function (string, Object, Object, ?): ?} */
  2998. jQuery.find = Sizzle;
  2999. jQuery.expr = Sizzle.selectors;
  3000. jQuery.expr[":"] = jQuery.expr.pseudos;
  3001. /** @type {function (Array): ?} */
  3002. jQuery.unique = Sizzle.uniqueSort;
  3003. /** @type {function (Object): ?} */
  3004. jQuery.text = Sizzle.getText;
  3005. /** @type {function (Object): ?} */
  3006. jQuery.isXMLDoc = Sizzle.isXML;
  3007. /** @type {function (Object, Object): ?} */
  3008. jQuery.contains = Sizzle.contains;
  3009. })(win);
  3010. var optionsCache = {};
  3011. /**
  3012. * @param {Object} options
  3013. * @return {?}
  3014. */
  3015. jQuery.Callbacks = function(options) {
  3016. options = "string" == typeof options ? optionsCache[options] || createOptions(options) : jQuery.extend({}, options);
  3017. var memory;
  3018. var n;
  3019. var r;
  3020. var firingStart;
  3021. var i;
  3022. var firingIndex;
  3023. /** @type {Array} */
  3024. var list = [];
  3025. /** @type {(Array|boolean)} */
  3026. var stack = !options.once && [];
  3027. /**
  3028. * @param {Array} data
  3029. * @return {undefined}
  3030. */
  3031. var fire = function(data) {
  3032. memory = options.memory && data;
  3033. /** @type {boolean} */
  3034. n = true;
  3035. firingIndex = firingStart || 0;
  3036. /** @type {number} */
  3037. firingStart = 0;
  3038. i = list.length;
  3039. /** @type {boolean} */
  3040. r = true;
  3041. for (;list && i > firingIndex;firingIndex++) {
  3042. if (list[firingIndex].apply(data[0], data[1]) === false && options.stopOnFalse) {
  3043. /** @type {boolean} */
  3044. memory = false;
  3045. break;
  3046. }
  3047. }
  3048. /** @type {boolean} */
  3049. r = false;
  3050. if (list) {
  3051. if (stack) {
  3052. if (stack.length) {
  3053. fire(stack.shift());
  3054. }
  3055. } else {
  3056. if (memory) {
  3057. /** @type {Array} */
  3058. list = [];
  3059. } else {
  3060. self.disable();
  3061. }
  3062. }
  3063. }
  3064. };
  3065. var self = {
  3066. /**
  3067. * @return {?}
  3068. */
  3069. add : function() {
  3070. if (list) {
  3071. var start = list.length;
  3072. (function add(args) {
  3073. jQuery.each(args, function(dataAndEvents, arg) {
  3074. var type = jQuery.type(arg);
  3075. if ("function" === type) {
  3076. if (!(options.unique && self.has(arg))) {
  3077. list.push(arg);
  3078. }
  3079. } else {
  3080. if (arg) {
  3081. if (arg.length) {
  3082. if ("string" !== type) {
  3083. add(arg);
  3084. }
  3085. }
  3086. }
  3087. }
  3088. });
  3089. })(arguments);
  3090. if (r) {
  3091. i = list.length;
  3092. } else {
  3093. if (memory) {
  3094. firingStart = start;
  3095. fire(memory);
  3096. }
  3097. }
  3098. }
  3099. return this;
  3100. },
  3101. /**
  3102. * @return {?}
  3103. */
  3104. remove : function() {
  3105. return list && jQuery.each(arguments, function(dataAndEvents, arg) {
  3106. var index;
  3107. for (;(index = jQuery.inArray(arg, list, index)) > -1;) {
  3108. list.splice(index, 1);
  3109. if (r) {
  3110. if (i >= index) {
  3111. i--;
  3112. }
  3113. if (firingIndex >= index) {
  3114. firingIndex--;
  3115. }
  3116. }
  3117. }
  3118. }), this;
  3119. },
  3120. /**
  3121. * @param {Object} fn
  3122. * @return {?}
  3123. */
  3124. has : function(fn) {
  3125. return fn ? jQuery.inArray(fn, list) > -1 : !(!list || !list.length);
  3126. },
  3127. /**
  3128. * @return {?}
  3129. */
  3130. empty : function() {
  3131. return list = [], i = 0, this;
  3132. },
  3133. /**
  3134. * @return {?}
  3135. */
  3136. disable : function() {
  3137. return list = stack = memory = undefined, this;
  3138. },
  3139. /**
  3140. * @return {?}
  3141. */
  3142. disabled : function() {
  3143. return!list;
  3144. },
  3145. /**
  3146. * @return {?}
  3147. */
  3148. lock : function() {
  3149. return stack = undefined, memory || self.disable(), this;
  3150. },
  3151. /**
  3152. * @return {?}
  3153. */
  3154. locked : function() {
  3155. return!stack;
  3156. },
  3157. /**
  3158. * @param {?} context
  3159. * @param {Array} args
  3160. * @return {?}
  3161. */
  3162. fireWith : function(context, args) {
  3163. return!list || (n && !stack || (args = args || [], args = [context, args.slice ? args.slice() : args], r ? stack.push(args) : fire(args))), this;
  3164. },
  3165. /**
  3166. * @return {?}
  3167. */
  3168. fire : function() {
  3169. return self.fireWith(this, arguments), this;
  3170. },
  3171. /**
  3172. * @return {?}
  3173. */
  3174. fired : function() {
  3175. return!!n;
  3176. }
  3177. };
  3178. return self;
  3179. };
  3180. jQuery.extend({
  3181. /**
  3182. * @param {Function} func
  3183. * @return {?}
  3184. */
  3185. Deferred : function(func) {
  3186. /** @type {Array} */
  3187. var which = [["resolve", "done", jQuery.Callbacks("once memory"), "resolved"], ["reject", "fail", jQuery.Callbacks("once memory"), "rejected"], ["notify", "progress", jQuery.Callbacks("memory")]];
  3188. /** @type {string} */
  3189. var state = "pending";
  3190. var promise = {
  3191. /**
  3192. * @return {?}
  3193. */
  3194. state : function() {
  3195. return state;
  3196. },
  3197. /**
  3198. * @return {?}
  3199. */
  3200. always : function() {
  3201. return deferred.done(arguments).fail(arguments), this;
  3202. },
  3203. /**
  3204. * @return {?}
  3205. */
  3206. then : function() {
  3207. /** @type {Arguments} */
  3208. var fns = arguments;
  3209. return jQuery.Deferred(function(newDefer) {
  3210. jQuery.each(which, function(i, tuple) {
  3211. var action = tuple[0];
  3212. var fn = jQuery.isFunction(fns[i]) && fns[i];
  3213. deferred[tuple[1]](function() {
  3214. var returned = fn && fn.apply(this, arguments);
  3215. if (returned && jQuery.isFunction(returned.promise)) {
  3216. returned.promise().done(newDefer.resolve).fail(newDefer.reject).progress(newDefer.notify);
  3217. } else {
  3218. newDefer[action + "With"](this === promise ? newDefer.promise() : this, fn ? [returned] : arguments);
  3219. }
  3220. });
  3221. });
  3222. /** @type {null} */
  3223. fns = null;
  3224. }).promise();
  3225. },
  3226. /**
  3227. * @param {string} obj
  3228. * @return {?}
  3229. */
  3230. promise : function(obj) {
  3231. return null != obj ? jQuery.extend(obj, promise) : promise;
  3232. }
  3233. };
  3234. var deferred = {};
  3235. return promise.pipe = promise.then, jQuery.each(which, function(dataAndEvents, tuple) {
  3236. var list = tuple[2];
  3237. var stateString = tuple[3];
  3238. promise[tuple[1]] = list.add;
  3239. if (stateString) {
  3240. list.add(function() {
  3241. state = stateString;
  3242. }, which[1 ^ dataAndEvents][2].disable, which[2][2].lock);
  3243. }
  3244. /**
  3245. * @return {?}
  3246. */
  3247. deferred[tuple[0]] = function() {
  3248. return deferred[tuple[0] + "With"](this === deferred ? promise : this, arguments), this;
  3249. };
  3250. deferred[tuple[0] + "With"] = list.fireWith;
  3251. }), promise.promise(deferred), func && func.call(deferred, deferred), deferred;
  3252. },
  3253. /**
  3254. * @param {Object} subordinate
  3255. * @return {?}
  3256. */
  3257. when : function(subordinate) {
  3258. /** @type {number} */
  3259. var i = 0;
  3260. /** @type {Array.<?>} */
  3261. var resolveValues = core_slice.call(arguments);
  3262. /** @type {number} */
  3263. var length = resolveValues.length;
  3264. /** @type {number} */
  3265. var remaining = 1 !== length || subordinate && jQuery.isFunction(subordinate.promise) ? length : 0;
  3266. var deferred = 1 === remaining ? subordinate : jQuery.Deferred();
  3267. /**
  3268. * @param {number} i
  3269. * @param {(Array|NodeList)} contexts
  3270. * @param {Array} values
  3271. * @return {?}
  3272. */
  3273. var updateFunc = function(i, contexts, values) {
  3274. return function(value) {
  3275. contexts[i] = this;
  3276. values[i] = arguments.length > 1 ? core_slice.call(arguments) : value;
  3277. if (values === progressValues) {
  3278. deferred.notifyWith(contexts, values);
  3279. } else {
  3280. if (!--remaining) {
  3281. deferred.resolveWith(contexts, values);
  3282. }
  3283. }
  3284. };
  3285. };
  3286. var progressValues;
  3287. var progressContexts;
  3288. var resolveContexts;
  3289. if (length > 1) {
  3290. /** @type {Array} */
  3291. progressValues = Array(length);
  3292. /** @type {Array} */
  3293. progressContexts = Array(length);
  3294. /** @type {Array} */
  3295. resolveContexts = Array(length);
  3296. for (;length > i;i++) {
  3297. if (resolveValues[i] && jQuery.isFunction(resolveValues[i].promise)) {
  3298. resolveValues[i].promise().done(updateFunc(i, resolveContexts, resolveValues)).fail(deferred.reject).progress(updateFunc(i, progressContexts, progressValues));
  3299. } else {
  3300. --remaining;
  3301. }
  3302. }
  3303. }
  3304. return remaining || deferred.resolveWith(resolveContexts, resolveValues), deferred.promise();
  3305. }
  3306. });
  3307. jQuery.support = function(support) {
  3308. /** @type {Element} */
  3309. var input = doc.createElement("input");
  3310. /** @type {DocumentFragment} */
  3311. var fragment = doc.createDocumentFragment();
  3312. /** @type {Element} */
  3313. var div = doc.createElement("div");
  3314. /** @type {Element} */
  3315. var select = doc.createElement("select");
  3316. /** @type {(Node|null)} */
  3317. var opt = select.appendChild(doc.createElement("option"));
  3318. return input.type ? (input.type = "checkbox", support.checkOn = "" !== input.value, support.optSelected = opt.selected, support.reliableMarginRight = true, support.boxSizingReliable = true, support.pixelPosition = false, input.checked = true, support.noCloneChecked = input.cloneNode(true).checked, select.disabled = true, support.optDisabled = !opt.disabled, input = doc.createElement("input"), input.value = "t", input.type = "radio", support.radioValue = "t" === input.value, input.setAttribute("checked",
  3319. "t"), input.setAttribute("name", "t"), fragment.appendChild(input), support.checkClone = fragment.cloneNode(true).cloneNode(true).lastChild.checked, support.focusinBubbles = "onfocusin" in win, div.style.backgroundClip = "content-box", div.cloneNode(true).style.backgroundClip = "", support.clearCloneStyle = "content-box" === div.style.backgroundClip, jQuery(function() {
  3320. var container;
  3321. var marginDiv;
  3322. /** @type {string} */
  3323. var divReset = "padding:0;margin:0;border:0;display:block;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box";
  3324. var body = doc.getElementsByTagName("body")[0];
  3325. if (body) {
  3326. /** @type {Element} */
  3327. container = doc.createElement("div");
  3328. /** @type {string} */
  3329. container.style.cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px";
  3330. body.appendChild(container).appendChild(div);
  3331. /** @type {string} */
  3332. div.innerHTML = "";
  3333. /** @type {string} */
  3334. div.style.cssText = "-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%";
  3335. jQuery.swap(body, null != body.style.zoom ? {
  3336. zoom : 1
  3337. } : {}, function() {
  3338. /** @type {boolean} */
  3339. support.boxSizing = 4 === div.offsetWidth;
  3340. });
  3341. if (win.getComputedStyle) {
  3342. /** @type {boolean} */
  3343. support.pixelPosition = "1%" !== (win.getComputedStyle(div, null) || {}).top;
  3344. /** @type {boolean} */
  3345. support.boxSizingReliable = "4px" === (win.getComputedStyle(div, null) || {
  3346. width : "4px"
  3347. }).width;
  3348. /** @type {(Node|null)} */
  3349. marginDiv = div.appendChild(doc.createElement("div"));
  3350. /** @type {string} */
  3351. marginDiv.style.cssText = div.style.cssText = divReset;
  3352. /** @type {string} */
  3353. marginDiv.style.marginRight = marginDiv.style.width = "0";
  3354. /** @type {string} */
  3355. div.style.width = "1px";
  3356. /** @type {boolean} */
  3357. support.reliableMarginRight = !parseFloat((win.getComputedStyle(marginDiv, null) || {}).marginRight);
  3358. }
  3359. body.removeChild(container);
  3360. }
  3361. }), support) : support;
  3362. }({});
  3363. var data_user;
  3364. var data_priv;
  3365. /** @type {RegExp} */
  3366. var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/;
  3367. /** @type {RegExp} */
  3368. var r20 = /([A-Z])/g;
  3369. /** @type {number} */
  3370. Data.uid = 1;
  3371. /**
  3372. * @param {Object} owner
  3373. * @return {?}
  3374. */
  3375. Data.accepts = function(owner) {
  3376. return owner.nodeType ? 1 === owner.nodeType || 9 === owner.nodeType : true;
  3377. };
  3378. Data.prototype = {
  3379. /**
  3380. * @param {Object} owner
  3381. * @return {?}
  3382. */
  3383. key : function(owner) {
  3384. if (!Data.accepts(owner)) {
  3385. return 0;
  3386. }
  3387. var descriptor = {};
  3388. var unlock = owner[this.expando];
  3389. if (!unlock) {
  3390. /** @type {number} */
  3391. unlock = Data.uid++;
  3392. try {
  3393. descriptor[this.expando] = {
  3394. value : unlock
  3395. };
  3396. Object.defineProperties(owner, descriptor);
  3397. } catch (r) {
  3398. /** @type {number} */
  3399. descriptor[this.expando] = unlock;
  3400. jQuery.extend(owner, descriptor);
  3401. }
  3402. }
  3403. return this.cache[unlock] || (this.cache[unlock] = {}), unlock;
  3404. },
  3405. /**
  3406. * @param {Object} owner
  3407. * @param {string} data
  3408. * @param {string} value
  3409. * @return {?}
  3410. */
  3411. set : function(owner, data, value) {
  3412. var prop;
  3413. var unlock = this.key(owner);
  3414. var cache = this.cache[unlock];
  3415. if ("string" == typeof data) {
  3416. /** @type {string} */
  3417. cache[data] = value;
  3418. } else {
  3419. if (jQuery.isEmptyObject(cache)) {
  3420. jQuery.extend(this.cache[unlock], data);
  3421. } else {
  3422. for (prop in data) {
  3423. cache[prop] = data[prop];
  3424. }
  3425. }
  3426. }
  3427. return cache;
  3428. },
  3429. /**
  3430. * @param {Object} owner
  3431. * @param {string} key
  3432. * @return {?}
  3433. */
  3434. get : function(owner, key) {
  3435. var cache = this.cache[this.key(owner)];
  3436. return key === undefined ? cache : cache[key];
  3437. },
  3438. /**
  3439. * @param {Object} owner
  3440. * @param {string} key
  3441. * @param {string} value
  3442. * @return {?}
  3443. */
  3444. access : function(owner, key, value) {
  3445. var stored;
  3446. return key === undefined || key && ("string" == typeof key && value === undefined) ? (stored = this.get(owner, key), stored !== undefined ? stored : this.get(owner, jQuery.camelCase(key))) : (this.set(owner, key, value), value !== undefined ? value : key);
  3447. },
  3448. /**
  3449. * @param {Object} owner
  3450. * @param {string} key
  3451. * @return {undefined}
  3452. */
  3453. remove : function(owner, key) {
  3454. var i;
  3455. var name;
  3456. var camel;
  3457. var unlock = this.key(owner);
  3458. var cache = this.cache[unlock];
  3459. if (key === undefined) {
  3460. this.cache[unlock] = {};
  3461. } else {
  3462. if (jQuery.isArray(key)) {
  3463. name = key.concat(key.map(jQuery.camelCase));
  3464. } else {
  3465. camel = jQuery.camelCase(key);
  3466. if (key in cache) {
  3467. /** @type {Array} */
  3468. name = [key, camel];
  3469. } else {
  3470. name = camel;
  3471. name = name in cache ? [name] : name.match(core_rnotwhite) || [];
  3472. }
  3473. }
  3474. i = name.length;
  3475. for (;i--;) {
  3476. delete cache[name[i]];
  3477. }
  3478. }
  3479. },
  3480. /**
  3481. * @param {Object} owner
  3482. * @return {?}
  3483. */
  3484. hasData : function(owner) {
  3485. return!jQuery.isEmptyObject(this.cache[owner[this.expando]] || {});
  3486. },
  3487. /**
  3488. * @param {?} owner
  3489. * @return {undefined}
  3490. */
  3491. discard : function(owner) {
  3492. if (owner[this.expando]) {
  3493. delete this.cache[owner[this.expando]];
  3494. }
  3495. }
  3496. };
  3497. data_user = new Data;
  3498. data_priv = new Data;
  3499. jQuery.extend({
  3500. /** @type {function (Object): ?} */
  3501. acceptData : Data.accepts,
  3502. /**
  3503. * @param {Object} elem
  3504. * @return {?}
  3505. */
  3506. hasData : function(elem) {
  3507. return data_user.hasData(elem) || data_priv.hasData(elem);
  3508. },
  3509. /**
  3510. * @param {Object} elem
  3511. * @param {?} name
  3512. * @param {Object} data
  3513. * @return {?}
  3514. */
  3515. data : function(elem, name, data) {
  3516. return data_user.access(elem, name, data);
  3517. },
  3518. /**
  3519. * @param {Object} elem
  3520. * @param {string} key
  3521. * @return {undefined}
  3522. */
  3523. removeData : function(elem, key) {
  3524. data_user.remove(elem, key);
  3525. },
  3526. /**
  3527. * @param {Object} elem
  3528. * @param {Object} name
  3529. * @param {string} data
  3530. * @return {?}
  3531. */
  3532. _data : function(elem, name, data) {
  3533. return data_priv.access(elem, name, data);
  3534. },
  3535. /**
  3536. * @param {Object} elem
  3537. * @param {string} name
  3538. * @return {undefined}
  3539. */
  3540. _removeData : function(elem, name) {
  3541. data_priv.remove(elem, name);
  3542. }
  3543. });
  3544. jQuery.fn.extend({
  3545. /**
  3546. * @param {string} key
  3547. * @param {Object} value
  3548. * @return {?}
  3549. */
  3550. data : function(key, value) {
  3551. var attrs;
  3552. var name;
  3553. var elem = this[0];
  3554. /** @type {number} */
  3555. var a = 0;
  3556. /** @type {null} */
  3557. var data = null;
  3558. if (key === undefined) {
  3559. if (this.length && (data = data_user.get(elem), 1 === elem.nodeType && !data_priv.get(elem, "hasDataAttrs"))) {
  3560. attrs = elem.attributes;
  3561. for (;attrs.length > a;a++) {
  3562. name = attrs[a].name;
  3563. if (0 === name.indexOf("data-")) {
  3564. name = jQuery.camelCase(name.slice(5));
  3565. dataAttr(elem, name, data[name]);
  3566. }
  3567. }
  3568. data_priv.set(elem, "hasDataAttrs", true);
  3569. }
  3570. return data;
  3571. }
  3572. return "object" == typeof key ? this.each(function() {
  3573. data_user.set(this, key);
  3574. }) : jQuery.access(this, function(value) {
  3575. var data;
  3576. var camelKey = jQuery.camelCase(key);
  3577. if (elem && value === undefined) {
  3578. if (data = data_user.get(elem, key), data !== undefined) {
  3579. return data;
  3580. }
  3581. if (data = data_user.get(elem, camelKey), data !== undefined) {
  3582. return data;
  3583. }
  3584. if (data = dataAttr(elem, camelKey, undefined), data !== undefined) {
  3585. return data;
  3586. }
  3587. } else {
  3588. this.each(function() {
  3589. var data = data_user.get(this, camelKey);
  3590. data_user.set(this, camelKey, value);
  3591. if (-1 !== key.indexOf("-")) {
  3592. if (data !== undefined) {
  3593. data_user.set(this, key, value);
  3594. }
  3595. }
  3596. });
  3597. }
  3598. }, null, value, arguments.length > 1, null, true);
  3599. },
  3600. /**
  3601. * @param {string} key
  3602. * @return {?}
  3603. */
  3604. removeData : function(key) {
  3605. return this.each(function() {
  3606. data_user.remove(this, key);
  3607. });
  3608. }
  3609. });
  3610. jQuery.extend({
  3611. /**
  3612. * @param {Object} elem
  3613. * @param {string} type
  3614. * @param {Object} data
  3615. * @return {?}
  3616. */
  3617. queue : function(elem, type, data) {
  3618. var queue;
  3619. return elem ? (type = (type || "fx") + "queue", queue = data_priv.get(elem, type), data && (!queue || jQuery.isArray(data) ? queue = data_priv.access(elem, type, jQuery.makeArray(data)) : queue.push(data)), queue || []) : undefined;
  3620. },
  3621. /**
  3622. * @param {Object} elem
  3623. * @param {string} type
  3624. * @return {undefined}
  3625. */
  3626. dequeue : function(elem, type) {
  3627. type = type || "fx";
  3628. var queue = jQuery.queue(elem, type);
  3629. var ln = queue.length;
  3630. var fn = queue.shift();
  3631. var hooks = jQuery._queueHooks(elem, type);
  3632. /**
  3633. * @return {undefined}
  3634. */
  3635. var next = function() {
  3636. jQuery.dequeue(elem, type);
  3637. };
  3638. if ("inprogress" === fn) {
  3639. fn = queue.shift();
  3640. ln--;
  3641. }
  3642. if (fn) {
  3643. if ("fx" === type) {
  3644. queue.unshift("inprogress");
  3645. }
  3646. delete hooks.stop;
  3647. fn.call(elem, next, hooks);
  3648. }
  3649. if (!ln) {
  3650. if (hooks) {
  3651. hooks.empty.fire();
  3652. }
  3653. }
  3654. },
  3655. /**
  3656. * @param {Object} elem
  3657. * @param {string} type
  3658. * @return {?}
  3659. */
  3660. _queueHooks : function(elem, type) {
  3661. /** @type {string} */
  3662. var key = type + "queueHooks";
  3663. return data_priv.get(elem, key) || data_priv.access(elem, key, {
  3664. empty : jQuery.Callbacks("once memory").add(function() {
  3665. data_priv.remove(elem, [type + "queue", key]);
  3666. })
  3667. });
  3668. }
  3669. });
  3670. jQuery.fn.extend({
  3671. /**
  3672. * @param {Object} type
  3673. * @param {Object} data
  3674. * @return {?}
  3675. */
  3676. queue : function(type, data) {
  3677. /** @type {number} */
  3678. var num = 2;
  3679. return "string" != typeof type && (data = type, type = "fx", num--), num > arguments.length ? jQuery.queue(this[0], type) : data === undefined ? this : this.each(function() {
  3680. var queue = jQuery.queue(this, type, data);
  3681. jQuery._queueHooks(this, type);
  3682. if ("fx" === type) {
  3683. if ("inprogress" !== queue[0]) {
  3684. jQuery.dequeue(this, type);
  3685. }
  3686. }
  3687. });
  3688. },
  3689. /**
  3690. * @param {string} type
  3691. * @return {?}
  3692. */
  3693. dequeue : function(type) {
  3694. return this.each(function() {
  3695. jQuery.dequeue(this, type);
  3696. });
  3697. },
  3698. /**
  3699. * @param {HTMLElement} time
  3700. * @param {Object} type
  3701. * @return {?}
  3702. */
  3703. delay : function(time, type) {
  3704. return time = jQuery.fx ? jQuery.fx.speeds[time] || time : time, type = type || "fx", this.queue(type, function(next, event) {
  3705. /** @type {number} */
  3706. var timeout = setTimeout(next, time);
  3707. /**
  3708. * @return {undefined}
  3709. */
  3710. event.stop = function() {
  3711. clearTimeout(timeout);
  3712. };
  3713. });
  3714. },
  3715. /**
  3716. * @param {string} type
  3717. * @return {?}
  3718. */
  3719. clearQueue : function(type) {
  3720. return this.queue(type || "fx", []);
  3721. },
  3722. /**
  3723. * @param {string} type
  3724. * @param {string} obj
  3725. * @return {?}
  3726. */
  3727. promise : function(type, obj) {
  3728. var body;
  3729. /** @type {number} */
  3730. var r = 1;
  3731. var defer = jQuery.Deferred();
  3732. var elements = this;
  3733. var i = this.length;
  3734. /**
  3735. * @return {undefined}
  3736. */
  3737. var resolve = function() {
  3738. if (!--r) {
  3739. defer.resolveWith(elements, [elements]);
  3740. }
  3741. };
  3742. if ("string" != typeof type) {
  3743. /** @type {string} */
  3744. obj = type;
  3745. /** @type {string} */
  3746. type = undefined;
  3747. }
  3748. type = type || "fx";
  3749. for (;i--;) {
  3750. body = data_priv.get(elements[i], type + "queueHooks");
  3751. if (body) {
  3752. if (body.empty) {
  3753. r++;
  3754. body.empty.add(resolve);
  3755. }
  3756. }
  3757. }
  3758. return resolve(), defer.promise(obj);
  3759. }
  3760. });
  3761. var nodeHook;
  3762. var boolHook;
  3763. /** @type {RegExp} */
  3764. var rclass = /[\t\r\n\f]/g;
  3765. /** @type {RegExp} */
  3766. var rreturn = /\r/g;
  3767. /** @type {RegExp} */
  3768. var rinputs = /^(?:input|select|textarea|button)$/i;
  3769. jQuery.fn.extend({
  3770. /**
  3771. * @param {Object} name
  3772. * @param {string} value
  3773. * @return {?}
  3774. */
  3775. attr : function(name, value) {
  3776. return jQuery.access(this, jQuery.attr, name, value, arguments.length > 1);
  3777. },
  3778. /**
  3779. * @param {Object} name
  3780. * @return {?}
  3781. */
  3782. removeAttr : function(name) {
  3783. return this.each(function() {
  3784. jQuery.removeAttr(this, name);
  3785. });
  3786. },
  3787. /**
  3788. * @param {Object} name
  3789. * @param {string} value
  3790. * @return {?}
  3791. */
  3792. prop : function(name, value) {
  3793. return jQuery.access(this, jQuery.prop, name, value, arguments.length > 1);
  3794. },
  3795. /**
  3796. * @param {?} name
  3797. * @return {?}
  3798. */
  3799. removeProp : function(name) {
  3800. return this.each(function() {
  3801. delete this[jQuery.propFix[name] || name];
  3802. });
  3803. },
  3804. /**
  3805. * @param {string} value
  3806. * @return {?}
  3807. */
  3808. addClass : function(value) {
  3809. var classes;
  3810. var elem;
  3811. var cur;
  3812. var clazz;
  3813. var j;
  3814. /** @type {number} */
  3815. var i = 0;
  3816. var l = this.length;
  3817. /** @type {(boolean|string)} */
  3818. var proceed = "string" == typeof value && value;
  3819. if (jQuery.isFunction(value)) {
  3820. return this.each(function(j) {
  3821. jQuery(this).addClass(value.call(this, j, this.className));
  3822. });
  3823. }
  3824. if (proceed) {
  3825. classes = (value || "").match(core_rnotwhite) || [];
  3826. for (;l > i;i++) {
  3827. if (elem = this[i], cur = 1 === elem.nodeType && (elem.className ? (" " + elem.className + " ").replace(rclass, " ") : " ")) {
  3828. /** @type {number} */
  3829. j = 0;
  3830. for (;clazz = classes[j++];) {
  3831. if (0 > cur.indexOf(" " + clazz + " ")) {
  3832. cur += clazz + " ";
  3833. }
  3834. }
  3835. elem.className = jQuery.trim(cur);
  3836. }
  3837. }
  3838. }
  3839. return this;
  3840. },
  3841. /**
  3842. * @param {string} value
  3843. * @return {?}
  3844. */
  3845. removeClass : function(value) {
  3846. var classNames;
  3847. var elem;
  3848. var cur;
  3849. var className;
  3850. var i;
  3851. /** @type {number} */
  3852. var r = 0;
  3853. var l = this.length;
  3854. /** @type {(boolean|string)} */
  3855. var u = 0 === arguments.length || "string" == typeof value && value;
  3856. if (jQuery.isFunction(value)) {
  3857. return this.each(function(j) {
  3858. jQuery(this).removeClass(value.call(this, j, this.className));
  3859. });
  3860. }
  3861. if (u) {
  3862. classNames = (value || "").match(core_rnotwhite) || [];
  3863. for (;l > r;r++) {
  3864. if (elem = this[r], cur = 1 === elem.nodeType && (elem.className ? (" " + elem.className + " ").replace(rclass, " ") : "")) {
  3865. /** @type {number} */
  3866. i = 0;
  3867. for (;className = classNames[i++];) {
  3868. for (;cur.indexOf(" " + className + " ") >= 0;) {
  3869. /** @type {string} */
  3870. cur = cur.replace(" " + className + " ", " ");
  3871. }
  3872. }
  3873. elem.className = value ? jQuery.trim(cur) : "";
  3874. }
  3875. }
  3876. }
  3877. return this;
  3878. },
  3879. /**
  3880. * @param {string} value
  3881. * @param {?} stateVal
  3882. * @return {?}
  3883. */
  3884. toggleClass : function(value, stateVal) {
  3885. /** @type {string} */
  3886. var type = typeof value;
  3887. return "boolean" == typeof stateVal && "string" === type ? stateVal ? this.addClass(value) : this.removeClass(value) : jQuery.isFunction(value) ? this.each(function(i) {
  3888. jQuery(this).toggleClass(value.call(this, i, this.className, stateVal), stateVal);
  3889. }) : this.each(function() {
  3890. if ("string" === type) {
  3891. var className;
  3892. /** @type {number} */
  3893. var i = 0;
  3894. var self = jQuery(this);
  3895. var classNames = value.match(core_rnotwhite) || [];
  3896. for (;className = classNames[i++];) {
  3897. if (self.hasClass(className)) {
  3898. self.removeClass(className);
  3899. } else {
  3900. self.addClass(className);
  3901. }
  3902. }
  3903. } else {
  3904. if (type === core_strundefined || "boolean" === type) {
  3905. if (this.className) {
  3906. data_priv.set(this, "__className__", this.className);
  3907. }
  3908. this.className = this.className || value === false ? "" : data_priv.get(this, "__className__") || "";
  3909. }
  3910. }
  3911. });
  3912. },
  3913. /**
  3914. * @param {string} selector
  3915. * @return {?}
  3916. */
  3917. hasClass : function(selector) {
  3918. /** @type {string} */
  3919. var expectation = " " + selector + " ";
  3920. /** @type {number} */
  3921. var i = 0;
  3922. var l = this.length;
  3923. for (;l > i;i++) {
  3924. if (1 === this[i].nodeType && (" " + this[i].className + " ").replace(rclass, " ").indexOf(expectation) >= 0) {
  3925. return true;
  3926. }
  3927. }
  3928. return false;
  3929. },
  3930. /**
  3931. * @param {Function} value
  3932. * @return {?}
  3933. */
  3934. val : function(value) {
  3935. var hooks;
  3936. var ret;
  3937. var isFunction;
  3938. var elem = this[0];
  3939. if (arguments.length) {
  3940. return isFunction = jQuery.isFunction(value), this.each(function(i) {
  3941. var val;
  3942. if (1 === this.nodeType) {
  3943. val = isFunction ? value.call(this, i, jQuery(this).val()) : value;
  3944. if (null == val) {
  3945. /** @type {string} */
  3946. val = "";
  3947. } else {
  3948. if ("number" == typeof val) {
  3949. val += "";
  3950. } else {
  3951. if (jQuery.isArray(val)) {
  3952. val = jQuery.map(val, function(month) {
  3953. return null == month ? "" : month + "";
  3954. });
  3955. }
  3956. }
  3957. }
  3958. hooks = jQuery.valHooks[this.type] || jQuery.valHooks[this.nodeName.toLowerCase()];
  3959. if (!(hooks && ("set" in hooks && hooks.set(this, val, "value") !== undefined))) {
  3960. this.value = val;
  3961. }
  3962. }
  3963. });
  3964. }
  3965. if (elem) {
  3966. return hooks = jQuery.valHooks[elem.type] || jQuery.valHooks[elem.nodeName.toLowerCase()], hooks && ("get" in hooks && (ret = hooks.get(elem, "value")) !== undefined) ? ret : (ret = elem.value, "string" == typeof ret ? ret.replace(rreturn, "") : null == ret ? "" : ret);
  3967. }
  3968. }
  3969. });
  3970. jQuery.extend({
  3971. valHooks : {
  3972. option : {
  3973. /**
  3974. * @param {Object} elem
  3975. * @return {?}
  3976. */
  3977. get : function(elem) {
  3978. var val = elem.attributes.value;
  3979. return!val || val.specified ? elem.value : elem.text;
  3980. }
  3981. },
  3982. select : {
  3983. /**
  3984. * @param {Object} elem
  3985. * @return {?}
  3986. */
  3987. get : function(elem) {
  3988. var copies;
  3989. var option;
  3990. var options = elem.options;
  3991. var index = elem.selectedIndex;
  3992. /** @type {boolean} */
  3993. var one = "select-one" === elem.type || 0 > index;
  3994. /** @type {(Array|null)} */
  3995. var out = one ? null : [];
  3996. var max = one ? index + 1 : options.length;
  3997. var i = 0 > index ? max : one ? index : 0;
  3998. for (;max > i;i++) {
  3999. if (option = options[i], !(!option.selected && i !== index || ((jQuery.support.optDisabled ? option.disabled : null !== option.getAttribute("disabled")) || option.parentNode.disabled && jQuery.nodeName(option.parentNode, "optgroup")))) {
  4000. if (copies = jQuery(option).val(), one) {
  4001. return copies;
  4002. }
  4003. out.push(copies);
  4004. }
  4005. }
  4006. return out;
  4007. },
  4008. /**
  4009. * @param {Object} elem
  4010. * @param {string} value
  4011. * @return {?}
  4012. */
  4013. set : function(elem, value) {
  4014. var n;
  4015. var option;
  4016. var options = elem.options;
  4017. var values = jQuery.makeArray(value);
  4018. var i = options.length;
  4019. for (;i--;) {
  4020. option = options[i];
  4021. if (option.selected = jQuery.inArray(jQuery(option).val(), values) >= 0) {
  4022. /** @type {boolean} */
  4023. n = true;
  4024. }
  4025. }
  4026. return n || (elem.selectedIndex = -1), values;
  4027. }
  4028. }
  4029. },
  4030. /**
  4031. * @param {Object} elem
  4032. * @param {string} name
  4033. * @param {string} value
  4034. * @return {?}
  4035. */
  4036. attr : function(elem, name, value) {
  4037. var hooks;
  4038. var ret;
  4039. var nodeType = elem.nodeType;
  4040. if (elem && (3 !== nodeType && (8 !== nodeType && 2 !== nodeType))) {
  4041. return typeof elem.getAttribute === core_strundefined ? jQuery.prop(elem, name, value) : (1 === nodeType && jQuery.isXMLDoc(elem) || (name = name.toLowerCase(), hooks = jQuery.attrHooks[name] || (jQuery.expr.match.bool.test(name) ? boolHook : nodeHook)), value === undefined ? hooks && ("get" in hooks && null !== (ret = hooks.get(elem, name))) ? ret : (ret = jQuery.find.attr(elem, name), null == ret ? undefined : ret) : null !== value ? hooks && ("set" in hooks && (ret = hooks.set(elem, value,
  4042. name)) !== undefined) ? ret : (elem.setAttribute(name, value + ""), value) : (jQuery.removeAttr(elem, name), undefined));
  4043. }
  4044. },
  4045. /**
  4046. * @param {Object} elem
  4047. * @param {string} value
  4048. * @return {undefined}
  4049. */
  4050. removeAttr : function(elem, value) {
  4051. var name;
  4052. var propName;
  4053. /** @type {number} */
  4054. var i = 0;
  4055. var attrNames = value && value.match(core_rnotwhite);
  4056. if (attrNames && 1 === elem.nodeType) {
  4057. for (;name = attrNames[i++];) {
  4058. propName = jQuery.propFix[name] || name;
  4059. if (jQuery.expr.match.bool.test(name)) {
  4060. /** @type {boolean} */
  4061. elem[propName] = false;
  4062. }
  4063. elem.removeAttribute(name);
  4064. }
  4065. }
  4066. },
  4067. attrHooks : {
  4068. type : {
  4069. /**
  4070. * @param {Object} elem
  4071. * @param {string} value
  4072. * @return {?}
  4073. */
  4074. set : function(elem, value) {
  4075. if (!jQuery.support.radioValue && ("radio" === value && jQuery.nodeName(elem, "input"))) {
  4076. var val = elem.value;
  4077. return elem.setAttribute("type", value), val && (elem.value = val), value;
  4078. }
  4079. }
  4080. }
  4081. },
  4082. propFix : {
  4083. "for" : "htmlFor",
  4084. "class" : "className"
  4085. },
  4086. /**
  4087. * @param {Object} elem
  4088. * @param {string} name
  4089. * @param {string} value
  4090. * @return {?}
  4091. */
  4092. prop : function(elem, name, value) {
  4093. var ret;
  4094. var hooks;
  4095. var n;
  4096. var nodeType = elem.nodeType;
  4097. if (elem && (3 !== nodeType && (8 !== nodeType && 2 !== nodeType))) {
  4098. return n = 1 !== nodeType || !jQuery.isXMLDoc(elem), n && (name = jQuery.propFix[name] || name, hooks = jQuery.propHooks[name]), value !== undefined ? hooks && ("set" in hooks && (ret = hooks.set(elem, value, name)) !== undefined) ? ret : elem[name] = value : hooks && ("get" in hooks && null !== (ret = hooks.get(elem, name))) ? ret : elem[name];
  4099. }
  4100. },
  4101. propHooks : {
  4102. tabIndex : {
  4103. /**
  4104. * @param {Object} elem
  4105. * @return {?}
  4106. */
  4107. get : function(elem) {
  4108. return elem.hasAttribute("tabindex") || (rinputs.test(elem.nodeName) || elem.href) ? elem.tabIndex : -1;
  4109. }
  4110. }
  4111. }
  4112. });
  4113. boolHook = {
  4114. /**
  4115. * @param {Object} elem
  4116. * @param {string} value
  4117. * @param {string} name
  4118. * @return {?}
  4119. */
  4120. set : function(elem, value, name) {
  4121. return value === false ? jQuery.removeAttr(elem, name) : elem.setAttribute(name, name), name;
  4122. }
  4123. };
  4124. jQuery.each(jQuery.expr.match.bool.source.match(/\w+/g), function(dataAndEvents, name) {
  4125. var getter = jQuery.expr.attrHandle[name] || jQuery.find.attr;
  4126. /**
  4127. * @param {Object} elem
  4128. * @param {string} name
  4129. * @param {boolean} isXML
  4130. * @return {?}
  4131. */
  4132. jQuery.expr.attrHandle[name] = function(elem, name, isXML) {
  4133. var ref = jQuery.expr.attrHandle[name];
  4134. var ret = isXML ? undefined : (jQuery.expr.attrHandle[name] = undefined) != getter(elem, name, isXML) ? name.toLowerCase() : null;
  4135. return jQuery.expr.attrHandle[name] = ref, ret;
  4136. };
  4137. });
  4138. if (!jQuery.support.optSelected) {
  4139. jQuery.propHooks.selected = {
  4140. /**
  4141. * @param {Object} elem
  4142. * @return {?}
  4143. */
  4144. get : function(elem) {
  4145. var parent = elem.parentNode;
  4146. return parent && (parent.parentNode && parent.parentNode.selectedIndex), null;
  4147. }
  4148. };
  4149. }
  4150. jQuery.each(["tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable"], function() {
  4151. jQuery.propFix[this.toLowerCase()] = this;
  4152. });
  4153. jQuery.each(["radio", "checkbox"], function() {
  4154. jQuery.valHooks[this] = {
  4155. /**
  4156. * @param {Object} elem
  4157. * @param {string} value
  4158. * @return {?}
  4159. */
  4160. set : function(elem, value) {
  4161. return jQuery.isArray(value) ? elem.checked = jQuery.inArray(jQuery(elem).val(), value) >= 0 : undefined;
  4162. }
  4163. };
  4164. if (!jQuery.support.checkOn) {
  4165. /**
  4166. * @param {Object} elem
  4167. * @return {?}
  4168. */
  4169. jQuery.valHooks[this].get = function(elem) {
  4170. return null === elem.getAttribute("value") ? "on" : elem.value;
  4171. };
  4172. }
  4173. });
  4174. /** @type {RegExp} */
  4175. var rmouseEvent = /^key/;
  4176. /** @type {RegExp} */
  4177. var rkeyEvent = /^(?:mouse|contextmenu)|click/;
  4178. /** @type {RegExp} */
  4179. var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/;
  4180. /** @type {RegExp} */
  4181. var rtypenamespace = /^([^.]*)(?:\.(.+)|)$/;
  4182. jQuery.event = {
  4183. global : {},
  4184. /**
  4185. * @param {Object} elem
  4186. * @param {Object} types
  4187. * @param {Function} handler
  4188. * @param {Object} e
  4189. * @param {Object} selector
  4190. * @return {undefined}
  4191. */
  4192. add : function(elem, types, handler, e, selector) {
  4193. var handleObjIn;
  4194. var eventHandle;
  4195. var segmentMatch;
  4196. var events;
  4197. var t;
  4198. var handleObj;
  4199. var special;
  4200. var handlers;
  4201. var type;
  4202. var namespaces;
  4203. var origType;
  4204. var elemData = data_priv.get(elem);
  4205. if (elemData) {
  4206. if (handler.handler) {
  4207. /** @type {Function} */
  4208. handleObjIn = handler;
  4209. handler = handleObjIn.handler;
  4210. selector = handleObjIn.selector;
  4211. }
  4212. if (!handler.guid) {
  4213. /** @type {number} */
  4214. handler.guid = jQuery.guid++;
  4215. }
  4216. if (!(events = elemData.events)) {
  4217. events = elemData.events = {};
  4218. }
  4219. if (!(eventHandle = elemData.handle)) {
  4220. /** @type {function (Event): ?} */
  4221. eventHandle = elemData.handle = function(src) {
  4222. return typeof jQuery === core_strundefined || src && jQuery.event.triggered === src.type ? undefined : jQuery.event.dispatch.apply(eventHandle.elem, arguments);
  4223. };
  4224. /** @type {Object} */
  4225. eventHandle.elem = elem;
  4226. }
  4227. types = (types || "").match(core_rnotwhite) || [""];
  4228. t = types.length;
  4229. for (;t--;) {
  4230. /** @type {Array} */
  4231. segmentMatch = rtypenamespace.exec(types[t]) || [];
  4232. type = origType = segmentMatch[1];
  4233. namespaces = (segmentMatch[2] || "").split(".").sort();
  4234. if (type) {
  4235. special = jQuery.event.special[type] || {};
  4236. type = (selector ? special.delegateType : special.bindType) || type;
  4237. special = jQuery.event.special[type] || {};
  4238. handleObj = jQuery.extend({
  4239. type : type,
  4240. origType : origType,
  4241. data : e,
  4242. /** @type {Function} */
  4243. handler : handler,
  4244. guid : handler.guid,
  4245. selector : selector,
  4246. needsContext : selector && jQuery.expr.match.needsContext.test(selector),
  4247. namespace : namespaces.join(".")
  4248. }, handleObjIn);
  4249. if (!(handlers = events[type])) {
  4250. /** @type {Array} */
  4251. handlers = events[type] = [];
  4252. /** @type {number} */
  4253. handlers.delegateCount = 0;
  4254. if (!(special.setup && special.setup.call(elem, e, namespaces, eventHandle) !== false)) {
  4255. if (elem.addEventListener) {
  4256. elem.addEventListener(type, eventHandle, false);
  4257. }
  4258. }
  4259. }
  4260. if (special.add) {
  4261. special.add.call(elem, handleObj);
  4262. if (!handleObj.handler.guid) {
  4263. handleObj.handler.guid = handler.guid;
  4264. }
  4265. }
  4266. if (selector) {
  4267. handlers.splice(handlers.delegateCount++, 0, handleObj);
  4268. } else {
  4269. handlers.push(handleObj);
  4270. }
  4271. /** @type {boolean} */
  4272. jQuery.event.global[type] = true;
  4273. }
  4274. }
  4275. /** @type {null} */
  4276. elem = null;
  4277. }
  4278. },
  4279. /**
  4280. * @param {Object} elem
  4281. * @param {string} types
  4282. * @param {Function} handler
  4283. * @param {string} selector
  4284. * @param {boolean} keepData
  4285. * @return {undefined}
  4286. */
  4287. remove : function(elem, types, handler, selector, keepData) {
  4288. var j;
  4289. var origCount;
  4290. var tmp;
  4291. var events;
  4292. var t;
  4293. var handleObj;
  4294. var special;
  4295. var handlers;
  4296. var type;
  4297. var namespaces;
  4298. var origType;
  4299. var elemData = data_priv.hasData(elem) && data_priv.get(elem);
  4300. if (elemData && (events = elemData.events)) {
  4301. types = (types || "").match(core_rnotwhite) || [""];
  4302. t = types.length;
  4303. for (;t--;) {
  4304. if (tmp = rtypenamespace.exec(types[t]) || [], type = origType = tmp[1], namespaces = (tmp[2] || "").split(".").sort(), type) {
  4305. special = jQuery.event.special[type] || {};
  4306. type = (selector ? special.delegateType : special.bindType) || type;
  4307. handlers = events[type] || [];
  4308. tmp = tmp[2] && RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)");
  4309. origCount = j = handlers.length;
  4310. for (;j--;) {
  4311. handleObj = handlers[j];
  4312. if (!(!keepData && origType !== handleObj.origType)) {
  4313. if (!(handler && handler.guid !== handleObj.guid)) {
  4314. if (!(tmp && !tmp.test(handleObj.namespace))) {
  4315. if (!(selector && (selector !== handleObj.selector && ("**" !== selector || !handleObj.selector)))) {
  4316. handlers.splice(j, 1);
  4317. if (handleObj.selector) {
  4318. handlers.delegateCount--;
  4319. }
  4320. if (special.remove) {
  4321. special.remove.call(elem, handleObj);
  4322. }
  4323. }
  4324. }
  4325. }
  4326. }
  4327. }
  4328. if (origCount) {
  4329. if (!handlers.length) {
  4330. if (!(special.teardown && special.teardown.call(elem, namespaces, elemData.handle) !== false)) {
  4331. jQuery.removeEvent(elem, type, elemData.handle);
  4332. }
  4333. delete events[type];
  4334. }
  4335. }
  4336. } else {
  4337. for (type in events) {
  4338. jQuery.event.remove(elem, type + types[t], handler, selector, true);
  4339. }
  4340. }
  4341. }
  4342. if (jQuery.isEmptyObject(events)) {
  4343. delete elemData.handle;
  4344. data_priv.remove(elem, "events");
  4345. }
  4346. }
  4347. },
  4348. /**
  4349. * @param {Object} event
  4350. * @param {?} data
  4351. * @param {Object} elem
  4352. * @param {boolean} onlyHandlers
  4353. * @return {?}
  4354. */
  4355. trigger : function(event, data, elem, onlyHandlers) {
  4356. var i;
  4357. var cur;
  4358. var tmp;
  4359. var bubbleType;
  4360. var ontype;
  4361. var handle;
  4362. var special;
  4363. /** @type {Array} */
  4364. var eventPath = [elem || doc];
  4365. var type = core_hasOwn.call(event, "type") ? event.type : event;
  4366. var namespaces = core_hasOwn.call(event, "namespace") ? event.namespace.split(".") : [];
  4367. if (cur = tmp = elem = elem || doc, 3 !== elem.nodeType && (8 !== elem.nodeType && (!rfocusMorph.test(type + jQuery.event.triggered) && (type.indexOf(".") >= 0 && (namespaces = type.split("."), type = namespaces.shift(), namespaces.sort()), ontype = 0 > type.indexOf(":") && "on" + type, event = event[jQuery.expando] ? event : new jQuery.Event(type, "object" == typeof event && event), event.isTrigger = onlyHandlers ? 2 : 3, event.namespace = namespaces.join("."), event.namespace_re = event.namespace ?
  4368. RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)") : null, event.result = undefined, event.target || (event.target = elem), data = null == data ? [event] : jQuery.makeArray(data, [event]), special = jQuery.event.special[type] || {}, onlyHandlers || (!special.trigger || special.trigger.apply(elem, data) !== false))))) {
  4369. if (!onlyHandlers && (!special.noBubble && !jQuery.isWindow(elem))) {
  4370. bubbleType = special.delegateType || type;
  4371. if (!rfocusMorph.test(bubbleType + type)) {
  4372. cur = cur.parentNode;
  4373. }
  4374. for (;cur;cur = cur.parentNode) {
  4375. eventPath.push(cur);
  4376. tmp = cur;
  4377. }
  4378. if (tmp === (elem.ownerDocument || doc)) {
  4379. eventPath.push(tmp.defaultView || (tmp.parentWindow || win));
  4380. }
  4381. }
  4382. /** @type {number} */
  4383. i = 0;
  4384. for (;(cur = eventPath[i++]) && !event.isPropagationStopped();) {
  4385. event.type = i > 1 ? bubbleType : special.bindType || type;
  4386. handle = (data_priv.get(cur, "events") || {})[event.type] && data_priv.get(cur, "handle");
  4387. if (handle) {
  4388. handle.apply(cur, data);
  4389. }
  4390. handle = ontype && cur[ontype];
  4391. if (handle) {
  4392. if (jQuery.acceptData(cur)) {
  4393. if (handle.apply) {
  4394. if (handle.apply(cur, data) === false) {
  4395. event.preventDefault();
  4396. }
  4397. }
  4398. }
  4399. }
  4400. }
  4401. return event.type = type, onlyHandlers || (event.isDefaultPrevented() || (special._default && special._default.apply(eventPath.pop(), data) !== false || (!jQuery.acceptData(elem) || ontype && (jQuery.isFunction(elem[type]) && (!jQuery.isWindow(elem) && (tmp = elem[ontype], tmp && (elem[ontype] = null), jQuery.event.triggered = type, elem[type](), jQuery.event.triggered = undefined, tmp && (elem[ontype] = tmp))))))), event.result;
  4402. }
  4403. },
  4404. /**
  4405. * @param {Object} event
  4406. * @return {?}
  4407. */
  4408. dispatch : function(event) {
  4409. event = jQuery.event.fix(event);
  4410. var i;
  4411. var j;
  4412. var ret;
  4413. var matched;
  4414. var handleObj;
  4415. /** @type {Array} */
  4416. var handlerQueue = [];
  4417. /** @type {Array.<?>} */
  4418. var args = core_slice.call(arguments);
  4419. var handlers = (data_priv.get(this, "events") || {})[event.type] || [];
  4420. var special = jQuery.event.special[event.type] || {};
  4421. if (args[0] = event, event.delegateTarget = this, !special.preDispatch || special.preDispatch.call(this, event) !== false) {
  4422. handlerQueue = jQuery.event.handlers.call(this, event, handlers);
  4423. /** @type {number} */
  4424. i = 0;
  4425. for (;(matched = handlerQueue[i++]) && !event.isPropagationStopped();) {
  4426. event.currentTarget = matched.elem;
  4427. /** @type {number} */
  4428. j = 0;
  4429. for (;(handleObj = matched.handlers[j++]) && !event.isImmediatePropagationStopped();) {
  4430. if (!event.namespace_re || event.namespace_re.test(handleObj.namespace)) {
  4431. event.handleObj = handleObj;
  4432. event.data = handleObj.data;
  4433. ret = ((jQuery.event.special[handleObj.origType] || {}).handle || handleObj.handler).apply(matched.elem, args);
  4434. if (ret !== undefined) {
  4435. if ((event.result = ret) === false) {
  4436. event.preventDefault();
  4437. event.stopPropagation();
  4438. }
  4439. }
  4440. }
  4441. }
  4442. }
  4443. return special.postDispatch && special.postDispatch.call(this, event), event.result;
  4444. }
  4445. },
  4446. /**
  4447. * @param {Event} event
  4448. * @param {Object} handlers
  4449. * @return {?}
  4450. */
  4451. handlers : function(event, handlers) {
  4452. var j;
  4453. var matches;
  4454. var sel;
  4455. var handleObj;
  4456. /** @type {Array} */
  4457. var handlerQueue = [];
  4458. var delegateCount = handlers.delegateCount;
  4459. var cur = event.target;
  4460. if (delegateCount && (cur.nodeType && (!event.button || "click" !== event.type))) {
  4461. for (;cur !== this;cur = cur.parentNode || this) {
  4462. if (cur.disabled !== true || "click" !== event.type) {
  4463. /** @type {Array} */
  4464. matches = [];
  4465. /** @type {number} */
  4466. j = 0;
  4467. for (;delegateCount > j;j++) {
  4468. handleObj = handlers[j];
  4469. /** @type {string} */
  4470. sel = handleObj.selector + " ";
  4471. if (matches[sel] === undefined) {
  4472. matches[sel] = handleObj.needsContext ? jQuery(sel, this).index(cur) >= 0 : jQuery.find(sel, this, null, [cur]).length;
  4473. }
  4474. if (matches[sel]) {
  4475. matches.push(handleObj);
  4476. }
  4477. }
  4478. if (matches.length) {
  4479. handlerQueue.push({
  4480. elem : cur,
  4481. handlers : matches
  4482. });
  4483. }
  4484. }
  4485. }
  4486. }
  4487. return handlers.length > delegateCount && handlerQueue.push({
  4488. elem : this,
  4489. handlers : handlers.slice(delegateCount)
  4490. }), handlerQueue;
  4491. },
  4492. props : "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
  4493. fixHooks : {},
  4494. keyHooks : {
  4495. props : "char charCode key keyCode".split(" "),
  4496. /**
  4497. * @param {Object} event
  4498. * @param {Event} original
  4499. * @return {?}
  4500. */
  4501. filter : function(event, original) {
  4502. return null == event.which && (event.which = null != original.charCode ? original.charCode : original.keyCode), event;
  4503. }
  4504. },
  4505. mouseHooks : {
  4506. props : "button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
  4507. /**
  4508. * @param {Object} event
  4509. * @param {Event} original
  4510. * @return {?}
  4511. */
  4512. filter : function(event, original) {
  4513. var d;
  4514. var de;
  4515. var b;
  4516. var button = original.button;
  4517. return null == event.pageX && (null != original.clientX && (d = event.target.ownerDocument || doc, de = d.documentElement, b = d.body, event.pageX = original.clientX + (de && de.scrollLeft || (b && b.scrollLeft || 0)) - (de && de.clientLeft || (b && b.clientLeft || 0)), event.pageY = original.clientY + (de && de.scrollTop || (b && b.scrollTop || 0)) - (de && de.clientTop || (b && b.clientTop || 0)))), event.which || (button === undefined || (event.which = 1 & button ? 1 : 2 & button ? 3 :
  4518. 4 & button ? 2 : 0)), event;
  4519. }
  4520. },
  4521. /**
  4522. * @param {Object} event
  4523. * @return {?}
  4524. */
  4525. fix : function(event) {
  4526. if (event[jQuery.expando]) {
  4527. return event;
  4528. }
  4529. var i;
  4530. var prop;
  4531. var copy;
  4532. var type = event.type;
  4533. /** @type {Object} */
  4534. var originalEvent = event;
  4535. var fixHook = this.fixHooks[type];
  4536. if (!fixHook) {
  4537. this.fixHooks[type] = fixHook = rkeyEvent.test(type) ? this.mouseHooks : rmouseEvent.test(type) ? this.keyHooks : {};
  4538. }
  4539. copy = fixHook.props ? this.props.concat(fixHook.props) : this.props;
  4540. event = new jQuery.Event(originalEvent);
  4541. i = copy.length;
  4542. for (;i--;) {
  4543. prop = copy[i];
  4544. event[prop] = originalEvent[prop];
  4545. }
  4546. return event.target || (event.target = doc), 3 === event.target.nodeType && (event.target = event.target.parentNode), fixHook.filter ? fixHook.filter(event, originalEvent) : event;
  4547. },
  4548. special : {
  4549. load : {
  4550. noBubble : true
  4551. },
  4552. focus : {
  4553. /**
  4554. * @return {?}
  4555. */
  4556. trigger : function() {
  4557. return this !== safeActiveElement() && this.focus ? (this.focus(), false) : undefined;
  4558. },
  4559. delegateType : "focusin"
  4560. },
  4561. blur : {
  4562. /**
  4563. * @return {?}
  4564. */
  4565. trigger : function() {
  4566. return this === safeActiveElement() && this.blur ? (this.blur(), false) : undefined;
  4567. },
  4568. delegateType : "focusout"
  4569. },
  4570. click : {
  4571. /**
  4572. * @return {?}
  4573. */
  4574. trigger : function() {
  4575. return "checkbox" === this.type && (this.click && jQuery.nodeName(this, "input")) ? (this.click(), false) : undefined;
  4576. },
  4577. /**
  4578. * @param {Function} event
  4579. * @return {?}
  4580. */
  4581. _default : function(event) {
  4582. return jQuery.nodeName(event.target, "a");
  4583. }
  4584. },
  4585. beforeunload : {
  4586. /**
  4587. * @param {Object} event
  4588. * @return {undefined}
  4589. */
  4590. postDispatch : function(event) {
  4591. if (event.result !== undefined) {
  4592. event.originalEvent.returnValue = event.result;
  4593. }
  4594. }
  4595. }
  4596. },
  4597. /**
  4598. * @param {string} type
  4599. * @param {Object} elem
  4600. * @param {?} event
  4601. * @param {boolean} dataAndEvents
  4602. * @return {undefined}
  4603. */
  4604. simulate : function(type, elem, event, dataAndEvents) {
  4605. var e = jQuery.extend(new jQuery.Event, event, {
  4606. type : type,
  4607. isSimulated : true,
  4608. originalEvent : {}
  4609. });
  4610. if (dataAndEvents) {
  4611. jQuery.event.trigger(e, null, elem);
  4612. } else {
  4613. jQuery.event.dispatch.call(elem, e);
  4614. }
  4615. if (e.isDefaultPrevented()) {
  4616. event.preventDefault();
  4617. }
  4618. }
  4619. };
  4620. /**
  4621. * @param {Object} elem
  4622. * @param {?} type
  4623. * @param {?} handle
  4624. * @return {undefined}
  4625. */
  4626. jQuery.removeEvent = function(elem, type, handle) {
  4627. if (elem.removeEventListener) {
  4628. elem.removeEventListener(type, handle, false);
  4629. }
  4630. };
  4631. /**
  4632. * @param {Object} src
  4633. * @param {boolean} props
  4634. * @return {?}
  4635. */
  4636. jQuery.Event = function(src, props) {
  4637. return this instanceof jQuery.Event ? (src && src.type ? (this.originalEvent = src, this.type = src.type, this.isDefaultPrevented = src.defaultPrevented || src.getPreventDefault && src.getPreventDefault() ? returnTrue : returnFalse) : this.type = src, props && jQuery.extend(this, props), this.timeStamp = src && src.timeStamp || jQuery.now(), this[jQuery.expando] = true, undefined) : new jQuery.Event(src, props);
  4638. };
  4639. jQuery.Event.prototype = {
  4640. /** @type {function (): ?} */
  4641. isDefaultPrevented : returnFalse,
  4642. /** @type {function (): ?} */
  4643. isPropagationStopped : returnFalse,
  4644. /** @type {function (): ?} */
  4645. isImmediatePropagationStopped : returnFalse,
  4646. /**
  4647. * @return {undefined}
  4648. */
  4649. preventDefault : function() {
  4650. var e = this.originalEvent;
  4651. /** @type {function (): ?} */
  4652. this.isDefaultPrevented = returnTrue;
  4653. if (e) {
  4654. if (e.preventDefault) {
  4655. e.preventDefault();
  4656. }
  4657. }
  4658. },
  4659. /**
  4660. * @return {undefined}
  4661. */
  4662. stopPropagation : function() {
  4663. var e = this.originalEvent;
  4664. /** @type {function (): ?} */
  4665. this.isPropagationStopped = returnTrue;
  4666. if (e) {
  4667. if (e.stopPropagation) {
  4668. e.stopPropagation();
  4669. }
  4670. }
  4671. },
  4672. /**
  4673. * @return {undefined}
  4674. */
  4675. stopImmediatePropagation : function() {
  4676. /** @type {function (): ?} */
  4677. this.isImmediatePropagationStopped = returnTrue;
  4678. this.stopPropagation();
  4679. }
  4680. };
  4681. jQuery.each({
  4682. mouseenter : "mouseover",
  4683. mouseleave : "mouseout"
  4684. }, function(orig, fix) {
  4685. jQuery.event.special[orig] = {
  4686. delegateType : fix,
  4687. bindType : fix,
  4688. /**
  4689. * @param {Object} event
  4690. * @return {?}
  4691. */
  4692. handle : function(event) {
  4693. var returnValue;
  4694. var target = this;
  4695. var related = event.relatedTarget;
  4696. var handleObj = event.handleObj;
  4697. return(!related || related !== target && !jQuery.contains(target, related)) && (event.type = handleObj.origType, returnValue = handleObj.handler.apply(this, arguments), event.type = fix), returnValue;
  4698. }
  4699. };
  4700. });
  4701. if (!jQuery.support.focusinBubbles) {
  4702. jQuery.each({
  4703. focus : "focusin",
  4704. blur : "focusout"
  4705. }, function(orig, fix) {
  4706. /** @type {number} */
  4707. var n = 0;
  4708. /**
  4709. * @param {Object} event
  4710. * @return {undefined}
  4711. */
  4712. var handler = function(event) {
  4713. jQuery.event.simulate(fix, event.target, jQuery.event.fix(event), true);
  4714. };
  4715. jQuery.event.special[fix] = {
  4716. /**
  4717. * @return {undefined}
  4718. */
  4719. setup : function() {
  4720. if (0 === n++) {
  4721. doc.addEventListener(orig, handler, true);
  4722. }
  4723. },
  4724. /**
  4725. * @return {undefined}
  4726. */
  4727. teardown : function() {
  4728. if (0 === --n) {
  4729. doc.removeEventListener(orig, handler, true);
  4730. }
  4731. }
  4732. };
  4733. });
  4734. }
  4735. jQuery.fn.extend({
  4736. /**
  4737. * @param {Object} types
  4738. * @param {string} selector
  4739. * @param {string} data
  4740. * @param {Object} fn
  4741. * @param {(number|string)} one
  4742. * @return {?}
  4743. */
  4744. on : function(types, selector, data, fn, one) {
  4745. var origFn;
  4746. var type;
  4747. if ("object" == typeof types) {
  4748. if ("string" != typeof selector) {
  4749. data = data || selector;
  4750. /** @type {string} */
  4751. selector = undefined;
  4752. }
  4753. for (type in types) {
  4754. this.on(type, selector, data, types[type], one);
  4755. }
  4756. return this;
  4757. }
  4758. if (null == data && null == fn ? (fn = selector, data = selector = undefined) : null == fn && ("string" == typeof selector ? (fn = data, data = undefined) : (fn = data, data = selector, selector = undefined)), fn === false) {
  4759. /** @type {function (): ?} */
  4760. fn = returnFalse;
  4761. } else {
  4762. if (!fn) {
  4763. return this;
  4764. }
  4765. }
  4766. return 1 === one && (origFn = fn, fn = function(type) {
  4767. return jQuery().off(type), origFn.apply(this, arguments);
  4768. }, fn.guid = origFn.guid || (origFn.guid = jQuery.guid++)), this.each(function() {
  4769. jQuery.event.add(this, types, fn, data, selector);
  4770. });
  4771. },
  4772. /**
  4773. * @param {Object} types
  4774. * @param {string} selector
  4775. * @param {string} data
  4776. * @param {Object} fn
  4777. * @return {?}
  4778. */
  4779. one : function(types, selector, data, fn) {
  4780. return this.on(types, selector, data, fn, 1);
  4781. },
  4782. /**
  4783. * @param {Object} types
  4784. * @param {Object} selector
  4785. * @param {Function} fn
  4786. * @return {?}
  4787. */
  4788. off : function(types, selector, fn) {
  4789. var handleObj;
  4790. var type;
  4791. if (types && (types.preventDefault && types.handleObj)) {
  4792. return handleObj = types.handleObj, jQuery(types.delegateTarget).off(handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, handleObj.selector, handleObj.handler), this;
  4793. }
  4794. if ("object" == typeof types) {
  4795. for (type in types) {
  4796. this.off(type, selector, types[type]);
  4797. }
  4798. return this;
  4799. }
  4800. return(selector === false || "function" == typeof selector) && (fn = selector, selector = undefined), fn === false && (fn = returnFalse), this.each(function() {
  4801. jQuery.event.remove(this, types, fn, selector);
  4802. });
  4803. },
  4804. /**
  4805. * @param {string} type
  4806. * @param {?} data
  4807. * @return {?}
  4808. */
  4809. trigger : function(type, data) {
  4810. return this.each(function() {
  4811. jQuery.event.trigger(type, data, this);
  4812. });
  4813. },
  4814. /**
  4815. * @param {string} type
  4816. * @param {?} data
  4817. * @return {?}
  4818. */
  4819. triggerHandler : function(type, data) {
  4820. var options = this[0];
  4821. return options ? jQuery.event.trigger(type, data, options, true) : undefined;
  4822. }
  4823. });
  4824. /** @type {RegExp} */
  4825. var isSimple = /^.[^:#\[\.,]*$/;
  4826. /** @type {RegExp} */
  4827. var rparentsprev = /^(?:parents|prev(?:Until|All))/;
  4828. var rneedsContext = jQuery.expr.match.needsContext;
  4829. var guaranteedUnique = {
  4830. children : true,
  4831. contents : true,
  4832. next : true,
  4833. prev : true
  4834. };
  4835. jQuery.fn.extend({
  4836. /**
  4837. * @param {string} selector
  4838. * @return {?}
  4839. */
  4840. find : function(selector) {
  4841. var i;
  4842. /** @type {Array} */
  4843. var ret = [];
  4844. var self = this;
  4845. var len = self.length;
  4846. if ("string" != typeof selector) {
  4847. return this.pushStack(jQuery(selector).filter(function() {
  4848. /** @type {number} */
  4849. i = 0;
  4850. for (;len > i;i++) {
  4851. if (jQuery.contains(self[i], this)) {
  4852. return true;
  4853. }
  4854. }
  4855. }));
  4856. }
  4857. /** @type {number} */
  4858. i = 0;
  4859. for (;len > i;i++) {
  4860. jQuery.find(selector, self[i], ret);
  4861. }
  4862. return ret = this.pushStack(len > 1 ? jQuery.unique(ret) : ret), ret.selector = this.selector ? this.selector + " " + selector : selector, ret;
  4863. },
  4864. /**
  4865. * @param {string} target
  4866. * @return {?}
  4867. */
  4868. has : function(target) {
  4869. var targets = jQuery(target, this);
  4870. var l = targets.length;
  4871. return this.filter(function() {
  4872. /** @type {number} */
  4873. var i = 0;
  4874. for (;l > i;i++) {
  4875. if (jQuery.contains(this, targets[i])) {
  4876. return true;
  4877. }
  4878. }
  4879. });
  4880. },
  4881. /**
  4882. * @param {Array} selector
  4883. * @return {?}
  4884. */
  4885. not : function(selector) {
  4886. return this.pushStack(winnow(this, selector || [], true));
  4887. },
  4888. /**
  4889. * @param {Object} selector
  4890. * @return {?}
  4891. */
  4892. filter : function(selector) {
  4893. return this.pushStack(winnow(this, selector || [], false));
  4894. },
  4895. /**
  4896. * @param {string} selector
  4897. * @return {?}
  4898. */
  4899. is : function(selector) {
  4900. return!!winnow(this, "string" == typeof selector && rneedsContext.test(selector) ? jQuery(selector) : selector || [], false).length;
  4901. },
  4902. /**
  4903. * @param {string} selectors
  4904. * @param {number} context
  4905. * @return {?}
  4906. */
  4907. closest : function(selectors, context) {
  4908. var cur;
  4909. /** @type {number} */
  4910. var i = 0;
  4911. var l = this.length;
  4912. /** @type {Array} */
  4913. var matched = [];
  4914. var pos = rneedsContext.test(selectors) || "string" != typeof selectors ? jQuery(selectors, context || this.context) : 0;
  4915. for (;l > i;i++) {
  4916. cur = this[i];
  4917. for (;cur && cur !== context;cur = cur.parentNode) {
  4918. if (11 > cur.nodeType && (pos ? pos.index(cur) > -1 : 1 === cur.nodeType && jQuery.find.matchesSelector(cur, selectors))) {
  4919. /** @type {number} */
  4920. cur = matched.push(cur);
  4921. break;
  4922. }
  4923. }
  4924. }
  4925. return this.pushStack(matched.length > 1 ? jQuery.unique(matched) : matched);
  4926. },
  4927. /**
  4928. * @param {boolean} elem
  4929. * @return {?}
  4930. */
  4931. index : function(elem) {
  4932. return elem ? "string" == typeof elem ? core_indexOf.call(jQuery(elem), this[0]) : core_indexOf.call(this, elem.jquery ? elem[0] : elem) : this[0] && this[0].parentNode ? this.first().prevAll().length : -1;
  4933. },
  4934. /**
  4935. * @param {Object} selector
  4936. * @param {Object} context
  4937. * @return {?}
  4938. */
  4939. add : function(selector, context) {
  4940. var set = "string" == typeof selector ? jQuery(selector, context) : jQuery.makeArray(selector && selector.nodeType ? [selector] : selector);
  4941. var all = jQuery.merge(this.get(), set);
  4942. return this.pushStack(jQuery.unique(all));
  4943. },
  4944. /**
  4945. * @param {Object} selector
  4946. * @return {?}
  4947. */
  4948. addBack : function(selector) {
  4949. return this.add(null == selector ? this.prevObject : this.prevObject.filter(selector));
  4950. }
  4951. });
  4952. jQuery.each({
  4953. /**
  4954. * @param {Node} elem
  4955. * @return {?}
  4956. */
  4957. parent : function(elem) {
  4958. var parent = elem.parentNode;
  4959. return parent && 11 !== parent.nodeType ? parent : null;
  4960. },
  4961. /**
  4962. * @param {Object} elem
  4963. * @return {?}
  4964. */
  4965. parents : function(elem) {
  4966. return jQuery.dir(elem, "parentNode");
  4967. },
  4968. /**
  4969. * @param {Object} elem
  4970. * @param {?} i
  4971. * @param {string} until
  4972. * @return {?}
  4973. */
  4974. parentsUntil : function(elem, i, until) {
  4975. return jQuery.dir(elem, "parentNode", until);
  4976. },
  4977. /**
  4978. * @param {Object} elem
  4979. * @return {?}
  4980. */
  4981. next : function(elem) {
  4982. return sibling(elem, "nextSibling");
  4983. },
  4984. /**
  4985. * @param {Object} elem
  4986. * @return {?}
  4987. */
  4988. prev : function(elem) {
  4989. return sibling(elem, "previousSibling");
  4990. },
  4991. /**
  4992. * @param {Object} elem
  4993. * @return {?}
  4994. */
  4995. nextAll : function(elem) {
  4996. return jQuery.dir(elem, "nextSibling");
  4997. },
  4998. /**
  4999. * @param {Object} elem
  5000. * @return {?}
  5001. */
  5002. prevAll : function(elem) {
  5003. return jQuery.dir(elem, "previousSibling");
  5004. },
  5005. /**
  5006. * @param {Object} elem
  5007. * @param {?} i
  5008. * @param {string} until
  5009. * @return {?}
  5010. */
  5011. nextUntil : function(elem, i, until) {
  5012. return jQuery.dir(elem, "nextSibling", until);
  5013. },
  5014. /**
  5015. * @param {Object} elem
  5016. * @param {?} i
  5017. * @param {string} until
  5018. * @return {?}
  5019. */
  5020. prevUntil : function(elem, i, until) {
  5021. return jQuery.dir(elem, "previousSibling", until);
  5022. },
  5023. /**
  5024. * @param {HTMLElement} elem
  5025. * @return {?}
  5026. */
  5027. siblings : function(elem) {
  5028. return jQuery.sibling((elem.parentNode || {}).firstChild, elem);
  5029. },
  5030. /**
  5031. * @param {Element} elem
  5032. * @return {?}
  5033. */
  5034. children : function(elem) {
  5035. return jQuery.sibling(elem.firstChild);
  5036. },
  5037. /**
  5038. * @param {Element} elem
  5039. * @return {?}
  5040. */
  5041. contents : function(elem) {
  5042. return elem.contentDocument || jQuery.merge([], elem.childNodes);
  5043. }
  5044. }, function(name, fn) {
  5045. /**
  5046. * @param {boolean} until
  5047. * @param {boolean} selector
  5048. * @return {?}
  5049. */
  5050. jQuery.fn[name] = function(until, selector) {
  5051. var matched = jQuery.map(this, fn, until);
  5052. return "Until" !== name.slice(-5) && (selector = until), selector && ("string" == typeof selector && (matched = jQuery.filter(selector, matched))), this.length > 1 && (guaranteedUnique[name] || jQuery.unique(matched), rparentsprev.test(name) && matched.reverse()), this.pushStack(matched);
  5053. };
  5054. });
  5055. jQuery.extend({
  5056. /**
  5057. * @param {Object} expr
  5058. * @param {string} elems
  5059. * @param {boolean} not
  5060. * @return {?}
  5061. */
  5062. filter : function(expr, elems, not) {
  5063. var elem = elems[0];
  5064. return not && (expr = ":not(" + expr + ")"), 1 === elems.length && 1 === elem.nodeType ? jQuery.find.matchesSelector(elem, expr) ? [elem] : [] : jQuery.find.matches(expr, jQuery.grep(elems, function(dest) {
  5065. return 1 === dest.nodeType;
  5066. }));
  5067. },
  5068. /**
  5069. * @param {Object} elem
  5070. * @param {string} dir
  5071. * @param {string} until
  5072. * @return {?}
  5073. */
  5074. dir : function(elem, dir, until) {
  5075. /** @type {Array} */
  5076. var matched = [];
  5077. /** @type {boolean} */
  5078. var truncate = until !== undefined;
  5079. for (;(elem = elem[dir]) && 9 !== elem.nodeType;) {
  5080. if (1 === elem.nodeType) {
  5081. if (truncate && jQuery(elem).is(until)) {
  5082. break;
  5083. }
  5084. matched.push(elem);
  5085. }
  5086. }
  5087. return matched;
  5088. },
  5089. /**
  5090. * @param {Object} n
  5091. * @param {Object} elem
  5092. * @return {?}
  5093. */
  5094. sibling : function(n, elem) {
  5095. /** @type {Array} */
  5096. var r = [];
  5097. for (;n;n = n.nextSibling) {
  5098. if (1 === n.nodeType) {
  5099. if (n !== elem) {
  5100. r.push(n);
  5101. }
  5102. }
  5103. }
  5104. return r;
  5105. }
  5106. });
  5107. /** @type {RegExp} */
  5108. var rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi;
  5109. /** @type {RegExp} */
  5110. var matches = /<([\w:]+)/;
  5111. /** @type {RegExp} */
  5112. var rhtml = /<|&#?\w+;/;
  5113. /** @type {RegExp} */
  5114. var rchecked = /<(?:script|style|link)/i;
  5115. /** @type {RegExp} */
  5116. var manipulation_rcheckableType = /^(?:checkbox|radio)$/i;
  5117. /** @type {RegExp} */
  5118. var BEGIN_TAG_REGEXP = /checked\s*(?:[^=]|=\s*.checked.)/i;
  5119. /** @type {RegExp} */
  5120. var stopParent = /^$|\/(?:java|ecma)script/i;
  5121. /** @type {RegExp} */
  5122. var rscriptTypeMasked = /^true\/(.*)/;
  5123. /** @type {RegExp} */
  5124. var rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
  5125. var wrapMap = {
  5126. option : [1, "<select multiple='multiple'>", "</select>"],
  5127. thead : [1, "<table>", "</table>"],
  5128. col : [2, "<table><colgroup>", "</colgroup></table>"],
  5129. tr : [2, "<table><tbody>", "</tbody></table>"],
  5130. td : [3, "<table><tbody><tr>", "</tr></tbody></table>"],
  5131. _default : [0, "", ""]
  5132. };
  5133. /** @type {Array} */
  5134. wrapMap.optgroup = wrapMap.option;
  5135. /** @type {Array} */
  5136. wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
  5137. /** @type {Array} */
  5138. wrapMap.th = wrapMap.td;
  5139. jQuery.fn.extend({
  5140. /**
  5141. * @param {Object} value
  5142. * @return {?}
  5143. */
  5144. text : function(value) {
  5145. return jQuery.access(this, function(value) {
  5146. return value === undefined ? jQuery.text(this) : this.empty().append((this[0] && this[0].ownerDocument || doc).createTextNode(value));
  5147. }, null, value, arguments.length);
  5148. },
  5149. /**
  5150. * @return {?}
  5151. */
  5152. append : function() {
  5153. return this.domManip(arguments, function(elem) {
  5154. if (1 === this.nodeType || (11 === this.nodeType || 9 === this.nodeType)) {
  5155. var target = manipulationTarget(this, elem);
  5156. target.appendChild(elem);
  5157. }
  5158. });
  5159. },
  5160. /**
  5161. * @return {?}
  5162. */
  5163. prepend : function() {
  5164. return this.domManip(arguments, function(elem) {
  5165. if (1 === this.nodeType || (11 === this.nodeType || 9 === this.nodeType)) {
  5166. var target = manipulationTarget(this, elem);
  5167. target.insertBefore(elem, target.firstChild);
  5168. }
  5169. });
  5170. },
  5171. /**
  5172. * @return {?}
  5173. */
  5174. before : function() {
  5175. return this.domManip(arguments, function(elem) {
  5176. if (this.parentNode) {
  5177. this.parentNode.insertBefore(elem, this);
  5178. }
  5179. });
  5180. },
  5181. /**
  5182. * @return {?}
  5183. */
  5184. after : function() {
  5185. return this.domManip(arguments, function(elem) {
  5186. if (this.parentNode) {
  5187. this.parentNode.insertBefore(elem, this.nextSibling);
  5188. }
  5189. });
  5190. },
  5191. /**
  5192. * @param {boolean} selector
  5193. * @param {?} keepData
  5194. * @return {?}
  5195. */
  5196. remove : function(selector, keepData) {
  5197. var elem;
  5198. var elems = selector ? jQuery.filter(selector, this) : this;
  5199. /** @type {number} */
  5200. var i = 0;
  5201. for (;null != (elem = elems[i]);i++) {
  5202. if (!keepData) {
  5203. if (!(1 !== elem.nodeType)) {
  5204. jQuery.cleanData(getAll(elem));
  5205. }
  5206. }
  5207. if (elem.parentNode) {
  5208. if (keepData) {
  5209. if (jQuery.contains(elem.ownerDocument, elem)) {
  5210. setGlobalEval(getAll(elem, "script"));
  5211. }
  5212. }
  5213. elem.parentNode.removeChild(elem);
  5214. }
  5215. }
  5216. return this;
  5217. },
  5218. /**
  5219. * @return {?}
  5220. */
  5221. empty : function() {
  5222. var elem;
  5223. /** @type {number} */
  5224. var unlock = 0;
  5225. for (;null != (elem = this[unlock]);unlock++) {
  5226. if (1 === elem.nodeType) {
  5227. jQuery.cleanData(getAll(elem, false));
  5228. /** @type {string} */
  5229. elem.textContent = "";
  5230. }
  5231. }
  5232. return this;
  5233. },
  5234. /**
  5235. * @param {boolean} dataAndEvents
  5236. * @param {boolean} deepDataAndEvents
  5237. * @return {?}
  5238. */
  5239. clone : function(dataAndEvents, deepDataAndEvents) {
  5240. return dataAndEvents = null == dataAndEvents ? false : dataAndEvents, deepDataAndEvents = null == deepDataAndEvents ? dataAndEvents : deepDataAndEvents, this.map(function() {
  5241. return jQuery.clone(this, dataAndEvents, deepDataAndEvents);
  5242. });
  5243. },
  5244. /**
  5245. * @param {string} value
  5246. * @return {?}
  5247. */
  5248. html : function(value) {
  5249. return jQuery.access(this, function(value) {
  5250. var elem = this[0] || {};
  5251. /** @type {number} */
  5252. var r = 0;
  5253. var l = this.length;
  5254. if (value === undefined && 1 === elem.nodeType) {
  5255. return elem.innerHTML;
  5256. }
  5257. if ("string" == typeof value && (!rchecked.test(value) && !wrapMap[(matches.exec(value) || ["", ""])[1].toLowerCase()])) {
  5258. /** @type {string} */
  5259. value = value.replace(rxhtmlTag, "<$1></$2>");
  5260. try {
  5261. for (;l > r;r++) {
  5262. elem = this[r] || {};
  5263. if (1 === elem.nodeType) {
  5264. jQuery.cleanData(getAll(elem, false));
  5265. /** @type {string} */
  5266. elem.innerHTML = value;
  5267. }
  5268. }
  5269. /** @type {number} */
  5270. elem = 0;
  5271. } catch (i) {
  5272. }
  5273. }
  5274. if (elem) {
  5275. this.empty().append(value);
  5276. }
  5277. }, null, value, arguments.length);
  5278. },
  5279. /**
  5280. * @return {?}
  5281. */
  5282. replaceWith : function() {
  5283. var args = jQuery.map(this, function(lineEndNode) {
  5284. return[lineEndNode.nextSibling, lineEndNode.parentNode];
  5285. });
  5286. /** @type {number} */
  5287. var i = 0;
  5288. return this.domManip(arguments, function(child) {
  5289. var next = args[i++];
  5290. var parent = args[i++];
  5291. if (parent) {
  5292. if (next) {
  5293. if (next.parentNode !== parent) {
  5294. next = this.nextSibling;
  5295. }
  5296. }
  5297. jQuery(this).remove();
  5298. parent.insertBefore(child, next);
  5299. }
  5300. }, true), i ? this : this.remove();
  5301. },
  5302. /**
  5303. * @param {Object} selector
  5304. * @return {?}
  5305. */
  5306. detach : function(selector) {
  5307. return this.remove(selector, true);
  5308. },
  5309. /**
  5310. * @param {Object} args
  5311. * @param {Function} callback
  5312. * @param {boolean} allowIntersection
  5313. * @return {?}
  5314. */
  5315. domManip : function(args, callback, allowIntersection) {
  5316. /** @type {Array} */
  5317. args = core_concat.apply([], args);
  5318. var fragment;
  5319. var first;
  5320. var scripts;
  5321. var _len;
  5322. var node;
  5323. var doc;
  5324. /** @type {number} */
  5325. var i = 0;
  5326. var l = this.length;
  5327. var set = this;
  5328. /** @type {number} */
  5329. var iNoClone = l - 1;
  5330. var html = args[0];
  5331. var isFunction = jQuery.isFunction(html);
  5332. if (isFunction || !(1 >= l || ("string" != typeof html || jQuery.support.checkClone)) && BEGIN_TAG_REGEXP.test(html)) {
  5333. return this.each(function(index) {
  5334. var self = set.eq(index);
  5335. if (isFunction) {
  5336. args[0] = html.call(this, index, self.html());
  5337. }
  5338. self.domManip(args, callback, allowIntersection);
  5339. });
  5340. }
  5341. if (l && (fragment = jQuery.buildFragment(args, this[0].ownerDocument, false, !allowIntersection && this), first = fragment.firstChild, 1 === fragment.childNodes.length && (fragment = first), first)) {
  5342. scripts = jQuery.map(getAll(fragment, "script"), restoreScript);
  5343. _len = scripts.length;
  5344. for (;l > i;i++) {
  5345. node = fragment;
  5346. if (i !== iNoClone) {
  5347. node = jQuery.clone(node, true, true);
  5348. if (_len) {
  5349. jQuery.merge(scripts, getAll(node, "script"));
  5350. }
  5351. }
  5352. callback.call(this[i], node, i);
  5353. }
  5354. if (_len) {
  5355. doc = scripts[scripts.length - 1].ownerDocument;
  5356. jQuery.map(scripts, fn);
  5357. /** @type {number} */
  5358. i = 0;
  5359. for (;_len > i;i++) {
  5360. node = scripts[i];
  5361. if (stopParent.test(node.type || "")) {
  5362. if (!data_priv.access(node, "globalEval")) {
  5363. if (jQuery.contains(doc, node)) {
  5364. if (node.src) {
  5365. jQuery._evalUrl(node.src);
  5366. } else {
  5367. jQuery.globalEval(node.textContent.replace(rcleanScript, ""));
  5368. }
  5369. }
  5370. }
  5371. }
  5372. }
  5373. }
  5374. }
  5375. return this;
  5376. }
  5377. });
  5378. jQuery.each({
  5379. appendTo : "append",
  5380. prependTo : "prepend",
  5381. insertBefore : "before",
  5382. insertAfter : "after",
  5383. replaceAll : "replaceWith"
  5384. }, function(original, method) {
  5385. /**
  5386. * @param {string} scripts
  5387. * @return {?}
  5388. */
  5389. jQuery.fn[original] = function(scripts) {
  5390. var resp;
  5391. /** @type {Array} */
  5392. var ret = [];
  5393. var insert = jQuery(scripts);
  5394. /** @type {number} */
  5395. var segments = insert.length - 1;
  5396. /** @type {number} */
  5397. var i = 0;
  5398. for (;segments >= i;i++) {
  5399. resp = i === segments ? this : this.clone(true);
  5400. jQuery(insert[i])[method](resp);
  5401. core_push.apply(ret, resp.get());
  5402. }
  5403. return this.pushStack(ret);
  5404. };
  5405. });
  5406. jQuery.extend({
  5407. /**
  5408. * @param {Object} elem
  5409. * @param {boolean} dataAndEvents
  5410. * @param {boolean} deepDataAndEvents
  5411. * @return {?}
  5412. */
  5413. clone : function(elem, dataAndEvents, deepDataAndEvents) {
  5414. var i;
  5415. var l;
  5416. var srcElements;
  5417. var destElements;
  5418. var clone = elem.cloneNode(true);
  5419. var inPage = jQuery.contains(elem.ownerDocument, elem);
  5420. if (!(jQuery.support.noCloneChecked || (1 !== elem.nodeType && 11 !== elem.nodeType || jQuery.isXMLDoc(elem)))) {
  5421. destElements = getAll(clone);
  5422. srcElements = getAll(elem);
  5423. /** @type {number} */
  5424. i = 0;
  5425. l = srcElements.length;
  5426. for (;l > i;i++) {
  5427. fixInput(srcElements[i], destElements[i]);
  5428. }
  5429. }
  5430. if (dataAndEvents) {
  5431. if (deepDataAndEvents) {
  5432. srcElements = srcElements || getAll(elem);
  5433. destElements = destElements || getAll(clone);
  5434. /** @type {number} */
  5435. i = 0;
  5436. l = srcElements.length;
  5437. for (;l > i;i++) {
  5438. cloneCopyEvent(srcElements[i], destElements[i]);
  5439. }
  5440. } else {
  5441. cloneCopyEvent(elem, clone);
  5442. }
  5443. }
  5444. return destElements = getAll(clone, "script"), destElements.length > 0 && setGlobalEval(destElements, !inPage && getAll(elem, "script")), clone;
  5445. },
  5446. /**
  5447. * @param {Array} elems
  5448. * @param {Document} context
  5449. * @param {boolean} scripts
  5450. * @param {?} selection
  5451. * @return {?}
  5452. */
  5453. buildFragment : function(elems, context, scripts, selection) {
  5454. var elem;
  5455. var tmp;
  5456. var tag;
  5457. var wrap;
  5458. var contains;
  5459. var j;
  5460. /** @type {number} */
  5461. var i = 0;
  5462. var l = elems.length;
  5463. var fragment = context.createDocumentFragment();
  5464. /** @type {Array} */
  5465. var nodes = [];
  5466. for (;l > i;i++) {
  5467. if (elem = elems[i], elem || 0 === elem) {
  5468. if ("object" === jQuery.type(elem)) {
  5469. jQuery.merge(nodes, elem.nodeType ? [elem] : elem);
  5470. } else {
  5471. if (rhtml.test(elem)) {
  5472. tmp = tmp || fragment.appendChild(context.createElement("div"));
  5473. tag = (matches.exec(elem) || ["", ""])[1].toLowerCase();
  5474. wrap = wrapMap[tag] || wrapMap._default;
  5475. tmp.innerHTML = wrap[1] + elem.replace(rxhtmlTag, "<$1></$2>") + wrap[2];
  5476. j = wrap[0];
  5477. for (;j--;) {
  5478. tmp = tmp.lastChild;
  5479. }
  5480. jQuery.merge(nodes, tmp.childNodes);
  5481. tmp = fragment.firstChild;
  5482. /** @type {string} */
  5483. tmp.textContent = "";
  5484. } else {
  5485. nodes.push(context.createTextNode(elem));
  5486. }
  5487. }
  5488. }
  5489. }
  5490. /** @type {string} */
  5491. fragment.textContent = "";
  5492. /** @type {number} */
  5493. i = 0;
  5494. for (;elem = nodes[i++];) {
  5495. if ((!selection || -1 === jQuery.inArray(elem, selection)) && (contains = jQuery.contains(elem.ownerDocument, elem), tmp = getAll(fragment.appendChild(elem), "script"), contains && setGlobalEval(tmp), scripts)) {
  5496. /** @type {number} */
  5497. j = 0;
  5498. for (;elem = tmp[j++];) {
  5499. if (stopParent.test(elem.type || "")) {
  5500. scripts.push(elem);
  5501. }
  5502. }
  5503. }
  5504. }
  5505. return fragment;
  5506. },
  5507. /**
  5508. * @param {Array} elems
  5509. * @return {undefined}
  5510. */
  5511. cleanData : function(elems) {
  5512. var pdataCur;
  5513. var elem;
  5514. var data;
  5515. var type;
  5516. var key;
  5517. var charCode;
  5518. var special = jQuery.event.special;
  5519. /** @type {number} */
  5520. var i = 0;
  5521. for (;(elem = elems[i]) !== undefined;i++) {
  5522. if (Data.accepts(elem) && (key = elem[data_priv.expando], key && (pdataCur = data_priv.cache[key]))) {
  5523. if (data = Object.keys(pdataCur.events || {}), data.length) {
  5524. /** @type {number} */
  5525. charCode = 0;
  5526. for (;(type = data[charCode]) !== undefined;charCode++) {
  5527. if (special[type]) {
  5528. jQuery.event.remove(elem, type);
  5529. } else {
  5530. jQuery.removeEvent(elem, type, pdataCur.handle);
  5531. }
  5532. }
  5533. }
  5534. if (data_priv.cache[key]) {
  5535. delete data_priv.cache[key];
  5536. }
  5537. }
  5538. delete data_user.cache[elem[data_user.expando]];
  5539. }
  5540. },
  5541. /**
  5542. * @param {string} url
  5543. * @return {?}
  5544. */
  5545. _evalUrl : function(url) {
  5546. return jQuery.ajax({
  5547. url : url,
  5548. type : "GET",
  5549. dataType : "script",
  5550. async : false,
  5551. global : false,
  5552. "throws" : true
  5553. });
  5554. }
  5555. });
  5556. jQuery.fn.extend({
  5557. /**
  5558. * @param {Function} html
  5559. * @return {?}
  5560. */
  5561. wrapAll : function(html) {
  5562. var wrap;
  5563. return jQuery.isFunction(html) ? this.each(function(i) {
  5564. jQuery(this).wrapAll(html.call(this, i));
  5565. }) : (this[0] && (wrap = jQuery(html, this[0].ownerDocument).eq(0).clone(true), this[0].parentNode && wrap.insertBefore(this[0]), wrap.map(function() {
  5566. var elem = this;
  5567. for (;elem.firstElementChild;) {
  5568. elem = elem.firstElementChild;
  5569. }
  5570. return elem;
  5571. }).append(this)), this);
  5572. },
  5573. /**
  5574. * @param {Function} html
  5575. * @return {?}
  5576. */
  5577. wrapInner : function(html) {
  5578. return jQuery.isFunction(html) ? this.each(function(i) {
  5579. jQuery(this).wrapInner(html.call(this, i));
  5580. }) : this.each(function() {
  5581. var self = jQuery(this);
  5582. var contents = self.contents();
  5583. if (contents.length) {
  5584. contents.wrapAll(html);
  5585. } else {
  5586. self.append(html);
  5587. }
  5588. });
  5589. },
  5590. /**
  5591. * @param {Function} html
  5592. * @return {?}
  5593. */
  5594. wrap : function(html) {
  5595. var isFunction = jQuery.isFunction(html);
  5596. return this.each(function(i) {
  5597. jQuery(this).wrapAll(isFunction ? html.call(this, i) : html);
  5598. });
  5599. },
  5600. /**
  5601. * @return {?}
  5602. */
  5603. unwrap : function() {
  5604. return this.parent().each(function() {
  5605. if (!jQuery.nodeName(this, "body")) {
  5606. jQuery(this).replaceWith(this.childNodes);
  5607. }
  5608. }).end();
  5609. }
  5610. });
  5611. var curCSS;
  5612. var iframe;
  5613. /** @type {RegExp} */
  5614. var rdisplayswap = /^(none|table(?!-c[ea]).+)/;
  5615. /** @type {RegExp} */
  5616. var rbracket = /^margin/;
  5617. /** @type {RegExp} */
  5618. var ret = RegExp("^(" + core_pnum + ")(.*)$", "i");
  5619. /** @type {RegExp} */
  5620. var re = RegExp("^(" + core_pnum + ")(?!px)[a-z%]+$", "i");
  5621. /** @type {RegExp} */
  5622. var r = RegExp("^([+-])=(" + core_pnum + ")", "i");
  5623. var flags = {
  5624. BODY : "block"
  5625. };
  5626. var props = {
  5627. position : "absolute",
  5628. visibility : "hidden",
  5629. display : "block"
  5630. };
  5631. var cssNormalTransform = {
  5632. letterSpacing : 0,
  5633. fontWeight : 400
  5634. };
  5635. /** @type {Array} */
  5636. var cssExpand = ["Top", "Right", "Bottom", "Left"];
  5637. /** @type {Array} */
  5638. var cssPrefixes = ["Webkit", "O", "Moz", "ms"];
  5639. jQuery.fn.extend({
  5640. /**
  5641. * @param {Object} name
  5642. * @param {string} value
  5643. * @return {?}
  5644. */
  5645. css : function(name, value) {
  5646. return jQuery.access(this, function(elem, prop, value) {
  5647. var styles;
  5648. var _len;
  5649. var map = {};
  5650. /** @type {number} */
  5651. var name = 0;
  5652. if (jQuery.isArray(prop)) {
  5653. styles = getStyles(elem);
  5654. _len = prop.length;
  5655. for (;_len > name;name++) {
  5656. map[prop[name]] = jQuery.css(elem, prop[name], false, styles);
  5657. }
  5658. return map;
  5659. }
  5660. return value !== undefined ? jQuery.style(elem, prop, value) : jQuery.css(elem, prop);
  5661. }, name, value, arguments.length > 1);
  5662. },
  5663. /**
  5664. * @return {?}
  5665. */
  5666. show : function() {
  5667. return showHide(this, true);
  5668. },
  5669. /**
  5670. * @return {?}
  5671. */
  5672. hide : function() {
  5673. return showHide(this);
  5674. },
  5675. /**
  5676. * @param {?} state
  5677. * @return {?}
  5678. */
  5679. toggle : function(state) {
  5680. return "boolean" == typeof state ? state ? this.show() : this.hide() : this.each(function() {
  5681. if (isHidden(this)) {
  5682. jQuery(this).show();
  5683. } else {
  5684. jQuery(this).hide();
  5685. }
  5686. });
  5687. }
  5688. });
  5689. jQuery.extend({
  5690. cssHooks : {
  5691. opacity : {
  5692. /**
  5693. * @param {Object} elem
  5694. * @param {string} value
  5695. * @return {?}
  5696. */
  5697. get : function(elem, value) {
  5698. if (value) {
  5699. var ret = curCSS(elem, "opacity");
  5700. return "" === ret ? "1" : ret;
  5701. }
  5702. }
  5703. }
  5704. },
  5705. cssNumber : {
  5706. columnCount : true,
  5707. fillOpacity : true,
  5708. fontWeight : true,
  5709. lineHeight : true,
  5710. opacity : true,
  5711. order : true,
  5712. orphans : true,
  5713. widows : true,
  5714. zIndex : true,
  5715. zoom : true
  5716. },
  5717. cssProps : {
  5718. "float" : "cssFloat"
  5719. },
  5720. /**
  5721. * @param {Object} elem
  5722. * @param {string} name
  5723. * @param {string} value
  5724. * @param {string} extra
  5725. * @return {?}
  5726. */
  5727. style : function(elem, name, value, extra) {
  5728. if (elem && (3 !== elem.nodeType && (8 !== elem.nodeType && elem.style))) {
  5729. var ret;
  5730. var current;
  5731. var hooks;
  5732. var origName = jQuery.camelCase(name);
  5733. var style = elem.style;
  5734. return name = jQuery.cssProps[origName] || (jQuery.cssProps[origName] = vendorPropName(style, origName)), hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName], value === undefined ? hooks && ("get" in hooks && (ret = hooks.get(elem, false, extra)) !== undefined) ? ret : style[name] : (current = typeof value, "string" === current && ((ret = r.exec(value)) && (value = (ret[1] + 1) * ret[2] + parseFloat(jQuery.css(elem, name)), current = "number")), null == value || ("number" === current &&
  5735. isNaN(value) || ("number" !== current || (jQuery.cssNumber[origName] || (value += "px")), jQuery.support.clearCloneStyle || ("" !== value || (0 !== name.indexOf("background") || (style[name] = "inherit"))), hooks && ("set" in hooks && (value = hooks.set(elem, value, extra)) === undefined) || (style[name] = value))), undefined);
  5736. }
  5737. },
  5738. /**
  5739. * @param {Object} elem
  5740. * @param {string} name
  5741. * @param {boolean} recurring
  5742. * @param {?} styles
  5743. * @return {?}
  5744. */
  5745. css : function(elem, name, recurring, styles) {
  5746. var val;
  5747. var html;
  5748. var result;
  5749. var origName = jQuery.camelCase(name);
  5750. return name = jQuery.cssProps[origName] || (jQuery.cssProps[origName] = vendorPropName(elem.style, origName)), result = jQuery.cssHooks[name] || jQuery.cssHooks[origName], result && ("get" in result && (val = result.get(elem, true, recurring))), val === undefined && (val = curCSS(elem, name, styles)), "normal" === val && (name in cssNormalTransform && (val = cssNormalTransform[name])), "" === recurring || recurring ? (html = parseFloat(val), recurring === true || jQuery.isNumeric(html) ? html ||
  5751. 0 : val) : val;
  5752. }
  5753. });
  5754. /**
  5755. * @param {Object} elem
  5756. * @param {string} prop
  5757. * @param {Object} _computed
  5758. * @return {?}
  5759. */
  5760. curCSS = function(elem, prop, _computed) {
  5761. var width;
  5762. var minWidth;
  5763. var maxWidth;
  5764. var computed = _computed || getStyles(elem);
  5765. var ret = computed ? computed.getPropertyValue(prop) || computed[prop] : undefined;
  5766. var style = elem.style;
  5767. return computed && ("" !== ret || (jQuery.contains(elem.ownerDocument, elem) || (ret = jQuery.style(elem, prop))), re.test(ret) && (rbracket.test(prop) && (width = style.width, minWidth = style.minWidth, maxWidth = style.maxWidth, style.minWidth = style.maxWidth = style.width = ret, ret = computed.width, style.width = width, style.minWidth = minWidth, style.maxWidth = maxWidth))), ret;
  5768. };
  5769. jQuery.each(["height", "width"], function(dataAndEvents, name) {
  5770. jQuery.cssHooks[name] = {
  5771. /**
  5772. * @param {Object} elem
  5773. * @param {string} value
  5774. * @param {string} extra
  5775. * @return {?}
  5776. */
  5777. get : function(elem, value, extra) {
  5778. return value ? 0 === elem.offsetWidth && rdisplayswap.test(jQuery.css(elem, "display")) ? jQuery.swap(elem, props, function() {
  5779. return getWidthOrHeight(elem, name, extra);
  5780. }) : getWidthOrHeight(elem, name, extra) : undefined;
  5781. },
  5782. /**
  5783. * @param {Object} elem
  5784. * @param {string} value
  5785. * @param {string} extra
  5786. * @return {?}
  5787. */
  5788. set : function(elem, value, extra) {
  5789. var styles = extra && getStyles(elem);
  5790. return setPositiveNumber(elem, value, extra ? augmentWidthOrHeight(elem, name, extra, jQuery.support.boxSizing && "border-box" === jQuery.css(elem, "boxSizing", false, styles), styles) : 0);
  5791. }
  5792. };
  5793. });
  5794. jQuery(function() {
  5795. if (!jQuery.support.reliableMarginRight) {
  5796. jQuery.cssHooks.marginRight = {
  5797. /**
  5798. * @param {Object} elem
  5799. * @param {string} value
  5800. * @return {?}
  5801. */
  5802. get : function(elem, value) {
  5803. return value ? jQuery.swap(elem, {
  5804. display : "inline-block"
  5805. }, curCSS, [elem, "marginRight"]) : undefined;
  5806. }
  5807. };
  5808. }
  5809. if (!jQuery.support.pixelPosition) {
  5810. if (jQuery.fn.position) {
  5811. jQuery.each(["top", "left"], function(dataAndEvents, prop) {
  5812. jQuery.cssHooks[prop] = {
  5813. /**
  5814. * @param {Object} elem
  5815. * @param {string} value
  5816. * @return {?}
  5817. */
  5818. get : function(elem, value) {
  5819. return value ? (value = curCSS(elem, prop), re.test(value) ? jQuery(elem).position()[prop] + "px" : value) : undefined;
  5820. }
  5821. };
  5822. });
  5823. }
  5824. }
  5825. });
  5826. if (jQuery.expr) {
  5827. if (jQuery.expr.filters) {
  5828. /**
  5829. * @param {Object} el
  5830. * @return {?}
  5831. */
  5832. jQuery.expr.filters.hidden = function(el) {
  5833. return 0 >= el.offsetWidth && 0 >= el.offsetHeight;
  5834. };
  5835. /**
  5836. * @param {Object} el
  5837. * @return {?}
  5838. */
  5839. jQuery.expr.filters.visible = function(el) {
  5840. return!jQuery.expr.filters.hidden(el);
  5841. };
  5842. }
  5843. }
  5844. jQuery.each({
  5845. margin : "",
  5846. padding : "",
  5847. border : "Width"
  5848. }, function(prefix, suffix) {
  5849. jQuery.cssHooks[prefix + suffix] = {
  5850. /**
  5851. * @param {string} line
  5852. * @return {?}
  5853. */
  5854. expand : function(line) {
  5855. /** @type {number} */
  5856. var i = 0;
  5857. var expanded = {};
  5858. /** @type {Array} */
  5859. var tokens = "string" == typeof line ? line.split(" ") : [line];
  5860. for (;4 > i;i++) {
  5861. expanded[prefix + cssExpand[i] + suffix] = tokens[i] || (tokens[i - 2] || tokens[0]);
  5862. }
  5863. return expanded;
  5864. }
  5865. };
  5866. if (!rbracket.test(prefix)) {
  5867. /** @type {function (Object, string, string): ?} */
  5868. jQuery.cssHooks[prefix + suffix].set = setPositiveNumber;
  5869. }
  5870. });
  5871. /** @type {RegExp} */
  5872. var badChars = /%20/g;
  5873. /** @type {RegExp} */
  5874. var rmargin = /\[\]$/;
  5875. /** @type {RegExp} */
  5876. var rCRLF = /\r?\n/g;
  5877. /** @type {RegExp} */
  5878. var exclude = /^(?:submit|button|image|reset|file)$/i;
  5879. /** @type {RegExp} */
  5880. var rsubmittable = /^(?:input|select|textarea|keygen)/i;
  5881. jQuery.fn.extend({
  5882. /**
  5883. * @return {?}
  5884. */
  5885. serialize : function() {
  5886. return jQuery.param(this.serializeArray());
  5887. },
  5888. /**
  5889. * @return {?}
  5890. */
  5891. serializeArray : function() {
  5892. return this.map(function() {
  5893. var elements = jQuery.prop(this, "elements");
  5894. return elements ? jQuery.makeArray(elements) : this;
  5895. }).filter(function() {
  5896. var type = this.type;
  5897. return this.name && (!jQuery(this).is(":disabled") && (rsubmittable.test(this.nodeName) && (!exclude.test(type) && (this.checked || !manipulation_rcheckableType.test(type)))));
  5898. }).map(function(dataAndEvents, elem) {
  5899. var val = jQuery(this).val();
  5900. return null == val ? null : jQuery.isArray(val) ? jQuery.map(val, function(val) {
  5901. return{
  5902. name : elem.name,
  5903. value : val.replace(rCRLF, "\r\n")
  5904. };
  5905. }) : {
  5906. name : elem.name,
  5907. value : val.replace(rCRLF, "\r\n")
  5908. };
  5909. }).get();
  5910. }
  5911. });
  5912. /**
  5913. * @param {Object} a
  5914. * @param {string} traditional
  5915. * @return {?}
  5916. */
  5917. jQuery.param = function(a, traditional) {
  5918. var prefix;
  5919. /** @type {Array} */
  5920. var klass = [];
  5921. /**
  5922. * @param {?} key
  5923. * @param {Object} value
  5924. * @return {undefined}
  5925. */
  5926. var add = function(key, value) {
  5927. value = jQuery.isFunction(value) ? value() : null == value ? "" : value;
  5928. /** @type {string} */
  5929. klass[klass.length] = encodeURIComponent(key) + "=" + encodeURIComponent(value);
  5930. };
  5931. if (traditional === undefined && (traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional), jQuery.isArray(a) || a.jquery && !jQuery.isPlainObject(a)) {
  5932. jQuery.each(a, function() {
  5933. add(this.name, this.value);
  5934. });
  5935. } else {
  5936. for (prefix in a) {
  5937. buildParams(prefix, a[prefix], traditional, add);
  5938. }
  5939. }
  5940. return klass.join("&").replace(badChars, "+");
  5941. };
  5942. jQuery.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "), function(dataAndEvents, name) {
  5943. /**
  5944. * @param {string} data
  5945. * @param {Object} fn
  5946. * @return {?}
  5947. */
  5948. jQuery.fn[name] = function(data, fn) {
  5949. return arguments.length > 0 ? this.on(name, null, data, fn) : this.trigger(name);
  5950. };
  5951. });
  5952. jQuery.fn.extend({
  5953. /**
  5954. * @param {undefined} fnOver
  5955. * @param {Object} fnOut
  5956. * @return {?}
  5957. */
  5958. hover : function(fnOver, fnOut) {
  5959. return this.mouseenter(fnOver).mouseleave(fnOut || fnOver);
  5960. },
  5961. /**
  5962. * @param {Object} types
  5963. * @param {string} data
  5964. * @param {Object} fn
  5965. * @return {?}
  5966. */
  5967. bind : function(types, data, fn) {
  5968. return this.on(types, null, data, fn);
  5969. },
  5970. /**
  5971. * @param {Object} types
  5972. * @param {Function} fn
  5973. * @return {?}
  5974. */
  5975. unbind : function(types, fn) {
  5976. return this.off(types, null, fn);
  5977. },
  5978. /**
  5979. * @param {string} selector
  5980. * @param {Object} types
  5981. * @param {string} data
  5982. * @param {Object} fn
  5983. * @return {?}
  5984. */
  5985. delegate : function(selector, types, data, fn) {
  5986. return this.on(types, selector, data, fn);
  5987. },
  5988. /**
  5989. * @param {string} selector
  5990. * @param {Object} types
  5991. * @param {Function} fn
  5992. * @return {?}
  5993. */
  5994. undelegate : function(selector, types, fn) {
  5995. return 1 === arguments.length ? this.off(selector, "**") : this.off(types, selector || "**", fn);
  5996. }
  5997. });
  5998. var match;
  5999. var ajaxLocation;
  6000. var iIdCounter = jQuery.now();
  6001. /** @type {RegExp} */
  6002. var rquery = /\?/;
  6003. /** @type {RegExp} */
  6004. var currDirRegExp = /#.*$/;
  6005. /** @type {RegExp} */
  6006. var rts = /([?&])_=[^&]*/;
  6007. /** @type {RegExp} */
  6008. var pattern = /^(.*?):[ \t]*([^\r\n]*)$/gm;
  6009. /** @type {RegExp} */
  6010. var selfClosingTag = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/;
  6011. /** @type {RegExp} */
  6012. var rnoContent = /^(?:GET|HEAD)$/;
  6013. /** @type {RegExp} */
  6014. var rprotocol = /^\/\//;
  6015. /** @type {RegExp} */
  6016. var quickExpr = /^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/;
  6017. /** @type {function (string, Object, Object): ?} */
  6018. var matcherFunction = jQuery.fn.load;
  6019. var prefilters = {};
  6020. var transports = {};
  6021. /** @type {string} */
  6022. var sn = "*/".concat("*");
  6023. try {
  6024. /** @type {string} */
  6025. ajaxLocation = location.href;
  6026. } catch (an) {
  6027. /** @type {Element} */
  6028. ajaxLocation = doc.createElement("a");
  6029. /** @type {string} */
  6030. ajaxLocation.href = "";
  6031. /** @type {string} */
  6032. ajaxLocation = ajaxLocation.href;
  6033. }
  6034. /** @type {Array} */
  6035. match = quickExpr.exec(ajaxLocation.toLowerCase()) || [];
  6036. /**
  6037. * @param {string} url
  6038. * @param {Object} data
  6039. * @param {Object} attributes
  6040. * @return {?}
  6041. */
  6042. jQuery.fn.load = function(url, data, attributes) {
  6043. if ("string" != typeof url && matcherFunction) {
  6044. return matcherFunction.apply(this, arguments);
  6045. }
  6046. var selector;
  6047. var type;
  6048. var response;
  6049. var self = this;
  6050. var off = url.indexOf(" ");
  6051. return off >= 0 && (selector = url.slice(off), url = url.slice(0, off)), jQuery.isFunction(data) ? (attributes = data, data = undefined) : data && ("object" == typeof data && (type = "POST")), self.length > 0 && jQuery.ajax({
  6052. url : url,
  6053. type : type,
  6054. dataType : "html",
  6055. data : data
  6056. }).done(function(responseText) {
  6057. /** @type {Arguments} */
  6058. response = arguments;
  6059. self.html(selector ? jQuery("<div>").append(jQuery.parseHTML(responseText)).find(selector) : responseText);
  6060. }).complete(attributes && function(elem, keepData) {
  6061. self.each(attributes, response || [elem.responseText, keepData, elem]);
  6062. }), this;
  6063. };
  6064. jQuery.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"], function(dataAndEvents, name) {
  6065. /**
  6066. * @param {string} selector
  6067. * @return {?}
  6068. */
  6069. jQuery.fn[name] = function(selector) {
  6070. return this.on(name, selector);
  6071. };
  6072. });
  6073. jQuery.extend({
  6074. active : 0,
  6075. lastModified : {},
  6076. etag : {},
  6077. ajaxSettings : {
  6078. url : ajaxLocation,
  6079. type : "GET",
  6080. isLocal : selfClosingTag.test(match[1]),
  6081. global : true,
  6082. processData : true,
  6083. async : true,
  6084. contentType : "application/x-www-form-urlencoded; charset=UTF-8",
  6085. accepts : {
  6086. "*" : sn,
  6087. text : "text/plain",
  6088. html : "text/html",
  6089. xml : "application/xml, text/xml",
  6090. json : "application/json, text/javascript"
  6091. },
  6092. contents : {
  6093. xml : /xml/,
  6094. html : /html/,
  6095. json : /json/
  6096. },
  6097. responseFields : {
  6098. xml : "responseXML",
  6099. text : "responseText",
  6100. json : "responseJSON"
  6101. },
  6102. converters : {
  6103. /** @type {function (new:String, *=): string} */
  6104. "* text" : String,
  6105. "text html" : true,
  6106. "text json" : jQuery.parseJSON,
  6107. "text xml" : jQuery.parseXML
  6108. },
  6109. flatOptions : {
  6110. url : true,
  6111. context : true
  6112. }
  6113. },
  6114. /**
  6115. * @param {(Object|string)} target
  6116. * @param {Object} settings
  6117. * @return {?}
  6118. */
  6119. ajaxSetup : function(target, settings) {
  6120. return settings ? ajaxExtend(ajaxExtend(target, jQuery.ajaxSettings), settings) : ajaxExtend(jQuery.ajaxSettings, target);
  6121. },
  6122. ajaxPrefilter : addToPrefiltersOrTransports(prefilters),
  6123. ajaxTransport : addToPrefiltersOrTransports(transports),
  6124. /**
  6125. * @param {string} url
  6126. * @param {Object} options
  6127. * @return {?}
  6128. */
  6129. ajax : function(url, options) {
  6130. /**
  6131. * @param {number} status
  6132. * @param {Node} nativeStatusText
  6133. * @param {Object} responses
  6134. * @param {string} total
  6135. * @return {undefined}
  6136. */
  6137. function done(status, nativeStatusText, responses, total) {
  6138. var isSuccess;
  6139. var success;
  6140. var error;
  6141. var response;
  6142. var modified;
  6143. /** @type {Node} */
  6144. var statusText = nativeStatusText;
  6145. if (2 !== v) {
  6146. /** @type {number} */
  6147. v = 2;
  6148. if (tref) {
  6149. clearTimeout(tref);
  6150. }
  6151. /** @type {string} */
  6152. transport = undefined;
  6153. ua = total || "";
  6154. /** @type {number} */
  6155. jqXHR.readyState = status > 0 ? 4 : 0;
  6156. /** @type {boolean} */
  6157. isSuccess = status >= 200 && 300 > status || 304 === status;
  6158. if (responses) {
  6159. response = ajaxHandleResponses(s, jqXHR, responses);
  6160. }
  6161. response = ajaxConvert(s, response, jqXHR, isSuccess);
  6162. if (isSuccess) {
  6163. if (s.ifModified) {
  6164. modified = jqXHR.getResponseHeader("Last-Modified");
  6165. if (modified) {
  6166. jQuery.lastModified[cacheURL] = modified;
  6167. }
  6168. modified = jqXHR.getResponseHeader("etag");
  6169. if (modified) {
  6170. jQuery.etag[cacheURL] = modified;
  6171. }
  6172. }
  6173. if (204 === status || "HEAD" === s.type) {
  6174. /** @type {string} */
  6175. statusText = "nocontent";
  6176. } else {
  6177. if (304 === status) {
  6178. /** @type {string} */
  6179. statusText = "notmodified";
  6180. } else {
  6181. statusText = response.state;
  6182. success = response.data;
  6183. error = response.error;
  6184. /** @type {boolean} */
  6185. isSuccess = !error;
  6186. }
  6187. }
  6188. } else {
  6189. error = statusText;
  6190. if (status || !statusText) {
  6191. /** @type {string} */
  6192. statusText = "error";
  6193. if (0 > status) {
  6194. /** @type {number} */
  6195. status = 0;
  6196. }
  6197. }
  6198. }
  6199. /** @type {number} */
  6200. jqXHR.status = status;
  6201. /** @type {string} */
  6202. jqXHR.statusText = (nativeStatusText || statusText) + "";
  6203. if (isSuccess) {
  6204. deferred.resolveWith(callbackContext, [success, statusText, jqXHR]);
  6205. } else {
  6206. deferred.rejectWith(callbackContext, [jqXHR, statusText, error]);
  6207. }
  6208. jqXHR.statusCode(selector);
  6209. /** @type {string} */
  6210. selector = undefined;
  6211. if (g) {
  6212. globalEventContext.trigger(isSuccess ? "ajaxSuccess" : "ajaxError", [jqXHR, s, isSuccess ? success : error]);
  6213. }
  6214. completeDeferred.fireWith(callbackContext, [jqXHR, statusText]);
  6215. if (g) {
  6216. globalEventContext.trigger("ajaxComplete", [jqXHR, s]);
  6217. if (!--jQuery.active) {
  6218. jQuery.event.trigger("ajaxStop");
  6219. }
  6220. }
  6221. }
  6222. }
  6223. if ("object" == typeof url) {
  6224. /** @type {string} */
  6225. options = url;
  6226. /** @type {string} */
  6227. url = undefined;
  6228. }
  6229. options = options || {};
  6230. var transport;
  6231. var cacheURL;
  6232. var ua;
  6233. var cache;
  6234. var tref;
  6235. var t;
  6236. var g;
  6237. var i;
  6238. var s = jQuery.ajaxSetup({}, options);
  6239. var callbackContext = s.context || s;
  6240. var globalEventContext = s.context && (callbackContext.nodeType || callbackContext.jquery) ? jQuery(callbackContext) : jQuery.event;
  6241. var deferred = jQuery.Deferred();
  6242. var completeDeferred = jQuery.Callbacks("once memory");
  6243. var selector = s.statusCode || {};
  6244. var requestHeaders = {};
  6245. var requestHeadersNames = {};
  6246. /** @type {number} */
  6247. var v = 0;
  6248. /** @type {string} */
  6249. var strAbort = "canceled";
  6250. var jqXHR = {
  6251. readyState : 0,
  6252. /**
  6253. * @param {string} key
  6254. * @return {?}
  6255. */
  6256. getResponseHeader : function(key) {
  6257. var data;
  6258. if (2 === v) {
  6259. if (!cache) {
  6260. cache = {};
  6261. for (;data = pattern.exec(ua);) {
  6262. /** @type {string} */
  6263. cache[data[1].toLowerCase()] = data[2];
  6264. }
  6265. }
  6266. data = cache[key.toLowerCase()];
  6267. }
  6268. return null == data ? null : data;
  6269. },
  6270. /**
  6271. * @return {?}
  6272. */
  6273. getAllResponseHeaders : function() {
  6274. return 2 === v ? ua : null;
  6275. },
  6276. /**
  6277. * @param {string} name
  6278. * @param {?} value
  6279. * @return {?}
  6280. */
  6281. setRequestHeader : function(name, value) {
  6282. var lname = name.toLowerCase();
  6283. return v || (name = requestHeadersNames[lname] = requestHeadersNames[lname] || name, requestHeaders[name] = value), this;
  6284. },
  6285. /**
  6286. * @param {?} type
  6287. * @return {?}
  6288. */
  6289. overrideMimeType : function(type) {
  6290. return v || (s.mimeType = type), this;
  6291. },
  6292. /**
  6293. * @param {Object} elem
  6294. * @return {?}
  6295. */
  6296. statusCode : function(elem) {
  6297. var method;
  6298. if (elem) {
  6299. if (2 > v) {
  6300. for (method in elem) {
  6301. /** @type {Array} */
  6302. selector[method] = [selector[method], elem[method]];
  6303. }
  6304. } else {
  6305. jqXHR.always(elem[jqXHR.status]);
  6306. }
  6307. }
  6308. return this;
  6309. },
  6310. /**
  6311. * @param {string} statusText
  6312. * @return {?}
  6313. */
  6314. abort : function(statusText) {
  6315. var finalText = statusText || strAbort;
  6316. return transport && transport.abort(finalText), done(0, finalText), this;
  6317. }
  6318. };
  6319. if (deferred.promise(jqXHR).complete = completeDeferred.add, jqXHR.success = jqXHR.done, jqXHR.error = jqXHR.fail, s.url = ((url || (s.url || ajaxLocation)) + "").replace(currDirRegExp, "").replace(rprotocol, match[1] + "//"), s.type = options.method || (options.type || (s.method || s.type)), s.dataTypes = jQuery.trim(s.dataType || "*").toLowerCase().match(core_rnotwhite) || [""], null == s.crossDomain && (t = quickExpr.exec(s.url.toLowerCase()), s.crossDomain = !(!t || t[1] === match[1] &&
  6320. (t[2] === match[2] && (t[3] || ("http:" === t[1] ? "80" : "443")) === (match[3] || ("http:" === match[1] ? "80" : "443"))))), s.data && (s.processData && ("string" != typeof s.data && (s.data = jQuery.param(s.data, s.traditional)))), inspectPrefiltersOrTransports(prefilters, s, options, jqXHR), 2 === v) {
  6321. return jqXHR;
  6322. }
  6323. g = s.global;
  6324. if (g) {
  6325. if (0 === jQuery.active++) {
  6326. jQuery.event.trigger("ajaxStart");
  6327. }
  6328. }
  6329. s.type = s.type.toUpperCase();
  6330. /** @type {boolean} */
  6331. s.hasContent = !rnoContent.test(s.type);
  6332. cacheURL = s.url;
  6333. if (!s.hasContent) {
  6334. if (s.data) {
  6335. /** @type {string} */
  6336. cacheURL = s.url += (rquery.test(cacheURL) ? "&" : "?") + s.data;
  6337. delete s.data;
  6338. }
  6339. if (s.cache === false) {
  6340. s.url = rts.test(cacheURL) ? cacheURL.replace(rts, "$1_=" + iIdCounter++) : cacheURL + (rquery.test(cacheURL) ? "&" : "?") + "_=" + iIdCounter++;
  6341. }
  6342. }
  6343. if (s.ifModified) {
  6344. if (jQuery.lastModified[cacheURL]) {
  6345. jqXHR.setRequestHeader("If-Modified-Since", jQuery.lastModified[cacheURL]);
  6346. }
  6347. if (jQuery.etag[cacheURL]) {
  6348. jqXHR.setRequestHeader("If-None-Match", jQuery.etag[cacheURL]);
  6349. }
  6350. }
  6351. if (s.data && (s.hasContent && s.contentType !== false) || options.contentType) {
  6352. jqXHR.setRequestHeader("Content-Type", s.contentType);
  6353. }
  6354. jqXHR.setRequestHeader("Accept", s.dataTypes[0] && s.accepts[s.dataTypes[0]] ? s.accepts[s.dataTypes[0]] + ("*" !== s.dataTypes[0] ? ", " + sn + "; q=0.01" : "") : s.accepts["*"]);
  6355. for (i in s.headers) {
  6356. jqXHR.setRequestHeader(i, s.headers[i]);
  6357. }
  6358. if (s.beforeSend && (s.beforeSend.call(callbackContext, jqXHR, s) === false || 2 === v)) {
  6359. return jqXHR.abort();
  6360. }
  6361. /** @type {string} */
  6362. strAbort = "abort";
  6363. for (i in{
  6364. success : 1,
  6365. error : 1,
  6366. complete : 1
  6367. }) {
  6368. jqXHR[i](s[i]);
  6369. }
  6370. if (transport = inspectPrefiltersOrTransports(transports, s, options, jqXHR)) {
  6371. /** @type {number} */
  6372. jqXHR.readyState = 1;
  6373. if (g) {
  6374. globalEventContext.trigger("ajaxSend", [jqXHR, s]);
  6375. }
  6376. if (s.async) {
  6377. if (s.timeout > 0) {
  6378. /** @type {number} */
  6379. tref = setTimeout(function() {
  6380. jqXHR.abort("timeout");
  6381. }, s.timeout);
  6382. }
  6383. }
  6384. try {
  6385. /** @type {number} */
  6386. v = 1;
  6387. transport.send(requestHeaders, done);
  6388. } catch (e) {
  6389. if (!(2 > v)) {
  6390. throw e;
  6391. }
  6392. done(-1, e);
  6393. }
  6394. } else {
  6395. done(-1, "No Transport");
  6396. }
  6397. return jqXHR;
  6398. },
  6399. /**
  6400. * @param {Object} cur
  6401. * @param {string} camelKey
  6402. * @param {string} callback
  6403. * @return {?}
  6404. */
  6405. getJSON : function(cur, camelKey, callback) {
  6406. return jQuery.get(cur, camelKey, callback, "json");
  6407. },
  6408. /**
  6409. * @param {Object} cur
  6410. * @param {string} callback
  6411. * @return {?}
  6412. */
  6413. getScript : function(cur, callback) {
  6414. return jQuery.get(cur, undefined, callback, "script");
  6415. }
  6416. });
  6417. jQuery.each(["get", "post"], function(dataAndEvents, method) {
  6418. /**
  6419. * @param {string} requestUrl
  6420. * @param {Object} data
  6421. * @param {Object} success
  6422. * @param {boolean} dataType
  6423. * @return {?}
  6424. */
  6425. jQuery[method] = function(requestUrl, data, success, dataType) {
  6426. return jQuery.isFunction(data) && (dataType = dataType || success, success = data, data = undefined), jQuery.ajax({
  6427. url : requestUrl,
  6428. type : method,
  6429. dataType : dataType,
  6430. data : data,
  6431. success : success
  6432. });
  6433. };
  6434. });
  6435. jQuery.ajaxSetup({
  6436. accepts : {
  6437. script : "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
  6438. },
  6439. contents : {
  6440. script : /(?:java|ecma)script/
  6441. },
  6442. converters : {
  6443. /**
  6444. * @param {(Object|string)} value
  6445. * @return {?}
  6446. */
  6447. "text script" : function(value) {
  6448. return jQuery.globalEval(value), value;
  6449. }
  6450. }
  6451. });
  6452. jQuery.ajaxPrefilter("script", function(s) {
  6453. if (s.cache === undefined) {
  6454. /** @type {boolean} */
  6455. s.cache = false;
  6456. }
  6457. if (s.crossDomain) {
  6458. /** @type {string} */
  6459. s.type = "GET";
  6460. }
  6461. });
  6462. jQuery.ajaxTransport("script", function(s) {
  6463. if (s.crossDomain) {
  6464. var script;
  6465. var callback;
  6466. return{
  6467. /**
  6468. * @param {?} _
  6469. * @param {Function} complete
  6470. * @return {undefined}
  6471. */
  6472. send : function(_, complete) {
  6473. script = jQuery("<script>").prop({
  6474. async : true,
  6475. charset : s.scriptCharset,
  6476. src : s.url
  6477. }).on("load error", callback = function(evt) {
  6478. script.remove();
  6479. /** @type {null} */
  6480. callback = null;
  6481. if (evt) {
  6482. complete("error" === evt.type ? 404 : 200, evt.type);
  6483. }
  6484. });
  6485. doc.head.appendChild(script[0]);
  6486. },
  6487. /**
  6488. * @return {undefined}
  6489. */
  6490. abort : function() {
  6491. if (callback) {
  6492. callback();
  6493. }
  6494. }
  6495. };
  6496. }
  6497. });
  6498. /** @type {Array} */
  6499. var eventPath = [];
  6500. /** @type {RegExp} */
  6501. var rjsonp = /(=)\?(?=&|$)|\?\?/;
  6502. jQuery.ajaxSetup({
  6503. jsonp : "callback",
  6504. /**
  6505. * @return {?}
  6506. */
  6507. jsonpCallback : function() {
  6508. var unlock = eventPath.pop() || jQuery.expando + "_" + iIdCounter++;
  6509. return this[unlock] = true, unlock;
  6510. }
  6511. });
  6512. jQuery.ajaxPrefilter("json jsonp", function(s, originalSettings, jqXHR) {
  6513. var callbackName;
  6514. var func;
  6515. var data;
  6516. /** @type {(boolean|string)} */
  6517. var jsonProp = s.jsonp !== false && (rjsonp.test(s.url) ? "url" : "string" == typeof s.data && (!(s.contentType || "").indexOf("application/x-www-form-urlencoded") && (rjsonp.test(s.data) && "data")));
  6518. return jsonProp || "jsonp" === s.dataTypes[0] ? (callbackName = s.jsonpCallback = jQuery.isFunction(s.jsonpCallback) ? s.jsonpCallback() : s.jsonpCallback, jsonProp ? s[jsonProp] = s[jsonProp].replace(rjsonp, "$1" + callbackName) : s.jsonp !== false && (s.url += (rquery.test(s.url) ? "&" : "?") + s.jsonp + "=" + callbackName), s.converters["script json"] = function() {
  6519. return data || jQuery.error(callbackName + " was not called"), data[0];
  6520. }, s.dataTypes[0] = "json", func = win[callbackName], win[callbackName] = function() {
  6521. /** @type {Arguments} */
  6522. data = arguments;
  6523. }, jqXHR.always(function() {
  6524. win[callbackName] = func;
  6525. if (s[callbackName]) {
  6526. s.jsonpCallback = originalSettings.jsonpCallback;
  6527. eventPath.push(callbackName);
  6528. }
  6529. if (data) {
  6530. if (jQuery.isFunction(func)) {
  6531. func(data[0]);
  6532. }
  6533. }
  6534. data = func = undefined;
  6535. }), "script") : undefined;
  6536. });
  6537. /**
  6538. * @return {?}
  6539. */
  6540. jQuery.ajaxSettings.xhr = function() {
  6541. try {
  6542. return new XMLHttpRequest;
  6543. } catch (e) {
  6544. }
  6545. };
  6546. var xhrSupported = jQuery.ajaxSettings.xhr();
  6547. var xhrSuccessStatus = {
  6548. 0 : 200,
  6549. 1223 : 204
  6550. };
  6551. /** @type {number} */
  6552. var count = 0;
  6553. var map = {};
  6554. if (win.ActiveXObject) {
  6555. jQuery(win).on("unload", function() {
  6556. var letter;
  6557. for (letter in map) {
  6558. map[letter]();
  6559. }
  6560. /** @type {string} */
  6561. map = undefined;
  6562. });
  6563. }
  6564. /** @type {boolean} */
  6565. jQuery.support.cors = !!xhrSupported && "withCredentials" in xhrSupported;
  6566. /** @type {boolean} */
  6567. jQuery.support.ajax = xhrSupported = !!xhrSupported;
  6568. jQuery.ajaxTransport(function(options) {
  6569. var callback;
  6570. return jQuery.support.cors || xhrSupported && !options.crossDomain ? {
  6571. /**
  6572. * @param {Object} headers
  6573. * @param {Function} complete
  6574. * @return {undefined}
  6575. */
  6576. send : function(headers, complete) {
  6577. var i;
  6578. var c;
  6579. var xhr = options.xhr();
  6580. if (xhr.open(options.type, options.url, options.async, options.username, options.password), options.xhrFields) {
  6581. for (i in options.xhrFields) {
  6582. xhr[i] = options.xhrFields[i];
  6583. }
  6584. }
  6585. if (options.mimeType) {
  6586. if (xhr.overrideMimeType) {
  6587. xhr.overrideMimeType(options.mimeType);
  6588. }
  6589. }
  6590. if (!options.crossDomain) {
  6591. if (!headers["X-Requested-With"]) {
  6592. /** @type {string} */
  6593. headers["X-Requested-With"] = "XMLHttpRequest";
  6594. }
  6595. }
  6596. for (i in headers) {
  6597. xhr.setRequestHeader(i, headers[i]);
  6598. }
  6599. /**
  6600. * @param {string} status
  6601. * @return {?}
  6602. */
  6603. callback = function(status) {
  6604. return function() {
  6605. if (callback) {
  6606. delete map[c];
  6607. /** @type {null} */
  6608. callback = xhr.onload = xhr.onerror = null;
  6609. if ("abort" === status) {
  6610. xhr.abort();
  6611. } else {
  6612. if ("error" === status) {
  6613. complete(xhr.status || 404, xhr.statusText);
  6614. } else {
  6615. complete(xhrSuccessStatus[xhr.status] || xhr.status, xhr.statusText, "string" == typeof xhr.responseText ? {
  6616. text : xhr.responseText
  6617. } : undefined, xhr.getAllResponseHeaders());
  6618. }
  6619. }
  6620. }
  6621. };
  6622. };
  6623. xhr.onload = callback();
  6624. xhr.onerror = callback("error");
  6625. callback = map[c = count++] = callback("abort");
  6626. xhr.send(options.hasContent && options.data || null);
  6627. },
  6628. /**
  6629. * @return {undefined}
  6630. */
  6631. abort : function() {
  6632. if (callback) {
  6633. callback();
  6634. }
  6635. }
  6636. } : undefined;
  6637. });
  6638. var fxNow;
  6639. var scrollIntervalId;
  6640. /** @type {RegExp} */
  6641. var rplusequals = /^(?:toggle|show|hide)$/;
  6642. /** @type {RegExp} */
  6643. var rtagName = RegExp("^(?:([+-])=|)(" + core_pnum + ")([a-z%]*)$", "i");
  6644. /** @type {RegExp} */
  6645. var numbers = /queueHooks$/;
  6646. /** @type {Array} */
  6647. var animationPrefilters = [defaultPrefilter];
  6648. var cache = {
  6649. "*" : [function(prop, value) {
  6650. var tween = this.createTween(prop, value);
  6651. var l0 = tween.cur();
  6652. /** @type {(Array.<string>|null)} */
  6653. var parts = rtagName.exec(value);
  6654. /** @type {string} */
  6655. var unit = parts && parts[3] || (jQuery.cssNumber[prop] ? "" : "px");
  6656. var start = (jQuery.cssNumber[prop] || "px" !== unit && +l0) && rtagName.exec(jQuery.css(tween.elem, prop));
  6657. /** @type {number} */
  6658. var scale = 1;
  6659. /** @type {number} */
  6660. var u = 20;
  6661. if (start && start[3] !== unit) {
  6662. unit = unit || start[3];
  6663. /** @type {Array} */
  6664. parts = parts || [];
  6665. /** @type {number} */
  6666. start = +l0 || 1;
  6667. do {
  6668. /** @type {(number|string)} */
  6669. scale = scale || ".5";
  6670. start /= scale;
  6671. jQuery.style(tween.elem, prop, start + unit);
  6672. } while (scale !== (scale = tween.cur() / l0) && (1 !== scale && --u));
  6673. }
  6674. return parts && (start = tween.start = +start || (+l0 || 0), tween.unit = unit, tween.end = parts[1] ? start + (parts[1] + 1) * parts[2] : +parts[2]), tween;
  6675. }]
  6676. };
  6677. jQuery.Animation = jQuery.extend(Animation, {
  6678. /**
  6679. * @param {Object} html
  6680. * @param {Function} callback
  6681. * @return {undefined}
  6682. */
  6683. tweener : function(html, callback) {
  6684. if (jQuery.isFunction(html)) {
  6685. /** @type {Object} */
  6686. callback = html;
  6687. /** @type {Array} */
  6688. html = ["*"];
  6689. } else {
  6690. html = html.split(" ");
  6691. }
  6692. var c;
  6693. /** @type {number} */
  6694. var x = 0;
  6695. var w = html.length;
  6696. for (;w > x;x++) {
  6697. c = html[x];
  6698. cache[c] = cache[c] || [];
  6699. cache[c].unshift(callback);
  6700. }
  6701. },
  6702. /**
  6703. * @param {?} callback
  6704. * @param {?} prepend
  6705. * @return {undefined}
  6706. */
  6707. prefilter : function(callback, prepend) {
  6708. if (prepend) {
  6709. animationPrefilters.unshift(callback);
  6710. } else {
  6711. animationPrefilters.push(callback);
  6712. }
  6713. }
  6714. });
  6715. /** @type {function (string, string, string, string, string): ?} */
  6716. jQuery.Tween = Tween;
  6717. Tween.prototype = {
  6718. /** @type {function (string, string, string, string, string): ?} */
  6719. constructor : Tween,
  6720. /**
  6721. * @param {Object} allBindingsAccessor
  6722. * @param {Object} options
  6723. * @param {?} prop
  6724. * @param {number} to
  6725. * @param {string} easing
  6726. * @param {string} unit
  6727. * @return {undefined}
  6728. */
  6729. init : function(allBindingsAccessor, options, prop, to, easing, unit) {
  6730. /** @type {Object} */
  6731. this.elem = allBindingsAccessor;
  6732. this.prop = prop;
  6733. this.easing = easing || "swing";
  6734. /** @type {Object} */
  6735. this.options = options;
  6736. this.start = this.now = this.cur();
  6737. /** @type {number} */
  6738. this.end = to;
  6739. this.unit = unit || (jQuery.cssNumber[prop] ? "" : "px");
  6740. },
  6741. /**
  6742. * @return {?}
  6743. */
  6744. cur : function() {
  6745. var hooks = Tween.propHooks[this.prop];
  6746. return hooks && hooks.get ? hooks.get(this) : Tween.propHooks._default.get(this);
  6747. },
  6748. /**
  6749. * @param {number} percent
  6750. * @return {?}
  6751. */
  6752. run : function(percent) {
  6753. var eased;
  6754. var hooks = Tween.propHooks[this.prop];
  6755. return this.pos = eased = this.options.duration ? jQuery.easing[this.easing](percent, this.options.duration * percent, 0, 1, this.options.duration) : percent, this.now = (this.end - this.start) * eased + this.start, this.options.step && this.options.step.call(this.elem, this.now, this), hooks && hooks.set ? hooks.set(this) : Tween.propHooks._default.set(this), this;
  6756. }
  6757. };
  6758. Tween.prototype.init.prototype = Tween.prototype;
  6759. Tween.propHooks = {
  6760. _default : {
  6761. /**
  6762. * @param {Object} elem
  6763. * @return {?}
  6764. */
  6765. get : function(elem) {
  6766. var node;
  6767. return null == elem.elem[elem.prop] || elem.elem.style && null != elem.elem.style[elem.prop] ? (node = jQuery.css(elem.elem, elem.prop, ""), node && "auto" !== node ? node : 0) : elem.elem[elem.prop];
  6768. },
  6769. /**
  6770. * @param {Object} tween
  6771. * @return {undefined}
  6772. */
  6773. set : function(tween) {
  6774. if (jQuery.fx.step[tween.prop]) {
  6775. jQuery.fx.step[tween.prop](tween);
  6776. } else {
  6777. if (tween.elem.style && (null != tween.elem.style[jQuery.cssProps[tween.prop]] || jQuery.cssHooks[tween.prop])) {
  6778. jQuery.style(tween.elem, tween.prop, tween.now + tween.unit);
  6779. } else {
  6780. tween.elem[tween.prop] = tween.now;
  6781. }
  6782. }
  6783. }
  6784. }
  6785. };
  6786. Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
  6787. /**
  6788. * @param {Object} elem
  6789. * @return {undefined}
  6790. */
  6791. set : function(elem) {
  6792. if (elem.elem.nodeType) {
  6793. if (elem.elem.parentNode) {
  6794. elem.elem[elem.prop] = elem.now;
  6795. }
  6796. }
  6797. }
  6798. };
  6799. jQuery.each(["toggle", "show", "hide"], function(dataAndEvents, name) {
  6800. var matcherFunction = jQuery.fn[name];
  6801. /**
  6802. * @param {Object} speed
  6803. * @param {string} callback
  6804. * @param {string} next_callback
  6805. * @return {?}
  6806. */
  6807. jQuery.fn[name] = function(speed, callback, next_callback) {
  6808. return null == speed || "boolean" == typeof speed ? matcherFunction.apply(this, arguments) : this.animate(genFx(name, true), speed, callback, next_callback);
  6809. };
  6810. });
  6811. jQuery.fn.extend({
  6812. /**
  6813. * @param {Object} speed
  6814. * @param {(number|string)} to
  6815. * @param {string} callback
  6816. * @param {string} _callback
  6817. * @return {?}
  6818. */
  6819. fadeTo : function(speed, to, callback, _callback) {
  6820. return this.filter(isHidden).css("opacity", 0).show().end().animate({
  6821. opacity : to
  6822. }, speed, callback, _callback);
  6823. },
  6824. /**
  6825. * @param {?} prop
  6826. * @param {Object} speed
  6827. * @param {string} easing
  6828. * @param {string} callback
  6829. * @return {?}
  6830. */
  6831. animate : function(prop, speed, easing, callback) {
  6832. var empty = jQuery.isEmptyObject(prop);
  6833. var optall = jQuery.speed(speed, easing, callback);
  6834. /**
  6835. * @return {undefined}
  6836. */
  6837. var doAnimation = function() {
  6838. var anim = Animation(this, jQuery.extend({}, prop), optall);
  6839. if (empty || data_priv.get(this, "finish")) {
  6840. anim.stop(true);
  6841. }
  6842. };
  6843. return doAnimation.finish = doAnimation, empty || optall.queue === false ? this.each(doAnimation) : this.queue(optall.queue, doAnimation);
  6844. },
  6845. /**
  6846. * @param {string} type
  6847. * @param {Object} clearQueue
  6848. * @param {Object} gotoEnd
  6849. * @return {?}
  6850. */
  6851. stop : function(type, clearQueue, gotoEnd) {
  6852. /**
  6853. * @param {Object} e
  6854. * @return {undefined}
  6855. */
  6856. var stop = function(e) {
  6857. var stop = e.stop;
  6858. delete e.stop;
  6859. stop(gotoEnd);
  6860. };
  6861. return "string" != typeof type && (gotoEnd = clearQueue, clearQueue = type, type = undefined), clearQueue && (type !== false && this.queue(type || "fx", [])), this.each(function() {
  6862. /** @type {boolean} */
  6863. var dequeue = true;
  6864. var i = null != type && type + "queueHooks";
  6865. /** @type {Array} */
  6866. var timers = jQuery.timers;
  6867. var gradient = data_priv.get(this);
  6868. if (i) {
  6869. if (gradient[i]) {
  6870. if (gradient[i].stop) {
  6871. stop(gradient[i]);
  6872. }
  6873. }
  6874. } else {
  6875. for (i in gradient) {
  6876. if (gradient[i]) {
  6877. if (gradient[i].stop) {
  6878. if (numbers.test(i)) {
  6879. stop(gradient[i]);
  6880. }
  6881. }
  6882. }
  6883. }
  6884. }
  6885. /** @type {number} */
  6886. i = timers.length;
  6887. for (;i--;) {
  6888. if (!(timers[i].elem !== this)) {
  6889. if (!(null != type && timers[i].queue !== type)) {
  6890. timers[i].anim.stop(gotoEnd);
  6891. /** @type {boolean} */
  6892. dequeue = false;
  6893. timers.splice(i, 1);
  6894. }
  6895. }
  6896. }
  6897. if (dequeue || !gotoEnd) {
  6898. jQuery.dequeue(this, type);
  6899. }
  6900. });
  6901. },
  6902. /**
  6903. * @param {string} type
  6904. * @return {?}
  6905. */
  6906. finish : function(type) {
  6907. return type !== false && (type = type || "fx"), this.each(function() {
  6908. var index;
  6909. var data = data_priv.get(this);
  6910. var array = data[type + "queue"];
  6911. var event = data[type + "queueHooks"];
  6912. /** @type {Array} */
  6913. var timers = jQuery.timers;
  6914. var length = array ? array.length : 0;
  6915. /** @type {boolean} */
  6916. data.finish = true;
  6917. jQuery.queue(this, type, []);
  6918. if (event) {
  6919. if (event.stop) {
  6920. event.stop.call(this, true);
  6921. }
  6922. }
  6923. /** @type {number} */
  6924. index = timers.length;
  6925. for (;index--;) {
  6926. if (timers[index].elem === this) {
  6927. if (timers[index].queue === type) {
  6928. timers[index].anim.stop(true);
  6929. timers.splice(index, 1);
  6930. }
  6931. }
  6932. }
  6933. /** @type {number} */
  6934. index = 0;
  6935. for (;length > index;index++) {
  6936. if (array[index]) {
  6937. if (array[index].finish) {
  6938. array[index].finish.call(this);
  6939. }
  6940. }
  6941. }
  6942. delete data.finish;
  6943. });
  6944. }
  6945. });
  6946. jQuery.each({
  6947. slideDown : genFx("show"),
  6948. slideUp : genFx("hide"),
  6949. slideToggle : genFx("toggle"),
  6950. fadeIn : {
  6951. opacity : "show"
  6952. },
  6953. fadeOut : {
  6954. opacity : "hide"
  6955. },
  6956. fadeToggle : {
  6957. opacity : "toggle"
  6958. }
  6959. }, function(original, props) {
  6960. /**
  6961. * @param {Object} speed
  6962. * @param {string} callback
  6963. * @param {string} next_callback
  6964. * @return {?}
  6965. */
  6966. jQuery.fn[original] = function(speed, callback, next_callback) {
  6967. return this.animate(props, speed, callback, next_callback);
  6968. };
  6969. });
  6970. /**
  6971. * @param {boolean} speed
  6972. * @param {string} easing
  6973. * @param {string} fn
  6974. * @return {?}
  6975. */
  6976. jQuery.speed = function(speed, easing, fn) {
  6977. var opt = speed && "object" == typeof speed ? jQuery.extend({}, speed) : {
  6978. complete : fn || (!fn && easing || jQuery.isFunction(speed) && speed),
  6979. duration : speed,
  6980. easing : fn && easing || easing && (!jQuery.isFunction(easing) && easing)
  6981. };
  6982. return opt.duration = jQuery.fx.off ? 0 : "number" == typeof opt.duration ? opt.duration : opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[opt.duration] : jQuery.fx.speeds._default, (null == opt.queue || opt.queue === true) && (opt.queue = "fx"), opt.old = opt.complete, opt.complete = function() {
  6983. if (jQuery.isFunction(opt.old)) {
  6984. opt.old.call(this);
  6985. }
  6986. if (opt.queue) {
  6987. jQuery.dequeue(this, opt.queue);
  6988. }
  6989. }, opt;
  6990. };
  6991. jQuery.easing = {
  6992. /**
  6993. * @param {?} t
  6994. * @return {?}
  6995. */
  6996. linear : function(t) {
  6997. return t;
  6998. },
  6999. /**
  7000. * @param {number} p
  7001. * @return {?}
  7002. */
  7003. swing : function(p) {
  7004. return 0.5 - Math.cos(p * Math.PI) / 2;
  7005. }
  7006. };
  7007. /** @type {Array} */
  7008. jQuery.timers = [];
  7009. /** @type {function (Object, Object, ?, number, string, string): undefined} */
  7010. jQuery.fx = Tween.prototype.init;
  7011. /**
  7012. * @return {undefined}
  7013. */
  7014. jQuery.fx.tick = function() {
  7015. var last;
  7016. /** @type {Array} */
  7017. var timers = jQuery.timers;
  7018. /** @type {number} */
  7019. var i = 0;
  7020. fxNow = jQuery.now();
  7021. for (;timers.length > i;i++) {
  7022. last = timers[i];
  7023. if (!last()) {
  7024. if (!(timers[i] !== last)) {
  7025. timers.splice(i--, 1);
  7026. }
  7027. }
  7028. }
  7029. if (!timers.length) {
  7030. jQuery.fx.stop();
  7031. }
  7032. /** @type {string} */
  7033. fxNow = undefined;
  7034. };
  7035. /**
  7036. * @param {?} timer
  7037. * @return {undefined}
  7038. */
  7039. jQuery.fx.timer = function(timer) {
  7040. if (timer()) {
  7041. if (jQuery.timers.push(timer)) {
  7042. jQuery.fx.start();
  7043. }
  7044. }
  7045. };
  7046. /** @type {number} */
  7047. jQuery.fx.interval = 13;
  7048. /**
  7049. * @return {undefined}
  7050. */
  7051. jQuery.fx.start = function() {
  7052. if (!scrollIntervalId) {
  7053. /** @type {number} */
  7054. scrollIntervalId = setInterval(jQuery.fx.tick, jQuery.fx.interval);
  7055. }
  7056. };
  7057. /**
  7058. * @return {undefined}
  7059. */
  7060. jQuery.fx.stop = function() {
  7061. clearInterval(scrollIntervalId);
  7062. /** @type {null} */
  7063. scrollIntervalId = null;
  7064. };
  7065. jQuery.fx.speeds = {
  7066. slow : 600,
  7067. fast : 200,
  7068. _default : 400
  7069. };
  7070. jQuery.fx.step = {};
  7071. if (jQuery.expr) {
  7072. if (jQuery.expr.filters) {
  7073. /**
  7074. * @param {undefined} elem
  7075. * @return {?}
  7076. */
  7077. jQuery.expr.filters.animated = function(elem) {
  7078. return jQuery.grep(jQuery.timers, function(fn) {
  7079. return elem === fn.elem;
  7080. }).length;
  7081. };
  7082. }
  7083. }
  7084. /**
  7085. * @param {string} options
  7086. * @return {?}
  7087. */
  7088. jQuery.fn.offset = function(options) {
  7089. if (arguments.length) {
  7090. return options === undefined ? this : this.each(function(dataName) {
  7091. jQuery.offset.setOffset(this, options, dataName);
  7092. });
  7093. }
  7094. var doc;
  7095. var win;
  7096. var b = this[0];
  7097. var box = {
  7098. top : 0,
  7099. left : 0
  7100. };
  7101. var element = b && b.ownerDocument;
  7102. if (element) {
  7103. return doc = element.documentElement, jQuery.contains(doc, b) ? (typeof b.getBoundingClientRect !== core_strundefined && (box = b.getBoundingClientRect()), win = getWindow(element), {
  7104. top : box.top + win.pageYOffset - doc.clientTop,
  7105. left : box.left + win.pageXOffset - doc.clientLeft
  7106. }) : box;
  7107. }
  7108. };
  7109. jQuery.offset = {
  7110. /**
  7111. * @param {Object} elem
  7112. * @param {Object} options
  7113. * @param {?} i
  7114. * @return {undefined}
  7115. */
  7116. setOffset : function(elem, options, i) {
  7117. var curPosition;
  7118. var curLeft;
  7119. var curCSSTop;
  7120. var curTop;
  7121. var curOffset;
  7122. var curCSSLeft;
  7123. var l;
  7124. var position = jQuery.css(elem, "position");
  7125. var curElem = jQuery(elem);
  7126. var props = {};
  7127. if ("static" === position) {
  7128. /** @type {string} */
  7129. elem.style.position = "relative";
  7130. }
  7131. curOffset = curElem.offset();
  7132. curCSSTop = jQuery.css(elem, "top");
  7133. curCSSLeft = jQuery.css(elem, "left");
  7134. /** @type {boolean} */
  7135. l = ("absolute" === position || "fixed" === position) && (curCSSTop + curCSSLeft).indexOf("auto") > -1;
  7136. if (l) {
  7137. curPosition = curElem.position();
  7138. curTop = curPosition.top;
  7139. curLeft = curPosition.left;
  7140. } else {
  7141. /** @type {number} */
  7142. curTop = parseFloat(curCSSTop) || 0;
  7143. /** @type {number} */
  7144. curLeft = parseFloat(curCSSLeft) || 0;
  7145. }
  7146. if (jQuery.isFunction(options)) {
  7147. options = options.call(elem, i, curOffset);
  7148. }
  7149. if (null != options.top) {
  7150. /** @type {number} */
  7151. props.top = options.top - curOffset.top + curTop;
  7152. }
  7153. if (null != options.left) {
  7154. /** @type {number} */
  7155. props.left = options.left - curOffset.left + curLeft;
  7156. }
  7157. if ("using" in options) {
  7158. options.using.call(elem, props);
  7159. } else {
  7160. curElem.css(props);
  7161. }
  7162. }
  7163. };
  7164. jQuery.fn.extend({
  7165. /**
  7166. * @return {?}
  7167. */
  7168. position : function() {
  7169. if (this[0]) {
  7170. var elem;
  7171. var offset;
  7172. var offsetParent = this[0];
  7173. var parentOffset = {
  7174. top : 0,
  7175. left : 0
  7176. };
  7177. return "fixed" === jQuery.css(offsetParent, "position") ? offset = offsetParent.getBoundingClientRect() : (elem = this.offsetParent(), offset = this.offset(), jQuery.nodeName(elem[0], "html") || (parentOffset = elem.offset()), parentOffset.top += jQuery.css(elem[0], "borderTopWidth", true), parentOffset.left += jQuery.css(elem[0], "borderLeftWidth", true)), {
  7178. top : offset.top - parentOffset.top - jQuery.css(offsetParent, "marginTop", true),
  7179. left : offset.left - parentOffset.left - jQuery.css(offsetParent, "marginLeft", true)
  7180. };
  7181. }
  7182. },
  7183. /**
  7184. * @return {?}
  7185. */
  7186. offsetParent : function() {
  7187. return this.map(function() {
  7188. var offsetParent = this.offsetParent || docElem;
  7189. for (;offsetParent && (!jQuery.nodeName(offsetParent, "html") && "static" === jQuery.css(offsetParent, "position"));) {
  7190. offsetParent = offsetParent.offsetParent;
  7191. }
  7192. return offsetParent || docElem;
  7193. });
  7194. }
  7195. });
  7196. jQuery.each({
  7197. scrollLeft : "pageXOffset",
  7198. scrollTop : "pageYOffset"
  7199. }, function(name, prop) {
  7200. /** @type {boolean} */
  7201. var top = "pageYOffset" === prop;
  7202. /**
  7203. * @param {string} value
  7204. * @return {?}
  7205. */
  7206. jQuery.fn[name] = function(value) {
  7207. return jQuery.access(this, function(element, k, val) {
  7208. var obj = getWindow(element);
  7209. return val === undefined ? obj ? obj[prop] : element[k] : (obj ? obj.scrollTo(top ? win.pageXOffset : val, top ? val : win.pageYOffset) : element[k] = val, undefined);
  7210. }, name, value, arguments.length, null);
  7211. };
  7212. });
  7213. jQuery.each({
  7214. Height : "height",
  7215. Width : "width"
  7216. }, function(name, i) {
  7217. jQuery.each({
  7218. padding : "inner" + name,
  7219. content : i,
  7220. "" : "outer" + name
  7221. }, function(defaultExtra, original) {
  7222. /**
  7223. * @param {Object} margin
  7224. * @param {boolean} value
  7225. * @return {?}
  7226. */
  7227. jQuery.fn[original] = function(margin, value) {
  7228. var chainable = arguments.length && (defaultExtra || "boolean" != typeof margin);
  7229. var extra = defaultExtra || (margin === true || value === true ? "margin" : "border");
  7230. return jQuery.access(this, function(elem, type, value) {
  7231. var doc;
  7232. return jQuery.isWindow(elem) ? elem.document.documentElement["client" + name] : 9 === elem.nodeType ? (doc = elem.documentElement, Math.max(elem.body["scroll" + name], doc["scroll" + name], elem.body["offset" + name], doc["offset" + name], doc["client" + name])) : value === undefined ? jQuery.css(elem, type, extra) : jQuery.style(elem, type, value, extra);
  7233. }, i, chainable ? margin : undefined, chainable, null);
  7234. };
  7235. });
  7236. });
  7237. /**
  7238. * @return {?}
  7239. */
  7240. jQuery.fn.size = function() {
  7241. return this.length;
  7242. };
  7243. jQuery.fn.andSelf = jQuery.fn.addBack;
  7244. if ("object" == typeof module && (module && "object" == typeof module.exports)) {
  7245. /** @type {function (string, Function): ?} */
  7246. module.exports = jQuery;
  7247. } else {
  7248. if ("function" == typeof define) {
  7249. if (define.amd) {
  7250. define("jquery", [], function() {
  7251. return jQuery;
  7252. });
  7253. }
  7254. }
  7255. }
  7256. if ("object" == typeof win) {
  7257. if ("object" == typeof win.document) {
  7258. /** @type {function (string, Function): ?} */
  7259. win.jQuery = win.$ = jQuery;
  7260. }
  7261. }
  7262. })(window);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement