-
Notifications
You must be signed in to change notification settings - Fork 11
Expand file tree
/
Copy pathextDevTools.html
More file actions
35 lines (33 loc) · 237 KB
/
extDevTools.html
File metadata and controls
35 lines (33 loc) · 237 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<!DOCTYPE HTML>
<meta charset="utf-8"/>
<title>Extensions Developer Tools [0.1.2pre14 - 2024-03-07]</title>
<body>
<a href="custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EExtensions%20Developer%20Tools%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAACOlBMVEX///+Tn54AAAAAAACGk5KDkI+DkI+WoaCDkI9/jY6HkpCJlpWDkI+KlpWMmJeDkI+Gk5KKl5aDkI+QnZyDkI+DkI+FkpGDkI+Hk5KQnZyGk5KGlJJ3hoeSnZ2QnJuHk5OKl5aKl5aRnJx/jYuFkpGFkpGGkpKPnJuXoqGCj4+HlJObp6aeqqmPnJuCj46fqqmEkI+PnJuXo6KIlJSHk5OHk5OvubieqaixubivtreBj46uuLeLl5bAxMe+wsOvubd8iYh+i4p/joyutLV7iId6h4Z9iol1hISrtLSttbR5h4Z5hoV5hYR6hoV4hYSFkpGDkZB6h4Z9iYh+ioq5wcOmsK6ttrSuuLd2goF1goGutrW7wMB4hoR0goG/xcbk5uelrq2nsbCEkpEAAABha2p4hIN4hYRjb2wAAACyvLy/yMe6w8J7iIeos7K2wL+9xsWksK+frKuptLOps7Kfq6ujr67p+viksLCrtrXAyMijsK/BycmlsbCos7OXo6KXoqGyvLq2v76IlJOMmJikr67AyMe/x8aMmZeksbCCj42VoJ+qtrWxv72vube7xcSeq6mMmZihrayirq2hrq2grKyNmZigrKuxu7mEkpDX5eO8xcW2v7+zv77X5OO3wL/Aycecqairt7Wyvbumsa+JlpW+x8ewu7qzvbx+ioqirayJlZSksK6uubmdqqmbqKeuuriWoqGirKu9xcWns7Kuurmvubilsa+ZpaSapqV8jIq8xsXDy8m4wcCqtbWVSIW1AAAAaXRSTlMA+iwg+iID9wIXLf4yxEHc3P0U/AUK9yTu6vT6CzX9+BQ97v70ZtLwFW3zBSr5BxD8+P736/sQEAAA2/j8AAAALf09AFX69V4AAF39+q398szv/WUAAAAAFAkAAAsZAAAAAPZEoPP0pjkqla07AAABCElEQVR4Xh3Ag1YEAQAF0LfItm3btm0bg7Wzbdu23b81pwuGsSb0+kc0oK6FfxZcS11rufxE38DGDgw17uaskaT7WzIcs3ulDcBN51S1T5KqUZIcG/cCw/DxSfA197MlEFyaADA1M9+jKHGQFWuAGhzytEWB/Qyfv+7gCCcWf3vH2QWuBEEcHbsD8Dg7J4gLNL9f39yLvX3g6/fy+vbxCf+AwF/lYXBIaNiUcnojPAKRUdEPzzxel6inl9cXGxePhMQkmUKoEDImZJPJQEpqmnR+YXFpeWVVtJaeAWRmZefk5uUfSOnCouKSUqCsvKKyqpq+vaNrauvqATQ0NnHYLa1t7R2dbA6AP+T9Uy9FYhsYAAAAAElFTkSuQmCC%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20http%3A//infocatcher.ucoz.net/js/cb/extDevTools.js%0A//%20https%3A//forum.mozilla-russia.org/viewtopic.php%3Fid%3D57296%0A//%20https%3A//github.com/Infocatcher/Custom_Buttons/tree/master/Extensions_Developer_Tools%0A%0A//%20Extensions%20Developer%20Tools%20button%20for%20Custom%20Buttons%0A//%20%28code%20for%20%22initialization%22%20section%29%0A%0A//%20%28c%29%20Infocatcher%202011-2024%0A//%20version%200.1.2pre14%20-%202024-03-07%0A%0A//%20Includes%20Attributes%20Inspector%0A//%20%20%20http%3A//infocatcher.ucoz.net/js/cb/attrsInspector.js%0A//%20%20%20https%3A//forum.mozilla-russia.org/viewtopic.php%3Fid%3D56041%0A//%20%20%20https%3A//github.com/Infocatcher/Custom_Buttons/tree/master/Attributes_Inspector%0A%0A//%20Icon%3A%20http%3A//www.iconfinder.com/icondetails/22560/16/gear_preferences_settings_tool_tools_icon%0A%0A//%20Screenshots%3A%0A//%20http%3A//infocatcher.ucoz.net/js/cb/extDevTools-en.png%0A//%20http%3A//infocatcher.ucoz.net/js/cb/extDevTools-ru.png%0A%0Avar%20options%20%3D%20%7B%0A%09locales%3A%20%5B%22ru%22%2C%20%22en-US%22%5D%2C%0A%09forceRestartOnLocaleChange%3A%20false%2C%0A%09updateLocales%3A%20true%2C%0A%09closeOptionsMenu%3A%20false%2C%0A%09restoreErrorConsole%3A%20true%2C%20//%20Restore%20Error%20Console%20and%20Browser%20Console%20%28if%20available%29%0A%09reopenWindowFlushCaches%3A%20true%2C%0A%09shitchLocaleFlushCaches%3A%20true%2C%0A%09changeButtonIcon%3A%20true%2C%0A%09//%20Use%20icon%20of%20default%20menu%20item%20as%20button%20icon%0A%09//%20%28middle-click%20on%20menu%20item%20to%20mark%20it%20as%20default%2C%0A%09//%20middle-click%20on%20button%20to%20execute%20default%20action%29%0A%09showMiddleClickActionTip%3A%20true%2C%20//%20Show%20%22Middle-click%3A%20action%20not%20selected%u2026%22%20in%20tooltip%0A%09prefValues%3A%20%7B%0A%09%09//%20https%3A//developer.mozilla.org/en-US/Add-ons/Installing_extensions%23Disabling_install_locations%0A%09%09%22extensions.autoDisableScopes%22%3A%2014%0A%09%7D%2C%0A%09showDebugPrefs%3A%203%2C%20//%20Sum%20of%20flags%3A%201%20-%20extensions%2C%202%20-%20application%0A%09debugPrefsTypes%3A%20-1%2C%20//%20-1%20to%20show%20all%20or%20sum%20of%20flags%3A%201%20-%20boolean%2C%202%20-%20integer%2C%204%20-%20string%0A%09debugPrefsInclude%3A%20/%5C.%28%3F%3Adebug%7Cdev%28%3F%3Ael%28%3F%3Aopment%29%3F%29%3F_%3FMode%29%28%3F%3A%5B-.%5D%3F%5Cw+%29%3F%24/i%2C%0A%09debugPrefsExclude%3A%20/%5C.debugger/i%2C%0A%09debugPrefsTrimExtPrefix%3A%20true%2C%20//%20Remove%20leading%20%22extensions.%22%20from%20labels%0A%09confirm%3A%20%7B%0A%09%09reopen%3A%20false%2C%0A%09%09reopenAfterLocaleChange%3A%20true%2C%0A%09%09restart%3A%20false%2C%0A%09%09restartAfterLocaleChange%3A%20true%2C%0A%09%09exit%3A%20false%0A%09%7D%2C%0A%09hotkeys%3A%20%7B%0A%09%09cleanAndRestart%3A%20%22control%20alt%20shift%20R%22%2C%0A%09%09attrsInspector%3A%20%22control%20alt%20I%22%2C%0A%09%09openErrorConsole%3A%20%22control%20alt%20J%22%2C%0A%09%09openScratchpad%3A%20%7B%0A%09%09%09key%3A%20%22shift%20VK_F4%22%2C%0A%09%09%09override%3A%20%22key_scratchpad%22%2C%0A%09%09%09has%3A%20%22hasScratchpad%22%0A%09%09%7D%0A%09%7D%0A%7D%3B%0Avar%20images%20%3D%20%7B%0A%09//%20Fugue%20Icons%20by%20Yusuke%20Kamiyamane%2C%20http%3A//www.iconfinder.com/icondetails/25550/16/applications_blue_icon%0A%09reopenWindow%3A%20%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAZtJREFUeNqUk79Lw1AQxy/pxUqFoLZg7SAiFqy6OOlWxFnByUFwcXBT8B8RJ3HRzdHF3f9ApEPRgoMIKo2VUK22fS8v8e6lEQc16cGXHO/H993n8p5RPqlDFIZhrNBnj1SA+HgiHSJnge/rkYA2L85my6NDaCupwBMKBKnt+fBOk68pA+pWCupphG5XFadqLiCdCmCaoKRkj0Kz0bJdxwefTD3PA6WUFueUQI40TDnN29cPzQL2SgccGKASAjheHYGksXzqABt8c1OVpZ0Ll3yCXzfkMiaszwzCQh71oVwV+kol5rYYp9qC+WyGqE1aK7RBP9xwRb0SS0VARJBsgJbVF/f2uUMVCo0pOx3A6MS/uH9GxC1EoHOhDcjN65UXF8ytuHGY1gbddhtQ9gw0b0wwd+Xe/Zzer97oi9eoVZA5JDVGhhfp32BMw/fuWmeba+HFhTeTOUIuESteJ6WSE1tH/A6eSR8mc+ibSOXFKeJOjZUgv3EQYjmVy8rk7mPi38jc/sutzq3xOaCXBBmSzU1Osp+5ufRo4EuAAQB5oyk+Ipyd+wAAAABJRU5ErkJggg%3D%3D%22%2C%0A%09//%20Oxygen%20Icons%2C%20http%3A//www.iconfinder.com/icondetails/9469/16/breakoff_tab_icon%0A%09moveTabsToNewWindow%3A%20%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAe1BMVEUAAAD///8AAADo6OgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD7+/vx8fHv7+/w8PD19fX29vakpKT39/fz8/P09PTy8vKmpqbp6emnp6fT09Po6Oj6+vq5ubmlpaXq6uq4uLj8/PyQkJB+YnRlAAAAEnRSTlNSAD7xCSSLaWBbJ2VrbW5sZFQ8gZOKAAAAhElEQVR4XkXNxxLDMAhF0RdZbulB1SW9/v8XRqCMchYMcxcArZAovfiBqmxSqRJgXWJbsJqDY1eZAziYWRgmYcyerxhjozQwZfdTPg74y4N97C2xAMJxyHc5OAB0NrySMECNZqZiBD+aqJgk+HfhJYR/CBJoKIjDsu9W68121+67/lB/ASRHEVtnjo8SAAAAAElFTkSuQmCC%22%2C%0A%09//%20Fugue%20Icons%20by%20Yusuke%20Kamiyamane%2C%20http%3A//www.iconfinder.com/icondetails/11449/16/135_arrow_circle_double_icon%0A%09restart%3A%20%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAuZJREFUeNqkU0lPU1EUPvcNHaCUWlpsERGooIhxwQPFSNUgKpEYTRQXhpi44g+48W8YFy7cmOgC4hRjDEGjosEQpQRRKQQoFmgZSqGldHrDvZ7XohJWJr7kyx3e/b57vnPOJYwx+J9POHpnJj8RRRAEATietxFCvLh1CtGEKERMIQbxsqeU0jDP81249r67Wdot7BCsFjh2rarMfKS81FxnLRSqcc+aSKp1C6uZlpn55BXK2KCmqu2/CdwfKmNug8C8HcedrspSs9VAiFGRKegQCSnY5zCVn29ynFaR3HnGLeGYj5xqGmDIBgJa3blGl3U9mgGNAzoRjIfmllIR3UKFq9DWULvLE19X4LLXJW3Esygs5wU0RdHHkkqX1RJdSQLlCXnzOTyOoh84QXil4sFAMHs3EFxrvtpWKS0vxMFiNYKazeYF5PzEYi8QDHJWod/nY4uo3k8IjKiplB5dF6L5eketlIhlQDTorhnIvwX0G9C/YjbyEVXVVoNz0YRGtZG8NQ5EUfTqpX7wZMy3PdsomlsL6WRSX9x+/vqHtLPGlKk+JHdj2SB3ESFSq/dAkYil6ns7HvwbAYDUfrFJSmXymS0pNsKzx0M+FP6Idc+RRYOhYXeZ/Ww0QxNUTi8r2Ww4J6BseVnMAKwmGFQ4TND7aEAPbwjJDzW0gg12AfNy0uHZa46CkEyFF2XkbW5PIsR5A9icJhiLKVBzqVVa+TJmi8yGhvFXsniPQ3bW16TDnCngLhLAPzW/qSlqdLsFMFpM8Olej6/yRqc0LzPgpUaP+5jeybCRUVkoRFnAVciBr+flhpJM+7Hlc0TCOQ8C33JreCtvfcRoPOE4XLtf9FTZid1eoAuw6FpAnp7xx/zTY8rCt146+SJAVyZAr45AIxPlsOwfh2x8lPruD3Clh94v/WxrgZKaeuBE/S1sgpr5Cqv+UTbdP8nWZ02450SsITSiPxaEqNtB8P/wgvXWTSHSGAH9JcAAMrRspwHKXNQAAAAASUVORK5CYII%3D%22%2C%0A%09//%20Tango%20icons%2C%20http%3A//www.iconfinder.com/icondetails/15273/16/%0A%09//cleanAndRestart%3A%20%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABqlBMVEX///9Vu1V8SwB4SABHrUd4SAB4SAB7SgB7SgB7SgCKaQB7SgBHrUd7SgB5SQCGUgOEUgGahQBVu1UfhR94SAB7SgCATgG+rjJWlCERdxERdxGHZACciABecBNUWAigjwF+nyOciwCejQGciwCejQC7pSkzmDKciwChJACtQhNkkR2djACcfwDAsC+fjQGciwCllBEzmTPGtjOfjgCgjgGfjgSciwCciwCrmxrWyFagjwWciwCfjgDFtTbFtDKejQCciwCciwCejQDSw0/GtTChkAifjQCciwCciwCdjACejQCejQCciwCI7ogfhR9Vu1VHrUfawgMzmTMRdxHBfRCydgupawrr3ne8eg/NvUH77Yv85Tz75Df23i/u1yPlzRTbwwT974rm1laycgz96l/962Hdz17t2kbn0BjjyxHcxAfk00zczVjYyE/s3GjIbTOrGw3o2mzcxRDcxhXn11vXsWLB0Gdv1G/96VLByjHn2F/fyibl1E7n2W27Sii4OB322GHK1VahiAF7oxTh01vcxhDk0kn76oT97Gv974TF0lmmaQqrbQvi1GcsT/8kAAAATXRSTlMAgNpEgEc77fXaAuNw5W/08s5AQAKV9P7BgECB/vvy0pla9l/r9oEH1/z56l/16Rr3QPuo1PQcQ/b+8T/F+vvmJhPi/fr2qRQf7eyeIXNWOwoAAADfSURBVHhePcyDcsRgAIDBL6Vt27Zt/EhyV9u2bfede5PpdB9g8fMK9sVhqCiA0K/vAG/w0VoLHQL4L7lGA4MSLCHEmbAqISx83BURKYWUUsloICY2zv0Yb9uQaCdhGEByysRYalp6hjJAKcjM2tnd2z851cJ5ITsn9/bu/sHynEJYeUB+QeHb+8en55SyqBigpHRheeX8wn56ef0pAyivmJyanpmdmzcXq6oBqFldW9/YNM2t7do6AOobDg5N8+i4sakZBy2tl1fXN23tHfzp7Op+7unt6+ffwODQ8AgAvxF5NOfaFCP2AAAAAElFTkSuQmCC%22%2C%0A%09cleanAndRestart%3A%20%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3AoDDQYmfaJwkwAAAyxJREFUOMulk21oU2cUx//PTXLTNPFqF61pV1zaElmXbYq3hVYNCrqtVdSNrbKXWsVBM6afFDaYKCgYWAXHpMIUFd+G22jrRBGRKXauo2yNG1XnWBO1Tfpia2PitVmel3sfP9iq69edjwfOD87/dw7wP4tMbSw5PDyDEBICsARAFQA3gF4AnVLK9o6PfYNLj9xrABC6snF2+D+A0MGBMtWhrC0tzn+9pNBVobntZQA0Y1xkk/dzqXhiPMaF1QmgFgCuNr1YqUwO1+y/W6TaZWhlzSyfv9ClqYQ4ObPAmQUHIfkvzcwreatq5lIhRG39siJdCAEAsANA5Vf/qARmxZuVPu3BWA6mAuvvvsxA/3B2FIB7js89Y8HcgvLMA463Qz79YYaCM/YMIBjz+n2aZ2xkHJaNkJ9+G/yLEPLzH58FzwOA+PJGy+2+VPV7y/36vWQGHs0JQekzAKPU80K+XWWUWzcS6SHO2MWb2xdcA4CKnd0NjNLqD1fO1Y10Dg5VASDBngcISrnLaRsVwrzf1z9m9EYWXZvMxmQsJKXEsbaeaKDvlvvl29en9ZS+aojSYPSpxjlbLh0ghOhTlUopo/17l4UB4KwSqB7wFq9vOrnnk+Obdx3tt9RzO+LtbXYA4JTqtauq9GzuSbLe6U6cbu2KEkKuAsAZJVCTKJi9vunI7vDYyAgaW3ZsOFC/iZ5SykeVCQCGckDckOBOJ374tiPKKe0abKk7GYlE5v34+acfbEhcDI8OD0MKgVh3N1bv2hzmkGsIAGjrvusOrq3T3Q4Fd9Mcs9w2jPzeE7cN9NIi1XCca94YoBOhDX59HB6PB5e/aN5PpNk+qRFOTx5+/eb7qL+xXk8wCZteWe4vNtH2/nwYhgEASCaT0D5agbPz3jmaJ83TYevO5ScrMIbOfSeinLELsROtV6yb15PIGtlxISClBGMMsVgMqqpixbsN22zi31Nh686lSQslysKtEdDMn1b0UIdS+EoBypYvhjcQzBepoIcO2dsjjQFFUfBG3arm3KN0F+f8FwApACYBoAFwTNyEbYpJr8vlek1KWcI5h2ma8YnPTAFIA8g9Bl0WdNxWEAyoAAAAAElFTkSuQmCC%22%2C%0A%09//%20Tango%20icons%20http%3A//www.iconfinder.com/icondetails/15273/16/%20+%20Diagona%20Icons%20http%3A//www.iconfinder.com/icondetails/14146/10/arrows_refresh_reload_icon%0A%09flushCaches%3A%20%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAKXSURBVDiNlZJLaJRnFIaf75uZ6EwSm9tIQpNIvNWoFCsmiwrSgotKS3aCl4WL0Y2CIvwLBV0YFwYckFIQhI7GhWBLdaEL6Y0WMS20aTQxijGNmnFGSZPJZcw/80/+//uOK0VjIfisz/twzstRR75gczjEBRGixrL31A35kfdAhzTfr22OrdqworwxpLl6dJva+l4CYHFFVLO0KsLHLbFYSHP29H6lU0nVmUqq2gUFVugcfFJ0fSPU15QRXazqqxrpBY4DSxcUiPCN65mLtwbz7kzJp6mdypWtGzfE400vgLqFBEpEAOjap07EV3L8k7bPVXNLOz2nu73pf8Zy7FSTxsglEc4nHBn/X0EqqXZprb79dHNHtK6ugX+//punVx+y/ux2atdVkR7t9+7f/UOM9b4zRo4lHMnOF+zRmmRTfWs5lyRqJl22dG9lUY0GFYVQNX5Qzr3BX/2B/t8N4v9gDCng5usTUkm1KHKOOxXNtas6Lh8Oaf0cQg1gxsBksUEez7bgzdWQyQzI45EBd2oyW9SvVkk4UvJ301V7sLGkI2VgZyEYAZMF8x9e4RmzuevMjJ0jXo3a1P5VhVZKwm81UsHP2UxaW6tQ/ggiPv6ch1eapViYoVCYRkTQ4UrST3oDlPym38wnHHnmz02PpNN3mXFjTEyMksulmcxlcN0pRIRY9TYKRc3Qg/6SMThvCQACI4f6en8p+qzGdT2KxTzWBuhwDZXxHeTdmNy6eSVvTPBlwpHM6xLfpPuM6ln9UXvb8hWtES//J2WxNejIMh4N9wRDQ33j1vJZwpGHAOF30oAxdAw9+Ot25ZKGDz+oatOjo/f84eGfAmu869ZyIOHIxDufOJ9UUi1Tij6lEOCatZxMOPJ4/txLfgdDCCiEEtoAAAAASUVORK5CYII%3D%22%2C%0A%09//%20Flags%20by%20Mark%20James%0A%09//%20http%3A//www.iconfinder.com/icondetails/4778/16/america_american_flag_united_states_of_america_us_icon%0A%09//%20http%3A//www.iconfinder.com/icondetails/4737/16/ru_russia_icon%0A%09switchLocale%3A%20%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sHDAoNI1aFrw0AAAH0SURBVDjL3ZK/S9VhFMY/7/dejcrJIBKhC2ltjUVLVINZDU0t/VwMXFpcukFQQ7chaGgKiQYLIsegDIQSCReVhiiLDLmgKKm3uqnde7/vOe97Gr5K2D8Q9MCHc3jgOcPhgX8t19M7ZpucGCEq4AEDPA8Kr7DaLyrLXzO3Yz/JyQuEpBl6escsxmCPR9XEvD0aURMRe/haLU0b1j+s5n1qaZpao1G3ev0P5fKyuZ7eMTty9hBP30RChBDBqxEs2xtqvOU6fK8SDx4gXLqIOYdzjoWFFfIgWIRnReP4bcfLotBVyjN0tcbR0lamHNRu3GR8PGFiIofeNVSN1lbo64vkiTkAum85YjS6SnlUyMKk6Nok90/XGKx2IWJ4b4gYhUL2soRY49xhI0TjRbGBCgwVV/gQv/HlygodH/cyWO3Cr4c3UAWIJGAMjDpU4VhpC16NXaUatvaJ7vM5Wn7uzELp5gMiBkTc7OyMtbXtRkSIMWJmyI9V5q/1U58qE0WIXoiiRK8EEaIGtu9p5/m7J+TbB+7hTpwhGRrBFhexSoWmuTk663VMBPM+mxu7CmjAhU52JA43Pf3eCoV9rDY10VKegTt3YWkREwERTDULq2aEAOtUpj/j5i+fsmDglqpsG54EL1kh/0LzOTRxRCCsl1ab8/wH+g3SxWVrARSXnQAAAABJRU5ErkJggg%3D%3D%22%2C%0A%09//%20http%3A//www.iconfinder.com/icondetails/29415/16/exit_system_xfce_icon%0A%09saveSessionAndExit%3A%20%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH1goUDSQ2q/JqlwAAAlZJREFUOMulkz9PU2EUxn/vvbe3rf2DpVyQ2MZYtKKRhNEPgH9CgokLAT8ADsYQHcQPwOCgMW4kDjIpCQtKXJRRBBaDkUGCbQcFsSmkFNpLafseBwgKNTj4Jmd5z5PfOU9yHiUi/M+zDn8opcxoNHo5mUzGRATDMFBKobVGa02tphGB1dUfm8vL398gInXV29v/rFoVyeU2ZG2tIOvrBcnl8pLN5mVlJSeFwo4MDz+cBYJ/20B1d19nZuYjIyNP8Pv9WNaubGzsJSLCxMQ7XHenClh1ABGRrp4btZoIbW0J+vr78Nk+AEZHn6PUvg4A4zDAVMqTyOWilVIJfzCIE20i6uxWPB7HcZyjAQInBzJLV9WLURDB8HjYG0ok0khjY/RowCnweR0n0L5TpCuVolLTVLTmw/R75uZmCQSOHdAbAK+93sl0PD7/LRabH4/FXgVMU/l8fuKZDMXHj9BKUdjaYuDWwL4FrfXvO/A0NFyK9PQ0VbTmnGFQ3diglkrhsW2CU1PUDJNrQ/dJpzJYpnXAggVgFIvl6vQ02nUpuy6qXMasVGB7G7taZTlynDjQfr6dUnGzHlB2XdlaWEBrjQ2E9xo28Lmjg+ztO7ipr7Q4DpFIZM/CH4CbIg9MkQRQboATn2AwAMZiZyeZoSHakmextebMhYuk02kAwuGQB9BKRFBKmYAJEIQrBcuafCuyc6+1dcZobl4Keb21UCisbNvezufzXqWM09nsz+XFxS9P63LgVSpxNxwebzXNQSB6uA8ooAVoBfzqcJyVUjYQAkoi4v4rzr8AOtoq54WTN98AAAAASUVORK5CYII%3D%22%2C%0A%09//%20https%3A//addons.mozilla.org/firefox/addon/console%25C2%25B2/%0A%09errorConsole%3A%20%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAz1JREFUeNpMU11oVEcYPTP33uy9m5sN5gdLtYkvgjQgaEKVPBgoxR9okCoV7Yu1T30vFEqlFYUgYi1U+lRqiZZKIxFjobUtJoYm0RcRi1KtQRKzu7nJ7ia7m937s/fOTL+7WyUD8zDDnHO+75z5mFIK61d8ruRXWhUUB1j9jjEGKQQ0ziu1hBG2pVKv3uvrwaHn4t7Zc4dEduG8aScTxAb1P0HkVpF/Mvv45/TiRx//9GN6YNeuBvnLCkQY4s7nJ4805dLf9/Vus/WgQpcCiOJdAzcM5Moefrv2x4Ph3Oqhz26Oze0bGGgQhJ6HyS9PHU0sL/zQ+1aPyZbTkKSoogiu69V5LBXB7OhEVTfxy8jv94czy4dPT9yeZwRm00NDB9ncsyt9u3ts5DJ1MJPkRdUD238E2mubEVy+iJZSHlrnRlSaLNwavf1gxI8Oc7/qpkT6xTd9O7fazFmArFLpUkL5PqpGEvaevTDf6EawViEvNARODpbr4uB7b+9oK5dPcikVt5qThrFWgCgXqd+IdghVC4BmGyyRwNLYCMzCIiSZLCtVuE+fo8kPoCetFKWgKKJIyoDMDGsA16DCiMhK4O2bEORzCG6Noq1SRkh3IqREPIGovTUOXTayjpOIVclMuVKAzDkQTpYUbJTu3kGzMx+7DUnFSTJUyFi28Uf0OERFYLm6ArnkNPjIwBigiEhmXsCmN5GsW1NPREhW14z/h67oFJaKCd5CPVPfisd/S8HnBtzZJ7Cob6YlCMga6oIq4QRMaLFIEzd07hed/MOCbkNv7wAjklqRzHz/BLaM3UXUtRVh1afeY38VIsXQ2tMNxw9R8WuPdE/j7rXF5ePFbObGu/v6epMigj/vwZuZxvN//oUxOwulmQhDBRIncBcKzMCViYeXfi2uXmDkP8anpjA0OLjleOeG6wfe2bnDdDJYezaHKBDQLRsCHJJxpN7sJrCOyxN/f/ets/gpOtqLr2ZhfGYGZ/bu7/7w9Y7RwT3bey1qRZCZikqOzdNNHUteDcN/Pbr0VTb7SWhZpanJScXWj/P49DQuHPuga6PnfaF03vJylBtTB+o5ePpnufy1tXnT6sjVq+jv78d/AgwAz5rMGbA9L4wAAAAASUVORK5CYII%3D%22%2C%0A%09//%20chrome%3A//global/skin/icons/warning-16.png%0A%09browserConsole%3A%20%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAq5JREFUeNqMk19IU1Ecx3/37t5uXmRuKyndalMpFcl0NHFE0UMOVGIP0hqh5FPTiVRKTCeIPQh7EHwIcWSLkBFBPQYFUY+9SS4RQdLNP0Q6y+sftqn33tPv3FBIV3TYh/Pbub/f93zPj3MYQghkGwzDmHEqR3aRGcxLZsvjRkdHjyz6/f4iu91+c2hoqEWSpFRHR0cUBSPd3d2pIwImkymbcPnIyIhPPL5anKfXQ39//4/29vYJnuc/HU5kDy94vd7Kzs7ORqv1dPHmah+k10Pgcrnqq6urr4ZCIcsRB/F44uBPb29PDt29q6vrdmL+GVReYCCzvQKzyx9gcHCwuaGhYcJoNC7/y0FFJBJp4bktQ17ua2j0COC9K8Ax+QmUlFgrPB6PKxAIlGUVwN3zzWazs6mp6Xp8LgRnLTxkMgBb2wDnbTJ8W3wF6KyFOozH47APi5aAQj+MjT1tln5OCrbCL0BkBtLptAZR98DIvgBBkE+hA3c4HL70h4O2Nl9RXV3dNYfDXjM/EwS9yIGSzhwIZNaTcFKQYPXrY2htbfUWFBQ4UUTUBBRF1XYfGHh0ZynxFsqsEuxIK7CzsY7WNzXIHmgU8h9hLTktBIPBeqypEkURGAwqfb42X0/gvj/x+QaUntnEJaL9FhZ1mk1LvgJ4ClDxTs4mrWBzRgEb2huLxaJU4NbkZCy8thQ1lOrH8Q4TvMYAG1sqeB/magJvhlOaANnDvqQIfDf2wfaubdrtdj9gHY4al14vGHI2xkHJEFCx8wqi7tD3wGrQmBZTER5NK3PDUHXxQgX24gqHb4lRsQ2W2pfAsizodBQdiBi/f4eFNAHPo2LSbwick3EmWu909AiXa2ud90ymEwae54DjKDptpoK0SFEUjf1YlmVYwDE1NfWc+dtz/t/xS4ABAFPwJo86gIiiAAAAAElFTkSuQmCC%22%2C%0A%09//%20nuove%20by%20Alexander%20Moore%2C%20http%3A//www.iconsearch.ru/detailed/278/1/%0A%09attrsInspector%3A%20%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACW0lEQVQ4jW2TQUsbQRiG3/l2ui4hPaSbCBZPsR6kMXrwYP9AK+JJKOJZKPgD1KMXf0ELPffsoRDpxUv2aLUHKamHikJxi1gQktXNzrqbna+HJJPE9oNhGJh55n3f+UYwM7a2tuzNzc13RETMTADAzOjN/bVGr7Isw+rq6vuzszMtAWB8fDxXKBQ+EBHSNIXWGpZlGYgQAkIIEBGEENBaw3XdjwASCQCO41Cr1YLv+8jlchBCIAxDFItFlEolc5CZDaxarUoDsG3nme//xuLiK3NDlmmcn/9EEAQoFAp4XBMTExIACAB8/2ppbm4OzAytu1YtizA19QI3Nzf/HBZCoFgsSgCQXdrz6bSjIZIEJGhkY5p2Rtb9yufztlHQaDR81hpRO0a7raDUA1T8gLCtcHd3Z3wPB+o4DhnA/X3wpV73kKYdPCQJokihHUb40WjAdV0T4jDEtu2BhbW1tbhUKuHgoIby1DSeSImLi3Ocnn7DwsICZmcrBtCHSCkHCpgZlUoF6+tv8TRvQ4gUKytL2N7eRr1eR61WGwH0eoKMAgDUk4X5+Xkws2mi3d1d7O3twXEcLC8v97pTQAgxUNAHDHskIhARJicnsbOzA8/z4HketGZkWpvnpu6bW3I4qMejXC5jY2MDx8fHODr6CtYZkiQZAIiIhrz9FzIz8xKv3yzh6uoXpLRwcnISoh/g4eFhNY5jVkqxUoqjKBoZYdjmZjPgZrPFSim+vLz87rquw8zdEJVSrevr60+9L6uZWQshNDNrZuhMs+50Eu2MjSVBEPzZ39//fHt7GwPAX9zKMQVPs/QoAAAAAElFTkSuQmCC%22%2C%0A%09get%20browserToolbox%28%29%20%7B%0A%09%09return%20cmds.platformVersion%20%3C%2097%0A%09%09%09%3F%20%22chrome%3A//devtools/skin/images/command-pick.svg%22%0A%09%09%09//%20https%3A//bugzilla.mozilla.org/show_bug.cgi%3Fid%3D1531311%0A%09%09%09%3A%20%22chrome%3A//devtools/content/shared/images/command-pick.svg%22%3B%0A%09%7D%2C%0A%09//%20FatCow%20icons%2C%20http%3A//www.iconfinder.com/icondetails/36398/16/code_script_icon%0A%09scratchpad%3A%20%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAArBJREFUeNqMU11IFFEU/vbO7Iyuums/GvmXhISBiOWWGFgGiyaC0UMkWRT11FNPQbEl9iNb0mtgUEQW+xjUQ5RrlClZ5IbaQ0bpw+paSGLGbrs7O3emc2d/kKjowBnm3HvnO9/5vju2Tb4ARJiUOjcQ1fhizUZnkVORsBzXMT7/HZLNZp0RT8ZssEuUjEGVWZWMdJimibhuXO4/UFvUWVeKf0Xg0yJcOXa03359i2UWDQKIackTmY91qkXyVWmmz/qezyBBbCvX5TXLGfpUo7mquETUEY1bgKtD0JeIvsMu4cXsNxz2R6DIDHJGAOqQX6CmyjjnEN/bfqPuYJIFrPLY5Ly346RYyzLQE/Hq7SUu66CWNFJd0+KZaTYFioxgeAV2mKH1vYPBfFVCWgOa0eB76stcpHwSmmFAQMiktkjxLpJUR2glBtlIzArsn9QoxYAaGJxXr8lVECHruGHSrEDxhccWfLinLcXozEM4cmTkJmITWVuzNkpKQ32pC1GuW1039DzB6OlWSCQaSUoacTCJYfiUB2ZRxR3RRAzGLAeIQmFeTrkAUumCVF4ZxMCR3bg0HLaU13UDMaJr0GjnhkLoP9gIjXNT1CxJUHT7zKhuFO68MYKqa8/g62jEgw/LePP5I3ZVroV/cgGin9m3HyPT0/BPLcHbskOMasoJQl+52Ja1ip19hIWoBofKLG2ut29Fp/8duraVIvwjBiGe2AtHEpYIjGnRt30vZxCizTnKJRLs7qsp5NOdONRQi703x9Dt2QInWbj56hC6GutQoNpxb+w9vpzf57Y5Pcc9SlNngEaxRJFpZoVEFN4fbarDwMhkyiXaFYofo7X7oxP42t3mrvAFgsIJlbLmTz9NWe/TcRvxnPO2uEVd3js4LrSY97a66S8O4j+iPp1/q/FLgAEAGto2bg8Nx1UAAAAASUVORK5CYII%3D%22%2C%0A%09//%20Fugue%20Icons%20by%20Yusuke%20Kamiyamane%2C%20https%3A//www.iconfinder.com/icons/84569/eyedropper_icon%0A%09eyedropper%3A%20%22data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAeRJREFUeNpi/P//PwMlgIWRkRHOsQKyi4C0JZKCv1AMAkCr7H4yMBR/ZWBg/czA0PP7//99LLg0ogOYZtX+fr9PT58yHOnu5v7NwLCPZQ1QsyUBZyJrfrp/P8MfdnaGDwwMbH9AXsCj2QaI84Ga9wI1eyJrPrpq1YlvDAwN/0AG3MIRiEDRCY4rVhjfjYxkwaF5JzgQn7i6gjUwMTExIAfov3//JuyIiChwnTw54OmePVg1gw145uICYbCwMDAzM8M0q3z48IHrR1zP+m8xegz6ISHG+1atOg2Mjc3/kTSDLUZ3OlSzU25xVaGhgoDFySWX1h9fs+ZsaFiYKdDmoP8Q78ExCy7Ney6/uiPEw/Zye2f06xcCAhO+r1pVAFRSg6z+NrIBf/78Uf706ZNjQVktXHNRtPNJoNj+v3//3gHatgRZ4zYgvgUy4Pz582D/s7Oz23b0TS2Cac4Ktj7y9evXw8DAvYtNIwwwCwsLM3z58kWJk19Um0XaWAikOd7D4ABQ7AjQVfeALmA4/+0bwxag4hNA/BY90Dg5ORmkpaVjX3/8cd3S3jWXh4cnloODQxHkKmIAKOLlgM43B+ZKPqBf7wLxO1CQoOHfaPQfWD4DGcAPxFxQw0Ax8w8P/ovEBqsFCDAAxpr/WSMLDJQAAAAASUVORK5CYII%3D%22%0A%7D%3B%0A%0Afunction%20_localize%28s%2C%20key%29%20%7B%0A%09var%20strings%20%3D%20%7B%0A%09%09%22Reopen%20window%22%3A%20%7B%0A%09%09%09ru%3A%20%22%u041F%u0435%u0440%u0435%u043E%u0442%u043A%u0440%u044B%u0442%u044C%20%u043E%u043A%u043D%u043E%22%0A%09%09%7D%2C%0A%09%09reopenWindowKey%3A%20%7B%0A%09%09%09ru%3A%20%22%u043E%22%0A%09%09%7D%2C%0A%09%09%22Move%20tabs%20to%20new%20window%22%3A%20%7B%0A%09%09%09ru%3A%20%22%u041F%u0435%u0440%u0435%u043D%u0435%u0441%u0442%u0438%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%20%u0432%20%u043D%u043E%u0432%u043E%u0435%20%u043E%u043A%u043D%u043E%22%0A%09%09%7D%2C%0A%09%09moveTabsToNewWindowKey%3A%20%7B%0A%09%09%09ru%3A%20%22%u0432%22%0A%09%09%7D%2C%0A%09%09%22Restart%22%3A%20%7B%0A%09%09%09ru%3A%20%22%u041F%u0435%u0440%u0435%u0437%u0430%u043F%u0443%u0441%u0442%u0438%u0442%u044C%22%0A%09%09%7D%2C%0A%09%09restartKey%3A%20%7B%0A%09%09%09ru%3A%20%22%u041F%22%0A%09%09%7D%2C%0A%09%09%22Clean%20and%20restart%22%3A%20%7B%0A%09%09%09ru%3A%20%22%u0421%u0431%u0440%u043E%u0441%u0438%u0442%u044C%20%u043A%u044D%u0448%20%u0438%20%u043F%u0435%u0440%u0435%u0437%u0430%u043F%u0443%u0441%u0442%u0438%u0442%u044C%22%0A%09%09%7D%2C%0A%09%09cleanAndRestartKey%3A%20%7B%0A%09%09%09ru%3A%20%22%u0421%22%0A%09%09%7D%2C%0A%09%09%22Flush%20caches%22%3A%20%7B%0A%09%09%09ru%3A%20%22%u0421%u0431%u0440%u043E%u0441%u0438%u0442%u044C%20%u043A%u044D%u0448%22%0A%09%09%7D%2C%0A%09%09flushCachesKey%3A%20%7B%0A%09%09%09ru%3A%20%22%u0431%22%0A%09%09%7D%2C%0A%09%09%22Switch%20locale%20to%20%u201C%25S%u201D%22%3A%20%7B%0A%09%09%09ru%3A%20%22%u041F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u043B%u043E%u043A%u0430%u043B%u044C%20%u043D%u0430%20%AB%25S%BB%22%0A%09%09%7D%2C%0A%09%09switchLocaleKey%3A%20%7B%0A%09%09%09ru%3A%20%22%u043B%22%0A%09%09%7D%2C%0A%09%09%22Current%20locale%3A%20%25S%22%3A%20%7B%0A%09%09%09ru%3A%20%22%u0422%u0435%u043A%u0443%u0449%u0430%u044F%20%u043B%u043E%u043A%u0430%u043B%u044C%3A%20%25S%22%0A%09%09%7D%2C%0A%09%09%22Switch%20locale%20to%3A%22%3A%20%7B%0A%09%09%09ru%3A%20%22%u041F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u043B%u043E%u043A%u0430%u043B%u044C%20%u043D%u0430%3A%22%0A%09%09%7D%2C%0A%09%09%22Install%20%25S%20locale%3F%22%3A%20%7B%0A%09%09%09ru%3A%20%22%u0423%u0441%u0442%u0430%u043D%u043E%u0432%u0438%u0442%u044C%20%u043B%u043E%u043A%u0430%u043B%u044C%20%25S%3F%22%0A%09%09%7D%2C%0A%09%09%22Update%20%25S%20locale%3F%22%3A%20%7B%0A%09%09%09ru%3A%20%22%u041E%u0431%u043D%u043E%u0432%u0438%u0442%u044C%20%u043B%u043E%u043A%u0430%u043B%u044C%20%25S%3F%22%0A%09%09%7D%2C%0A%09%09%22Can%27t%20install%20%25L%20locale%3A%20%25R%21%5CnURL%3A%20%25U%22%3A%20%7B%0A%09%09%09ru%3A%20%22%u041D%u0435%20%u0443%u0434%u0430%u043B%u043E%u0441%u044C%20%u0443%u0441%u0442%u0430%u043D%u043E%u0432%u0438%u0442%u044C%20%u043B%u043E%u043A%u0430%u043B%u044C%20%25L%3A%20%25R%21%5Cn%u0421%u0441%u044B%u043B%u043A%u0430%3A%20%25U%22%0A%09%09%7D%2C%0A%09%09%22download%20failed%22%3A%20%7B%0A%09%09%09ru%3A%20%22%u043E%u0448%u0438%u0431%u043A%u0430%20%u0437%u0430%u0433%u0440%u0443%u0437%u043A%u0438%22%0A%09%09%7D%2C%0A%09%09%22install%20failed%22%3A%20%7B%0A%09%09%09ru%3A%20%22%u043E%u0448%u0438%u0431%u043A%u0430%20%u0443%u0441%u0442%u0430%u043D%u043E%u0432%u043A%u0438%22%0A%09%09%7D%2C%0A%09%09%22Download%20language%20pack%u2026%22%3A%20%7B%0A%09%09%09ru%3A%20%22%u0417%u0430%u0433%u0440%u0443%u0437%u043A%u0430%20%u044F%u0437%u044B%u043A%u043E%u0432%u043E%u0433%u043E%20%u043F%u0430%u043A%u0435%u0442%u0430%u2026%22%0A%09%09%7D%2C%0A%09%09%22Download%20language%20pack%3A%20%25S%25%22%3A%20%7B%0A%09%09%09ru%3A%20%22%u0417%u0430%u0433%u0440%u0443%u0437%u043A%u0430%20%u044F%u0437%u044B%u043A%u043E%u0432%u043E%u0433%u043E%20%u043F%u0430%u043A%u0435%u0442%u0430%3A%20%25S%25%22%0A%09%09%7D%2C%0A%09%09%22Download%20language%20pack%3A%20done%21%22%3A%20%7B%0A%09%09%09ru%3A%20%22%u0417%u0430%u0433%u0440%u0443%u0437%u043A%u0430%20%u044F%u0437%u044B%u043A%u043E%u0432%u043E%u0433%u043E%20%u043F%u0430%u043A%u0435%u0442%u0430%3A%20%u0433%u043E%u0442%u043E%u0432%u043E%21%22%0A%09%09%7D%2C%0A%09%09%22Save%20session%20and%20exit%22%3A%20%7B%0A%09%09%09ru%3A%20%22%u0421%u043E%u0445%u0440%u0430%u043D%u0438%u0442%u044C%20%u0441%u0435%u0441%u0441%u0438%u044E%20%u0438%20%u0432%u044B%u0439%u0442%u0438%22%0A%09%09%7D%2C%0A%09%09saveSessionAndExitKey%3A%20%7B%0A%09%09%09ru%3A%20%22%u044B%22%0A%09%09%7D%2C%0A%09%09%22Error%20console%22%3A%20%7B%0A%09%09%09ru%3A%20%22%u041A%u043E%u043D%u0441%u043E%u043B%u044C%20%u043E%u0448%u0438%u0431%u043E%u043A%22%0A%09%09%7D%2C%0A%09%09errorConsoleKey%3A%20%7B%0A%09%09%09ru%3A%20%22%u041A%22%0A%09%09%7D%2C%0A%09%09%22Error%20Console%20not%20found%21%22%20%3A%20%7B%0A%09%09%09ru%3A%20%22%u041A%u043E%u043D%u0441%u043E%u043B%u044C%20%u043E%u0448%u0438%u0431%u043E%u043A%20%u043D%u0435%20%u043E%u0431%u043D%u0430%u0440%u0443%u0436%u0435%u043D%u0430%21%22%0A%09%09%7D%2C%0A%09%09%22Browser%20console%22%3A%20%7B%0A%09%09%09ru%3A%20%22%u041A%u043E%u043D%u0441%u043E%u043B%u044C%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%22%0A%09%09%7D%2C%0A%09%09browserConsoleKey%3A%20%7B%0A%09%09%09ru%3A%20%22%u0443%22%0A%09%09%7D%2C%0A%09%09%22Attributes%20Inspector%22%3A%20%7B%0A%09%09%09ru%3A%20%22%u0418%u043D%u0441%u043F%u0435%u043A%u0442%u043E%u0440%20%u0430%u0442%u0440%u0438%u0431%u0443%u0442%u043E%u0432%22%0A%09%09%7D%2C%0A%09%09attrsInspectorKey%3A%20%7B%0A%09%09%09ru%3A%20%22%u0418%22%0A%09%09%7D%2C%0A%09%09%22Browser%20Toolbox%22%3A%20%7B%0A%09%09%09ru%3A%20%22%u0418%u043D%u0441%u0442%u0440%u0443%u043C%u0435%u043D%u0442%u044B%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%22%0A%09%09%7D%2C%0A%09%09browserToolboxKey%3A%20%7B%0A%09%09%09ru%3A%20%22%u0437%22%0A%09%09%7D%2C%0A%09%09%22Scratchpad%22%3A%20%7B%0A%09%09%09ru%3A%20%22%u041F%u0440%u043E%u0441%u0442%u043E%u0439%20%u0440%u0435%u0434%u0430%u043A%u0442%u043E%u0440%20JavaScript%22%0A%09%09%7D%2C%0A%09%09scratchpadKey%3A%20%7B%0A%09%09%09ru%3A%20%22%u0440%22%0A%09%09%7D%2C%0A%09%09%22Grab%20a%20color%20from%20the%20page%22%3A%20%7B%0A%09%09%09ru%3A%20%22%u0417%u0430%u0445%u0432%u0430%u0442%u0438%u0442%u044C%20%u0446%u0432%u0435%u0442%20%u0441%u043E%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%22%0A%09%09%7D%2C%0A%09%09eyedropperKey%3A%20%7B%0A%09%09%09ru%3A%20%22%u0446%22%0A%09%09%7D%2C%0A%0A%09%09%22Reopen%20window%3F%22%3A%20%7B%0A%09%09%09ru%3A%20%22%u041F%u0435%u0440%u0435%u043E%u0442%u043A%u0440%u044B%u0442%u044C%20%u043E%u043A%u043D%u043E%3F%22%0A%09%09%7D%2C%0A%09%09%22Restart%20application%3F%22%3A%20%7B%0A%09%09%09ru%3A%20%22%u041F%u0435%u0440%u0435%u0437%u0430%u043F%u0443%u0441%u0442%u0438%u0442%u044C%20%u043F%u0440%u0438%u043B%u043E%u0436%u0435%u043D%u0438%u0435%3F%22%0A%09%09%7D%2C%0A%09%09%22Are%20you%20sure%20you%20want%20to%20exit%3F%22%3A%20%7B%0A%09%09%09ru%3A%20%22%u0412%u044B%20%u0443%u0432%u0435%u0440%u0435%u043D%u044B%2C%20%u0447%u0442%u043E%20%u0432%u044B%20%u0445%u043E%u0442%u0438%u0442%u0435%20%u0432%u044B%u0439%u0442%u0438%3F%22%0A%09%09%7D%2C%0A%0A%09%09%22Options%22%3A%20%7B%0A%09%09%09ru%3A%20%22%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%22%0A%09%09%7D%2C%0A%09%09optionsKey%3A%20%7B%0A%09%09%09ru%3A%20%22%u041D%22%0A%09%09%7D%2C%0A%09%09%22Show%20errors%20in%20chrome%20files%22%3A%20%7B%0A%09%09%09ru%3A%20%22%u041F%u043E%u043A%u0430%u0437%u044B%u0432%u0430%u0442%u044C%20%u043E%u0448%u0438%u0431%u043A%u0438%20%u0432%20chrome-%u0444%u0430%u0439%u043B%u0430%u0445%22%0A%09%09%7D%2C%0A%09%09%22Show%20strict%20warnings%22%3A%20%7B%0A%09%09%09ru%3A%20%22%u041F%u043E%u043A%u0430%u0437%u044B%u0432%u0430%u0442%u044C%20%u0441%u0442%u0440%u043E%u0433%u0438%u0435%20%u043F%u0440%u0435%u0434%u0443%u043F%u0440%u0435%u0436%u0434%u0435%u043D%u0438%u044F%22%0A%09%09%7D%2C%0A%09%09%22Show%20strict%20warnings%20in%20debug%20builds%22%3A%20%7B%0A%09%09%09ru%3A%20%22%u041F%u043E%u043A%u0430%u0437%u044B%u0432%u0430%u0442%u044C%20%u0441%u0442%u0440%u043E%u0433%u0438%u0435%20%u043F%u0440%u0435%u0434%u0443%u043F%u0440%u0435%u0436%u0434%u0435%u043D%u0438%u044F%20%u0432%20%u0442%u0435%u0441%u0442%u043E%u0432%u044B%u0445%20%u0441%u0431%u043E%u0440%u043A%u0430%u0445%22%0A%09%09%7D%2C%0A%09%09%22Show%20stack%20for%20async%20calls%22%3A%20%7B%0A%09%09%09ru%3A%20%22%u041F%u043E%u043A%u0430%u0437%u044B%u0432%u0430%u0442%u044C%20%u0441%u0442%u0435%u043A%20%u0430%u0441%u0438%u043D%u0445%u0440%u043E%u043D%u043D%u044B%u0445%20%u0432%u044B%u0437%u043E%u0432%u043E%u0432%22%0A%09%09%7D%2C%0A%09%09%22Show%20all%20exceptions%22%3A%20%7B%0A%09%09%09ru%3A%20%22%u041F%u043E%u043A%u0430%u0437%u044B%u0432%u0430%u0442%u044C%20%u0432%u0441%u0435%20%u0438%u0441%u043A%u043B%u044E%u0447%u0435%u043D%u0438%u044F%22%0A%09%09%7D%2C%0A%09%09%22Show%20information%20about%20extensions%20update%22%3A%20%7B%0A%09%09%09ru%3A%20%22%u041F%u043E%u043A%u0430%u0437%u044B%u0432%u0430%u0442%u044C%20%u0438%u043D%u0444%u043E%u0440%u043C%u0430%u0446%u0438%u044E%20%u043E%u0431%20%u043E%u0431%u043D%u043E%u0432%u043B%u0435%u043D%u0438%u0438%20%u0440%u0430%u0441%u0448%u0438%u0440%u0435%u043D%u0438%u0439%22%0A%09%09%7D%2C%0A%09%09%22Enable%20window.dump%28%29%22%3A%20%7B%0A%09%09%09ru%3A%20%22%u0412%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20window.dump%28%29%22%0A%09%09%7D%2C%0A%09%09%22Disable%20XUL%20cache%22%3A%20%7B%0A%09%09%09ru%3A%20%22%u041E%u0442%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u043A%u044D%u0448%20XUL%22%0A%09%09%7D%2C%0A%09%09%22Allow%20XUL%20and%20XBL%20for%20file%3A//%22%3A%20%7B%0A%09%09%09ru%3A%20%22%u0420%u0430%u0437%u0440%u0435%u0448%u0438%u0442%u044C%20XUL%20%u0438%20XBL%20%u0434%u043B%u044F%20file%3A//%22%0A%09%09%7D%2C%0A%09%09%22Don%27t%20inherit%20privileged%20context%20for%20data%3A%22%3A%20%7B%0A%09%09%09ru%3A%20%22%u041D%u0435%20%u043D%u0430%u0441%u043B%u0435%u0434%u043E%u0432%u0430%u0442%u044C%20%u043F%u0440%u0438%u0432%u0438%u043B%u0435%u0433%u0438%u0440%u043E%u0432%u0430%u043D%u043D%u044B%u0439%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%20%u0434%u043B%u044F%20data%3A%22%0A%09%09%7D%2C%0A%09%09%22Block%20top%20level%20data%3A%20URI%20navigations%22%3A%20%7B%0A%09%09%09ru%3A%20%22%u0411%u043B%u043E%u043A%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u043F%u0435%u0440%u0435%u0445%u043E%u0434%u044B%20%u0432%u0435%u0440%u0445%u043D%u0435%u0433%u043E%20%u0443%u0440%u043E%u0432%u043D%u044F%20%u043D%u0430%20data%3A%20URI%22%0A%09%09%7D%2C%0A%09%09%22Enable%20developer%20tools%20for%20chrome%22%3A%20%7B%0A%09%09%09ru%3A%20%22%u0412%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u0438%u043D%u0441%u0442%u0440%u0443%u043C%u0435%u043D%u0442%u044B%20%u0440%u0430%u0437%u0440%u0430%u0431%u043E%u0442%u0447%u0438%u043A%u0430%20%u0434%u043B%u044F%20chrome%22%0A%09%09%7D%2C%0A%09%09%22Enable%20remove%20debugger%20%28and%20Browser%20Toolbox%29%22%3A%20%7B%0A%09%09%09ru%3A%20%22%u0412%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u0443%u0434%u0430%u043B%u0435%u043D%u043D%u0443%u044E%20%u043E%u0442%u043B%u0430%u0434%u043A%u0443%20%28%u0438%20%u0438%u043D%u0441%u0442%u0440%u0443%u043C%u0435%u043D%u0442%u044B%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%29%22%0A%09%09%7D%2C%0A%09%09%22Silently%20install%20extensions%20from%20browser%20profile%22%3A%20%7B%0A%09%09%09ru%3A%20%22%u041C%u043E%u043B%u0447%u0430%20%u0443%u0441%u0442%u0430%u043D%u0430%u0432%u043B%u0438%u0432%u0430%u0442%u044C%20%u0440%u0430%u0441%u0448%u0438%u0440%u0435%u043D%u0438%u044F%20%u0438%u0437%20%u043F%u0440%u043E%u0444%u0438%u043B%u044F%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%22%0A%09%09%7D%2C%0A%09%09%22Enable%20E4X%20for%20chrome%22%3A%20%7B%0A%09%09%09ru%3A%20%22%u0412%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20E4X%20%u0434%u043B%u044F%20chrome%22%0A%09%09%7D%2C%0A%09%09%22Enable%20E4X%20for%20content%22%3A%20%7B%0A%09%09%09ru%3A%20%22%u0412%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20E4X%20%u0434%u043B%u044F%20content%22%0A%09%09%7D%2C%0A%09%09%22Enable%20multi-process%20mode%22%3A%20%7B%0A%09%09%09ru%3A%20%22%u0412%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u043C%u0443%u043B%u044C%u0442%u0438%u043F%u0440%u043E%u0446%u0435%u0441%u0441%u043D%u044B%u0439%20%u0440%u0435%u0436%u0438%u043C%22%0A%09%09%7D%2C%0A%0A%09%09%22Debug%20extensions%22%3A%20%7B%0A%09%09%09ru%3A%20%22%u041E%u0442%u043B%u0430%u0434%u043A%u0430%20%u0440%u0430%u0441%u0448%u0438%u0440%u0435%u043D%u0438%u0439%22%0A%09%09%7D%2C%0A%09%09debugExtKey%3A%20%7B%0A%09%09%09ru%3A%20%22%u0440%22%0A%09%09%7D%2C%0A%09%09%22Debug%20application%22%3A%20%7B%0A%09%09%09ru%3A%20%22%u041E%u0442%u043B%u0430%u0434%u043A%u0430%20%u043F%u0440%u0438%u043B%u043E%u0436%u0435%u043D%u0438%u044F%22%0A%09%09%7D%2C%0A%09%09debugAppKey%3A%20%7B%0A%09%09%09ru%3A%20%22%u043F%22%0A%09%09%7D%2C%0A%09%09%22Change%20%u201C%25S%u201D%20preference%3A%22%3A%20%7B%0A%09%09%09ru%3A%20%22%u0418%u0437%u043C%u0435%u043D%u0438%u0442%u044C%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0443%20%AB%25S%BB%3A%22%0A%09%09%7D%2C%0A%09%09%22Reset%20to%20default%20value%20%28%25S%29%22%3A%20%7B%0A%09%09%09ru%3A%20%22%u0421%u0431%u0440%u043E%u0441%u0438%u0442%u044C%20%u043D%u0430%20%u0437%u043D%u0430%u0447%u0435%u043D%u0438%u0435%20%u043F%u043E%20%u0443%u043C%u043E%u043B%u0447%u0430%u043D%u0438%u044E%20%28%25S%29%22%0A%09%09%7D%2C%0A%0A%09%09%22Middle-click%3A%20action%20not%20selected%2C%20middle-click%20on%20some%20item%20to%20set/unset%22%3A%20%7B%0A%09%09%09ru%3A%20%22%u041A%u043B%u0438%u043A%20%u0441%u0440%u0435%u0434%u043D%u0435%u0439%20%u043A%u043D%u043E%u043F%u043A%u043E%u0439%20%u043C%u044B%u0448%u0438%3A%20%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043D%u0435%20%u0432%u044B%u0431%u0440%u0430%u043D%u043E%2C%20%u043A%u043B%u0438%u043A%u043D%u0438%u0442%u0435%20%u0441%u0440%u0435%u0434%u043D%u0435%u0439%20%u043A%u043D%u043E%u043F%u043A%u043E%u0439%20%u043F%u043E%20%u043A%u0430%u043A%u043E%u043C%u0443-%u043D%u0438%u0431%u0443%u0434%u044C%20%u043F%u0443%u043D%u043A%u0442%u0443%20%u0434%u043B%u044F%20%u0443%u0441%u0442%u0430%u043D%u043E%u0432%u043A%u0438/%u0441%u043D%u044F%u0442%u0438%u044F%22%0A%09%09%7D%2C%0A%09%09%22Middle-click%3A%20%25S%22%3A%20%7B%0A%09%09%09ru%3A%20%22%u041A%u043B%u0438%u043A%20%u0441%u0440%u0435%u0434%u043D%u0435%u0439%20%u043A%u043D%u043E%u043F%u043A%u043E%u0439%20%u043C%u044B%u0448%u0438%3A%20%25S%22%0A%09%09%7D%0A%09%7D%3B%0A%09var%20locale%20%3D%20%28function%28%29%20%7B%0A%09%09if%28%22Services%22%20in%20window%20%26%26%20%22locale%22%20in%20Services%29%20%7B%0A%09%09%09var%20locales%20%3D%20Services.locale.requestedLocales%20//%20Firefox%2064+%0A%09%09%09%09%7C%7C%20Services.locale.getRequestedLocales%20%26%26%20Services.locale.getRequestedLocales%28%29%3B%0A%09%09%09if%28locales%29%0A%09%09%09%09return%20locales%5B0%5D%3B%0A%09%09%7D%0A%09%09var%20prefs%20%3D%20Services.prefs%3B%0A%09%09function%20pref%28name%2C%20type%29%20%7B%0A%09%09%09return%20prefs.getPrefType%28name%29%20%21%3D%20prefs.PREF_INVALID%20%3F%20prefs%5B%22get%22%20+%20type%20+%20%22Pref%22%5D%28name%29%20%3A%20undefined%3B%0A%09%09%7D%0A%09%09if%28%21pref%28%22intl.locale.matchOS%22%2C%20%22Bool%22%29%29%20%7B%20//%20Also%20see%20https%3A//bugzilla.mozilla.org/show_bug.cgi%3Fid%3D1414390%0A%09%09%09var%20locale%20%3D%20pref%28%22general.useragent.locale%22%2C%20%22Char%22%29%3B%0A%09%09%09if%28locale%20%26%26%20locale.substr%280%2C%209%29%20%21%3D%20%22chrome%3A//%22%29%0A%09%09%09%09return%20locale%3B%0A%09%09%7D%0A%09%09return%20Components.classes%5B%[email protected]/chrome/chrome-registry%3B1%22%5D%0A%09%09%09.getService%28Components.interfaces.nsIXULChromeRegistry%29%0A%09%09%09.getSelectedLocale%28%22global%22%29%3B%0A%09%7D%29%28%29.match%28/%5E%5Ba-z%5D*/%29%5B0%5D%3B%0A%09_localize%20%3D%20%21locale%20%7C%7C%20locale%20%3D%3D%20%22en%22%0A%09%09%3F%20function%28s%29%20%7B%0A%09%09%09return%20s%3B%0A%09%09%7D%0A%09%09%3A%20function%28s%2C%20key%29%20%7B%0A%09%09%09if%28%21key%29%0A%09%09%09%09key%20%3D%20s%3B%0A%09%09%09return%20strings%5Bkey%5D%20%26%26%20strings%5Bkey%5D%5Blocale%5D%20%7C%7C%20s%3B%0A%09%09%7D%3B%0A%09return%20_localize.apply%28this%2C%20arguments%29%3B%0A%7D%0A%0Avar%20XULNS%20%3D%20%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%3B%0A%0Athis.onmouseover%20%3D%20function%28e%29%20%7B%0A%09if%28e.target%20%21%3D%20this%29%0A%09%09return%3B%0A%09Array.prototype.some.call%28%0A%09%09this.parentNode.getElementsByTagName%28%22*%22%29%2C%0A%09%09function%28node%29%20%7B%0A%09%09%09if%28%0A%09%09%09%09node%20%21%3D%20this%0A%09%09%09%09%26%26%20node.namespaceURI%20%3D%3D%20XULNS%0A%09%09%09%09//%20See%20https%3A//github.com/Infocatcher/Custom_Buttons/issues/28%0A%09%09%09%09//%26%26%20node.boxObject%0A%09%09%09%09//%26%26%20node.boxObject%20instanceof%20Components.interfaces.nsIMenuBoxObject%0A%09%09%09%09%26%26%20%22open%22%20in%20node%0A%09%09%09%09%26%26%20node.open%0A%09%09%09%09%26%26%20node.getElementsByTagName%28%22menupopup%22%29.length%0A%09%09%09%29%20%7B%0A%09%09%09%09node.open%20%3D%20false%3B%0A%09%09%09%09this.open%20%3D%20true%3B%0A%09%09%09%09return%20true%3B%0A%09%09%09%7D%0A%09%09%09return%20false%3B%0A%09%09%7D%2C%0A%09%09this%0A%09%29%3B%0A%09if%28this.commands.updateTipOnMouseover%29%0A%09%09this.commands.setDefaultActionTip%28%29%3B%0A%7D%3B%0Athis.onclick%20%3D%20function%28e%29%20%7B%0A%09if%28e.target%20%21%3D%20this%20%7C%7C%20this.disabled%29%0A%09%09return%3B%0A%09if%28e.button%20%3D%3D%201%20%7C%7C%20e.button%20%3D%3D%200%20%26%26%20this.commands.hasModifier%28e%29%29%20%7B%0A%09%09var%20mi%20%3D%20this.commands.defaultActionItem%3B%0A%09%09mi%20%26%26%20mi.doCommand%28%29%3B%0A%09%7D%0A%7D%3B%0Athis.onmousedown%20%3D%20function%28e%29%20%7B%0A%09if%28e.target%20%3D%3D%20this%20%26%26%20e.button%20%3D%3D%200%20%26%26%20this.commands.hasModifier%28e%29%29%0A%09%09e.preventDefault%28%29%3B%0A%7D%3B%0A%0Afunction%20middleClickFixer%28e%29%20%7B%0A%09if%28e.button%20%3D%3D%201%29%20%7B%20//%20Also%20for%20%22command%22%20event%20in%20Firefox%2089+%0A%09%09e.preventDefault%28%29%3B%0A%09%09e.stopPropagation%28%29%3B%0A%09%7D%0A%7D%0Athis.addEventListener%28%22command%22%2C%20middleClickFixer%2C%20true%29%3B%20//%20Prevent%20middle-click%20commands%20in%20Firefox%2089+%0Athis.addEventListener%28%22mouseup%22%2C%20middleClickFixer%2C%20true%29%3B%20//%20Prevent%20menu%20closing%20in%20Firefox%2089+%0A%0Avar%20Services%20%3D%20window.Services%20%7C%7C%20%7B%0A%09get%20prefs%28%29%20%7B%0A%09%09delete%20this.prefs%3B%0A%09%09return%20this.prefs%20%3D%20Components.classes%5B%[email protected]/preferences-service%3B1%22%5D%0A%09%09%09.getService%28Components.interfaces.nsIPrefService%29%0A%09%09%09.QueryInterface%28Components.interfaces.nsIPrefBranch2%20%7C%7C%20Components.interfaces.nsIPrefBranch%29%3B%0A%09%7D%2C%0A%09get%20appinfo%28%29%20%7B%0A%09%09delete%20this.appinfo%3B%0A%09%09return%20this.appinfo%20%3D%20Components.classes%5B%[email protected]/xre/app-info%3B1%22%5D%0A%09%09%09.getService%28Components.interfaces.nsIXULAppInfo%29%3B%0A%09%7D%2C%0A%09get%20prompt%28%29%20%7B%0A%09%09var%20ps%20%3D%20Components.classes%5B%[email protected]/prompter%3B1%22%5D%0A%09%09%09%7C%7C%20Components.classes%5B%[email protected]/embedcomp/prompt-service%3B1%22%5D%3B%0A%09%09delete%20this.prompt%3B%0A%09%09return%20this.prompt%20%3D%20ps.getService%28Components.interfaces.nsIPromptService%29%3B%0A%09%7D%2C%0A%09get%20wm%28%29%20%7B%0A%09%09delete%20this.wm%3B%0A%09%09return%20this.wm%20%3D%20Components.classes%5B%[email protected]/appshell/window-mediator%3B1%22%5D%0A%09%09%09.getService%28Components.interfaces.nsIWindowMediator%29%3B%0A%09%7D%2C%0A%09get%20obs%28%29%20%7B%0A%09%09delete%20this.obs%3B%0A%09%09return%20this.obs%20%3D%20Components.classes%5B%[email protected]/observer-service%3B1%22%5D%0A%09%09%09.getService%28Components.interfaces.nsIObserverService%29%3B%0A%09%7D%0A%7D%3B%0A%0Aconst%20btnNum%20%3D%20this.id.match%28/%5Cd*%24/%29%5B0%5D%3B%0Aconst%20prefNS%20%3D%20%22extensions.custombuttons.button%22%20+%20btnNum%20+%20%22.%22%3B%0A%0Avar%20cmds%20%3D%20this.commands%20%3D%20%7B%0A%09prefs%3A%20%7B%0A%09%09defaultAction%3A%20prefNS%20+%20%22defaultAction%22%2C%0A%09%09restoreErrorConsole%3A%20prefNS%20+%20%22restoreErrorConsole%22%2C%0A%09%09restoreBrowserConsole%3A%20prefNS%20+%20%22restoreBrowserConsole%22%0A%09%7D%2C%0A%09options%3A%20options%2C%0A%09button%3A%20this%2C%0A%09onlyPopup%3A%20this.localName%20%3D%3D%20%22popupset%22%2C%0A%09popup%3A%20null%2C%0A%0A%09get%20ss%28%29%20%7B%0A%09%09delete%20this.ss%3B%0A%09%09if%28%21%28%22nsISessionStore%22%20in%20Components.interfaces%29%29%20//%20Thunderbird%0A%09%09%09return%20this.ss%20%3D%20window.SessionStore%20%7C%7C%20null%3B%20//%20Firefox%2061+%20https%3A//bugzilla.mozilla.org/show_bug.cgi%3Fid%3D1450559%0A%09%09return%20this.ss%20%3D%20%28%0A%09%09%09Components.classes%5B%[email protected]/browser/sessionstore%3B1%22%5D%0A%09%09%09%7C%7C%20Components.classes%5B%[email protected]/suite/sessionstore%3B1%22%5D%0A%09%09%29.getService%28Components.interfaces.nsISessionStore%29%3B%0A%09%7D%2C%0A%09get%20app%28%29%20%7B%0A%09%09delete%20this.app%3B%0A%09%09return%20this.app%20%3D%20Services.appinfo.name%3B%0A%09%7D%2C%0A%09get%20platformVersion%28%29%20%7B%0A%09%09delete%20this.platformVersion%3B%0A%09%09return%20this.platformVersion%20%3D%20parseFloat%28Services.appinfo.platformVersion%29%3B%0A%09%7D%2C%0A%0A%09get%20defaultAction%28%29%20%7B%0A%09%09return%20this.getPref%28this.prefs.defaultAction%29%3B%0A%09%7D%2C%0A%09set%20defaultAction%28val%29%20%7B%0A%09%09if%28%21val%29%0A%09%09%09this.resetPref%28this.prefs.defaultAction%29%3B%0A%09%09else%0A%09%09%09this.setPref%28this.prefs.defaultAction%2C%20val%29%3B%0A%09%7D%2C%0A%09get%20defaultActionItem%28%29%20%7B%0A%09%09var%20da%20%3D%20this.defaultAction%3B%0A%09%09return%20da%20%26%26%20%28%0A%09%09%09this.%24%28da%29%0A%09%09%09%7C%7C%20this.%24%28this.cmdToId%28da%29%29%20//%20Legacy%20prefs%3F%0A%09%09%29%3B%0A%09%7D%2C%0A%09cmdToId%3A%20function%28cmd%29%20%7B%0A%09%09return%20cmd.replace%28/%5Eopen%28%5BA-Z%5D%29/%2C%20function%28s%2C%20c%29%20%7B%0A%09%09%09return%20c.toLowerCase%28%29%3B%0A%09%09%7D%29%3B%0A%09%7D%2C%0A%09initMenu%3A%20function%28menu%29%20%7B%0A%09%09if%28%21menu%29%0A%09%09%09menu%20%3D%20this.popup%3B%0A%09%09var%20defaultAction%20%3D%20this.defaultAction%3B%0A%09%09Array.prototype.forEach.call%28%0A%09%09%09menu.getElementsByAttribute%28%22cb_show%22%2C%20%22*%22%29%2C%0A%09%09%09function%28mi%29%20%7B%0A%09%09%09%09mi.setAttribute%28%22hidden%22%2C%20%21this%5Bmi.getAttribute%28%22cb_show%22%29%5D%29%3B%0A%09%09%09%7D%2C%0A%09%09%09this%0A%09%09%29%3B%0A%09%09Array.prototype.forEach.call%28%0A%09%09%09menu.getElementsByAttribute%28%22cb_id%22%2C%20%22*%22%29%2C%0A%09%09%09function%28mi%29%20%7B%0A%09%09%09%09var%20cbId%20%3D%20mi.getAttribute%28%22cb_id%22%29%3B%0A%09%09%09%09mi.setAttribute%28%22default%22%2C%20cbId%20%3D%3D%20defaultAction%29%3B%0A%09%09%09%09if%28cbId%20%3D%3D%20%22switchLocale%22%29%0A%09%09%09%09%09this.initSwitchLocaleItem%28mi%29%3B%0A%09%09%09%09else%20if%28cbId%20%3D%3D%20%22scratchpad%22%29%0A%09%09%09%09%09this.setPartiallyAvailable%28mi%2C%20%21this.getPref%28%22devtools.chrome.enabled%22%29%29%3B%0A%09%09%09%09else%20if%28cbId%20%3D%3D%20%22browserToolbox%22%29%0A%09%09%09%09%09this.setPartiallyAvailable%28mi%2C%20%21this.getPref%28%22devtools.debugger.remote-enabled%22%29%29%3B%0A%09%09%09%09else%20if%28cbId%20%3D%3D%20%22attrsInspector%22%29%20%7B%0A%09%09%09%09%09var%20hasDOMi%20%3D%20%[email protected]/commandlinehandler/general-startup%3B1%3Ftype%3Dinspector%22%20in%20Components.classes%3B%0A%09%09%09%09%09this.setPartiallyAvailable%28mi%2C%20%21hasDOMi%29%3B%0A%09%09%09%09%09this.setAttrsInspectorActive%28mi%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%2C%0A%09%09%09this%0A%09%09%29%3B%0A%09%7D%2C%0A%09initSwitchLocaleItem%3A%20function%28mi%29%20%7B%0A%09%09mi.setAttribute%28%0A%09%09%09%22label%22%2C%0A%09%09%09_localize%28%22Switch%20locale%20to%20%u201C%25S%u201D%22%29%0A%09%09%09%09.replace%28%22%25S%22%2C%20this.nextLocale%29%0A%09%09%29%3B%0A%09%09mi.setAttribute%28%0A%09%09%09%22tooltiptext%22%2C%0A%09%09%09_localize%28%22Current%20locale%3A%20%25S%22%29%0A%09%09%09%09.replace%28%22%25S%22%2C%20this.currentLocale%20%7C%7C%20%22%3F%3F%3F%22%29%0A%09%09%29%3B%0A%09%7D%2C%0A%09setPartiallyAvailable%3A%20function%28mi%2C%20partially%29%20%7B%0A%09%09mi.style.color%20%3D%20partially%20%3F%20%22grayText%22%20%3A%20%22%22%3B%0A%09%7D%2C%0A%09setCloseMenu%3A%20function%28e%29%20%7B%0A%09%09var%20mi%20%3D%20e.target%3B%0A%09%09if%28%0A%09%09%09e.button%20%3D%3D%200%0A%09%09%09%26%26%20mi.hasAttribute%28%22cb_id%22%29%0A%09%09%29%0A%09%09%09mi.setAttribute%28%22closemenu%22%2C%20this.hasModifier%28e%29%20%3F%20%22none%22%20%3A%20%22auto%22%29%3B%0A%09%7D%2C%0A%09setDefaultActionIcon%3A%20function%28%29%20%7B%0A%09%09if%28%21this.options.changeButtonIcon%29%0A%09%09%09return%3B%0A%09%09var%20btn%20%3D%20this.button%3B%0A%09%09var%20icon%20%3D%20btn.icon%0A%09%09%09%7C%7C%20btn.ownerDocument.getAnonymousElementByAttribute%28btn%2C%20%22class%22%2C%20%22toolbarbutton-icon%22%29%3B%0A%09%09icon.src%20%3D%20images%5Bthis.defaultAction%5D%20%7C%7C%20btn.image%3B%0A%09%7D%2C%0A%09setDefaultAction%3A%20function%28e%29%20%7B%0A%09%09if%28this.onlyPopup%29%0A%09%09%09return%3B%0A%09%09if%28%21%28e.button%20%3D%3D%201%20%7C%7C%20e.button%20%3D%3D%200%20%26%26%20this.hasModifier%28e%29%29%29%0A%09%09%09return%3B%0A%09%09var%20mi%20%3D%20e.target%3B%0A%09%09var%20action%20%3D%20mi.getAttribute%28%22cb_id%22%29%3B%0A%09%09if%28%21action%20%7C%7C%20mi.localName%20%21%3D%20%22menuitem%22%29%0A%09%09%09return%3B%0A%09%09this.defaultAction%20%3D%20this.defaultAction%20%3D%3D%20action%20%3F%20%22%22%20%3A%20action%3B%0A%09%09this.initMenu%28%29%3B%0A%09%09this.setDefaultActionIcon%28%29%3B%0A%09%09this.setDefaultActionTip%28%29%3B%0A%09%09this.savePrefFile%28true%29%3B%0A%09%7D%2C%0A%09updateTipOnMouseover%3A%20false%2C%0A%09setDefaultActionTip%3A%20function%28delay%29%20%7B%0A%09%09this.delayed%28function%28%29%20%7B%0A%09%09%09var%20mi%20%3D%20this.defaultActionItem%3B%0A%09%09%09var%20upd%20%3D%20this.updateTipOnMouseover%20%3D%20mi%20%26%26%20mi.getAttribute%28%22cb_id%22%29%20%3D%3D%20%22switchLocale%22%3B%0A%09%09%09upd%20%26%26%20this.initSwitchLocaleItem%28mi%29%3B%0A%09%09%09var%20btn%20%3D%20this.button%3B%0A%09%09%09btn.tooltipText%20%3D%20btn.tooltipText.replace%28/%20%5Cn.*%24/%2C%20%22%22%29%20+%20%28%0A%09%09%09%09mi%0A%09%09%09%09%09%3F%20%22%20%5Cn%22%20+%20_localize%28%22Middle-click%3A%20%25S%22%29.replace%28%22%25S%22%2C%20mi.getAttribute%28%22label%22%29%29%0A%09%09%09%09%09%3A%20this.options.showMiddleClickActionTip%0A%09%09%09%09%09%09%3F%20%22%20%5Cn%22%20+%20_localize%28%22Middle-click%3A%20action%20not%20selected%2C%20middle-click%20on%20some%20item%20to%20set/unset%22%29%0A%09%09%09%09%09%09%3A%20%22%22%0A%09%09%09%29%3B%0A%09%09%7D%2C%20this%2C%20delay%20%7C%7C%200%29%3B%0A%09%7D%2C%0A%0A%09get%20canReopenWindow%28%29%20%7B%0A%09%09var%20ss%20%3D%20this.ss%3B%0A%09%09delete%20this.canReopenWindow%3B%0A%09%09return%20this.canReopenWindow%20%3D%20ss%20%26%26%20%22getWindowState%22%20in%20ss%20%26%26%20%22setWindowState%22%20in%20ss%0A%09%09%09%26%26%20%22gBrowser%22%20in%20window%20%26%26%20%22addTab%22%20in%20gBrowser%3B%0A%09%7D%2C%0A%09reopenWindow%3A%20function%28%29%20%7B%0A%09%09return%20this.confirm%28%22reopen%22%2C%20%22_reopenWindow%22%2C%20arguments%29%3B%0A%09%7D%2C%0A%09_reopenWindow%3A%20function%28flushCaches%29%20%7B%0A%09%09var%20ss%20%3D%20this.ss%3B%0A%09%09var%20state%20%3D%20ss.getWindowState%28window%29%3B%0A%0A%09%09this.button.disabled%20%3D%20true%3B%0A%09%09var%20sbId%20%3D%20%22SidebarUI%22%20in%20window%20%26%26%20SidebarUI.isOpen%20%26%26%20SidebarUI.lastOpenedId%3B%0A%0A%09%09function%20restoreSession%28e%29%20%7B%0A%09%09%09window.removeEventListener%28e.type%2C%20restoreSession%2C%20false%29%3B%0A%09%09%09window.focus%28%29%3B%0A%09%09%09var%20tryCount%20%3D%2010%3B%0A%09%09%09%28function%20restore%28%29%20%7B%0A%09%09%09%09try%20%7B%20//%20May%20fail%20in%20SeaMonkey%0A%09%09%09%09%09ss.setWindowState%28window%2C%20state%2C%20true%29%3B%0A%09%09%09%09%09if%28sbId%20%26%26%20%21window.SidebarUI.isOpen%29%0A%09%09%09%09%09%09window.SidebarUI.show%28sbId%29%3B%0A%09%09%09%09%7D%0A%09%09%09%09catch%28e%29%20%7B%0A%09%09%09%09%09Components.utils.reportError%28e%29%3B%0A%09%09%09%09%09if%28%21--tryCount%29%0A%09%09%09%09%09%09return%3B%0A%09%09%09%09%09LOG%28%22nsISessionStore.setWindowState%28%29%20failed%2C%20will%20try%20again%u2026%22%29%3B%0A%09%09%09%09%09window.setTimeout%28restore%2C%2050%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%29%28%29%3B%0A%09%09%09if%28%21oldWindow.closed%29%0A%09%09%09%09oldWindow.close%28%29%3B%0A%09%09%7D%0A%09%09var%20win%20%3D%20this.openBrowserWindow%28%29%3B%0A%09%09var%20winFn%20%3D%20new%20win.Function%28%20//%20Prevent%20forced%20garbage%20collection%20in%20Firefox%2099+%0A%09%09%09%22ss%2C%20sbId%2C%20state%2C%20oldWindow%2C%20LOG%22%20%2C%20%22return%20%22%20+%20restoreSession%0A%09%09%29%28ss%2C%20sbId%2C%20state%2C%20window%2C%20LOG%29%3B%0A%09%09win.addEventListener%28%22load%22%2C%20winFn%2C%20false%29%3B%0A%0A%09%09//%20Try%20remove%20closed%20window%20from%20undo%20history%0A%09%09var%20canForget%20%3D%20%22forgetClosedWindow%22%20in%20ss%3B%0A%09%09var%20forgetFlag%20%3D%20%22_cb_extDevTools_forget%22%3B%0A%09%09canForget%20%26%26%20ss%5B%0A%09%09%09%22setWindowValue%22%20in%20ss%0A%09%09%09%09%3F%20%22setWindowValue%22%0A%09%09%09%09%3A%20%22setCustomWindowValue%22%20//%20Firefox%2064+%0A%09%09%5D%28window%2C%20forgetFlag%2C%20%221%22%29%3B%0A%09%09window.addEventListener%28%22unload%22%2C%20function%20clearUndo%28e%29%20%7B%0A%09%09%09window.removeEventListener%28e.type%2C%20clearUndo%2C%20false%29%3B%0A%0A%09%09%09win.setTimeout%28function%28%29%20%7B%0A%09%09%09%09if%28canForget%29%20%7B%0A%09%09%09%09%09var%20closed%20%3D%20JSON.parse%28ss.getClosedWindowData%28%29%29%3B%0A%09%09%09%09%09for%28var%20i%20%3D%200%2C%20l%20%3D%20closed.length%3B%20i%20%3C%20l%3B%20++i%29%20%7B%0A%09%09%09%09%09%09var%20winData%20%3D%20closed%5Bi%5D%3B%0A%09%09%09%09%09%09delete%20winData._shouldRestore%3B%0A%09%09%09%09%09%09//LOG%28%22%23%22%20+%20i%20+%20%22%5Cn%22%20+%20JSON.stringify%28winData%29%29%3B%0A%09%09%09%09%09%09if%28winData.extData%20%26%26%20forgetFlag%20in%20winData.extData%29%20%7B%0A%09%09%09%09%09%09%09ss.forgetClosedWindow%28i%29%3B%0A%09%09%09%09%09%09%09break%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%09else%20if%28%0A%09%09%09%09%09%22getClosedWindowCount%22%20in%20ss%0A%09%09%09%09%09%09%3F%20ss.getClosedWindowCount%28%29%20%3D%3D%201%0A%09%09%09%09%09%09%3A%20%22getClosedWindowData%22%20in%20ss%20%26%26%20JSON.parse%28ss.getClosedWindowData%28%29%29.length%20%3D%3D%201%0A%09%09%09%09%29%20%7B%0A%09%09%09%09%09ss.setWindowState%28win%2C%20%27%7B%22windows%22%3A%5B%7B%7D%5D%2C%22_closedWindows%22%3A%5B%5D%7D%27%2C%20false%29%3B%0A%09%09%09%09%7D%0A%09%09%09%09else%20%7B%0A%09%09%09%09%09LOG%28%22Can%27t%20remove%20closed%20window%20from%20undo%20history%22%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%2C%200%29%3B%0A%09%09%7D%2C%20false%29%3B%0A%0A%09%09if%28flushCaches%20%3D%3D%3D%20undefined%29%0A%09%09%09flushCaches%20%3D%20this.options.reopenWindowFlushCaches%3B%0A%09%09if%28flushCaches%29%20%7B%0A%09%09%09window.close%28%29%3B%0A%09%09%09this.flushCaches%28%29%3B%0A%09%09%7D%0A%09%7D%2C%0A%09get%20canMoveTabsToNewWindow%28%29%20%7B%0A%09%09delete%20this.canMoveTabsToNewWindow%3B%0A%09%09return%20this.canMoveTabsToNewWindow%20%3D%20%22gBrowser%22%20in%20window%0A%09%09%09%26%26%20%22swapBrowsersAndCloseOther%22%20in%20gBrowser%3B%0A%09%7D%2C%0A%09moveTabsToNewWindow%3A%20function%28%29%20%7B%0A%09%09return%20this.confirm%28%22reopen%22%2C%20%22_moveTabsToNewWindow%22%2C%20arguments%29%3B%0A%09%7D%2C%0A%09_moveTabsToNewWindow%3A%20function%28%29%20%7B%0A%09%09this.button.disabled%20%3D%20true%3B%0A%0A%09%09var%20win%20%3D%20this.openBrowserWindow%28%29%3B%0A%09%09win.addEventListener%28%22load%22%2C%20function%20moveTabs%28%29%20%7B%0A%09%09%09win.removeEventListener%28%22load%22%2C%20moveTabs%2C%20false%29%3B%0A%0A%09%09%09if%28window.windowState%20%3D%3D%20window.STATE_NORMAL%29%0A%09%09%09%09win.moveTo%28window.screenX%2C%20window.screenY%29%3B%0A%09%09%09var%20tabs%20%3D%20Array.prototype.filter.call%28%0A%09%09%09%09gBrowser.tabs%20%7C%7C%20gBrowser.tabContainer.childNodes%2C%0A%09%09%09%09function%28tab%29%20%7B%0A%09%09%09%09%09return%20tab.linkedBrowser%20%26%26%20%21tab.closing%3B%0A%09%09%09%09%7D%0A%09%09%09%29%3B%0A%09%09%09var%20selectedTab%20%3D%20gBrowser.selectedTab%3B%0A%09%09%09var%20gBrowserNew%20%3D%20win.gBrowser%3B%0A%0A%09%09%09var%20hasUnloadedTabs%20%3D%20false%3B%0A%09%09%09tabs.forEach%28function%28tab%29%20%7B%0A%09%09%09%09if%28%21tab.linkedBrowser%29%20//%20What%3F%0A%09%09%09%09%09return%3B%0A%09%09%09%09//%20We%20can%27t%20swap%20unloaded%20tabs%21%20%3A%28%0A%09%09%09%09//%20Error%3A%20NS_ERROR_NOT_IMPLEMENTED%3A%20Component%20returned%20failure%20code%3A%0A%09%09%09%09//%200x80004001%20%28NS_ERROR_NOT_IMPLEMENTED%29%20%5BnsIFrameLoaderOwner.swapFrameLoaders%5D%0A%09%09%09%09//%20%28chrome%3A//global/content/bindings/browser.xml%2C%20%3Cmethod%20name%3D%22swapDocShells%22%3E%29%0A%09%09%09%09if%28%0A%09%09%09%09%09tab.getAttribute%28%22pending%22%29%20%3D%3D%20%22true%22%20//%20Gecko%20%3E%3D%209.0%0A%09%09%09%09%09%7C%7C%20tab.linkedBrowser.contentDocument%0A%09%09%09%09%09%09%26%26%20tab.linkedBrowser.contentDocument.readyState%20%3D%3D%20%22uninitialized%22%0A%09%09%09%09%29%20%7B%0A%09%09%09%09%09hasUnloadedTabs%20%3D%20true%3B%0A%09%09%09%09%09tab.linkedBrowser.reload%28%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%29%3B%0A%09%09%09if%28hasUnloadedTabs%29%20%7B%0A%09%09%09%09setTimeout%28moveTabs%2C%20500%29%3B%0A%09%09%09%09return%3B%0A%09%09%09%7D%0A%09%09%09//%7E%20todo%3A%20add%20support%20for%20tab%20groups%0A%0A%09%09%09if%28%22treeStyleTab%22%20in%20gBrowser%29%20%7B%0A%09%09%09%09var%20selectedTabPos%20%3D%20%22_tPos%22%20in%20selectedTab%20//%7E%20todo%3A%20don%27t%20use%20with%20%22closing%22%20tabs%3F%0A%09%09%09%09%09%3F%20selectedTab._tPos%0A%09%09%09%09%09%3A%20tabs.indexOf%28selectedTab%29%3B%0A%09%09%09%09%28function%20tstMoveTabs%28%29%20%7B%0A%09%09%09%09%09if%28%22treeStyleTab%22%20in%20gBrowserNew%29%20%7B%0A%09%09%09%09%09%09gBrowserNew.treeStyleTab.moveTabs%28tabs%29%3B%0A%0A%09%09%09%09%09%09var%20initialTab%20%3D%20gBrowserNew.selectedTab%3B%0A%09%09%09%09%09%09gBrowserNew.selectedTab%20%3D%20%28gBrowserNew.tabs%20%7C%7C%20gBrowserNew.tabContainer.childNodes%29%5BselectedTabPos%20+%201%5D%3B%0A%09%09%09%09%09%09gBrowserNew.removeTab%28initialTab%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09else%20%7B%0A%09%09%09%09%09%09setTimeout%28tstMoveTabs%2C%2010%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%29%28%29%3B%0A%09%09%09%09return%3B%0A%09%09%09%7D%0A%0A%09%09%09tabs.forEach%28function%28tab%29%20%7B%0A%09%09%09%09setTimeout%28swapTab%2C%200%2C%20tab%29%3B%0A%09%09%09%7D%29%3B%0A%09%09%09function%20swapTab%28tab%29%20%7B%0A%09%09%09%09var%20isRemote%20%3D%20tab.linkedBrowser.getAttribute%28%22remote%22%29%20%3D%3D%20%22true%22%3B%0A%09%09%09%09var%20newTab%20%3D%20%22Services%22%20in%20window%20%26%26%20%22cpmm%22%20in%20Services%20//%20May%20be%20remote%3F%0A%09%09%09%09%09%3F%20gBrowserNew.addTab%28isRemote%20%3F%20%22about%3Ablank%22%20%3A%20%22about%3Aabout%22%2C%20%7B%0A%09%09%09%09%09%09triggeringPrincipal%3A%20%22Services%22%20in%20window%20%26%26%20Services.scriptSecurityManager%0A%09%09%09%09%09%09%09%26%26%20Services.scriptSecurityManager.getSystemPrincipal%28%29%20//%20Firefox%2064+%0A%09%09%09%09%09%7D%29%0A%09%09%09%09%09%3A%20gBrowserNew.addTab%28%29%3B%0A%09%09%09%09gBrowserNew.swapBrowsersAndCloseOther%28newTab%2C%20tab%29%3B%0A%09%09%09%09if%28tab%20%3D%3D%20selectedTab%29%20%7B%0A%09%09%09%09%09var%20initialTab%20%3D%20gBrowserNew.selectedTab%3B%0A%09%09%09%09%09gBrowserNew.selectedTab%20%3D%20newTab%3B%0A%09%09%09%09%09gBrowserNew.removeTab%28initialTab%29%3B%0A%09%09%09%09%7D%0A%09%09%09%09tab.getAttribute%28%22pinned%22%29%20%3D%3D%20%22true%22%20%26%26%20gBrowserNew.pinTab%20%26%26%20gBrowserNew.pinTab%28newTab%29%3B%0A%09%09%09%7D%0A%09%09%7D%2C%20false%29%3B%0A%09%7D%2C%0A%09openBrowserWindow%3A%20function%28%29%20%7B%0A%09%09//%20In%20SeaMonkey%20OpenBrowserWindow%28%29%20doesn%27t%20return%20link%20to%20opened%20window%0A%09%09//return%20OpenBrowserWindow%28%29%3B%0A%09%09var%20browserURL%20%3D%20%22getBrowserURL%22%20in%20window%0A%09%09%09%3F%20getBrowserURL%28%29%0A%09%09%09%3A%20window.AppConstants%20%26%26%20AppConstants.BROWSER_CHROME_URL%3B%20//%20Firefox%2063+%0A%09%09return%20window.openDialog%28browserURL%2C%20%22_blank%22%2C%20%22chrome%2Call%2Cdialog%3Dno%22%29%3B%0A%09%7D%2C%0A%09restart%3A%20function%28%29%20%7B%0A%09%09return%20this.confirm%28%22restart%22%2C%20%22_restart%22%2C%20arguments%29%3B%0A%09%7D%2C%0A%09_restart%3A%20function%28%29%20%7B%0A%09%09const%20pId%20%3D%20%22browser.tabs.warnOnClose%22%3B%0A%09%09var%20woc%20%3D%20this.getPref%28pId%29%3B%0A%09%09if%28woc%20%21%3D%20undefined%29%0A%09%09%09this.setPref%28pId%2C%20false%29%3B%0A%09%09this.appRestart%28%29%3B%0A%09%09if%28woc%20%21%3D%20undefined%29%0A%09%09%09this.setPref%28pId%2C%20woc%29%3B%0A%09%7D%2C%0A%09cleanAndRestart%3A%20function%28%29%20%7B%0A%09%09return%20this.confirm%28%22restart%22%2C%20%22_cleanAndRestart%22%2C%20arguments%29%3B%0A%09%7D%2C%0A%09_cleanAndRestart%3A%20function%28%29%20%7B%0A%09%09var%20xr%20%3D%20Components.classes%5B%[email protected]/xre/app-info%3B1%22%5D%0A%09%09%09.getService%28Components.interfaces.nsIXULRuntime%29%3B%0A%09%09if%28%22invalidateCachesOnRestart%22%20in%20xr%29%0A%09%09%09xr.invalidateCachesOnRestart%28%29%3B%0A%09%09else%20%7B%0A%09%09%09var%20profile%20%3D%20Components.classes%5B%[email protected]/file/directory_service%3B1%22%5D%0A%09%09%09%09.getService%28Components.interfaces.nsIProperties%29%0A%09%09%09%09.get%28%22ProfD%22%2C%20Components.interfaces.nsIFile%29%3B%0A%09%09%09var%20eal%20%3D%20Components.classes%5B%[email protected]/uriloader/external-helper-app-service%3B1%22%5D%0A%09%09%09%09.getService%28Components.interfaces.nsPIExternalAppLauncher%29%3B%0A%09%09%09%5B%0A%09%09%09%09%22XUL.mfl%22%2C%0A%09%09%09%09%22XPC.mfl%22%2C%0A%09%09%09%09%22xpti.dat%22%2C%0A%09%09%09%09%22compreg.dat%22%2C%0A%09%09%09%09//%20It%27s%20important%20to%20leave%20extensions.rdf%20-%20it%20stores%20information%20about%20disabled%20extensions%0A%09%09%09%09%22extensions.cache%22%2C%0A%09%09%09%09%22extensions.ini%22%2C%0A%09%09%09%09%22startupCache/startupCache.4.little%22%0A%09%09%09%5D.forEach%28function%28path%29%20%7B%0A%09%09%09%09var%20file%20%3D%20profile.clone%28%29%3B%0A%09%09%09%09path.split%28%22/%22%29.forEach%28function%28name%29%20%7B%0A%09%09%09%09%09file.append%28name%29%3B%0A%09%09%09%09%7D%29%3B%0A%09%09%09%09eal.deleteTemporaryFileOnExit%28file%29%3B%0A%09%09%09%09try%20%7B%0A%09%09%09%09%09file.remove%28true%29%3B%0A%09%09%09%09%7D%0A%09%09%09%09catch%28e%29%20%7B%0A%09%09%09%09%7D%0A%09%09%09%7D%29%3B%0A%09%09%7D%0A%09%09this._restart%28%29%3B%0A%09%7D%2C%0A%0A%09//%20Based%20on%20code%20from%20resource%3A///components/fuelApplication.js%20in%20Firefox%2038%0A%09appQuit%3A%20function%28%29%20%7B%0A%09%09return%20this._quitWithFlags%28Components.interfaces.nsIAppStartup.eAttemptQuit%29%3B%0A%09%7D%2C%0A%09appRestart%3A%20function%28%29%20%7B%0A%09%09return%20this._quitWithFlags%28%0A%09%09%09Components.interfaces.nsIAppStartup.eAttemptQuit%0A%09%09%09%7C%20Components.interfaces.nsIAppStartup.eRestart%0A%09%09%29%3B%0A%09%7D%2C%0A%09_quitWithFlags%3A%20function%28flags%29%20%7B%0A%09%09var%20cancelQuit%20%3D%20Components.classes%5B%[email protected]/supports-PRBool%3B1%22%5D%0A%09%09%09.createInstance%28Components.interfaces.nsISupportsPRBool%29%3B%0A%09%09var%20quitType%20%3D%20flags%20%26%20Components.interfaces.nsIAppStartup.eRestart%20%3F%20%22restart%22%20%3A%20null%3B%0A%09%09Services.obs.notifyObservers%28cancelQuit%2C%20%22quit-application-requested%22%2C%20quitType%29%3B%0A%09%09if%28cancelQuit.data%29%0A%09%09%09return%20false%3B%20//%20somebody%20canceled%20our%20quit%20request%0A%09%09var%20appStartup%20%3D%20Components.classes%5B%[email protected]/toolkit/app-startup%3B1%22%5D%0A%09%09%09.getService%28Components.interfaces.nsIAppStartup%29%3B%0A%09%09appStartup.quit%28flags%29%3B%0A%09%09return%20true%3B%0A%09%7D%2C%0A%0A%09flushCaches%3A%20function%28%29%20%7B%0A%09%09//%20See%20resource%3A//gre/modules/XPIProvider.jsm%0A%09%09//%20resource%3A//gre/modules/addons/XPIProvider.jsm%0A%09%09var%20obs%20%3D%20Services.obs%3B%0A%09%09obs.notifyObservers%28null%2C%20%22startupcache-invalidate%22%2C%20null%29%3B%0A%09%09obs.notifyObservers%28null%2C%20%22chrome-flush-skin-caches%22%2C%20null%29%3B%0A%09%09obs.notifyObservers%28null%2C%20%22chrome-flush-caches%22%2C%20null%29%3B%0A%0A%09%09obs.notifyObservers%28null%2C%20%22message-manager-flush-caches%22%2C%20null%29%3B%0A%09%09if%28%22Services%22%20in%20window%20%26%26%20Services.mm%20%26%26%20Services.mm.broadcastAsyncMessage%29%0A%09%09%09Services.mm.broadcastAsyncMessage%28%22AddonMessageManagerCachesFlush%22%2C%20null%29%3B%0A%09%09if%28%22Services%22%20in%20window%20%26%26%20Services.strings%20%26%26%20Services.strings.flushBundles%29%0A%09%09%09Services.strings.flushBundles%28%29%3B%0A%09%7D%2C%0A%09get%20currentLocale%28%29%20%7B%0A%09%09return%20this.getLocale%28%29%3B%0A%09%7D%2C%0A%09get%20defaultLocale%28%29%20%7B%0A%09%09return%20this.getLocale%28true%29%3B%0A%09%7D%2C%0A%09getLocale%3A%20function%28getDefault%29%20%7B%0A%09%09var%20localePref%20%3D%20%22intl.locale.requested%22%3B%0A%09%09if%28%0A%09%09%09%22Services%22%20in%20window%20%26%26%20%22locale%22%20in%20Services%0A%09%09%09%26%26%20%28%0A%09%09%09%09%22getRequestedLocales%22%20in%20Services.locale%20%26%26%20this.prefHasDefaultValue%28localePref%29%0A%09%09%09%09%7C%7C%20%22requestedLocales%22%20in%20Services.locale%0A%09%09%09%29%0A%09%09%29%20%7B%0A%09%09%09if%28getDefault%20%26%26%20Services.prefs.prefHasUserValue%28localePref%29%29%20%7B%0A%09%09%09%09var%20origLocales%20%3D%20this.getPref%28localePref%29%3B%0A%09%09%09%09this.resetPref%28localePref%29%3B%0A%09%09%09%7D%0A%09%09%09var%20locales%20%3D%20Services.locale.requestedLocales%20%7C%7C%20Services.locale.getRequestedLocales%28%29%3B%0A%09%09%09if%28origLocales%29%0A%09%09%09%09this.setPref%28localePref%2C%20origLocales%29%3B%0A%09%09%09return%20locales%20%26%26%20locales%5B0%5D%3B%0A%09%09%7D%0A%09%09localePref%20%3D%20%22general.useragent.locale%22%3B%0A%09%09var%20prefs%20%3D%20getDefault%20%3F%20this.defaultBranch%20%3A%20Services.prefs%3B%0A%09%09var%20locale%20%3D%20this.getPref%28localePref%2C%20%22%22%2C%20prefs%29%3B%0A%09%09if%28locale%20%26%26%20locale.substr%280%2C%209%29%20%21%3D%20%22chrome%3A//%22%29%0A%09%09%09return%20locale%3B%0A%09%09return%20prefs.getComplexValue%28localePref%2C%20Components.interfaces.nsIPrefLocalizedString%29%3B%0A%09%7D%2C%0A%09switchLocale%3A%20function%28onlyGet%29%20%7B%0A%09%09var%20curLocale%20%3D%20this.currentLocale%3B%0A%09%09var%20locales%20%3D%20this.options.locales%3B%0A%09%09var%20i%20%3D%20locales.indexOf%28curLocale%29%3B%0A%09%09if%28i%20%3D%3D%20-1%20%7C%7C%20++i%20%3E%3D%20locales.length%29%0A%09%09%09i%20%3D%200%3B%0A%09%09var%20locale%20%3D%20locales%5Bi%5D%3B%0A%09%09if%28onlyGet%29%0A%09%09%09return%20locale%3B%0A%09%09return%20this.setLocale%28locale%29%3B%0A%09%7D%2C%0A%09get%20nextLocale%28%29%20%7B%0A%09%09return%20this.switchLocale%28true%29%3B%0A%09%7D%2C%0A%09switchLocaleCustom%3A%20function%28%29%20%7B%0A%09%09this.button.open%20%3D%20false%3B%0A%09%09var%20locale%20%3D%20%7B%20value%3A%20this.nextLocale%20%7D%3B%0A%09%09var%20ok%20%3D%20Services.prompt.prompt%28%0A%09%09%09window%2C%0A%09%09%09_localize%28%22Extensions%20Developer%20Tools%22%29%2C%0A%09%09%09_localize%28%22Current%20locale%3A%20%25S%22%29%0A%09%09%09%09.replace%28%22%25S%22%2C%20this.currentLocale%20%7C%7C%20%22%3F%3F%3F%22%29%0A%09%09%09+%20%22%5Cn%22%20+%20_localize%28%22Switch%20locale%20to%3A%22%29%2C%0A%09%09%09locale%2C%0A%09%09%09null%2C%0A%09%09%09%7B%7D%0A%09%09%29%3B%0A%09%09if%28ok%20%26%26%20locale.value%29%0A%09%09%09this.setLocale%28locale.value%29%3B%0A%09%7D%2C%0A%09setLocale%3A%20function%28locale%29%20%7B%0A%09%09if%28%21this.options.updateLocales%29%20%7B%0A%09%09%09this._setLocale%28locale%29%3B%0A%09%09%09return%3B%0A%09%09%7D%0A%09%09var%20_this%20%3D%20this%3B%0A%09%09var%20mi%20%3D%20this.%24%28%22switchLocale%22%29%3B%0A%09%09mi.setAttribute%28%22disabled%22%2C%20%22true%22%29%3B%0A%09%09this.ensureLocaleAvailable%28locale%2C%20function%28ok%29%20%7B%0A%09%09%09mi.removeAttribute%28%22disabled%22%29%3B%0A%09%09%09_this._setLocale%28locale%29%3B%0A%09%09%7D%29%3B%0A%09%7D%2C%0A%09_setLocale%3A%20function%28locale%29%20%7B%0A%09%09if%28%22Services%22%20in%20window%20%26%26%20%22locale%22%20in%20Services%20%26%26%20%22setRequestedLocales%22%20in%20Services.locale%29%0A%09%09%09Services.locale.setRequestedLocales%28%5Blocale%5D%29%3B%0A%09%09else%20if%28%22Services%22%20in%20window%20%26%26%20%22locale%22%20in%20Services%20%26%26%20%22requestedLocales%22%20in%20Services.locale%29%0A%09%09%09Services.locale.requestedLocales%20%3D%20%5Blocale%5D%3B%0A%09%09else%20%7B%0A%09%09%09this.setPref%28%22intl.locale.matchOS%22%2C%20false%29%3B%0A%09%09%09this.setPref%28%22general.useragent.locale%22%2C%20locale%29%3B%0A%09%09%7D%0A%09%09var%20reopen%20%3D%20%21this.options.forceRestartOnLocaleChange%0A%09%09%09%26%26%20this.canReopenWindow%0A%09%09%09%26%26%20%28%0A%09%09%09%09this.platformVersion%20%3E%3D%2018%0A%09%09%09%09%7C%7C%20this.app%20%3D%3D%20%22Pale%20Moon%22%20%26%26%20this.platformVersion%20%3E%3D%204.1%0A%09%09%09%09%7C%7C%20this.app%20%3D%3D%20%22Basilisk%22%0A%09%09%09%29%3B%0A%09%09if%28%21this.confirm%28reopen%20%3F%20%22reopenAfterLocaleChange%22%20%3A%20%22restartAfterLocaleChange%22%29%29%20%7B%0A%09%09%09if%28this.options.shitchLocaleFlushCaches%29%0A%09%09%09%09this.flushCaches%28%29%3B%0A%09%09%09this.savePrefFile%28true%29%3B%0A%09%09%09return%20false%3B%0A%09%09%7D%0A%09%09if%28reopen%29%20%7B%0A%09%09%09this._reopenWindow%28this.options.shitchLocaleFlushCaches%29%3B%0A%09%09%09this.savePrefFile%28true%29%3B%0A%09%09%7D%0A%09%09else%20%7B%0A%09%09%09if%28this.platformVersion%20%3E%3D%202%29%0A%09%09%09%09this._cleanAndRestart%28%29%3B%0A%09%09%09else%0A%09%09%09%09this._restart%28%29%3B%0A%09%09%7D%0A%09%09return%20locale%3B%0A%09%7D%2C%0A%09get%20alwaysUpdateLocale%28%29%20%7B%0A%09%09var%20isAlpha%20%3D%20/%5E%5Cd+%28%3F%3A%5C.%5Cd+%29*a%5Cd/.test%28Services.appinfo.version%29%3B%0A%09%09delete%20this.alwaysUpdateLocale%3B%0A%09%09return%20this.alwaysUpdateLocale%20%3D%20isAlpha%3B%0A%09%7D%2C%0A%09ensureLocaleAvailable%3A%20function%28locale%2C%20callback%2C%20tryESR%29%20%7B%0A%09%09if%28locale%20%3D%3D%20this.defaultLocale%29%20%7B%0A%09%09%09callback%28true%29%3B%0A%09%09%09return%3B%0A%09%09%7D%0A%09%09if%28%21%28%22AddonManager%22%20in%20window%29%29%20try%20%7B%0A%09%09%09Components.utils%5B%22import%22%5D%28%22resource%3A//gre/modules/AddonManager.jsm%22%29%3B%0A%09%09%7D%0A%09%09catch%28e%29%20%7B%0A%09%09%09callback%28undefined%29%3B%0A%09%09%09return%3B%0A%09%09%7D%0A%09%09var%20id%20%3D%20%22langpack-%22%20+%20locale%20+%20%[email protected]%22%3B%0A%09%09var%20_this%20%3D%20this%3B%0A%09%09function%20getAddonByID%28id%2C%20callback%29%20%7B%0A%09%09%09var%20promise%20%3D%20AddonManager.getAddonByID%28id%2C%20callback%29%3B%0A%09%09%09if%28promise%20%26%26%20typeof%20promise.then%20%3D%3D%20%22function%22%29%20//%20Firefox%2061+%0A%09%09%09%09promise.then%28callback%2C%20Components.utils.reportError%29%3B%0A%09%09%7D%0A%09%09function%20getInstallForURL%28url%2C%20callback%2C%20mimeType%29%20%7B%0A%09%09%09if%28AddonManager.getInstallForURL.length%20%3E%3D%203%29%0A%09%09%09%09AddonManager.getInstallForURL%28url%2C%20callback%2C%20mimeType%29%3B%0A%09%09%09else%20%7B%20//%20Firefox%2061+%0A%09%09%09%09try%20%7B%20//%20getInstallForURL%28aUrl%2C%20aOptions%20%3D%20%7B%7D%29%20in%20Firefox%2099+%0A%09%09%09%09%09AddonManager.getInstallForURL%28url%2C%20%7B%7D%29.then%28callback%2C%20Components.utils.reportError%29%3B%0A%09%09%09%09%7D%0A%09%09%09%09catch%28e%29%20%7B%0A%09%09%09%09%09AddonManager.getInstallForURL%28url%2C%20mimeType%29.then%28callback%2C%20Components.utils.reportError%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%0A%09%09getAddonByID%28id%2C%20function%28addon%29%20%7B%0A%09%09%09if%28addon%20%26%26%20addon.isCompatible%20%26%26%20%21_this.alwaysUpdateLocale%29%20%7B%0A%09%09%09%09callback%28true%29%3B%0A%09%09%09%09return%3B%0A%09%09%09%7D%0A%09%09%09var%20installURL%20%3D%20_this.getInstallURLForLocale%28locale%2C%20tryESR%29%3B%0A%09%09%09if%28%21installURL%29%20%7B%0A%09%09%09%09callback%28false%29%3B%0A%09%09%09%09return%3B%0A%09%09%09%7D%0A%09%09%09LOG%28%22installURL%3A%20%22%20+%20installURL%29%3B%0A%09%09%09if%28%0A%09%09%09%09%21tryESR%0A%09%09%09%09%26%26%20%21Services.prompt.confirm%28%0A%09%09%09%09%09window%2C%0A%09%09%09%09%09_localize%28%22Extensions%20Developer%20Tools%22%29%2C%0A%09%09%09%09%09_localize%28addon%20%3F%20%22Update%20%25S%20locale%3F%22%20%3A%20%22Install%20%25S%20locale%3F%22%29%0A%09%09%09%09%09%09.replace%28%22%25S%22%2C%20locale%29%0A%09%09%09%09%29%0A%09%09%09%29%20%7B%0A%09%09%09%09callback%28false%29%3B%0A%09%09%09%09return%3B%0A%09%09%09%7D%0A%0A%09%09%09var%20btn%20%3D%20_this.button%3B%0A%09%09%09var%20progressIcon%20%3D%20new%20ProgressIcon%28btn%29%3B%0A%09%09%09getInstallForURL%28%0A%09%09%09%09installURL%2C%0A%09%09%09%09function%28install%29%20%7B%0A%09%09%09%09%09LOG%28%22%5BLanguage%20pack%5D%3A%20Call%20install%28%29%22%29%3B%0A%09%09%09%09%09install.addListener%28%7B%0A%09%09%09%09%09%09onInstallEnded%3A%20function%28install%2C%20addon%29%20%7B%0A%09%09%09%09%09%09%09LOG%28%22%5BLanguage%20pack%5D%3A%20Ok%22%29%3B%0A%09%09%09%09%09%09%09this._done%28%29%3B%0A%09%09%09%09%09%09%7D%2C%0A%09%09%09%09%09%09onDownloadFailed%3A%20function%28install%29%20%7B%0A%09%09%09%09%09%09%09LOG%28%22%5BLanguage%20pack%5D%3A%20Download%20failed%22%29%3B%0A%09%09%09%09%09%09%09this._done%28%22download%20failed%22%29%3B%0A%09%09%09%09%09%09%7D%2C%0A%09%09%09%09%09%09onInstallFailed%3A%20function%28install%29%20%7B%0A%09%09%09%09%09%09%09LOG%28%22%5BLanguage%20pack%5D%3A%20Install%20failed%22%29%3B%0A%09%09%09%09%09%09%09this._done%28%22install%20failed%22%29%3B%0A%09%09%09%09%09%09%7D%2C%0A%09%09%09%09%09%09_done%3A%20function%28error%29%20%7B%0A%09%09%09%09%09%09%09progressIcon.restore%28%29%3B%0A%09%09%09%09%09%09%09install.removeListener%28this%29%3B%0A%09%09%09%09%09%09%09this._progress%28%29%3B%0A%09%09%09%09%09%09%09if%28error%29%20%7B%0A%09%09%09%09%09%09%09%09if%28%21tryESR%20%26%26%20_this.getInstallURLForLocale%28locale%2C%20true%29%20%21%3D%20installURL%29%20%7B%0A%09%09%09%09%09%09%09%09%09LOG%28%22%5BLanguage%20pack%5D%3A%20Will%20try%20ESR%20version%22%29%3B%0A%09%09%09%09%09%09%09%09%09_this.ensureLocaleAvailable%28locale%2C%20callback%2C%20true%29%3B%0A%09%09%09%09%09%09%09%09%09return%3B%0A%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%09var%20installURLs%20%3D%20%5BinstallURL%5D%3B%0A%09%09%09%09%09%09%09%09if%28tryESR%29%20%7B%0A%09%09%09%09%09%09%09%09%09var%20installURLNoESR%20%3D%20_this.getInstallURLForLocale%28locale%2C%20false%29%3B%0A%09%09%09%09%09%09%09%09%09if%28installURLNoESR%20%21%3D%20installURL%29%0A%09%09%09%09%09%09%09%09%09%09installURLs.unshift%28installURLNoESR%29%3B%0A%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%09Services.prompt.alert%28%0A%09%09%09%09%09%09%09%09%09window%2C%0A%09%09%09%09%09%09%09%09%09_localize%28%22Extensions%20Developer%20Tools%22%29%2C%0A%09%09%09%09%09%09%09%09%09_localize%28%22Can%27t%20install%20%25L%20locale%3A%20%25R%21%5CnURL%3A%20%25U%22%29%0A%09%09%09%09%09%09%09%09%09%09.replace%28%22%25L%22%2C%20locale%29%0A%09%09%09%09%09%09%09%09%09%09.replace%28%22%25R%22%2C%20_localize%28error%29%29%0A%09%09%09%09%09%09%09%09%09%09.replace%28%22%25U%22%2C%20installURLs.join%28%22%5Cn%22%29%29%0A%09%09%09%09%09%09%09%09%29%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09callback%28%21%21error%29%3B%0A%09%09%09%09%09%09%7D%2C%0A%09%09%09%09%09%09onDownloadStarted%3A%20function%28install%29%20%7B%0A%09%09%09%09%09%09%09this._progress%28_localize%28%22Download%20language%20pack%u2026%22%29%29%3B%0A%09%09%09%09%09%09%7D%2C%0A%09%09%09%09%09%09onDownloadProgress%3A%20function%28install%29%20%7B%0A%09%09%09%09%09%09%09var%20persent%20%3D%20Math.round%28install.progress/install.maxProgress*100%29%3B%0A%09%09%09%09%09%09%09this._progress%28_localize%28%22Download%20language%20pack%3A%20%25S%25%22%29.replace%28%22%25S%22%2C%20persent%29%29%3B%0A%09%09%09%09%09%09%7D%2C%0A%09%09%09%09%09%09onDownloadEnded%3A%20function%28install%29%20%7B%0A%09%09%09%09%09%09%09this._progress%28_localize%28%22Download%20language%20pack%3A%20done%21%22%29%29%3B%0A%09%09%09%09%09%09%7D%2C%0A%09%09%09%09%09%09_progress%3A%20function%28state%29%20%7B%0A%09%09%09%09%09%09%09if%28%22XULBrowserWindow%22%20in%20window%29%0A%09%09%09%09%09%09%09%09XULBrowserWindow.setOverLink%28state%20%7C%7C%20%22%22%2C%20null%29%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%29%3B%0A%09%09%09%09%09progressIcon.loading%28%29%3B%0A%09%09%09%09%09install.install%28%29%3B%0A%09%09%09%09%7D%2C%0A%09%09%09%09%22application/x-xpinstall%22%0A%09%09%09%29%3B%0A%09%09%7D%29%3B%0A%09%7D%2C%0A%09getInstallURLForLocale%3A%20function%28locale%2C%20useESR%29%20%7B%0A%09%09var%20appInfo%20%3D%20Services.appinfo%3B%0A%09%09var%20app%20%3D%20appInfo.name.toLowerCase%28%29%3B%0A%09%09if%28%0A%09%09%09app%20%21%3D%20%22firefox%22%0A%09%09%09%26%26%20app%20%21%3D%20%22seamonkey%22%0A%09%09%09%26%26%20app%20%21%3D%20%22thunderbird%22%0A%09%09%29%0A%09%09%09return%20undefined%3B%0A%0A%09%09var%20version%20%3D%20appInfo.version%3B%0A%09%09var%20isRelease%20%3D%20/%5E%5Cd+%28%5C.%5Cd+%29*%24/.test%28version%29%3B%0A%09%09var%20os%20%3D%20appInfo.OS%3B%0A%09%09var%20platform%3B%0A%09%09if%28os%20%3D%3D%20%22WINNT%22%29%20%20%20%20%20%20%20platform%20%3D%20%22win32%22%3B%0A%09%09else%20if%28os%20%3D%3D%20%22Darwin%22%29%20platform%20%3D%20%22mac%22%3B%0A%09%09else%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20platform%20%3D%20%22linux-i686%22%3B%0A%09%09if%28%21isRelease%29%20%7B%0A%09%09%09//%20https%3A//ftp.mozilla.org/pub/firefox/nightly/latest-mozilla-central/firefox-%23%23%23.en-US.langpack.xpi%0A%09%09%09//%20https%3A//ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-mozilla-central-l10n/win32/xpi/%0A%09%09%09//%20https%3A//ftp.mozilla.org/pub/mozilla.org/seamonkey/nightly/latest-comm-central-trunk-l10n/win32/xpi/%0A%09%09%09//%20https%3A//ftp.mozilla.org/pub/mozilla.org/thunderbird/nightly/latest-comm-central-l10n/win32/xpi/%0A%09%09%09//%20firefox-25.0a1.fr.langpack.xpi%0A%09%09%09var%20file%20%3D%20app%20+%20%22-%22%20+%20version%20+%20%22.%22%20+%20locale%20+%20%22.langpack.xpi%22%3B%0A%09%09%09if%28locale%20%3D%3D%20%22en-US%22%29%0A%09%09%09%09return%20%22https%3A//ftp.mozilla.org/pub/%22%20+%20app%20+%20%22/nightly/latest-mozilla-central/%22%20+%20file%3B%0A%09%09%09var%20dir%3B%0A%09%09%09if%28app%20%3D%3D%20%22firefox%22%29%20%20%20%20%20%20%20%20dir%20%3D%20%22latest-mozilla-central-l10n%22%3B%0A%09%09%09else%20if%28app%20%3D%3D%20%22seamonkey%22%29%20dir%20%3D%20%22latest-comm-central-trunk-l10n%22%3B%0A%09%09%09else%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20dir%20%3D%20%22latest-comm-central-l10n%22%3B%0A%09%09%09return%20%22https%3A//ftp.mozilla.org/pub/mozilla.org/%22%20+%20app%20+%20%22/nightly/%22%20+%20dir%20+%20%22/%22%20+%20platform%20+%20%22/xpi/%22%20+%20file%3B%0A%09%09%7D%0A%09%09if%28app%20%3D%3D%20%22seamonkey%22%29%20%7B%0A%09%09%09//%20https%3A//ftp.mozilla.org/pub/mozilla.org/seamonkey/releases/2.17.1/langpack/seamonkey-2.17.1.ru.langpack.xpi%0A%09%09%09return%20%22https%3A//ftp.mozilla.org/pub/mozilla.org/seamonkey/releases/%22%0A%09%09%09%09+%20version%20+%20%22/langpack/seamonkey-%22%20+%20version%20+%20%22.%22%20+%20locale%20+%20%22.langpack.xpi%22%3B%0A%09%09%7D%0A%09%09var%20file%20%3D%20locale%20+%20%22.xpi%22%3B%0A%09%09var%20esr%20%3D%20useESR%20%3F%20%22esr%22%20%3A%20%22%22%3B%0A%09%09//%20https%3A//ftp.mozilla.org/pub/mozilla.org/firefox/releases/23.0/win32/xpi/%0A%09%09//%20https%3A//ftp.mozilla.org/pub/mozilla.org/firefox/releases/23.0/mac/xpi/%0A%09%09//%20https%3A//ftp.mozilla.org/pub/mozilla.org/firefox/releases/23.0/linux-i686/xpi/%0A%09%09return%20%22https%3A//ftp.mozilla.org/pub/mozilla.org/%22%20+%20app%20+%20%22/releases/%22%20+%20version%20+%20esr%20+%20%22/%22%20+%20platform%20+%20%22/xpi/%22%20+%20file%3B%0A%09%7D%2C%0A%09get%20canSaveSessionAndExit%28%29%20%7B%0A%09%09delete%20this.canSaveSessionAndExit%3B%0A%09%09return%20this.canSaveSessionAndExit%20%3D%20this.ss%0A%09%09%09%3F%20this.prefHasDefaultValue%28%22browser.sessionstore.resume_session_once%22%29%0A%09%09%09%3A%20this.prefHasDefaultValue%28%22extensions.crashrecovery.resume_session_once%22%29%3B%20//%20Session%20Manager%20extension%3F%0A%09%7D%2C%0A%09saveSessionAndExit%3A%20function%28%29%20%7B%0A%09%09if%28%21this.confirm%28%22exit%22%29%29%0A%09%09%09return%3B%0A%09%09//%7E%20todo%3A%20browser.showQuitWarning%2C%20browser.warnOnQuit%20-%20%3F%0A%09%09var%20woq%20%3D%20this.getPref%28%22browser.warnOnQuit%22%29%3B%0A%09%09if%28woq%20%21%3D%20undefined%29%0A%09%09%09this.setPref%28%22browser.warnOnQuit%22%2C%20false%29%3B%0A%09%09var%20woc%20%3D%20this.getPref%28%22browser.tabs.warnOnClose%22%29%3B%0A%09%09if%28woc%20%21%3D%20undefined%29%0A%09%09%09this.setPref%28%22browser.tabs.warnOnClose%22%2C%20false%29%3B%0A%09%09try%20%7B%0A%09%09%09if%28%0A%09%09%09%09%22goQuitApplication%22%20in%20window%0A%09%09%09%09%09%3F%20goQuitApplication%28%7B%7D%20/*%20Dummy%20event%20for%20Firefox%2092+%20*/%29%0A%09%09%09%09%09%3A%20this.appQuit%28%29%0A%09%09%09%29%20%7B%0A%09%09%09%09if%28this.ss%29%0A%09%09%09%09%09this.setPref%28%22browser.sessionstore.resume_session_once%22%2C%20true%29%3B%0A%09%09%09%09else%0A%09%09%09%09%09this.setPref%28%22extensions.crashrecovery.resume_session_once%22%2C%20true%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%09catch%28e%29%20%7B%0A%09%09%09Components.utils.reportError%28e%29%3B%0A%09%09%7D%0A%09%09if%28woq%20%21%3D%20undefined%29%0A%09%09%09this.setPref%28%22browser.warnOnQuit%22%2C%20woq%29%3B%0A%09%09if%28woc%20%21%3D%20undefined%29%0A%09%09%09this.setPref%28%22browser.tabs.warnOnClose%22%2C%20woc%29%3B%0A%09%7D%2C%0A%09get%20_hasConsole%28%29%20%7B%0A%09%09//%20Removed%20in%20Firefox%2050+%3A%20https%3A//bugzilla.mozilla.org/show_bug.cgi%3Fid%3D1278368%0A%09%09delete%20this._hasConsole%3B%0A%09%09return%20this._hasConsole%20%3D%20%[email protected]/toolkit/console-clh%3B1%22%20in%20Components.classes%3B%0A%09%7D%2C%0A%09get%20_hasConsole2%28%29%20%7B%0A%09%09delete%20this._hasConsole2%3B%0A%09%09return%20this._hasConsole2%20%3D%20%22@zeniko/console2-clh%3B1%22%20in%20Components.classes%0A%09%09%09%7C%7C%20%[email protected]/commandlinehandler/general-startup%3B1%3Ftype%3Dconsole2%22%20in%20Components.classes%3B%20//%20Firefox%20%3C%3D%203.6%0A%09%7D%2C%0A%09get%20hasErrorConsole%28%29%20%7B%0A%09%09delete%20this.hasErrorConsole%3B%0A%09%09return%20this.hasErrorConsole%20%3D%20this._hasConsole%20%7C%7C%20this._hasConsole2%3B%0A%09%7D%2C%0A%09openErrorConsole%3A%20function%28%29%20%7B%0A%09%09if%28%22toErrorConsole%22%20in%20window%29%20%7B%0A%09%09%09toErrorConsole%28%29%3B%0A%09%09%09return%3B%0A%09%09%7D%0A%09%09if%28%22toJavaScriptConsole%22%20in%20window%29%20%7B%0A%09%09%09toJavaScriptConsole%28%29%3B%0A%09%09%09return%3B%0A%09%09%7D%0A%09%09var%20w%20%3D%20this.getErrorConsole%28%29%3B%0A%09%09if%28w%29%20%7B%0A%09%09%09w.focus%28%29%3B%0A%09%09%09return%3B%0A%09%09%7D%0A%09%09if%28%21this.hasErrorConsole%29%20%7B%0A%09%09%09Services.prompt.alert%28%0A%09%09%09%09window%2C%0A%09%09%09%09_localize%28%22Extensions%20Developer%20Tools%22%29%2C%0A%09%09%09%09_localize%28%22Error%20Console%20not%20found%21%22%29%0A%09%09%09%29%3B%0A%09%09%09return%3B%0A%09%09%7D%0A%09%09var%20consoleURI%20%3D%20this._hasConsole2%0A%09%09%09%3F%20%22chrome%3A//console2/content/console2.xul%22%0A%09%09%09%3A%20%22chrome%3A//global/content/console.xul%22%3B%0A%09%09window.openDialog%28consoleURI%2C%20%22_blank%22%2C%20%22chrome%2Call%2Ccenterscreen%2Cresizable%2Cdialog%3D0%22%29%3B%0A%09%7D%2C%0A%09getErrorConsole%3A%20function%28%29%20%7B%0A%09%09return%20Services.wm.getMostRecentWindow%28%22global%3Aconsole%22%29%3B%0A%09%7D%2C%0A%09//%20Note%3A%20Browser%20Console%20isn%27t%20supported%20without%20opened%20browser%20windows%0A%09get%20browserWindow%28%29%20%7B%0A%09%09if%28window.location.href%20%3D%3D%20%22chrome%3A//browser/content/browser.xul%22%29%0A%09%09%09return%20window%3B%0A%09%09return%20Services.wm.getMostRecentWindow%28%22navigator%3Abrowser%22%29%3B%0A%09%7D%2C%0A%09get%20canOpenBrowserConsole%28%29%20%7B%0A%09%09var%20window%20%3D%20this.browserWindow%3B%0A%09%09return%20window%20%26%26%20%21%21window.document.getElementById%28%22key_browserConsole%22%29%0A%09%09%09%7C%7C%20this.platformVersion%20%3E%3D%2057%3B%20//%20Force%20show%20menuitem%0A%09%7D%2C%0A%09openBrowserConsole%3A%20function%28%29%20%7B%0A%09%09try%20%7B%20//%20For%20Firefox%2060+%0A%09%09%09var%20require%20%3D%20this.require%3B%0A%09%09%09var%20HUDService%20%3D%20require%28%22devtools/client/webconsole/hudservice%22%29.HUDService%3B%0A%09%09%09HUDService.openBrowserConsoleOrFocus%28%29%3B%0A%09%09%09return%3B%0A%09%09%7D%0A%09%09catch%28e%29%20%7B%0A%09%09%7D%0A%09%09var%20window%20%3D%20this.browserWindow%3B%0A%09%09if%28%21window%29%0A%09%09%09return%3B%0A%09%09var%20consoleFrame%20%3D%20this.getBrowserConsole%28window%29%3B%0A%09%09if%28consoleFrame%29%20%7B%0A%09%09%09consoleFrame.focus%28%29%3B%0A%09%09%09return%3B%0A%09%09%7D%0A%09%09if%28%22HUDService%22%20in%20window%20%26%26%20%22toggleBrowserConsole%22%20in%20window.HUDService%29%20%7B%20//%20Firefox%2027.0a1+%0A%09%09%09window.HUDService.toggleBrowserConsole%28%29%3B%0A%09%09%09return%3B%0A%09%09%7D%0A%09%09if%28%22HUDConsoleUI%22%20in%20window%20%26%26%20%22toggleBrowserConsole%22%20in%20window.HUDConsoleUI%29%20%7B%0A%09%09%09window.HUDConsoleUI.toggleBrowserConsole%28%29%3B%0A%09%09%09return%3B%0A%09%09%7D%0A%09%09window.document.getElementById%28%22key_browserConsole%22%29.doCommand%28%29%3B%0A%09%7D%2C%0A%09getBrowserConsole%3A%20function%28window%29%20%7B%0A%09%09if%28%21window%29%0A%09%09%09window%20%3D%20this.browserWindow%3B%0A%09%09if%28%22HUDService%22%20in%20window%20%26%26%20%22getBrowserConsole%22%20in%20window.HUDService%29%20%7B%20//%20Firefox%2027.0a1+%0A%09%09%09var%20hud%20%3D%20window.HUDService.getBrowserConsole%28%29%3B%0A%09%09%09return%20hud%20%26%26%20hud.iframeWindow%3B%0A%09%09%7D%0A%09%09if%28%22HUDConsoleUI%22%20in%20window%20%26%26%20window.HUDConsoleUI._browserConsoleID%29%20try%20%7B%0A%09%09%09var%20HUDService%20%3D%20Components.utils%5B%22import%22%5D%28%22resource%3A///modules/HUDService.jsm%22%2C%20%7B%7D%29.HUDService%3B%0A%09%09%09var%20hud%20%3D%20HUDService.getHudReferenceById%28window.HUDConsoleUI._browserConsoleID%29%3B%0A%09%09%09return%20hud%20%26%26%20hud.iframeWindow%3B%0A%09%09%7D%0A%09%09catch%28e%29%20%7B%0A%09%09%09Components.utils.reportError%28e%29%3B%0A%09%09%7D%0A%09%09return%20null%3B%0A%09%7D%2C%0A%09get%20require%28%29%20%7B%0A%09%09try%20%7B%20//%20%7EFirefox%2099+%0A%09%09%09return%20Components.utils%5B%22import%22%5D%28%22resource%3A//devtools/shared/loader/Loader.jsm%22%2C%20%7B%7D%29.require%3B%0A%09%09%7D%0A%09%09catch%28e%29%20%7B%0A%09%09%09return%20Components.utils%5B%22import%22%5D%28%22resource%3A//devtools/shared/Loader.jsm%22%2C%20%7B%7D%29.require%3B%0A%09%09%7D%0A%09%7D%2C%0A%09_restoreErrorConsoleObserver%3A%20null%2C%0A%09initErrorConsoleRestoring%3A%20function%28%29%20%7B%0A%09%09if%28this._restoreErrorConsoleObserver/*%20%7C%7C%20this.platformVersion%20%3C%202*/%29%0A%09%09%09return%3B%0A%09%09this.restoreErrorConsole%28%29%3B%0A%09%09var%20obs%20%3D%20Services.obs%3B%0A%09%09var%20_this%20%3D%20this%3B%0A%09%09var%20observer%20%3D%20this._restoreErrorConsoleObserver%20%3D%20%7B%0A%09%09%09observe%3A%20function%28%29%20%7B%0A%09%09%09%09obs.removeObserver%28observer%2C%20%22quit-application-granted%22%29%3B%0A%09%09%09%09if%28_this.getErrorConsole%28%29%29%0A%09%09%09%09%09_this.setPref%28_this.prefs.restoreErrorConsole%2C%20true%29%3B%0A%09%09%09%09if%28_this.getBrowserConsole%28%29%29%0A%09%09%09%09%09_this.setPref%28_this.prefs.restoreBrowserConsole%2C%20true%29%3B%0A%09%09%09%7D%0A%09%09%7D%3B%0A%09%09obs.addObserver%28observer%2C%20%22quit-application-granted%22%2C%20false%29%3B%0A%09%7D%2C%0A%09destroyErrorConsoleRestoring%3A%20function%28%29%20%7B%0A%09%09var%20o%20%3D%20this._restoreErrorConsoleObserver%3B%0A%09%09if%28o%29%20%7B%0A%09%09%09this._restoreErrorConsoleObserver%20%3D%20null%3B%0A%09%09%09Services.obs.removeObserver%28o%2C%20%22quit-application-granted%22%29%3B%0A%09%09%7D%0A%09%7D%2C%0A%09restoreErrorConsole%3A%20function%28%29%20%7B%0A%09%09if%28this.getPref%28this.prefs.restoreErrorConsole%29%29%20%7B%0A%09%09%09this.resetPref%28this.prefs.restoreErrorConsole%29%3B%0A%09%09%09if%28this.hasErrorConsole%29%0A%09%09%09%09this.openErrorConsole%28%29%3B%0A%09%09%7D%0A%09%09if%28this.getPref%28this.prefs.restoreBrowserConsole%29%29%20%7B%0A%09%09%09this.resetPref%28this.prefs.restoreBrowserConsole%29%3B%0A%09%09%09//%20Note%3A%20%23menu_browserConsole%20doesn%27t%20exist%20yet%20on%20startup%0A%09%09%09//if%28this.canOpenBrowserConsole%29%0A%09%09%09this.openBrowserConsole%28%29%3B%0A%09%09%7D%0A%09%7D%2C%0A%09attrsInspector%3A%20function%28e%29%20%7B%0A%09%09this.button.attrsInspector%28e%29%3B%0A%09%09this.setAttrsInspectorActive%28%29%3B%0A%09%7D%2C%0A%09setAttrsInspectorActive%3A%20function%28mi%29%20%7B%0A%09%09if%28%21mi%29%0A%09%09%09mi%20%3D%20this.%24%28%22attrsInspector%22%29%3B%0A%09%09if%28%22__attributesInspector%22%20in%20window%29%20%7B%0A%09%09%09mi.setAttribute%28%22type%22%2C%20%22checkbox%22%29%3B%0A%09%09%09mi.setAttribute%28%22checked%22%2C%20%22true%22%29%3B%0A%09%09%7D%0A%09%09else%20%7B%0A%09%09%09mi.removeAttribute%28%22type%22%29%3B%0A%09%09%09mi.removeAttribute%28%22checked%22%29%3B%0A%09%09%7D%0A%09%7D%2C%0A%09get%20hasBrowserToolbox%28%29%20%7B%0A%09%09delete%20this.hasBrowserToolbox%3B%0A%09%09return%20this.hasBrowserToolbox%20%3D%20this.app%20%3D%3D%20%22Firefox%22%20%26%26%20this.platformVersion%20%3E%3D%2056%0A%09%09%09%7C%7C%20this.app%20%3D%3D%20%22Pale%20Moon%22%20%26%26%20this.platformVersion%20%3E%3D%204.1%0A%09%09%09%7C%7C%20this.app%20%3D%3D%20%22Basilisk%22%3B%0A%09%7D%2C%0A%09openBrowserToolbox%3A%20function%28%29%20%7B%0A%09%09var%20pref%20%3D%20%22devtools.debugger.remote-enabled%22%3B%0A%09%09if%28%21this.getPref%28pref%29%29%20%7B%0A%09%09%09this.setPref%28pref%2C%20true%29%3B%0A%09%09%09setTimeout%28function%28_this%29%20%7B%0A%09%09%09%09_this.resetPref%28pref%29%3B%0A%09%09%09%09if%28_this.getPref%28pref%29%29%20//%20Ensure%20disabled%0A%09%09%09%09%09_this.setPref%28pref%2C%20false%29%3B%0A%09%09%09%7D%2C%20100%2C%20this%29%3B%0A%09%09%7D%0A%09%09try%20%7B%0A%09%09%09var%20btl%20%3D%20Components.utils%5B%22import%22%5D%28%22resource%3A//devtools/client/framework/ToolboxProcess.jsm%22%2C%20%7B%7D%29%0A%09%09%09%09.BrowserToolboxProcess%3B%0A%09%09%7D%0A%09%09catch%28e%29%20%7B%20//%20Firefox%2072+%0A%09%09%09btl%20%3D%20Components.utils%5B%22import%22%5D%28%22resource%3A//devtools/client/framework/browser-toolbox/Launcher.jsm%22%2C%20%7B%7D%29%0A%09%09%09%09.BrowserToolboxLauncher%3B%0A%09%09%7D%0A%09%09btl.init%28/*onClose%2C%20onRun%2C%20overwritePreferences%2C%20binaryPath*/%29%3B%0A%09%7D%2C%0A%09get%20hasScratchpad%28%29%20%7B%0A%09%09var%20window%20%3D%20this.browserWindow%3B%0A%09%09delete%20this.hasScratchpad%3B%0A%09%09return%20this.hasScratchpad%20%3D%20window%20%26%26%20%22Scratchpad%22%20in%20window%20%26%26%20%22openScratchpad%22%20in%20Scratchpad%0A%09%09%09%7C%7C%20window%20%26%26%20%21%21window.document.getElementById%28%22key_scratchpad%22%29%0A%09%09%09%7C%7C%20this.app%20%3D%3D%20%22Firefox%22%20%26%26%20this.platformVersion%20%3E%3D%2058%20%26%26%20this.platformVersion%20%3C%2072%0A%09%09%09%7C%7C%20this.app%20%3D%3D%20%22Pale%20Moon%22%20%26%26%20this.platformVersion%20%3E%3D%204.1%0A%09%09%09%7C%7C%20this.app%20%3D%3D%20%22Basilisk%22%3B%0A%09%7D%2C%0A%09openScratchpad%3A%20function%28%29%20%7B%0A%09%09var%20ScratchpadManager%20%3D%20%22Scratchpad%22%20in%20window%0A%09%09%09%3F%20%22ScratchpadManager%22%20in%20Scratchpad%20%26%26%20Scratchpad.ScratchpadManager%20//%20Firefox%2010+%0A%09%09%09%3A%20Components.utils%5B%22import%22%5D%28%22resource%3A//devtools/client/scratchpad/scratchpad-manager.jsm%22%2C%20%7B%7D%29%0A%09%09%09%09.ScratchpadManager%3B%20//%20Firefox%2059+%0A%09%09if%28ScratchpadManager%29%20%7B%0A%09%09%09//%20Use%20JSON.stringify%28win.Scratchpad.getState%28%29%29%20to%20get%20state%20object%0A%09%09%09var%20context%20%3D%20this.getPref%28%22devtools.chrome.enabled%22%29%20%3F%202%20%3A%201%3B%0A%09%09%09ScratchpadManager.openScratchpad%28%7B%20text%3A%20%22%22%2C%20executionContext%3A%20context%2C%20saved%3A%20true%20%7D%29%3B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09var%20win%20%3D%20Scratchpad.openScratchpad%28%29%3B%0A%09%09var%20_this%20%3D%20this%3B%0A%09%09win.addEventListener%28%22load%22%2C%20function%20tweak%28e%29%20%7B%0A%09%09%09win.removeEventListener%28%22load%22%2C%20tweak%2C%20false%29%3B%0A%09%09%09if%28_this.getPref%28%22devtools.chrome.enabled%22%29%29%0A%09%09%09%09win.document.getElementById%28%22sp-menu-browser%22%29.doCommand%28%29%3B%0A%09%09%09var%20stopTime%20%3D%20Date.now%28%29%20+%203000%3B%0A%09%09%09if%28_this.getPref%28%22devtools.editor.component%22%29%20%21%3D%20%22orion%22%29%20%7B%0A%09%09%09%09var%20textbox%20%3D%20win.Scratchpad.textbox%3B%0A%09%09%09%09if%28textbox%29%20%7B%0A%09%09%09%09%09textbox.value%20%3D%20%22%22%3B%0A%09%09%09%09%09textbox.focus%28%29%3B%0A%09%09%09%09%09return%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%09%28function%20clear%28%29%20%7B%0A%09%09%09%09try%20%7B%0A%09%09%09%09%09win.Scratchpad.setText%28%22%22%29%3B%0A%09%09%09%09%7D%0A%09%09%09%09catch%28e%29%20%7B%20//%20Not%20yet%20initialized%21%0A%09%09%09%09%09if%28Date.now%28%29%20%3C%20stopTime%29%0A%09%09%09%09%09%09setTimeout%28clear%2C%2010%29%3B%0A%09%09%09%09%09else%0A%09%09%09%09%09%09Components.utils.reportError%28e%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%29%28%29%3B%0A%09%09%7D%2C%20false%29%3B%0A%09%7D%2C%0A%09get%20hasEyedropper%28%29%20%7B%0A%09%09var%20window%20%3D%20this.browserWindow%3B%0A%09%09delete%20this.hasEyedropper%3B%0A%09%09return%20this.hasEyedropper%20%3D%20window%20%26%26%20%22openEyedropper%22%20in%20window%0A%09%09%09%7C%7C%20this.app%20%3D%3D%20%22Firefox%22%20%26%26%20this.platformVersion%20%3E%3D%2050%0A%09%09%09%7C%7C%20this.app%20%3D%3D%20%22Pale%20Moon%22%20%26%26%20this.platformVersion%20%3E%3D%204.1%0A%09%09%09%7C%7C%20this.app%20%3D%3D%20%22Basilisk%22%3B%0A%09%7D%2C%0A%09openEyedropper%3A%20function%28%29%20%7B%0A%09%09if%28%22openEyedropper%22%20in%20window%29%20%7B%0A%09%09%09openEyedropper%28%29%3B%0A%09%09%09return%3B%0A%09%09%7D%0A%09%09//%20Firefox%2050+%2C%20based%20on%20code%20from%20resource%3A//devtools/client/menus.js%0A%09%09var%20require%20%3D%20this.require%3B%0A%09%09try%20%7B%0A%09%09%09var%20TargetFactory%20%3D%20require%28%22devtools/client/framework/target%22%29.TargetFactory%3B%0A%09%09%7D%0A%09%09catch%28e%29%20%7B%20//%20Firefox%2092+%0A%09%09%09var%20fn%20%3D%20function%28%29%20%7B%0A%09%09%09%09var%20CommandsFactory%20%3D%20require%28%22devtools/shared/commands/commands-factory%22%29.CommandsFactory%3B%0A%09%09%09%09var%20commands%20%3D%20await%26%20CommandsFactory.forTab%28gBrowser.selectedTab%29%3B%0A%09%09%09%09await%26%20commands.targetCommand.startListening%28%29%3B%0A%09%09%09%09var%20target%20%3D%20commands.targetCommand.targetFront%3B%0A%09%09%09%09var%20inspectorFront%20%3D%20await%26%20target.getFront%28%22inspector%22%29%3B%0A%09%09%09%09inspectorFront.pickColorFromPage%28%7B%20copyOnSelect%3A%20true%2C%20fromMenu%3A%20true%20%7D%29%3B%0A%09%09%09%7D%3B%0A%09%09%09new%20Function%28%20//%20Backward%20compatibility%20to%20use%20async/await%20syntax%0A%09%09%09%09%22require%22%2C%0A%09%09%09%09%22%28async%20%22%0A%09%09%09%09+%20fn.toString%28%29.replace%28/await%26/g%2C%20%22await%22%29%0A%09%09%09%09+%20%22%29%28%29%3B%22%0A%09%09%09%29%28require%29%3B%0A%09%09%09return%3B%0A%09%09%7D%0A%09%09var%20target%20%3D%20TargetFactory.forTab%28gBrowser.selectedTab%29%3B%0A%09%09if%28%22getFront%22%20in%20target%29%20%7B%20//%20Firefox%2064+%0A%09%09%09target.makeRemote%28%29.then%28function%28%29%20%7B%0A%09%09%09%09target.getFront%28%22inspector%22%29%0A%09%09%09%09%09.pickColorFromPage%28%7B%20copyOnSelect%3A%20true%2C%20fromMenu%3A%20true%20%7D%29%3B%0A%09%09%09%7D%2C%20Components.utils.reportError%29%3B%0A%09%09%09return%3B%0A%09%09%7D%0A%09%09if%28%22then%22%20in%20target%29%20%7B%20//%20Firefox%2069+%0A%09%09%09target.then%28function%28target%29%20%7B%0A%09%09%09%09target.attach%28%29.then%28function%28%29%20%7B%0A%09%09%09%09%09var%20getInspector%20%3D%20%22getInspector%22%20in%20target%0A%09%09%09%09%09%09%3F%20target.getInspector%28%29%0A%09%09%09%09%09%09%3A%20target.getFront%28%22inspector%22%29%3B%20//%20Firefox%2070+%0A%09%09%09%09%09getInspector.then%28function%28inspectorFront%29%20%7B%0A%09%09%09%09%09%09inspectorFront.pickColorFromPage%28%7B%20copyOnSelect%3A%20true%2C%20fromMenu%3A%20true%20%7D%29%3B%0A%09%09%09%09%09%7D%2C%20Components.utils.reportError%29%3B%0A%09%09%09%09%7D%2C%20Components.utils.reportError%29%3B%0A%09%09%09%7D%2C%20Components.utils.reportError%29%3B%0A%09%09%09return%3B%0A%09%09%7D%0A%09%09var%20CommandUtils%20%3D%20require%28%22devtools/client/shared/developer-toolbar%22%29.CommandUtils%3B%0A%09%09if%28%22executeOnTarget%22%20in%20CommandUtils%29%20//%20Firefox%2054+%0A%09%09%09CommandUtils.executeOnTarget%28target%2C%20%22eyedropper%20--frommenu%22%29%3B%0A%09%09else%20%7B%0A%09%09%09CommandUtils.createRequisition%28target%2C%20%7B%0A%09%09%09%09environment%3A%20CommandUtils.createEnvironment%28%7B%20target%3A%20target%20%7D%29%0A%09%09%09%7D%29.then%28function%28requisition%29%20%7B%0A%09%09%09%09requisition.updateExec%28%22eyedropper%20--frommenu%22%29%3B%0A%09%09%09%7D%2C%20Components.utils.reportError%29%3B%0A%09%09%7D%0A%09%7D%2C%0A%0A%09get%20isDebugBuild%28%29%20%7B%20//%7E%20todo%3A%20find%20another%20way%0A%09%09delete%20this.isDebugBuild%3B%0A%09%09return%20this.isDebugBuild%20%3D%20this.getPref%28%0A%09%09%09%22general.warnOnAboutConfig%22%2C%0A%09%09%09true%2C%0A%09%09%09this.defaultBranch%0A%09%09%29%20%3D%3D%20false%3B%0A%09%7D%2C%0A%09get%20canDisableE4X%28%29%20%7B%0A%09%09delete%20this.canDisableE4X%3B%0A%09%09return%20this.canDisableE4X%20%3D%20this.prefHasDefaultValue%28%22javascript.options.xml.chrome%22%29%3B%0A%09%7D%2C%0A%09get%20hasMultiProcessMode%28%29%20%7B%0A%09%09delete%20this.hasMultiProcessMode%3B%0A%09%09return%20this.hasMultiProcessMode%20%3D%20this.prefHasDefaultValue%28%22browser.tabs.remote.autostart%22%29%3B%0A%09%7D%2C%0A%09ensureMultiProcessMode%3A%20function%28isMultiProcess%29%20%7B%0A%09%09//%20It%27s%20enough%20to%20enable%20only%20using%20browser.tabs.remote.force-enable%20%3D%20true%0A%09%09//%20But%20to%20disable%20should%20be%20also%20browser.tabs.remote.autostart%20%3D%20false%0A%09%09%5B%0A%09%09%09%22browser.tabs.remote.autostart%22%2C%0A%09%09%09%22browser.tabs.remote.autostart.1%22%2C%0A%09%09%09%22browser.tabs.remote.autostart.2%22%0A%09%09%5D.forEach%28function%28pref%29%20%7B%0A%09%09%09this.resetPref%28pref%29%3B%0A%09%09%09if%28Services.prefs.getPrefType%28pref%29%20%3D%3D%20Services.prefs.PREF_BOOL%29%0A%09%09%09%09this.setPref%28pref%2C%20isMultiProcess%29%3B%0A%09%09%7D%2C%20this%29%3B%0A%09%7D%2C%0A%0A%09hasModifier%3A%20function%28e%29%20%7B%0A%09%09return%20e.ctrlKey%20%7C%7C%20e.shiftKey%20%7C%7C%20e.altKey%20%7C%7C%20e.metaKey%3B%0A%09%7D%2C%0A%0A%09confirm%3A%20function%28key%2C%20method%2C%20args%29%20%7B%0A%09%09var%20msg%3B%0A%09%09switch%28key%29%20%7B%0A%20%20%20%09%09%09case%20%22reopen%22%3A%0A%20%20%20%09%09%09case%20%22reopenAfterLocaleChange%22%3A%0A%20%20%20%09%09%09%09msg%20%3D%20%22Reopen%20window%3F%22%3B%0A%20%20%20%09%09%09break%3B%0A%20%20%20%09%09%09case%20%22restart%22%3A%0A%20%20%20%09%09%09case%20%22restartAfterLocaleChange%22%3A%0A%20%20%20%09%09%09%09msg%20%3D%20%22Restart%20application%3F%22%3B%0A%20%20%20%09%09%09break%3B%0A%20%20%20%09%09%09case%20%22exit%22%3A%0A%20%20%20%09%09%09%09msg%20%3D%20%22Are%20you%20sure%20you%20want%20to%20exit%3F%22%3B%0A%09%09%7D%0A%09%09if%28%0A%09%09%09%21this.options.confirm%5Bkey%5D%0A%09%09%09%7C%7C%20Services.prompt.confirm%28window%2C%20_localize%28%22Extensions%20Developer%20Tools%22%29%2C%20_localize%28msg%29%29%0A%09%09%29%20%7B%0A%09%09%09method%20%26%26%20this%5Bmethod%5D.apply%28this%2C%20args%29%3B%0A%09%09%09return%20true%3B%0A%09%09%7D%0A%09%09return%20false%3B%0A%09%7D%2C%0A%0A%09%24%3A%20function%28id%29%20%7B%0A%09%09var%20nodes%20%3D%20this.popup.getElementsByAttribute%28%22cb_id%22%2C%20id%29%3B%0A%09%09return%20nodes.length%20%3F%20nodes%5B0%5D%20%3A%20null%3B%0A%09%7D%2C%0A%09delayed%3A%20function%28func%2C%20context%2C%20delay%29%20%7B%0A%09%09setTimeout%28function%28context%29%20%7B%0A%09%09%09func.call%28context%29%3B%0A%09%09%7D%2C%20delay%20%7C%7C%200%2C%20context%20%7C%7C%20this%29%3B%0A%09%7D%2C%0A%09initPrefsMenu%3A%20function%28popup%29%20%7B%0A%09%09var%20knownPrefs%20%3D%20%7B%20__proto__%3A%20null%20%7D%3B%0A%09%09var%20closeMenu%20%3D%20this.options.closeOptionsMenu%20%3F%20%22auto%22%20%3A%20%22none%22%3B%0A%09%09Array.prototype.forEach.call%28%0A%09%09%09popup.getElementsByAttribute%28%22cb_pref%22%2C%20%22*%22%29%2C%0A%09%09%09function%28mi%29%20%7B%0A%09%09%09%09if%28mi.parentNode%20%21%3D%20popup%29%20//%20Ignore%20debug%20prefs%0A%09%09%09%09%09return%3B%0A%09%09%09%09var%20pref%20%3D%20mi.getAttribute%28%22cb_pref%22%29%3B%0A%09%09%09%09knownPrefs%5Bpref%5D%20%3D%20true%3B%0A%09%09%09%09var%20val%20%3D%20this.getPref%28pref%29%3B%0A%09%09%09%09var%20isSpecial%20%3D%20this.options.prefValues.hasOwnProperty%28pref%29%3B%0A%09%09%09%09var%20checked%20%3D%20isSpecial%0A%09%09%09%09%09%3F%20this.getCheckedState%28pref%2C%20val%29%0A%09%09%09%09%09%3A%20%21%21val%3B%0A%09%09%09%09mi.setAttribute%28%22checked%22%2C%20checked%29%3B%0A%09%09%09%09mi.setAttribute%28%22closemenu%22%2C%20closeMenu%29%3B%0A%09%09%09%09mi.setAttribute%28%22tooltiptext%22%2C%20isSpecial%20%3F%20pref%20+%20%22%20%3D%20%22%20+%20val%20%3A%20pref%29%3B%0A%09%09%09%09this.hlPrefItem%28mi%2C%20pref%29%3B%0A%09%09%09%7D%2C%0A%09%09%09this%0A%09%09%29%3B%0A%09%09this.initDebugPrefsMenus%28popup%2C%20knownPrefs%29%3B%0A%09%7D%2C%0A%09getCheckedState%3A%20function%28pref%2C%20val%29%20%7B%0A%09%09if%28pref%20%3D%3D%20%22extensions.autoDisableScopes%22%29%0A%09%09%09return%20%21%28val%20%26%201%29%3B%0A%09%09return%20val%20%3D%3D%20this.options.prefValues%5Bpref%5D%3B%0A%09%7D%2C%0A%09initDebugPrefsMenus%3A%20function%28parentPopup%2C%20knownPrefs%29%20%7B%0A%09%09var%20showDebugPrefs%20%3D%20this.options.showDebugPrefs%3B%0A%09%09if%28%21showDebugPrefs%29%0A%09%09%09return%3B%0A%09%09this.%24%28%22debugPrefsSeparator%22%29.removeAttribute%28%22hidden%22%29%3B%0A%09%09if%28showDebugPrefs%20%26%201%29%0A%09%09%09this.%24%28%22debugPrefsExtMenu%22%29.removeAttribute%28%22hidden%22%29%3B%0A%09%09if%28showDebugPrefs%20%26%202%29%0A%09%09%09this.%24%28%22debugPrefsAppMenu%22%29.removeAttribute%28%22hidden%22%29%3B%0A%09%09this.delayed%28function%28%29%20%7B%0A%09%09%09this.fillDebugPrefsPopup%28knownPrefs%29%3B%0A%09%09%7D%29%3B%0A%09%7D%2C%0A%09fillDebugPrefsPopup%3A%20function%28knownPrefs%29%20%7B%0A%09%09var%20showDebugPrefs%20%3D%20this.options.showDebugPrefs%3B%0A%09%09var%20ext%20%3D%20showDebugPrefs%20%26%201%0A%09%09%09%26%26%20document.createDocumentFragment%28%29%3B%0A%09%09var%20app%20%3D%20showDebugPrefs%20%26%202%0A%09%09%09%26%26%20document.createDocumentFragment%28%29%3B%0A%09%09var%20trimPrefix%20%3D%20this.options.debugPrefsTrimExtPrefix%20%3F%2011%20/*%22extensions.%22.length*/%20%3A%200%3B%0A%09%09var%20types%20%3D%20this.options.debugPrefsTypes%3B%0A%09%09Services.prefs.getBranch%28%22%22%29%0A%09%09%09.getChildList%28%22%22%2C%20%7B%7D%29%0A%09%09%09.filter%28function%28pName%29%20%7B%0A%09%09%09%09var%20show%20%3D%20%21%28pName%20in%20knownPrefs%29%0A%09%09%09%09%09%26%26%20this.options.debugPrefsInclude.test%28pName%29%0A%09%09%09%09%09%26%26%20%21this.options.debugPrefsExclude.test%28pName%29%3B%0A%09%09%09%09if%28show%20%26%26%20types%20%21%3D%200%29%20%7B%0A%09%09%09%09%09var%20ps%20%3D%20Services.prefs%3B%0A%09%09%09%09%09switch%28ps.getPrefType%28pName%29%29%20%7B%0A%09%09%09%09%09%09case%20ps.PREF_BOOL%3A%20%20%20return%20types%20%26%201%3B%0A%09%09%09%09%09%09case%20ps.PREF_INT%3A%20%20%20%20return%20types%20%26%202%3B%0A%09%09%09%09%09%09case%20ps.PREF_STRING%3A%20return%20types%20%26%204%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%09return%20show%3B%0A%09%09%09%7D%2C%20this%29%0A%09%09%09.sort%28%29%0A%09%09%09.forEach%28function%28pName%29%20%7B%0A%09%09%09%09if%28pName.substr%280%2C%2011%29%20%3D%3D%20%22extensions.%22%29%0A%09%09%09%09%09ext%20%26%26%20ext.appendChild%28this.createPrefItem%28pName%2C%20trimPrefix%29%29%3B%0A%09%09%09%09else%0A%09%09%09%09%09app%20%26%26%20app.appendChild%28this.createPrefItem%28pName%29%29%3B%0A%09%09%09%7D%2C%20this%29%3B%0A%09%09ext%20%26%26%20this.delayed%28function%28%29%20%7B%0A%09%09%09this.fillPopup%28%22debugPrefsExtPopup%22%2C%20ext%29%3B%0A%09%09%7D%29%3B%0A%09%09app%20%26%26%20this.delayed%28function%28%29%20%7B%0A%09%09%09this.fillPopup%28%22debugPrefsAppPopup%22%2C%20app%29%3B%0A%09%09%7D%29%3B%0A%09%7D%2C%0A%09fillPopup%3A%20function%28id%2C%20df%29%20%7B%0A%09%09var%20node%20%3D%20this.%24%28id%29%3B%0A%09%09node.textContent%20%3D%20%22%22%3B%0A%09%09node.appendChild%28df%29%3B%0A%09%09if%28node.hasChildNodes%28%29%29%0A%09%09%09node.parentNode.removeAttribute%28%22disabled%22%29%3B%0A%09%09else%0A%09%09%09node.parentNode.setAttribute%28%22disabled%22%2C%20%22true%22%29%3B%0A%09%7D%2C%0A%09createPrefItem%3A%20function%28pName%2C%20trimPrefix%29%20%7B%0A%09%09var%20mi%20%3D%20document.createElementNS%28XULNS%2C%20%22menuitem%22%29%3B%0A%09%09mi.setAttribute%28%22cb_pref%22%2C%20pName%29%3B%0A%09%09if%28trimPrefix%29%20%7B%0A%09%09%09mi.setAttribute%28%22label%22%2C%20pName.substr%28trimPrefix%29%29%3B%0A%09%09%09mi.setAttribute%28%22tooltiptext%22%2C%20pName%29%3B%0A%09%09%7D%0A%09%09else%20%7B%0A%09%09%09mi.setAttribute%28%22label%22%2C%20pName%29%3B%0A%09%09%7D%0A%09%09var%20pVal%20%3D%20this.getPref%28pName%29%3B%0A%09%09mi.setAttribute%28%22type%22%2C%20%22checkbox%22%29%3B%0A%09%09if%28typeof%20pVal%20%3D%3D%20%22boolean%22%29%20%7B%0A%09%09%09if%28this.getPref%28pName%29%29%0A%09%09%09%09mi.setAttribute%28%22checked%22%2C%20%22true%22%29%3B%0A%09%09%09if%28%21this.options.closeOptionsMenu%29%0A%09%09%09%09mi.setAttribute%28%22closemenu%22%2C%20%22none%22%29%3B%0A%09%09%7D%0A%09%09else%20%7B%0A%09%09%09mi.setAttribute%28%22autocheck%22%2C%20%22false%22%29%3B%0A%09%09%7D%0A%09%09this.showPrefValue%28mi%2C%20pVal%29%3B%0A%09%09this.hlPrefItem%28mi%2C%20pName%29%3B%0A%09%09return%20mi%3B%0A%09%7D%2C%0A%09doPrefsMenuCommand%3A%20function%28mi%29%20%7B%0A%09%09var%20pVal%2C%20pName%20%3D%20mi.getAttribute%28%22cb_pref%22%29%3B%0A%09%09if%28%21pName%29%0A%09%09%09return%3B%0A%09%09if%28mi.getAttribute%28%22type%22%29%20%3D%3D%20%22checkbox%22%20%26%26%20mi.getAttribute%28%22autocheck%22%29%20%21%3D%20%22false%22%29%0A%09%09%09pVal%20%3D%20mi.getAttribute%28%22checked%22%29%20%3D%3D%20%22true%22%3B%0A%09%09else%20%7B%0A%09%09%09var%20curVal%20%3D%20this.getPref%28pName%29%3B%0A%09%09%09var%20defVal%20%3D%20this.getPref%28pName%2C%20undefined%2C%20this.defaultBranch%29%3B%0A%09%09%09var%20resetLabel%20%3D%20curVal%20%21%3D%20defVal%0A%09%09%09%09%3F%20_localize%28%22Reset%20to%20default%20value%20%28%25S%29%22%29.replace%28%22%25S%22%2C%20defVal%29%0A%09%09%09%09%3A%20%22%22%3B%0A%09%09%09var%20pref%20%3D%20%7B%20value%3A%20curVal%20%7D%3B%0A%09%09%09var%20reset%20%3D%20%7B%20value%3A%20false%20%7D%3B%0A%09%09%09var%20ok%20%3D%20Services.prompt.prompt%28%0A%09%09%09%09window%2C%0A%09%09%09%09_localize%28%22Extensions%20Developer%20Tools%22%29%2C%0A%09%09%09%09_localize%28%22Change%20%u201C%25S%u201D%20preference%3A%22%29.replace%28%22%25S%22%2C%20pName%29%2C%0A%09%09%09%09pref%2C%0A%09%09%09%09resetLabel%2C%0A%09%09%09%09reset%0A%09%09%09%29%3B%0A%09%09%09if%28%21ok%29%0A%09%09%09%09return%3B%0A%09%09%09pVal%20%3D%20pref.value%3B%0A%09%09%09if%28typeof%20curVal%20%3D%3D%20%22number%22%29%0A%09%09%09%09pVal%20%3D%20+pVal%3B%0A%09%09%7D%0A%0A%09%09if%28reset%20%26%26%20reset.value%29%20%7B%0A%09%09%09this.resetPref%28pName%29%3B%0A%09%09%7D%0A%09%09else%20if%28this.options.prefValues.hasOwnProperty%28pName%29%29%20%7B%0A%09%09%09if%28pVal%29%20//%20Checked%0A%09%09%09%09this.setPref%28pName%2C%20this.options.prefValues%5BpName%5D%29%3B%0A%09%09%09else%0A%09%09%09%09this.resetPref%28pName%29%3B%0A%09%09%09this.delayed%28function%28%29%20%7B%0A%09%09%09%09mi.setAttribute%28%22tooltiptext%22%2C%20pName%20+%20%22%20%3D%20%22%20+%20this.getPref%28pName%29%29%3B%0A%09%09%09%7D%29%3B%0A%09%09%7D%0A%09%09else%20%7B%0A%09%09%09//%20We%20may%20have%20%22user%20changed%22%20devtools.chrome.enabled%20%26%20Co%2C%0A%09%09%09//%20will%20reset%20for%20better%20indication%0A%09%09%09this.resetPref%28pName%29%3B%0A%09%09%09if%28pVal%20%21%3D%20this.getPref%28pName%29%29%0A%09%09%09%09this.setPref%28pName%2C%20pVal%29%3B%0A%09%09%7D%0A%0A%09%09this.hlPrefItem%28mi%2C%20pName%29%3B%0A%09%09if%28mi.hasAttribute%28%22acceltext%22%29%29%0A%09%09%09this.showPrefValue%28mi%2C%20pVal%29%3B%0A%09%09if%28%0A%09%09%09pName%20%3D%3D%20%22devtools.chrome.enabled%22%0A%09%09%09%7C%7C%20pName%20%3D%3D%20%22devtools.debugger.remote-enabled%22%0A%09%09%29%0A%09%09%09this.initMenu%28%29%3B%0A%09%09this.prefsChanged%20%3D%20true%3B%0A%09%7D%2C%0A%09showPrefValue%3A%20function%28mi%2C%20pVal%29%20%7B%0A%09%09var%20pStr%20%3D%20%22%22%20+%20pVal%3B%0A%09%09var%20pType%20%3D%20typeof%20pVal%3B%0A%09%09if%28pType%20%21%3D%20%22boolean%22%29%20%7B%0A%09%09%09if%28pType%20%3D%3D%20%22number%22%29%0A%09%09%09%09mi.setAttribute%28%22checked%22%2C%20pVal%20%21%3D%200%29%3B%0A%09%09%09pStr%20%3D%20pStr.substr%280%2C%2016%29%3B%0A%09%09%09//%20Simple%20trick%20to%20align%20%221%22%20and%20%22false%22%0A%09%09%09var%20pad%20%3D%20Math.round%28%285%20-%20pStr.length%29*1.6%29%3B%0A%09%09%09while%28pad--%20%3E%200%29%0A%09%09%09%09pStr%20+%3D%20%22%20%22%3B%0A%09%09%7D%0A%09%09mi.setAttribute%28%22acceltext%22%2C%20pStr%29%3B%0A%09%7D%2C%0A%09hlPrefItem%3A%20function%28node%2C%20pName%29%20%7B%0A%09%09node.style.fontWeight%20%3D%20this.prefHasUserValue%28pName%29%20%3F%20%22bold%22%20%3A%20%22%22%3B%0A%09%7D%2C%0A%0A%09get%20defaultBranch%28%29%20%7B%0A%09%09delete%20this.defaultBranch%3B%0A%09%09return%20this.defaultBranch%20%3D%20Services.prefs.getDefaultBranch%28%22%22%29%3B%0A%09%7D%2C%0A%09getPref%3A%20function%28pName%2C%20defaultVal%2C%20prefBranch%29%20%7B%0A%09%09var%20ps%20%3D%20prefBranch%20%7C%7C%20Services.prefs%3B%0A%09%09try%20%7B%20//%20getPrefType%28%29%20returns%20type%20of%20changed%20value%20for%20default%20branch%0A%09%09%09switch%28ps.getPrefType%28pName%29%29%20%7B%0A%09%09%09%09case%20ps.PREF_BOOL%3A%20%20%20return%20ps.getBoolPref%28pName%29%3B%0A%09%09%09%09case%20ps.PREF_INT%3A%20%20%20%20return%20ps.getIntPref%28pName%29%3B%0A%09%09%09%09case%20ps.PREF_STRING%3A%0A%09%09%09%09%09if%28%22getStringPref%22%20in%20ps%29%20//%20Firefox%2058+%0A%09%09%09%09%09%09return%20ps.getStringPref%28pName%29%3B%0A%09%09%09%09%09return%20ps.getComplexValue%28pName%2C%20Components.interfaces.nsISupportsString%29.data%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%09catch%28e%29%20%7B%0A%09%09%7D%0A%09%09return%20defaultVal%3B%0A%09%7D%2C%0A%09setPref%3A%20function%28pName%2C%20val%2C%20prefBranch%29%20%7B%0A%09%09var%20ps%20%3D%20prefBranch%20%7C%7C%20Services.prefs%3B%0A%09%09var%20pType%20%3D%20ps.getPrefType%28pName%29%3B%0A%09%09if%28pType%20%3D%3D%20ps.PREF_INVALID%29%0A%09%09%09pType%20%3D%20this.getValueType%28val%29%3B%0A%09%09switch%28pType%29%20%7B%0A%09%09%09case%20ps.PREF_BOOL%3A%20return%20ps.setBoolPref%28pName%2C%20val%29%3B%0A%09%09%09case%20ps.PREF_INT%3A%20%20return%20ps.setIntPref%28pName%2C%20val%29%3B%0A%09%09%09case%20ps.PREF_STRING%3A%0A%09%09%09default%3A%0A%09%09%09%09if%28%22setStringPref%22%20in%20ps%29%20//%20Firefox%2058+%0A%09%09%09%09%09return%20ps.setStringPref%28pName%2C%20val%29%3B%0A%09%09%09%09var%20ss%20%3D%20Components.interfaces.nsISupportsString%3B%0A%09%09%09%09var%20str%20%3D%20Components.classes%5B%[email protected]/supports-string%3B1%22%5D%0A%09%09%09%09%09.createInstance%28ss%29%3B%0A%09%09%09%09str.data%20%3D%20val%3B%0A%09%09%09%09return%20ps.setComplexValue%28pName%2C%20ss%2C%20str%29%3B%0A%09%09%7D%0A%09%7D%2C%0A%09getValueType%3A%20function%28val%29%20%7B%0A%09%09switch%28typeof%20val%29%20%7B%0A%09%09%09case%20%22boolean%22%3A%20return%20Services.prefs.PREF_BOOL%3B%0A%09%09%09case%20%22number%22%3A%20%20return%20Services.prefs.PREF_INT%3B%0A%09%09%7D%0A%09%09return%20Services.prefs.PREF_STRING%3B%0A%09%7D%2C%0A%09prefHasUserValue%3A%20function%28pName%29%20%7B%0A%09%09if%28%21this.prefHasDefaultValue%28pName%29%29%0A%09%09%09return%20%21%21this.getPref%28pName%29%3B%0A%09%09return%20Services.prefs.prefHasUserValue%28pName%29%3B%0A%09%7D%2C%0A%09prefHasDefaultValue%3A%20function%28pName%29%20%7B%0A%09%09return%20this.getPref%28pName%2C%20null%2C%20this.defaultBranch%29%20%21%3D%20null%3B%0A%09%7D%2C%0A%09resetPref%3A%20function%28pName%29%20%7B%0A%09%09if%28Services.prefs.prefHasUserValue%28pName%29%29%0A%09%09%09Services.prefs.clearUserPref%28pName%29%3B%0A%09%7D%2C%0A%0A%09prefsChanged%3A%20false%2C%0A%09_savePrefFileTimer%3A%20null%2C%0A%09savePrefFile%3A%20function%28force%29%20%7B%0A%09%09if%28this._savePrefFileTimer%20%7C%7C%20%21this.prefsChanged%20%26%26%20%21force%29%0A%09%09%09return%3B%0A%09%09var%20timer%20%3D%20this._savePrefFileTimer%20%3D%20Components.classes%5B%[email protected]/timer%3B1%22%5D%0A%09%09%09.createInstance%28Components.interfaces.nsITimer%29%3B%0A%09%09timer.init%28%7B%0A%09%09%09context%3A%20this%2C%0A%09%09%09observe%3A%20function%28%29%20%7B%0A%09%09%09%09this.context.prefsChanged%20%3D%20false%3B%0A%09%09%09%09this.context._savePrefFileTimer%20%3D%20null%3B%0A%09%09%09%09Services.prefs.savePrefFile%28null%29%3B%0A%09%09%09%09LOG%28%22savePrefFile%28%29%22%29%3B%0A%09%09%09%7D%0A%09%09%7D%2C%20500%2C%20timer.TYPE_ONE_SHOT%29%3B%0A%09%7D%2C%0A%0A%09handleEvent%3A%20function%28e%29%20%7B%0A%09%09if%28%0A%09%09%09e.type%20%3D%3D%20%22command%22%0A%09%09%09%26%26%20this.hasModifier%28e%29%0A%09%09%09%26%26%20e.target.hasAttribute%28%22cb_id%22%29%0A%09%09%29%20%7B%0A%09%09%09e.preventDefault%28%29%3B%0A%09%09%09e.stopPropagation%28%29%3B%0A%09%09%7D%0A%09%7D%0A%7D%3B%0Afunction%20ProgressIcon%28btn%29%20%7B%0A%09if%28%21%28btn%20instanceof%20XULElement%29%29%20%7B%0A%09%09this.loading%20%3D%20this.restore%20%3D%20function%28%29%20%7B%7D%3B%0A%09%09return%3B%0A%09%7D%0A%09var%20app%20%3D%20Services.appinfo.name%3B%0A%09var%20pv%20%3D%20parseFloat%28Services.appinfo.platformVersion%29%3B%0A%09if%28app%20%3D%3D%20%22SeaMonkey%22%29%0A%09%09this.imgConnecting%20%3D%20this.imgLoading%20%3D%20%22chrome%3A//communicator/skin/icons/loading.gif%22%3B%0A%09else%20if%28app%20%3D%3D%20%22Thunderbird%22%29%20%7B%0A%09%09this.imgConnecting%20%3D%20%22chrome%3A//messenger/skin/icons/connecting.png%22%3B%0A%09%09this.imgLoading%20%3D%20%22chrome%3A//messenger/skin/icons/loading.png%22%3B%0A%09%7D%0A%09else%20%7B%0A%09%09this.imgConnecting%20%3D%20app%20%3D%3D%20%22Firefox%22%20%26%26%20pv%20%3E%3D%2058%0A%09%09%09%3F%20%22chrome%3A//browser/skin/tabbrowser/tab-connecting.png%22%0A%09%09%09%3A%20%22chrome%3A//browser/skin/tabbrowser/connecting.png%22%3B%0A%09%09this.imgLoading%20%3D%20app%20%3D%3D%20%22Firefox%22%20%26%26%20pv%20%3E%3D%2048%0A%09%09%09%3F%20%22chrome%3A//global/skin/icons/loading.png%22%0A%09%09%09%3A%20%22chrome%3A//browser/skin/tabbrowser/loading.png%22%3B%0A%09%7D%0A%09var%20useAnimation%20%3D%20app%20%3D%3D%20%22Firefox%22%20%26%26%20pv%20%3E%3D%2032%20%26%26%20pv%20%3C%2048%3B%0A%09var%20btnIcon%20%3D%20btn.icon%0A%09%09%7C%7C%20btn.ownerDocument.getAnonymousElementByAttribute%28btn%2C%20%22class%22%2C%20%22toolbarbutton-icon%22%29%3B%0A%09var%20origIcon%20%3D%20btnIcon.src%3B%0A%09btnIcon.src%20%3D%20this.imgConnecting%3B%0A%09if%28useAnimation%29%20%7B%0A%09%09var%20cs%20%3D%20btnIcon.ownerDocument.defaultView.getComputedStyle%28btnIcon%2C%20null%29%3B%0A%09%09var%20s%20%3D%20btnIcon.style%3B%0A%09%09s.margin%20%3D%20%5Bcs.marginTop%2C%20cs.marginRight%2C%20cs.marginBottom%2C%20cs.marginLeft%5D.join%28%22%20%22%29%3B%0A%09%09s.padding%20%3D%20%5Bcs.paddingTop%2C%20cs.paddingRight%2C%20cs.paddingBottom%2C%20cs.paddingLeft%5D.join%28%22%20%22%29%3B%0A%09%09s.width%20%3D%20cs.width%3B%0A%09%09s.height%20%3D%20cs.height%3B%0A%09%09s.boxShadow%20%3D%20%22none%22%3B%0A%09%09s.borderColor%20%3D%20s.background%20%3D%20%22transparent%22%3B%0A%09%09btnIcon.setAttribute%28%22fadein%22%2C%20%22true%22%29%3B%0A%09%09btnIcon.setAttribute%28%22busy%22%2C%20%22true%22%29%3B%0A%09%09btnIcon.classList.add%28%22tab-throbber%22%29%3B%0A%09%09btnIcon._restore%20%3D%20function%28%29%20%7B%0A%09%09%09delete%20btnIcon._restore%3B%0A%09%09%09btnIcon.removeAttribute%28%22busy%22%29%3B%0A%09%09%09btnIcon.removeAttribute%28%22progress%22%29%3B%0A%09%09%09setTimeout%28function%28%29%20%7B%0A%09%09%09%09btnIcon.classList.remove%28%22tab-throbber%22%29%3B%0A%09%09%09%09btnIcon.removeAttribute%28%22style%22%29%3B%0A%09%09%09%09btnIcon.removeAttribute%28%22fadein%22%29%3B%0A%09%09%09%7D%2C%200%29%3B%0A%09%09%7D%3B%0A%09%7D%0A%09this.loading%20%3D%20function%28%29%20%7B%0A%09%09btnIcon.src%20%3D%20this.imgLoading%3B%0A%09%09if%28useAnimation%29%0A%09%09%09btnIcon.setAttribute%28%22progress%22%2C%20%22true%22%29%3B%0A%09%7D%3B%0A%09this.restore%20%3D%20function%28%29%20%7B%0A%09%09btnIcon.src%20%3D%20origIcon%3B%0A%09%09if%28useAnimation%29%0A%09%09%09btnIcon._restore%28%29%3B%0A%09%7D%3B%0A%7D%0A%0Avar%20mp%20%3D%20cmds.popup%20%3D%20this.appendChild%28parseXULFromString%28%27%5C%0A%09%3Cmenupopup%20xmlns%3D%22%27%20+%20XULNS%20+%20%27%22%5Cn%5C%0A%09%09onpopupshowing%3D%22if%28event.target%20%3D%3D%20this%29%20this.parentNode.commands.initMenu%28this%29%3B%22%5Cn%5C%0A%09%09onmousedown%3D%22this.parentNode.commands.setCloseMenu%28event%29%3B%22%5Cn%5C%0A%09%09onclick%3D%22this.parentNode.commands.setDefaultAction%28event%29%3B%22%3E%5Cn%5C%0A%09%09%3Cmenuitem%20cb_id%3D%22reopenWindow%22%5Cn%5C%0A%09%09%09oncommand%3D%22this.parentNode.parentNode.commands.reopenWindow%28%29%3B%22%5Cn%5C%0A%09%09%09cb_show%3D%22canReopenWindow%22%5Cn%5C%0A%09%09%09label%3D%22%27%20+%20_localize%28%22Reopen%20window%22%29%20+%20%27%22%5Cn%5C%0A%09%09%09accesskey%3D%22%27%20+%20_localize%28%22w%22%2C%20%22reopenWindowKey%22%29%20+%20%27%22%5Cn%5C%0A%09%09%09class%3D%22menuitem-iconic%22%5Cn%5C%0A%09%09%09image%3D%22%27%20+%20images.reopenWindow%20+%20%27%22%20/%3E%5Cn%5C%0A%09%09%3Cmenuitem%20cb_id%3D%22moveTabsToNewWindow%22%5Cn%5C%0A%09%09%09oncommand%3D%22this.parentNode.parentNode.commands.moveTabsToNewWindow%28%29%3B%22%5Cn%5C%0A%09%09%09cb_show%3D%22canMoveTabsToNewWindow%22%5Cn%5C%0A%09%09%09label%3D%22%27%20+%20_localize%28%22Move%20tabs%20to%20new%20window%22%29%20+%20%27%22%5Cn%5C%0A%09%09%09accesskey%3D%22%27%20+%20_localize%28%22t%22%2C%20%22moveTabsToNewWindowKey%22%29%20+%20%27%22%5Cn%5C%0A%09%09%09class%3D%22menuitem-iconic%22%5Cn%5C%0A%09%09%09image%3D%22%27%20+%20images.moveTabsToNewWindow%20+%20%27%22%20/%3E%5Cn%5C%0A%09%09%3Cmenuitem%20cb_id%3D%22restart%22%5Cn%5C%0A%09%09%09oncommand%3D%22this.parentNode.parentNode.commands.restart%28%29%3B%22%5Cn%5C%0A%09%09%09label%3D%22%27%20+%20_localize%28%22Restart%22%29%20+%20%27%22%5Cn%5C%0A%09%09%09accesskey%3D%22%27%20+%20_localize%28%22R%22%2C%20%22restartKey%22%29%20+%20%27%22%5Cn%5C%0A%09%09%09class%3D%22menuitem-iconic%22%5Cn%5C%0A%09%09%09image%3D%22%27%20+%20images.restart%20+%20%27%22%20/%3E%5Cn%5C%0A%09%09%3Cmenuitem%20cb_id%3D%22cleanAndRestart%22%5Cn%5C%0A%09%09%09oncommand%3D%22this.parentNode.parentNode.commands.cleanAndRestart%28%29%3B%22%5Cn%5C%0A%09%09%09label%3D%22%27%20+%20_localize%28%22Clean%20and%20restart%22%29%20+%20%27%22%5Cn%5C%0A%09%09%09accesskey%3D%22%27%20+%20_localize%28%22C%22%2C%20%22cleanAndRestartKey%22%29%20+%20%27%22%5Cn%5C%0A%09%09%09class%3D%22menuitem-iconic%22%5Cn%5C%0A%09%09%09image%3D%22%27%20+%20images.cleanAndRestart%20+%20%27%22%20/%3E%5Cn%5C%0A%09%09%3Cmenuitem%20cb_id%3D%22flushCaches%22%5Cn%5C%0A%09%09%09oncommand%3D%22this.parentNode.parentNode.commands.flushCaches%28%29%3B%22%5Cn%5C%0A%09%09%09label%3D%22%27%20+%20_localize%28%22Flush%20caches%22%29%20+%20%27%22%5Cn%5C%0A%09%09%09accesskey%3D%22%27%20+%20_localize%28%22F%22%2C%20%22flushCachesKey%22%29%20+%20%27%22%5Cn%5C%0A%09%09%09class%3D%22menuitem-iconic%22%5Cn%5C%0A%09%09%09image%3D%22%27%20+%20images.flushCaches%20+%20%27%22%20/%3E%5Cn%5C%0A%09%09%3Cmenuitem%20cb_id%3D%22switchLocale%22%5Cn%5C%0A%09%09%09oncommand%3D%22this.parentNode.parentNode.commands.switchLocale%28%29%3B%22%5Cn%5C%0A%09%09%09onclick%3D%22if%28event.button%20%3D%3D%202%29%20%7B%20this.parentNode.parentNode.commands.switchLocaleCustom%28%29%3B%20%7D%22%5Cn%5C%0A%09%09%09oncontextmenu%3D%22return%20false%3B%22%5Cn%5C%0A%09%09%09accesskey%3D%22%27%20+%20_localize%28%22S%22%2C%20%22switchLocaleKey%22%29%20+%20%27%22%5Cn%5C%0A%09%09%09class%3D%22menuitem-iconic%22%5Cn%5C%0A%09%09%09image%3D%22%27%20+%20images.switchLocale%20+%20%27%22%20/%3E%5Cn%5C%0A%09%09%3Cmenuitem%20cb_id%3D%22saveSessionAndExit%22%5Cn%5C%0A%09%09%09oncommand%3D%22this.parentNode.parentNode.commands.saveSessionAndExit%28%29%3B%22%5Cn%5C%0A%09%09%09label%3D%22%27%20+%20_localize%28%22Save%20session%20and%20exit%22%29%20+%20%27%22%5Cn%5C%0A%09%09%09accesskey%3D%22%27%20+%20_localize%28%22x%22%2C%20%22saveSessionAndExitKey%22%29%20+%20%27%22%5Cn%5C%0A%09%09%09class%3D%22menuitem-iconic%22%5Cn%5C%0A%09%09%09image%3D%22%27%20+%20images.saveSessionAndExit%20+%20%27%22%5Cn%5C%0A%09%09%09cb_show%3D%22canSaveSessionAndExit%22%20/%3E%5Cn%5C%0A%09%09%3Cmenuseparator%20/%3E%5Cn%5C%0A%09%09%3Cmenuitem%20cb_id%3D%22errorConsole%22%5Cn%5C%0A%09%09%09oncommand%3D%22this.parentNode.parentNode.commands.openErrorConsole%28%29%3B%22%5Cn%5C%0A%09%09%09key%3D%22key_errorConsole%22%5Cn%5C%0A%09%09%09label%3D%22%27%20+%20_localize%28%22Error%20console%22%29%20+%20%27%22%5Cn%5C%0A%09%09%09accesskey%3D%22%27%20+%20_localize%28%22E%22%2C%20%22errorConsoleKey%22%29%20+%20%27%22%5Cn%5C%0A%09%09%09class%3D%22menuitem-iconic%22%5Cn%5C%0A%09%09%09image%3D%22%27%20+%20images.errorConsole%20+%20%27%22%5Cn%5C%0A%09%09%09cb_show%3D%22hasErrorConsole%22%20/%3E%5Cn%5C%0A%09%09%3Cmenuitem%20cb_id%3D%22browserConsole%22%5Cn%5C%0A%09%09%09oncommand%3D%22this.parentNode.parentNode.commands.openBrowserConsole%28%29%3B%22%5Cn%5C%0A%09%09%09key%3D%22key_browserConsole%22%5Cn%5C%0A%09%09%09label%3D%22%27%20+%20_localize%28%22Browser%20console%22%29%20+%20%27%22%5Cn%5C%0A%09%09%09accesskey%3D%22%27%20+%20_localize%28%22B%22%2C%20%22browserConsoleKey%22%29%20+%20%27%22%5Cn%5C%0A%09%09%09class%3D%22menuitem-iconic%22%5Cn%5C%0A%09%09%09image%3D%22%27%20+%20images.browserConsole%20+%20%27%22%5Cn%5C%0A%09%09%09cb_show%3D%22canOpenBrowserConsole%22%20/%3E%5Cn%5C%0A%09%09%3Cmenuitem%20cb_id%3D%22attrsInspector%22%5Cn%5C%0A%09%09%09oncommand%3D%22this.parentNode.parentNode.commands.attrsInspector%28event%29%3B%22%5Cn%5C%0A%09%09%09label%3D%22%27%20+%20_localize%28%22Attributes%20Inspector%22%29%20+%20%27%22%5Cn%5C%0A%09%09%09accesskey%3D%22%27%20+%20_localize%28%22A%22%2C%20%22attrsInspectorKey%22%29%20+%20%27%22%5Cn%5C%0A%09%09%09class%3D%22menuitem-iconic%22%5Cn%5C%0A%09%09%09image%3D%22%27%20+%20images.attrsInspector%20+%20%27%22%20/%3E%5Cn%5C%0A%09%09%3Cmenuitem%20cb_id%3D%22browserToolbox%22%5Cn%5C%0A%09%09%09oncommand%3D%22this.parentNode.parentNode.commands.openBrowserToolbox%28%29%3B%22%5Cn%5C%0A%09%09%09key%3D%22key_browserToolbox%22%5Cn%5C%0A%09%09%09label%3D%22%27%20+%20_localize%28%22Browser%20Toolbox%22%29%20+%20%27%22%5Cn%5C%0A%09%09%09accesskey%3D%22%27%20+%20_localize%28%22e%22%2C%20%22browserToolboxKey%22%29%20+%20%27%22%5Cn%5C%0A%09%09%09class%3D%22menuitem-iconic%22%5Cn%5C%0A%09%09%09image%3D%22%27%20+%20%28cmds.hasBrowserToolbox%20%3F%20images.browserToolbox%20%3A%20%22%22%29%20+%20%27%22%5Cn%5C%0A%09%09%09cb_show%3D%22hasBrowserToolbox%22%20/%3E%5Cn%5C%0A%09%09%3Cmenuitem%20cb_id%3D%22scratchpad%22%5Cn%5C%0A%09%09%09oncommand%3D%22this.parentNode.parentNode.commands.openScratchpad%28%29%3B%22%5Cn%5C%0A%09%09%09label%3D%22%27%20+%20_localize%28%22Scratchpad%22%29%20+%20%27%22%5Cn%5C%0A%09%09%09accesskey%3D%22%27%20+%20_localize%28%22p%22%2C%20%22scratchpadKey%22%29%20+%20%27%22%5Cn%5C%0A%09%09%09class%3D%22menuitem-iconic%22%5Cn%5C%0A%09%09%09image%3D%22%27%20+%20images.scratchpad%20+%20%27%22%5Cn%5C%0A%09%09%09cb_show%3D%22hasScratchpad%22%20/%3E%5Cn%5C%0A%09%09%3Cmenuitem%20cb_id%3D%22eyedropper%22%5Cn%5C%0A%09%09%09oncommand%3D%22this.parentNode.parentNode.commands.openEyedropper%28%29%3B%22%5Cn%5C%0A%09%09%09label%3D%22%27%20+%20_localize%28%22Grab%20a%20color%20from%20the%20page%22%29%20+%20%27%22%5Cn%5C%0A%09%09%09accesskey%3D%22%27%20+%20_localize%28%22G%22%2C%20%22eyedropperKey%22%29%20+%20%27%22%5Cn%5C%0A%09%09%09class%3D%22menuitem-iconic%22%5Cn%5C%0A%09%09%09image%3D%22%27%20+%20images.eyedropper%20+%20%27%22%5Cn%5C%0A%09%09%09cb_show%3D%22hasEyedropper%22%20/%3E%5Cn%5C%0A%09%09%3Cmenuseparator%20/%3E%5Cn%5C%0A%09%09%3Cmenu%5Cn%5C%0A%09%09%09label%3D%22%27%20+%20_localize%28%22Options%22%29%20+%20%27%22%5Cn%5C%0A%09%09%09accesskey%3D%22%27%20+%20_localize%28%22O%22%2C%20%22optionsKey%22%29%20+%20%27%22%3E%5Cn%5C%0A%09%09%09%3Cmenupopup%5Cn%5C%0A%09%09%09%09onpopupshowing%3D%22if%28event.target%20%3D%3D%20this%29%20this.parentNode.parentNode.parentNode.commands.initPrefsMenu%28this%29%3B%22%5Cn%5C%0A%09%09%09%09onpopuphidden%3D%22if%28event.target%20%3D%3D%20this%29%20this.parentNode.parentNode.parentNode.commands.savePrefFile%28%29%3B%22%5Cn%5C%0A%09%09%09%09oncommand%3D%22this.parentNode.parentNode.parentNode.commands.doPrefsMenuCommand%28event.target%29%3B%22%5Cn%5C%0A%09%09%09%09onclick%3D%22if%28event.button%20%3D%3D%201%29%20closeMenus%28this%29%3B%22%3E%5Cn%5C%0A%09%09%09%09%3Cmenuitem%20cb_pref%3D%22javascript.options.showInConsole%22%5Cn%5C%0A%09%09%09%09%09type%3D%22checkbox%22%5Cn%5C%0A%09%09%09%09%09label%3D%22%27%20+%20_localize%28%22Show%20errors%20in%20chrome%20files%22%29%20+%20%27%22%20/%3E%5Cn%5C%0A%09%09%09%09%3Cmenuitem%20cb_pref%3D%22javascript.options.strict%22%5Cn%5C%0A%09%09%09%09%09type%3D%22checkbox%22%5Cn%5C%0A%09%09%09%09%09label%3D%22%27%20+%20_localize%28%22Show%20strict%20warnings%22%29%20+%20%27%22%20/%3E%5Cn%5C%0A%09%09%09%09%3Cmenuitem%20cb_pref%3D%22javascript.options.strict.debug%22%5Cn%5C%0A%09%09%09%09%09type%3D%22checkbox%22%5Cn%5C%0A%09%09%09%09%09label%3D%22%27%20+%20_localize%28%22Show%20strict%20warnings%20in%20debug%20builds%22%29%20+%20%27%22%5Cn%5C%0A%09%09%09%09%09cb_show%3D%22cmds.isDebugBuild%22%20/%3E%5Cn%5C%0A%09%09%09%09%3Cmenuitem%20cb_pref%3D%22javascript.options.asyncstack%22%5Cn%5C%0A%09%09%09%09%09type%3D%22checkbox%22%5Cn%5C%0A%09%09%09%09%09label%3D%22%27%20+%20_localize%28%22Show%20stack%20for%20async%20calls%22%29%20+%20%27%22%5Cn%5C%0A%09%09%09%09%09hidden%3D%22%27%20+%20%21cmds.prefHasDefaultValue%28%22javascript.options.asyncstack%22%29%20+%20%27%22%20/%3E%5Cn%5C%0A%09%09%09%09%3Cmenuitem%20cb_pref%3D%22dom.report_all_js_exceptions%22%5Cn%5C%0A%09%09%09%09%09type%3D%22checkbox%22%5Cn%5C%0A%09%09%09%09%09label%3D%22%27%20+%20_localize%28%22Show%20all%20exceptions%22%29%20+%20%27%22%5Cn%5C%0A%09%09%09%09%09hidden%3D%22%27%20+%20%28cmds.platformVersion%20%3C%201.9%29%20+%20%27%22%20/%3E%5Cn%5C%0A%09%09%09%09%3Cmenuitem%20cb_pref%3D%22extensions.logging.enabled%22%5Cn%5C%0A%09%09%09%09%09type%3D%22checkbox%22%5Cn%5C%0A%09%09%09%09%09label%3D%22%27%20+%20_localize%28%22Show%20information%20about%20extensions%20update%22%29%20+%20%27%22%20/%3E%5Cn%5C%0A%09%09%09%09%3Cmenuseparator%20/%3E%5Cn%5C%0A%09%09%09%09%3Cmenuitem%20cb_pref%3D%22browser.dom.window.dump.enabled%22%5Cn%5C%0A%09%09%09%09%09type%3D%22checkbox%22%5Cn%5C%0A%09%09%09%09%09label%3D%22%27%20+%20_localize%28%22Enable%20window.dump%28%29%22%29%20+%20%27%22%20/%3E%5Cn%5C%0A%09%09%09%09%3Cmenuitem%20cb_pref%3D%22nglayout.debug.disable_xul_cache%22%5Cn%5C%0A%09%09%09%09%09type%3D%22checkbox%22%5Cn%5C%0A%09%09%09%09%09label%3D%22%27%20+%20_localize%28%22Disable%20XUL%20cache%22%29%20+%20%27%22%20/%3E%5Cn%5C%0A%09%09%09%09%3Cmenuitem%20cb_pref%3D%22dom.allow_XUL_XBL_for_file%22%5Cn%5C%0A%09%09%09%09%09type%3D%22checkbox%22%5Cn%5C%0A%09%09%09%09%09label%3D%22%27%20+%20_localize%28%22Allow%20XUL%20and%20XBL%20for%20file%3A//%22%29%20+%20%27%22%5Cn%5C%0A%09%09%09%09%09hidden%3D%22%27%20+%20%28cmds.platformVersion%20%3C%202%29%20+%20%27%22%20/%3E%5Cn%5C%0A%09%09%09%09%3Cmenuitem%20cb_pref%3D%22security.data_uri.unique_opaque_origin%22%5Cn%5C%0A%09%09%09%09%09type%3D%22checkbox%22%5Cn%5C%0A%09%09%09%09%09label%3D%22%27%20+%20_localize%28%22Don%27t%20inherit%20privileged%20context%20for%20data%3A%22%29%20+%20%27%22%5Cn%5C%0A%09%09%09%09%09hidden%3D%22%27%20+%20%21cmds.prefHasDefaultValue%28%22security.data_uri.unique_opaque_origin%22%29%20+%20%27%22%20/%3E%5Cn%5C%0A%09%09%09%09%3Cmenuitem%20cb_pref%3D%22security.data_uri.block_toplevel_data_uri_navigations%22%5Cn%5C%0A%09%09%09%09%09type%3D%22checkbox%22%5Cn%5C%0A%09%09%09%09%09label%3D%22%27%20+%20_localize%28%22Block%20top%20level%20data%3A%20URI%20navigations%22%29%20+%20%27%22%5Cn%5C%0A%09%09%09%09%09hidden%3D%22%27%20+%20%21cmds.prefHasDefaultValue%28%22security.data_uri.block_toplevel_data_uri_navigations%22%29%20+%20%27%22%20/%3E%5Cn%5C%0A%09%09%09%09%3Cmenuitem%20cb_pref%3D%22devtools.chrome.enabled%22%5Cn%5C%0A%09%09%09%09%09type%3D%22checkbox%22%5Cn%5C%0A%09%09%09%09%09label%3D%22%27%20+%20_localize%28%22Enable%20developer%20tools%20for%20chrome%22%29%20+%20%27%22%5Cn%5C%0A%09%09%09%09%09hidden%3D%22%27%20+%20%21cmds.prefHasDefaultValue%28%22devtools.chrome.enabled%22%29%20+%20%27%22%20/%3E%5Cn%5C%0A%09%09%09%09%3Cmenuitem%20cb_pref%3D%22devtools.debugger.remote-enabled%22%5Cn%5C%0A%09%09%09%09%09type%3D%22checkbox%22%5Cn%5C%0A%09%09%09%09%09label%3D%22%27%20+%20_localize%28%22Enable%20remove%20debugger%20%28and%20Browser%20Toolbox%29%22%29%20+%20%27%22%5Cn%5C%0A%09%09%09%09%09hidden%3D%22%27%20+%20%21cmds.prefHasDefaultValue%28%22devtools.debugger.remote-enabled%22%29%20+%20%27%22%20/%3E%5Cn%5C%0A%09%09%09%09%3Cmenuitem%20cb_pref%3D%22extensions.autoDisableScopes%22%5Cn%5C%0A%09%09%09%09%09tooltiptext%3D%22extensions.autoDisableScopes%22%5Cn%5C%0A%09%09%09%09%09type%3D%22checkbox%22%5Cn%5C%0A%09%09%09%09%09label%3D%22%27%20+%20_localize%28%22Silently%20install%20extensions%20from%20browser%20profile%22%29%20+%20%27%22%5Cn%5C%0A%09%09%09%09%09hidden%3D%22%27%20+%20%21cmds.prefHasDefaultValue%28%22extensions.autoDisableScopes%22%29%20+%20%27%22%20/%3E%5Cn%5C%0A%09%09%09%09%3Cmenuseparator%20cb_show%3D%22canDisableE4X%22%20/%3E%5Cn%5C%0A%09%09%09%09%3Cmenuitem%20cb_pref%3D%22javascript.options.xml.chrome%22%5Cn%5C%0A%09%09%09%09%09type%3D%22checkbox%22%5Cn%5C%0A%09%09%09%09%09label%3D%22%27%20+%20_localize%28%22Enable%20E4X%20for%20chrome%22%29%20+%20%27%22%5Cn%5C%0A%09%09%09%09%09cb_show%3D%22canDisableE4X%22%20/%3E%5Cn%5C%0A%09%09%09%09%3Cmenuitem%20cb_pref%3D%22javascript.options.xml.content%22%5Cn%5C%0A%09%09%09%09%09type%3D%22checkbox%22%5Cn%5C%0A%09%09%09%09%09label%3D%22%27%20+%20_localize%28%22Enable%20E4X%20for%20content%22%29%20+%20%27%22%5Cn%5C%0A%09%09%09%09%09cb_show%3D%22canDisableE4X%22%20/%3E%5Cn%5C%0A%09%09%09%09%3Cmenuseparator%20cb_show%3D%22hasMultiProcessMode%22%20/%3E%5Cn%5C%0A%09%09%09%09%3Cmenuitem%20cb_pref%3D%22browser.tabs.remote.force-enable%22%5Cn%5C%0A%09%09%09%09%09type%3D%22checkbox%22%5Cn%5C%0A%09%09%09%09%09label%3D%22%27%20+%20_localize%28%22Enable%20multi-process%20mode%22%29%20+%20%27%22%5Cn%5C%0A%09%09%09%09%09oncommand%3D%22this.parentNode.parentNode.parentNode.parentNode.commands.ensureMultiProcessMode%28this.getAttribute%28%5C%27checked%5C%27%29%20%3D%3D%20%5C%27true%5C%27%29%3B%22%5Cn%5C%0A%09%09%09%09%09cb_show%3D%22hasMultiProcessMode%22%20/%3E%5Cn%5C%0A%09%09%09%09%3Cmenuseparator%20cb_id%3D%22debugPrefsSeparator%22%20hidden%3D%22true%22%20/%3E%5Cn%5C%0A%09%09%09%09%3Cmenu%20cb_id%3D%22debugPrefsExtMenu%22%20hidden%3D%22true%22%5Cn%5C%0A%09%09%09%09%09label%3D%22%27%20+%20_localize%28%22Debug%20extensions%22%29%20+%20%27%22%5Cn%5C%0A%09%09%09%09%09accesskey%3D%22%27%20+%20_localize%28%22e%22%2C%20%22debugExtKey%22%29%20+%20%27%22%3E%5Cn%5C%0A%09%09%09%09%09%3Cmenupopup%20cb_id%3D%22debugPrefsExtPopup%22%20/%3E%5Cn%5C%0A%09%09%09%09%3C/menu%3E%5Cn%5C%0A%09%09%09%09%3Cmenu%20cb_id%3D%22debugPrefsAppMenu%22%20hidden%3D%22true%22%5Cn%5C%0A%09%09%09%09%09label%3D%22%27%20+%20_localize%28%22Debug%20application%22%29%20+%20%27%22%5Cn%5C%0A%09%09%09%09%09accesskey%3D%22%27%20+%20_localize%28%22a%22%2C%20%22debugAppKey%22%29%20+%20%27%22%3E%5Cn%5C%0A%09%09%09%09%09%3Cmenupopup%20cb_id%3D%22debugPrefsAppPopup%22%20/%3E%5Cn%5C%0A%09%09%09%09%3C/menu%3E%5Cn%5C%0A%09%09%09%3C/menupopup%3E%5Cn%5C%0A%09%09%3C/menu%3E%5C%0A%09%3C/menupopup%3E%27%0A%29%29%3B%0A%0Aif%28mp.nodeName%20%3D%3D%20%22parsererror%22%29%0A%09Components.utils.reportError%28mp.textContent%29%3B%0A%0Avar%20tb%20%3D%20this.parentNode%3B%0Aif%28tb.getAttribute%28%22orient%22%29%20%3D%3D%20%22vertical%22%29%20%7B%0A%09//%20https%3A//addons.mozilla.org/firefox/addon/vertical-toolbar/%0A%09var%20isRight%20%3D%20tb.parentNode.getAttribute%28%22placement%22%29%20%3D%3D%20%22right%22%3B%0A%09mp.setAttribute%28%22position%22%2C%20isRight%20%3F%20%22start_before%22%20%3A%20%22end_before%22%29%3B%0A%7D%0A%0Aif%28%21cmds.onlyPopup%29%0A%09mp.addEventListener%28%22command%22%2C%20cmds%2C%20true%29%3B%0A%0Aconst%20keyCbId%20%3D%20%22custombuttons-extDevTools-key%22%3B%0Aif%28%21cmds.onlyPopup%29%20for%28var%20kId%20in%20options.hotkeys%29%20if%28options.hotkeys.hasOwnProperty%28kId%29%29%20%7B%0A%09var%20cmd%20%3D%20options.hotkeys%5BkId%5D%3B%0A%09var%20key%20%3D%20typeof%20cmd%20%3D%3D%20%22string%22%20%3F%20cmd%20%3A%20cmd.key%3B%0A%09if%28%21key%29%0A%09%09continue%3B%0A%09if%28cmd.hasOwnProperty%28%22has%22%29%20%26%26%20%21cmds%5Bcmd.has%5D%29%0A%09%09continue%3B%0A%09var%20keyElt%3B%0A%09if%28cmd.hasOwnProperty%28%22override%22%29%29%20%7B%0A%09%09cmd.override.split%28/%2C%5Cs*/%29.forEach%28function%28id%29%20%7B%0A%09%09%09var%20keyElt%20%3D%20document.getElementById%28id%29%3B%0A%09%09%09if%28%21keyElt%29%0A%09%09%09%09return%3B%0A%09%09%09//%20Break%20old%20key%0A%09%09%09keyElt.setAttribute%28%22__disabledByCBExtDevTools%22%2C%20%22true%22%29%3B%0A%09%09%09keyElt.setAttribute%28%22key%22%2C%20%22%5Cxa0%22%29%3B%20//%20%26nbsp%3B%0A%09%09%09keyElt.removeAttribute%28%22keycode%22%29%3B%0A%09%09%09keyElt.removeAttribute%28%22modifiers%22%29%3B%0A%09%09%09keyElt.removeAttribute%28%22keytext%22%29%3B%0A%09%09%7D%29%3B%0A%09%7D%0A%09if%28%21keyset%29%20%7B%0A%09%09var%20keyset%20%3D%20document.getElementById%28%22mainKeyset%22%29%0A%09%09%09%7C%7C%20document.getElementById%28%22mailKeys%22%29%0A%09%09%09%7C%7C%20document.getElementsByTagName%28%22keyset%22%29%5B0%5D%3B%0A%09%7D%0A%09keyElt%20%3D%20keyset.appendChild%28document.createElementNS%28XULNS%2C%20%22key%22%29%29%3B%0A%09var%20keyId%20%3D%20keyElt.id%20%3D%20keyCbId%20+%20%22-%22%20+%20kId%3B%0A%09keyElt.setAttribute%28%22cb_id%22%2C%20keyCbId%29%3B%0A%0A%09var%20tokens%20%3D%20key.split%28%22%20%22%29%3B%0A%09key%20%3D%20tokens.pop%28%29%20%7C%7C%20%22%20%22%3B%0A%09var%20modifiers%20%3D%20tokens.join%28%22%2C%22%29%3B%0A%09keyElt.setAttribute%28%0A%09%09key.substr%280%2C%203%29%20%3D%3D%20%22VK_%22%20%3F%20%22keycode%22%20%3A%20%22key%22%2C%0A%09%09key%0A%09%29%3B%0A%09keyElt.setAttribute%28%22modifiers%22%2C%20modifiers%29%3B%0A%09keyElt._cbCommands%20%3D%20cmds%3B%0A%09keyElt.setAttribute%28%22oncommand%22%2C%20%22this._cbCommands.%22%20+%20kId%20+%20%22%28%29%3B%22%29%3B%0A%09var%20mi%20%3D%20this.getElementsByAttribute%28%22cb_id%22%2C%20cmds.cmdToId%28kId%29%29%5B0%5D%3B%0A%09if%28mi%20%26%26%20%28%21mi.hasAttribute%28%22key%22%29%20%7C%7C%20%21document.getElementById%28mi.getAttribute%28%22key%22%29%29%29%29%0A%09%09mi.setAttribute%28%22key%22%2C%20keyId%29%3B%0A%7D%0A%0Aif%28%21cmds.onlyPopup%29%20%7B%0A%09cmds.setDefaultActionIcon%28%29%3B%0A%09cmds.setDefaultActionTip%28500%29%3B%0A%7D%0Aif%28options.restoreErrorConsole%20%26%26%20%21cmds.onlyPopup%29%0A%09cmds.initErrorConsoleRestoring%28%29%3B%0A%0Afunction%20parseXULFromString%28xul%29%20%7B%0A%09xul%20%3D%20xul.replace%28/%3E%5Cs+%3C/g%2C%20%22%3E%3C%22%29%3B%0A%09try%20%7B%0A%09%09var%20parser%20%3D%20new%20DOMParser%28%29%3B%0A%09%09parser.forceEnableXULXBL%20%26%26%20parser.forceEnableXULXBL%28%29%3B%0A%09%09var%20parse%20%3D%20parser.parseFromSafeString%20%7C%7C%20parser.parseFromString%3B%0A%09%09return%20parse.call%28parser%2C%20xul%2C%20%22application/xml%22%29.documentElement%3B%0A%09%7D%0A%09catch%28e%29%20%7B%0A%09%09//%20See%20http%3A//custombuttons.sourceforge.net/forum/viewtopic.php%3Ff%3D5%26t%3D3720%0A%09%09//%20+%20https%3A//forum.mozilla-russia.org/viewtopic.php%3Fpid%3D732243%23p732243%0A%09%09var%20dummy%20%3D%20document.createElement%28%22dummy%22%29%3B%0A%09%09dummy.innerHTML%20%3D%20xul.trimLeft%28%29%3B%0A%09%09return%20dummy.firstChild%3B%0A%09%7D%0A%7D%0A%0Athis.attrsInspector%20%3D%20function%28event%29%20%7B%0A//%3D%3D%3D%20Attributes%20Inspector%20begin%0A//%20http%3A//infocatcher.ucoz.net/js/cb/attrsInspector.js%0A//%20https%3A//forum.mozilla-russia.org/viewtopic.php%3Fid%3D56041%0A//%20https%3A//github.com/Infocatcher/Custom_Buttons/tree/master/Attributes_Inspector%0A%0A//%20%28c%29%20Infocatcher%202010-2024%0A//%20version%200.6.5pre4%20-%202024-02-27%0A%0A//%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A//%20Attributes%20Inspector%20button%20for%20Custom%20Buttons%0A//%20%28for%20%22code%22%20section%29%0A//%20Also%20the%20code%20can%20be%20used%20from%20main%20window%20context%20%28as%20Mouse%20Gestures%20code%2C%20for%20example%29%0A%0A//%20Usage%3A%0A//%20%20%20Use%20middle-click%20or%20Ctrl%20+%20left-click%20%28or%20press%20Ctrl+I%29%20to%20inspect%20node%20in%20DOM%20Inspector%0A//%20%20%20%28additionally%20hold%20Shift%20key%20to%20enable%20popup%20locker%29%0A//%20%20%20Hold%20Shift%20key%20to%20show%20and%20don%27t%20hide%20tooltips%20and%20popups%0A//%20Hotkeys%3A%0A//%20%20%20Escape%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20-%20cancel%20or%20disable%20popup%20locker%0A//%20%20%20Ctrl+Up%2C%20Ctrl+Down%20%20%20%20-%20navigate%20to%20parent/child%20node%0A//%20%20%20Ctrl+Left%2C%20Ctrl+Right%20-%20navigate%20to%20previous/next%20sibling%20node%0A//%20%20%20Ctrl+Shift+C%20%20%20%20%20%20%20%20%20%20-%20copy%20tooltip%27s%20contents%0A//%20%20%20Ctrl+Shift+W%20%20%20%20%20%20%20%20%20%20-%20inspect%20node%27s%20window%20object%20in%20DOM%20Inspector%0A%0A//%20For%20more%20developer%20tools%20see%20Extensions%20Developer%20Tools%20button%3A%0A//%20%20%20http%3A//infocatcher.ucoz.net/js/cb/extDevTools.js%0A//%20%20%20https%3A//forum.mozilla-russia.org/viewtopic.php%3Fid%3D57296%0A//%20%20%20https%3A//github.com/Infocatcher/Custom_Buttons/tree/master/Extensions_Developer_Tools%0A%0A//%20Icon%3A%20http%3A//www.iconsearch.ru/detailed/278/2/%0A//%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A%0A%28function%28%29%20%7B%0Avar%20_highlight%20%3D%20true%3B%20//%20Hightlight%20current%20node%0Avar%20_highlightUsingFlasher%20%3D%20false%3B%20//%20Don%27t%20modify%20DOM%2C%20but%20has%20some%20side%20effects%20%28and%20slower%29%0A//%20Note%3A%20inIFlasher%20works%20in%20Firefox%204+%20only%20with%20disabled%20hardware%20acceleration%21%0A//%20See%20https%3A//bugzilla.mozilla.org/show_bug.cgi%3Fid%3D368608%20and%20https%3A//bugzilla.mozilla.org/show_bug.cgi%3Fid%3D594299%0A//%20Also%20inIFlasher%20not%20available%20in%20Firefox%2033+%2C%20see%20https%3A//bugzilla.mozilla.org/show_bug.cgi%3Fid%3D1018324%0Avar%20_borderColor%20%3D%20%22red%22%3B%20//%20Any%20valid%20CSS%20color%0Avar%20_borderWidth%20%3D%201%3B%20//%20Border%20width%20in%20pixels%0Avar%20_borderStyle%20%3D%20%22solid%22%3B%20//%20border-style%20property%20in%20CSS%0A//%20Note%3A%20doesn%27t%20work%20with%20_highlightUsingFlasher%20%3D%20true%0A%0A//%20Highlight%20added/removed/changed%20attributes%2C%20any%20valid%20CSS%20color%3A%0Avar%20_addedColor%20%3D%20%22-moz-hyperlinktext%22%3B%0Avar%20_removedColor%20%3D%20%22grayText%22%3B%0Avar%20_changedColor%20%3D%20%22-moz-visitedhyperlinktext%22%3B%0A%0Avar%20_maxTooltipWidth%20%3D%20600%3B%20//%20Max%20width%20in%20px%2C%200%20to%20not%20force%20limits%0A%0Avar%20_excludeChildTextNodes%20%3D%201%3B%0A//%200%20-%20don%27t%20exclude%0A//%201%20-%20exclude%2C%20if%20found%20element%20node%0A//%202%20-%20always%20exclude%0Avar%20_excludeSiblingTextNodes%20%3D%20false%3B%0A%0Avar%20_useCycleNavigation%20%3D%20false%3B%0A//%20Use%20cycle%20navigation%20for%20sibling%20nodes%3A%20first%20-%3E%20second%20-%3E%20...%20-%3E%20last%20--%3E%20first%0A%0Avar%20_preferNotAnonymousChildNodes%20%3D%20false%3B%0A//%20true%20%20-%20use%20not%20anonymous%20child%20nodes%2C%20if%20any%20%28as%20in%20version%200.6.1pre%20and%20older%29%0A//%20false%20-%20always%20try%20get%20real%20child%20nodes%20%28may%20work%20wrong%20in%20Gecko%20%3C%207.0%29%0A%0Avar%20_forbidTooltips%20%3D%20true%3B%20//%20Prevent%20all%20other%20tooltips%0Avar%20_popupLocker%20%3D%201%3B%0A//%20Lock%20all%20popups%20in%20window%20while%20DOM%20Inspector%20is%20opened%20%28or%20until%20Escape%20was%20not%20pressed%29%0A//%20Values%3A%200%20-%20disable%2C%201%20-%20only%20if%20Shift%20pressed%2C%202%20-%20always%20enable%0Avar%20_showNamespaceURI%20%3D%202%3B%20//%200%20-%20don%27t%20show%2C%201%20-%20show%20as%20is%2C%202%20-%20show%20pretty%20name%20instead%20of%20URI%0Avar%20_showMargins%20%3D%203%3B%20//%200%20-%20don%27t%20show%2C%201%20-%20only%20if%20Shift%20pressed%2C%202%20-%20only%20if%20Shift%20pressed%20+%20auto%20update%2C%203%20-%20always%20show%0Avar%20_showFullTree%20%3D%202%3B%20//%200%20-%20current%20frame%2C%201%20-%20top%20frame%2C%202%20-%20topmost%20frame%0A//%20Note%3A%20%22View%20-%20Show%20Anonymous%20Content%22%20should%20be%20checked%20to%20inspect%20content%20documents%20with%20%22_showFullTree%20%3D%202%22%0Avar%20_nodePosition%20%3D%200.55%3B%20//%20Position%20of%20selected%20node%20in%20DOM%20Inspector%27s%20tree%2C%200..1%20%28-1%20-%20don%27t%20change%29%0A%0A//%20Show%20debug%20messages%20in%20error%20console%3A%0A//var%20_debug%20%3D%20false%3B%0Avar%20_debug%20%3D%20typeof%20event%20%3D%3D%20%22object%22%20%26%26%20event%20instanceof%20Event%0A%09%3F%20event.shiftKey%20%7C%7C%20event.ctrlKey%20%7C%7C%20event.altKey%20%7C%7C%20event.metaKey%0A%09%3A%20false%3B%0A%0Afunction%20_log%28s%29%20%7B%0A%09if%28%21_debug%29%0A%09%09return%20_log%20%3D%20function%28s%29%20%7B%7D%3B%0A%09var%20cs%20%3D%20Components.classes%5B%[email protected]/consoleservice%3B1%22%5D%0A%09%09.getService%28Components.interfaces.nsIConsoleService%29%3B%0A%09function%20ts%28%29%20%7B%0A%09%09var%20d%20%3D%20new%20Date%28%29%3B%0A%09%09var%20ms%20%3D%20d.getMilliseconds%28%29%3B%0A%09%09return%20d.toTimeString%28%29.replace%28/%5E.*%5Cd+%3A%28%5Cd+%3A%5Cd+%29.*%24/%2C%20%22%241%22%29%20+%20%22%3A%22%20+%20%22000%22.substr%28%28%22%22%20+%20ms%29.length%29%20+%20ms%20+%20%22%20%22%3B%0A%09%7D%0A%09_log%20%3D%20function%28s%29%20%7B%0A%09%09cs.logStringMessage%28%22%5BAttributes%20Inspector%5D%3A%20%22%20+%20ts%28%29%20+%20%22%20%22%20+%20s%29%3B%0A%09%7D%3B%0A%09return%20_log%28s%29%3B%0A%7D%0A%0Aconst%20_ns%20%3D%20%22__attributesInspector%22%3B%0A%0Avar%20context%3B%0Avar%20wm%20%3D%20Components.classes%5B%[email protected]/appshell/window-mediator%3B1%22%5D%0A%09.getService%28Components.interfaces.nsIWindowMediator%29%3B%0Avar%20ws%20%3D%20wm.getEnumerator%28null%29%3B%0Awhile%28ws.hasMoreElements%28%29%29%20%7B%0A%09var%20w%20%3D%20ws.getNext%28%29%3B%0A%09if%28_ns%20in%20w%29%20%7B%0A%09%09context%20%3D%20w%5B_ns%5D%3B%0A%09%09break%3B%0A%09%7D%0A%7D%0Aif%28%21context%29%20%7B%0A%09context%20%3D%20window%5B_ns%5D%20%3D%20%7B%0A%09%09button%3A%20this%20instanceof%20XULElement%20%26%26%20this.localName%20%21%3D%20%22popupset%22%20%26%26%20this%2C%0A%09%09checked%3A%20false%2C%0A%09%09wm%3A%20wm%2C%0A%09%09toggle%3A%20function%28%29%20%7B%0A%09%09%09toggle.call%28context%29%3B%0A%09%09%7D%2C%0A%09%09stop%3A%20function%28%29%20%7B%0A%09%09%09this.checked%20%26%26%20this.toggle%28%29%3B%0A%09%09%7D%0A%09%7D%3B%0A%7D%0A%0Afunction%20ael%28type%2C%20func%2C%20useCapture%2C%20target%29%20%7B%0A%09return%20%28target%20%7C%7C%20window%29.addEventListener%28type%2C%20func%2C%20useCapture%29%3B%0A%7D%0Afunction%20rel%28type%2C%20func%2C%20useCapture%2C%20target%29%20%7B%0A%09//%20Trick%20for%20Firefox%2036.0a1%0A%09if%28%22EventTarget%22%20in%20window%20%26%26%20EventTarget.prototype%20%26%26%20EventTarget.prototype.removeEventListener%29%20try%20%7B%0A%09%09EventTarget.prototype.removeEventListener.call%28target%20%7C%7C%20window%2C%20type%2C%20func%2C%20useCapture%29%3B%0A%09%7D%0A%09catch%28e%29%20%7B%0A%09%7D%0A%09return%20%28target%20%7C%7C%20window%29.removeEventListener%28type%2C%20func%2C%20useCapture%29%3B%0A%7D%0Afunction%20defineGetter%28o%2C%20p%2C%20g%29%20%7B%0A%09defineGetter%20%3D%20%22defineProperty%22%20in%20Object%20//%20Firefox%20%3E%3D%204.0%0A%09%09%3F%20function%28o%2C%20p%2C%20g%29%20%7B%0A%09%09%09Object.defineProperty%28o%2C%20p%2C%20%7B%0A%09%09%09%09get%3A%20g%2C%0A%09%09%09%09configurable%3A%20true%2C%0A%09%09%09%09enumerable%3A%20true%0A%09%09%09%7D%29%3B%0A%09%09%7D%0A%09%09%3A%20function%28o%2C%20p%2C%20g%29%20%7B%0A%09%09%09Object.__defineGetter__.call%28o%2C%20p%2C%20g%29%3B%0A%09%09%7D%3B%0A%09return%20defineGetter.apply%28this%2C%20arguments%29%3B%0A%7D%0A%0Acontext.toggle%28%29%3B%0A%0Afunction%20toggle%28%29%20%7B%0A%09var%20checked%20%3D%20this.checked%20%3D%20%21this.checked%3B%0A%09var%20btn%20%3D%20this.button%3B%0A%09if%28btn%29%20%7B%0A%09%09btn.checked%20%3D%20checked%3B%0A%09%09if%28%21checked%29%20%7B%0A%09%09%09var%20doc%20%3D%20btn.ownerDocument%3B%0A%09%09%09%28function%20uncheck%28%29%20%7B%20//%20D%27oh...%0A%09%09%09%09for%28var%20node%20%3D%20btn.parentNode%3B%20node%20%21%3D%20doc%3B%20node%20%3D%20node.parentNode%29%20%7B%0A%09%09%09%09%09if%28%21node%29%20%7B%20//%20Node%20was%20removed%20from%20document%0A%09%09%09%09%09%09_log%28%22Button%20was%20removed%20from%20document%22%29%3B%0A%09%09%09%09%09%09var%20toolboxes%20%3D%20doc.getElementsByTagName%28%22toolbox%22%29%3B%0A%09%09%09%09%09%09for%28var%20i%20%3D%200%2C%20l%20%3D%20toolboxes.length%3B%20i%20%3C%20l%3B%20++i%29%20%7B%0A%09%09%09%09%09%09%09var%20toolbox%20%3D%20toolboxes%5Bi%5D%3B%0A%09%09%09%09%09%09%09if%28%22palette%22%20in%20toolbox%20%26%26%20toolbox.palette%29%20%7B%0A%09%09%09%09%09%09%09%09var%20paletteBtns%20%3D%20toolbox.palette.getElementsByAttribute%28%22id%22%2C%20btn.id%29%3B%0A%09%09%09%09%09%09%09%09var%20paletteBtn%20%3D%20paletteBtns.length%20%26%26%20paletteBtns%5B0%5D%3B%0A%09%09%09%09%09%09%09%09if%28paletteBtn%20%26%26%20paletteBtn.getAttribute%28%22checked%22%29%20%3D%3D%20%22true%22%29%20%7B%0A%09%09%09%09%09%09%09%09%09_log%28%22Uncheck%20pallete%20button%22%29%3B%0A%09%09%09%09%09%09%09%09%09paletteBtn.removeAttribute%28%22checked%22%29%3B%0A%09%09%09%09%09%09%09%09%09break%3B%0A%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09return%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%09//if%28%21doc.getElementById%28%22wrapper-%22%20+%20btn.id%29%29%20%7B%0A%09%09%09%09if%28btn.parentNode.localName%20%21%3D%20%22toolbarpaletteitem%22%29%20%7B%0A%09%09%09%09%09if%28btn.checked%20%21%3D%20checked%29%20%7B%0A%09%09%09%09%09%09btn.checked%20%3D%20checked%3B%0A%09%09%09%09%09%09_log%28%22Set%20checked%20state%3A%20%22%20+%20checked%29%3B%0A%09%09%09%09%09%09return%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09_log%28%22Button%20checked%20state%20is%20correct%22%29%3B%0A%09%09%09%09%09return%3B%0A%09%09%09%09%7D%0A%09%09%09%09if%28%21uncheck.hasOwnProperty%28%22_logged%22%29%29%20%7B%0A%09%09%09%09%09uncheck._logged%20%3D%20true%3B%0A%09%09%09%09%09_log%28%22Button%20is%20wrapped%2C%20wait...%22%29%3B%0A%09%09%09%09%7D%0A%09%09%09%09doc.defaultView.setTimeout%28uncheck%2C%2020%29%3B%0A%09%09%09%7D%29%28%29%3B%0A%09%09%7D%0A%09%7D%0A%09if%28checked%29%0A%09%09init.call%28this%29%3B%0A%09else%0A%09%09destroy.call%28this%29%3B%0A%7D%0Afunction%20init%28%29%20%7B%0A%09var%20tt%20%3D%20this.tt%20%3D%20document.createElementNS%28%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%2C%20%22tooltip%22%29%3B%0A%09tt.id%20%3D%20%22__attrsInspectorTooltip%22%3B%0A%09tt.setAttribute%28%22orient%22%2C%20%22vertical%22%29%3B%0A%09if%28_maxTooltipWidth%20%3E%200%29%20%7B%0A%09%09_maxTooltipWidth%20%3D%20Math.min%28_maxTooltipWidth%2C%20%28screen.availWidth%20%7C%7C%20screen.width%29%20-%2020%29%20+%20%22px%22%3B%0A%09%09tt.style.maxWidth%20%3D%20_maxTooltipWidth%3B%0A%09%7D%0A%09//if%28%22pointerEvents%22%20in%20tt.style%29%0A%09//%09tt.style.pointerEvents%20%3D%20%22none%22%3B%0A%09tt.setAttribute%28%22mousethrough%22%2C%20%22always%22%29%3B%0A%09top.document.documentElement.appendChild%28tt%29%3B%0A%0A%09var%20tts%20%3D%20tt.style%3B%0A%09//%20Trick%20to%20force%20repaint%20tooltip%2C%20see%20https%3A//github.com/Infocatcher/Custom_Buttons/issues/25%0A%09tts.opacity%20%3D%20%220.99%22%3B%0A%0A%09//%20Resolve%20-moz-*%20and%20system%20colors%20%28for%20copy%20tooltip%20contents%20feature%29%0A%09var%20ttcs%20%3D%20top.getComputedStyle%28tt%2C%20null%29%3B%0A%09tts.color%20%3D%20_addedColor%3B%0A%09_addedColor%20%3D%20ttcs.color%3B%0A%09tts.color%20%3D%20_removedColor%3B%0A%09_removedColor%20%3D%20ttcs.color%3B%0A%09tts.color%20%3D%20_changedColor%3B%0A%09_changedColor%20%3D%20ttcs.color%3B%0A%09tts.color%20%3D%20%22%22%3B%0A%0A%09if%28%21_highlightUsingFlasher%29%20%7B%0A%09%09this.hlAttrNS%20%3D%20%22urn%3AattrsInspectorNS%22%3B%0A%09%09this.hlAttr%20%3D%20%22__attrs_inspector_highlighted__%22%3B%20//%20Don%27t%20use%20caps%20here%20-%20works%20only%20in%20Firefox%204%0A%09%09var%20sss%20%3D%20this.sss%20%3D%20Components.classes%5B%[email protected]/content/style-sheet-service%3B1%22%5D%0A%09%09%09.getService%28Components.interfaces.nsIStyleSheetService%29%3B%0A%09%09var%20cssStr%20%3D%20%27%5C%0A%09%09%09/*%20Attributes%20Inspector%20highlight%20styles%20*/%5Cn%5C%0A%09%09%09@namespace%20ains%20url%28%22%25ns%25%22%29%3B%5Cn%5C%0A%09%09%09%25priorityHack%25%5Bains%7C%25attr%25%3D%22true%22%5D%20%7B%5Cn%5C%0A%09%09%09%09outline%3A%20%25borderWidth%25px%20%25borderStyle%25%20%25borderColor%25%20%21important%3B%5Cn%5C%0A%09%09%09%09outline-offset%3A%20-%25borderWidth%25px%20%21important%3B%5Cn%5C%0A%09%09%09%7D%27%0A%09%09%09.replace%28/%25ns%25/g%2C%20this.hlAttrNS%29%0A%09%09%09.replace%28/%25attr%25/g%2C%20this.hlAttr%29%0A%09%09%09.replace%28/%25borderColor%25/g%2C%20_borderColor%29%0A%09%09%09.replace%28/%25borderWidth%25/g%2C%20_borderWidth%29%0A%09%09%09.replace%28/%25borderStyle%25/g%2C%20_borderStyle%29%0A%09%09%09.replace%28/%25priorityHack%25/g%2C%20%28function%28%29%20%7B%0A%09%09%09%09var%20rnd%20%3D%20Math.random%28%29.toFixed%2816%29.substr%282%29%3B%0A%09%09%09%09var%20hack%20%3D%20%22*%7C*%22%3B%0A%09%09%09%09for%28var%20i%20%3D%200%3B%20i%20%3C%2016%3B%20++i%29%0A%09%09%09%09%09hack%20+%3D%20%22%3Anot%28%23__priorityHack__%22%20+%20rnd%20+%20%22__%22%20+%20i%20+%20%22%29%22%3B%0A%09%09%09%09return%20hack%3B%0A%09%09%09%7D%29%28%29%29%3B%0A%09%09var%20cssURI%20%3D%20this.cssURI%20%3D%20Components.classes%5B%[email protected]/network/io-service%3B1%22%5D%0A%09%09%09.getService%28Components.interfaces.nsIIOService%29%0A%09%09%09.newURI%28%22data%3Atext/css%2C%22%20+%20encodeURIComponent%28cssStr%29%2C%20null%2C%20null%29%3B%0A%09%09if%28%21sss.sheetRegistered%28cssURI%2C%20sss.AGENT_SHEET%29%29%0A%09%09%09sss.loadAndRegisterSheet%28cssURI%2C%20sss.AGENT_SHEET%29%3B%0A%09%09if%28%21sss.sheetRegistered%28cssURI%2C%20sss.USER_SHEET%29%29%0A%09%09%09sss.loadAndRegisterSheet%28cssURI%2C%20sss.USER_SHEET%29%3B%0A%09%7D%0A%0A%09this.setAllListeners%20%3D%20function%28action%29%20%7B%0A%09%09var%20ws%20%3D%20this.wm.getEnumerator%28null%29%3B%0A%09%09while%28ws.hasMoreElements%28%29%29%0A%09%09%09this.setListeners%28action%2C%20ws.getNext%28%29%29%3B%0A%09%7D%3B%0A%09this.setListeners%20%3D%20function%28action%2C%20w%29%20%7B%0A%09%09var%20h%20%3D%20this.eventHandler%3B%0A%0A%09%09action%28%22mouseover%22%2C%20h%2C%20true%2C%20w%29%3B%0A%09%09action%28%22mousemove%22%2C%20h%2C%20true%2C%20w%29%3B%0A%09%09action%28%22mouseout%22%2C%20%20h%2C%20true%2C%20w%29%3B%0A%0A%09%09action%28%22draggesture%22%2C%20h%2C%20true%2C%20w%29%3B%0A%09%09action%28%22dragover%22%2C%20%20%20%20h%2C%20true%2C%20w%29%3B%0A%09%09action%28%22dragexit%22%2C%20%20%20%20h%2C%20true%2C%20w%29%3B%0A%0A%09%09action%28%22keydown%22%2C%20%20%20h%2C%20true%2C%20w%29%3B%0A%09%09action%28%22keypress%22%2C%20%20h%2C%20true%2C%20w%29%3B%0A%09%09action%28%22keyup%22%2C%20%20%20%20%20h%2C%20true%2C%20w%29%3B%0A%0A%09%09//if%28action%20%3D%3D%20rel%20%7C%7C%20this.inspector%29%20%7B%0A%09%09action%28%22mousedown%22%2C%20h%2C%20true%2C%20w%29%3B%0A%09%09action%28%22mouseup%22%2C%20%20%20h%2C%20true%2C%20w%29%3B%0A%09%09action%28%22click%22%2C%20%20%20%20%20h%2C%20true%2C%20w%29%3B%0A%09%09//%7D%0A%0A%09%09action%28%22popupshown%22%2C%20h%2C%20true%2C%20w%29%3B%0A%09%09if%28_forbidTooltips%29%20%7B%0A%09%09%09action%28%22popupshowing%22%2C%20h%2C%20true%2C%20w%29%3B%0A%09%09%09action%28%22popuphiding%22%2C%20%20h%2C%20true%2C%20w%29%3B%0A%09%09%7D%0A%09%7D%3B%0A%09this.ww%20%3D%20Components.classes%5B%[email protected]/embedcomp/window-watcher%3B1%22%5D%0A%09%09.getService%28Components.interfaces.nsIWindowWatcher%29%3B%0A%0A%09this.eventHandler%20%3D%20%7B%0A%09%09context%3A%20this%2C%0A%09%09window%3A%20window%2C%0A%09%09_hl%3A%20null%2C%0A%09%09_node%3A%20null%2C%0A%09%09_nodes%3A%20%5B%5D%2C%0A%09%09handleEvent%3A%20function%28e%29%20%7B%0A%09%09%09this%5Be.type%20+%20%22Handler%22%5D%28e%29%3B%0A%09%09%7D%2C%0A%09%09e%3A%20function%28nn%29%20%7B%0A%09%09%09return%20document.createElementNS%28%22http%3A//www.w3.org/1999/xhtml%22%2C%20nn%29%3B%0A%09%09%7D%2C%0A%09%09s%3A%20function%28v%2C%20tag%29%20%7B%0A%09%09%09var%20s%20%3D%20this.e%28tag%20%7C%7C%20%22span%22%29%3B%0A%09%09%09s.appendChild%28document.createTextNode%28v%29%29%3B%0A%09%09%09return%20s%3B%0A%09%09%7D%2C%0A%09%09getHeader%3A%20function%28v%2C%20state%29%20%7B%0A%09%09%09var%20e%20%3D%20this.s%28v%2C%20%22strong%22%29%3B%0A%09%09%09e.className%20%3D%20%22attrsInspector-header%22%3B%0A%09%09%09state%20%26%26%20this.setState%28e%2C%20state%29%3B%0A%09%09%09return%20e%3B%0A%09%09%7D%2C%0A%09%09get%20separator%28%29%20%7B%0A%09%09%09var%20sep%20%3D%20this._separator%20%3D%20this.s%28%22%20%3D%20%22%29%3B%0A%09%09%09sep.className%20%3D%20%22attrsInspector-separator%22%3B%0A%09%09%09defineGetter%28this%2C%20%22separator%22%2C%20function%28%29%20%7B%0A%09%09%09%09return%20this._separator.cloneNode%28true%29%3B%0A%09%09%09%7D%29%3B%0A%09%09%09return%20this.separator%3B%0A%09%09%7D%2C%0A%09%09get%20space%28%29%20%7B%0A%09%09%09var%20sp%20%3D%20this._space%20%3D%20this.s%28%22%20%22%29%3B%0A%09%09%09sp.className%20%3D%20%22attrsInspector-space%22%3B%0A%09%09%09defineGetter%28this%2C%20%22space%22%2C%20function%28%29%20%7B%0A%09%09%09%09return%20this._space.cloneNode%28true%29%3B%0A%09%09%09%7D%29%3B%0A%09%09%09return%20this.space%3B%0A%09%09%7D%2C%0A%09%09get%20colon%28%29%20%7B%0A%09%09%09var%20col%20%3D%20this._colon%20%3D%20this.s%28%22%3A%20%22%29%3B%0A%09%09%09col.className%20%3D%20%22attrsInspector-colon%22%3B%0A%09%09%09defineGetter%28this%2C%20%22colon%22%2C%20function%28%29%20%7B%0A%09%09%09%09return%20this._colon.cloneNode%28true%29%3B%0A%09%09%09%7D%29%3B%0A%09%09%09return%20this.colon%3B%0A%09%09%7D%2C%0A%09%09getValue%3A%20function%28v%2C%20state%29%20%7B%0A%09%09%09var%20e%20%3D%20this.s%28v%29%3B%0A%09%09%09//e.style.whiteSpace%20%3D%20%22pre%22%3B%0A%09%09%09e.className%20%3D%20%22attrsInspector-value%22%3B%0A%09%09%09state%20%26%26%20this.setState%28e%2C%20state%29%3B%0A%09%09%09return%20e%3B%0A%09%09%7D%2C%0A%09%09setState%3A%20function%28e%2C%20state%29%20%7B%0A%09%09%09if%28state.isRemoved%29%20%7B%0A%09%09%09%09e.style.color%20%3D%20_removedColor%3B%0A%09%09%09%09e.style.textDecoration%20%3D%20%22line-through%22%3B%0A%09%09%09%09e.className%20+%3D%20%22%20attrsInspector-removed%22%3B%0A%09%09%09%7D%0A%09%09%09if%28state.isAdded%29%20%7B%0A%09%09%09%09e.style.color%20%3D%20_addedColor%3B%0A%09%09%09%09e.className%20+%3D%20%22%20attrsInspector-added%22%3B%0A%09%09%09%7D%0A%09%09%09if%28state.isChanged%29%20%7B%20//%20Can%20be%20added%20and%20changed%21%0A%09%09%09%09e.style.color%20%3D%20_changedColor%3B%0A%09%09%09%09e.className%20+%3D%20%22%20attrsInspector-changed%22%3B%0A%09%09%09%7D%0A%09%09%7D%2C%0A%09%09get%20overflowBox%28%29%20%7B%0A%09%09%09var%20overflowBox%20%3D%20this._overflowBox%20%3D%20this.e%28%22div%22%29%3B%0A%09%09%09overflowBox.style.overflow%20%3D%20%22hidden%22%3B%0A%09%09%09overflowBox.className%20%3D%20%22attrsInspector-itemContainer%22%3B%0A%0A%09%09%09var%20item%20%3D%20this.e%28%22div%22%29%3B%0A%09%09%09item.style.lineHeight%20%3D%20%221.25%22%3B%0A%09%09%09item.style.maxHeight%20%3D%20%2212.5em%22%3B%0A%09%09%09//%20Note%3A%20max-width%20for%20tooltip%20itself%20may%20not%20work%20with%20classic%20windows%20theme%0A%09%09%09if%28_maxTooltipWidth%29%0A%09%09%09%09item.style.maxWidth%20%3D%20_maxTooltipWidth%3B%0A%09%09%09item.className%20%3D%20%22attrsInspector-item%22%3B%0A%0A%09%09%09overflowBox.appendChild%28item%29%3B%0A%0A%09%09%09defineGetter%28this%2C%20%22overflowBox%22%2C%20function%28%29%20%7B%0A%09%09%09%09return%20this._overflowBox.cloneNode%28true%29%3B%0A%09%09%09%7D%29%3B%0A%09%09%09return%20this.overflowBox%3B%0A%09%09%7D%2C%0A%09%09getItem%3A%20function%28header%2C%20value%2C%20separator%2C%20state%29%20%7B%0A%09%09%09var%20overflowBox%20%3D%20this.overflowBox%3B%0A%09%09%09var%20item%20%3D%20overflowBox.firstChild%3B%0A%09%09%09item.appendChild%28this.getHeader%28header%2C%20state%29%29%3B%0A%09%09%09if%28value%29%20%7B%0A%09%09%09%09item.appendChild%28separator%20%7C%7C%20this.separator%29%3B%0A%09%09%09%09item.appendChild%28this.getValue%28value%2C%20state%29%29%3B%0A%09%09%09%7D%0A%09%09%09return%20overflowBox%3B%0A%09%09%7D%2C%0A%09%09_setDataLast%3A%20%5B0%2C%200%2C%200%2C%200%2C%200%5D%2C%20//%20Array%20length%20-%20count%20of%20fast%20updates%0A%09%09_setDataMinDelay%3A%20750%2C%20//%20Delay%20between%20two%20series%20of%20fast%20updates%0A%09%09_setDataScheduled%3A%20false%2C%0A%09%09setDataProxy%3A%20function%28node%29%20%7B%0A%09%09%09if%28this._setDataScheduled%29%0A%09%09%09%09return%3B%0A%09%09%09var%20dt%20%3D%20this._setDataLast%5B0%5D%20+%20this._setDataMinDelay%20-%20Date.now%28%29%3B%0A%09%09%09if%28dt%20%3E%200%29%20%7B%0A%09%09%09%09this._setDataScheduled%20%3D%20true%3B%0A%09%09%09%09this.timer%28function%28%29%20%7B%0A%09%09%09%09%09this._setDataScheduled%20%3D%20false%3B%0A%09%09%09%09%09if%28node%20%3D%3D%20this._node%29%20%7B%0A%09%09%09%09%09%09this.setData%28node%29%3B%0A%09%09%09%09%09%09this.setDataProxyTime%28%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%2C%20this%2C%20dt%29%3B%0A%09%09%09%09return%3B%0A%09%09%09%7D%0A%09%09%09this.setData%28node%29%3B%0A%09%09%09this.setDataProxyTime%28%29%3B%0A%09%09%7D%2C%0A%09%09setDataProxyTime%3A%20function%28%29%20%7B%0A%09%09%09var%20a%20%3D%20this._setDataLast%3B%0A%09%09%09a.push%28Date.now%28%29%29%3B%0A%09%09%09a.shift%28%29%3B%0A%09%09%7D%2C%0A%09%09_hasData%3A%20false%2C%0A%09%09setData%3A%20function%28node%29%20%7B%0A%09%09%09var%20tt%20%3D%20this.context.tt%3B%0A%09%09%09this._hasData%20%3D%20true%3B%0A%0A%09%09%09var%20_this%20%3D%20this%3B%0A%09%09%09var%20df%20%3D%20tt.ownerDocument.createDocumentFragment%28%29%3B%0A%09%09%09function%20flush%28%29%20%7B%0A%09%09%09%09tt.textContent%20%3D%20%22%22%3B%0A%09%09%09%09//%20Firefox%20sometimes%20sets%20width/height%20to%20limit%20very%20huge%20tooltip%0A%09%09%09%09tt.removeAttribute%28%22width%22%29%3B%0A%09%09%09%09tt.removeAttribute%28%22height%22%29%3B%0A%09%09%09%09tt.appendChild%28df%29%3B%0A%09%09%09%09if%28%22state%22%20in%20tt%20%26%26%20tt.state%20%3D%3D%20%22closed%22%29%20//%20Strange%20things%20happens%0A%09%09%09%09%09_this.mousemoveHandler%28%29%3B%20//%20Force%20show%0A%09%09%09%7D%0A%0A%09%09%09if%28node.nodeType%20%3D%3D%20node.DOCUMENT_NODE%29%20%7B%0A%09%09%09%09df.appendChild%28this.getItem%28node.nodeName%29%29%3B%0A%09%09%09%09df.appendChild%28this.getItem%28%22documentURI%22%2C%20node.documentURI%2C%20this.colon%29%29%3B%0A%09%09%09%09node.title%20%26%26%20df.appendChild%28this.getItem%28%22title%22%2C%20node.title%2C%20this.colon%29%29%3B%0A%09%09%09%09var%20doctype%20%3D%20%22doctype%22%20in%20node%20%26%26%20node.doctype%3B%0A%09%09%09%09if%28doctype%20%26%26%20doctype%20%3D%3D%20node.firstChild%29%20%7B%0A%09%09%09%09%09var%20dt%3B%0A%09%09%09%09%09if%28doctype.name%20%3D%3D%20%22html%22%20%26%26%20doctype.publicId%20%3D%3D%20%22%22%20%26%26%20doctype.systemId%20%3D%3D%20%22%22%29%0A%09%09%09%09%09%09dt%20%3D%20%22HTML5%22%3B%0A%09%09%09%09%09else%20if%28doctype.publicId%29%0A%09%09%09%09%09%09dt%20%3D%20%28%22%22%20+%20doctype.publicId%29.replace%28/%5E-%5C/%5C/W3C%5C/%5C/DTD%5Cs+%7C%5C/%5C/EN%24/ig%2C%20%22%22%29%3B%0A%09%09%09%09%09else%0A%09%09%09%09%09%09dt%20%3D%20doctype.systemId%3B%0A%09%09%09%09%09df.appendChild%28this.getItem%28%22doctype%22%2C%20dt%2C%20this.colon%29%29%3B%0A%09%09%09%09%7D%0A%09%09%09%09if%28%22contentType%22%20in%20node%29%0A%09%09%09%09%09df.appendChild%28this.getItem%28%22contentType%22%2C%20node.contentType%2C%20this.colon%29%29%3B%0A%09%09%09%09if%28%22characterSet%22%20in%20node%29%0A%09%09%09%09%09df.appendChild%28this.getItem%28%22characterSet%22%2C%20node.characterSet%2C%20this.colon%29%29%3B%0A%09%09%09%09if%28%22compatMode%22%20in%20node%29%0A%09%09%09%09%09df.appendChild%28this.getItem%28%22compatMode%22%2C%20node.compatMode%2C%20this.colon%29%29%3B%0A%09%09%09%09if%28%22lastModified%22%20in%20node%29%20%7B%0A%09%09%09%09%09var%20dt%20%3D%20new%20Date%28node.lastModified%29%3B%0A%09%09%09%09%09var%20dts%20%3D%20isNaN%28dt.getTime%28%29%29%20%3F%20node.lastModified%20%3A%20dt.toLocaleString%28%29%3B%0A%09%09%09%09%09df.appendChild%28this.getItem%28%22lastModified%22%2C%20dts%2C%20this.colon%29%29%3B%0A%09%09%09%09%7D%0A%09%09%09%09if%28%22designMode%22%20in%20node%20%26%26%20node.designMode%20%21%3D%20%22off%22%29%0A%09%09%09%09%09df.appendChild%28this.getItem%28%22designMode%22%2C%20node.designMode%2C%20this.colon%29%29%3B%0A%09%09%09%09flush%28%29%3B%0A%09%09%09%09return%3B%0A%09%09%09%7D%0A%0A%09%09%09var%20rect%20%3D%20this.getRect%28node%29%3B%0A%09%09%09var%20w%20%3D%20rect%20%26%26%20rect.width%3B%0A%09%09%09var%20h%20%3D%20rect%20%26%26%20rect.height%3B%0A%09%09%09if%28%21w%20%26%26%20%21h%29%0A%09%09%09%09df.appendChild%28this.getItem%28node.nodeName%29%29%3B%0A%09%09%09else%20%7B%0A%09%09%09%09//if%28Math.floor%28w%29%20%21%3D%20w%29%0A%09%09%09%09if%28/%5C.%5Cd%7B4%2C%7D%24/.test%28w%29%29%0A%09%09%09%09%09w%20%3D%20w.toFixed%283%29%3B%0A%09%09%09%09//if%28Math.floor%28h%29%20%21%3D%20h%29%0A%09%09%09%09if%28/%5C.%5Cd%7B4%2C%7D%24/.test%28h%29%29%0A%09%09%09%09%09h%20%3D%20h.toFixed%283%29%3B%0A%09%09%09%09df.appendChild%28this.getItem%28node.nodeName%2C%20%22%5B%22%20+%20w%20+%20%22%5Cxd7%22%20+%20h%20+%20%22%5D%22%2C%20this.space%29%29%3B%0A%09%09%09%7D%0A%0A%09%09%09var%20nodeNS%20%3D%20node.namespaceURI%3B%0A%09%09%09if%28_showNamespaceURI/*%20%26%26%20node.nodeName.indexOf%28%22%3A%22%29%20%3D%3D%20-1*/%29%0A%09%09%09%09df.appendChild%28this.getItem%28%22namespaceURI%22%2C%20this.getNS%28nodeNS%29%2C%20this.colon%29%29%3B%0A%0A%09%09%09var%20win%20%3D%20node.ownerDocument.defaultView%3B%0A%09%09%09if%28_showMargins%20%26%26%20node%20instanceof%20Element%29%20%7B%0A%09%09%09%09var%20cs%20%3D%20win.getComputedStyle%28node%2C%20null%29%3B%0A%09%09%09%09var%20dirs%20%3D%20%5B%22Top%22%2C%20%22Right%22%2C%20%22Bottom%22%2C%20%22Left%22%5D%3B%0A%09%09%09%09var%20getMargins%20%3D%20function%28prop%2C%20propAdd%29%20%7B%0A%09%09%09%09%09if%28%21propAdd%29%0A%09%09%09%09%09%09propAdd%20%3D%20%22%22%3B%0A%09%09%09%09%09var%20margins%20%3D%20dirs.map%28function%28dir%2C%20i%29%20%7B%0A%09%09%09%09%09%09var%20margin%20%3D%20cs%5Bprop%20+%20dir%20+%20propAdd%5D%3B%0A%09%09%09%09%09%09if%28margin%20%3D%3D%20%220px%22%29%0A%09%09%09%09%09%09%09return%20%220%22%3B%0A%09%09%09%09%09%09if%28/%5C.%5Cd%7B4%2C%7Dpx%24/.test%28margin%29%29%0A%09%09%09%09%09%09%09return%20parseFloat%28margin%29.toFixed%283%29%20+%20%22px%22%3B%0A%09%09%09%09%09%09return%20margin%3B%0A%09%09%09%09%09%7D%29%3B%0A%09%09%09%09%09if%28margins%5B0%5D%20%3D%3D%20margins%5B2%5D%20%26%26%20margins%5B1%5D%20%3D%3D%20margins%5B3%5D%29%20%7B%0A%09%09%09%09%09%09if%28margins%5B0%5D%20%3D%3D%20margins%5B1%5D%29%0A%09%09%09%09%09%09%09return%20margins%5B0%5D%3B%0A%09%09%09%09%09%09return%20margins%5B0%5D%20+%20%22%20%22%20+%20margins%5B1%5D%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09return%20margins.join%28%22%20%22%29%3B%0A%09%09%09%09%7D%0A%09%09%09%09var%20boxSizing%20%3D%20%22boxSizing%22%20in%20cs%20%3F%20cs.boxSizing%20%3A%20cs.MozBoxSizing%3B%0A%09%09%09%09var%20boxSizingNote%20%3D%20%22%20*box-sizing%22%3B%0A%09%09%09%09var%20styles%20%3D%20%7B%0A%09%09%09%09%09margin%3A%20getMargins%28%22margin%22%29%2C%0A%09%09%09%09%09border%3A%20getMargins%28%22border%22%2C%20%22Width%22%29%20+%20%28%0A%09%09%09%09%09%09boxSizing%20%3D%3D%20%22border-box%22%0A%09%09%09%09%09%09%09%26%26%20nodeNS%20%21%3D%20%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%0A%09%09%09%09%09%09%3F%20boxSizingNote%0A%09%09%09%09%09%09%3A%20%22%22%0A%09%09%09%09%09%29%2C%0A%09%09%09%09%09padding%3A%20getMargins%28%22padding%22%29%0A%09%09%09%09%09%09+%20%28boxSizing%20%3D%3D%20%22padding-box%22%20%3F%20boxSizingNote%20%3A%20%22%22%29%2C%0A%09%09%09%09%09__proto__%3A%20null%0A%09%09%09%09%7D%3B%0A%09%09%09%09var%20prevStyles%20%3D%20this.prevStyles%3B%0A%09%09%09%09var%20changedStyles%20%3D%20this.changedStyles%3B%0A%09%09%09%09for%28var%20p%20in%20prevStyles%29%0A%09%09%09%09%09if%28styles%5Bp%5D%20%21%3D%20prevStyles%5Bp%5D%29%0A%09%09%09%09%09%09changedStyles%5Bp%5D%20%3D%20true%3B%0A%09%09%09%09for%28var%20p%20in%20styles%29%0A%09%09%09%09%09prevStyles%5Bp%5D%20%3D%20styles%5Bp%5D%3B%0A%09%09%09%09if%28_showMargins%20%3E%3D%203%20%7C%7C%20this._shiftKey%29%20%7B%0A%09%09%09%09%09df.appendChild%28this.getItem%28%22margin%22%2C%20styles.margin%2C%20this.colon%2C%20%7B%0A%09%09%09%09%09%09isChanged%3A%20%22margin%22%20in%20changedStyles%0A%09%09%09%09%09%7D%29%29%3B%0A%09%09%09%09%09df.appendChild%28this.getItem%28%22border%22%2C%20styles.border%2C%20this.colon%2C%20%7B%0A%09%09%09%09%09%09isChanged%3A%20%22border%22%20in%20changedStyles%0A%09%09%09%09%09%7D%29%29%3B%0A%09%09%09%09%09df.appendChild%28this.getItem%28%22padding%22%2C%20styles.padding%2C%20this.colon%2C%20%7B%0A%09%09%09%09%09%09isChanged%3A%20%22padding%22%20in%20changedStyles%0A%09%09%09%09%09%7D%29%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%0A%09%09%09if%28%21node.attributes%29%20%7B%0A%09%09%09%09df.appendChild%28this.getItem%28%22nodeValue%22%2C%20node.nodeValue%2C%20this.colon%29%29%3B%0A%09%09%09%09flush%28%29%3B%0A%09%09%09%09return%3B%0A%09%09%09%7D%0A%0A%09%09%09var%20topAttrs%20%3D%20%5B%22id%22%2C%20%22class%22%5D.reverse%28%29%3B%0A%09%09%09if%28this._node%29%20%7B%0A%09%09%09%09var%20addedAttrs%20%20%20%3D%20this.addedAttrs%3B%0A%09%09%09%09var%20removedAttrs%20%3D%20this.removedAttrs%3B%0A%09%09%09%09var%20changedAttrs%20%3D%20this.changedAttrs%3B%0A%09%09%09%7D%0A%09%09%09else%20%7B%0A%09%09%09%09addedAttrs%20%3D%20removedAttrs%20%3D%20changedAttrs%20%3D%20%7B%20__proto__%3A%20null%20%7D%3B%0A%09%09%09%7D%0A%0A%09%09%09var%20attrs%20%3D%20Array.prototype.slice.call%28node.attributes%29%3B%0A%09%09%09for%28var%20name%20in%20removedAttrs%29%0A%09%09%09%09attrs.push%28removedAttrs%5Bname%5D%29%3B%0A%0A%09%09%09attrs.sort%28function%28a%2C%20b%29%20%7B%0A%09%09%09%09a%20%3D%20a.name%3B%0A%09%09%09%09b%20%3D%20b.name%3B%0A%09%09%09%09var%20ai%20%3D%20topAttrs.indexOf%28a%29%3B%0A%09%09%09%09var%20bi%20%3D%20topAttrs.indexOf%28b%29%3B%0A%09%09%09%09if%28ai%20%21%3D%20-1%20%7C%7C%20bi%20%21%3D%20-1%29%0A%09%09%09%09%09return%20bi%20-%20ai%3B%0A%09%09%09%09return%20a%20%3E%20b%3B%0A%09%09%09%7D%29.forEach%28function%28attr%29%20%7B%0A%09%09%09%09var%20name%20%3D%20attr.name%3B%0A%09%09%09%09var%20val%20%3D%20attr.value%3B%0A%09%09%09%09var%20ns%20%3D%20attr.namespaceURI%3B%0A%09%09%09%09if%28%21_highlightUsingFlasher%29%20%7B%0A%09%09%09%09%09if%28name%20%3D%3D%20this.context.hlAttr%20%26%26%20ns%20%3D%3D%20this.context.hlAttrNS%29%0A%09%09%09%09%09%09return%3B%0A%09%09%09%09%09if%28this.noStyles%20%26%26%20name%20%3D%3D%20%22style%22%29%20%7B%0A%09%09%09%09%09%09val%20%3D%20this._oldStyle%3B%0A%09%09%09%09%09%09if%28val%20%3D%3D%3D%20false%29%0A%09%09%09%09%09%09%09return%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%09if%28_showNamespaceURI%20%26%26%20ns%20%26%26%20ns%20%21%3D%20nodeNS%20%26%26%20name.indexOf%28%22%3A%22%29%20%3D%3D%20-1%29%0A%09%09%09%09%09name%20+%3D%20%22%20%5B%22%20+%20this.getNS%28ns%29%20+%20%22%5D%22%3B%0A%09%09%09%09df.appendChild%28this.getItem%28name%2C%20val%2C%20this.separator%2C%20%7B%0A%09%09%09%09%09isAdded%3A%20%20%20name%20in%20addedAttrs%20%26%26%20addedAttrs%5Bname%5D%20%3D%3D%20ns%2C%0A%09%09%09%09%09isChanged%3A%20name%20in%20changedAttrs%20%26%26%20changedAttrs%5Bname%5D%20%3D%3D%20ns%2C%0A%09%09%09%09%09isRemoved%3A%20name%20in%20removedAttrs%20%26%26%20removedAttrs%5Bname%5D.namespaceURI%20%3D%3D%20ns%0A%09%09%09%09%7D%29%29%3B%0A%09%09%09%7D%2C%20this%29%3B%0A%09%09%09flush%28%29%3B%0A%09%09%7D%2C%0A%09%09getRect%3A%20function%28node%29%20%7B%0A%09%09%09return%20this.getScreenRect%28node%2C%201%29%3B%0A%09%09%7D%2C%0A%09%09getScreenRect%3A%20function%28node%2C%20scale%29%20%7B%0A%09%09%09var%20win%20%3D%20node.ownerDocument.defaultView%3B%0A%09%09%09if%28%21scale%29%20try%20%7B%0A%09%09%09%09var%20dwu%20%3D%20%22windowUtils%22%20in%20win%20%26%26%20win.windowUtils%20instanceof%20Components.interfaces.nsIDOMWindowUtils%0A%09%09%09%09%09%3F%20win.windowUtils%20//%20Firefox%2063+%0A%09%09%09%09%09%3A%20win.QueryInterface%28Components.interfaces.nsIInterfaceRequestor%29%0A%09%09%09%09%09%09.getInterface%28Components.interfaces.nsIDOMWindowUtils%29%3B%0A%09%09%09%09scale%20%3D%20dwu.screenPixelsPerCSSPixel%20%7C%7C%201%3B%0A%09%09%09%7D%0A%09%09%09catch%28e%29%20%7B%0A%09%09%09%09Components.utils.reportError%28e%29%3B%0A%09%09%09%09scale%20%3D%201%3B%0A%09%09%09%7D%0A%0A%09%09%09if%28%21%28node%20instanceof%20Element%29%29%20try%20%7B%0A%09%09%09%09var%20rng%20%3D%20node.ownerDocument.createRange%28%29%3B%0A%09%09%09%09rng.selectNodeContents%28node%29%3B%0A%09%09%09%09node%20%3D%20rng%3B%0A%09%09%09%7D%0A%09%09%09catch%28e%29%20%7B%0A%09%09%09%09Components.utils.reportError%28e%29%3B%0A%09%09%09%7D%0A%0A%09%09%09if%28%22getBoundingClientRect%22%20in%20node%29%20%7B%0A%09%09%09%09var%20rect%20%3D%20node.getBoundingClientRect%28%29%3B%0A%09%09%09%09return%20%7B%0A%09%09%09%09%09x%3A%20rect.left*scale%2C%0A%09%09%09%09%09y%3A%20rect.top*scale%2C%0A%09%09%09%09%09screenX%3A%20%28rect.left%20+%20win.mozInnerScreenX%29*scale%2C%0A%09%09%09%09%09screenY%3A%20%28rect.top%20+%20win.mozInnerScreenY%29*scale%2C%0A%09%09%09%09%09width%3A%20%28rect.right%20-%20rect.left%29*scale%2C%0A%09%09%09%09%09height%3A%20%28rect.bottom%20-%20rect.top%29*scale%0A%09%09%09%09%7D%3B%0A%09%09%09%7D%0A%0A%09%09%09try%20%7B%0A%09%09%09%09var%20bo%20%3D%20node%20instanceof%20XULElement%20%26%26%20node.boxObject%0A%09%09%09%09%09%7C%7C%20node.ownerDocument%20%26%26%20%22getBoxObjectFor%22%20in%20node.ownerDocument%0A%09%09%09%09%09%09%26%26%20node.ownerDocument.getBoxObjectFor%28node%29%3B%0A%09%09%09%7D%0A%09%09%09catch%28e%29%20%7B%0A%09%09%09%7D%0A%09%09%09if%28bo%29%20%7B%0A%09%09%09%09if%28%21%28%22width%22%20in%20bo%29%29%20%7B%0A%09%09%09%09%09bo.width%20%3D%20bo.right%20-%20bo.left%3B%0A%09%09%09%09%09bo.height%20%3D%20bo.bottom%20-%20bo.top%3B%0A%09%09%09%09%7D%0A%09%09%09%09return%20%7B%0A%09%09%09%09%09x%3A%20bo.x*scale%2C%0A%09%09%09%09%09y%3A%20bo.y*scale%2C%0A%09%09%09%09%09screenX%3A%20bo.screenX*scale%2C%0A%09%09%09%09%09screenY%3A%20bo.screenY*scale%2C%0A%09%09%09%09%09width%3A%20bo.width*scale%2C%0A%09%09%09%09%09height%3A%20bo.height*scale%0A%09%09%09%09%7D%3B%0A%09%09%09%7D%0A%09%09%09return%20null%3B%0A%09%09%7D%2C%0A%09%09isNodeVisible%3A%20function%28node%2C%20rect%29%20%7B%0A%09%09%09if%28%21rect%29%0A%09%09%09%09rect%20%3D%20this.getRect%28node%29%3B%0A%09%09%09if%28rect.width%20%3D%3D%200%20%26%26%20rect.height%20%3D%3D%200%29%0A%09%09%09%09return%20false%3B%0A%09%09%09for%28var%20p%20%3D%20node%3B%20p%3B%20p%20%3D%20p.parentNode%29%20%7B%0A%09%09%09%09if%28%0A%09%09%09%09%09p%20instanceof%20XULElement%0A%09%09%09%09%09%26%26%20%28p.localName%20%3D%3D%20%22menupopup%22%20%7C%7C%20p.localName%20%3D%3D%20%22popup%22%29%0A%09%09%09%09%09%26%26%20%22state%22%20in%20p%0A%09%09%09%09%09%26%26%20p.state%20%3D%3D%20%22closed%22%0A%09%09%09%09%29%0A%09%09%09%09%09return%20false%3B%0A%09%09%09%7D%0A%09%09%09return%20true%3B%0A%09%09%7D%2C%0A%09%09getNS%3A%20function%28ns%29%20%7B%0A%09%09%09if%28_showNamespaceURI%20%3D%3D%202%29%20switch%28ns%29%20%7B%0A%09%09%09%09case%20%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%3A%20return%20%22XUL%22%3B%0A%09%09%09%09case%20%22http%3A//www.w3.org/1999/xhtml%22%3A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20%22XHTML%22%3B%0A%09%09%09%09case%20%22http%3A//www.mozilla.org/xbl%22%3A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20%22XBL%22%3B%0A%09%09%09%09case%20%22http%3A//www.w3.org/2000/svg%22%3A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20%22SVG%22%3B%0A%09%09%09%09case%20%22http%3A//www.w3.org/1998/Math/MathML%22%3A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20%22MathML%22%3B%0A%09%09%09%09case%20%22http%3A//www.w3.org/1999/xlink%22%3A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20%22XLink%22%3B%0A%09%09%09%09case%20%22http%3A//www.w3.org/2000/xmlns/%22%3A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20%22XMLNS%22%3B%0A%09%09%09%09case%20%22http%3A//www.w3.org/XML/1998/namespace%22%3A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20%22XML%22%3B%0A%09%09%09%09case%20%22http%3A//www.w3.org/1999/XSL/Transform%22%3A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20%22XSLT%22%3B%0A%09%09%09%09case%20%22http%3A//www.w3.org/1999/02/22-rdf-syntax-ns%22%3A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20%22RDF%22%3B%0A%09%09%09%09case%20%22http%3A//www.w3.org/2001/xml-events%22%3A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20%22XML%20Events%22%3B%0A%09%09%09%7D%0A%09%09%09return%20%22%22%20+%20ns%3B%20//%20Can%20be%20null%20for%20%23text%0A%09%09%7D%2C%0A%09%09stop%3A%20function%28%29%20%7B%0A%09%09%09this.context.stop%28%29%3B%0A%09%09%7D%2C%0A%09%09canInspect%3A%20function%28e%29%20%7B%0A%09%09%09var%20noMdf%20%3D%20/*%21e.shiftKey%20%26%26%20*/%21e.altKey%20%26%26%20%21e.metaKey%3B%0A%09%09%09if%28%21_forbidTooltips%20%26%26%20e.shiftKey%29%0A%09%09%09%09return%20false%3B%0A%09%09%09return%20e.button%20%3D%3D%201%20%26%26%20noMdf%20%26%26%20%21e.ctrlKey%20//%20Middle-click%0A%09%09%09%20%20%20%20%7C%7C%20e.button%20%3D%3D%200%20%26%26%20noMdf%20%26%26%20%20e.ctrlKey%3B%20//%20Ctrl%20+%20left-click%0A%09%09%7D%2C%0A%09%09get%20appInfo%28%29%20%7B%0A%09%09%09delete%20this.appInfo%3B%0A%09%09%09return%20this.appInfo%20%3D%20Components.classes%5B%[email protected]/xre/app-info%3B1%22%5D%0A%09%09%09%09.getService%28Components.interfaces.nsIXULAppInfo%29%3B%0A%09%09%7D%2C%0A%09%09get%20fxVersion%28%29%20%7B%0A%09%09%09delete%20this.fxVersion%3B%0A%09%09%09var%20pv%20%3D%20this.appInfo.platformVersion%3B%0A%09%09%09var%20v%20%3D%20parseFloat%28pv%29%3B%0A%09%09%09if%28this.appInfo.name%20%3D%3D%20%22Pale%20Moon%22%20%7C%7C%20this.appInfo.name%20%3D%3D%20%22Basilisk%22%29%0A%09%09%09%09return%20this.fxVersion%20%3D%20v%20%3E%3D%204.1%20%3F%2056%20%3A%2028%3B%0A%09%09%09//%20https%3A//developer.mozilla.org/en-US/docs/Mozilla/Gecko/Versions%0A%09%09%09if%28v%20%3C%205%29%20%7B%0A%09%09%09%09var%20vc%20%3D%20Components.classes%5B%[email protected]/xpcom/version-comparator%3B1%22%5D%0A%09%09%09%09%09.getService%28Components.interfaces.nsIVersionComparator%29%3B%0A%09%09%09%09if%28vc.compare%28pv%2C%20%222.0a1pre%22%29%20%3E%3D%200%29%0A%09%09%09%09%09v%20%3D%204.0%3B%0A%09%09%09%09else%20if%28vc.compare%28pv%2C%20%221.9.2a1pre%22%29%20%3E%3D%200%29%0A%09%09%09%09%09v%20%3D%203.6%3B%0A%09%09%09%09else%20if%28vc.compare%28pv%2C%20%221.9.1a1pre%22%29%20%3E%3D%200%29%0A%09%09%09%09%09v%20%3D%203.5%3B%0A%09%09%09%09else%20if%28vc.compare%28pv%2C%20%221.9a1pre%22%29%20%3E%3D%200%29%0A%09%09%09%09%09v%20%3D%203.0%3B%0A%09%09%09%09else%20if%28vc.compare%28pv%2C%20%221.8.1a1pre%22%29%20%3E%3D%200%29%0A%09%09%09%09%09v%20%3D%202.0%3B%0A%09%09%09%09else%20//if%28vc.compare%28pv%2C%20%221.8a1pre%22%29%20%3E%3D%200%29%0A%09%09%09%09%09v%20%3D%201.5%3B%0A%09%09%09%7D%0A%09%09%09return%20this.fxVersion%20%3D%20v%3B%0A%09%09%7D%2C%0A%09%09get%20noStyles%28%29%20%7B%0A%09%09%09delete%20this.noStyles%3B%0A%09%09%09//return%20this.noStyles%20%3D%20this.fxVersion%20%3C%203%3B%0A%09%09%09return%20this.noStyles%20%3D%20Components.ID%28%22%7B41d979dc-ea03-4235-86ff-1e3c090c5630%7D%22%29%0A%09%09%09%09.equals%28Components.interfaces.nsIStyleSheetService%29%3B%0A%09%09%7D%2C%0A%09%09stopEvent%3A%20function%28e%29%20%7B%0A%09%09%09try%20%7B%0A%09%09%09%09e.preventDefault%28%29%3B%0A%09%09%09%09e.stopPropagation%28%29%3B%0A%09%09%09%09%22stopImmediatePropagation%22%20in%20e%20%26%26%20e.stopImmediatePropagation%28%29%3B%0A%09%09%09%7D%0A%09%09%09catch%28e%29%20%7B%20//%20e10s%3A%20TypeError%3A%20%27preventDefault%27%20called%20on%20an%20object%20that%20does%20not%20implement%20interface%20Event.%0A%09%09%09%09if%28_debug%20%7C%7C%20%28%22%22%20+%20e%29.indexOf%28%22does%20not%20implement%20interface%22%29%20%3D%3D%20-1%29%0A%09%09%09%09%09Components.utils.reportError%28e%29%3B%0A%09%09%09%7D%0A%09%09%09//_log%28%22stopEvent%3A%20%22%20+%20e.type%29%3B%0A%09%09%7D%2C%0A%09%09_timers%3A%20%7B%20__proto__%3A%20null%20%7D%2C%0A%09%09_timersCounter%3A%200%2C%0A%09%09get%20Timer%28%29%20%7B%0A%09%09%09delete%20this.Timer%3B%0A%09%09%09return%20this.Timer%20%3D%20Components.Constructor%28%[email protected]/timer%3B1%22%2C%20%22nsITimer%22%29%3B%0A%09%09%7D%2C%0A%09%09timer%3A%20function%28callback%2C%20context%2C%20delay%2C%20args%29%20%7B%0A%09%09%09var%20id%20%3D%20++this._timersCounter%3B%0A%09%09%09var%20_timers%20%3D%20this._timers%3B%0A%09%09%09var%20timer%20%3D%20new%20this.Timer%28%29%3B%0A%09%09%09timer.init%28%7B%0A%09%09%09%09observe%3A%20function%28subject%2C%20topic%2C%20data%29%20%7B%0A%09%09%09%09%09delete%20_timers%5Bid%5D%3B%0A%09%09%09%09%09callback.apply%28context%2C%20args%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%2C%20delay%20%7C%7C%200%2C%20timer.TYPE_ONE_SHOT%29%3B%0A%09%09%09return%20id%3B%0A%09%09%7D%2C%0A%09%09cancelTimer%3A%20function%28id%29%20%7B%0A%09%09%09var%20_timers%20%3D%20this._timers%3B%0A%09%09%09if%28id%20in%20_timers%29%20%7B%0A%09%09%09%09_timers%5Bid%5D.cancel%28%29%3B%0A%09%09%09%09delete%20_timers%5Bid%5D%3B%0A%09%09%09%7D%0A%09%09%7D%2C%0A%09%09destroyTimers%3A%20function%28%29%20%7B%0A%09%09%09var%20_timers%20%3D%20this._timers%3B%0A%09%09%09for%28var%20id%20in%20_timers%29%0A%09%09%09%09_timers%5Bid%5D.cancel%28%29%3B%0A%09%09%09this._timers%20%3D%20%7B%20__proto__%3A%20null%20%7D%3B%0A%09%09%09this._timersCounter%20%3D%200%3B%0A%09%09%7D%2C%0A%09%09get%20flasher%28%29%20%7B%0A%09%09%09try%20%7B%20//%20Will%20be%20removed%20in%20Gecko%2033+%2C%20see%20https%3A//bugzilla.mozilla.org/show_bug.cgi%3Fid%3D1018324%0A%09%09%09%09var%20flasher%20%3D%20Components.classes%5B%[email protected]/inspector/flasher%3B1%22%5D%0A%09%09%09%09%09.getService%28Components.interfaces.inIFlasher%29%3B%0A%09%09%09%09flasher.color%20%3D%20_borderColor%3B%0A%09%09%09%09flasher.thickness%20%3D%20_borderWidth%3B%0A%09%09%09%09flasher.invert%20%3D%20false%3B%0A%09%09%09%7D%0A%09%09%09catch%28e%29%20%7B%0A%09%09%09%09_log%28%22inIFlasher%20not%20available%22%29%3B%0A%09%09%09%09Components.utils.reportError%28e%29%3B%0A%09%09%09%7D%0A%09%09%09delete%20this.flasher%3B%0A%09%09%09return%20this.flasher%20%3D%20flasher%3B%0A%09%09%7D%2C%0A%09%09hl%3A%20function%28node%29%20%7B%0A%09%09%09if%28%21_highlight%29%0A%09%09%09%09return%3B%0A%09%09%09this.unhl%28%29%3B%20//%20Only%20one%20highlighted%20node%0A%09%09%09if%28%21%28%22setAttributeNS%22%20in%20node%29%29%0A%09%09%09%09return%3B%0A%09%09%09this._hl%20%3D%20node%3B%0A%0A%09%09%09if%28_highlightUsingFlasher%29%20%7B%0A%09%09%09%09this.flasher.drawElementOutline%28node%29%3B%0A%09%09%09%09this._hlInterval%20%3D%20node.ownerDocument.defaultView.setInterval%28function%28_this%29%20%7B%0A%09%09%09%09%09_this.flasher.drawElementOutline%28node%29%3B%0A%09%09%09%09%7D%2C%2010%2C%20this%29%3B%0A%09%09%09%09return%3B%0A%09%09%09%7D%0A%0A%09%09%09if%28node.hasAttributeNS%28this.context.hlAttrNS%2C%20this.context.hlAttr%29%29%0A%09%09%09%09return%3B%0A%09%09%09if%28this.noStyles%29%20%7B%0A%09%09%09%09this._oldStyle%20%3D%20node.hasAttribute%28%22style%22%29%20%26%26%20node.getAttribute%28%22style%22%29%3B%0A%09%09%09%09node.style.outline%20%3D%20_borderWidth%20+%20%22px%20%22%20+%20_borderStyle%20+%20%22%20%22%20+%20_borderColor%3B%0A%09%09%09%09node.style.outlineOffset%20%3D%20%22-%22%20+%20_borderWidth%20+%20%22px%22%3B%0A%09%09%09%7D%0A%09%09%09node.setAttributeNS%28this.context.hlAttrNS%2C%20this.context.hlAttr%2C%20%22true%22%29%3B%0A%09%09%7D%2C%0A%09%09unhl%3A%20function%28%29%20%7B%0A%09%09%09var%20node%20%3D%20this._hl%3B%0A%09%09%09if%28%21node%29%0A%09%09%09%09return%3B%0A%09%09%09this._hl%20%3D%20null%3B%0A%09%09%09try%20%7B%0A%09%09%09%09if%28%21%28%22removeAttributeNS%22%20in%20node%29%29%0A%09%09%09%09%09return%3B%0A%09%09%09%7D%0A%09%09%09catch%28e%29%20%7B%20//%20TypeError%3A%20can%27t%20access%20dead%20object%0A%09%09%09%09return%3B%0A%09%09%09%7D%0A%0A%09%09%09if%28_highlightUsingFlasher%29%20%7B%0A%09%09%09%09var%20win%20%3D%20node.ownerDocument.defaultView%3B%0A%09%09%09%09win.clearInterval%28this._hlInterval%29%3B%0A%09%09%09%09this.flasher.repaintElement%28node%29%3B%0A%09%09%09%09//this.flasher.repaintElement%28node.ownerDocument.documentElement%29%3B%0A%09%09%09%09this.flasher.repaintElement%28this.getTopWindow%28win%29.document.documentElement%29%3B%0A%09%09%09%09return%3B%0A%09%09%09%7D%0A%0A%09%09%09if%28this.noStyles%29%20%7B%0A%09%09%09%09if%28this._oldStyle%20%3D%3D%3D%20false%29%0A%09%09%09%09%09node.removeAttribute%28%22style%22%29%3B%0A%09%09%09%09else%0A%09%09%09%09%09node.setAttribute%28%22style%22%2C%20this._oldStyle%29%3B%0A%09%09%09%7D%0A%09%09%09node.removeAttributeNS%28this.context.hlAttrNS%2C%20this.context.hlAttr%29%3B%0A%09%09%7D%2C%0A%0A%09%09get%20mutationObserver%28%29%20%7B%0A%09%09%09delete%20this.mutationObserver%3B%0A%09%09%09return%20this.mutationObserver%20%3D%20%22MutationObserver%22%20in%20this.window%20//%20Firefox%2014+%0A%09%09%09%09%26%26%20new%20this.window.MutationObserver%28this.handleMutations.bind%28this%29%29%3B%0A%09%09%7D%2C%0A%09%09watchAttrs%3A%20function%28node%29%20%7B%0A%09%09%09this.unwatchAttrs%28%29%3B%20//%20Only%20one%20watched%20node%0A%09%09%09this._node%20%3D%20node%3B%0A%0A%09%09%09this.addedAttrs%20%20%20%3D%20%7B%20__proto__%3A%20null%20%7D%3B%0A%09%09%09this.removedAttrs%20%3D%20%7B%20__proto__%3A%20null%20%7D%3B%0A%09%09%09this.changedAttrs%20%3D%20%7B%20__proto__%3A%20null%20%7D%3B%0A%0A%09%09%09var%20mo%20%3D%20this.mutationObserver%3B%0A%09%09%09if%28mo%29%20%7B%0A%09%09%09%09//%20http%3A//dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html%23mutation-observers%0A%09%09%09%09try%20%7B%0A%09%09%09%09%09mo.observe%28node%2C%20%7B%0A%09%09%09%09%09%09attributes%3A%20true%2C%0A%09%09%09%09%09%09attributeOldValue%3A%20true%0A%09%09%09%09%09%7D%29%3B%0A%09%09%09%09%7D%0A%09%09%09%09catch%28e%29%20%7B%20//%20e10s%3A%20Argument%201%20of%20MutationObserver.observe%20does%20not%20implement%20interface%20Node.%0A%09%09%09%09%09if%28_debug%20%7C%7C%20%28%22%22%20+%20e%29.indexOf%28%22does%20not%20implement%20interface%22%29%20%3D%3D%20-1%29%0A%09%09%09%09%09%09Components.utils.reportError%28e%29%3B%0A%09%09%09%09%7D%0A%09%09%09%09return%3B%0A%09%09%09%7D%0A%09%09%09//%20Legacy%20version%0A%09%09%09var%20aw%20%3D%20this%3B%0A%09%09%09if%28this.fxVersion%20%3D%3D%202%29%20%7B%20//%20Hack%20for%20Firefox%202.0%0A%09%09%09%09aw%20%3D%20this._attrsWatcher%20%3D%20%7B%0A%09%09%09%09%09parent%3A%20this%2C%0A%09%09%09%09%09handleEvent%3A%20function%28e%29%20%7B%0A%09%09%09%09%09%09this.parent.DOMAttrModifiedHandler%28e%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%3B%0A%09%09%09%7D%0A%09%09%09ael%28%22DOMAttrModified%22%2C%20aw%2C%20true%2C%20node%29%3B%0A%09%09%7D%2C%0A%09%09unwatchAttrs%3A%20function%28%29%20%7B%0A%09%09%09if%28%21this._node%29%0A%09%09%09%09return%3B%0A%09%09%09var%20mo%20%3D%20this.mutationObserver%3B%0A%09%09%09if%28mo%29%0A%09%09%09%09mo.disconnect%28%29%3B%0A%09%09%09else%0A%09%09%09%09rel%28%22DOMAttrModified%22%2C%20this._attrsWatcher%20%7C%7C%20this%2C%20true%2C%20this._node%29%3B%0A%09%09%09this._node%20%3D%20this._attrsWatcher%20%3D%20null%3B%0A%09%09%09this.addedAttrs%20%3D%20this.removedAttrs%20%3D%20this.changedAttrs%20%3D%20null%3B%0A%09%09%7D%2C%0A%09%09handleMutations%3A%20function%28mutations%29%20%7B%0A%09%09%09mutations.forEach%28function%28mutation%29%20%7B%0A%09%09%09%09var%20node%20%3D%20mutation.target%3B%0A%09%09%09%09if%28mutation.type%20%21%3D%20%22attributes%22%20%7C%7C%20node%20%21%3D%20this._node%29%0A%09%09%09%09%09return%3B%0A%09%09%09%09var%20attrName%20%3D%20mutation.attributeName%3B%0A%09%09%09%09var%20attrNS%20%3D%20mutation.attributeNamespace%3B%0A%09%09%09%09var%20oldVal%20%3D%20mutation.oldValue%3B%0A%09%09%09%09var%20isAdded%20%3D%20oldVal%20%3D%3D%3D%20null%3B%0A%09%09%09%09var%20isRemoved%20%3D%20%21node.hasAttributeNS%28attrNS%2C%20attrName%29%3B%0A%09%09%09%09this.handleMutation%28attrName%2C%20attrNS%2C%20isAdded%2C%20isRemoved%2C%20oldVal%29%3B%0A%09%09%09%7D%2C%20this%29%3B%0A%09%09%09this.setDataProxy%28this._node%29%3B%0A%09%09%7D%2C%0A%09%09DOMAttrModifiedHandler%3A%20function%28e%29%20%7B%0A%09%09%09if%28e.originalTarget%20%21%3D%20this._node%29%20//%20Ignore%20mutations%20in%20child%20nodes%0A%09%09%09%09return%3B%0A%09%09%09this.handleMutation%28%0A%09%09%09%09e.attrName%2C%0A%09%09%09%09e.relatedNode%20%26%26%20e.relatedNode.namespaceURI%20%7C%7C%20null%2C%0A%09%09%09%09e.attrChange%20%3D%3D%20e.ADDITION%2C%0A%09%09%09%09e.attrChange%20%3D%3D%20e.REMOVAL%2C%0A%09%09%09%09e.prevValue%0A%09%09%09%29%3B%0A%09%09%09this.setDataProxy%28this._node%29%3B%0A%09%09%7D%2C%0A%09%09handleMutation%3A%20function%28attrName%2C%20attrNS%2C%20isAdded%2C%20isRemoved%2C%20oldValue%29%20%7B%0A%09%09%09if%28isAdded%29%20%7B%0A%09%09%09%09this.addedAttrs%5BattrName%5D%20%3D%20attrNS%3B%0A%09%09%09%09delete%20this.removedAttrs%5BattrName%5D%3B%0A%09%09%09%09delete%20this.changedAttrs%5BattrName%5D%3B%0A%09%09%09%7D%0A%09%09%09else%20if%28isRemoved%29%20%7B%0A%09%09%09%09this.removedAttrs%5BattrName%5D%20%3D%20%7B%0A%09%09%09%09%09name%3A%20attrName%2C%0A%09%09%09%09%09value%3A%20oldValue%2C%0A%09%09%09%09%09namespaceURI%3A%20attrNS%0A%09%09%09%09%7D%3B%0A%09%09%09%09delete%20this.addedAttrs%5BattrName%5D%3B%0A%09%09%09%09delete%20this.changedAttrs%5BattrName%5D%3B%0A%09%09%09%7D%0A%09%09%09else%20%7B%0A%09%09%09%09this.changedAttrs%5BattrName%5D%20%3D%20attrNS%3B%0A%09%09%09%09delete%20this.removedAttrs%5BattrName%5D%3B%20//%20%3F%0A%09%09%09%7D%0A%09%09%7D%2C%0A%0A%09%09setClipboardData%3A%20function%28dataObj%2C%20sourceWindow%2C%20clipId%29%20%7B%0A%09%09%09var%20ta%20%3D%20Components.classes%5B%[email protected]/widget/transferable%3B1%22%5D%0A%09%09%09%09.createInstance%28Components.interfaces.nsITransferable%29%3B%0A%09%09%09if%28sourceWindow%20%26%26%20%22init%22%20in%20ta%29%20%7B%0A%09%09%09%09//%20The%20clipboard%20will%20be%20cleared%20when%20private%20browsing%20mode%20ends%2C%0A%09%09%09%09//%20removed%20in%20Firefox%2041+%20https%3A//bugzilla.mozilla.org/show_bug.cgi%3Fid%3D1166840%0A%09%09%09%09//%20QueryInterface%20removed%20in%20Firefox%2070+%20https%3A//bugzilla.mozilla.org/show_bug.cgi%3Fid%3D1568585%0A%09%09%09%09var%20privacyContext%20%3D%20sourceWindow.QueryInterface%20%26%26%20sourceWindow%0A%09%09%09%09%09.QueryInterface%28Components.interfaces.nsIInterfaceRequestor%29%0A%09%09%09%09%09.getInterface%28Components.interfaces.nsIWebNavigation%29%0A%09%09%09%09%09.QueryInterface%28Components.interfaces.nsILoadContext%29%3B%0A%09%09%09%09ta.init%28privacyContext%20%7C%7C%20null%29%3B%0A%09%09%09%7D%0A%09%09%09for%28var%20flavor%20in%20dataObj%29%20if%28dataObj.hasOwnProperty%28flavor%29%29%20%7B%0A%09%09%09%09var%20value%20%3D%20dataObj%5Bflavor%5D%3B%0A%09%09%09%09var%20str%20%3D%20Components.classes%5B%[email protected]/supports-string%3B1%22%5D%0A%09%09%09%09%09.createInstance%28Components.interfaces.nsISupportsString%29%3B%0A%09%09%09%09str.data%20%3D%20value%3B%0A%09%09%09%09ta.addDataFlavor%28flavor%29%3B%0A%09%09%09%09ta.setTransferData%28flavor%2C%20str%2C%20value.length%20*%202%29%3B%0A%09%09%09%7D%0A%09%09%09var%20cb%20%3D%20Components.classes%5B%[email protected]/widget/clipboard%3B1%22%5D%0A%09%09%09%09.getService%28Components.interfaces.nsIClipboard%29%3B%0A%09%09%09cb.setData%28ta%2C%20null%2C%20clipId%20%3D%3D%3D%20undefined%20%3F%20cb.kGlobalClipboard%20%3A%20clipId%29%3B%0A%09%09%7D%2C%0A%09%09_noMouseover%3A%20false%2C%0A%09%09_noMouseoverTimer%3A%20-1%2C%0A%09%09mouseoverHandler%3A%20function%28e%29%20%7B%0A%09%09%09if%28this._noMouseover%29%0A%09%09%09%09return%3B%0A%09%09%09var%20node%20%3D%20e.originalTarget%3B%0A%09%09%09if%28node%20%3D%3D%20this.context.tt%29%0A%09%09%09%09return%3B%0A%09%09%09this._nodes%20%3D%20%5Bnode%5D%3B%0A%09%09%09this.handleNodeFromEvent%28node%2C%20e%29%3B%0A%09%09%7D%2C%0A%09%09handleNodeFromEvent%3A%20function%28node%2C%20e%29%20%7B%0A%09%09%09this.hl%28node%29%3B%0A%09%09%09if%28node%20%21%3D%20this._node%29%20%7B%0A%09%09%09%09this.prevStyles%20%20%20%20%3D%20%7B%20__proto__%3A%20null%20%7D%3B%0A%09%09%09%09this.changedStyles%20%3D%20%7B%20__proto__%3A%20null%20%7D%3B%0A%09%09%09%7D%0A%09%09%09this.setData%28node%29%3B%0A%09%09%09this.watchAttrs%28node%29%3B%0A%09%09%09this.mousemoveHandler%28e%29%3B%0A%09%09%7D%2C%0A%09%09handleNode%3A%20function%28node%29%20%7B%0A%09%09%09//%20Tooltip%20with%20big%20height%20-%3E%20wrongly%20under%20cursor%20-%3E%20reposition%20-%3E%20mouseover%0A%09%09%09//%20And%20setTimeout%28%29%20in%20parent%20window%20fail%20for%20modal%20child%20window%0A%09%09%09if%28this._noMouseover%29%0A%09%09%09%09this.cancelTimer%28this._noMouseoverTimer%29%3B%0A%09%09%09this._noMouseover%20%3D%20true%3B%0A%0A%09%09%09this.handleNodeFromEvent%28node%29%3B%0A%0A%09%09%09this._noMouseoverTimer%20%3D%20this.timer%28function%28%29%20%7B%0A%09%09%09%09this._noMouseover%20%3D%20false%3B%0A%09%09%09%09this._noMouseoverTimer%20%3D%20null%3B%0A%09%09%09%7D%2C%20this%2C%20200%29%3B%0A%09%09%7D%2C%0A%09%09mousemoveHandler%3A%20function%28e%29%20%7B%0A%09%09%09var%20tt%20%3D%20this.context.tt%3B%0A%0A%09%09%09if%28%21this._hasData%29%20%7B%0A%09%09%09%09this.mouseoverHandler%28e%29%3B%0A%09%09%09%09return%3B%0A%09%09%09%7D%0A%0A%09%09%09var%20x%2C%20y%3B%0A%09%09%09if%28e%29%20%7B%0A%09%09%09%09x%20%3D%20e.screenX%3B%0A%09%09%09%09y%20%3D%20e.screenY%3B%0A%09%09%09%09if%28this.fxVersion%20%3E%3D%2099%29%20%7B%0A%09%09%09%09%09var%20k%20%3D%20e.view.devicePixelRatio/%28tt.ownerGlobal%20%26%26%20tt.ownerGlobal.devicePixelRatio%29%3B%0A%09%09%09%09%09if%28k%20%26%26%20isFinite%28k%29%29%20%7B%0A%09%09%09%09%09%09x%20*%3D%20k%3B%0A%09%09%09%09%09%09y%20*%3D%20k%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%09if%28%0A%09%09%09%09%09%22_lastScreenX%22%20in%20this%0A%09%09%09%09%09%26%26%20x%20%3D%3D%20this._lastScreenX%0A%09%09%09%09%09%26%26%20y%20%3D%3D%20this._lastScreenY%0A%09%09%09%09%29%0A%09%09%09%09%09return%3B%0A%0A%09%09%09%09this._lastScreenX%20%3D%20x%3B%0A%09%09%09%09this._lastScreenY%20%3D%20y%3B%0A%0A%09%09%09%09this._shiftKey%20%3D%20e.shiftKey%3B%0A%09%09%09%7D%0A%09%09%09else%20%7B%0A%09%09%09%09x%20%3D%20this._lastScreenX%20%7C%7C%200%3B%0A%09%09%09%09y%20%3D%20this._lastScreenY%20%7C%7C%200%3B%0A%09%09%09%7D%0A%0A%09%09%09var%20fxVersion%20%3D%20this.fxVersion%3B%0A%0A%09%09%09if%28fxVersion%20%3C%3D%202%29%20%7B%0A%09%09%09%09//%20Ugly%20workaround...%0A%09%09%09%09var%20text%20%3D%20Array.prototype.map.call%28tt.childNodes%2C%20function%28node%29%20%7B%0A%09%09%09%09%09return%20node.textContent%3B%0A%09%09%09%09%7D%29.join%28%22%5Cn%22%29%3B%0A%09%09%09%09tt.textContent%20%3D%20%22%22%3B%0A%09%09%09%09var%20d%20%3D%20this.e%28%22div%22%29%3B%0A%09%09%09%09d.style.whiteSpace%20%3D%20%22-moz-pre-wrap%22%3B%0A%09%09%09%09d.textContent%20%3D%20text%3B%0A%09%09%09%09tt.height%20%3D%20null%3B%0A%09%09%09%09tt.appendChild%28d%29%3B%0A%09%09%09%09tt.height%20%3D%20tt.boxObject.height%3B%0A%09%09%09%7D%0A%0A%09%09%09if%28%22openPopupAtScreen%22%20in%20tt%29%20//%20Firefox%203.0+%0A%09%09%09%09tt.openPopupAtScreen%28x%2C%20y%2C%20false%20/*isContextMenu*/%29%3B%0A%09%09%09else%0A%09%09%09%09tt.showPopup%28document.documentElement%2C%20x%2C%20y%2C%20%22tooltip%22%2C%20null%2C%20null%29%3B%0A%0A%09%09%09if%28fxVersion%20%3C%3D%202%29%0A%09%09%09%09return%3B%0A%09%09%09if%28fxVersion%20%3C%3D%203.5%29%20%7B%0A%09%09%09%09x%20%3D%20Math.min%28screen.width%20%20-%20tt.boxObject.width%2C%20%20x%29%3B%0A%09%09%09%09y%20%3D%20Math.min%28screen.height%20-%20tt.boxObject.height%2C%20y%29%3B%0A%09%09%09%09var%20debo%20%3D%20document.documentElement.boxObject%3B%0A%09%09%09%09x%20+%3D%20debo.screenX%3B%0A%09%09%09%09y%20+%3D%20debo.screenY%3B%0A%09%09%09%7D%0A%09%09%09if%28fxVersion%20%21%3D%203.6%29%0A%09%09%09%09y%20+%3D%2022%3B%0A%09%09%09tt.moveTo%28x%2C%20y%29%3B%0A%09%09%7D%2C%0A%09%09mouseoutHandler%3A%20function%28e%29%20%7B%0A%09%09%09if%28%21e.relatedTarget%29%0A%09%09%09%09this.context.tt.hidePopup%28%29%3B%0A%09%09%09this.unwatchAttrs%28%29%3B%0A%09%09%09this.unhl%28%29%3B%0A%09%09%7D%2C%0A%09%09draggestureHandler%3A%20function%28e%29%20%7B%0A%09%09%09this.makeTooltipTopmost%28%29%3B%0A%09%09%09_log%28e.type%20+%20%22%20%3D%3E%20make%20tooltip%20topmost%22%29%3B%0A%09%09%7D%2C%0A%09%09dragoverHandler%3A%20function%28e%29%20%7B%0A%09%09%09var%20node%20%3D%20e.originalTarget%20%7C%7C%20e.target%3B%0A%09%09%09if%28node%20%21%3D%20this._node%29%0A%09%09%09%09this.mouseoverHandler%28e%29%3B%0A%09%09%09else%0A%09%09%09%09this.mousemoveHandler%28e%29%3B%0A%09%09%7D%2C%0A%09%09dragexitHandler%3A%20function%28e%29%20%7B%0A%09%09%09if%28%21e.relatedTarget%20%26%26%20this._node%29%0A%09%09%09%09this.mouseoutHandler%28e%29%3B%0A%09%09%7D%2C%0A%09%09keydownHandler%3A%20function%28e%29%20%7B%0A%09%09%09this._shiftKey%20%3D%20e.shiftKey%3B%0A%09%09%09this.keypressHandler.apply%28this%2C%20arguments%29%3B%0A%09%09%7D%2C%0A%09%09keyupHandler%3A%20function%28e%29%20%7B%0A%09%09%09this._shiftKey%20%3D%20e.shiftKey%3B%0A%09%09%09this.keypressHandler.apply%28this%2C%20arguments%29%3B%0A%09%09%7D%2C%0A%09%09keypressHandler%3A%20function%28e%29%20%7B%0A%09%09%09//%20See%20https%3A//github.com/Infocatcher/Custom_Buttons/issues/12%0A%09%09%09//%20keydown%20%20%3D%3E%20stopEvent%28%29%20+%20hetkey%20action%20in%20Firefox%20%3E%3D%2025%0A%09%09%09//%20keypress%20%3D%3E%20stopEvent%28%29%20+%20hetkey%20action%20in%20Firefox%20%3C%2025%0A%09%09%09//%20keyup%20%20%20%20%3D%3E%20stopEvent%28%29%0A%09%09%09var%20onlyStop%20%3D%20this.fxVersion%20%3C%2025%0A%09%09%09%09%3F%20e.type%20%3D%3D%20%22keydown%22%20%7C%7C%20e.type%20%3D%3D%20%22keyup%22%0A%09%09%09%09%3A%20e.type%20%3D%3D%20%22keypress%22%20%7C%7C%20e.type%20%3D%3D%20%22keyup%22%3B%0A%09%09%09//_log%28e.type%20+%20%22%3A%20keyCode%3A%20%22%20+%20e.keyCode%20+%20%22%20charCode%3A%20%22%20+%20e.charCode%29%3B%0A%09%09%09if%28e.keyCode%20%3D%3D%20e.DOM_VK_ESCAPE%29%20%7B%0A%09%09%09%09this.stopEvent%28e%29%3B%0A%09%09%09%09if%28onlyStop%29%0A%09%09%09%09%09return%3B%0A%09%09%09%09this.stopSingleEvent%28e%2C%20%22keyup%22%29%3B%0A%09%09%09%09this.stop%28%29%3B%0A%09%09%09%09return%3B%0A%09%09%09%7D%0A%09%09%09var%20ctrlOrCtrlShift%20%3D%20%28e.ctrlKey%20%7C%7C%20e.metaKey%29%20%26%26%20%21e.altKey%3B%0A%09%09%09var%20ctrl%20%20%20%20%20%20%3D%20ctrlOrCtrlShift%20%26%26%20%21e.shiftKey%3B%0A%09%09%09var%20ctrlShift%20%3D%20ctrlOrCtrlShift%20%26%26%20%20e.shiftKey%3B%0A%09%09%09if%28%21ctrlOrCtrlShift%29%0A%09%09%09%09return%3B%0A%0A%09%09%09if%28%21_forbidTooltips%29%0A%09%09%09%09ctrlOrCtrlShift%20%3D%20ctrl%3B%0A%0A%09%09%09if%28ctrlOrCtrlShift%20%26%26%20e.keyCode%20%3D%3D%20e.DOM_VK_UP%29%20%7B%20//%20Ctrl+Up%0A%09%09%09%09this.stopEvent%28e%29%3B%0A%09%09%09%09if%28%21onlyStop%29%0A%09%09%09%09%09this.navigateUp%28%29%3B%0A%09%09%09%7D%0A%09%09%09else%20if%28ctrlOrCtrlShift%20%26%26%20e.keyCode%20%3D%3D%20e.DOM_VK_DOWN%29%20%7B%20//%20Ctrl+Down%0A%09%09%09%09this.stopEvent%28e%29%3B%0A%09%09%09%09if%28%21onlyStop%29%0A%09%09%09%09%09this.navigateDown%28%29%3B%0A%09%09%09%7D%0A%09%09%09if%28ctrlOrCtrlShift%20%26%26%20e.keyCode%20%3D%3D%20e.DOM_VK_RIGHT%29%20%7B%20//%20Ctrl+Right%0A%09%09%09%09this.stopEvent%28e%29%3B%0A%09%09%09%09if%28%21onlyStop%29%0A%09%09%09%09%09this.navigateNext%28%29%3B%0A%09%09%09%7D%0A%09%09%09else%20if%28ctrlOrCtrlShift%20%26%26%20e.keyCode%20%3D%3D%20e.DOM_VK_LEFT%29%20%7B%20//%20Ctrl+Left%0A%09%09%09%09this.stopEvent%28e%29%3B%0A%09%09%09%09if%28%21onlyStop%29%0A%09%09%09%09%09this.navigatePrev%28%29%3B%0A%09%09%09%7D%0A%09%09%09else%20if%28%20//%20Ctrl+Shift+C%0A%09%09%09%09ctrlShift%20%26%26%20%28%0A%09%09%09%09%09e.keyCode%20%3D%3D%20e.DOM_VK_C%20//%20keydown%20%7C%7C%20keyup%0A%09%09%09%09%09%7C%7C%20e.keyCode%20%3D%3D%200%20%26%26%20String.fromCharCode%28e.charCode%29.toUpperCase%28%29%20%3D%3D%20%22C%22%20//%20keypress%0A%09%09%09%09%29%0A%09%09%09%29%20%7B%0A%09%09%09%09this.stopEvent%28e%29%3B%0A%09%09%09%09if%28%21onlyStop%29%0A%09%09%09%09%09this.copyTootipContent%28%29%3B%0A%09%09%09%7D%0A%09%09%09else%20if%28%20//%20Ctrl+I%2C%20Ctrl+Shift+I%0A%09%09%09%09ctrlOrCtrlShift%20%26%26%20%28%0A%09%09%09%09%09e.keyCode%20%3D%3D%20e.DOM_VK_I%20//%20keydown%20%7C%7C%20keyup%0A%09%09%09%09%09%7C%7C%20e.keyCode%20%3D%3D%200%20%26%26%20String.fromCharCode%28e.charCode%29.toUpperCase%28%29%20%3D%3D%20%22I%22%20//%20keypress%0A%09%09%09%09%29%0A%09%09%09%29%20%7B%0A%09%09%09%09this._checkPreventDefault%28e%29%3B%0A%09%09%09%09this.stopEvent%28e%29%3B%0A%09%09%09%09if%28onlyStop%29%0A%09%09%09%09%09return%3B%0A%09%09%09%09this.stopSingleEvent%28e%2C%20%22keyup%22%29%3B%0A%09%09%09%09var%20nodes%20%3D%20this._nodes%3B%0A%09%09%09%09var%20node%20%3D%20nodes.length%20%26%26%20nodes%5B0%5D%3B%0A%09%09%09%09node%20%26%26%20this.inspect%28node%2C%20e.shiftKey%29%3B%0A%09%09%09%7D%0A%09%09%09else%20if%28%20//%20Ctrl+Shift+W%0A%09%09%09%09ctrlShift%20%26%26%20%28%0A%09%09%09%09%09e.keyCode%20%3D%3D%20e.DOM_VK_W%20//%20keydown%20%7C%7C%20keyup%0A%09%09%09%09%09%7C%7C%20e.keyCode%20%3D%3D%200%20%26%26%20String.fromCharCode%28e.charCode%29.toUpperCase%28%29%20%3D%3D%20%22W%22%20//%20keypress%0A%09%09%09%09%29%0A%09%09%09%29%20%7B%0A%09%09%09%09this._checkPreventDefault%28e%29%3B%0A%09%09%09%09this.stopEvent%28e%29%3B%0A%09%09%09%09if%28onlyStop%29%0A%09%09%09%09%09return%3B%0A%09%09%09%09this.stopSingleEvent%28e%2C%20%22keyup%22%29%3B%0A%09%09%09%09var%20nodes%20%3D%20this._nodes%3B%0A%09%09%09%09var%20node%20%3D%20nodes.length%20%26%26%20nodes%5B0%5D%3B%0A%09%09%09%09if%28node%29%20%7B%0A%09%09%09%09%09this.stop%28%29%3B%0A%09%09%09%09%09this.hideUnclosedPopups%28%29%3B%0A%09%09%09%09%09this.closeMenus%28node%29%3B%0A%09%09%09%09%09this.inspectWindow%28node%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%2C%0A%09%09navigateUp%3A%20function%28%29%20%7B%0A%09%09%09var%20nodes%20%3D%20this._nodes%3B%0A%09%09%09var%20node%20%3D%20nodes.length%20%26%26%20this.getParentNode%28nodes%5B0%5D%29%3B%0A%09%09%09if%28node%29%20%7B%0A%09%09%09%09nodes.unshift%28node%29%3B%0A%09%09%09%09this.handleNode%28node%29%3B%0A%09%09%09%7D%0A%09%09%7D%2C%0A%09%09navigateDown%3A%20function%28%29%20%7B%0A%09%09%09var%20nodes%20%3D%20this._nodes%3B%0A%09%09%09if%28nodes.length%20%3E%201%29%20%7B%0A%09%09%09%09nodes.shift%28%29%3B%0A%09%09%09%09this.handleNode%28nodes%5B0%5D%29%3B%0A%09%09%09%7D%0A%09%09%09else%20if%28nodes.length%20%3D%3D%201%29%20%7B%0A%09%09%09%09var%20node%20%3D%20nodes%5B0%5D%3B%0A%09%09%09%09var%20childs%20%3D%20this.getChildNodes%28node%29%3B%0A%09%09%09%09if%28%21childs%29%0A%09%09%09%09%09return%3B%0A%09%09%09%09var%20child%3B%0A%09%09%09%09for%28var%20i%20%3D%200%2C%20l%20%3D%20childs.length%3B%20i%20%3C%20l%3B%20++i%29%20%7B%0A%09%09%09%09%09var%20ch%20%3D%20childs%5Bi%5D%3B%0A%09%09%09%09%09if%28%21_excludeChildTextNodes%20%7C%7C%20ch%20instanceof%20Element%29%20%7B%0A%09%09%09%09%09%09child%20%3D%20ch%3B%0A%09%09%09%09%09%09break%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%09if%28%21child%20%26%26%20_excludeChildTextNodes%20%3D%3D%201%20%26%26%20l%29%0A%09%09%09%09%09child%20%3D%20childs%5B0%5D%3B%0A%09%09%09%09if%28child%29%20%7B%0A%09%09%09%09%09this._nodes%20%3D%20%5Bchild%5D%3B%0A%09%09%09%09%09this.handleNode%28child%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%7D%2C%0A%09%09navigateNext%3A%20function%28%29%20%7B%0A%09%09%09this.navigateSibling%28true%29%3B%0A%09%09%7D%2C%0A%09%09navigatePrev%3A%20function%28%29%20%7B%0A%09%09%09this.navigateSibling%28false%29%3B%0A%09%09%7D%2C%0A%09%09navigateSibling%3A%20function%28toNext%29%20%7B%0A%09%09%09var%20nodes%20%3D%20this._nodes%3B%0A%09%09%09if%28%21nodes.length%29%0A%09%09%09%09return%3B%0A%09%09%09var%20node%20%3D%20nodes%5B0%5D%3B%0A%09%09%09//var%20sibling%20%3D%20node%3B%0A%09%09%09//do%20sibling%20%3D%20toNext%20%3F%20sibling.nextSibling%20%3A%20sibling.previousSibling%3B%0A%09%09%09//while%28_excludeSiblingTextNodes%20%26%26%20sibling%20%26%26%20%21%28sibling%20instanceof%20Element%29%29%3B%0A%09%09%09var%20parent%20%3D%20this.getParentNode%28node%29%3B%0A%09%09%09var%20siblings%20%3D%20parent%20%26%26%20this.getChildNodes%28parent%2C%20node%29%3B%0A%09%09%09if%28%21siblings%20%7C%7C%20siblings.length%20%3C%202%29%0A%09%09%09%09return%3B%0A%09%09%09var%20max%20%3D%20siblings.length%20-%201%3B%0A%09%09%09var%20pos%20%3D%20Array.prototype.indexOf.call%28siblings%2C%20node%29%3B%0A%09%09%09if%28pos%20%3D%3D%20-1%29%0A%09%09%09%09return%3B%0A%09%09%09var%20shift%20%3D%20toNext%20%3F%201%20%3A%20-1%3B%0A%09%09%09var%20sibling%3B%0A%09%09%09for%28var%20i%20%3D%20pos%20+%20shift%3B%20%3B%20i%20+%3D%20shift%29%20%7B%0A%09%09%09%09if%28_useCycleNavigation%29%20%7B%0A%09%09%09%09%09if%28i%20%3C%200%29%0A%09%09%09%09%09%09i%20%3D%20max%3B%0A%09%09%09%09%09else%20if%28i%20%3E%20max%29%0A%09%09%09%09%09%09i%20%3D%200%3B%0A%09%09%09%09%09if%28i%20%3D%3D%20pos%29%0A%09%09%09%09%09%09break%3B%0A%09%09%09%09%7D%0A%09%09%09%09if%28i%20%3C%200%20%7C%7C%20i%20%3E%20max%29%0A%09%09%09%09%09break%3B%0A%09%09%09%09var%20sb%20%3D%20siblings%5Bi%5D%3B%0A%09%09%09%09if%28sb%20%26%26%20%28%21_excludeSiblingTextNodes%20%7C%7C%20sb%20instanceof%20Element%29%29%20%7B%0A%09%09%09%09%09sibling%20%3D%20sb%3B%0A%09%09%09%09%09break%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%09if%28%21sibling%29%0A%09%09%09%09return%3B%0A%09%09%09//%20Update%20screen%20position%20for%20mousemoveHandler%28%29%0A%09%09%09var%20rect%20%3D%20this.getScreenRect%28sibling%29%3B%0A%09%09%09if%28%0A%09%09%09%09rect%0A%09%09%09%09%26%26%20%28this.fxVersion%20%3C%203%20%7C%7C%20this.fxVersion%20%3E%203.5%29%0A%09%09%09%09%26%26%20this.isNodeVisible%28sibling%2C%20rect%29%20//%20Wrong%20coordinates%20for%20hidden%20nodes%0A%09%09%09%29%20%7B%0A%09%09%09%09var%20x%20%3D%20rect.screenX%3B%0A%09%09%09%09var%20y%20%3D%20rect.screenY%20+%20rect.height%3B%0A%09%09%09%09if%28x%20%21%3D%20undefined%20%26%26%20y%20%21%3D%20undefined%29%20%7B%0A%09%09%09%09%09this._lastScreenX%20%3D%20x%3B%0A%09%09%09%09%09this._lastScreenY%20%3D%20y%20-%2022%20+%208%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%09this._nodes%20%3D%20%5Bsibling%5D%3B%0A%09%09%09this.handleNode%28sibling%29%3B%0A%09%09%7D%2C%0A%09%09get%20domUtils%28%29%20%7B%0A%09%09%09delete%20this.domUtils%3B%0A%09%09%09return%20this.domUtils%20%3D%20%22inIDOMUtils%22%20in%20Components.interfaces%0A%09%09%09%09%3F%20Components.classes%5B%[email protected]/inspector/dom-utils%3B1%22%5D%0A%09%09%09%09%09.getService%28Components.interfaces.inIDOMUtils%29%0A%09%09%09%09%3A%20InspectorUtils%3B%20//%20Firefox%2059+%0A%09%09%7D%2C%0A%09%09getParentNode%3A%20function%28node%29%20%7B%0A%09%09%09try%20%7B%0A%09%09%09%09var%20pn%20%3D%20this.domUtils.getParentForNode%28node%2C%20true%29%3B%0A%09%09%09%7D%0A%09%09%09catch%28e%29%20%7B%0A%09%09%09%09if%28%28%22%22%20+%20e%29.indexOf%28%22NS_ERROR_XPC_CANT_PASS_CPOW_TO_NATIVE%22%29%20%3D%3D%20-1%29%0A%09%09%09%09%09Components.utils.reportError%28e%29%3B%0A%09%09%09%09pn%20%3D%20node.parentNode%3B%0A%09%09%09%7D%0A%09%09%09if%28%21pn%20%26%26%20node.nodeType%20%3D%3D%20Node.DOCUMENT_NODE%29%20%7B%20//%20Firefox%201.5%3F%0A%09%09%09%09pn%20%3D%20node.defaultView.QueryInterface%28Components.interfaces.nsIInterfaceRequestor%29%0A%09%09%09%09%09.getInterface%28Components.interfaces.nsIWebNavigation%29%0A%09%09%09%09%09.QueryInterface%28Components.interfaces.nsIDocShell%29%0A%09%09%09%09%09.chromeEventHandler%3B%0A%09%09%09%7D%0A%09%09%09return%20pn%3B%0A%09%09%7D%2C%0A%09%09getTopWindow%3A%20function%28node%29%20%7B%0A%09%09%09var%20win%20%3D%20node.ownerDocument%20%26%26%20node.ownerDocument.defaultView%0A%09%09%09%09%7C%7C%20node.defaultView%0A%09%09%09%09%7C%7C%20node%3B%0A%09%09%09//for%28%3B%3B%29%20%7B%0A%09%09%09//%09var%20browser%20%3D%20this.domUtils.getParentForNode%28win.document%2C%20true%29%3B%0A%09%09%09//%09if%28%21browser%29%0A%09%09%09//%09%09break%3B%0A%09%09%09//%09win%20%3D%20browser.ownerDocument.defaultView.top%3B%0A%09%09%09//%7D%0A%09%09%09try%20%7B%0A%09%09%09%09return%20%22QueryInterface%22%20in%20win%0A%09%09%09%09%09%3F%20win.QueryInterface%28Components.interfaces.nsIInterfaceRequestor%29%0A%09%09%09%09%09%09.getInterface%28Components.interfaces.nsIWebNavigation%29%0A%09%09%09%09%09%09.QueryInterface%28Components.interfaces.nsIDocShellTreeItem%29%0A%09%09%09%09%09%09.rootTreeItem%0A%09%09%09%09%09%09.QueryInterface%28Components.interfaces.nsIInterfaceRequestor%29%0A%09%09%09%09%09%09.getInterface%28Components.interfaces.nsIDOMWindow%29%0A%09%09%09%09%09%3A%20win.docShell.rootTreeItem.domWindow%3B%20//%20Firefox%2070+%0A%09%09%09%7D%0A%09%09%09catch%28e%29%20%7B%0A%09%09%09%09Components.utils.reportError%28e%29%3B%0A%09%09%09%7D%0A%09%09%09return%20win%3B%0A%09%09%7D%2C%0A%09%09getChildNodes%3A%20function%28node%2C%20child%29%20%7B%0A%09%09%09if%28_preferNotAnonymousChildNodes%29%20%7B%0A%09%09%09%09var%20childNodes%20%3D%20node.childNodes%3B%0A%09%09%09%09if%28%21childNodes.length%20%26%26%20%22getAnonymousNodes%22%20in%20node.ownerDocument%29%0A%09%09%09%09%09childNodes%20%3D%20node.ownerDocument.getAnonymousNodes%28node%29%3B%0A%09%09%09%09return%20childNodes%3B%0A%09%09%09%7D%0A%09%09%09var%20du%20%3D%20this.domUtils%3B%0A%09%09%09if%28%22getChildrenForNode%22%20in%20du%29%20try%20%7B%20//%20Gecko%207.0+%0A%09%09%09%09return%20du.getChildrenForNode%28node%2C%20true%29%3B%0A%09%09%09%7D%0A%09%09%09catch%28e%29%20%7B%0A%09%09%09%09if%28%28%22%22%20+%20e%29.indexOf%28%22NS_ERROR_XPC_CANT_PASS_CPOW_TO_NATIVE%22%29%20%3D%3D%20-1%29%0A%09%09%09%09%09Components.utils.reportError%28e%29%3B%0A%09%09%09%09//return%20node.childNodes%3B%0A%09%09%09%7D%0A%09%09%09var%20childNodes%20%3D%20node%20instanceof%20XULElement%0A%09%09%09%09%26%26%20%22getAnonymousNodes%22%20in%20node.ownerDocument%0A%09%09%09%09%26%26%20node.ownerDocument.getAnonymousNodes%28node%29%0A%09%09%09%09%7C%7C%20node.childNodes%3B%0A%09%09%09//%20We%20can%27t%20get%20child%20nodes%20of%20anonymous%20node...%0A%09%09%09if%28%21childNodes%20%7C%7C%20%21childNodes.length%29%20%7B%0A%09%09%09%09if%28%21child%29%0A%09%09%09%09%09child%20%3D%20node.firstChild%3B%0A%09%09%09%09if%28%21child%29%20%7B%20//%20Get%20nearest%20not%20anonymous%20parent%0A%09%09%09%09%09for%28var%20p%20%3D%20node.parentNode%3B%20p%3B%20p%20%3D%20p.parentNode%29%0A%09%09%09%09%09%09if%28p.childNodes.length%29%0A%09%09%09%09%09%09%09return%20p.childNodes%3B%0A%09%09%09%09%7D%0A%09%09%09%09if%28child%29%20%7B%0A%09%09%09%09%09var%20childNodes%20%3D%20%5Bchild%5D%3B%0A%09%09%09%09%09var%20sibling%20%3D%20child%3B%0A%09%09%09%09%09while%28%28sibling%20%3D%20sibling.previousSibling%29%29%0A%09%09%09%09%09%09childNodes.unshift%28sibling%29%3B%0A%09%09%09%09%09sibling%20%3D%20child%3B%0A%09%09%09%09%09while%28%28sibling%20%3D%20sibling.nextSibling%29%29%0A%09%09%09%09%09%09childNodes.push%28sibling%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%0A%09%09%09return%20childNodes%3B%0A%09%09%7D%2C%0A%09%09get%20hasDOMInspector%28%29%20%7B%0A%09%09%09delete%20this.hasDOMInspector%3B%0A%09%09%09return%20this.hasDOMInspector%20%3D%20%[email protected]/commandlinehandler/general-startup%3B1%3Ftype%3Dinspector%22%20in%20Components.classes%3B%0A%09%09%7D%2C%0A%09%09checkDOMInspector%3A%20function%28%29%20%7B%0A%09%09%09if%28this.hasDOMInspector%29%0A%09%09%09%09return%20true%3B%0A%09%09%09_log%28%22DOM%20Inspector%20not%20installed%21%22%29%3B%0A%09%09%09var%20label%20%3D%20this.context.button%20%26%26%20this.context.button.label%0A%09%09%09%09%7C%7C%20%22Attributes%20Inspector%22%3B%0A%09%09%09var%20ps%20%3D%20Components.classes%5B%[email protected]/prompter%3B1%22%5D%0A%09%09%09%09%7C%7C%20Components.classes%5B%[email protected]/embedcomp/prompt-service%3B1%22%5D%3B%0A%09%09%09ps.getService%28Components.interfaces.nsIPromptService%29%0A%09%09%09%09.alert%28null%2C%20label%2C%20%22DOM%20Inspector%20not%20found%21%22%29%3B%0A%09%09%09return%20false%3B%0A%09%09%7D%2C%0A%09%09inspectNode%3A%20function%28node%29%20%7B%0A%09%09%09if%28%21this.checkDOMInspector%28%29%29%0A%09%09%09%09return%3B%0A%0A%09%09%09var%20top%20%3D%20this.getTopWindow%28node%29%3B%0A%09%09%09_log%28%22Open%20DOM%20Inspector%20for%20%3C%22%20+%20node.nodeName%20+%20%22%3E%20from%20%22%20+%20top.location%29%3B%0A%09%09%09if%28%21_showFullTree%20%7C%7C%20_nodePosition%20%3C%200%20%7C%7C%20this.fxVersion%20%3C%202%29%20%7B%0A%09%09%09%09//%20See%20window.inspectDOMNode%28%29%0A%09%09%09%09top.openDialog%28%22chrome%3A//inspector/content/%22%2C%20%22_blank%22%2C%20%22chrome%2Call%2Cdialog%3Dno%22%2C%20node%29%3B%0A%09%09%09%09return%3B%0A%09%09%09%7D%0A%0A%09%09%09var%20inspWin%20%3D%20top.openDialog%28%0A%09%09%09%09%22chrome%3A//inspector/content/%22%2C%0A%09%09%09%09%22_blank%22%2C%0A%09%09%09%09%22chrome%2Call%2Cdialog%3Dno%22%2C%0A%09%09%09%09_showFullTree%20%3D%3D%200%0A%09%09%09%09%09%3F%20node.ownerDocument%20%7C%7C%20node%0A%09%09%09%09%09%3A%20_showFullTree%20%3D%3D%201%0A%09%09%09%09%09%09%3F%20%28node.ownerDocument%20%7C%7C%20node%29.defaultView.top.document%0A%09%09%09%09%09%09%3A%20%28top%20%7C%7C%20window.top%29.document%0A%09%09%09%29%3B%0A%09%09%09inspWin%20%3D%20inspWin.wrappedJSObject%20%7C%7C%20inspWin%3B%20//%20At%20least%20for%20Firefox%203.0%0A%09%09%09inspWin.addEventListener%28%22load%22%2C%20function%20onLoad%28e%29%20%7B%0A%09%09%09%09inspWin.removeEventListener%28%22load%22%2C%20onLoad%2C%20false%29%3B%0A%09%09%09%09inspect%28%29%3B%0A%09%09%09%7D%2C%20false%29%3B%0A%0A%09%09%09var%20_this%20%3D%20this%3B%0A%09%09%09var%20stopTime%20%3D%20Date.now%28%29%20+%205e3%3B%0A%09%09%09var%20restoreBlink%20%3D%20this.overrideBoolPref%28%22inspector.blink.on%22%2C%20false%29%3B%0A%09%09%09function%20wait%28%29%20%7B%0A%09%09%09%09if%28Date.now%28%29%20%3C%20stopTime%29%0A%09%09%09%09%09inspWin.setTimeout%28inspect%2C%2010%29%3B%0A%09%09%09%09else%0A%09%09%09%09%09_log%28%22inspectNode%28%29%3A%20take%20too%20many%20time%22%29%3B%0A%09%09%09%7D%0A%09%09%09function%20inspect%28%29%20%7B%0A%09%09%09%09var%20inspector%20%3D%20%22inspector%22%20in%20inspWin%20%26%26%20inspWin.inspector%3B%0A%09%09%09%09if%28%21inspector%29%0A%09%09%09%09%09return%20wait%28%29%3B%0A%09%09%09%09try%20%7B%0A%09%09%09%09%09//%20Avoid%20warnings%20in%20error%20console%20after%20getViewer%28%22dom%22%29%0A%09%09%09%09%09var%20hash%20%3D%20inspector.mPanelSet.registry.mViewerHash%3B%0A%09%09%09%09%09if%28hash%20%26%26%20%21%28%22dom%22%20in%20hash%29%29%0A%09%09%09%09%09%09return%20wait%28%29%3B%0A%09%09%09%09%7D%0A%09%09%09%09catch%28e%29%20%7B%0A%09%09%09%09%09Components.utils.reportError%28e%29%3B%0A%09%09%09%09%7D%0A%09%09%09%09try%20%7B%0A%09%09%09%09%09var%20viewer%20%3D%20inspector.getViewer%28%22dom%22%29%3B%0A%09%09%09%09%7D%0A%09%09%09%09catch%28e%29%20%7B%0A%09%09%09%09%09Components.utils.reportError%28e%29%3B%0A%09%09%09%09%09return%20wait%28%29%3B%0A%09%09%09%09%7D%0A%0A%09%09%09%09_this.timer%28restoreBlink%29%3B%0A%0A%09%09%09%09if%28%22showNodeInTree%22%20in%20viewer%29%20//%20New%20DOM%20Inspector%0A%09%09%09%09%09viewer.showNodeInTree%28node%29%3B%0A%09%09%09%09else%0A%09%09%09%09%09viewer.selectElementInTree%28node%29%3B%0A%09%09%09%09if%28_nodePosition%20%3E%3D%200%29%20%7B%0A%09%09%09%09%09if%28%22nsITreeBoxObject%22%20in%20Components.interfaces%29%20%7B%0A%09%09%09%09%09%09var%20tbo%20%3D%20viewer.mDOMTree.treeBoxObject%3B%0A%09%09%09%09%09%09var%20visibleRows%20%3D%20tbo.height/tbo.rowHeight%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09else%20%7B%20//%20Firefox%2066+%2C%20https%3A//bugzilla.mozilla.org/show_bug.cgi%3Fid%3D1482389%0A%09%09%09%09%09%09var%20tbo%20%3D%20viewer.mDOMTree%3B%0A%09%09%09%09%09%09var%20visibleRows%20%3D%20tbo.getPageLength%28%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09var%20cur%20%3D%20tbo.view.selection.currentIndex%3B%0A%09%09%09%09%09var%20first%20%3D%20tbo.getFirstVisibleRow%28%29%3B%0A%09%09%09%09%09var%20newFirst%20%3D%20cur%20-%20_nodePosition*visibleRows%20+%201%3B%0A%09%09%09%09%09tbo.scrollByLines%28Math.round%28newFirst%20-%20first%29%29%3B%0A%09%09%09%09%09tbo.ensureRowIsVisible%28cur%29%3B%20//%20Should%20be%20visible%2C%20but...%0A%09%09%09%09%7D%0A%09%09%09%09return%20true%3B%0A%09%09%09%7D%0A%09%09%7D%2C%0A%09%09inspectWindow%3A%20function%28node%29%20%7B%0A%09%09%09if%28%21this.checkDOMInspector%28%29%29%0A%09%09%09%09return%3B%0A%0A%09%09%09_log%28%22inspectWindow%28%29%3A%20open%20DOM%20Inspector%20for%20%3C%22%20+%20node.nodeName%20+%20%22%3E%22%29%3B%0A%09%09%09var%20top%20%3D%20this.getTopWindow%28node%29%3B%0A%09%09%09var%20inspWin%20%3D%20top.openDialog%28%0A%09%09%09%09%22chrome%3A//inspector/content/%22%2C%0A%09%09%09%09%22_blank%22%2C%0A%09%09%09%09%22chrome%2Call%2Cdialog%3Dno%22%2C%0A%09%09%09%09//node.ownerDocument%20%7C%7C%20node%0A%09%09%09%09node%0A%09%09%09%29%3B%0A%09%09%09inspWin%20%3D%20inspWin.wrappedJSObject%20%7C%7C%20inspWin%3B%20//%20At%20least%20for%20Firefox%201.5%0A%09%09%09inspWin.addEventListener%28%22load%22%2C%20function%20onLoad%28e%29%20%7B%0A%09%09%09%09inspWin.removeEventListener%28%22load%22%2C%20onLoad%2C%20false%29%3B%0A%09%09%09%09_log%28%22inspectWindow%28%29%3A%20DOM%20Inspector%20loaded%22%29%3B%0A%09%09%09%09wait%28_this.fxVersion%20%3D%3D%201.5%20%3F%20200%20%3A%200%29%3B%0A%09%09%09%7D%2C%20false%29%3B%0A%0A%09%09%09var%20_this%20%3D%20this%3B%0A%09%09%09var%20stopTime%20%3D%20Date.now%28%29%20+%205e3%3B%0A%09%09%09var%20restoreBlink%20%3D%20this.overrideBoolPref%28%22inspector.blink.on%22%2C%20false%29%3B%0A%09%09%09function%20wait%28delay%29%20%7B%0A%09%09%09%09if%28Date.now%28%29%20%3C%20stopTime%29%0A%09%09%09%09%09inspWin.setTimeout%28inspect%2C%20delay%20%7C%7C%2010%29%3B%0A%09%09%09%09else%0A%09%09%09%09%09_log%28%22inspectWindow%28%29%3A%20take%20too%20many%20time%22%29%3B%0A%09%09%09%7D%0A%09%09%09function%20inspect%28%29%20%7B%0A%09%09%09%09var%20doc%20%3D%20inspWin.document%3B%0A%09%09%09%09var%20panel%20%3D%20doc.getElementById%28%22bxDocPanel%22%29%3B%0A%09%09%09%09if%28%21panel%29%0A%09%09%09%09%09return%20wait%28%29%3B%0A%09%09%09%09var%20js%20%3D%20doc.getAnonymousElementByAttribute%28panel%2C%20%22viewerListEntry%22%2C%20%228%22%29%0A%09%09%09%09%09%7C%7C%20doc.getAnonymousElementByAttribute%28panel%2C%20%22viewerListEntry%22%2C%20%227%22%29%3B%20//%20DOM%20Inspector%201.8.1.x%2C%20Firefox%202.0.0.x%0A%09%09%09%09var%20browser%20%3D%20doc.getAnonymousElementByAttribute%28panel%2C%20%22anonid%22%2C%20%22viewer-iframe%22%29%3B%0A%09%09%09%09if%28%21js%20%7C%7C%20%21browser%29%0A%09%09%09%09%09return%20wait%28%29%3B%0A%09%09%09%09_this.timer%28restoreBlink%29%3B%0A%09%09%09%09browser.addEventListener%28%22load%22%2C%20function%20load%28e%29%20%7B%0A%09%09%09%09%09if%28e.target.documentURI%20%3D%3D%20%22about%3Ablank%22%29%0A%09%09%09%09%09%09return%3B%0A%09%09%09%09%09browser.removeEventListener%28e.type%2C%20load%2C%20true%29%3B%0A%09%09%09%09%09stopTime%20%3D%20Date.now%28%29%20+%203e3%3B%0A%09%09%09%09%09inspWin.setTimeout%28function%20selectWindow%28%29%20%7B%0A%09%09%09%09%09%09var%20brDoc%20%3D%20browser.contentDocument%3B%0A%09%09%09%09%09%09var%20tree%20%3D%20brDoc%20%26%26%20brDoc.getElementById%28%22treeJSObject%22%29%3B%0A%09%09%09%09%09%09if%28tree%20%26%26%20tree.view%20%26%26%20tree.view.selection%20%26%26%20tree.columns%29%20%7B%0A%09%09%09%09%09%09%09var%20keyCol%20%3D%20tree.columns.getKeyColumn%28%29%3B%0A%09%09%09%09%09%09%09var%20view%20%3D%20tree.view%3B%0A%09%09%09%09%09%09%09var%20rowCount%20%3D%20view.rowCount%3B%0A%09%09%09%09%09%09%09if%28rowCount%20%3D%3D%201%29%20%7B%20//%20DOM%20Inspector%201.8.1.x%2C%20Firefox%202.0.0.x%0A%09%09%09%09%09%09%09%09tree.changeOpenState%280%2C%20true%29%3B%0A%09%09%09%09%09%09%09%09rowCount%20%3D%20view.rowCount%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09for%28var%20i%20%3D%200%3B%20i%20%3C%20rowCount%3B%20++i%29%20%7B%0A%09%09%09%09%09%09%09%09var%20cellText%20%3D%20view.getCellText%28i%2C%20keyCol%29%3B%0A%09%09%09%09%09%09%09%09if%28cellText%20%3D%3D%20%22defaultView%22%29%20%7B%0A%09%09%09%09%09%09%09%09%09_log%28%27inspectWindow%28%29%3A%20scroll%20to%20%22defaultView%22%20entry%27%29%3B%0A%09%09%09%09%09%09%09%09%09var%20tbo%20%3D%20%22nsITreeBoxObject%22%20in%20Components.interfaces%0A%09%09%09%09%09%09%09%09%09%09%3F%20tree.treeBoxObject%0A%09%09%09%09%09%09%09%09%09%09%3A%20tree%3B%20//%20Firefox%2066+%0A%09%09%09%09%09%09%09%09%09tbo.beginUpdateBatch%28%29%3B%0A%09%09%09%09%09%09%09%09%09tree.changeOpenState%28i%2C%20true%29%3B%0A%09%09%09%09%09%09%09%09%09view.selection.select%28i%29%3B%0A%09%09%09%09%09%09%09%09%09tbo.scrollByLines%28i%29%3B%0A%09%09%09%09%09%09%09%09%09tbo.ensureRowIsVisible%28i%29%3B%0A%09%09%09%09%09%09%09%09%09tbo.endUpdateBatch%28%29%3B%0A%09%09%09%09%09%09%09%09%09inspWin.setTimeout%28function%28%29%20%7B%20//%20Tree%20not%20yet%20loaded%3F%0A%09%09%09%09%09%09%09%09%09%09var%20di%20%3D%20i%20-%20tbo.getFirstVisibleRow%28%29%3B%0A%09%09%09%09%09%09%09%09%09%09if%28di%29%20%7B%0A%09%09%09%09%09%09%09%09%09%09%09_log%28%22inspectWindow%28%29%3A%20tree%20changed%20%3D%3E%20scrollByLines%28%22%20+%20di%20+%20%22%29%22%29%3B%0A%09%09%09%09%09%09%09%09%09%09%09tbo.scrollByLines%28di%29%3B%0A%09%09%09%09%09%09%09%09%09%09%09tbo.ensureRowIsVisible%28i%29%3B%0A%09%09%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%09%09%7D%2C%200%29%3B%0A%09%09%09%09%09%09%09%09%09return%3B%0A%09%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09if%28Date.now%28%29%20%3C%20stopTime%29%0A%09%09%09%09%09%09%09inspWin.setTimeout%28selectWindow%2C%2025%29%3B%0A%09%09%09%09%09%7D%2C%20_this.fxVersion%20%3D%3D%201.5%20%3F%2050%20%3A%200%29%3B%0A%09%09%09%09%7D%2C%20true%29%3B%0A%09%09%09%09_log%28%22inspectWindow%28%29%3A%20select%20JavaScript%20Object%20panel%22%29%3B%0A%09%09%09%09return%20js.doCommand%28%29%3B%0A%09%09%09%7D%0A%09%09%7D%2C%0A%09%09overrideBoolPref%3A%20function%28prefName%2C%20prefVal%29%20%7B%0A%09%09%09var%20prefs%20%3D%20Components.classes%5B%[email protected]/preferences-service%3B1%22%5D%0A%09%09%09%09.getService%28Components.interfaces.nsIPrefBranch%29%3B%0A%09%09%09try%20%7B%0A%09%09%09%09var%20origVal%20%3D%20prefs.getBoolPref%28prefName%29%3B%0A%09%09%09%7D%0A%09%09%09catch%28e%29%20%7B%0A%09%09%09%09//%20Firefox%2058+%3A%20Remove%20support%20for%20extensions%20having%20their%20own%20prefs%20file%0A%09%09%09%09//%20https%3A//bugzilla.mozilla.org/show_bug.cgi%3Fid%3D1413413%0A%09%09%09%7D%0A%09%09%09if%28origVal%20%3D%3D%20prefVal%20%7C%7C%20origVal%20%3D%3D%3D%20undefined%29%0A%09%09%09%09return%20function%20restore%28%29%20%7B%7D%3B%0A%09%09%09prefs.setBoolPref%28prefName%2C%20prefVal%29%3B%0A%09%09%09var%20_this%20%3D%20this%3B%0A%09%09%09function%20restore%28%29%20%7B%0A%09%09%09%09_this.cancelTimer%28timer%29%3B%0A%09%09%09%09prefs.setBoolPref%28prefName%2C%20origVal%29%3B%0A%09%09%09%7D%0A%09%09%09var%20timer%20%3D%20this.timer%28restore%2C%20this%2C%203e3%29%3B%0A%09%09%09return%20restore%3B%0A%09%09%7D%2C%0A%09%09copyTootipContent%3A%20function%28%29%20%7B%0A%09%09%09var%20node%20%3D%20this._node%3B%0A%09%09%09var%20sourceWindow%20%3D%20node%20%26%26%20%28node.ownerDocument%20%7C%7C%20node%29.defaultView%3B%0A%09%09%09var%20tt%20%3D%20this.context.tt%3B%0A%09%09%09var%20text%20%3D%20Array.prototype.map.call%28tt.childNodes%2C%20function%28node%29%20%7B%0A%09%09%09%09return%20node.textContent%3B%0A%09%09%09%7D%29.join%28%22%5Cn%22%29%3B%0A%09%09%09var%20_tt%20%3D%20tt.cloneNode%28true%29%3B%0A%09%09%09Array.prototype.forEach.call%28_tt.getElementsByAttribute%28%22class%22%2C%20%22attrsInspector-value%22%29%2C%20function%28elt%29%20%7B%0A%09%09%09%09elt.style.whiteSpace%20%3D%20%22pre%22%3B%0A%09%09%09%7D%29%3B%0A%09%09%09if%28_tt.firstChild.style.whiteSpace%20%3D%3D%20%22-moz-pre-wrap%22%29%20//%20Part%20of%20hack%20for%20Firefox%201.5%20and%202.0%0A%09%09%09%09_tt.firstChild.style.whiteSpace%20%3D%20%22pre%22%3B%0A%09%09%09var%20html%20%3D%20Array.prototype.map.call%28_tt.childNodes%2C%20function%28node%29%20%7B%0A%09%09%09%09return%20new%20XMLSerializer%28%29.serializeToString%28node%29%3B%0A%09%09%09%7D%29.join%28%22%5Cn%22%29%3B%0A%09%09%09var%20td%20%3D%20text.replace%28/%5Cr%5Cn%3F%7C%5Cn/g%2C%20this.lineBreak%29%3B%0A%09%09%09this.setClipboardData%28%7B%0A%09%09%09%09%22text/plain%22%3A%20%20%20td%2C%0A%09%09%09%09%22text/unicode%22%3A%20td%2C%0A%09%09%09%09%22text/html%22%3A%20%20%20%20html.replace%28/%5Cr%5Cn%3F%7C%5Cn/g%2C%20this.lineBreak%29%0A%09%09%09%7D%2C%20sourceWindow%29%3B%0A%0A%09%09%09if%28%21/%28%3F%3A%5E%7C%5Cs%29attrsInspector-copied%28%3F%3A%5Cs%7C%24%29/.test%28tt.className%29%29%0A%09%09%09%09tt.className%20+%3D%20%22%20attrsInspector-copied%22%3B%0A%09%09%09//tt.style.opacity%20%3D%20%220.75%22%3B%0A%09%09%09tt.style.color%20%3D%20%22grayText%22%3B%0A%09%09%09this.timer%28function%28%29%20%7B%0A%09%09%09%09tt.className%20%3D%20tt.className%0A%09%09%09%09%09.replace%28/%28%3F%3A%5E%7C%5Cs%29attrsInspector-copied%28%3F%3A%5Cs%7C%24%29/%2C%20%22%20%22%29%0A%09%09%09%09%09.replace%28/%5Cs+%24/%2C%20%22%22%29%3B%0A%09%09%09%09//tt.style.opacity%20%3D%20%22%22%3B%0A%09%09%09%09tt.style.color%20%3D%20%22%22%3B%0A%09%09%09%7D%2C%20this%2C%20150%29%3B%0A%09%09%7D%2C%0A%09%09get%20lineBreak%28%29%20%7B%0A%09%09%09delete%20this.lineBreak%3B%0A%09%09%09return%20this.lineBreak%20%3D%20this.appInfo.OS%20%3D%3D%20%22WINNT%22%20%3F%20%22%5Cr%5Cn%22%20%3A%20%22%5Cn%22%3B%0A%09%09%7D%2C%0A%09%09stopSingleEvent%3A%20function%28e%2C%20type%29%20%7B%0A%09%09%09var%20top%20%3D%20this.getTopWindow%28e.target%29%3B%0A%09%09%09var%20stopEvent%20%3D%20this.stopEvent%3B%0A%09%09%09top.addEventListener%28type%2C%20function%20handler%28e%29%20%7B%0A%09%09%09%09top.removeEventListener%28type%2C%20handler%2C%20true%29%3B%0A%09%09%09%09stopEvent%28e%29%3B%0A%09%09%09%7D%2C%20true%29%3B%0A%09%09%7D%2C%0A%09%09mousedownHandler%3A%20function%28e%29%20%7B%0A%09%09%09if%28this.canInspect%28e%29%29%20%7B%0A%09%09%09%09this._checkPreventDefault%28e%29%3B%0A%09%09%09%09this.stopEvent%28e%29%3B%0A%09%09%09%7D%0A%09%09%7D%2C%0A%09%09mouseupHandler%3A%20function%28e%29%20%7B%0A%09%09%09this.mousedownHandler.apply%28this%2C%20arguments%29%3B%0A%09%09%7D%2C%0A%09%09clickHandler%3A%20function%28e%29%20%7B%0A%09%09%09if%28%21this.canInspect%28e%29%29%0A%09%09%09%09return%3B%0A%09%09%09this._checkPreventDefault%28e%29%3B%0A%09%09%09this.stopEvent%28e%29%3B%0A%09%09%09var%20nodes%20%3D%20this._nodes%3B%0A%09%09%09var%20node%20%3D%20nodes.length%20%3F%20nodes%5B0%5D%20%3A%20e.originalTarget%3B%0A%09%09%09this.inspect%28node%2C%20e.shiftKey%29%3B%0A%09%09%7D%2C%0A%09%09inspect%3A%20function%28node%2C%20forcePopupLocker%29%20%7B%0A%09%09%09var%20top%20%3D%20this.getTopWindow%28node%29%3B%0A%09%09%09if%28this.hasDOMInspector%20%26%26%20_popupLocker%20%26%26%20%28_popupLocker%20%3D%3D%202%20%7C%7C%20forcePopupLocker%29%29%0A%09%09%09%09this.lockPopup%28node%29%3B%0A%09%09%09this.stop%28%29%3B%0A%09%09%09this.closeMenus%28node%29%3B%0A%09%09%09this.hideUnclosedPopups%28%29%3B%0A%09%09%09this.inspectNode%28node%29%3B%0A%09%09%7D%2C%0A%09%09getPopup%3A%20function%28node%29%20%7B%0A%09%09%09for%28%3B%20node%20%26%26%20%22tagName%22%20in%20node%3B%20node%20%3D%20node.parentNode%29%0A%09%09%09%09if%28%0A%09%09%09%09%09node.namespaceURI%20%3D%3D%20%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%0A%09%09%09%09%09%26%26%20%22hidePopup%22%20in%20node%0A%09%09%09%09%29%0A%09%09%09%09%09return%20node%3B%0A%09%09%09return%20null%3B%0A%09%09%7D%2C%0A%09%09lockPopup%3A%20function%28node%29%20%7B%0A%09%09%09var%20popup%20%3D%20this.getPopup%28node%29%3B%0A%09%09%09if%28%21popup%29%0A%09%09%09%09return%3B%0A%0A%09%09%09var%20popupLocker%20%3D%20%7B%0A%09%09%09%09context%3A%20this%2C%0A%09%09%09%09domiWindow%3A%20null%2C%0A%09%09%09%09window%3A%20this.getTopWindow%28node%29%2C%0A%09%09%09%09popup%3A%20popup%2C%0A%09%09%09%09tt%3A%20this.context.tt%2C%0A%09%09%09%09ww%3A%20this.context.ww%2C%0A%09%09%09%09fxVersion%3A%20this.fxVersion%2C%0A%09%09%09%09closeMenus%3A%20this.closeMenus%2C%0A%09%09%09%09stopEvent%3A%20this.stopEvent%2C%0A%09%09%09%09stopSingleEvent%3A%20function%28%29%20%7B%0A%09%09%09%09%09this.context.stopSingleEvent.apply%28this.context%2C%20arguments%29%3B%0A%09%09%09%09%7D%2C%0A%09%09%09%09_getPopupInfo%3A%20this._getPopupInfo%2C%0A%09%09%09%09_popups%3A%20%5B%5D%2C%0A%09%09%09%09init%3A%20function%28%29%20%7B%0A%09%09%09%09%09var%20w%20%3D%20this.window%3B%0A%09%09%09%09%09//w.addEventListener%28%22unload%22%2C%20%20%20%20%20%20%20this%2C%20false%29%3B%0A%09%09%09%09%09w.addEventListener%28%22keydown%22%2C%20%20%20%20%20%20this%2C%20true%29%3B%0A%09%09%09%09%09w.addEventListener%28%22keypress%22%2C%20%20%20%20%20this%2C%20true%29%3B%0A%09%09%09%09%09w.addEventListener%28%22keyup%22%2C%20%20%20%20%20%20%20%20this%2C%20true%29%3B%0A%09%09%09%09%09w.addEventListener%28%22popupshowing%22%2C%20this%2C%20true%29%3B%0A%09%09%09%09%09w.addEventListener%28%22popuphiding%22%2C%20%20this%2C%20true%29%3B%0A%09%09%09%09%09this.ww.registerNotification%28this%29%3B%0A%09%09%09%09%09_log%28%22Popup%20locker%3A%20start%22%29%3B%0A%09%09%09%09%7D%2C%0A%09%09%09%09destroy%3A%20function%28%29%20%7B%0A%09%09%09%09%09var%20w%20%3D%20this.window%3B%0A%09%09%09%09%09//w.removeEventListener%28%22unload%22%2C%20%20%20%20%20%20%20this%2C%20false%29%3B%0A%09%09%09%09%09w.removeEventListener%28%22keydown%22%2C%20%20%20%20%20%20this%2C%20true%29%3B%0A%09%09%09%09%09w.removeEventListener%28%22keypress%22%2C%20%20%20%20%20this%2C%20true%29%3B%0A%09%09%09%09%09w.removeEventListener%28%22keyup%22%2C%20%20%20%20%20%20%20%20this%2C%20true%29%3B%0A%09%09%09%09%09w.removeEventListener%28%22popupshowing%22%2C%20this%2C%20true%29%3B%0A%09%09%09%09%09w.removeEventListener%28%22popuphiding%22%2C%20%20this%2C%20true%29%3B%0A%09%09%09%09%09this.ww.unregisterNotification%28this%29%3B%0A%09%09%09%09%09this._popups.forEach%28function%28popup%29%20%7B%0A%09%09%09%09%09%09if%28%22hidePopup%22%20in%20popup%29%0A%09%09%09%09%09%09%09popup.hidePopup%28%29%3B%0A%09%09%09%09%09%7D%29%3B%0A%09%09%09%09%09_log%28%22Popup%20locker%3A%20stop%22%29%3B%0A%09%09%09%09%7D%2C%0A%09%09%09%09handleEvent%3A%20function%28e%29%20%7B%0A%09%09%09%09%09switch%28e.type%29%20%7B%0A%09%09%09%09%09%09case%20%22popupshowing%22%3A%0A%09%09%09%09%09%09%09var%20popup%20%3D%20e.originalTarget%3B%0A%09%09%09%09%09%09%09if%28popup%20%3D%3D%20this.tt%29%0A%09%09%09%09%09%09%09%09break%3B%0A%09%09%09%09%09%09%09this.stopEvent%28e%29%3B%0A%09%09%09%09%09%09%09_log%28%22Popup%20locker%3A%20prevent%20popup%20showing%3A%20%22%20+%20this._getPopupInfo%28popup%29%29%3B%0A%09%09%09%09%09%09break%3B%0A%09%09%09%09%09%09case%20%22popuphiding%22%3A%0A%09%09%09%09%09%09%09var%20popup%20%3D%20e.originalTarget%3B%0A%09%09%09%09%09%09%09if%28popup%20%3D%3D%20this.tt%29%0A%09%09%09%09%09%09%09%09break%3B%0A%09%09%09%09%09%09%09//if%28e.originalTarget%20%3D%3D%20this.popup%29%0A%09%09%09%09%09%09%09this.stopEvent%28e%29%3B%0A%09%09%09%09%09%09%09_log%28%22Popup%20locker%3A%20prevent%20popup%20hiding%3A%20%22%20+%20this._getPopupInfo%28popup%29%29%3B%0A%09%09%09%09%09%09%09if%28this._popups.indexOf%28popup%29%20%3D%3D%20-1%29%0A%09%09%09%09%09%09%09%09this._popups.push%28popup%29%3B%0A%09%09%09%09%09%09break%3B%0A%09%09%09%09%09%09case%20%22keydown%22%3A%0A%09%09%09%09%09%09case%20%22keypress%22%3A%0A%09%09%09%09%09%09case%20%22keyup%22%3A%0A%09%09%09%09%09%09%09var%20onlyStop%20%3D%20this.fxVersion%20%3C%2025%20//%20See%20notes%20in%20keypressHandler%28%29%0A%09%09%09%09%09%09%09%09%3F%20e.type%20%3D%3D%20%22keydown%22%20%7C%7C%20e.type%20%3D%3D%20%22keyup%22%0A%09%09%09%09%09%09%09%09%3A%20e.type%20%3D%3D%20%22keypress%22%20%7C%7C%20e.type%20%3D%3D%20%22keyup%22%3B%0A%09%09%09%09%09%09%09if%28e.keyCode%20%3D%3D%20e.DOM_VK_ESCAPE%29%20%7B%0A%09%09%09%09%09%09%09%09this.stopEvent%28e%29%3B%0A%09%09%09%09%09%09%09%09if%28onlyStop%29%0A%09%09%09%09%09%09%09%09%09return%3B%0A%09%09%09%09%09%09%09%09this.stopSingleEvent%28e%2C%20%22keyup%22%29%3B%0A%09%09%09%09%09%09%09%09_log%28%22Popup%20locker%3A%20Escape%20pressed%20%3D%3E%20destroy%22%29%3B%0A%09%09%09%09%09%09%09%09this.destroy%28%29%3B%0A%09%09%09%09%09%09%09%09this.closeMenus%28this.popup%29%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09break%3B%0A%09%09%09%09%09%09case%20%22load%22%3A%0A%09%09%09%09%09%09%09var%20win%20%3D%20e.target.defaultView%3B%0A%09%09%09%09%09%09%09win.removeEventListener%28%22load%22%2C%20this%2C%20false%29%3B%0A%09%09%09%09%09%09%09if%28%21this.domiWindow%20%26%26%20win.location.href%20%3D%3D%20%22chrome%3A//inspector/content/inspector.xul%22%29%20%7B%0A%09%09%09%09%09%09%09%09_log%28%22Popup%20locker%3A%20DOM%20Inspector%20opened%22%29%3B%0A%09%09%09%09%09%09%09%09this.domiWindow%20%3D%20win%3B%0A%09%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%2C%0A%09%09%09%09observe%3A%20function%28subject%2C%20topic%2C%20data%29%20%7B%0A%09%09%09%09%09if%28topic%20%3D%3D%20%22domwindowopened%22%29%20%7B%0A%09%09%09%09%09%09subject.addEventListener%28%22load%22%2C%20this%2C%20false%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09else%20if%28topic%20%3D%3D%20%22domwindowclosed%22%29%20%7B%0A%09%09%09%09%09%09subject.removeEventListener%28%22load%22%2C%20this%2C%20false%29%3B%0A%09%09%09%09%09%09if%28subject%20%3D%3D%20this.domiWindow%29%20%7B%0A%09%09%09%09%09%09%09_log%28%22Popup%20locker%3A%20DOM%20Inspector%20closed%20%3D%3E%20destroy%22%29%3B%0A%09%09%09%09%09%09%09this.destroy%28%29%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09else%20if%28subject%20%3D%3D%20this.window%29%20%7B%0A%09%09%09%09%09%09%09_log%28%22Popup%20locker%3A%20locked%20window%20closed%20%3D%3E%20destroy%22%29%3B%0A%09%09%09%09%09%09%09this.destroy%28%29%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%7D%3B%0A%09%09%09popupLocker.init%28%29%3B%0A%09%09%7D%2C%0A%09%09_checkPreventDefault%3A%20function%28e%29%20%7B%0A%09%09%09try%20%7B%0A%09%09%09%09if%28%22defaultPrevented%22%20in%20e%20%3F%20e.defaultPrevented%20%3A%20e.getPreventDefault%28%29%29%0A%09%09%09%09%09_log%28%27Warning%21%20Default%20action%20for%20%22%27%20+%20e.type%20+%20%27%22%20event%20is%20already%20cancelled%21%27%29%3B%0A%09%09%09%7D%0A%09%09%09catch%28e%29%20%7B%20//%20e10s%3A%20TypeError%3A%20%27getPreventDefault%27%20called%20on%20an%20object%20that%20does%20not%20implement%20interface%20Event.%0A%09%09%09%09if%28_debug%20%7C%7C%20%28%22%22%20+%20e%29.indexOf%28%22does%20not%20implement%20interface%22%29%20%3D%3D%20-1%29%0A%09%09%09%09%09Components.utils.reportError%28e%29%3B%0A%09%09%09%7D%0A%09%09%7D%2C%0A%09%09closeMenus%3A%20function%28node%29%20%7B%0A%09%09%09//%20Based%20on%20function%20closeMenus%20from%20chrome%3A//browser/content/utilityOverlay.js%0A%09%09%09for%28%3B%20node%20%26%26%20%22tagName%22%20in%20node%3B%20node%20%3D%20node.parentNode%29%20%7B%0A%09%09%09%09if%28%0A%09%09%09%09%09node.namespaceURI%20%3D%3D%20%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%0A%09%09%09%09%09%26%26%20%28node.localName%20%3D%3D%20%22menupopup%22%20%7C%7C%20node.localName%20%3D%3D%20%22popup%22%29%0A%09%09%09%09%29%0A%09%09%09%09%09node.hidePopup%28%29%3B%0A%09%09%09%7D%0A%09%09%7D%2C%0A%0A%09%09_popups%3A%20%5B%5D%2C%0A%09%09__shiftKey%3A%20false%2C%0A%09%09get%20_shiftKey%28%29%20%7B%0A%09%09%09return%20this.__shiftKey%3B%0A%09%09%7D%2C%0A%09%09set%20_shiftKey%28val%29%20%7B%0A%09%09%09if%28val%20%3D%3D%20this.__shiftKey%29%0A%09%09%09%09return%3B%0A%09%09%09this.__shiftKey%20%3D%20val%3B%0A%09%09%09%21val%20%26%26%20this.hideUnclosedPopups%28%29%3B%0A%09%09%09if%28_showMargins%20%3D%3D%202%20%26%26%20this._node%29%0A%09%09%09%09this.setDataProxy%28this._node%29%3B%0A%09%09%7D%2C%0A%09%09hideUnclosedPopups%3A%20function%28%29%20%7B%0A%09%09%09this._popups.forEach%28function%28popup%29%20%7B%0A%09%09%09%09if%28%22hidePopup%22%20in%20popup%29%20%7B%0A%09%09%09%09%09popup.hidePopup%28%29%3B%0A%09%09%09%09%09_log%28%22Hide%20popup%3A%20%22%20+%20this._getPopupInfo%28popup%29%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%2C%20this%29%3B%0A%09%09%09this._popups%20%3D%20%5B%5D%3B%0A%09%09%7D%2C%0A%09%09popupshowingHandler%3A%20function%28e%29%20%7B%0A%09%09%09var%20tar%20%3D%20e.originalTarget%3B%0A%09%09%09if%28tar%20%3D%3D%20this.context.tt%29%0A%09%09%09%09return%3B%0A%09%09%09if%28this._shiftKey%29%0A%09%09%09%09return%3B%0A%09%09%09if%28tar.localName%20%3D%3D%20%22tooltip%22%29%20%7B%0A%09%09%09%09this.stopEvent%28e%29%3B%0A%09%09%09%09_log%28%22Forbid%20tooltip%20showing%3A%20%22%20+%20this._getPopupInfo%28tar%29%29%3B%0A%09%09%09%7D%0A%09%09%7D%2C%0A%09%09popupshownHandler%3A%20function%28e%29%20%7B%0A%09%09%09var%20tar%20%3D%20e.originalTarget%3B%0A%09%09%09if%28tar%20%3D%3D%20this.context.tt%29%0A%09%09%09%09return%3B%0A%09%09%09if%28/*this._shiftKey%20%26%26%20*/tar.localName%20%3D%3D%20%22tooltip%22%29%0A%09%09%09%09return%3B%0A%09%09%09this.makeTooltipTopmost%28true%29%3B%0A%09%09%09_log%28e.type%20+%20%22%20%3D%3E%20make%20tooltip%20topmost%22%29%3B%0A%09%09%7D%2C%0A%09%09makeTooltipTopmost%3A%20function%28restorePos%29%20%7B%0A%09%09%09this.context.tt.hidePopup%28%29%3B%20//%20Ugly%20with%20show/hide%20tooltips%20animation%0A%09%09%09restorePos%20%26%26%20this.mousemoveHandler%28%29%3B%0A%09%09%7D%2C%0A%09%09popuphidingHandler%3A%20function%28e%29%20%7B%0A%09%09%09if%28%21this._shiftKey%29%0A%09%09%09%09return%3B%0A%09%09%09var%20tar%20%3D%20e.originalTarget%3B%0A%09%09%09if%28/*tar.localName%20%3D%3D%20%22tooltip%22%20%26%26%20*/tar%20%21%3D%20this.context.tt%29%20%7B%0A%09%09%09%09this.stopEvent%28e%29%3B%0A%09%09%09%09if%28this._popups.indexOf%28tar%29%20%3D%3D%20-1%29%0A%09%09%09%09%09this._popups.push%28tar%29%3B%0A%09%09%09%09_log%28%22Forbid%20popup%20hiding%3A%20%22%20+%20this._getPopupInfo%28tar%29%29%3B%0A%09%09%09%7D%0A%09%09%7D%2C%0A%09%09_getPopupInfo%3A%20function%28tt%29%20%7B%0A%09%09%09var%20ret%20%3D%20%22%3C%22%20+%20tt.nodeName%20+%20%22%3E%22%3B%0A%09%09%09if%28tt.id%29%0A%09%09%09%09ret%20+%3D%20%27%20id%3D%22%27%20+%20tt.id%20+%20%27%22%27%3B%0A%09%09%09if%28tt.className%29%0A%09%09%09%09ret%20+%3D%20%27%20class%3D%22%27%20+%20tt.className%20+%20%27%22%27%3B%0A%09%09%09var%20val%20%3D%20tt.value%20%7C%7C%20tt.getAttribute%28%22value%22%29%20%7C%7C%20tt.getAttribute%28%22label%22%29%20%7C%7C%20tt.textContent%3B%0A%09%09%09if%28val%29%0A%09%09%09%09ret%20+%3D%20%27%20%22%27%20+%20val%20+%20%27%22%27%3B%0A%09%09%09return%20ret%3B%0A%09%09%7D%2C%0A%0A%09%09observe%3A%20function%28subject%2C%20topic%2C%20data%29%20%7B%0A%09%09%09if%28topic%20%3D%3D%20%22domwindowopened%22%29%20%7B%0A%09%09%09%09this.context.setListeners%28ael%2C%20subject%29%3B%0A%09%09%09%09_log%28%22New%20window%20opened%22%29%3B%0A%09%09%09%09if%28%21_debug%29%0A%09%09%09%09%09return%3B%0A%09%09%09%09this._loadHandler%20%3D%20%7B%0A%09%09%09%09%09parent%3A%20this%2C%0A%09%09%09%09%09window%3A%20subject%2C%0A%09%09%09%09%09handleEvent%3A%20function%28e%29%20%7B%0A%09%09%09%09%09%09if%28e.target.defaultView%20%21%3D%20this.window%29%20//%3F%0A%09%09%09%09%09%09%09return%3B%0A%09%09%09%09%09%09_log%28%22New%20window%20loaded%3A%20%22%20+%20e.target.title%20+%20%22%20%28%22%20+%20e.target.location%20+%20%22%29%22%29%3B%0A%09%09%09%09%09%09this.destroy%28%29%3B%0A%09%09%09%09%09%7D%2C%0A%09%09%09%09%09destroy%3A%20function%28%29%20%7B%0A%09%09%09%09%09%09this.window.removeEventListener%28%22load%22%2C%20this%2C%20false%29%3B%0A%09%09%09%09%09%09delete%20this.parent._loadHandler%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%3B%0A%09%09%09%09subject.addEventListener%28%22load%22%2C%20this._loadHandler%2C%20false%29%3B%0A%09%09%09%7D%0A%09%09%09else%20if%28topic%20%3D%3D%20%22domwindowclosed%22%29%20%7B%0A%09%09%09%09if%28this.hasOwnProperty%28%22_loadHandler%22%29%29%20//%20Window%20can%20be%20closed%20before%20%22load%22%20event%20happens%0A%09%09%09%09%09this._loadHandler.destroy%28%29%3B%0A%09%09%09%09this.context.setListeners%28rel%2C%20subject%29%3B%0A%09%09%09%09if%28subject%20%3D%3D%20this.window%29%0A%09%09%09%09%09this.stop%28%29%3B%0A%09%09%09%09_log%28%22Window%20closed%3A%20%22%20+%20%28subject.document%20%26%26%20subject.document.title%29%20+%20%22%20%28%22%20+%20subject.location%20+%20%22%29%22%29%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%7D%3B%0A%0A%09this.setAllListeners%28ael%29%3B%0A%09this.ww.registerNotification%28this.eventHandler%29%3B%0A%09var%20btn%20%3D%20this.button%3B%0A%09if%28btn%29%20%7B%0A%09%09var%20destructor%20%3D%20function%28reason%29%20%7B%0A%09%09%09if%28reason%20%3D%3D%20%22delete%22%29%20%7B%0A%09%09%09%09_log%28%27%22Delete%20button%22%20pressed%20-%3E%20stop%28%29%27%29%3B%0A%09%09%09%09context.stop%28%29%3B%0A%09%09%09%7D%0A%09%09%7D%3B%0A%09%09if%28%0A%09%09%09typeof%20addDestructor%20%3D%3D%20%22function%22%20//%20Custom%20Buttons%200.0.5.6pre4+%0A%09%09%09%26%26%20addDestructor%20%21%3D%20%28%22addDestructor%22%20in%20window%20%26%26%20window.addDestructor%29%0A%09%09%29%20%7B%0A%09%09%09btn._attrsInspectorHasAddDestructor%20%3D%20true%3B%0A%09%09%09addDestructor%28destructor%2C%20this%29%3B%0A%09%09%7D%0A%09%09else%20%7B%0A%09%09%09if%28%22onDestroy%22%20in%20btn%29%0A%09%09%09%09var%20origOnDestroy%20%3D%20btn._attrsInspectorOrigOnDestroy%20%3D%20btn.onDestroy%3B%0A%09%09%09btn.onDestroy%20%3D%20function%28reason%29%20%7B%0A%09%09%09%09destructor%28reason%29%3B%0A%09%09%09%09origOnDestroy%20%26%26%20origOnDestroy.apply%28this%2C%20arguments%29%3B%0A%09%09%09%7D%3B%0A%09%09%7D%0A%09%7D%0A%09_log%28%0A%09%09%22Successfully%20started%21%22%0A%09%09+%20%22%5CnMode%3A%20%22%20+%20%28%0A%09%09%09btn%0A%09%09%09%09%3F%20%22Custom%20Button%22%0A%09%09%09%09%3A%20%22No%20Button%22%0A%09%09%29%0A%09%09+%20%22%2C%20highlighter%3A%20%22%20+%20%28%0A%09%09%09_highlightUsingFlasher%0A%09%09%09%09%3F%20%22inIFlasher%22%0A%09%09%09%09%3A%20this.eventHandler.noStyles%0A%09%09%09%09%09%3F%20%22inline%20CSS%22%0A%09%09%09%09%09%3A%20%22nsIStyleSheetService%22%0A%09%09%29%0A%09%29%3B%0A%7D%0Afunction%20destroy%28%29%20%7B%0A%09var%20tt%20%3D%20this.tt%3B%0A%09if%28%21tt%20%7C%7C%20%21tt.parentNode%29%0A%09%09return%3B%0A%09tt.hidePopup%28%29%3B%0A%09tt.parentNode.removeChild%28tt%29%3B%0A%0A%09var%20eh%20%3D%20this.eventHandler%3B%0A%09eh.unwatchAttrs%28%29%3B%0A%09eh.unhl%28%29%3B%0A%09eh.destroyTimers%28%29%3B%0A%09if%28%21_highlightUsingFlasher%29%20%7B%0A%09%09var%20sss%20%3D%20this.sss%3B%0A%09%09var%20cssURI%20%3D%20this.cssURI%3B%0A%09%09if%28sss.sheetRegistered%28cssURI%2C%20sss.AGENT_SHEET%29%29%0A%09%09%09sss.unregisterSheet%28cssURI%2C%20sss.AGENT_SHEET%29%3B%0A%09%09if%28sss.sheetRegistered%28cssURI%2C%20sss.USER_SHEET%29%29%0A%09%09%09sss.unregisterSheet%28cssURI%2C%20sss.USER_SHEET%29%3B%0A%09%7D%0A%09this.setAllListeners%28rel%29%3B%0A%09this.ww.unregisterNotification%28eh%29%3B%0A%09var%20btn%20%3D%20this.button%3B%0A%09if%28btn%29%20%7B%0A%09%09if%28%22_attrsInspectorOrigOnDestroy%22%20in%20btn%29%0A%09%09%09btn.onDestroy%20%3D%20btn._attrsInspectorOrigOnDestroy%3B%0A%09%09else%20if%28%21%28%22_attrsInspectorHasAddDestructor%22%20in%20btn%29%29%0A%09%09%09delete%20btn.onDestroy%3B%0A%09%09delete%20btn._attrsInspectorOrigOnDestroy%3B%0A%09%09delete%20btn._attrsInspectorHasAddDestructor%3B%0A%09%7D%0A%09delete%20window%5B_ns%5D%3B%0A%09_log%28%22Shutdown%20finished%21%22%29%3B%0A%7D%0A%7D%29.call%28this%29%3B%0A//%3D%3D%3D%20Attributes%20Inspector%20end%0A%7D%3B%0A%0A//%20Move%20focus%20back%20to%20previous%20active%20window%0Avar%20focusManager%20%3D%20%7B%0A%09button%3A%20this%2C%0A%09focusedWindow%3A%20null%2C%0A%09outTimer%3A%200%2C%0A%09handleEvent%3A%20function%28e%29%20%7B%0A%09%09switch%28e.type%29%20%7B%0A%09%09%09case%20%22mouseover%22%3A%0A%09%09%09%09clearTimeout%28this.outTimer%29%3B%0A%09%09%09%09if%28e.target%20%3D%3D%20this.button%29%20%7B%0A%09%09%09%09%09var%20focusedWindow%20%3D%20Services.wm.getMostRecentWindow%28null%29%3B%0A%09%09%09%09%09this.focusedWindow%20%3D%20focusedWindow%20%21%3D%20window.top%20%26%26%20focusedWindow%3B%0A%09%09%09%09%7D%0A%09%09%09break%3B%0A%09%09%09case%20%22mouseout%22%3A%0A%09%09%09%09clearTimeout%28this.outTimer%29%3B%0A%09%09%09%09var%20rel%20%3D%20e.relatedTarget%3B%0A%09%09%09%09if%28%21rel%20%7C%7C%20%21this.isChild%28rel%29%29%20%7B%0A%09%09%09%09%09this.outTimer%20%3D%20setTimeout%28function%28_this%29%20%7B%0A%09%09%09%09%09%09_this.focusedWindow%20%3D%20null%3B%0A%09%09%09%09%09%7D%2C%20500%2C%20this%29%3B%0A%09%09%09%09%7D%0A%09%09%09break%3B%0A%09%09%09case%20%22command%22%3A%0A%09%09%09%09if%28this.focusedWindow%29%20%7B%0A%09%09%09%09%09this.focusedWindow.focus%28%29%3B%0A%09%09%09%09%09this.focusedWindow%20%3D%20null%3B%0A%09%09%09%09%09clearTimeout%28this.outTimer%29%3B%0A%09%09%09%09%7D%0A%09%09%7D%0A%09%7D%2C%0A%09isChild%3A%20function%28node%29%20%7B%0A%09%09for%28%3B%20node%3B%20node%20%3D%20node.parentNode%29%0A%09%09%09if%28node%20%3D%3D%20this.button%29%0A%09%09%09%09return%20true%3B%0A%09%09return%20false%3B%0A%09%7D%0A%7D%3B%0Athis.addEventListener%28%22mouseover%22%2C%20focusManager%2C%20true%29%3B%0Athis.addEventListener%28%22mouseout%22%2C%20focusManager%2C%20true%29%3B%0Athis.addEventListener%28%22command%22%2C%20focusManager%2C%20true%29%3B%0A%0Athis.type%20%3D%20%22menu%22%3B%0Athis.orient%20%3D%20%22horizontal%22%3B%0A%0Athis.onDestroy%20%3D%20function%28reason%29%20%7B%0A%09if%28reason%20%3D%3D%20%22update%22%20%7C%7C%20reason%20%3D%3D%20%22delete%22%29%20%7B%0A%09%09Array.prototype.slice.call%28document.getElementsByAttribute%28%22cb_id%22%2C%20keyCbId%29%29.forEach%28function%28key%29%20%7B%0A%09%09%09key.parentNode.removeChild%28key%29%3B%0A%09%09%7D%29%3B%0A%09%09cmds.destroyErrorConsoleRestoring%28%29%3B%0A%09%7D%0A%09if%28reason%20%21%3D%20%22constructor%22%20%26%26%20typeof%20focusManager%20%21%3D%20%22undefined%22%29%20%7B%0A%09%09this.removeEventListener%28%22mouseover%22%2C%20focusManager%2C%20true%29%3B%0A%09%09this.removeEventListener%28%22mouseout%22%2C%20focusManager%2C%20true%29%3B%0A%09%09this.removeEventListener%28%22command%22%2C%20focusManager%2C%20true%29%3B%0A%09%7D%0A%09if%28reason%20%21%3D%20%22constructor%22%29%20%7B%0A%09%09if%28%21cmds.onlyPopup%29%0A%09%09%09mp.removeEventListener%28%22command%22%2C%20cmds%2C%20true%29%3B%0A%09%09this.removeEventListener%28%22command%22%2C%20middleClickFixer%2C%20true%29%3B%0A%09%09this.removeEventListener%28%22mouseup%22%2C%20middleClickFixer%2C%20true%29%3B%0A%09%7D%0A%7D%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bif%28%21event.target%20%26%26%20%21this.disabled%29%20//%20Button%27s%20hotkey%20pressed%0A%09this.open%20%3D%20true%3B%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E"
>Install</a>
| <a href="https://github.com/Infocatcher/Custom_Buttons/tree/master/Extensions_Developer_Tools">Source</a>
| <a href="https://github.com/Infocatcher/Custom_Buttons#usage">Instructions</a>
<script type="text/javascript">
var a = document.getElementsByTagName("a")[0];
a.title = document.title;
if(/%3Cimage%3E%3C%21%5BCDATA%5B(data%3A\S+)%5D%5D%3E%3C\/image%3E/.test(a.href)) {
var icon = decodeURIComponent(RegExp.$1);
var img = document.createElement("img");
img.src = icon;
img.alt = "";
img.style.verticalAlign = "middle";
img.style.marginRight = "4px";
img.style.border = "none";
a.insertBefore(img, a.firstChild);
var link = document.createElement("link");
link.rel = "shortcut icon";
link.href = icon;
document.documentElement.insertBefore(link, document.documentElement.firstChild);
}
</script>
<script type="text/javascript" src="https://infocatcher.github.io/Custom_Buttons/viewCustomButton.js"></script>
<script type="text/javascript">
if("viewCustomButtonCode" in window) setTimeout(function() {
viewCustomButtonCode(a.href);
}, 0);
</script>
</body>