initial Commit

This commit is contained in:
2026-01-20 21:53:59 +03:30
commit 6b05462ed9
287 changed files with 25605 additions and 0 deletions

BIN
vimium/2.12.2_0.crx Normal file

Binary file not shown.

28
vimium/2.12.2_0.pem Normal file
View File

@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCvF/rfYsgXHUU7
JaoLZIJ+0+/oWWIztbolJwYwmr3sd9iAwukbGYGvOJDIR11exp4rj5faSsDohC/v
IKwWSpUuUtY8HF7L62fIfntJd5Y7DcmoPw3wOIlsp+WeQVQ/RWcJua//LjONOcEY
7AVG9UT4LgRAEDeWeZJJLjAru+Z3PnBtNqrPQn5bmbS32v5NM0FbhZrZMd8xD505
AfouiODIOr65wm5FauK1Fr2JZ0kxDRYZi1XYiycS9L1g9qLSBBqVSbJu/zYygLRS
dd8qAWuYzbfHCfv+baSlNXzKjspR9Tdepzo8iNsQzPWpY7aWbGLFg4NlD9O5Sh7t
wWnQva7NAgMBAAECggEAA4cKe9j5SlXsS3kXyED5zA+oWVhWUnpfygMo7G5sUx5F
qK/EkyeGuv6lvr3eqLEnBfOk+Is3AGLhYFeaf/HNYvCHoRBlQdsil8x3NA9ftx2G
VDMTrHpHHSmeG6ZvSb2z32NJThfNMWmEyrlpOyO9Lvl7sRq33qU2XZkQ9AtGD7Lp
Z2hPbnMvr4tHthsRdE76dz856sgbZgYqXs765QqWHGCdV2ldD+fysiWjk7CeaxK3
zzzcxwr+zdqQ3ctBIZ1R4iFmzZ0BZ+FXX5WYQFgFTV5CENAunFk17qfYmDvYwhG8
6Aerlp0wlGKKzbzyOLLXUg906yuDxxtTHSZdzlRR1QKBgQDv0L1qR1mqNc+1lg2E
JNWpJkFpg7OPrsbS5q6g7H7PyMVi7q4QPUVJRnBBh0+/909P5DcjsSJbFodxxPH+
B/YM7OeqtFH0XEw1Yu+GvnVX18mhfJighQiuaGyl1EEnBGSKDHJgZ9Na0x19MDsf
R0eIF+OPAJ9c9V/T5gGkKXYFIwKBgQC66Q0XqqAX7qqJbixwhPYZz/xr4yhyYj9o
N9Lr5kzt2Jq0ZWius94AbyrFbcrdHE7kRRj94vIJSOCVzLnRBY5xCUXdQ6pHzgvL
V8eGQTnvrfh/sFEGUWxGeChxm0h4FOrnyrHKVERs3qfOw8pNsx1aeJtOK95YZdvF
7e7lYZWTTwKBgQC5w8pWHzr3vINPOBL0P8w6IOYeo+Rd8pcVG5g+E7QPpIgyII05
Cx02q5edSwGdxCbtzexge4APax40JMkHbIdOb9zswI2TakOmPyMoDzS6fO81Zlyc
SzD0WPOAaTCm1qJCxW17/DEec9at+MRzcDWa2FZvmZ3Y1kIK1GqFDZDcXQKBgQC4
hfOC9dPvTJPX8Yi13M4JVafh6vS3V/85KEN22HoCJeE1Txg1wSTeUOFs36Ny/stz
2DOAEljYibYOrXqUvGOPfJQYiQDGusgyC4rTI/nKgXnetXaIQkIen+ltntvAkQYH
p7g2A1M6F+aa3fgPFVFZS9AnMG/l3UlG8kry8Y/1SQKBgDL4/bK6i7C6BVp2nc8t
BKE5Vl2dt6ZX8ToM7SW9CwNmJzhD8WcfNAPMsnuQCVZlSTB4EnvzsVY2WdIBbQiF
n4Rd0ipo+tX9KpZStpg16kNOPbPkD6B2sdvXhPrMzeJK/yWQBNvVNANmcagR719k
Burm7GmNMb3ztb4hjrHaEkPF
-----END PRIVATE KEY-----

View File

@@ -0,0 +1,52 @@
Copyright 2023-present Gong Dahan
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
=======================================================================
# License for old code before 2023-07-15T00:00:00.000Z
The MIT License (MIT)
Copyright (c) 2014-2023 Gong Dahan, Phil Crosby, Ilya Sukhar.
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software before 2023-07-15T00:00:00.000Z
and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
=======================================================================
Another exception is, the translation files in
[_locales/](https://github.com/gdh1995/vimium-c/tree/master/_locales)
belong to [CC-BY-SA-4.0](https://creativecommons.org/licenses/by-sa/4.0/),
except some of those English sentences which are the same as
[philc/vimium](https://github.com/philc/vimium)'s
are under Vimium's MIT license.

View File

@@ -0,0 +1,437 @@
{
"0": {
"message": "Open link in current tab"
},
"1": {
"message": "$1"
},
"10": {
"message": "No links to go $1"
},
"100": {
"message": "^void\\s*\\( ?0 ?\\)\\s*;?$$|^;?$$"
},
"101": {
"message": "^http://(?!localhost[:/])"
},
"102": {
"message": "^(new\\.|www\\.|)reddit\\.com$$###overlayScrollContainer;^twitter\\.com$$##div.permalink-container div.permalink[role=main];^web\\.telegram\\.org$$##.MessageList"
},
"103": {
"message": "(^|-)(button|a$$)"
},
"104": {
"message": "\\b(?:[Cc]lose)(?:$$|[-\\sA-Z_])"
},
"105": {
"message": "(-ms-high-contrast:active)"
},
"106": {
"message": "script,style,title,textarea"
},
"107": {
"message": "\\.(?:avif|bmp|gif|icon?|jpe?g|a?png|svg|tiff?|webp)\\b"
},
"108": {
"message": "\\bgoogle##.g;bing.com##.b_algo;baidu.com##.c-container;mail.ru##.SnippetResultInfo-favicon"
},
"109": {
"message": "twitter.com##[href$$=\\/trends],[data-testid=app-bar-back]"
},
"11": {
"message": "Nothing was focused"
},
"110": {
"message": "beforecopy beforecut beforeinput compositionend compositionstart compositionupdate contextmenu copy cut keypress mouseup paste selectionchange selectstart textInput "
},
"111": {
"message": "Vimium C uses the built-in Vomnibar page because the preferred is too old."
},
"112": {
"message": "Some functions of Vimium C may not work because %o is sandboxed at %o."
},
"113": {
"message": "Vimium C blocks auto-focusing on %s at %o."
},
"114": {
"message": "prev"
},
"115": {
"message": "next"
},
"116": {
"message": "^(canvas|embed|i?frame|img|video|object)$"
},
"117": {
"message": ".monaco-editor//textarea.monaco-mouse-cursor-text//"
},
"118": {
"message": "weibo.com##.expand,.collapse;learn.microsoft.com##.tree-expander"
},
"119": {
"message": "Readonly text box is focused"
},
"12": {
"message": "The last focused is hidden"
},
"120": {
"message": "#read-only-cursor-text-area,.monaco-mouse-cursor-text[aria-autocomplete=none],.CodeMirror>div>textarea[readonly=''][style]"
},
"121": {
"message": "[aria-controls],[role=combobox],#kw.s_ipt,input[placeholder$$=搜索],input[type=search][name=q],input[role=searchbox],.monaco-inputbox>div>textarea[style]"
},
"122": {
"message": "Veuillez sélectionner un mot"
},
"123": {
"message": "Veuillez sélectionner du texte"
},
"13": {
"message": "There are no inputs to focus on"
},
"14": {
"message": "No URL found!"
},
"15": {
"message": "No text found!"
},
"16": {
"message": "Open multiple links in current tab"
},
"17": {
"message": "A child frame just got replaced"
},
"18": {
"message": "Open multiple links in new tabs"
},
"19": {
"message": "Activate link and hold on"
},
"2": {
"message": "Open link in new tab"
},
"20": {
"message": "Copied: $1"
},
"200": {
"message": "http://www.w3.org/1999/xhtml"
},
"21": {
"message": "Sorry, Vomnibar page seems to fail to load"
},
"22": {
"message": "Too many links to select"
},
"23": {
"message": "Search has arrived at the $1"
},
"24": {
"message": "start"
},
"25": {
"message": "end"
},
"26": {
"message": "($1 matches)"
},
"27": {
"message": "(1 match)"
},
"28": {
"message": "(Some matches)"
},
"29": {
"message": "(No matches)"
},
"3": {
"message": "Open link in new active tab"
},
"30": {
"message": " (modal UI)"
},
"31": {
"message": "Please type: $1"
},
"32": {
"message": "Hover over node"
},
"33": {
"message": "Simulate mouse leaving link"
},
"34": {
"message": "Focus node"
},
"35": {
"message": "Download media"
},
"36": {
"message": "Copy image to Clipboard"
},
"37": {
"message": "Open image"
},
"38": {
"message": "Search selected text"
},
"39": {
"message": "Sorry, Vimium C cannot open a HUD on this page"
},
"4": {
"message": "The last element is unhovered"
},
"40": {
"message": "Copy link text to Clipboard"
},
"41": {
"message": "No old queries to find"
},
"42": {
"message": "Copy link URL to Clipboard"
},
"43": {
"message": "Selected line boundary"
},
"44": {
"message": "Download link"
},
"45": {
"message": "Open link in incognito window"
},
"46": {
"message": "Open URL directly"
},
"47": {
"message": "Re-downloading…"
},
"48": {
"message": "Hover over nodes continuously"
},
"49": {
"message": "Simulate mouse leaving continuously"
},
"5": {
"message": "No matching targets found"
},
"50": {
"message": "Focus nodes continuously"
},
"51": {
"message": "Download multiple media"
},
"52": {
"message": "Copy multiple images"
},
"53": {
"message": "Open multiple images"
},
"54": {
"message": "Search link text one by one"
},
"55": {
"message": "Create a selection before entering visual mode"
},
"56": {
"message": "Copy link text one by one"
},
"57": {
"message": "Copy link text list"
},
"58": {
"message": "Copy link URL one by one"
},
"59": {
"message": "Copy link URL list"
},
"6": {
"message": "No pass keys"
},
"60": {
"message": "Download multiple links"
},
"61": {
"message": "Open multiple incognito tabs"
},
"62": {
"message": "Open multiple URLs directly"
},
"63": {
"message": "Hit \u003CEnter> to proceed…"
},
"64": {
"message": "Edit link URL on Vomnibar"
},
"65": {
"message": "Edit link text on Vomnibar"
},
"66": {
"message": "Select text and enter visual mode"
},
"67": {
"message": "Select an editable area"
},
"68": {
"message": "Visual"
},
"69": {
"message": "Line"
},
"7": {
"message": "Normal mode (pass keys disabled)$1"
},
"70": {
"message": "Caret"
},
"71": {
"message": "No links to select"
},
"72": {
"message": "LinkHints exits because you're typing"
},
"73": {
"message": "The link has been removed from the page"
},
"74": {
"message": "Not an image"
},
"75": {
"message": "Hover to scroll"
},
"76": {
"message": "Sorry, Vimium C won't copy any password"
},
"77": {
"message": "Nothing new to copy"
},
"78": {
"message": "Download: $1"
},
"79": {
"message": "(Paused)"
},
"8": {
"message": ": $1 times"
},
"80": {
"message": "To trigger key: $1"
},
"81": {
"message": "No matches for \"$1\""
},
"82": {
"message": "$1 mode"
},
"83": {
"message": "No usable selection, entering caret mode…"
},
"84": {
"message": "Selection has been lost"
},
"85": {
"message": ":is(a,area,link)[rel~=$1 i]"
},
"86": {
"message": "(forced-colors:active)"
},
"87": {
"message": "input,textarea,[contenteditable]"
},
"88": {
"message": "document.currentScript.remove()"
},
"89": {
"message": "event.target.remove()"
},
"9": {
"message": "Pass next keys$1"
},
"90": {
"message": "a,button,input,frame,iframe"
},
"91": {
"message": "^url\\(\\s?['\"]?((?:\\\\['\"]|[^'\"])+?)['\"]?\\s?\\)"
},
"92": {
"message": "(?:(?\u003C=\\b|_)(?:b(?:utto|t)n|close|hate|like)|B(?:utto|t)n|Close)(?=$$|[-\\sA-Z_])"
},
"93": {
"message": "(?:(?:\\b|_)(?:b(?:utto|t)n|close|hate|like)|B(?:utto|t)n|Close)(?=$$|[-\\sA-Z_])"
},
"94": {
"message": "^(?:button|checkbox|link|radio|tab)$$|^menuitem"
},
"95": {
"message": "^[^\\w\\x80-\\uffff]+|[^!-~À-üЂ-џºء-ي]+"
},
"96": {
"message": "[^0-9a-z_ß-üа-џºء-ي]+"
},
"97": {
"message": "\\b(device-width|initial-scale)\\b"
},
"98": {
"message": "0\\.01|/\\*!DPI\\*/[\\d.]+"
},
"99": {
"message": ":scope>:not(link):not(style)"
},
"Close": {
"message": ""
},
"Go": {
"message": ""
},
"Search": {
"message": ""
},
"Toggle_Dark": {
"message": ""
},
"createTab_s": {
"message": "Create new tab"
},
"description": {
"message": "A keyboard shortcut tool for keyboard-based page navigation and browser tab operations with an advanced omnibar and global shortcuts"
},
"goBack_s": {
"message": "Go back in history"
},
"goForward_s": {
"message": "Go forward in history"
},
"i18n": {
"message": ""
},
"i18nAll": {
"message": "zh fr sp zh-TW"
},
"lang1": {
"message": ""
},
"name": {
"message": "Vimium C - All by Keyboard"
},
"noActiveState": {
"message": "As configured, here's no active state"
},
"previousTab_s": {
"message": "Go one tab left"
},
"quickNext_s": {
"message": "Go one tab right"
},
"reloadTab_s": {
"message": "Reload tab"
},
"userCustomized": {
"message": "Custom shortcut"
},
"vblank": {
"message": ""
},
"voptions": {
"message": ""
},
"vshow": {
"message": ""
}
}

View File

@@ -0,0 +1,308 @@
{
"0": {
"message": "Ouvre le lien dans l'onglet courant"
},
"10": {
"message": "Aucun lien pour aller $1"
},
"11": {
"message": "Rien n'a le focus"
},
"114": {
"message": "précedent"
},
"115": {
"message": "suivant"
},
"119": {
"message": "Le texte en lecture seule est ciblé"
},
"12": {
"message": "Le dernier élement en focus est caché"
},
"13": {
"message": "Il n'y a aucun champ de saisie sur lequel mettre le focus"
},
"14": {
"message": "Aucune URL trouvée !"
},
"15": {
"message": "Aucun texte trouvé !"
},
"16": {
"message": "Ouvre de multiples liens dans l'onglet courant"
},
"17": {
"message": "Une frame fille vient juste d'être remplacé"
},
"18": {
"message": "Ouvre de multiples liens dans de nouveaux onglets"
},
"19": {
"message": "Active le lien et attend"
},
"2": {
"message": "Ouvre le lien dans un nouvel onglet"
},
"20": {
"message": "Copié : $1"
},
"21": {
"message": "Désolé, le chargement de la Vomnibar semble échouer"
},
"22": {
"message": "Trop de liens à sélectionner"
},
"23": {
"message": "La recherche est arrivée $1"
},
"24": {
"message": "à la fin"
},
"25": {
"message": "au début"
},
"26": {
"message": "($1 correspondances)"
},
"27": {
"message": "(1 correspondance)"
},
"28": {
"message": "(Quelques correspondances)"
},
"29": {
"message": "(Pas de correspondances)"
},
"3": {
"message": "Ouvre le lien dans un nouvel onglet actif"
},
"30": {
"message": " (IHM modale)"
},
"31": {
"message": "Veuillez saisir: $1"
},
"32": {
"message": "Survole le lien"
},
"33": {
"message": "Simule la souris qui quitte le lien"
},
"34": {
"message": "Met le focus sur le noeud"
},
"35": {
"message": "Télécharge le média"
},
"36": {
"message": "Copie l'image"
},
"37": {
"message": "Ouvre l'image"
},
"38": {
"message": "Cherche le texte sélectionné"
},
"39": {
"message": "Désolé, Vimium C ne peut pas ouvrir de HUD sur cette page"
},
"4": {
"message": "Le dernier élément est dé-survolé"
},
"40": {
"message": "Copie le texte du lien dans le presse-papiers"
},
"41": {
"message": "Aucune ancienne requête à trouver"
},
"42": {
"message": "Copie le lien de l'URL dans le presse-papiers"
},
"43": {
"message": "Ligne de bordure sélectionnée"
},
"44": {
"message": "Télécharge le lien"
},
"45": {
"message": "Ouvre le lien dans une fenêtre incognito"
},
"46": {
"message": "Ouvrir l'URL directement"
},
"47": {
"message": "Télécharge…"
},
"48": {
"message": "Survole les noeuds continuellement"
},
"49": {
"message": "Simule la souris quittant continuellement"
},
"5": {
"message": "Aucune cible correspondante trouvée"
},
"50": {
"message": "Met le focus sur les noeuds continuellement"
},
"51": {
"message": "Télécharge de multiples médias"
},
"52": {
"message": "Copie de multiples images"
},
"53": {
"message": "Ouvre de multiples images"
},
"54": {
"message": "Cherche le texte du lien un à un"
},
"55": {
"message": "Créez une sélection avant d'entrer en mode visuel"
},
"56": {
"message": "Copie le texte du lien un à un"
},
"57": {
"message": "Copie la liste du texte de liens"
},
"58": {
"message": "Copie l'URL du lien un à un"
},
"59": {
"message": "Copie la liste d'URL du lien"
},
"6": {
"message": "Aucune touche transmise"
},
"60": {
"message": "Télécharge de multiples liens"
},
"61": {
"message": "Ouvre de multiples onglets en incognito"
},
"62": {
"message": "Ouvrir plusieurs URL directement"
},
"63": {
"message": "Pressez \u003CEntrée> pour continuer…"
},
"64": {
"message": "Edite l'URL du lien dans la Vomnibar"
},
"65": {
"message": "Edite le texte du lien dans la Vomnibar"
},
"66": {
"message": "Sélectionner du texte pour passer en mode visuel"
},
"67": {
"message": "Sélectionne une zone d'édition"
},
"68": {
"message": "Visuel"
},
"69": {
"message": "Ligne"
},
"7": {
"message": "Mode normal (touches transmises désactivées)$1"
},
"70": {
"message": "Curseur"
},
"71": {
"message": "Aucun lien à sélectionner"
},
"72": {
"message": "Les LinkHints existent parce que vous tapez au clavier"
},
"73": {
"message": "Le lien a été supprimé de la page"
},
"74": {
"message": "Pas une image"
},
"75": {
"message": "Survole pour dérouler"
},
"76": {
"message": "Désolé, Vimium C ne copiera aucun mot de passe"
},
"77": {
"message": "Rien de nouveau à copier"
},
"78": {
"message": "Télécharge: $1"
},
"79": {
"message": "(En pause)"
},
"8": {
"message": ": $1 fois"
},
"80": {
"message": "Pour déclencher la touche: $1"
},
"81": {
"message": "Aucune correspondance pour \"$1\""
},
"83": {
"message": "Aucune sélection utilisable, entrée en mode curseur…"
},
"84": {
"message": "Sélection perdue"
},
"9": {
"message": "Envoyez les prochaines touches$1"
},
"Close": {
"message": "Cacher"
},
"Go": {
"message": "Aller"
},
"Search": {
"message": "Rechercher"
},
"Toggle_Dark": {
"message": "Basculez le mode sombre"
},
"createTab_s": {
"message": "Créer un nouvel onglet"
},
"description": {
"message": "Un outil de raccourcis clavier pour une navigation de page centrée sur l'usage du clavier, des opérations sur les onglets du navigateur avec une omnibar avancée ainsi que des raccourcis globaux"
},
"goBack_s": {
"message": "Remonter dans l'historique"
},
"goForward_s": {
"message": "Avancer dans l'historique"
},
"i18n": {
"message": "options=fr,en show=en"
},
"lang1": {
"message": "fr"
},
"name": {
"message": "Vimium C - Tout par le clavier"
},
"noActiveState": {
"message": "Tel que configuré, pas d'état actif présent"
},
"previousTab_s": {
"message": "Aller à gauche de un onglet"
},
"quickNext_s": {
"message": "Aller à droite de un onglet"
},
"reloadTab_s": {
"message": "Recharger l'onglet"
},
"userCustomized": {
"message": "Raccourci personnalisé"
}
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,326 @@
{
"0": {
"message": "在当前页面打开链接"
},
"10": {
"message": "没有找到“$1”对应的按钮或链接"
},
"11": {
"message": "没有文本框获得过键盘焦点"
},
"113": {
"message": "Vimium C 拦截了加载时的文本框自动聚焦:网址 = %s时刻 = %o。"
},
"114": {
"message": "上一页"
},
"115": {
"message": "下一页"
},
"119": {
"message": "聚焦到只读文本框"
},
"12": {
"message": "上次有键盘焦点的文本框现在不可见"
},
"122": {
"message": "请先选择一个词"
},
"123": {
"message": "请先选择一段文字"
},
"13": {
"message": "没有找到可以输入的文本框"
},
"14": {
"message": "没有发现网址!"
},
"15": {
"message": "没有发现文字内容!"
},
"16": {
"message": "在当前页面打开多个链接"
},
"17": {
"message": "某个页面刚刚被替换了"
},
"18": {
"message": "在新标签页中打开多个链接"
},
"19": {
"message": "切换到新标签页来打开链接(不退出选择模式)"
},
"2": {
"message": "在新标签页中打开链接"
},
"20": {
"message": "已复制:$1"
},
"21": {
"message": "很抱歉,搜索框页面在当前网页上加载失败了"
},
"22": {
"message": "可点击的页面对象过多"
},
"23": {
"message": "搜索已到达网页$1"
},
"24": {
"message": "开头"
},
"25": {
"message": "末尾"
},
"26": {
"message": "$1 处)"
},
"27": {
"message": "1 处)"
},
"28": {
"message": "(一些)"
},
"29": {
"message": "(未找到)"
},
"3": {
"message": "切换到新标签页来打开链接"
},
"30": {
"message": "(置顶模式)"
},
"31": {
"message": "请输入:$1"
},
"32": {
"message": "模拟鼠标移动到网页内容上"
},
"33": {
"message": "模拟鼠标从网页内容上移出"
},
"34": {
"message": "设置键盘焦点到网页内容上"
},
"35": {
"message": "下载图片等多媒体文件"
},
"36": {
"message": "选择图片以复制"
},
"37": {
"message": "在新标签页中展示图片"
},
"38": {
"message": "选择文字以搜索"
},
"39": {
"message": "很抱歉,无法为当前网页显示页内查找浮层"
},
"4": {
"message": "模拟了鼠标从上次选中内容上移出"
},
"40": {
"message": "选择文字以复制到剪贴板"
},
"41": {
"message": "页内查找历史为空"
},
"42": {
"message": "选择链接以复制网址"
},
"43": {
"message": "已选择到行边界"
},
"44": {
"message": "选择链接以下载"
},
"45": {
"message": "在无痕窗口中打开链接"
},
"46": {
"message": "直接打开链接"
},
"47": {
"message": "正在下载……"
},
"48": {
"message": "不断模拟鼠标移动到网页内容上"
},
"49": {
"message": "不断模拟鼠标从网页内容上移出"
},
"5": {
"message": "没有找到符合条件的页面对象"
},
"50": {
"message": "不断设置键盘焦点到新的网页内容上"
},
"51": {
"message": "下载多个多媒体文件"
},
"52": {
"message": "依次复制多张图片"
},
"53": {
"message": "选择并展示多张图片"
},
"54": {
"message": "依次搜索多条文字"
},
"55": {
"message": "在进入文字选择模式之前请先给出一个选区"
},
"56": {
"message": "依次复制选中的文字"
},
"57": {
"message": "依次选择文字并复制为多行文本"
},
"58": {
"message": "依次复制链接网址"
},
"59": {
"message": "依次选择链接并复制网址为多行文本"
},
"6": {
"message": "没有快捷键被停用"
},
"60": {
"message": "选择并下载多个链接"
},
"61": {
"message": "在无痕窗口中打开多个链接"
},
"62": {
"message": "直接打开多个链接"
},
"63": {
"message": "请按回车键继续……"
},
"64": {
"message": "在搜索框中编辑链接网址"
},
"65": {
"message": "在搜索框中编辑链接文字"
},
"66": {
"message": "选择文字以进入自由选择模式"
},
"67": {
"message": "选择一个文本框"
},
"68": {
"message": "自由选择"
},
"69": {
"message": "整行选择"
},
"7": {
"message": "临时启用所有按键$1"
},
"70": {
"message": "光标"
},
"71": {
"message": "没有找到可点击的页面对象"
},
"72": {
"message": "检测到文字输入,自动退出选择模式"
},
"73": {
"message": "所选对象已经被网页自身移除了"
},
"74": {
"message": "所选对象不是一个有效的图片"
},
"75": {
"message": "已选中此可滚动区域"
},
"76": {
"message": "出错了不应使用Vimium C复制网页中的密码"
},
"77": {
"message": "此内容已经在剪贴板了"
},
"78": {
"message": "将要下载:$1"
},
"79": {
"message": "(已暂停)"
},
"8": {
"message": ":剩余 $1 次"
},
"80": {
"message": "将要触发:$1"
},
"81": {
"message": "没有找到“$1”"
},
"82": {
"message": "$1模式"
},
"83": {
"message": "没有找到可选择的文字,自动进入光标模式"
},
"84": {
"message": "旧的选区已丢失,请重新选取文字"
},
"9": {
"message": "临时停用所有快捷键$1"
},
"Close": {
"message": "关闭"
},
"Go": {
"message": "前往"
},
"Search": {
"message": "搜索"
},
"Toggle_Dark": {
"message": "切换深色模式"
},
"createTab_s": {
"message": "打开新的标签页"
},
"description": {
"message": "一款支持全键盘操作浏览器的辅助工具,只用键盘即可点击任意链接、切换标签页和快速搜索任意内容,支持自定义快捷键和调整操作细节"
},
"goBack_s": {
"message": "在历史记录中后退"
},
"goForward_s": {
"message": "在历史记录中前进"
},
"lang1": {
"message": "zh"
},
"name": {
"message": "Vimium C - 全键盘操作浏览器"
},
"noActiveState": {
"message": "已设置不显示工作状态"
},
"previousTab_s": {
"message": "切换到左侧标签页"
},
"quickNext_s": {
"message": "切换到右侧标签页"
},
"reloadTab_s": {
"message": "刷新整个页面"
},
"userCustomized": {
"message": "自定义快捷键"
},
"vblank": {
"message": "空白页"
},
"voptions": {
"message": "设置"
},
"vshow": {
"message": "展示"
}
}

View File

@@ -0,0 +1,11 @@
{
"description": {
"message": "一款支持全键盘操作浏览器的辅助工具,只用键盘即可点击任意链接、切换标签页和快速搜索任意内容,支持自定义快捷键和调整操作细节"
},
"i18n": {
"message": "zh"
},
"name": {
"message": "Vimium C - 全键盘操作浏览器"
}
}

View File

@@ -0,0 +1,326 @@
{
"0": {
"message": "在當前頁面打開連結"
},
"10": {
"message": "沒有找到“$1”對應的按鈕或連結"
},
"11": {
"message": "沒有輸入框獲得過鍵盤焦點"
},
"114": {
"message": "上一頁"
},
"115": {
"message": "下一頁"
},
"119": {
"message": "聚焦到只讀輸入框"
},
"12": {
"message": "上次有鍵盤焦點的輸入框現在不可見"
},
"122": {
"message": "請先選擇一個詞"
},
"123": {
"message": "請先選擇一段文字"
},
"13": {
"message": "沒有找到可以輸入的輸入框"
},
"14": {
"message": "沒有發現網址!"
},
"15": {
"message": "沒有發現文字內容!"
},
"16": {
"message": "在當前頁面打開多個連結"
},
"17": {
"message": "某個頁面剛剛被替換了"
},
"18": {
"message": "在新分頁中打開多個連結"
},
"19": {
"message": "切換到新分頁來打開連結(不退出選擇模式)"
},
"2": {
"message": "在新分頁中打開連結"
},
"20": {
"message": "已複製:$1"
},
"21": {
"message": "很抱歉,搜索框頁面在當前網頁上加載失敗了"
},
"22": {
"message": "可點擊的頁面對象過多"
},
"23": {
"message": "搜索已到達網頁$1"
},
"24": {
"message": "開頭"
},
"25": {
"message": "末尾"
},
"26": {
"message": "$1 處)"
},
"27": {
"message": "1 處)"
},
"28": {
"message": "(一些)"
},
"29": {
"message": "(未找到)"
},
"3": {
"message": "切換到新分頁來打開連結"
},
"30": {
"message": "(置頂模式)"
},
"31": {
"message": "請輸入:$1"
},
"32": {
"message": "模擬滑鼠移動到網頁內容上"
},
"33": {
"message": "模擬滑鼠從網頁內容上移出"
},
"34": {
"message": "設定鍵盤焦點到網頁內容上"
},
"35": {
"message": "下載圖片等多媒體文件"
},
"36": {
"message": "選擇圖片以複製"
},
"37": {
"message": "在新分頁中展示圖片"
},
"38": {
"message": "選擇文字以搜索"
},
"39": {
"message": "很抱歉,無法為當前網頁顯示頁內查找浮層"
},
"4": {
"message": "模擬了滑鼠從上次選中內容上移出"
},
"40": {
"message": "選擇文字以複製到剪貼簿"
},
"41": {
"message": "頁內查找歷史為空"
},
"42": {
"message": "選擇連結以複製網址"
},
"43": {
"message": "已選擇到行邊界"
},
"44": {
"message": "選擇連結以下載"
},
"45": {
"message": "在無痕窗口中打開連結"
},
"46": {
"message": "直接打開連結"
},
"47": {
"message": "正在下載……"
},
"48": {
"message": "不斷模擬滑鼠移動到網頁內容上"
},
"49": {
"message": "不斷模擬滑鼠從網頁內容上移出"
},
"5": {
"message": "沒有找到符合條件的頁面對象"
},
"50": {
"message": "不斷設定鍵盤焦點到新的網頁內容上"
},
"51": {
"message": "下載多個多媒體文件"
},
"52": {
"message": "依次複製多張圖片"
},
"53": {
"message": "選擇並展示多張圖片"
},
"54": {
"message": "依次搜索多條文字"
},
"55": {
"message": "在進入文字選擇模式之前請先給出一個選區"
},
"56": {
"message": "依次複製選中的文字"
},
"57": {
"message": "依次選擇文字並複製為多行文本"
},
"58": {
"message": "依次複製連結網址"
},
"59": {
"message": "依次選擇連結並複製網址為多行文本"
},
"6": {
"message": "沒有快速鍵被停用"
},
"60": {
"message": "選擇並下載多個連結"
},
"61": {
"message": "在無痕窗口中打開多個連結"
},
"62": {
"message": "直接打開多個連結"
},
"63": {
"message": "請按 Enter 鍵繼續……"
},
"64": {
"message": "在搜索框中編輯連結網址"
},
"65": {
"message": "在搜索框中編輯連結文字"
},
"66": {
"message": "選擇文字以進入自由選擇模式"
},
"67": {
"message": "選擇一個輸入框"
},
"68": {
"message": "自由選擇"
},
"69": {
"message": "整行選擇"
},
"7": {
"message": "臨時啟用所有按鍵$1"
},
"70": {
"message": "游標"
},
"71": {
"message": "沒有找到可點擊的頁面對象"
},
"72": {
"message": "檢測到文字輸入,自動退出選擇模式"
},
"73": {
"message": "所選對象已經被網頁自身移除了"
},
"74": {
"message": "所選對象不是一個有效的圖片"
},
"75": {
"message": "已選中此可滾動區域"
},
"76": {
"message": "出錯了不應使用Vimium C複製網頁中的密碼"
},
"77": {
"message": "此內容已經在剪貼簿了"
},
"78": {
"message": "將要下載:$1"
},
"79": {
"message": "(已暫停)"
},
"8": {
"message": ":剩餘 $1 次"
},
"80": {
"message": "將要觸發:$1"
},
"81": {
"message": "沒有找到“$1”"
},
"82": {
"message": "$1模式"
},
"83": {
"message": "沒有找到可選擇的文字,自動進入游標模式"
},
"84": {
"message": "舊的選區已丟失,請重新選取文字"
},
"9": {
"message": "臨時停用所有快速鍵$1"
},
"Close": {
"message": "關閉"
},
"Go": {
"message": "前往"
},
"Search": {
"message": "搜索"
},
"Toggle_Dark": {
"message": "切換深色模式"
},
"createTab_s": {
"message": "打開新的分頁"
},
"description": {
"message": "一款支持全鍵盤操作瀏覽器的輔助工具,只用鍵盤即可點擊任意連結、切換分頁和快速搜索任意內容,支持自訂快速鍵和調整操作細節"
},
"goBack_s": {
"message": "在歷史記錄中後退"
},
"goForward_s": {
"message": "在歷史記錄中前進"
},
"i18n": {
"message": "zh_TW"
},
"lang1": {
"message": "zh"
},
"name": {
"message": "Vimium C - 全鍵盤操作瀏覽器"
},
"noActiveState": {
"message": "已設定不顯示工作狀態"
},
"previousTab_s": {
"message": "切換到左側分頁"
},
"quickNext_s": {
"message": "切換到右側分頁"
},
"reloadTab_s": {
"message": "刷新整個頁面"
},
"userCustomized": {
"message": "自訂快速鍵"
},
"vblank": {
"message": "空白頁"
},
"voptions": {
"message": "設定"
},
"vshow": {
"message": "展示"
}
}

View File

@@ -0,0 +1,12 @@
"use strict"
;__filename="background/action_icon.js",define(["require","exports","./store","./utils","./i18n","./browser","./ports"],(e,l,t,i,n,a,s)=>{
Object.defineProperty(l,"__esModule",{value:!0}),l.e=l.l=void 0
;let o,r=["/icons/enabled.bin","/icons/partial.bin","/icons/disabled.bin"];l.l=a.t.action;let u=e=>{
fetch(r[e]).then(e=>e.arrayBuffer()).then(l=>{
let n=new Uint8ClampedArray(l),a=l.byteLength/5,s=Math.sqrt(a/4)|0,r=s+s,u=i.i()
;u[s]=new ImageData(n.subarray(0,a),s,s),u[r]=new ImageData(n.subarray(a),r,r),t.n[e]=u;let c=o.get(e);o.delete(e)
;for(let l=0,i=c.length;l<i;l++)t.a.has(c[l])&&t.o(c[l],e,!0)})};l.e=()=>{let e=t.r;e!==!!t.n&&(t.o=e?c:t.u,
e?(t.n=[null,null,null],o=new Map,s.c(0,({d:{s:l},b:i})=>{if(l.f!==0){if(i&512&&e)return void(l.f=0);t.o(l.m,e?l.f:0)}
},()=>t.r===e)):setTimeout(()=>{t.r||t.n==null||(t.n=null,o=null)},200))};let c=(e,i,n)=>{let s
;if(e<0);else if(s=t.n[i]){let t=l.l.setIcon,i={tabId:e,imageData:s};n?t(i,a.g):t(i)
}else o.has(i)?o.get(i).push(e):(setTimeout(u,0,i),o.set(i,[e]))};l.e()});

View File

@@ -0,0 +1,172 @@
"use strict"
;__filename="background/all_commands.js",define(["require","exports","./utils","./store","./browser","./normalize_urls","./parse_urls","./settings","./ports","./ui_css","./i18n","./key_mappings","./run_commands","./run_keys","./clipboard","./open_urls","./frame_commands","./filter_tabs","./tab_commands","./tools"],(e,t,l,o,n,i,r,a,u,s,d,f,c,m,p,v,b,h,y,k)=>{
Object.defineProperty(t,"__esModule",{value:!0
}),o.y=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,2,0,1,0,0,0,0,2,0,1,0,2,2,0,0,1,0,0,1,0,0,1,0,2,1,1,0,0,0,0,0,0],
o.M=[()=>{let e=o.$.for||o.$.wait,t=o.$.isError?0:1;if(e!=="ready"){
if(e=e?Math.abs(e==="count"||e==="number"?o.x:e|0):c.hasFallbackOptions(o.$)?Math.abs(o.x):0,e){e=Math.max(34,e)
;let t=o.$.block;t=t!=null?!!t:e>17&&e<=1e3,t&&o.O&&o.O.postMessage({N:14,t:e+50})}c.runNextCmdBy(o.x>0?t:1-t,o.$,e)
}else c.runNextOnTabLoaded({},null,()=>{c.runNextCmdBy(t,o.$,1)})},()=>{
let e=(o.$.$then||"")+"",t=(o.$.$else||"")+"",l=o.x
;if(!e&&!t)return void u.showHUD('"confirm" requires "$then" or "$else"')
;let n=o.$.question||o.$.ask||o.$.text||o.$.value,i=n?null:[e,t].map(e=>e.split("#",1)[0].split("+").slice(-1)[0]),r=Math.abs((o.$.minRepeat||0)|0),a=[o.$.$f,o.$.$retry]
;(Math.abs(l)<r?Promise.resolve():c.P([i?i[0]===i[1]?e:i[0].replace(/^([$%][a-zA-Z]\+?)+(?=\S)/,""):[n+""]],l)).then(n=>{
(n?t:e)&&setTimeout(()=>{o.x=l,o.I(n?t:e,o.O,{c:a[0],r:a[1],u:0,w:0},n?1:l)},0)})},()=>{
let e=o.$.rel,t=!!o.$.absolute,n=e?(e+"").toLowerCase():"next",r=o.$.isNext!=null?!!o.$.isNext:!n.includes("prev")&&!n.includes("before"),a=p.T(o.$)
;p.doesNeedToSed(8192,a)||t?Promise.resolve(u.j(o.O&&u.C().R)).then(e=>{
let u=r?o.x:-o.x,s={},d=e&&o.S(e,8192,a),[f,m]=d?v.goToNextUrl(d,u,t):[!1,e];if(f&&m){
let e=s.F?i.K(m.trim().split(l.q),s.F,3):m;o.x=u,o.$.reuse==null&&c.overrideOption("reuse",0),c.overrideCmdOptions({
url_f:e,goNext:!1}),v.openUrl()}else t?c.runNextCmd(0):b.framesGoNext(r,n)}):b.framesGoNext(r,n)},()=>{var e,t
;let l=o.$.key,n=l&&typeof l=="string"?f.D(l).trim():""
;n=n.length>1||n.length===1&&!/[0-9a-z]/i.test(n)&&n===n.toUpperCase()&&n===n.toLowerCase()?n:""
;let i=(t=(e=o.$.hideHUD)!==null&&e!==void 0?e:o.$.hideHud)!==null&&t!==void 0?t:o.z.hideHud,r=i==="auto"?!n:i
;Promise.resolve(d.A("globalInsertMode",[n&&": "+(n.length===1?`" ${n} "`:`<${n}>`)])).then(e=>{
c.sendFgCmd(7,!r,Object.assign({h:r?null:e,k:n||null,i:!!o.$.insert,p:!!o.$.passExitKey,r:+!!o.$.reset,
bubbles:!!o.$.bubbles,u:!!o.$.unhover},c.parseFallbackOptions(o.$)||{})),r&&r!=="force"&&r!=="always"&&u.showHUD(e,1)})
},b.nextFrame,b.parentFrame,b.performFind,e=>{
let t=(o.$.key||"")+"",l=t==="darkMode"?"d":t==="reduceMotion"?"m":a.B[t],n=l?o.V[l]:0,i=d.A("quoteA",[t]),r=o.$.value,s=typeof r=="boolean",f=null,m=""
;l?typeof n=="boolean"?s||(r=null):s||r===void 0?f=s?"notBool":"needVal":typeof r!=typeof n&&(m=JSON.stringify(n),
f="unlikeVal",m=m.length>10?m.slice(0,9)+"\u2026":m):f=t in a.E?"notFgOpt":"unknownA",Promise.resolve(i).then(t=>{
if(f)u.showHUD(d.A(f,[t,m]));else{if(r=a.W(l,r),l==="c"||l==="n"){let e=""
;for(let t of r.replace(/\s/g,""))e.includes(t)||(e+=t);r=e}let o=u.C(),n=o.d;for(let e of o.J){let o=e===n
;c.portSendFgCmd(e,8,o,{k:l,n:o?t:"",v:r},1)}e(1)}})},()=>{
o.O.s.Q!==0||o.O.s.b&262144?c.sendFgCmd(17,!0,o.$):b.initHelp({a:o.$},o.O)},()=>{let e=c.copyCmdOptions(l.i(),o.$)
;if(!e.esc){let t=e.key,n=(e.type||(t?"keydown":""))+"",i=e.class,r=e.delay,{xy:a,direct:s,directOptions:d}=e
;if(i=i&&i[0]==="$"?i.slice(1):(i&&i[0].toUpperCase()+i.slice(1).replace(/event$/i,"")||(n.startsWith("mouse")||n.includes("click")?"Mouse":"Keyboard"))+"Event",
a=/^(Mouse|Pointer|Wheel)/.test(i)&&a==null?[.5,.5]:a,a=e.xy=l.Z(a),a&&!a.n&&(a.n=o.x,o.x=1),e.click)n="click",
e.c=1;else if(o.x<0)for(let e of"down up;enter leave;start end;over out".split(";")){let[t,l]=e.split(" ")
;n=n.replace(t,l)}if(!n)return u.showHUD('Require a "type" parameter'),void c.runNextCmd(0)
;let f=e.init,m=f&&typeof f=="object"?f:e,p={};r=r&&+r>=0?Math.max(0|+r,1):null
;for(let t of["bubbles","cancelable","composed"]){let l=m!==e&&t in m?m[t]:e[t]
;p[t]=l!==!1&&(l!=null||n!=="mouseenter"&&n!=="mouseleave")}let v={e:1,c:1,t:1,class:1,type:1,key:1,return:1,delay:1,
esc:1,click:1,init:1,xy:1,match:1,direct:1,directOptions:1,clickable:1,exclude:1,evenIf:1,scroll:1,typeFilter:1,
textFilter:1,clickableOnHost:1,excludeOnHost:1,closedShadow:1,trust:1,trusted:1,isTrusted:1,superKey:1,target:1,
targetOptions:1};for(let t of m===e?"alt ctrl meta shift super".split(" "):[])t in e&&!(t+"Key"in e)&&(e[t+"Key"]=e[t],
delete e[t]);e.superKey&&(o.G?p.ctrlKey=!0:p.metaKey=!0,delete e.superKey)
;for(let[t,l]of Object.entries(m))!t||m===e&&t[0]==="$"||v.hasOwnProperty(t)||(p[m===e?t.startsWith("o.")?t.slice(2):t:t.startsWith("$")?t.slice(1):t]=l,
m===e&&delete e[t]);let b=null;if(t&&(typeof t=="object"||typeof t=="string")){
typeof t=="string"&&(b=/[^\w]/.exec(t.slice(1)));let e=typeof t=="object"?t:b?t.split(b[0]):[t]
;if(e[0]&&(e.length==1||!e[1]||+e[1]>=0)){b&&!e[0]&&(e[0]=t[0],e[1]||e.splice(1,1))
;let l=e[0],o=/^[a-z]$/i.test(l),i=!o&&l>="0"&&l<="9"&&l.length===1,r=l.toLowerCase(),a=e[1]&&0|+e[1]?0|+e[1]:o?r.charCodeAt(0)-(n!=="keypress"||l!==r?32:0):i?l.charCodeAt(0)-0:l==="Space"?32:0
;p.key=l==="Space"?" ":l==="Comma"?",":l==="Slash"?"/":l==="Minus"?"-":l[0]==="$"&&l.length>1?l.slice(1):l,
a&&m.keyCode==null&&(p.keyCode=a),
a&&m.which==null&&(p.which=a),(e.length>=3&&e[2]||m.code==null)&&(p.code=e[2]||(o?"Key"+l.toUpperCase():i?"Digit"+l:l))}
}e.type=n,e.class=i,e.init=p,e.delay=r,e.direct=s&&typeof s=="string"?s:"element,hover,scroll,focus",
d&&!d.search&&(d.search="doc"),e.directOptions=d||{search:"doc"},e.e=`Can't create "${i}#${n}"`,
e.t=n.startsWith("key")&&!(!e.trust&&!e.trusted&&(e.isTrusted||m.isTrusted)!=="force")}c.portSendFgCmd(o.O,16,!1,e,o.x)
},()=>{b.showVomnibar()},b.L,b.enterVisualMode,e=>{
let t=o.$.id,l=t!=null&&t+""||o.$.folder||o.$.path,i=((o.$.position||"")+"").toLowerCase(),r=!!o.$.all
;if(!l||typeof l!="string")return u.showHUD('Need "folder" to refer a bookmark folder.'),void e(0)
;o.X(l,t!=null&&!!(t+"")).then(t=>{if(!t)return e(0),void M(t===!1&&'Need valid "folder"')
;let l=t.u!=null,a=l?t.Y:t.ee,s=i==="begin"?0:i==="end"?-1:i==="before"?l?t.te:0:l&&i==="after"?t.te+1:-1
;(!r&&o.x*o.x<2?n.getCurTab:n.le)(function t(l){if(!l||!l.length)return e(0),n.g()
;let i=n.selectIndexFrom(l),d=l[i],[f,m]=r?[0,l.length]:h.getTabRange(i,l.length),p=o.$.filter,v=l;if(l=l.slice(f,m),
p&&!(l=h.oe(d,l,p)).length)return void e(0);let b=l.length;if(b>20&&c.ne())c.P("addBookmark",b).then(t.bind(0,v));else{
s=s>=0?s:o.re.ie.length;for(let e of l)n.t.bookmarks.create({parentId:a,title:e.title,url:n.getTabUrl(e),index:s++},n.g)
;u.showHUD(`Added ${b} bookmark${b>1?"s":""}.`),e(1)}})})},e=>{o.$.copied!==!1?(c.overrideCmdOptions({
copied:o.$.copied||!0}),v.openUrl()):e(0)},b.captureTab,e=>{e(k.ue.ae(o.$,o.O))},e=>{let t=o.O?o.O.s.se:o.de===2
;k.ce.fe(t),u.showHUDEx(o.O,"fhCleared",0,[t?["incog"]:""]),e(1)},e=>{let t=o.O&&b.me(o.O,o.$.type,!!o.$.local)
;Promise.resolve(t).then(t=>{let l=o.$.local?o.$.all?k.ve.pe("#"):void u.be({H:21,U:0,c:2,f:c.parseFallbackOptions(o.$)
},!0,1,t):k.ve.pe();typeof l=="number"&&e(l>0?1:0)})},y.copyWindowInfo,function e(t,l,i){let r,a=o.$.$pure
;if(a==null&&c.overrideOption("$pure",a=!Object.keys(o.$).some(e=>e!=="opener"&&e!=="position"&&e!=="evenIncognito"&&e[0]!=="$")),
a)if(!(r=t&&t.length>0?t[0]:null)&&o.he>=0&&!n.g()&&i!=="dedup")n.ye(n.tabsGet,o.he).then(t=>{e(t&&[t],0,"dedup")
});else{let e=o.$.opener===!0;n.openMultiTabs(r?{active:!0,windowId:r.windowId,openerTabId:e?r.id:void 0,
index:v.newTabIndex(r,o.$.position,e,!0)}:{active:!0},o.x,o.$.evenIncognito,[null],!0,r,e=>{e&&n.selectWndIfNeed(e),
c.getRunNextCmdBy(3)(e)})}else v.openUrl(t)},(e,t)=>{h.ke(!0,1,function e(t,[l,i,r],a,s){
s&&([l,r]=h.getTabRange(i,t.length,0,1));let f=o.$.filter,m=t;t=t.slice(l,r)
;let p=n.selectFrom(t),v=(t=f?h.oe(p,t,f):t).includes(p)?t.length-1:t.length;if(!v)return void a(0)
;if(v>20&&c.ne())return void c.P("discardTab",v).then(e.bind(null,m,[l,i,r],a))
;let b=t[h.getNearArrIndex(t,p.index+(o.x>0?1:-1),o.x>0)],y=[],k=!b.discarded
;k&&(v<2||b.autoDiscardable!==!1)&&y.push(n.ye(n.Me.discard,b.id));for(let e of t)e===p||e===b||e.discarded||(k=!0,
e.autoDiscardable!==!1&&y.push(n.ye(n.Me.discard,e.id)));y.length?Promise.all(y).then(e=>{
let t=e.filter(e=>e!==void 0),l=t.length>0;u.showHUD(l?`Discarded ${t.length} tab(s).`:d.A("discardFail")),a(l)
}):(u.showHUD(k?d.A("discardFail"):"Discarded."),a(0))},e,t)},e=>{let t=o.O?o.O.s.m:o.he
;if(t<0)return u.complainLimits(d.A("dupTab")),void e(0);let l=o.$.active===!1;n.ye(n.Me.duplicate,t).then(i=>{
i?(l&&n.selectTab(t,n.g),l?e(1):c.runNextOnTabLoaded(o.$,i),o.x<2||n.tabsGet(t,e=>{n.openMultiTabs({url:n.getTabUrl(e),
active:!1,windowId:e.windowId,pinned:e.pinned,index:e.index+2,openerTabId:e.id},o.x-1,!0,[null],!0,e,null)})):e(0)}),
l&&n.selectTab(t,n.g)},e=>{e.length&&b.framesGoBack({s:o.x,o:o.$},null,e[0])},e=>{
let t=!!o.$.absolute,l=o.$.filter,i=o.$.wrap!==!1,r=b.ge(),a=a=>{let u=o.x,s=n.selectFrom(a),d=a.length
;if(l&&!(a=h.oe(s,a,l)).length)return void e(0)
;let f=a.length,m=h.getNearArrIndex(a,s.index,u<0),p=t?u>0?Math.min(f,u)-1:Math.max(0,f+u):Math.abs(u)>d*2?u>0?f-1:0:m+u
;if(p=i?p>=0?p%f:f+(p%f||-f):p>=f?f-1:p<0?0:p,a[0].pinned&&o.$.noPinned&&!s.pinned&&(u<0||t)){let l=1
;for(;l<f&&a[l].pinned;)l++;if(f-=l,f<1)return void e(0);t||Math.abs(u)>d*2||!i?p=t?Math.max(l,p):p||l:(p=m-l+u,
p=p>=0?p%f:f+(p%f||-f),p+=l)}let v=a[p],y=!v.active
;y?n.selectTab(v.id,r?b.blurInsertOnTabChange:c.getRunNextCmdBy(1)):e(y)},u=t=>{h.ke(!0,1,a,t||[],e,null)}
;t?o.x!==1||l?u():n.ye(n.Me.query,{windowId:o.we,index:0}).then(e=>{e&&e[0]&&n.$e(e[0])?a(e):u()
}):Math.abs(o.x)===1?n.ye(n.getCurTab).then(u):u()},()=>{var e
;o.$.type!=="frame"&&o.O&&o.O.s.Q&&(o.O=((e=u.C())===null||e===void 0?void 0:e.R)||o.O);let t={H:5,U:0,p:o.x,
t:o.$.trailingSlash,r:o.$.trailing_slash,s:p.T(o.$),e:o.$.reloadOnRoot!==!1},l=u.be(t);Promise.resolve(l||"").then(()=>{
typeof t.e=="object"&&c.getRunNextCmdBy(2)(t.e.p!=null||void 0)})},y.joinTabs,b.mainFrame,(e,t)=>{
let l=n.selectIndexFrom(e);if(e.length>0&&(o.x<0?(o.x<-1?l:e[l].index)===0:o.x>1&&l===e.length-1))return void t(0)
;let i=o.$.group,r=i!=="ignore"&&i!==!1;h.ke(!0,1,l=>{
let i=n.selectIndexFrom(l),a=l[i],u=a.pinned,s=Math.max(0,Math.min(l.length-1,i+o.x))
;for(;u!==l[s].pinned;)s-=o.x>0?1:-1;if(s!==i&&r){let e=n.getGroupId(a),t=n.getGroupId(l[s])
;if(t!==e&&(Math.abs(o.x)===1||e!==n.getGroupId(l[o.x>0?s<l.length-1?s+1:s:s&&s-1]))){
for(e!==null&&(i>0&&n.getGroupId(l[i-1])===e||i+1<l.length&&n.getGroupId(l[i+1])===e)&&(s=i,t=e);s+=o.x>0?1:-1,
0<=s&&s<l.length&&n.getGroupId(l[s])===t;);s-=o.x>0?1:-1}}s===i&&a.active?t(0):n.Me.move((a.active?a:e[0]).id,{
index:l[s].index},n.xe(t))},e,t,r?t=>n.getGroupId(e[0])===n.getGroupId(t):null)
},y.moveTabToNewWindow,y.moveTabToNextWindow,()=>{v.openUrl()},(e,t)=>{h.ke(!o.$.single,0,y.reloadTab,e,t)},(e,t)=>{
h.ke(!1,1,(e,[t],l)=>{n.Oe(e[t].id,l)},e,t)},y.removeTab,e=>{function t(l){let a=l;if(!a||a.length===0)return n.g()
;let u=r?a.findIndex(e=>e.id===o.he):-1,s=u>=0?u:n.selectIndexFrom(a),d=o.$.noPinned,f=o.$.filter,m=a[s];i>0?(++s,
a=a.slice(s,s+i)):(d=d!==null&&d!==void 0?d:s>0&&a[0].pinned&&!a[s-1].pinned,
i<0?a=a.slice(Math.max(s+i,0),s):(a=a.slice(0)).splice(s,1)),d&&(a=a.filter(e=>!e.pinned)),f&&(a=h.oe(m,a,f))
;let p=o.$.mayConfirm
;p&&a.length>(typeof p=="number"?Math.max(p,5):20)&&c.ne()?c.P("closeSomeOtherTabs",a.length).then(t.bind(null,l)):a.length>0?(i<0&&(a=a.reverse()),
n.Oe(a.map(e=>e.id),e)):e(0)}let l=o.$.others,i=(l!=null?l:o.$.other)?0:o.x,r=i===0&&o.$.acrossWindows
;r?n.Me.query({},t):h._e(i,t)},(e,t)=>{e.length<=0?t(0):y.Pe(e[0],void 0,void 0,o.$.group!==!1)},e=>{let t=n.Ie()
;if(!t)return e(0),u.complainNoSession();let l=!!o.$.one,i=+t.MAX_SESSION_RESULTS||25,r=Math.abs(o.x);if(r>i){
if(l)return e(0),void u.showHUD(d.A("indexOOR"));r=i}if(!l&&r<2&&(o.O?o.O.s.se:o.de===2)&&!o.$.incognito)return e(0),
u.showHUD(d.A("notRestoreIfIncog"));let a=o.$.active!==!1,s=o.$.currentWindow===!0,f=o.O?o.O.s.m:o.he,m=o.we,p=t=>{
t!==void 0?y.Te(m,t,a?null:f).then(t=>{a&&t?c.runNextOnTabLoaded(o.$,t):e(1)}):e(0)};(async()=>{
let o,v=Math.max(r*1.2|0,2),b=!1,h=s?e=>!!e.tab&&e.tab.windowId>0&&e.tab.windowId===m:null
;if(s&&r<=Math.min(i,25)&&(o=await n.je(t.getRecentlyClosed,{maxResults:r
}),o.some(e=>!(!e.tab||e.tab.windowId>0))&&(c.overrideOption("currentWindow",!1),s=!1),b=o.length>r,o=h?o.filter(h):o,
!b&&o.length<r&&v<=Math.min(i,25)&&(o=await n.je(t.getRecentlyClosed,{maxResults:v}),o=h?o.filter(h):o)),
(!o||!b&&o.length<r)&&(o=await n.je(t.getRecentlyClosed,r<=25&&!s?{maxResults:r}:{}),o=h?o.filter(h):o),
o.length<(l?r:1))return e(0),u.showHUD(d.A("indexOOR"))
;r===1?n.ye(t.restore,s?o[0].tab.sessionId:null).then(p):Promise.all(o.slice(l?r-1:0,r).map(e=>n.ye(t.restore,(e.tab||e.window).sessionId))).then(e=>{
p(l?e[0]:null)}),a||n.selectTab(f,n.g)})()},()=>{o.$.$seq==null?m.runKeyWithCond():m.runKeyInSeq(o.$.$seq,o.x,null)
},e=>{let t=(o.$.keyword||"")+"",l=r.Ne({u:n.getTabUrl(e[0])})
;if(!l||!t)return void(c.runNextCmd(0)||u.showHUD(d.A(t?"noQueryFound":"noKw")));let a={},s=p.T(o.$);l.u=o.S(l.u,0,s,a),
a.F!=null&&(t=a.F);let f=i.K(l.u.split(" "),t,2),m=o.$.reuse;c.overrideCmdOptions({url_f:f,reuse:m!=null?m:0,opener:!0,
keyword:""}),v.openUrl(e)},e=>{let t=o.$.id,l=o.$.data
;if(!t||typeof t!="string"||l===void 0)return u.showHUD('Require a string "id" and message "data"'),void e(0)
;let i=Date.now(),r=l=>{l=l&&l.message||l+"",console.log("Can not send message to the extension %o:",t,l),
u.showHUD("Error: "+l),e(0)};try{n.t.runtime.sendMessage(t,o.$.raw?l:{handler:"message",from:"Vimium C",count:o.x,
keyCode:o.Re,data:l},t=>{let l=n.g();return l?r(l):typeof t=="string"&&Math.abs(Date.now()-i)<1e3&&u.showHUD(t),
l||e(t!==!1),l})}catch(e){r(e)}},e=>{let t=o.$.text,l=typeof t=="number",n=!!o.$.silent,i=o.$.isError
;if(!t&&!l&&!n&&i==null&&o.$.$f){let l=o.$.$f;if(t=l&&l.t?d.Ce(`${l.t}`):"",!t)return void e(!1)}
n||u.showHUD(t||l?t instanceof Promise?t:t+"":d.A("needText")),e(i!=null?!!i:!!t||l)},(e,t)=>{k.ue.Se(o.$,o.x,e,t)
},y.toggleMuteTab,(e,t)=>{h.ke(!0,0,y.togglePinTab,e,t)},y.toggleTabUrl,e=>{
let t=e?e[0].id:o.O?o.O.s.m:o.he,n=((o.$.style||"")+"").trim()||"dark",i=!!o.$.current,r=o.$.enable;if(r==null){
let e=o.Fe.find(e=>e.s.m===t);if(e)return void e.postMessage({N:46,t:n,b:!i})}
let u=o.Ke.t,d=u&&` ${u} `,f=d.includes(` ${n} `)
;r=r!=null?!!r:!f,(r!==f||o.$.forced)&&(n==="dark"?s.qe(1,r,2):(u=r===f?u:r?u+n:d.replace(n," "),
u=u.trim().replace(l.q," "),o.Ke.t=u,a.De({t:u}))),c.runNextCmdBy(r?1:0,o.$,100)},b.toggleZoom,e=>{
let t=!!o.$.acrossWindows,l=!!o.$.onlyActive,i=o.$.filter,r=b.ge(),a={},s=t=>{
if(t.length<2)return l&&u.showHUD("Only found one browser window"),e(0),n.g()
;let a=o.O?o.O.s.m:o.he,s=t.findIndex(e=>e.id===a),f=s>=0?t[s]:null;if(s>=0&&t.splice(s,1),
i&&!(t=h.oe(f,t,i)).length)return void e(0)
;let c=t.filter(e=>o.ze.has(e.id)).sort(k.He.Ae),m=(t=l&&c.length===0?t.sort((e,t)=>t.id-e.id):c)[o.x>0?Math.min(o.x,t.length)-1:Math.max(0,t.length+o.x)]
;m?l?n.Be.update(m.windowId,{focused:!0},r?()=>b.blurInsertOnTabChange(m):n.xe(e)):d(m.id):e(0)},d=t=>{
n.selectTab(t,t=>(t&&n.selectWndIfNeed(t),r?b.blurInsertOnTabChange(t):n.xe(e)()))};if(o.x===1&&!l&&o.he!==-1){
let e=h.Ve();if(e>=0)return void Promise.all([n.ye(n.tabsGet,e),h.getNecessaryCurTabInfo(i)]).then(([e,l])=>{
e&&(t||e.windowId===o.we)&&n.$e(e)&&(!i||h.oe(l,[e],i).length>0)?d(e.id):t?n.Me.query(a,s):n.le(s)})}t||l?n.Me.query(l?{
active:!0}:a,s):n.le(s)},e=>{let t=o.$.newWindow;t!==!0?n.ye(n.t.permissions.contains,{
permissions:["downloads.shelf","downloads"]}).then(l=>{if(l){let t,l=n.t.downloads.setShelfEnabled;try{l(!1),
setTimeout(()=>{l(!0),e(1)},256)}catch(e){t=(e&&e.message||e)+""}
u.showHUD(t?"Can not close the shelf: "+t:d.A("downloadBarClosed")),t&&e(0)
}else t===!1&&o.O?(u.showHUD("No permissions to close download bar"),e(0)):o.M[29](e)}):o.M[29](e)},()=>{
let e=u.C(),t=!!o.$.unhover,l=o.$.suppress;for(let l of e?e.J:[]){let n={r:1,u:t};if(l===e.d){
let e=c.parseFallbackOptions(o.$);e&&Object.assign(n,e)}c.portSendFgCmd(l,7,!1,n,1)}
(c.hasFallbackOptions(o.$)?l===!0:l!==!1)&&e&&e.d.postMessage({N:14,t:150})},e=>{let t,l=o.$.$cache;if(l!=null){
let e=o.re.Ee===l[1]?l[0]:"",n=e&&(o.re.ie.find(t=>t.ee===e)||o.re.Ue.find(t=>t.ee===e))
;n?t=Promise.resolve(n):c.overrideOption("$cache",null)}let n=!!t,i=o.x,r=!1;if(!t){
let l=o.$.id,n=o.$.path,a=l!=null&&l+""||n||o.$.title
;if(!a||typeof a!="string")return u.showHUD("Invalid bookmark "+(l!=null?"id":n?"path":"title")),void e(0)
;let s=c.fillOptionWithMask(a,o.$.mask,"name",["path","title","mask","name","value"],i)
;if(!s.ok)return void u.showHUD((s.result?"Too many potential names":"No name")+" to find bookmarks");r=s.useCount,
t=o.X(s.result,l!=null&&!!(l+""))}t.then(t=>{if(t){n||r||c.overrideOption("$cache",[t.ee,o.re.Ee]);let e=t.u!=null
;c.overrideCmdOptions(e?{url:t.We||t.u}:{urls:o.re.ie.filter(e=>e.Y===t.ee).map(e=>e.We||e.u)},!0),o.x=r||!e?1:i,
v.openUrl()}else e(0),M(t===!1&&'Need valid "title" or "title"')})},y.toggleWindow];let M=e=>{
o.re.f==3?(u.showHUDEx(o.O,"bookmarksRevoked",1,[]),setTimeout(()=>{v.Je({u:o.Ze.Qe+"#optionalPermissions"})
},800)):u.showHUD(e||"The bookmark node is not found")}});

View File

@@ -0,0 +1,49 @@
"use strict";__filename="background/browser.js",define(["require","exports","./store","./utils"],(e,l,t,r)=>{
Object.defineProperty(l,"__esModule",{value:!0
}),l.import2=l.s=l.p=l.v=l.w=l.removeTempTab=l.downloadFile=l.makeTempWindow_r=l.makeWindow=l.openMultiTabs=l.tabsCreate=l.selectWndIfNeed=l.selectWnd=l.selectTab=l.Oe=l.h=l.k=l.je=l.xe=l.ye=l.H=l.selectIndexFrom=l.selectFrom=l.getCurWnd=l.$e=l.le=l.getCurTabs=l.getCurTab=l.isTabMuted=l.getTabUrl=l.getGroupId=l.tabsUpdate=l.tabsGet=l.g=l.N=l.Ie=l.Be=l.Me=l.t=void 0,
l.t=chrome,l.Me=l.t.tabs,l.Be=l.t.windows,l.Ie=()=>l.t.sessions,l.N=()=>l.t.webNavigation,l.g=()=>l.t.runtime.lastError,
l.tabsGet=l.Me.get,l.tabsUpdate=l.Me.update,l.getGroupId=e=>{let l=e.groupId;return l!==-1&&l!=null?l:null},
l.getTabUrl=e=>e.url||e.pendingUrl||"",l.isTabMuted=e=>e.mutedInfo.muted,l.getCurTab=l.Me.query.bind(null,{active:!0,
lastFocusedWindow:!0}),l.getCurTabs=l.Me.query.bind(null,{lastFocusedWindow:!0}),l.le=l.getCurTabs,l.$e=()=>!0,
l.getCurWnd=(e,r)=>{let n={populate:e};return t.we>=0?l.Be.get(t.we,n,r):l.Be.getCurrent(n,r)},
l.selectFrom=e=>e[l.selectIndexFrom(e)],l.selectIndexFrom=e=>{for(let l=e.length;0<--l;)if(e[l].active)return l;return 0
},l.H=e=>/^(edge-)?extension:/.test(e)?t.Ze.U+"-"+e.slice(e.indexOf("ext")):e,l.ye=function(e){
let t=[].slice.call(arguments,1),{Ge:n,Le:o}=r.Xe();return t.push(e=>{let t=l.g();return o(t?void 0:e!=null?e:null),t}),
e.apply(void 0,t),n},l.xe=e=>e!==t.u?()=>{let t=l.g();return e(!t),t}:l.g,l.je=function(e){
let l=[].slice.call(arguments,1);return new Promise(t=>{l.push(t),e.apply(0,l)})};let n=(e,l)=>{let r=t.Ye.get(e)
;return r===1||r===2&&!(!t.el&&!l)};l.h=e=>{l.k=e},l.Oe=(e,t)=>{let r=e=>{let l=t;l&&(t=null,e&&clearTimeout(n),l&&l(e))
};if(t===l.g)return void l.Me.remove(e,t);let n=setTimeout(r,1500,!1);l.Me.remove(e,()=>{let e=l.g();return r(!e),e})},
l.selectTab=(e,t)=>{l.tabsUpdate(e,{active:!0},t)},l.selectWnd=e=>(e&&l.Be.update(e.windowId,{focused:!0}),l.g()),
l.selectWndIfNeed=e=>(e&&e.windowId!==t.we&&l.selectWnd(e),l.g()),l.tabsCreate=(e,r,o)=>{let{url:u}=e
;return u?n(u,t.de===2)&&delete e.url:(u=t.newTabUrl_f,
t.de===2&&(o===-1?u.includes("pages/blank.html")&&u.startsWith(t.ll):!o&&u.startsWith(location.protocol))||n(u,t.de===2)||(e.url=u),
e.url||delete e.url),l.Me.create(e,r)},l.openMultiTabs=(e,t,r,n,o,u,i)=>{let d;o=o!==!1,d=u!=null?l.getGroupId(u):null,
o||d==null||delete e.index,d=o&&d!=null&&l.Me.group?d:void 0,l.tabsCreate(e,r=>{if(l.g())return i&&i(),l.g()
;e.index=r.index,e.windowId=r.windowId,d!=null&&l.Me.group({tabIds:r.id,groupId:d}),i&&i(r),e.active=!1
;let o=e.index!=null,u=n?n.length:1,s=d!=null?e=>(e&&l.Me.group({tabIds:e.id,groupId:d}),l.g()):l.g
;n.length>1&&(n[0]=e.url);for(let r=0;r<t;r++)for(let t=r>0?0:1;t<u;t++)n.length>1&&(e.url=n[t]),o&&++e.index,
l.Me.create(e,s)},r)},l.makeWindow=(e,r,o)=>{let u=e.focused!==!1
;(r=r?r==="minimized"===u||e.type==="popup"||r==="normal"||r==="docked"?"":r:"")&&!r.includes("fullscreen")&&(e.state=r,
r=""),e.focused=!0;let i=e.url
;i||e.tabId!=null||(i=e.url=t.newTabUrl_f),typeof i=="string"&&n(i,e.incognito)&&delete e.url,
l.Be.create(e,r||!u||o?e=>{if(o&&o(e),!r&&u||!e)return l.g();let t=u?{}:{focused:!1};r&&(t.state=r),l.Be.update(e.id,t)
}:l.g)},l.makeTempWindow_r=(e,t,r)=>{l.Be.create({type:"normal",focused:!1,incognito:t,state:"minimized",tabId:e},r)},
l.downloadFile=(e,n)=>e.startsWith("data:")?t.tl(4,{u:e,t:n||""},null).then(e=>!!e):l.ye(l.t.permissions.contains,{
permissions:["downloads"]}).then(t=>{if(!t)return!1;let o={url:e};if(n){let l=/\.[a-z\d]{1,4}(?=$|[?&])/i
;if(n=(n=(n=r.rl(n))[0]==="#"?n.slice(1):n).replace(/[\r\n]+/g," ").replace(/[/\\?%*:|"<>_]+/g,"_"),!l.test(n)){
let t=l.exec(e);n+=t?t[0]:e.includes(".")?"":".bin"}o.filename=n}return l.ye(l.t.downloads.download,o).then(()=>!0)}),
l.removeTempTab=e=>{l.Me.remove(e,l.g)
},l.w=e=>(e=e.slice(0,99).toLowerCase(),t.Ye.get(e)!==1&&(e.startsWith("about:")?e!=="about:blank":e.startsWith("chrome:")?!e.startsWith("chrome://downloads"):e.startsWith(t.Ze.U)&&!(typeof t.Ze.nl!="string"?t.Ze.nl.test(e):e.startsWith(t.Ze.nl))||t.el&&/^(edge|extension):/.test(e)&&!e.startsWith("edge://downloads"))),
l.v=(e,t)=>{
let r=l.t.permissions,n=Promise.all(e.map(e=>e&&l.ye(l.t.permissions.contains,e))),o=e.map(e=>e&&(e.permissions||e.origins)[0])
;n.then(e=>{let l=!1,n=!1,u=(u,s)=>{let a=!s;if(s){let l=s.permissions;for(let t of l||[]){let l=o.indexOf(t)
;l>=0&&(e[l]=u,a=!0)}for(let t of(!l||l.length<=0)&&s.origins||[])if(t!=="chrome://*/*"){let l=o.indexOf(t)
;l>=0&&(e[l]=u,a=!0)}else for(let l=0;l<o.length;l++)(o[l]||"").startsWith("chrome://")&&(e[l]=u,a=!0)}
a&&(t(e,!0)===!1&&(l=n=!1),l!==e.includes(!1)&&r.onAdded[(l=!l)?"addListener":"removeListener"](i),
n!==e.includes(!0)&&r.onRemoved[(n=!n)?"addListener":"removeListener"](d))},i=u.bind(null,!0),d=u.bind(null,!1)
;e.includes(!1)||e.includes(!0)?u(!0):t(e,!1)})},l.p=(e,t,r,n,o,u)=>{l.t.scripting.executeScript({files:n?void 0:r,
func:n,args:o,target:t>=0?{tabId:e,frameIds:[t]}:{tabId:e,allFrames:!0},injectImmediately:!0},u||l.g)},l.s=e=>{
let r=t.ll.length-1;l.p(e,-1,t.Ze.ol.slice(0,-1).map(e=>e.slice(r)))
},l.import2=e=>Promise.resolve(__moduleMap[e.split("/").slice(-1)[0].replace(".js","")]),t.ul<6&&(t.il=new Promise(e=>{
let t=l.t.runtime.onInstalled,r=l=>{let n=r;n&&(r=null,e(l),t.removeListener(n))};t.addListener(r),
setTimeout(r,6e3,null)}))});

View File

@@ -0,0 +1,93 @@
"use strict"
;__filename="background/browsing_data_manager.js",define(["require","exports","./store","./browser","./utils","./settings","./completion_utils"],(e,t,l,i,r,n,o)=>{
Object.defineProperty(t,"__esModule",{value:!0}),t.et=t.tt=t.lt=t.it=t.rt=t.nt=t.ot=t.ut=t.ft=t.st=void 0
;let u,f,s=decodeURIComponent,a=-1,_="1",m=null,d=null,c=null,p=!1;t.st=d;let h=null;t.ft=h,t.ut=e=>{
let t,l,i=e.slice(0,5);if(i==="https")t=8;else if(i==="http:")t=7;else{if(!i.startsWith("ftp"))return null;t=6}
return l=e.indexOf("/",t),{at:e=e.slice(t,l<0?e.length:l),_t:t}};let T=[()=>{
i.t.bookmarks.onCreated.removeListener(t.ot.mt)},()=>{i.t.bookmarks.onCreated.addListener(t.ot.mt),t.ot.mt()}],v=e=>{
l.re.ie=[],l.re.Ue=[],t.ot.dt(e[0]?0:3)};t.ot={ct:null,pt:0,ht:!1,Tt:0,vt:null,dt(e){let i=t.ot.vt;t.ot.vt=null,
l.re.f=e,i&&i()},gt(){let e=i.t.bookmarks;e.onCreated.addListener(t.ot.mt),e.onRemoved.addListener(t.ot.bt),
e.onChanged.addListener(t.ot.bt),e.onMoved.addListener(t.ot.mt),e.onImportBegan.addListener(T[0]),
e.onImportEnded.addListener(T[1])},xt(){let e=i.t.bookmarks;if(v&&(i.v([{permissions:["bookmarks"]}],v),v=null),e){
l.re.f=1,t.ot.pt&&(clearTimeout(t.ot.pt),t.ot.pt=0);try{e.getTree(t.ot.yt)}catch(e){t.ot.dt(3)}}else t.ot.dt(3)},yt(e){
let n="",u="",f=0;l.re.ie=[],l.re.Ue=[],o.kt.pe(2);let s=(e,i)=>{let o=e.title,a=e.id,_=o||a,m=n+"/"+_;if(e.children){
l.re.Ue.push({ee:a,wt:m,Dt:_});let t=n,i=u;return 2<++f&&(n=m),u=a,e.children.forEach(s),--f,n=t,void(u=i)}
let d=e.url,h=d.startsWith("javascript:");l.re.ie.push({ee:a,wt:m,Dt:_,t:h?"javascript:":d,Lt:c!==null?t.lt(d,p?m:o):1,
u:h?"javascript:":d,Y:u,te:i,We:h?d:null,Rt:h?r.rl(d):null})};if(!e)return t.ot.dt(3),i.g();e.forEach(s),t.ot.dt(2),
setTimeout(()=>t.et.It(l.re.ie),50),t.ot.ht||(setTimeout(t.ot.gt,0),t.ot.ht=!0)},mt(){let e=()=>{
let i=performance.now()-l.re.Ee;l.re.f===0&&(i>=59900||i<-5e3?(t.ot.pt=t.ot.Tt=0,t.ot.xt()):t.ot.pt=setTimeout(e,3e4))}
;l.re.Ee=performance.now(),l.re.f===2&&(t.ot.pt=setTimeout(e,6e4),l.re.f=0)},bt(e,i){
let r=l.re.ie,n=i&&i.title,o=r.findIndex(t=>t.ee===e);if(o>=0){let e=r[o],f=e.u,s=i&&i.url
;if(u&&(n==null?f!==e.t||!i:s!=null&&f!==s)&&l.Mt.has(f)&&t.nt.jt&&t.nt.Ut(f)<0&&l.Mt.delete(f),
n!=null)e.wt=e.wt.slice(0,-e.Dt.length)+(n||e.ee),e.Dt=n||e.ee,s&&(e.u=s,e.t=t.et.Pt(s,e),t.et.Ot()),
c!==null&&(e.Lt=t.lt(e.We||e.u,p?e.wt:e.Dt)),l.re.Ee=performance.now();else{r.splice(o,1)
;for(let t=i?o:r.length;t<r.length;t++)r[t].Y===e.Y&&r[t].te--;i||t.ot.mt()}}else if(l.re.Ue.find(t=>t.ee===e)){
if(n==null&&!t.ot.Tt&&u){let e=l.Mt,i=t.nt.Ut;for(let{u:l}of t.nt.jt?r:[])e.has(l)&&i(l)<0&&e.delete(l);t.ot.Tt=1}
t.ot.mt()}}},l.X=(e,i)=>{if(l.re.f<2){let n=r.Xe();return t.ot.vt=n.Le,t.ot.xt(),n.Ge.then(l.X.bind(0,e,i))}
let n=!i&&e.includes("/"),o=n?(e+"").replace(/\\\/?|\//g,e=>e.length>1?"/":"\n").split("\n").filter(e=>e):[]
;if(!e||n&&!o.length)return Promise.resolve(!1)
;if(i)return Promise.resolve(l.re.ie.find(t=>t.ee===e)||l.re.Ue.find(t=>t.ee===e)||null)
;let u=n?"/"+o.slice(1).join("/"):"",f=n?"/"+o[0]+u:""
;for(let t of l.re.ie)if(n&&(t.wt===f||t.wt===u)||t.Dt===e)return Promise.resolve(t)
;for(let t of l.re.Ue)if(n&&(t.wt===f||t.wt===u)||t.Dt===e)return Promise.resolve(t);let s=null
;for(let t of l.re.ie)if(t.Dt.includes(e)){if(s){s=null;break}s=t}return Promise.resolve(s)};let g=e=>{e&&e()};t.nt={
jt:!1,Et:0,At:null,Vt(e){t.nt.At?e&&t.nt.At.push(e):(l.Wt.St=Date.now(),t.nt.At=e?[e]:[],t.nt.Et||i.t.history.search({
text:"",maxResults:2e4,startTime:0},e=>{setTimeout(t.nt.$t,0,e)}))},$t(e){t.nt.$t=null;let r=t.nt.qt,n=0
;for(let t of e){let l=t.url;l.length>2e3&&(l=r(l,t)),e[n++]={t:l,Dt:t.title,zt:t.lastVisitTime,Lt:1,u:l}}
if(c)for(let l of e)t.lt(l.t,l.Dt)===0&&(l.Lt=0);setTimeout(()=>{setTimeout(()=>{let e=l.Wt.Bt
;for(let l=e.length-1;0<l;){let i=e[l],r=i.u,n=i.t=t.et.Pt(r,i),o=n.length>=r.length;for(;0<=--l;){let i=e[l],u=i.u
;if(u.length>=r.length||!r.startsWith(u))break;i.u=r.slice(0,u.length);let f=o?u:t.et.Pt(u,i)
;i.t=o||f.length<u.length?n.slice(0,f.length):f}}t.nt.Ct&&setTimeout(()=>{t.nt.Ct&&t.nt.Ct(l.Wt.Bt)},200)},100),
l.Wt.Bt.sort((e,t)=>e.u>t.u?1:-1),t.nt.jt=!0,i.t.history.onVisitRemoved.addListener(t.nt.Ht),
i.t.history.onVisited.addListener(t.nt.Ft)},100),l.Wt.Bt=e,t.nt.Vt=g,t.nt.At&&t.nt.At.length>0&&setTimeout(e=>{
for(let t of e)t()},1,t.nt.At),t.nt.At=null},Ft(e){let i=e.url;i.length>2e3&&(i=t.nt.qt(i,e))
;let r=++l.Wt.Gt,n=t.nt.Ut(i);n<0&&l.Wt.Jt++,(r>59||r>10&&Date.now()-l.Wt.St>3e5)&&t.nt.Kt(),t.nt.Nt(e,i,n)},Nt(e,i,r){
let n,u=e.lastVisitTime,f=e.title,s=r>=0?l.Wt.Bt[r]:{t:"",Dt:f,zt:u,Lt:c!==null?t.lt(i,f):1,u:i},a=t.ut(i)
;if(a===null||((n=l.Wt.Qt.get(a.at))!==void 0?(n.zt=u,r<0&&(n.Xt+=s.Lt),a._t>6&&(n.Yt=a._t===8?1:0)):l.Wt.Qt.set(a.at,{
zt:u,Xt:s.Lt,Yt:a._t===8?1:0})),r>=0){if(s.zt=u,f&&f!==s.Dt&&(h===null||!h.test(f.slice(0,100)))&&(s.Dt=f,
o.kt.Zt!==0&&o.kt.pe(1),c!==null)){let e=t.lt(i,f);s.Lt!==e&&(s.Lt=e,n!==void 0&&(n.Xt+=e||-1))}}else s.t=t.et.Pt(i,s),
l.Wt.Bt.splice(~r,0,s),o.kt.Zt!==0&&o.kt.pe(1)},Ht(e){f.length=0;let i=l.Mt;if(o.kt.pe(1),e.allHistory){l.Wt.Bt=[],
l.Wt.Qt=new Map;let e=[];for(let t of l.re.ie){let l=i.get(t.u);l!==void 0&&e.push([t.u,l])}
if(e.length)l.Mt=new Map(e);else{i.clear();for(let[t,l]of e)i.set(t,l)}return}let r,n=t.nt.Ut,{Bt:u,Qt:s}=l.Wt
;for(let l of e.urls){let e=n(l);if(e>=0){if(u[e].Lt){let e=t.ut(l);e&&(r=s.get(e.at))&&--r.Xt<=0&&s.delete(e.at)}
u.splice(e,1),i.delete(l)}}},qt(e,t){let l=e.lastIndexOf(":",9),i=l>0&&e.substr(l,3)==="://",n=t.title
;return e=e.slice(0,(i?e.indexOf("/",l+4):l)+320)+"\u2026",n&&n.length>160&&(t.title=r.fl(n,0,160)),e},Kt(){
let e=Date.now();if(l.Wt.Jt<=0);else{if(e<l.Wt.St+1e3&&e>=l.Wt.St)return;setTimeout(i.t.history.search,50,{text:"",
maxResults:Math.min(999,l.Wt.Gt+10),startTime:e<l.Wt.St?e-3e5:l.Wt.St},t.nt.sl)}return l.Wt.St=e,l.Wt.Jt=l.Wt.Gt=0,
t.et.Ot()},Ct(e){t.nt.Ct=null;let i=l.Wt.Qt;for(let{u:l,zt:r,Lt:n}of e){let e=t.ut(l);if(e===null)continue
;let{at:o,_t:u}=e,f=i.get(o);f!==void 0?(f.zt<r&&(f.zt=r),f.Xt+=n,u>6&&(f.Yt=u===8?1:0)):i.set(o,{zt:r,Xt:n,Yt:u===8?1:0
})}},sl(e){let i=l.Wt.Bt,r=t.nt.Ut;if(!(i.length<=0)&&t.nt.jt)for(let l of e){let e=l.url;e.length>2e3&&(e=t.nt.qt(e,l))
;let n=r(e);if(n>=0){let r=i[n],o=l.title;o&&o!==r.Dt&&(t.nt.Nt(l,e,n),l.title=r.Dt)}else t.nt.Nt(l,e,n)}},Ut(e){
let t="",i=l.Wt.Bt,r=i.length-1,n=0,o=0;for(;n<=r;)if(o=n+r>>>1,t=i[o].u,t>e)r=o-1;else{if(t===e)return o;n=o+1}return~n
}},t.rt=e=>{let i,r,n=l.Wt.Bt,o=!!n&&n.length>0&&t.nt.jt&&h!==null;for(let l of e){let e=l.url
;if(e.length>2e3&&(e=l.url=t.nt.qt(e,l)),o&&(i=l.title)&&h.test(i.slice(0,100))){
let i=r===null||r===void 0?void 0:r.get(e);if(i===void 0){let l=t.nt.Ut(e);i=l>=0?n[l].Dt:"",(r||(r=new Map)).set(e,i)}
i&&(l.title=i)}}},t.it=(e,r,n)=>{let o=i.Ie();o?o.getRecentlyClosed({
maxResults:Math.min(Math.round(e*1.2),+o.MAX_SESSION_RESULTS||25,25)},e=>{let o,u=[],f=0,s=Date.now()-performance.now()
;for(let i of e||[]){let e=i.tab,n=null;if(!e){if(!(n=i.window)||!n.tabs||!n.tabs.length)continue;f=1,
e=n.tabs.find(e=>e.active)||n.tabs[0],n.sessionId||(n=null)}t.rt([e]);let{url:a,title:_}=e;if(!r&&!t.lt(a,_))continue
;o=i.lastModified,o=o<3e11&&o>-4e10?o*1e3:o;let m=e.windowId;u.push({u:a,Dt:_,al:o,
_l:[m,(n||e).sessionId,n?n.tabs.length:0],ml:n?` +${n.tabs.length>1?n.tabs.length-1:""}`:m&&m!==l.we&&o>s?" +":""})}
return f?setTimeout(n,0,u):n(u),i.g()}):n([])},t.lt=(e,t)=>c.test(t)||c.test(e)?0:1,t.tt={dl(e){
if(d)for(let t of e)for(let e of d)if(e=e.trim(),t.includes(e)||e.length>9&&t.length+2>=e.length&&e.includes(t))return!0
;return!1},cl(){let e=l.Wt.Qt,i=c!==null;if(l.re.ie)for(let e of l.re.ie)e.Lt=i?t.lt(e.We||e.u,p?e.wt:e.Dt):1
;if(l.Wt.Bt)for(let r of l.Wt.Bt){let l=i?t.lt(r.u,r.Dt):1;if(r.Lt!==l){r.Lt=l;let i=t.ut(r.u),n=i&&e.get(i.at)
;n&&(n.Xt+=l||-1)}}}},t.et={Pt(e,t){if(e.length>=400||e.lastIndexOf("%")<0)return e;try{return s(e)}catch(e){}
return l.Mt.get(e)||(t&&f.push(t),e)},It(e){let i,r,n=l.Mt,o=f,u=-1,a=e.length;for(;;)try{for(;++u<a;)i=e[u],r=i.u,
i.t=r.length>=400||r.lastIndexOf("%")<0?r:s(r);break}catch(e){i.t=n.get(r)||(o.push(i),r)}t.et.Ot()},Ot(){
f.length!==0&&a===-1&&(a=0,setTimeout(b,17))}};let b=()=>{let e,t=f.length;if(!_||a>=t)return f.length=0,a=-1,
void(m=null);for(t=Math.min(a+32,t),m=m||new TextDecoder(_);a<t;a++){let t=f[a],i=typeof t=="string",r=i?t:t.u
;(e=l.Mt.get(r))?i||(t.t=e):(e=r.replace(/%[a-f\d]{2}(?:%[a-f\d]{2})+/gi,x),e=e.length!==r.length?e:r,
typeof t!="string"?l.Mt.set(t.u,t.t=e):l.Mt.set(t,e))}a<f.length?setTimeout(b,4):(f.length=0,a=-1,m=null)},x=e=>{
let t=new Uint8Array(e.length/3);for(let l=1,i=0;l<e.length;l+=3)t[i++]=parseInt(e.substr(l,2),16);return m.decode(t)
},y=e=>{let t=[];for(let l of e.split("\n"))l&&l.trim()&&l[0]!=="#"&&t.push(l);return t};l.pl.omniBlockList=e=>{
let i=e?y(e):[];c=i.length>0?new RegExp(i.map(r.hl).join("|"),""):null,p=i.join("").includes("/"),
t.st=d=i.length>0?i:null,(l.Wt.Bt||l.re.ie.length)&&setTimeout(t.tt.cl,100)},l.pl.titleIgnoreList=e=>{if(t.ft=h=null,
e=e&&y(e).join("\n").replace(/\\\n/g,"").replace(/\n/g,"|")){
let l=e.replace(/^\/\|?/,""),i=l.length<e.length?/\|?\/([a-z]{0,16})$/.exec(l):null
;i&&!i.index||(t.ft=h=r.Tl(i?l.slice(0,i.index):l,i?i[1].replace("g",""):""))}},n.vl.then(()=>{n.gl("omniBlockList"),
n.gl("titleIgnoreList")}),l.pl.localeEncoding=e=>{let i=!!e&&!(e=e.toLowerCase()).startsWith("utf"),r=_;if(_=i?e:"",
_!==r){try{new TextDecoder(_)}catch(e){i=!1}i?r!=="1"&&setTimeout(()=>(l.Wt.Bt&&t.et.It(l.Wt.Bt),
t.et.It(l.re.ie)),100):(l.Mt.clear(),f&&(f.length=0)),u!==i&&(f=i?[]:{length:0,push:l.u},u=i,a=-1)}},
n.gl("localeEncoding"),l.xl.bl=(e,l,r)=>{switch(l){case"tab":o.kt.yl(null),i.Oe(+e,e=>{e&&o.kt.yl(null),r(e)});break
;case"history":let l=!t.nt.jt||t.nt.Ut(e)>=0;i.t.history.deleteUrl({url:e}),l&&o.kt.pe(1),r(l)}},l.xl.kl=t.tt.dl});

View File

@@ -0,0 +1,85 @@
"use strict"
;__filename="background/clipboard.js",define(["require","exports","./store","./utils","./exclusions","./normalize_urls"],(e,t,l,n,r,u)=>{
Object.defineProperty(t,"__esModule",{value:!0}),t.replaceUsingClipboard=t.doesNeedToSed=t.T=void 0;let o={
__proto__:null,atob:8,base64:9,base64decode:8,btoa:9,base64encode:9,decodeforcopy:1,decode:1,decodeuri:1,decodeurl:1,
decodemaybeescaped:2,decodeall:19,decodecomp:2,encode:10,encodecomp:11,encodeall:12,encodeallcomp:13,unescape:3,upper:4,
lower:5,capitalize:16,capitalizeall:17,camel:14,camelcase:14,dash:15,dashed:15,hyphen:15,normalize:6,reverse:7,
reversetext:7,break:99,stop:99,return:99,latin:18,latinize:18,latinise:18,noaccent:18,nodiacritic:18,json:20,
jsonparse:21,readablejson:25,virtual:22,virtually:22,dryrun:22,inc:23,dec:24,increase:23,decrease:24,length:26,rows:27
},f=/^[<>][\w\x80-\ufffd]{1,8}!?$|^[\w\x80-\ufffd]{1,8}!?>$/,i=null,a=0,s=(e,t)=>{let l=[],r=new Map
;for(let u of e.replace(/\\(?:\n|\\\n[^\S\n]*)/g,"").split("\n")){
u=u.trim(),f.test(u)&&(u=`s/^//,${u[0]===">"?"copy":"paste"}=${u.endsWith(">")?u.slice(0,-1):u.slice(1)}`)
;let e=/^([\w\x80-\ufffd]{1,8})([^\x00- \w\\\x7f-\uffff])/.exec(u);if(!e)continue;let i=e[2],a=r.get(i);if(!a){
let e=n.$l(i);a=new RegExp(`^((?:\\\\[^]|[^${e}\\\\])+)${e}(.*)${e}([a-z]{0,9})(?:,|$)`),r.set(i,a)}
let s=a.exec(u=u.slice(e[0].length));if(!s)continue;let p=e[1],d=s[3],$=u.slice(s[0].length),g=[],_=null,b=0,x=null
;for(let e of $?$.split(","):[]){let t=e.toLowerCase()
;if(t.startsWith("host="))_=e.slice(5);else if(/^active-?tab=/.test(t))x=e.slice(t[9]==="="?10:11);else if(t.startsWith("match"))b=Math.max(t.includes("=")&&parseInt(t.split("=")[1])||1,1);else if(t.includes("="))g.push(t);else{
let e=o[t.replace(/[_-]/g,"")]||0;e&&g.push(e)}}let m=n.Tl(s[1],b?d.replace(/g/g,""):d);m&&l.push({wl:t||y(p),jl:_,Nl:m,
Ll:b,Ml:c(s[2],1),zl:g,Sl:x})}return l
},c=(e,t)=>e.replace(/\\(x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[^])|\$[0$]/g,(e,l)=>l?l[0]==="x"||l[0]==="u"?(l=String.fromCharCode(parseInt(l.slice(1),16)))==="$"?l+l:l:l==="t"?"\t":l==="r"?"\r":l==="n"?"\n":t?l==="0"?"$&":l>="1"&&l<="9"?"$"+l:l:l:t&&e==="$0"?"$&":e),p=(e,t)=>{
let l=t===14,n=t===15,r=t===16,u=t===17,o=new RegExp(l||n?"(?:[-_\\t\\r\\n/+\\u2010-\\u2015\\p{Z}]|(\\p{N})|^)(\\p{Ll}|\\p{Lu}+\\p{Ll}?)|[\\t\\r\\n/+]":r||u?"(\\b|_)\\p{Ll}":"",r?"u":"ug"),f=0,i=0,a=(e,t)=>t?e.toLocaleLowerCase():e.toLocaleUpperCase()
;return e=l||n?e.replace(o,(t,l,r,u)=>{
let o="\t\r\n/+".includes(t[0]),s=o||!f++&&e.slice(i,u).toUpperCase()===e.slice(i,u).toLowerCase();return o&&(f=0,
i=u+1),
r=r?r.length>2&&r.slice(-1).toLowerCase()===r.slice(-1)&&!/^e?s\b/.test(e.substr(u+t.length-1,3))?n?a(r.slice(0,-2),!0)+"-"+a(r.slice(-2),!0):a(r[0],s)+a(r.slice(1,-2),!0)+a(r.slice(-2,-1),!1)+r.slice(-1):n?a(r,!0):a(r[0],s)+a(r.slice(1),!0):"",
(o?t[0]:(l||"")+(l||n&&!s?"-":""))+r
}):r||u?e.replace(o,e=>a(e,!1)):e,n&&(e=e.replace(/\p{Ll}(\p{Lu}+\p{Ll}?)/u,(t,l,n)=>(l=l.length>2&&l.slice(-1).toLowerCase()===l.slice(-1)&&!/^e?s\b/.test(e.substr(n+t.length-1,3))?a(l.slice(0,-2),!0)+"-"+a(l.slice(-2),!0):a(l,!0),
t[0]+"-"+l))),e
},d=e=>e.replace(/\p{Diacritic}/gu,""),$=e=>(e=JSON.stringify(e).slice(1,-1)).replace(/[<\s"$%&#()?:+,;]/g,n.$l),g=e=>(e=(e=e[0]==='"'?e.slice(1,e.endsWith('"')?-1:void 0):e).replace(/[\r\n\0]/g,e=>e<"\n"?"\\0":e>"\n"?"\\r":"\\n"),
n.tryParse(e=`"${e}"`));t.T=e=>{if(e.$sed!=null)return e.$sed;let t=e.sed,l=e.sedKeys||e.sedKey
;return t!=null||l||l===0?t&&typeof t=="object"?t instanceof Array||t.r==null&&!t.k?null:t:e.$sed={
r:typeof t=="number"?t+"":t,k:typeof l=="number"?l+"":l}:null};let y=(e,t)=>{
if(typeof e=="object")return e.Al||e.Cl?e:t?t.k=null:null;let l=null,n=0,r=typeof e=="number"?e+"":e
;r[0]==="_"&&(l=[r.slice(1)],r="");for(let e=0;e<r.length;e++){let u=r.charCodeAt(e),o=u&-33
;o>64&&o<91?n|=o===83?32772:1<<o-65:(l||(l=[]),!t&&l.includes(u)||l.push(u))}let u=n||l?{Al:n,Cl:l}:null
;return t?t.k=u:u},_=(e,t)=>{if(e.Al&t.Al)return!0;let l=t.Cl;if(!e.Cl||!l)return!1
;for(let t of e.Cl)if(l.includes(t))return!0;return!1};t.doesNeedToSed=(e,t)=>{
if(t&&(t.r===!1||t.r&&t.r!==!0))return t.r!==!1;let n=t&&t.k&&y(t.k,t)||(e?{Al:e,Cl:null}:null)
;i||n&&(i=s(l.z.clipSub,null));for(let e of n?i:[])if(_(e.wl,n))return!0;return!1}
;let b=e=>(e.startsWith(",")&&(e="s/^//"+e),
e.includes("\n")?e:e.replace(/(?<!\\) ([\w\x80-\ufffd]{1,8})(?![\x00- \w\\\x7f-\uffff])/g,"\n$1"))
;t.replaceUsingClipboard=(e,t,n)=>{let r=t.Ml;if(!r.includes("${"))return e.replace(t.Nl,r)
;let u=new Map,o=new Map,f=r.replace(/\$(?:\$|\{([^}]*)})/g,(e,t)=>{if(!t)return e
;let r=t.split(/>(?=[\w\x80-\ufffd]{1,8}!?$)/);if(r.length>1&&r[0]){let e=r[0],t=r[1]
;return e=e==="0"||e==="$0"?"&":e[0]==="$"?e.slice(1):e.length===1?e:{input:"_",lastMatch:"&",lastParen:"+",
leftContext:"`",rightContext:"'"}[e]||"1",u.has(t)?u.get(t).push(e):u.set(t,[e]),"$"+e}
let o=t.replace(/^<|>$/,""),f=/\|\|=|[+\-*\/\|]=?|=/.exec(o),i=f?o.slice(0,f.index):o,s=l.Fl(i)
;if(f&&(s||"||=".includes(f[0]))){let e=f[0],t=e[0],r=+o.slice(i.length+e.length)||0,u=+s
;isNaN(u||r)||(u=t==="+"?u+r:t==="-"?u-r:t==="*"?u*r:t==="/"?u/r:e==="||="?u||r:t==="|"?u|r:r,s=u+"",
e.endsWith("=")&&(a!==n?l.Il.set(i,s):x(i,s)))}return s.replace(/\$/g,"$$$$")})
;return e=e.replace(t.Nl,u.size?function(){let t=arguments,l=t.length,n=t[l-2]
;return f.replace(/\$([$1-9_&+`'])/g,(r,u)=>{if(u==="$")return"$"
;let f=u==="_"?e:u==="&"?t[0]:u==="`"?e.slice(0,n):u==="'"?e.slice(n+t[0].length):l-3<=0?"":u>="1"&&u<"9"?+u<=l-2?t[+u]:"":u==="+"?t[l-3]:t[1]
;return o.set(u,f),f})}:f),u.forEach((e,t)=>{let r=e.reduce((e,t)=>e||o.get(t)||"","");a!==n?l.Il.set(t,r):x(t,r)}),e},
l.S=(e,u,f,m)=>{var v,w,h;let j=f&&typeof f=="object"?f.r:f;if(j===!1)return e;let k=i||(i=s(l.z.clipSub,null))
;j&&(typeof j=="number"||typeof j=="string"&&j.length<=8&&!/[^\w\x80-\ufffd]/.test(j))&&(f={r:null,k:j},j=null)
;let N=f&&typeof f=="object"&&(f.k||f.k===0)&&y(f.k,f)||(u?{Al:u,Cl:null}:null);j&&j!==!0&&(N||(k=[]),
k=s(b(j+""),N||(N={Al:1073741824,Cl:null})).concat(k));let L,M=a
;for(let u of N?k:[])if(_(u.wl,N)&&(!u.jl||(typeof u.jl=="string"&&(u.jl=r.Ol(u.jl)||-1),
u.jl!==-1&&r.Rl(u.jl,e)))&&(!u.Sl||(L==null&&(L=((h=(w=(v=l.a.get(l.he))===null||v===void 0?void 0:v.R)===null||w===void 0?void 0:w.s)===null||h===void 0?void 0:h.Jl)||""),
typeof u.Sl=="string"&&(u.Sl=r.Ol(u.Sl)||-1),L&&u.Sl!==-1&&r.Rl(u.Sl,L)))){let r=-1,f=e;if(u.Ll){let e,l=0,n=u.Ll
;if(f.replace(u.Nl,function(t){let u=arguments;return l=u[u.length-2],r=l+t.length,e=u.length>2+n&&u[n]||"",""}),r>=0){
let n=t.replaceUsingClipboard(f,u,M);f=n.slice(l,n.length-(f.length-r))||e||f.slice(l,r)}
}else u.Nl.test(f)&&(r=u.Nl.lastIndex=0,f=t.replaceUsingClipboard(f,u,M));if(r<0){
let e=(u.zl.find(e=>typeof e=="string"&&e.startsWith("else="))||"").slice(5);if(e){if(o[e]===99)break
;/^[\w\x80-\ufffd]{1,8}$/.test(e)&&(N=y(e))}continue}let i=!1;for(let e of u.zl)if(typeof e!="string"){if(i=e===99)break
;f=f?e===1?n.Dl(f):e===2?n.El(f):e===19?n.El(f,!0):e===3?c(f):e===4?f.toLocaleUpperCase():e===5?f.toLocaleLowerCase():e===10?n.Ul(f):e===11?n.ql(f):e===12?encodeURI(f):e===13?encodeURIComponent(f):e===8?n.Pl(f,1):e===9?n.Pl(f):e===20?$(f):e===25?JSON.stringify(f).slice(1,-1):e===21?g(f):e===23?+f+1+"":e===24?+f-1+"":e===26?f.length+"":e===27?f.split("\n").length+"":(f=e===6||e===7||e===18?f.normalize(e===18?"NFD":"NFC"):f,
e===7?Array.from(f).reverse().join(""):e===18?d(f):e===14||e===15||e===16||e===17?p(f,e):f):""}else{
let t=e.split("=")[0],n=e.slice(t.length+1)
;t==="copy"?x(n,f):t==="paste"?f=l.Fl(n):t==="keyword"&&m?m.F=n:t==="act"&&m?m.Zl=n!=="false":t!=="sys-clip"&&t!=="sysclip"||!m||(m.Bl=/^-1$|^false$|^non?e?$|null$/i.test(t))
}if(!u.zl.includes(22)&&(e=f,i))break}return n.Gl(),e};let x=(e,t)=>{l.Il.set(e,t),e.endsWith("!")||(a&&clearTimeout(a),
a=setTimeout(()=>{let e=l.Il.keys();for(let t of e)t.endsWith("!")||l.Il.delete(t);a=0},2e4))};l.Fl=e=>{
let t=l.Il.get(e);return(t!==null&&t!==void 0?t:l.Il.get(e.endsWith("!")?e.slice(0,-1):e+"!"))||""}
;let m=(e,t,r,o,f,i)=>{var a;let s=o,c=e=>{let t=l.Hl.map.get(o);return t?u.Kl(e.trim().split(n.q),t.Jl,t.u):e
},p=(r&&typeof r=="object"?r.r:r)!==!1;if(typeof e!="string")return e=e.map(e=>{var t;let n={},u=l.S(e,4,r,n)
;return(o=(t=n.F)!==null&&t!==void 0?t:s)?c(u):u
}),e=typeof t=="string"&&t.startsWith("json")?JSON.stringify(e,null,+t.slice(4)||2):e.join(t!==!!t&&t||"\n")+(e.length>1&&(!t||t===!!t)?"\n":""),
p&&(e=l.S(e,4096,null,i)),e;let d=(e=e.replace(/\xa0/g," ").replace(/\r\n?/g,"\n")).charCodeAt(e.length-1)
;return f||!p||d!==32&&d!==9||((d=e.lastIndexOf("\n")+1)?e=e.slice(0,d)+e.slice(d).trimRight():(d=e.charCodeAt(0))!==32&&d!==9&&(e=e.trimRight())),
e=l.S(e,4,r,i),(o=(a=i.F)!==null&&a!==void 0?a:s)?c(e):e},v=(e,t,n)=>(e&&(e=e.replace(/\xa0/g," "),e=l.S(e,32768,t,n)),
e),w=(e,t)=>{let l=e&&(typeof e=="string"?e:typeof e=="object"&&(e.r||e.k))
;return l&&typeof l=="string"&&(l[0]===t||l.endsWith(">"))&&f.test(l)?l[0]===t?l.slice(1):l.slice(0,-1):null}
;l.Ql=(e,t,n,r,u)=>{let o=w(n,">"),f={};return o&&(n=null),e=m(e,t,n,r,u,f),o?(x(o,e),
e):!e||f.Bl?e:l.tl(5,e,null).then(()=>e)},l.Vl=(e,t,n)=>{let r=w(e,"<")
;return r?v(l.Fl(r),null,n):l.tl(3,t||0,null).then(t=>typeof t=="string"?t&&v(t.slice(0,20971520),e,n):null)},
l.pl.clipSub=()=>{i=null}});

View File

@@ -0,0 +1,140 @@
"use strict"
;__filename="background/completion.js",define(["require","exports","./store","./browser","./utils","./normalize_urls","./parse_urls","./i18n","./completion_utils","./browsing_data_manager"],function(e,t,l,r,i,n,f,u,o,a){
Object.defineProperty(t,"__esModule",{value:!0})
;let s=0,_=!1,d=!1,m=0,c=0,h=0,p=0,w=0,v=[""],b="",g="",k="",$="",y=0,M=!1,S=!1,x="",T="",R=0,z=!0,A=function(e,t,l,r,i,n){
this.e=e,this.u=t,this.t=l,this.title=r,this.r=i(this,n),this.visit=0},j={Wl(e){
if(l.re.f===3&&!(R&6))return Promise.resolve(u.Xl("bookmarksRevoked",[])).then(t=>{
let r=new A("bookm",l.Ze.Qe+"#optionalPermissions","",t,o.get2ndArg,e?8:1.9);r.textSplit="\u2026",D.Yl([r],1)}),!0},
er(e,t){if(v.length===0){if(t||l.re.f!==0)return void(j.Wl(t==0)||D.Yl([],1));a.ot.vt=()=>{e.o||j.Wl()||D.Yl([],1)}
}else if(R&1)l.re.f>=2?j.tr():a.ot.vt=()=>{e.o||j.tr()};else if(D.Yl([],1),t)return;l.re.f===0&&a.ot.xt()},tr(){var e
;let t,r=v.some(e=>e.charCodeAt(0)===47),i=(e=o.kt.lr)===null||e===void 0?void 0:e.ie,n=o.kt.rr?[]:null,f=i&&i[0]===r?i[1]:l.re.ie,u=f.length,s=[]
;if(j.Wl())return;for(let e=0;e<u;e++){let t=f[e];if(o.ir(t.t,r?t.wt:t.Dt)&&(z||t.Lt)){if(n!==null&&n.push(t),
T&&t.u.length<T.length+2&&T===(t.u.endsWith("/")?t.u.slice(0,-1):t.u))continue;s.push([-o.nr(t.t,t.Dt),e])}}
n&&(o.kt.rr.ie=[r,n]),t=s.length,p+=t,t?(s.sort(o.sortBy0),w>0&&!(R&6)?(s=s.slice(w,w+c),
w=0):t>w+c&&(s.length=w+c)):R^=1;let _=[],d=m&64?-.666446:0;for(let[e,t]of s){let i=f[t];d&&(e=e<d?e:(e+d)/2)
;let n=new A("bookm",i.u,i.t,r?i.wt:i.Dt,o.get2ndArg,-e),u=m&32&&a.nt.jt?a.nt.Ut(i.u):-1;n.visit=u<0?0:l.Wt.Bt[u].zt,
_.push(n),i.We!==null&&(n.u=i.We,n.title=o.cutTitle(r?i.wt:i.Dt),n.textSplit="javascript: \u2026",n.t=i.Rt)}D.Yl(_,1)}
},F={er(e,t){if(!v.length&&m&1024||!(R&2))return D.Yl([],2);let r=v.length>0;if(l.Wt.Bt){if(r)return void F.tr()
;(l.Wt.Gt>10||l.Wt.Jt>0)&&a.nt.Kt()}else{let t=r?()=>{e.o||F.tr()}:null
;if(r&&(d||a.nt.Et))a.nt.Et>0&&clearTimeout(a.nt.Et),a.nt.Et=0,a.nt.Vt(t);else if(a.nt.Et||(a.nt.Et=setTimeout(()=>{
a.nt.Et=0,a.nt.Vt(t)},r?200:150)),r){let e=D.fr,t=e.length,l=t>0;D.ur(l&&e[0].t==="search"?[e[0]]:[],_&&l,0,0,t,g,y)}
if(r)return}t===0?o.or(S,m,F.ar,e):a.it(w+c,z,F.sr.bind(null,e))},tr(){var e
;let t=v.length===1?v[0]:"",r=t?t[0]==="."?/^\.[\da-zA-Z]+$/.test(t)?2:0:(n._r(t,null,-2),
n.dr<=2?n.dr>0?2:1:0):0,i=r>1?o.cr.mr[0]:null,f=o.kt.rr?[]:null,u=[-1.1,-1.1],s=[],_=o.ir,d=r>0&&t.includes("%")&&!/[^\x21-\x7e]|%[^A-F\da-f]/.test(t),m=c+w,h=-1.1,b=0,g=0,k=0
;for(x&&m++,g=m;--g;)u.push(-1.1,-1.1);m=m*2-2;let $=((e=o.kt.lr)===null||e===void 0?void 0:e.Bt)||l.Wt.Bt
;for(let e=$.length;b<e;b++){let e=$[b]
;if((r===0?_(e.t,e.Dt):r===1?(d?e.u:e.t).startsWith(t):i.test(d?e.u:e.t))&&(z||e.Lt)){f!==null&&f.push(e),k++
;let t=r?o.ComputeRecency(e.zt)||1e-16*Math.max(0,e.zt):o.ComputeRelevancy(e.t,e.Dt,e.zt);if(t>h){
for(g=m-2;0<=g&&u[g]<t;g-=2)u[g+2]=u[g],u[g+3]=u[g+1];u[g+2]=t,u[g+3]=b,h=u[m]}}}for(f&&(o.kt.rr.Bt=f),p+=k,k||(R^=2),
R&5?b=0:(b=w*2,w=0);b<=m;b+=2){let e=u[b];if(e<=0)break;let t=$[u[b+1]];if(t.u!==x){
let l=new A("history",t.u,d?t.u:t.t,t.Dt,o.get2ndArg,e);l.visit=t.zt,s.push(l)}}a.et.Ot(),D.Yl(s,2)},ar(e,t){
if(e.o)return;let l=new Set;for(let e of t)e.incognito&&o.tabsInNormal||l.add(r.getTabUrl(e));F.hr([],e,l,w,l.size)},
sr(e,t){if(e.o)return;let l=[],r=new Set,i=new Set,n=-w;t.some(e=>{let t,f=e.u;return t=f+"\n"+e.Dt,
!r.has(t)&&(r.add(t),i.add(f),++n>0&&l.push(e),l.length>=c)})?F.pr(l):F.hr(l,e,i,-n,0)},hr(e,t,i,n,f){(0,
r.t.history.search)({text:"",maxResults:(w+c)*(z?1:2)+f},r=>{for(let e of r)e.url.length>2e3&&(e.url=a.nt.qt(e.url,e))
;if(l.Wt.Bt&&a.nt.sl(r),t.o)return;r=r.filter(e=>!i.has(e.url)&&(z||a.lt(e.url,e.title||"")!==0)),
n<0?r.length=Math.min(r.length,c-e.length):n>0&&(r=r.slice(n,n+c));let f=r.map(e=>({u:e.url,Dt:e.title||"",
al:e.lastVisitTime,_l:null,ml:null}));n<0&&(f=e.concat(f)),F.pr(f)})},pr(e){e.forEach((e,t,l)=>{
let r=e.u,i=new A("history",r,a.et.Pt(r,r),e.Dt||"",o.get2ndArg,(99-t)/100),n=e._l;i.visit=e.al,n&&(i.s=n,
i.label='<span class="undo">&#8630;</span>'+e.ml),l[t]=i}),w=0,a.et.Ot(),D.Yl(e,2)}},P={er(e,t){
if(v.length!==1||!(R&16)||v[0].lastIndexOf("/",v[0].length-2)>=0)return D.Yl([],16);if(a.nt.Ct){
if(!l.Wt.Bt)return t>0?D.Yl([],16):a.nt.Vt(()=>{e.o||P.er(e,0)});a.nt.Ct(l.Wt.Bt)}return P.tr()},tr(){
let e,t=l.Wt.Qt,r=o.wr,n=R===16&&_?[]:null,f=v[0].replace("/","").toLowerCase(),u=f.length===v[0].length,a=[],s="",d=-1.1
;o.vr(3);for(let l of t.keys())if((u?l.includes(f):l.endsWith(f))&&(e=t.get(l),z||e.Xt>0)){
let t=o.ComputeRelevancy(l,"",e.zt);n?n.push({r:t,d:l,m:e}):t>d&&(d=t,s=l)}let m=s.length===f.length;if(s&&!m){
if(!s.startsWith("www.")&&!s.startsWith(f)){let l=s.slice(s.indexOf(".")+1);if(l.includes(f)){let r;l="www."+l,
(r=t.get(l))?(z||r.Xt>0)&&(s=l,e=r):(r=t.get(l="m."+l))&&(z||r.Xt>0)&&(z||r.Xt>0)&&(s=l,e=r)}}
let l=s.startsWith(f)?0:s.startsWith("www."+f)?4:-1;if(l>=0){let[e,t]=i.br(s),r=e.length-1
;t>1&&(l=s.length-l-f.length-e[r].length-1,(!l||t===3&&l===e[r-1].length+1)&&(m=!0))}}if(s)p++,_=!w&&m||_,
a=P.gr(s,e,0,u);else if(n){n.sort(P.kr),p=n.length,p>w+c&&(n.length=w+c);for(let e of n)a.push(P.gr(e.d,e.m,e.r,u)[0])}
o.vr(r),D.Yl(a,16)},gr(e,t,r,n){let f=t.Yt>0,u="";if(l.re.f===2){
let t=new RegExp(`^https?://${i.hl(e)}/?$`),r=l.re.ie.filter(e=>t.test(e.u)&&(z||e.Lt));if(r.length>0){
let e=r.filter(e=>e.u[4]==="s");f=e.length>0,r=f?e:r;let t=r[0].u;T=t.endsWith("/")?t.slice(0,-1):t,u=r[0].Dt}}
let s=(f?"https://":"http://")+e+"/";if(!r&&(x=s,w>0))return w--,[]
;let _=new A("domain",s,n?e:e+"/","",o.get2ndArg,r||2),d=a.nt.jt?a.nt.Ut(s):-1,m=d>0?l.Wt.Bt[d]:null;return o.$r(_),
m&&(z||m.Lt)&&(_.visit=m.zt,u=u||m.Dt),_.title=o.cutTitle(u,[]),--c,[_]},kr(e,t){return t.r-e.r}
},B="audible audio muted unmuted active discarded incognito normal pinned visited new grouped ungrouped".split(" "),E={
er(e,t){!(R&4)||t&&(!v.length||m&256)?D.Yl([],4):o.or(S,m,E.tr,e)},tr(e,t){if(e.o)return
;let n,f=l.he,u=v.length<=0,s=R&3,_=!!(m&8)&&S&&u,d=[],b=0;if(_&&!(m&128)&&t.length>w&&t.length>h){let e=new Map
;for(let l of t)e.set(l.id,l);{n=e.get(f)
;let l=n?n.openerTabId:0,r=l?e.get(l):null,i=r?t.indexOf(r):n?t.indexOf(n)-1:0,u=r?0:h/2|0
;for(;1<--u&&i>0&&t[i-1].openerTabId===l;i--);t=i>0?t.slice(i).concat(t.slice(0,i)):t}}
let g=[],k=[],$=(v.join("\n").match(/^:[a-z]+$/gm)||[]).reduce((e,t)=>{t=t.slice(1)
;for(let l=0;l<B.length;l++)B[l].startsWith(t)&&(e|=1<<l);return e},0);n=!n&&$?t.filter(e=>e.id===f)[0]:n
;let y=$&&n?r.getGroupId(n):null;for(let e of t){if(!S&&o.tabsInNormal&&e.incognito)continue
;let t=r.getTabUrl(e),i=e.text||(e.text=a.et.Pt(t,e.incognito?"":t)),n=e.title;if($&&(v.length===1&&(i=n=""),
e.audible&&($&1&&(n+=" :audible"),
$&2&&(n+=" :audio"),$&12&&(r.isTabMuted(e)?$&4&&(n+=" :muted"):$&8&&(n+=" :unmuted"))),
$&16&&e.active&&!S&&(n+=":active"),
$&32&&e.discarded&&(n+=" :discarded"),$&192&&(e.incognito?$&64&&(n+=" :incognito"):$&128&&(n+=" :normal")),
$&256&&e.pinned&&(n+=" :pinned"),$&1536&&(l.ze.has(e.id)?$&512&&(n+=" :visited"):$&1024&&(n+=" :new")),
$&6144&&(y&&r.getGroupId(e)===y?$&2048&&(n+=" :grouped"):$&4096&&(n+=" :ungrouped"))),u||o.ir(i,n)){let t=e.windowId
;!S&&k.lastIndexOf(t)<0&&k.push(t),g.push(e)}}s&&g.length===1&&g[0].id===f&&(g.length=0);let M=g.length;if(p+=M,
M||(R^=4),w>=M&&!s)return w=0,D.Yl(d,4);k.sort((e,t)=>e-t);let x=_?new Map:null,T=l.we;if(_)for(let e of g){
let t=e.openerTabId,l=t&&x.get(t);x.set(e.id,l?l<5?l+1:5:1)}let z=m&32?i.yr():0,j=u?_?(e,t)=>1/t:(b=performance.now(),
(e,t)=>l.ze.get(t)||(m&4?b+t:-t)):o.ComputeWordRelevancy;for(let e=0;e<g.length;){
let t=g[e++],i=t.id,n=_?x.get(i):1,a=r.getTabUrl(t),s=l.ze.get(i),m=new A("tab",a,t.text,t.title,j,_?e:i),c=t.windowId!==T?k.indexOf(t.windowId)+1+":":"",h=t.index+1+"",p=""
;t.active?(_||f!==i&&t.windowId!==T||(m.r=u||!/^(?!:[a-z]+)/m.test(v.join("\n"))?1<<31:0),h=`(${h})`):s||(h=`**${h}**`),
!o.tabsInNormal&&t.incognito&&(p+="*"),t.discarded&&(p+="~"),t.audible&&(p+=r.isTabMuted(t)?"\u266a":"\u266c"),
m.visit=s?s+z:0,m.s=i,m.label=`#${c}${h}${p&&" "+p}`,n>1&&(m.level=" level-"+n),d.push(m)}d.sort(D.Mr)
;let F=d.length,P=w+c-F;if(s||P<0||!u){w>0&&!s?(d=d.slice(w,w+c),F=c,w=0):F>w+c&&(d.length=F=w+c)
;for(let e=s?0:F,t=Math.min(F,28);e<t;e++)d[e].r*=8/(e/4+1);!w&&D.fr&&D.Sr(d)}else if(w>0){
let e=d.slice(0,P).map(e=>Object.assign({},e));for(let t of e)t.label+="[r]";d=d.slice(w).concat(e),F=d.length
;for(let e=0;e<F;e++)d[e].r=F-e;w=0}a.et.Ot(),D.Yl(d,4)}},O={xr:0,er:l.u,Tr(e,t,r){if(!(R&8))return D.Yl([],8)
;let i,f,u,_,d,m=v,c=m.length>0?m[0]:"";if(m.length===0);else{
if(!t&&c[0]==="\\"&&c[1]!=="\\")return c.length>1?m[0]=c.slice(1):m.shift(),c=k.slice(1).trimLeft(),
z=!a.st||z||a.tt.dl([c]),w?(w--,D.Yl([],8)):(i=O.Rr(c,r),D.Yl([i],8));f=l.Hl.map.get(c)}if(t){if(!f)return!0}else{
if(!f&&!c.startsWith("vimium://"))return s===0&&m.length<=1&&(s=m.length?o.Ar.zr()?-2:0:-1),D.Yl([],8);f&&$&&(m.push($),
w=0,k+=" "+$,$="",y&=-5),m.length>1||(s=-1)}if(m.length>1&&f?(m.shift(),k.length>200&&(m=k.split(" "),
m.shift())):f&&(m=[]),z=!a.st||z&&a.tt.dl([c]),f){let e=n.Kl(m,f.Jl,f.u,[]);d=u=e.Jl,_=e.jr}else d=u=m.join(" "),_=[]
;if(c==="~");else if(u.startsWith("vimium://")){let t=l.Fr(u.slice(9),1,!0),i=O.Pr.bind(O,m,u,d,r||f,_)
;if(t instanceof Promise)return t.then(O.Br.bind(O,e,r||f,i));if(t instanceof Array)return O.Br(e,r||f,i,t);t&&(u=d=t,
_=[])}else u=n._r(u,null,-2);return i=O.Pr(m,u,d,r||f,_),D.Yl([i],8)},Br(e,t,l,r){let n;if(!e.o){switch(r[1]){case 5:
case 7:let u=r[0];if(s=r[1]===7&&v.length>1?s:-1,!u)break;return k="\\ "+u,$="",
v=(k.length<201?k:i.fl(k,0,200).trim()).split(" "),v.length>1&&(v[1]=f.Er(v[1],v.length>2)),o.Or(v),O.Tr(e,null,t)
;case 2:let a=r[0];v=a.length>1||a.length===1&&a[0]?a:v,o.Or(v);let _=O.xr++;if(_>12)break;let d=O.Tr(e,!0,t)
;if(_<=0&&(O.xr=0),d!==!0)return d;break;case 0:r[0]&&(n=O.Dr(l(),r))}D.Yl(n||[l()],8)}},Pr(e,t,l,r,n){
let f=new A("search",t,l,(r?r.Ir+": ":"")+e.join(" "),o.get2ndArg,9);return e.length>0&&r?(f.t=O.Qr(l,n),
f.title=o.cutTitle(f.title,[r.Ir.length+2,f.title.length]),f.textSplit=o.highlight(f.t,n)):(f.t=i.rl(o.shortenUrl(l)),
f.title=o.cutTitle(f.title,[]),f.textSplit=i.Ur(f.t)),f.v=d?"":r&&r.u||o.Zr(t),f.p=d&&r?r.Ir:"",f},Dr(e,t){
let l=t[0],r="vimium://copy "+l,n=new A("math",e.u,l,l,o.get2ndArg,8);return e.u=r,
n.title=`<match style="text-decoration: none;">${o.cutTitle(n.title,[])}<match>`,n.textSplit=i.Ur(t[2]),[e,n]},Qr(e,t){
let l,r,n,f=t.length;if(r=i.rl(t.length>0?e.slice(0,t[0]):e),(l=i.qr(r))&&(r=r.slice(l),l=0),t.length<=0)return r
;for(n=t[0];t[l]=r.length,f>++l;)r+=i.rl(e.slice(n,t[l])),n=t[l];return n<e.length&&(r+=i.rl(e.slice(n))),r},Rr(e,t){
let r=n._r(e,null,-2),f=n.dr===4,u=new A("search",r,i.rl(o.shortenUrl(r)),"",o.get2ndArg,9)
;return u.title=f?(t&&t.Ir||"~")+": "+o.cutTitle(e,[0,e.length]):o.cutTitle(e,[]),u.textSplit=i.Ur(u.t),
u.v=d?"":f&&t&&((t.u||t.Jl).startsWith("vimium:")?l.Ze.Qe:t.u)||o.Zr(r),u.p=d&&f?"~":"",u.n=1,u}},D={Cr:0,Gr:0,fr:null,
Hr:null,ur:null,er(e){D.Hr&&(D.Hr.o=!0);let t=D.Hr={o:!1};D.Gr=0,R&=e[0];let l=1,r=R&-9?e.length:2;if(D.fr=[],D.Cr=r-1,
s=w&&-1,e[1]===O){let i=O.Tr(t);if(r<3)return;if(i)return void i.then(D.Wr.bind(null,e,t,l));l=2}D.Wr(e,t,l)},Wr(e,t,l){
for(o.Jr(Date.now()-18144e5),
o.vr(3*v.length||.01),v.indexOf("__proto__")>=0&&(v=v.join(" ").replace(/(^| )__proto__(?=$| )/g," __proto_").trimLeft().split(" "),
o.Or(v)),o.kt.Kr(z),v.sort(D.Lr),o.cr.Nr();l<e.length;l++)e[l].er(t,l-1)},
Lr:(e,t)=>t.length-e.length||(e<t?-1:e===t?0:1),Sr(e){let t=new Map(e.map(e=>[e.u,e]));D.fr=D.fr.filter(e=>{
let l=e.e==="search"?void 0:t.get(e.u);return l&&l.r<e.r&&(l.r=e.r),!l})},Yl(e,t){let l=D.fr,r=e.length
;if(r>0&&(D.Gr|=t,D.fr=l.length===0?e:l.concat(e),t===8&&(_=!0,c-=r,p+=r)),0==--D.Cr)return l=null,D.Vr()},Vr(){
let e=D.fr;if(D.fr=null,e.sort(D.Mr),w>0?(e=e.slice(w,w+h),w=0):e.length>h&&(e.length=h),o.cr.Xr=o.cr.Yr=null,
v.length>0){let e=v[0],t=o.shortenUrl(e),l=e.length!==t.length
;(l||e.endsWith("/")&&e.length>1&&!e.endsWith("//"))&&(l&&(v[0]=t),o.cr.ei(v[0],l))}e.forEach(o.$r)
;let t=e.length>0,l=_&&t,r=p,i=b===":",n=s<0?s!==-2||t||i?0:3:z?v.length<=0||M?0:t?2:i?0:1:0,f=g,u=y,a=n!==2||i?0:D.Gr,d=D.ur
;return D.ti(),d(e,l,n,a,r,f,u)},ti(){D.Hr=D.ur=null,o.li(),o.setupQueryTerms(v=[],d=!1,0),b=g=k=$=x=T="",o.cr.mr=null,
o.vr(3),o.Jr(0),s=D.Gr=m=c=h=p=0,R=0,y=0,_=!1,M=S=!1,z=!0},ri(){let e,t,l=k;if(w=0,$="",
!(l.length===0||(e=(l=l.slice(-5)).lastIndexOf("+"))<0||e!==0&&l.charCodeAt(e-1)!==32)){if(l=l.slice(e),
e=k.length-l.length,(t=parseInt(l,10))>=0&&"+"+t===l&&t<=(e>0?100:200))w=t;else if(l!=="+")return;k=k.slice(0,e&&e-1),
$=l,y|=4}},Mr:(e,t)=>t.r-e.r},I={__proto__:null,bookm:[1,j],domain:[16,P],history:[2,F],omni:[63,O,P,F,j,E],
search:[8,O],tab:[4,E]};l.xl.er=(e,t,r)=>{
if(e=e.trim(),M=!1,e&&l.G>1&&(/^[A-Za-z]:[\\/]|^\\\\([\w$%.-]+([\\/]|$))?/.test(e)||e.slice(0,5).toLowerCase()==="file:")){
":/\\".includes(e[1])&&(e=(e[1]===":"?"":"//")+e.slice(e[1]===":"?0:2).replace(/\\+/g,"/"))
;let t=(e=e.replace(/\\/g,"/").toLowerCase()).indexOf("//")+2;if(t>=2&&t<e.length&&e[t]!=="/"){
let l=e.slice(t).split("/",1)[0];if(l.includes("%")){let r=i.rl(l);M=r===l,e=e.slice(0,t)+r+e.slice(t+l.length)}}}
b=k=e&&e.replace(i.q," "),g="",y=0,D.ri(),v=(e=k)?(e=e.length<201?e:i.fl(e,0,200).trimRight()).split(" "):[]
;let n=t.c|0||128
;n&&(n-=e.replace(/[\u2e80-\u2eff\u2f00-\u2fdf\u3000-\u303f\u31c0-\u31ef\u3200-\u9fbf\uf900-\ufaff\ufe30-\ufe4f\uff00-\uffef]/g,"aa").length-e.length),
n=Math.max(50,Math.min(n,320)),m=t.f,d=!!(m&1),h=c=Math.min(Math.max(3,t.r|0||10),25),p=0,D.ur=r
;let u=t.o==="bomni"?(m|=64,I.omni):I[t.o],s=v.length>=1?v[0]:"",w=t.t||63,$=t.e||63;if(u===I.tab&&(S=!!(m&2)),
s.length===2&&s[0]===":"){s=s[1]
;let e=s==="b"?I.bookm:s==="h"?I.history:s==="t"||s==="T"||s==="w"||s==="W"?(S=s!=="t"&&s!=="T",m|=0,m|=s==="T"?2048:0,
I.tab):s==="B"?(m|=64,I.omni):s==="H"?(m|=256,I.omni):s==="d"?I.domain:s==="s"?I.search:s==="o"?I.omni:null;e&&(u=e,
g=v.shift(),y|=1,k=k.slice(3),$=u[0])}if(v.length>0&&((s=v[0]).includes("\u3002")||s.includes("\uff1a"))&&!M){
M=v.length<2;let e=f.Er(s,M)
;e!==s?(v[0]=e,k=e+k.slice(s.length),M=M&&!/^[.\u3002]\w+([.\u3002]\w*)?$/.test(s)):M=M&&s.includes("\uff1a")&&!/\uff1a([^\/\d]|\d[^\0-\xff])/.test(s)
}z=!a.st||!(m&4096)&&a.tt.dl(v),R=w&$,_=u.length===2,k&&(y|=2),o.setupQueryTerms(v,d,n),D.er(u)}});

View File

@@ -0,0 +1,56 @@
"use strict"
;__filename="background/completion_utils.js",define(["require","exports","./store","./browser","./utils","./settings","./normalize_urls","./tools","./browsing_data_manager"],(e,t,l,r,n,u,o,i,f)=>{
Object.defineProperty(t,"__esModule",{value:!0
}),t.or=t.Zr=t.sortBy0=t.shortenUrl=t.highlight=t.cutTitle=t.$r=t.get2ndArg=t.ComputeRelevancy=t.ComputeRecency=t.ComputeWordRelevancy=t.nr=t.ir=t.cr=t.Ar=t.kt=t.vr=t.Jr=t.Or=t.setupQueryTerms=t.li=t.wr=t.tabsInNormal=void 0
;let a=[0,0],s=null;t.tabsInNormal=s;let _,c,h,m,d=null,b=0,p=[],w=0,g=3;t.wr=g,t.li=()=>{t.tabsInNormal=s=null},
t.setupQueryTerms=(e,t,l)=>{_=e,c=t,m=!1,h=l},t.Or=e=>{_=e},t.Jr=e=>{w=e},t.vr=e=>{t.wr=g=e},t.kt={lr:null,rr:null,Zt:0,
en:0,Kr(e){let r=null,n=0,u=_.join(" ");for(let t=p,l=u?t.length:0;0<=--l;){if(!t[l].tn&&e)continue
;let n=t[l].ln,u=0,o=0;for(;u<n.length&&o<_.length;o++)_[o].includes(n[u])&&u++;if(u>=n.length){r=t[l];break}}t.kt.lr=r,
r&&(l.Ke.i<200||!r.Bt||r.Bt.length>1e3)&&(n=performance.now())-r.zt<Math.max(300,l.Ke.i*1.3)?(t.kt.rr=r,
r.ln=_.slice(0)):!u||r&&u===r.ln.join(" ")||!(u.length>4||/\w\S|[^\x00-\x80]/.test(u))?t.kt.rr=null:(t.kt.rr={
ln:_.slice(0),tn:e,zt:n||performance.now(),Bt:r&&r.Bt,ie:r&&r.ie},p.push(t.kt.rr),
t.kt.Zt||(t.kt.Zt=setInterval(t.kt.rn,6e3)))},rn(){let e=p,l=-1,r=performance.now()-5983;for(;++l<e.length&&e[l].zt<r;);
l++,l<e.length?e.splice(0,l):(e.length=0,clearInterval(t.kt.Zt),t.kt.Zt=0)},pe(e){
for(let t of p)e<2?t.Bt=null:e<3?t.ie=null:d=null},yl(e){d!==e&&(t.kt.en&&(clearTimeout(t.kt.en),t.kt.en=0),d=e,
e&&(f.rt(e),t.kt.en=setTimeout(t.kt.yl,3e3,null)))}},t.Ar={nn:0,pt:0,zr(){let e=_[0],r=l.Hl.keywords
;return r===null?(t.Ar.pt=t.Ar.pt||setTimeout(t.Ar.un,67),!0):!(e.length>=t.Ar.nn)&&r.includes("\n"+e)},un(){
let e=n.on(l.Hl.map).sort(),r=0,u="",o=[];for(let t=e.length;0<=--t;){let l=e[t];if(!u.startsWith(l)){let e=l.length
;r=e>r?e:r,u=l,o.push(l)}}l.Hl.keywords="\n"+o.join("\n"),t.Ar.nn=r,t.Ar.pt=0}},t.cr={mr:null,Yr:null,Xr:null,Nr(){
let e=t.cr.mr=[];t.cr.Yr=t.cr.Xr=null
;for(let t of _)e.push(new RegExp(n.hl(t),t!==t.toUpperCase()&&t.toLowerCase()===t?"i":""))},in(){
let e=t.cr.Yr=[],l=t.cr.Xr=[];for(let r of t.cr.mr){let t="\\b"+r.source,n=r.flags;e.push(new RegExp(t,n)),
l.push(new RegExp(t+"\\b",n))}},ei(e,l){
t.cr.mr&&(e=n.hl(l?e:e.slice(0,-1)),t.cr.mr[0]=new RegExp(l?e:e+"(?:/|$)",t.cr.mr[0].flags))}},t.ir=(e,l)=>{
for(let r of t.cr.mr)if(!r.test(e)&&!r.test(l))return!1;return!0},t.nr=(e,l)=>{let r=0,n=0,u=0,o=0,i=!!l
;t.cr.Yr||t.cr.in();for(let t=0,f=_.length;t<f;t++){let f=M(t,e);o+=f[0],u+=f[1],i&&(f=M(t,l),n+=f[0],r+=f[1])}
return o=o/g*x(u,e.length),r===0?l?o/2:o:(n=n/g*x(r,l.length),o<n?n:(o+n)/2)};let x=(e,t)=>e<t?e/t:t/e,M=(e,l)=>{
let r=0,n=0;return r=l.split(t.cr.mr[e]).length,r<1?a:(n=1,t.cr.Yr[e].test(l)&&(n+=1,t.cr.Xr[e].test(l)&&(n+=1)),
[n,(r-1)*_[e].length])};t.ComputeWordRelevancy=e=>t.nr(e.t,e.title),t.ComputeRecency=e=>{let t=(e-w)/18144e5
;return t<0?0:t<1?t*t*.666667:t<1.000165?.666446:0},t.ComputeRelevancy=(e,l,r)=>{let n=t.ComputeRecency(r),u=t.nr(e,l)
;return n<=u?u:(u+n)/2},t.get2ndArg=(e,t)=>t,t.$r=e=>{if(c||e.v!==void 0||(e.v=t.Zr(e.u)),
e.textSplit!=null)return void(e.t===e.u&&(e.t=""));e.title=t.cutTitle(e.title);let l,r=e.t,n=o.fn(r,e.u)
;n.length!==r.length?l=T(r,n[0]==="\\"?5:r.charAt(7)==="/"&&r.substr(9,3).toLowerCase()==="%3a"?10:8):(n=t.shortenUrl(r),
l=k(n)),e.t=r.length!==e.u.length?n:"",e.textSplit=v(n,l,r.length-n.length,c?h-13-Math.min(e.title.length,40):h)},
t.cutTitle=(e,l)=>{let r=e.length>h+40;return r&&(e=n.fl(e,0,h+39)),t.highlight(r?e+"\u2026":e,l||k(e))},
t.highlight=(e,t)=>{if(m)return e;if(t.length===0)return n.Ur(e);let l="",r=0;for(let u=0;u<t.length;u+=2){
let o=t[u],i=t[u+1];o>=e.length||(l+=n.Ur(e.slice(r,o)),l+="<match>",l+=n.Ur(e.slice(o,i)),l+="</match>",r=i)}
return l+n.Ur(e.slice(r))},t.shortenUrl=e=>{let t=n.qr(e)
;return!t||t>=e.length?e:e.slice(t,e.length-+(e.endsWith("/")&&!e.endsWith("://")))};let T=(e,t)=>{let l=k(e)
;for(let e=0;e<l.length;)l[e+1]<=t?l.splice(e,2):(l[e]=Math.max(l[e]-t,0),l[e+1]-=t,e+=2);return l},k=e=>{let l=[]
;for(let r=0,n=_.length;r<n;r++){let n,u=0,o=0,i=e.split(t.cr.mr[r]),f=i.length-1,a=_[r].length;for(;u<f;u++,
o=n)n=(o+=i[u].length)+a,l.push([o,n])}if(l.length===0)return l;if(l.length===1)return l[0];l.sort(t.sortBy0);let r=l[0]
;for(let e=1,t=1,n=l.length;t<n;t++){let n=l[t];r[e]>=n[0]?r[e]<n[1]&&(r[e]=n[1]):(r.push(n[0],n[1]),e+=2)}return r}
;t.sortBy0=(e,t)=>e[0]-t[0];let v=(e,t,l,r)=>{let u="",o=e.length,i=o,f=""
;if(o<=r||(l>1?i=e.indexOf("/")+1||o:(i=e.indexOf(":"))<0?i=o:n.an.test(e.slice(0,i+3).toLowerCase())?i=e.indexOf("/",i+4)+1||o:i+=22),
i<o&&t.length)for(let e=t.length,l=o+8;(e-=2)>-4&&l>=i;l=e<0?0:t[e]){let n=e<0?i:t[e+1],u=l-20-Math.max(n,i)
;if(u>0&&(o-=u,o<=r)){i=n+(r-o);break}}o=0;for(let l=0;o<r&&l<t.length;l+=2){let a=t[l],s=Math.max(o,i),_=a-20-s
;_>0?(r+=_,f=n.fl(e,o,s+11),u+=m?f:n.Ur(f),u+="\u2026",f=n.sn(e,a-8,a),u+=m?f:n.Ur(f)):o<a&&(f=e.slice(o,a),
u+=m?f:n.Ur(f)),o=t[l+1],f=e.slice(a,o),m?u+=f:(u+="<match>",u+=n.Ur(f),u+="</match>")}
return f=e.length<=r?e.slice(o):n.fl(e,o,r-1>o?r-1:o+10),u+(m?f:n.Ur(f))+(e.length<=r?"":"\u2026")};t.Zr=e=>{
let t=f.nt.jt&&e.startsWith("http")?f.nt.Ut(e):-1,r=t<0?~t-1:t,n=r<0?[]:l.Wt.Bt,u=e.indexOf(":")+3,o=0,i=0,a="",s="",_=0,c=0
;for(;o<=r&&(u=e[u]==="/"?u+1:e.indexOf("/",u+1)+(i?0:1))>0;i=u){for(a=e.slice(i,u),c=r;o<=c;)if(_=o+c>>>1,
s=n[_].u.slice(i),s>a)c=_-1;else{if(s===a)return i?n[_].u:"";o=_+1}if(o<=r&&i&&(a=n[o].u,
a[u]==="/"&&a.length<=++u))return a}return""},t.or=(e,n,u,o,i)=>{{t.tabsInNormal=s=l.de!==2&&!(n&2048)
;let f=(s?2:0)|(e?1:0);b!==f&&(d=null,b=f);let a=i||d;if(t.kt.yl(a),a)u(o,a);else{let t=u.bind(null,o)
;e?(n&512?r.getCurTabs:r.le)(t):r.Me.query({},t)}}},i.He._n=()=>{d&&(b&1||!(b&2)!=(l.de===2))&&t.kt.yl(null)},
u.vl.then(()=>{u.gl("searchEngines",null)})});

View File

@@ -0,0 +1,5 @@
"use strict";globalThis.__filename=null,(()=>{
let l={},e=l=>l.slice(l.lastIndexOf("/")+1).replace(".js",""),n=(l,e,n,u)=>{
n.bind(null,null,u).apply(null,e.slice(2).map(t))},t=n=>{n=e(n);let t=l[n];return t=t||(l[n]={}),t}
;globalThis.__moduleMap=l,globalThis.define=(t,u)=>{let s=e(__filename||document.currentScript.src)
;n(0,t,u,l[s]||(l[s]={}))}})();

View File

@@ -0,0 +1,58 @@
"use strict"
;__filename="background/eval_urls.js",define(["require","exports","./store","./utils","./browser","./normalize_urls","./parse_urls","./ports","./exclusions","./open_urls"],(e,s,a,r,t,l,n,c,u,i)=>{
Object.defineProperty(s,"__esModule",{value:!0}),a.Fr=(e,s,u,p)=>{let d,g,h,y,m;if(s|=0,
e==="paste"?e+=" .":!e.includes("%20")||e.includes(" ")||e.startsWith("run")||(e=e.replace(/%20/g," ")),
s<0||!(e=e.trim())||(d=e.search(/[/ ]/))<=0||!/^[a-z][\da-z\-]*(?:\.[a-z][\da-z\-]*)*$/i.test(g=e.slice(0,d).toLowerCase())||/\.(?:css|html?|js)$/i.test(g))return null
;if(!(e=e.slice(d+1).trim()))return null;let x=/[\s+,\uff0b\uff0c]+/g;if(s===1)switch(g){case"sum":case"mul":
e=e.replace(x,g==="sum"?" + ":" * "),g="e";break;case"avg":case"average":h=e.split(x),
e="("+h.join(" + ")+") / "+h.length,g="e"}if(s===1)switch(g){case"e":case"exec":case"eval":case"expr":case"calc":
case"m":case"math":return t.import2("/lib/math_parser.js").then(o.bind(0,e));case"error":return[e,3]
}else if(s>=2)switch(g){case"run":case"run1":case"run-one":case"run-one-key":return[[g,e],6];case"status":case"state":
return s>=3&&f(e),[e,s>=3?4:7];case"url-copy":case"search-copy":case"search.copy":case"copy-url":if(m=l._r(e,null,1,p),
m instanceof Promise)return m.then(e=>{let s=e[0]||e[2]||"";return s=s instanceof Array?s.join(" "):s,
Promise.resolve(a.Ql(s)).then(e=>[e,1])});m=l.dr===5&&m instanceof Array?m[0]:m,e=m instanceof Array?m.join(" "):m
;case"cp":case"copy":case"clip":let n=a.Ql(e);return typeof n=="string"?[e,1]:n.then(e=>[e,1]);case"browser-search":
case"browser-search2":case"browser-search.at":case"browser-search-at":case"bs":case"bs2":case"bs.at":case"bs-at":
case"b-s":case"b-s2":case"b-s.at":case"b-s-at":case"b-search":case"b-search2":case"b-search.at":case"b-search-at":{
let s="NEW_TAB";if(g.endsWith("2")||g.endsWith("at")){let a=/^[-\w][^ /]*/.exec(e);if(a){let r=i.parseReuse(a[0])
;s=r===2?"NEW_WINDOW":r>=0||r===-3?"CURRENT_TAB":s,e=e.slice(a[0].length+1)}}return e=e.trim().replace(r.q," "),
t.t.search.query({disposition:s,text:e}),[e,9]}}switch(g){case"urls":return s<1?null:b(e,s);case"cd":case"up":
if(h=(e+" ").split(" "),!h[2]){if(s<1)return null;if(m=c.j(),typeof m!="string")return m.then(r=>{
let t=r&&a.Fr("cd "+e+" "+(e.includes(" ")?r:". "+r),s,u,p)
;return t?typeof t=="string"?[t,7]:t:[r?"fail in parsing":"No current tab found",3]});h[2]=m}g=h[0];let t=g[0]==="/"
;d=parseInt(g,10),d=isNaN(d)?g==="/"?1:t?g.replace(/(\.+)|./g,"$1").length+1:-g.replace(/\.(\.+)|./g,"$1").length||-1:d
;let i=n.Ne({u:h[2],p:d,t:null,f:1,a:h[1]!=="."?h[1]:""});return i&&i.u||[i?i.e:"No upper path",3];case"parse":
case"decode":g=e.split(" ",1)[0],g.search(/\/|%2f/i)<0?e=e.slice(g.length+1).trimLeft():g="~",h=[e=r.El(e)],
e=l._r(e,null,0,p),l.dr!==4&&(y=n.Ne({u:e}))?y.u===""?h=[g]:(h=y.u.split(" "),h.unshift(g)):h=h[0].split(r.q);break
;case"sed":case"substitute":case"sed-p":case"sed.p":case"sed2":let o=e.split(" ",1)[0];e=e.slice(o.length+1).trim()
;let f=g==="sed2"?e.split(" ",1)[0]:"";return[e=(e=e.slice(f.length).trim())&&a.S(e,g.endsWith("p")?32768:0,f?{r:o,k:f
}:/^[@#$-]?[\w\x80-\ufffd]+$|^\.$/.test(o)?{r:null,k:o}:{r:o,k:null}),5];case"u":case"url":case"search":
h=r.El(e,!0).split(r.q);break;case"paste":
if(s>0)return m=a.Vl(e),m instanceof Promise?m.then(e=>[e?e.trim().replace(r.q," "):"",5]):[m?m.trim().replace(r.q," "):"",5]
;default:return null}if(u)return[h,2];if(p&&p>12)return null;let w=h[0]&&a.Hl.map.has(h[0])?h.shift():null
;return l.K(h,w,p===12?0:s,p)};let o=(e,s)=>{
l.es.test(e)&&(e=e.slice(1,-1)),e=(e=(e=e.replace(/\uff0c/g," ")).replace(/deg\b/g,"\xb0").replace(/[\xb0']\s*\d+(\s*)(?=\)|$)/g,(e,s)=>(e=e.trim())+(e[0]==="'"?"''":"'")+s).replace(/([\u2070-\u2079\xb2\xb3\xb9]+)|[\xb0\uff0b\u2212\xd7\xf7]|''?/g,(e,s)=>{
let a,r=""
;if(!s)return e==="\xb0"?"/180*PI+":(a="\uff0b\u2212\xd7\xf7".indexOf(e))>=0?"+-*/"[a]:`/${e==="''"?3600:60}/180*PI+`
;for(let s of e)r+=s<"\xba"?s>"\xb3"?1:s<"\xb3"?2:3:s.charCodeAt(0)-8304;return r&&"**"+r
}).replace(/([\d.])rad\b/g,"$1")).replace(/^=+|=+$/g,"").trim()
;let a=[].reduce.call(e,(e,s)=>e+(s==="("?1:s===")"?-1:0),0);for(;a<0;a++)e="("+e;for(;a-- >0;)e+=")";if(e){
for(;e&&e[0]==="("&&e.slice(-1)===")";)e=e.slice(1,-1).trim();e=e||"()"}
let r="",t=s.MathParser||globalThis.MathParser||{};if(t.evaluate){try{r=t.evaluate(e!=="()"?e:"0"),
r=typeof r=="function"?"":""+r}catch(e){}t.clean(),t.errormsg&&(t.errormsg="")}return[r,0,e]},f=e=>{let s=a.he
;parseInt(e,10)&&(s=parseInt(e,10),e=e.slice(e.search(/[/ ]/)+1));let t=a.a.get(s||(s=a.he));if(!t)return
;if(t.b&512)return void console.log(`Unexpected inactive Tab ${s}`);a.O=t.R||t.d
;let l=e.search(/[/ ]/),n=l>0?e.slice(l+1):"";e=e.toLowerCase(),l>0&&(e=e.slice(0,l)),
e.includes("-")&&e.endsWith("able")&&(e+="d");let i=!!n&&/^silent/i.test(n);n=(i?n.slice(7):n).trim();let o,f=0,b=e=>{
console.log(e),f||c.showHUD(e),f=1};if(n.includes("%")&&/%[a-f0-9]{2}/i.test(n)&&(n=r.rl(n)),
n&&!n.startsWith("^ "))b('"vimium://status" only accepts a list of hooked keys'),n="";else if(n){
let e=n.match(/<(?!<)(?:a-)?(?:c-)?(?:m-)?(?:s-)?(?:[a-z]\w+|[^\sA-Z])>|\S/g)
;n=e?e.join(" ").replace(/<(\S+)>/g,"$1"):""}let p=a.O.s,d=p.f,g=u.ss?d===1?d:(o=u.as(p.Jl,p),
o?1:o===null?0:2):0,h=e==="enable"?0:e==="disable"?2:e==="toggle-disabled"?d!==2?g===2?null:2:g===2?0:null:e==="toggle-enabled"?d!==0?g===0?null:0:g===0?2:null:e==="toggle-next"?d===1?0:d===0?g===2?null:2:g===2?0:null:e==="toggle"||e==="next"?d!==0?0:2:(e!=="reset"&&b(`Unknown status action: "${e}", so reset`),
null),y=!!n&&e==="enable",m=h===null?0:h===2?3:1,x={N:1,p:h===2||y?n:null,f:m},w=m?h:0;t.rs=m?{f:w,ts:x.p}:null
;for(let e of t.J){let s=e.s;!m&&u.ss&&(o=x.p=u.as(s.Jl,s),w=o===null?0:o?1:2,w!==1&&s.f===w)||(s.f=w,e.postMessage(x))}
w=t.d.s.f,i||f||c.showHUDEx(a.O,"newStat",0,[[w!==0||y?w===2?"fullyDisabled":"halfDisabled":"fullyEnabled"]]),
a.r&&w!==d&&a.o(s,w)},b=(e,s)=>{let r=e.indexOf(":")+1||e.indexOf(" ")+1;if(r<=0)return["No search engines given",3]
;let t=e.slice(0,r-1).split(e.lastIndexOf(" ",r-1)>=0?" ":"|").filter(e=>a.Hl.map.has(e))
;if(t.length<=0)return["No valid search engines found",3];let n=e.slice(r).trim().split(" "),c=["openUrls"]
;for(let e of t)c.push(l.K(n,e,s));return c.some(e=>e instanceof Promise)?Promise.all(c).then(e=>[e,6]):[c,6]}});

View File

@@ -0,0 +1,35 @@
"use strict"
;__filename="background/exclusions.js",define(["require","exports","./store","./utils","./browser","./normalize_urls","./settings","./ports"],(e,t,l,n,r,i,u,o)=>{
Object.defineProperty(t,"__esModule",{value:!0}),t.vn=t.cn=t.as=t.dn=t.mn=t.ss=t.Rl=t.Ol=t.pn=void 0,t.pn=(e,t)=>{
let l,r,u
;return t=t&&t.replace(/<(\S+)>/g,"$1"),e[0]==="^"?(l=n.Tl(e.startsWith("^$|")?e.slice(3):e,"",0))||console.log("Failed in creating an RegExp from %o",e):e[0]==="`"&&((r=n.$n(e.slice(1),0))||console.log("Failed in creating an URLPattern from %o",e)),
u=l?{t:1,v:l,k:t}:r?{t:3,v:{p:r,s:e.slice(1)},k:t}:{t:2,v:e.startsWith(":vimium://")?i.gn(e.slice(10),!1,-1):e.slice(1),
k:t},u},t.Ol=e=>{let t;if(e[0]==="^"){
e=e.startsWith("^$|")?e.slice(3):e,t=".*$".includes(e.slice(-2))?e.endsWith(".*$")?3:e.endsWith(".*")?2:0:0,
e=t!==0&&e[e.length-t]!=="\\"?e.slice(0,-t):e;let l=n.Tl(e,"");return l?{t:1,v:l}:null}if(e[0]==="`"){
let t=e.slice(1),l=n.$n(t);return l?{t:3,v:{p:l,s:t}}:null}
if(e==="localhost"||!e.includes("/")&&e.includes(".")&&(!/:(?!\d+$)/.test(e)||n.kn(e,6))){let t
;e=(e=(e=e.toLowerCase()).endsWith("*")?e.slice(0,/^[^\\]\.\*$/.test(e.slice(-3))?-2:-1):e).startsWith(".*")&&!/[(\\[]/.test(e)?"*."+e.slice(2):e
;let l=n.Tl("^https?://"+(e.startsWith("*")&&e[1]!=="."?"[^/]"+e:(t=e.replace(/\./g,"\\."),
t.startsWith("*")?t.replace("*\\.","(?:[^./]+\\.)*?"):t)),"",0);return l?{t:1,v:l}:e.includes("*")?null:{t:2,
v:"https://"+(e.startsWith(".")?e.slice(1):e)+"/"}}
return t=(e=(e=(e[0]===":"?e.slice(1):e).replace(/([\/?#])\*$/,"$1")).startsWith("vimium://")?i.gn(e.slice(9),!1,-1):e.startsWith("extension:")?"chrome-"+e:e).indexOf("://"),
{t:2,v:t>0&&t+3<e.length&&e.indexOf("/",t+3)<0?e+"/":e}
},t.Rl=(e,t)=>e.t===1?e.v.test(t):e.t===2?t.startsWith(e.v):e.v.p.test(t);let f=!1;t.ss=f;let s=!1;t.mn=s
;let v=!1,a=[],c=e=>{a=e.map(e=>t.pn(e.pattern,e.passKeys))};t.dn=e=>(e?[t.pn(e,"")]:a).map(e=>({t:e.t,
v:e.t===1?e.v.source:e.t===2?e.v:e.v.s})),t.as=(e,r)=>{var i;let u=""
;for(let t of a)if(t.t===1?t.v.test(e):t.t===2?e.startsWith(t.v):t.v.p.test(e)){let e=t.k
;if(e.length===0||e[0]==="^"&&e.length>2||v)return e&&e.trim();u+=e}
if(!u&&r.Q&&e.lastIndexOf("://",5)<0&&!n.an.test(e)){let e=(i=l.a.get(r.m))===null||i===void 0?void 0:i.R
;if(e!=null)return t.as(e.s.Jl,e.s)}return u?u.trim():null};let d=()=>{let e=r.N()?e=>{l.hn[10](e),o.xn()}:null
;return d=()=>e,e};t.cn=()=>{let e=new Set;for(let{k:t}of a)if(t){if(t[0]==="^"&&t.length>2)return!0
;for(let l of t.split(" "))e.add(l)}return e.size?e:null},t.vn=e=>{let n=a.length>0?null:{N:1,p:null,f:0}
;if(e)return void(n||u.bn({N:3,H:10,U:0}));let r=l.n!=null||l.n!==void 0&&l.r,i=a;o.c(4096,e=>{let i=e.d.s.f,u=e.d.s
;for(let l of e.J){let r=null,i=0;if(n){if(l.s.f===0)continue}else if(r=t.as(l.s.Jl,l.s),i=r===null?0:r?1:2,
!r&&l.s.f===i)continue;e.rs||(l.postMessage(n||{N:1,p:r,f:0}),l.s.f=i)}r&&i!==u.f&&l.o(u.m,u.f)},()=>i===a)};let m=()=>{
let e=a.length>0,n=e||f?d():null;if(!n)return;if(f!==e){t.ss=f=e;let l=r.N().onHistoryStateUpdated
;e?l.addListener(n):l.removeListener(n)}let i=e&&l.z.exclusionListenHash;if(s!==i){t.mn=s=i
;let e=r.N().onReferenceFragmentUpdated;i?e.addListener(n):e.removeListener(n)}};l.pl.exclusionRules=e=>{
let n=!a.length,r=l.Nn;c(e),v=l.z.exclusionOnlyFirstMatch,m(),setTimeout(()=>{setTimeout(t.vn,10,n),
l.Nn===r&&u.gl("keyMappings",null)},1)},l.pl.exclusionOnlyFirstMatch=e=>{v=e},l.pl.exclusionListenHash=m,u.vl.then(()=>{
c(l.z.exclusionRules),v=l.z.exclusionOnlyFirstMatch})});

View File

@@ -0,0 +1,83 @@
"use strict"
;__filename="background/filter_tabs.js",define(["require","exports","./store","./utils","./browser","./ports","./exclusions","./run_commands"],(l,e,t,n,r,u,i,a)=>{
Object.defineProperty(e,"__esModule",{value:!0
}),e.wn=e.Mn=e.oe=e.In=e.mayRequireActiveTab=e.getNecessaryCurTabInfo=e._e=e.getNearArrIndex=e.Pn=e.Ve=e.ke=e.getTabRange=void 0,
e.getTabRange=(l,e,n,r)=>s(l,e,n,t.x,r,t.$.limited,t.$.filter);let s=(l,e,t,n,r,u,i)=>{let a=n>0;r&&(n+=a?r:-r)
;let s=l+n
;return s<=e&&s>-2?a?[l,s]:[s+1,l+1]:u===!1||(u==null||u==="auto")&&(Math.abs(n)<(t||e)*2||n<10||i&&u==null)?Math.abs(n)<e?a?[e-n,e]:[0,-n]:[0,e]:a?[l,e]:[0,l+1]
};e.ke=(l,n,u,i,s,o)=>{let c=i=>{if(!i||!i.length)return s(0),r.g()
;let o=r.selectIndexFrom(i),[c,d]=f?[0,i.length]:e.getTabRange(o,i.length,0,n);f&&(a.overrideCmdOptions({limited:!1
},!0),a.overrideOption("$limit",t.x),t.x=t.x>0?9999:-9999),u(i,l?[c,o,d]:[o+1===d||t.x>0&&c!==o?c:d-1,o,d],s)
},d=t.$.filter,f=d&&/(^|[&+])limit(ed)?=count\b/.test(d+"")
;if(i)if(i.length===0||Math.abs(t.x)>1||f)if(i.length===0||f){let l=i[0]?i[0].windowId:t.we;(l>=0?r.ye(r.Be.get,l,{
populate:!0}):r.ye(r.getCurWnd,!0)).then(l=>{c(l?l.tabs:[])})}else c(i);else n?i[0].index+t.x<0?r.le(c):r.Me.query({
windowId:i[0].windowId,index:i[0].index+t.x
},n=>(n&&n.length&&(o===!0||r.$e(n[0])&&(!o||o(n[0])))&&(!d||e.oe(i[0],n,d).length>0)?t.x<0?u([n[0],i[0]],[0,1,l?2:1],s):u([i[0],n[0]],[l?0:1,0,2],s):r.le(c),
r.g())):u(i,[0,0,1],s);else s(0)},e.Ve=()=>{let l=0,e=-1;return t.ze.forEach((n,r)=>{n>l&&r!==t.he&&(l=n,e=r)}),e},
e.Pn=(l,t,n)=>{let u
;return l&&(l.index||t)?n&&n[u=Math.max(n.indexOf(l),0)+(t?1:-1)]&&r.$e(n[u])?Promise.resolve(n[u]):r.ye(r.Me.query,{
windowId:l.windowId,index:l.index+(t?1:-1)
}).then(u=>u&&u[0]?r.$e(u[0])?u[0]:(n&&n.length>2?Promise.resolve(n.filter(r.$e)):r.ye(r.le)).then(n=>n&&n.length?n[e.getNearArrIndex(n,l.index+(t?1:-1),t)]:null):null):Promise.resolve(null)
},e.getNearArrIndex=(l,e,t)=>{
for(let n=l.length>1?0:1;n<l.length;n++)if(l[n].index>=e)return l[n].index===e||t?n:n>0?n-1:0;return l.length-1},
e._e=(l,e)=>{Math.abs(l)===1?r.getCurTab(t=>{let n=t[0].index+l;n>=0?r.Me.query({windowId:t[0].windowId,index:n
},n=>(n&&n[0]?e(l>0?[t[0],n[0]]:[n[0],t[0]]):r.getCurTabs(e),r.g())):r.getCurTabs(e)}):r.getCurTabs(e)},
e.getNecessaryCurTabInfo=l=>{if(!l)return null;let t=e.mayRequireActiveTab(l)
;return t>2?r.ye(r.getCurTab).then(l=>l&&l[0]||null):t?Promise.resolve(u.j(null,t>1)).then(l=>l?{url:l}:null):null},
e.mayRequireActiveTab=l=>{let e=0;for(let t of(l+"").split(/[&+]/)){
let l=t.split("=",1)[0],n=l.includes(".")?"":l||t,r=t.slice(n?n.length+1:0)
;if(n&&r==="same"&&n!=="hidden"&&!n.startsWith("discard"))return 3;if(!r&&n){
if(n.startsWith("title")||n==="group")return 3;e=n==="hash"?2:e||(n==="host"||n==="url"?1:0)}}return e}
;let o=(l,e)=>(l=l&&l.toLowerCase())===""||l==="1"||l==="true"?!e||null:l==="only"||l!=="0"&&l!=="false"&&null
;e.In=(l,e,t)=>{let n=l?(l+"").split(/[&+]/).find(l=>l.startsWith(e)):null,r=n?n.slice(1+e.length):null
;return r!==null?o(r,t):null};let c=(l,e)=>{
let t=l&&l[0]==="/"?l.lastIndexOf("/"):0,r=t>1&&/^[a-z]+$/.test(l.slice(t+1))?n.Tl(l.slice(1,t),l.slice(t+1).replace(/g/g,""),0):null,u=!r&&!!e&&e.toLowerCase()
;return r?(e=null,l=>r.test(l||"")):e?e===u?l=>!!l&&l.toLowerCase().includes(u):l=>!!l&&l.includes(e):null}
;e.oe=(l,e,a,d)=>{var f;let h=0,m=0,b=0,w=[];for(let e of(a+"").split(/[&+]/)){
let u=e.split("=",1)[0],a=u.includes("."),s=!a&&u.endsWith("!"),d=a?"":(s?u.slice(0,-1):u)||e,k=e.slice(a?0:u.length+(e.charAt(u.length+1)==="="?2:1)),p=k&&n.rl(k),v=p==="same"||p==="cur"||p==="current",g=null
;switch(d){case"title":case"title*":let e=c(p,p||l&&l.title);g=e?l=>e(l.title):null;break;case"url":case"urlhash":
case"url+hash":case"url-hash":case"hash":let u=null;if(d==="url"&&p)u=i.Ol(p);else{
let e=l?r.getTabUrl(l):null,t=d.includes("hash");u=e?i.Ol(":"+(t?e:e.split("#",1)[0])):null}
let a=!!u&&u.t===2&&p===p.toLowerCase();g=u?l=>i.Rl(u,a?r.getTabUrl(l).toLowerCase():r.getTabUrl(l)):g;break
;case"title+url":let s=p&&c(p,p);g=s?l=>s(l.title)||s(r.getTabUrl(l)):g;break;case"host":case"":
let w=p||(d&&l?(f=n.yn(r.getTabUrl(l)))===null||f===void 0?void 0:f.host:"");g=w?l=>{var e
;return w===((e=n.yn(r.getTabUrl(l)))===null||e===void 0?void 0:e.host)}:g;break;case"active":let k=o(p,1)
;g=k!=null?l=>l.active===k:g;break;case"new":case"old":case"visited":let x=o(p)===(d!=="new");g=l=>t.ze.has(l.id)===x
;case"discarded":case"discard":let M=!v&&o(p,1);g=M!=null?l=>l.discarded===M:g;break;case"group":
let _=p||(l?r.getGroupId(l)!=null?r.getGroupId(l)+"":"":null);g=_!=null?l=>{var e
;return((e=r.getGroupId(l))!==null&&e!==void 0?e:"")+""===_}:g;break;case"hidden":let I=null;g=I!=null?l=>r.$e(l)!==I:g
;break;case"highlight":case"highlighted":let P=v?l?l.highlighted:null:o(p);g=P!=null?l=>l.highlighted===P:g;break
;case"incognito":let $=v?l?l.incognito:null:o(p);g=$!=null?l=>l.incognito===$:g;break;case"pinned":
let y=v?l?l.pinned:null:o(p,1);g=y!=null?l=>l.pinned===y:g;break;case"mute":case"muted":{
let e=v?l?r.isTabMuted(l):null:o(p);g=e!=null?l=>r.isTabMuted(l)===e:g}break;case"audible":case"audio":{
let e=v?l?l.audible:null:o(p);g=e!=null?l=>l.audible===e:g}break;case"min":case"max":case"limit":case"limited":
let j=p==="count"?t.$.$limit||t.x:parseInt(p)||0;d==="min"?m=j:d==="max"?b=j:h=j||1,g=()=>!0}g&&w.push([g,s])}
if(d&&(d.known=w.length>0),w.length===0)return e.slice(0);let k=e,p=e.filter(l=>{
for(let e of w)if(e[0](l)===e[1])return!1;return!0}),v=p.length
;if(!v||m>0&&v<m||b>0&&v>b)return t.$&&t.$.$else||u.showHUD(v?`${v} tabs found but expect ${v<m?m:b}`:"No tabs matched the filter parameter"),
[];if(h){let e=l?k.indexOf(l):-1;if(e<0){let n=l?l.id:t.he;e=k.findIndex(l=>l.id===n)}if(e>=0){
let l=p.findIndex(l=>k.indexOf(l)>=e),n=l>=0&&k.indexOf(p[l])>e;n&&p.splice(l,0,null)
;let r=s(l>=0?l:v-1,v,0,t.x>0?h:-h,n?1:0,!1);p=p.slice(r[0],r[1]),n&&(p=p.filter(l=>!!l))
}else p=h>0?p.slice(0,h):p.slice(-h)}return p},e.Mn=(l,e)=>{let n,u=(l,e)=>{l.ind=e
},i=(l,e)=>l<e?-1:l>e?1:0,a=l.map((l,e)=>({tab:l,ind:e,time:null,rhost:null,group:r.getGroupId(l),pinned:l.pinned
})),s=-1,o=!1
;for(let l of(e instanceof Array?e.slice(0):(e===!0?"time":e+"").split(/[, ]+/g)).reverse())n=l[0]==="r"&&l[1]!=="e"||l[0]==="-"?(l=l.slice(1),
-1):1,l.includes("time")&&!l.includes("creat")||l.includes("recen")?(a[0].time==null&&a.forEach(l=>{
let e=l.tab.id,n=t.ze.get(e);l.time=e===t.he?1:n!=null?n:e+2
}),s=1):l.startsWith("host")||l==="url"?(a[0].rhost||a.forEach(l=>{
let e=l.tab.url,t=e.indexOf("://")+3,n=t>3?e.indexOf("/",t):0;if(n<t)return void(l.rhost=e)
;let r=e.slice(t,n),u=r.lastIndexOf(":"),i=u>0&&r.lastIndexOf(":",u-1)>0
;l.rhost=i?r:r.slice(0,u>0?u:r.length).split(".").reverse().join(".")+(u>0?" "+r.slice(1):"")}),
s=l==="url"?3:2):s=l==="title"?4:l.includes("creat")||l==="id"?5:l==="window"?6:l==="index"?7:l==="reverse"?(n=-1,7):-1,
s<0||(a.sort((l,e)=>(s===1?l.time-e.time:s<4?i(l.rhost,e.rhost)||(s===3?i(l.tab.url,e.tab.url):0):s===4?i(l.tab.title,e.tab.title):s===5?l.tab.id-e.tab.id:s===6?l.tab.windowId-e.tab.windowId:l.ind-e.ind)*n||(l.group!=null?e.group!=null?0:-1:e.group!=null?1:0)||l.ind-e.ind),
a.forEach(u),o=!0);if(o&&a.some(l=>l.group!=null)){let l=new Map
;for(let{group:e,ind:t}of a)e==null||l.has(e)||l.set(e,t)
;a.sort((e,t)=>(e.group!=null?l.get(e.group):e.ind)-(t.group!=null?l.get(t.group):t.ind)||e.ind-t.ind)}
return o&&(a.forEach(u),a.sort((l,e)=>l.pinned!==e.pinned?l.pinned?-1:1:l.ind-e.ind)),o?a.map(l=>l.tab):l},
e.wn=async(l,e,n,u,i)=>{let a=e=>(!l||e.type===l)&&(n==null||e.incognito===n)&&(i||e.state!=="minimized");if(t.jn>=0){
let l=await r.ye(r.Be.get,t.jn);if(l&&a(l))return l;t.jn=-1}let s=[];{let l=(await r.ye(r.getCurTabs)||[]).map(l=>l.id)
;l.push(t.he),t.ze.forEach((e,t)=>{l.includes(t)||s.push([t,e])}),s.sort((l,e)=>e[1]-l[1])}if(s.length>0){
let l=await r.je(r.Me.get,s[0][0]);if(!l){let e=s.find(l=>t.a.has(l[0]));l=e&&await r.je(r.Me.get,e[0])}
let e=l&&await r.je(r.Be.get,l.windowId);if(e&&a(e))return e}
let o=await r.je(r.Be.getAll),c=o.filter(a),d=c.filter(l=>l.id!==u);return d.sort((l,e)=>e.id-l.id),
(d.length>0?d[0]:null)||(e?o.find(l=>l.id===u)||o.find(l=>l.focused)||null:[c,o.find(l=>l.id===u)])}});

View File

@@ -0,0 +1,98 @@
"use strict"
;__filename="background/frame_commands.js",define(["require","exports","./store","./utils","./browser","./normalize_urls","./ports","./exclusions","./i18n","./key_mappings","./run_commands","./open_urls","./tools"],(e,l,t,n,i,r,o,u,a,s,f,d,c)=>{
Object.defineProperty(l,"__esModule",{value:!0
}),l.blurInsertOnTabChange=l.ge=l.focusFrame=l.framesGoNext=l.toggleZoom=l.mainFrame=l.framesGoBack=l.openImgReq=l.captureTab=l.handleImageUrl=l.enterVisualMode=l.L=l.me=l.showVomnibar=l.initHelp=l.performFind=l.parentFrame=l.nextFrame=void 0
;let m=!1,p=!1;t.tl=(e,l)=>{var r;if(e===3&&l>=0)return navigator.permissions.query({name:"clipboard-read"
}).catch(t.u).then(e=>!!e&&e.state!=="denied"&&t.tl(3,-1-l,null))
;let u=!m&&t.Tn>108&&e!==1&&e!==9,a=u?null:t.a.get(t.he)||t.O&&o.C(),s=u?null:a?a.d:t.O
;!a||!a.R||s===a.R||a.R.s.b&512||n.an.test(a.R.s.Jl)&&!(s.s.b&512)&&s.s.Jl.startsWith((((r=n.yn(a.R.s.Jl))===null||r===void 0?void 0:r.origin)||"")+"/")||(s=a.R)
;let d=setTimeout(()=>{let e=t.Cn(d,null);e&&e.r&&e.r(!1)},4e4),c=n.Xe();if(t.Cn(null,{i:d,t:e,s:l,d:null,r:c.Le}),u){
if(t.Hn)try{o.Gn(t.Hn,t.On)}catch(e){o.qn()}if(t.Hn);else if(!p){
let e=i.t.offscreen.Reason,l=[e.BLOBS,e.CLIPBOARD,e.MATCH_MEDIA].filter(e=>!!e);p=!0,i.t.offscreen.createDocument({
reasons:l.length>0?l:["CLIPBOARD"],url:t.Ze.Bn,justification:"read and write system clipboard"},()=>{let e=i.g()
;if(p=!1,e)return m=!0,o.qn(),e})}}else if(s)f.portSendFgCmd(s,0,1,{u:t.Ze.En,c:"R TEE UI",
a:e===1||e===5||e===9||e===3?"clipboard-write; clipboard-read":"",t:3e3,i:!a||s===a.d||a.d.s.b&512?0:a.d.s.Q},1);else{
let e=c.Ge;i.getCurWnd(!1,l=>{let n=l?l.id:t.we;i.makeWindow({type:"popup",url:t.Ze.En,focused:!0,incognito:!1,left:0,
top:0,width:100,height:32},"",l=>{let r=l?null:t.Cn(null,null);if(l){let r=l.id;e.then(()=>{n!==t.we&&i.Be.update(n,{
focused:!0},i.g),i.Be.remove(r,i.g)}),e=null}else r&&r.i===d&&(clearTimeout(r.i),r.r&&r.r(!1))})})}return c.Ge},
l.nextFrame=()=>{let e=t.O,n=-1,i=o.C(),r=i&&i.J;if(r&&r.length>1){n=r.indexOf(e)
;for(let e=Math.abs(t.x);e>0;e--)n+=t.x>0?1:-1,n===r.length?n=0:n<0&&(n=r.length-1);e=r[n]}
l.focusFrame(e,e.s.Q===0,e!==t.O&&i&&e!==i.d?4:3)},l.parentFrame=()=>{
let e=t.O.s,n=e.m>=0&&o.An(t.O)?null:"Vimium C can not access frames in current tab";n&&o.showHUD(n),
o.getParentFrame(e.m,e.Q,t.x).then(e=>{e?l.focusFrame(e,!0,5):l.mainFrame()})},l.performFind=()=>{
let e=t.O.s,l=t.x<0?-t.x:t.x,n=t.$.index,r=n?n==="other"?l+1:n==="count"?l:n>=0?-1-(0|n):0:0,o=t.$.highlight,u=t.$.extend,a=u==="before"||t.$.direction==="before"?-1:1,s=!r&&l<2?t.$.selected:null,d=!!r||!t.$.active,m=null
;e.b&32||(e.b|=32,m=i.k(e)),f.sendFgCmd(1,!0,f.wrapFallbackOptions({c:r>0?t.x/l:t.x,l:d?1:0,f:m,d:a,
m:typeof o=="number"?o>=1?Math.min(o|0,200):0:o?d?100:20:0,n:!!t.$.normalize,r:t.$.returnToViewport===!0,
s:s==null?0:typeof s!="string"?typeof s=="number"?Math.max(0,s|0):5:(s.includes("auto")||s.includes("fallback")?0:4)|(s.includes("any")?2:1),
t:u?a>0?2:1:0,p:!!t.$.postOnEsc,e:!!t.$.restart,u:!!t.$.scroll&&t.$.scroll!=="auto",
q:t.$.query?t.$.query+"":d||t.$.last?c.ce.ln(e.se,"",r<0?-r:r):""}))},l.initHelp=(e,l)=>f.initHelpDialog().then(n=>{
var i;if(!n)return;let r=e.w&&((i=o.An(l))===null||i===void 0?void 0:i.R)||l,u=r.s.Jl.startsWith(t.Ze.Qe),a=e.a||{}
;if(r.s.b|=262144,t.O=r,e.f){let e=t.Ln.get("?"),l=e&&e.Rn===8&&e.Vn?"?":"";l||t.Ln.forEach((t,n)=>{
t.Rn===8&&t.Vn&&(l=l&&l.length<n.length?l:(e=t,n))}),a=l&&s.zn(e)||a}f.sendFgCmd(17,!0,{h:n.Dn(u,a.commandNames),
o:t.Ze.Qe,f:e.f,e:!!a.exitOnClick,c:u&&!!s.Fn||t.z.showAdvancedCommands})}),l.showVomnibar=e=>{var i
;let r=t.O,u=t.$.url,a=t.$.query;if(a!=null&&(u=a,a=null,t.$.url=u,delete t.$.query),
u!=null&&u!==!0&&typeof u!="string"&&(u=null,delete t.$.url),!r){if(r=((i=o.C())===null||i===void 0?void 0:i.R)||null,
!r)return;t.O=r}let s=null;if(u!=null&&t.$.urlSedKeys){let n=typeof u=="string"?u:typeof t.$.u=="string"?t.$.u:o.j()
;if(n&&n instanceof Promise)return void n.then(t=>{f.overrideCmdOptions({u:t||""},!0),l.showVomnibar(e)});let i={}
;s=t.S(n,0,{r:null,k:t.$.urlSedKeys},i),i.F!=null&&f.overrideCmdOptions({keyword:i.F})}
t.$.mode==="bookmark"&&f.overrideOption("mode","bookm")
;let d=t.vomnibarPage_f,{Jl:c}=r.s,m=!d.startsWith(t.Ze.U),p=c.startsWith(t.Ze.U),g=e||!d.startsWith(t.ll)?t.Ze.Jn:d,v=(e=e||(m?p||d.startsWith("file:")&&!c.startsWith("file:///")||d.startsWith("http:")&&!/^http:/.test(c)&&!/^http:\/\/localhost[:/]/i.test(d):r.s.se||p&&!d.startsWith(c.slice(0,c.indexOf("/",c.indexOf("://")+3)+1))))||d===g||r.s.m<0,b=t.$.trailingSlash,h=t.$.trailing_slash,y=f.copyCmdOptions(n.Sn({
v:v?g:d,i:v?null:g,t:v?0:m?2:1,s:b!=null?!!b:h!=null?!!h:null,j:v?"":t.Ze.Un,e:!!t.$.exitOnClick,u:s,
url:typeof u=="string"&&s||u,k:n.Kn(!0),h:t.Wn.Qn}),t.$);y.icase==null&&t.Wn.actions.includes("icase")&&(y.icase=!0),
f.portSendFgCmd(r,6,!0,y,t.x),y.k="omni",t.$=y},l.me=(e,l,n)=>{let i=e.s.m,r=i>=0?i:t.he,u=e.s.Q||i<0?t.a.get(r):null
;return u&&(i<0&&(e.s.b&64||e.s.Jl.startsWith("about:"))&&(e=u.d),(l==="tab"||!l&&!n&&i<0)&&(u.R||i<0)&&(e=u.R||u.d),
e.s.b&64||e.s.Jl.startsWith("blob:"))?o.getParentFrame(r,e.s.Q,1).then(e=>e||u.R||u.d):e},l.L=()=>{
let e=t.$.mode,l=t.x<2||t.x>10?1:t.x,n=e&&(e+"").toLowerCase()==="create"?1:0,i=t.$.key,r={a:n,n:!t.$.storeCount,
s:t.$.swap!==!0,t:"",o:t.$};if(typeof i=="string"&&i.trim().length===1)return r.a=0,void t.hn[21]({H:21,c:r,k:t.Re,
n:i.trim(),s:0,u:"",l:!!t.$.local},t.O);Promise.resolve(a.A(n===1?"mBeginCreate":"mBeginGoto")).then(e=>{r.t=e,
f.portSendFgCmd(t.O,3,!0,r,l)})},l.enterVisualMode=()=>{
let e=t.$.mode,l=t.$.start,r=typeof e=="string"?e.toLowerCase():"",o=t.O.s,u=null,a=null,d=null
;16&~o.b&&(o.b&32||(o.b|=32,u=i.k(o)),a=s.Xn,d=s.Yn,o.b|=16);let c=n.Zn({m:r==="caret"?3:r==="line"?2:1,f:u,g:d,k:a,
t:!!t.$.richText,s:l!=null?!!l:null,w:""},t.$);delete c.mode,delete c.start,delete c.richText,f.sendFgCmd(5,!0,c)},
l.handleImageUrl=(e,l,r,u,a,s,f)=>{var d;if(r){if(r&1&&(e?Promise.resolve():n.ni(l).then(l=>{e=l
})).then(()=>t.tl(r===9?9:1,{u:e,t:s,b:1},l)).then(async e=>{u(!!e)}),r&2)return f(e),void(r&1||u(1));if(r&4){
let l=((d=o.C())===null||d===void 0?void 0:d.R)||t.O,s=n.Xe();r&1?setTimeout(s.Le,800):s.Le(0),
s.Ge.then(()=>i.downloadFile("",a,l?l.s.Jl:null)).then(l=>{!l&&f(e),r===4&&u(!0)})}}else u(1)},l.captureTab=(e,r)=>{
let u=t.$.show,s=!!t.$.copy,f=t.$.download,d=s?f===!0:f!==!1,c=!!t.$.richText,m=t.$.png?0:Math.min(Math.max(t.$.jpeg|0,0),100),p=e&&e[0],g=!!p&&p.url.startsWith(location.protocol),v=p?p.windowId:t.we,b=p?p.title:"Tab"+(p?p.id:t.he)
;b=t.$.name==="title"?b:n.now().replace(/[-: ]/g,e=>e===" "?"_":"")+"-"+b,b=b.replace(n.ii(),""),b+=m>0?".jpg":".png",
i.Me.captureVisibleTab(v,m>0?{format:"jpeg",quality:m}:{format:"png"},e=>{
if(!e)return t.O&&o.showHUD("Can not capture "+(g?"injected extensions":"this tab")),r(0),i.g()
;l.handleImageUrl(e,null,(u?2:0)|(d?4:0)|(s?1:0),s?e=>{
o.showHUD(a.A(e?"imgCopied":"failCopyingImg",[e===1?"HTML":m?"JPEG":"PNG"])),r(e)
}:r,b,((c||"")+"").includes("name")?b:"",e=>{t.hn[26]({t:"pixel=1&",u:e,f:b,a:!1,m:37,o:{r:t.$.reuse,m:t.$.replace,
p:t.$.position,w:t.$.window}},t.O)})})},l.openImgReq=(e,l)=>{var i,u;let s=e.u;if(/^<svg[\s>]/i.test(s)){if(s=r.oi(s),
!s)return t.O=l,void o.showHUD(a.A("invalidImg"));e.f=e.f||"SVG Image"}if(!n.yn(s))return t.O=l,
void o.showHUD(a.A("invalidImg"));let c=t.Ze.ui+"#!image ";e.f&&(c+="download="+n.ql(e.f)+"&"),
e.r&&(c+="src="+n.ql(e.r)+"&"),e.a!==!1&&(c+="auto=once&"),e.t&&(c+=e.t)
;let m=e.o||n.i(),p={},g=m.s?t.S(s,32768,m.s,p):s,v=(i=p.F)!==null&&i!==void 0?i:m.k,b=(u=m.t)!==null&&u!==void 0?u:!v,h=g!==s
;s=g,f.replaceCmdOptions({opener:!0,reuse:m.r!=null?m.r:e.m&16?-2:-1,replace:m.m,position:m.p,window:m.w}),t.x=1
;let y=v||h?b?r._r(s,v,2):r.K(s.trim().split(n.q),v,2):s;l&&o.safePost(l,{N:11,H:o.ensureInnerCSS(t.O.s),k:1,t:" ",
d:1e-4}),d.openUrlWithActions(typeof y!="string"||!b||y.startsWith(location.protocol)&&!y.startsWith(t.ll)?y:c+y,9)},
l.framesGoBack=(e,t,r)=>{if(e.o.r)return void f.executeCommand(s.ai("reloadTab",n.Sn(e.o)),e.s,0,t,0,e.o.$f&&{c:e.o.$f,
r:e.o.$retry,u:0,w:0});let o=f.hasFallbackOptions(e.o)?(f.replaceCmdOptions(e.o),
f.getRunNextCmdBy(0)):i.g,u=r?r.id:t.s.m,a=e.s,c=d.parseReuse(e.o.reuse||0);if(c){let t=e.o.position
;i.Me.duplicate(u,n=>{if(!n)return o();c===-2&&i.selectTab(u);{let t=f.parseFallbackOptions(e.o)||{};t.reuse=0,
l.framesGoBack({s:a,o:t},null,n)}let r=n.index--,s=t==="end"?-1:d.newTabIndex(n,t,!1,!0)
;s!=null&&s!==r&&i.Me.move(n.id,{index:s===3e4?-1:s},i.g)})}else{let e=a>0?i.Me.goForward:i.Me.goBack
;for(let l=0,t=a>0?a:-a;l<t;l++)e(u,l?i.g:o)}},l.mainFrame=()=>{let e=o.C(),n=e&&e.R
;!n||n===e.d&&t.$.$else&&typeof t.$.$else=="string"?f.runNextCmd(0):l.focusFrame(n,!0,n===e.d?3:5)},l.toggleZoom=e=>{
i.ye(i.Me.getZoom).then(l=>{if(!l)return void e(0);let n=t.x<-4?-t.x:t.x;(t.$.in||t.$.out)&&(n=0,t.x=t.$.in?t.x:-t.x)
;let r,o=t.$.level,u=Math;if(t.$.reset)r=1;else if(o!=null&&!isNaN(+o)||n>4){
let e=u.max(.1,u.min(t.$.min|0||.25,.9)),l=u.max(1.1,u.min(t.$.min|0||5,100))
;r=o==null||isNaN(+o)?n>1e3?1:n/(n>49?100:10):1+o*t.x,r=u.max(e,u.min(r,l))}else{
let e=0,n=9,i=[.25,1/3,.5,2/3,.75,.8,.9,1,1.1,1.25,1.5,1.75,2,2.5,3,4,5]
;for(let t=0,r=0;t<i.length&&(r=Math.abs(i[t]-l))<n;t++)e=t,n=r;r=i[e+t.x<0?0:u.min(e+t.x,i.length-1)]}
Math.abs(r-l)>.005?i.Me.setZoom(r,i.xe(e)):e(0)})},l.framesGoNext=(e,l)=>{let n=t.$.patterns,i=!1
;if(n&&n instanceof Array||(n=n&&typeof n=="string"?n:(i=!0,e?t.z.nextPatterns:t.z.previousPatterns),n=n.split(",")),
i||!t.$.$fmt){let e=[];for(let l of n)if(l=l&&(l+"").trim(),l&&e.push(".#[:".includes(l[0])?l:l.toLowerCase()),
e.length===200)break;n=e,i||(f.overrideOption("patterns",n),f.overrideOption("$fmt",1))}
let r=n.map(e=>Math.max(e.length+12,e.length*4)),o=Math.max.apply(Math,r);f.sendFgCmd(10,!0,f.wrapFallbackOptions({
r:t.$.noRel?"":l,n:e,match:t.$.match,clickable:t.$.clickable,clickableOnHost:t.$.clickableOnHost,exclude:t.$.exclude,
excludeOnHost:t.$.excludeOnHost,evenIf:t.$.evenIf,scroll:t.$.scroll,p:n,l:r,m:o>0&&o<99?o:32,v:t.$.view!==!1,
a:!!t.$.avoidClick}))},l.focusFrame=(e,l,n,i)=>{e.postMessage({N:7,H:l?o.ensureInnerCSS(e.s):null,m:n,k:t.Re,c:0,
f:!i&&t.$&&f.parseFallbackOptions(t.$)||{}})},l.ge=()=>{var e;return(e=t.$.blur)!==null&&e!==void 0?e:t.$.grabFocus},
l.blurInsertOnTabChange=e=>{let r=f.parseFallbackOptions(t.$);r&&r.$then?r.$else=r.$then:r=null;let a=l.ge()
;if(typeof a=="string"){let e=u.Ol(a)||!1;f.overrideOption(a===t.$.blur?"blur":"grabFocus",e),a=e}
let s=e?t.a.get(e.id):null;if(i.g()||!s||a&&a!==!0&&!u.Rl(a,s.d.s.Q?s.d.s.Jl:e.url))return r&&f.runNextCmdBy(1,r),i.g()
;setTimeout(()=>{o.si(t.a.get(t.he),!0).then(()=>{let e=t.a.get(t.he);if(!e||e.b&512)r&&f.runNextCmdBy(1,r);else{
let l=n.Sn({esc:!0});r&&f.copyCmdOptions(l,n.Sn(r)),f.portSendFgCmd(e.d,16,!1,l,-1)}})},17)}});

View File

@@ -0,0 +1,36 @@
"use strict"
;__filename="background/help_dialog.js",define(["require","exports","./store","./utils","./browser","./normalize_urls","./i18n"],(e,t,a,o,r,n,i)=>{
Object.defineProperty(t,"__esModule",{value:!0}),t.ea=t.Dn=void 0;let s,l=null,c=new Map,d=e=>{
let t=e.indexOf("</style>")+8,i=e.slice(0,t),l=e.slice(t).trim();l=l.replace(/\$(\w+)/g,(e,t)=>{var a
;return(a=s.get(t))!==null&&a!==void 0?a:t});let c=o.Sn({homePage:a.Ze.ta,version:a.Ze.aa,
release:n._r("vimium://release"),
reviewPage:(a.el?"https://microsoftedge.microsoft.com/addons/detail/aibcglbfblnogfjhbcmmpobjhnomhcdo":"https://chrome.google.com/webstore/detail/vimium-c-all-by-keyboard/$id/reviews").replace("$id",()=>r.t.runtime.id),
webStore:s.get(a.el?"edgestore":"webstore"),
browserHelp:a.el?"https://support.microsoft.com/help/4531783/microsoft-edge-keyboard-shortcuts":"https://support.google.com/chrome/answer/157179"
});return l=l.replace(/\{\{(\w+)}}/g,(e,t)=>c[t]||e),[i,l]};t.Dn=(e,r)=>{s=a.oa[1],l&&!a.oa[0]||(l=d(a.oa[0]),
a.oa[0]="");let n=new Map,c=!e;r=e||!!r,a.Ln.forEach((e,o)=>{if(/^<v-.\w*>/.test(o))return;let r=e.ra
;e.Rn===38&&e.Vn&&(a.na(e),r=e.ra);let i=t.ea(r),s=n.get(i);s?s.push([o,e]):n.set(i,[[o,e]])})
;let p=e?" "+s.get("cmdList"):"",g=o.Sn({title2:p&&(p.includes(" ",1)?p:p.trimLeft()),
name2:" - "+i.Ce("name").split(" - ")[1],tip:r&&s.get("tipClickToCopy")||"",
lbPad:r?'\n\t\t<tr><td class="HelpTd TdBottom">&#160;</td></tr>':""}),m=l[1].replace(/\{\{(\w+)}}/g,(e,t)=>{var a
;return(a=g[t])!==null&&a!==void 0?a:u(t,n,c,r)});return l[0]+m}
;let includes=(e,t)=>e.includes(t),startsWith=(e,t)=>e.startsWith(t),endsWith=(e,t)=>e.endsWith(t)
;t.ea=e=>(includes(e,"Mode")&&includes(e,".activate")&&(e=includes(e,"ModeTo")?e.replace("ModeTo",""):e.replace("Mode","")),
endsWith(e,"Unhover")?e=e.replace("Unhover","Leave"):endsWith(e,"Goto")?e=e.replace("Goto",""):e==="clearContentSetting"?e=`${e}s`:includes(e,"CS")?e=startsWith(e,"clear")?"clearContentSettings":e.replace("CS","ContentSetting"):includes(e,"vateUrl")?e=e.replace("vateUrl","vateEditUrl"):endsWith(e,"TabSelection")?e=e.replace("TabSelection","Tabs"):e==="quickNext"?e="nextTab":e==="newTab"?e="createTab":e==="closeSomeOtherTabs"?e="closeOtherTabs":e==="simBackspace"?e="simulateBackspace":e==="showHUD"||e==="showHud"?e="showTip":e==="wait"&&(e="blank"),
e);let u=(e,t,a,r)=>{let n=s.get("cmdParams")||" (use *)",i="",l=g[e];for(let e=0;e<l.length;e++){let d=l[e],u=t.get(d)
;if(a&&!u)continue;let g=e<l.length-1&&l[e+1]===1;g&&e++;let m=e<l.length-1?l[e+1]:"a",b=m[0]==="$"?(e++,
m.slice(1)):"",v=-2,T="",$=c.get(d)
;if($||($=[s.get(d).replace("<","&lt;").replace(">","&gt;"),b?n.replace("*",()=>b):" "],c.set(d,$)),u&&u.length>0){
T='\n\t\t<span class="HelpKey">';for(let e=0;e<u.length;e++){if(v>42&&e<u.length-1){
T+=`</span>\n\t<span>+ ${u.length-e} \u2026`;break}let t=u[e];v>=0&&(T+='</span> <span class="HelpKey">'),T+=o.Ur(t[0]),
v+=t[0].length+2}T+="</span>\n\t"}let k=r?$[0]+$[1]:$[0];v<=12?i+=p(g,T,k,r?d:""):(i+=p(g,T,"",""),i+=p(g,"",k,r?d:""))}
return i},p=(e,t,a,o)=>{let r=e?'<tr class="HelpAdv">\n\t':"<tr>\n\t";return a?(r+='<td class="HelpTd HelpKeys">',r+=t,
r+='</td>\n\t<td class="HelpTd HelpCommandInfo">',r+=a,o&&(r+='<span class="HelpCommandName" role="button">(',r+=o,
r+=")</span>\n\t")):(r+='<td class="HelpTd HelpKeys HelpLongKeys" colspan="2">',r+=t),r+"</td>\n</tr>\n"},g={
pageNavigation:["LinkHints.activate",'$button=""/right, touch=false/true/"auto"',"LinkHints.activateOpenInNewTab","LinkHints.activateOpenInNewForegroundTab","LinkHints.activateWithQueue","scrollDown","$keepHover=true|false|auto|never","scrollUp","$keepHover=true|false|auto|never","scrollLeft","scrollRight","scrollToTop","scrollToBottom","scrollToLeft",1,"scrollToRight",1,"scrollPageDown","scrollPageUp","scrollPxDown",1,"scrollPxUp",1,"scrollPxLeft",1,"scrollPxRight",1,"scrollFullPageDown","scrollFullPageUp","scrollSelect",1,'$dir=down|up, position=""|begin|end',"reload","$hard","reloadTab","reloadGivenTab",1,"$hard","zoom","$in, out, reset","zoomIn",1,"zoomOut",1,"zoomReset",1,"toggleUrl",1,"toggleViewSource",1,"copyCurrentUrl","$type=url/title/frame, decoded","copyCurrentTitle","switchFocus",'$flash, select=""/all/all-line/start/end',"focusInput",'$keep, select=""/all/all-line/start/end',"LinkHints.activateCopyLinkUrl","LinkHints.activateCopyLinkText","$join:boolean/string","openCopiedUrlInCurrentTab","openCopiedUrlInNewTab","goUp","$trailingSlash=null/true/false","goToRoot","LinkHints.activateCopyImage",1,"$richText=safe","LinkHints.activateDownloadImage",1,"LinkHints.activateOpenImage",1,"$auto=true","LinkHints.activateDownloadLink",1,"LinkHints.activateOpenIncognito",1,"LinkHints.activateOpenUrl",1,"LinkHints.activateFocus","LinkHints.activateHover",1,"$showUrl=true","LinkHints.activateLeave",1,"LinkHints.unhoverLast",1,"LinkHints.activateSearchLinkText","LinkHints.activateEdit","LinkHints.activateSelect","$visual=true, caret, then:{}","LinkHints.click","$direct=true|element|sel|focus|click|sel,focus,click","simulateBackspace","dispatchEvent",1,'$key="key,keyCode,code",init:{}',"goNext","$sed=true, patterns:string, rel:string, noRel, isNext","goPrevious","nextFrame","mainFrame","parentFrame","enterInsertMode","$key:string, unhover, reset","enterVisualMode","enterVisualLineMode","Marks.activateCreate","$swap","Marks.activate","$prefix=true, swap, mapKey","Marks.clearLocal",1,"Marks.clearGlobal",1,"openUrl","$url:string, urls:string[], reuse=newFg/current/newBg/reuse, incognito, window, position","focusOrLaunch",1,"$url:string, prefix"],
vomnibarCommands:["Vomnibar.activate",'$keyword="", url:boolean/string',"Vomnibar.activateInNewTab","$keyword, url","Vomnibar.activateBookmarks","Vomnibar.activateBookmarksInNewTab","Vomnibar.activateHistory","Vomnibar.activateHistoryInNewTab","Vomnibar.activateTabs","Vomnibar.activateEditUrl",1,"Vomnibar.activateEditUrlInNewTab",1,"LinkHints.activateOpenVomnibar","$url, newtab, then:{}","toggleVomnibarStyle",1,"$style=dark, current"],
historyNavigation:["goBack","$reuse=current/newBg/newFg","goForward","reopenTab",1],
findCommands:["enterFindMode","$last, selected=true","performFind","performBackwardsFind","performAnotherFind","findSelected","$selected=line/any/auto-line","findSelectedBackwards","clearFindHistory",1],
tabManipulation:["nextTab","$blur, wrap=true","previousTab","$blur, wrap=true","firstTab","lastTab","createTab","duplicateTab","removeTab",'$keepWindow=""/always, mayClose, goto=""/left/right/previous',"removeRightTab",1,"restoreTab","restoreGivenTab",1,"discardTab",1,"moveTabToNextWindow",1,"$last, position, right=true, tabs","moveTabToNewWindow",1,"$limited=null/true/false","moveTabToIncognito",1,"joinTabs","sortTabs","$sort=recency|createTime","togglePinTab","toggleMuteTab","$all, other","visitPreviousTab","$blur, acrossWindows, onlyActive","closeTabsOnLeft",1,"$$count=0","closeTabsOnRight",1,"$$count=0","closeOtherTabs",1,'$filter=""/url/url+hash/url+title',"moveTabLeft",1,"$group=true","moveTabRight",1,"$group=true","toggleContentSetting",1,"$type=images","enableContentSettingTemp",1,"clearContentSettings",1,"copyWindowInfo",1,'$format="${title}: ${url}", join:true/string, decoded',"captureTab","toggleWindow",'$states="normal,maximized"'],
misc:["showHelp","autoCopy","$text: string, url, decoded","autoOpen","searchAs","$copied=true, selected=true","searchInAnother","$keyword, reuse=current/newFg/newBg/reuse","showTip","$text:string","openBookmark","$title, path","addBookmark",1,"$folder:string","toggleStyle",1,"$id/selector:string, css: string","toggleLinkHintCharacters",1,"$value:string","editText",1,"$run:string, dom=false","toggleSwitchTemp",1,"$key:string, [value:any]","passNextKey",1,"$expect:string, normal","debugBackground",1,"reset",1,"runKey",1,"$expect:Envs, keys:KeySequence[]|string","sendToExtension",1,"$id:string, data:any, raw","confirm",1,"$ask:string, $then, $else","blank",1]
};g.misc.push("closeDownloadBar",1),a.Tn<117&&g.misc.pop(),a.el&&g.tabManipulation.push("toggleReaderMode",1)});

View File

@@ -0,0 +1,16 @@
"use strict";__filename="background/i18n.js",define(["require","exports","./store","./utils","./browser"],(e,r,n,l,o)=>{
let s,t;Object.defineProperty(r,"__esModule",{value:!0}),r.eo=r.getI18nJson=r.ro=r.no=r.Xl=r.A=r.Ce=r.lo=r.oo=void 0,
r.oo=1;let i=0;r.lo=[],r.Ce=e=>o.t.i18n.getMessage(e),r.A=(e,n)=>{if(i===1){let r=t.get(e)
;return n!=null&&r?r.replace(/\$\d/g,e=>n[+e[1]-1]):r||""}return i||(i=r.getI18nJson("background").then(e=>{t=e,i=1})),
i.then(r.A.bind(null,e,n))},r.Xl=(e,n)=>{if(n.forEach((e,n,l)=>{if(e instanceof Array){let o=e[0]
;l[n]=i===1?t.get(o)||o:r.A(o).then(e=>e||o)}}),n.some(e=>e instanceof Promise)){let l=Promise.all(n)
;return(i===1?l:(i||r.A("NS")).then(()=>l)).then(n=>r.A(e,n))}return r.A(e,n)
},r.no=(e,r)=>e&&e.split(" ").reduce((e,n)=>e||(n.includes("=")?r&&n.startsWith(r)?n.slice(r.length+1):e:n),""),
r.ro=e=>{let n=r.Ce("i18n");return r.no(n,e||"background")||r.Ce("lang1")||"en"},
r.getI18nJson=e=>r.oo===0?(r.oo=Promise.all([l.so("/_locales/en/messages.json"),o.ye(o.t.i18n.getAcceptLanguages)]).then(([e,r])=>{
let n=((e.get("i18nAll")||{}).message||"").split(" "),o=""
;for(o of r||[])if(n.includes(o)||n.includes(o=o.split("-")[0])||(o=""),o)break
;return o?Promise.all([e,l.so(`/_locales/${o}/messages.json`)]):[e]}).then(e=>{s=new Map,r.oo=1
;for(let r of e)for(let[e,n]of r.entries())s.set(e,n.message)
})).then(r.getI18nJson.bind(0,e)):l.so(`/i18n/${r.ro(e)}/${e}.json`),r.eo=()=>{let e=r.lo,n=["$1","$2","$3","$4"]
;for(let r=0;r<124;r++)e.push(o.t.i18n.getMessage(""+r,n));r.eo=null}});

View File

@@ -0,0 +1,163 @@
"use strict"
;__filename="background/key_mappings.js",define(["require","exports","./store","./utils","./utils","./settings","./exclusions"],(e,t,o,a,n,i,r)=>{
Object.defineProperty(t,"__esModule",{value:!0}),t.Xn=t.Yn=t.to=t.ao=t.zn=t.ai=t.io=t.co=t.D=t.Fn=t.uo=t.do=t.mo=void 0
;let l,s,c,u=n.tryParse,d=/<(?!<)(?:.-){0,4}.\w*?(?::i)?>|./g;t.mo=d,t.uo=s,t.do=c;let m,p=!0,b=null;t.Fn=b,
t.D=e=>e.length>1?e==="<escape>"?"esc":e.slice(1,-1):e
;let v=e=>e.length>1?`<${e}>`:e,g=(e,o)=>e.length<=o?null:e.includes(" $",o)||e.includes(" =",o)?t.co(e.slice(o+1),e.includes(" $if=",o)?0:1):e.slice(o+1)
;t.co=(e,t)=>{let o=a.i(),n=0;for(let a of e.split(" ")){let e=a.indexOf("=");if("$#/=_".includes(a[0])){
if(e===0||a==="__proto__"||a[0]==="$"&&!"$if=$key=$desc=$count=$then=$else=$retry=".includes(a.slice(0,e+1))){
t<2&&$("%s option key:",e===0?"Missing":"Unsupported",a);continue}if(a[0]==="#"||a.startsWith("//"))break}
if(e<0)o[a]=!0,n=1;else{let i=a.slice(e+1);a=a.slice(0,e),o[a]=t===2?i&&k(i):t===1?1:i&&u(i),n=1}}
return n===1?t===1?e:o:null};let k=e=>{let t
;return e!=="false"&&(e==="null"?null:e==="true"||((e>="0"?e<":":e[0]==="-")?(t=parseFloat(e))+""===e?t:/^-?(0|[1-9]\d*)(\.\d+)?([eE][+-]\d+)?$/.test(e)?isNaN(t)?u(e):t:e:'{["'.includes(e[0])?u(e):e))
};t.io=(e,o)=>{let n,i=e.po;if(o===void 0&&(o=t.to[e.ra]),n=o.length<4?null:a.Sn(o[3]),
typeof i=="string"&&(i=t.co(i,3)),i){
if(("$count"in i||"count"in i)&&(o[2]===1?delete i.$count:i.$count=i.$count!=null?parseFloat(i.$count)||1:(parseFloat(i.count||1)||1)*(n&&n.$count||1),
delete i.count),i.$if){if(w(i)===!1)return!1;delete i.$if}if(n&&a.Zn(i,n),o[0]===2&&!o[1]&&f(i,e))return!0}else i=n
;return e.po=i,!0};let f=(e,t)=>{
let o=e.mode,n=e.m,r=e.characters,l=e.action,s=e.button,c=r&&typeof r=="string"?a.bo(i.W("c",r)):null,u=typeof o=="string"&&o.endsWith(".queue")
;if(c&&c.length<4)return t.Rn=41,t.Vn=1,t.po=a.Sn({text:"Too few characters for LinkHints",isError:!0}),t.vo=1,!0
;c?e.c=c:"c"in e&&delete e.c,r!=null&&delete e.characters,"action"in e&&delete e.action,"mode"in e&&delete e.mode,
o=l?C[l]:typeof o=="number"?o:typeof o=="string"?C[o.split(".",1)[0]]:null,o=o!=null?o:Math.max(0,n|0),
o>33&&(o=o===65?e.url?64:o:o===40?e.url?e.join!=null?59:42:e.join!=null?57:o:o>79?o-16:o),u&&(o=o<64?o|16:o),
s!=null&&(e.button=typeof s=="string"?s==="right"||s==="auxclick"?2:s.startsWith("mid")||s.startsWith("aux")?1:0:Math.max(0,Math.min(s|0,2))),
e.xy!==void 0&&(e.xy=a.Z(e.xy)),(e.direct||e.target)&&(e.direct=e.direct||e.target,
e.directOptions=e.directOptions||e.targetOptions,delete e.target,delete e.targetOptions,o&=-17),
e.hideHud!=null&&(e.hideHUD||(e.hideHUD=e.hideHud),delete e.hideHud),o!==n&&(e.m=o),o>63&&(t.vo=1)};t.ai=(e,o,n)=>{
n===void 0&&(n=t.to[e]);let i={Rn:n[0],Vn:n[1],ra:e,po:o||(n.length<4?null:a.Sn(n[3])),go:null,vo:n[2]}
;return o&&typeof o=="object"&&!t.io(i,n)?null:i},t.zn=e=>{let o=e.po;return typeof o=="string"&&(t.io(e),o=e.po),o}
;let T=(e,t)=>{let o;return e.length>t&&(o=e.indexOf(" $if=",t))>0&&!/ (#|\/\/)/.test(e.slice(t,o+2))},w=e=>{
let t=e&&typeof e=="object"&&e.$if,a=!1;return typeof t=="string"&&(t=t.toLowerCase(),t[0]==="!"&&(t=t.slice(1).trim(),
a=!0),t=/(?:mac|win|linux)/.test(t)?{sys:t}:/(?:chrom|edg|firefox|safari)/.test(t)?{browser:{c:1,
e:t.includes("edge")&&!t.includes("chrom")?4:1,f:2,s:8}[t[0]]
}:null),t&&typeof t=="object"?t.sys&&t.sys!==o.Ze.ko||t.browser&&!(t.browser&1)||t.before&&t.before.replace("v","")<o.Ze.fo?a:!a:null
};t.ao=(e,t)=>{let o=!0,n=0,i=t;if(e[t].startsWith("#if")){
let n=e[t].slice(4).trim(),i=n.startsWith("{")?u(n):n.split(/#|\/\//)[0];o=i&&w(a.Sn({$if:i}))===!1}
if(o)for(;++i<e.length;)if(e[i].startsWith("#endif")){if(--n<0)break}else e[i].startsWith("#if")&&n++;return i}
;let y=e=>`<${e.slice(1,-1)+":i"}>`,h=e=>{
let n,i,r,u,v,k,f,h,H,x=0,M=new Map,C=new Map,I=null,U=!1,V=null,F=null,N=null,S="color:red";for(m=null,
n=e.replace(/\\(?:\n|\\\n[^\S\n]*)/g,"").replace(/[\t ]+/g," ").split("\n");x<n.length&&(!n[x]||(i=n[x])[0]==="#");x++)i&&i[1]==="!"&&(i=i.slice(2).trim(),
i==="no-check"&&(U=!0));for(p=!U,x>=n.length||n[x]!=="unmapAll"&&n[x]!=="unmapall"||(V=0,x++),r=n.length;x<r;x++){
let e=n[x].trim();if(e<"$"){/^#(?:if|else)\b/.test(e)&&(x=t.ao(n,x),U=!1);continue}
let r=e.split(" ",3),l=r[0],s=r.length>1?r[1]:"",c=r.length>2?r[2]:"",p=l.length+s.length+c.length+2,O=U;switch(l){
case"map":case"map!":case"run":case"run!":let n=l==="run"
;u=void 0,U||(!s||s.length>8&&s.includes("<__proto__>")?$('Unsupported key sequence %c"%s"',S,s||'""',`for "${c||""}"`):l.length===4&&(s.length<2||s.match(d).length!==1||s.slice(-3,-2)===":")?$('"map!" should only be used for a single long key without mode suffix'):M.has(s)&&!T(e,p)?$('Key %c"%s"',S,s,"has been mapped to",M.get(s).ra):c?n||(u=t.to[c])?!(s>="0"&&s<":"||s[0]==="-")||m&&m.has(s[0])?O=!0:$('Invalid key: %c"%s"',S,s,"- a first char can not be '-' or numbers, unless before is `unmap "+s[0]+"`"):$('Command %c"%s"',S,c,"doesn't exist"):$((n?"Lack target when running":"Lack command when mapping")+' %c"%s"',S,s)),
O&&(k=n?t.ai("runKey",g(` keys="${c.replace(/"|\\/g,"\\$&")}"`+e.slice(p),0),u):t.ai(c,g(e,p),u),k&&(M.set(s,k),
l.length===4&&M.set(y(s),k)));break;case"unmapAll":case"unmapall":M=new Map,C=new Map,I=m=F=N=null,V=0,
b&&$("All key mappings is unmapped, but there %s been %c%d error%s%c before this instruction",b.length>1?"have":"has",S,b.length,b.length>1?"s":"","color:auto")
;break;case"mapKey":case"mapkey":
h=s.length>1&&s.slice(-3,-1)===":o",H=h?N:F,U?i=t.D(s):!c||e.length>p&&!/^(#|\/\/|\$if=\{)/.test(e.slice(p).trimLeft())?$("mapKey: need %s source and target keys:",c?"only":"both",e):s.length>1&&!/^<(?!<[^:]|__proto__>)([acms]-){0,4}.\w*(:[a-z])?>$/.test(s)?$("mapKey: a source key should be a single key with an optional mode id:",e):c.length>1&&!/^<(?!<|__proto__>)([a-z]-){0,4}.\w*>$/.test(c)?$("mapKey: a target key should be a single key:",e):(i=t.D(s),
H&&i in H&&H[i]!==t.D(c)?m&&m.has(i[0])&&i.slice(1)===":n"?w(g(e,p))!==!1&&$("`mapKey %s` and `unmap %s...` can not be used at the same time",s,i[0]):T(e,p)?O=!0:$('The key %c"%s"',S,s,"has been mapped to another key:",H[i].length>1?`<${H[i]}>`:H[i]):O=!0),
O&&w(g(e,p))!==!1&&(H||(H=a.i(),h?N=H:F=H),H[i]=t.D(c),(i.length<2||i.slice(-2,-1)!==":")&&((N||(N=a.i()))[i]=t.D(c)))
;break;case"shortcut":case"command":
U||(c?!(s.startsWith("userCustomized")&&s.length>14)&&o.Ze.To.indexOf(s)<0?$('Shortcut %c"%s"',S,s,"is not a valid name"):C.has(s)&&!T(e,p-1-c.length)?$('Shortcut %c"%s"',S,s,"has been configured"):O=!0:$("Lack command name and options in shortcut:",e)),
O&&(f=g(e,p-1-c.length),w(f)!==!1&&(i=L(C,s,f),i&&$('Shortcut %c"%s"',S,s,i)));break;case"env":
U||(c?I&&I.has(s)&&!T(e,p-1-c.length)?$('The environment name %c"%s"',S,s,"has been used"):O=!0:$("Lack conditions in env declaration:",e)),
O&&(f=g(e,p-1-c.length),w(f)!==!1&&(I||(I=new Map)).set(s,f));break;case"unmap":case"unmap!":
!s||c&&!"#$".includes(c[0])?$(`unmap: ${c?"only ":""}needs one mapped key:`,e):w(g(e,l.length+s.length+1))===!1||(v=-1,
V!==0&&(v=(V||(V=_.split(" "))).indexOf(s))>=0&&!(v&1)||M.has(s)||s.length>1&&M.has(y(s))?(M.delete(s),
l.length===6&&s.length>1&&M.delete(y(s)),
v<0||V.splice(v,2)):(s.length===1?s>"/"&&s<":"||s[0]==="-":t.D(s)==="esc"||s==="<c-[>")?(i=t.D(s)+":n",
F&&i in F&&F[i]!=="c-v-"+s?$("`unmap %s...` and `mapKey <%s>` can not be used at the same time",s,i):s.length===1&&m&&m.has(s)?l.length!==6&&$('Number prefix: %c"%s"',S,s,"has been unmapped"):(s.length===1&&(m||(m=new Set)).add(s),
F||(F=a.i()),
F[i]="c-v-"+(s.length===1?s:s[1]==="e"?"esc":"["),s.length>1&&(F[i.slice(0,-1)+"i"]=F[i]))):l.length!==6&&$('Unmap: %c"%s"',S,s,"has not been mapped"))
;break;default:$('Unknown mapping command: %c"%s"',S,l,"in",e)}}
for(let e of o.Ze.To)e.startsWith("user")||C.has(e)||(k=t.ai(e,null))&&C.set(e,k);if(V!==0)for(l=M.size,
V||(V=_.split(" ")),r=V.length,x=0;x<r;x+=2)M.has(V[x])||M.set(V[x],t.ai(V[x+1],null));o.Ln=M,t.uo=s=C,t.do=c=I,o.wo=F,
o.Ke.m=N},L=(e,o,a)=>{let n,i=1,r=(a=a&&typeof a=="string"?t.co(a,3):a)&&a.command||(i=0,
o.startsWith("user")?"":o),l=r?1:0;return l&&r in t.to&&(i&&delete a.command,(n=t.ai(r,a))&&e.set(o,n),l=2),
l<1?'requires a "command" option':l>1?"":"gets an unknown command"},H=e=>{let t=0;for(let o in e){let a=o.length
;if(a>2&&o[a-2]===":")t|=o[a-1]==="i"?2:o[a-1]==="n"?1:4;else{
let n=e[o],i=n.length>1,r=i&&(n==="esc"||n==="c-["||n.startsWith("v-")||(n=n.slice(n.lastIndexOf("-")+1))<"f:"&&n>"f0")
;t|=a>1||i?r?40:8:o.toUpperCase()!==o&&n.toUpperCase()!==n?16:8}}return t},x=e=>{let n=new Map,i=e!==null,s=b!==null
;i&&(o.Nn=t.Fn=b=null,h(e));let c,u=a.on(o.Ln),v=i&&p;i&&(o.yo=(o.wo?H(o.wo):0)|(u.join().includes(":i>")?64:0))
;for(let e=0;e<u.length;e++){let a=u[e],i=a.match(d),r=i.length-1,s=t.D(i[0]),m=n.get(s)
;if(e>=l&&m!==void 0&&(m===1||r===0||typeof m[i[1]]=="object")){o.Ln.delete(a);continue}if(r===0){m!==void 0&&v&&M(a,m),
n.set(s,1);continue}if(m===1){v&&M(i[0],a);continue}let p=m,b=1;for(m||n.set(s,p={});(c=p[t.D(i[b])])&&c!==1&&b<r;)b++,
p=c;if(c!==1){for(c&&v&&M(a,c);b<r;)p=p[t.D(i[b++])]={};p[t.D(i[r])]=1}else v&&M(i.slice(0,b+1),a)}if(m)for(let e of m){
let t=n.get(e);t&&n.set("c-v-"+e,t)}if(u.length>0){n.set("-",2);for(let e=0;e<=9;e++)n.set(""+e,2)}m=null,
i&&(b?b.length>1?(console.group(b.length+" Errors in custom Key mappings:"),b.map(e=>console.log(...e)),
console.groupEnd()):console.log.apply(console,b[0]):s&&console.log("The new key mappings have no errors"))
;let g=r.cn(),k=e=>{for(let t in e){let o=e[t]
;o!==1?t.startsWith("v-")||k(o):(g!==!0&&n.get(t)===1&&(!g||!g.has(t))&&(t.length<2||!n.has(t+":i"))||t.startsWith("v-")&&typeof n.get(t)!="object")&&delete e[t]
}};n.forEach((e,t)=>{t.startsWith("v-")?e===1&&n.delete(t):typeof e=="object"&&k(e)});let f={},T=a.on(n).sort()
;for(let e of T)f[e]=n.get(e);o.Nn=f,e&&I(e)},M=(e,t)=>{let o=[],a=(e,t)=>{for(let[n,i]of Object.entries(t))n=e+v(n),
i===1?o.push(n):a(n,i)};e=typeof e!="string"?e.map(v).join(""):e,t=typeof t!="string"?(a("",t),
o.join(", ")):t.slice(e.length),$('Inactive suffixes: %o under "%s"',t,e)},$=function(){
(b||(t.Fn=b=[])).push([].slice.call(arguments,0))
},_="? showHelp <a-c> previousTab <a-s-c> nextTab d scrollPageDown <c-e> scrollDown f LinkHints.activate <f1> simBackspace <s-f1> switchFocus <f2> switchFocus <f8> enterVisualMode G scrollToBottom gf nextFrame gg scrollToTop gi focusInput gn toggleVomnibarStyle gs toggleViewSource gt nextTab gu goUp gF mainFrame gT previousTab gU goToRoot g0 firstTab g$ lastTab h scrollLeft H goBack i enterInsertMode j scrollDown J previousTab K nextTab k scrollUp l scrollRight L goForward <a-m> toggleMuteTab N performBackwardsFind n performFind <a-n> performAnotherFind o Vomnibar.activate <a-p> togglePinTab r reload R reloadGivenTab <a-r> reloadTab <a-s-r> reopenTab t createTab <a-t> createTab u scrollPageUp V enterVisualLineMode v enterVisualMode <a-v> nextTab W moveTabToNextWindow x removeTab X restoreTab yt duplicateTab yy copyCurrentUrl <c-y> scrollUp zH scrollToLeft zL scrollToRight / enterFindMode ` Marks.activate ^ visitPreviousTab [[ goPrevious ]] goNext << moveTabLeft >> moveTabRight b Vomnibar.activateBookmarks ge Vomnibar.activateUrl gE Vomnibar.activateUrlInNewTab m Marks.activateCreate p openCopiedUrlInCurrentTab yf LinkHints.activateCopyLinkUrl B Vomnibar.activateBookmarksInNewTab F LinkHints.activateOpenInNewTab O Vomnibar.activateInNewTab P openCopiedUrlInNewTab T Vomnibar.activateTabs <a-f> LinkHints.activateWithQueue yv LinkHints.activateSelect yi LinkHints.activateCopyImage"
;t.to={__proto__:null,"LinkHints.activate":[2,0,0,{m:0}],"LinkHints.activateCopyImage":[2,0,0,{m:36}],
"LinkHints.activateCopyLinkText":[2,0,0,{m:40}],"LinkHints.activateCopyLinkUrl":[2,0,0,{m:42}],
"LinkHints.activateDownloadImage":[2,0,0,{m:35}],"LinkHints.activateDownloadLink":[2,0,0,{m:44}],
"LinkHints.activateEdit":[2,0,1,{m:67}],"LinkHints.activateFocus":[2,0,0,{m:34}],"LinkHints.activateHover":[2,0,0,{m:32
}],"LinkHints.activateLeave":[2,0,0,{m:33}],"LinkHints.activateMode":[2,0,0,{m:0}],
"LinkHints.activateModeToCopyImage":[2,0,0,{m:36}],"LinkHints.activateModeToCopyLinkText":[2,0,0,{m:40}],
"LinkHints.activateModeToCopyLinkUrl":[2,0,0,{m:42}],"LinkHints.activateModeToDownloadImage":[2,0,0,{m:35}],
"LinkHints.activateModeToDownloadLink":[2,0,0,{m:44}],"LinkHints.activateModeToEdit":[2,0,1,{m:67}],
"LinkHints.activateModeToFocus":[2,0,1,{m:34}],"LinkHints.activateModeToHover":[2,0,0,{m:32}],
"LinkHints.activateModeToLeave":[2,0,0,{m:33}],"LinkHints.activateModeToOpenImage":[2,0,0,{m:37}],
"LinkHints.activateModeToOpenIncognito":[2,0,0,{m:45}],"LinkHints.activateModeToOpenInNewForegroundTab":[2,0,0,{m:3}],
"LinkHints.activateModeToOpenInNewTab":[2,0,0,{m:2}],"LinkHints.activateModeToOpenUrl":[2,0,0,{m:46}],
"LinkHints.activateModeToOpenVomnibar":[2,0,1,{m:65}],"LinkHints.activateModeToSearchLinkText":[2,0,0,{m:38}],
"LinkHints.activateModeToSelect":[2,0,0,{m:66}],"LinkHints.activateModeToUnhover":[2,0,0,{m:33}],
"LinkHints.activateModeWithQueue":[2,0,0,{m:18}],"LinkHints.activateOpenImage":[2,0,0,{m:37}],
"LinkHints.activateOpenIncognito":[2,0,0,{m:45}],"LinkHints.activateOpenInNewForegroundTab":[2,0,0,{m:3}],
"LinkHints.activateOpenInNewTab":[2,0,0,{m:2}],"LinkHints.activateOpenUrl":[2,0,0,{m:46}],
"LinkHints.activateOpenVomnibar":[2,0,1,{m:65}],"LinkHints.activateSearchLinkText":[2,0,0,{m:38}],
"LinkHints.activateSelect":[2,0,0,{m:66}],"LinkHints.activateUnhover":[2,0,0,{m:33}],
"LinkHints.activateWithQueue":[2,0,0,{m:18}],"LinkHints.click":[2,0,0,{direct:!0,m:0}],"LinkHints.unhoverLast":[7,0,1,{
u:!0}],"Marks.activate":[11,1,0],"Marks.activateCreate":[11,1,0,{mode:"create"}],"Marks.activateCreateMode":[11,1,0,{
mode:"create"}],"Marks.activateGoto":[11,1,0],"Marks.activateGotoMode":[11,1,0],"Marks.clearGlobal":[18,1,1],
"Marks.clearLocal":[18,1,1,{local:!0}],"Vomnibar.activate":[10,1,0],"Vomnibar.activateBookmarks":[10,1,1,{mode:"bookm"
}],"Vomnibar.activateBookmarksInNewTab":[10,1,1,{mode:"bookm",newtab:1}],"Vomnibar.activateEditUrl":[10,1,0,{url:!0}],
"Vomnibar.activateEditUrlInNewTab":[10,1,0,{url:!0,newtab:1}],"Vomnibar.activateHistory":[10,1,1,{mode:"history"}],
"Vomnibar.activateHistoryInNewTab":[10,1,1,{mode:"history",newtab:1}],"Vomnibar.activateInNewTab":[10,1,0,{newtab:1}],
"Vomnibar.activateTabs":[10,1,1,{mode:"tab",newtab:1}],"Vomnibar.activateTabSelection":[10,1,1,{mode:"tab",newtab:1}],
"Vomnibar.activateUrl":[10,1,0,{url:!0}],"Vomnibar.activateUrlInNewTab":[10,1,0,{url:!0,newtab:1}],addBookmark:[13,1,0],
autoCopy:[11,0,1,{copy:!0}],autoOpen:[11,0,1,{o:1}],blank:[0,1,0],captureTab:[15,1,1],clearContentSetting:[16,1,1],
clearContentSettings:[16,1,1],clearCS:[16,1,1],clearFindHistory:[17,1,1],closeDownloadBar:[49,1,1,{all:1}],
closeOtherTabs:[35,1,1,{other:!0,mayConfirm:!0}],closeSomeOtherTabs:[35,1,0],closeTabsOnLeft:[35,1,0,{$count:-1e6,
mayConfirm:!0}],closeTabsOnRight:[35,1,0,{$count:1e6,mayConfirm:!0}],confirm:[1,1,0],copyCurrentTitle:[19,1,1,{
type:"title"}],copyCurrentUrl:[19,1,1],copyWindowInfo:[19,1,0,{type:"window"}],createTab:[20,1,20],
debugBackground:[31,1,1,{reuse:1,url:"chrome://extensions/?id=$id",id_mask:"$id",url_mask:!1}],discardTab:[21,1,0],
dispatchEvent:[9,1,0],duplicateTab:[22,1,20],editText:[13,0,0],enableContentSettingTemp:[42,1,0,{incognito:!0}],
enableCSTemp:[42,1,0,{incognito:!0}],enterFindMode:[6,1,1,{active:!0,selected:"auto-line"}],enterInsertMode:[3,1,1,{
insert:!0}],enterVisualLineMode:[12,1,1,{mode:"line"}],enterVisualMode:[12,1,1],findSelected:[6,1,0,{selected:"line"}],
findSelectedBackwards:[6,1,0,{selected:"line",$count:-1}],firstTab:[24,1,0,{absolute:!0}],focusInput:[12,0,0],
focusOrLaunch:[31,1,1,{reuse:1}],goBack:[18,0,0,{$count:-1}],goForward:[18,0,0],goNext:[2,1,0,{sed:!0}],
goPrevious:[2,1,0,{sed:!0,rel:"prev"}],goToRoot:[25,1,0,{}],goUp:[25,1,0,{$count:-1,type:"frame"}],joinTabs:[26,1,0],
lastTab:[24,1,0,{$count:-1,absolute:!0}],mainFrame:[27,1,1],moveTabLeft:[28,1,0,{$count:-1}],moveTabRight:[28,1,0],
moveTabToIncognito:[29,1,1,{incognito:!0}],moveTabToNewWindow:[29,1,0],moveTabToNextWindow:[30,1,0],newTab:[20,1,20],
nextFrame:[4,1,0],nextTab:[24,1,0],openBookmark:[51,1,0],openCopiedUrlInCurrentTab:[31,1,1,{reuse:0,copied:!0}],
openCopiedUrlInNewTab:[31,1,20,{copied:!0}],openUrl:[31,1,20],parentFrame:[5,1,0],passNextKey:[9,0,0],
performAnotherFind:[6,1,0,{index:"other"}],performBackwardsFind:[6,1,0,{$count:-1}],performFind:[6,1,0],
previousTab:[24,1,0,{$count:-1}],quickNext:[24,1,0],reload:[18,0,0,{r:1}],reloadGivenTab:[32,1,0,{single:!0}],
reloadTab:[32,1,0],removeRightTab:[33,1,0],removeTab:[34,1,0],reopenTab:[36,1,1],reset:[50,1,1],
restoreGivenTab:[37,1,0,{one:!0}],restoreTab:[37,1,25],runKey:[38,1,0],scrollDown:[4,0,0],scrollFullPageDown:[4,0,0,{
view:2}],scrollFullPageUp:[4,0,0,{dir:-1,view:2}],scrollLeft:[4,0,0,{dir:-1,axis:"x"}],scrollPageDown:[4,0,0,{dir:.5,
view:2}],scrollPageUp:[4,0,0,{dir:-.5,view:2}],scrollPxDown:[4,0,0,{view:1}],scrollPxLeft:[4,0,0,{dir:-1,axis:"x",view:1
}],scrollPxRight:[4,0,0,{axis:"x",view:1}],scrollPxUp:[4,0,0,{dir:-1,view:1}],scrollRight:[4,0,0,{axis:"x"}],
scrollSelect:[14,0,0],scrollTo:[4,0,0,{dest:"min"}],scrollToBottom:[4,0,0,{dest:"max"}],scrollToLeft:[4,0,0,{axis:"x",
dest:"min"}],scrollToRight:[4,0,0,{axis:"x",dest:"max"}],scrollToTop:[4,0,0,{dest:"min"}],scrollUp:[4,0,0,{dir:-1}],
searchAs:[11,0,1,{s:1,copied:!0,selected:!0}],searchInAnother:[39,1,1],sendToExtension:[40,1,0],showHelp:[8,1,1],
showHud:[41,1,1],showHUD:[41,1,1],showTip:[41,1,1],simBackspace:[12,0,1,{action:"backspace"}],
simulateBackspace:[12,0,1,{action:"backspace"}],sortTabs:[26,1,0,{sort:"recency",windows:"current"}],
switchFocus:[12,0,1,{action:"switch"}],toggleContentSetting:[42,1,0],toggleCS:[42,1,0],toggleLinkHintCharacters:[7,1,1,{
key:"linkHintCharacters"}],toggleMuteTab:[43,1,1],togglePinTab:[44,1,0],toggleReaderMode:[45,1,1,{reader:!0,reuse:0,
opener:!0}],toggleStyle:[15,0,1],toggleSwitchTemp:[7,1,1],toggleUrl:[45,1,1,{url_mask:!0,reuse:0}],
toggleViewSource:[45,1,1,{opener:!0,viewSource:!0}],toggleVomnibarStyle:[46,1,1],toggleWindow:[52,1,0],
visitPreviousTab:[48,1,0],wait:[0,1,0,{wait:"count"}],zoom:[47,1,0],zoomIn:[47,1,0],zoomOut:[47,1,0,{$count:-1}],
zoomReset:[47,1,0,{reset:!0}]};let C={__proto__:null,newtab:2,queue:18,"cur-queue":16,"new-active":3,"newtab-active":3,
hover:32,"hover-and-scroll":32,unhover:33,leave:33,focus:34,"download-media":35,"download-image":35,image:37,
"open-image":37,media:37,search:38,"search-text":38,copy:40,"copy-text":40,"copy-list":57,"copy-url":42,
"copy-url-list":59,download:44,incognito:45,"open-incognito":45,"open-link":46,"open-url":46,"direct-open":46,
"open-directly":46,"directly-open":46,"open-direct":46,"copy-image":36,"edit-url":64,edit:65,"edit-text":65,input:67,
"focus-input":67,editable:67,"focus-editable":67,visual:66,select:66}
;t.Yn=["character","word","","lineboundary","line","sentence","paragraphboundary","paragraph","documentboundary"],t.Xn={
l:1,h:0,j:9,k:8,$:7,0:6,"}":15,"{":14,")":11,"(":10,w:5,W:5,e:3,b:2,B:2,G:17,gg:16,o:20,a:-2,g:-2,aw:21,as:25,ap:26,
"a}":26,y:31,Y:32,C:33,"c-s-c":36,p:35,P:34,f:55,F:57,n:47,N:46,f1:48,"a-f1":48,v:51,V:52,c:53,"/":54,"?":56,"c-e":62,
"c-y":61,"c-down":62,"c-up":61};let I=e=>{let t="";if(!b&&p&&(t="#!no-check\n"),t){let a=o.pl.keyMappings
;o.pl.keyMappings=void 0;try{i.ho("keyMappings",t+e)}catch(e){}o.pl.keyMappings=a}};o.ul&2&&(x(o.z.keyMappings),
o.G||(t.Xn["m-s-c"]=36)),o.pl.keyMappings=e=>{let t=o.wo,n=o.Ke.m,r=o.Nn;x(e)
;let l=JSON.stringify,s=o.wo,c=o.Ke.m,u=!!r&&l(o.Nn)!==l(r);((t?!s||l(t)!==l(s):!!r&&!!s)||u)&&i.bn({N:9,m:o.wo,t:o.yo,
k:u?o.Nn:null,v:a.nextConfUpdate(0)}),(n?!c||l(n)!==l(c):c)&&i.De({m:c})}});

View File

@@ -0,0 +1,24 @@
"use strict"
;__filename="background/main.js",define(["require","exports","./store","./utils","./browser","./settings","./ports","./key_mappings","./run_commands","./normalize_urls","./parse_urls","./exclusions","./ui_css","./eval_urls","./open_urls","./all_commands","./request_handlers","./tools"],(e,t,s,o,n,l,r,i,u)=>{
Object.defineProperty(t,"__esModule",{value:!0});let c=e=>{let t=s.a.get(s.he);e==="quickNext"&&(e="nextTab");let o=i.uo
;s.ul!==6||(o&&o.get(e)?t==null||t.b&4||s.he<0?u.executeShortcut(e,t):n.tabsGet(s.he,t=>(u.executeShortcut(e,t&&t.status==="complete"?s.a.get(t.id):null),
n.g())):(o&&o.get(e)!==null&&(o.set(e,null),console.log("Shortcut %o has not been configured.",e)),t&&(s.O=t.d),
r.showHUD(`Shortcut "${e}" has not been configured.`)))};s.os=()=>{if(s.ul===6){
if(s.os)return o.ns(l.vl.then.bind(l.vl,s.os)),void(s.os=null);s.Nn||(l.gl("keyMappings"),s.G||(i.Xn["m-s-c"]=36)),
l.gl("exclusionListenHash"),l.gl("vomnibarOptions"),l.gl("autoDarkMode"),l.gl("autoReduceMotion"),
n.t.runtime.onConnectExternal.addListener(e=>{let t,{sender:o,name:n}=e
;if(o&&r.isExtIdAllowed(o)&&n.startsWith("vimium-c.")&&(t=n.split("@")).length>1){
if(t[1]!==s.Ze.GitVer)return e.postMessage({N:2,t:1}),void e.disconnect();r.OnConnect(e,t[0].slice(9)|1024)
}else e.disconnect()}),n.t.extension.isAllowedIncognitoAccess(e=>{s.Ze.ls=e===!1})}},
n.t.runtime.onConnect.addListener(e=>{if(s.ul===6)return r.OnConnect(e,e.name|0);e.disconnect()}),
n.t.commands.onCommand.addListener(c),l.vl.then(()=>{
l.gl("extAllowList"),n.t.runtime.onMessageExternal.addListener((e,t,o)=>{if(r.isExtIdAllowed(t)){
if(typeof e=="string")u.executeExternalCmd({command:e},t);else if(typeof e=="object"&&e)switch(e.handler){
case"shortcut":let n=e.shortcut;n&&c(n+"");break;case"id":return void o({name:"Vimium C",host:location.host,
shortcuts:!0,injector:s.Ze.is,version:s.Ze.fo});case 99:return void o({s:e.scripts?s.Ze.ol:null,version:s.Ze.fo,host:"",
h:"@"+s.Ze.GitVer});case"command":u.executeExternalCmd(e,t)}}else o(!1)}),l.gl("vomnibarPage",null),
l.gl("searchUrl",null)}),n.Me.onReplaced.addListener((e,t)=>{let o=s.a.get(t);if(s.us===t&&(s.us=e),o){s.a.delete(t),
s.a.set(e,o);for(let t of o.J)t.s.m=e;o.d.s.m=e;for(let o of s.Fe)o.s.m===t&&(o.s.m=e)}}),s.xl.er=(e,t,o)=>{
setTimeout(()=>{s.xl.er(e,t,o)},210)},s.ul=s.ul|4,s.os(),n.t.scripting.registerContentScripts([{id:"extend_click",
js:["content/extend_click_vc.js"],matches:["<all_urls>"],allFrames:!0,runAt:"document_start",world:"MAIN"}]).catch(e=>{
(e+"").includes("Duplicate script ID")||console.log("Can not register extend_click:",e)})});

View File

@@ -0,0 +1,79 @@
"use strict";__filename="background/normalize_urls.js",define(["require","exports","./store","./utils"],(e,t,r,l)=>{
Object.defineProperty(t,"__esModule",{value:!0
}),t.oi=t.fn=t.fi=t.Kl=t.mi=t.K=t.gn=t.di=t.pi=t._r=t.ci=t.wi=t.dr=t.gi=t.$i=t.bi=t.hi=t.vi=t.es=t.xi=t.Ei=void 0,
t.Ei=/^([^:]+(:[^:]+)?@)?([^:]+|\[[^\]]+])(:\d{2,5})?$/,t.xi=/^(?:ext|web)\+[a-z]+:/,
t.es=/^"[^"]*"$|^'[^']*'$|^\u201c[^\u201d]*\u201d$/,t.vi=/\$([sS$])?(?:\{([^}]*)})?/g,t.hi=/\$([+-]?\d+|\$)/g,
t.bi=/^[\w\x80-\ufffd]{1,8}!?>/,t.$i=/<[\w\x80-\ufffd]{1,8}!?$/,t.gi=/\|([\w\x80-\ufffd]{1,8}|(,|%2[cC])[\w,-]*)$/
;let i=["blank","newtab","options","show"],n="options.html",s={__proto__:null,about:"",changelog:"/RELEASE-NOTES.md",
help:"/wiki",home:"",license:"/LICENSE.txt",option:n,permissions:"/PRIVACY-POLICY.md#permissions-required",
policy:"/PRIVACY-POLICY.md",action:n,popup:n,preference:n,preferences:n,privacy:"/PRIVACY-POLICY.md#privacy-policy",
profile:n,profiles:n,readme:"#readme",release:"/RELEASE-NOTES.md",releases:"/RELEASE-NOTES.md",
"release-notes":"/RELEASE-NOTES.md",setting:n,settings:n,wiki:"/wiki"};t.dr=0,t.wi=!1,t.ci=()=>{t.dr=0},
t._r=(e,i,n,s)=>{if(e=e.trim(),t.dr=0,l._i(e))return e=e.replace(/\xa0/g," "),l.Gl(),e;let o,m,d,p,c=-1,w=0,g=!1
;d=e.replace(/[\n\r]+[\t \xa0]*/g,"").replace(/\xa0/g," ");let $=d[0]==='"'&&d.endsWith('"'),b=d
;return e=d=$?d.slice(1,-1):d,
/^[A-Za-z]:(?:[\\/](?![:*?"<>|/])|$)|^\/(?:Users|home|root)\/[^:*?"<>|/]+/.test(e)||e.startsWith("\\\\")&&e.length>3?f(e):((o=(e=d.toLowerCase()).indexOf(" ")+1||e.indexOf("\t")+1)>1&&(e=e.slice(0,o-1)),
(o=e.indexOf(":"))===0?c=4:o!==-1&&l.an.test(e)?e.startsWith("vimium:")?(c=3,n|=0,e=d.slice(9),
n<-1||!e?d="vimium://"+e:n===-1||$||!(d=r.Fr(e,n,null,(s||0)+1))?d=t.gn(e,!1,n):typeof d!="string"&&(c=5)):t.xi.test(e)?c=0:((m=e.indexOf("/",o+3))===-1?e.length<d.length:e.charCodeAt(m+1)<33)?c=4:/[^a-z]/.test(e.slice(0,o))?c=(o=e.charCodeAt(o+3))>32&&o!==47?0:4:e.startsWith("file:")?c=0:e.startsWith("chrome:")?c=e.length<d.length&&e.includes("/")?4:0:r.el&&e.startsWith("read:")?c=!/^read:\/\/([a-z]+)_([.\da-z\-]+)(?:_(\d+))?\/\?url=\1%3a%2f%2f\2(%3a\3)?(%2f|$)/.test(e)||e.length<d.length?4:0:e=e.slice(o+3,m>=0?m:void 0):(o!==-1&&e.lastIndexOf("/",o)<0&&(c=t.pi(d.toLowerCase(),o,e.length%d.length)),
w=2,
m=d.length,c===-1&&e.startsWith("//")&&(e=e.slice(2),w=1,m-=2),c!==-1?e==="about:blank/"&&(d="about:blank"):(o=e.indexOf("/"))<=0?(o===0||e.length<m)&&(c=4):e.length>=m||e.charCodeAt(o+1)>32?(g=e.length>o+1,
e=e.slice(0,o)):c=4),c===-1&&e.lastIndexOf("%")>=0&&(e=l.rl(e)).includes("/")&&(c=4),
c===-1&&e.startsWith(".")&&(e=e.slice(1)),
c!==-1||((p=t.Ei.exec(e))?(e=p[3]).endsWith("]")?c=l.kn(e,6)?w:4:e==="localhost"||e.endsWith(".localhost")||l.kn(e,4)||p[4]&&g?c=w:(o=e.lastIndexOf("."))<0||(c=l.zi(e.slice(o+1),!1,e))===0?(m=e.length-o-1,
c=w!==2&&(o<0||(w!==0?m>=3&&m<=5:m>=2&&m<=14)&&!/[^a-z]/.test(e.slice(o+1)))||u(e,p[4])>0?w:4):c=/[^.\da-z_\-]|xn--|^-/.test(e)?e.startsWith("xn--")||e.includes(".xn--")||(e.length===o+3||c!==1?!w:u(e,p[4]))?w:4:w!==2||g?w:e.endsWith(".so")&&e.startsWith("lib")&&e.indexOf(".")===e.length-3?4:p[2]||p[4]||!p[1]||/^ftps?(\b|_)/.test(e)?2:e.startsWith("mail")||e.indexOf(".mail")>0||(m=e.indexOf("."))===o?4:e.indexOf(".",++m)!==o?2:e.length===o+3&&c===1&&l.zi(e.slice(m,o),!0)?4:2:(c=4,
e.length===d.length&&l.kn(e=`[${e}]`,6)&&(d=e,c=2))),l.Gl(),s||(t.wi=!1),t.dr=c,
c===0?/^extension:\/\//i.test(d)?"chrome-"+d:d:c===4?t.K(b.split(l.q),i,n,s):c<=2?c===2&&a(d,e)||(u(e,p&&p[4])===2?"https:":"http:")+(c===2?"//":"")+d:d)
};let u=(e,t)=>{let l=t&&r.Wt.Qt.get(e+t)||r.Wt.Qt.get(e);return l?l.Yt?2:1:0},a=(e,t)=>{
if(/^(?!www\.)[a-z\d-]+\.([a-z]{3}(\.[a-z]{2})?|[a-z]{2})\/?$/i.test(e)&&!u(t)){let l=r.Wt.Qt.get("www."+t)
;if(l)return`${l.Yt?"https":"http"}://www.${e.toLowerCase().replace("/","")}/`}return""};t.pi=(e,r,i)=>{
let n=e.substr(r+1,1)==="/";if(e.substr(r+1,1)==="%")return 4;switch(e.slice(0,r)){case"about":
return n?4:i>0||e.includes("@",r)?-1:0;case"blob":case"view-source":
return(e=e.slice(r+1)).startsWith("blob:")||e.startsWith("view-source:")?4:(t._r(e,null,-2,1),t.dr<=2?0:4);case"data":
return n?4:(r=e.indexOf(",",r))<0||i>0&&i<r?-1:0;case"file":return 0;case"filesystem":return e=e.slice(r+1),
l.an.test(e)?(t._r(e,null,-2,1),t.dr===0&&/[^/]\/(?:persistent|temporary)(?:\/|$)/.test(e)?0:4):4;case"magnet":
return e[r+1]!=="?"?-1:0;case"mailto":return n?4:(r=e.indexOf("/",r))>0&&e.lastIndexOf("?",r)<0?-1:0;case"tel":
return/\d/.test(e)?0:4;default:return t.xi.test(e)?0:n?4:-1}},t.di=e=>{
let t=e.startsWith("filesystem:")?11:e.startsWith("view-source:")?12:0;return t?e.slice(t):e},t.gn=(e,t,l)=>{
let n,u,a="",o="",f=e.trim();if(!f)return t?"":r.ll+"pages/";if((n=f.indexOf(" ")+1)&&(o=f.slice(n).trim(),
f=f.slice(0,n-1)),(n=f.search(/[\/#?]/)+1)&&(a=f.slice(n-1).trim(),f=f.slice(0,n-1)),f==="display"&&(f="show"),
!/\.\w+$/.test(f))if(f=f.toLowerCase(),
(u=s[f])!=null)(f==="release"||f==="releases")&&(u+="#v"+r.Ze.fo.replace(/\D/g,"")),
u=f=u&&u[0]!=="/"&&u[0]!=="#"?u:r.Ze.ta+(u.includes(".")?"/blob/master"+u:u);else{if(f==="newtab")return r.newTabUrl_f
;if(f[0]==="/"||i.indexOf(f)>=0)f+=".html";else{if(l===1||l===-1)return"vimium://"+e.trim()
;f="show.html#!url vimium://"+f}}return t||u&&u.includes("://")||(f=r.ll+(f[0]==="/"?f.slice(1):"pages/"+f)),a&&(f+=a),
f+(o&&(f.includes("#")?" ":"#!")+o)},t.K=(e,l,i,n)=>{let s=r.Hl.map.get(l=l||"~"),u=s?t.Kl(e,s.Jl,s.u):e.join(" ")
;return n||(t.wi=!!s&&l!=="~"),l!=="~"?t._r(u,null,i,(n||0)+1):(t.dr=4,u)
},t.mi=(e,t)=>e.lastIndexOf("://",21)<0||l._i(e)||e.startsWith("vimium://run")||e.startsWith("data:")||!/\?|#.*=/.test(e.slice(0,t))?"%20":"+",
t.Kl=(e,i,n,s)=>{let u,a=0;return i=e.length===0&&n?n:i.replace(t.vi,(n,o,f,m)=>{let d
;if(n.endsWith("$")||!o&&!f)return"$";o||(/^s:/i.test(f)?(o=f[0],f=f===null||f===void 0?void 0:f.slice(2)):o="s")
;let p=e,c=f?t.gi.exec(f):null;c&&f.charAt(c.index-1)!=="\\"?f=f.slice(0,c.index):c=null
;let w=f?t.$i.exec(f)||t.bi.exec(f):null
;return!w||w[0][0]==="<"&&f.charAt(w.index-1)==="\\"||(f=w[0][0]==="<"?f.slice(0,w.index):f.slice(w[0].length),
p=r.Fl(w[0][0]==="<"?w[0].slice(1):w[0].slice(0,-1)).split(" ")),o==="S"?(d=p,o=" "):(d=p===e&&u?u:p.map(l.ql),
p===e&&!u&&(u=d),o=t.mi(i,m)),f&&f.includes("\\")&&(f=f.replace(/\\([\\<>|])/g,"$1")),
f=d.length===0?"":f&&f.includes("$")?f.replace(t.hi,(e,t)=>{if(t==="$")return"$";let r=parseInt(t,10)
;if(!r)return d.join(o);if(r<0)r+=d.length+1;else if(t[0]==="+")return d.slice(r-1).join(o);return d[r-1]||""
}):d.join(f!=null?f:o),c&&(f=r.S(f,0,l.rl(c[0].slice(1)))),s!=null&&f&&(s.push(m+=a,m+f.length),a+=f.length-n.length),f
}),l.Gl(),s==null?i:{Jl:i,jr:s}},t.fi=e=>{let r=e.indexOf(":"),l=r;if(r<=0)return e
;if(t.xi.test(e.slice(0,r+1).toLowerCase()))return e.slice(0,r).toLowerCase()+e.slice(r)
;if(e.substr(r,3)==="://")if(r=e.indexOf("/",r+3),
r<0)r=l,l=-1;else if(r===7&&e.slice(0,4).toLowerCase()==="file")return r=e.charAt(9)===":"?3:e.substr(9,3).toLowerCase()==="%3a"?5:0,
"file:///"+(r?e[8].toUpperCase()+":/":"")+e.slice(r+8);let i=e.slice(0,r),n=i.toLowerCase()
;return l===-1&&/^(file|ftp|https?|rt[ms]p|wss?)$/.test(i)&&(e+="/"),i!==n?n+e.slice(r):e};let o=e=>{let t=l.rl(e)
;return/[^\w.$+-\x80-\ufffd]|\s/.test(t)?e.replace(/%24/g,"$"):t},f=e=>{
if((e=e.replace(/\\/g,"/")).startsWith("//")&&!e.startsWith("//./")){let t=(e=e.slice(2)).split("/",1)[0]
;t.includes("%")&&(e=o(t)+e.slice(t.length)),e.includes("/")||(e+="/")}else e.startsWith("//")&&(e=e.slice(4)),
e[1]===":"&&(e=e[0].toUpperCase()+":/"+e.slice(3)),e[0]!=="/"&&(e="/"+e);if(!/[%?#&\s]/.test(e))return l.Gl(),
"file://"+e;let t="";if(e.indexOf("#")){let r=/\.[A-Za-z\d]{1,4}(\?[^#]*)?#/.exec(e)
;r?(t=e.slice(r.index+r[0].length-1),
t=t.includes("=")||!t.includes("/")||t.includes(":~:")?r[1]?r[1]+t:t:""):(r=/#(\w+=|:~:)/.exec(e))&&(t=e.slice(r.index)),
t&&(e=e.slice(0,-t.length))}
return e="file://"+e.replace(/[?#&\s]/g,encodeURIComponent)+t.replace(/\s/g,encodeURIComponent),l.Gl(),e};t.fn=(e,t)=>{
if(r.G>1&&e.startsWith("file://")){let r=e.indexOf("/",7);if(r<0||r===e.length-1)return r<0?e+"/":e
;let i=r===7?e.charAt(9)===":"?3:e.substr(9,3).toLowerCase()==="%3a"?5:0:0,n=i?e[8].toUpperCase()+":":r>7?"\\\\"+o(e.slice(7,r)):"",s=e.slice(i?i+7:r>7?r:0),u=t?/[?#]/.exec(t):null,a=!t||u?/[?#]/.exec(s):null,f=a?a.index:0
;if(f&&u){let e=l.rl(t.slice(t.indexOf("/",i?9:r>7?8:0),u.index));e===s.slice(0,e.length)&&(f=e.length)}
let m=f?s.slice(f):"";s=f?s.slice(0,f):s,s=s.replace(/\/+/g,"\\"),e=n+s+m}return e},t.oi=e=>{let t
;return e.slice(0,100).toLowerCase().includes("xmlns")||(e=e.replace(/<svg /i,'$&xmlns="http://www.w3.org/2000/svg"')),
t=e.replace(/<(?!\/)[^>]+>/g,e=>e.replace(/\b(id|class|aria-[\w-]+)(\="[^"]+")? ?/g,"")),
t=t.replace(/<\/?[A-Z:]+(?=\s|>)/g,e=>e.toLowerCase()),t=t.replace(/(?:[%?#]|[^\S ])+/g,encodeURIComponent),
"data:image/svg+xml,"+t}});

View File

@@ -0,0 +1,158 @@
"use strict"
;__filename="background/open_urls.js",define(["require","exports","./store","./utils","./browser","./normalize_urls","./parse_urls","./ports","./exclusions","./i18n","./key_mappings","./run_commands","./tools","./clipboard","./filter_tabs"],(l,e,n,i,t,r,u,o,s,d,f,a,v,p,m)=>{
Object.defineProperty(e,"__esModule",{value:!0
}),e.Je=e.openUrlReq=e.openUrl=e.goToNextUrl=e.openUrlWithActions=e.openShowPage=e.openJSUrl=e.parseReuse=e.yi=e.parseOpenPageUrlOptions=e.preferLastWnd=e.newTabIndex=void 0
;let c={current:0,reuse:1,newwnd:2,frame:3,newtab:-1,newbg:-2,lastwndfg:-5,lastwnd:-5,lastwndbg:-6,iflastwnd:-7,
reuseincurwnd:-3,lastwndbgbg:-8,lastwndbginactive:-8}
;e.newTabIndex=(l,e,n,i)=>e==="before"||e==="left"||e==="prev"||e==="previous"?l.index:e==="after"||e==="next"||e==="right"?l.index+1:e==="default"?void 0:i!==!1&&t.getGroupId(l)!=null?e==="start"||e==="begin"?l.index:e==="end"?void 0:l.index+1:e==="start"||e==="begin"?0:e==="end"?n?3e4:void 0:l.index+1,
e.preferLastWnd=l=>l.find(l=>l.id===n.jn)||l[l.length-1],e.parseOpenPageUrlOptions=(l,e)=>({d:(e=l.decoded,
e!=null?e:l.decode),g:l.group,i:l.incognito,k:l.keyword,m:l.replace,o:l.opener,p:l.position,r:l.reuse,s:p.T(l),
t:l.testUrl,w:l.window})
;let w=l=>typeof l=="boolean"?l:l?l==="force"||(l==="reverse"?n.de!==2:l==="same"||l==="keep"?n.de===2:null):null,g=l=>l==="popup"||l==="normal"?l:void 0
;e.yi=(l,e)=>{l=l.slice(0,128).split("?")[0].replace(/\\/g,"/")
;let i=n.G>1&&/\/globalroot\/device\/condrv|\bdevice\/condrv\/kernelconnect/.test(l);return i&&(n.O=e||n.O,
o.showHUD(d.A("harmfulURL"))),i};let b=(l,u,s,d)=>{i.Gl();let v=l=>{a.replaceCmdOptions(u),a.overrideCmdOptions({urls:l,
url:null,url_f:null,copied:null,keyword:null},!0)};switch(d[1]){case 1:o.showHUD(d[0],15),a.runNextCmdBy(1,u);break
;case 5:case 7:v(null),d[1]===7||u.$p?l=0:a.overrideOption("$p",1),e.openUrlWithActions(r._r(d[0]),l,!1,s);break;case 4:
l>=3&&d[0]&&a.runNextCmdBy(1,u);break;case 9:a.runNextCmdBy(1,u);break;case 3:o.showHUD(d[0],1),a.runNextCmdBy(0,u)
;break;case 6:let p=d[0],m=n.he;if(p[0]==="openUrls"){let e=p.slice(1),n=[]
;for(let i of e)typeof i=="string"||i[1]!==5&&i[1]!==7||(i=r._r(d[0],null,l)),
typeof i!="string"?Promise.resolve(i).then(e=>{e[1]===6&&e[0][0]==="openUrls"||b(l,u,s,e)}):n.push(i)
;return void(n.length>0&&(s&&s.length>0?(v(n),M(s)):t.getCurTab(l=>{v(n),M(l)})))}setTimeout(()=>{
let l=n.a.get(m),e=l?l.d:null,t=i.Sn({keys:[p[1]]});n.ki=null,p[0]==="run1"?n.I(p[1],e,{c:u.$f,r:u.$retry,u:0,w:0
}):a.executeCommand(f.ai("runKey",t),1,0,e,0,null)},0)}},y=(l,e,n)=>{l?a.runNextOnTabLoaded(e,n):a.runNextCmdBy(0,e)
},h=(l,e,i,r,u)=>{let o=e=>(y(e,l,e),t.g());if(u){if(u.length>0&&u[0].incognito&&t.w(i))return void t.tabsCreate({url:i
},o)}else if(t.w(i)&&r!==!0)return void t.getCurTab(h.bind(null,l,e,i,!0));if(e===3&&n.O&&n.O.s.Q){let e={id:n.O.s.m}
;return a.sendFgCmd(18,!1,{r:1,u:i}),void setTimeout(()=>y(!0,l,e),100)}u?t.tabsUpdate(u[0].id,{url:i},o):t.tabsUpdate({
url:i},o)},k=(l,e,n,i,r,u)=>{t.makeWindow({url:l,focused:e,incognito:n,
type:typeof l=="string"||l.length===1?g(i.window):void 0,left:r.left,top:r.top,width:r.width,height:r.height
},r.state!=null?r.state:u&&u.state!=="minimized"?u.state:"",l=>{y(l,i,l&&l.tabs[0])})},$=(l,i,r,u,o)=>{
let s=i!==-2,d=u?u.windowId:n.we,f=o.find(l=>l.id===d),a=f!=null&&f.incognito
;if(!r.window&&i!==2&&(a||(o=o.filter(l=>l.incognito&&l.type==="normal")).length>0)){let i={url:l[0],active:s,
windowId:a?d:e.preferLastWnd(o).id};if(a){let l=r.opener===!0;i.index=e.newTabIndex(u,r.position,l,r.group),
l&&(i.openerTabId=u.id)}t.openMultiTabs(i,n.x,!0,l,a&&r.group,u,l=>{!a&&s&&t.selectWnd(l),y(l,r,l)})
}else k(l,!0,!0,r,r,f)}
;e.parseReuse=l=>l==null?-1:typeof l!="string"||/^-?\d+$/.test(l)?typeof l=="boolean"?l?1:-1:isNaN(l=+l&&0|+l)||l>3||l<-8?-1:l:(l=l.toLowerCase().replace("window","wnd").replace(/-/g,""))in c?c[l]:-1
;let _=(l,e,r)=>{
let u=e&&e.length>0?t.getTabUrl(e[0]):"",o=[r!==!0?r===!1?"":r:(/[%$]s/i.exec(l)||["${url_mask}"])[0],n.$.host_mask||n.$.host_mark,n.$.tabid_mask||n.$.tabId_mask||n.$.tabid_mark||n.$.tabId_mark,n.$.title_mask||n.$.title_mark,n.$.id_mask||n.$.id_mark||n.$.id_marker],s=[]
;for(let n=0;n<o.length;n++){let r=o[n]!=null?o[n]+"":"",d=r?l.indexOf(r):-1;if(d>=0){let l=d+r.length;for(let l of s);
s.push([d,l,n===0?/^[%$]S|^\$\{S:/.test(r)?u:i.ql(u):n===1?i.ql(new URL(u).host):n===2?u&&""+e[0].id:n===3?u&&""+i.ql(e[0].title):t.t.runtime.id])
}}if(s.length){let e="",n=0;s.sort((l,e)=>l[0]-e[0]);for(let i of s)e=e+l.slice(n,i[0])+i[2],n=i[1];l=e+l.slice(n)}
return l},I=(l,i,r,u)=>{let o,s=w(u.incognito);o=(i>-4?new Promise(l=>{t.getCurWnd(!1,e=>(l(e||null),t.g()))
}):m.wn(g(u.window),!0,s,n.we)).then(l=>l&&new Promise(e=>{t.Me.query({active:!0,windowId:l.id},n=>(l.tabs=n,e(l),
t.g()))})),o.then(o=>{let d=!!o&&!o.focused&&o.id!==n.we,f=i===-7&&!d;if(!o||!d&&(i!==-7||s!=null&&o.incognito!==!!s)){
if(i===-7&&a.runNextCmdBy(0,u))return;return void k(l,i>-8,s!=null?!!s:r,u,u,o)}
let v=o.tabs&&o.tabs.length>0?t.selectFrom(o.tabs):null;t.openMultiTabs({url:l[0],active:i>-6||f,windowId:o.id,
pinned:!!u.pinned,index:v?e.newTabIndex(v,u.position,!1,u.group):void 0
},n.x,!!u.incognito&&typeof u.incognito=="string",l,u.group,v,l=>{i>-6?d&&t.selectWnd(l):l&&i>-8&&!f&&t.selectTab(l.id),
y(l,u,i>-6&&i!==-2&&l)})})},P=(l,i,r,u)=>{
let o=u&&u[0],s=!!o&&o.incognito||n.de===2,d=i!==-2&&i!==-8,f=i===2||i<-3||!!r.window,a=w(r.incognito),v=a!=null&&typeof r.incognito=="string"
;if(!v&&l.some(t.w))f=s||f;else if(s)f=a===!1||f;else if(a&&i>-4)return void t.Be.getAll($.bind(null,l,i,r,o))
;if(f)return void I(l,i,s,r);let p=r.opener&&o?o.id:void 0,m={url:l[0],active:d,windowId:o?o.windowId:void 0,
openerTabId:p,pinned:!!r.pinned,index:o?e.newTabIndex(o,r.position,p!=null,r.group):void 0}
;t.openMultiTabs(m,n.x,v,l,r.group,o,l=>{d&&l&&t.selectWndIfNeed(l),y(l,r,d&&l)})},T=(l,i,r,u,o,d)=>{
let f,v=r?typeof r=="string"?s.Ol(r):typeof r=="object"&&r.t&&r.v?r:null:null,p=i===2||i===1,c=i===1||i===-3,b=c&&o.q||{},h=g(c?b.w:u.window),k=w(c?b.i:u.incognito),$=(c?b.g:u.group)===!0
;n.x=1,c?(b.m=null,b.g=$):(a.overrideOption("group",$,u),u.replace!=null&&a.overrideOption("replace",v,u)),
f=i<-3&&v?m.wn(h,i===-7,k,n.we).then(l=>!l||l instanceof Array?null:l):Promise.resolve(!p&&n.we>=0?{id:n.we}:null),
Promise.all([f,!$||d?null:new Promise(l=>{t.getCurTab(e=>{d=e||[],l()})})]).then(([l,e])=>v&&(l||p)?new Promise(e=>{
t.Me.query(l?{windowId:l.id}:{windowType:h||void 0},l=>{
let r=k!=null?!k:i>-4?n.de!==2:-2,u=(l||[]).filter(l=>s.Rl(v,l.url)&&l.incognito!==r);if($&&u.length>0&&d.length>0){
let e=t.getGroupId(d[0]);l&&(u=u.filter(l=>t.getGroupId(l)===e))}if(u.sort((l,e)=>{let i=n.ze.get(e.id),t=n.ze.get(l.id)
;return t?i?i-t:1:i?-1:e.id-l.id}),i===1){let l=u.filter(l=>l.windowId===n.we);u=l.length>0?l:u}
return e(u.length?u[0]:null),t.g()})}):null).then(r=>{
if(r==null||r.id===n.he&&!c)c?e.Je(o):!a.runNextCmdBy(0,u)&&(d?P([l],i,u,d):t.getCurTab(P.bind(null,[l],i,u)));else if(n.Ii&&r.url.startsWith(n.Ze.ui))x(c?o.f||{}:u,r);else{
let e=i!==-2&&i!==-8,s=r.windowId!==n.we&&i>-6;t.tabsUpdate(r.id,{url:l},l=>(l&&(e&&(t.selectTab(l.id),l.active=!0),
s&&t.selectWnd(l)),y(l,c?o.f||{}:u,i!==-2&&i>-6&&l),t.g()))}})};e.openJSUrl=(l,e,r,u)=>{var s
;if(/^(void|\(void\))? ?(0|\(0\))?;?$/.test(l.slice(11).trim()))a.runNextCmdBy(1,e);else{if(!r&&n.O){
if(u===0&&(n.O=((s=o.C())===null||s===void 0?void 0:s.R)||n.O),o.safePost(n.O,{N:5,u:l,f:a.parseFallbackOptions(e)
}))return;if(u!==-1)return void a.runNextCmdBy(0,e);n.O=null}i.rl(l.slice(11)),Promise.resolve().then(l=>{
l===void 0&&r&&r(),y(!!l,e,null)}),t.g()}},e.openShowPage=(l,i,r,u)=>{let o=n.Ze.ui
;if(l.length<o.length+3||!l.startsWith(o))return!1
;if(u===void 0)return t.getCurTab(n=>(e.openShowPage(l,n&&n.length>0||i===-2?i:-1,r,n&&n[0]||null),t.g())),!0
;l=l.slice(o.length);let s=u?u.incognito:n.de===2
;l.startsWith("#!image ")&&s&&(l="#!image incognito=1&"+l.slice(8).trim());let d=[l,null,0]
;return n.Ii=d[1]=()=>(clearTimeout(d[2]),n.Ii=null,d[0]),d[2]=setTimeout(()=>{
d[0]="#!url vimium://error (vimium://show: sorry, the info has expired.)",d[2]=setTimeout(()=>{n.Ii===d[1]&&(n.Ii=null),
d[0]="",d[1]=null},2e3)},1200),n.x=1,i===0||i===3||s&&(i===-2||i===-1)?s?t.tabsCreate({url:o,active:i!==-2},l=>{y(l,r,l)
}):x(r,u):(r.incognito=!1,i===1||i===-3?T(l,i,r.replace,null,{u:o,a:r.parent,p:r.prefix,q:e.parseOpenPageUrlOptions(r),
f:a.parseFallbackOptions(r)},u?[u]:void 0):P([o],i,r,u?[u]:void 0)),!0};let x=(l,e)=>{t.tabsUpdate(e.id,{url:n.Ze.ui,
active:!0}),i.ns(()=>{a.runNextOnTabLoaded(l,null)})},M=l=>{let i=n.$,u=i.urls;if(i.$fmt!==2){
if(i.$fmt!==1)for(let l=0;l<u.length;l++)u[l]=r._r(u[l]+"");a.overrideCmdOptions({},!0),a.overrideOption("urls",u),
a.overrideOption("$fmt",2)}for(let l of u)if(e.yi(l))return t.g()
;let o=e.parseReuse(i.reuse),s=o===1||o===0||o===3||o===-3?-1:o;n.$=null,P(u,s,i,l)};e.openUrlWithActions=(l,u,o,s)=>{
var d,f;if(typeof l!="string");else if(l||u!==9){
let t=a.fillOptionWithMask(l,n.$.mask,"value",["url","url_mask","url_mark","value"],n.x),v={};t.ok&&(l=t.result,
t.useCount&&(n.x=1));let m=n.$.url_mask,c=n.$.url_mark;if(m==null&&c==null||(l=_(l,s,m!=null?m:c)),o){let e=p.T(n.$)
;l=n.S(l,0,e,v)}if(u!==9){
let e=(d=v.F)!==null&&d!==void 0?d:(n.$.keyword||"")+"",t=(f=n.$.testUrl)!==null&&f!==void 0?f:!e,o=!!v.F||!!v.Zl||!!e&&e!=="~"
;l=t?r._r(l,e,u):r.K(l.trim().split(i.q),e,o?-2:u),l=t||!o?l:r._r(l,null,r.wi&&l.startsWith("vimium:")?3:u)}
let w=n.$.goNext;w&&l&&typeof l=="string"&&(l=n.S(l,8192,null,{}),l=e.goToNextUrl(l,n.x,w==="absolute")[1],
v.F&&(l=r.K(l.trim().split(i.q),v.F,3))),l=typeof l=="string"?r.fi(l):l}else l=n.newTabUrl_f
;let v=n.$,m=e.parseReuse(v.reuse),c=m===0||m===3?w(v.incognito):null;n.$=null,i.Gl(),c!=null&&c!==(n.de===2)&&(m=-1),
typeof l!="string"?Promise.resolve(l).then(b.bind(0,u,v,s)):!e.openShowPage(l,m,v)&&(i._i(l)?e.openJSUrl(l,v,null,m):e.yi(l)?a.runNextCmdBy(0,v):m===1||m===-3?T(l,m,v.replace,null,{
u:l,a:v.parent,p:v.prefix,q:e.parseOpenPageUrlOptions(v),f:a.parseFallbackOptions(v)
},s):m===0||m===3?h(v,m,l):v.replace?T(l,m,v.replace,v,null,s):s?P([l],m,v,s):t.getCurTab(P.bind(null,[l],m,v)))}
;let N=(l,s,f,v)=>{if(v===null)return o.complainLimits(d.A("readClipboard")),void a.runNextCmd(0)
;if(!(v=v.trim()))return o.showHUD(d.A("noCopied")),void a.runNextCmd(0);s.F!=null&&a.overrideCmdOptions({keyword:s.F})
;let p,m=(l=typeof l=="string"?l:"").includes("any");if((l.includes("urls")||m)&&(p=v.split(/[\r\n]+/g)).length>1){
let e=[],u=m&&n.$.keyword,s=u?u+"":null,d=!1;for(let l of p)if(l=l.trim(),l){if(l=r._r(l,s,0),!(m||r.dr<=2)){e.length=0,
d=!0;break}e.push(l)}if(e.length>1)return n.$=a.copyCmdOptions(i.i(),n.$),n.$.urls=e,n.$.$fmt=1,
void(f&&f.length>0?M(f):t.getCurTab(M))
;if(d&&l.includes("auto"))v=v.replace(/[\r\n]+/g," ");else if(d)return void(a.runNextCmd(0)||o.showHUD("The copied lines are not URLs"))
}if(r.es.test(v))v=v.slice(1,-1);else{let l=n.$.testUrl;(l!=null?l:!n.$.keyword)&&(v=u.Pi(v,l))}let c=v.indexOf("://")+3
;if(c>3&&i.an.test(v)){
let l,e=(v=/^ttps?:/i.test(v)?"h"+v:v).indexOf("/",c)+1||v.length,n=v.slice(c,e),i=n.startsWith("0.0.0.0")?7:n.includes(":::")&&(l=/^(\[?::\]?):\d{2,5}$/.exec(n))?l[1].length:0
;v=i?v.slice(0,c)+(i>6?"127.0.0.1":"[::1]")+v.slice(c+i):v}e.openUrlWithActions(v,2,!1,f)};e.goToNextUrl=(l,e,n)=>{
let i=(l,e)=>typeof l!="number"||isNaN(l)?e:l,t=!1
;return l=l.replace(/\$\{([\da-zA-Z_-]+)(?:[,\/#@](-?\d*)(?::(-?\d*)(:-?\d*)?)?(?:[,\/#@]([^}]+))?)?\}|\$\$/g,(l,r,u,o,s,d)=>{
if(l==="$$")return"$";t=!0;let f=10,a=1,v=!1,p=0
;for(let[l,e]of d?d.split("&").map(l=>l.split("=")):[])l==="min_len"||l==="len"?a=+e||1:l==="radix"?(f=e,
f=f>=2&&f<=36?f:10):l.startsWith("out")&&l.endsWith("radix")?(p=e,
p=p>=2&&p<=36?p:p&&10):l==="reverse"&&(v=e==="1"||e.toLowerCase()==="true")
;let m=i(r&&parseInt(r,f),1),c=s&&parseInt(s.slice(1))||0,w=c<0||!c&&(s||"0")[0]==="-",g=i(u&&parseInt(u),w?-1:1),b=i(o&&parseInt(o),1/0*(w?-1:1))
;c=(b>=g?1:-1)*(Math.abs(c)||1),
e*=v?-c:c,m=n&&e?c>0?e>0?g+e-1:(isFinite(b)?b:1e4)+e:e<0?g+e+1:(isFinite(b)?b:-1e4)+e:m+e,
m=b>=g?Math.max(g,Math.min(m,b-1)):Math.max(b+1,Math.min(m,g));let y=m.toString(p||f)
;return y=y.length<a?"0".repeat(a-y.length)+y:y,y}),[t,l]},e.openUrl=l=>{
if(n.$.urls)return void(n.$.urls instanceof Array&&(l&&l.length>0?M(l):t.getCurTab(M)))
;if((n.$.url_mask!=null||n.$.url_mark!=null)&&!l)return t.g()||void t.getCurTab(e.openUrl);let i=n.$.url;if(n.$.copied){
let e,i=n.$.copied,t=typeof i!="string"?null:i.includes("<")?i.split("<")[1]:i.includes(">")?i.split(">")[0]:null,r={}
;t?(i=i.includes("<")?i.split("<")[0]:i.split(">")[1],e=n.Il.get(t)||"",e=n.S(e,32768,p.T(n.$),r)):e=n.Vl(p.T(n.$),0,r),
e instanceof Promise?e.then(N.bind(null,i,r,l)):N(i,r,l,e)
}else i||n.$.sed?e.openUrlWithActions(i!=null?i+"":"",3,!0,l):e.openUrlWithActions(n.$.url_f||"",9,!1,l)},
e.openUrlReq=(l,t)=>{var s,d;i.Sn(l);let f=t!=null&&o.isNotVomnibarPage(t,!0);n.O=f?t:o.findCPort(t)||n.O
;let v=l.u||"",p=l.n&&a.parseFallbackOptions(l.n)||{},m=l.o||l.n&&e.parseOpenPageUrlOptions(l.n)||{},c=(m.k||"")+"",g=(s=m.t)!==null&&s!==void 0?s:!c,b=m.s,y=l.m||0,h=y<64?y&-17:y,k=l.f!=null?l.f:h===45||h===46
;p.group=!f||m.g,p.incognito=w(m.i)!=null?m.i:h===45||null,p.replace=m.m,p.position=m.p
;let $=m.r!=null?m.r:y?l.t==="window"?2:(y&16?-2:-1)+(l.t==="last-window"?-4:0):l.r;if(p.reuse=$,p.window=m.w,v||!f){
v[0]===":"&&!f&&/^:[bhtwWBHdso]\s/.test(v)&&(v=l.u=v.slice(2).trim());let e=v,t={},o=f?k?1048576:524288:g?16384:0
;v=g?u.Ti(v,k):v,v=n.S(v,o,b,t);let s=(d=t.F)!==null&&d!==void 0?d:c,a=v.trim();r.ci(),
k&&!s?v=v!==e?r._r(a,null,-1):a:g||!f&&!s?(a=g?u.Pi(a,g):a,v=r._r(a,s,f?-1:3)):(v=r.K(a.split(i.q),s,s&&s!=="~"?-1:0),
v=r.wi?r._r(a=v,s="",v.startsWith("vimium:")?3:0):v),
r.dr===4&&!s&&n.z.preferBrowserSearch&&(v=`vimium://b-search-at/${$}/${a}`,v=r._r(v,null,2)),
r.dr!==2&&r.dr!==1||l.h==null?r.dr===3&&v.startsWith("vimium:")&&!e.startsWith("vimium://")&&(v=r._r(v,null,r.wi||v.startsWith("vimium://run")?3:0)):v=(l.h?"https":"http")+v.slice(v[4]==="s"?5:4),
p.opener=f?m.o!==!1:n.Wn.actions.includes("opener"),p.url_f=v}else{if(!l.c)return n.O=t||o.findCPort(null),
void(a.runNextCmdBy(0,p)||o.showHUD("",14));p.copied=l.c,p.keyword=c,p.testUrl=m.t,p.sed=b}n.x=1,a.replaceCmdOptions(p),
e.openUrl()},e.Je=(l,u)=>{let o,s=i=>{var r;let s=(r=w(c.i))!==null&&r!==void 0?r:n.de===2&&null;if(i=i||[],
s!==null&&(i=i.filter(l=>l.incognito===s)),c.g&&o.length>0){let l=t.getGroupId(o[0]);i=i.filter(e=>t.getGroupId(e)===l)}
if(i.length>0){let l=i.filter(l=>l.windowId===n.we);return void d(l.length>0?l:i)}let v=n.de===2&&t.w(l.u)
;return l.f&&a.runNextCmdBy(0,l.f)||(o.length<=0||c.w||b===2?t.makeWindow({url:l.u,type:g(c.w),incognito:!v&&n.de===2
},"",l=>{f(l&&l.tabs&&l.tabs.length>0?l.tabs[0]:null)}):v?t.openMultiTabs({url:l.u,active:!0
},1,null,[null],c.g,null,f):b===0||b===3?(h({},b,l.u),b===3&&u&&u.s.Q?(a.sendFgCmd(18,!1,{r:1,u:l.u}),
f(o[0])):t.tabsUpdate(o[0].id,{url:l.u},f)):t.openMultiTabs({url:l.u,index:e.newTabIndex(o[0],c.p,!1,!0),
openerTabId:c.o&&o[0]?o[0].id:void 0,windowId:o[0].windowId,active:!0},1,null,[null],c.g,o[0],f)),t.g()},d=e=>{
let i=l.u,r=!!l.p,u=r?1:l.a?-1:0;u&&e.sort((l,e)=>(l.url.length-e.url.length)*u);let o=t.selectFrom(e)
;if(u&&o.url.length>e[0].url.length===r&&(o=e[0]),
!i.startsWith(n.Ze.Qe)||n.a.get(o.id)||l.s)if(n.Ii&&o.url.startsWith(n.Ze.ui))x(l.f||{},o),t.selectWndIfNeed(o);else{
let e=n.el?o.url.replace(/^edge:/,"chrome:"):o.url,u=n.el?i.replace(/^edge:/i,"chrome:"):i
;p=r?e.startsWith(u):l.a?u.startsWith(e):u===e,t.tabsUpdate(o.id,{url:p?void 0:i,active:!0},f),t.selectWndIfNeed(o)
}else t.tabsCreate({url:i},f),t.Me.remove(o.id)},f=e=>{if(!e)return l.f&&a.runNextCmdBy(0,l.f),t.g()
;a.runNextOnTabLoaded(l.f||{},e,l.s&&(()=>{v.ve.Mi(l,e.id,0,p)}))},p=!1,m=r.fi(l.u.split("#",1)[0]);if(e.yi(m,u))return
;let c=l.q||(l.q={});(c.g==null||m.startsWith(n.Ze.Qe))&&(c.g=!1);let b=c.r!=null?e.parseReuse(c.r):1
;c.m?T(l.u,b!==3&&b!==0?b:1,c.m,null,l):t.ye(t.getCurTab).then(async e=>{o=e
;let r=[],u=b===-3&&n.we>=0?n.we:void 0,d=m,f=g(c.w)||"normal";if(i.an.test(m)){
let e=m.indexOf("/")+2,n=m.indexOf("/",e+1),i=m.slice(e,n>0?n:void 0);l.a&&(m=m.slice(0,n>0?n+1:void 0),
d=m=m.endsWith("/")?m:m+"/"),i&&i.includes("@")&&(d=m=m.slice(0,e)+i.split("@")[1]+m.slice(n))}let a=!(!l.p&&!l.a)
;!m.startsWith("file:")&&!m.startsWith("ftp")||m.includes(".",m.lastIndexOf("/")+1)||r.push(d+(a?"/*":"/")),
r.push(a?d+"*":d);for(let e of r){let i=await t.ye(t.Me.query,{url:e,windowType:f,windowId:u})
;if(i&&l.a&&(n.el&&(m=m.replace(/^chrome:/i,"edge:")),i=i.filter(l=>m.startsWith(l.url.split(/[#?]/,1)[0]))),
i&&i.length>0)return s(i)}s([])})}});

View File

@@ -0,0 +1,60 @@
"use strict"
;__filename="background/others.js",define(["require","exports","./store","./browser","./utils","./settings","./i18n","./normalize_urls","./normalize_urls","./open_urls"],(e,t,n,l,i,o,r,u,s,c)=>{
Object.defineProperty(t,"__esModule",{value:!0}),n.pl.showActionIcon=e=>{let t=l.t.action;t?(n.r=e,
l.import2("/background/action_icon.js").then(e=>{e.e()}),Promise.resolve(r.Ce("name")).then(n=>{
e||(n+="\n\n"+r.Ce("noActiveState")),t.setTitle({title:n})})):n.pl.showActionIcon=void 0},o.vl.then(()=>{
n.z.showActionIcon?n.pl.showActionIcon(!0,"showActionIcon"):n.o=n.u}),(()=>{function e(){w&&(w.Ci=null),y=P=w=_=null,
k&&clearTimeout(k),$&&clearTimeout($),g=F=S=k=$=0,T="",i.Gl()}function t(){let n=Date.now()-g
;if(n>5e3||n<-5e3)return e();k=setTimeout(t,3e4)}function o(){$=0;let e=w;if(e&&!e.Fi&&(w=null,e.Ci)){let t=Date.now()
;return t<g&&(g=t-1e3),m(e.Si,e.Ci)}}function a(e,t,o,r,u){if(!e.Ci)return void(w===e&&(w=null));w=null
;let c,a=t.length>0?t[0]:null;F=r,S=u,P=[];let m=new Set,f=` ${n.Ke.t} `.includes(" type-letter ")
;for(let e=0,l=o?0:1,r=t.length;e<r;e++){
let r=t[e],{title:u,u:c,e:a}=r,d=c,g="",p=r.s!=null,b=!(o&&e===0||(a==="tab"?r.s===n.he:a!=="history"||p));d=i.Ul(d,1),
d.startsWith("file")&&(d=s.fn(d)),d=d.replace(/%20/g," "),m.has(d)?d=`:${e+l} ${d}`:m.add(d),b&&(g=` ~${e+l}~`),
g=(u||f?(u?u+" <dim>":"<dim>")+(f?`[${r.e[0].toUpperCase()}] `:"")+(u?"-</dim> <url>":"</dim><url>"):"<url>")+r.textSplit+"</url>"+(g&&`<dim>${g}</dim>`)
;let h={content:d,description:g};b&&(h.deletable=!0),(b||p)&&(y||(y=new Map),y.has(d)||y.set(d,{ji:a,_l:p?r.s:null,Jl:c
})),P.push(h)}if(_=e.Si,o)if(a.e==="search"){let e=a.p;c=(e&&`<dim>${i.Ur(e)+p}</dim>`)+`<url>${a.textSplit}</url>`,C=2,
(a=t[1])&&a.e==="math"&&(P[1].description=`${a.textSplit} = <url><match>${a.t}</match></url>`)}else C=3,
c=P[0].description;else C!==1&&(c=`<dim>${h}</dim><url>%s</url>`,C=1);o&&(T=t[0].u,
y&&P.length>0&&T!==P[0].content&&y.set(T,y.get(P[0].content)),P.shift()),c&&l.t.omnibox.setDefaultSuggestion({
description:c}),e.Ci(P),i.Gl()}function m(e,l){if(e=D(e),w){let t=e===w.Si;if(w.Ci=t?l:null,t)return}
if(e===_)return void(P&&l(P));if(F===1&&e.startsWith(_))return void l([]);if(w={Ci:l,Si:e,Fi:!1},$)return
;let i=Date.now(),r=n.Ke.i+g-i;if(r>30&&r<3e3)return void($=setTimeout(o,r));w.Fi=!0,k||(k=setTimeout(t,3e4)),g=i,
y=P=null,T="";let u=F<2||!e.startsWith(_)?0:F===3?e.includes(" ")?0:8:S;n.xl.er(e,{o:"omni",t:u,r:j,c:M,f:1
},a.bind(null,w))}function f(e,t,l){
return e?e[0]===":"&&/^:([1-9]|1[0-2]) /.test(e)&&(e=e.slice(e[2]===" "?3:4)):e=u._r(""),
e.slice(0,7).toLowerCase()==="file://"&&(e=i.ii().test(e)?u.gn("show image "+e,!1,0):e),l!=null?n.hn[7]({s:l
}):c.openUrlReq({u:e,r:t==="currentTab"?0:t==="newForegroundTab"?-1:-2})}let d=l.t.omnibox;if(!d)return
;let g,p=": ",b=!1,h="Open: ",v=d.onDeleteSuggestion,_=null,T="",w=null,$=0,y=null,M=128,P=null,k=0,C=0,F=0,S=0,j=12,D=e=>{
if(e=e.trim().replace(i.q," "),n.Wn.actions.includes("icase")){let t=/^:[WBH] /.test(e)?3:0
;e=t?e.slice(0,t)+e.slice(t).toLowerCase():e.toLowerCase()}return e};d.onInputStarted.addListener(()=>{
if(l.getCurWnd(!1,e=>{let t=e&&e.width;M=t?Math.floor((t-160)/7.72):128}),b||(b=!0,
Promise.resolve(r.Ce("i18n")).then(()=>{r.ro()!=="en"&&Promise.resolve(r.A("colon")).then(e=>{p=e+r.A("NS")||p,
h=r.A("OpenC")||h})})),k)return e()}),d.onInputChanged.addListener(m),d.onInputEntered.addListener(function t(l,i){
let r=w;if(r&&r.Ci){if(r.Ci=t.bind(null,l,i),r.Fi)return;return $&&clearTimeout($),o()}if(l=D(l),
_===null&&l)return n.xl.er(l,{o:"omni",t:0,r:3,c:M,f:1},(e,t)=>t?f(e[0].u,i,e[0].s):f(l,i));T&&l===_&&(l=T)
;let u=y===null||y===void 0?void 0:y.get(l),s=u===null||u===void 0?void 0:u._l;return e(),f(u?u.Jl:l,i,s)}),
v.addListener(e=>{
let t=parseInt(e.slice(e.lastIndexOf("~",e.length-2)+1))-1,l=P&&P[t].content,i=l&&y?y.get(l):null,o=i&&i.ji;o?n.hn[25]({
t:o,s:i._l,u:i.Jl
}):console.log("Error: want to delete a suggestion but no related info found (may spend too long before deleting).")})
})(),(()=>{let e=0,t=!1,i=0,o=n.el?"edge:":"chrome:",r=n.el?"":o+"//newtab/",u=n.el?"":o+"//new-tab-page/",s=t=>{
t.frameId===0&&t.url.startsWith(o)&&e&(n.el||!t.url.startsWith(r)&&!t.url.startsWith(u)?1:2)&&!i&&l.s(t.tabId)};l.v([{
origins:["chrome://*/*"]},n.el?null:{origins:["chrome://new-tab-page/*"]}],function c(a){if(e=(a[0]?1:0)+(a[1]?2:0),
e&1&&!n.z.allBrowserUrls&&(e^=1),t!==!!e){let e=l.N();if(!e)return!1
;e.onCommitted[(t=!t)?"addListener":"removeListener"](s)}i=i||e&&setTimeout(()=>{e?l.Me.query({url:o+"//*/*"},t=>{i=0
;for(let i of t||[])!n.a.has(i.id)&&e&(i.url.startsWith(r)||i.url.startsWith(u)?2:1)&&l.s(i.id);return l.g()}):i=0
},120),e&&!n.pl.allBrowserUrls&&(n.pl.allBrowserUrls=c.bind(null,a,!1))})
})(),n.il&&Promise.all([n.il,o.vl]).then(([e])=>{
let t=e&&e.reason,s=t==="install"?"":t==="update"&&e.previousVersion||"none";s!=="none"&&setTimeout(()=>{if(l.Me.query({
status:"complete"},e=>{let t=/^(file|ftps?|https?):/;for(let i of e)t.test(i.url)&&!n.a.has(i.id)&&l.s(i.id)}),
console.log("%cVimium C%c has been %cinstalled%c with %o at %c%s%c.","color:red","color:auto","color:#0c85e9","color:auto",e,"color:#0c85e9",i.now(),"color:auto"),
n.Ze.ls&&console.log("Sorry, but some commands of Vimium C require the permission to run in incognito mode."),!s){
let e=()=>{n.os||n.Di?++t<25&&setTimeout(e,200):c.Je({u:n.Ze.Qe+"#commands"})},t=0;return void e()}
if(o.gl("vomnibarPage"),parseFloat(s)>=parseFloat(n.Ze.fo)&&(s>="1.99.98"||n.Ze.fo<"1.99.98"))return
;if(o.gl("newTabUrl"),!n.z.notifyUpdate)return;let t="vimium_c-upgrade-notification"
;Promise.all([r.A("Upgrade"),r.A("upgradeMsg",[n.Ze.aa]),r.A("upgradeMsg2"),r.A("clickForMore")]).then(([e,i,o,r])=>{
let s={type:"basic",iconUrl:n.ll+"icons/icon128.png",title:"Vimium C "+e,message:i+o+"\n\n"+r};n.Tn>=70&&(s.silent=!0)
;let a=l.t.notifications;a&&a.create(t,s,e=>{let n;if(n=l.g())return n;t=e||t,a.onClicked.addListener(function e(t){
t==t&&(a.clear(t),c.Je({u:u._r("vimium://release")}),a.onClicked.removeListener(e))})})})},500)}),setTimeout(()=>{
let e=globalThis.document;e&&e.body&&(e.body.innerText=""),i.Gl()},1e3)});

View File

@@ -0,0 +1,52 @@
"use strict"
;__filename="background/page_handlers.js",define(["require","exports","./store","./utils","./browser","./normalize_urls","./parse_urls","./settings","./ports","./exclusions","./ui_css","./key_mappings","./run_commands","./open_urls","./frame_commands"],(l,e,n,t,r,u,o,s,i,a,d,f,v,m,c)=>{
Object.defineProperty(e,"__esModule",{value:!0}),e.onReq=void 0;let p=[()=>[s.E,n.G,n.Ze.ko],l=>{
if(n.Di)return n.Di.then(p[1].bind(null,l,null));let e={};for(let l in s.E){let t=n.z[l];t!==s.E[l]&&(e[l]=t)}return e
},l=>{var e,t;if(n.Di)return n.Di.then(p[2].bind(null,l,null))
;let r=l.key,u=(t=(e=l.val)!==null&&e!==void 0?e:s.E[r])!==null&&t!==void 0?t:null;s.ho(r,u);let o=n.z[r]
;return o!==u?o:null},l=>{let e=s.W(l.key,l.val);return e!==l.val?e:null},l=>{s.bn({N:6,d:l})},l=>n.z[l.key],l=>{
n.a.has(l)||r.s(l)},()=>{let l=f.Fn;if(n.V.l&1&&!l){let l=l=>/[^ -\xff]/.test(l.join("")),e=l(Object.keys(n.Nn))?1:0
;if(e|=n.wo&&l(Object.keys(n.wo))?2:0,e&&(e|=e&2||!n.wo||!l(Object.values(n.wo))?0:4,e&2||!(e&4)))return!0}
return l?(l=>{let e,n,t=l.length>1?l.length+" Errors:\n":"Error: ";for(n of l)e=0,
t+=n[0].replace(/%([a-z])/g,(l,t)=>(++e,t==="c"?"":t==="s"||t==="d"?n[e]:JSON.stringify(n[e]))),
e+1<n.length&&(t+=" "+n.slice(e+1).map(l=>typeof l=="object"&&l?JSON.stringify(l):l).join(" ")),t+=".\n";return t
})(l):""},l=>{let e=i.indexFrame(l[1],0);return e&&e.s&&(e.s.b|=44),d.mergeCSS(l[0],-1)},l=>{
l&&s.lu("isHC_f",l.hc?"1":null),d.eu(2)},l=>[u._r(l[0],null,l[1]),u.dr],()=>{d.tu.nu()},()=>{
let l=n.Ln.get("?"),e=l&&l.Rn===8&&l.Vn?"?":"";return e||n.Ln.forEach((l,n)=>{
l.Rn===8&&l.Vn&&(e=e&&e.length<n.length?e:n)}),e},l=>{var e
;return[l=u._r(l,null,0),(e=n.Ye.get(l))!==null&&e!==void 0?e:null]},l=>{let e=new Map;o.ru("k:"+l,e);let n=e.get("k")
;if(n==null)return null;let t=u._r(n.Jl,null,-2),r=u.dr>2
;return[!r,r?n.Jl:t.replace(/\s+/g,"%20")+(n.Ir&&n.Ir!=="k"?" "+n.Ir:"")]},l=>{m.Je(l)},l=>{let e=null
;return l.startsWith("vimium://")&&(e=n.Fr(l.slice(9),1,!0)),e=e!==null?e:u._r(l,null,-1),
typeof e=="string"&&(e=o.Pi(e,"whole"),e=u.fi(e)),e},()=>n.Ii&&n.Ii(),l=>n.S(l[0],l[1]),l=>m.yi(l),()=>{
let l=n.he>=0&&n.a.get(n.he)||null,e=l?n.he:-1,u=l?l.d.s.Q:-1,o=u>=0&&r.N()||null
;return Promise.all([r.ye(r.getCurTab).then(l=>l&&l.length?l:e<0?null:r.ye(r.tabsGet,e).then(l=>l&&[l])),o?r.ye(o.getFrame,{
tabId:e,frameId:u}):null,n.Di]).then(([l,o])=>{var i,d,f
;let v=l&&l[0]||null,m=v?v.id:n.he,p=(i=n.a.get(m))!==null&&i!==void 0?i:null
;o&&o.url&&e===m&&p.d.s.Q===u&&(p.d.s.Jl=o.url);let b=v?r.getTabUrl(v):p&&(p.R||p.d).s.Jl||"";v&&p&&p.R&&(p.R.s.Jl=b)
;let _=!p||p.d.s.Q&&!t.an.test(p.d.s.Jl)?null:p.d.s,h=!(p||v&&b&&v.status==="loading"&&/^(ht|s?f)tp/.test(b)),k=g(p),w=!h&&!k,y=0,O=w?null:k||!b?k:b.startsWith(location.protocol)&&!b.startsWith(n.ll)?new URL(b).host:null,j=O?n.uu.get(O):null
;if(w||j==null||j===!0?O=null:p&&(p.ou=-1),w&&p&&p.J.length>1&&b.startsWith("http")){
let l=(d=t.yn(b))===null||d===void 0?void 0:d.host;if(l&&!t.kn(l,0)){let e=b.startsWith("http:"),n="."+l
;for(let r of p.J){
let u=r!==(p.R||p.d)?r.s.Jl:null,o=(u===null||u===void 0?void 0:u.startsWith("http"))?(f=t.yn(u))===null||f===void 0?void 0:f.host:null
;if(o&&o.length>l.length&&o.endsWith(n)&&(y=e||o.startsWith("http:")?2:1,y>1))break}}}let x=_&&_.Q?p.R:null
;if(x&&!y&&!(_.b&512))try{c.focusFrame(p.d,!0,5,1)}catch(l){}return{ver:n.Ze.aa,runnable:w,url:b,tabId:m,
frameId:p&&(_||p.R)?(_||p.R.s).Q:0,topUrl:x===null||x===void 0?void 0:x.s.Jl,frameUrl:_&&_.Jl,lock:p&&p.rs?p.rs.f:null,
status:_?_.f:0,hasSubDomain:y,unknownExt:O,exclusions:w?{rules:n.z.exclusionRules,onlyFirst:n.z.exclusionOnlyFirstMatch,
matchers:a.dn(null),defaults:s.E.exclusionRules}:null,os:n.G,reduceMotion:n.V.m}})},([l,e])=>{
let u=n.z.extAllowList,o=u.split("\n");if(o.indexOf(e)<0){let l=o.indexOf("# "+e)+1||o.indexOf("#"+e)+1
;o.splice(l?l-1:o.length,l?1:0,e),u=o.join("\n"),s.ho("extAllowList",u)}let i=n.a.get(l);return i&&(i.ou=null),
r.ye(r.t.tabs.get,l).then(l=>{let e=t.Xe(),n=()=>(v.runNextOnTabLoaded({},l,e.Le),r.t.runtime.lastError)
;return l?r.t.tabs.reload(l.id,n):r.t.tabs.reload(n),e.Ge})},([l,e,t])=>{n.Fr("status/"+l,3)
;let r=i.indexFrame(e,t)||i.indexFrame(e,0),u=r?n.a.get(e).rs:null;return r&&!u&&n.hn[10]({u:r.s.Jl},r),
[r?r.s.f:0,u?u.f:null]},l=>a.dn(l)[0],(l,e)=>c.initHelp({f:!0},e),l=>{let e=l.module,n=l.name,t=b[e]
;if(!b.hasOwnProperty(e)||!t.includes(n))return[void 0,{message:"refused"}];let u=r.t[e],o=l.args,s=u[n]
;return new Promise(l=>{o.push(e=>{let n=r.g();return l(n?[void 0,n]:[_(e),void 0]),n}),s.apply(u,o)})
},(l,e)=>e.s.m,l=>{let e=t.i();if(l){let t=n.su.get(l);e[l]=t!=null?t:null}else n.su.forEach((l,n)=>{e[n]=l});return e
},({key:l,val:e})=>{l.includes("|")&&s.lu(l,e)},({key:l,val:e},t)=>{let r=t&&t.s&&t.s.m||n.he,u=n.Fe.find(l=>l.s.m===r)
;u&&u.postMessage({N:47,d:{[l]:e},v:n.iu})},()=>{n.z.vimSync&&n.pl.vimSync(!0,"vimSync")},()=>({os:n.G}),l=>{
r.tabsCreate({url:l.url}),r.t.tabs.remove(l.tabId)},()=>Promise.all([new Promise(l=>{
r.t.extension.isAllowedIncognitoAccess(e=>{l(e)})}),new Promise(l=>{r.t.extension.isAllowedFileSchemeAccess(e=>{l(e)})
})])],b={permissions:["contains","request","remove"],tabs:["update"]},_=l=>({
message:l&&l.message?l.message+"":JSON.stringify(l)});e.onReq=(l,e)=>p[l.n](l.q,e)
;let g=l=>l&&typeof l.ou=="string"&&n.uu.get(l.ou)!==!0?l.ou:null});

View File

@@ -0,0 +1,99 @@
"use strict"
;__filename="background/parse_urls.js",define(["require","exports","./store","./utils","./normalize_urls"],(e,t,l,i,r)=>{
Object.defineProperty(t,"__esModule",{value:!0}),t.Ri=t.ru=t.Er=t.Ti=t.Pi=t.qi=t.Ne=void 0,t.Ne=e=>{
let u,n,f=e.u,s=f.toLowerCase(),a=null,o=!1;if(!i.an.test(r.di(s)))return i.Gl(),null;if(e.p){let l=t.qi(e);return{k:"",
s:0,u:l.p!=null?l.u:f,e:l.p!=null?l.p:l.u}}for(u of((n=i.qr(s))&&(s=s.slice(n),f=f.slice(n)),
l.Hl.rules))if(s.startsWith(u.Ui)&&(a=f.slice(u.Ui.length).match(u.Ai),a))break;if(!a||!u){let e=l.Ze.ui
;return s.startsWith(e)?(f=f.slice(e.length).replace(/^#!?/,""),{k:"vimium://show",u:f,
s:f.startsWith("image")&&f.lastIndexOf("&",f.indexOf(":")+1)+1||f.indexOf(" ")+1}):(i.Gl(),null)}
a.length>1&&!u.Ai.global&&a.shift();let p=u.Hi,g=0;if(a.length>1)o=!0;else if(p instanceof RegExp)s=a[0],
(a=s.match(p))?(a.shift(),o=!0):a=[s];else if(p==" "||p==="+"||p instanceof Array){s=a[0].toLowerCase()
;let t=s.indexOf(":");if(t=t>0&&t<s.length?t:0,t&&!i.an.test(s)&&!s.startsWith("file:")){let e=r.pi(s,t,s.indexOf(" "))
;t=e!==-1&&e<=3?t:0}if(g=t>0?s.startsWith("data:")?2:1:0,g)a=[a[0]];else{let t=typeof p=="object",l=t?p[0]:p
;if(t&&l==="+"){let t=u.Ui.length;u.Ai.global||(t+=a.index),t=n+t+Math.max(0,f.slice(t).indexOf(a[0])),l=r.mi(e.u,t),
l=l==="%20"?/%20| /:"+"}a=a[0].split(l)}}else a=a[0].split(p);s="";for(let e of a)s+=" "+(g?e:i.rl(e))
;s=s.trim().replace(g>1?/\xa0/g:i.q," ")
;let c=l.Hl.map.get("~"),m=!!s&&c.Jl===l.Hl.map.get(u.Ir).Jl&&!l.Hl.map.has(s.split(" ",1)[0]);return i.Gl(),{k:u.Ir,
c:m,u:s,s:o?s.lastIndexOf(" ")+1:0}},t.qi=e=>{let{u:t}=e,n=t.toLowerCase();if(e.p===1){let i=l.S(t,131072,e.s)
;if(i!==t&&i&&i!==t+"/"&&i+"/"!==t){let e=r._r(i,null,-2);if(r.dr===0)return{u:e,p:"(sed)"}}}
if(!i.an.test(r.di(n)))return{u:"This url has no upper paths",p:null}
;let f,s,a,o,p=encodeURIComponent,g="",c=!1,m=!1,$=!1,d=null,h=0,_=0,b=!1
;if((a=t.lastIndexOf("#")+1)&&(g=t.slice(a+ +(t.substr(a,1)==="!")),f=i.rl(g),a=f.lastIndexOf("/"),
a>0||a===0&&f.length>1)){b=f!==g;let e=/([^&=]+=)([^&\/=]*\/[^&]*)/
;s=e.exec(f)||/(^|&)([^&\/=]*\/[^&=]*)(?:&|$)/.exec(f),
d=s?s[2]:f,d==="/"||d.includes("://")?d=null:s?b?(f="https://example.com/",f=encodeURI(f+d).slice(f.length),
a=(g.indexOf(f)+1||g.indexOf(f=p(d))+1)-1,a<0&&(b=!1,a=g.indexOf(f=d)),_=a+f.length,
a<0&&s[1]!=="&"&&(a=g.indexOf(f=s[1]),a<0&&(b=!0,f=p(s[1].slice(0,-1)),a=g.indexOf(f)),a>=0&&(a+=f.length,
_=g.indexOf("&",a)+1)),a>=0?h=a:(o=e.exec(g))?(d=i.rl(o[2]),h=o.index+o[1].length,
_=h+o[2].length):(f=s[1])!=="&"&&(a=t.length-g.length,g=f+p(d),t=t.slice(0,a)+g,h=f.length,
_=0)):h=s.index+s[1].length:h=0,d&&(a=t.length-g.length,h+=a,_>0&&(_+=a))}if(!d){if(n.startsWith(l.Ze.U)&&!e.f)return{
u:"An extension has no upper-level pages",p:null};g="",h=t.indexOf("/",t.indexOf("://")+3),
n.startsWith("filesystem:")&&(h=t.indexOf("/",h+1)),h=h<0?0:h,a=t.indexOf("?",h),_=t.indexOf("#",h),
a=_<0?a:a<0?_:a<_?a:_,a=a>0?a:t.length,d=t.slice(h,a),_=0,b=!1}if(a=e.p,c=d.startsWith("/"),!g&&n.startsWith("file:")){
if(d.length<=1||t.length===11&&t.endsWith(":/")){if(!e.f)return{u:"Here has been the root path",p:null};a=0}m=!0,
e.f||a===1&&(a=-1)
}else m=!(g||!n.startsWith("ftp"))||(e.t!=null?!!e.t:e.r!=null?!!e.r:d.length>1&&d.endsWith("/")||/\.([a-z]{2,3}|apng|avif|icon|jpeg|tiff|webp)$/i.test(d))
;let x=d.slice(+c,d.length-+d.endsWith("/")).split("/"),v=x.length,w=a<0?a+v:a;$=v<=1&&a<=-2&&t.lastIndexOf("#",h)>0,
a=w>v?v:a>0?w-1:w>0?w:0,x.length=a,d=x.join("/"),(f=e.a||"")&&(d+=f[0]==="/"?f:"/"+f),
d=d?(d[0]==="/"?"":"/")+d+(!m||d.endsWith("/")?"":"/"):"/",!_&&t.lastIndexOf("git",h-3)>0&&(d=u(t,d)||d),
!_&&/[/.](?:askubuntu|serverfault|stack(?:overflow|exchange)|superuser)\.com$/.test(t.slice(0,h))&&/^\/questions\/\d+$/i.test(d)&&(d="/questions"),
!$||d&&d!=="/"?(f=b?p(d):d,t=t.slice(0,h)+(_?f+t.slice(_):f)):t=t.split("#",1)[0];let k=l.S(t,64,e.s)||t;if(k!==t){
let e=r._r(k,null,-2);t=r.dr===0?e:t}return{u:t,p:d}};let u=(e,t)=>{var l
;let r=(l=i.yn(e))===null||l===void 0?void 0:l.host;if(!r)return
;if(!/git\b|\bgit/i.test(r)||!/^[\w\-]+(\.\w+)?(:\d{2,5})?$/.test(r))return;let u=t.split("/"),n=u.length-1;u[n]||(n--,
u.pop());let f=u[n];if(r.startsWith("github.")){
if(n===3)return f==="pull"||f==="milestone"||f==="commit"?t+"s":f==="tree"||f==="blob"?u.slice(0,3).join("/"):null
;if(n===4&&u[3]==="releases"&&(u[4]==="tag"||u[4]==="edit"))return u.slice(0,4).join("/")
;if(n>3)return u[3]==="blob"?(u[3]="tree",u.join("/")):null
}else if(r.startsWith("gitee.")&&n===4&&u[3]==="releases"&&u[4]==="tag")return u.slice(0,4).join("/")}
;t.Pi=(e,l)=>typeof l=="string"&&l.toLowerCase().startsWith("whole")?t.Er(e):n(e),t.Ti=e=>{
if(!/^https?:\/\//i.test(e))return e
;let t=e.indexOf("://")+3,l=e.indexOf("/",t),r=e.slice(t,l>0?l:e.length).toLowerCase(),u=new RegExp("\\p{S}|[^\\P{P}.:\\uff1a%-]","u").exec(r)
;if(u)return e.slice(0,t+u.index);let n=r.indexOf("%",r.indexOf("@")+1),f=r.lastIndexOf(".xn--",n>0?n:void 0)+5
;if(f>5&&/^[a-z\d]{2}/.test(r.slice(f))&&!/\.[a-z]/.test(r.slice(f))&&r.lastIndexOf("xn--",f-6)<0&&!/[\x7f-\uffff]/.test(r.slice(0,f-6))){
let l=r.slice(f),u=(/^[a-z\d]+/.exec(l)||[""])[0]
;if(u&&u.length<l.length&&(i.zi(u,!0)||"%-".includes(l[u.length])))return e.slice(0,t+f-4)+e.substr(t+f,u.length)}
return e};let n=e=>{let l,u=e.indexOf("\uff1a")+1||e.indexOf(":")+1;if(u&&e[u]!=="/"){
let t=e.slice(0,u-1).trim().toLowerCase();if(t!=="link"&&t!=="\u94fe\u63a5")return e;l=e.slice(u).trim()
;let n=l.indexOf("\uff1a")+1
;if(u=l.indexOf(":")+1,u=u&&n?Math.min(u,n):u||n,!u||!i.an.test(l.slice(0,u-1)+"://"))return e
;if(r._r(l.slice(u),null,-2),r.dr!==1)return e}else{if(!u||e.substr(u+1,1)!=="/")return e;l=e}
let n=/\s|[^=][\u3002\uff0c\uff1b]([^a-z?&#-]|$)/.exec(l),f=!!n&&n[0].length===1,s=n?l.slice(0,n.index+(f?0:1)):null,a=/["(\u2018\u201c\u300a\uff08\uff1c]/,o=(s||l).includes("#~:text=")?0:7
;return o&&s&&(f?",.;\u3002\uff0c\uff1b".lastIndexOf(s.slice(-1),2)>=0?(l=s.slice(0,-1),
o=3):'")\u2019\u201d\u300b\uff09\uff1e'.includes(s.slice(-1))&&(o=a.test(s.slice(u))?0:(l=s.slice(0,-1),1)):(l=s,o=3)),
o&4&&",.;\u3002\uff0c\uff1b".includes(l.slice(-1))&&(l=l.slice(0,-1)),
o&2&&'")\u2019\u201d\u300b\uff09\uff1e'.includes(l.slice(-1))&&(a.test(l.slice(u))?o=0:l=l.slice(0,-1)),
l&&",.;\u3002\uff0c\uff1b".includes(l[0])&&(l=l.slice(1).trim()),o&1&&l&&a.test(l[0])&&(l=l.slice(1)),r.ci(),
l=t.Er(l,!1,!0),r.dr<=2&&!l.startsWith("vimium:")?l:e};t.Er=(e,t,l)=>{
let i=+e.includes("\u3002")+2*+e.includes("\uff1a");if(!i&&!l)return e;let u=e.indexOf("//")
;if(u=e.indexOf("/",u>=0?u+2:0),u>=0&&u<4)return e;let n=u>0?e.slice(0,u):e
;return/^(data|javascript)[:\uff1a]/i.test(n)?e:(i&1&&(n=n.replace(/\u3002/g,".")),
i&2&&(n=n.replace("\uff1a",":").replace("\uff1a",":")),u>0&&(n+=e.slice(u)),r._r(n,null,-2),
r.dr<=2?n:i!==1||!t||/[^.\w\u3002-]/.test(e)?e:e.replace(/\u3002/g,"."))},t.ru=(e,l)=>{
let u,n,s,a,o,p,g,c=[],m=/\s/,$=e=>!!((e=e.trim())&&e.length<51)&&(l.set(e,o),!0)
;for(let d of e.replace(/\\(?:\n|\\\n[^\S\n]*)/g,"").split("\n")){if(d=d.trim(),d<"$")continue;p=0;do{
p=d.indexOf(":",p+1)}while(d.charCodeAt(p-1)===92);if(p<=0||!(a=d.slice(0,p).trimRight()))continue
;if(u=a.replace(/\\:/g,":").split("|"),d=d.slice(p+1).trimLeft(),!d)continue;a=d.replace(/\\\s/g,"\\s"),p=a.search(m)
;let h="";if(p>=0){if(e=d.slice(p),d=a.slice(0,p),p=e.search(/\sblank=/i),p>=0){let t=e.slice(p+7).search(m)
;t=t>0?p+7+t:0,h=e.slice(p+7,t||void 0),e=e.slice(0,p)+(t?e.slice(t):"")}p=e.search(/\sre=/i)}else d=a,e=""
;if(d=d.replace(/\\s/g," ").trim().replace(/([^\\]|^)%(s)/gi,"$1$$$2").replace(/\\%/g,"%"),o={Ir:"",Jl:d,u:h,Oi:l.size>1
},u.includes("~")&&o.Oi&&(r._r(d,null,-2),r.dr>2&&(u=u.filter(e=>e!=="~"))),u=u.filter($),u.length!==0){if(p===-1){
for(r.vi.lastIndex=0;(g=r.vi.exec(d))&&g[0].endsWith("$"););g&&(p=g.index+1)&&(a=g[2],
a?(a=/^s:/i.test(a)?a[0]==="s"?"+":" ":a,
s=""):(a=g[1]==="s"?"+":" ",s=[a]),d=d.replace(r.vi,(e,t)=>"$"+(t||"s")).toLowerCase(),d=r._r(d,null,-1),
r.dr>2&&(d=d.replace(/%24(%24|s)/g,decodeURIComponent)),p=0,d=d.replace(/\$[$s]/g,(e,t)=>e==="$$"?(p>0||p--,
"$"):(p=p>0?p:p+t+1,e)),(n=f(d,p,a))&&(a.includes("$")?(a=a.replace(r.hi,e=>e==="$$"?"\\$":"(.*)"),
s=new RegExp("^"+a,/[a-z]/i.test(a)?"i":"")):s=s||a.trim()||" ",c.push({Ui:n.Ui,Ai:n.Ai,Ir:u[0].trimRight(),Hi:s})))
}else if(e.charAt(p+4)&&!m.test(e.charAt(p+4))){a=p>1?e.slice(1,p).trim():"";let l=e.charCodeAt(p+4)===47
;l?(e=e.slice(p+5),p=e.search(/[^\\]\//)+1):(e=e.slice(p+4),p=e.search(m)),d=e.slice(0,p),e=e.slice(l?p+1:p),
p=e.search(m);let r=i.Tl(d,l?p>=0?e.slice(0,p):e:"");r&&(a=t.Ri(a),c.push({Ui:a,Ai:r,Ir:u[0].trimRight(),
Hi:[o.Jl.lastIndexOf("$S")>=0?" ":"+"]})),e=p>=0?e.slice(p+1):""}else e=e.slice(p+4);e=e.trimLeft(),
o.Ir=e?i.rl(e):u[u.length-1].trimLeft()}}return c};let f=(e,l,r)=>{if(l<1||!i.an.test(e))return null;let u,n,f,s
;if(u=e.slice(0,l-1),l=Math.max(u.lastIndexOf("?"),u.lastIndexOf("#"))+1){f=n=u.slice(l),u=u.slice(0,u.search(/[#?]/)),
(s=n.lastIndexOf("&")+1)&&(f=n.slice(s));let t=(r.includes("&")?"":"&")+(r.includes("#")?"":"#")
;f&&f.indexOf("=")>=1?(n="[#&?]",e=`([^${t}]*)`):(f=n,n=e[l-1]==="#"?"#":f?"[#?]":"\\?",e=`([^${t}?]*)`)
}else n=`^([^${(r.includes("#")?"":"#")+(r.includes("?")?"":"?")}]*)`,
(f=e.slice(u.length+2))&&(l=f.search(/[#?]/)+1)&&(f=f.slice(0,l-1)),e=""
;return f=f&&i.hl(f).replace(/\\\+|%20| /g,"(?:\\+|%20| )"),u=t.Ri(u),{Ui:u,Ai:new RegExp(n+f+e,/[a-z]/i.test(f)?"i":"")
}};t.Ri=e=>{let t=e.slice(0,9).toLowerCase(),l=i.qr(t)
;return l?e=e.slice(l):t==="vimium://"&&(e=r.gn(e.slice(9),!1,-1)),e}});

View File

@@ -0,0 +1,90 @@
"use strict"
;__filename="background/ports.js",define(["require","exports","./store","./utils","./browser","./exclusions","./i18n"],(e,l,t,r,n,u,o)=>{
Object.defineProperty(l,"__esModule",{value:!0
}),l.si=l.fu=l.tryToKeepAliveIfNeeded_mv3_non_ff=l.getParentFrame=l.complainNoSession=l.complainLimits=l.c=l.ensuredExitAllGrab=l.showHUDEx=l.showHUD=l.safePost=l.isNotVomnibarPage=l.ensureInnerCSS=l.indexFrame=l.An=l.C=l.isExtIdAllowed=l.findCPort=l.be=l.j=l.qn=l.Gn=l.OnConnect=l.sendResponse=l.xn=void 0
;let f=t.Tn>109,i=0,s=0,a=0;l.xn=()=>{a=0};let c=(e,l)=>{if(a=0,e.H!==90)t.hn[e.H](e,l);else{let r=t.hn[e.c](e.a,l,e.i)
;r!==l&&l.postMessage({N:4,m:e.i,r})}};l.sendResponse=(e,t,r)=>{let n=l.An(e);if(n&&n.J.includes(e))try{e.postMessage({
N:4,m:t,r})}catch(e){}},l.OnConnect=(e,l)=>{if(l&128)return void b(e,l)
;let r=e.sender.documentLifecycle,o=!!r&&r!=="active",f=N(e),i=f.Jl,s=i===t.vomnibarPage_f;if(l>7||s){
if(l===999)return void(f.m>=0&&!f.Q&&n.removeTempTab(f.m,e.sender.tab.windowId,f.Jl))
;if(l&256||s)return void v(e,l,s||i===t.Ze.Jn);if(o)return void e.disconnect()}
let a,p,_,m=f.m,h=m>=0?t.a.get(m):void(m=f.m=t.getNextFakeTabId()),k=(l&9)!=1&&(l&33)!=33&&h!==void 0
;if(k&&h.rs!==null?(p=h.rs.ts,a=h.rs.f,_=a===2?3:1):(p=!u.ss||l&8?null:u.as(i,f),a=p===null?0:p?1:2,_=0),f.f=a,
l&64&&(f.b=_|=64),k&&(_|=h.b&4,l&1024&&(_|=128,h.b|=128),f.b=_),l&8)l&4096&&e.postMessage({N:1,p:_&1?p:u.as(i,f),f:_&3
}),w(h,e,l);else if(e.postMessage(l&4?{N:0,c:null,d:o,f:_,p,v:t.au}:{N:0,c:t.V,d:o,f:_,k:t.Nn,m:t.wo,p,t:t.yo,v:t.au}),
o)return void e.disconnect();e.onDisconnect.addListener(d),e.onMessage.addListener(c);let I=f.Q===0
;k?(l&2?(t.r&&h.d.s.f!==a&&t.o(m,a),h.d=e):h.d.s.b&512&&(h.d=e),I&&(h.R=e),h.J.push(e)):(t.a.set(m,{d:e,R:I?e:null,
J:[e],rs:null,b:0}),a!==0&&t.r&&t.o(m,a),h!==void 0&&g(h))};let d=e=>{let r=e.s,n=r.m,u=t.a.get(n)
;if(e===t.O&&(r.b|=512),!u)return;let o=u.J,i=o.lastIndexOf(e),s=!r.Q,a=o.length;i>=0&&(a--==1?o.length=0:o.splice(i,1),
a>0&&e===u.d&&(u.d=o[0])),
(s?i>=0:!a)&&(u.b&512?r.b|=512:t.a.delete(n),!f&&n===t.us&&l.tryToKeepAliveIfNeeded_mv3_non_ff(n))},v=(e,l,u)=>{
if(l&256){if(u)return e.s.m<0&&(e.s.m=l&8?t.getNextFakeTabId():t.O?t.O.s.m:t.he),e.s.b|=256,t.Fe.push(e),
e.onDisconnect.addListener(p),e.onMessage.addListener(c),void(l&8?l>>13!==t.iu&&e.postMessage({N:47,d:t.Ke,v:t.iu
}):e.postMessage({N:42,l:t.Ke,s:r.Kn(!1),v:t.iu}))}else e.s.m<0||e.s.Q===0||n.p(e.s.m,e.s.Q,[t.Ze.cu]);e.disconnect()
},p=e=>{let l=t.Fe,r=l.lastIndexOf(e);return r>=0&&(r===l.length-1?--l.length:l.splice(r,1)),n.g()};l.Gn=(e,l)=>{
e.postMessage({N:49,t:l.t,s:l.s})};let _=e=>{if(e.H!==92)return;let l=t.Cn(null,null);l&&(clearTimeout(l.i),
l.r&&l.r(e.r))},m=()=>{_({H:92,r:!1})};l.qn=()=>{t.Hn=null,_({H:92,r:!1}),n.t.offscreen.closeDocument(n.g)}
;let b=(e,r)=>{if(r&1024)e.disconnect();else if(r&2048)if(t.On){let n=r&4096;e.onMessage.addListener(_),l.Gn(e,t.On),
e.onDisconnect.addListener(n?l.qn:m),n&&(t.Hn=e)}else e.disconnect();else e.s=!1,e.onMessage.addListener(c)},N=e=>{
let l=e.sender,t=l.tab;return l.tab=null,e.s={Q:l.frameId||0,b:0,f:0,se:t!=null&&t.incognito,m:t!=null?t.id:-3,Jl:l.url}
},g=e=>{t.O&&t.O.s.m===e.d.s.m&&(t.O.s.b|=512);for(let l of e.J)l.s.Q&&h(l)},h=e=>{e.s.b|=512;try{
e.onDisconnect.removeListener(d),e.onMessage.removeListener(c),e.postMessage({N:15})}catch(l){return k(e),1}},k=e=>{try{
e.disconnect()}catch(e){}};l.j=(e,o,f,i)=>{var s
;return(e=e||((s=t.a.get(t.he))===null||s===void 0?void 0:s.R)||null)&&!f&&u.ss&&(o||u.mn)?e.s.Jl:new Promise(t=>{
let u=e&&e.s.Q&&r.isNotPriviledged(e)?n.N():null;e?(e.s.Q?u?u.getFrame:(e,l)=>l(null):n.tabsGet)(u?{tabId:e.s.m,
frameId:e.s.Q}:e.s.m,r=>{let u=r?r.url:"";return!u&&i&&(i.N=3,l.safePost(e,i)),t(u),n.g()
}):n.getCurTab(e=>(t(e&&e.length?n.getTabUrl(e[0]):""),n.g()))})},l.be=(e,r,n,u)=>{var o
;u||(u=t.O||((o=t.a.get(t.he))===null||o===void 0?void 0:o.R));let f=l.j(u,r,n,e)
;if(typeof f!="string")return f.then(l=>(e.u=l,l&&t.hn[e.H](e,u),l));e.u=f,t.hn[e.H](e,u)},l.findCPort=e=>{
let l=t.a.get(e&&e.s.m>=0?e.s.m:t.he);return l?l.d:null},l.isExtIdAllowed=e=>{
let l=e.id!=null?e.id:"unknown_sender",r=e.url,n=e.tab,u=t.uu,o=u.get(l);if(o!==!0&&n){let e=t.a.get(n.id),r=e?e.ou:null
;e&&(r==null||r!==l&&typeof r=="string")&&(e.ou=r==null?l:2)}
return o!=null?o:r===t.vomnibarPage_f||(console.log("%cReceive message from an extension/sender not in the allow list: %c%s","background-color:#fffbe5","background-color:#fffbe5;color:red",l),
u.set(l,!1),!1)},l.C=()=>t.a.get(t.O?t.O.s.m:t.he),l.An=e=>t.a.get(e.s.m),l.indexFrame=(e,l)=>{let r=t.a.get(e)
;for(let e of r?r.J:[])if(e.s.Q===l)return e;return null},l.ensureInnerCSS=e=>{if(e.b&8)return null;let l=t.a.get(e.m)
;return l&&(l.b|=4),e.b|=12,t.du},l.isNotVomnibarPage=(e,l)=>{let t=e.s,r=t.b
;return!(r&256||(l||r&2048||(console.warn("Receive a request from %can unsafe source page%c (should be vomnibar) :\n %s @ tab %o","color:red","color:auto",t.Jl.slice(0,128),t.m),
t.b|=2048),0))},l.safePost=(e,l)=>{try{let t=e.s.b&512;return!t&&e.postMessage(l),t?0:1}catch(e){return 0}}
;let I=(e,t)=>{l.showHUD(t+"",e)};l.showHUD=(e,r)=>{if(typeof e!="string")return void e.then(I.bind(null,r))
;let n=r===14||r===15
;n&&(e.startsWith(t.Ze.U+"-")&&e.includes("://")&&(e=e.slice(e.indexOf("/",e.indexOf("/")+2)+1)||e),
e=e.length>41?e.slice(0,41)+"\u2026":e&&e+(t.vu?"\u3002":".")),t.O&&!l.safePost(t.O,{N:11,H:l.ensureInnerCSS(t.O.s),
k:n&&e?20:r||1,t:e})&&(t.O=null)},l.showHUDEx=(e,t,r,n,u)=>{if(!e)return;let f=u||o.Xl(t,n)
;typeof f=="string"?l.safePost(e,{N:11,H:l.ensureInnerCSS(e.s),k:1,d:r,t:f}):f.then(l.showHUDEx.bind(null,e,"NS",r,[]))
},l.ensuredExitAllGrab=e=>{let l={N:8};for(let t of e.J)t.s.b&4||(t.s.b|=4,t.postMessage(l));e.b|=4},l.c=(e,l,n)=>{
let u=r.on(t.a),o=t.he,f=r=>{let n=t.a.get(r),u=0;return n!==void 0&&(n.b&512&&e&&(n.b|=e),u=Math.min(n.J.length,8),
l(n)),u};if(u.length>=10){let e=u.indexOf(o);e>=0&&(u.splice(e,1),f(o)),r.pu(u,f,n)}else u.forEach(f)},
l.complainLimits=e=>{l.showHUDEx(t.O,"notAllowA",0,[e])},l.complainNoSession=()=>{
l.complainLimits("control tab sessions")},l.getParentFrame=(e,t,r)=>t&&n.N()?r===1?n.ye(n.N().getFrame,{tabId:e,
frameId:t}).then(t=>{let r=t?t.parentFrameId:0;return r>0?l.indexFrame(e,r):null}):n.ye(n.N().getAllFrames,{tabId:e
}).then(n=>{let u=!1,o=t;if(!n)return null;do{u=!1;for(let e of n)if(e.frameId===o){o=e.parentFrameId,u=o>0;break}
}while(u&&0<--r);return o>0&&o!==t?l.indexFrame(e,o):null}):Promise.resolve(null);let y=e=>{let n=performance.now(),u=!e
;if(!f&&i&&(u&&clearTimeout(i),i=0),u)for(let e=t.Fe.length;0<=--e;){let l=t.Fe[e],r=l.s.b
;r&1024?l.s.m!==t.he?(l.s.b=r|512,k(l),t.Fe.splice(e,1)):r&524288||(l.s.b=r|524288,l.postMessage({N:48})):l.s.b=r|1024}
let o=0;if(u){let e=[];t.a.forEach((l,r)=>{let n=l.J.length&&r>=0&&t.ze.get(r)||0;n>0&&e.push(n)}),e.sort((e,l)=>l-e),
o=Math.max(n-288e3,e.length?e[Math.min(5,e.length-1)]-1e3:0)}let s=0,a=null,c=[];t.a.forEach((e,l)=>{
let n=e.J,f=n.length;if(s>3&&!f)return;(!s||f&&s===3)&&(s=f?4:3,a=e);let i=[]
;for(let e of u?n:[])e.s.b&1024?i.push(e):e.s.b|=1024;if(!i.length)return void(s===4&&f&&(s=5,a=e))
;let d=(l>=0&&t.ze.get(l)||0)<o&&l!==t.he&&(f===1&&!(e.b&131072)&&n[0]===e.R||n.some(r.isNotPriviledged));if(f){
!d||(e.b|=512);for(let e of i)e.s.b|=512;c.push(e)}});let d=a;for(let e of c){
let t=!!(e.b&512)&&e!==d,n=!!(e.b&131072)||e.J.length>1,u=0,o=[]
;for(let l of e.J)l.s.b&512?!t||n&&!r.isNotPriviledged(l)?h(l)?u=1:s<6&&(s=6,a=e):(l.disconnect(),
l.s.Q&&(e.b|=131072)):(s<5&&(s=5,a=e),o.push(l));e===a&&(e.b&=-513),e.J.length=0,u&&(o.forEach(h),l.fu(e,1))}
let v=a?a.d.s.m:-1;return t.us!==v&&(t.us=v),t.us===-1?u&&t._u&&t._u():s<5&&s&&(l.fu(a,0),s=6),s}
;l.tryToKeepAliveIfNeeded_mv3_non_ff=e=>{if(e!==t.us||i)return
;for(let e of t.a.values())if(e.J.length)return void(t.us=e.d.s.m)
;let l=30001-performance.now()%3e4|0,r=l>3e3?Math.max(1e3,l-5e3)|0:l>1200?0:-1;t.us=-1,r<0?y(1):i=setTimeout(y,r,1)},
l.fu=(e,l)=>{let u=e.b;if(u&524288||!(u&131072||r.isNotPriviledged(e.d)))return;let o=e.d.s.m;n.p(o,-1,null,(e,l)=>{
typeof VApi=="object"&&VApi&&VApi.q(0,l)},[0,512|(l?8:0)|u&126976],()=>{let e=t.a.get(o);return e&&(e.b&=-524289),n.g()
}),u&=-258561,e.b=u|524288};let w=(e,r,u)=>{r.s.b|=u&16&&8,e||l.fu({d:r,R:null,J:[],rs:null,b:131072},0);let o=u
;if(u&512);else if(u>>13===t.au||e&&e.b&126976){if(!(u&2&&e&&e.b&512))return;o=e.b&258048,(o&131072||r.s.Q)&&l.fu(e,0)
}else o=126976;o&8192&&r.postMessage({N:6,d:t.V,v:t.au}),o&32768&&r.postMessage({N:9,m:t.wo,t:t.yo,k:o&65536?t.Nn:null,
v:t.au}),o&16384&&r.s.b&8&&(r.s.b|=32,r.postMessage({N:11,H:t.du,f:n.k(r.s)}))};l.si=(e,t)=>{
let u=r.Xe(),o=e&&(t?e.d:e.R);if(e&&(!o||o.s.b&512)){
l.fu(e,0),/^(?:http|file|ftp)/i.test(e.d.s.Jl)||n.selectTab(e.d.s.m,n.selectWndIfNeed);let r=0,o=setInterval(()=>{r++
;let l=t?e.d:e.R;r!==5&&(!l||l.s.b&512)||(clearInterval(o),u.Le())},33)}else u.Le();return u.Ge},f?setInterval(()=>{
if(++a>=37)return;let e=e=>{let l=e&&e.J.length?e.d.s.b&512?e.R||e.J[0]:e.d:null
;return!l||l.s.b&512||!l.s.Jl.startsWith("http")&&!l.s.Jl.startsWith("file:")?null:l
},r=e(t.a.get(t.he))||(t.us!==t.he&&t.us>0?e(t.a.get(t.us)):null);if(!r)for(let l of t.a.values())if(r=e(l))break
;!r&&y(1)<5&&(r=e(t.a.get(t.us)));let u=0;r&&(u=l.safePost(r,{N:11,H:null,k:0,t:""})),u||n.getCurTab(t.u)
;let o=performance.now();o-s>113900&&(s=o,y(0))},24e3):setInterval(y,144e3,0)});

View File

@@ -0,0 +1,106 @@
"use strict"
;__filename="background/request_handlers.js",define(["require","exports","./store","./utils","./browser","./normalize_urls","./parse_urls","./settings","./ports","./exclusions","./ui_css","./i18n","./key_mappings","./run_commands","./run_keys","./tools","./open_urls","./frame_commands","./tab_commands"],function(e,l,t,r,n,i,o,u,f,s,a,d,m,v,p,c,b,g,y){
let N;Object.defineProperty(l,"__esModule",{value:!0}),t.hn=[(e,l)=>{let r=e.handler
;r&&typeof r=="string"&&(r==="focus"?(l.s.b&4||(l.s.b|=4,l.postMessage({N:8
})),t.hn[12]({},l)):r==="command"?v.executeExternalCmd(e,null,l):r==="tip"&&(t.O=f.indexFrame(l.s.m,0)||l,
f.showHUD(e.tip||"Error: Lack .tip")))},()=>0,(e,l)=>{let r=e.k,n=u.Ni;if(!(r>=0&&r<n.length))return t.O=l,
f.complainLimits(d.A("notModify",[r]));let i=n[r],o=t.Di;t.z[i]!==e.v&&(o?o.then(()=>{u.ho(i,e.v)}):u.ho(i,e.v))
},(e,l)=>{let t=typeof e=="object";return c.ce.ln(l.s.se,t?e.q:"",t?1:e)},(e,l)=>{let t=o.Ne(e);if(e.i==null)return t
;l.postMessage({N:44,i:e.i,s:t})},(e,l)=>{let i=e.u,u=e.e,s=o.qi(e);r.Gl(),e.e=s,s.p==null?(t.O=l,
f.showHUD(s.u)):u||i!==s.u?!l||s.u.slice(0,7).toLowerCase()==="file://"&&i.slice(0,7).toLowerCase()!=="file://"?n.tabsUpdate({
url:s.u}):v.sendFgCmd(18,!1,{r:1,u:s.u}):(t.O=l,f.showHUD("Here is just root"),e.e={p:null,u:"(just root)"})},(e,l)=>{
let r,n=o.Ne(e);if(!n||!n.k)return t.O=l,f.showHUD(d.A("noEngineFound")),void(e.n&&v.runNextCmdBy(0,e.n))
;let i=e.o||b.parseOpenPageUrlOptions(e.n),u={}
;r=e.t.trim()&&t.S(e.t.trim(),524288,i.s,u).trim()||(e.c?t.Vl(i.s,0,u={}):""),Promise.resolve(r).then(r=>{var o
;let s=r===null?"It's not allowed to read clipboard":(r=r.trim())?"":d.A("noSelOrCopied");if(s)return t.O=l,
f.showHUD(s),void(e.n&&v.runNextCmdBy(0,e.n));i.k=(o=u.F)!==null&&o!==void 0?o:i.k==null?n.k:i.k,t.hn[8]({u:r,o:i,r:0,
n:v.parseFallbackOptions(e.n)||{}},l)})},(e,l)=>{let r=e.s,i=e.a!==0,o=e.a===2,u=t.we;if(t.O=f.findCPort(l),
typeof r=="number")return void n.selectTab(r,e=>(n.g()?f.showHUD(d.A("noTabItem")):n.selectWnd(e),n.g()))
;if(!n.Ie())return void f.complainNoSession();let s=l&&l.s.m>=0?l.s.m:t.he>=0?t.he:null,a=i?null:s
;n.Ie().restore(r[1],e=>{let l=n.g();return l?f.showHUD(d.A("noSessionItem")):y.Te(u,e,a).then(e=>{
o&&s&&e&&e.windowId!==u&&n.tabsGet(s,l=>{n.Me.move(e.id,{windowId:u,index:l?l.index+1:-1},n.g),n.tabsUpdate(e.id,{
active:!0})})}),l}),a&&n.selectTab(a,n.g)},b.openUrlReq,(e,l)=>{let r,n=l.s.m,i=t.a.get(n)
;if(!i)return void(t.r&&t.o(n,l.s.f));let o=i.d;l!==o&&(i.d=l,t.r&&(r=l.s.f)!==o.s.f&&t.o(n,r))},(e,l)=>{let r=l
;if(!r&&(r=f.indexFrame(e.tabId,e.frameId),!r)){let l=t.a.get(e.tabId);return void(l&&l.b&512&&(l.b|=4096))}
let{s:n}=r,i=n.Jl,o=t.a.get(n.m),u=n.Jl=l?e.u:e.url;if(o&&o.rs)return;let a=s.ss?s.as(u,n):null,d=a===null?0:a?1:2
;if(n.f!==d)n.f=d,t.r&&o.d===r&&t.o(n.m,d);else if(!a||a===s.as(i,n))return;r.postMessage({N:1,p:a,f:0})},(e,l)=>{
let r,n=e.t||0
;t.O=l,t.x=n||t.x>0?1:-1,t.Re=e.k,v.replaceCmdOptions(e.f||{}),n!==2?n===1?g.parentFrame():g.nextFrame():(r=f.An(l))?g.focusFrame(r.d,r.J.length<=2,e.o?1:2):f.safePost(l,{
N:45,l:t.Re})},(e,l)=>{let t=f.An(l);if(!t)return;if(l.s.b|=4,t.b|=4,t.J.length<2)return;let r={N:8};for(let e of t.J){
let l=e.s.b;e.s.b|=4,l&4||e.postMessage(r)}},(e,l,r)=>{let i=l.s.m,o=f.An(l),u=e.u;if(!o||o.J.length<2)return!1
;let s,a,d=u.startsWith("http")?new URL(u).origin:null;for(let e of o.J)if(e!==o.R&&e!==l){
if(e.s.Jl===u&&!(s=s?0:e))break;d&&a!==0&&e.s.Jl.startsWith("http")&&new URL(e.s.Jl).origin===d&&(a=a?0:e)}
return s=s!==null&&s!==void 0?s:a,s&&s!==l?(t.Re=e.k,k(e,l,s,1,1),!0):!!n.N()&&(n.N().getAllFrames({tabId:l.s.m},r=>{
let n=0,o=l.s.Q;for(let e of r)if(e.parentFrameId===o){if(n){n=0;break}n=e.frameId}let u=n&&f.indexFrame(i,n)
;u&&(t.Re=e.k,k(e,l,u,1,1))}),!!r&&l)},g.initHelp,(e,l)=>{f.An(l).b|=4,l.s.b|=12,l.postMessage({N:11,H:t.du})},(e,l)=>{
var n;let{i}=e;if(t.Re=0,e.u!=null){let{m:l,t:r}=e,i=l>=42&&l<=64,u=e.u,f={};u=i?o.Ti(u,!0):u,
u=t.S(u,i?1048576:524288,e.o&&e.o.s,f),v.replaceCmdOptions({url:u,newtab:r!=null?!!r:!i,
keyword:(n=f.F)!==null&&n!==void 0?n:e.o.k}),I(e.f),t.x=1}else{if(e.r!==9)return;if(t.$==null||t.$.k!=="omni"){
if(i)return;t.$=r.i(),t.x=1}else if(i&&t.$.v===t.Ze.Jn)return}t.O=l,g.showVomnibar(!!i)},(e,l)=>{
f.isNotVomnibarPage(l,!1)||t.xl.er(e.q,e,_.bind(l,e.i|0))},(e,l)=>{var n;if(e.i!=null){
let n=(e.r||"")+"",i=e.i,o=n.includes("name")?e.u:""
;return void Promise.all([/^data:/i.test(i)?Promise.resolve(i):r.Gi(i||e.u),null]).then(([e,i])=>{
let u=typeof e=="string",s=u?e:e?e[1]:"";t.O=l
;let a=s.indexOf(",")+1,m=s.slice(5,Math.max(5,a)).toLowerCase(),v=m.split(";")[0]
;if(!e||v.startsWith("text/"))return void(e?f.showHUD("",74):f.showHUD(d.A(e===0?"downloadTimeout":"downloadFail")))
;let p=s.slice(a,a+24);p=m.includes("base64")?r.rl(p,"atob"):p.slice(0,16)
;let c=p.startsWith("\x89PNG")?"PNG":p.startsWith("\xff\xd8\xff")?"JPEG":/^GIF8[79]a/.test(p)?"GIF":/^ftypavi[fs]/.test(p.slice(4))?"AVIF":/^\xff\xd8\xff(\xdb|\xe0|\xee|\xe1[^][^]Exif\0\0)/.test(p)?"JPEG":p.slice(8,12)==="WEBP"?"WebP":(v.split("/")[1]||"").toUpperCase()||v,b=o&&/^(http|ftp|file)/i.test(o)?o:"",y=n.includes("safe")&&c!=="GIF"||n.includes("force")
;g.handleImageUrl(s,u?null:e[0],y&&c!=="PNG"?9:1,e=>{
f.showHUD(d.A(e?"imgCopied":"failCopyingImg",[e===1?"HTML":y?"PNG":c]))},o,b,null,!1),r.Gl()})}
let i=e.n,u=e.o||i&&b.parseOpenPageUrlOptions(i)||{},s=!!(i&&i.copy&&i.o),a=e.s,p=a!=null&&e.m||0,c=s?null:u.s,y=s?null:u.k,N=p>=42&&p<=64&&(!c||c.r!==!1)
;if(!a&&i&&!(i.type==="frame"||e.u&&!l.s.Q&&"tab-url tab".includes(i.type||""))){let e=i.type,n=v.concatOptions(i,r.Sn({
url:null,type:e==="tab"&&i.url||e==="tab-url"?null:e==="tab-title"?"title":e})),o=f.An(l).R;return l=!o||o.s.b&512?l:o,
t.ki=null,void v.executeCommand(m.ai("copyCurrentUrl",n),1,t.Re,l,1,i.$f&&{c:i.$f,r:i.$retry,u:0,w:0})}
let _=e.u||a||"",k=!a&&(e.d?u.d!==!1:!!u.d),I=(n=e.t)!==null&&n!==void 0?n:i===null||i===void 0?void 0:i.trim;if(I){
let e=I==="start"||I==="left"?e=>e.trimLeft():I==="end"||I==="right"?e=>e.trimRight():e=>e.trim()
;if(typeof _=="string")_=e(_);else for(let l=_.length;0<=--l;)_[l]=e(_[l]+"")}
if(k)if(typeof _!="string")for(let e=_.length;0<=--e;)N&&(_[e]=o.Ti(_[e]+"")),_[e]=r.Dl(_[e]+"");else N&&(_=o.Ti(_)),
_=r.Dl(_);else typeof _=="string"&&(_=_.length<4&&!_.trim()&&(_[0]===" "||"\n\n\n".includes(_))?"":_)
;let P=!!_,x=_&&t.Ql(_,e.j,c,y,I===!1);x=a&&typeof a=="object"?`[${a.length}] `+a.slice(-1)[0]:x,
Promise.resolve(x).then(n=>{
t.O=l,i&&v.runNextCmdBy(P?1:0,i)||f.showHUD(k?n.replace(/%[0-7][\dA-Fa-f]/g,decodeURIComponent):n.replace(n.trim()?/[^\S ]/g:/[^]/g,e=>(e=JSON.stringify(e).slice(1,-1)).trim()?e:e<"\xff"?"\\x"+(e.charCodeAt(0)+256).toString(16).slice(1):r.$l(e)),e.u?14:15)
})},(e,l)=>{let n=l!=null?l.s:null;if(n!==null&&!(n.b&4)){n.b|=4;let e=f.An(l);e&&(e.b|=4)}
let i=e.k,o=1,u=/^\d+|^-\d*/.exec(i);if(u!=null){let e=u[0];i=i.slice(e.length),o=e!=="-"?parseInt(e,10)||1:-1
}else i.length>6&&i.startsWith(`<c-v-${i[5]}>`)&&(i=i[5]+i.slice(7));let s=t.Ln.get(i);s||(u=i.match(m.mo),
i=u[u.length-1],o=1,s=t.Ln.get(i)),r.Gl(),s&&(s.Rn===38&&s.Vn&&t.na(s),e.e&&(t.ki={element:r.Li(e.e)}),
v.executeCommand(s,o,e.l,l,0,null))},v.waitAndRunKeyReq,(e,l)=>{if(e.c===2){let l=c.ve.pe(e.u)
;return void(e.f&&v.runNextCmdBy(l>0?1:0,e.f))}let r=!!e.f,n=e.c.o;r||(t.O=l);let i=!r&&g.me(l,n.type,e.l)||l
;Promise.resolve(i).then(t=>{if(!(r||t===l&&e.u)){let l=e;return l.U=(n.extUrl?1:0)|(e.c.a?2:0),l.f=!0,
void f.be(l,!0,1,t)}
e.c.a===1?(c.ve.ho(e,l.s.se,l.s.m),f.showHUDEx(l,"mNormalMarkTask",1,[["mCreate"],[e.l?"Local":"Global"],e.n]),
v.runNextCmdBy(1,n)):c.ve.Ji(n,e,l,e.l&&r?e.k:0)})},b.Je,v.onBeforeConfirm,v.onConfirmResponse,(e,l)=>{var r
;if(e.t==="e")return void f.showHUD(d.A("cannotDelSug"))
;let{t:i,s:o,u}=e,s=i==="history"&&o!=null?"session":i,a=s==="tab"?s:s+" item",m=e=>{
Promise.resolve(d.A("sugs")).then(l=>{f.showHUD(d.A(e?"delSug":"notDelSug",[l&&d.no(l,s[0])||a]))})}
;if(t.O=f.findCPort(l),
s==="tab"&&t.he===o)f.showHUD(d.A("notRemoveCur"));else if(s!=="session")t.xl.bl(s==="tab"?o:u,s,m);else if((r=n.Ie())===null||r===void 0?void 0:r.forgetClosedTab){
let e=o;n.Ie().forgetClosedTab(e[0],e[1]).then(()=>1,t.u).then(m)}},g.openImgReq,(e,l)=>{t.O=null,
b.openJSUrl(e.u,{},()=>{t.O=l,f.showHUD(d.A("jsFail"))})},(e,l)=>{var t
;e.c!==2&&e.c!==4?k(e,l,((t=f.An(l))===null||t===void 0?void 0:t.R)||null,e.f):f.getParentFrame(l.s.m,l.s.Q,1).then(t=>{
var r;k(e,l,t||((r=f.An(l))===null||r===void 0?void 0:r.R)||null,e.f)})},(e,l)=>{e.t?(v.overrideCmdOptions({enable:e.v,
forced:!0}),t.M[46](null,t.u)):a.qe(1,e.v,e.b?2:9,l)},(e,l)=>{v.replaceCmdOptions({active:!0,returnToViewport:!0,
extend:!!(e.c&1),direction:e.c>=56?"before":null}),t.O=l,t.x=1,g.performFind()},g.framesGoBack,()=>(d.eo&&d.eo(),
d.lo),(e,l)=>{l.s.b|=8},(e,l)=>{v.replaceCmdOptions({mode:e.c?"caret":"",start:!0}),I(e.f),t.O=l,t.x=1,
g.enterVisualMode()},e=>{if(performance.now()-e.r.n<500){let l=e.r.c;l.element=r.Li(e.e),p.runKeyWithCond(l)}},(e,l)=>{
var r;let u=e.o||{},s={},a=t.S(o.Ti(e.u,!0),1048576,u.s,s),d=(r=s.F)!==null&&r!==void 0?r:u.k
;a=a!==e.u||d?i._r(a,d,0):a,t.O=l,f.showHUD(a,78),n.downloadFile(a,e.f,e.r||"").then(e.m<44?r=>{r||t.hn[26]({m:37,f:e.f,
u:a},l)}:void 0)},(e,l,t)=>e===0?9:(setTimeout(()=>{f.sendResponse(l,t,9)},e),l),({k:e,v:l})=>{let t=l!==!!l
;f.showHUD(d.A(t?"useVal":l?"turnOn":"turnOff",[e,t?JSON.stringify(l):""]))},(e,l)=>{t.hn[19](e,f.findCPort(l))
},(e,l,r)=>!(l.s!==!1&&!l.s.Jl.startsWith(t.ll))&&(P(e.q,e.i,l).then(e=>{l.postMessage(r?{N:4,m:r,r:e}:e)}),l),(e,l)=>{
let r=e.u,n=r.indexOf("://");r=n>0?r.slice(r.indexOf("/",n+4)+1):r,r=r.length>40?r.slice(0,39)+"\u2026":r,t.O=l,
f.showHUD(r,78)},(e,l)=>{let n=e.t,i=r.Dl(e.u),o=n&&i?(t.Wn.actions.find(e=>e.startsWith("itemJoin="))||"").slice(9):""
;o=o?o.includes("\\")?r.tryParse(o[0]==='"'?o:`"${o}"`):r.rl(o):"\n",t.hn[18]({s:n&&i?n+o+i:i||n,d:!1,m:0
},f.findCPort(l))},(e,l)=>{t.O=f.findCPort(l),f.showHUD(e.t,15)},(e,l)=>{
f.showHUDEx(l,"mLocalMarkTask",1,[[e.n?"mCreate":"mJumpTo"],e.i>1?e.i:["mLastMark"]]),t.O=l,v.runNextCmdBy(1,e.c.o)
},()=>{let e=t.Cn(null,null);return e&&(clearTimeout(e.i),e.r&&e.r(!1)),!e},(e,l)=>{let r=e>0&&f.indexFrame(l.s.m,e)
;return r?(g.focusFrame(r,!1,2,1),2):(e<=0&&t.hn[45](),e?4:2)},()=>{},(e,l)=>{
let[r,n,i]=e.s,o=i&&(n?"^ ":"")+i.join(" "),u={N:1,p:o,f:r};l.postMessage(u);let s=f.An(l),a=r===3?2:0
;if(s&&(!s.rs||s.rs.f!==a||s.rs.ts!==o)){s.rs={f:a,ts:o},t.r&&s.d.s.f!==a&&t.o(l.s.m,a);for(let e of s.J)e.s.f=a,
e.s.b&512||e.postMessage(u)}},(e,l)=>{let r=l.s.m,i=0,o=setInterval(()=>{let e=t.a.get(r);r!==t.he&&e?(clearInterval(o),
(e.J.includes(l)||l.s.b&512)&&n.selectTab(r,n.selectWndIfNeed)):(++i>=12||!e)&&clearInterval(o)},17)}]
;let _=function(e,l,n,i,o,u,s,a){let d=e===2?2:0;t.Tn<104&&(d=0),f.safePost(this,{N:43,a:n,c:a,i:d,l,m:i,r:s,s:o,t:u}),
r.Gl()};t.Vi=(e,l,r,n,i)=>{e.postMessage({N:7,H:i||l!==4?f.ensureInnerCSS(e.s):null,m:i?5:0,k:i?t.Re:0,f:{},c:l,n:n||0,
a:r})};let k=(e,l,r,n,i)=>{r&&(i||r.s.f!==2)?t.Vi(r,e.c,e.a,e.n,n):(e.a.$forced=1,v.portSendFgCmd(l,e.c,!1,e.a,e.n||0))
},I=e=>{e&&(typeof e=="string"&&(e=p.parseEmbeddedOptions(e)),e&&typeof e=="object"&&Object.assign(t.$,r.Sn(e)))
},P=(e,l,t)=>(N||(N=u.vl.then(()=>n.import2("/background/page_handlers.js"))),
N.then(l=>Promise.all(e.map(e=>l.onReq(e,t)))).then(e=>({i:l,a:e.map(e=>e!==void 0?e:null)})))});

View File

@@ -0,0 +1,76 @@
"use strict"
;__filename="background/run_commands.js",define(["require","exports","./store","./utils","./browser","./normalize_urls","./ports","./i18n","./key_mappings"],(e,l,t,r,n,u,i,o,s)=>{
Object.defineProperty(l,"__esModule",{value:!0
}),l.initHelpDialog=l.waitAndRunKeyReq=l.runNextOnTabLoaded=l.runNextCmdBy=l.getRunNextCmdBy=l.runNextCmd=l.makeFallbackContext=l.wrapFallbackOptions=l.parseFallbackOptions=l.hasFallbackOptions=l.executeExternalCmd=l.executeShortcut=l.portSendFgCmd=l.sendFgCmd=l.onConfirmResponse=l.onBeforeConfirm=l.P=l.ne=l.executeCommand=l.fillOptionWithMask=l.overrideOption=l.overrideCmdOptions=l.concatOptions=l.copyCmdOptions=l.replaceCmdOptions=void 0
;let f,a,m,$=Math.abs,p=0,d=1;l.replaceCmdOptions=e=>{t.$=r.Sn(e)},l.copyCmdOptions=(e,l)=>{
for(let t in l)(t[0]!=="$"||"$then=$else=$retry=$f=".includes(t+"=")&&!t.includes("="))&&(e[t]!==void 0||(e[t]=l[t]))
;return e},l.concatOptions=(e,t)=>t&&e?l.copyCmdOptions(l.copyCmdOptions(r.i(),t),e):e||t||null,
l.overrideCmdOptions=(e,l,n)=>{let u=n||t.$;r.Zn(r.Sn(e),u),l?delete e.$o:e.$o=u,n||(t.$=e)},l.overrideOption=(e,r,n)=>{
(n=n||t.$)[e]=r;let u=n.$o;u!=null&&l.overrideOption(e,r,u)},l.fillOptionWithMask=(e,n,i,o,s,f)=>{
let a,m=-1,$=n,p=$===!0||$==="";if(p){let l,t=/\$\$|[$%][sS]/g;for(;(l=t.exec(e))&&l[0]==="$$";);$=l&&l[0]||"$s"}
let d,c=null,v=!1,_=!!$&&typeof $=="string"&&e.includes($),y=f||t.$,g=()=>{if(c!==null||h!==1)return c||"";let e=i&&y[i]
;if(e)a=i;else{let l=Object.keys(y).filter(e=>e[0]!=="$"&&!o.includes(e)&&y[e]===!0);if(l.length===1)e=a=l[0];else{
if(n!=="")return h=l.length,"";e=""}}return m=1,c=e+"",c=$==="$s"||$==="%s"?r.ql(c):c,c},h=1,b=0
;if(p?((e.includes(d="$c")||e.includes(d="%c"))&&(m=1,
v=!0),e=e.replace(new RegExp("\\$\\{([^}]*)}|\\$\\$"+(v?"|"+r.hl(d):"")+(_?"|"+r.hl($):""),"g"),(e,l)=>{
if(e===$)return g();if(e===d)return s+"";if(!l)return"$";m=1,b++;let n=!1,i=u.gi.exec(l);i&&(l=l.slice(0,i.index)),
/^[sS]:/.test(l)&&(n=l[0]==="s",l=l.slice(2));let o=u.$i.exec(l)||u.bi.exec(l)
;o&&(l=o[0][0]==="<"?l.slice(0,o.index):l.slice(o[0].length))
;let f=o?t.Fl(o[0][0]==="<"?o[0].slice(1):o[0].slice(0,-1)):l==="__proto__"||l[0]==="$"?"":l?y[l]:g()
;return f=typeof f=="string"?f:f&&typeof f=="object"?JSON.stringify(f):f+"",i&&(f=t.S(f,0,r.rl(i[0].slice(1)))),
n?r.ql(f):f})):_&&(g(),c!==null&&(e=e.replace($,()=>c))),h!==1)return{ok:0,result:h};if($&&typeof $=="string"){
let e=f||{};f||l.overrideCmdOptions(e),e.$masked=!0,a&&delete e[a]}return{ok:m,value:c||"",result:e,useCount:v,useDict:b
}};let c=e=>{let l=f;if(f=null,l)if(a){let{Ge:t,Le:n}=r.Xe();l(e,n),t.then(g)}else l(e,t.u);return t.ki=null,
e?void 0:n.g()},v=e=>{l.executeCommand(e,1,t.Re,t.O,t.x)};l.executeCommand=(e,u,o,m,p,d)=>{if(y(0),f)return f=null,
void(t.ki=null);let _,h=s.zn(e),b=e.vo
;if(h&&(_=h.$count)&&(u=u*_||1),(u=p||(u>=1e4?9999:u<=-1e4?-9999:u|0||1))===1);else if(b===1)u=1;else if(b>1&&(u>b||u<-b)){
if(d!=null)u=u<0?-1:1;else if(!(p||h&&h.confirmed===!0))return t.Re=o,t.$=null,t.O=m,t.x=u,t.ki=null,
void l.P(e.ra,$(u)).then(v.bind(null,e))}else u=u||1;if(d!=null){let r=d.r|0
;if(r=Math.max(1,r>=0&&r<100?Math.min(r||6,20):$(r)),d.c&&d.c.i>=r&&(!h||h.$else!=="showTip"))return t.O=m,
i.showHUD(`Has run sequential commands for ${r} times`),void(t.ki=null);let n=l.makeFallbackContext(d.c,1,d.u)
;if(h&&((e.Rn===38||n.t)&&e.Vn||l.hasFallbackOptions(h))){let t={};l.overrideCmdOptions(t,!1,h),t.$retry=-r,t.$f=n,
n.t&&e.Vn&&!h.$else&&(t.$else="showTip"),h=t}}if(e.Vn);else{if(m!=null){
let{Rn:r}=e,n=4620>>r&1||r===4&&!!h&&h.keepHover===!1;return t.O=m,t.ki=null,void l.portSendFgCmd(m,r,n,h,u)}{
let l=e.Rn,t=0;if(l===18?n.Me.goBack&&(t=23):l===11&&(t=14),!t)return;e=s.ai(e.ra,h,[t,1,e.vo])}}let{Rn:T}=e,j=t.M[T]
;if(a=e.go,a===null&&(a=e.go=h!=null&&l.hasFallbackOptions(h)),t.Re=o,t.$=h||(e.po=r.i()),t.O=m,t.x=u,u=t.y[T],
m==null&&T<13&&T>2);else if(u<1){if(a){let{Ge:e,Le:l}=r.Xe();j(l),e.then(g)}else j(t.u);t.ki=null}else a=e.go,f=j,
(u<2||u===2&&$(t.x)<2?n.getCurTab:n.le)(c)},l.ne=()=>d&&t.$.confirmed!==!0,l.P=(e,n)=>{if(!t.O)return f=null,
t.x=t.x>0?1:-1,Promise.resolve(t.x>0);let u=typeof e=="string"?e:typeof e[0]=="string"?e[0]:null
;if(!m&&u)return l.initHelpDialog().then(()=>l.P(e,n));let{Ge:s,Le:a}=r.Xe(),$=t.x,c=t.$,v=t.O
;return y(setTimeout(_,2e3,0,void 0)),f=e=>{t.Re=0,t.$=c,t.O=v,t.x=e?$>0?1:-1:$,d=0,a(e),setTimeout(()=>{d=1},0)},
Promise.resolve(u?o.A("cmdConfirm",[n,t.oa[1].get(m.ea(u))||`### ${u} ###`]):e[0][0]).then(l=>{var r
;(((r=i.C())===null||r===void 0?void 0:r.R)||t.O).postMessage({N:12,c:"",i:p,m:l,r:typeof e!="string"})}),s}
;let _=(e,l)=>{let t=f;f=null,(e>1||(l===null||l===void 0?void 0:l.i))&&t&&t(e<3)},y=e=>{p&&clearTimeout(p),p=e}
;l.onBeforeConfirm=e=>{e.i>=-1&&p===e.i&&clearTimeout(e.i)},l.onConfirmResponse=(e,t)=>{
let r=typeof e.i!="number"?e.i.i:0
;e.i===0||r>=-1&&p!==r||(y(0),e.r?_(e.r,e.i):l.executeCommand(s.uo.get(e.i.c),e.n,0,t,0))},l.sendFgCmd=(e,r,n)=>{
l.portSendFgCmd(t.O,e,r,n,1)},l.portSendFgCmd=(e,l,t,r,n)=>{e.postMessage({N:10,H:t?i.ensureInnerCSS(e.s):null,c:l,n,a:r
})},l.executeShortcut=(e,u)=>{let o=s.uo.get(e),f=o.Rn===38&&o.Vn;if(f&&t.na(o),y(0),u&&!(u.d.s.b&512)){let t=u.d
;return y(setTimeout(l.executeShortcut,100,e,null)),t.postMessage({N:12,c:e,i:p,m:"",r:!1}),u.b&512&&i.fu(u,0),
void i.ensuredExitAllGrab(u)}let a=s.zn(o),m=f?"runKey":o.ra,$=o.Rn,d=0,c=o
;if(o.Vn||($===18?n.Me.goBack&&(d=23):$===11&&(d=14)),d)c=s.ai(m,a,[d,1,o.vo]);else{if(!o.Vn)return;d=o.Rn}
d>12||d<3?l.executeCommand(c,1,0,null,0):a&&a.$noWarn||((a||(o.po=r.i())).$noWarn=!0,
console.log("Error: Command",m,"must run on pages which have run Vimium C"))},l.executeExternalCmd=(e,n,u)=>{
let o=e.command;o=o?o+"":"";let f,a=o?s.to[o]:null;if(!a)return
;if(!(u=u||(n.tab?i.indexFrame(n.tab.id,n.frameId||0)||(f=t.a.get(n.tab.id),f?f.d:null):null))&&!a[1])return
;let m=e.options||null,$=e.key,p=s.ai(o,m),d=e.count;p&&(d=d!=="-"?parseInt(d,10)||1:-1,
m&&typeof m=="object"?r.Sn(m):m=null,$|=0,l.executeCommand(p,d,$,u,0))},l.hasFallbackOptions=e=>!(!e.$then&&!e.$else),
l.parseFallbackOptions=e=>{let l=e.$then,t=e.$else;return l||t?{$then:l,$else:t,$retry:e.$retry,$f:e.$f}:null},
l.wrapFallbackOptions=e=>{let r=l.parseFallbackOptions(t.$);return r&&Object.assign(e,r),e},
l.makeFallbackContext=(e,l,t)=>({i:(e?e.i:0)+l,t:t&&t!==2?t:e?e.t:0}),l.runNextCmd=e=>l.runNextCmdBy(e,t.$),
l.getRunNextCmdBy=e=>l.hasFallbackOptions(t.$)?r=>{let u=e&2?r===void 0:n.g(),i=t.$
;return u?l.runNextCmdBy(0,i):l.runNextOnTabLoaded(i,e&1?r:null),e&2?void 0:u}:e&2?t.u:n.g;let g=e=>{
typeof e=="object"?l.runNextOnTabLoaded(t.$,e):typeof e=="boolean"?l.runNextCmdBy(e?1:0,t.$,null):e<0||l.runNextCmdBy(e?1:0,t.$,e>1?e:null)
};l.runNextCmdBy=(e,l,r)=>{let n=e?l.$then:l.$else,u=!!n&&typeof n=="string";if(u){let e={c:l.$f,r:l.$retry,u:0,w:0
},u=n&&/\$D/.test(n.split("#",1)[0]);y(setTimeout(async()=>{let l=t.a.get(t.he);await i.si(l,!0)
;let r=t.O&&t.O.s.m===t.he&&l&&l.J.indexOf(t.O)>0?t.O:l?l.d.s.f===2&&l.J.filter(e=>e.s.f!==2&&!(e.s.b&512)).sort((e,l)=>e.s.Q-l.s.Q)[0]||l.d:null
;l&&i.ensuredExitAllGrab(l),t.I(n,r,e)},u?0:r||50))}return u},l.runNextOnTabLoaded=(e,r,u)=>{let i=e.$then
;if(!(i&&typeof i=="string"||u))return;let o=r=>{let o=Date.now(),d=o<$-500||o-$>=s||a;if(!r||!p)return m=-1,n.g()
;if(d||r.status==="complete"){if(!d&&!t.a.has(r.id)&&(u||r.url.startsWith(location.protocol)))return;y(0),f=null,u&&u(),
i&&l.runNextCmdBy(1,e,u?67:0)}
},s=r!==!1?1500:500,a=!!i&&/[$%]l/.test(i.split("#",1)[0]),m=r?r.id:r!==!1?-1:t.he,$=Date.now();y(setInterval(()=>{
n.tabsGet(m!==-1?m:t.he,o)},a?50:100)),i&&/\$D/.test(i.split("#",1)[0])&&n.tabsGet(m!==-1?m:t.he,o)},
l.waitAndRunKeyReq=(e,r)=>{let n=e.f,u={$then:e.k,$else:null,$retry:n&&n.r,$f:n&&l.makeFallbackContext(n.c,0,n.u)}
;t.O=r,n&&n.u===!1?l.runNextOnTabLoaded(u,null):l.runNextCmdBy(1,u,n&&n.w)},l.initHelpDialog=()=>{let e=t.oa||[]
;return m?Promise.resolve(m):Promise.all([n.import2(t.Ze.HelpDialogJS),e[0]!=null?null:r.so("help_dialog.html"),e[1]!=null?null:o.getI18nJson("help_dialog")]).then(([e,l,r])=>{
let n=t.oa||(t.oa=[null,null]);return l&&(n[0]=l),r&&(n[1]=r),m=e},null)}});

View File

@@ -0,0 +1,123 @@
"use strict"
;__filename="background/run_keys.js",define(["require","exports","./store","./utils","./browser","./ports","./exclusions","./i18n","./key_mappings","./run_commands"],(e,l,t,n,r,i,o,u,f,s)=>{
Object.defineProperty(l,"__esModule",{value:!0
}),l.parseEmbeddedOptions=l.parseKeyNode=l.runKeyInSeq=l.parseKeySeq=l.runKeyWithCond=void 0
;let a=Math.abs,d=["expect","keys","options","mask"],v=0,p=e=>{let l=n.i(),t=[],r=""
;for(let n in e)n.includes("$")||(n.startsWith("o.")?n.length>2&&(l[r=n.slice(2)]=e[n]):d.includes(n)||t.push(n))
;for(let n of t)l[r=n]=e[n];return r?l:null},c=(e,u)=>{let{host:f,iframe:s,fullscreen:a,element:d,incognito:v}=e
;if(f===void 0&&(f=e.host=e.url!=null?e.url:null,delete e.url),v!=null&&t.de===2!=!!v)return 1
;if(typeof f=="string"&&(f=e.host=o.Ol(f)),f!=null){let e,n=u.url
;if(n==null&&(f.t===3?["/*","*"].includes(f.v.p.pathname)&&f.v.p.search==="*"&&f.v.p.hash==="*":f.t===2&&((e=f.v.indexOf("/",f.v.indexOf("://")+3))===f.v.length-1||e===-1))){
let e=i.C(),l=e&&e.R||t.O;n=l?l.s.Jl:null}if(n==null&&(n=i.j(null,!0))instanceof Promise)return n.then(e=>{var n
;u.url=e||(t.O?(((n=i.C())===null||n===void 0?void 0:n.R)||t.O).s.Jl:""),l.runKeyWithCond(u)}),0;if(!o.Rl(f,n))return 1}
if(s!=null){if(!t.O&&s!==!1)return 1;if(typeof s=="string"&&(s=e.iframe=o.Ol(s)||!0),typeof s=="boolean"){
if(s!==!(!t.O||!t.O.s.Q))return 1}else if(!o.Rl(s,t.O.s.Jl))return 1}if(a==null);else{
if(u.fullscreen==null)return r.getCurWnd(!1,e=>(u.fullscreen=!!e&&e.state.includes("fullscreen"),l.runKeyWithCond(u),
r.g())),0;if(!!a!==u.fullscreen)return 1}if(d&&d!=="*"){let l=typeof d=="string"?[]:d
;typeof d=="string"&&(e.element=d.split(",").some(e=>{
let t=(e=e[0]==="*"?e.slice(1):e).indexOf("#"),r=e.indexOf("."),i=e.length;return e&&l.push({
tag:e.slice(0,t<0?r<0?i:r:r<0?t:Math.min(r,t)),id:t>=0?e.slice(t+1,r>t?r:i):"",
classList:n.Ki(r>=0?e.slice(r+1,t>r?t:i):"")}),e==="*"||e.includes(" ")})?(l.length=0,"*"):l);let r=u.element
;if(l.length){if(r==null)return t.O&&i.safePost(t.O,{N:13,n:performance.now(),c:u}),t.O?0:1
;if(!l.some(e=>r===0?e.tag==="body"&&!e.id&&!e.classList:(!e.tag||r[0]===e.tag)&&(!e.id||r[1]===e.id)&&(!e.classList.length||r[2].length>0&&e.classList.every(e=>r[2].includes(e)))))return 1
}}return 2},y=e=>{let l=e.expect;if(e.$normalized)return l
;let t=e=>e?typeof e!="string"?e instanceof Array?e:[]:(e=e.trim()).includes(" ")?e.split(/ +/):n.splitWhenKeepExpressions(e,",").map(e=>e.trim()):[],r=[]
;if(l)if(l instanceof Array)r=l.map(e=>e instanceof Array?{env:e[0],keys:t(e[1]),options:e[2]}:e&&typeof e=="object"?{
env:e.env||e,keys:t(e.keys),options:e.options}:null);else if(typeof l=="object")r=Object.keys(l).map(e=>{
let n=l[e],r=n&&typeof n=="object"&&!(n instanceof Array);return{env:e,keys:t(r?n.keys:n),options:r?n.options:null}
});else if(typeof l=="string"&&/^[^{].*?[:=]/.test(l)){let e=l.includes(":")?/:/:/=/
;r=l.split(l.includes(";")?/[;\s]+/g:/[,\s]+/g).map(l=>l.split(e)).map(e=>e.length!==2?null:{env:e[0].trim(),
keys:t(e[1]),options:null})}return r=r.map(e=>e&&e.env&&(e.keys.length||e.options)?e:null),
s.overrideOption("expect",r,e),s.overrideOption("keys",t(e.keys),e),s.overrideOption("$normalized",1,e),r},$=e=>{
let t=e.startsWith("#")?e.split("+",1)[0]:"";return{tree:l.parseKeySeq(e.slice(t?t.length+1:0)),
options:t.length>1?l.parseEmbeddedOptions(t.slice(1)):null}};l.runKeyWithCond=e=>{let n,r=a(t.x),o=i.C()
;t.O||(t.O=o?o.d:null),e=e||t.ki||{},t.ki=null;let u=y(t.$);for(let l of u){if(!l)continue;let t=l.env,r=t
;if(typeof r=="string"){if(!f.do)return void i.showHUD("No environments have been declared");if(r=f.do.get(r),
r===void 0)return void i.showHUD(`No environment named "${t}"`);if(typeof r=="string"&&(r=f.co(r,2),f.do.set(t,r)),
r===null)continue}let o=c(r,e);if(o===0)return;if(o===2){n=l;break}}
let g,m,h=n&&n.keys.length?n.keys:t.$.keys,j=n?typeof n.env=="string"?`[${n.env}]: `:`(${u.indexOf(n)})`:""
;if(h.length===0)i.showHUD(j+"Require keys: comma-seperated-string | string[]");else if(r>h.length&&h.length!==1)i.showHUD(j+"Has no such a key");else if(g=h[m=h.length===1?0:t.x>0?r-1:h.length-r],
g&&(typeof g=="string"||typeof g=="object"&&g.tree&&typeof g.tree=="object"&&typeof g.tree.t=="number")){
let r=h.length===1?t.x:1;if(typeof g=="string"){let e=t.$.mask;if(e!=null){let l=s.fillOptionWithMask(g,e,"",d,r)
;if(!l.ok)return void i.showHUD((l.result?"Too many potential keys":"No key")+" to fill masks");e=l.ok>0,g=l.result,
r=l.useCount?1:r}g=$(g),e||(h[m]=g)}let o=g.tree,u=g.options
;if(o.t===3||o.val.length===0)return void(o.t===3&&i.showHUD(o.val))
;let a=n&&n.options&&typeof n.options=="object"&&n.options||t.$.options||(t.$.$masked?null:p(t.$))
;a=s.concatOptions(a,u);let c=(v+1)%64||1,y={keys:o,repeat:r,options:a,cursor:o,timeout:0,id:"single",
fallback:s.parseFallbackOptions(t.$)};if(o.val.length>1||o.val[0].t!==0){let n="<v-runKey:$1>".replace("$1",""+c),r={
$seq:y,$then:n,$else:"-"+n,$retry:-999};y.id=n,v=c,s.replaceCmdOptions(r),t.Ln.set(n,f.ai("runKey",r)),
l.runKeyInSeq(y,1,e)}else s.replaceCmdOptions({$seq:y}),b(y,o.val[0]),k(o.val[0],y,e)
}else i.showHUD(j+"The key is invalid")},l.parseKeySeq=e=>{
let l,t=/^([$%][a-zA-Z]\+?)*([\d-]\d*\+?)?([$%][a-zA-Z]\+?)*((<([acmsv]-){0,4}.\w*(:i)?>|[^#()?:+$%-])+|-)(#[^()?:+]*)?/,r={
t:1,val:[],par:null},i=r;for(let o=e.length>1?0:e.length;o<e.length;o++)switch(e[o]){case"(":l=r,r={t:1,val:[],par:r},
l.val.push(r);break;case")":l=r;do{l=l.par}while(l.t===2);r=l;break;case"?":case":":
for(l=e[o]==="?"?null:r;l&&l.t!==2;)l=l.par;l&&!l.val.f||(l=r.par,r.par={t:2,val:{cond:r,t:null,f:null},par:l||(i={t:1,
val:[],par:null})
},l?l.t===1?l.val.splice(l.val.indexOf(r),1,r.par):l.val.t===r?l.val.t=r.par:l.val.f=r.par:i.val.push(r.par),l=r.par),
r={t:1,val:[],par:l},e[o]==="?"?l.val.t=r:l.val.f=r;break;case"+":break;default:
for(;o<e.length&&!"()?:+".includes(e[o]);){let l=t.exec(e.slice(o));if(!l){let l=e.slice(o);return{t:3,
val:"Invalid item to run: "+(l.length>12?l.slice(0,11)+"\u2026":l),par:null}}let i=l[0],u=i.indexOf("#")
;if(u>0&&/[#&]#/.test(i.slice(u)))i=e.slice(o),o=e.length;else if(u>0&&/["\[]/.test(i.slice(u))){
let l=n.Zi(e.slice(o+u));i=i.slice(0,u)+l[0],o+=u+l[1]}else o+=i.length;r.val.push({t:0,val:i,par:r})}o--}
return e.length===1&&i.val.push({t:0,val:e,par:i}),n.Gl(),i};let g=(e,l)=>{let t,n,r=!0,i=e;for(i.t===0&&(t=i.par,
n=t.val.indexOf(i),
i=n<t.val.length-1&&l>0?t.val[n+1]:(r=!1,t));i&&i.t!==0;)if(r&&i.t===1&&i.val.length>0)i=i.val[0];else if(r&&i.t===2)i=i.val.cond;else{
if(!i.par){i=null;break}i.par.t===1?(t=i.par,n=t.val.indexOf(i),r=n<t.val.length-1,r&&l<0&&(l=1),
i=r?t.val[n+1]:t):(t=i.par,r=i===t.val.cond,i=r&&(l>0?t.val.t:(l=1,t.val.f))||(r=!1,t))}return i},b=(e,l)=>{
let n=t.$,r=e.fallback
;l&&n&&(delete n.$then,delete n.$else),r&&(l?e.options=e.options?Object.assign(r,e.options):r:(n===null||n===void 0?void 0:n.$f)&&(r.$f=s.makeFallbackContext(r.$f,0,n.$f.t)),
n&&(n.$f=r.$f))};l.runKeyInSeq=(e,l,n)=>{var r,o
;let f=g(e.cursor,l),a=f&&g(f,1),d=f&&g(f,-1),p=!(f&&(a||d)),c=e.fallback,y=e.id
;p&&("<v-runKey:$1>".replace("$1",""+v)===e.id&&(v=Math.max(--v,0)),t.Ln.delete(y),clearTimeout(e.timeout||0),b(e,f))
;let $=t.$;if(!f){if(c&&s.runNextCmdBy(l>0?1:0,c,1))return
;let e=l>0?0:((r=$.$f)===null||r===void 0?void 0:r.t)||((o=c===null||c===void 0?void 0:c.$f)===null||o===void 0?void 0:o.t)||0
;return void(e&&i.showHUD(u.Ce(`${e}`)))}
let m=a&&$.$then?typeof a.val=="string"?a.val:a.val.prefix:"",h=d&&$.$else?typeof d.val=="string"?d.val:d.val.prefix:"",j=(m.includes("$l")?1:0)+(h.includes("$l")?2:0),A=(m.includes("$D")?1:0)+(h.includes("$D")?2:0)
;(j||A)&&(e.cursor===e.keys&&(s.overrideCmdOptions({}),$=t.$),$.$then=(j&1?"$l+":"")+(A&1?"$D+":"")+$.$then,
$.$else=(j&2?"$l+":"")+(A&2?"$D+":"")+$.$else);let z=p?0:e.timeout=setTimeout(()=>{let e=t.Ln.get(y),l=e&&e.po
;l&&l.$seq&&l.$seq.timeout===z&&t.Ln.delete(y)},3e4);k(f,e,n)},l.parseKeyNode=e=>{let t=e.val
;if(typeof t!="string")return t
;let n=/^([$%][a-zA-Z]\+?|-)+/.exec(t),r=!!n&&n[0].includes("-"),i=!n||"+-".includes(n[0].slice(-1)),o=n?n[0].replace(/[+-]/g,"").replace(/%/g,"$"):""
;t=n?t.slice(n[0].length):t,n=/^\d+/.exec(t);let u=(r?-1:1)*(n&&parseInt(n[0],10)||1);t=n?t.slice(n[0].length):t,
t=i||n||!t.startsWith("+")?t:t.slice(1);let f=t.indexOf("#",1),s=f>0?t.slice(0,f):t,a=null
;return f>0&&f+1<t.length&&(t=t.slice(f+1),a=l.parseEmbeddedOptions(t)),e.val={prefix:o,count:u,key:s,options:a}},
l.parseEmbeddedOptions=e=>{
let l=/(^|&)#/.exec(e),t=l?e.slice(l.index+l[0].length):"",r=e=>/\s/.test(e)?JSON.stringify(e).replace(/\s/g,n.$l):e
;if(e=(l?e.slice(0,l.index):e).split("&").map(e=>{let l=e.split("=",1)[0],t=e.slice(l.length)
;return l?l+(t?"="+r(n.rl(t.slice(1))):""):""}).join(" "),t){let l=t.split("=",1)[0],n=t.slice(l.length)
;e=l?(e?e+" ":"")+l+(n?"="+r(n.slice(1)):""):e}return f.co(e,2)};let k=(e,r,i)=>{
let o=l.parseKeyNode(e),u=r.cursor===r.keys,f=u||o.prefix.includes("$c"),a=o.prefix.includes("$W"),d=t.$,v=a?s.concatOptions(o.options,n.Sn({
$then:"",$else:""})):s.concatOptions(r.options,o.options);r.cursor=e,A(o.key,o.count*(f?r.repeat:1),v,i,null,u),
a&&setTimeout(()=>{s.replaceCmdOptions(d),l.runKeyInSeq(r,1,null)},0)
},m=e=>!e.includes("<")&&!e.includes(":",1),h=e=>m(e)&&t.Ln.get(`<v-${e}>`)||null;t.I=(e,l,n,r)=>{
e=e.replace(/^([$%][a-zA-Z]\+?)+(?=\S)/,"");let i=/^\d+|^-\d*/.exec(e),o=1;if(i!=null){let l=i[0];e=e.slice(l.length),
o=l!=="-"?parseInt(l,10)||1:-1}r&&(o*=r),e=e.replace(/^([$%][a-zA-Z]\+?)+(?=\S)/,"");let u=1
;for(;u=e.indexOf("#",u)+1;){let l=e.slice(0,u-1);if(t.Ln.has(l)||h(l)||/^[a-z]+(\.[a-z]+)?$/i.test(l))break}t.O=l,
t.Re=0,t.$=null,A(u?e.slice(0,u-1):e,o,u?e.slice(u):null,null,n)};let j=e=>{let l=t.$;for(;l&&l!==e;)l=l.$o;return l===e
},A=(e,r,o,u,a,d)=>{let v=e,p=t.Ln.get(e)||m(e)&&t.Ln.get(v=`<v-${e}>`)||null,c=!0;if(p==null&&e in f.to&&(c=!1,
p=f.ai(e,null)),p==null){let l=/^\w+$/.test(e)?v:e
;return void i.showHUD(`"${l.length>=20?l.slice(0,19)+"\u2026":l}" has not been mapped`)}if(p.Rn===38&&p.Vn&&(t.na(p),
j(p.po)))return void i.showHUD('"runKey" should not call itself')
;typeof o=="string"&&(o=o?l.parseEmbeddedOptions(o):null);let y=t.$,$=y&&s.parseFallbackOptions(y),g=y&&y.$f
;if(o&&typeof o=="object"||$||g){let e=f.zn(p);p=c?Object.assign({},p):p;let l=n.i();o&&s.copyCmdOptions(l,n.Sn(o)),
$&&s.copyCmdOptions(l,n.Sn($)),
e&&s.copyCmdOptions(l,e),l.$f=g,o&&"$count"in o?l.$count=o.$count:e&&"$count"in e&&(o&&"count"in o||(l.$count=e.$count)),
p.po=l,f.io(p,f.to[p.Rn===38&&p.Vn?"runKey":p.ra])}n.Gl(),d&&p.Rn===38&&p.Vn?setTimeout(()=>{t.ki=u,
s.executeCommand(p,r,t.Re,t.O,0,a)},0):(t.ki=u,s.executeCommand(p,r,t.Re,t.O,0,a))};t.na=(e,r)=>{var i,o,u,a
;let v=f.zn(e);if(v||(v=e.po=n.i()),v.$normalized===2)return;let c=v,b=!0;y(c),c.$normalized=2;let k=1
;for(c.$count&&(k=c.$count,c=v=s.copyCmdOptions(n.i(),c));c&&y(c).length===0&&c.keys.length>=1;){let y=c.keys,m=y[0]
;if(b=b&&y.length===1,typeof m=="string"){let e=c.mask;if(e!=null){c!==v&&(c=v=s.concatOptions(c,v||n.i()))
;let l=s.fillOptionWithMask(m,e,"",d,1,v);if(!l.ok)return;e=l.ok>0,m=l.result,b=b&&!!l.value&&!l.useCount&&!l.useDict}
m=$(m),e||(y[0]=m)}let j=m.tree.t===1?g(m.tree,1):null;if(!j)return;b=b&&m.tree.val.length===1&&m.tree.val[0]===j
;let A=l.parseKeyNode(j),z=A.key,_=t.Ln.get(z)||h(z);if(_!=null&&_.Rn===38&&_.Vn){if(r||(r=[e]),
r.includes(_))return e.Rn=41,e.ra="showHUD",void(e.po=n.Sn({text:'"runKey" should not call itself'}));r.push(_),
t.na(_,r.slice(0))}let w=_?_.ra:z in f.to?z:null;if(!w)return;let x=_!=null&&_.Rn===38&&_.Vn
;if(!x&&!b)return void(e.ra=w)
;c!==v&&(v=s.concatOptions(c,v)),v=v.options?s.copyCmdOptions(n.i(),v.options):v.$masked?null:p(v)
;let O=(a=(o=(i=A.options)===null||i===void 0?void 0:i.$count)!==null&&o!==void 0?o:(u=m.options)===null||u===void 0?void 0:u.$count)!==null&&a!==void 0?a:v===null||v===void 0?void 0:v.$count
;v=s.concatOptions(s.concatOptions(v,m.options),A.options),
v=!v||v!==m.options&&v!==A.options?v:s.copyCmdOptions(n.i(),v),
v&&("count"in v||O!=null)&&(O=O!=null?parseFloat(O)||1:parseFloat(v.count||1)||1,delete v.count),
k*=(O!==null&&O!==void 0?O:1)*A.count;let T=_&&f.zn(_);if(!x)return v=s.concatOptions(T,v),
v&&v===T&&(v=s.copyCmdOptions(n.i(),v)),k!==1&&((v||(v=n.i())).$count=k),void Object.assign(e,f.ai(w,v))
;c=!v||v.keys===void 0&&v.expect===void 0&&v.mask===void 0?T||n.i():v=s.concatOptions(T,v)}}});

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,18 @@
"use strict";__filename="background/store.js",define(["require","exports"],(e,n)=>{
Object.defineProperty(n,"__esModule",{value:!0
}),n.Ze=n.tl=n.Ii=n.Mo=n.Fr=n.S=n.Fl=n.Vl=n.Ql=n.Di=n.Lo=n.o=n.getNextFakeTabId=n.xl=n.u=n.Cn=n.Hn=n.On=n.Vi=n.na=n.I=n.y=n.M=n.x=n.O=n.Re=n.Il=n.yo=n.Ln=n.wo=n.Nn=n.X=n.Mt=n.Wt=n.re=n.Co=n.Po=n._u=n.de=n.jn=n.we=n.he=n.Vo=n.ze=n.Fe=n.a=n.us=n.pl=n.hn=n.os=n.ul=n.uu=n.Ye=n.oa=n.n=n.Io=n.r=n.Bo=n.du=n.No=n.iu=n.au=n.Wn=n.Ke=n.Hl=n.V=n.vomnibarPage_f=n.newTabUrl_f=n.su=n.z=n.Ho=n.zo=n.vu=n.ll=n.il=n.G=n.Oo=n.Tn=n.el=n.OnSafari=n.OnEdge=n.OnFirefox=n.OnChrome=n.Do=void 0,
n.Do=1,n.OnChrome=!0,n.OnFirefox=!1,n.OnEdge=!1,n.OnSafari=!1;let l,o=navigator.userAgentData.brands
;n.el=!!o.find(e=>e.brand.includes("Edge")||e.brand.includes("Microsoft")),
n.Tn=(l=o.find(e=>e.brand.includes("Chromium")))&&parseInt(l.version)>82?parseInt(l.version):0|(navigator.userAgent.match(/\bChrom(?:e|ium)\/(\d+)/)||[0,998])[1],
n.Oo=999,n.G=2,n.ll=location.origin+"/",n.vu=navigator.language.startsWith("zh"),n.zo=!1,n.Ho=!1,n.z={},n.su=new Map,
n.newTabUrl_f="",n.vomnibarPage_f="",n.V={v:n.Tn,d:"",g:!1,m:!1},n.Hl={map:new Map,rules:[],keywords:null},n.Ke={
v:n.el?-n.Tn:n.Tn,c:"",i:0,l:0,m:null,n:0,s:"",t:""},n.Wn={actions:[],Qn:0},n.au=0,n.iu=0,n.r=!1,n.Ye=new Map,
n.uu=new Map,n.ul=0,n.pl={},n.us=-1,n.a=new Map,n.Fe=[],n.ze=new Map,n.Vo=0,n.he=-1,n.we=-1;n.jn=-1,n.de=0,n._u=null,
n.Po=null,n.Co=null,n.re={ie:[],Ue:[],f:0,Ee:0},n.Wt={Bt:null,Qt:new Map,St:0,Gt:0,Jt:0},n.Mt=new Map,n.Nn=null,
n.wo=null,n.yo=0,n.Il=new Map,n.Re=0,n.O=null,n.x=1,n.On=null,n.Hn=null,n.$=null,n.ki=null,n.Cn=(e,l)=>{
let o=n.On,t=!e||o&&o.i===e;return n.On=t?l:o,t?o:null},n.u=()=>{},n.xl={};let t=-4;n.getNextFakeTabId=()=>t--,n.o=n.u,
n.Lo=n.u,n.Di=null,n.Ql=()=>"",n.Vl=()=>"",n.Fl=()=>"",n.S=e=>e,n.Fr=()=>null,n.Mo=null,n.Ii=null,n.Ze={U:"chrome",Fo:0,
nl:n.el?/^https:\/\/(ntp|www)\.msn\.\w+\/(edge|spartan)\/ntp\b/:"chrome-search://local-ntp/local-ntp.html",ls:!1,
ol:null,fo:"",aa:"",GitVer:"9e78033",is:"/lib/injector.js",En:"/front/vomnibar-tee.html",Bn:"/front/offscreen.html",
HelpDialogJS:"/background/help_dialog.js",Qe:"pages/options.html",ko:"browser",Go:"",
ta:"https://github.com/gdh1995/vimium-c",To:null,ui:"/pages/show.html",Jn:"",cu:"/front/vomnibar.js",Un:""}});

View File

@@ -0,0 +1,53 @@
"use strict"
;__filename="background/sync.js",define(["require","exports","./store","./utils","./browser","./settings"],(e,t,l,n,r,i)=>{
Object.defineProperty(t,"__esModule",{value:!0});let u,o=n.Sn({findModeRawQueryList:1,innerCSS:1,keyboard:1,
newTabUrl_f:1,vomnibarPage_f:1
}),s=r.t.storage,f="sync.cloud:",a=null,y=null,d="",c=null,S=null,p=null,b=()=>u||(u=s&&s.sync),g=(e,t)=>{let l=e=>{
if(c){n.Sn(e);for(let t in c){let l=t.split(":")[0],n=l===t;if(n||!(l in c)){let r=n?c[t]:null
;v(l,r!=null?r.newValue:e[l],e)}}c=null}};if(n.Sn(e),c?Object.assign(c,e):c=e,p)p.then(()=>g({},t));else{e=c,c=null
;for(let t in e){let n=e[t];if((t.includes(":")?8:v(t,n!=null?n.newValue:null))===8)return c=e,void b().get(l)
;delete e[t]}}},m=console.log.bind(console,"[%s]",{toString(){
return new Date(Date.now()-6e4*(new Date).getTimezoneOffset()).toJSON().slice(0,-5).replace("T"," ")}}),v=(e,t,n)=>{
let r,u=t&&typeof t=="object"&&t.$_serialize||"";if(!(e in i.E)||!_(e)){let n=u||!i.$o?-1:i.qo.indexOf(e)
;return void(n>=0&&(r=l.su.get(e),(r!=null?r+"":null)!==(t!=null?t+"":null))&&(i.lu(e,t!=null?t:null),i.xo(n)))}
let o=i.E[e];if(u){if(u==="split"&&!n)return 8;if((t=N(e,t,n))===8)return}
if(t==null)return void(l.z[e]!=o&&(p||m("sync.this:","reset",e),O(e,o)));let s,f,a,y=l.z[e]
;(a=typeof o!="object"||!t||typeof t!="object")?(f=t,s=y):(f=JSON.stringify(t),s=JSON.stringify(y)),
f!==s&&(f===(a?o:JSON.stringify(o))&&(t=o),
p||m("sync.this:","update",e,typeof t=="string"?(t.length>32?t.slice(0,30)+"...":t).replace(/\n/g,"\\n"):t),O(e,t))
},O=(e,t)=>{d=e,e==="keyLayout"&&(t=t&-33|l.z[e]&32),i.ho(e,t),d="",e in i.B&&i.bn({N:6,d:[i.B[e]]})},j=(e,t)=>{
let l=_(e)?1:i.qo.includes(e)?2:0;l&&e!==d&&(a||(setTimeout(J,800),a=n.i()),l===1?(e==="keyLayout"&&(t&=-33),
a[e]=t):(y||(y=[])).push(e))},w=e=>{let t={Q:'\\"',S:"\\\\",d:"`",l:"<",n:"\u2029",q:'"',r:"\u2028"}
;return e.replace(/`[QSdlnqr]/g,e=>t[e[1]])},N=(e,t,l)=>{let n="";switch(t.$_serialize){case"split":
for(let{k:r,s:i}=t,u=0;u<i;u++){let t=l[e+":"+u];if(!t||typeof t!="string"||!t.startsWith(r))return 8
;n+=t.slice(r.length)}break;case"single":return JSON.parse(w(JSON.stringify(t.d)));default:
return m("Error: can not support the data format in synced settings data:",e,":",t.$_serialize),null}
return typeof i.E[e]=="string"?(n=w(n),n):(n=w(JSON.stringify(n)),JSON.parse(n.slice(1,-1)))},k=(e,t,l)=>{
if(!t||(typeof t!="string"?typeof t!="object":t.length<8192/6-40))return;let n=JSON.stringify(t),r=""
;if(n.length<8192/6-40)return;let u=n.length
;n=n.replace(/[<`\u2028\u2029]/g,e=>e==="<"?"`l":e==="`"?"`d":e==="\u2028"?"`r":"`n");let o=n.length
;if(3*(o-u)+u*3<8093)return;if(r=l.encode(n),r.length<8093)return r.length+4*(o-u)<8093?void 0:n
;let s=0,f=Date.now().toString(36)+":",a={}
;n=typeof i.E[e]=="string"?n.slice(1,-1):n.replace(/"|\\[\\"]/g,e=>e==='"'?"`q":e==='\\"'?"`Q":"`S"),
S||(S=new TextDecoder),r=l.encode(n);for(let t=0,l=r.length;t<l;){let i,u=Math.min(t+8134,l),o=0
;for(;u<l&&(r[u]&192)==128;u++);if(i=S.decode(r.subarray(t,u)),n=i.slice(-6),o=u<l?n.lastIndexOf("\\"):-1,
o>0&&o>n.length-2)i+="b",o=1;else if(o>0&&n[o+1]==="u"){o=n.length-o;for(let e=o;e++<6;i+="b");}else o=0
;if(i=JSON.parse(`"${i}"`),o){let e=i.endsWith("b");e||(u-=o),i=i.slice(0,o>1&&e?o-6:-1)}if(a[e+":"+s++]=f+i,t=u,
s>=13)break}return a[e]={$_serialize:"split",k:f,s},a},J=()=>{let e=a,t=y,u=[],o=[],s=[],d=n.i(),c={};if(a=y=null,
!e||l.Lo!==j)return;let p=Object.keys(e).length>0?new TextEncoder:null;for(let t in e){
let l=t,n=e[l],r=i.E[l],f=typeof r=="string"||typeof r=="object"&&l!=="vimSync"?0:13;if(n!=null){let e=k(l,n,p)
;e&&typeof e=="object"?(d[l]=e,f=e[l].s):(c[l]=e?{$_serialize:"single",d:JSON.parse(e)}:n,o.push(l))}else u.push(l)
;for(;f<13;f++)s.push(l+":"+f)}S=p=null,t&&u.push(...t),s.push(...u),u.length>0&&m(f,"reset",u.join(", ")),
s.length>0&&b().remove(s),o.length>0&&(m(f,"update",o.join(", ")),b().set(c));for(let e in d)b().set(d[e],()=>{
let t=r.g();return t?m("Failed to update",e,":",t.message||t):m(f,"update (serialized) "+e),t})
},_=e=>!(e in o),T=(e,t)=>{n.Sn(e);let r=e.vimSync||l.z.vimSync==null&&l.zo;if(l.pl.vimSync(!1,"vimSync"),
!r)return void t();e.vimSync||(m(f,"enable vimSync"),e.vimSync=!0,b().set({vimSync:!0}));let u=[]
;for(let t in l.z)l.z[t]!==i.E[t]&&!(t in e)&&_(t)&&(t==="keyLayout"&&i.$o&2||u.push(t));for(let e of u)v(e,null)
;for(let t in e)t.includes(":")||v(t,e[t],e);i.gl("vimSync"),setTimeout(()=>{t()},4),m(f,"download settings")}
;l.pl.vimSync=e=>{if(!b())return;let t=b().onChanged,n=g;if(!e)return t.removeListener(n),void(l.Lo=l.u)
;l.Lo!==j?(t.addListener(n),l.Lo=j):a&&(m(f,"save immediately"),J())},i.vl.then(()=>{let e=l.z.vimSync
;e===!1||!e&&!l.zo?l.il=null:l.il?(p=l.il.then(e=>(l.il=null,!!e&&e.reason==="install")).then(e=>new Promise(t=>{
b()?b().get(n=>{let u=r.g(),o=e&&l.zo&&(u||Object.keys(n).length===0)?()=>{i.ho("keyLayout",2),t()}:t
;return u?(l.pl.vimSync=l.u,o(),m("Error: failed to get storage:",u,"\n\tSo disable syncing temporarily.")):T(n,o),u
}):t()})).then(()=>{l.Di=null,p=null}),l.Di=Promise.race([p,new Promise(e=>{setTimeout(e,800)})]).then(()=>{l.Di=null,
l.z.vimSync&&l.Lo!==j&&i.gl("vimSync")})):i.gl("vimSync")})});

View File

@@ -0,0 +1,162 @@
"use strict"
;__filename="background/tab_commands.js",define(["require","exports","./store","./utils","./browser","./normalize_urls","./parse_urls","./ports","./i18n","./run_commands","./clipboard","./open_urls","./frame_commands","./filter_tabs","./tools"],(e,l,i,t,n,r,o,d,u,f,a,s,v,w,m)=>{
Object.defineProperty(l,"__esModule",{value:!0
}),l.toggleWindow=l.Te=l.Pe=l.toggleTabUrl=l.togglePinTab=l.toggleMuteTab=l.removeTab=l.reloadTab=l.moveTabToNextWindow=l.moveTabToNewWindow=l.joinTabs=l.copyWindowInfo=void 0
;let c=Math.abs,p=()=>{i.O&&v.focusFrame(i.O,!1,0,1)
},b=e=>i.$.end?null:i.$.position!=null?s.newTabIndex(e,i.$.position,!1,!1):i.$.rightInOld!=null?e.index+(i.$.rightInOld?0:1):e.index+(i.$.right!==!1?1:0)
;l.copyWindowInfo=e=>{
let l=i.$.filter,r=i.$.keyword,o=i.$.decoded,s=o!=null?o:i.$.decode,v=i.$.format,m=i.$.type,p=m==="tab"&&(c(i.x)>1||!!l),b=a.T(i.$),I={
d:s!==!1,s:b,k:r};if(m==="frame"&&i.O&&!v){let l;return i.O.s.b&128?(i.O.postMessage({N:3,H:18,U:1,o:I}),l=1):l=d.be({
H:18,U:1,o:I}),void(l!==1&&(l&&l instanceof Promise?l.then(()=>{e(1)}):e(1)))}n.Me.query(m==="browser"?{
windowType:"normal"}:{active:m!=="window"&&!p||void 0,lastFocusedWindow:!0},o=>{var a
;if((!m||m!=="browser"&&m!=="window"&&m!=="tab"&&typeof m=="string")&&!v){if(!o.length)return void e(0)
;let l=!!m&&/^raw.?url$/i.test(m),r=m==="title"?o[0].title:!m||m==="frame"||m==="url"||l?n.getTabUrl(o[0]):(((a=t.yn(n.getTabUrl(o[0])))===null||a===void 0?void 0:a[m])||"")+"",d=m==="title"?{
s:r}:{u:r};return d.o=I,l&&(I.d=!1),d.n=f.parseFallbackOptions(i.$),void i.hn[18](d,i.O)}
let c=i.O?i.O.s.se:i.de===2,g=""+(v||"${title}: ${url}"),x=i.$.join,_=x==="json"&&!v;if(p){
let e=o.length<2?0:n.selectIndexFrom(o),l=w.getTabRange(e,o.length);o=o.slice(l[0],l[1])
}else o=o.filter(e=>e.incognito===c);if(l){let e=i.O?i.O.s.m:i.he,t=o.find(l=>l.id===e);o=w.oe(t,o,l)}
if(!o.length)return void e(0);m==="browser"&&o.sort((e,l)=>e.windowId-l.windowId||e.index-l.index);let h=o.map(e=>_?{
title:e.title,url:s?t.Dl(n.getTabUrl(e)):n.getTabUrl(e)}:g.replace(/\$\{([^}]+)}/g,(l,i)=>i.split("||").reduce((l,i)=>{
var r;let o
;return l||(s&&i==="url"?t.Dl(n.getTabUrl(e)):/^raw.?url$/i.test(i)?n.getTabUrl(e):i==="host"?((r=t.yn(n.getTabUrl(e)))===null||r===void 0?void 0:r.host)||"":i!=="__proto__"&&(o=e[i],
o&&typeof o=="object"?JSON.stringify(o):o||""))},"")));Promise.resolve(i.Ql(h,x,b,r)).then(l=>{e(1),
d.showHUD(m==="tab"&&o.length<2?l:u.A("copiedWndInfo"),15)})})},l.joinTabs=e=>{
let l=i.$.order!=null?i.$.order:i.$.sort,r=i.$.windows,o=r==="current",d=r==="all",u=u=>{let f=i.de===2
;u=o?u:u.filter(e=>e.incognito===f);let a=o?u:u.filter(e=>e.id===i.we);if(!o&&!a.length)return void e(0);let s=r=>{
let d=[],f=e=>{d.push(e)};if(u.sort((e,l)=>e.id-l.id).forEach(e=>{e.tabs.forEach(f)}),!d.length)return void e(0)
;let a=i.$.filter,s=r?r.id:i.we,v=d.find(e=>e.id===i.he)||(r?n.selectFrom(r.tabs):d[0]);if(o&&c(i.x)>1&&d.length>1){
let e=d.findIndex(e=>e.id===v.id),l=w.getTabRange(e,d.length);d=d.slice(l[0],l[1])}if(a){let e={};d=w.oe(v,d,a,e),
a=e.known?a:null}if(!d.length)return void e(0);d=l?w.Mn(d,l):d
;let m,p=i.$.position,b=p==="before"||(p+"").startsWith("prev")
;a&&r?p&&typeof p=="string"&&p!=="keep"?p==="begin"||p==="start"?m=r.tabs.filter(e=>e.pinned).length:p!=="end"?(d.includes(v)&&d.splice(d.indexOf(v),1),
b?d.push(v):d.unshift(v),
m=Math.max(0,r.tabs.findIndex(e=>e.id===i.he)-d.filter(e=>e.windowId===s&&e.index<v.index).length)):m=r.tabs.length:m=d.reduce((e,l)=>l.windowId===s?Math.min(l.index,e):e,d.length):m=r?r.tabs.length:0
;let I,g=d.some(e=>n.getGroupId(e)!=null),x=t.Xe(),_=d.length,h=()=>(_--,_===0&&x.Le(1),n.g()),y=g?0:_,T=1
;for(;y<d.length;y=T,T=y+1)if(I=n.getGroupId(d[y]),I!==null){for(;T<d.length&&n.getGroupId(d[T])===I;T++);if(T>y+1){
let e=d[y].id,l=d.slice(y+1,T).map(e=>e.id);n.Me.ungroup(l,h),_++,x.Ge.then(()=>{n.Me.get(e,e=>{if(!e)return n.g()
;let i=n.getGroupId(e);n.Me.group(i!==null?{groupId:i,tabIds:l}:(l.unshift(e.id),{tabIds:l}))})})}
d[y].windowId!==s&&(n.t.tabGroups.move(I,{index:-1,windowId:s},h),_++)}
for(y=0;y<d.length;y++)n.Me.move(d[y].id,d[y].windowId!==s?{windowId:s,index:m+y}:{index:m+y},h)
;for(let e of d)e.pinned&&e.windowId!==s&&(n.tabsUpdate(e.id,{pinned:!0},h),_++);x.Ge.then(e)};{let e=a.length?a[0]:null
;if(e&&e.type==="popup"&&e.tabs.length){let l=n.selectFrom(e.tabs).id;e.tabs=e.tabs.filter(e=>e.id!==l),n.makeWindow({
tabId:l,incognito:e.incognito},e.state,e=>{e&&(i.we=e.id,e.tabs[0]&&(i.he=e.tabs[0].id)),s(e)})
}else u=o||!e||d||l&&!r?u:u.filter(l=>l.id!==e.id),s(e)}};o?n.getCurWnd(!0,e=>e?u([e]):n.g()):(i.x=1,n.Be.getAll({
populate:!0,windowTypes:["normal","popup"]},u))},l.moveTabToNewWindow=e=>{let l=!!i.$.all,t=r=>{var o
;let a,s=r.tabs,v=s.length,m=i.$.focused!==!1,I=n.selectIndexFrom(s),g=s[I]
;if(!l&&v<=1&&(!v||g.index===0&&c(i.x)>1))return void e(0);if(l){
for(let l of s)if(n.getGroupId(l)!=null)return d.showHUD("Can not keep groups info during this command"),void e(0)
;a=[0,v]}else a=v===1?[0,1]:w.getTabRange(I,v);let x=i.$.filter,_=s.slice(a[0],a[1]);if(_=x?w.oe(g,_,x):_,
!_.length)return void e(0);if(!l){let l=_.length;if(l>=v&&v>1)return e(0),void d.showHUD(u.A("moveAllTabs"))
;if(l>30&&f.ne())return void f.P("moveTabToNewWindow",l).then(t.bind(null,r))
;if(v===1&&g.index===0&&c(i.x)===1)return void n.ye(n.Me.query,{windowId:r.id,index:1}).then(l=>{
if(!l||!l.length)return e(0),void d.showHUD(u.A("moveAllTabs"));r.tabs=[r.tabs[0],l[0]],t(r)})}
let h=g.incognito,y=_.includes(g)?g:_[0],T=((o=b(g))!==null&&o!==void 0?o:g.index+1)<=g.index,k={tabId:y.id,incognito:h,
focused:m},$=r.type==="normal"?r.state:"";w.Pn(_[T?_.length-1:0],T,s).then(l=>{m||l&&n.selectTab(l.id),
n.makeWindow(k,$,i=>{if(!i)return void e(0);p(),m&&l&&n.selectTab(l.id)
;let t=_.indexOf(y),r=_.slice(0,t),o=_.slice(t+1),d=r.length,u=o.length,f=e=>e.id;d&&(n.Me.move(r.map(f),{index:0,
windowId:i.id},n.g),d>1&&n.Me.move(_[t].id,{index:d})),u&&n.Me.move(o.map(f),{index:d+1,windowId:i.id},n.g)
;for(let e of _)e.pinned&&n.tabsUpdate(e.id,{pinned:!0});e(1)})})},r=l=>{let t=n.selectFrom(l.tabs)
;if(l.incognito&&t.incognito)return e(0),d.showHUD(u.A("hasIncog"));let r=t.id,o={incognito:!0},a=n.getTabUrl(t)
;if(t.incognito);else{if(n.w(a))return e(0),d.complainLimits(u.A("openIncog"));o.url=a}l.tabs=null,n.Be.getAll(t=>{
let d=i.$.focused!==!1;if((t=t.filter(e=>e.incognito&&e.type==="normal")).length)return void n.Me.query({
windowId:s.preferLastWnd(t).id,active:!0},([e])=>{n.tabsCreate({url:a,windowId:e.windowId,active:i.$.active!==!1,
index:s.newTabIndex(e,i.$.position,!1,!1)},f.getRunNextCmdBy(3)),d&&n.selectWnd(e),n.Me.remove(r)})
;let u=l.type==="normal"?l.state:"",v=o.url!=null;v?i.Ze.ls&&(d=!0,u=""):o.tabId=r,o.focused=d,n.makeWindow(o,u,l=>{
v||l&&p(),v&&l?f.getRunNextCmdBy(0)(l.tabs&&l.tabs[0]||null):e(!!l)}),v&&n.Me.remove(r)})},o=!!i.$.incognito
;o&&(i.O?i.O.s.se:i.de===2)?(d.showHUD(u.A("hasIncog")),
e(0)):(l||c(i.x)!==1&&!o?n.ye(n.getCurWnd,!0):n.ye(n.getCurWnd,!1).then(e=>e&&n.ye(n.Me.query,{windowId:e.id,active:!0
}).then(l=>(e.tabs=l,l&&l.length?e:void 0)))).then(l=>{l?(o?r:t)(l):e(0)})},l.moveTabToNextWindow=([e],t)=>{
function r(r,u){let f,a=i.$.focused!==!1,s=i.$.filter,v=!!(i.$.tabs||s||d);if(r.length>0){
f=r.map(e=>e.id).sort((e,l)=>e-l);let l=f.indexOf(e.windowId);if(f.length>=2||f.length>0&&l<0){
let m=i.$.nextWindow,I=d?1:(m==null?1:typeof m=="boolean"?m?1:-1:0|+m||1)*(v?1:i.x),g=d?0:l>=0?I>0?l+1:l:0,x=I>0?g+I-1:g+I
;x=(x%f.length+f.length)%f.length,x=x!==l?x:x+(I>0?1:-1),x=(x%f.length+f.length)%f.length
;let _=f[x],h=r.find(e=>e.id===_),y=a&&!o&&h&&h.state==="minimized"?u&&u.state==="maximized"?u.state:"normal":""
;return void n.Me.query({windowId:_,active:!0},([l])=>{let r=b(l),o=r==null||r>l.index,d=null,u=!1,f=null,m=()=>{
if(u===!1)return void w.Pn(e,!o,f).then(e=>{u=e,m()});let s;a||u&&n.selectTab(u.id),n.Me.move(e.id,{
index:r!==null&&r!==void 0?r:-1,windowId:_},l=>{if(n.g())return t(0),n.selectWnd(e),n.g()
;Promise.resolve(s).then(()=>t(1)),d=d||[e];for(let e=0;e<d.length;e++)d[e].id!==l.id&&n.Me.move(d[e].id,{
index:l.index+e,windowId:l.windowId},n.g),d[e].pinned&&n.Me.update(d[e].id,{pinned:!0});i.O&&i.O.s.m===l.id&&p()}),
a&&(y&&n.Be.update(_,{state:y}),n.selectWnd(l)),s=i.$.active!==!1&&new Promise(l=>{n.selectTab(e.id,l)}),
a&&u&&n.selectTab(u.id)};!v||!s&&c(i.x)===1?m():w.ke(!0,0,(l,n)=>{if(f=l.slice(0),e=l[n[1]],l=l.slice(n[0],n[2]),
i.Tn<52&&(l=l.filter(l=>l.incognito===e.incognito)),s){if(!(l=w.oe(e,l,s)).length)return void t(0)
;e=l.includes(e)?e:l[0]}d=l,u=(d.length!==1||!d[0].active)&&null,m()},[],t)})}}else r=u?[u]:[]
;v&&c(i.x)>1?l.moveTabToNewWindow(t):w.Pn(e,!1).then(l=>{a||l&&n.selectTab(l.id),n.makeWindow({tabId:e.id,
incognito:e.incognito,focused:a},r.length===1&&r[0].type==="normal"?r[0].state:"",i=>{i&&(p(),a&&l&&n.selectTab(l.id)),
e.pinned&&i&&i.tabs&&i.tabs[0]&&n.tabsUpdate(i.tabs[0].id,{pinned:!0}),t(!!i)})})}
let o=i.$.minimized===!1||i.$.min===!1,d=i.$.last;d?w.wn("normal",!1,e.incognito,e.windowId,o).then(e=>{
!e||e instanceof Array?r(e[0].slice(0,1),e[1]):r([e])}):n.Be.getAll(l=>{
r(l.filter(l=>l.incognito===e.incognito&&l.type==="normal"&&(!o||l.state!=="minimized")),l.find(l=>l.id===e.windowId))})
},l.reloadTab=(e,[t,r,o],d,u)=>{let a={bypassCache:i.$.hard===!0},s=n.Me.reload,v=e
;if(c(i.x)<2||i.$.single)return void s(e[u?r:t].id,a,f.getRunNextCmdBy(0));let m=e[r],p=i.$.filter;if(e=e.slice(t,o),p){
if(!(e=w.oe(m,e,p)).length)return void d(0);m=e.includes(m)?m:e[0]}
if(e.length>20&&f.ne())f.P("reloadTab",e.length).then(l.reloadTab.bind(null,v,[t,r,o],d));else{
s(m.id,a,f.getRunNextCmdBy(0));for(let l of e)l!==m&&s(l.id,a)}},l.removeTab=(e,t,r)=>{var o
;let d=i.$.highlighted,u=i.$.goto||(i.$.left?"left":""),a=(u+"").split(/[\/,;\s]/),s=a.length>1?a[c(i.x)>1?1:0]:u+"",v=s==="near"||s==="reverse"||s.startsWith("back"),p=s.startsWith("forw"),b=v?i.x>0:p?i.x<0:s==="left",x=v?i.x<0:p?i.x>0:s==="right",_=s.includes("previous"),h=_&&s.includes("only")
;if(!t){let t=c(i.x)>1||d||_&&!h;return void(t?n.getCurTabs:n.getCurTab)(l.removeTab.bind(null,e,t?2:1))}
if(!r||!r.length)return e(0),n.g()
;let y,T=r.length,k=n.selectIndexFrom(r),$=r[k],z=1,M=k,j=k+1,P=(o=i.$.noPinned)!==null&&o!==void 0?o:r[0].pinned!==$.pinned&&!(i.x<0&&k&&r[k-1].pinned)
;if(c(i.x)>1&&T>1){let i=0;if(P){for(;i<r.length&&r[i].pinned;)i++;if(i>=r.length)return void e(0)}
let n=w.getTabRange(k-i,T-i,T)
;if(z=n[1]-n[0],z>20&&f.ne()&&t<3)return void f.P("removeTab",z).then(l.removeTab.bind(null,e,2,r));z>1&&(M=i+n[0],
j=i+n[1])}else if(d){let l=r.filter(e=>e.highlighted&&e!==$&&!(P&&e.pinned)),i=d==="no-current"||P&&$.pinned
;if(z=l.length+1,z>1&&(i||z<T)&&n.Me.remove(l.map(e=>e.id),n.g),i)return void e(z>1)}else{
if(P&&$.pinned)return void e(0);if(i.$.filter&&w.oe($,[$],i.$.filter).length===0)return void e(0)}
if(!M&&z>=T&&(i.$.mayClose!=null?i.$.mayClose:i.$.allow_close)!==!0)return void(t<2?n.getCurTabs(l.removeTab.bind(null,e,3)):n.Be.getAll(I.bind(null,e,$,r)))
;if(t<2){if(h){let e=w.Ve();e>=0&&(y=n.ye(n.tabsGet,e))}else(x||b&&M>0)&&(y=n.ye(n.Me.query,{windowId:$.windowId,
index:b?M-1:M+1}).then(e=>e&&e[0]));if(y)return void y.then(i=>{i&&i.windowId===$.windowId&&n.$e(i)?n.Oe($.id,l=>{
l&&n.selectTab(i.id),e(l)}):n.getCurTabs(l.removeTab.bind(null,e,3))})}let A=T;if(z>=T);else if(_){
let e=!h&&j<T&&!i.ze.has(r[j].id)?r[j]:r.filter((e,l)=>(l<M||l>=j)&&i.ze.has(e.id)).sort(m.He.Ae)[0];A=e?r.indexOf(e):T
}else if(b||x){let e=A=b?M>0?M-1:j:j<T?j:M-1;for(;e>=0&&e<T&&(e<M||e>=j)&&!n.$e(r[e]);)e+=e<M?-1:1;A=e>=0&&e<T?e:A}
if(A>=0&&A<T){let l=r[A].id;if(Math.min(j,r.length)-Math.max(0,M)==1)return n.Oe($.id,i=>{i&&n.selectTab(l),e(i)}),
void n.selectTab(l);n.selectTab(l)}g($,r,M,j,e)};let I=(e,l,t,r)=>{let o,d,u=!1;r=r.filter(e=>e.type==="normal"),
i.$.keepWindow==="always"?u=!r.length||r.some(e=>e.id===l.windowId):r.length<=1?(u=!0,
(d=r[0])&&(d.id!==l.windowId?u=!1:d.incognito&&!n.w(i.newTabUrl_f)&&(o=d.id))):l.incognito||(r=r.filter(e=>!e.incognito)).length===1&&r[0].id===l.windowId&&(o=r[0].id,
u=!0),u&&n.tabsCreate({index:t.length,url:"",windowId:o},f.getRunNextCmdBy(3)),g(l,t,0,t.length,u?null:e)
},g=(e,l,t,r,o)=>{let d=Math.max(0,l.indexOf(e));n.Oe(e.id,o||n.g);let u=l.slice(d+1,r),f=l.slice(t,d)
;i.x<0&&([u,f]=[f,u]),u.length>0&&n.Me.remove(u.map(e=>e.id),n.g),f.length>0&&n.Me.remove(f.map(e=>e.id).reverse(),n.g)}
;l.toggleMuteTab=e=>{let l,t=i.$.filter,r=i.$.currentWindow,o=i.$.others,f=o!=null?o:i.$.other
;if(!(i.$.all||r||t||f))return void n.getCurTab(([l])=>{let t=!n.isTabMuted(l),r=i.$.mute!=null?!!i.$.mute:t
;r===t&&n.tabsUpdate(l.id,{muted:r}),d.showHUD(u.A(r?"muted":"unmuted")),e(1)});let a=r=>{
let o=f?i.O?i.O.s.m:i.he:-1,u=r.length===0||o!==-1&&r.length===1&&r[0].id===o
;if(i.$.mute!=null)u=!!i.$.mute;else for(let e of r)if(e.id!==o&&!n.isTabMuted(e)){u=!0;break}
if(t&&!(r=w.oe(l,r,t)).length)return void e(0);let a={muted:u}
;for(let e of r)e.id!==o&&u!==n.isTabMuted(e)&&n.tabsUpdate(e.id,a)
;d.showHUDEx(i.O,u?"mute":"unmute",0,[[o===-1?"All":"Other"]]),e(1)},s=w.getNecessaryCurTabInfo(t),v=r&&i.we>=0?{
audible:!0,windowId:i.we}:{audible:!0};s?s.then(e=>{l=e,n.Me.query(v,a)}):n.Me.query(v,a)},l.togglePinTab=(e,l,t)=>{
let r=i.$.filter,o=l[1],d=e[o];e=r?w.oe(d,e,r):e;let u=!r||e.includes(d)?!d.pinned:!!e.find(e=>!e.pinned),a={pinned:u
},s=u?0:1,v=0;if(c(i.x)>1&&u)for(;e[v].pinned;)v++
;let m=w.getTabRange(o-v,e.length-v,e.length),p=v+m[s]-s,b=v+m[1-s]-s,I=[]
;for(;p!==b;p+=u?1:-1)(u||e[p].pinned)&&I.push(e[p])
;b=I.length,b?(b<=30||!f.ne()?Promise.resolve(!1):f.P("togglePinTab",b)).then(e=>{e&&(I.length=1)}).then(()=>{
let e=I.includes(d)?d.id:I[0].id;for(let l of I)n.tabsUpdate(l.id,a,l.id===e?n.xe(t):n.g)}):t(0)},
l.toggleTabUrl=(e,l)=>{let a=n.getTabUrl(e[0]),v=i.$.reader,w=i.$.keyword
;if(a.startsWith(i.Ze.U))return d.complainLimits(u.A(v?"noReader":"openExtSrc")),void l(0);if(v&&w){let l=o.Ne({u:a})
;l&&l.k===w?(f.overrideCmdOptions({keyword:""}),s.openUrlWithActions(l.u,0,!0,e)):(a=r._r(l&&i.$.parsed?l.u:a,w),
s.openUrlWithActions(a,9,!0,e))
}else v?i.el&&t.an.test(a)?(a=a.startsWith("read:")?t.rl(a.slice(a.indexOf("?url=")+5)):`read://${new URL(a).origin.replace(/:\/\/|:/g,"_")}/?url=${t.ql(a)}`,
s.openUrlWithActions(a,9,!0,e)):(d.complainLimits(u.A("noReader")),
l(0)):i.$.viewSource?(a=a.startsWith("view-source:")?a.slice(12):"view-source:"+a,
s.openUrlWithActions(a,9,!0,e)):s.openUrlWithActions("$S",3,!0,e)},l.Pe=(e,l,t,r)=>{let o,d=e.id,u=l===1
;if(l&&n.Ie()&&(r!==!1||n.getGroupId(e)==null)){let l=0,i=-1,t=()=>{let e=n.g()
;if(e)return n.Ie().restore(null,f.getRunNextCmdBy(0)),i>=0&&n.Me.remove(i),i=0,e;l+=1,l>=5||setTimeout(()=>{
n.tabsGet(d,t)},50*l*l)};return u&&n.tabsCreate({url:"about:blank",active:!1,windowId:e.windowId},e=>{
i?i=e.id:n.Me.remove(e.id)}),void n.Oe(d,e=>{e&&n.tabsGet(d,t)})}{let l=n.isTabMuted(e);o=e=>{
l!==n.isTabMuted(e)&&n.tabsUpdate(e.id,{muted:l})}}let a={windowId:e.windowId,index:e.index,url:n.getTabUrl(e),
active:e.active,pinned:e.pinned,openerTabId:e.openerTabId};t&&(a=Object.assign(t,a)),a.index!=null&&a.index++,
n.openMultiTabs(a,1,!0,[null],r,e,e=>{e&&o&&o(e),e?f.runNextOnTabLoaded(i.$,e):f.runNextCmd(0)}),n.Me.remove(d)},
l.Te=(e,l,r)=>{let o=null;return(async()=>{var r;let d=l?l.window?n.selectFrom(l.window.tabs):l.tab:null;if(d&&(o=d),
!d||!(l.window||d.windowId!==e&&d.index===0))return;let u=d.url,f=/^(file|ftps?|https?)/.test(u)||u.startsWith(i.ll)
;if(!f&&u.startsWith(location.protocol)&&!u.startsWith(i.ll)){let e=new URL(u).host;f=!!e&&i.uu.get(e)===!0}if(!f)return
;let a=l.window;if(!a){let e=await n.ye(n.Me.query,{windowId:d.windowId,index:1})
;a=e&&e.length?null:await n.ye(n.Be.get,d.windowId)}if(!a||a.type==="popup")return;let s=n.ye(n.Me.create,{
url:"about:blank",windowId:a.id}),{Ge:v,Le:w}=t.Xe();n.Oe(d.id,w);let m=await v,c=await s
;o=m&&((r=await n.ye(n.Ie().restore))===null||r===void 0?void 0:r.tab)||null,c&&await n.Me.remove(c.id)
})().then(async()=>(r&&(await n.ye(n.tabsUpdate,r,{active:!0}),i.we!==e&&await n.ye(n.Be.update,e,{focused:!0})),o))},
l.toggleWindow=e=>{let l=i.$.target,t=i.$.states;t=typeof t=="string"?t.trim().split(/[\s,;]+/):t,
t=t||["normal","maximized"];let r=i.we,o=l&&l!=="current"&&l!=="all"?i.jn:r
;o<0?e(0):n.ye(n.Be.get,o).then(e=>e||n.ye(n.Be.get,i.we)).then(async d=>{if(!d)return void e(0)
;let u=l==="other"||l==="others"?await n.je(n.Be.getAll).then(e=>(e=e===null||e===void 0?void 0:e.filter(e=>e.id!==r&&e.id!==o&&e.type!=="devtools"))?e.map(e=>e.id):[]):[],f={}
;if(t instanceof Array){let e=["normal","maximized","fullscreen","minimized"];t=t.map(l=>{var i
;return(i=e.find(e=>e.startsWith(l)))!==null&&i!==void 0?i:"current keep".includes(l)?"":" "}).filter(e=>e!==" ")
;let l=i.x>1?i.x-2:t.indexOf(d.state)+1,n=t.length>0&&t[l%t.length]||d.state;(n!==d.state||u.length>0)&&(f.state=n)}
Object.keys(f).length&&n.Be.update(o,f,n.xe(e));for(let e of u)n.Be.update(e,f,n.g)})}});

View File

@@ -0,0 +1,96 @@
"use strict"
;__filename="background/tools.js",define(["require","exports","./store","./utils","./browser","./normalize_urls","./parse_urls","./settings","./ports","./ui_css","./i18n","./run_commands","./open_urls","./tab_commands"],(e,t,n,l,r,o,i,a,s,u,c,f,d,_)=>{
function m(e){let t=e.tabId,l=n.a.get(t)
;if(l&&l.b&512&&s.fu(l,0),s.xn(),e.windowId!==n.we)return void r.Be.get(e.windowId,p);let o=performance.now()
;if(o-n.Vo>666){let e=n.G===1?Date.now():o;h.set(n.he,e)}n.Vo=o,n.he=t,u.tu.Ao()}function p(e){
if(!e||!e.focused)return r.g();let t=e.id;t!==n.we&&(n.jn=n.we,n.we=t),r.Me.query({windowId:t,active:!0},e=>{
e&&e.length>0&&t===n.we&&g(e)})}function g(e){if(!e||e.length===0)return r.g();let l=e[0],o=l.windowId,i=n.we
;o!==i&&(n.we=o,n.jn=i),n.de=l.incognito?2:0,t.He._n(),m({tabId:l.id,windowId:o})}Object.defineProperty(t,"__esModule",{
value:!0}),t.He=t.ce=t.ve=t.ue=void 0,t.ue={Uo:(e,t)=>"vimiumContent|"+e+(t?"|"+t:""),Ro(e,t){let o=r.t.contentSettings
;try{o&&o.images.get({primaryUrl:"https://127.0.0.1/"},r.g)}catch(e){o=null}
return o?o[e]&&!/^[A-Z]/.test(e)&&o[e].get?!(!t.startsWith("read:")&&l.an.test(t)&&!t.startsWith(n.Ze.U)||(s.complainLimits(c.A("changeItsCS")),
0)):(s.showHUD(c.A("unknownCS",[e])),!0):(s.showHUD("Has not permitted to set contentSettings"),setTimeout(()=>{d.Je({
u:n.Ze.Qe+"#optionalPermissions"})},800),!0)},Wo(e,t){if(e.startsWith("file:")){let t=1
;return t?(s.complainLimits(t===1?c.A("setFileCS",[56]):c.A("setFolderCS")),[]):[e.split(/[?#]/,1)[0]]}
if(e.startsWith("ftp"))return s.complainLimits(c.A("setFTPCS")),[]
;let n,r=e.match(/^([^:]+:\/\/)([^\/]+)/),i=o.Ei.exec(r[2]),a=i[3]+(i[4]||"");if(n=[(e=r[1])+a+"/*"],
t<2||l.kn(i[3],0))return n;i=null;let[u,f]=l.br(a),d=Math.min(u.length-f,t-1)
;for(let t=0;t<d;t++)a=a.slice(u[t].length+1),n.push(e+a+"/*");return n.push(e+"*."+a+"/*"),
d===u.length-f&&e==="http://"&&n.push("https://*."+a+"/*"),n},Jo(e){let t;for(let{s:{Jl:n}}of e.J){let e=new URL(n).host
;if(t&&t!==e)return!0;t=e}return!1},Qo(e,n){let l=r.t.contentSettings[e];n==null?(l.clear({scope:"regular"}),l.clear({
scope:"incognito_session_only"},r.g),a.lu(t.ue.Uo(e),null)):l.clear({scope:n?"incognito_session_only":"regular"})},
ae(e,l){let r=e.type?""+e.type:"images";return!t.ue.Ro(r,"http://a.cc/")&&(t.ue.Qo(r,l?l.s.se:n.de===2),
s.showHUDEx(l,"csCleared",0,[[r[0].toUpperCase()+r.slice(1)]]),!0)},Se(e,n,l,r){let o=e.type?""+e.type:"images",i=l[0]
;e.incognito?t.ue.Ko(n,o,i,r):t.ue.Zo(o,n,i,e.action==="reopen",r)},Zo(e,l,i,s,u){let c=o.di(i.url)
;t.ue.Ro(e,c)?u(0):r.t.contentSettings[e].get({primaryUrl:c,incognito:i.incognito},o=>{t.ue.Eo(e,c,l,{
scope:i.incognito?"incognito_session_only":"regular",setting:o&&o.setting==="allow"?"block":"allow"},l=>{
if(l)return void u(0);if(!i.incognito){let n=t.ue.Uo(e);a.jo(n)!==1&&a.lu(n,1)}
let o,c=!r.Ie()||(o=n.a.get(i.id))&&o.J.length>1&&t.ue.Jo(o)
;i.incognito||s?_.Pe(i):i.index>0?_.Pe(i,c?0:2):r.getCurWnd(!0,e=>(e&&e.type==="normal"?_.Pe(i,c?0:e.tabs.length>1?2:1):r.Me.reload(f.getRunNextCmdBy(0)),
r.g()))})})},Ko(e,l,i,a){if(n.Ze.ls)return s.complainLimits(c.A("setIncogCS")),void a(0);let u=o.di(i.url)
;t.ue.Ro(l,u)?a(0):r.t.contentSettings[l].get({primaryUrl:u,incognito:!0},n=>r.g()?(r.t.contentSettings[l].get({
primaryUrl:u},n=>{n&&n.setting==="allow"?a(1):r.Be.create({type:"normal",incognito:!0,focused:!1,url:"about:blank"},n=>{
let o=n.tabs[0].id;return t.ue.Xo(e,l,i,u,n.id,!0,()=>{r.Me.remove(o)})})
}),r.g()):n&&n.setting==="allow"&&i.incognito?t.ue.Yo(i):void r.Be.getAll(r=>{
if(!(r=r.filter(e=>e.incognito&&e.type==="normal")).length)return void console.log("%cContentSettings.ensure","color:red","get incognito content settings",n," but can not find an incognito window.")
;let o=d.preferLastWnd(r);if(n&&n.setting==="allow")return t.ue.Yo(i,o.id)
;let a=i.windowId,s=i.incognito&&r.some(e=>e.id===a);return t.ue.Xo(e,l,i,u,s?void 0:o.id)}))},Xo(e,n,l,o,i,a,s){
let u=t.ue.Wi.bind(null,l,i,s);return t.ue.Eo(n,o,e,{scope:"incognito_session_only",setting:"allow"
},a&&i!==l.windowId?e=>{if(e)return u(e);r.Be.get(l.windowId,u)}:u)},Eo(e,n,o,i,a){
let s,u=!1,c=r.t.contentSettings[e],f=()=>{let e=r.g();return e&&console.log("[%o]",Date.now(),e),u||(--s,u=!!e,
(u||s===0)&&setTimeout(a,0,u)),e},d=t.ue.Wo(n,o|0);if(s=d.length,s<=0)return a(!0);l.Sn(i)
;for(let e of d)c.set(Object.assign({primaryPattern:e},i),f)},Wi(e,n,l,o){o!==!0&&t.ue.Yo(e,n),l&&l(),
o!==!0?n&&r.Be.update(n,{focused:!0,state:o?o.state:void 0}):f.runNextCmd(0)},Yo(e,t){e.active=!0,
typeof t=="number"&&e.windowId!==t&&(e.index=void 0,e.windowId=t),_.Pe(e)}},t.ve={ho({l:e,n:l,s:r,u:o},i,s){
if(e&&r[0]===0&&r[1]===0)if(r.length===2){let e=o.indexOf("#");e>0&&e<o.length-1&&(r=[0,0,o.slice(e)])
}else(r[2]||"").length<2&&(r=[0,0]);s=s>=0?s:-1
;let u=i?r:r.length!==2||r[0]||r[1]?r.length!==2||r[1]>524287||r[0]>8191?r:Math.max(0,r[0])|Math.max(0,r[1])<<13:0,c=t.ve.Qi(l,e?o:""),f=e?u:u?{
s:u,t:s,u:o.slice(0,8192)}:{t:s,u:o.slice(0,8192)};i?(n.Co||(y.Bi(),n.Co=new Map)).set(c,f):a.lu(c,f)},Ji(e,o,i,u){
let{n:c}=o,_=t.ve.Qi(c,o.l?o.u:""),m=i.s.se&&(n.Co===null||n.Co===void 0?void 0:n.Co.get(_))||a.jo(_),p=typeof m=="number"?[m&8191,m>>>13]:typeof m=="string"?JSON.parse(m):m?m instanceof Array?m.slice(0):{
url:m.u,tabId:m.t,scroll:typeof m.s!="number"?m.s||[0,0]:[m.s&8191,m.s>>>13]}:m;if(typeof m=="string"&&t.ve.ho({l:o.l,
n:c,s:p instanceof Array?p:p.scroll||[0,0],u:o.u},!1,i.s.m),!p&&o.s)try{let e=JSON.parse(o.s);if(e&&typeof e=="object"){
let t=+e.scrollX,n=+e.scrollY;t>=0&&n>=0&&(p=[t|0,n|0,""+(e.hash||"")])}}catch(e){}
if(!p)return s.showHUDEx(i,"noMark",0,[[o.l?"Local":"Global"],c]),void f.runNextCmdBy(0,e)
;let g=f.parseFallbackOptions(e);if(p instanceof Array)return g&&(g.$else=null),void t.ve.Xi(i.s.m,null,i,!0,c,p,0,g,u)
;g&&(g.$else=g.$then);let y=p.tabId,h=e.wait,w=e.prefix,b=p.url,v={n:c,a:!!e.parent&&!w,p:!0,
q:d.parseOpenPageUrlOptions(e),s:p.scroll||[0,0],t:y,u:b,f:g,w:typeof h=="number"?Math.min(Math.max(0,h||0),2e3):h}
;v.p=!!w||w==null&&!v.a&&v.s[1]===0&&v.s[0]===0&&!!l.qr(b)&&(!b.includes("#")||o.u.startsWith(b)),
t.ve.Yi(o.u,b,v)?t.ve.Xi(i.s.m,null,i,!1,c,v.s,0,g,u):y>=0&&n.a.has(y)?r.tabsGet(y,t.ve.la.bind(0,v,u)):d.Je(v)},
Yi(e,t,n){let l=e.split("#",1)[0],r=t.split("#",1)[0]
;return l===r||!!n.p&&l.startsWith(r.endsWith("/")||r.includes("?")?r:r+"/")||!!n.a&&r.startsWith(l.endsWith("/")||l.includes("?")?l:l+"/")
},la(e,l,o){let i=r.getTabUrl(o);if(t.ve.Yi(i,e.u,e)){let i=o.id===n.he;i||r.selectTab(o.id,r.selectWndIfNeed),
t.ve.Mi(e,o.id,i?l:0,!0)}else d.Je(e)},
Qi:(e,t)=>t?"vimiumMark|"+i.Ri(t.slice(0,499).split("#",1)[0])+(t.length>1?"|"+e:""):"vimiumGlobalMark|"+e,
Xi(e,t,l,o,i,a,s,u,d){if(l=!t||!t.R||t.R.s.b&512?l:t.R){let e={g:!o,s:a,t:"",f:u||{},w:s||0}
;Promise.resolve(i&&c.Xl("mNormalMarkTask",[["mJumpTo"],[o?"Local":"Global"],i])).then(t=>{e.t=t||"",d?(n.Re=d,
n.Vi(l,19,e,1,1)):f.portSendFgCmd(l,19,!0,e,1)})}else r.p(e,0,null,(e,t)=>{window.scrollTo(e,t)
},[a[0],a[1]],u?()=>(f.runNextCmdBy(1,u),r.g()):null)},Mi(e,l,r,o){let i=n.a.get(l),a=e.w;s.si(i).then(()=>{
t.ve.Xi(l,i,null,!1,e.n,e.s,o||a===!1?0:typeof a!="number"?200:a,e.f,r)}),e.t!==l&&e.n&&t.ve.ho({l:!1,n:e.n,s:e.s,u:e.u
},n.de===2,l)},pe(e){let l=t.ve.Qi("",e),r=0;n.su.forEach((e,t)=>{t.startsWith(l)&&(r++,a.lu(t,null))});let o=n.Co
;return o&&o.forEach((e,t)=>{t.startsWith(l)&&(r++,o.delete(t))
}),s.showHUDEx(n.O,"markRemoved",0,[r,[e==="#"?"allLocal":e?"Local":"Global"],[r!==1?"have":"has"]]),r}},t.ce={ia:null,
Zt:0,sa(){let e=n.su.get("findModeRawQueryList")||"";t.ce.ia=e?e.split("\n"):[],t.ce.sa=null},ln(e,r,o){let i=t.ce
;i.sa&&i.sa();let s=e?n.Po||(y.Bi(),n.Po=i.ia.slice(0)):i.ia;if(!r)return(s[s.length-(o||1)]||"").replace(/\r/g,"\n")
;if(r=r.replace(/\n/g,"\r"),e)return void i.ua(r,s,!0);r=l.fl(r,0,99);let u=i.ua(r,s);u&&a.lu("findModeRawQueryList",u),
n.Po&&i.ua(r,n.Po,!0)},ua(e,t,n){let l=t.lastIndexOf(e);if(l>=0){if(l===t.length-1)return;t.splice(l,1)
}else t.length>=50&&t.shift();if(t.push(e),!n)return t.join("\n")},fe(e){e?n.Po&&(n.Po=[]):(t.ce.sa=null,t.ce.ia=[],
a.lu("findModeRawQueryList",""))}};let y={ca:!1,Zt:0,Bi(){y.ca||(r.Be.onRemoved.addListener(y.fa),y.ca=!0)},fa(){
y.ca&&(y.Zt=y.Zt||setTimeout(y.da,34))},da(){y.Zt=0;for(let e of n.a.values())if(e.d.s.se)return;r.Be.getAll(e=>{
e.some(e=>e.incognito)||y._a()})},_a(){n.Po=null,n.Co=null,r.Be.onRemoved.removeListener(y.fa),y.ca=!1}},h=n.ze;t.He={
Ae(e,t){return h.get(t.id)-h.get(e.id)},_n:n.u};let w=0;r.Me.onActivated.addListener(m),
r.Be.onFocusChanged.addListener(e=>{e!==-1&&r.Me.query({windowId:e,active:!0},g)}),r.Me.onRemoved.addListener(e=>{
let t=n.a.delete(e);h.delete(e),!(n.Tn>109)&&e===n.us&&t&&s.tryToKeepAliveIfNeeded_mv3_non_ff(e)}),a.vl.then(()=>{
r.getCurTab(e=>{n.Vo=performance.now();let t=e&&e[0];if(!t)return r.g();n.he=t.id,n.we=t.windowId,n.de=t.incognito?2:0
;let o=r.t.storage.session;o&&o.get("recency").then(e=>{let t=e&&e.recency;if(t){let e=l.yr()-t.b
;for(let[n,l]of t.e)h.set(n,l-e)}o.remove("recency"),n._u=()=>{if(w==n.Vo)return;w=n.Vo;let e={
e:Array.from(h.entries()),b:l.yr()};o.set({recency:e})}},n.u)});let e=[]
;for(let l of["images","plugins","javascript","cookies"])n.su.get(t.ue.Uo(l))!=null&&e.push(l)
;e.length&&r.t.contentSettings&&setTimeout(()=>{for(let n of e)t.ue.Qo(n)},100)}),n.pl.vomnibarOptions=e=>{
let t=a.E.vomnibarOptions,l=n.Ke,r=!0,{actions:o,maxMatches:i,queryInterval:s,styles:c,sizes:f}=t
;if(e!==t&&e&&typeof e=="object"){
let t=Math.max(3,Math.min(e.maxMatches|0||i,25)),n=e.actions,l=n?n.replace(/[,\s]+/g," ").trim():"",a=+e.queryInterval,u=((e.sizes||"")+"").trim(),d=e.styles,_=d instanceof Array?d:((d||"")+"").trim(),m=Math.max(0,Math.min(a>=0?a:s,1200))
;r=i===t&&s===m&&u===f&&o===l&&c===_,r||(o=l,i=t,s=m,f=u,c=_),e.actions=l,e.maxMatches=t,e.queryInterval=m,e.sizes=u,
e.styles=_}let d=c instanceof Array?c.join(" "):c;n.z.vomnibarOptions=r?t:e,l.n=i,l.i=s,l.s=f,l.t=d,u.tu.Kr(0,1),
u.tu.Kr(1,1),a.De({n:i,i:s,s:f,t:l.t}),n.Wn.actions=o.split(" ")
;let _=f.split(","),m=Math.max(24,Math.min(Math.max(24,Math.min(_.length&&+_[0]||77,320))+(_.length>1&&+_[1]||3),320))
;n.Wn.Qn=i*Math.max(14,Math.min(_.length>2&&+_[2]||44,120))+m}});

View File

@@ -0,0 +1,40 @@
"use strict"
;__filename="background/ui_css.js",define(["require","exports","./store","./utils","./browser","./settings","./ports"],(e,t,n,l,r,o,i)=>{
let s,u;Object.defineProperty(t,"__esModule",{value:!0}),t.qe=t.tu=t.mergeCSS=t.eu=void 0;let f=0;t.eu=(e,r)=>{
if(e===-1)return t.mergeCSS(r,-1);e===2&&(n.oa=null);{let t;if(e===0&&(t=n.su.get("findCSS")))return u=null,n.No=c(t),
n.du=r.slice(s.length),void(n.Ke.c=n.su.get("omniCSS")||"")}l.so("vimium-c.css").then(l=>{s.slice(s.indexOf(",")+1)
;let r=d(l);{let e=(l=r.ui).indexOf("all:"),t=l.lastIndexOf("{",e),n=l.indexOf(";",e)
;l=l.slice(0,t+1)+l.slice(e,n+1)+l.slice(l.indexOf("\n",n)+1||l.length)}{
let e=l.indexOf("display:"),t=l.lastIndexOf("{",e);l=l.slice(0,t+1)+l.slice(e)}
n.Tn<109&&(l=l.replace(/\.PO\{[^}]+\}/,"")),l=l.replace(/\n/g,""),o.lu("innerCSS",s+l);let i=r.find
;o.lu("findCSS",i.length+"\n"+i),t.mergeCSS(n.z.userDefinedCss,e)})};let d=e=>{
let t=e?e.split(/^\/\*\s?#!?([A-Za-z:]+)\s?\*\//m):[""],n={ui:t[0].trim()};for(let e=1;e<t.length;e+=2){
let l=t[e].toLowerCase();n[l]=(n[l]||"")+t[e+1].trim()}return n},c=e=>{
let t=(e=e.slice(e.indexOf("\n")+1)).indexOf("\n")+1,n=e.indexOf("\n",t);return{c:e.slice(0,t-1).replace(" ","\n"),
s:e.slice(t,n).replace(" ","\n"),i:e.slice(n+1)}};t.mergeCSS=(e,u)=>{let f=n.su.get("innerCSS"),a=f.indexOf("\n")
;f=a>0?f.slice(0,a):f
;let m=d(e),S=m.ui?f+"\n"+m.ui:f,v=m["find:host"],_=m["find:selection"],p=m.find,b=m.omni,C="findCSS",y="omniCSS"
;f=n.su.get(C),a=f.indexOf("\n"),f=f.slice(0,a+1+ +f.slice(0,a));let g=f.indexOf("\n",a+1),j=f.slice(0,g).indexOf(" ")
;_=_?" "+_.replace(/\n/g," "):"",(j>0?f.slice(j,g)!==_:_)&&(j=j>0?j:g,f=f.slice(a+1,j)+_+f.slice(g),g=j-(a+1)+_.length,
a=-1);let h=f.indexOf("\n",g+1),N=f.slice(0,h).indexOf(" ",g);if(v=v?" "+v.replace(/\n/g," "):"",
(N>0?f.slice(N,h)!==v:v)&&(f=f.slice(a+1,N>0?N:h)+v+f.slice(h),a=-1),a<0&&(f=f.length+"\n"+f),p=p?f+"\n"+p:f,
f=(n.su.get(y)||"").split("\n",1)[0],b=b?f+"\n"+b:f,u===-1)return{ui:S.slice(s.length),find:c(p),omni:b}
;o.lu("innerCSS",S),o.lu(C,p),o.lu(y,b||null),t.eu(0,S),u!==0&&u!==1&&(l.nextConfUpdate(0),i.c(16384,e=>{
for(let t of e.J){let e=t.s.b;e&8&&(t.postMessage({N:11,H:n.du,f:e&32?r.k(t.s):void 0}),t.postMessage({N:6,d:{},v:n.au
}))}}),o.De({c:n.Ke.c}))},t.tu={fs:[2,2],ds(e){let n=t.tu.fs[e];return typeof n=="object"?n.matches:null},cs(e,n){
let l=n===2,r=t.tu.fs,o=r[e];if(l&&o===2){r[e]={
media:`(${e?"prefers-color-scheme":"prefers-reduced-motion"}: ${e?"dark":"reduce"})`,matches:!1},f||t.tu.Ao()
}else l||typeof o!="object"||(r[e]=2,f>0&&r.every(e=>typeof e!="object")&&(clearInterval(f),f=0))},Kr(e,l,r){
let o=t.tu.fs[e];t.qe(e,typeof o=="object"?o.matches:r!=null?r:(e?n.z.autoDarkMode:n.z.autoReduceMotion)===1,l?0:1)},
nu(){f>0&&performance.now()-n.Vo>27e4&&(clearInterval(f),f=0);{if(n.Tn<109)return
;let e=t.tu.fs.map(e=>typeof e=="object"?e.media:"");return void(e.join("")&&n.tl(10,e,null).then(t.tu.ms))}},Ao(){
f||(f=-2,setTimeout(()=>{t.tu.nu(),f=setInterval(t.tu.nu,6e4)},0))},ms(e){let n=e;for(let e=0;e<t.tu.fs.length;e++){
let l=t.tu.fs[e];typeof l=="object"&&l.matches!==n[e]&&(l.matches=n[e],t.tu.Kr(e))}},Ss:0},t.qe=(e,t,r,s)=>{var u
;let f=e?"d":"m",d=o.W(f,t),c=n.Ke.t;{let n=e?" dark ":" less-motion ",r=c&&` ${c} `,o=r.includes(n)
;c=t?o?c:c+n:r.replace(n," "),c=c.trim().replace(l.q," ")}if(r!==9)n.V[f]===d&&r!==2||(n.V[f]=d,r&&o.bn({N:6,d:[f]})),
c===n.Ke.t&&r!==2||(n.Ke.t=c,r&&o.De({t:c}));else{
for(let e of((u=i.An(s))===null||u===void 0?void 0:u.J)||[])e.postMessage({N:6,d:{[f]:d},v:n.au});s.postMessage({N:47,
d:{t:c},v:n.iu})}},n.pl.autoDarkMode=n.pl.autoReduceMotion=(e,n)=>{let l=n.length>12?0:1
;t.tu.cs(l,e=typeof e=="boolean"?e?2:0:e),t.tu.Kr(l,0,e===2?null:e>0)},r.k=()=>n.No,o.vl.then(()=>{
s=n.Ze.fo+","+n.Tn+";",n.du=n.su.get("innerCSS")||"",n.du&&!n.du.startsWith(s)?(n.su.set("vomnibarPage_f",""),
t.eu(1)):(t.eu(0,n.du),n.il&&n.il.then(e=>e&&t.eu(1))),n.pl.userDefinedCss=t.mergeCSS})});

View File

@@ -0,0 +1,79 @@
"use strict";__filename="background/utils.js",define(["require","exports","./store"],(e,t,n)=>{
Object.defineProperty(t,"__esModule",{value:!0
}),t.yr=t.nextConfUpdate=t.splitWhenKeepExpressions=t.Zi=t.tryParse=t.isNotPriviledged=t.ii=t.now=t.$l=t.Pl=t.bo=t.Z=t.Kn=t.hl=t.ni=t.Gi=t.so=t.pu=t.ns=t.Xe=t.$n=t.Tl=t.Li=t.Ki=t.qr=t.ql=t.Ul=t.El=t.Dl=t.rl=t.yn=t.kn=t.br=t.zi=t.Sn=t.i=t._i=t.Ur=t.sn=t.fl=t.Gl=t.on=t.Zn=t.an=t.q=void 0,
t.q=/\s+/g,t.an=/^[a-z][\+\-\.\da-z]+:\/\//,t.Zn=(e,t)=>{for(let n in t)e[n]!==void 0||(e[n]=t[n]);return e},
t.on=e=>Array.from(e.keys());let r=/a?/;t.Gl=()=>r.test(""),t.fl=(e,t,n)=>{let r=n<e.length&&n>t?e.charCodeAt(n-1):0
;return e.slice(t,n+=r>=55296&&r<56320||r===8205&&n>t+1?-1:0)},t.sn=(e,t,n)=>{
let r=t>0&&t<e.length&&t<n?e.charCodeAt(t):0;return e.slice(t+=r>=56320&&r<=57343||r===8205&&t<e.length-1&&t<n-1?1:0,n)
},t.Ur=e=>{function n(e){let t=e.charCodeAt(0);return t===38?"&amp;":t===39?"&apos;":t<39?"&quot;":t===60?"&lt;":"&gt;"}
let r=/["&'<>]/g;return t.Ur=e=>e.replace(r,n),t.Ur(e)
},t._i=e=>e.charCodeAt(10)===58&&e.slice(0,10).toLowerCase()==="javascript"
;let a=["","",".ac.ad.ae.af.ag.ai.al.am.ao.aq.ar.as.at.au.aw.ax.az.ba.bb.bd.be.bf.bg.bh.bi.bj.bm.bn.bo.br.bs.bt.bv.bw.by.bz.ca.cc.cd.cf.cg.ch.ci.ck.cl.cm.cn.co.cr.cu.cv.cw.cx.cy.cz.de.dj.dk.dm.do.dz.ec.ee.eg.er.es.et.eu.fi.fj.fk.fm.fo.fr.ga.gb.gd.ge.gf.gg.gh.gi.gl.gm.gn.gp.gq.gr.gs.gt.gu.gw.gy.hk.hm.hn.hr.ht.hu.id.ie.il.im.in.io.iq.ir.is.it.je.jm.jo.jp.ke.kg.kh.ki.km.kn.kp.kr.kw.ky.kz.la.lb.lc.li.lk.lr.ls.lt.lu.lv.ly.ma.mc.md.me.mg.mh.mk.ml.mm.mn.mo.mp.mq.mr.ms.mt.mu.mv.mw.mx.my.mz.na.nc.ne.nf.ng.ni.nl.no.np.nr.nu.nz.om.pa.pe.pf.pg.ph.pk.pl.pm.pn.pr.ps.pt.pw.qa.re.ro.rs.ru.rw.sa.sb.sc.sd.se.sg.sh.si.sj.sk.sl.sm.sn.so.sr.ss.st.su.sv.sx.sy.sz.tc.td.tf.tg.th.tj.tk.tl.tm.tn.to.tr.tt.tv.tw.tz.ua.ug.uk.us.uy.uz.va.vc.ve.vg.vi.vn.vu.wf.ws.ye.yt.za.zm.zw",".aaa.abb.abc.aco.ads.aeg.afl.aig.anz.aol.app.art.aws.axa.bar.bbc.bbt.bcg.bcn.bet.bid.bio.biz.bms.bmw.bnl.bom.boo.bot.box.buy.bzh.cab.cal.cam.car.cat.cba.cbn.cbs.ceb.ceo.cfa.cfd.com.cpa.crs.csc.dad.day.dds.dev.dhl.diy.dnp.dog.dot.dtv.dvr.eat.eco.edu.esq.eus.fan.fit.fly.foo.fox.frl.ftr.fun.fyi.gal.gap.gdn.gea.gle.gmo.gmx.goo.gop.got.gov.hbo.hiv.hkt.hot.how.ibm.ice.icu.ifm.inc.ing.ink.int.ist.itv.iwc.jcb.jcp.jio.jlc.jll.jmp.jnj.jot.joy.kfh.kia.kim.kpn.krd.lat.law.lds.llc.llp.lol.lpl.ltd.man.map.mba.med.men.mil.mit.mlb.mls.mma.moe.moi.mom.mov.msd.mtn.mtr.nab.nba.nec.net.new.nfl.ngo.nhk.now.nra.nrw.ntt.nyc.obi.off.one.ong.onl.ooo.org.ott.ovh.pay.pet.phd.pid.pin.pnc.pro.pru.pub.pwc.qvc.red.ren.ril.rio.rip.run.rwe.sap.sas.sbi.sbs.sca.scb.ses.sew.sex.sfr.ski.sky.soy.spa.srl.srt.stc.tab.tax.tci.tdk.tel.thd.tjx.top.trv.tui.tvs.ubs.uno.uol.ups.vet.vig.vin.vip.wed.win.wme.wow.wtc.wtf.xin.xxx.xyz.you.yun",".aero.arpa.asia.auto.band.beer.chat.city.club.cool.coop.date.fans.fund.game.gift.gold.guru.help.host.info.jobs.life.link.live.loan.love.luxe.mobi.name.news.pics.plus.shop.show.site.sohu.team.tech.wang.wiki.work.yoga.zone",".citic.cloud.email.games.group.local.onion.party.photo.press.rocks.space.store.today.trade.video.world",".center.design.lawyer.market.museum.online.social.studio.travel",".company.fashion.science.website",".engineer.software"]
;t.i=()=>Object.create(null),
t.Sn=e=>Object.setPrototypeOf(e,null),t.zi=(e,t,n)=>!t&&/[^a-z]/.test(e)?/^xn--[\x20-\x7f]+/.test(e)||".\u4e2d\u4fe1.\u4e2d\u56fd.\u4e2d\u570b.\u4e2d\u6587\u7f51.\u4f01\u4e1a.\u4f5b\u5c71.\u4fe1\u606f.\u516c\u53f8.\u516c\u76ca.\u5546\u57ce.\u5546\u5e97.\u5546\u6807.\u5728\u7ebf.\u5a31\u4e50.\u5e7f\u4e1c.\u6211\u7231\u4f60.\u624b\u673a.\u62db\u8058.\u653f\u52a1.\u6e38\u620f.\u7f51\u5740.\u7f51\u5e97.\u7f51\u5e97.\u7f51\u7edc.\u8d2d\u7269.\u96c6\u56e2.\u9910\u5385.".includes("."+e+".")?2:0:e.length===2&&n&&("cc.cu.in.rs.sh".includes(e)?n.includes("_"):e==="so"&&n.startsWith("lib"))?0:e&&e.length<a.length&&a[e.length].includes(e)?1:0,
t.br=e=>{let n=e.toLowerCase().split("."),r=n.length
;return[n,t.zi(n[r-1])===0?1:r>2&&n[r-1].length===2&&t.zi(n[r-2])===1?3:2]
},t.kn=(e,n)=>!!(n!==6&&/^\d{1,3}(?:\.\d{1,3}){3}$/.test(e)||n!==4&&/^\[[\da-f]{0,4}(?::[\da-f]{0,4}){1,5}(?:(?::[\da-f]{0,4}){1,2}|:\d{0,3}(?:\.\d{0,3}){3})]$/.test(e))&&!!t.yn("http://"+e),
t.yn=n.Tn>125?URL.parse:URL.parse||(e=>{try{return new URL(e)}catch(e){return null}}),t.rl=(e,t)=>{
if(!e||t!=="atob"&&!e.includes("%"))return e||"";try{e=(t?t==="atob"?atob:decodeURI:decodeURIComponent)(e)}catch(e){}
return e},t.Dl=(e,n)=>{if(!e.includes("%"))return e
;if(!t.an.test(e)&&!/^(about|data|javascript|vimium)/i.test(e))return e
;let r=e.replace(/%(2[356f]|3[adf]|40)/gi,"%25$1").replace(/%(?![\da-fA-F]{2})/g,"%25"),a=t.rl(r,1)
;a=a.length!==r.length?a:t.Ul(e,1)
;let o=!n&&(t.an.test(a)?!a.startsWith("vimium:"):a.startsWith("data:")||a.startsWith("about:"))
;a=a.replace(o?t.q:/[\r\n]+/g,encodeURIComponent);let l=a&&a.charAt(a.length-1)
;return l&&!/[a-z\d\ud800-\udfff]/i.test(l)&&(l=l<"\x7f"?"%"+(l.charCodeAt(0)+256).toString(16).slice(1):t.ql(l),
l.length>1&&(a=a.slice(0,a.length-1)+l)),a
},t.El=(e,n)=>(e=!e.includes("://")&&/%(?:2[36f]|3[adf])/i.test(e)?t.rl(e).trim():e,t.Dl(e,n)),
t.Ul=(e,n)=>(n?e:encodeURI(e)).replace(/(?:%[\da-f]{2})+/gi,e=>{let n=t.rl(e);return n.length<e.length?t.ql(n):e}),
t.ql=e=>e.replace(/[^\p{L}\p{N}]+/gu,encodeURIComponent),
t.qr=e=>(e=e.slice(0,8).toLowerCase()).startsWith("http://")?7:e==="https://"?8:0,
t.Ki=e=>e.trim()?e.trim().split(/[.\s]+/g).sort().filter(e=>!!e):[],t.Li=e=>e&&[e[0],e[1],t.Ki(e[2]||"")]||0,
t.Tl=(e,t,n)=>{try{return new RegExp(e,t)}catch(r){
n===0||console.log("%c/%s/%s","color:#c41a16",e,t,"is not a valid regexp.")}return null},t.$n=(e,t)=>{
if(!e.endsWith("*")){let t=e.indexOf("://"),n=t>0?e.indexOf("/",t+3):-1
;e+=t>0&&(n===e.length-1||n<0)?(n>0?"":"/")+"*\\?*#*":""}try{
return n.Tn<107?new URLPattern(e):new URLPattern(e,"http://localhost",{ignoreCase:!0})}catch(n){
t===0||console.log("%c/%s/%s","color:#c41a16",e,"is not a valid URLPattern.")}return null};let o=null,l=e=>{o=e}
;t.Xe=()=>{let e=new Promise(l),t=o;return o=null,{Ge:e,Le:t}},t.ns=e=>{queueMicrotask(e)},t.pu=(e,t,n)=>{let r=()=>{
n&&n()===!1&&(a=0);for(let n=0,r=0;n<32&&r<128&&a>0;){let o=t(e[--a]);if(o>0)n++,r+=o;else if(o<0)break}
a>0&&(e.length=a,setTimeout(r,150))},a=e.length;a>=10?setTimeout(r,17):e.length>0&&r()},t.so=(e,t)=>{
let n=!t&&e.endsWith(".json")
;return e=t||e.includes("/")?e:"/front/"+e,fetch(e).then(e=>n?e.json().then(e=>new Map(Object.entries(e))):t?t==="blob"?e.blob():e.arrayBuffer():e.text())
},t.Gi=(e,n)=>{let r,a=0;n=n||1e4;{let t=new AbortController;a=setTimeout(t.abort.bind(t),n),r=fetch(e,{
cache:"force-cache",signal:t.signal})}
return r=r.then(e=>e.status>=300||e.status<200?null:e.blob().catch(e=>(console.log("on reading response:",e),
0)),e=>(console.log("on requesting",e),null)),a&&r.then(()=>{clearTimeout(a)
}),r.then(e=>e?t.ni(e).then(e=>[null,e]):(console.clear(),e))},t.ni=e=>{let n=new FileReader,r=t.Xe()
;return n.onload=e=>{r.Le(e.target.result)},n.readAsDataURL(e),r.Ge},t.hl=e=>e.replace(/[$()*+.?\[\\\]\^{|}]/g,"\\$&")
;let c="",s=0;t.Kn=e=>{let t=Date.now();if(t-s>8e3){if(!e)return"";let t=new Uint8Array(8);crypto.getRandomValues(t),
c=t.reduce((e,t)=>e+(t<16?"0":"")+t.toString(16),"")}return s=t,c},t.Z=e=>{if(e!=null&&e!==!1){
for(e=typeof e!="string"?typeof e=="number"?[e,.5]:e===!0?[.5,.5]:e instanceof Array?e:[+e.x||0,+e.y||0,+e.s||0]:e.trim().split(/[\s,]+/).map((e,t)=>e==="count"&&t<2?e:isNaN(+e)?t<2?.5:0:+e);e.length<2;)e.push(.5)
;for(;e.length<3;)e.push(0);let t=e[0]==="count"||e[1]==="count";return{x:e[0],y:e[1],n:t?0:1,s:t?+e[2]||.01:0}}},
t.bo=e=>{let t="";for(let n=0,r=e.length-1;n<r;n++){let r=e[n];r.trimRight()&&e.indexOf(r,n+1)<0&&(t+=r)}return t},
t.Pl=(e,n,r)=>{let a=!0;a=r!==null&&r!==void 0&&r;let o=n?t.rl(e,"atob"):e;if(n){if(o!=e){
let e=/(?:\xed(?:[\xa1-\xbf][\x80-\xbf]|\xa0[\x80-\xbf])){2}/g,t=/([\xc0-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xf7][\x80-\xbf]{3})+/g
;try{o=o.replace(e,e=>{if(e[1]>"\xb0"||e[1]=="\xb0"&&e[2]>="\x80"||e[4]<"\xb0"||e[4]=="\xb0"&&e[4]<"\x80")return e
;let t=[].map.call(e,e=>e.charCodeAt(0))
;return String.fromCharCode((t[0]&15)<<12|(t[1]&63)<<6|t[2]&63,(t[3]&15)<<12|(t[4]&63)<<6|t[5]&63)}).replace(t,e=>{
if(a){let t=[].map.call(e,e=>e.charCodeAt(0));e=new TextDecoder("utf-8",{fatal:!0}).decode(new Uint8Array(t))}else{
let t=[].map.call(e,e=>"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2));e=decodeURIComponent(t.join(""))}return e})
}catch(e){}}}else{let t
;a?t=(new TextEncoder).encode(e):(o=encodeURIComponent(e).replace(/%..|[^]/g,e=>e.length===1?e:String.fromCharCode(parseInt(e.slice(1),16))),
t=[].map.call(o,e=>e.charCodeAt(0))),o=btoa(String.fromCharCode.apply(String,t))}return o},
t.$l=e=>"\\u"+(e.charCodeAt(0)+65536).toString(16).slice(1),
t.now=()=>new Date(Date.now()-6e4*(new Date).getTimezoneOffset()).toJSON().slice(0,-5).replace("T"," "),
t.ii=()=>/\.(?:avif|bmp|gif|icon?|jpe?g|a?png|svg|tiff?|webp)$/i,t.isNotPriviledged=e=>{let t=e.s.Jl
;return!(t.startsWith("chrome")||t.startsWith("edge"))};let i=(e,t)=>{let n=[],r=0,a=-1,o=0,l=e.length
;for(;r<l;r++)switch(e[r]){case"#":case"&":e.charAt(r+1)==="#"&&(n.push([r+1,l]),r=e.length);break;case"(":case")":
case"?":case"+":t&&(l=r);break;case":":o||t&&(l=r);break;case"{":case"[":o++||(a=r);break;case"]":case"}":
--o||n.push([a,r+1]);break;case'"':{let t=/^"([^"\\]|\\[^])*"/.exec(e.slice(r));o||t&&n.push([r,r+t[0].length]),
r+=t?t[0].length-1:0;break}default:{let t=/^(?:[$a-zA-Z_][$\w]*|\d[\d.eE+-]|,?\s+)/.exec(e.slice(r))
;r+=t?t[0].length-1:0}}return[n,l]};t.tryParse=e=>{try{return JSON.parse(e)}catch(t){return e}},t.Zi=e=>{
let[n,r]=i(e,1),a="",o=0;for(let[r,l]of n){if(e[r]==="#")break;if(e[r-1]!=="="||e[l]&&e[l]!=="&")continue
;a+=e.slice(o,r),o=l;let n=t.tryParse(e.slice(r,l))
;a+=typeof n!="string"||n.length!==l-r?JSON.stringify(n).replace(/[%\s&]/g,t.$l):n.replace(/&/g,"%26")}
return a+=e.slice(o,r),[a,r]},t.splitWhenKeepExpressions=(e,t)=>{let n=i(e)[0],r=-1,a=0,o=0,l=[]
;for(;(r=e.indexOf(t,r+1))>=0;){for(;a<n.length&&r>=n[a][1];)a++
;a<n.length&&r>=n[a][0]?r=n[a][1]-1:(l.push(e.slice(o,r)),o=r+1)}return l.push(e.slice(o)),l},t.nextConfUpdate=e=>{
let t=e?n.iu:n.au;return t=t+1&4095||1,e?n.iu=t:n.au=t},t.yr=()=>n.G===1?0:performance.timeOrigin});

View File

@@ -0,0 +1 @@
import"./define.js";import"./store.js";import"./utils.js";import"./browser.js";import"./normalize_urls.js";import"./parse_urls.js";import"./settings.js";import"./ports.js";import"./exclusions.js";import"./ui_css.js";import"./i18n.js";import"./key_mappings.js";import"./run_commands.js";import"./run_keys.js";import"./tools.js";import"./clipboard.js";import"./eval_urls.js";import"./filter_tabs.js";import"./open_urls.js";import"./frame_commands.js";import"./tab_commands.js";import"./all_commands.js";import"./request_handlers.js";import"./main.js";import"./browsing_data_manager.js";import"./completion_utils.js";import"./completion.js";import*as s from"./action_icon.js";__moduleMap.action_icon=__moduleMap.action_icon||s;import"./others.js";import"./sync.js";import*as o from"./page_handlers.js";import*as m from"./help_dialog.js";import*as r from"../lib/math_parser.js";__moduleMap.page_handlers=__moduleMap.page_handlers||o,__moduleMap.help_dialog=__moduleMap.help_dialog||m,__moduleMap.math_parser=__moduleMap.math_parser||r;

View File

@@ -0,0 +1 @@
"use strict";(function VC(de){var ma,mt,vs,I,M,ps,V=e=>{I="__VimiumC_6079763"===e},d=document,w=Object.setPrototypeOf,K="addEventListener",U="toString",k="prototype",kt="getElementsByTagName",g=EventTarget[k],l=g[K],R=[],D=l.call,a=Reflect.apply,c=D.bind(D),z=g.dispatchEvent,J=HTMLElement[k],Y=Element,e=Y[k],X=e.append,ga=e.getAttribute,re=e.remove,eb=e[kt],n=[],x=n.slice,i=D.bind(n.indexOf),fe=n.forEach,sp=n.splice,q=n.push.bind(n),f=CustomEvent,y=f[k].stopImmediatePropagation,F=FocusEvent,_=Function,Z=_[k],t=Z[U],ct=clearTimeout,C=Document[k],ge=C[kt],$=Object.getOwnPropertyDescriptor,rt=$(F[k],"relatedTarget").get,dO=C.open,dw=C.write,L="VimiumCClickable",kr="6079763",O=L+kr,S=O.slice,ci=e=>{e&&e(c(S,c(t,e),7,24))},en=(e,t)=>{typeof t=="function"&&e.localName!=="a"&&(Q(e),T=T||(qm(dt),1))},H={toString(){var e=this,n=arguments,r=i(h,e),o=a(t,r<0?e:h[r-1],n),s=o!==(ma||(mt=c(t,v),vs=c(S,c(t,V),0,17),ma=c(t,m)));return n.length===2&&n[0]==="__VimiumC_"&&ci(n[1]),s&&o!==mt?o.length!==30||c(S,o,0,17)!==vs?o:c(t,N):(I=0,s?c(e,N,km,V):e(km,N,0,V),I?c(t,s?t:l):o)},addEventListener(e,t){var i=this,n=arguments,r=n.length===4&&e==="__VimiumC_"?ci(n[3]):(typeof e=="string"&&e<"DOMSv"&&(e>"DOMCi"?e>"DOMNo":e>"DOMCh")?(E&&E(),B):a)(l,i,n);return(e==="click"||e==="mousedown"||e==="pointerdown"||e==="dblclick"?t&&i instanceof Y&&i.localName!=="a"&&i!==R[R.length-1]:e===O&&!j&&i&&!i.window&&i.nodeType===1)&&en(i,t),r},open(){return oh(0,this,arguments)},write(){return oh(1,this,arguments)}},m=H[K],v=H[U],md=H.open,dW=H.write,kh="."+location.host,h=[0,0,0,0,l,m,t,v,dO,md,dw,dW],r=d.createElement("div"),T=1,km="__VimiumC_",P=D.bind(e.getRootNode),kc=w({composed:!0},null),s=setTimeout,u=0,b=null,A=null,Q=n.push.bind(R),qm=queueMicrotask,B=a,j=0,E=kh.endsWith(".bing.com")?0:()=>{try{E=0,B=new _("c","return (f,t,a)=>c(f,t,a)")(a)}catch(e){}},dt=()=>{T=s(o,666)},o=()=>{var e=R.length,t=e>512?e-512:0;T=t&&s(o,36),e&&(c(re,r),u=0,a(fe,a(sp,R,[t,e-t]),[pr]),dr(0))},W=(e,t,i)=>{a(z,i||r,[new e(L,w(t,null))])},pr=e=>{var t,n,a,l,m;P(e)!==d?(t=e.ownerDocument)===d?(m=(l=P(e)).nodeType)===1?(l!==r&&c(X,r,l),q(-8-i(A=A||c(x,c(eb,r,"*")),e))):m!==11||(u<10?(n=l.host)?!(l=n.shadowRoot&&P(e,kc))||l!==d&&l.nodeType!==1||typeof(a=e.tagName)!="string"||(l!==d&&l!==r&&c(X,r,l),u++,W(f,{detail:9763+a,composed:!0},e)):(u++,W(F,{relatedTarget:e})):(Q(e),u<13&&(u=13,ct(T),T=s(o,1)))):t.nodeType===9&&t.defaultView&&sr(e,t):q(i(b=b||c(x,c(ge,d,"*")),e))},dr=e=>{n.length&&(u++,W(f,{detail:[n,e]}),n.length=0),b=A=null},sr=(e,t)=>{var i=t[K],n=t.removeEventListener,r="function";if(typeof i==r&&typeof n==r&&i!==m){j=1;try{c(i,e,O,N)}catch(e){}try{c(n,e,O,N)}catch(e){}j=0}},oh=(e,t,i)=>{var n,o=d.readyState<"l"&&(e||i.length<3)&&t===d;return E&&E(),n=B(e?dw:dO,t,i),o&&r&&dr(0,q(-3)),n},N=()=>1,p=d.documentElement,G=r.dataset;if(p&&(!de||!p.lastChild&&p.parentNode===d))if(G&&(G.vimium=kr,z(new F(L,{relatedTarget:r})),!G.vimium)){r[K]("VC",e=>{var t=e&&r&&+c(ga,r,"data-vimium"),i=t?t>>3==6079763?t&7:0:e?0:6;t&&c(y,e),i<4?i>2?c(rt,e).showPicker():o(ct(T)):(r=R.length=0,Q=s=N,T=1)},!0),T=R.length>0?s(o,36):0,g[K]=m,Z[U]=v,C.open=md,C.write=dW;for(let e of[0,2]){let t=e?"onmousedown":"onclick",i="set "+t,n={[i](t){c(h[e],this,t),t&&en(this,t)}},r=$(J,t);h[e]=r.set,h[e+1]=r.set=n[i],Object.defineProperty(J,t,r)}}else de||(l(L,ps=e=>{qm(()=>VC(1)),c(y,e)},M={capture:!0,once:!0}),l("readystatechange",removeEventListener.bind(window,L,ps,M),M))})();

View File

@@ -0,0 +1 @@
"use strict";VApi.e=(i,e)=>{var n,o,r=VimiumInjector;i===6&&r?(n=removeEventListener,(o=r.checkIfEnabled)&&(n("hashchange",o),n("hashchange",o,!0)),r.alive=0,r.destroy=r.checkIfEnabled=r.getCommandCount=null,r.$=r.$r=r.$m=null,r.clickable=null,r.callback&&r.callback(3,"destroy")):i===3&&e.showPicker()},(()=>{var i,e,n,o,r,t=VApi,l=VimiumInjector,c=chrome.runtime,m=e=>{var n,o,r,t=VimiumInjector;return t.eval&&(n=t.eval(e))!==e?n:((r=o=(i=i||new Promise(i=>{var e=document.createElement("script");e.src=`${location.protocol}//${t.host||t.id}/lib/simple_eval.js`,e.onload=()=>{e.remove(),i()},(document.head||document.documentElement).appendChild(e)})).then(()=>VApi.v!==m?(VApi.v=VApi.v.tryEval||VApi.v)(e):void 0)).result=o.then(i=>i&&"ok"in i&&"result"in i?i.result:i),r.ok=o.then(i=>i&&"ok"in i&&"result"in i?i.ok:i),o)},u=null,s=t.r;s[0](32,0,i=>{u=i,VApi.z&&VimiumInjector.$r(4)}),s[2](2,(i,e)=>u?u[i].replace(/\$\d/g,e?i=>typeof e=="string"?e:e[+i[1]-1]:""):"$Msg-"+i),e=top!==window&&frameElement&&parent.VimiumInjector,(n=l.clickable=e&&e.clickable||l.clickable)&&s[2](1,n),l.checkIfEnabled=(i=>{i({H:10,u:location.href})}).bind(null,s[1]),l.getCommandCount=(i=>{var e=i(0);return e!=="-"?parseInt(e,10)||1:-1}).bind(null,s[2]),s[1]=s[2]=void 0,c.onMessageExternal?l.alive=1:(l.alive=.5,o="color:red",r="color:auto",console.log("%cVimium C%c: injected %cpartly%c into %c%s",o,r,o,r,"color:#0c85e9",c.id||location.host,".")),l.$r=i=>{var e;i!==1?i!==4||((e=VimiumInjector).cache=VApi.z,u&&(VApi.v=m,e.callback&&e.callback(2,"complete"))):(e=VimiumInjector)&&e.reload(1)},l.$=t,l.cache=t.z,l.destroy=t.d,l.callback&&l.callback(1,"initing"),t.z&&l.$r(4)})();

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
<!DOCTYPE html><script src="tee.js"></script>

View File

@@ -0,0 +1 @@
"use strict";(()=>{let e,t=chrome.runtime,n=location.pathname.endsWith("offscreen.html"),a=()=>{n||parent.focus(),window.closed||window.close(),e=null},o=t=>{let o=t=>{s=!0,e.postMessage({H:92,r:t}),n||setTimeout(a,0)},{t:c,s:r}=t,i=()=>{switch(c){case 5:case 3:let e=navigator.clipboard;if(n){let e=document,t=e.createElement("textarea");if(c===5)t.value=r,e.body.append(t),t.select(),e.execCommand("copy"),t.remove(),t.value="";else{let n=r<0?-1-r:r;t.maxLength=n||102400,e.body.append(t),t.focus(),e.execCommand("paste"),s=t.value.slice(0,n||102400),t.value="",t.remove(),t.removeAttribute("maxlength")}return Promise.resolve()}return c===5?e.writeText(r):e.readText().then(e=>{s=e});case 4:return window.fetch(r.u).then(e=>e.status<300&&e.status>199?e.blob():Promise.reject("HTTP "+e.status)).then(e=>{let t=URL.createObjectURL(e),n=document.createElement("a");n.href=t,n.download=r.t,n.target="_blank";let a=new MouseEvent("click",{bubbles:!0,cancelable:!0,altKey:!0,detail:1,button:0,buttons:1});n.dispatchEvent(a)});case 10:{let e=r.map(e=>!!e&&matchMedia(e).matches);o(e)}return}switch(c){case 1:case 9:let e=(c===9?new Promise((e,t)=>{let n=document.createElement("img");n.onload=()=>{let a=document.createElement("canvas"),o=a.width=n.naturalWidth,c=a.height=n.naturalHeight,r=a.getContext("2d");if(r)try{r.drawImage(n,0,0,o,c),a.toBlob(n=>n?e(n):t("Can not export from canvas"))}catch(e){t("Can not export tainted canvas")}else t("Can not create canvas")},n.onerror=()=>{t(0)},n.src=r.u}).catch(e=>e!==0?window.fetch(r.u):Promise.reject("Can not load image")):window.fetch(r.u)).then(e=>(r.u="",e instanceof Response?e.blob():e)).then(e=>{r.u="";let t="image/png",n={[t]:e.type===t?e:new Blob([e],{type:t})};return r.t&&(n["text/plain"]=new Blob([r.t],{type:"text/plain"})),navigator.clipboard.write([new ClipboardItem(n)])});return c!==9&&(r.u=""),e}},l=()=>{let e;try{e=i()}catch(e){}e?e.then(()=>{o(s)},e=>{console.log("Vimium C: can not run task=%o:",c,e),o(!1)}):o(!1)},s=!0;n||document.hasFocus()?l():(window.onfocus=l,window.focus())},c=!1;try{e=t.connect({name:""+(2176|(n?4096:0))}),e.onDisconnect.addListener(a)}catch(e){return void a()}e.onMessage.addListener(e=>{let t=e;t.N!==49||c?a():(c=!n,o(t))})})();

View File

@@ -0,0 +1,37 @@
:host{border:none!important;contain:none!important;height:0!important;margin:0!important;
opacity:1!important;outline:none!important;padding:0!important;position:static!important;
transform:none!important;width:0!important;display:contents!important}:host:before,:host:after{display:none!important}
.R{background:none;border:none;box-sizing:content-box;cursor:auto;float:none;font-size-adjust:none;
letter-spacing:normal;line-height-step:0;margin:0;opacity:1;outline:none;padding:0;text-align-last:auto;text-indent:0;
text-shadow:none;text-transform:none;visibility:visible;white-space:normal;word-spacing:normal;
-webkit-writing-mode:horizontal-tb;all:initial;display:block;text-align:left;unicode-bidi:normal;
color:#000;contain:layout style;direction:ltr;font:12px/1 "Helvetica Neue",Arial,sans-serif;
pointer-events:none;position:fixed;user-select:none;z-index:2147483647}
.HM{font-weight:bold;position:absolute;white-space:nowrap}.DLG::backdrop{background:#0000}
.LH{background:linear-gradient(#fff785,#ffc542);border:0.01px solid #e3be23;border-radius:3px;box-shadow:0 3px
5px #0000004d;box-sizing:border-box;contain:layout style;overflow:hidden;padding:2.5px 3px 2px;position:absolute}
.IH{background:#fff7854d;border:0.01px solid #c38a22;position:absolute}.IHS{background:#f664;border-color:#933}
.HUD,.TEE{bottom:-1px;font-size:14px;height:20px;line-height:16px;max-width:336px;min-width:152px;overflow:hidden;
padding:4px 4px 1px;right:152px;text-overflow:ellipsis;white-space:nowrap}
.HUD:after{background:#eee;border-radius:4px 4px 0 0;border:0.01px solid #bbb;content:"";position:absolute;z-index:-1}
.HL{max-width:60vw;right:-4px;padding-right:8px}
.HUD.UI{cursor:text;height:24px}.Find{cursor:text;position:static;width:100%}
.Flash{box-shadow:0 0 4px 2px #4183c4;padding:1px}.AbsF{padding:0;position:absolute}.Sel{box-shadow:0 0 4px 2px #fa0}
.Frame{border:5px solid #ff0}.Frame,.DLG,.HUD:after{box-sizing:border-box;height:100%;left:0;top:0;width:100%}
.Omnibar{left:max(10vw - 12px,50vw - 972px);height:520px;top:64px;width:min(80vw + 24px,1944px)}
.O2{left:max(10% - 12px,50% - 972px);width:min(80% + 24px,1944px)}
.BH{color:#902809}.MC,.MH{color:#d4ac3a}.One{border-color:#fa7}.UI,.DLG{color-scheme:light;pointer-events:all}
.DLG{position:fixed}.PO{all:initial;left:0;position:fixed;top:0}
.D>.LH{background:linear-gradient(#cb0,#c80)}.HUD.D{color:#ccc}.HUD.D:after{background:#222}
@media(forced-colors:active){.R{border-radius:0}
.HM>.LH,.HUD:after{background:#000;border-radius:0}.Flash{outline:4px solid #fff}}
/*#find*/
::selection { background: #ff9632 !important; }
html, body, * { user-select: auto; }
*{cursor:text;font:14px/16px "Helvetica Neue",Arial,sans-serif;margin:0;outline:none;white-space:pre}
.r{all:initial;background:#fff;border-radius:3px 3px 0 0;box-shadow:inset 0 0 1.5px 1px #aaa;color:#000;
cursor:text;display:flex;height:21px;padding:4px 4px 0}.r.D{background:#222;color:#d4d4d4}
#s{flex:0 0 4px}#i{flex:0 1 auto;height:16px;min-width:9px;margin-left:2px;overflow:hidden;padding:0 2px 0 0}
#h{flex:1 0 auto}br{all:inherit!important;display:inline!important}#c{flex:0 0 auto;margin-left:2px}
#s::after{content:"/"}#c::after{content:attr(data-vimium);display:inline}
:host,body{background:#0000!important;margin:0!important;height:24px}

View File

@@ -0,0 +1 @@
<!DOCTYPE html><script src="tee.js"></script>

View File

@@ -0,0 +1,100 @@
<!DOCTYPE html>
<html data-version="1.73">
<head>
<meta charset="utf-8">
<title>Vomnibar of Vimium C</title>
<script defer src="vomnibar.js"></script>
<style>
html{overflow:hidden;}
body{background:#fff;border-radius:5px;box-shadow:0 2px 7px 0.5px rgba(0,0,0,0.8);contain:content;margin:9px 12px 10px;
overflow:hidden;padding:0;position:relative;white-space:nowrap;}
body::after{border:0.5px solid #555;border-radius:5px;bottom:0;left:0;pointer-events:none;position:fixed;right:0;top:0;}
.inactive{opacity:0.6667;transition:opacity 167ms 33ms;}
#bar{background:#f1f1f1;border-bottom:1px dashed #ccc;border-radius:4px 4px 0 0;
contain:strict;font-size:0;height:34px;padding:10px;}#bar.empty{border-radius:4px;border:none;}
#toolbar{color:#999;opacity:0;padding-right:8px;position:absolute;right:9px;top:17px;transition:opacity 120ms 80ms;}
#toolbar,.label{-webkit-user-select:none;user-select:none;}#toolbar:hover,.inactive #toolbar{opacity:1;}
.button{contain:strict;cursor:default;display:inline-block;fill:currentColor;height:20px;margin-left:8px;
stroke:currentColor;width:20px;}.button:hover{background:rgba(255,255,255,0.8);color:#666;}
#input{background:#fff;border:0.5px solid #e8e8e8;border-radius:3px;box-shadow:0 0 1.5px #444;box-sizing:border-box;
color:#000;contain:strict;font-size:20px;height:34px;outline:none;padding:4px 9.5px;width:100%;}
#list{border-radius:0 0 4px 4px;contain:content;}
.item{border-bottom:0.5px solid #ddd;box-sizing:border-box;contain:strict;height:44px;padding:4px 20px 0;}
.b{border-bottom-style:none;border-radius:0 0 4px 4px;height:46px;}
.item:hover{background-color:#cddbef;border-style:none;}
.alt .alt-index::after{background:rgba(255,255,255,0.8);border-radius:21px;color:#333;
content:attr(data-alt-index);font-size:24px;
height:39px;line-height:39px;position:absolute;left:calc(50% - 20px);text-align:center;top:2px;width:39px}
.p{border-color:#bbcee9;}.item.s{background-color:#bed1ea;border-style:none;}
.top{height:20px;overflow:hidden;font:16px/20px "Helvetica Neue",Arial,"PingFang SC",
"Hiragino Sans GB","Microsoft YaHei","Heiti SC","WenQuanYi Micro Hei",sans-serif;}
.icon{background:20px 0/16px no-repeat;fill:#999;fill:var(--vc-c,#999);height:16px;
margin:1.5px 4px 0 0;padding-right:20px;width:16px;vertical-align:top;}
.tab,.math{stroke:#999;stroke:var(--vc-c,#999);stroke-width:4;fill:none;}
.no-favicon .icon{margin-right:-16px;background:none !important;}
.label,.time{color:#999;display:inline-block;font-size:14px;font-weight:normal;}
.undo{font-family:sans-serif,STIXGeneral;}
.bottom{height:18px;line-height:14px;margin-left:20px;overflow:hidden;}
a{color:#3b517d;cursor:default;font:14px/18px "Helvetica Neue",Arial,sans-serif;text-decoration:none;}
.mono-url a{font-family:Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;}
match{color:#000;font-weight:bold;}.title>match{text-decoration:underline;}
#toggle-dark{stroke-linecap:round;stroke-linejoin:bevel;}.i-moon{fill:none;stroke-width:1.4;}
.i-sun{stroke-width:2.1}#toggle-dark:not(.toggled) .i-sun,#toggle-dark.toggled .i-moon{visibility:hidden;}
#close{stroke-linecap:round;stroke-linejoin:round;stroke-width:2.4;}
.level-2{padding-right:32px;}.level-3{padding-right:48px;}.level-4{padding-right:60px;}.level-5{padding-right:72px;}
.less-motion .inactive, .less-motion #toolbar{transition:none;}
.tab{d:path("M2 22v36h44V22zm8 0v-8h44v36h-6m8 -8h6V6H18v6");}
.math{d:path("M2 2h60v60H2zm8 8H54V22H10zm0 20h8v8h-8zm0 16h8v8h-8zm16 0h8v8h-8zm0-16h8v8h-8zm16 0h12v24H42z");}
.bookm{d:path("M32 0l8 20 24 2-20 14 6 26-18-14-20 14 8-26L0 22l24-2");}
.search{d:path("M46 41h-3l-1-1a24 24 1 1 0-2 2l1.1 1.1v3L59 64l5-5zm-10-4a18 18 0 1 1 1-1");}
.domain{d:path("M4,16v4h4l12,36h4L32,32l8,24h4L56,20h4v-4H46v4h4L42,48L34,24h-4l-8,24L14,20h4v-4");}
.history{d:path("M8 10.8A32 32 0 1 1 0 32h6a26 26 1 1 0 6.25-17L20 23H0V3zM28 18v21l15 8 4-5-13-7V18");}
</style>
<style data-media="(forced-colors: active)" id="high-contrast">
*{border-radius:0 !important;}body::after{content:"";border-radius:0;}
.inactive,#toolbar{opacity:1;}#toggle-dark{display:none;}.btn_svg{stroke:#999;}:hover>.btn_svg{stroke:currentColor;}
.s,.item:hover{border-bottom-style:solid;}.s>.top,:hover>.top{font-weight:bold;--vc-c:currentColor;}
</style>
<style id="dark">
body::after{content:"";}
#bar{background:#333;border-color:#666;}#list{background:#000;}
#input{background:#000;border-color:#171717;box-shadow:0 0 1.5px #ccc;color:#ccc;}
#toolbar{color:#666;opacity:1;}.button:hover{background:#000;color:#999;}
.item{border-color:#333;}.item:hover{background-color:#101e32;}
.p{border-color:#1b3355;}.item.s{background-color:#1b3355;}
.top,match{color:#c4c4c4;}a{color:#97aace;}
</style>
<style id="time">.time{float:right;}.time:hover{color:currentColor}</style>
<style id="filtered">
body::after{content:"";}body{box-shadow:none;}
#toolbar{opacity:0;}#bar{background:#ccc}.has-dark>#bar{background:#0e0e0e}
</style>
</head>
<body style="display: none;">
<div id="bar">
<input type="text" id="input" spellcheck="false" autocomplete="off" autocapitalize="off"
inputmode="search" enterkeyhint="Go" />
<div id="toolbar">
<span role="button" class="button" id="toggle-dark" title="Toggle Dark"><svg class="btn_svg" viewBox="0 0 20 20">
<path class="i-moon" d="M5.4 3A7.2 7.3 0 1 1 5.4 17A6.4 7 0 1 0 5.4 3z"></path>
<circle class="i-sun" cx="10" cy="10" r="3.2"></circle><path class="i-sun"
d="M2 10h2m6 6v2m6-8h2M10 2v2M4.3 4.3l1.4 1.4M15.7 4.3l-1.4 1.4M4.3 15.7l1.4-1.4M14.3 14.3l1.4 1.4"></path>
</svg></span><span role="button" class="button" id="close" title="Close"><svg class="btn_svg" viewBox="0 0 20 20">
<path d="M6 6l8 8zM6 14L14 6"></path></svg></span>
</div>
</div>
<div id="list">
<script type="text/x-template" id="template">
<div class="item" data-alt-index="{{altIndex}}">
<div class="top">
<svg class="icon{{level}}{{favIcon}}" viewBox="0 0 64 64">
<path class="{{typeIcon}}"></path>
</svg><span class="title">{{title}}</span>{{label}}{{time}}
</div>
<div class="bottom">
<a>{{textSplit}}</a>
</div>
</div></script>
</div>
</body>
</html>

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
export default{"115":"No changes","137":"becomes to ","138":"only hook","139":"exclude","140":"becomes","141":"keeps to ","142":"will ","143":"be","144":"disabled","145":" enabled","147":" (on this tab, $1 for once)","148":" if reset","115_2":"Save changes","115_3":"Saved","143_2":"be","Close":"","NS":" ","Once":" for once","asterisk":"asterisk/*","colon":":","failInLoading":" (fail in loading) ","imgCopied":"$1 image copied","loading":"loading…","none":" (null) ","s1":"This is a snapshot image:"}

View File

@@ -0,0 +1 @@
{"Upgrade":"Upgrade","allLocal":"Local","bookmarksRevoked":"No access to bookmarks - please grant it first","cannotDelSug":"This item cannot be deleted","changeItsCS":"change its content settings","clickForMore":"Click here for more information.","cmdConfirm":"You have asked Vimium C to perform $1 repeats of the command:\n $2\n\nAre you sure you want to continue?","copiedWndInfo":"(info of tabs)","csCleared":"$1 content settings have been cleared","delSug":"Succeed to delete a $1","disabledUrlToOpen":"Extensions can't open such URLs on Firefox","discardFail":"Cannot discard the tab","downloadBarClosed":"The download bar has been closed","downloadFail":"Failed in downloading","downloadTimeout":"Downloading took too long","dupTab":"duplicate such a tab","failCopyingImg":"Failed in copying image","fhCleared":"$1find history has been cleared","fullyDisabled":"disabled","fullyEnabled":"enabled","globalInsertMode":"Insert mode$1","halfDisabled":"partially disabled","harmfulURL":"The URL may be harmful to your computer !!!","has":" has","hasIncog":"This tab has been in an incognito window","have":"s have","imgCopied":"$1 image copied","incog":"incognito ","indexOOR":"The session index provided is out of range","invalidImg":"The selected image URL is invalid","jsFail":"Here's not allowed to eval JS scripts","mBeginCreate":"Create mark…","mBeginGoto":"Go to mark…","mCreate":"Created","mJumpTo":"Jumped to","mLastMark":"last","mLocalMarkTask":"$1 local mark [ $2 ]","mNormalMarkTask":"$1 $2 mark : ' $3 '","markRemoved":"$1 $2 mark$3 been removed","moveAllTabs":"Nothing happens when moving every tab of this window","mute":"$1 audible tab(s) are muted","muted":"Muted","needText":"\"showTip\" needs a \"text\" option","needVal":"need value=… for option $1","newStat":"The page status is $1 now","noCopied":"No text copied!","noDiscardIfOld":"Vimium C cannot discard tabs before Chromium $1","noEngineFound":"No search engine found!","noKw":"This command lacks an argument \"keyword\"","noMark":"$1 mark not set : ' $2 '","noMute":"Vimium C cannot control mute state before Chromium $1","noQueryFound":"No query words recognized!","noReader":"No reader view for this page","noSelOrCopied":"No selected nor copied text found","noSessionItem":"The closed session may be too old","noStyleName":"No Vomnibar style name has been given","noTabHistory":"Cannot open a history of this tab","noTabItem":"The target tab has disappeared!","notAllowA":"It's not allowed to $1","notBool":"$1 is not a boolean switch","notDelSug":"The $1 cannot be found!","notFgOpt":"$1 is not a valid switch","notModify":"modify #$1 option","notRemoveCur":"The current tab should be kept","notRestoreIfIncog":"Cannot restore a tab in incognito mode!","openExtSrc":"visit HTML of an extension's page","openIncog":"open this URL in incognito mode","quoteA":"\"$1\"","readClipboard":"read text in clipboard","setFTPCS":"set FTP pages' content settings","setFileCS":"set file CSs since Chromium $1","setFolderCS":"set CS of file folders","setIncogCS":"change incognito settings","turnOff":"$1 has been turned off","turnOn":"Now $1 is on","unknownA":"unknown option name $1","unknownCS":"Unknown content settings type: $1","unlikeVal":"value of $1 should be like $2","unmute":"$1 audible tab(s) are unmuted","unmuted":"Unmuted","upgradeMsg":"Vimium C has been upgraded to v$1.\n","upgradeMsg2":"Réparer cela pourrait casser des sites Web comme IEEE.","useVal":"Now $1 uses $2"}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
export default{"115":"No changes","144":"disabled","115_2":"Save changes","115_3":"Saved","145_2":"enabled","3_2":"(Sorted)","49_2":"Ignore if not in ASCII","JSONParseError":"Sorry, Vimium C cannot parse the JSON file:\n an unexpected character at line $1, column $2","JSONTooLarge":" Fatal Error:\n\nYour settings file \"$1\" seems too large!\n\nAs limited by your browser, the max size is only $2 KB.","NS":" ","NewTabAdapter":"NewTab Adapter","addons":"Firefox Add-ons","atTime":"at $1","backupFile":"a settings copy","based":" based","before":"before","beforeChromium":"before Chromium $1","beforeUnload":"You have unsaved changes to options.","cancelImport":"You cancelled importing","changedBeforeSync":" Error:\nSorry, but you're enabling the \"Sync settings\" option\n while some other options are also modified.\nPlease only perform one action at a time!","clickToUnmask":"# Click to unmask the content…","comma":",","commonPlatform":"common platforms","confirmImport":"You are loading $1:\n * from $2Vimium C$3\n * for $4\n * exported $5\n\nAre you sure you want to continue?","dirtyOptions":"Such options have been changed at other places:\n * $1\n\nContinue to save and override these changes?","edgestore":"MS Edge Add-ons","exc":"Error: ","filePlatform":"the $1 platform","fileVCNewer":" (newer)","fileVCVer":"version * of ","fileVomnibar":"A file vomnibar is limited by browser to only work on file:///* pages.","haveToOpenManually":"On Firefox you have to visit this URL manually","httpVomnibar":"An HTTP vomnibar is limited by browser and doesn't work on HTTPS pages.","ignoredNonEN":"Keyboard layout has been ignored! Please consider disabling the option.","importOK":"Import settings data: OK!","invalidCss":"Found invalid CSS selectors:","invalidOption":"This feature can not work $1","keepSyncing":"Do you want to keep settings synchronized with your current browser account?\n\nPress \"Cancel\" to stop it.","lackPermission":"for lacking permission $1","mac":"macOS","manageShortcut":"\"Manage Shortcuts\" in \"Tools Menu\" of ","nonPlainURL":"The value \"$1\" is not a valid plain URL.","notJSON":"No JSON data found!","notVCJSON":"Sorry, no Vimium C settings data found!","onlyExtVomnibar":"Extension vomnibar pages can only work before Chromium $1.","optNeedChromeUrlFirst":"Please enable the \"#extensions-on-chrome-urls\" browser flag first.","optOfChromeUrl":" (need #extensions-on-chrome-urls)","opt_bookmarks":"Search in bookmarks or add new items","opt_cNewtab":"Run on Chrome's native New Tab Page","opt_chromeUrl":"Run on chrome://*/* pages","opt_clipboardRead":"Read text in system clipboard (only during related commands)","opt_closeShelf":"Close the download bar and allow an alternative API to download files","opt_contentSettings":"Modify content settings of websites like images and JavaScript","opt_cookies":"cookies: only for contextual info to work with Multi-Account Containers","opt_downloads":"Let browser download files","rec_perm":" [recommended]","recommendedFile":"the recommended settings","refusedURLs":"The URL \"$1\" is restricted to be opened by a WebExtension from Firefox browser.","requireChromium":" (need Chromium $1+)","unknown":"(unknown)","warningForSync":" Warning:\nthe current settings will be OVERRIDDEN the next time Vimium C starts!\nPlease back up your settings using the \"Export Settings\" button\n!!! RIGHT NOW !!!","webstore":"Chrome Web Store","win":"Windows"}

View File

@@ -0,0 +1 @@
export default{"115":"Aucun changement","137":"commence à ","138":"s'enclenche seulement","139":"exclue ","140":"devient ","141":"garde ","142":"va ","143":"être","144":"désactivé(es)","145":"activé(es)","147":" (sur cet onglet, $1 une fois)","148":" si remis à zéro","115_2":"Sauvegarder","115_3":"A sauvegardé","143_2":"être","Disable":"Désactiver","Enable":"Activer","NS":" ","Once":" une fois","asterisk":"Astérisque/*","colon":":","imgCopied":"A copié l'image $1"}

View File

@@ -0,0 +1 @@
{"All":"Tous les","Global":"globale","Local":"locale","OpenC":"Ouvrir: ","Other":"Autres","Upgrade":"Mise à jour","allLocal":"Locale","bookmarksRevoked":"Pas d'accès aux favoris - veuillez d'abord l'accorder","cannotDelSug":"Cet élément ne peut être supprimé","changeItsCS":"changez ses paramètres de contenu","clickForMore":"Cliquez ici pour plus d'informations.","cmdConfirm":"Vous avez demandé à Vimium C d'effectuer $1 répétitions de la commande:\n $2\n\nÊtes-vous certain de vouloir continuer ?","copiedWndInfo":"(info des onglets)","csCleared":"Les paramètres du contenu $1 ont été effacés","delSug":"A réussi à supprimer un $1","disabledUrlToOpen":"Firefox n'autorise pas l'extension à ouvrir cette URL","discardFail":"Ne peut pas décharger l'onglet","downloadBarClosed":"La barre de téléchargement a été fermée","downloadFail":"Échec du téléchargement","downloadTimeout":"Le téléchargement a pris trop de temps","dupTab":"duplique un tel onglet","failCopyingImg":"Échec de la copie de l'image","fhCleared":"$1 historique de recherche nettoyé","fullyDisabled":"désactivée","fullyEnabled":"activé(es)","globalInsertMode":"Mode insertion$1","halfDisabled":"partiellement désactivé(es)","harmfulURL":"L'URL peut être dangereuse pour votre ordinateur","has":" a","hasIncog":"Cet onglet provient d'une fenêtre incognito","have":"s ont","imgCopied":"A copié l'image $1","incog":"incognito ","indexOOR":"L'index de session fourni est hors de portée","invalidImg":"L'URL de l'image sélectionnée est invalide","jsFail":"Ici, il n'est pas permis d'évaluer les scripts JS","mBeginCreate":"Crée un marqueur…","mBeginGoto":"Va au marqueur…","mCreate":"Créé","mJumpTo":"Sauté vers","mLastMark":"dernier","mLocalMarkTask":"$1 local marque [ $2 ]","mNormalMarkTask":"$1 $2 marque : ' $3 '","markRemoved":"$1 marques $2$3 été supprimé","moveAllTabs":"Rien ne se passe en déplacant les onglets de cette fenêtre","mute":"$1 onglet(s) sont mis en sourdine","muted":"Mis en sourdine","needText":"\"showTip\" a besoin d'une option \"texte\"","needVal":"besoin de valeur=... pour l'option $1","newStat":"Désormais le statut de la page est $1","noCopied":"Aucun texte copié !","noDiscardIfOld":"Vimium C ne peut pas décharger les onglets avant Chromium $1","noEngineFind":"Aucun moteur de recherche trouvé !","noKw":"Cette commande manque l'argument \"mot-clé\"","noMark":"$1 marque non-défini : ' $2 '","noMute":"Vimium C ne peut pas contrôler l'état de sourdine avant Chromium $1","noQueryFound":"Aucun mot de requête reconnu!","noReader":"Pas de vue lecteur pour cette page","noSelOrCopied":"Aucun texte sélectionné ou copié trouvé","noSessionItem":"La session fermée semble être trop ancienne","noStyleName":"Aucun nom de style de Vomnibar n'est donné","noTabHistory":"Ne peut pas ouvrir un historique de cet onglet","noTabItem":"L'onglet cible a disparu !","notAllowA":"Il est interdit de $1","notBool":"$1 n'est pas un commutateur booléen","notDelSug":"Le $1 n'est pas trouvé !","notFgOpt":"$1 n'est pas un changement valide","notModify":"modifie #$1 option","notRemoveCur":"L'onglet courant devrait être conservé","notRestoreIfIncog":"Ne peut pas restaurer un onglet de mode incognito !","openExtSrc":"ouvre le code-source HTML d'une page d'extension","openIncog":"ouvre l'URL en mode incognito","quoteA":"\"$1\"","readClipboard":"lire le texte dans le presse-papiers","setFTPCS":"spécifie les paramètres de contenu des pages de FTP","setFileCS":"spécifie les feuilles de style du fichier depuis Chromium $1","setFolderCS":"spécifie la feuille de style des dossiers de fichiers","setIncogCS":"changer les paramètres incognito","turnOff":"$1 a été désactivée","turnOn":"Désormais $1 est activé","unknownA":"nom d'option inconnu $1","unknownCS":"Paramètres de contenu inconnus: $1","unlikeVal":"la valeur de $1 devrait être comme $2","unmute":"$1 onglet(s) ont leurs sourdines désactivées","unmuted":"Sourdine désactivée","upgradeMsg":"Vimium C a été mise à jour vers la v$1.\n","upgradeMsg2":"Basé sur les API Manifest V3.","useVal":"Désormais $1 utilise $2"}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
export default{"JSONParseError":"Désolé, Vimium C ne peut analyser le fichier JSON :\n un caractère inattendu à la ligne $1, colonne $2","JSONTooLarge":" Erreur Fatale :\n\nVotre fichier de paramètres \"$1\" semble trop grand !\n\nTel que limité par votre navigateur, la taille maximale est de seulement $2 Ko.","NewTabAdapter":"NewTab Adapter (Adaptateur de nouvel onglet)","addons":"Extensions Firefox","atTime":"à $1","backupFile":"une copie des paramètres","before":"avant","beforeChromium":"sur navigateurs Chromium avant v$1","beforeUnload":"Vous avez des modifications non-sauvegardées dans les options","cancelImport":"Vous avez annulé l'importation","changedBeforeSync":" Erreur:\nDésolé, mais vous êtes en train d'activer les options de \"Sync\"\n tandis que d'autres options sont également modifiées.\nMerci d'effectuer une action à la fois!","clickToUnmask":"# Cliquez pour retirer le masque du contenu…","commonPlatform":"les plateformes communes","confirmImport":"Vous êtes en train de charger $1:\n * depuis $2Vimium C$3\n * pour $4\n * exporté $5\n\nÊtes-vous sûr de vouloir continuer ?","dirtyOptions":"De telles options ont été changées à d'autres endroits:\n * $1\n\nContinuer à sauvegarder et écraser avec ces modifications ?","edgestore":"Extensions MS Edge","exc":"Erreur: ","filePlatform":"la plateforme $1","fileVCNewer":" (plus récent(e))","fileVCVer":"version * de ","fileVomnibar":"Une page de fichier de Vomnibar est limitée par le navigateur pour fonctionner uniquement sur file:///* pages.","haveToOpenManually":"Sur Firefox vous devez visiter cette URL manuellement","httpVomnibar":"Une page HTTP de Vomnibar est limitée par le navigateur et ne fonctionne pas sur les pages HTTPS.","ignoredNonEN":"La configuration Clavier a été ignorée ! Merci de considérer de désactiver l'option.","importOK":"Import des données de paramétrage : OK!","invalidCss":"Sélecteurs CSS non valides trouvés:","invalidOption":"Cette fonctionnalité ne peut pas fonctionner $1","keepSyncing":"Voulez-vous conserver les paramètres synchronisés avec votre compte de navigateur courant ?\n\nAppuyez sur \"Annuler\" pour arrêter.","lackPermission":"pour manquer de permissions $1","manageShortcut":"\"Paramétrer les raccourcis\" dans \"le menu Outils\" de ","nonPlainURL":"La valeur \"$1\" n'est pas une URL ordinaire valide","notJSON":"Aucune donnée JSON trouvée !","notVCJSON":"Désolé, pas de données de paramètres Vimium C trouvées !","onlyExtVomnibar":"Seules les pages d'extension de Vomnibar peuvent fonctionner avant Chromium $1","recommendedFile":"les paramètres recommandés","refusedURLs":"L'ouverture de l'URL \"$1\" par une WebExtension est refusée par le navigateur Firefox.","unknown":"(inconnu(es))","warningForSync":" Attention:\nles paramètres courants seront RÉÉCRIS par la prochaine que Vimium C démarre !\nMerci de sauvegarder vos paramètres en utilisant le bouton \"Exporter les paramètres\"\n!!! MAINTENANT !!!","webstore":"Chrome Web Store"}

View File

@@ -0,0 +1 @@
export default{"2":"增加规则","115":"无需保存","120":"停用一次","121":"重置","122":"上表是适用于当前网页的规则。","123":"可以保存修改并关闭此对话框。","125":" ","126":"尚未运行","127":"在当前页面上","128":"目前,浏览器为了保护您的隐私和运行安全,会禁止 Vimium 和 Vimium C 在某些页面上运行,比如浏览器设置页面。","129":"因此除非未来浏览器主动放宽限制否则您将始终不能使Vimium C或其它任何普通的扩展程序在这类页面上运行起来。","130":"如果您刚刚安装了 ","131":",那么请","132":"刷新","133":"当前页面试试。","134":"更多配置详见 ","135":"Vimium C 设置","136":" 页面。","137":"现在","138":"仅识别","139":"不识别","140":"现在处于","141":"继续","142":"将会","143":"保持","144":"停用","145":"启用","147":"(当前网页处于 临时$1 状态)","148":"(保存时自动取消状态锁定)","115_2":"保存","115_3":"已保存","121_2":"更多配置","127_2":"此页面上运行了支持 Vimium C 的扩展程序,但是它并不在受信任的扩展列表中。","127_3":"信任此扩展","129_2":"另外","129_3":"浏览器特意增加了一项安全配置,默认阻止 Vimium C 等扩展在搜索引擎的结果页上运行。您可以前往 Opera 的扩展管理页面手动启用“允许访问搜索页面”。","133_2":"重试","143_2":"转为","143_3":"完全","Close":"关闭","Disable":"停用","Enable":"启用","Keys":"按键列表","NS":"","Once":"一次","Patterns":"网址匹配规则","Remove":"删除","VerIs":"版本:","asterisk":"星号*","colon":"","completelyDisabled":"完全停止工作","failInLoading":"(图片加载失败)","imgCopied":"已复制 $1 图片","loading":"正在加载……","none":"(空)","onlyHook":"仅这些按键生效","passThrough":"仅这些按键被停用(不组成快捷键)","period":"。","s1":"以下是截图:","t_ERROR":"错误","t_copy":"复制","t_math":"计算器","t_search":"搜索"}

View File

@@ -0,0 +1 @@
{"All":"所有","Global":"全局","Images":"图片","Local":"当前网页下的","NS":"","OpenC":"访问:","Other":"其他","Upgrade":"已更新","allLocal":"各个网站下的","bookmarksRevoked":"未能读取收藏列表,需要授予“收藏夹”权限","cannotDelSug":"不可删除此条搜索建议","changeItsCS":"改变此网页的功能权限","clickForMore":"点击阅读详细信息。","cmdConfirm":"您希望 Vimium C 执行 $1 次如下命令:\n $2\n\n是否确认继续?","colon":"","copiedWndInfo":"(标签页信息)","csCleared":"对各网站 $1 功能权限的修改已重置","delSug":"成功删除所选$1","disabledUrlToOpen":"Firefox 不允许扩展打开此网址","discardFail":"无法丢弃此网页","downloadBarClosed":"下载栏已隐藏","downloadFail":"无法下载此对象","downloadTimeout":"对象下载超时","dupTab":"复制这个标签页","failCopyingImg":"无法复制图片到剪贴板","fhCleared":"页内查找历史已经清空","fullyDisabled":"完全停用","fullyEnabled":"全部生效","globalInsertMode":"Vimium C 已暂停$1","halfDisabled":"部分停用","harmfulURL":"发现网址可能危害您的电脑!!!","has":"已经","hasIncog":"此标签页已经在无痕窗口中了","have":"已经","imgCopied":"已复制 $1 图片","incog":"无痕窗口的","indexOOR":"标签页序号超出了范围","invalidImg":"所选网址不是一个有效的图片","jsFail":"抱歉,无法在当前网页上执行 JS 脚本","mBeginCreate":"将要创建标记……","mBeginGoto":"将要跳转到……","mCreate":"创建了","mJumpTo":"跳转到","mLastMark":"默认","mLocalMarkTask":"$1 #$2 位置记录","mNormalMarkTask":"$1 “$2标记$3 ”","markRemoved":"$3清理了$1个$2标记","moveAllTabs":"不应该移动一个窗口的所有标签页","mute":"已为$1标签页设置了静音","muted":"已静音","needText":"需要“text”参数为提示文字","needVal":"需要为$1指定“value”参数","newStat":"Vimium C 快捷键 $1","noCopied":"剪贴板中没有文字","noDiscardIfOld":"在 Chromium $1 之前扩展不能丢弃网页","noEngineFound":"未能识别所属的搜索引擎","noKw":"需要参数“keyword”为某个已定义的搜索引擎","noMark":"$1标记中不存在“ $2 ”","noMute":"在 Chromium $1 之前扩展程序不能设置静音","noQueryFound":"未能识别搜索词","noReader":"此网页无法进入阅读模式","noSelOrCopied":"没有选中文字,剪贴板中也没有文字","noSessionItem":"想要恢复的标签页已经关闭太久了","noStyleName":"需要用“style”参数指定样式名称","noTabHistory":"无法获取此网页的访问历史","noTabItem":"目标标签页不存在","notAllowA":"Vimium C 无法$1","notBool":"$1不是开关类型的","notDelSug":"未找到指定的$1","notFgOpt":"$1不是合适的配置项","notModify":"修改“$1”选项","notRemoveCur":"不应该以这种方式关闭当前网页","notRestoreIfIncog":"无法恢复已关闭的无痕标签页!","openExtSrc":"显示一个扩展程序网页的源代码","openIncog":"在无痕模式下打开此网页","quoteA":"“$1”","readClipboard":"读取剪贴板文字","setFTPCS":"设置 FTP 网页的功能权限","setFileCS":"在 Chromium $1+ 设置本地文件网页的功能权限","setFolderCS":"设置本地文件夹网页的功能权限","setIncogCS":"设置无痕模式下网页的功能权限","sugs":"t=标签页 h=历史记录条目 s=最近关闭的标签页","turnOff":"已临时停用 $1","turnOn":"已临时启用 $1","unknownA":"$1不是一个配置项","unknownCS":"未知的网站功能类型:$1","unlikeVal":"$1的值应当类似于“$2”","unmute":"已取消$1标签页的静音状态","unmuted":"已取消静音","upgradeMsg":"您的 Vimium C 已经更新至 $1 版。\n","upgradeMsg2":"修复了可能影响 IEEE 等网站显示内容的错误。","useVal":"临时设置 $1 为 $2"}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
export default{"2":"增加規則","115":"無需保存","120":"停用一次","121":"重置","122":"上表是適用於當前網頁的規則。","123":"可以保存修改並關閉此對話框。","125":" ","126":"尚未運行","127":"在當前頁面上","128":"目前,瀏覽器為了保護您的隱私和運行安全,會禁止 Vimium 和 Vimium C 在某些頁面上運行,比如瀏覽器設定頁面。","129":"因此除非未來瀏覽器主動放寬限制,否則您將始終不能使 Vimium C或其它任何普通的擴充程式在這類頁面上運行起來。","130":"如果您剛剛安裝了 ","131":",那麼請","132":"刷新","133":"當前頁面試試。","134":"更多設定詳見 ","135":"Vimium C 設定","136":" 頁面。","137":"現在","138":"僅識別","139":"不識別","140":"現在處於","141":"繼續","142":"將會","143":"保持","144":"停用","145":"啟用","147":"(當前網頁處於 臨時$1 狀態)","148":"(保存時自動取消狀態鎖定)","115_2":"保存","115_3":"已保存","121_2":"更多設定","127_2":"此頁面上運行了支持 Vimium C 的擴充程式,但是它並不在受信任的擴充列表中。","127_3":"信任此擴充","129_2":"另外","129_3":"瀏覽器特意增加了一項安全設定,默認阻止 Vimium C 等擴充在搜尋引擎的結果頁上運行。您可以前往 Opera 的擴充管理頁面手動啟用“允許訪問搜尋頁面”。","133_2":"重試","143_2":"轉為","143_3":"完全","Close":"關閉","Disable":"停用","Enable":"啟用","Keys":"按鍵列表","NS":"","Once":"一次","Patterns":"網址匹配規則","Remove":"刪除","VerIs":"版本:","asterisk":"星號*","colon":"","completelyDisabled":"完全停止工作","failInLoading":"(圖片加載失敗)","imgCopied":"已複製 $1 圖片","loading":"正在加載……","none":"(空)","onlyHook":"僅這些按鍵生效","passThrough":"僅這些按鍵被停用(不組成快速鍵)","period":"。","s1":"以下是截圖:","t_ERROR":"錯誤","t_copy":"複製","t_math":"計算器","t_search":"搜尋"}

View File

@@ -0,0 +1 @@
{"All":"所有","Global":"全局","Images":"圖片","Local":"當前網頁下的","NS":"","OpenC":"訪問:","Other":"其他","Upgrade":"已更新","allLocal":"各個網站下的","bookmarksRevoked":"未能讀取書籤列表,需要授予“書籤”權限","cannotDelSug":"不可刪除此條搜索建議","changeItsCS":"改變此網頁的功能權限","clickForMore":"點擊閱讀詳細信息。","cmdConfirm":"您希望 Vimium C 執行 $1 次如下命令:\n $2\n\n是否確認繼續?","colon":"","copiedWndInfo":"(分頁信息)","csCleared":"對各網站 $1 功能權限的修改已重置","delSug":"成功刪除所選$1","disabledUrlToOpen":"Firefox 不允許擴展存取此網址","discardFail":"無法丟棄此網頁","downloadBarClosed":"下載欄已隱藏","downloadFail":"無法下載此對象","downloadTimeout":"對象下載超時","dupTab":"複製這個分頁","failCopyingImg":"無法複製圖片到剪貼簿","fhCleared":"頁內查找歷史已經清空","fullyDisabled":"完全停用","fullyEnabled":"全部生效","globalInsertMode":"Vimium C 已暫停$1","halfDisabled":"部分停用","harmfulURL":"發現網址可能危害您的電腦!!!","has":"已經","hasIncog":"此分頁已經在無痕視窗中了","have":"已經","imgCopied":"已複製 $1 圖片","incog":"無痕視窗的","indexOOR":"分頁序號超出了範圍","invalidImg":"所選網址不是一個有效的圖片","jsFail":"抱歉,無法在當前網頁上執行 JS 腳本","mBeginCreate":"將要創建標記……","mBeginGoto":"將要跳轉到……","mCreate":"創建了","mJumpTo":"跳轉到","mLastMark":"默認","mLocalMarkTask":"$1 #$2 位置記錄","mNormalMarkTask":"$1 “$2標記$3 ”","markRemoved":"$3清理了$1個$2標記","moveAllTabs":"不應該移動一個視窗的所有分頁","mute":"已為$1分頁設置了靜音","muted":"已靜音","needText":"需要“text”參數為提示文字","needVal":"需要為$1指定“value”參數","newStat":"Vimium C 快速鍵 $1","noCopied":"剪貼簿中沒有文字","noDiscardIfOld":"在 Chromium $1 之前擴展不能丟棄網頁","noEngineFound":"未能識別所屬的搜索引擎","noKw":"需要參數“keyword”為某個已定義的搜索引擎","noMark":"$1標記中不存在“ $2 ”","noMute":"在 Chromium $1 之前擴展程序不能設置靜音","noQueryFound":"未能識別搜索詞","noReader":"此網頁無法進入閱讀模式","noSelOrCopied":"沒有選中文字,剪貼簿中也沒有文字","noSessionItem":"想要恢復的分頁已經關閉太久了","noStyleName":"需要用“style”參數指定樣式名稱","noTabHistory":"無法獲取此網頁的訪問歷史","noTabItem":"目標分頁不存在","notAllowA":"Vimium C 無法$1","notBool":"$1不是開關類型的","notDelSug":"未找到指定的$1","notFgOpt":"$1不是合適的設定項","notModify":"修改“$1”選項","notRemoveCur":"不應該以這種方式關閉當前網頁","notRestoreIfIncog":"無法恢復已關閉的無痕分頁!","openExtSrc":"顯示一個擴展程序網頁的原始碼","openIncog":"在無痕模式下打開此網頁","quoteA":"“$1”","readClipboard":"讀取剪貼簿文字","setFTPCS":"設置 FTP 網頁的功能權限","setFileCS":"在 Chromium $1+ 設置本地文件網頁的功能權限","setFolderCS":"設置本地文件夾網頁的功能權限","setIncogCS":"設置無痕模式下網頁的功能權限","sugs":"t=分頁 h=歷史記錄條目 s=最近關閉的分頁","turnOff":"已臨時停用 $1","turnOn":"已臨時啟用 $1","unknownA":"$1不是一個設定項","unknownCS":"未知的網站功能類型:$1","unlikeVal":"$1的值應當類似於“$2”","unmute":"已取消$1分頁的靜音狀態","unmuted":"已取消靜音","upgradeMsg":"您的 Vimium C 已經更新至 $1 版。\n","upgradeMsg2":"修正了可能影響 IEEE 等網站顯示內容的錯誤。","useVal":"臨時設置 $1 為 $2"}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 890 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 798 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

View File

@@ -0,0 +1 @@
"use strict";var VimiumInjector;(()=>{let t=VimiumInjector,e={id:"",alive:-1,host:"",version:"",cache:null,clickable:void 0,eval:null,reload:null,checkIfEnabled:null,$:null,$h:null,$m:null,$r:null,$g:null,getCommandCount:null,callback:null,destroy:null};if(t)for(let n of Object.keys(t))e[n]=t[n];e.alive=-1,e.$g=null,VimiumInjector=e})(),(function(t,e){function n(t,n){let l,u,a=VimiumInjector,d=a&&a.clickable,h=a&&a.callback;if(!t){let e=n&&n.message,i=o.id||location.host||location.protocol;if(u=!!(e&&e.lastIndexOf("not exist")>=0&&o.id),t===!1?l=": not in the allow list.":!u&&n?l=e?`:\n\t${e}`:": no backend found.":s>3?(l=e?`:\n\t${e}`:`: retried but failed (${t}).`,u=!1):(setTimeout(f,200*s),s++,u=!0),!u){l=l||` (${s} retries).`;let t="color:red",e="color:auto";console.log("%cVimium C%c: %cfail%c to inject into %c%s%c %s",t,e,t,e,"color:#0c85e9",i,e,l),h&&a.callback(-1,l)}}a&&typeof a.destroy=="function"&&a.destroy(!0);let v=t?t.h:"",b=VimiumInjector={id:m,alive:0,host:m,version:t?t.version:"",cache:null,clickable:d,eval:null,reload:e(c),checkIfEnabled:null,$:null,$h:t=>"vimium-c."+t+v,$m(t){VimiumInjector&&VimiumInjector.$r(typeof t=="object"?t.t:t)},$r(){},$g:r!=null?r===""||r.toLowerCase()==="true":null,getCommandCount:null,callback:h||null,destroy:null},$=document.documentElement;if(!(t&&$ instanceof HTMLHtmlElement))return n;let p=document.contains(i)?i:(document.head||$).lastChild||document.head,g=p.nextSibling,k=p.parentElement,C=[];for(let e of t.s){let t=document.createElement("script");t.type="text/javascript",t.async=!1,t.src=e,k.insertBefore(t,g),C.push(t)}C.length>0&&(C[C.length-1].onload=function(){this.onload=null;for(let t=C.length;0<=--t;)C[t].remove()}),h&&b.callback(0,"loading")}function l(){a(()=>{a(()=>{setTimeout(f,0)},{timeout:67})},{timeout:330})}let o=chrome.runtime,i=document.currentScript,c=i.src,u=c.indexOf("://")+3,r=i.dataset.blockFocus,a=requestIdleCallback,s=1,d=c.slice(u,c.indexOf("/",u)),m=d;if(m=i.dataset.extensionId||m,m===d&&((o.getManifest()||{}).manifest_version||3)>=3)return void alert("Require [data-extension-id] on <script> of vimium-c/injector.js");VimiumInjector.id=m;let f=()=>{try{o.sendMessage(m,{handler:99,scripts:!0},t=>{let e=o.lastError;return e?n(void 0,e):n(t),e})}catch(t){console.log("Can not send message to the extension of %o: %s",m,t&&t.message||t+"")}};document.readyState!=="loading"?l():addEventListener("DOMContentLoaded",l,{capture:!0,once:!0})})(0,t=>e=>{function n(){let n=document.documentElement,l=document.head||document.body||n,o=document.createElement("script");l&&(o.type="text/javascript",o.async=!1,o.src=t,console.log("%cVimium C%c begins to reload%s.","color:red","color:auto",e===1?" because it has been updated.":""),l.append(o))}let l=VimiumInjector;if(l){let t=l.clickable;typeof l.destroy=="function"&&l.destroy(!0),l.clickable=t}e?setTimeout(n,200):n()}),(!document.currentScript||(document.currentScript.dataset.vimiumHooks||"").toLowerCase()!=="false")&&VimiumInjector.clickable!==null&&(function(){VimiumInjector.clickable=VimiumInjector.clickable||new WeakSet;let t=EventTarget,e=t.prototype,n=e.addEventListener;if(n.vimiumHooked===!0)return;let l=HTMLAnchorElement,o=Element,i=e.addEventListener=function addEventListener(t,e){t==="click"&&!(this instanceof l)&&e&&this instanceof o&&VimiumInjector&&VimiumInjector.clickable&&VimiumInjector.clickable.add(this);let i=arguments,c=i.length;return c===2?n.call(this,t,e):c===3?n.call(this,t,e,i[2]):n.apply(this,i)},c=Function.prototype,u=c.toString,r=c.toString=function toString(){return u.apply(this===i?n:this===r?u:this,arguments)};i.vimiumHooked=!0,t.vimiumRemoveHooks=()=>{delete t.vimiumRemoveHooks,e.addEventListener===i&&(e.addEventListener=n),c.toString===r&&(c.toString=u)},i.prototype=r.prototype=void 0})();

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,87 @@
{
"action": {
"default_icon": {
"19": "icons/enabled_19.png",
"38": "icons/enabled_38.png"
},
"default_popup": "pages/action.html",
"default_title": "__MSG_name__\n\n__MSG_noActiveState__"
},
"author": "gdh1995@qq.com",
"background": {
"service_worker": "background/worker.js",
"type": "module"
},
"commands": {
"createTab": {
"description": "__MSG_createTab_s__"
},
"goBack": {
"description": "__MSG_goBack_s__"
},
"goForward": {
"description": "__MSG_goForward_s__"
},
"previousTab": {
"description": "__MSG_previousTab_s__"
},
"quickNext": {
"description": "__MSG_quickNext_s__"
},
"reloadTab": {
"description": "__MSG_reloadTab_s__"
},
"userCustomized1": {
"description": "__MSG_userCustomized__ 1"
},
"userCustomized2": {
"description": "__MSG_userCustomized__ 2"
}
},
"content_scripts": [ {
"all_frames": true,
"js": [ "content/vimium-c.js" ],
"match_about_blank": true,
"match_origin_as_fallback": true,
"matches": [ "\u003Call_urls>" ],
"run_at": "document_start"
} ],
"content_security_policy": {
"extension_pages": "script-src 'self'; style-src 'self' 'unsafe-inline'; object-src 'none'"
},
"default_locale": "en",
"description": "__MSG_description__",
"homepage_url": "https://github.com/gdh1995/vimium-c",
"host_permissions": [ "\u003Call_urls>" ],
"icons": {
"128": "icons/icon128.png",
"16": "icons/icon16.png",
"32": "icons/icon32.png",
"48": "icons/icon48.png"
},
"incognito": "spanning",
"key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnaZQnkvrHvNlwXPnSfavEya+9sPtVgBR2hWLsNvwdv6+zHRGr/qhqEbtof1v7gDXzpC5+Dr4kOay6aflw5CaFzA1zyVJySAjpb0RkVh774kp9msRpjyb39obSIWAIB76PTwawEAE+K1f26jXDbTC2gEBe4OWk5KW9u9+KoTmeKLHo73ScR1jFcFaOTbrhwHtIDqj00vpIfrSAofpLIq1gP//Og+FoOT4dF107fwlVfDJuu171svuT68wmcKStl6OANxcnXCXE6OWbeZcjMehcQH41wzTtDugmt0o8w+hJ2WVugwWWmGmE8qSiwo9QYZTJW+5EvMcmNZWUmPbTLGkGQIDAQAB",
"manifest_version": 3,
"minimum_chrome_version": "102",
"name": "__MSG_name__",
"offline_enabled": true,
"omnibox": {
"keyword": "v"
},
"optional_host_permissions": [ "chrome://*/*", "chrome://new-tab-page/*" ],
"optional_permissions": [ "bookmarks", "downloads", "downloads.shelf", "contentSettings" ],
"options_ui": {
"open_in_tab": true,
"page": "pages/options.html"
},
"permissions": [ "clipboardRead", "clipboardWrite", "favicon", "history", "notifications", "offscreen", "scripting", "search", "sessions", "storage", "tabGroups", "tabs", "webNavigation" ],
"short_name": "Vimium C",
"update_url": "https://clients2.google.com/service/update2/crx",
"version": "2.12.2",
"version_name": "2.12.2",
"web_accessible_resources": [ {
"matches": [ "\u003Call_urls>", "chrome-extension://*/*" ],
"resources": [ "content/*", "front/vomnibar*", "lib/*" ],
"use_dynamic_url": false
} ]
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
let e=1;export const OnChrome=!0;export const OnFirefox=!1;export const OnEdge=!1;export const OnSafari=!1;let t,o,n=navigator.userAgentData,r=n.brands;export const IsEdg_=!!r.find(e=>e.brand.includes("Edge")||e.brand.includes("Microsoft"));export const CurCVer_=(t=r.find(e=>e.brand.includes("Chromium")))&&parseInt(t.version)>82?parseInt(t.version):0|(navigator.userAgent.match(/\bChrom(?:e|ium)\/(\d+)/)||[0,998])[1];export let CurFFVer_=999;export let BrowserName_;export let PageOs_=9;export const setupPageOs_=e=>{PageOs_=e};export const browser_=chrome;export const isVApiReady_=new Promise(e=>{let t;o=new Promise(e=>{t=e}),addEventListener("VimiumC",()=>{h(t),nextTick_(e)},{once:!0,capture:!0})});let l=4,s={},i=new Map,c=null,a=null,p=null,u=Object.create(null),d=1,_=null;export let selfTabId_=-1;let x=e=>{if(_&&(a=0),e===!1)return void alert("Can not send info to the background: not trusted");let t=u[e.i];delete u[e.i];for(let o=e.a,n=0;n<t.length;n++)t[n](o[n]);VApi&&_&&Object.keys(u).length===0&&k()},m=e=>{e=structuredClone(e),x(e)},g=()=>{_=0,console.log("[WARNING] the temp port is disconnected unexpectedly; need to replay messages using VApi"),a&&o.then(()=>{let e=a,t=e?Object.keys(u):[];a=0;for(let o of t){let t=u[o],n=e[o];n&&t&&(c=n,p=t,b(n.length))}})},b=e=>{if(!c)return;let t=VApi,o=c.length;if(o>(e||1))return void h(b.bind(null,o));if(t&&_&&Object.keys(u).length===0&&k(),e===0)return void(c=p=null);let n=d++;u[n]=p,p=null;t?t.r[0](40,{i:n,q:c},x):(_==null&&(_=browser_.runtime.connect({name:"128"}),_.onMessage.addListener(x),_.onDisconnect.addListener(g)),_&&_.postMessage({H:40,i:n,q:c}),a!==0&&((a||(a=Object.create(null)))[n]=c)),c=null};export const post_=(e,t)=>new Promise(o=>{c||f(),c.push({n:e,q:t!==void 0?t:null}),p.push(o)});let f=()=>{c||(c=[],p=[],h(b))};export{f as disconnect_};let k=()=>{let e=_;_=null,e&&(e.onDisconnect.removeListener(g),e.onMessage.removeListener(x),e.disconnect())},h=queueMicrotask;export const $=e=>document.querySelector(e);export const $$=(e,t)=>{let o=(t||document).querySelectorAll(e);return[].slice.call(o)};export const toggleDark_=e=>{let t=document.head.querySelector("meta[name=color-scheme]"),o=e===2?"light dark":e===1?"dark":"light";if(t.content!==o){t.content=o;let n=document.documentElement.classList;n.toggle("no-dark",!e),n.toggle("dark",e===1)}};export const toggleReduceMotion_=e=>{document.documentElement.classList.toggle("less-motion",e)};export let enableNextTick_;let w=null;export const nextTick_=(()=>{let e=()=>{let n=t.length;for(let e=0;e<n;e++)(0,t[e])();t.length>n?(t.splice(0,n),h(e)):(t.length=0,o=0)},t=[],o=0;return enableNextTick_=(t,o)=>{l=(l|t)&~(o||0),l===7&&h(e)},(o,n)=>{if(t.length<=0&&l===7&&h(e),n===9)t.unshift(o);else{let e=n?o.bind(null,n):o;t.push(e)}}})();export const import2_=e=>import(e);export const pageTrans_=(e,t)=>{let o=i.get(e);return t!=null&&o&&(o=o.replace(/\$\d/g,e=>t[+e[1]-1])),o};let y=(e,t)=>e&&e.split(" ").reduce((e,o)=>e||(o.includes("=")?o.startsWith(t)?o.slice(t.length+1):e:o),"");export const bTrans_=browser_.i18n.getMessage;let O=location.pathname.replace("/pages/","").split(".")[0],T=bTrans_("lang1");export const pageLangs_=y(bTrans_("i18n"),O)||T||"en";let V=!0,v=e=>{let t=i;for(let o of e.reverse()){if(!o)continue;let e=V?o.default:JSON.parse(o.slice(14));for(let o in e)t.set(o,e[o])}enableNextTick_(2)};export const onDicts_=V?v:0;export const curPagePath_=V?O:0;if(O!=="options"&&O!=="action"&&onDicts_(await Promise.all(pageLangs_.split(",").map(e=>import(`/i18n/${e}/${O==="show"?"action":O}.js`)))),browser_.storage.local.get("autoDarkMode",e=>{let t=e&&e.autoDarkMode;return(t===!1||t===1||t===0)&&toggleDark_(t?1:0),browser_.runtime.lastError}),T&&O!=="action"){let e=bTrans_("v"+O);e&&(document.title="Vimium C "+e)}O==="options"&&isVApiReady_.then(()=>{VApi.r[0](40,{i:1,q:[{n:26,q:null}]},e=>{e!==!1&&(selfTabId_=e.a[0])})});export const simulateClick_=(e,t)=>{let o;return t=t||{ctrlKey:!1,altKey:!1,shiftKey:!1,metaKey:!1},o=new MouseEvent("click",{bubbles:!0,cancelable:!0,composed:!0,view:window,detail:1,screenX:0,screenY:0,clientX:0,clientY:0,ctrlKey:t.ctrlKey,altKey:t.altKey,shiftKey:t.shiftKey,metaKey:t.metaKey,button:0,buttons:1,relatedTarget:null}),e.dispatchEvent(o)};export const hasShift_=e=>e.shiftKey;export const isRepeated_=e=>e.repeat;export const prevent_=e=>{e.preventDefault();let t=e.type==="keydown"?e.keyCode:0;!t||!PageOs_&&e.metaKey||VApi&&(VApi.a()[t]=1)};export const escapeAllForRe_=e=>e.replace(/[$()*+.?\[\\\]\^{|}]/g,"\\$&");typeof VApi=="undefined"&&(globalThis.VApi=void 0);

View File

@@ -0,0 +1 @@
<!DOCTYPE html><head><meta charset="utf-8"><title>Blank Page</title><meta name="color-scheme" content="light dark"><script src="loader.js"></script></head>

View File

View File

@@ -0,0 +1 @@
"use strict";var VApi,VimiumInjector=null;(()=>{let e,t=chrome,o=document.currentScript.parentElement,n=[],l=t.runtime.getURL(""),m=location.pathname.replace("/pages/","").split(".")[0],i=t.runtime.getManifest().content_scripts[0].js;for(let e of i){let t=document.createElement("script");t.async=!1,t.src=e[0]==="/"||e.lastIndexOf(l,0)===0?e:"/"+e,n.push(t)}if(n[n.length-1].onload=()=>{for(let e=n.length;0<=--e;)n[e].remove();VApi&&(VApi.$r=e=>{e===4&&document.dispatchEvent(new CustomEvent("VimiumC"))},VApi.v=function t(o){return e=e||new Promise(e=>{let t=document.createElement("script");t.src="/lib/simple_eval.js",t.onload=()=>{t.remove(),e()},document.head.append(t)}),e.then(()=>VApi.v!==t?(VApi.v=VApi.v.tryEval||VApi.v)(o):void 0)})},setTimeout(()=>{o.append(...n)},m==="options"?32:100),m==="blank"&&(t.storage.local.get("autoDarkMode",e=>{let o=e&&e.autoDarkMode;if(o===!1||o===1){let e=document.head.querySelector("meta[name=color-scheme]");e&&(e.content=o===1?"dark":"light")}return t.runtime.lastError}),t.i18n.getMessage("lang1"))){let e=t.i18n.getMessage("vblank");e&&(document.title=e)}})();

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
body.filled,body.pixel{font-size:0;margin:0}body{min-width:96vw;min-height:96vh}#shownImage{min-width:32px;min-height:32px}#shownImage.svg{min-width:256px;min-height:256px}.filled>img{outline:0}.zoom-in{cursor:zoom-in}.filled.viewer-open .zoom-in{max-width:100%;max-height:100%}body.pixel .viewer-container img{image-rendering:pixelated}#bgLink{position:absolute;z-index:-1}#snapshot-banner{height:32px}.banner-box{background:#ffffe0;border-bottom:1px solid #ebeb00;box-sizing:border-box;font-size:16px;height:32px;left:0;line-height:32px;padding-left:2em;position:fixed;right:0;-webkit-user-select:none;user-select:none}.banner-close{color:#777;fill:#777;font-size:0;height:20px;line-height:0;position:absolute;right:32px;top:6px;width:20px}.btn_svg{stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:2.4}#shownText{display:inline-block;font-size:large}#textBox{display:inline-block;margin:2px 0 0 20px}#textTip::after{color:gray;content:attr(data-text);display:inline-block;font-style:italic;width:55px}.colon::after{color:gray;content:attr(data-colon);font-style:italic}#textBody{display:inline-block;padding-left:4px}#textBody::after{color:transparent;content:"."}.null::after{color:#d3d3d3;content:"(null)"}img.invert{background:#fff;outline:4px solid #a06d0d;-webkit-filter:invert(100%);filter:invert(100%)}img.invert::selection{background:0 0}img.broken{border:1px solid silver;padding:1px 1px 3px 1px}.viewer-title{font-size:16px;height:20px}.viewer-next,.viewer-prev{visibility:hidden}.viewer-player{cursor:default!important}@media (display-mode:fullscreen){.filled .viewer-close:not(:hover),.filled .viewer-footer:not(:hover){opacity:0}}

View File

@@ -0,0 +1 @@
<!DOCTYPE html><html><head><meta charset="utf-8"><title>Vimium C Display</title><meta name="color-scheme" content="light dark"><script defer="defer" src="define.js"></script><script type="module" src="async_bg.js"></script><script type="module" src="show.js"></script><link rel="stylesheet" href="show.css"><script defer="defer" src="loader.js"></script><meta name="referrer" content="never"></head><body><a id="bgLink" aria-hidden="true"></a><template id="bodyTemplate"><div id="snapshot-banner"><div class="banner-box"><span class="banner-body" data-i="s1"></span> <span class="banner-close" role="button" tabindex="0" data-i="Close-t"><svg class="btn_svg" viewBox="0 0 20 20"><path d="M6 6l8 8zM6 14L14 6"></path></svg></span></div></div><img id="shownImage" tabindex="0"><div id="shownText"><div id="textBox"><span id="textTip"></span><span class="colon" data-colon=": "></span><span id="textBody" tabindex="0"></span></div></div></template></body></html>

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More