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
+

@@ -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 = " ";
- 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 = " ";
- 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 =
+ " ";
+ 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 =
+ " ";
+ 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 = /