From d1da2267487f849ca1866bb24928e8adcf4558e2 Mon Sep 17 00:00:00 2001 From: Alyssa X Date: Tue, 11 Jan 2022 22:18:04 +0100 Subject: [PATCH] Prettier --- .prettierrc.json | 1 + README.md | 22 +- src/assets/jquery.nice-select.min.js | 117 +- src/assets/nice-select.css | 248 +- src/background.js | 1109 +++-- src/content.css | 140 +- src/content.html | 31 +- src/content.js | 625 +-- src/jquery.js | 5574 +++++++++++++++++++++++++- src/manifest.json | 59 +- 10 files changed, 7188 insertions(+), 738 deletions(-) create mode 100644 .prettierrc.json diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1 @@ +{} diff --git a/README.md b/README.md index b105f64..409496a 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ # Omni + ![Preview](preview.gif)

@@ -11,30 +12,34 @@ With Omni you can use Chrome like a pro. Manage tabs, bookmarks, your browser hi Made by [Alyssa X](https://alyssax.com) ## Table of contents + - [Features](#features) - [Controlling the interface](#controlling-the-interface) - - [Opening Omni](#opening-omni) - - [Closing Omni](#closing-omni) - - [Switching between dark and light mode](#switching-between-dark-and-light-mode) + - [Opening Omni](#opening-omni) + - [Closing Omni](#closing-omni) + - [Switching between dark and light mode](#switching-between-dark-and-light-mode) - [List of commands](#list-of-commands) - [Libraries used](#libraries-used) ## Features + ๐Ÿ—„ Switch, open, close, and search your tabs
๐Ÿ“š Browse and manage your bookmarks
๐Ÿ” Search your browsing history
โšก๏ธ 50+ actions to improve your productivity
๐Ÿ”ฎ Special commands to filter and perform more actions
๐Ÿงฉ Integrations with Notion, Figma, Docs, Asana...
โŒจ๏ธ Shortcuts for actions such as muting, pinning, bookmarking...
โš™๏ธ Advanced settings to help troubleshoot browsing issues
๐ŸŒ™ Dark mode
...and much more - all for free & no sign in needed! ## Controlling the interface ### Opening Omni -To open Omni, simply press `โŒ˜+K` on Mac or `Ctrl+K` on Windows. You can change the shortcut by going to chrome://extensions/shortcuts. +To open Omni, simply press `โŒ˜+K` on Mac or `Ctrl+K` on Windows. You can change the shortcut by going to chrome://extensions/shortcuts. Alternatively you can click on the extension icon in the toolbar to toggle it. ### Closing Omni + To close Omni you can press `Esc`, click on the background, or press the extension icon. ### Switching between dark and light mode -The dark and light theme in Omni is tied to your system's theme. + +The dark and light theme in Omni is tied to your system's theme. On Mac you can change the theme by clicking on the Apple menu (on the top left), opening the System preferences, going into the General section, and then choosing between dark, light, or auto. @@ -43,6 +48,7 @@ On Windows it depends on the OS version. [Here is a guide for Windows 11 and 10. After switching the theme you might need to restart Chrome. ## List of commands + You can use a variety of commands with Omni to perform actions or filter your results. - **/tabs**: Search your tabs @@ -53,6 +59,8 @@ You can use a variety of commands with Omni to perform actions or filter your re ## Libraries used -- [jQuery](https://jquery.com/) - for better event handling and DOM manipulation +- [jQuery](https://jquery.com/) - for better event handling and DOM manipulation + # - Feel free to reach out to me through email at hi@alyssax.com or [on Twitter](https://twitter.com/alyssaxuu) if you have any questions or feedback! Hope you find this useful ๐Ÿ’œ + +Feel free to reach out to me through email at hi@alyssax.com or [on Twitter](https://twitter.com/alyssaxuu) if you have any questions or feedback! Hope you find this useful ๐Ÿ’œ diff --git a/src/assets/jquery.nice-select.min.js b/src/assets/jquery.nice-select.min.js index 88eb2d6..fcf983f 100644 --- a/src/assets/jquery.nice-select.min.js +++ b/src/assets/jquery.nice-select.min.js @@ -1,4 +1,119 @@ /* jQuery Nice Select - v1.0 https://github.com/hernansartorio/jquery-nice-select Made by Hernรกn Sartorio */ -!function(e){e.fn.niceSelect=function(t){function s(t){t.after(e("
").addClass("nice-select").addClass(t.attr("class")||"").addClass(t.attr("disabled")?"disabled":"").attr("tabindex",t.attr("disabled")?null:"0").html(''));var s=t.next(),n=t.find("option"),i=t.find("option:selected");s.find(".current").html(i.data("display")||i.text()),n.each(function(t){var n=e(this),i=n.data("display");s.find("ul").append(e("
  • ").attr("data-value",n.val()).attr("data-display",i||null).addClass("option"+(n.is(":selected")?" selected":"")+(n.is(":disabled")?" disabled":"")).html(n.text()))})}if("string"==typeof t)return"update"==t?this.each(function(){var t=e(this),n=e(this).next(".nice-select"),i=n.hasClass("open");n.length&&(n.remove(),s(t),i&&t.next().trigger("click"))}):"destroy"==t?(this.each(function(){var t=e(this),s=e(this).next(".nice-select");s.length&&(s.remove(),t.css("display",""))}),0==e(".nice-select").length&&e(document).off(".nice_select")):console.log('Method "'+t+'" does not exist.'),this;this.hide(),this.each(function(){var t=e(this);t.next().hasClass("nice-select")||s(t)}),e(document).off(".nice_select"),e(document).on("click.nice_select",".nice-select",function(t){var s=e(this);e(".nice-select").not(s).removeClass("open"),s.toggleClass("open"),s.hasClass("open")?(s.find(".option"),s.find(".focus").removeClass("focus"),s.find(".selected").addClass("focus")):s.focus()}),e(document).on("click.nice_select",function(t){0===e(t.target).closest(".nice-select").length&&e(".nice-select").removeClass("open").find(".option")}),e(document).on("click.nice_select",".nice-select .option:not(.disabled)",function(t){var s=e(this),n=s.closest(".nice-select");n.find(".selected").removeClass("selected"),s.addClass("selected");var i=s.data("display")||s.text();n.find(".current").text(i),n.prev("select").val(s.data("value")).trigger("change")}),e(document).on("keydown.nice_select",".nice-select",function(t){var s=e(this),n=e(s.find(".focus")||s.find(".list .option.selected"));if(32==t.keyCode||13==t.keyCode)return s.hasClass("open")?n.trigger("click"):s.trigger("click"),!1;if(40==t.keyCode){if(s.hasClass("open")){var i=n.nextAll(".option:not(.disabled)").first();i.length>0&&(s.find(".focus").removeClass("focus"),i.addClass("focus"))}else s.trigger("click");return!1}if(38==t.keyCode){if(s.hasClass("open")){var l=n.prevAll(".option:not(.disabled)").first();l.length>0&&(s.find(".focus").removeClass("focus"),l.addClass("focus"))}else s.trigger("click");return!1}if(27==t.keyCode)s.hasClass("open")&&s.trigger("click");else if(9==t.keyCode&&s.hasClass("open"))return!1});var n=document.createElement("a").style;return n.cssText="pointer-events:auto","auto"!==n.pointerEvents&&e("html").addClass("no-csspointerevents"),this}}(jQuery); \ No newline at end of file +!(function (e) { + e.fn.niceSelect = function (t) { + function s(t) { + t.after( + e("
    ") + .addClass("nice-select") + .addClass(t.attr("class") || "") + .addClass(t.attr("disabled") ? "disabled" : "") + .attr("tabindex", t.attr("disabled") ? null : "0") + .html('') + ); + var s = t.next(), + n = t.find("option"), + i = t.find("option:selected"); + s.find(".current").html(i.data("display") || i.text()), + n.each(function (t) { + var n = e(this), + i = n.data("display"); + s.find("ul").append( + e("
  • ") + .attr("data-value", n.val()) + .attr("data-display", i || null) + .addClass( + "option" + + (n.is(":selected") ? " selected" : "") + + (n.is(":disabled") ? " disabled" : "") + ) + .html(n.text()) + ); + }); + } + if ("string" == typeof t) + return ( + "update" == t + ? this.each(function () { + var t = e(this), + n = e(this).next(".nice-select"), + i = n.hasClass("open"); + n.length && (n.remove(), s(t), i && t.next().trigger("click")); + }) + : "destroy" == t + ? (this.each(function () { + var t = e(this), + s = e(this).next(".nice-select"); + s.length && (s.remove(), t.css("display", "")); + }), + 0 == e(".nice-select").length && e(document).off(".nice_select")) + : console.log('Method "' + t + '" does not exist.'), + this + ); + this.hide(), + this.each(function () { + var t = e(this); + t.next().hasClass("nice-select") || s(t); + }), + e(document).off(".nice_select"), + e(document).on("click.nice_select", ".nice-select", function (t) { + var s = e(this); + e(".nice-select").not(s).removeClass("open"), + s.toggleClass("open"), + s.hasClass("open") + ? (s.find(".option"), + s.find(".focus").removeClass("focus"), + s.find(".selected").addClass("focus")) + : s.focus(); + }), + e(document).on("click.nice_select", function (t) { + 0 === e(t.target).closest(".nice-select").length && + e(".nice-select").removeClass("open").find(".option"); + }), + e(document).on( + "click.nice_select", + ".nice-select .option:not(.disabled)", + function (t) { + var s = e(this), + n = s.closest(".nice-select"); + n.find(".selected").removeClass("selected"), s.addClass("selected"); + var i = s.data("display") || s.text(); + n.find(".current").text(i), + n.prev("select").val(s.data("value")).trigger("change"); + } + ), + e(document).on("keydown.nice_select", ".nice-select", function (t) { + var s = e(this), + n = e(s.find(".focus") || s.find(".list .option.selected")); + if (32 == t.keyCode || 13 == t.keyCode) + return ( + s.hasClass("open") ? n.trigger("click") : s.trigger("click"), !1 + ); + if (40 == t.keyCode) { + if (s.hasClass("open")) { + var i = n.nextAll(".option:not(.disabled)").first(); + i.length > 0 && + (s.find(".focus").removeClass("focus"), i.addClass("focus")); + } else s.trigger("click"); + return !1; + } + if (38 == t.keyCode) { + if (s.hasClass("open")) { + var l = n.prevAll(".option:not(.disabled)").first(); + l.length > 0 && + (s.find(".focus").removeClass("focus"), l.addClass("focus")); + } else s.trigger("click"); + return !1; + } + if (27 == t.keyCode) s.hasClass("open") && s.trigger("click"); + else if (9 == t.keyCode && s.hasClass("open")) return !1; + }); + var n = document.createElement("a").style; + return ( + (n.cssText = "pointer-events:auto"), + "auto" !== n.pointerEvents && e("html").addClass("no-csspointerevents"), + this + ); + }; +})(jQuery); diff --git a/src/assets/nice-select.css b/src/assets/nice-select.css index d72a7cb..0ef3c39 100644 --- a/src/assets/nice-select.css +++ b/src/assets/nice-select.css @@ -21,118 +21,146 @@ -webkit-transition: all 0.2s ease-in-out; transition: all 0.2s ease-in-out; -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; white-space: nowrap; - width: auto; } - .nice-select:hover { - border-color: #dbdbdb; } - .nice-select:active, .nice-select.open, .nice-select:focus { - border-color: #999; } - .nice-select:after { - border-bottom: 2px solid #999; - border-right: 2px solid #999; - content: ''; - display: block; - height: 5px; - margin-top: -4px; - pointer-events: none; - position: absolute; - right: 12px; - top: 50%; - -webkit-transform-origin: 66% 66%; - -ms-transform-origin: 66% 66%; - transform-origin: 66% 66%; - -webkit-transform: rotate(45deg); - -ms-transform: rotate(45deg); - transform: rotate(45deg); - -webkit-transition: all 0.15s ease-in-out; - transition: all 0.15s ease-in-out; - width: 5px; } - .nice-select.open:after { - -webkit-transform: rotate(-135deg); - -ms-transform: rotate(-135deg); - transform: rotate(-135deg); } - .nice-select.open .list { - opacity: 1; - pointer-events: auto; - -webkit-transform: scale(1) translateY(0); - -ms-transform: scale(1) translateY(0); - transform: scale(1) translateY(0); } - .nice-select.disabled { - border-color: #ededed; - color: #999; - pointer-events: none; } - .nice-select.disabled:after { - border-color: #cccccc; } - .nice-select.wide { - width: 100%; } - .nice-select.wide .list { - left: 0 !important; - right: 0 !important; } - .nice-select.right { - float: right; } - .nice-select.right .list { - left: auto; - right: 0; } - .nice-select.small { - font-size: 12px; - height: 36px; - line-height: 34px; } - .nice-select.small:after { - height: 4px; - width: 4px; } - .nice-select.small .option { - line-height: 34px; - min-height: 34px; } - .nice-select .list { - background-color: #fff; - border-radius: 5px; - box-shadow: 0 0 0 1px rgba(68, 68, 68, 0.11); - box-sizing: border-box; - margin-top: 4px; - opacity: 0; - overflow: hidden; - padding: 0; - pointer-events: none; - position: absolute; - top: 100%; - left: 0; - -webkit-transform-origin: 50% 0; - -ms-transform-origin: 50% 0; - transform-origin: 50% 0; - -webkit-transform: scale(0.75) translateY(-21px); - -ms-transform: scale(0.75) translateY(-21px); - transform: scale(0.75) translateY(-21px); - -webkit-transition: all 0.2s cubic-bezier(0.5, 0, 0, 1.25), opacity 0.15s ease-out; - transition: all 0.2s cubic-bezier(0.5, 0, 0, 1.25), opacity 0.15s ease-out; - z-index: 9; } - .nice-select .list:hover .option:not(:hover) { - background-color: transparent !important; } - .nice-select .option { - cursor: pointer; - font-weight: 400; - line-height: 40px; - list-style: none; - min-height: 40px; - outline: none; - padding-left: 18px; - padding-right: 29px; - text-align: left; - -webkit-transition: all 0.2s; - transition: all 0.2s; } - .nice-select .option:hover, .nice-select .option.focus, .nice-select .option.selected.focus { - background-color: #f6f6f6; } - .nice-select .option.selected { - font-weight: bold; } - .nice-select .option.disabled { - background-color: transparent; - color: #999; - cursor: default; } + width: auto; +} +.nice-select:hover { + border-color: #dbdbdb; +} +.nice-select:active, +.nice-select.open, +.nice-select:focus { + border-color: #999; +} +.nice-select:after { + border-bottom: 2px solid #999; + border-right: 2px solid #999; + content: ""; + display: block; + height: 5px; + margin-top: -4px; + pointer-events: none; + position: absolute; + right: 12px; + top: 50%; + -webkit-transform-origin: 66% 66%; + -ms-transform-origin: 66% 66%; + transform-origin: 66% 66%; + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); + -webkit-transition: all 0.15s ease-in-out; + transition: all 0.15s ease-in-out; + width: 5px; +} +.nice-select.open:after { + -webkit-transform: rotate(-135deg); + -ms-transform: rotate(-135deg); + transform: rotate(-135deg); +} +.nice-select.open .list { + opacity: 1; + pointer-events: auto; + -webkit-transform: scale(1) translateY(0); + -ms-transform: scale(1) translateY(0); + transform: scale(1) translateY(0); +} +.nice-select.disabled { + border-color: #ededed; + color: #999; + pointer-events: none; +} +.nice-select.disabled:after { + border-color: #cccccc; +} +.nice-select.wide { + width: 100%; +} +.nice-select.wide .list { + left: 0 !important; + right: 0 !important; +} +.nice-select.right { + float: right; +} +.nice-select.right .list { + left: auto; + right: 0; +} +.nice-select.small { + font-size: 12px; + height: 36px; + line-height: 34px; +} +.nice-select.small:after { + height: 4px; + width: 4px; +} +.nice-select.small .option { + line-height: 34px; + min-height: 34px; +} +.nice-select .list { + background-color: #fff; + border-radius: 5px; + box-shadow: 0 0 0 1px rgba(68, 68, 68, 0.11); + box-sizing: border-box; + margin-top: 4px; + opacity: 0; + overflow: hidden; + padding: 0; + pointer-events: none; + position: absolute; + top: 100%; + left: 0; + -webkit-transform-origin: 50% 0; + -ms-transform-origin: 50% 0; + transform-origin: 50% 0; + -webkit-transform: scale(0.75) translateY(-21px); + -ms-transform: scale(0.75) translateY(-21px); + transform: scale(0.75) translateY(-21px); + -webkit-transition: all 0.2s cubic-bezier(0.5, 0, 0, 1.25), + opacity 0.15s ease-out; + transition: all 0.2s cubic-bezier(0.5, 0, 0, 1.25), opacity 0.15s ease-out; + z-index: 9; +} +.nice-select .list:hover .option:not(:hover) { + background-color: transparent !important; +} +.nice-select .option { + cursor: pointer; + font-weight: 400; + line-height: 40px; + list-style: none; + min-height: 40px; + outline: none; + padding-left: 18px; + padding-right: 29px; + text-align: left; + -webkit-transition: all 0.2s; + transition: all 0.2s; +} +.nice-select .option:hover, +.nice-select .option.focus, +.nice-select .option.selected.focus { + background-color: #f6f6f6; +} +.nice-select .option.selected { + font-weight: bold; +} +.nice-select .option.disabled { + background-color: transparent; + color: #999; + cursor: default; +} .no-csspointerevents .nice-select .list { - display: none; } + display: none; +} .no-csspointerevents .nice-select.open .list { - display: block; } + display: block; +} diff --git a/src/background.js b/src/background.js index cf62644..8506a08 100644 --- a/src/background.js +++ b/src/background.js @@ -3,169 +3,708 @@ var actions = []; // Inject Omni on install chrome.manifest = chrome.runtime.getManifest(); var injectIntoTab = function (tab) { - var scripts = chrome.manifest.content_scripts[0].js; - var i = 0, s = scripts.length; - for( ; i < s; i++ ) { - chrome.scripting.executeScript({ - target: {tabId: tab.id}, - files: [scripts[i]] - }); - } -} + var scripts = chrome.manifest.content_scripts[0].js; + var i = 0, + s = scripts.length; + for (; i < s; i++) { + chrome.scripting.executeScript({ + target: { tabId: tab.id }, + files: [scripts[i]], + }); + } +}; // Get all windows -chrome.windows.getAll({ - populate: true -}, function (windows) { - var i = 0, w = windows.length, currentWindow; - for( ; i < w; i++ ) { - currentWindow = windows[i]; - var j = 0, t = currentWindow.tabs.length, currentTab; - for( ; j < t; j++ ) { - currentTab = currentWindow.tabs[j]; - injectIntoTab(currentTab); - } +chrome.windows.getAll( + { + populate: true, + }, + function (windows) { + var i = 0, + w = windows.length, + currentWindow; + for (; i < w; i++) { + currentWindow = windows[i]; + var j = 0, + t = currentWindow.tabs.length, + currentTab; + for (; j < t; j++) { + currentTab = currentWindow.tabs[j]; + injectIntoTab(currentTab); + } } -}); + } +); // Clear actions and append default ones function clearActions() { - getCurrentTab().then((response) => { - var isMac = navigator.platform.toUpperCase().indexOf('MAC')>=0; - var muteaction = {title:"Mute tab", desc:"Mute the current tab", type:"action", action:"mute", emoji:true, emojiChar:"๐Ÿ”‡", keycheck:true, keys:['โŒฅ','โ‡ง', 'M']}; - var pinaction = {title:"Pin tab", desc:"Pin the current tab", type:"action", action:"pin", emoji:true, emojiChar:"๐Ÿ“Œ", keycheck:true, keys:['โŒฅ','โ‡ง', 'P']}; - if (response.mutedInfo.muted) { - muteaction = {title:"Unmute tab", desc:"Unmute the current tab", type:"action", action:"unmute", emoji:true, emojiChar:"๐Ÿ”ˆ", keycheck:true, keys:['โŒฅ','โ‡ง', 'M']}; - } - if (response.pinned) { - pinaction = {title:"Unpin tab", desc:"Unpin the current tab", type:"action", action:"unpin", emoji:true, emojiChar:"๐Ÿ“Œ", keycheck:true, keys:['โŒฅ','โ‡ง', 'P']}; - } - actions = [ - {title:"New tab", desc:"Open a new tab", type:"action", action:"new-tab", emoji:true, emojiChar:"โœจ", keycheck:true, keys:['โŒ˜','T']}, - {title:"Bookmark", desc:"Create a bookmark", type:"action", action:"create-bookmark", emoji:true, emojiChar:"๐Ÿ“•", keycheck:true, keys:['โŒ˜','D']}, - pinaction, - {title:"Fullscreen", desc:"Make the page fullscreen", type:"action", action:"fullscreen", emoji:true, emojiChar:"๐Ÿ–ฅ", keycheck:true, keys:['โŒ˜', 'Ctrl', 'F']}, - muteaction, - {title:"Reload", desc:"Reload the page", type:"action", action:"reload", emoji:true, emojiChar:"โ™ป๏ธ", keycheck:true, keys:['โŒ˜','โ‡ง', 'R']}, - {title:"Help", desc:"Get help with Omni on GitHub", type:"action", action:"url", url:"https://github.com/alyssaxuu/omni", emoji:true, emojiChar:"๐Ÿค”", keycheck:false}, - {title:"Compose email", desc:"Compose a new email", type:"action", action:"email", emoji:true, emojiChar:"โœ‰๏ธ", keycheck:true, keys:['โŒฅ','โ‡ง', 'C']}, - {title:"New Notion page", desc:"Create a new Notion page", type:"action", action:"url", url:"https://notion.new", emoji:false, favIconUrl:chrome.runtime.getURL("assets/logo-notion.png"), keycheck:false}, - {title:"New Sheets spreadsheet", desc:"Create a new Google Sheets spreadsheet", type:"action", action:"url", url:"https://sheets.new", emoji:false, favIconUrl:chrome.runtime.getURL("assets/logo-sheets.png"), keycheck:false}, - {title:"New Docs document", desc:"Create a new Google Docs document", type:"action", action:"url", emoji:false, url:"https://docs.new", favIconUrl:chrome.runtime.getURL("assets/logo-docs.png"), keycheck:false}, - {title:"New Slides presentation", desc:"Create a new Google Slides presentation", type:"action", action:"url", url:"https://slides.new", emoji:false, favIconUrl:chrome.runtime.getURL("assets/logo-slides.png"), keycheck:false}, - {title:"New form", desc:"Create a new Google Forms form", type:"action", action:"url", url:"https://forms.new", emoji:false, favIconUrl:chrome.runtime.getURL("assets/logo-forms.png"), keycheck:false}, - {title:"New Medium story", desc:"Create a new Medium story", type:"action", action:"url", url:"https://story.new", emoji:false, favIconUrl:chrome.runtime.getURL("assets/logo-medium.png"), keycheck:false}, - {title:"New GitHub repository", desc:"Create a new GitHub repository", type:"action", action:"url", url:"https://github.new", emoji:false, favIconUrl:chrome.runtime.getURL("assets/logo-github.png"), keycheck:false}, - {title:"New GitHub gist", desc:"Create a new GitHub gist", type:"action", action:"url", url:"https://gist.new", emoji:false, favIconUrl:chrome.runtime.getURL("assets/logo-github.png"), keycheck:false}, - {title:"New CodePen pen", desc:"Create a new CodePen pen", type:"action", action:"url", url:"https://pen.new", emoji:false, favIconUrl:chrome.runtime.getURL("assets/logo-codepen.png"), keycheck:false}, - {title:"New Excel spreadsheet", desc:"Create a new Excel spreadsheet", type:"action", action:"url", url:"https://excel.new", emoji:false, favIconUrl:chrome.runtime.getURL("assets/logo-excel.png"), keycheck:false}, - {title:"New PowerPoint presentation", desc:"Create a new PowerPoint presentation", type:"action", url:"https://powerpoint.new", action:"url", emoji:false, favIconUrl:chrome.runtime.getURL("assets/logo-powerpoint.png"), keycheck:false}, - {title:"New Word document", desc:"Create a new Word document", type:"action", action:"url", url:"https://word.new", emoji:false, favIconUrl:chrome.runtime.getURL("assets/logo-word.png"), keycheck:false}, - {title:"Create a whiteboard", desc:"Create a collaborative whiteboard", type:"action", action:"url", url:"https://whiteboard.new", emoji:true, emojiChar:"๐Ÿง‘โ€๐Ÿซ", keycheck:false}, - {title:"Record a video", desc:"Record and edit a video", type:"action", action:"url", url:"https://recording.new", emoji:true, emojiChar:"๐Ÿ“น", keycheck:false}, - {title:"Create a Figma file", desc:"Create a new Figma file", type:"action", action:"url", url:"https://figma.new", emoji:false, favIconUrl:chrome.runtime.getURL("assets/logo-figma.png"), keycheck:false}, - {title:"Create a FigJam file", desc:"Create a new FigJam file", type:"action", action:"url", url:"https://figjam.new", emoji:true, emojiChar:"๐Ÿ–Œ", keycheck:false}, - {title:"Hunt a product", desc:"Submit a product to Product Hunt", type:"action", action:"url", url:"https://www.producthunt.com/posts/new", emoji:false, favIconUrl:chrome.runtime.getURL("assets/logo-producthunt.png"), keycheck:false}, - {title:"Make a tweet", desc:"Make a tweet on Twitter", type:"action", action:"url", url:"https://twitter.com/intent/tweet", emoji:false, favIconUrl:chrome.runtime.getURL("assets/logo-twitter.png"), keycheck:false}, - {title:"Create a playlist", desc:"Create a Spotify playlist", type:"action", action:"url", url:"https://playlist.new", emoji:false, favIconUrl:chrome.runtime.getURL("assets/logo-spotify.png"), keycheck:false}, - {title:"Create a Canva design", desc:"Create a new design with Canva", type:"action", action:"url", url:"https://design.new", emoji:false, favIconUrl:chrome.runtime.getURL("assets/logo-canva.png"), keycheck:false}, - {title:"Create a new podcast episode", desc:"Create a new podcast episode with Anchor", type:"action", action:"url", url:"https://episode.new", emoji:false, favIconUrl:chrome.runtime.getURL("assets/logo-anchor.png"), keycheck:false}, - {title:"Edit an image", desc:"Edit an image with Adobe Photoshop", type:"action", action:"url", url:"https://photo.new", emoji:false, favIconUrl:chrome.runtime.getURL("assets/logo-photoshop.png"), keycheck:false}, - {title:"Convert to PDF", desc:"Convert a file to PDF", type:"action", action:"url", url:"https://pdf.new", emoji:true, emojiChar:"๐Ÿ“„", keycheck:false}, - {title:"Scan a QR code", desc:"Scan a QR code with your camera", type:"action", action:"url", url:"https://scan.new", emoji:false, favIconUrl:chrome.runtime.getURL("assets/logo-qr.png"), keycheck:false}, - {title:"Add a task to Asana", desc:"Create a new task in Asana", type:"action", action:"url", url:"https://task.new", emoji:false, favIconUrl:chrome.runtime.getURL("assets/logo-asana.png"), keycheck:false}, - {title:"Add an issue to Linear", desc:"Create a new issue in Linear", type:"action", action:"url", url:"https://linear.new", emoji:false, favIconUrl:chrome.runtime.getURL("assets/logo-linear.png"), keycheck:false}, - {title:"Add a task to WIP", desc:"Create a new task in WIP", type:"action", action:"url", url:"https://todo.new", emoji:false, favIconUrl:chrome.runtime.getURL("assets/logo-wip.png"), keycheck:false}, - {title:"Create an event", desc:"Add an event to Google Calendar", type:"action", action:"url", url:"https://cal.new", emoji:false, favIconUrl:chrome.runtime.getURL("assets/logo-calendar.png"), keycheck:false}, - {title:"Add a note", desc:"Add a note to Google Keep", type:"action", action:"url", emoji:false, url:"https://note.new", favIconUrl:chrome.runtime.getURL("assets/logo-keep.png"), keycheck:false}, - {title:"New meeting", desc:"Start a Google Meet meeting", type:"action", action:"url", emoji:false, url:"https://meet.new", favIconUrl:chrome.runtime.getURL("assets/logo-meet.png"), keycheck:false}, - {title:"Browsing history", desc:"Browse through your browsing history", type:"action", action:"history", emoji:true, emojiChar:"๐Ÿ—‚", keycheck:true, keys:['โŒ˜','Y']}, - {title:"Incognito mode", desc:"Open an incognito window", type:"action", action:"incognito", emoji:true, emojiChar:"๐Ÿ•ต๏ธ", keycheck:true, keys:['โŒ˜','โ‡ง', 'N']}, - {title:"Downloads", desc:"Browse through your downloads", type:"action", action:"downloads", emoji:true, emojiChar:"๐Ÿ“ฆ", keycheck:true, keys:['โŒ˜','โ‡ง', 'J']}, - {title:"Extensions", desc:"Manage your Chrome Extensions", type:"action", action:"extensions", emoji:true, emojiChar:"๐Ÿงฉ", keycheck:false, keys:['โŒ˜','D']}, - {title:"Chrome settings", desc:"Open the Chrome settings", type:"action", action:"settings", emoji:true, emojiChar:"โš™๏ธ", keycheck:true, keys:['โŒ˜',',']}, - {title:"Scroll to bottom", desc:"Scroll to the bottom of the page", type:"action", action:"scroll-bottom", emoji:true, emojiChar:"๐Ÿ‘‡", keycheck:true, keys:['โŒ˜','โ†“']}, - {title:"Scroll to top", desc:"Scroll to the top of the page", type:"action", action:"scroll-top", emoji:true, emojiChar:"๐Ÿ‘†", keycheck:true, keys:['โŒ˜','โ†‘']}, - {title:"Go back", desc:"Go back in history for the current tab", type:"action", action:"go-back", emoji:true, emojiChar:"๐Ÿ‘ˆ", keycheck:true, keys:['โŒ˜','โ†']}, - {title:"Go forward", desc:"Go forward in history for the current tab", type:"action", action:"go-forward", emoji:true, emojiChar:"๐Ÿ‘‰", keycheck:true, keys:['โŒ˜','โ†’']}, - {title:"Duplicate tab", desc:"Make a copy of the current tab", type:"action", action:"duplicate-tab", emoji:true, emojiChar:"๐Ÿ“‹", keycheck:true, keys:['โŒฅ','โ‡ง', 'D']}, - {title:"Close tab", desc:"Close the current tab", type:"action", action:"close-tab", emoji:true, emojiChar:"๐Ÿ—‘", keycheck:true, keys:['โŒ˜','W']}, - {title:"Close window", desc:"Close the current window", type:"action", action:"close-window", emoji:true, emojiChar:"๐Ÿ’ฅ", keycheck:true, keys:['โŒ˜','โ‡ง', 'W']}, - {title:"Manage browsing data", desc:"Manage your browsing data", type:"action", action:"manage-data", emoji:true, emojiChar:"๐Ÿ”ฌ", keycheck:true, keys:['โŒ˜','โ‡ง', 'Delete']}, - {title:"Clear all browsing data", desc:"Clear all of your browsing data", type:"action", action:"remove-all", emoji:true, emojiChar:"๐Ÿงน", keycheck:false, keys:['โŒ˜','D']}, - {title:"Clear browsing history", desc:"Clear all of your browsing history", type:"action", action:"remove-history", emoji:true, emojiChar:"๐Ÿ—‚", keycheck:false, keys:['โŒ˜','D']}, - {title:"Clear cookies", desc:"Clear all cookies", type:"action", action:"remove-cookies", emoji:true, emojiChar:"๐Ÿช", keycheck:false, keys:['โŒ˜','D']}, - {title:"Clear cache", desc:"Clear the cache", type:"action", action:"remove-cache", emoji:true, emojiChar:"๐Ÿ—„", keycheck:false, keys:['โŒ˜','D']}, - {title:"Clear local storage", desc:"Clear the local storage", type:"action", action:"remove-local-storage", emoji:true, emojiChar:"๐Ÿ“ฆ", keycheck:false, keys:['โŒ˜','D']}, - {title:"Clear passwords", desc:"Clear all saved passwords", type:"action", action:"remove-passwords", emoji:true, emojiChar:"๐Ÿ”‘", keycheck:false, keys:['โŒ˜','D']}, - ]; - if (!isMac) { - actions.forEach(function(action){ - if (action.action == "reload") { - action.keys = ['F5']; - } else if (action.action == "fullscreen") { - action.keys = ['F11']; - } else if (action.action == "downloads") { - action.keys = ['Ctrl', 'J']; - } else if (action.action == "settings") { - action.keycheck = false; - } else if (action.action = "history") { - action.keys = ['Ctrl', 'H']; - } else if (action.action == "go-back") { - action.keys = ['Alt','โ†']; - } else if (action.action == "go-forward") { - action.keys = ['Alt','โ†’'] - } else if (action.action == "scroll-top") { - action.keys = ['Home']; - } else if (action.action == "scroll-bottom") { - action.keys = ['End']; - } - actions.keys.forEach(function(key){ - if (key == "โŒ˜") { - key = "Ctrl"; - } else if (key == "โŒฅ") { - key = "Alt"; - } - }); - }); - } - }); + getCurrentTab().then((response) => { + var isMac = navigator.platform.toUpperCase().indexOf("MAC") >= 0; + var muteaction = { + title: "Mute tab", + desc: "Mute the current tab", + type: "action", + action: "mute", + emoji: true, + emojiChar: "๐Ÿ”‡", + keycheck: true, + keys: ["โŒฅ", "โ‡ง", "M"], + }; + var pinaction = { + title: "Pin tab", + desc: "Pin the current tab", + type: "action", + action: "pin", + emoji: true, + emojiChar: "๐Ÿ“Œ", + keycheck: true, + keys: ["โŒฅ", "โ‡ง", "P"], + }; + if (response.mutedInfo.muted) { + muteaction = { + title: "Unmute tab", + desc: "Unmute the current tab", + type: "action", + action: "unmute", + emoji: true, + emojiChar: "๐Ÿ”ˆ", + keycheck: true, + keys: ["โŒฅ", "โ‡ง", "M"], + }; + } + if (response.pinned) { + pinaction = { + title: "Unpin tab", + desc: "Unpin the current tab", + type: "action", + action: "unpin", + emoji: true, + emojiChar: "๐Ÿ“Œ", + keycheck: true, + keys: ["โŒฅ", "โ‡ง", "P"], + }; + } + actions = [ + { + title: "New tab", + desc: "Open a new tab", + type: "action", + action: "new-tab", + emoji: true, + emojiChar: "โœจ", + keycheck: true, + keys: ["โŒ˜", "T"], + }, + { + title: "Bookmark", + desc: "Create a bookmark", + type: "action", + action: "create-bookmark", + emoji: true, + emojiChar: "๐Ÿ“•", + keycheck: true, + keys: ["โŒ˜", "D"], + }, + pinaction, + { + title: "Fullscreen", + desc: "Make the page fullscreen", + type: "action", + action: "fullscreen", + emoji: true, + emojiChar: "๐Ÿ–ฅ", + keycheck: true, + keys: ["โŒ˜", "Ctrl", "F"], + }, + muteaction, + { + title: "Reload", + desc: "Reload the page", + type: "action", + action: "reload", + emoji: true, + emojiChar: "โ™ป๏ธ", + keycheck: true, + keys: ["โŒ˜", "โ‡ง", "R"], + }, + { + title: "Help", + desc: "Get help with Omni on GitHub", + type: "action", + action: "url", + url: "https://github.com/alyssaxuu/omni", + emoji: true, + emojiChar: "๐Ÿค”", + keycheck: false, + }, + { + title: "Compose email", + desc: "Compose a new email", + type: "action", + action: "email", + emoji: true, + emojiChar: "โœ‰๏ธ", + keycheck: true, + keys: ["โŒฅ", "โ‡ง", "C"], + }, + { + title: "New Notion page", + desc: "Create a new Notion page", + type: "action", + action: "url", + url: "https://notion.new", + emoji: false, + favIconUrl: chrome.runtime.getURL("assets/logo-notion.png"), + keycheck: false, + }, + { + title: "New Sheets spreadsheet", + desc: "Create a new Google Sheets spreadsheet", + type: "action", + action: "url", + url: "https://sheets.new", + emoji: false, + favIconUrl: chrome.runtime.getURL("assets/logo-sheets.png"), + keycheck: false, + }, + { + title: "New Docs document", + desc: "Create a new Google Docs document", + type: "action", + action: "url", + emoji: false, + url: "https://docs.new", + favIconUrl: chrome.runtime.getURL("assets/logo-docs.png"), + keycheck: false, + }, + { + title: "New Slides presentation", + desc: "Create a new Google Slides presentation", + type: "action", + action: "url", + url: "https://slides.new", + emoji: false, + favIconUrl: chrome.runtime.getURL("assets/logo-slides.png"), + keycheck: false, + }, + { + title: "New form", + desc: "Create a new Google Forms form", + type: "action", + action: "url", + url: "https://forms.new", + emoji: false, + favIconUrl: chrome.runtime.getURL("assets/logo-forms.png"), + keycheck: false, + }, + { + title: "New Medium story", + desc: "Create a new Medium story", + type: "action", + action: "url", + url: "https://story.new", + emoji: false, + favIconUrl: chrome.runtime.getURL("assets/logo-medium.png"), + keycheck: false, + }, + { + title: "New GitHub repository", + desc: "Create a new GitHub repository", + type: "action", + action: "url", + url: "https://github.new", + emoji: false, + favIconUrl: chrome.runtime.getURL("assets/logo-github.png"), + keycheck: false, + }, + { + title: "New GitHub gist", + desc: "Create a new GitHub gist", + type: "action", + action: "url", + url: "https://gist.new", + emoji: false, + favIconUrl: chrome.runtime.getURL("assets/logo-github.png"), + keycheck: false, + }, + { + title: "New CodePen pen", + desc: "Create a new CodePen pen", + type: "action", + action: "url", + url: "https://pen.new", + emoji: false, + favIconUrl: chrome.runtime.getURL("assets/logo-codepen.png"), + keycheck: false, + }, + { + title: "New Excel spreadsheet", + desc: "Create a new Excel spreadsheet", + type: "action", + action: "url", + url: "https://excel.new", + emoji: false, + favIconUrl: chrome.runtime.getURL("assets/logo-excel.png"), + keycheck: false, + }, + { + title: "New PowerPoint presentation", + desc: "Create a new PowerPoint presentation", + type: "action", + url: "https://powerpoint.new", + action: "url", + emoji: false, + favIconUrl: chrome.runtime.getURL("assets/logo-powerpoint.png"), + keycheck: false, + }, + { + title: "New Word document", + desc: "Create a new Word document", + type: "action", + action: "url", + url: "https://word.new", + emoji: false, + favIconUrl: chrome.runtime.getURL("assets/logo-word.png"), + keycheck: false, + }, + { + title: "Create a whiteboard", + desc: "Create a collaborative whiteboard", + type: "action", + action: "url", + url: "https://whiteboard.new", + emoji: true, + emojiChar: "๐Ÿง‘โ€๐Ÿซ", + keycheck: false, + }, + { + title: "Record a video", + desc: "Record and edit a video", + type: "action", + action: "url", + url: "https://recording.new", + emoji: true, + emojiChar: "๐Ÿ“น", + keycheck: false, + }, + { + title: "Create a Figma file", + desc: "Create a new Figma file", + type: "action", + action: "url", + url: "https://figma.new", + emoji: false, + favIconUrl: chrome.runtime.getURL("assets/logo-figma.png"), + keycheck: false, + }, + { + title: "Create a FigJam file", + desc: "Create a new FigJam file", + type: "action", + action: "url", + url: "https://figjam.new", + emoji: true, + emojiChar: "๐Ÿ–Œ", + keycheck: false, + }, + { + title: "Hunt a product", + desc: "Submit a product to Product Hunt", + type: "action", + action: "url", + url: "https://www.producthunt.com/posts/new", + emoji: false, + favIconUrl: chrome.runtime.getURL("assets/logo-producthunt.png"), + keycheck: false, + }, + { + title: "Make a tweet", + desc: "Make a tweet on Twitter", + type: "action", + action: "url", + url: "https://twitter.com/intent/tweet", + emoji: false, + favIconUrl: chrome.runtime.getURL("assets/logo-twitter.png"), + keycheck: false, + }, + { + title: "Create a playlist", + desc: "Create a Spotify playlist", + type: "action", + action: "url", + url: "https://playlist.new", + emoji: false, + favIconUrl: chrome.runtime.getURL("assets/logo-spotify.png"), + keycheck: false, + }, + { + title: "Create a Canva design", + desc: "Create a new design with Canva", + type: "action", + action: "url", + url: "https://design.new", + emoji: false, + favIconUrl: chrome.runtime.getURL("assets/logo-canva.png"), + keycheck: false, + }, + { + title: "Create a new podcast episode", + desc: "Create a new podcast episode with Anchor", + type: "action", + action: "url", + url: "https://episode.new", + emoji: false, + favIconUrl: chrome.runtime.getURL("assets/logo-anchor.png"), + keycheck: false, + }, + { + title: "Edit an image", + desc: "Edit an image with Adobe Photoshop", + type: "action", + action: "url", + url: "https://photo.new", + emoji: false, + favIconUrl: chrome.runtime.getURL("assets/logo-photoshop.png"), + keycheck: false, + }, + { + title: "Convert to PDF", + desc: "Convert a file to PDF", + type: "action", + action: "url", + url: "https://pdf.new", + emoji: true, + emojiChar: "๐Ÿ“„", + keycheck: false, + }, + { + title: "Scan a QR code", + desc: "Scan a QR code with your camera", + type: "action", + action: "url", + url: "https://scan.new", + emoji: false, + favIconUrl: chrome.runtime.getURL("assets/logo-qr.png"), + keycheck: false, + }, + { + title: "Add a task to Asana", + desc: "Create a new task in Asana", + type: "action", + action: "url", + url: "https://task.new", + emoji: false, + favIconUrl: chrome.runtime.getURL("assets/logo-asana.png"), + keycheck: false, + }, + { + title: "Add an issue to Linear", + desc: "Create a new issue in Linear", + type: "action", + action: "url", + url: "https://linear.new", + emoji: false, + favIconUrl: chrome.runtime.getURL("assets/logo-linear.png"), + keycheck: false, + }, + { + title: "Add a task to WIP", + desc: "Create a new task in WIP", + type: "action", + action: "url", + url: "https://todo.new", + emoji: false, + favIconUrl: chrome.runtime.getURL("assets/logo-wip.png"), + keycheck: false, + }, + { + title: "Create an event", + desc: "Add an event to Google Calendar", + type: "action", + action: "url", + url: "https://cal.new", + emoji: false, + favIconUrl: chrome.runtime.getURL("assets/logo-calendar.png"), + keycheck: false, + }, + { + title: "Add a note", + desc: "Add a note to Google Keep", + type: "action", + action: "url", + emoji: false, + url: "https://note.new", + favIconUrl: chrome.runtime.getURL("assets/logo-keep.png"), + keycheck: false, + }, + { + title: "New meeting", + desc: "Start a Google Meet meeting", + type: "action", + action: "url", + emoji: false, + url: "https://meet.new", + favIconUrl: chrome.runtime.getURL("assets/logo-meet.png"), + keycheck: false, + }, + { + title: "Browsing history", + desc: "Browse through your browsing history", + type: "action", + action: "history", + emoji: true, + emojiChar: "๐Ÿ—‚", + keycheck: true, + keys: ["โŒ˜", "Y"], + }, + { + title: "Incognito mode", + desc: "Open an incognito window", + type: "action", + action: "incognito", + emoji: true, + emojiChar: "๐Ÿ•ต๏ธ", + keycheck: true, + keys: ["โŒ˜", "โ‡ง", "N"], + }, + { + title: "Downloads", + desc: "Browse through your downloads", + type: "action", + action: "downloads", + emoji: true, + emojiChar: "๐Ÿ“ฆ", + keycheck: true, + keys: ["โŒ˜", "โ‡ง", "J"], + }, + { + title: "Extensions", + desc: "Manage your Chrome Extensions", + type: "action", + action: "extensions", + emoji: true, + emojiChar: "๐Ÿงฉ", + keycheck: false, + keys: ["โŒ˜", "D"], + }, + { + title: "Chrome settings", + desc: "Open the Chrome settings", + type: "action", + action: "settings", + emoji: true, + emojiChar: "โš™๏ธ", + keycheck: true, + keys: ["โŒ˜", ","], + }, + { + title: "Scroll to bottom", + desc: "Scroll to the bottom of the page", + type: "action", + action: "scroll-bottom", + emoji: true, + emojiChar: "๐Ÿ‘‡", + keycheck: true, + keys: ["โŒ˜", "โ†“"], + }, + { + title: "Scroll to top", + desc: "Scroll to the top of the page", + type: "action", + action: "scroll-top", + emoji: true, + emojiChar: "๐Ÿ‘†", + keycheck: true, + keys: ["โŒ˜", "โ†‘"], + }, + { + title: "Go back", + desc: "Go back in history for the current tab", + type: "action", + action: "go-back", + emoji: true, + emojiChar: "๐Ÿ‘ˆ", + keycheck: true, + keys: ["โŒ˜", "โ†"], + }, + { + title: "Go forward", + desc: "Go forward in history for the current tab", + type: "action", + action: "go-forward", + emoji: true, + emojiChar: "๐Ÿ‘‰", + keycheck: true, + keys: ["โŒ˜", "โ†’"], + }, + { + title: "Duplicate tab", + desc: "Make a copy of the current tab", + type: "action", + action: "duplicate-tab", + emoji: true, + emojiChar: "๐Ÿ“‹", + keycheck: true, + keys: ["โŒฅ", "โ‡ง", "D"], + }, + { + title: "Close tab", + desc: "Close the current tab", + type: "action", + action: "close-tab", + emoji: true, + emojiChar: "๐Ÿ—‘", + keycheck: true, + keys: ["โŒ˜", "W"], + }, + { + title: "Close window", + desc: "Close the current window", + type: "action", + action: "close-window", + emoji: true, + emojiChar: "๐Ÿ’ฅ", + keycheck: true, + keys: ["โŒ˜", "โ‡ง", "W"], + }, + { + title: "Manage browsing data", + desc: "Manage your browsing data", + type: "action", + action: "manage-data", + emoji: true, + emojiChar: "๐Ÿ”ฌ", + keycheck: true, + keys: ["โŒ˜", "โ‡ง", "Delete"], + }, + { + title: "Clear all browsing data", + desc: "Clear all of your browsing data", + type: "action", + action: "remove-all", + emoji: true, + emojiChar: "๐Ÿงน", + keycheck: false, + keys: ["โŒ˜", "D"], + }, + { + title: "Clear browsing history", + desc: "Clear all of your browsing history", + type: "action", + action: "remove-history", + emoji: true, + emojiChar: "๐Ÿ—‚", + keycheck: false, + keys: ["โŒ˜", "D"], + }, + { + title: "Clear cookies", + desc: "Clear all cookies", + type: "action", + action: "remove-cookies", + emoji: true, + emojiChar: "๐Ÿช", + keycheck: false, + keys: ["โŒ˜", "D"], + }, + { + title: "Clear cache", + desc: "Clear the cache", + type: "action", + action: "remove-cache", + emoji: true, + emojiChar: "๐Ÿ—„", + keycheck: false, + keys: ["โŒ˜", "D"], + }, + { + title: "Clear local storage", + desc: "Clear the local storage", + type: "action", + action: "remove-local-storage", + emoji: true, + emojiChar: "๐Ÿ“ฆ", + keycheck: false, + keys: ["โŒ˜", "D"], + }, + { + title: "Clear passwords", + desc: "Clear all saved passwords", + type: "action", + action: "remove-passwords", + emoji: true, + emojiChar: "๐Ÿ”‘", + keycheck: false, + keys: ["โŒ˜", "D"], + }, + ]; + if (!isMac) { + actions.forEach(function (action) { + if (action.action == "reload") { + action.keys = ["F5"]; + } else if (action.action == "fullscreen") { + action.keys = ["F11"]; + } else if (action.action == "downloads") { + action.keys = ["Ctrl", "J"]; + } else if (action.action == "settings") { + action.keycheck = false; + } else if ((action.action = "history")) { + action.keys = ["Ctrl", "H"]; + } else if (action.action == "go-back") { + action.keys = ["Alt", "โ†"]; + } else if (action.action == "go-forward") { + action.keys = ["Alt", "โ†’"]; + } else if (action.action == "scroll-top") { + action.keys = ["Home"]; + } else if (action.action == "scroll-bottom") { + action.keys = ["End"]; + } + actions.keys.forEach(function (key) { + if (key == "โŒ˜") { + key = "Ctrl"; + } else if (key == "โŒฅ") { + key = "Alt"; + } + }); + }); + } + }); } // Open on install chrome.runtime.onInstalled.addListener(function (object) { - chrome.tabs.create({url: "https://alyssax.com/omni/"}); + chrome.tabs.create({ url: "https://alyssax.com/omni/" }); }); // Check when the extension button is clicked chrome.action.onClicked.addListener((tab) => { - chrome.tabs.sendMessage(tab.id, {request: "open-omni"}); + chrome.tabs.sendMessage(tab.id, { request: "open-omni" }); }); // Listen for the open omni shortcut chrome.commands.onCommand.addListener((command) => { - if (command = "open-omni") { - chrome.tabs.query({active: true, currentWindow: true}, function(tabs){ - chrome.tabs.sendMessage(tabs[0].id, {request: "open-omni"}); - }); - } + if ((command = "open-omni")) { + chrome.tabs.query({ active: true, currentWindow: true }, function (tabs) { + chrome.tabs.sendMessage(tabs[0].id, { request: "open-omni" }); + }); + } }); // Check if tabs have changed and actions need to be fetched again -chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) { - clearActions(); - getTabs(); - getBookmarks(); +chrome.tabs.onUpdated.addListener(function (tabId, changeInfo, tab) { + clearActions(); + getTabs(); + getBookmarks(); }); -chrome.tabs.onCreated.addListener(function(tabId, changeInfo, tab) { - clearActions(); - getTabs(); - getBookmarks(); +chrome.tabs.onCreated.addListener(function (tabId, changeInfo, tab) { + clearActions(); + getTabs(); + getBookmarks(); }); -chrome.tabs.onRemoved.addListener(function(tabId, changeInfo, tab) { - clearActions(); - getTabs(); - getBookmarks(); +chrome.tabs.onRemoved.addListener(function (tabId, changeInfo, tab) { + clearActions(); + getTabs(); + getBookmarks(); }); // Get the current tab @@ -177,191 +716,215 @@ async function getCurrentTab() { // Get tabs to populate in the actions function getTabs() { - chrome.tabs.query({}, function(tabs) { - tabs.forEach(function(tab){ + chrome.tabs.query({}, function (tabs) { + tabs.forEach(function (tab) { tab.desc = "Chrome tab"; tab.keycheck = false; - tab.action = "switch-tab"; - tab.type = "tab"; - }) - actions = tabs.concat(actions); + tab.action = "switch-tab"; + tab.type = "tab"; + }); + actions = tabs.concat(actions); }); } // Get bookmarks to populate in the actions function getBookmarks() { - function process_bookmark(bookmarks) { - for (var i = 0; i < bookmarks.length; i++) { - var bookmark = bookmarks[i]; - if (bookmark.url) { - actions.push({title:bookmark.title, desc:"Bookmark", id:bookmark.id, type:"bookmark", action:"bookmark", emoji:true, emojiChar:"โญ๏ธ", keycheck:false}) - } - if (bookmark.children) { - process_bookmark(bookmark.children); - } - } - } - chrome.bookmarks.getTree(process_bookmark); + function process_bookmark(bookmarks) { + for (var i = 0; i < bookmarks.length; i++) { + var bookmark = bookmarks[i]; + if (bookmark.url) { + actions.push({ + title: bookmark.title, + desc: "Bookmark", + id: bookmark.id, + type: "bookmark", + action: "bookmark", + emoji: true, + emojiChar: "โญ๏ธ", + keycheck: false, + }); + } + if (bookmark.children) { + process_bookmark(bookmark.children); + } + } + } + chrome.bookmarks.getTree(process_bookmark); } // Lots of different actions function switchTab(tab) { - chrome.tabs.highlight({ - tabs: tab.index - }) + chrome.tabs.highlight({ + tabs: tab.index, + }); } function goBack(tab) { - chrome.tabs.goBack({ - tabs: tab.index - }) + chrome.tabs.goBack({ + tabs: tab.index, + }); } -function goForward(tab){ - chrome.tabs.goForward({ - tabs: tab.index - }) +function goForward(tab) { + chrome.tabs.goForward({ + tabs: tab.index, + }); } function duplicateTab(tab) { - getCurrentTab().then((response) => { - chrome.tabs.duplicate(response.id); - }) + getCurrentTab().then((response) => { + chrome.tabs.duplicate(response.id); + }); } function createBookmark(tab) { - getCurrentTab().then((response) => { - chrome.bookmarks.create({ - title: response.title, - url: response.url - }); - }) + getCurrentTab().then((response) => { + chrome.bookmarks.create({ + title: response.title, + url: response.url, + }); + }); } function muteTab(mute) { - getCurrentTab().then((response) => { - chrome.tabs.update(response.id, {"muted": mute}) - }); + getCurrentTab().then((response) => { + chrome.tabs.update(response.id, { muted: mute }); + }); } function reloadTab() { - chrome.tabs.reload(); + chrome.tabs.reload(); } function pinTab(pin) { - getCurrentTab().then((response) => { - chrome.tabs.update(response.id, {"pinned": pin}) - }); + getCurrentTab().then((response) => { + chrome.tabs.update(response.id, { pinned: pin }); + }); } function clearAllData() { - chrome.browsingData.remove({ - "since": (new Date()).getTime() - }, { - "appcache": true, - "cache": true, - "cacheStorage": true, - "cookies": true, - "downloads": true, - "fileSystems": true, - "formData": true, - "history": true, - "indexedDB": true, - "localStorage": true, - "passwords": true, - "serviceWorkers": true, - "webSQL": true - }); + chrome.browsingData.remove( + { + since: new Date().getTime(), + }, + { + appcache: true, + cache: true, + cacheStorage: true, + cookies: true, + downloads: true, + fileSystems: true, + formData: true, + history: true, + indexedDB: true, + localStorage: true, + passwords: true, + serviceWorkers: true, + webSQL: true, + } + ); } function clearBrowsingData() { - chrome.browsingData.removeHistory({"since": 0}); + chrome.browsingData.removeHistory({ since: 0 }); } function clearCookies() { - chrome.browsingData.removeCookies({"since": 0}); + chrome.browsingData.removeCookies({ since: 0 }); } function clearCache() { - chrome.browsingData.removeCache({"since": 0}); + chrome.browsingData.removeCache({ since: 0 }); } function clearLocalStorage() { - chrome.browsingData.removeLocalStorage({"since": 0}); + chrome.browsingData.removeLocalStorage({ since: 0 }); } function clearPasswords() { - chrome.browsingData.removePasswords({"since": 0}); + chrome.browsingData.removePasswords({ since: 0 }); } function openChromeUrl(url) { - chrome.tabs.create({url: 'chrome://'+url+'/'}); + chrome.tabs.create({ url: "chrome://" + url + "/" }); } function openIncognito() { - chrome.windows.create({"incognito": true}); + chrome.windows.create({ incognito: true }); } function closeWindow(id) { - chrome.windows.remove(id); + chrome.windows.remove(id); } function closeTab(tab) { - chrome.tabs.remove(tab.id); + chrome.tabs.remove(tab.id); } function removeBookmark(bookmark) { - chrome.bookmarks.remove(bookmark.id); + chrome.bookmarks.remove(bookmark.id); } // Recieve messages from any tab chrome.runtime.onMessage.addListener((message, sender, sendResponse) => { if (message.request == "get-actions") { - clearActions(); - getTabs(); - getBookmarks(); - sendResponse({actions:actions}); + clearActions(); + getTabs(); + getBookmarks(); + sendResponse({ actions: actions }); } else if (message.request == "switch-tab") { - switchTab(message.tab); - } else if (message.request == "go-back") { - goBack(message.tab); - } else if (message.request == "go-forward") { - goForward(message.tab); - } else if (message.request == "duplicate-tab") { - duplicateTab(message.tab); - } else if (message.request == "create-bookmark") { - createBookmark(message.tab); - } else if (message.request == "mute") { - muteTab(true); - } else if (message.request == "unmute") { - muteTab(false); - } else if (message.request == "reload") { - reloadTab(); - } else if (message.request == "pin") { - pinTab(true); - } else if (message.request == "unpin") { - pinTab(false); - } else if (message.request == "remove-all") { - clearAllData(); - } else if (message.request == "remove-history") { - clearBrowsingData(); - } else if (message.request == "remove-cookies") { - clearCookies(); - } else if (message.request == "remove-cache") { - clearCache(); - } else if (message.request == "remove-local-storage") { - clearLocalStorage(); - } else if (message.request == "remove-passwords") { - clearPasswords(); - } else if (message.request == "history" || message.request == "downloads" || message.request == "extensions" || message.request == "settings" || message.request == "extensions/shortcuts") { - openChromeUrl(message.request); - } else if (message.request == "manage-data") { - openChromeUrl("settings/clearBrowserData"); - } else if (message.request == "incognito") { - openIncognito(); - } else if (message.request == "close-window") { - closeWindow(sender.tab.windowId); - } else if (message.request == "search-history") { - chrome.history.search({text:message.query, maxResults:1000, startTime:31536000000*5}).then(function(data){ - data.forEach(function(action){ - action.type = "history"; - action.emoji = true; - action.emojiChar = "๐Ÿ›"; - action.action = "history"; - action.desc = "Browsing history"; - }); - sendResponse({history:data}); - }) - return true; - } else if (message.request == "remove") { - if (message.type == "bookmark") { - removeBookmark(message.action); - } else { - closeTab(message.action); - } - } + switchTab(message.tab); + } else if (message.request == "go-back") { + goBack(message.tab); + } else if (message.request == "go-forward") { + goForward(message.tab); + } else if (message.request == "duplicate-tab") { + duplicateTab(message.tab); + } else if (message.request == "create-bookmark") { + createBookmark(message.tab); + } else if (message.request == "mute") { + muteTab(true); + } else if (message.request == "unmute") { + muteTab(false); + } else if (message.request == "reload") { + reloadTab(); + } else if (message.request == "pin") { + pinTab(true); + } else if (message.request == "unpin") { + pinTab(false); + } else if (message.request == "remove-all") { + clearAllData(); + } else if (message.request == "remove-history") { + clearBrowsingData(); + } else if (message.request == "remove-cookies") { + clearCookies(); + } else if (message.request == "remove-cache") { + clearCache(); + } else if (message.request == "remove-local-storage") { + clearLocalStorage(); + } else if (message.request == "remove-passwords") { + clearPasswords(); + } else if ( + message.request == "history" || + message.request == "downloads" || + message.request == "extensions" || + message.request == "settings" || + message.request == "extensions/shortcuts" + ) { + openChromeUrl(message.request); + } else if (message.request == "manage-data") { + openChromeUrl("settings/clearBrowserData"); + } else if (message.request == "incognito") { + openIncognito(); + } else if (message.request == "close-window") { + closeWindow(sender.tab.windowId); + } else if (message.request == "search-history") { + chrome.history + .search({ + text: message.query, + maxResults: 1000, + startTime: 31536000000 * 5, + }) + .then(function (data) { + data.forEach(function (action) { + action.type = "history"; + action.emoji = true; + action.emojiChar = "๐Ÿ›"; + action.action = "history"; + action.desc = "Browsing history"; + }); + sendResponse({ history: data }); + }); + return true; + } else if (message.request == "remove") { + if (message.type == "bookmark") { + removeBookmark(message.action); + } else { + closeTab(message.action); + } + } }); // Get actions diff --git a/src/content.css b/src/content.css index 400bf4f..d3aae3a 100644 --- a/src/content.css +++ b/src/content.css @@ -1,67 +1,67 @@ @media (prefers-color-scheme: dark) { - :root { - --background: #1E2128; - --border: #35373E; - --text: #F1F1F1; - --text-2: #C5C6CA; - --text-3: #A5A5AE; - --select: #17191E; - --accent: #6068D2; - --accent-hover: #484FAC; - --shortcut: #383E4A; - --placeholder: #63687B; - --background-2: #292D36; - } + :root { + --background: #1e2128; + --border: #35373e; + --text: #f1f1f1; + --text-2: #c5c6ca; + --text-3: #a5a5ae; + --select: #17191e; + --accent: #6068d2; + --accent-hover: #484fac; + --shortcut: #383e4a; + --placeholder: #63687b; + --background-2: #292d36; + } } @media (prefers-color-scheme: light) { - :root { - --background: #FAFCFF; - --border: #F2F3FB; - --text: #2B2D41; - --text-2: #2B2D41; - --text-3: #929DB2; - --select: #EFF3F9; - --accent: #6068D2; - --accent-hover: #484FAC; - --shortcut: #DADEEA; - --placeholder: #BAC2D1; - --background-2: #292D36; - } + :root { + --background: #fafcff; + --border: #f2f3fb; + --text: #2b2d41; + --text-2: #2b2d41; + --text-3: #929db2; + --select: #eff3f9; + --accent: #6068d2; + --accent-hover: #484fac; + --shortcut: #dadeea; + --placeholder: #bac2d1; + --background-2: #292d36; + } } @font-face { - font-family: 'Inter'; - font-style: normal; - font-weight: 400; - src: url('chrome-extension://__MSG_@@extension_id__/assets/Inter-Regular.ttf'); + font-family: "Inter"; + font-style: normal; + font-weight: 400; + src: url("chrome-extension://__MSG_@@extension_id__/assets/Inter-Regular.ttf"); } @font-face { - font-family: 'Inter'; - font-style: normal; - font-weight: 500; - src: url('chrome-extension://__MSG_@@extension_id__/assets/Inter-Medium.ttf'); + font-family: "Inter"; + font-style: normal; + font-weight: 500; + src: url("chrome-extension://__MSG_@@extension_id__/assets/Inter-Medium.ttf"); } @font-face { - font-family: 'Inter'; - font-style: normal; - font-weight: 600; - src: url('chrome-extension://__MSG_@@extension_id__/assets/Inter-SemiBold.ttf'); + font-family: "Inter"; + font-style: normal; + font-weight: 600; + src: url("chrome-extension://__MSG_@@extension_id__/assets/Inter-SemiBold.ttf"); } @font-face { - font-family: 'Inter'; - font-style: normal; - font-weight: 700; - src: url('chrome-extension://__MSG_@@extension_id__/assets/Inter-Bold.ttf'); + font-family: "Inter"; + font-style: normal; + font-weight: 700; + src: url("chrome-extension://__MSG_@@extension_id__/assets/Inter-Bold.ttf"); } .omni-extension .omni-item-details * { - line-height: normal; + line-height: normal; } .omni-extension { - font-family: Inter!important; - z-index: 99999999999; + font-family: Inter !important; + z-index: 99999999999; } .omni-extension #omni-wrap { - position: fixed; + position: fixed; width: 700px; border: 1px solid transparent; border-radius: 5px; @@ -72,7 +72,7 @@ left: 0px; z-index: 9999999999; height: 540px; - transition: all .2s cubic-bezier(.05,.03,.35,1); + transition: all 0.2s cubic-bezier(0.05, 0.03, 0.35, 1); } .omni-extension #omni { position: absolute; @@ -84,16 +84,16 @@ left: 0px; z-index: 9999999998; height: fit-content; - transition: all .2s cubic-bezier(.05,.03,.35,1); - display: block; + transition: all 0.2s cubic-bezier(0.05, 0.03, 0.35, 1); + display: block; } .omni-closing #omni { - transform: scale(.9); + transform: scale(0.9); opacity: 0; - display: none!important; + display: none !important; } .omni-closing { - pointer-events: none; + pointer-events: none; } .omni-extension #omni-overlay { height: 100%; @@ -103,11 +103,11 @@ left: 0px; background-color: #000; z-index: 9999; - opacity: .6; - transition: all .1s cubic-bezier(.05,.03,.35,1); + opacity: 0.6; + transition: all 0.1s cubic-bezier(0.05, 0.03, 0.35, 1); } .omni-closing #omni-overlay { - opacity: 0!important; + opacity: 0 !important; } .omni-extension #omni-head { height: 50px; @@ -134,7 +134,7 @@ } .omni-extension .omni-shortcut { display: inline-block; - font-size: 13px; + font-size: 13px; border-radius: 5px; background-color: var(--shortcut); color: var(--text); @@ -158,7 +158,7 @@ display: block; color: var(--text); caret-color: var(--accent); - font-family: Inter!important; + font-family: Inter !important; margin-top: 5px; margin-bottom: 5px; box-sizing: border-box; @@ -214,7 +214,7 @@ margin-left: 3px; } .omni-extension .omni-item-active .omni-select { - display: block!important; + display: block !important; } .omni-extension .omni-icon { width: 20px; @@ -225,14 +225,14 @@ margin-top: -12px; } .omni-extension .omni-emoji-action { - display: inline-block; - vertical-align: middle; - margin-top: -12px; - width: 20px; - height: 20px; - text-align: center; - margin-left: 5%; - font-size: 18px; + display: inline-block; + vertical-align: middle; + margin-top: -12px; + width: 20px; + height: 20px; + text-align: center; + margin-left: 5%; + font-size: 18px; } .omni-extension .omni-item-details { display: inline-block; @@ -250,12 +250,12 @@ width: 450px; } .omni-extension .omni-item-active .omni-item-name { - color: var(--text)!important; + color: var(--text) !important; } .omni-extension .omni-item-desc { color: var(--text-3); margin-top: 5px; - font-size: 14px; + font-size: 14px; } .omni-extension #omni-footer { height: 45px; @@ -289,7 +289,7 @@ margin-right: 5%; } .omni-extension .omni-item-active .omni-keys { - display: none!important; + display: none !important; } .omni-extension .omni-keys span { margin-left: 3px; @@ -300,4 +300,4 @@ position: absolute; top: 0px; left: 0px; -} \ No newline at end of file +} diff --git a/src/content.html b/src/content.html index 4b27cec..7812035 100644 --- a/src/content.html +++ b/src/content.html @@ -1,21 +1,22 @@ - - +
    -
    -
    - -
    -
    - -
    -
    +
    +
    + +
    + +
    +
    diff --git a/src/content.js b/src/content.js index 4c7d55b..1751c03 100644 --- a/src/content.js +++ b/src/content.js @@ -1,268 +1,425 @@ -$(document).ready(function(){ - var isOpen = false; +$(document).ready(function () { + var isOpen = false; var actions = []; - // Append the omni into the current page - $.get(chrome.runtime.getURL('/content.html'), function(data) { - $(data).appendTo('body'); + // Append the omni into the current page + $.get(chrome.runtime.getURL("/content.html"), function (data) { + $(data).appendTo("body"); }); - // Request actions from the background - chrome.runtime.sendMessage({request:"get-actions"}, function(response) { + // Request actions from the background + chrome.runtime.sendMessage({ request: "get-actions" }, function (response) { actions = response.actions; - populateOmni(); + populateOmni(); }); - // Add actions to the omni - function populateOmni() { - $("#omni-extension #list").html(""); - actions.forEach(function(action, index){ - var keys = ""; - if (action.keycheck) { - keys = "
    "; - action.keys.forEach(function(key){ - keys += ""+key+""; - }); - keys += "
    "; - } - var img = "favicon"; - if (action.emoji) { - img = ""+action.emojiChar+"" - } - if (index != 0) { - $("#omni-extension #omni-list").append("
    "+img+"
    "+action.title+"
    "+action.desc+"
    "+keys+"
    Select โŽ
    "); - } else { - $("#omni-extension #omni-list").append("
    "+img+"
    "+action.title+"
    "+action.desc+"
    "+keys+"
    Select โŽ
    "); - } - }) - $(".omni-extension #omni-results").html(actions.length+" results"); - } - - // Add actions to the omni - function populateOmniHistory(actions) { - $("#omni-extension #omni-list").html(""); - actions.forEach(function(action, index){ - var keys = ""; - if (action.keycheck) { - keys = "
    "; - action.keys.forEach(function(key){ - keys += ""+key+""; - }); - keys += "
    "; - } - var img = "favicon"; - if (action.emoji) { - img = ""+action.emojiChar+"" - } - if (index != 0) { - $("#omni-extension #omni-list").append("
    "+img+"
    "+action.title+"
    "+action.desc+"
    "+keys+"
    Select โŽ
    "); - } else { - $("#omni-extension #omni-list").append("
    "+img+"
    "+action.title+"
    "+action.desc+"
    "+keys+"
    Select โŽ
    "); - } - }) - $(".omni-extension #omni-results").html(actions.length+" results"); - } - - // Open the omni - function openOmni() { - chrome.runtime.sendMessage({request:"get-actions"}, function(response) { - isOpen = true; - actions = response.actions; - populateOmni(); - $("#omni-extension input").val(""); - $("html, body").stop(); - $("#omni-extension").removeClass("omni-closing"); - window.setTimeout(function(){ - $("#omni-extension input").focus(); - }, 100); - }); + // Add actions to the omni + function populateOmni() { + $("#omni-extension #list").html(""); + actions.forEach(function (action, index) { + var keys = ""; + if (action.keycheck) { + keys = "
    "; + action.keys.forEach(function (key) { + keys += "" + key + ""; + }); + keys += "
    "; + } + var img = + "favicon"; + if (action.emoji) { + img = "" + action.emojiChar + ""; + } + if (index != 0) { + $("#omni-extension #omni-list").append( + "
    " + + img + + "
    " + + action.title + + "
    " + + action.desc + + "
    " + + keys + + "
    Select โŽ
    " + ); + } else { + $("#omni-extension #omni-list").append( + "
    " + + img + + "
    " + + action.title + + "
    " + + action.desc + + "
    " + + keys + + "
    Select โŽ
    " + ); + } + }); + $(".omni-extension #omni-results").html(actions.length + " results"); } - // Close the omni + // Add actions to the omni + function populateOmniHistory(actions) { + $("#omni-extension #omni-list").html(""); + actions.forEach(function (action, index) { + var keys = ""; + if (action.keycheck) { + keys = "
    "; + action.keys.forEach(function (key) { + keys += "" + key + ""; + }); + keys += "
    "; + } + var img = + "favicon"; + if (action.emoji) { + img = "" + action.emojiChar + ""; + } + if (index != 0) { + $("#omni-extension #omni-list").append( + "
    " + + img + + "
    " + + action.title + + "
    " + + action.desc + + "
    " + + keys + + "
    Select โŽ
    " + ); + } else { + $("#omni-extension #omni-list").append( + "
    " + + img + + "
    " + + action.title + + "
    " + + action.desc + + "
    " + + keys + + "
    Select โŽ
    " + ); + } + }); + $(".omni-extension #omni-results").html(actions.length + " results"); + } + + // Open the omni + function openOmni() { + chrome.runtime.sendMessage({ request: "get-actions" }, function (response) { + isOpen = true; + actions = response.actions; + populateOmni(); + $("#omni-extension input").val(""); + $("html, body").stop(); + $("#omni-extension").removeClass("omni-closing"); + window.setTimeout(function () { + $("#omni-extension input").focus(); + }, 100); + }); + } + + // Close the omni function closeOmni() { - isOpen = false; + isOpen = false; $("#omni-extension").addClass("omni-closing"); } - // Hover over an action in the omni + // Hover over an action in the omni function hoverItem() { $(".omni-item-active").removeClass("omni-item-active"); $(this).addClass("omni-item-active"); } - // Search for an action in the omni + // Search for an action in the omni function search() { var value = $(this).val().toLowerCase(); - if (value.startsWith("/history")) { - var tempvalue = value.replace("/tabs ", ""); - var query = ""; - if (tempvalue != "/history") { - query = value.replace("/history ", ""); - } - chrome.runtime.sendMessage({request:"search-history", query:query}, function(response){ - populateOmniHistory(response.history); - }); - } else { - populateOmni(); - $("#omni-extension #omni-list .omni-item").filter(function(){ - if (value.startsWith("/tabs")) { - var tempvalue = value.replace("/tabs ", ""); - if (tempvalue == "/tabs") { - $(this).toggle($(this).attr("data-type") == "tab"); - } else { - tempvalue = value.replace("/tabs ", ""); - $(this).toggle(($(this).find(".omni-item-name").text().toLowerCase().indexOf(tempvalue) > -1 || $(this).find(".omni-item-desc").text().toLowerCase().indexOf(tempvalue) > -1) && $(this).attr("data-type") == "tab"); - } - } else if (value.startsWith("/bookmarks")) { - var tempvalue = value.replace("/bookmarks ", ""); - if (tempvalue == "/bookmarks") { - $(this).toggle($(this).attr("data-type") == "bookmark"); - } else { - tempvalue = value.replace("/bookmarks ", ""); - $(this).toggle(($(this).find(".omni-item-name").text().toLowerCase().indexOf(tempvalue) > -1 || $(this).find(".omni-item-desc").text().toLowerCase().indexOf(tempvalue) > -1) && $(this).attr("data-type") == "bookmark"); - } - } else if (value.startsWith("/remove")) { - var tempvalue = value.replace("/remove ", ""); - if (tempvalue == "/remove") { - $(this).toggle($(this).attr("data-type") == "bookmark" || $(this).attr("data-type") == "tab"); - } else { - tempvalue = value.replace("/remove ", ""); - $(this).toggle(($(this).find(".omni-item-name").text().toLowerCase().indexOf(tempvalue) > -1 || $(this).find(".omni-item-desc").text().toLowerCase().indexOf(tempvalue) > -1) && ($(this).attr("data-type") == "bookmark" || $(this).attr("data-type") == "tab")); - } - } else if (value.startsWith("/actions")) { - var tempvalue = value.replace("/actions ", ""); - if (tempvalue == "/actions") { - $(this).toggle($(this).attr("data-type") == "action"); - } else { - tempvalue = value.replace("/actions ", ""); - $(this).toggle(($(this).find(".omni-item-name").text().toLowerCase().indexOf(tempvalue) > -1 || $(this).find(".omni-item-desc").text().toLowerCase().indexOf(tempvalue) > -1) && $(this).attr("data-type") == "action"); - } - } else { - $(this).toggle($(this).find(".omni-item-name").text().toLowerCase().indexOf(value) > -1 || $(this).find(".omni-item-desc").text().toLowerCase().indexOf(value) > -1); - } - }); - } - $(".omni-extension #omni-results").html($("#omni-extension #omni-list .omni-item:visible").length+" results"); + if (value.startsWith("/history")) { + var tempvalue = value.replace("/tabs ", ""); + var query = ""; + if (tempvalue != "/history") { + query = value.replace("/history ", ""); + } + chrome.runtime.sendMessage( + { request: "search-history", query: query }, + function (response) { + populateOmniHistory(response.history); + } + ); + } else { + populateOmni(); + $("#omni-extension #omni-list .omni-item").filter(function () { + if (value.startsWith("/tabs")) { + var tempvalue = value.replace("/tabs ", ""); + if (tempvalue == "/tabs") { + $(this).toggle($(this).attr("data-type") == "tab"); + } else { + tempvalue = value.replace("/tabs ", ""); + $(this).toggle( + ($(this) + .find(".omni-item-name") + .text() + .toLowerCase() + .indexOf(tempvalue) > -1 || + $(this) + .find(".omni-item-desc") + .text() + .toLowerCase() + .indexOf(tempvalue) > -1) && + $(this).attr("data-type") == "tab" + ); + } + } else if (value.startsWith("/bookmarks")) { + var tempvalue = value.replace("/bookmarks ", ""); + if (tempvalue == "/bookmarks") { + $(this).toggle($(this).attr("data-type") == "bookmark"); + } else { + tempvalue = value.replace("/bookmarks ", ""); + $(this).toggle( + ($(this) + .find(".omni-item-name") + .text() + .toLowerCase() + .indexOf(tempvalue) > -1 || + $(this) + .find(".omni-item-desc") + .text() + .toLowerCase() + .indexOf(tempvalue) > -1) && + $(this).attr("data-type") == "bookmark" + ); + } + } else if (value.startsWith("/remove")) { + var tempvalue = value.replace("/remove ", ""); + if (tempvalue == "/remove") { + $(this).toggle( + $(this).attr("data-type") == "bookmark" || + $(this).attr("data-type") == "tab" + ); + } else { + tempvalue = value.replace("/remove ", ""); + $(this).toggle( + ($(this) + .find(".omni-item-name") + .text() + .toLowerCase() + .indexOf(tempvalue) > -1 || + $(this) + .find(".omni-item-desc") + .text() + .toLowerCase() + .indexOf(tempvalue) > -1) && + ($(this).attr("data-type") == "bookmark" || + $(this).attr("data-type") == "tab") + ); + } + } else if (value.startsWith("/actions")) { + var tempvalue = value.replace("/actions ", ""); + if (tempvalue == "/actions") { + $(this).toggle($(this).attr("data-type") == "action"); + } else { + tempvalue = value.replace("/actions ", ""); + $(this).toggle( + ($(this) + .find(".omni-item-name") + .text() + .toLowerCase() + .indexOf(tempvalue) > -1 || + $(this) + .find(".omni-item-desc") + .text() + .toLowerCase() + .indexOf(tempvalue) > -1) && + $(this).attr("data-type") == "action" + ); + } + } else { + $(this).toggle( + $(this) + .find(".omni-item-name") + .text() + .toLowerCase() + .indexOf(value) > -1 || + $(this) + .find(".omni-item-desc") + .text() + .toLowerCase() + .indexOf(value) > -1 + ); + } + }); + } + $(".omni-extension #omni-results").html( + $("#omni-extension #omni-list .omni-item:visible").length + " results" + ); } - // Handle actions from the omni - function handleAction() { - var action = actions.find(x => x.title == $(".omni-item-active .omni-item-name").text()); - closeOmni(); - if ($(".omni-extension input").val().toLowerCase().startsWith("/remove")) { - chrome.runtime.sendMessage({request:"remove", type:action.type, action:action}); - } else if ($(".omni-extension input").val().toLowerCase().startsWith("/history")) { - window.open($(".item-active").attr("data-url"), "_self"); - } else { - chrome.runtime.sendMessage({request:action.action, tab:action}); - if (action.action == "bookmark") { - window.open(action.url, "_self"); - } else if (action.action == "scroll-bottom") { - window.scrollTo(0,document.body.scrollHeight); - } else if (action.action == "scroll-top") { - window.scrollTo(0,0); - } else if (action.action == "close-tab") { - window.close(); - } else if (action.action == "navigation") { - window.open(action.url, "_self"); - } else if (action.action == "fullscreen") { - var elem = document.documentElement; - elem.requestFullscreen(); - } else if (action.action == "new-tab") { - window.open(""); - } else if (action.action == "email") { - window.open("mailto:"); - } else if (action.action == "url") { - window.open(action.url, "_self"); - } - } + // Handle actions from the omni + function handleAction() { + var action = actions.find( + (x) => x.title == $(".omni-item-active .omni-item-name").text() + ); + closeOmni(); + if ($(".omni-extension input").val().toLowerCase().startsWith("/remove")) { + chrome.runtime.sendMessage({ + request: "remove", + type: action.type, + action: action, + }); + } else if ( + $(".omni-extension input").val().toLowerCase().startsWith("/history") + ) { + window.open($(".item-active").attr("data-url"), "_self"); + } else { + chrome.runtime.sendMessage({ request: action.action, tab: action }); + if (action.action == "bookmark") { + window.open(action.url, "_self"); + } else if (action.action == "scroll-bottom") { + window.scrollTo(0, document.body.scrollHeight); + } else if (action.action == "scroll-top") { + window.scrollTo(0, 0); + } else if (action.action == "close-tab") { + window.close(); + } else if (action.action == "navigation") { + window.open(action.url, "_self"); + } else if (action.action == "fullscreen") { + var elem = document.documentElement; + elem.requestFullscreen(); + } else if (action.action == "new-tab") { + window.open(""); + } else if (action.action == "email") { + window.open("mailto:"); + } else if (action.action == "url") { + window.open(action.url, "_self"); + } + } - // Fetch actions again - chrome.runtime.sendMessage({request:"get-actions"}, function(response) { - actions = response.actions; - populateOmni(); - }); - } + // Fetch actions again + chrome.runtime.sendMessage({ request: "get-actions" }, function (response) { + actions = response.actions; + populateOmni(); + }); + } - // Customize the shortcut to open the Omni box - function openShortcuts() { - chrome.runtime.sendMessage({request:"extensions/shortcuts"}); - } + // Customize the shortcut to open the Omni box + function openShortcuts() { + chrome.runtime.sendMessage({ request: "extensions/shortcuts" }); + } - - // Check which keys are down - var down = []; - $(document).keydown(function(e) { - down[e.keyCode] = true; - }).keyup(function(e) { - if (down[18] && down[16] && down[80]) { - if (actions.find(x => x.action == "pin") != undefined) { - chrome.runtime.sendMessage({request:"pin-tab"}); - } else { - chrome.runtime.sendMessage({request:"unpin-tab"}); - } - chrome.runtime.sendMessage({request:"get-actions"}, function(response) { - actions = response.actions; - populateOmni(); - }); - } else if (down[18] && down[16] && down[77]) { - if (actions.find(x => x.action == "mute") != undefined) { - chrome.runtime.sendMessage({request:"mute-tab"}); - } else { - chrome.runtime.sendMessage({request:"unmute-tab"}); - } - chrome.runtime.sendMessage({request:"get-actions"}, function(response) { - actions = response.actions; - populateOmni(); - }); - } else if (down[18] && down[16] && down[67]) { - window.open("mailto:"); - } - - if (down[38]) { - // Up key - if ($(".omni-item-active").prevAll("div").not(":hidden").first().length) { - var previous = $(".omni-item-active").prevAll("div").not(":hidden").first(); - $(".omni-item-active").removeClass("item-active"); - previous.addClass("omni-item-active"); - previous[0].scrollIntoView({block:"nearest", inline:"nearest"}); + // Check which keys are down + var down = []; + $(document) + .keydown(function (e) { + down[e.keyCode] = true; + }) + .keyup(function (e) { + if (down[18] && down[16] && down[80]) { + if (actions.find((x) => x.action == "pin") != undefined) { + chrome.runtime.sendMessage({ request: "pin-tab" }); + } else { + chrome.runtime.sendMessage({ request: "unpin-tab" }); + } + chrome.runtime.sendMessage( + { request: "get-actions" }, + function (response) { + actions = response.actions; + populateOmni(); + } + ); + } else if (down[18] && down[16] && down[77]) { + if (actions.find((x) => x.action == "mute") != undefined) { + chrome.runtime.sendMessage({ request: "mute-tab" }); + } else { + chrome.runtime.sendMessage({ request: "unmute-tab" }); + } + chrome.runtime.sendMessage( + { request: "get-actions" }, + function (response) { + actions = response.actions; + populateOmni(); + } + ); + } else if (down[18] && down[16] && down[67]) { + window.open("mailto:"); } - } else if (down[40]) { - // Down key - if ($(".omni-item-active").nextAll("div").not(":hidden").first().length) { - var next = $(".omni-item-active").nextAll("div").not(":hidden").first(); - $(".omni-item-active").removeClass("omni-item-active"); - next.addClass("omni-item-active"); - next[0].scrollIntoView({block:"nearest", inline:"nearest"}); + if (down[38]) { + // Up key + if ( + $(".omni-item-active").prevAll("div").not(":hidden").first().length + ) { + var previous = $(".omni-item-active") + .prevAll("div") + .not(":hidden") + .first(); + $(".omni-item-active").removeClass("item-active"); + previous.addClass("omni-item-active"); + previous[0].scrollIntoView({ block: "nearest", inline: "nearest" }); + } + } else if (down[40]) { + // Down key + if ( + $(".omni-item-active").nextAll("div").not(":hidden").first().length + ) { + var next = $(".omni-item-active") + .nextAll("div") + .not(":hidden") + .first(); + $(".omni-item-active").removeClass("omni-item-active"); + next.addClass("omni-item-active"); + next[0].scrollIntoView({ block: "nearest", inline: "nearest" }); + } + } else if (down[27] && isOpen) { + // Esc key + closeOmni(); + } else if (down[13] && isOpen) { + // Enter key + handleAction(); } - } else if (down[27] && isOpen) { - // Esc key - closeOmni(); - } else if (down[13] && isOpen) { - // Enter key - handleAction(); - } - down = []; - }); - - // Recieve messages from background - chrome.runtime.onMessage.addListener((message, sender, sendResponse) => { - if (message.request == "open-omni") { - if (isOpen) { - closeOmni(); - } else { - openOmni(); - } - } - }); + down = []; + }); + // Recieve messages from background + chrome.runtime.onMessage.addListener((message, sender, sendResponse) => { + if (message.request == "open-omni") { + if (isOpen) { + closeOmni(); + } else { + openOmni(); + } + } + }); // Events - $(document).on("click", "#open-page-omni-extension-thing", openShortcuts); - $(document).on("mouseover", ".omni-extension .omni-item:not(.omni-item-active)", hoverItem); + $(document).on("click", "#open-page-omni-extension-thing", openShortcuts); + $(document).on( + "mouseover", + ".omni-extension .omni-item:not(.omni-item-active)", + hoverItem + ); $(document).on("input", ".omni-extension input", search); - $(document).on("click", ".omni-item-active", handleAction); - $(document).on("click", ".omni-extension #omni-overlay", closeOmni); + $(document).on("click", ".omni-item-active", handleAction); + $(document).on("click", ".omni-extension #omni-overlay", closeOmni); }); diff --git a/src/jquery.js b/src/jquery.js index c4c6022..f840c67 100644 --- a/src/jquery.js +++ b/src/jquery.js @@ -1,2 +1,5574 @@ /*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0+~]|" + M + ")" + M + "*"), + U = new RegExp(M + "|>"), + X = new RegExp(F), + V = new RegExp("^" + I + "$"), + G = { + ID: new RegExp("^#(" + I + ")"), + CLASS: new RegExp("^\\.(" + I + ")"), + TAG: new RegExp("^(" + I + "|[*])"), + ATTR: new RegExp("^" + W), + PSEUDO: new RegExp("^" + F), + CHILD: new RegExp( + "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + + M + + "*(even|odd|(([+-]|)(\\d*)n|)" + + M + + "*(?:([+-]|)" + + M + + "*(\\d+)|))" + + M + + "*\\)|)", + "i" + ), + bool: new RegExp("^(?:" + R + ")$", "i"), + needsContext: new RegExp( + "^" + + M + + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + M + + "*((?:-\\d)?\\d*)" + + M + + "*\\)|)(?=[^-]|$)", + "i" + ), + }, + Y = /HTML$/i, + Q = /^(?:input|select|textarea|button)$/i, + J = /^h\d$/i, + K = /^[^{]+\{\s*\[native \w/, + Z = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + ee = /[+~]/, + te = new RegExp("\\\\[\\da-fA-F]{1,6}" + M + "?|\\\\([^\\r\\n\\f])", "g"), + ne = function (e, t) { + var n = "0x" + e.slice(1) - 65536; + return ( + t || + (n < 0 + ? String.fromCharCode(n + 65536) + : String.fromCharCode((n >> 10) | 55296, (1023 & n) | 56320)) + ); + }, + re = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, + ie = function (e, t) { + return t + ? "\0" === e + ? "\ufffd" + : e.slice(0, -1) + + "\\" + + e.charCodeAt(e.length - 1).toString(16) + + " " + : "\\" + e; + }, + oe = function () { + T(); + }, + ae = be( + function (e) { + return !0 === e.disabled && "fieldset" === e.nodeName.toLowerCase(); + }, + { dir: "parentNode", next: "legend" } + ); + try { + H.apply((t = O.call(p.childNodes)), p.childNodes), + t[p.childNodes.length].nodeType; + } catch (e) { + H = { + apply: t.length + ? function (e, t) { + L.apply(e, O.call(t)); + } + : function (e, t) { + var n = e.length, + r = 0; + while ((e[n++] = t[r++])); + e.length = n - 1; + }, + }; + } + function se(t, e, n, r) { + var i, + o, + a, + s, + u, + l, + c, + f = e && e.ownerDocument, + p = e ? e.nodeType : 9; + if ( + ((n = n || []), + "string" != typeof t || !t || (1 !== p && 9 !== p && 11 !== p)) + ) + return n; + if (!r && (T(e), (e = e || C), E)) { + if (11 !== p && (u = Z.exec(t))) + if ((i = u[1])) { + if (9 === p) { + if (!(a = e.getElementById(i))) return n; + if (a.id === i) return n.push(a), n; + } else if (f && (a = f.getElementById(i)) && y(e, a) && a.id === i) + return n.push(a), n; + } else { + if (u[2]) return H.apply(n, e.getElementsByTagName(t)), n; + if ( + (i = u[3]) && + d.getElementsByClassName && + e.getElementsByClassName + ) + return H.apply(n, e.getElementsByClassName(i)), n; + } + if ( + d.qsa && + !N[t + " "] && + (!v || !v.test(t)) && + (1 !== p || "object" !== e.nodeName.toLowerCase()) + ) { + if (((c = t), (f = e), 1 === p && (U.test(t) || z.test(t)))) { + ((f = (ee.test(t) && ye(e.parentNode)) || e) === e && d.scope) || + ((s = e.getAttribute("id")) + ? (s = s.replace(re, ie)) + : e.setAttribute("id", (s = S))), + (o = (l = h(t)).length); + while (o--) l[o] = (s ? "#" + s : ":scope") + " " + xe(l[o]); + c = l.join(","); + } + try { + return H.apply(n, f.querySelectorAll(c)), n; + } catch (e) { + N(t, !0); + } finally { + s === S && e.removeAttribute("id"); + } + } + } + return g(t.replace($, "$1"), e, n, r); + } + function ue() { + var r = []; + return function e(t, n) { + return ( + r.push(t + " ") > b.cacheLength && delete e[r.shift()], + (e[t + " "] = n) + ); + }; + } + function le(e) { + return (e[S] = !0), e; + } + function ce(e) { + var t = C.createElement("fieldset"); + try { + return !!e(t); + } catch (e) { + return !1; + } finally { + t.parentNode && t.parentNode.removeChild(t), (t = null); + } + } + function fe(e, t) { + var n = e.split("|"), + r = n.length; + while (r--) b.attrHandle[n[r]] = t; + } + function pe(e, t) { + var n = t && e, + r = + n && + 1 === e.nodeType && + 1 === t.nodeType && + e.sourceIndex - t.sourceIndex; + if (r) return r; + if (n) while ((n = n.nextSibling)) if (n === t) return -1; + return e ? 1 : -1; + } + function de(t) { + return function (e) { + return "input" === e.nodeName.toLowerCase() && e.type === t; + }; + } + function he(n) { + return function (e) { + var t = e.nodeName.toLowerCase(); + return ("input" === t || "button" === t) && e.type === n; + }; + } + function ge(t) { + return function (e) { + return "form" in e + ? e.parentNode && !1 === e.disabled + ? "label" in e + ? "label" in e.parentNode + ? e.parentNode.disabled === t + : e.disabled === t + : e.isDisabled === t || (e.isDisabled !== !t && ae(e) === t) + : e.disabled === t + : "label" in e && e.disabled === t; + }; + } + function ve(a) { + return le(function (o) { + return ( + (o = +o), + le(function (e, t) { + var n, + r = a([], e.length, o), + i = r.length; + while (i--) e[(n = r[i])] && (e[n] = !(t[n] = e[n])); + }) + ); + }); + } + function ye(e) { + return e && "undefined" != typeof e.getElementsByTagName && e; + } + for (e in ((d = se.support = {}), + (i = se.isXML = + function (e) { + var t = e && e.namespaceURI, + n = e && (e.ownerDocument || e).documentElement; + return !Y.test(t || (n && n.nodeName) || "HTML"); + }), + (T = se.setDocument = + function (e) { + var t, + n, + r = e ? e.ownerDocument || e : p; + return ( + r != C && + 9 === r.nodeType && + r.documentElement && + ((a = (C = r).documentElement), + (E = !i(C)), + p != C && + (n = C.defaultView) && + n.top !== n && + (n.addEventListener + ? n.addEventListener("unload", oe, !1) + : n.attachEvent && n.attachEvent("onunload", oe)), + (d.scope = ce(function (e) { + return ( + a.appendChild(e).appendChild(C.createElement("div")), + "undefined" != typeof e.querySelectorAll && + !e.querySelectorAll(":scope fieldset div").length + ); + })), + (d.attributes = ce(function (e) { + return (e.className = "i"), !e.getAttribute("className"); + })), + (d.getElementsByTagName = ce(function (e) { + return ( + e.appendChild(C.createComment("")), + !e.getElementsByTagName("*").length + ); + })), + (d.getElementsByClassName = K.test(C.getElementsByClassName)), + (d.getById = ce(function (e) { + return ( + (a.appendChild(e).id = S), + !C.getElementsByName || !C.getElementsByName(S).length + ); + })), + d.getById + ? ((b.filter.ID = function (e) { + var t = e.replace(te, ne); + return function (e) { + return e.getAttribute("id") === t; + }; + }), + (b.find.ID = function (e, t) { + if ("undefined" != typeof t.getElementById && E) { + var n = t.getElementById(e); + return n ? [n] : []; + } + })) + : ((b.filter.ID = function (e) { + var n = e.replace(te, ne); + return function (e) { + var t = + "undefined" != typeof e.getAttributeNode && + e.getAttributeNode("id"); + return t && t.value === n; + }; + }), + (b.find.ID = function (e, t) { + if ("undefined" != typeof t.getElementById && E) { + var n, + r, + i, + o = t.getElementById(e); + if (o) { + if ((n = o.getAttributeNode("id")) && n.value === e) + return [o]; + (i = t.getElementsByName(e)), (r = 0); + while ((o = i[r++])) + if ((n = o.getAttributeNode("id")) && n.value === e) + return [o]; + } + return []; + } + })), + (b.find.TAG = d.getElementsByTagName + ? function (e, t) { + return "undefined" != typeof t.getElementsByTagName + ? t.getElementsByTagName(e) + : d.qsa + ? t.querySelectorAll(e) + : void 0; + } + : function (e, t) { + var n, + r = [], + i = 0, + o = t.getElementsByTagName(e); + if ("*" === e) { + while ((n = o[i++])) 1 === n.nodeType && r.push(n); + return r; + } + return o; + }), + (b.find.CLASS = + d.getElementsByClassName && + function (e, t) { + if ("undefined" != typeof t.getElementsByClassName && E) + return t.getElementsByClassName(e); + }), + (s = []), + (v = []), + (d.qsa = K.test(C.querySelectorAll)) && + (ce(function (e) { + var t; + (a.appendChild(e).innerHTML = + ""), + e.querySelectorAll("[msallowcapture^='']").length && + v.push("[*^$]=" + M + "*(?:''|\"\")"), + e.querySelectorAll("[selected]").length || + v.push("\\[" + M + "*(?:value|" + R + ")"), + e.querySelectorAll("[id~=" + S + "-]").length || v.push("~="), + (t = C.createElement("input")).setAttribute("name", ""), + e.appendChild(t), + e.querySelectorAll("[name='']").length || + v.push("\\[" + M + "*name" + M + "*=" + M + "*(?:''|\"\")"), + e.querySelectorAll(":checked").length || v.push(":checked"), + e.querySelectorAll("a#" + S + "+*").length || + v.push(".#.+[+~]"), + e.querySelectorAll("\\\f"), + v.push("[\\r\\n\\f]"); + }), + ce(function (e) { + e.innerHTML = + ""; + var t = C.createElement("input"); + t.setAttribute("type", "hidden"), + e.appendChild(t).setAttribute("name", "D"), + e.querySelectorAll("[name=d]").length && + v.push("name" + M + "*[*^$|!~]?="), + 2 !== e.querySelectorAll(":enabled").length && + v.push(":enabled", ":disabled"), + (a.appendChild(e).disabled = !0), + 2 !== e.querySelectorAll(":disabled").length && + v.push(":enabled", ":disabled"), + e.querySelectorAll("*,:x"), + v.push(",.*:"); + })), + (d.matchesSelector = K.test( + (c = + a.matches || + a.webkitMatchesSelector || + a.mozMatchesSelector || + a.oMatchesSelector || + a.msMatchesSelector) + )) && + ce(function (e) { + (d.disconnectedMatch = c.call(e, "*")), + c.call(e, "[s!='']:x"), + s.push("!=", F); + }), + (v = v.length && new RegExp(v.join("|"))), + (s = s.length && new RegExp(s.join("|"))), + (t = K.test(a.compareDocumentPosition)), + (y = + t || K.test(a.contains) + ? function (e, t) { + var n = 9 === e.nodeType ? e.documentElement : e, + r = t && t.parentNode; + return ( + e === r || + !( + !r || + 1 !== r.nodeType || + !(n.contains + ? n.contains(r) + : e.compareDocumentPosition && + 16 & e.compareDocumentPosition(r)) + ) + ); + } + : function (e, t) { + if (t) while ((t = t.parentNode)) if (t === e) return !0; + return !1; + }), + (j = t + ? function (e, t) { + if (e === t) return (l = !0), 0; + var n = + !e.compareDocumentPosition - !t.compareDocumentPosition; + return ( + n || + (1 & + (n = + (e.ownerDocument || e) == (t.ownerDocument || t) + ? e.compareDocumentPosition(t) + : 1) || + (!d.sortDetached && t.compareDocumentPosition(e) === n) + ? e == C || (e.ownerDocument == p && y(p, e)) + ? -1 + : t == C || (t.ownerDocument == p && y(p, t)) + ? 1 + : u + ? P(u, e) - P(u, t) + : 0 + : 4 & n + ? -1 + : 1) + ); + } + : function (e, t) { + if (e === t) return (l = !0), 0; + var n, + r = 0, + i = e.parentNode, + o = t.parentNode, + a = [e], + s = [t]; + if (!i || !o) + return e == C + ? -1 + : t == C + ? 1 + : i + ? -1 + : o + ? 1 + : u + ? P(u, e) - P(u, t) + : 0; + if (i === o) return pe(e, t); + n = e; + while ((n = n.parentNode)) a.unshift(n); + n = t; + while ((n = n.parentNode)) s.unshift(n); + while (a[r] === s[r]) r++; + return r + ? pe(a[r], s[r]) + : a[r] == p + ? -1 + : s[r] == p + ? 1 + : 0; + })), + C + ); + }), + (se.matches = function (e, t) { + return se(e, null, null, t); + }), + (se.matchesSelector = function (e, t) { + if ( + (T(e), + d.matchesSelector && + E && + !N[t + " "] && + (!s || !s.test(t)) && + (!v || !v.test(t))) + ) + try { + var n = c.call(e, t); + if ( + n || + d.disconnectedMatch || + (e.document && 11 !== e.document.nodeType) + ) + return n; + } catch (e) { + N(t, !0); + } + return 0 < se(t, C, null, [e]).length; + }), + (se.contains = function (e, t) { + return (e.ownerDocument || e) != C && T(e), y(e, t); + }), + (se.attr = function (e, t) { + (e.ownerDocument || e) != C && T(e); + var n = b.attrHandle[t.toLowerCase()], + r = n && D.call(b.attrHandle, t.toLowerCase()) ? n(e, t, !E) : void 0; + return void 0 !== r + ? r + : d.attributes || !E + ? e.getAttribute(t) + : (r = e.getAttributeNode(t)) && r.specified + ? r.value + : null; + }), + (se.escape = function (e) { + return (e + "").replace(re, ie); + }), + (se.error = function (e) { + throw new Error("Syntax error, unrecognized expression: " + e); + }), + (se.uniqueSort = function (e) { + var t, + n = [], + r = 0, + i = 0; + if ( + ((l = !d.detectDuplicates), + (u = !d.sortStable && e.slice(0)), + e.sort(j), + l) + ) { + while ((t = e[i++])) t === e[i] && (r = n.push(i)); + while (r--) e.splice(n[r], 1); + } + return (u = null), e; + }), + (o = se.getText = + function (e) { + var t, + n = "", + r = 0, + i = e.nodeType; + if (i) { + if (1 === i || 9 === i || 11 === i) { + if ("string" == typeof e.textContent) return e.textContent; + for (e = e.firstChild; e; e = e.nextSibling) n += o(e); + } else if (3 === i || 4 === i) return e.nodeValue; + } else while ((t = e[r++])) n += o(t); + return n; + }), + ((b = se.selectors = + { + cacheLength: 50, + createPseudo: le, + match: G, + attrHandle: {}, + find: {}, + relative: { + ">": { dir: "parentNode", first: !0 }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: !0 }, + "~": { dir: "previousSibling" }, + }, + preFilter: { + ATTR: function (e) { + return ( + (e[1] = e[1].replace(te, ne)), + (e[3] = (e[3] || e[4] || e[5] || "").replace(te, ne)), + "~=" === e[2] && (e[3] = " " + e[3] + " "), + e.slice(0, 4) + ); + }, + CHILD: function (e) { + return ( + (e[1] = e[1].toLowerCase()), + "nth" === e[1].slice(0, 3) + ? (e[3] || se.error(e[0]), + (e[4] = +(e[4] + ? e[5] + (e[6] || 1) + : 2 * ("even" === e[3] || "odd" === e[3]))), + (e[5] = +(e[7] + e[8] || "odd" === e[3]))) + : e[3] && se.error(e[0]), + e + ); + }, + PSEUDO: function (e) { + var t, + n = !e[6] && e[2]; + return G.CHILD.test(e[0]) + ? null + : (e[3] + ? (e[2] = e[4] || e[5] || "") + : n && + X.test(n) && + (t = h(n, !0)) && + (t = n.indexOf(")", n.length - t) - n.length) && + ((e[0] = e[0].slice(0, t)), (e[2] = n.slice(0, t))), + e.slice(0, 3)); + }, + }, + filter: { + TAG: function (e) { + var t = e.replace(te, ne).toLowerCase(); + return "*" === e + ? function () { + return !0; + } + : function (e) { + return e.nodeName && e.nodeName.toLowerCase() === t; + }; + }, + CLASS: function (e) { + var t = m[e + " "]; + return ( + t || + ((t = new RegExp("(^|" + M + ")" + e + "(" + M + "|$)")) && + m(e, function (e) { + return t.test( + ("string" == typeof e.className && e.className) || + ("undefined" != typeof e.getAttribute && + e.getAttribute("class")) || + "" + ); + })) + ); + }, + ATTR: function (n, r, i) { + return function (e) { + var t = se.attr(e, n); + return null == t + ? "!=" === r + : !r || + ((t += ""), + "=" === r + ? t === i + : "!=" === r + ? t !== i + : "^=" === r + ? i && 0 === t.indexOf(i) + : "*=" === r + ? i && -1 < t.indexOf(i) + : "$=" === r + ? i && t.slice(-i.length) === i + : "~=" === r + ? -1 < (" " + t.replace(B, " ") + " ").indexOf(i) + : "|=" === r && + (t === i || t.slice(0, i.length + 1) === i + "-")); + }; + }, + CHILD: function (h, e, t, g, v) { + var y = "nth" !== h.slice(0, 3), + m = "last" !== h.slice(-4), + x = "of-type" === e; + return 1 === g && 0 === v + ? function (e) { + return !!e.parentNode; + } + : function (e, t, n) { + var r, + i, + o, + a, + s, + u, + l = y !== m ? "nextSibling" : "previousSibling", + c = e.parentNode, + f = x && e.nodeName.toLowerCase(), + p = !n && !x, + d = !1; + if (c) { + if (y) { + while (l) { + a = e; + while ((a = a[l])) + if ( + x + ? a.nodeName.toLowerCase() === f + : 1 === a.nodeType + ) + return !1; + u = l = "only" === h && !u && "nextSibling"; + } + return !0; + } + if (((u = [m ? c.firstChild : c.lastChild]), m && p)) { + (d = + (s = + (r = + (i = + (o = (a = c)[S] || (a[S] = {}))[a.uniqueID] || + (o[a.uniqueID] = {}))[h] || [])[0] === k && + r[1]) && r[2]), + (a = s && c.childNodes[s]); + while ((a = (++s && a && a[l]) || (d = s = 0) || u.pop())) + if (1 === a.nodeType && ++d && a === e) { + i[h] = [k, s, d]; + break; + } + } else if ( + (p && + (d = s = + (r = + (i = + (o = (a = e)[S] || (a[S] = {}))[a.uniqueID] || + (o[a.uniqueID] = {}))[h] || [])[0] === k && r[1]), + !1 === d) + ) + while ((a = (++s && a && a[l]) || (d = s = 0) || u.pop())) + if ( + (x + ? a.nodeName.toLowerCase() === f + : 1 === a.nodeType) && + ++d && + (p && + ((i = + (o = a[S] || (a[S] = {}))[a.uniqueID] || + (o[a.uniqueID] = {}))[h] = [k, d]), + a === e) + ) + break; + return (d -= v) === g || (d % g == 0 && 0 <= d / g); + } + }; + }, + PSEUDO: function (e, o) { + var t, + a = + b.pseudos[e] || + b.setFilters[e.toLowerCase()] || + se.error("unsupported pseudo: " + e); + return a[S] + ? a(o) + : 1 < a.length + ? ((t = [e, e, "", o]), + b.setFilters.hasOwnProperty(e.toLowerCase()) + ? le(function (e, t) { + var n, + r = a(e, o), + i = r.length; + while (i--) e[(n = P(e, r[i]))] = !(t[n] = r[i]); + }) + : function (e) { + return a(e, 0, t); + }) + : a; + }, + }, + pseudos: { + not: le(function (e) { + var r = [], + i = [], + s = f(e.replace($, "$1")); + return s[S] + ? le(function (e, t, n, r) { + var i, + o = s(e, null, r, []), + a = e.length; + while (a--) (i = o[a]) && (e[a] = !(t[a] = i)); + }) + : function (e, t, n) { + return (r[0] = e), s(r, null, n, i), (r[0] = null), !i.pop(); + }; + }), + has: le(function (t) { + return function (e) { + return 0 < se(t, e).length; + }; + }), + contains: le(function (t) { + return ( + (t = t.replace(te, ne)), + function (e) { + return -1 < (e.textContent || o(e)).indexOf(t); + } + ); + }), + lang: le(function (n) { + return ( + V.test(n || "") || se.error("unsupported lang: " + n), + (n = n.replace(te, ne).toLowerCase()), + function (e) { + var t; + do { + if ( + (t = E + ? e.lang + : e.getAttribute("xml:lang") || e.getAttribute("lang")) + ) + return ( + (t = t.toLowerCase()) === n || 0 === t.indexOf(n + "-") + ); + } while ((e = e.parentNode) && 1 === e.nodeType); + return !1; + } + ); + }), + target: function (e) { + var t = n.location && n.location.hash; + return t && t.slice(1) === e.id; + }, + root: function (e) { + return e === a; + }, + focus: function (e) { + return ( + e === C.activeElement && + (!C.hasFocus || C.hasFocus()) && + !!(e.type || e.href || ~e.tabIndex) + ); + }, + enabled: ge(!1), + disabled: ge(!0), + checked: function (e) { + var t = e.nodeName.toLowerCase(); + return ( + ("input" === t && !!e.checked) || ("option" === t && !!e.selected) + ); + }, + selected: function (e) { + return ( + e.parentNode && e.parentNode.selectedIndex, !0 === e.selected + ); + }, + empty: function (e) { + for (e = e.firstChild; e; e = e.nextSibling) + if (e.nodeType < 6) return !1; + return !0; + }, + parent: function (e) { + return !b.pseudos.empty(e); + }, + header: function (e) { + return J.test(e.nodeName); + }, + input: function (e) { + return Q.test(e.nodeName); + }, + button: function (e) { + var t = e.nodeName.toLowerCase(); + return ("input" === t && "button" === e.type) || "button" === t; + }, + text: function (e) { + var t; + return ( + "input" === e.nodeName.toLowerCase() && + "text" === e.type && + (null == (t = e.getAttribute("type")) || + "text" === t.toLowerCase()) + ); + }, + first: ve(function () { + return [0]; + }), + last: ve(function (e, t) { + return [t - 1]; + }), + eq: ve(function (e, t, n) { + return [n < 0 ? n + t : n]; + }), + even: ve(function (e, t) { + for (var n = 0; n < t; n += 2) e.push(n); + return e; + }), + odd: ve(function (e, t) { + for (var n = 1; n < t; n += 2) e.push(n); + return e; + }), + lt: ve(function (e, t, n) { + for (var r = n < 0 ? n + t : t < n ? t : n; 0 <= --r; ) e.push(r); + return e; + }), + gt: ve(function (e, t, n) { + for (var r = n < 0 ? n + t : n; ++r < t; ) e.push(r); + return e; + }), + }, + }).pseudos.nth = b.pseudos.eq), + { radio: !0, checkbox: !0, file: !0, password: !0, image: !0 })) + b.pseudos[e] = de(e); + for (e in { submit: !0, reset: !0 }) b.pseudos[e] = he(e); + function me() {} + function xe(e) { + for (var t = 0, n = e.length, r = ""; t < n; t++) r += e[t].value; + return r; + } + function be(s, e, t) { + var u = e.dir, + l = e.next, + c = l || u, + f = t && "parentNode" === c, + p = r++; + return e.first + ? function (e, t, n) { + while ((e = e[u])) if (1 === e.nodeType || f) return s(e, t, n); + return !1; + } + : function (e, t, n) { + var r, + i, + o, + a = [k, p]; + if (n) { + while ((e = e[u])) + if ((1 === e.nodeType || f) && s(e, t, n)) return !0; + } else + while ((e = e[u])) + if (1 === e.nodeType || f) + if ( + ((i = + (o = e[S] || (e[S] = {}))[e.uniqueID] || + (o[e.uniqueID] = {})), + l && l === e.nodeName.toLowerCase()) + ) + e = e[u] || e; + else { + if ((r = i[c]) && r[0] === k && r[1] === p) + return (a[2] = r[2]); + if (((i[c] = a)[2] = s(e, t, n))) return !0; + } + return !1; + }; + } + function we(i) { + return 1 < i.length + ? function (e, t, n) { + var r = i.length; + while (r--) if (!i[r](e, t, n)) return !1; + return !0; + } + : i[0]; + } + function Te(e, t, n, r, i) { + for (var o, a = [], s = 0, u = e.length, l = null != t; s < u; s++) + (o = e[s]) && ((n && !n(o, r, i)) || (a.push(o), l && t.push(s))); + return a; + } + function Ce(d, h, g, v, y, e) { + return ( + v && !v[S] && (v = Ce(v)), + y && !y[S] && (y = Ce(y, e)), + le(function (e, t, n, r) { + var i, + o, + a, + s = [], + u = [], + l = t.length, + c = + e || + (function (e, t, n) { + for (var r = 0, i = t.length; r < i; r++) se(e, t[r], n); + return n; + })(h || "*", n.nodeType ? [n] : n, []), + f = !d || (!e && h) ? c : Te(c, s, d, n, r), + p = g ? (y || (e ? d : l || v) ? [] : t) : f; + if ((g && g(f, p, n, r), v)) { + (i = Te(p, u)), v(i, [], n, r), (o = i.length); + while (o--) (a = i[o]) && (p[u[o]] = !(f[u[o]] = a)); + } + if (e) { + if (y || d) { + if (y) { + (i = []), (o = p.length); + while (o--) (a = p[o]) && i.push((f[o] = a)); + y(null, (p = []), i, r); + } + o = p.length; + while (o--) + (a = p[o]) && + -1 < (i = y ? P(e, a) : s[o]) && + (e[i] = !(t[i] = a)); + } + } else (p = Te(p === t ? p.splice(l, p.length) : p)), y ? y(null, t, p, r) : H.apply(t, p); + }) + ); + } + function Ee(e) { + for ( + var i, + t, + n, + r = e.length, + o = b.relative[e[0].type], + a = o || b.relative[" "], + s = o ? 1 : 0, + u = be( + function (e) { + return e === i; + }, + a, + !0 + ), + l = be( + function (e) { + return -1 < P(i, e); + }, + a, + !0 + ), + c = [ + function (e, t, n) { + var r = + (!o && (n || t !== w)) || + ((i = t).nodeType ? u(e, t, n) : l(e, t, n)); + return (i = null), r; + }, + ]; + s < r; + s++ + ) + if ((t = b.relative[e[s].type])) c = [be(we(c), t)]; + else { + if ((t = b.filter[e[s].type].apply(null, e[s].matches))[S]) { + for (n = ++s; n < r; n++) if (b.relative[e[n].type]) break; + return Ce( + 1 < s && we(c), + 1 < s && + xe( + e + .slice(0, s - 1) + .concat({ value: " " === e[s - 2].type ? "*" : "" }) + ).replace($, "$1"), + t, + s < n && Ee(e.slice(s, n)), + n < r && Ee((e = e.slice(n))), + n < r && xe(e) + ); + } + c.push(t); + } + return we(c); + } + return ( + (me.prototype = b.filters = b.pseudos), + (b.setFilters = new me()), + (h = se.tokenize = + function (e, t) { + var n, + r, + i, + o, + a, + s, + u, + l = x[e + " "]; + if (l) return t ? 0 : l.slice(0); + (a = e), (s = []), (u = b.preFilter); + while (a) { + for (o in ((n && !(r = _.exec(a))) || + (r && (a = a.slice(r[0].length) || a), s.push((i = []))), + (n = !1), + (r = z.exec(a)) && + ((n = r.shift()), + i.push({ value: n, type: r[0].replace($, " ") }), + (a = a.slice(n.length))), + b.filter)) + !(r = G[o].exec(a)) || + (u[o] && !(r = u[o](r))) || + ((n = r.shift()), + i.push({ value: n, type: o, matches: r }), + (a = a.slice(n.length))); + if (!n) break; + } + return t ? a.length : a ? se.error(e) : x(e, s).slice(0); + }), + (f = se.compile = + function (e, t) { + var n, + v, + y, + m, + x, + r, + i = [], + o = [], + a = A[e + " "]; + if (!a) { + t || (t = h(e)), (n = t.length); + while (n--) (a = Ee(t[n]))[S] ? i.push(a) : o.push(a); + (a = A( + e, + ((v = o), + (m = 0 < (y = i).length), + (x = 0 < v.length), + (r = function (e, t, n, r, i) { + var o, + a, + s, + u = 0, + l = "0", + c = e && [], + f = [], + p = w, + d = e || (x && b.find.TAG("*", i)), + h = (k += null == p ? 1 : Math.random() || 0.1), + g = d.length; + for ( + i && (w = t == C || t || i); + l !== g && null != (o = d[l]); + l++ + ) { + if (x && o) { + (a = 0), t || o.ownerDocument == C || (T(o), (n = !E)); + while ((s = v[a++])) + if (s(o, t || C, n)) { + r.push(o); + break; + } + i && (k = h); + } + m && ((o = !s && o) && u--, e && c.push(o)); + } + if (((u += l), m && l !== u)) { + a = 0; + while ((s = y[a++])) s(c, f, t, n); + if (e) { + if (0 < u) while (l--) c[l] || f[l] || (f[l] = q.call(r)); + f = Te(f); + } + H.apply(r, f), + i && + !e && + 0 < f.length && + 1 < u + y.length && + se.uniqueSort(r); + } + return i && ((k = h), (w = p)), c; + }), + m ? le(r) : r) + )).selector = e; + } + return a; + }), + (g = se.select = + function (e, t, n, r) { + var i, + o, + a, + s, + u, + l = "function" == typeof e && e, + c = !r && h((e = l.selector || e)); + if (((n = n || []), 1 === c.length)) { + if ( + 2 < (o = c[0] = c[0].slice(0)).length && + "ID" === (a = o[0]).type && + 9 === t.nodeType && + E && + b.relative[o[1].type] + ) { + if (!(t = (b.find.ID(a.matches[0].replace(te, ne), t) || [])[0])) + return n; + l && (t = t.parentNode), (e = e.slice(o.shift().value.length)); + } + i = G.needsContext.test(e) ? 0 : o.length; + while (i--) { + if (((a = o[i]), b.relative[(s = a.type)])) break; + if ( + (u = b.find[s]) && + (r = u( + a.matches[0].replace(te, ne), + (ee.test(o[0].type) && ye(t.parentNode)) || t + )) + ) { + if ((o.splice(i, 1), !(e = r.length && xe(o)))) + return H.apply(n, r), n; + break; + } + } + } + return ( + (l || f(e, c))( + r, + t, + !E, + n, + !t || (ee.test(e) && ye(t.parentNode)) || t + ), + n + ); + }), + (d.sortStable = S.split("").sort(j).join("") === S), + (d.detectDuplicates = !!l), + T(), + (d.sortDetached = ce(function (e) { + return 1 & e.compareDocumentPosition(C.createElement("fieldset")); + })), + ce(function (e) { + return ( + (e.innerHTML = ""), + "#" === e.firstChild.getAttribute("href") + ); + }) || + fe("type|href|height|width", function (e, t, n) { + if (!n) return e.getAttribute(t, "type" === t.toLowerCase() ? 1 : 2); + }), + (d.attributes && + ce(function (e) { + return ( + (e.innerHTML = ""), + e.firstChild.setAttribute("value", ""), + "" === e.firstChild.getAttribute("value") + ); + })) || + fe("value", function (e, t, n) { + if (!n && "input" === e.nodeName.toLowerCase()) return e.defaultValue; + }), + ce(function (e) { + return null == e.getAttribute("disabled"); + }) || + fe(R, function (e, t, n) { + var r; + if (!n) + return !0 === e[t] + ? t.toLowerCase() + : (r = e.getAttributeNode(t)) && r.specified + ? r.value + : null; + }), + se + ); + })(C); + (S.find = d), + (S.expr = d.selectors), + (S.expr[":"] = S.expr.pseudos), + (S.uniqueSort = S.unique = d.uniqueSort), + (S.text = d.getText), + (S.isXMLDoc = d.isXML), + (S.contains = d.contains), + (S.escapeSelector = d.escape); + var h = function (e, t, n) { + var r = [], + i = void 0 !== n; + while ((e = e[t]) && 9 !== e.nodeType) + if (1 === e.nodeType) { + if (i && S(e).is(n)) break; + r.push(e); + } + return r; + }, + T = function (e, t) { + for (var n = []; e; e = e.nextSibling) + 1 === e.nodeType && e !== t && n.push(e); + return n; + }, + k = S.expr.match.needsContext; + function A(e, t) { + return e.nodeName && e.nodeName.toLowerCase() === t.toLowerCase(); + } + var N = /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i; + function j(e, n, r) { + return m(n) + ? S.grep(e, function (e, t) { + return !!n.call(e, t, e) !== r; + }) + : n.nodeType + ? S.grep(e, function (e) { + return (e === n) !== r; + }) + : "string" != typeof n + ? S.grep(e, function (e) { + return -1 < i.call(n, e) !== r; + }) + : S.filter(n, e, r); + } + (S.filter = function (e, t, n) { + var r = t[0]; + return ( + n && (e = ":not(" + e + ")"), + 1 === t.length && 1 === r.nodeType + ? S.find.matchesSelector(r, e) + ? [r] + : [] + : S.find.matches( + e, + S.grep(t, function (e) { + return 1 === e.nodeType; + }) + ) + ); + }), + S.fn.extend({ + find: function (e) { + var t, + n, + r = this.length, + i = this; + if ("string" != typeof e) + return this.pushStack( + S(e).filter(function () { + for (t = 0; t < r; t++) if (S.contains(i[t], this)) return !0; + }) + ); + for (n = this.pushStack([]), t = 0; t < r; t++) S.find(e, i[t], n); + return 1 < r ? S.uniqueSort(n) : n; + }, + filter: function (e) { + return this.pushStack(j(this, e || [], !1)); + }, + not: function (e) { + return this.pushStack(j(this, e || [], !0)); + }, + is: function (e) { + return !!j(this, "string" == typeof e && k.test(e) ? S(e) : e || [], !1) + .length; + }, + }); + var D, + q = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/; + ((S.fn.init = function (e, t, n) { + var r, i; + if (!e) return this; + if (((n = n || D), "string" == typeof e)) { + if ( + !(r = + "<" === e[0] && ">" === e[e.length - 1] && 3 <= e.length + ? [null, e, null] + : q.exec(e)) || + (!r[1] && t) + ) + return !t || t.jquery ? (t || n).find(e) : this.constructor(t).find(e); + if (r[1]) { + if ( + ((t = t instanceof S ? t[0] : t), + S.merge( + this, + S.parseHTML(r[1], t && t.nodeType ? t.ownerDocument || t : E, !0) + ), + N.test(r[1]) && S.isPlainObject(t)) + ) + for (r in t) m(this[r]) ? this[r](t[r]) : this.attr(r, t[r]); + return this; + } + return ( + (i = E.getElementById(r[2])) && ((this[0] = i), (this.length = 1)), this + ); + } + return e.nodeType + ? ((this[0] = e), (this.length = 1), this) + : m(e) + ? void 0 !== n.ready + ? n.ready(e) + : e(S) + : S.makeArray(e, this); + }).prototype = S.fn), + (D = S(E)); + var L = /^(?:parents|prev(?:Until|All))/, + H = { children: !0, contents: !0, next: !0, prev: !0 }; + function O(e, t) { + while ((e = e[t]) && 1 !== e.nodeType); + return e; + } + S.fn.extend({ + has: function (e) { + var t = S(e, this), + n = t.length; + return this.filter(function () { + for (var e = 0; e < n; e++) if (S.contains(this, t[e])) return !0; + }); + }, + closest: function (e, t) { + var n, + r = 0, + i = this.length, + o = [], + a = "string" != typeof e && S(e); + if (!k.test(e)) + for (; r < i; r++) + for (n = this[r]; n && n !== t; n = n.parentNode) + if ( + n.nodeType < 11 && + (a + ? -1 < a.index(n) + : 1 === n.nodeType && S.find.matchesSelector(n, e)) + ) { + o.push(n); + break; + } + return this.pushStack(1 < o.length ? S.uniqueSort(o) : o); + }, + index: function (e) { + return e + ? "string" == typeof e + ? i.call(S(e), this[0]) + : i.call(this, e.jquery ? e[0] : e) + : this[0] && this[0].parentNode + ? this.first().prevAll().length + : -1; + }, + add: function (e, t) { + return this.pushStack(S.uniqueSort(S.merge(this.get(), S(e, t)))); + }, + addBack: function (e) { + return this.add(null == e ? this.prevObject : this.prevObject.filter(e)); + }, + }), + S.each( + { + parent: function (e) { + var t = e.parentNode; + return t && 11 !== t.nodeType ? t : null; + }, + parents: function (e) { + return h(e, "parentNode"); + }, + parentsUntil: function (e, t, n) { + return h(e, "parentNode", n); + }, + next: function (e) { + return O(e, "nextSibling"); + }, + prev: function (e) { + return O(e, "previousSibling"); + }, + nextAll: function (e) { + return h(e, "nextSibling"); + }, + prevAll: function (e) { + return h(e, "previousSibling"); + }, + nextUntil: function (e, t, n) { + return h(e, "nextSibling", n); + }, + prevUntil: function (e, t, n) { + return h(e, "previousSibling", n); + }, + siblings: function (e) { + return T((e.parentNode || {}).firstChild, e); + }, + children: function (e) { + return T(e.firstChild); + }, + contents: function (e) { + return null != e.contentDocument && r(e.contentDocument) + ? e.contentDocument + : (A(e, "template") && (e = e.content || e), + S.merge([], e.childNodes)); + }, + }, + function (r, i) { + S.fn[r] = function (e, t) { + var n = S.map(this, i, e); + return ( + "Until" !== r.slice(-5) && (t = e), + t && "string" == typeof t && (n = S.filter(t, n)), + 1 < this.length && + (H[r] || S.uniqueSort(n), L.test(r) && n.reverse()), + this.pushStack(n) + ); + }; + } + ); + var P = /[^\x20\t\r\n\f]+/g; + function R(e) { + return e; + } + function M(e) { + throw e; + } + function I(e, t, n, r) { + var i; + try { + e && m((i = e.promise)) + ? i.call(e).done(t).fail(n) + : e && m((i = e.then)) + ? i.call(e, t, n) + : t.apply(void 0, [e].slice(r)); + } catch (e) { + n.apply(void 0, [e]); + } + } + (S.Callbacks = function (r) { + var e, n; + r = + "string" == typeof r + ? ((e = r), + (n = {}), + S.each(e.match(P) || [], function (e, t) { + n[t] = !0; + }), + n) + : S.extend({}, r); + var i, + t, + o, + a, + s = [], + u = [], + l = -1, + c = function () { + for (a = a || r.once, o = i = !0; u.length; l = -1) { + t = u.shift(); + while (++l < s.length) + !1 === s[l].apply(t[0], t[1]) && + r.stopOnFalse && + ((l = s.length), (t = !1)); + } + r.memory || (t = !1), (i = !1), a && (s = t ? [] : ""); + }, + f = { + add: function () { + return ( + s && + (t && !i && ((l = s.length - 1), u.push(t)), + (function n(e) { + S.each(e, function (e, t) { + m(t) + ? (r.unique && f.has(t)) || s.push(t) + : t && t.length && "string" !== w(t) && n(t); + }); + })(arguments), + t && !i && c()), + this + ); + }, + remove: function () { + return ( + S.each(arguments, function (e, t) { + var n; + while (-1 < (n = S.inArray(t, s, n))) + s.splice(n, 1), n <= l && l--; + }), + this + ); + }, + has: function (e) { + return e ? -1 < S.inArray(e, s) : 0 < s.length; + }, + empty: function () { + return s && (s = []), this; + }, + disable: function () { + return (a = u = []), (s = t = ""), this; + }, + disabled: function () { + return !s; + }, + lock: function () { + return (a = u = []), t || i || (s = t = ""), this; + }, + locked: function () { + return !!a; + }, + fireWith: function (e, t) { + return ( + a || + ((t = [e, (t = t || []).slice ? t.slice() : t]), + u.push(t), + i || c()), + this + ); + }, + fire: function () { + return f.fireWith(this, arguments), this; + }, + fired: function () { + return !!o; + }, + }; + return f; + }), + S.extend({ + Deferred: function (e) { + var o = [ + [ + "notify", + "progress", + S.Callbacks("memory"), + S.Callbacks("memory"), + 2, + ], + [ + "resolve", + "done", + S.Callbacks("once memory"), + S.Callbacks("once memory"), + 0, + "resolved", + ], + [ + "reject", + "fail", + S.Callbacks("once memory"), + S.Callbacks("once memory"), + 1, + "rejected", + ], + ], + i = "pending", + a = { + state: function () { + return i; + }, + always: function () { + return s.done(arguments).fail(arguments), this; + }, + catch: function (e) { + return a.then(null, e); + }, + pipe: function () { + var i = arguments; + return S.Deferred(function (r) { + S.each(o, function (e, t) { + var n = m(i[t[4]]) && i[t[4]]; + s[t[1]](function () { + var e = n && n.apply(this, arguments); + e && m(e.promise) + ? e + .promise() + .progress(r.notify) + .done(r.resolve) + .fail(r.reject) + : r[t[0] + "With"](this, n ? [e] : arguments); + }); + }), + (i = null); + }).promise(); + }, + then: function (t, n, r) { + var u = 0; + function l(i, o, a, s) { + return function () { + var n = this, + r = arguments, + e = function () { + var e, t; + if (!(i < u)) { + if ((e = a.apply(n, r)) === o.promise()) + throw new TypeError("Thenable self-resolution"); + (t = + e && + ("object" == typeof e || "function" == typeof e) && + e.then), + m(t) + ? s + ? t.call(e, l(u, o, R, s), l(u, o, M, s)) + : (u++, + t.call( + e, + l(u, o, R, s), + l(u, o, M, s), + l(u, o, R, o.notifyWith) + )) + : (a !== R && ((n = void 0), (r = [e])), + (s || o.resolveWith)(n, r)); + } + }, + t = s + ? e + : function () { + try { + e(); + } catch (e) { + S.Deferred.exceptionHook && + S.Deferred.exceptionHook(e, t.stackTrace), + u <= i + 1 && + (a !== M && ((n = void 0), (r = [e])), + o.rejectWith(n, r)); + } + }; + i + ? t() + : (S.Deferred.getStackHook && + (t.stackTrace = S.Deferred.getStackHook()), + C.setTimeout(t)); + }; + } + return S.Deferred(function (e) { + o[0][3].add(l(0, e, m(r) ? r : R, e.notifyWith)), + o[1][3].add(l(0, e, m(t) ? t : R)), + o[2][3].add(l(0, e, m(n) ? n : M)); + }).promise(); + }, + promise: function (e) { + return null != e ? S.extend(e, a) : a; + }, + }, + s = {}; + return ( + S.each(o, function (e, t) { + var n = t[2], + r = t[5]; + (a[t[1]] = n.add), + r && + n.add( + function () { + i = r; + }, + o[3 - e][2].disable, + o[3 - e][3].disable, + o[0][2].lock, + o[0][3].lock + ), + n.add(t[3].fire), + (s[t[0]] = function () { + return ( + s[t[0] + "With"](this === s ? void 0 : this, arguments), this + ); + }), + (s[t[0] + "With"] = n.fireWith); + }), + a.promise(s), + e && e.call(s, s), + s + ); + }, + when: function (e) { + var n = arguments.length, + t = n, + r = Array(t), + i = s.call(arguments), + o = S.Deferred(), + a = function (t) { + return function (e) { + (r[t] = this), + (i[t] = 1 < arguments.length ? s.call(arguments) : e), + --n || o.resolveWith(r, i); + }; + }; + if ( + n <= 1 && + (I(e, o.done(a(t)).resolve, o.reject, !n), + "pending" === o.state() || m(i[t] && i[t].then)) + ) + return o.then(); + while (t--) I(i[t], a(t), o.reject); + return o.promise(); + }, + }); + var W = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; + (S.Deferred.exceptionHook = function (e, t) { + C.console && + C.console.warn && + e && + W.test(e.name) && + C.console.warn("jQuery.Deferred exception: " + e.message, e.stack, t); + }), + (S.readyException = function (e) { + C.setTimeout(function () { + throw e; + }); + }); + var F = S.Deferred(); + function B() { + E.removeEventListener("DOMContentLoaded", B), + C.removeEventListener("load", B), + S.ready(); + } + (S.fn.ready = function (e) { + return ( + F.then(e)["catch"](function (e) { + S.readyException(e); + }), + this + ); + }), + S.extend({ + isReady: !1, + readyWait: 1, + ready: function (e) { + (!0 === e ? --S.readyWait : S.isReady) || + ((S.isReady = !0) !== e && 0 < --S.readyWait) || + F.resolveWith(E, [S]); + }, + }), + (S.ready.then = F.then), + "complete" === E.readyState || + ("loading" !== E.readyState && !E.documentElement.doScroll) + ? C.setTimeout(S.ready) + : (E.addEventListener("DOMContentLoaded", B), + C.addEventListener("load", B)); + var $ = function (e, t, n, r, i, o, a) { + var s = 0, + u = e.length, + l = null == n; + if ("object" === w(n)) + for (s in ((i = !0), n)) $(e, t, s, n[s], !0, o, a); + else if ( + void 0 !== r && + ((i = !0), + m(r) || (a = !0), + l && + (a + ? (t.call(e, r), (t = null)) + : ((l = t), + (t = function (e, t, n) { + return l.call(S(e), n); + }))), + t) + ) + for (; s < u; s++) t(e[s], n, a ? r : r.call(e[s], s, t(e[s], n))); + return i ? e : l ? t.call(e) : u ? t(e[0], n) : o; + }, + _ = /^-ms-/, + z = /-([a-z])/g; + function U(e, t) { + return t.toUpperCase(); + } + function X(e) { + return e.replace(_, "ms-").replace(z, U); + } + var V = function (e) { + return 1 === e.nodeType || 9 === e.nodeType || !+e.nodeType; + }; + function G() { + this.expando = S.expando + G.uid++; + } + (G.uid = 1), + (G.prototype = { + cache: function (e) { + var t = e[this.expando]; + return ( + t || + ((t = {}), + V(e) && + (e.nodeType + ? (e[this.expando] = t) + : Object.defineProperty(e, this.expando, { + value: t, + configurable: !0, + }))), + t + ); + }, + set: function (e, t, n) { + var r, + i = this.cache(e); + if ("string" == typeof t) i[X(t)] = n; + else for (r in t) i[X(r)] = t[r]; + return i; + }, + get: function (e, t) { + return void 0 === t + ? this.cache(e) + : e[this.expando] && e[this.expando][X(t)]; + }, + access: function (e, t, n) { + return void 0 === t || (t && "string" == typeof t && void 0 === n) + ? this.get(e, t) + : (this.set(e, t, n), void 0 !== n ? n : t); + }, + remove: function (e, t) { + var n, + r = e[this.expando]; + if (void 0 !== r) { + if (void 0 !== t) { + n = (t = Array.isArray(t) + ? t.map(X) + : (t = X(t)) in r + ? [t] + : t.match(P) || []).length; + while (n--) delete r[t[n]]; + } + (void 0 === t || S.isEmptyObject(r)) && + (e.nodeType ? (e[this.expando] = void 0) : delete e[this.expando]); + } + }, + hasData: function (e) { + var t = e[this.expando]; + return void 0 !== t && !S.isEmptyObject(t); + }, + }); + var Y = new G(), + Q = new G(), + J = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + K = /[A-Z]/g; + function Z(e, t, n) { + var r, i; + if (void 0 === n && 1 === e.nodeType) + if ( + ((r = "data-" + t.replace(K, "-$&").toLowerCase()), + "string" == typeof (n = e.getAttribute(r))) + ) { + try { + n = + "true" === (i = n) || + ("false" !== i && + ("null" === i + ? null + : i === +i + "" + ? +i + : J.test(i) + ? JSON.parse(i) + : i)); + } catch (e) {} + Q.set(e, t, n); + } else n = void 0; + return n; + } + S.extend({ + hasData: function (e) { + return Q.hasData(e) || Y.hasData(e); + }, + data: function (e, t, n) { + return Q.access(e, t, n); + }, + removeData: function (e, t) { + Q.remove(e, t); + }, + _data: function (e, t, n) { + return Y.access(e, t, n); + }, + _removeData: function (e, t) { + Y.remove(e, t); + }, + }), + S.fn.extend({ + data: function (n, e) { + var t, + r, + i, + o = this[0], + a = o && o.attributes; + if (void 0 === n) { + if ( + this.length && + ((i = Q.get(o)), 1 === o.nodeType && !Y.get(o, "hasDataAttrs")) + ) { + t = a.length; + while (t--) + a[t] && + 0 === (r = a[t].name).indexOf("data-") && + ((r = X(r.slice(5))), Z(o, r, i[r])); + Y.set(o, "hasDataAttrs", !0); + } + return i; + } + return "object" == typeof n + ? this.each(function () { + Q.set(this, n); + }) + : $( + this, + function (e) { + var t; + if (o && void 0 === e) + return void 0 !== (t = Q.get(o, n)) + ? t + : void 0 !== (t = Z(o, n)) + ? t + : void 0; + this.each(function () { + Q.set(this, n, e); + }); + }, + null, + e, + 1 < arguments.length, + null, + !0 + ); + }, + removeData: function (e) { + return this.each(function () { + Q.remove(this, e); + }); + }, + }), + S.extend({ + queue: function (e, t, n) { + var r; + if (e) + return ( + (t = (t || "fx") + "queue"), + (r = Y.get(e, t)), + n && + (!r || Array.isArray(n) + ? (r = Y.access(e, t, S.makeArray(n))) + : r.push(n)), + r || [] + ); + }, + dequeue: function (e, t) { + t = t || "fx"; + var n = S.queue(e, t), + r = n.length, + i = n.shift(), + o = S._queueHooks(e, t); + "inprogress" === i && ((i = n.shift()), r--), + i && + ("fx" === t && n.unshift("inprogress"), + delete o.stop, + i.call( + e, + function () { + S.dequeue(e, t); + }, + o + )), + !r && o && o.empty.fire(); + }, + _queueHooks: function (e, t) { + var n = t + "queueHooks"; + return ( + Y.get(e, n) || + Y.access(e, n, { + empty: S.Callbacks("once memory").add(function () { + Y.remove(e, [t + "queue", n]); + }), + }) + ); + }, + }), + S.fn.extend({ + queue: function (t, n) { + var e = 2; + return ( + "string" != typeof t && ((n = t), (t = "fx"), e--), + arguments.length < e + ? S.queue(this[0], t) + : void 0 === n + ? this + : this.each(function () { + var e = S.queue(this, t, n); + S._queueHooks(this, t), + "fx" === t && "inprogress" !== e[0] && S.dequeue(this, t); + }) + ); + }, + dequeue: function (e) { + return this.each(function () { + S.dequeue(this, e); + }); + }, + clearQueue: function (e) { + return this.queue(e || "fx", []); + }, + promise: function (e, t) { + var n, + r = 1, + i = S.Deferred(), + o = this, + a = this.length, + s = function () { + --r || i.resolveWith(o, [o]); + }; + "string" != typeof e && ((t = e), (e = void 0)), (e = e || "fx"); + while (a--) + (n = Y.get(o[a], e + "queueHooks")) && + n.empty && + (r++, n.empty.add(s)); + return s(), i.promise(t); + }, + }); + var ee = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source, + te = new RegExp("^(?:([+-])=|)(" + ee + ")([a-z%]*)$", "i"), + ne = ["Top", "Right", "Bottom", "Left"], + re = E.documentElement, + ie = function (e) { + return S.contains(e.ownerDocument, e); + }, + oe = { composed: !0 }; + re.getRootNode && + (ie = function (e) { + return ( + S.contains(e.ownerDocument, e) || e.getRootNode(oe) === e.ownerDocument + ); + }); + var ae = function (e, t) { + return ( + "none" === (e = t || e).style.display || + ("" === e.style.display && ie(e) && "none" === S.css(e, "display")) + ); + }; + function se(e, t, n, r) { + var i, + o, + a = 20, + s = r + ? function () { + return r.cur(); + } + : function () { + return S.css(e, t, ""); + }, + u = s(), + l = (n && n[3]) || (S.cssNumber[t] ? "" : "px"), + c = + e.nodeType && + (S.cssNumber[t] || ("px" !== l && +u)) && + te.exec(S.css(e, t)); + if (c && c[3] !== l) { + (u /= 2), (l = l || c[3]), (c = +u || 1); + while (a--) + S.style(e, t, c + l), + (1 - o) * (1 - (o = s() / u || 0.5)) <= 0 && (a = 0), + (c /= o); + (c *= 2), S.style(e, t, c + l), (n = n || []); + } + return ( + n && + ((c = +c || +u || 0), + (i = n[1] ? c + (n[1] + 1) * n[2] : +n[2]), + r && ((r.unit = l), (r.start = c), (r.end = i))), + i + ); + } + var ue = {}; + function le(e, t) { + for (var n, r, i, o, a, s, u, l = [], c = 0, f = e.length; c < f; c++) + (r = e[c]).style && + ((n = r.style.display), + t + ? ("none" === n && + ((l[c] = Y.get(r, "display") || null), + l[c] || (r.style.display = "")), + "" === r.style.display && + ae(r) && + (l[c] = + ((u = a = o = void 0), + (a = (i = r).ownerDocument), + (s = i.nodeName), + (u = ue[s]) || + ((o = a.body.appendChild(a.createElement(s))), + (u = S.css(o, "display")), + o.parentNode.removeChild(o), + "none" === u && (u = "block"), + (ue[s] = u))))) + : "none" !== n && ((l[c] = "none"), Y.set(r, "display", n))); + for (c = 0; c < f; c++) null != l[c] && (e[c].style.display = l[c]); + return e; + } + S.fn.extend({ + show: function () { + return le(this, !0); + }, + hide: function () { + return le(this); + }, + toggle: function (e) { + return "boolean" == typeof e + ? e + ? this.show() + : this.hide() + : this.each(function () { + ae(this) ? S(this).show() : S(this).hide(); + }); + }, + }); + var ce, + fe, + pe = /^(?:checkbox|radio)$/i, + de = /<([a-z][^\/\0>\x20\t\r\n\f]*)/i, + he = /^$|^module$|\/(?:java|ecma)script/i; + (ce = E.createDocumentFragment().appendChild(E.createElement("div"))), + (fe = E.createElement("input")).setAttribute("type", "radio"), + fe.setAttribute("checked", "checked"), + fe.setAttribute("name", "t"), + ce.appendChild(fe), + (y.checkClone = ce.cloneNode(!0).cloneNode(!0).lastChild.checked), + (ce.innerHTML = ""), + (y.noCloneChecked = !!ce.cloneNode(!0).lastChild.defaultValue), + (ce.innerHTML = ""), + (y.option = !!ce.lastChild); + var ge = { + thead: [1, "", "
    "], + col: [2, "", "
    "], + tr: [2, "", "
    "], + td: [3, "", "
    "], + _default: [0, "", ""], + }; + function ve(e, t) { + var n; + return ( + (n = + "undefined" != typeof e.getElementsByTagName + ? e.getElementsByTagName(t || "*") + : "undefined" != typeof e.querySelectorAll + ? e.querySelectorAll(t || "*") + : []), + void 0 === t || (t && A(e, t)) ? S.merge([e], n) : n + ); + } + function ye(e, t) { + for (var n = 0, r = e.length; n < r; n++) + Y.set(e[n], "globalEval", !t || Y.get(t[n], "globalEval")); + } + (ge.tbody = ge.tfoot = ge.colgroup = ge.caption = ge.thead), + (ge.th = ge.td), + y.option || + (ge.optgroup = ge.option = + [1, ""]); + var me = /<|&#?\w+;/; + function xe(e, t, n, r, i) { + for ( + var o, + a, + s, + u, + l, + c, + f = t.createDocumentFragment(), + p = [], + d = 0, + h = e.length; + d < h; + d++ + ) + if ((o = e[d]) || 0 === o) + if ("object" === w(o)) S.merge(p, o.nodeType ? [o] : o); + else if (me.test(o)) { + (a = a || f.appendChild(t.createElement("div"))), + (s = (de.exec(o) || ["", ""])[1].toLowerCase()), + (u = ge[s] || ge._default), + (a.innerHTML = u[1] + S.htmlPrefilter(o) + u[2]), + (c = u[0]); + while (c--) a = a.lastChild; + S.merge(p, a.childNodes), ((a = f.firstChild).textContent = ""); + } else p.push(t.createTextNode(o)); + (f.textContent = ""), (d = 0); + while ((o = p[d++])) + if (r && -1 < S.inArray(o, r)) i && i.push(o); + else if ( + ((l = ie(o)), (a = ve(f.appendChild(o), "script")), l && ye(a), n) + ) { + c = 0; + while ((o = a[c++])) he.test(o.type || "") && n.push(o); + } + return f; + } + var be = /^([^.]*)(?:\.(.+)|)/; + function we() { + return !0; + } + function Te() { + return !1; + } + function Ce(e, t) { + return ( + (e === + (function () { + try { + return E.activeElement; + } catch (e) {} + })()) == + ("focus" === t) + ); + } + function Ee(e, t, n, r, i, o) { + var a, s; + if ("object" == typeof t) { + for (s in ("string" != typeof n && ((r = r || n), (n = void 0)), t)) + Ee(e, s, n, r, t[s], o); + return e; + } + if ( + (null == r && null == i + ? ((i = n), (r = n = void 0)) + : null == i && + ("string" == typeof n + ? ((i = r), (r = void 0)) + : ((i = r), (r = n), (n = void 0))), + !1 === i) + ) + i = Te; + else if (!i) return e; + return ( + 1 === o && + ((a = i), + ((i = function (e) { + return S().off(e), a.apply(this, arguments); + }).guid = a.guid || (a.guid = S.guid++))), + e.each(function () { + S.event.add(this, t, i, r, n); + }) + ); + } + function Se(e, i, o) { + o + ? (Y.set(e, i, !1), + S.event.add(e, i, { + namespace: !1, + handler: function (e) { + var t, + n, + r = Y.get(this, i); + if (1 & e.isTrigger && this[i]) { + if (r.length) + (S.event.special[i] || {}).delegateType && e.stopPropagation(); + else if ( + ((r = s.call(arguments)), + Y.set(this, i, r), + (t = o(this, i)), + this[i](), + r !== (n = Y.get(this, i)) || t ? Y.set(this, i, !1) : (n = {}), + r !== n) + ) + return ( + e.stopImmediatePropagation(), e.preventDefault(), n && n.value + ); + } else + r.length && + (Y.set(this, i, { + value: S.event.trigger( + S.extend(r[0], S.Event.prototype), + r.slice(1), + this + ), + }), + e.stopImmediatePropagation()); + }, + })) + : void 0 === Y.get(e, i) && S.event.add(e, i, we); + } + (S.event = { + global: {}, + add: function (t, e, n, r, i) { + var o, + a, + s, + u, + l, + c, + f, + p, + d, + h, + g, + v = Y.get(t); + if (V(t)) { + n.handler && ((n = (o = n).handler), (i = o.selector)), + i && S.find.matchesSelector(re, i), + n.guid || (n.guid = S.guid++), + (u = v.events) || (u = v.events = Object.create(null)), + (a = v.handle) || + (a = v.handle = + function (e) { + return "undefined" != typeof S && S.event.triggered !== e.type + ? S.event.dispatch.apply(t, arguments) + : void 0; + }), + (l = (e = (e || "").match(P) || [""]).length); + while (l--) + (d = g = (s = be.exec(e[l]) || [])[1]), + (h = (s[2] || "").split(".").sort()), + d && + ((f = S.event.special[d] || {}), + (d = (i ? f.delegateType : f.bindType) || d), + (f = S.event.special[d] || {}), + (c = S.extend( + { + type: d, + origType: g, + data: r, + handler: n, + guid: n.guid, + selector: i, + needsContext: i && S.expr.match.needsContext.test(i), + namespace: h.join("."), + }, + o + )), + (p = u[d]) || + (((p = u[d] = []).delegateCount = 0), + (f.setup && !1 !== f.setup.call(t, r, h, a)) || + (t.addEventListener && t.addEventListener(d, a))), + f.add && + (f.add.call(t, c), c.handler.guid || (c.handler.guid = n.guid)), + i ? p.splice(p.delegateCount++, 0, c) : p.push(c), + (S.event.global[d] = !0)); + } + }, + remove: function (e, t, n, r, i) { + var o, + a, + s, + u, + l, + c, + f, + p, + d, + h, + g, + v = Y.hasData(e) && Y.get(e); + if (v && (u = v.events)) { + l = (t = (t || "").match(P) || [""]).length; + while (l--) + if ( + ((d = g = (s = be.exec(t[l]) || [])[1]), + (h = (s[2] || "").split(".").sort()), + d) + ) { + (f = S.event.special[d] || {}), + (p = u[(d = (r ? f.delegateType : f.bindType) || d)] || []), + (s = + s[2] && + new RegExp("(^|\\.)" + h.join("\\.(?:.*\\.|)") + "(\\.|$)")), + (a = o = p.length); + while (o--) + (c = p[o]), + (!i && g !== c.origType) || + (n && n.guid !== c.guid) || + (s && !s.test(c.namespace)) || + (r && r !== c.selector && ("**" !== r || !c.selector)) || + (p.splice(o, 1), + c.selector && p.delegateCount--, + f.remove && f.remove.call(e, c)); + a && + !p.length && + ((f.teardown && !1 !== f.teardown.call(e, h, v.handle)) || + S.removeEvent(e, d, v.handle), + delete u[d]); + } else for (d in u) S.event.remove(e, d + t[l], n, r, !0); + S.isEmptyObject(u) && Y.remove(e, "handle events"); + } + }, + dispatch: function (e) { + var t, + n, + r, + i, + o, + a, + s = new Array(arguments.length), + u = S.event.fix(e), + l = (Y.get(this, "events") || Object.create(null))[u.type] || [], + c = S.event.special[u.type] || {}; + for (s[0] = u, t = 1; t < arguments.length; t++) s[t] = arguments[t]; + if ( + ((u.delegateTarget = this), + !c.preDispatch || !1 !== c.preDispatch.call(this, u)) + ) { + (a = S.event.handlers.call(this, u, l)), (t = 0); + while ((i = a[t++]) && !u.isPropagationStopped()) { + (u.currentTarget = i.elem), (n = 0); + while ((o = i.handlers[n++]) && !u.isImmediatePropagationStopped()) + (u.rnamespace && + !1 !== o.namespace && + !u.rnamespace.test(o.namespace)) || + ((u.handleObj = o), + (u.data = o.data), + void 0 !== + (r = ( + (S.event.special[o.origType] || {}).handle || o.handler + ).apply(i.elem, s)) && + !1 === (u.result = r) && + (u.preventDefault(), u.stopPropagation())); + } + return c.postDispatch && c.postDispatch.call(this, u), u.result; + } + }, + handlers: function (e, t) { + var n, + r, + i, + o, + a, + s = [], + u = t.delegateCount, + l = e.target; + if (u && l.nodeType && !("click" === e.type && 1 <= e.button)) + for (; l !== this; l = l.parentNode || this) + if (1 === l.nodeType && ("click" !== e.type || !0 !== l.disabled)) { + for (o = [], a = {}, n = 0; n < u; n++) + void 0 === a[(i = (r = t[n]).selector + " ")] && + (a[i] = r.needsContext + ? -1 < S(i, this).index(l) + : S.find(i, this, null, [l]).length), + a[i] && o.push(r); + o.length && s.push({ elem: l, handlers: o }); + } + return ( + (l = this), u < t.length && s.push({ elem: l, handlers: t.slice(u) }), s + ); + }, + addProp: function (t, e) { + Object.defineProperty(S.Event.prototype, t, { + enumerable: !0, + configurable: !0, + get: m(e) + ? function () { + if (this.originalEvent) return e(this.originalEvent); + } + : function () { + if (this.originalEvent) return this.originalEvent[t]; + }, + set: function (e) { + Object.defineProperty(this, t, { + enumerable: !0, + configurable: !0, + writable: !0, + value: e, + }); + }, + }); + }, + fix: function (e) { + return e[S.expando] ? e : new S.Event(e); + }, + special: { + load: { noBubble: !0 }, + click: { + setup: function (e) { + var t = this || e; + return ( + pe.test(t.type) && t.click && A(t, "input") && Se(t, "click", we), + !1 + ); + }, + trigger: function (e) { + var t = this || e; + return ( + pe.test(t.type) && t.click && A(t, "input") && Se(t, "click"), !0 + ); + }, + _default: function (e) { + var t = e.target; + return ( + (pe.test(t.type) && + t.click && + A(t, "input") && + Y.get(t, "click")) || + A(t, "a") + ); + }, + }, + beforeunload: { + postDispatch: function (e) { + void 0 !== e.result && + e.originalEvent && + (e.originalEvent.returnValue = e.result); + }, + }, + }, + }), + (S.removeEvent = function (e, t, n) { + e.removeEventListener && e.removeEventListener(t, n); + }), + (S.Event = function (e, t) { + if (!(this instanceof S.Event)) return new S.Event(e, t); + e && e.type + ? ((this.originalEvent = e), + (this.type = e.type), + (this.isDefaultPrevented = + e.defaultPrevented || + (void 0 === e.defaultPrevented && !1 === e.returnValue) + ? we + : Te), + (this.target = + e.target && 3 === e.target.nodeType + ? e.target.parentNode + : e.target), + (this.currentTarget = e.currentTarget), + (this.relatedTarget = e.relatedTarget)) + : (this.type = e), + t && S.extend(this, t), + (this.timeStamp = (e && e.timeStamp) || Date.now()), + (this[S.expando] = !0); + }), + (S.Event.prototype = { + constructor: S.Event, + isDefaultPrevented: Te, + isPropagationStopped: Te, + isImmediatePropagationStopped: Te, + isSimulated: !1, + preventDefault: function () { + var e = this.originalEvent; + (this.isDefaultPrevented = we), + e && !this.isSimulated && e.preventDefault(); + }, + stopPropagation: function () { + var e = this.originalEvent; + (this.isPropagationStopped = we), + e && !this.isSimulated && e.stopPropagation(); + }, + stopImmediatePropagation: function () { + var e = this.originalEvent; + (this.isImmediatePropagationStopped = we), + e && !this.isSimulated && e.stopImmediatePropagation(), + this.stopPropagation(); + }, + }), + S.each( + { + altKey: !0, + bubbles: !0, + cancelable: !0, + changedTouches: !0, + ctrlKey: !0, + detail: !0, + eventPhase: !0, + metaKey: !0, + pageX: !0, + pageY: !0, + shiftKey: !0, + view: !0, + char: !0, + code: !0, + charCode: !0, + key: !0, + keyCode: !0, + button: !0, + buttons: !0, + clientX: !0, + clientY: !0, + offsetX: !0, + offsetY: !0, + pointerId: !0, + pointerType: !0, + screenX: !0, + screenY: !0, + targetTouches: !0, + toElement: !0, + touches: !0, + which: !0, + }, + S.event.addProp + ), + S.each({ focus: "focusin", blur: "focusout" }, function (e, t) { + S.event.special[e] = { + setup: function () { + return Se(this, e, Ce), !1; + }, + trigger: function () { + return Se(this, e), !0; + }, + _default: function () { + return !0; + }, + delegateType: t, + }; + }), + S.each( + { + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout", + }, + function (e, i) { + S.event.special[e] = { + delegateType: i, + bindType: i, + handle: function (e) { + var t, + n = e.relatedTarget, + r = e.handleObj; + return ( + (n && (n === this || S.contains(this, n))) || + ((e.type = r.origType), + (t = r.handler.apply(this, arguments)), + (e.type = i)), + t + ); + }, + }; + } + ), + S.fn.extend({ + on: function (e, t, n, r) { + return Ee(this, e, t, n, r); + }, + one: function (e, t, n, r) { + return Ee(this, e, t, n, r, 1); + }, + off: function (e, t, n) { + var r, i; + if (e && e.preventDefault && e.handleObj) + return ( + (r = e.handleObj), + S(e.delegateTarget).off( + r.namespace ? r.origType + "." + r.namespace : r.origType, + r.selector, + r.handler + ), + this + ); + if ("object" == typeof e) { + for (i in e) this.off(i, t, e[i]); + return this; + } + return ( + (!1 !== t && "function" != typeof t) || ((n = t), (t = void 0)), + !1 === n && (n = Te), + this.each(function () { + S.event.remove(this, e, n, t); + }) + ); + }, + }); + var ke = /\s*$/g; + function je(e, t) { + return ( + (A(e, "table") && + A(11 !== t.nodeType ? t : t.firstChild, "tr") && + S(e).children("tbody")[0]) || + e + ); + } + function De(e) { + return (e.type = (null !== e.getAttribute("type")) + "/" + e.type), e; + } + function qe(e) { + return ( + "true/" === (e.type || "").slice(0, 5) + ? (e.type = e.type.slice(5)) + : e.removeAttribute("type"), + e + ); + } + function Le(e, t) { + var n, r, i, o, a, s; + if (1 === t.nodeType) { + if (Y.hasData(e) && (s = Y.get(e).events)) + for (i in (Y.remove(t, "handle events"), s)) + for (n = 0, r = s[i].length; n < r; n++) S.event.add(t, i, s[i][n]); + Q.hasData(e) && ((o = Q.access(e)), (a = S.extend({}, o)), Q.set(t, a)); + } + } + function He(n, r, i, o) { + r = g(r); + var e, + t, + a, + s, + u, + l, + c = 0, + f = n.length, + p = f - 1, + d = r[0], + h = m(d); + if (h || (1 < f && "string" == typeof d && !y.checkClone && Ae.test(d))) + return n.each(function (e) { + var t = n.eq(e); + h && (r[0] = d.call(this, e, t.html())), He(t, r, i, o); + }); + if ( + f && + ((t = (e = xe(r, n[0].ownerDocument, !1, n, o)).firstChild), + 1 === e.childNodes.length && (e = t), + t || o) + ) { + for (s = (a = S.map(ve(e, "script"), De)).length; c < f; c++) + (u = e), + c !== p && + ((u = S.clone(u, !0, !0)), s && S.merge(a, ve(u, "script"))), + i.call(n[c], u, c); + if (s) + for (l = a[a.length - 1].ownerDocument, S.map(a, qe), c = 0; c < s; c++) + (u = a[c]), + he.test(u.type || "") && + !Y.access(u, "globalEval") && + S.contains(l, u) && + (u.src && "module" !== (u.type || "").toLowerCase() + ? S._evalUrl && + !u.noModule && + S._evalUrl( + u.src, + { nonce: u.nonce || u.getAttribute("nonce") }, + l + ) + : b(u.textContent.replace(Ne, ""), u, l)); + } + return n; + } + function Oe(e, t, n) { + for (var r, i = t ? S.filter(t, e) : e, o = 0; null != (r = i[o]); o++) + n || 1 !== r.nodeType || S.cleanData(ve(r)), + r.parentNode && + (n && ie(r) && ye(ve(r, "script")), r.parentNode.removeChild(r)); + return e; + } + S.extend({ + htmlPrefilter: function (e) { + return e; + }, + clone: function (e, t, n) { + var r, + i, + o, + a, + s, + u, + l, + c = e.cloneNode(!0), + f = ie(e); + if ( + !( + y.noCloneChecked || + (1 !== e.nodeType && 11 !== e.nodeType) || + S.isXMLDoc(e) + ) + ) + for (a = ve(c), r = 0, i = (o = ve(e)).length; r < i; r++) + (s = o[r]), + (u = a[r]), + void 0, + "input" === (l = u.nodeName.toLowerCase()) && pe.test(s.type) + ? (u.checked = s.checked) + : ("input" !== l && "textarea" !== l) || + (u.defaultValue = s.defaultValue); + if (t) + if (n) + for (o = o || ve(e), a = a || ve(c), r = 0, i = o.length; r < i; r++) + Le(o[r], a[r]); + else Le(e, c); + return ( + 0 < (a = ve(c, "script")).length && ye(a, !f && ve(e, "script")), c + ); + }, + cleanData: function (e) { + for (var t, n, r, i = S.event.special, o = 0; void 0 !== (n = e[o]); o++) + if (V(n)) { + if ((t = n[Y.expando])) { + if (t.events) + for (r in t.events) + i[r] ? S.event.remove(n, r) : S.removeEvent(n, r, t.handle); + n[Y.expando] = void 0; + } + n[Q.expando] && (n[Q.expando] = void 0); + } + }, + }), + S.fn.extend({ + detach: function (e) { + return Oe(this, e, !0); + }, + remove: function (e) { + return Oe(this, e); + }, + text: function (e) { + return $( + this, + function (e) { + return void 0 === e + ? S.text(this) + : this.empty().each(function () { + (1 !== this.nodeType && + 11 !== this.nodeType && + 9 !== this.nodeType) || + (this.textContent = e); + }); + }, + null, + e, + arguments.length + ); + }, + append: function () { + return He(this, arguments, function (e) { + (1 !== this.nodeType && + 11 !== this.nodeType && + 9 !== this.nodeType) || + je(this, e).appendChild(e); + }); + }, + prepend: function () { + return He(this, arguments, function (e) { + if ( + 1 === this.nodeType || + 11 === this.nodeType || + 9 === this.nodeType + ) { + var t = je(this, e); + t.insertBefore(e, t.firstChild); + } + }); + }, + before: function () { + return He(this, arguments, function (e) { + this.parentNode && this.parentNode.insertBefore(e, this); + }); + }, + after: function () { + return He(this, arguments, function (e) { + this.parentNode && this.parentNode.insertBefore(e, this.nextSibling); + }); + }, + empty: function () { + for (var e, t = 0; null != (e = this[t]); t++) + 1 === e.nodeType && (S.cleanData(ve(e, !1)), (e.textContent = "")); + return this; + }, + clone: function (e, t) { + return ( + (e = null != e && e), + (t = null == t ? e : t), + this.map(function () { + return S.clone(this, e, t); + }) + ); + }, + html: function (e) { + return $( + this, + function (e) { + var t = this[0] || {}, + n = 0, + r = this.length; + if (void 0 === e && 1 === t.nodeType) return t.innerHTML; + if ( + "string" == typeof e && + !ke.test(e) && + !ge[(de.exec(e) || ["", ""])[1].toLowerCase()] + ) { + e = S.htmlPrefilter(e); + try { + for (; n < r; n++) + 1 === (t = this[n] || {}).nodeType && + (S.cleanData(ve(t, !1)), (t.innerHTML = e)); + t = 0; + } catch (e) {} + } + t && this.empty().append(e); + }, + null, + e, + arguments.length + ); + }, + replaceWith: function () { + var n = []; + return He( + this, + arguments, + function (e) { + var t = this.parentNode; + S.inArray(this, n) < 0 && + (S.cleanData(ve(this)), t && t.replaceChild(e, this)); + }, + n + ); + }, + }), + S.each( + { + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith", + }, + function (e, a) { + S.fn[e] = function (e) { + for (var t, n = [], r = S(e), i = r.length - 1, o = 0; o <= i; o++) + (t = o === i ? this : this.clone(!0)), + S(r[o])[a](t), + u.apply(n, t.get()); + return this.pushStack(n); + }; + } + ); + var Pe = new RegExp("^(" + ee + ")(?!px)[a-z%]+$", "i"), + Re = function (e) { + var t = e.ownerDocument.defaultView; + return (t && t.opener) || (t = C), t.getComputedStyle(e); + }, + Me = function (e, t, n) { + var r, + i, + o = {}; + for (i in t) (o[i] = e.style[i]), (e.style[i] = t[i]); + for (i in ((r = n.call(e)), t)) e.style[i] = o[i]; + return r; + }, + Ie = new RegExp(ne.join("|"), "i"); + function We(e, t, n) { + var r, + i, + o, + a, + s = e.style; + return ( + (n = n || Re(e)) && + ("" !== (a = n.getPropertyValue(t) || n[t]) || + ie(e) || + (a = S.style(e, t)), + !y.pixelBoxStyles() && + Pe.test(a) && + Ie.test(t) && + ((r = s.width), + (i = s.minWidth), + (o = s.maxWidth), + (s.minWidth = s.maxWidth = s.width = a), + (a = n.width), + (s.width = r), + (s.minWidth = i), + (s.maxWidth = o))), + void 0 !== a ? a + "" : a + ); + } + function Fe(e, t) { + return { + get: function () { + if (!e()) return (this.get = t).apply(this, arguments); + delete this.get; + }, + }; + } + !(function () { + function e() { + if (l) { + (u.style.cssText = + "position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0"), + (l.style.cssText = + "position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%"), + re.appendChild(u).appendChild(l); + var e = C.getComputedStyle(l); + (n = "1%" !== e.top), + (s = 12 === t(e.marginLeft)), + (l.style.right = "60%"), + (o = 36 === t(e.right)), + (r = 36 === t(e.width)), + (l.style.position = "absolute"), + (i = 12 === t(l.offsetWidth / 3)), + re.removeChild(u), + (l = null); + } + } + function t(e) { + return Math.round(parseFloat(e)); + } + var n, + r, + i, + o, + a, + s, + u = E.createElement("div"), + l = E.createElement("div"); + l.style && + ((l.style.backgroundClip = "content-box"), + (l.cloneNode(!0).style.backgroundClip = ""), + (y.clearCloneStyle = "content-box" === l.style.backgroundClip), + S.extend(y, { + boxSizingReliable: function () { + return e(), r; + }, + pixelBoxStyles: function () { + return e(), o; + }, + pixelPosition: function () { + return e(), n; + }, + reliableMarginLeft: function () { + return e(), s; + }, + scrollboxSize: function () { + return e(), i; + }, + reliableTrDimensions: function () { + var e, t, n, r; + return ( + null == a && + ((e = E.createElement("table")), + (t = E.createElement("tr")), + (n = E.createElement("div")), + (e.style.cssText = + "position:absolute;left:-11111px;border-collapse:separate"), + (t.style.cssText = "border:1px solid"), + (t.style.height = "1px"), + (n.style.height = "9px"), + (n.style.display = "block"), + re.appendChild(e).appendChild(t).appendChild(n), + (r = C.getComputedStyle(t)), + (a = + parseInt(r.height, 10) + + parseInt(r.borderTopWidth, 10) + + parseInt(r.borderBottomWidth, 10) === + t.offsetHeight), + re.removeChild(e)), + a + ); + }, + })); + })(); + var Be = ["Webkit", "Moz", "ms"], + $e = E.createElement("div").style, + _e = {}; + function ze(e) { + var t = S.cssProps[e] || _e[e]; + return ( + t || + (e in $e + ? e + : (_e[e] = + (function (e) { + var t = e[0].toUpperCase() + e.slice(1), + n = Be.length; + while (n--) if ((e = Be[n] + t) in $e) return e; + })(e) || e)) + ); + } + var Ue = /^(none|table(?!-c[ea]).+)/, + Xe = /^--/, + Ve = { position: "absolute", visibility: "hidden", display: "block" }, + Ge = { letterSpacing: "0", fontWeight: "400" }; + function Ye(e, t, n) { + var r = te.exec(t); + return r ? Math.max(0, r[2] - (n || 0)) + (r[3] || "px") : t; + } + function Qe(e, t, n, r, i, o) { + var a = "width" === t ? 1 : 0, + s = 0, + u = 0; + if (n === (r ? "border" : "content")) return 0; + for (; a < 4; a += 2) + "margin" === n && (u += S.css(e, n + ne[a], !0, i)), + r + ? ("content" === n && (u -= S.css(e, "padding" + ne[a], !0, i)), + "margin" !== n && + (u -= S.css(e, "border" + ne[a] + "Width", !0, i))) + : ((u += S.css(e, "padding" + ne[a], !0, i)), + "padding" !== n + ? (u += S.css(e, "border" + ne[a] + "Width", !0, i)) + : (s += S.css(e, "border" + ne[a] + "Width", !0, i))); + return ( + !r && + 0 <= o && + (u += + Math.max( + 0, + Math.ceil( + e["offset" + t[0].toUpperCase() + t.slice(1)] - o - u - s - 0.5 + ) + ) || 0), + u + ); + } + function Je(e, t, n) { + var r = Re(e), + i = + (!y.boxSizingReliable() || n) && + "border-box" === S.css(e, "boxSizing", !1, r), + o = i, + a = We(e, t, r), + s = "offset" + t[0].toUpperCase() + t.slice(1); + if (Pe.test(a)) { + if (!n) return a; + a = "auto"; + } + return ( + ((!y.boxSizingReliable() && i) || + (!y.reliableTrDimensions() && A(e, "tr")) || + "auto" === a || + (!parseFloat(a) && "inline" === S.css(e, "display", !1, r))) && + e.getClientRects().length && + ((i = "border-box" === S.css(e, "boxSizing", !1, r)), + (o = s in e) && (a = e[s])), + (a = parseFloat(a) || 0) + + Qe(e, t, n || (i ? "border" : "content"), o, r, a) + + "px" + ); + } + function Ke(e, t, n, r, i) { + return new Ke.prototype.init(e, t, n, r, i); + } + S.extend({ + cssHooks: { + opacity: { + get: function (e, t) { + if (t) { + var n = We(e, "opacity"); + return "" === n ? "1" : n; + } + }, + }, + }, + cssNumber: { + animationIterationCount: !0, + columnCount: !0, + fillOpacity: !0, + flexGrow: !0, + flexShrink: !0, + fontWeight: !0, + gridArea: !0, + gridColumn: !0, + gridColumnEnd: !0, + gridColumnStart: !0, + gridRow: !0, + gridRowEnd: !0, + gridRowStart: !0, + lineHeight: !0, + opacity: !0, + order: !0, + orphans: !0, + widows: !0, + zIndex: !0, + zoom: !0, + }, + cssProps: {}, + style: function (e, t, n, r) { + if (e && 3 !== e.nodeType && 8 !== e.nodeType && e.style) { + var i, + o, + a, + s = X(t), + u = Xe.test(t), + l = e.style; + if ( + (u || (t = ze(s)), (a = S.cssHooks[t] || S.cssHooks[s]), void 0 === n) + ) + return a && "get" in a && void 0 !== (i = a.get(e, !1, r)) ? i : l[t]; + "string" === (o = typeof n) && + (i = te.exec(n)) && + i[1] && + ((n = se(e, t, i)), (o = "number")), + null != n && + n == n && + ("number" !== o || + u || + (n += (i && i[3]) || (S.cssNumber[s] ? "" : "px")), + y.clearCloneStyle || + "" !== n || + 0 !== t.indexOf("background") || + (l[t] = "inherit"), + (a && "set" in a && void 0 === (n = a.set(e, n, r))) || + (u ? l.setProperty(t, n) : (l[t] = n))); + } + }, + css: function (e, t, n, r) { + var i, + o, + a, + s = X(t); + return ( + Xe.test(t) || (t = ze(s)), + (a = S.cssHooks[t] || S.cssHooks[s]) && + "get" in a && + (i = a.get(e, !0, n)), + void 0 === i && (i = We(e, t, r)), + "normal" === i && t in Ge && (i = Ge[t]), + "" === n || n + ? ((o = parseFloat(i)), !0 === n || isFinite(o) ? o || 0 : i) + : i + ); + }, + }), + S.each(["height", "width"], function (e, u) { + S.cssHooks[u] = { + get: function (e, t, n) { + if (t) + return !Ue.test(S.css(e, "display")) || + (e.getClientRects().length && e.getBoundingClientRect().width) + ? Je(e, u, n) + : Me(e, Ve, function () { + return Je(e, u, n); + }); + }, + set: function (e, t, n) { + var r, + i = Re(e), + o = !y.scrollboxSize() && "absolute" === i.position, + a = (o || n) && "border-box" === S.css(e, "boxSizing", !1, i), + s = n ? Qe(e, u, n, a, i) : 0; + return ( + a && + o && + (s -= Math.ceil( + e["offset" + u[0].toUpperCase() + u.slice(1)] - + parseFloat(i[u]) - + Qe(e, u, "border", !1, i) - + 0.5 + )), + s && + (r = te.exec(t)) && + "px" !== (r[3] || "px") && + ((e.style[u] = t), (t = S.css(e, u))), + Ye(0, t, s) + ); + }, + }; + }), + (S.cssHooks.marginLeft = Fe(y.reliableMarginLeft, function (e, t) { + if (t) + return ( + (parseFloat(We(e, "marginLeft")) || + e.getBoundingClientRect().left - + Me(e, { marginLeft: 0 }, function () { + return e.getBoundingClientRect().left; + })) + "px" + ); + })), + S.each({ margin: "", padding: "", border: "Width" }, function (i, o) { + (S.cssHooks[i + o] = { + expand: function (e) { + for ( + var t = 0, n = {}, r = "string" == typeof e ? e.split(" ") : [e]; + t < 4; + t++ + ) + n[i + ne[t] + o] = r[t] || r[t - 2] || r[0]; + return n; + }, + }), + "margin" !== i && (S.cssHooks[i + o].set = Ye); + }), + S.fn.extend({ + css: function (e, t) { + return $( + this, + function (e, t, n) { + var r, + i, + o = {}, + a = 0; + if (Array.isArray(t)) { + for (r = Re(e), i = t.length; a < i; a++) + o[t[a]] = S.css(e, t[a], !1, r); + return o; + } + return void 0 !== n ? S.style(e, t, n) : S.css(e, t); + }, + e, + t, + 1 < arguments.length + ); + }, + }), + (((S.Tween = Ke).prototype = { + constructor: Ke, + init: function (e, t, n, r, i, o) { + (this.elem = e), + (this.prop = n), + (this.easing = i || S.easing._default), + (this.options = t), + (this.start = this.now = this.cur()), + (this.end = r), + (this.unit = o || (S.cssNumber[n] ? "" : "px")); + }, + cur: function () { + var e = Ke.propHooks[this.prop]; + return e && e.get ? e.get(this) : Ke.propHooks._default.get(this); + }, + run: function (e) { + var t, + n = Ke.propHooks[this.prop]; + return ( + this.options.duration + ? (this.pos = t = + S.easing[this.easing]( + e, + this.options.duration * e, + 0, + 1, + this.options.duration + )) + : (this.pos = t = e), + (this.now = (this.end - this.start) * t + this.start), + this.options.step && + this.options.step.call(this.elem, this.now, this), + n && n.set ? n.set(this) : Ke.propHooks._default.set(this), + this + ); + }, + }).init.prototype = Ke.prototype), + ((Ke.propHooks = { + _default: { + get: function (e) { + var t; + return 1 !== e.elem.nodeType || + (null != e.elem[e.prop] && null == e.elem.style[e.prop]) + ? e.elem[e.prop] + : (t = S.css(e.elem, e.prop, "")) && "auto" !== t + ? t + : 0; + }, + set: function (e) { + S.fx.step[e.prop] + ? S.fx.step[e.prop](e) + : 1 !== e.elem.nodeType || + (!S.cssHooks[e.prop] && null == e.elem.style[ze(e.prop)]) + ? (e.elem[e.prop] = e.now) + : S.style(e.elem, e.prop, e.now + e.unit); + }, + }, + }).scrollTop = Ke.propHooks.scrollLeft = + { + set: function (e) { + e.elem.nodeType && e.elem.parentNode && (e.elem[e.prop] = e.now); + }, + }), + (S.easing = { + linear: function (e) { + return e; + }, + swing: function (e) { + return 0.5 - Math.cos(e * Math.PI) / 2; + }, + _default: "swing", + }), + (S.fx = Ke.prototype.init), + (S.fx.step = {}); + var Ze, + et, + tt, + nt, + rt = /^(?:toggle|show|hide)$/, + it = /queueHooks$/; + function ot() { + et && + (!1 === E.hidden && C.requestAnimationFrame + ? C.requestAnimationFrame(ot) + : C.setTimeout(ot, S.fx.interval), + S.fx.tick()); + } + function at() { + return ( + C.setTimeout(function () { + Ze = void 0; + }), + (Ze = Date.now()) + ); + } + function st(e, t) { + var n, + r = 0, + i = { height: e }; + for (t = t ? 1 : 0; r < 4; r += 2 - t) + i["margin" + (n = ne[r])] = i["padding" + n] = e; + return t && (i.opacity = i.width = e), i; + } + function ut(e, t, n) { + for ( + var r, + i = (lt.tweeners[t] || []).concat(lt.tweeners["*"]), + o = 0, + a = i.length; + o < a; + o++ + ) + if ((r = i[o].call(n, t, e))) return r; + } + function lt(o, e, t) { + var n, + a, + r = 0, + i = lt.prefilters.length, + s = S.Deferred().always(function () { + delete u.elem; + }), + u = function () { + if (a) return !1; + for ( + var e = Ze || at(), + t = Math.max(0, l.startTime + l.duration - e), + n = 1 - (t / l.duration || 0), + r = 0, + i = l.tweens.length; + r < i; + r++ + ) + l.tweens[r].run(n); + return ( + s.notifyWith(o, [l, n, t]), + n < 1 && i + ? t + : (i || s.notifyWith(o, [l, 1, 0]), s.resolveWith(o, [l]), !1) + ); + }, + l = s.promise({ + elem: o, + props: S.extend({}, e), + opts: S.extend(!0, { specialEasing: {}, easing: S.easing._default }, t), + originalProperties: e, + originalOptions: t, + startTime: Ze || at(), + duration: t.duration, + tweens: [], + createTween: function (e, t) { + var n = S.Tween( + o, + l.opts, + e, + t, + l.opts.specialEasing[e] || l.opts.easing + ); + return l.tweens.push(n), n; + }, + stop: function (e) { + var t = 0, + n = e ? l.tweens.length : 0; + if (a) return this; + for (a = !0; t < n; t++) l.tweens[t].run(1); + return ( + e + ? (s.notifyWith(o, [l, 1, 0]), s.resolveWith(o, [l, e])) + : s.rejectWith(o, [l, e]), + this + ); + }, + }), + c = l.props; + for ( + !(function (e, t) { + var n, r, i, o, a; + for (n in e) + if ( + ((i = t[(r = X(n))]), + (o = e[n]), + Array.isArray(o) && ((i = o[1]), (o = e[n] = o[0])), + n !== r && ((e[r] = o), delete e[n]), + (a = S.cssHooks[r]) && ("expand" in a)) + ) + for (n in ((o = a.expand(o)), delete e[r], o)) + (n in e) || ((e[n] = o[n]), (t[n] = i)); + else t[r] = i; + })(c, l.opts.specialEasing); + r < i; + r++ + ) + if ((n = lt.prefilters[r].call(l, o, c, l.opts))) + return ( + m(n.stop) && + (S._queueHooks(l.elem, l.opts.queue).stop = n.stop.bind(n)), + n + ); + return ( + S.map(c, ut, l), + m(l.opts.start) && l.opts.start.call(o, l), + l + .progress(l.opts.progress) + .done(l.opts.done, l.opts.complete) + .fail(l.opts.fail) + .always(l.opts.always), + S.fx.timer(S.extend(u, { elem: o, anim: l, queue: l.opts.queue })), + l + ); + } + (S.Animation = S.extend(lt, { + tweeners: { + "*": [ + function (e, t) { + var n = this.createTween(e, t); + return se(n.elem, e, te.exec(t), n), n; + }, + ], + }, + tweener: function (e, t) { + m(e) ? ((t = e), (e = ["*"])) : (e = e.match(P)); + for (var n, r = 0, i = e.length; r < i; r++) + (n = e[r]), + (lt.tweeners[n] = lt.tweeners[n] || []), + lt.tweeners[n].unshift(t); + }, + prefilters: [ + function (e, t, n) { + var r, + i, + o, + a, + s, + u, + l, + c, + f = "width" in t || "height" in t, + p = this, + d = {}, + h = e.style, + g = e.nodeType && ae(e), + v = Y.get(e, "fxshow"); + for (r in (n.queue || + (null == (a = S._queueHooks(e, "fx")).unqueued && + ((a.unqueued = 0), + (s = a.empty.fire), + (a.empty.fire = function () { + a.unqueued || s(); + })), + a.unqueued++, + p.always(function () { + p.always(function () { + a.unqueued--, S.queue(e, "fx").length || a.empty.fire(); + }); + })), + t)) + if (((i = t[r]), rt.test(i))) { + if ( + (delete t[r], + (o = o || "toggle" === i), + i === (g ? "hide" : "show")) + ) { + if ("show" !== i || !v || void 0 === v[r]) continue; + g = !0; + } + d[r] = (v && v[r]) || S.style(e, r); + } + if ((u = !S.isEmptyObject(t)) || !S.isEmptyObject(d)) + for (r in (f && + 1 === e.nodeType && + ((n.overflow = [h.overflow, h.overflowX, h.overflowY]), + null == (l = v && v.display) && (l = Y.get(e, "display")), + "none" === (c = S.css(e, "display")) && + (l + ? (c = l) + : (le([e], !0), + (l = e.style.display || l), + (c = S.css(e, "display")), + le([e]))), + ("inline" === c || ("inline-block" === c && null != l)) && + "none" === S.css(e, "float") && + (u || + (p.done(function () { + h.display = l; + }), + null == l && ((c = h.display), (l = "none" === c ? "" : c))), + (h.display = "inline-block"))), + n.overflow && + ((h.overflow = "hidden"), + p.always(function () { + (h.overflow = n.overflow[0]), + (h.overflowX = n.overflow[1]), + (h.overflowY = n.overflow[2]); + })), + (u = !1), + d)) + u || + (v + ? "hidden" in v && (g = v.hidden) + : (v = Y.access(e, "fxshow", { display: l })), + o && (v.hidden = !g), + g && le([e], !0), + p.done(function () { + for (r in (g || le([e]), Y.remove(e, "fxshow"), d)) + S.style(e, r, d[r]); + })), + (u = ut(g ? v[r] : 0, r, p)), + r in v || + ((v[r] = u.start), g && ((u.end = u.start), (u.start = 0))); + }, + ], + prefilter: function (e, t) { + t ? lt.prefilters.unshift(e) : lt.prefilters.push(e); + }, + })), + (S.speed = function (e, t, n) { + var r = + e && "object" == typeof e + ? S.extend({}, e) + : { + complete: n || (!n && t) || (m(e) && e), + duration: e, + easing: (n && t) || (t && !m(t) && t), + }; + return ( + S.fx.off + ? (r.duration = 0) + : "number" != typeof r.duration && + (r.duration in S.fx.speeds + ? (r.duration = S.fx.speeds[r.duration]) + : (r.duration = S.fx.speeds._default)), + (null != r.queue && !0 !== r.queue) || (r.queue = "fx"), + (r.old = r.complete), + (r.complete = function () { + m(r.old) && r.old.call(this), r.queue && S.dequeue(this, r.queue); + }), + r + ); + }), + S.fn.extend({ + fadeTo: function (e, t, n, r) { + return this.filter(ae) + .css("opacity", 0) + .show() + .end() + .animate({ opacity: t }, e, n, r); + }, + animate: function (t, e, n, r) { + var i = S.isEmptyObject(t), + o = S.speed(e, n, r), + a = function () { + var e = lt(this, S.extend({}, t), o); + (i || Y.get(this, "finish")) && e.stop(!0); + }; + return ( + (a.finish = a), + i || !1 === o.queue ? this.each(a) : this.queue(o.queue, a) + ); + }, + stop: function (i, e, o) { + var a = function (e) { + var t = e.stop; + delete e.stop, t(o); + }; + return ( + "string" != typeof i && ((o = e), (e = i), (i = void 0)), + e && this.queue(i || "fx", []), + this.each(function () { + var e = !0, + t = null != i && i + "queueHooks", + n = S.timers, + r = Y.get(this); + if (t) r[t] && r[t].stop && a(r[t]); + else for (t in r) r[t] && r[t].stop && it.test(t) && a(r[t]); + for (t = n.length; t--; ) + n[t].elem !== this || + (null != i && n[t].queue !== i) || + (n[t].anim.stop(o), (e = !1), n.splice(t, 1)); + (!e && o) || S.dequeue(this, i); + }) + ); + }, + finish: function (a) { + return ( + !1 !== a && (a = a || "fx"), + this.each(function () { + var e, + t = Y.get(this), + n = t[a + "queue"], + r = t[a + "queueHooks"], + i = S.timers, + o = n ? n.length : 0; + for ( + t.finish = !0, + S.queue(this, a, []), + r && r.stop && r.stop.call(this, !0), + e = i.length; + e--; + + ) + i[e].elem === this && + i[e].queue === a && + (i[e].anim.stop(!0), i.splice(e, 1)); + for (e = 0; e < o; e++) + n[e] && n[e].finish && n[e].finish.call(this); + delete t.finish; + }) + ); + }, + }), + S.each(["toggle", "show", "hide"], function (e, r) { + var i = S.fn[r]; + S.fn[r] = function (e, t, n) { + return null == e || "boolean" == typeof e + ? i.apply(this, arguments) + : this.animate(st(r, !0), e, t, n); + }; + }), + S.each( + { + slideDown: st("show"), + slideUp: st("hide"), + slideToggle: st("toggle"), + fadeIn: { opacity: "show" }, + fadeOut: { opacity: "hide" }, + fadeToggle: { opacity: "toggle" }, + }, + function (e, r) { + S.fn[e] = function (e, t, n) { + return this.animate(r, e, t, n); + }; + } + ), + (S.timers = []), + (S.fx.tick = function () { + var e, + t = 0, + n = S.timers; + for (Ze = Date.now(); t < n.length; t++) + (e = n[t])() || n[t] !== e || n.splice(t--, 1); + n.length || S.fx.stop(), (Ze = void 0); + }), + (S.fx.timer = function (e) { + S.timers.push(e), S.fx.start(); + }), + (S.fx.interval = 13), + (S.fx.start = function () { + et || ((et = !0), ot()); + }), + (S.fx.stop = function () { + et = null; + }), + (S.fx.speeds = { slow: 600, fast: 200, _default: 400 }), + (S.fn.delay = function (r, e) { + return ( + (r = (S.fx && S.fx.speeds[r]) || r), + (e = e || "fx"), + this.queue(e, function (e, t) { + var n = C.setTimeout(e, r); + t.stop = function () { + C.clearTimeout(n); + }; + }) + ); + }), + (tt = E.createElement("input")), + (nt = E.createElement("select").appendChild(E.createElement("option"))), + (tt.type = "checkbox"), + (y.checkOn = "" !== tt.value), + (y.optSelected = nt.selected), + ((tt = E.createElement("input")).value = "t"), + (tt.type = "radio"), + (y.radioValue = "t" === tt.value); + var ct, + ft = S.expr.attrHandle; + S.fn.extend({ + attr: function (e, t) { + return $(this, S.attr, e, t, 1 < arguments.length); + }, + removeAttr: function (e) { + return this.each(function () { + S.removeAttr(this, e); + }); + }, + }), + S.extend({ + attr: function (e, t, n) { + var r, + i, + o = e.nodeType; + if (3 !== o && 8 !== o && 2 !== o) + return "undefined" == typeof e.getAttribute + ? S.prop(e, t, n) + : ((1 === o && S.isXMLDoc(e)) || + (i = + S.attrHooks[t.toLowerCase()] || + (S.expr.match.bool.test(t) ? ct : void 0)), + void 0 !== n + ? null === n + ? void S.removeAttr(e, t) + : i && "set" in i && void 0 !== (r = i.set(e, n, t)) + ? r + : (e.setAttribute(t, n + ""), n) + : i && "get" in i && null !== (r = i.get(e, t)) + ? r + : null == (r = S.find.attr(e, t)) + ? void 0 + : r); + }, + attrHooks: { + type: { + set: function (e, t) { + if (!y.radioValue && "radio" === t && A(e, "input")) { + var n = e.value; + return e.setAttribute("type", t), n && (e.value = n), t; + } + }, + }, + }, + removeAttr: function (e, t) { + var n, + r = 0, + i = t && t.match(P); + if (i && 1 === e.nodeType) while ((n = i[r++])) e.removeAttribute(n); + }, + }), + (ct = { + set: function (e, t, n) { + return !1 === t ? S.removeAttr(e, n) : e.setAttribute(n, n), n; + }, + }), + S.each(S.expr.match.bool.source.match(/\w+/g), function (e, t) { + var a = ft[t] || S.find.attr; + ft[t] = function (e, t, n) { + var r, + i, + o = t.toLowerCase(); + return ( + n || + ((i = ft[o]), + (ft[o] = r), + (r = null != a(e, t, n) ? o : null), + (ft[o] = i)), + r + ); + }; + }); + var pt = /^(?:input|select|textarea|button)$/i, + dt = /^(?:a|area)$/i; + function ht(e) { + return (e.match(P) || []).join(" "); + } + function gt(e) { + return (e.getAttribute && e.getAttribute("class")) || ""; + } + function vt(e) { + return Array.isArray(e) ? e : ("string" == typeof e && e.match(P)) || []; + } + S.fn.extend({ + prop: function (e, t) { + return $(this, S.prop, e, t, 1 < arguments.length); + }, + removeProp: function (e) { + return this.each(function () { + delete this[S.propFix[e] || e]; + }); + }, + }), + S.extend({ + prop: function (e, t, n) { + var r, + i, + o = e.nodeType; + if (3 !== o && 8 !== o && 2 !== o) + return ( + (1 === o && S.isXMLDoc(e)) || + ((t = S.propFix[t] || t), (i = S.propHooks[t])), + void 0 !== n + ? i && "set" in i && void 0 !== (r = i.set(e, n, t)) + ? r + : (e[t] = n) + : i && "get" in i && null !== (r = i.get(e, t)) + ? r + : e[t] + ); + }, + propHooks: { + tabIndex: { + get: function (e) { + var t = S.find.attr(e, "tabindex"); + return t + ? parseInt(t, 10) + : pt.test(e.nodeName) || (dt.test(e.nodeName) && e.href) + ? 0 + : -1; + }, + }, + }, + propFix: { for: "htmlFor", class: "className" }, + }), + y.optSelected || + (S.propHooks.selected = { + get: function (e) { + var t = e.parentNode; + return t && t.parentNode && t.parentNode.selectedIndex, null; + }, + set: function (e) { + var t = e.parentNode; + t && (t.selectedIndex, t.parentNode && t.parentNode.selectedIndex); + }, + }), + S.each( + [ + "tabIndex", + "readOnly", + "maxLength", + "cellSpacing", + "cellPadding", + "rowSpan", + "colSpan", + "useMap", + "frameBorder", + "contentEditable", + ], + function () { + S.propFix[this.toLowerCase()] = this; + } + ), + S.fn.extend({ + addClass: function (t) { + var e, + n, + r, + i, + o, + a, + s, + u = 0; + if (m(t)) + return this.each(function (e) { + S(this).addClass(t.call(this, e, gt(this))); + }); + if ((e = vt(t)).length) + while ((n = this[u++])) + if (((i = gt(n)), (r = 1 === n.nodeType && " " + ht(i) + " "))) { + a = 0; + while ((o = e[a++])) + r.indexOf(" " + o + " ") < 0 && (r += o + " "); + i !== (s = ht(r)) && n.setAttribute("class", s); + } + return this; + }, + removeClass: function (t) { + var e, + n, + r, + i, + o, + a, + s, + u = 0; + if (m(t)) + return this.each(function (e) { + S(this).removeClass(t.call(this, e, gt(this))); + }); + if (!arguments.length) return this.attr("class", ""); + if ((e = vt(t)).length) + while ((n = this[u++])) + if (((i = gt(n)), (r = 1 === n.nodeType && " " + ht(i) + " "))) { + a = 0; + while ((o = e[a++])) + while (-1 < r.indexOf(" " + o + " ")) + r = r.replace(" " + o + " ", " "); + i !== (s = ht(r)) && n.setAttribute("class", s); + } + return this; + }, + toggleClass: function (i, t) { + var o = typeof i, + a = "string" === o || Array.isArray(i); + return "boolean" == typeof t && a + ? t + ? this.addClass(i) + : this.removeClass(i) + : m(i) + ? this.each(function (e) { + S(this).toggleClass(i.call(this, e, gt(this), t), t); + }) + : this.each(function () { + var e, t, n, r; + if (a) { + (t = 0), (n = S(this)), (r = vt(i)); + while ((e = r[t++])) + n.hasClass(e) ? n.removeClass(e) : n.addClass(e); + } else (void 0 !== i && "boolean" !== o) || ((e = gt(this)) && Y.set(this, "__className__", e), this.setAttribute && this.setAttribute("class", e || !1 === i ? "" : Y.get(this, "__className__") || "")); + }); + }, + hasClass: function (e) { + var t, + n, + r = 0; + t = " " + e + " "; + while ((n = this[r++])) + if (1 === n.nodeType && -1 < (" " + ht(gt(n)) + " ").indexOf(t)) + return !0; + return !1; + }, + }); + var yt = /\r/g; + S.fn.extend({ + val: function (n) { + var r, + e, + i, + t = this[0]; + return arguments.length + ? ((i = m(n)), + this.each(function (e) { + var t; + 1 === this.nodeType && + (null == (t = i ? n.call(this, e, S(this).val()) : n) + ? (t = "") + : "number" == typeof t + ? (t += "") + : Array.isArray(t) && + (t = S.map(t, function (e) { + return null == e ? "" : e + ""; + })), + ((r = + S.valHooks[this.type] || + S.valHooks[this.nodeName.toLowerCase()]) && + "set" in r && + void 0 !== r.set(this, t, "value")) || + (this.value = t)); + })) + : t + ? (r = S.valHooks[t.type] || S.valHooks[t.nodeName.toLowerCase()]) && + "get" in r && + void 0 !== (e = r.get(t, "value")) + ? e + : "string" == typeof (e = t.value) + ? e.replace(yt, "") + : null == e + ? "" + : e + : void 0; + }, + }), + S.extend({ + valHooks: { + option: { + get: function (e) { + var t = S.find.attr(e, "value"); + return null != t ? t : ht(S.text(e)); + }, + }, + select: { + get: function (e) { + var t, + n, + r, + i = e.options, + o = e.selectedIndex, + a = "select-one" === e.type, + s = a ? null : [], + u = a ? o + 1 : i.length; + for (r = o < 0 ? u : a ? o : 0; r < u; r++) + if ( + ((n = i[r]).selected || r === o) && + !n.disabled && + (!n.parentNode.disabled || !A(n.parentNode, "optgroup")) + ) { + if (((t = S(n).val()), a)) return t; + s.push(t); + } + return s; + }, + set: function (e, t) { + var n, + r, + i = e.options, + o = S.makeArray(t), + a = i.length; + while (a--) + ((r = i[a]).selected = + -1 < S.inArray(S.valHooks.option.get(r), o)) && (n = !0); + return n || (e.selectedIndex = -1), o; + }, + }, + }, + }), + S.each(["radio", "checkbox"], function () { + (S.valHooks[this] = { + set: function (e, t) { + if (Array.isArray(t)) + return (e.checked = -1 < S.inArray(S(e).val(), t)); + }, + }), + y.checkOn || + (S.valHooks[this].get = function (e) { + return null === e.getAttribute("value") ? "on" : e.value; + }); + }), + (y.focusin = "onfocusin" in C); + var mt = /^(?:focusinfocus|focusoutblur)$/, + xt = function (e) { + e.stopPropagation(); + }; + S.extend(S.event, { + trigger: function (e, t, n, r) { + var i, + o, + a, + s, + u, + l, + c, + f, + p = [n || E], + d = v.call(e, "type") ? e.type : e, + h = v.call(e, "namespace") ? e.namespace.split(".") : []; + if ( + ((o = f = a = n = n || E), + 3 !== n.nodeType && + 8 !== n.nodeType && + !mt.test(d + S.event.triggered) && + (-1 < d.indexOf(".") && ((d = (h = d.split(".")).shift()), h.sort()), + (u = d.indexOf(":") < 0 && "on" + d), + ((e = e[S.expando] + ? e + : new S.Event(d, "object" == typeof e && e)).isTrigger = r ? 2 : 3), + (e.namespace = h.join(".")), + (e.rnamespace = e.namespace + ? new RegExp("(^|\\.)" + h.join("\\.(?:.*\\.|)") + "(\\.|$)") + : null), + (e.result = void 0), + e.target || (e.target = n), + (t = null == t ? [e] : S.makeArray(t, [e])), + (c = S.event.special[d] || {}), + r || !c.trigger || !1 !== c.trigger.apply(n, t))) + ) { + if (!r && !c.noBubble && !x(n)) { + for ( + s = c.delegateType || d, mt.test(s + d) || (o = o.parentNode); + o; + o = o.parentNode + ) + p.push(o), (a = o); + a === (n.ownerDocument || E) && + p.push(a.defaultView || a.parentWindow || C); + } + i = 0; + while ((o = p[i++]) && !e.isPropagationStopped()) + (f = o), + (e.type = 1 < i ? s : c.bindType || d), + (l = + (Y.get(o, "events") || Object.create(null))[e.type] && + Y.get(o, "handle")) && l.apply(o, t), + (l = u && o[u]) && + l.apply && + V(o) && + ((e.result = l.apply(o, t)), + !1 === e.result && e.preventDefault()); + return ( + (e.type = d), + r || + e.isDefaultPrevented() || + (c._default && !1 !== c._default.apply(p.pop(), t)) || + !V(n) || + (u && + m(n[d]) && + !x(n) && + ((a = n[u]) && (n[u] = null), + (S.event.triggered = d), + e.isPropagationStopped() && f.addEventListener(d, xt), + n[d](), + e.isPropagationStopped() && f.removeEventListener(d, xt), + (S.event.triggered = void 0), + a && (n[u] = a))), + e.result + ); + } + }, + simulate: function (e, t, n) { + var r = S.extend(new S.Event(), n, { type: e, isSimulated: !0 }); + S.event.trigger(r, null, t); + }, + }), + S.fn.extend({ + trigger: function (e, t) { + return this.each(function () { + S.event.trigger(e, t, this); + }); + }, + triggerHandler: function (e, t) { + var n = this[0]; + if (n) return S.event.trigger(e, t, n, !0); + }, + }), + y.focusin || + S.each({ focus: "focusin", blur: "focusout" }, function (n, r) { + var i = function (e) { + S.event.simulate(r, e.target, S.event.fix(e)); + }; + S.event.special[r] = { + setup: function () { + var e = this.ownerDocument || this.document || this, + t = Y.access(e, r); + t || e.addEventListener(n, i, !0), Y.access(e, r, (t || 0) + 1); + }, + teardown: function () { + var e = this.ownerDocument || this.document || this, + t = Y.access(e, r) - 1; + t + ? Y.access(e, r, t) + : (e.removeEventListener(n, i, !0), Y.remove(e, r)); + }, + }; + }); + var bt = C.location, + wt = { guid: Date.now() }, + Tt = /\?/; + S.parseXML = function (e) { + var t, n; + if (!e || "string" != typeof e) return null; + try { + t = new C.DOMParser().parseFromString(e, "text/xml"); + } catch (e) {} + return ( + (n = t && t.getElementsByTagName("parsererror")[0]), + (t && !n) || + S.error( + "Invalid XML: " + + (n + ? S.map(n.childNodes, function (e) { + return e.textContent; + }).join("\n") + : e) + ), + t + ); + }; + var Ct = /\[\]$/, + Et = /\r?\n/g, + St = /^(?:submit|button|image|reset|file)$/i, + kt = /^(?:input|select|textarea|keygen)/i; + function At(n, e, r, i) { + var t; + if (Array.isArray(e)) + S.each(e, function (e, t) { + r || Ct.test(n) + ? i(n, t) + : At( + n + "[" + ("object" == typeof t && null != t ? e : "") + "]", + t, + r, + i + ); + }); + else if (r || "object" !== w(e)) i(n, e); + else for (t in e) At(n + "[" + t + "]", e[t], r, i); + } + (S.param = function (e, t) { + var n, + r = [], + i = function (e, t) { + var n = m(t) ? t() : t; + r[r.length] = + encodeURIComponent(e) + "=" + encodeURIComponent(null == n ? "" : n); + }; + if (null == e) return ""; + if (Array.isArray(e) || (e.jquery && !S.isPlainObject(e))) + S.each(e, function () { + i(this.name, this.value); + }); + else for (n in e) At(n, e[n], t, i); + return r.join("&"); + }), + S.fn.extend({ + serialize: function () { + return S.param(this.serializeArray()); + }, + serializeArray: function () { + return this.map(function () { + var e = S.prop(this, "elements"); + return e ? S.makeArray(e) : this; + }) + .filter(function () { + var e = this.type; + return ( + this.name && + !S(this).is(":disabled") && + kt.test(this.nodeName) && + !St.test(e) && + (this.checked || !pe.test(e)) + ); + }) + .map(function (e, t) { + var n = S(this).val(); + return null == n + ? null + : Array.isArray(n) + ? S.map(n, function (e) { + return { name: t.name, value: e.replace(Et, "\r\n") }; + }) + : { name: t.name, value: n.replace(Et, "\r\n") }; + }) + .get(); + }, + }); + var Nt = /%20/g, + jt = /#.*$/, + Dt = /([?&])_=[^&]*/, + qt = /^(.*?):[ \t]*([^\r\n]*)$/gm, + Lt = /^(?:GET|HEAD)$/, + Ht = /^\/\//, + Ot = {}, + Pt = {}, + Rt = "*/".concat("*"), + Mt = E.createElement("a"); + function It(o) { + return function (e, t) { + "string" != typeof e && ((t = e), (e = "*")); + var n, + r = 0, + i = e.toLowerCase().match(P) || []; + if (m(t)) + while ((n = i[r++])) + "+" === n[0] + ? ((n = n.slice(1) || "*"), (o[n] = o[n] || []).unshift(t)) + : (o[n] = o[n] || []).push(t); + }; + } + function Wt(t, i, o, a) { + var s = {}, + u = t === Pt; + function l(e) { + var r; + return ( + (s[e] = !0), + S.each(t[e] || [], function (e, t) { + var n = t(i, o, a); + return "string" != typeof n || u || s[n] + ? u + ? !(r = n) + : void 0 + : (i.dataTypes.unshift(n), l(n), !1); + }), + r + ); + } + return l(i.dataTypes[0]) || (!s["*"] && l("*")); + } + function Ft(e, t) { + var n, + r, + i = S.ajaxSettings.flatOptions || {}; + for (n in t) void 0 !== t[n] && ((i[n] ? e : r || (r = {}))[n] = t[n]); + return r && S.extend(!0, e, r), e; + } + (Mt.href = bt.href), + S.extend({ + active: 0, + lastModified: {}, + etag: {}, + ajaxSettings: { + url: bt.href, + type: "GET", + isLocal: + /^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test( + bt.protocol + ), + global: !0, + processData: !0, + async: !0, + contentType: "application/x-www-form-urlencoded; charset=UTF-8", + accepts: { + "*": Rt, + text: "text/plain", + html: "text/html", + xml: "application/xml, text/xml", + json: "application/json, text/javascript", + }, + contents: { xml: /\bxml\b/, html: /\bhtml/, json: /\bjson\b/ }, + responseFields: { + xml: "responseXML", + text: "responseText", + json: "responseJSON", + }, + converters: { + "* text": String, + "text html": !0, + "text json": JSON.parse, + "text xml": S.parseXML, + }, + flatOptions: { url: !0, context: !0 }, + }, + ajaxSetup: function (e, t) { + return t ? Ft(Ft(e, S.ajaxSettings), t) : Ft(S.ajaxSettings, e); + }, + ajaxPrefilter: It(Ot), + ajaxTransport: It(Pt), + ajax: function (e, t) { + "object" == typeof e && ((t = e), (e = void 0)), (t = t || {}); + var c, + f, + p, + n, + d, + r, + h, + g, + i, + o, + v = S.ajaxSetup({}, t), + y = v.context || v, + m = v.context && (y.nodeType || y.jquery) ? S(y) : S.event, + x = S.Deferred(), + b = S.Callbacks("once memory"), + w = v.statusCode || {}, + a = {}, + s = {}, + u = "canceled", + T = { + readyState: 0, + getResponseHeader: function (e) { + var t; + if (h) { + if (!n) { + n = {}; + while ((t = qt.exec(p))) + n[t[1].toLowerCase() + " "] = ( + n[t[1].toLowerCase() + " "] || [] + ).concat(t[2]); + } + t = n[e.toLowerCase() + " "]; + } + return null == t ? null : t.join(", "); + }, + getAllResponseHeaders: function () { + return h ? p : null; + }, + setRequestHeader: function (e, t) { + return ( + null == h && + ((e = s[e.toLowerCase()] = s[e.toLowerCase()] || e), + (a[e] = t)), + this + ); + }, + overrideMimeType: function (e) { + return null == h && (v.mimeType = e), this; + }, + statusCode: function (e) { + var t; + if (e) + if (h) T.always(e[T.status]); + else for (t in e) w[t] = [w[t], e[t]]; + return this; + }, + abort: function (e) { + var t = e || u; + return c && c.abort(t), l(0, t), this; + }, + }; + if ( + (x.promise(T), + (v.url = ((e || v.url || bt.href) + "").replace( + Ht, + bt.protocol + "//" + )), + (v.type = t.method || t.type || v.method || v.type), + (v.dataTypes = (v.dataType || "*").toLowerCase().match(P) || [""]), + null == v.crossDomain) + ) { + r = E.createElement("a"); + try { + (r.href = v.url), + (r.href = r.href), + (v.crossDomain = + Mt.protocol + "//" + Mt.host != r.protocol + "//" + r.host); + } catch (e) { + v.crossDomain = !0; + } + } + if ( + (v.data && + v.processData && + "string" != typeof v.data && + (v.data = S.param(v.data, v.traditional)), + Wt(Ot, v, t, T), + h) + ) + return T; + for (i in ((g = S.event && v.global) && + 0 == S.active++ && + S.event.trigger("ajaxStart"), + (v.type = v.type.toUpperCase()), + (v.hasContent = !Lt.test(v.type)), + (f = v.url.replace(jt, "")), + v.hasContent + ? v.data && + v.processData && + 0 === + (v.contentType || "").indexOf( + "application/x-www-form-urlencoded" + ) && + (v.data = v.data.replace(Nt, "+")) + : ((o = v.url.slice(f.length)), + v.data && + (v.processData || "string" == typeof v.data) && + ((f += (Tt.test(f) ? "&" : "?") + v.data), delete v.data), + !1 === v.cache && + ((f = f.replace(Dt, "$1")), + (o = (Tt.test(f) ? "&" : "?") + "_=" + wt.guid++ + o)), + (v.url = f + o)), + v.ifModified && + (S.lastModified[f] && + T.setRequestHeader("If-Modified-Since", S.lastModified[f]), + S.etag[f] && T.setRequestHeader("If-None-Match", S.etag[f])), + ((v.data && v.hasContent && !1 !== v.contentType) || t.contentType) && + T.setRequestHeader("Content-Type", v.contentType), + T.setRequestHeader( + "Accept", + v.dataTypes[0] && v.accepts[v.dataTypes[0]] + ? v.accepts[v.dataTypes[0]] + + ("*" !== v.dataTypes[0] ? ", " + Rt + "; q=0.01" : "") + : v.accepts["*"] + ), + v.headers)) + T.setRequestHeader(i, v.headers[i]); + if (v.beforeSend && (!1 === v.beforeSend.call(y, T, v) || h)) + return T.abort(); + if ( + ((u = "abort"), + b.add(v.complete), + T.done(v.success), + T.fail(v.error), + (c = Wt(Pt, v, t, T))) + ) { + if (((T.readyState = 1), g && m.trigger("ajaxSend", [T, v]), h)) + return T; + v.async && + 0 < v.timeout && + (d = C.setTimeout(function () { + T.abort("timeout"); + }, v.timeout)); + try { + (h = !1), c.send(a, l); + } catch (e) { + if (h) throw e; + l(-1, e); + } + } else l(-1, "No Transport"); + function l(e, t, n, r) { + var i, + o, + a, + s, + u, + l = t; + h || + ((h = !0), + d && C.clearTimeout(d), + (c = void 0), + (p = r || ""), + (T.readyState = 0 < e ? 4 : 0), + (i = (200 <= e && e < 300) || 304 === e), + n && + (s = (function (e, t, n) { + var r, + i, + o, + a, + s = e.contents, + u = e.dataTypes; + while ("*" === u[0]) + u.shift(), + void 0 === r && + (r = e.mimeType || t.getResponseHeader("Content-Type")); + if (r) + for (i in s) + if (s[i] && s[i].test(r)) { + u.unshift(i); + break; + } + if (u[0] in n) o = u[0]; + else { + for (i in n) { + if (!u[0] || e.converters[i + " " + u[0]]) { + o = i; + break; + } + a || (a = i); + } + o = o || a; + } + if (o) return o !== u[0] && u.unshift(o), n[o]; + })(v, T, n)), + !i && + -1 < S.inArray("script", v.dataTypes) && + S.inArray("json", v.dataTypes) < 0 && + (v.converters["text script"] = function () {}), + (s = (function (e, t, n, r) { + var i, + o, + a, + s, + u, + l = {}, + c = e.dataTypes.slice(); + if (c[1]) + for (a in e.converters) l[a.toLowerCase()] = e.converters[a]; + o = c.shift(); + while (o) + if ( + (e.responseFields[o] && (n[e.responseFields[o]] = t), + !u && r && e.dataFilter && (t = e.dataFilter(t, e.dataType)), + (u = o), + (o = c.shift())) + ) + if ("*" === o) o = u; + else if ("*" !== u && u !== o) { + if (!(a = l[u + " " + o] || l["* " + o])) + for (i in l) + if ( + (s = i.split(" "))[1] === o && + (a = l[u + " " + s[0]] || l["* " + s[0]]) + ) { + !0 === a + ? (a = l[i]) + : !0 !== l[i] && ((o = s[0]), c.unshift(s[1])); + break; + } + if (!0 !== a) + if (a && e["throws"]) t = a(t); + else + try { + t = a(t); + } catch (e) { + return { + state: "parsererror", + error: a + ? e + : "No conversion from " + u + " to " + o, + }; + } + } + return { state: "success", data: t }; + })(v, s, T, i)), + i + ? (v.ifModified && + ((u = T.getResponseHeader("Last-Modified")) && + (S.lastModified[f] = u), + (u = T.getResponseHeader("etag")) && (S.etag[f] = u)), + 204 === e || "HEAD" === v.type + ? (l = "nocontent") + : 304 === e + ? (l = "notmodified") + : ((l = s.state), (o = s.data), (i = !(a = s.error)))) + : ((a = l), (!e && l) || ((l = "error"), e < 0 && (e = 0))), + (T.status = e), + (T.statusText = (t || l) + ""), + i ? x.resolveWith(y, [o, l, T]) : x.rejectWith(y, [T, l, a]), + T.statusCode(w), + (w = void 0), + g && m.trigger(i ? "ajaxSuccess" : "ajaxError", [T, v, i ? o : a]), + b.fireWith(y, [T, l]), + g && + (m.trigger("ajaxComplete", [T, v]), + --S.active || S.event.trigger("ajaxStop"))); + } + return T; + }, + getJSON: function (e, t, n) { + return S.get(e, t, n, "json"); + }, + getScript: function (e, t) { + return S.get(e, void 0, t, "script"); + }, + }), + S.each(["get", "post"], function (e, i) { + S[i] = function (e, t, n, r) { + return ( + m(t) && ((r = r || n), (n = t), (t = void 0)), + S.ajax( + S.extend( + { url: e, type: i, dataType: r, data: t, success: n }, + S.isPlainObject(e) && e + ) + ) + ); + }; + }), + S.ajaxPrefilter(function (e) { + var t; + for (t in e.headers) + "content-type" === t.toLowerCase() && + (e.contentType = e.headers[t] || ""); + }), + (S._evalUrl = function (e, t, n) { + return S.ajax({ + url: e, + type: "GET", + dataType: "script", + cache: !0, + async: !1, + global: !1, + converters: { "text script": function () {} }, + dataFilter: function (e) { + S.globalEval(e, t, n); + }, + }); + }), + S.fn.extend({ + wrapAll: function (e) { + var t; + return ( + this[0] && + (m(e) && (e = e.call(this[0])), + (t = S(e, this[0].ownerDocument).eq(0).clone(!0)), + this[0].parentNode && t.insertBefore(this[0]), + t + .map(function () { + var e = this; + while (e.firstElementChild) e = e.firstElementChild; + return e; + }) + .append(this)), + this + ); + }, + wrapInner: function (n) { + return m(n) + ? this.each(function (e) { + S(this).wrapInner(n.call(this, e)); + }) + : this.each(function () { + var e = S(this), + t = e.contents(); + t.length ? t.wrapAll(n) : e.append(n); + }); + }, + wrap: function (t) { + var n = m(t); + return this.each(function (e) { + S(this).wrapAll(n ? t.call(this, e) : t); + }); + }, + unwrap: function (e) { + return ( + this.parent(e) + .not("body") + .each(function () { + S(this).replaceWith(this.childNodes); + }), + this + ); + }, + }), + (S.expr.pseudos.hidden = function (e) { + return !S.expr.pseudos.visible(e); + }), + (S.expr.pseudos.visible = function (e) { + return !!(e.offsetWidth || e.offsetHeight || e.getClientRects().length); + }), + (S.ajaxSettings.xhr = function () { + try { + return new C.XMLHttpRequest(); + } catch (e) {} + }); + var Bt = { 0: 200, 1223: 204 }, + $t = S.ajaxSettings.xhr(); + (y.cors = !!$t && "withCredentials" in $t), + (y.ajax = $t = !!$t), + S.ajaxTransport(function (i) { + var o, a; + if (y.cors || ($t && !i.crossDomain)) + return { + send: function (e, t) { + var n, + r = i.xhr(); + if ( + (r.open(i.type, i.url, i.async, i.username, i.password), + i.xhrFields) + ) + for (n in i.xhrFields) r[n] = i.xhrFields[n]; + for (n in (i.mimeType && + r.overrideMimeType && + r.overrideMimeType(i.mimeType), + i.crossDomain || + e["X-Requested-With"] || + (e["X-Requested-With"] = "XMLHttpRequest"), + e)) + r.setRequestHeader(n, e[n]); + (o = function (e) { + return function () { + o && + ((o = + a = + r.onload = + r.onerror = + r.onabort = + r.ontimeout = + r.onreadystatechange = + null), + "abort" === e + ? r.abort() + : "error" === e + ? "number" != typeof r.status + ? t(0, "error") + : t(r.status, r.statusText) + : t( + Bt[r.status] || r.status, + r.statusText, + "text" !== (r.responseType || "text") || + "string" != typeof r.responseText + ? { binary: r.response } + : { text: r.responseText }, + r.getAllResponseHeaders() + )); + }; + }), + (r.onload = o()), + (a = r.onerror = r.ontimeout = o("error")), + void 0 !== r.onabort + ? (r.onabort = a) + : (r.onreadystatechange = function () { + 4 === r.readyState && + C.setTimeout(function () { + o && a(); + }); + }), + (o = o("abort")); + try { + r.send((i.hasContent && i.data) || null); + } catch (e) { + if (o) throw e; + } + }, + abort: function () { + o && o(); + }, + }; + }), + S.ajaxPrefilter(function (e) { + e.crossDomain && (e.contents.script = !1); + }), + S.ajaxSetup({ + accepts: { + script: + "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript", + }, + contents: { script: /\b(?:java|ecma)script\b/ }, + converters: { + "text script": function (e) { + return S.globalEval(e), e; + }, + }, + }), + S.ajaxPrefilter("script", function (e) { + void 0 === e.cache && (e.cache = !1), e.crossDomain && (e.type = "GET"); + }), + S.ajaxTransport("script", function (n) { + var r, i; + if (n.crossDomain || n.scriptAttrs) + return { + send: function (e, t) { + (r = S("