diff --git a/.babelrc b/.babelrc
deleted file mode 100644
index 3309edc..0000000
--- a/.babelrc
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "presets": ["@babel/typescript"]
-}
\ No newline at end of file
diff --git a/.eslintrc.js b/.eslintrc.js
new file mode 100644
index 0000000..aa8cc1c
--- /dev/null
+++ b/.eslintrc.js
@@ -0,0 +1,44 @@
+module.exports = {
+ env: {
+ browser: true,
+ es2021: true,
+ },
+ extends: [
+ 'eslint:recommended',
+ 'plugin:@typescript-eslint/recommended',
+ 'plugin:wc/recommended',
+ 'plugin:lit/recommended',
+ ],
+ parser: '@typescript-eslint/parser',
+ parserOptions: {
+ ecmaVersion: 12,
+ project: './tsconfig.json',
+ sourceType: 'module',
+ },
+ plugins: [
+ '@typescript-eslint',
+ ],
+ rules: {
+ indent: [
+ 'error',
+ 2,
+ { SwitchCase: 1 },
+ ],
+ 'linebreak-style': [
+ 'error',
+ 'unix',
+ ],
+ quotes: [
+ 'error',
+ 'single',
+ ],
+ semi: [
+ 'error',
+ 'always',
+ ],
+ 'comma-dangle': [
+ 'error',
+ 'always-multiline',
+ ],
+ }
+};
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 0000000..4838169
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,26 @@
+name: CI
+
+on:
+ pull_request:
+ branches:
+ - '**'
+
+jobs:
+ lint:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - run: npm ci
+ - run: npm run lint
+ type-check:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - run: npm ci
+ - run: npm run type-check
+ build:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - run: npm ci
+ - run: npm run build
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index a3f7477..29d9765 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,3 +2,4 @@
node_modules/
dist/content/
dist/background.js
+dist/LICENSE-DETAILS.md
diff --git a/.vscode/extensions.json b/.vscode/extensions.json
new file mode 100644
index 0000000..fc928d2
--- /dev/null
+++ b/.vscode/extensions.json
@@ -0,0 +1,7 @@
+{
+ "recommendations": [
+ "dbaeumer.vscode-eslint",
+ "runem.lit-plugin",
+ "formulahendry.auto-rename-tag"
+ ]
+}
\ No newline at end of file
diff --git a/.vscode/typescript.code-snippets b/.vscode/typescript.code-snippets
new file mode 100644
index 0000000..e043088
--- /dev/null
+++ b/.vscode/typescript.code-snippets
@@ -0,0 +1,38 @@
+{
+ "WebComponent based on LitElement": {
+ "prefix": [
+ "webcomponent"
+ ],
+ "body": [
+ "import '@webcomponents/webcomponentsjs';",
+ "import { LitElement, css, html } from 'lit';",
+ "import { customElement, property } from 'lit/decorators';",
+ "",
+ "const ${TM_FILENAME_BASE/([A-Z])(.*)/${1:/downcase}${2}/} = 'flashkill${TM_FILENAME_BASE/([A-Z])([a-z])/-${1:/downcase}${2}/g}';",
+ "",
+ "@customElement(${TM_FILENAME_BASE/([A-Z])(.*)/${1:/downcase}${2}/})",
+ "class ${TM_FILENAME_BASE} extends LitElement {",
+ "\t@property() $1",
+ "",
+ "\tstatic styles = css`",
+ "\t\t:host {",
+ "\t\t}",
+ "\t`;",
+ "",
+ "\trender() {",
+ "\t\treturn html`",
+ "\t\t\t$2",
+ "\t\t`;",
+ "\t}",
+ "}",
+ "",
+ "declare global {",
+ "\tinterface HTMLElementTagNameMap {",
+ "\t\t[${TM_FILENAME_BASE/([A-Z])(.*)/${1:/downcase}${2}/}]: ${TM_FILENAME_BASE},",
+ "\t}",
+ "};",
+ "",
+ ],
+ "description": "WebComponent based on LitElement"
+ },
+}
\ No newline at end of file
diff --git a/babel.config.js b/babel.config.js
new file mode 100644
index 0000000..160e8fd
--- /dev/null
+++ b/babel.config.js
@@ -0,0 +1,9 @@
+module.exports = (api) => {
+ api.cache(true);
+ return {
+ presets: [
+ '@babel/preset-typescript',
+ 'babel-preset-expo',
+ ],
+ };
+};
\ No newline at end of file
diff --git a/dist/LICENSE-DETAILS.txt b/dist/LICENSE-DETAILS.txt
deleted file mode 100644
index e40eacb..0000000
--- a/dist/LICENSE-DETAILS.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-License details for open-source software used in this project:
-jQuery v3.4.0 | (c) JS Foundation and other contributors | jquery.org/license
-DataTables 1.10.19 | ©2008-2018 SpryMedia Ltd | datatables.net/license
-C-like unsigned 64 bits integers in Javascript (js-cuint) | Copyright (C) 2013, Pierre Curto | github.com/pierrec/js-cuint/blob/master/LICENSE
-node-steamid | Copyright (c) 2015 Alexander Corn | github.com/DoctorMcKay/node-steamid/blob/master/LICENSE
-jQuery MultiSelect | Copyright (c) 2014 Patrick Springstubbe | github.com/nobleclem/jQuery-MultiSelect/blob/master/LICENSE
-tooltipster | Copyright (c) 2012,2016 Caleb Jacob and Louis Ameline | github.com/iamceege/tooltipster/blob/master/LICENSE
\ No newline at end of file
diff --git a/dist/licenseDetailsLoader.js b/dist/licenseDetailsLoader.js
index 39d0150..73ccef5 100644
--- a/dist/licenseDetailsLoader.js
+++ b/dist/licenseDetailsLoader.js
@@ -1,2 +1,2 @@
-const url = chrome.runtime.getURL("LICENSE-DETAILS.txt");
-document.getElementById("license-link").href = url;
\ No newline at end of file
+const url = chrome.runtime.getURL('LICENSE-DETAILS.md');
+document.getElementById('license-link').href = url;
\ No newline at end of file
diff --git a/dist/manifest.json b/dist/manifest.json
index 8d387cf..28dabe3 100644
--- a/dist/manifest.json
+++ b/dist/manifest.json
@@ -5,8 +5,6 @@
"version": "1.3.16",
"background": {
"scripts": [
- "thirdParty/uint64.js",
- "thirdParty/jquery-3.4.0.min.js",
"background.js"
]
},
@@ -16,7 +14,7 @@
"https://liga.99damage.de/*"
],
"js": [
- "content/content.js"
+ "content/index.js"
]
},
{
@@ -24,15 +22,7 @@
"https://liga.99damage.de/leagues/teams/*-*"
],
"js": [
- "thirdParty/jquery-3.4.0.min.js",
- "thirdParty/jquery.dataTables.js",
- "thirdParty/tooltipster.bundle.min.js",
- "thirdParty/jquery.multiselect.js",
- "content/team-page/members/index.js"
- ],
- "css": [
- "thirdParty/jquery.multiselect.css",
- "thirdParty/tooltipster.bundle.min.css"
+ "content/team-page/index.js"
]
}
],
diff --git a/dist/popup.html b/dist/popup.html
index 0e2ad12..b69ae3c 100644
--- a/dist/popup.html
+++ b/dist/popup.html
@@ -1,45 +1,42 @@
-
-
- flashkill
-
-
-
-
- Einstellungen
-
-
-
Cache leeren
+
+
+
+
flashkill
+
+
+
+
+
+
Einstellungen
+
+ Cache leeren
+
+
-
-
Feedback
-
Wir arbeiten an weiteren Features und freuen uns auf euer Feedback, damit wir die Extension zum größtmöglichen Nutzen weiterentwickeln können.
- Schreibt uns daher gerne eine E-Mail mit euren Verbesserungsvorschläge an flashkillapp@gmail.com
- oder postet unter r/FlashkillApp .
-
Spenden
-
Wir arbeiten in unserer Freizeit an diesem Projekt und sind dankbar für jede Spende auf unser PayPal Konto.
-
-
-
-
About
-
Version
-
Lizensinformationen zu verwendeter Open Source Software
-
-
Disclaimer
-
Diese Extension steht in keiner direkten Verbindung zu 99Damage oder der Freaks 4U Gaming GmbH.
+
+ Feedback
+ Wir arbeiten an weiteren Features und freuen uns auf euer Feedback, damit wir die Extension zum größtmöglichen
+ Nutzen weiterentwickeln können.
+ Schreibt uns daher gerne eine E-Mail mit euren Verbesserungsvorschläge an flashkillapp@gmail.com
+ oder postet unter r/FlashkillApp .
+ Spenden
+ Wir arbeiten in unserer Freizeit an diesem Projekt und sind dankbar für jede Spende auf unser PayPal Konto.
+
+
+
+ About
+ Version
+
+
+ Lizensinformationen zu verwendeter Open Source Software
+
+ Disclaimer
+ Diese Extension steht in keiner direkten Verbindung zu 99Damage oder der Freaks 4U Gaming GmbH.
-
+
+
\ No newline at end of file
diff --git a/dist/popup.js b/dist/popup.js
index 31241f8..b66578f 100644
--- a/dist/popup.js
+++ b/dist/popup.js
@@ -1,25 +1,3 @@
-
-document.getElementById("clear-cache-button").onclick = clearCache;
-
-function clearCache() {
- chrome.storage.local.clear(() => alert("Cache wurde geleert."));
-}
-
-const mapsTableAutoLoadCheckbox = document.getElementById("maps-table-auto-load");
-
-mapsTableAutoLoadCheckbox.onclick = changeMapsTableAutoLoad;
-
-chrome.storage.sync.get(['mapsTableAutoLoad'], function(result) {
- mapsTableAutoLoadCheckbox.checked = result.mapsTableAutoLoad;
- });
-
-function changeMapsTableAutoLoad() {
- if (mapsTableAutoLoadCheckbox.checked) {
- alert("Mit dieser Auswahl läufst du Gefahr einen IP-Ban von 99Damage zu erhalten, wenn du zu viele neue Teamseiten in kurze Zeit lädst. Die Änderung tritt ab dem nächsten Öffnen einer Teamseite in Kraft.");
- chrome.storage.sync.set({ mapsTableAutoLoad: true }, () => {} );
- }
- else {
- alert("Die Map Übersicht wird jetzt nicht mehr automatisch geladen. Nutze den entsprechenden Button, der anstelle der Maps Übersicht erscheint, zum analysieren der Maps eines Teams. Die Änderung tritt ab dem nächsten Öffnen einer Teamseite in Kraft.");
- chrome.storage.sync.set({ mapsTableAutoLoad: false }, () => {} );
- }
-}
\ No newline at end of file
+const clearCache = () => chrome.storage.local.clear(() => alert('Cache wurde geleert.'));
+
+document.getElementById('clear-cache-button').onclick = clearCache;
diff --git a/dist/thirdParty/jquery-3.4.0.min.js b/dist/thirdParty/jquery-3.4.0.min.js
deleted file mode 100644
index 769a1d9..0000000
--- a/dist/thirdParty/jquery-3.4.0.min.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! jQuery v3.4.0 | (c) JS 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=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,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},x=function(e){return null!=e&&e===e.window},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.4.0",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(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($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),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-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|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(m.childNodes),m.childNodes),t[m.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&&((e?e.ownerDocument||e:m)!==C&&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)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$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[k]=!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.namespaceURI,n=(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:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),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=k,!C.getElementsByName||!C.getElementsByName(k).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){a.appendChild(e).innerHTML=" ",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),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("!=",$)}),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},D=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===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,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]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&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=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(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)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.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 k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.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(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(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,ge={option:[1,""," "],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&&N(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ae(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ne(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)Ne(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=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n=void 0,r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n}else r&&(Q.set(this,i,k.event.trigger(k.extend(r.shift(),k.Event.prototype),r,this)),e.stopImmediatePropagation())}})):k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.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),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.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)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/