[Pkg-mozext-commits] [noscript] 01/05: Imported Upstream version 2.6.9.36

David Prévot taffit at moszumanska.debian.org
Sat Aug 29 20:45:18 UTC 2015


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to branch master
in repository noscript.

commit a6d7cdda28ff26666db0d1dc7cd25576e27a6998
Author: David Prévot <david at tilapin.org>
Date:   Sat Aug 29 16:16:09 2015 -0400

    Imported Upstream version 2.6.9.36
---
 META-INF/manifest.mf                               |  42 ++
 META-INF/mozilla.rsa                               | Bin 0 -> 4196 bytes
 META-INF/mozilla.sf                                |   4 +
 .../content/noscript/ClearClickHandler.js          | 474 ++++++++++-----------
 chrome/noscript.jar!/content/noscript/Policy.js    |   8 +-
 .../content/noscript/RequestWatchdog.js            |   4 +-
 .../content/noscript/ScriptSurrogate.js            |   4 +-
 chrome/noscript.jar!/content/noscript/about.xul    |   6 +-
 chrome/noscript.jar!/content/noscript/checkShort   |  78 ++++
 .../content/noscript/noscriptOptions.js            | 245 ++++++-----
 .../content/noscript/noscriptOptions.xul           | 133 +++---
 .../content/noscript/parentProcess.js              |   7 +-
 .../locale/bg-BG/noscript/noscript.dtd             |   2 +-
 .../locale/ca-AD/noscript/noscript.dtd             |   2 +-
 .../locale/cs-CZ/noscript/noscript.dtd             |   2 +-
 .../locale/cy-GB/noscript/noscript.dtd             |   2 +-
 .../noscript.jar!/locale/da/noscript/noscript.dtd  |   2 +-
 .../noscript.jar!/locale/de/noscript/noscript.dtd  |   2 +-
 .../noscript.jar!/locale/el/noscript/noscript.dtd  |   2 +-
 .../locale/en-GB/noscript/noscript.dtd             |   2 +-
 .../locale/en-US/noscript/noscript.dtd             |   2 +-
 .../noscript.jar!/locale/eo/noscript/noscript.dtd  |   2 +-
 .../locale/es-AR/noscript/noscript.dtd             |   2 +-
 .../locale/es-CL/noscript/noscript.dtd             |   2 +-
 .../locale/es-ES/noscript/noscript.dtd             |   2 +-
 .../locale/et-EE/noscript/noscript.dtd             |   2 +-
 .../noscript.jar!/locale/eu/noscript/noscript.dtd  |   2 +-
 .../locale/fa-IR/noscript/noscript.dtd             |   2 +-
 .../noscript.jar!/locale/fi/noscript/noscript.dtd  |   2 +-
 .../noscript.jar!/locale/fr/noscript/noscript.dtd  |   2 +-
 .../locale/gl-ES/noscript/noscript.dtd             |   2 +-
 .../locale/he-IL/noscript/noscript.dtd             |   2 +-
 .../locale/hr-HR/noscript/noscript.dtd             |   2 +-
 .../noscript.jar!/locale/hsb/noscript/noscript.dtd |   2 +-
 .../locale/hu-HU/noscript/noscript.dtd             |   2 +-
 .../locale/id-ID/noscript/noscript.dtd             |   2 +-
 .../noscript.jar!/locale/it/noscript/noscript.dtd  |   2 +-
 .../locale/ja-JP/noscript/noscript.dtd             |   2 +-
 .../locale/kk-KZ/noscript/noscript.dtd             |   2 +-
 .../locale/km-KH/noscript/noscript.dtd             |   2 +-
 .../locale/ko-KR/noscript/noscript.dtd             |   2 +-
 .../noscript.jar!/locale/lt/noscript/noscript.dtd  |   2 +-
 .../locale/mk-MK/noscript/noscript.dtd             |   2 +-
 .../locale/ms-MY/noscript/noscript.dtd             |   2 +-
 .../locale/nb-NO/noscript/noscript.dtd             |   2 +-
 .../locale/nb-NO/noscript/noscript.properties      |   2 +-
 .../noscript.jar!/locale/nl/noscript/noscript.dtd  |   2 +-
 .../noscript.jar!/locale/pl/noscript/noscript.dtd  |   2 +-
 .../locale/pt-BR/noscript/noscript.dtd             |   2 +-
 .../locale/pt-PT/noscript/noscript.dtd             |   2 +-
 .../noscript.jar!/locale/ro/noscript/noscript.dtd  |   2 +-
 .../locale/sk-SK/noscript/noscript.dtd             |   2 +-
 .../locale/sl-SI/noscript/noscript.dtd             |   2 +-
 .../locale/sr-RS/noscript/noscript.dtd             |   2 +-
 .../locale/sv-SE/noscript/noscript.dtd             |   2 +-
 .../locale/te-IN/noscript/noscript.dtd             |   2 +-
 .../noscript.jar!/locale/th/noscript/noscript.dtd  |   2 +-
 .../noscript.jar!/locale/tr/noscript/noscript.dtd  |   2 +-
 .../noscript.jar!/locale/vi/noscript/noscript.dtd  |   2 +-
 .../locale/zh-CN/noscript/noscript.dtd             |   2 +-
 .../locale/zh-TW/noscript/noscript.dtd             |   2 +-
 components/noscriptService.js                      |  65 +--
 defaults/preferences/noscript.js                   |   2 +-
 install.rdf                                        |   2 +-
 64 files changed, 655 insertions(+), 517 deletions(-)

diff --git a/META-INF/manifest.mf b/META-INF/manifest.mf
new file mode 100644
index 0000000..98b57fb
--- /dev/null
+++ b/META-INF/manifest.mf
@@ -0,0 +1,42 @@
+Manifest-Version: 1.0
+
+Name: install.rdf
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: /ghvAqqw+HxJ1Dt2uH5ppg==
+SHA1-Digest: to+1+BHzGvC+7a4BT3q7G8eOreY=
+
+Name: chrome.manifest
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: ZVyhJVfGhrNs/GewLvbBeg==
+SHA1-Digest: jnO5QkpHGECCjBYP8ObGcSwMzKk=
+
+Name: GPL.txt
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Xc3+JfIRGapUNeq50CVq9w==
+SHA1-Digest: QuhZ5zOu5fE5tq1vLDOP3bdCSKQ=
+
+Name: mozilla.cfg
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: QN7VUFbn7i4XfCTfQhZogA==
+SHA1-Digest: f47dmcoACYEBc7bQRVnwCaMAqGA=
+
+Name: NoScript_License.txt
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: CYkluXWIXUk6QpUjqxcMtA==
+SHA1-Digest: 624YpFdNjCFbDE7kLhN+vbF9hgM=
+
+Name: chrome/noscript.jar
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: WuHZbTiONyCDtwyuJgQ6NQ==
+SHA1-Digest: GR2xL5eEc8uSCLozRc0SNbtOsHM=
+
+Name: components/noscriptService.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: qRRcKH/hNzMOs7bVvskQ7w==
+SHA1-Digest: CwB3+ivcbpwoEzmnvmHSpdYHbYw=
+
+Name: defaults/preferences/noscript.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: JakeBayg2z7n764WYEcjaA==
+SHA1-Digest: fedHoNVF2ZI8MMoYOD7PsdWSNoo=
+
diff --git a/META-INF/mozilla.rsa b/META-INF/mozilla.rsa
new file mode 100644
index 0000000..8fffb19
Binary files /dev/null and b/META-INF/mozilla.rsa differ
diff --git a/META-INF/mozilla.sf b/META-INF/mozilla.sf
new file mode 100644
index 0000000..8cfbc57
--- /dev/null
+++ b/META-INF/mozilla.sf
@@ -0,0 +1,4 @@
+Signature-Version: 1.0
+MD5-Digest-Manifest: OpI2rMuIpzxiu1dJHLTTyg==
+SHA1-Digest-Manifest: oduuMXDFECyRcYPV7hW4xyiWjlw=
+
diff --git a/chrome/noscript.jar!/content/noscript/ClearClickHandler.js b/chrome/noscript.jar!/content/noscript/ClearClickHandler.js
index cca307f..a5e087c 100644
--- a/chrome/noscript.jar!/content/noscript/ClearClickHandler.js
+++ b/chrome/noscript.jar!/content/noscript/ClearClickHandler.js
@@ -6,9 +6,9 @@ function ClearClickHandler(ns) {
 }
 
 ClearClickHandler.prototype = {
-  
+
   uiEvents: ["mousedown", "mouseup", "click", "dblclick", "drop", "keydown", "keypress", "keyup", "blur"],
-  
+
   rapidFire: {
     events: ["keydown", "mousedown", "mouseover"],
     quarantine: 800,
@@ -16,10 +16,10 @@ ClearClickHandler.prototype = {
     ts: 0,
     mouse: false,
     lastOver: { x: 0, y: 0, site: '', ts: 0 },
-   
+
     check: function(ev, site, ts) {
       const type = ev.type;
-      
+
       let mouse = false, over = false;
       switch(type[0]) {
         case 'c': case 'm':
@@ -27,22 +27,22 @@ ClearClickHandler.prototype = {
           over = type === "mouseover";
         case 'k':
         break;
-      
+
         default:
           return false;
       }
-      
+
       // ns.log(ev.type + " " + ev.target + "@" + site + " <- " + this.site + " -- " + ev.timeStamp)
-      
+
       let lo = this.lastOver;
-        
+
       if (this.mouse === mouse) {
         if (site !== this.site) {
           let contentRx = /^(?:(?:ht|f)tps?|data|javascript|feed):/i;
           if (contentRx.test(this.site) &&
               (contentRx.test(site) || !contentRx.test(ev.target.ownerDocument.defaultView.top.location.href))
               ) {
-              
+
             if (lo.site && lo.site !== site && (ts - lo.ts) < this.quarantine) {
               let d = ev.target.ownerDocument;
               let w = d.defaultView;
@@ -58,22 +58,22 @@ ClearClickHandler.prototype = {
               }
               lo.site = '';
             }
-            
+
             if (over) {
                if (ts - lo.ts < this.quarantine) return false;
             } else {
                 if (ts - this.ts < this.quarantine) {
                   if (!lo.site) this.ts = ts - this.quarantine / 2;
                   return ns.getPref("clearClick.rapidFireCheck");
-                } 
+                }
             }
-            
+
           }
         }
       } else this.mouse = mouse;
-      
+
       this.site = site;
-      
+
       if (over) {
         if (!ev.target.contentWindow) {
           lo.site = site;
@@ -91,24 +91,24 @@ ClearClickHandler.prototype = {
       return false;
     }
   },
-  
+
   install: function(browser) {
-    
+
     var doc = browser.ownerDocument;
     if (!("__ClearClick__" in doc)) {
       doc.__ClearClick__ = true;
       for each(let et in this.rapidFire.events)
         doc.addEventListener(et, this, true);
     }
-    
+
     var ceh = browser.docShell.chromeEventHandler;
     var l = this._listener;
     for each(var et in this.uiEvents) ceh.addEventListener(et, this, true);
   },
- 
-  
+
+
   exceptions: null,
-  
+
   sameSiteParents: function(w) {
     const ns = this.ns;
     var site = ns.getSite(w.location.href);
@@ -125,21 +125,21 @@ ClearClickHandler.prototype = {
     if (ns.consoleDump & LOG_CLEARCLICK) ns.dump("ClearClick skipping, same site parents for " + site);
     return true;
   },
-  
+
   appliesHere: function(url) {
     const ns = this.ns;
     return ns.appliesHere(ns.clearClick, url) &&
       !(this.exceptions && this.exceptions.test(url));
   },
-  
+
   checkSubexception: function(url) {
     return this.subexceptions && this.subexceptions.test(url);
   },
-  
+
   _whitelist: {},
   whitelistLen: 0,
   isWhitelisted: function(w) {
-    
+
     var l = this._whitelist[w.location.href];
     if (!l) return false;
 
@@ -149,7 +149,7 @@ ClearClickHandler.prototype = {
     }
     return l.indexOf(pp.join(" ")) > -1;
   },
-  
+
   whitelist: function(w) {
     if (this.isWhitelisted(w)) return;
     var u = w.location.href;
@@ -158,63 +158,63 @@ ClearClickHandler.prototype = {
     for(var p = w.parent; p != w; w = p, p = w.parent) {
       pp.push(p.location.href);
     }
-    
+
     var l;
     if (u in this._whitelist) l = this._whitelist[u];
     else {
       l = this._whitelist[u] = [];
       this.whitelistLen++;
     }
-    
+
     l.push(pp.join(" "));
   },
   resetWhitelist: function() {
     this._whitelist = {};
     this.whitelistLen = 0;
   },
-  
+
   isEmbed: function(o) (o instanceof Ci.nsIDOMHTMLObjectElement || o instanceof Ci.nsIDOMHTMLEmbedElement)
                         && !o.contentDocument && ns.getExpando(o, "site") != ns.getSite(o.ownerDocument.documentURI),
-  
+
   swallowEvent: function(ev) {
     ev.cancelBubble = true;
     ev.stopPropagation();
     ev.preventDefault();
   },
-  
+
   _zoom: 1,
-  
-  
+
+
   getBox: function(o, d, w) {
     if (!d) d = o.ownerDocument;
     if (!w) w = d.defaultView;
     var c = o.getBoundingClientRect();
     var x = c.left, y = c.top; // this is relative to the view port, just like mozInnerScreen*
-    
+
     return {
       x: x + w.scrollX, y: y + w.scrollY, // add scroll* to make it absolute
       width: c.width, height: c.height,
       screenX: w.mozInnerScreenX + x, screenY: w.mozInnerScreenY + y
     }
   },
-  
-  
+
+
   getBG: function(w) {
     var bg = w.document.body && w.getComputedStyle(w.document.body, '').backgroundColor || "#fff";
     return bg == "transparent" ? w != w.parent && this.getBG(w.parent) || "#fff" : bg;
   },
-  
+
   _constrain: function(box, axys, dim, max, vp, center) {
     var d;
     var scr = "screen" + axys.toUpperCase();
     // trim bounds to take in account fancy overlay borders
     var l = box[dim];
     var n = box[axys];
-    
+
     if (vp.frame && center && l < vp[dim]) { // expand to viewport if possible
       l = vp[dim];
     }
-    
+
     if (l > 6) {
       var bStart = Math.floor(l * .1) // 20% border
       var bEnd = bStart;
@@ -222,11 +222,11 @@ ClearClickHandler.prototype = {
         bStart = center - n;
       } else if (l + n - center < bEnd) {
         bEnd = l + n - center;
-      } 
+      }
       box[dim] = (l -= (bStart + bEnd));
       box[axys] = (n += bStart);
       box[scr] += bStart;
-      
+
     }
 
     if (l > max) {
@@ -234,7 +234,7 @@ ClearClickHandler.prototype = {
       if (center) {
         var halfMax = Math.round(max / 2);
         var nn = center - halfMax;
-        if (nn > n && center + halfMax > n + l) nn = (n + l) - max;        
+        if (nn > n && center + halfMax > n + l) nn = (n + l) - max;
         box[axys] = nn;
         box[scr] += (nn - n);
         n = nn;
@@ -248,14 +248,14 @@ ClearClickHandler.prototype = {
         : (n + l) > (vpn + vp[dim])
           ? (vpn + vp[dim]) - (n + l)
           : 0;
-    
+
     if (d) {
       n = (box[axys] += d);
       box[scr] += d;
     }
 
   },
-  
+
   get canvas() {
     delete this.__proto__.canvas;
     const impl = Cc["@mozilla.org/xul/xul-document;1"].createInstance(Ci.nsIDOMDocument).implementation;
@@ -263,34 +263,24 @@ ClearClickHandler.prototype = {
       ? impl.createHTMLDocument("")
       : impl.createDocument(
         HTML_NS, "html", impl.createDocumentType(
-          "html", "-//W3C//DTD HTML 4.01 Transitional//EN", "http://www.w3.org/TR/html4/loose.dtd"  
+          "html", "-//W3C//DTD HTML 4.01 Transitional//EN", "http://www.w3.org/TR/html4/loose.dtd"
         ))
       ).createElementNS(HTML_NS, "canvas");
   },
-  
-  _semanticContainers: [Ci.nsIDOMHTMLParagraphElement, Ci.nsIDOMHTMLQuoteElement,
-                        Ci.nsIDOMHTMLUListElement, Ci.nsIDOMHTMLOListElement, Ci.nsIDOMHTMLDirectoryElement,
-                        Ci.nsIDOMHTMLPreElement, Ci.nsIDOMHTMLTableElement ]
-  ,
-  isSemanticContainer: function(o) {
-    let scc = this._semanticContainers;
-    for (let j = scc.length; j-- > 0;)
-     if (o instanceof scc[j]) 
-       return o.ownerDocument.URL.indexOf("view-source") !== 0;
-  
-    return false;
-  },
-  
+
+  _semanticContainersRx: /^(?:p|quote|ul|ol|dir|pre|table)$/i,
+  isSemanticContainer: function(o) this._semanticContainersRx.test(o.tagName) && o.ownerDocument.URL.indexOf("view-source") !== 0,
+
   forLog: function(o) {
     return o.tagName + "/" + (o.tabIndex || 0);
   },
-  
+
   handleEvent: function(ev) {
-    
+
     const o = ev.target;
     const d = o.ownerDocument;
     if (!d) return;
-    
+
     if (d === ev.currentTarget || // chrome source, see rapidFire installation
         ev.button || // right or middle click
         ev.keyCode && // special keys, e.g. for UI navigation
@@ -300,16 +290,16 @@ ClearClickHandler.prototype = {
       // this.ns.log("Reset global event tracking");
       if (d === ev.currentTarget || ev.keyCode) return;
     }
-    
-    
+
+
     const w = d.defaultView;
     if (!w) return;
-    
+
     const ns = this.ns;
-    
+
     const top = w.top;
     const topURL = top.document.documentURI;
-   
+
     var isEmbed;
     var ts = Date.now();
 
@@ -320,22 +310,22 @@ ClearClickHandler.prototype = {
              " in "  + (ts - this.rapidFire.ts) + "ms)", true);
       return;
     }
-    
+
     if (ev.type === "mouseover") return;
-    
-    if (!("__clearClickUnlocked" in top)) 
+
+    if (!("__clearClickUnlocked" in top))
       top.__clearClickUnlocked = !this.appliesHere(topURL);
-    
+
     if (top.__clearClickUnlocked) return;
-    
+
     if (!("__clearClickUnlocked" in o)) {
 
-      o.__clearClickUnlocked = 
+      o.__clearClickUnlocked =
         o === d.documentElement || o === d.body || // key event on empty region
         this.isSemanticContainer(o) ||
         !(isEmbed = this.isEmbed(o)) && // plugin embedding?
-          (w == top || 
-            ("__clearClickUnlocked" in w 
+          (w == top ||
+            ("__clearClickUnlocked" in w
               ? w.__clearClickUnlocked
               : (w.__clearClickUnlocked = this.isWhitelisted(w))
             ) ||
@@ -345,14 +335,14 @@ ClearClickHandler.prototype = {
           ns.getPluginExtras(o) && ns.getPref("confirmUnblock") || // Just enabled from NS placeholder after prompt?
            this.checkSubexception(isEmbed && (o.src || o.data) || w.location.href)
     }
-    
+
     if (o.__clearClickUnlocked || w.__clearClickUnlocked) return;
 
     var p = ns.getExpando(o, "clearClickProps", {});
     var verbose = ns.consoleDump & LOG_CLEARCLICK;
     var etype = ev.type;
     if (verbose) ns.dump(o.tagName + ", " + etype + ", " + p.toSource());
-    
+
     var obstructed, ctx, primaryEvent;
     try {
       if (etype == "blur") {
@@ -363,7 +353,7 @@ ClearClickHandler.prototype = {
         return;
       }
       if (p.unlocked) return;
-    
+
       ctx = /mouse|drop/.test(etype)
                 && { x: ev.pageX, y: ev.pageY, debug: ev.ctrlKey && ev.button == 1 && ns.getPref("clearClick.debug") }
                 || {};
@@ -376,10 +366,10 @@ ClearClickHandler.prototype = {
             ((ctx.box = this.getBox(ev.target, d, w)).screenX * ctx.box.screenY != 0) ||
           // allow infra-document drag operations and tabulations
           etype != "blur" && top.__clearClickDoc == d && (top.__clearClickProps.unlocked || top.__clearClickProps.lastEtype == "blur");
-    
+
       obstructed = (primaryEvent || !("obstructed" in p))
         ? p.obstructed = this.checkObstruction(o, ctx)
-        : p.obstructed; // cache for non-primary events       
+        : p.obstructed; // cache for non-primary events
     } catch(e) {
       ns.dump(e);
       obstructed = true;
@@ -388,21 +378,21 @@ ClearClickHandler.prototype = {
       top.__clearClickProps = p;
       top.__clearClickDoc = d;
     }
-    
+
     var quarantine = ts - (p.ts || 0);
-    
+
     if (verbose) ns.dump("ClearClick: " + ev.target.tagName + " " + etype +
-       "(s:{" + ev.screenX + "," + ev.screenY + "}, p:{" + ev.pageX + "," + ev.pageY + "}, c:{" + ev.clientX + "," + ev.clientY + 
+       "(s:{" + ev.screenX + "," + ev.screenY + "}, p:{" + ev.pageX + "," + ev.pageY + "}, c:{" + ev.clientX + "," + ev.clientY +
        ", w:" + ev.which + "}) - obstructed: " + obstructed + ", check time: " + (Date.now() - ts) + ", quarantine: " + quarantine +
        ", primary: " + primaryEvent + ", ccp:" + (top.__clearClickProps && top.__clearClickProps.toSource()));
-    
+
     var unlocked = !obstructed && primaryEvent && quarantine > 3000;
-    
+
     if (unlocked) {
       if (verbose) ns.dump("ClearClick: unlocking " + ev.target.tagName + " " + etype);
       p.unlocked = true;
     } else {
-      
+
       this.swallowEvent(ev);
       ns.log("[NoScript ClearClick] Swallowed event " + etype + " on " + this.forLog(o) + " at " + w.location.href, true);
       var docShell = DOM.getDocShellForWindow(w);
@@ -438,7 +428,7 @@ ClearClickHandler.prototype = {
       }
     }
   },
-  
+
   findParentForm: function(o) {
     var ftype = Ci.nsIDOMHTMLFormElement;
     while((o = o.parentNode)) {
@@ -446,14 +436,14 @@ ClearClickHandler.prototype = {
     }
     return null;
   },
-  
- 
+
+
   rndColor: function() {
     var c = Math.round(Math.random() * 0xffffff).toString(16);
-    return "#" + ("000000".substring(c.length)) + c; 
+    return "#" + ("000000".substring(c.length)) + c;
   },
-  
-   
+
+
   maxWidth: 350,
   maxHeight: 200,
   minWidth: 160,
@@ -461,20 +451,20 @@ ClearClickHandler.prototype = {
   _NO_SCROLLBARS: {w: 0, h: 0},
   computeScrollbarSizes: function(window, dElem, body) {
     var fw = window.innerWidth, fh = window.innerHeight;
-    
+
     if (body && body.ownerDocument.compatMode == "BackCompat") {
       dElem = body;
     }
-    
+
     var dw = dElem.clientWidth, dh = dElem.clientHeight;
     var w = Math.min(fw, dw), h = Math.min(fh, dh);
-    
+
     var zoom = window.QueryInterface(Ci.nsIInterfaceRequestor)
             .getInterface(Ci.nsIDOMWindowUtils).screenPixelsPerCSSPixel;
 
     return { w: (fw - w) * zoom, h: (fh - h) * zoom };
   },
-  
+
   checkObstruction: function(o, ctx) {
     var d = o.ownerDocument;
     var w = d.defaultView;
@@ -484,30 +474,30 @@ ClearClickHandler.prototype = {
       w = d.defaultView;
       ctx.isEmbed = true;
     }
- 
+
     var dElem = d.documentElement;
-    
+
     var top = w.top;
     var browser = DOM.findBrowserForNode(top);
-    
+
     if (!browser) return false; // some extensions, e.g. FoxTab, cause this
-    
+
     var c = this.canvas;
     var gfx = c.getContext("2d");
-    
+
     var bg = this.getBG(w);
 
     var bgStyle;
     var box, rootBox, curtain, woi;
-    
+
     var frame, frameClass, objClass;
-    
+
     var docPatcher = new DocPatcher(this.ns, o, w);
-    
+
     var sheet = null;
-    
+
     var img1 = null, img2 = null, tmpImg = null;
-    
+
     function Snapshot(w, x, y) {
       gfx.drawWindow(w, Math.round(x), Math.round(y), c.width, c.height, bg);
       if (woi && w == top && rootBox) {
@@ -517,12 +507,12 @@ ClearClickHandler.prototype = {
       }
       this.imageData = gfx.getImageData(0, 0, c.width, c.height);
     }
-    
+
     Snapshot.prototype = {
       THRESHOLD: ns.getPref("clearClick.threshold") / 100,
       resembles: function(other) {
         if (other === null) return false;
-        
+
         let buf1 = this.imageData.data;
         let buf2 = other.imageData.data;
         let diff = 0, eq = 0;
@@ -559,7 +549,7 @@ ClearClickHandler.prototype = {
         return c.toDataURL();
       }
     }
-    
+
     function compareSnapshots(x1, y1, x2, y2) {
       img1 = null;
       try {
@@ -580,22 +570,22 @@ ClearClickHandler.prototype = {
         docPatcher.clean(false);
       }
       img2 = tmpImg = new Snapshot(top, x2, y2);
-      return ret && !img1.resembles(img2); 
+      return ret && !img1.resembles(img2);
     }
 
     var sd = this._NO_SCROLLBARS;
 
     try {
-       
+
       docPatcher.linkAlertHack(true);
       docPatcher.fbPresenceHack(true);
       docPatcher.abpTabsHack(true);
       docPatcher.trafficLightHack(true);
       try {
         docPatcher.opaque(true);
-        
+
         var fbPresence; // hack for Facebooks's fixed positioned widget
-        
+
         if (ctx.isEmbed) { // objects and embeds
           if (this.ns.getPref("clearClick.plugins", true)) {
             objClass = new ClassyObj(o);
@@ -606,48 +596,48 @@ ClearClickHandler.prototype = {
             DOM.addClass(o, "__noscriptOpaqued__");
           }
         }
-        
+
         if ((frame = w.frameElement)) {
           frameClass = new ClassyObj(frame);
           DOM.removeClass(frame, "__noscriptScrolling__");
           sd = this.computeScrollbarSizes(w, dElem, d.body);
-          
+
         }
-        
+
         let clientHeight = w.innerHeight - sd.h;
         let clientWidth =  w.innerWidth - sd.w;
         // print(dElem.clientWidth + "," +  dElem.clientHeight + " - "  + w.innerWidth + "," + w.innerHeight);
-        
+
         if (!ctx.isEmbed) {
           curtain = d.createElementNS(HTML_NS, "div");
           with (curtain.style) {
             top = left = "0px";
-            
+
             width = (clientWidth + w.scrollX) + "px";
             height = (clientHeight + w.scrollY) + "px";
-  
+
             padding = margin = borderWidth = MozOutlineWidth = "0px";
             position = "absolute";
             zIndex = DOM.maxZIndex;
-            
+
             background = this.rndColor();
           }
-        }     
-        
+        }
+
         let maxWidth = Math.max(Math.min(this.maxWidth, clientWidth), sd.w ? 0 : Math.min(this.minWidth, dElem.offsetWidth), 8);
         let maxHeight = Math.max(Math.min(this.maxHeight, clientHeight), sd.h ? 0 : Math.min(this.minHeight, dElem.offsetHeight, 8));
-  
+
         for (;;) {
             box = this.getBox(o, d, w);
             if (box.width > 0 && box.height > 0) break;
             o = o.parentNode;
             if (!o) return false;
         }
-        
+
         // expand to parent form if needed
         var form = o.form;
         if (frame && !ctx.isEmbed && (form || (form = this.findParentForm(o)))) {
-  
+
           let formBox = this.getBox(form, d, w);
           if (!(formBox.width && formBox.height)) { // some idiots put <form> as first child of <table> :(
             formBox = this.getBox(form.offsetParent || form.parentNode, d, w);
@@ -655,16 +645,16 @@ ClearClickHandler.prototype = {
               formBox = this.getBox(form.parentNode.offsetParent || o.offsetParent, d, w);
             }
           }
-    
+
           if (formBox.width && formBox.height) {
             // form has layout, recenter to show as much as possible
             ctx.x = ctx.x || box.x + box.width;   // use mouse coordinates or
-            ctx.y = ctx.y || box.y + box.height; // rightmost widget position 
-            
+            ctx.y = ctx.y || box.y + box.height; // rightmost widget position
+
             box = formBox; // the form is our new reference
-            
+
             var delta;
-            
+
             // move inside the viewport if needed
             if (box.x < 0) {
               box.screenX -= box.x;
@@ -674,14 +664,14 @@ ClearClickHandler.prototype = {
               box.screenY -= box.y;
               box.y = 0;
             }
-            
+
             // is our center out of the form?
-            if (box.x + Math.min(box.width, maxWidth) < ctx.x) { 
+            if (box.x + Math.min(box.width, maxWidth) < ctx.x) {
               box.width = Math.min(box.width, maxWidth);
               delta = ctx.x + 4 - box.width - box.x;
               box.x += delta;
               box.screenX += delta;
-             
+
             }
             if (box.y + Math.min(box.height, maxHeight) < ctx.y) {
               box.height = Math.min(box.height, maxHeight);
@@ -689,51 +679,51 @@ ClearClickHandler.prototype = {
               box.y += delta;
               box.screenY += delta;
             }
-            
+
             // recenter to the form
             ctx.x = box.x + box.width / 2;
             ctx.y = box.y + box.height / 2;
-            
+
             o = form;
           }
         }
-  
+
         bgStyle = dElem.style.background;
         dElem.style.background = bg;
-        
+
         // clip, slide in viewport and trim
-        
-        var vp = { 
-          x: w.scrollX, 
-          y: w.scrollY + 3, // 3 pixels grace for box shadows cast from above a frame, like in the FB header 
-          width: Math.max(w.innerWidth - sd.w, 32), 
+
+        var vp = {
+          x: w.scrollX,
+          y: w.scrollY + 3, // 3 pixels grace for box shadows cast from above a frame, like in the FB header
+          width: Math.max(w.innerWidth - sd.w, 32),
           height: Math.max(w.innerHeight - sd.h - 3, 16), // Facebook like buttons are 20 pixel high
           frame: frame
         };
-        
+
         var rtlOffset = 0;
-        
+
         if (ctx.isEmbed) { // check in-page vieport
           vp.frame = null;
           vp.x = Math.max(vp.x, box.x);
           vp.y = Math.max(vp.y, box.y);
           vp.width = Math.min(vp.width, box.width);
           vp.height = Math.min(vp.height, box.height);
-          
+
           for(let ancestor = o; ancestor = ancestor.parentNode;) {
-  
+
             if ((ancestor.offsetWidth < box.width || ancestor.offsetHeight < box.height) &&
                 w.getComputedStyle(ancestor, '').overflow != "visible") {
-              
+
               // check if we're being fooled by some super-zoomed applet
               if (box.width / 4 <= ancestor.offsetWidth && box.height / 4 <= ancestor.offsetHeight) {
                 let ancestorBox = this.getBox(ancestor, d, w);
-                
+
                 if (box.x < ancestorBox.x) {
                   box.x = ancestorBox.x;
                   box.screenX = ancestorBox.screenX;
                 }
-                if (box.y < ancestorBox.y) { 
+                if (box.y < ancestorBox.y) {
                   box.y = ancestorBox.y;
                   box.screenY = ancestorBox.screenY;
                 }
@@ -744,15 +734,15 @@ ClearClickHandler.prototype = {
             }
           }
         } else {
-          
+
           // correct x offsets according to left scrollbars if needed
           try {
             var adaptiveScrollerSide = false;
-            switch(this.ns.prefService.getIntPref("layout.scrollbar.side")) {  
+            switch(this.ns.prefService.getIntPref("layout.scrollbar.side")) {
               case 1:
                 adaptiveScrollerSide = true;
               case 0:
-                if (!adaptiveScrollerSide && this.ns.prefService.getIntPref("bidi.direction") != 2) 
+                if (!adaptiveScrollerSide && this.ns.prefService.getIntPref("bidi.direction") != 2)
                   break;
               case 3:
                 vp.x += this._scrollerCorrect(w, adaptiveScrollerSide);
@@ -761,11 +751,11 @@ ClearClickHandler.prototype = {
           } catch(e) {
             if (ns.consoleDump & LOG_CLEARCLICK) ns.dump(e);
           }
-          
+
         }
-        
+
         // clip viewport intersecting with scrolling parents
-        
+
         const CLIP_MIN = 64;
         var clip = this._clip(o.parentNode, frame ? this.getBox(frame) : box);
         if (clip.h != 0) {
@@ -782,50 +772,50 @@ ClearClickHandler.prototype = {
         }
         vp.x += clip.x;
         vp.y += clip.y;
-        
+
         // Fit in viewport
-        
+
         box.oX = box.x;
         box.oY = box.y;
         box.oW = box.width;
         box.oH = box.height;
-        
+
         // print("Fitting " + box.toSource() + " in " + vp.toSource() + " - ctx " + ctx.x + ", " + ctx.y + " - max " + maxWidth + ", " + maxHeight);
-  
+
         this._constrain(box, "x", "width", maxWidth, vp, ctx.x);
         this._constrain(box, "y", "height", maxHeight, vp, ctx.y);
-        // print(box.toSource());     
-        
-        
-         
+        // print(box.toSource());
+
+
+
         c.width = box.width;
         c.height = box.height;
-        
+
         woi = this.findWindowedRects(ctx.isEmbed ? o : w.frameElement);
-        
+
         if (this.ns.consoleDump & LOG_CLEARCLICK) this.ns.dump("Snapshot at " + box.toSource() + " + " + w.pageXOffset + ", " + w.pageYOffset);
-          
+
         if (curtain && frame) {
           dElem.appendChild(curtain);
         }
 
         img1 = new Snapshot(w, box.x, box.y);
-      
+
       } finally {
         docPatcher.clean(false);
       }
-    
+
 
       var rootElement = top.document.documentElement;
       rootBox = this.getBox(rootElement, top.document, top);
-      
-      
+
+
       var offsetY = (box.screenY - rootBox.screenY);
       var offsetX = (box.screenX - rootBox.screenX) + rtlOffset;
-      
+
       var ret = true;
       var tmpImg;
-      
+
       const offs = ctx.isEmbed ? [0] : [0, -1, 1, -2, 2, -3, -3];
 
       checkImage:
@@ -839,7 +829,7 @@ ClearClickHandler.prototype = {
           if (!img2) img2 = tmpImg;
         }
       }
-      
+
       if (ret && !curtain && ctx.isEmbed) {
         curtain = d.createElementNS(HTML_NS, "div");
         if (docPatcher) curtain.className = docPatcher.shownCS;
@@ -856,7 +846,7 @@ ClearClickHandler.prototype = {
 
         ret = compareSnapshots(box.x, box.y, offsetX, offsetY);
       }
-      
+
       if (ret && ctx.isEmbed && ("x" in ctx) && c.width > this.minWidth && c.height > this.minHeight) {
         c.width = this.minWidth;
         c.height = this.minHeight;
@@ -874,32 +864,32 @@ ClearClickHandler.prototype = {
           if (!ret) break;
         }
       }
-      
+
       if (ctx.debug || this.checkCursor(ctx.isEmbed ? o : frame)) {
         ret = true;
         img2 = tmpImg;
       }
-      
+
       if (ret) {
-        
+
         if (curtain) {
 
           if (ctx.debug) {
-            
+
             if (docPatcher.cleanSheet) {
               curtain.id = "curtain_" + DOM.rndId();
               docPatcher.cleanSheet += " #" + curtain.id + " { opacity: .4 !important }";
             }
-            
+
             curtain.style.opacity = ".4"
-            
+
           } else {
             curtain.parentNode.removeChild(curtain);
             curtain = null;
           }
           compareSnapshots(box.x, box.y, offsetX, offsetY);
         }
-        
+
         ctx.img =
         {
           src: img1.toURL(),
@@ -908,28 +898,28 @@ ClearClickHandler.prototype = {
           height: c.height
         }
       }
-    
+
     } finally {
       if (ctx.isEmbed) docPatcher.blankPositioned(false);
-      
-      
+
+
       if (curtain && curtain.parentNode) curtain.parentNode.removeChild(curtain);
       if (typeof(bgStyle) == "string") dElem.style.background = bgStyle;
-     
+
       docPatcher.opaque(false);
       docPatcher.trafficLightHack(false);
       docPatcher.abpTabsHack(false);
       docPatcher.fbPresenceHack(false);
       docPatcher.linkAlertHack(false);
-      
+
       if (objClass) objClass.reset();
       if (frameClass) frameClass.reset();
     }
-    
+
     return ret;
- 
+
   },
-  
+
   checkCursor: function(o) {
     let w = o.ownerDocument.defaultView;
     for(; o && o instanceof Ci.nsIDOMHTMLElement; o = o.parentNode) {
@@ -938,14 +928,14 @@ ClearClickHandler.prototype = {
         if (cursor === "none" || cursor.indexOf("url(") !== -1) return true;
       } catch (e) {}
     }
-    return w.frameElement && this.checkCursor(w.frameElement); 
-  },  
-  
+    return w.frameElement && this.checkCursor(w.frameElement);
+  },
+
   _clip: function(parent, box) {
     const MIN = 64;
-    
+
     // backtrack all the overflow~="auto|scroll" parent elements and clip
-        
+
     var pw = parent.ownerDocument.defaultView;
 
     var current, cbox;
@@ -955,16 +945,16 @@ ClearClickHandler.prototype = {
     var by = box.screenY;
     var bw = box.width;
     var bh = box.height;
-    
+
     const ELEMENT = Ci.nsIDOMElement;
-    
+
     while(parent) {
-   
-      current = parent; 
+
+      current = parent;
       switch (pw.getComputedStyle(current, '').overflow) {
         case "auto" : case "scroll":
         cbox = this.getBox(current);
-        
+
         d = cbox.screenY - by;
         if (d > 0) {
           dy += d;
@@ -978,7 +968,7 @@ ClearClickHandler.prototype = {
           dw -= d;
           bx += d;
           bw -= d;
-          
+
         }
         d = by + bh - (cbox.screenY + current.clientHeight);
         if (d > 0) {
@@ -1000,22 +990,22 @@ ClearClickHandler.prototype = {
       parent = pw.frameElement;
       if (parent) pw = parent.ownerDocument.defaultView;
     }
-    
+
     return { x: dx, y: dy, w: dw, h: dh };
   },
-  
+
   _scrollerCorrect: function(w, adaptive) {
     return (adaptive && w.getComputedStyle(w.document.body || w.document.documentElement, '').direction != 'rtl')
       ? 0
       : w.innerWidth - w.document.documentElement.clientWidth;
   },
-  
+
   _offsetParents: function(p) {
     let pp = [];
     for (; p; p = p.offsetParent) pp.push(p);
     return pp;
   },
-  
+
   get _ignoreWindowedZ() {
     delete this.__proto__._ignoreWindowedZ;
     return this.__proto__._ignoreWindowedZ = ns.geckoVersionCheck("10.0") < 0;
@@ -1023,7 +1013,7 @@ ClearClickHandler.prototype = {
   findWindowedRects: function(el) {
     const tags = ["object", "embed"];
     var woi = null;
-    
+
     while(el) {
       let d = el.ownerDocument;
       let w = d.defaultView;
@@ -1040,11 +1030,11 @@ ClearClickHandler.prototype = {
                 if (p1 != p2) {
                   let s1 = w.getComputedStyle(p1, '');
                   let s2 = w.getComputedStyle(p2, '');
-                  
+
                   if (s2.display != 'none' && s2.visibility != 'hidden' &&
                       (this._ignoreWindowedZ ||
                         (s2.position != 'static' &&
-                         (s1.position == 'static'  || 
+                         (s1.position == 'static'  ||
                             (parseInt(s1.zIndex, 10) || 0) <= (parseInt(s2.zIndex, 10) || 0)))
                       )
                     ) {
@@ -1099,7 +1089,7 @@ DocPatcher.prototype = {
     for(; o && o.hasAttribute; o = o.parentNode) res.push(new ClassyObj(o));
     return res;
   },
-  
+
   getRect: function(o, d) {
     return (this.getRect = ("getBoundingClientRect" in o)
      ? function(o) { return o.getBoundingClientRect() }
@@ -1110,11 +1100,11 @@ DocPatcher.prototype = {
         left: x,
         top: y,
         right: x + o.width,
-        bottom: y + o.height 
+        bottom: y + o.height
       };
      })(o, d)
   },
-  
+
   collectPositioned: function(d) {
     var t = Date.now();
     const w = d.defaultView;
@@ -1126,54 +1116,54 @@ DocPatcher.prototype = {
     const bottom = r.bottom;
     const left = r.left;
     const right = r.right;
-    
+
     var c = '', b = null;
     var hasPos = false;
     const posn = [];
-    
+
     const tw = d.createTreeWalker(d, Ci.nsIDOMNodeFilter.SHOW_ELEMENT, null, false);
     for (var n = null; (n = tw.nextNode());) {
       b = n.getBoundingClientRect();
       if (b.bottom < top || b.top > bottom ||
           b.right < left || b.left > right)
         continue;
-      
+
       s = w.getComputedStyle(n, '');
       p = s.position;
       if (p == "absolute" || p == "fixed") {
         c = " __noscriptPositioned__";
         n.__noscriptPos = hasPos = true;
         posn.push(n);
-      } else { 
+      } else {
         hasPos = hasPos && n.parentNode.__noscriptPos;
         if (!hasPos) continue;
         c = '';
         n.__noscriptPos = true;
         posn.push(n);
       }
-      
+
       if (s.backgroundImage != "none" || s.backgroundColor != "transparent") {
         c += " __noscriptBlank__";
       };
-      
-      
+
+
       if (c) {
         res.push(n = new ClassyObj(n));
         n.append(c);
       }
     }
-    
+
     for each(n in posn) n.__noscriptPos = false;
-    
+
     if(ns.consoleDump & LOG_CLEARCLICK) ns.dump("DocPatcher.collectPositioned(): " + (Date.now() - t));
     return res;
   },
-  
+
   collectOpaqued: function(o, oo) {
     if (!oo) oo = { opacity: 1, res: [] };
-    
+
     var w = o.ownerDocument.defaultView;
-    
+
     var opacity;
     var co = null;
     for(; o && o.hasAttribute; o = o.parentNode) {
@@ -1183,23 +1173,23 @@ DocPatcher.prototype = {
         oo.res.push(new ClassyObj(o));
       }
     }
-       
+
     o = w.frameElement;
     return o ? this.collectOpaqued(o, oo) : oo.res;
   },
-  
+
   forceVisible: function(co) { // TODO: I cause too much reflow, please CHECK ME!
-    co.append(this.shownCS); 
+    co.append(this.shownCS);
   },
-  
+
   forceOpaque: function(co) {
     co.append(" __noscriptJustOpaqued__");
   },
-  
+
   resetClass: function(co) {
     co.reset();
   },
-  
+
   _ancestors: null,
   _cleanSheetHandle: null,
   clean: function(toggle) {
@@ -1215,7 +1205,7 @@ DocPatcher.prototype = {
       this.removeSheet(this._cleanSheetHandle);
     }
   },
-  
+
   _positioned: null,
   _blankSheetHandle: null,
   blankSheet: ".__noscriptPositioned__ * { color: white !important; border-color: white !important; }",
@@ -1228,7 +1218,7 @@ DocPatcher.prototype = {
       this.removeSheet(this._blankSheetHandle);
     }
   },
-  
+
   _opaqued: null,
   opaque: function(toggle) {
     if (toggle) {
@@ -1238,7 +1228,7 @@ DocPatcher.prototype = {
       this._opaqued.forEach(this.resetClass);
     }
   },
-  
+
 
   applySheet: function(sheetHandle) {
     this.ns.updateStyleSheet(sheetHandle, true);
@@ -1247,11 +1237,11 @@ DocPatcher.prototype = {
   removeSheet: function(sheetHandle) {
     this.ns.updateStyleSheet(sheetHandle, false);
   },
-  
+
   trafficLightHack: function(toggle) {
     const ID = "tll_hui_container";
     if (!(toggle && this.top.document.getElementById(ID))) return;
-    
+
     delete this.__proto__.trafficLightHack;
     try {
       Cc["@mozilla.org/chrome/chrome-registry;1"]
@@ -1274,16 +1264,16 @@ DocPatcher.prototype = {
         return;
       }
       if (w.getComputedStyle(c, '').visibility !== "visible") return;
-      
+
       for each(let n in Array.push(c, c.getElementsByTagName("*"))) {
         if (n.getBoundingClientRect().bottom > 50) return;
       }
       c.style.visibility = "hidden";
-      this._trafficLightHackToggle = true;    
+      this._trafficLightHackToggle = true;
     }
     this.trafficLightHack(toggle);
   },
-  
+
   _linkAlertBox: null,
   linkAlertHack: function(toggle) {
     try {
@@ -1309,7 +1299,7 @@ DocPatcher.prototype = {
       }
     } catch (e) {}
   },
-  
+
   _fbPresence: null,
   fbPresenceHack: function(toggle) {
     if (toggle) {
@@ -1319,7 +1309,7 @@ DocPatcher.prototype = {
           if (fbPresence) {
             fbPresence._ccVisibility = fbPresence.style.visibility;
             fbPresence.style.visibility = "hidden";
-            this._fbPresence = fbPresence; 
+            this._fbPresence = fbPresence;
           }
         }
       } catch(e) {}
@@ -1327,7 +1317,7 @@ DocPatcher.prototype = {
       this._fbPresence.style.visibility = this._fbPresence._ccVisibility;
     }
   },
-  
+
   _abpTabs: null,
   get _abpTabsObj() {
     delete this.__proto__._abpTabsObj;
@@ -1346,7 +1336,7 @@ DocPatcher.prototype = {
     }
     return this.__proto__._abpTabsObj = tobj;
   },
-  
+
   abpTabsHack: function(toggle) {
     let visibleClass, hiddenClass;
     try {
@@ -1367,7 +1357,7 @@ DocPatcher.prototype = {
             if (toggle) {
               let tabs = [];
               for each(let c in visibleClasses) {
-                
+
                 Array.forEach(document.getElementsByClassName(c), function(t) {
                   let co = new ClassyObj(t);
                   t.className = hiddenClass;
@@ -1385,7 +1375,7 @@ DocPatcher.prototype = {
           }
         }
       : DUMMY_FUNC;
-    this.abpTabsHack(toggle); 
+    this.abpTabsHack(toggle);
   }
 };
 
@@ -1396,4 +1386,4 @@ DocPatcher.prototype = {
   } catch(e) {
     ns.dump(e.message + ":" + e.stack + " setting " + p + "\n");
   }
-});
\ No newline at end of file
+});
diff --git a/chrome/noscript.jar!/content/noscript/Policy.js b/chrome/noscript.jar!/content/noscript/Policy.js
index eacfc1f..d3ef648 100644
--- a/chrome/noscript.jar!/content/noscript/Policy.js
+++ b/chrome/noscript.jar!/content/noscript/Policy.js
@@ -799,17 +799,13 @@ const MainContentPolicy = {
           ? this.isJSEnabled(originSite, win)
           : jsRx.test(originURL); // if we've got such an origin, parent should be trusted
 
+        if (locationSite && this.checkShorthands(locationSite)) this.autoTemp(locationSite);
+
         let locationOK = locationSite
               ? this.isJSEnabled(locationSite, win)
               : jsRx.test(locationURL) && originOK // use origin for javascript: or data:
         ;
 
-        if (!locationOK && locationSite && this.ignorePorts && this.portRx.test(locationSite)) {
-          if (this.isJSEnabled(locationSite.replace(this.portRx, ''))) {
-            locationOK = this.autoTemp(locationSite);
-          }
-        }
-
         forbid = !(locationOK && (originOK ||
           !this.getPref(blockThisFrame
             ? "forbidIFramesParentTrustCheck" : "forbidActiveContentParentTrustCheck",
diff --git a/chrome/noscript.jar!/content/noscript/RequestWatchdog.js b/chrome/noscript.jar!/content/noscript/RequestWatchdog.js
index 4e0f19a..5d7f487 100644
--- a/chrome/noscript.jar!/content/noscript/RequestWatchdog.js
+++ b/chrome/noscript.jar!/content/noscript/RequestWatchdog.js
@@ -487,7 +487,7 @@ RequestWatchdog.prototype = {
     if(!trustedTarget) {
       window = window || abeReq.window;
       if(ns.autoAllow) {
-        if (window && window == window.top) {
+        if (window && window == window.top || channel.loadInfo && channel.loadInfo.contentPolicyType === 6) {
           targetSite = ns.getQuickSite(originalSpec, ns.autoAllow);
           if(targetSite && !ns.isJSEnabled(targetSite, window)) {
             ns.autoTemp(targetSite);
@@ -1407,7 +1407,7 @@ var InjectionChecker = {
   ),
 
   _dotRx: /\./g,
-  _removeDotsRx: /^openid\.[\w.-]+(?==)|(?:[?&#\/]|^)[\w.-]+(?=[\/\?&#]|$)|[\w\.]*\.(?:\b[A-Z]+|\d|[a-z][$_])[\w.-]*|=[a-z.-]+\.(?:com|net|org|biz|info|xxx|[a-z]{2})(?:[;&/]|$)/g,
+  _removeDotsRx: /^openid\.[\w.-]+(?==)|(?:[?&#\/]|^)[\w.-]+(?=[\/\?&#]|$)|[\w\.]*\.(?:\b[A-Z]+|\w*\d|[a-z][$_])[\w.-]*|=[a-z.-]+\.(?:com|net|org|biz|info|xxx|[a-z]{2})(?:[;&/]|$)/g,
   _removeDots: function(p) p.replace(InjectionChecker._dotRx, '|'),
   _arrayAccessRx: /\s*\[\d+\]/g,
   _riskyOperatorsRx: /[+-]{2}\s*(?:\/[*/][\s\S]+)?(?:\w+(?:\/[*/][\s\S]+)?[[.]|location)|(?:\]|\.\s*(?:\/[*/][\s\S]+)?\w+|location)\s*(?:\/[*/][\s\S]+)?([+-]{2}|[+*\/<>~-]+\s*(?:\/[*/][\s\S]+)?=)/, // inc/dec/self-modifying assignments on DOM props
diff --git a/chrome/noscript.jar!/content/noscript/ScriptSurrogate.js b/chrome/noscript.jar!/content/noscript/ScriptSurrogate.js
index 4741907..ccd282f 100644
--- a/chrome/noscript.jar!/content/noscript/ScriptSurrogate.js
+++ b/chrome/noscript.jar!/content/noscript/ScriptSurrogate.js
@@ -269,11 +269,11 @@ var ScriptSurrogate = {
 
   _preamble: function(s) {
     delete this._preamble;
-    return (this._preamble = (typeof Proxy === "function"
+    return (this._preamble = (ns.geckoVersionCheck("37") >= 0
     ? function(s) s.indexOf("$S(") !== -1
       ?  "{let $S; {let nsmHandler={get:function(t,n)n in t?t[n]:function()t.__noSuchMethod__(n,Array.prototype.slice.call(arguments))};$S=function(o)new Proxy(o||{},nsmHandler);}\n" + s + "\n}"
       : s
-    : function(s) "function $S(o)o|{};\n" + s
+    : function(s) "{let $S = function(o){return o||{};};\n" + s + "\n}"
     ))(s);
   },
 
diff --git a/chrome/noscript.jar!/content/noscript/about.xul b/chrome/noscript.jar!/content/noscript/about.xul
index 9d62897..7f787cb 100644
--- a/chrome/noscript.jar!/content/noscript/about.xul
+++ b/chrome/noscript.jar!/content/noscript/about.xul
@@ -48,7 +48,7 @@ function about_onload() {
   
   var str = getString("aboutTitle",["NoScript"]);
   if(str) document.title = str;
-  str = getString("version", ["2.6.9.34"]);
+  str = getString("version", ["2.6.9.36"]);
   if(str) document.getElementById("extensionVersion").setAttribute("value", str);
   
   setString("extensionDescription",null,"extensions.{73a6fe31-595d-460b-a920-fcc0f8843232}.description");
@@ -86,7 +86,7 @@ function about_open(url, features) {
 <hbox id="headBox" align="end">
 <vbox flex="1">
 <label value="NoScript" id="extensionName" crop="right"/>
-<label value="Version 2.6.9.34" id="extensionVersion" crop="right"/>
+<label value="Version 2.6.9.36" id="extensionVersion" crop="right"/>
 </vbox>
 <vbox flex="1" align="end">
 <hbox align="end">
@@ -164,7 +164,7 @@ function about_open(url, features) {
 <hbox>
 <label id="license" class="text-link" tooltiptext="Read end-user license" onclick="about_open('chrome://noscript/content/NoScript_License.txt')">License</label>
 <spacer flex="1"/>
-<label id="changelog" class="text-link" align="center" tooltiptext="See Changelog" onclick="about_open('https://noscript.net/changelog#2.6.9.34')">Changelog</label>
+<label id="changelog" class="text-link" align="center" tooltiptext="See Changelog" onclick="about_open('https://noscript.net/changelog#2.6.9.36')">Changelog</label>
 <spacer flex="1"/>
 <label id="extensionHomepage" class="text-link" tooltiptext="Visit Extension Home Page" onclick="about_open('https://noscript.net')">https://noscript.net</label>
 </hbox>
diff --git a/chrome/noscript.jar!/content/noscript/checkShort b/chrome/noscript.jar!/content/noscript/checkShort
new file mode 100644
index 0000000..0d58038
--- /dev/null
+++ b/chrome/noscript.jar!/content/noscript/checkShort
@@ -0,0 +1,78 @@
+var WinScript = ("blockScriptForGlobal" in Cu) ?
+{
+  supported: true,
+  block: function(window) {
+    if (window._blockScriptForGlobal) return;
+    try {
+      Cu.blockScriptForGlobal(window);
+      if (!("_blockScriptForGlobal" in window)) {
+        this.patchStyle(window.document);
+      }
+    } catch (e) {
+      if (!this._childDo("block", window)) throw e;
+    }
+    window._blockScriptForGlobal = true;
+  },
+  unblock: function(window) {
+    if (!window._blockScriptForGlobal) return;
+    try {
+      Cu.unblockScriptForGlobal(window);
+    } catch (e) {
+       if (this._childDo("unblock", window)) throw e;
+    }
+    window._blockScriptForGlobal = false;
+  },
+  isBlocked: function(window) {
+    return window._blockScriptForGlobal;
+  },
+  isDecided: function(window) {
+    return "_blockScriptForGlobal" in window;
+  },
+  get _childDo() {
+    delete this._childDo;
+    return (this._childDo = IPC.parent && IPC.parent.mm && ("isCrossProcessWrapper" in Cu) ?
+      function(verb, window) {
+        if (Cu.isCrossProcessWrapper(window)) {
+          IPC.parent.mm.broadcastAsyncMessage("NoScript:WinScript", verb, { window: window });
+          return true;
+        }
+        return false;
+      }
+    : function() { return false; }
+    );
+  }
+}
+:
+{
+  supported: false,
+  __noSuchMethod__: function() {},
+};
+
+WinScript._domUtils = Cc["@mozilla.org/inspector/dom-utils;1"].getService(Ci.inIDOMUtils);
+WinScript.patchStyle = function(doc) {
+  let ss = this._domUtils.getAllStyleSheets(doc);
+  // reverse loop because the preference stylesheet is almost always the last one
+  for (let j = ss.length; j-- > 0;) {
+    let s = ss[j];
+    switch(s.href) {
+      case "about:PreferenceStyleSheet":
+        {
+          let rules = s.cssRules;
+          // skip 1st & 2nd, as they are HTML & SVG namespaces
+          for (let j = 2, len = rules.length; j < len; j++) {
+              let r = rules[j];
+              if (r.cssText === "noscript { display: none ! important; }") {
+                  s.deleteRule(j);
+                  return;
+              }
+          }
+        }
+        break;
+      case "resource://gre-resources/noscript.css":
+        doc.defaultView.QueryInterface(Ci.nsIInterfaceRequestor)
+        .getInterface(Ci.nsIDOMWindowUtils)
+        .loadSheetUsingURIString("data:text/css,noscript { display: inline !important }", 0);
+        return;
+    }
+  }
+};
diff --git a/chrome/noscript.jar!/content/noscript/noscriptOptions.js b/chrome/noscript.jar!/content/noscript/noscriptOptions.js
index 84b307f..91696c7 100644
--- a/chrome/noscript.jar!/content/noscript/noscriptOptions.js
+++ b/chrome/noscript.jar!/content/noscript/noscriptOptions.js
@@ -3,23 +3,23 @@
 var ns = noscriptUtil.service;
 
 var nsopt = {
-  
+
 
   dom2: /^(?:http[s]?|file):\/\/([^\.\?\/#,;:\\\@]+(:?\.[^\.\?\/#,;:\\\@]+$|$))/,
   utils: null,
   whitelistURLs: [],
   init: function() {
 
-    if(ns.uninstalling) { // this should never happen! 
+    if(ns.uninstalling) { // this should never happen!
       window.close();
       return;
     }
-    
+
     ns.optionsDialogRef = Components.utils.getWeakReference(window);
-    
+
     this.utils = new UIUtils(ns);
     this.utils.resumeTabSelections();
-    
+
     abeOpts.init();
 
     var locked = ns.locked;
@@ -29,12 +29,12 @@ var nsopt = {
     }
      // forbid <a ping>
     var pingCbx = $("mozopt-browser.send_pings");
-    if(pingCbx.getAttribute("label").indexOf("Allow ") == 0) { 
+    if(pingCbx.getAttribute("label").indexOf("Allow ") == 0) {
       pingCbx.setAttribute("label", noscriptUtil.getString("allowLocal", ["<a ping...>"]));
       $("opt-noping")
               .setAttribute("label", noscriptUtil.getString("forbidLocal", ["<a ping...>"]));
     }
-    
+
     this.trustedSites = ns.jsPolicySites.clone();
     this.untrustedSites = ns.untrustedSites.clone();
     this.tempSites = ns.tempSites.clone();
@@ -42,9 +42,9 @@ var nsopt = {
 
     this.urlListDisplay.boxObject.QueryInterface(Ci.nsITreeBoxObject);
     this.populateUrlList();
-    
+
     this.jsglobal.checked = ns.jsEnabled;
- 
+
     this.utils.visitCheckboxes(function(prefName, inverse, checkbox, mozilla) {
         try {
           var val = mozilla ? ns.prefService.getBoolPref(prefName) : ns.getPref(prefName);
@@ -55,29 +55,29 @@ var nsopt = {
         } catch(ex) {}
       }
     );
-    
+
     this.utils.visitTextboxes(function(prefName, box) {
-      box.value = ns.getPref(prefName);  
+      box.value = ns.getPref(prefName);
     });
-    
+
     $("opt-showPermanent").setAttribute("label", noscriptUtil.getString("allowLocal", ["[...]"]));
     $("opt-showTemp").setAttribute("label", noscriptUtil.getString("allowTemp", ["[...]"]));
     $("opt-showDistrust").setAttribute("label", noscriptUtil.getString("distrust", ["[...]"]));
     $("opt-showGlobal").setAttribute("label", noscriptUtil.getString("allowGlobal"));
-  
+
     var notifyHideLabels = noscriptUtil.getString("notifyHide").split("%S");
     $("opt-notify.hide").setAttribute("label", notifyHideLabels[0]);
     $("notifyDelayLabel").setAttribute("value", notifyHideLabels[1]);
     $("notifyDelay").value = ns.getPref("notify.hideDelay", 5);
-    
+
     this.soundChooser.setSample(ns.getPref("sound.block"));
-    
+
     this.autoAllowGroup = new ConditionalGroup(ns, "autoAllow", 1);
     this.toggleGroup = new ConditionalGroup(ns, "toolbarToggle", 3);
-    
+
     var val = ns.getPref("allowHttpsOnly", 0);
     $("sel-allowHttpsOnly").selectedIndex = (val < 0 || val > 2) ? 0 : val;
-    
+
     var shortcut = ns.getPref("keys.toggle");
     if(shortcut) {
       shortcut = shortcut.replace(/VK_([^\.]*).*/g, "$1").replace(/\s+/g, '+').replace(/_/g, ' ');
@@ -85,62 +85,65 @@ var nsopt = {
       shortcutLabel.value = "(" + shortcut + ")";
       shortcutLabel.removeAttribute("hidden");
     }
-    
+
     this.utils.syncGroup($("opt-secureCookies"));
-    
+
     this.xssEx = new RegExpController(
-        "xssEx", 
+        "xssEx",
         ns.rxParsers.multi,
         ns.getPref("filterXExceptions"));
-    
+
     // hide incompatible options
     let browserWin = ns.dom.mostRecentBrowserWindow;
-    
+
     if (browserWin) {
       if (!browserWin.document.getElementById("noscript-statusIcon"))
         $("opt-statusIcon").setAttribute("hidden", "true");
-    
+
       if(browserWin.noscriptOverlay && !browserWin.noscriptOverlay.getNotificationBox())
         $("fx-notifications").setAttribute("hidden", "true");
     }
-    
+
     ["clearClick"].forEach(function(c) {
       var pref = ns.getPref(c);
-      Array.forEach($(c + "Opts").getElementsByTagName("checkbox"), function(cbx) {        
+      Array.forEach($(c + "Opts").getElementsByTagName("checkbox"), function(cbx) {
         cbx.setAttribute("checked", !(pref & parseInt(cbx.getAttribute("value"))) ? "false" : "true");
       });
     });
-       
-    
+
+
     if (!ns.placesSupported)
       $("opt-placesPrefs").setAttribute("hidden", "true");
-    
+
     if (!ns.supportsCAPS) {
       $("opt-allowClipboard").setAttribute("collapsed", "true");
     }
-    
+
     this.initExtraButtons();
-    
+
     this.addButton.setAttribute("enabled", "false");
     this.removeButton.setAttribute("enabled", "false");
-    
+
     this.toggleHoverUI();
-    
-    
+
+
 
     window.sizeToContent();
   },
-  
+
+  dispose: function() {
+    abeOpts.dispose();
+  },
 
   initExtraButtons: function() {
     this.utils.moveButtonsDown("donateButton", "", "importConfButton", "exportConfButton");
   },
-  
-  
+
+
   donate: function() {
     noscriptUtil.openDonate("options");
   },
-  
+
   importConf: function() {
     this.chooseFile(
       this.buttonToTitle("importConfButton"),
@@ -158,20 +161,20 @@ var nsopt = {
       function(f) {
         ns.writeFile(f, ns.serializeConf(true));
       }
-    );  
+    );
   },
-  
+
   reset: function() {
-    
-    if(!noscriptUtil.prompter.confirm(window, 
+
+    if(!noscriptUtil.prompter.confirm(window,
           noscriptUtil.getString("reset.title"),
           noscriptUtil.getString("reset.warning"))
       ) return;
-    
+
     ns.resetDefaults();
     this.reload();
   },
-  
+
   reload: function() {
     this.utils.persistTabSelections();
     var op = top.opener;
@@ -182,7 +185,7 @@ var nsopt = {
     }
     window.close();
   },
-  
+
   save: function() {
     /*
     if (!$("abeRuleset-errors").hidden) {
@@ -194,7 +197,7 @@ var nsopt = {
             p.BUTTON_TITLE_DONT_SAVE * p.BUTTON_POS_1 +
             p.BUTTON_POS_1_DEFAULT,
           null, null, null, null, {}) === 1
-        ) 
+        )
       return false;
     }
     */
@@ -203,14 +206,14 @@ var nsopt = {
         if(checkbox.getAttribute("collapsed")!="true") {
           const checked = checkbox.getAttribute("checked") == "true";
           const requestedVal = inverse ? !checked : checked;
-          
+
           if(mozilla) {
             try {
               ns.prefService.setBoolPref(prefName, requestedVal);
             } catch(ex) {}
             return;
           }
-          
+
           const prevVal = ns.getPref(prefName);
           if(requestedVal != prevVal) {
             ns.setPref(prefName, requestedVal);
@@ -218,14 +221,14 @@ var nsopt = {
         }
       }
     );
-    
-    
+
+
     this.utils.visitTextboxes(function(prefName, box) {
       if (box.value != ns.getPref(prefName)) {
         ns.setPref(prefName, box.value);
       }
     });
-    
+
     ["clearClick"].forEach(function(c) {
       var pref = 0;
       Array.forEach($(c + "Opts").getElementsByTagName("checkbox"), function(cbx) {
@@ -233,35 +236,35 @@ var nsopt = {
       });
       ns.setPref(c, pref);
     });
-    
-    
-    ns.setPref("notify.hideDelay", parseInt($("notifyDelay").value) || 
+
+
+    ns.setPref("notify.hideDelay", parseInt($("notifyDelay").value) ||
               ns.getPref("notify.hideDelay", 5));
 
     ns.setPref("sound.block", this.soundChooser.getSample());
-    
+
     this.autoAllowGroup.persist();
-    
+
     if (!(ns.getPref("hoverUI.excludeToggling") && $("opt-hoverUI").checked)) {
       this.toggleGroup.persist();
     }
-    
+
     ns.setPref("allowHttpsOnly", $("sel-allowHttpsOnly").selectedIndex);
-    
+
     var exVal = this.xssEx.getValue();
-    if(this.xssEx.validate() || !/\S/.test(exVal)) 
+    if(this.xssEx.validate() || !/\S/.test(exVal))
       ns.setPref("filterXExceptions", exVal);
-    
+
     if (this.tempRevoked) {
       ns.resetAllowedObjects();
     }
-    
+
     var global = this.jsglobal.getAttribute("checked") == "true";
     var untrustedSites = this.untrustedSites;
     var trustedSites = this.trustedSites;
     var tempSites = this.tempSites;
     var gTempSites = this.gTempSites;
-    
+
     ns.safeCapsOp(function(ns) {
       if(ns.untrustedSites.sitesString != untrustedSites.sitesString
           || ns.jsPolicySites.sitesString != trustedSites.sitesString
@@ -282,7 +285,7 @@ var nsopt = {
     });
     return true;
   },
-  
+
   urlListChanged: function(dontUpdate) {
     const selectedItems = noscriptTreeCc.getSelectedItems(this.urlListDisplay, this.whitelistURLs);
     var removeDisabled = true;
@@ -291,15 +294,15 @@ var nsopt = {
         removeDisabled = false;
         break;
       }
-    }  
+    }
     this.removeButton.setAttribute("disabled", removeDisabled);
     $("revokeButton")
-      .setAttribute("disabled", this.tempRevoked || 
+      .setAttribute("disabled", this.tempRevoked ||
           !(this.tempSites.sitesString || this.gTempSites.sitesString || ns.objectWhitelistLen));
     if (!dontUpdate) nsWhitelistTreeView.updateTree();
     this.urlChanged();
   },
-  
+
   openInfo: function(ev) {
     if (ev.button === 1) {
       setTimeout(function() {
@@ -318,7 +321,7 @@ var nsopt = {
   copyUrlListSel: function() {
     noscriptTreeCc.doCopy(this.urlListDisplay, "", " ");
   },
-  
+
   urlChanged: function() {
     var url = this.urlText.value;
     if(url.match(/\s/)) url = this.urlText.value = url.replace(/\s/g,'');
@@ -333,7 +336,7 @@ var nsopt = {
     }
     this.addButton.setAttribute("disabled", !addEnabled);
   },
-  
+
   notifyHideDelay: {
     onInput: function(txt) {
       if(/\D/.test(txt.value)) txt.value = txt.value.replace(/\D/, "");
@@ -342,7 +345,7 @@ var nsopt = {
       txt.value = parseInt(txt.value) || ns.getPref("notify.hideDelay", 5);
     }
   },
-  
+
   ensureVisible: function(site) {
     for(var j = nsWhitelistTreeView.rowCount; j-- > 0;) {
       if(nsWhitelistTreeView.getCellText(j) == site) {
@@ -364,11 +367,11 @@ var nsopt = {
     for(j = 0, len = sites.length; j < len; j++) {
       site = sites[j];
       // skip protocol + 2nd level domain URLs
-      if((match = site.match(dom2)) && policy.matches(item = match[1])) 
+      if((match = site.match(dom2)) && policy.matches(item = match[1]))
         continue;
-      
+
       item = {value:site};
-      if(ns.isMandatory(site)) { 
+      if(ns.isMandatory(site)) {
         item.mandatory = true;
       }
       item.temp = site in tempMap;
@@ -383,22 +386,22 @@ var nsopt = {
     this.trustedSites.add(site);
     this.tempSites.remove(site, true, true); // see noscriptService#eraseTemp()
     this.gTempSites.remove(site, true, true);
-    
+
     this.untrustedSites.remove(site, false, !ns.mustCascadeTrust(site, false));
     this.populateUrlList();
     this.ensureVisible(site);
     this.addButton.setAttribute("disabled", "true");
   },
-  
+
   remove: function() {
     const ul = this.urlListDisplay;
     const selectedItems = noscriptTreeCc.getSelectedItems(ul, this.whitelistURLs);
     var visIdx = ul.boxObject.getFirstVisibleRow();
     var lastIdx = visIdx + ul.boxObject.getPageLength();
-    
-    
-    
-    
+
+
+
+
     var removed = [];
     for(var j = selectedItems.length; j-- > 0;) {
       if(!ns.isMandatory(site = selectedItems[j].value)) {
@@ -406,11 +409,11 @@ var nsopt = {
       }
     }
     if (!removed.length) return;
-    
+
     this.trustedSites.remove(removed, true); // keepUp
     this.tempSites.remove(removed, true, true); // see noscriptService#eraseTemp()
     this.gTempSites.remove(removed, true, true);
-      
+
     this.populateUrlList();
 
   },
@@ -430,28 +433,28 @@ var nsopt = {
     this.tempRevoked = true;
     this.populateUrlList();
   },
-  
+
   _soundChooser: null,
   get soundChooser() {
-    return this._soundChooser || 
-      (this._soundChooser = 
+    return this._soundChooser ||
+      (this._soundChooser =
         new SoundChooser(
-        "sampleURL", 
+        "sampleURL",
         this.buttonToTitle("sampleChooseButton"),
         ns,
         "chrome://noscript/skin/block.wav"
       ));
   },
-  
-  
+
+
   chooseFile: function(title, mode, callback) {
     try {
       const IFP = Ci.nsIFilePicker;
       const fp = Cc["@mozilla.org/filepicker;1"].createInstance(IFP);
-      
+
       fp.init(window, title, IFP["mode" + mode]);
-      
-      try {      
+
+      try {
         fp.displayDirectory = ns.prefs.getComplexValue("exportDir", Ci.nsILocalFile);
       } catch (e) {
         fp.displayDirectory = Cc["@mozilla.org/file/directory_service;1"]
@@ -460,7 +463,7 @@ var nsopt = {
       }
       fp.defaultExtension = "txt";
       const ret = fp.show();
-      if(ret == IFP.returnOK || 
+      if(ret == IFP.returnOK ||
           ret == IFP.returnReplace) {
         callback.call(nsopt, fp.file);
       }
@@ -471,8 +474,8 @@ var nsopt = {
       noscriptUtil.prompter.alert(window, title, ex.toString());
     }
   },
-  
-  
+
+
   importExport: function(op) {
     this.chooseFile(
       this.buttonToTitle(op + "Button"),
@@ -480,7 +483,7 @@ var nsopt = {
       this[op + "List"]
     );
   },
-  
+
   importList: function(file) {
     var all = ns.readFile(file).replace(/\s+/g, "\n");
     var untrustedPos = all.indexOf("[UNTRUSTED]");
@@ -494,21 +497,21 @@ var nsopt = {
     this.populateUrlList();
     return null;
   },
-  
+
   exportList: function(file) {
     var list = ns.getPermanentSites(this.trustedSites, this.tempSites);
     list.remove(ns.mandatorySites.sitesList, true, true);
-    ns.writeFile(file, list.sitesList.join("\n") + 
+    ns.writeFile(file, list.sitesList.join("\n") +
       "\n[UNTRUSTED]\n" +
       this.untrustedSites.sitesList.join("\n")
     );
     return null;
   },
-  
+
   buttonToTitle: function(btid) {
     return "NoScript - " + $(btid).getAttribute("label");
   },
-  
+
   toggleHoverUI: function(cbx) {
     if (ns.getPref("hoverUI.excludeToggling")) {
       let cbx = $("cbx-toolbarToggle");
@@ -527,7 +530,7 @@ var nsopt = {
       }
     }
   }
-  
+
 }
 
 var ABE = ns.ABE;
@@ -537,17 +540,23 @@ var abeOpts = {
   _map: {__proto__: null},
   errors: false,
   QueryInterface: ns.wan.QueryInterface, // dirty hack, we share the same observer ifaces
-  
+
   init: function() {
     this.list = $("abeRulesets-list");
     this.populate();
-    
+
     this.updateWAN(ns.wan.ip);
     const OS = ns.os;
     OS.addObserver(this, ns.wan.IP_CHANGE_TOPIC, true);
     OS.addObserver(this, ABE.RULES_CHANGED_TOPIC, true);
   },
-  
+
+  dispose: function() {
+    const OS = ns.os;
+    OS.removeObserver(this, ns.wan.IP_CHANGE_TOPIC);
+    OS.removeObserver(this, ABE.RULES_CHANGED_TOPIC);
+  },
+
   observe: function(subject, topic, data) {
     if (topic === ns.wan.IP_CHANGE_TOPIC) this.updateWAN(data);
     else if (topic === ABE.RULES_CHANGED_TOPIC) {
@@ -555,11 +564,11 @@ var abeOpts = {
       this.errors = false;
     }
   },
-  
+
   updateWAN: function(ip) {
     $("opt-ABE.wanIpAsLocal").label = ns.getString("ABE.wanIpAsLocal", [ip || "???"]);
   },
-  
+
   reset: function() {
     ABE.resetDefaults();
   },
@@ -568,9 +577,9 @@ var abeOpts = {
   },
   changed: function(i) {
     let current = i || this.list.selectedItem;
-   
+
     if (current && this.dirty) {
-      
+
       let name = current.value;
       let source = $("abeRuleset-text-container").selectedPanel.value;
       let ruleset = ABE.createRuleset(name, source);
@@ -593,7 +602,7 @@ var abeOpts = {
       ABE.storeRuleset(name, source);
     }
   },
-  
+
   _populating: false,
   populate: function() {
     if (this._populating) return;
@@ -639,14 +648,14 @@ var abeOpts = {
           $("abeRuleset-text-container").appendChild(textbox);
         }
       }
-      this._map = map; 
+      this._map = map;
       l.selectedItem = selItem;
       this.sync();
     } finally {
       this._populating = false;
     }
   },
-  
+
   selected: function(i) {
     if (this.dirty) {
       let selIndex = this.list.selectedIndex;
@@ -656,13 +665,13 @@ var abeOpts = {
     if (!this._populating) this.sync();
     this.dirty = null;
   },
-  
+
   select: function(rs) {
     var name = rs && rs.name || rs;
     if (!name) return;
     var l = this.list;
     if (l.selectedItem && l.selectedItem.value == name) return;
-    
+
     for(var j = l.getRowCount(), i; j-- > 0;) {
       i = l.getItemAtIndex(j);
       if (i.value == name) {
@@ -671,26 +680,26 @@ var abeOpts = {
       }
     }
   },
-  
+
   sync: function() {
     var selItem = this.list.selectedItem;
-   
+
     var rs = null;
     if (selItem) {
       this.selectedRS = rs = this._map[selItem.value];
     } else {
       this.selectedRS = null;
     }
-    
+
     $("abeEnable-button").disabled = ! ($("abeDisable-button").disabled = !rs || rs.disabled);
     $("abeRefresh-button").disabled = this.list.getRowCount() == 0;
     $("abeRuleset-text-container").setAttribute("selectedIndex", this.list.selectedIndex);
-    
+
     var text = $("abeRuleset-text-container").selectedPanel;
     text.className = selItem && selItem.className || '';
     text.disabled = !selItem || selItem.disabled;
     text.value = rs && rs.source;
-    
+
     text = $("abeRuleset-errors");
     if (rs && rs.errors) {
       this.ShowHideABEError(false);
@@ -701,17 +710,17 @@ var abeOpts = {
       text.value = "";
     }
   },
-  
+
   refresh: function() {
     ABE.refresh();
   },
- 
+
   ShowHideABEError: function(hidden) {
     for each (let n in document.getElementsByClassName("abe-error-element")) {
       n.hidden = hidden;
     }
   },
-  
+
   toggle: function(enabled) {
     var selItem = this.list.selectedItem;
     var rs = this.selectedRS;
@@ -724,7 +733,7 @@ var abeOpts = {
     ns.setPref("ABE.disabledRulesetNames", ABE.disabledRulesetNames);
     this.sync();
   }
-  
+
 }
 
 var nsWhitelistTreeView = {
diff --git a/chrome/noscript.jar!/content/noscript/noscriptOptions.xul b/chrome/noscript.jar!/content/noscript/noscriptOptions.xul
index 6c52122..23cd4c1 100644
--- a/chrome/noscript.jar!/content/noscript/noscriptOptions.xul
+++ b/chrome/noscript.jar!/content/noscript/noscriptOptions.xul
@@ -4,49 +4,50 @@
 <?xml-stylesheet href="chrome://noscript/skin/options.css" type="text/css"?>
 
 <!DOCTYPE dialog SYSTEM "chrome://noscript/locale/noscript.dtd">
-<dialog id="noscriptOptions" 
+<dialog id="noscriptOptions"
   onload="nsopt.init()"
+  onunload="nsopt.dispose()"
   ondialogaccept="return nsopt.save()"
-	
+
   title="&noscriptOptionsLong;"
 	buttons="extra2,accept,cancel"
-  
+
 	buttonlabelextra2="&noscriptReset;"
-  buttonaccesskeyextra2="&noscriptReset.accesskey;" 
+  buttonaccesskeyextra2="&noscriptReset.accesskey;"
   ondialogextra2="nsopt.reset()"
-  
+
   ondialoghelp="noscriptUtil.openHelp('options')"
-  
+
   spacerflex="1"
   persist="screenX screenY"
   xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
-  
+
   <script type="application/x-javascript;version=1.8" src="noscript.js" />
   <script type="application/x-javascript;version=1.8" src="iaUI.js" />
   <script type="application/x-javascript;version=1.8" src="tree-copy.js" />
   <script type="application/x-javascript;version=1.8" src="noscriptOptions.js" />
-  
+
   <vbox style="width: &noscriptOptionsWidth;">
   <tabbox id="nsopt-tabsMain">
     <tabs>
-			
+
       <tab label="&noscriptGeneral;" id="nsopt-tabGeneral"/>
       <tab label="&noscriptWhitelist;" id="nsopt-tabWhitelist"/>
       <tab label="&noscriptEmbeddings;" id="nsopt-tabEmbeddings"/>
       <tab label="&noscriptAppearance;" id="nsopt-tabAppearance"/>
       <tab label="&noscriptNotifications;" id="nsopt-tabNotifications"/>
       <tab label="&noscriptAdvanced;" id="nsopt-tabAdvanced"/>
-      
+
     </tabs>
     <tabpanels>
-			
+
   <tabpanel><!-- General -->
-  
+
   <vbox flex="1">
 
     <groupbox class="ia-indent">
       <caption><checkbox id="cbx-autoAllow" label="&noscriptAutoAllowTopLevel;"/></caption>
-      <radiogroup id="sel-autoAllow">  
+      <radiogroup id="sel-autoAllow">
          <radio label="&noscriptFullAddr;" value="1" selected="true"/>
          <radio label="&noscriptFullDom;" value="2"/>
          <radio label="&noscriptBaseDom;" value="3"/>
@@ -58,14 +59,14 @@
       <checkbox id="cbx-toolbarToggle" label="&noscriptToolbarToggle;"/>
       <label control="sel-toolbarToggle" id="toolbarToggle-shortcut" class="ia-indent" hidden="true"/>
       </caption>
-      
-      <radiogroup id="sel-toolbarToggle">  
+
+      <radiogroup id="sel-toolbarToggle">
          <radio label="&noscriptFullAddr;" value="1"/>
          <radio label="&noscriptFullDom;" value="2"/>
          <radio label="&noscriptBaseDom;" value="3" selected="true"/>
       </radiogroup>
     </groupbox>
-    
+
 
     <checkbox id="opt-autoReload" label="&noscriptAutoReload;" />
 		<vbox class="ia-indent">
@@ -74,23 +75,23 @@
 		<separator class="thin"/>
     <checkbox id="opt-allowBookmarks" label="&noscriptAllowViaBookmarks;" />
     <checkbox id="opt-placesPrefs" label="&noscriptBookmarkSync;" />
-   
+
     <spacer flex="1" />
     <button id="importConfButton" label="&noscriptImport;" hidden="true" oncommand="nsopt.importConf()" />
     <button id="exportConfButton" label="&noscriptExport;" hidden="true" oncommand="nsopt.exportConf()" />
     <button id="donateButton" label="&noscriptDonate;" accesskey="&noscriptDonate.accesskey;"  hidden="true" oncommand="nsopt.donate();" />
   </vbox>
   </tabpanel><!-- END General -->
-  
+
   <tabpanel><!-- Whitelist -->
   <vbox flex="1">
   <description style="white-space: normal; width: 33em" id="permissionsText">&noscriptPermissionsText;</description>
   <separator class="thin"/>
   <label control="urlText" value="&noscriptWebAddress;"/>
   <hbox align="center">
-    <textbox id="urlText" flex="1" oninput="nsopt.urlChanged()"/> 
-    <button disabled="false" id="addButton" label="&noscriptAllow;" 
-      accesskey="&noscriptAllow.accesskey;" 
+    <textbox id="urlText" flex="1" oninput="nsopt.urlChanged()"/>
+    <button disabled="false" id="addButton" label="&noscriptAllow;"
+      accesskey="&noscriptAllow.accesskey;"
       oncommand="nsopt.allow()"/>
   </hbox>
 
@@ -114,15 +115,15 @@
     <button id="removeButton" disabled="true" label="&noscriptRemoveSelected;" oncommand="nsopt.remove()"/>
     <button id="revokeButton" disabled="true" label="&noscriptRevokeTemp;" accesskey="&noscriptRevokeTemp.accesskey;"  oncommand="nsopt.revokeTemp()"/>
     <spacer flex="1" />
-    <button id="importButton" label="&noscriptImport;" accesskey="&noscriptImport.accesskey;" 
+    <button id="importButton" label="&noscriptImport;" accesskey="&noscriptImport.accesskey;"
       oncommand="nsopt.importExport('import')"/>
-    <button id="exportButton" label="&noscriptExport;" accesskey="&noscriptExport.accesskey;" 
+    <button id="exportButton" label="&noscriptExport;" accesskey="&noscriptExport.accesskey;"
        oncommand="nsopt.importExport('export')"/>
   </hbox>
    <checkbox id="jsglobal" label="&noscriptGloballyEnabled;" />
   </vbox>
   </tabpanel><!-- END Whitelist -->
-  
+
   <tabpanel><!-- Embeddings -->
     <vbox flex="1">
       <label class="header" value="&noscriptAdditionalRestrictions;" />
@@ -145,7 +146,7 @@
 			<separator class="thin" />
       <checkbox id="opt-contentBlocker" label="&noscriptContentBlocker;" class="header" />
 			<checkbox id="opt-alwaysBlockUntrustedContent" label="&noscriptAlwaysBlockUntrustedContent;" />
-			
+
 			<separator class="thin" />
 			<checkbox id="opt-forbidWebGL" label="&noscriptForbidWebGL;" />
       <separator class="thin" />
@@ -153,23 +154,23 @@
 			<checkbox id="invopt-showUntrustedPlaceholder" label="&noscriptNoUntrustedPlaceholder;" />
 			<checkbox id="opt-confirmUnblock" label="&noscriptConfirmUnblock;" />
       <checkbox id="opt-collapseObject" label="&noscriptCollapseBlockedObjects;" />
-    
+
 			<hbox>
-        
+
         <spacer flex="1" />
       </hbox>
     </vbox>
   </tabpanel>
-  
+
   <tabpanel><!-- Appearance -->
     <vbox flex="1">
- 
+
     <label class="header" value="&noscriptShow;"/>
 
     <checkbox id="opt-statusIcon" label="&noscriptStatusIcon;" />
     <checkbox id="opt-statusLabel" label="&noscriptStatusLabel;" />
 		<checkbox id="opt-ctxMenu" label="&noscriptCtxMenu;" />
-   
+
       <separator />
        <hbox>
          <vbox flex="1">
@@ -203,7 +204,7 @@
 
   </vbox>
   </tabpanel><!-- END Appearance -->
-  
+
   <tabpanel><!-- Notifications -->
     <vbox flex="1">
       <vbox id="fx-notifications">
@@ -225,26 +226,26 @@
         <separator class="thin" />
         <hbox align="center">
           <checkbox id="opt-xss.notify" label="&noscriptXss;" /><!-- TODO: accesskey -->
-          <label class="text-link" style="font-weight: bold" value="?" 
+          <label class="text-link" style="font-weight: bold" value="?"
             onclick="noscriptUtil.openFaq('xss')"
                  tooltiptext="&noscriptXssFaq;" />
         </hbox>
-        
-   
+
+
         <checkbox id="opt-forbidMetaRefresh.notify" label="&noscriptNotifyMeta;" accesskey="&noscriptNotifyMeta.accesskey;"/>
-  
+
         <checkbox id="opt-ABE.notify" label="&ABE;"/><!-- TODO: accesskey -->
       </vbox>
-      
+
       <checkbox id="opt-clearClick.prompt" label="&noscriptClearClickTitle;"/>
-      
+
       <groupbox class="ia-indent">
         <caption><checkbox id="opt-sound" label="&noscriptSound;" /></caption>
-       
+
         <hbox>
           <textbox id="sampleURL" readonly="true" flex="1" />
-          <button id="sampleChooseButton" label="&noscriptSound.choose;" 
-            accesskey="&noscriptSound.choose.accesskey;" 
+          <button id="sampleChooseButton" label="&noscriptSound.choose;"
+            accesskey="&noscriptSound.choose.accesskey;"
             oncommand="nsopt.soundChooser.choose()" />
         </hbox>
         <hbox align="right">
@@ -254,13 +255,13 @@
           <button label="&noscriptSound.reset;" accesskey="&noscriptSound.reset.accesskey;"
             oncommand="nsopt.soundChooser.setSample(null)" />
         </hbox>
-        
+
       </groupbox>
 
       <checkbox id="opt-firstRunRedirection" label="&noscriptShowReleaseNotes;"/>
     </vbox>
   </tabpanel><!-- END Notifications -->
-  
+
   <tabpanel><!-- Advanced -->
     <vbox flex="1">
     <hbox><description style="white-space: normal">&noscriptReloadWarn;</description></hbox>
@@ -277,7 +278,7 @@
           <tabpanel>
           <vbox flex="1">
             <label class="header" value="&noscriptAdditionalRestrictions;" />
-      
+
                 <checkbox id="opt-forbidBookmarklets" label="&noscriptForbidBookmarklets;" />
                 <checkbox id="opt-noping" label="&noscriptForbidPing;" />
                 <separator class="thin"/>
@@ -286,37 +287,37 @@
                 <checkbox id="opt-forbidXSLT" label="&noscriptForbidXSLT;" />
                 <separator class="thin"/>
                 <checkbox id="opt-fixLinks" label="&noscriptFixLinks;" />
-								
+
 								<separator class="thin"/>
 								<checkbox id="opt-restrictSubdocScripting" label="&noscriptRestrictSubdocScripting;" />
-								
+
              <separator />
-             <label class="text-link header" 
+             <label class="text-link header"
               onclick="document.getElementById('nsopt-tabsMain').selectedTab = document.getElementById('nsopt-tabEmbeddings')"
               value="&noscriptEmbeddings;" />
           </vbox>
          </tabpanel><!-- END additional restrictions -->
-         
+
          <tabpanel><!-- Additional Permissions -->
             <vbox flex="1">
               <label class="header" value="&noscriptAdditionalPermissions;" />
 
               <checkbox id="opt-nselForce" label="&noscriptNselForce;" />
               <checkbox id="mozopt-browser.send_pings" label="&noscriptAllowPing;" />
-              
+
               <separator class="thin" />
               <checkbox id="opt-allowClipboard" label="&noscriptAllowClipboard;" />
               <checkbox id="opt-allowLocalLinks" label="&noscriptAllowLocalLinks;" />
-							
+
 							<separator class="thin" />
 							<checkbox id="opt-cascadePermissions" label="&noscriptCascadePermissions;" />
              </vbox>
           </tabpanel><!-- END Additional Permissions -->
-        
+
 
          <tabpanel><!-- XSS -->
          <vbox flex="1">
-            <label class="text-link header" 
+            <label class="text-link header"
               onclick="noscriptUtil.openFaq('xss')" value="&noscriptXssFaq;"
               accesskey="&noscriptXssFaq.accesskey;"
               />
@@ -325,33 +326,33 @@
             <separator class="thin" />
             <label control="xssEx-regexp" class="header" value="&noscriptXssExceptions;" />
             <description control="xssEx-regexp" style="white-space: normal">&noscriptXssExceptions.description;</description>
-            <textbox id="xssEx-regexp" multiline="true" flex="1" /> 
+            <textbox id="xssEx-regexp" multiline="true" flex="1" />
             <hbox align="center">
               <label control="xssEx-sample" value="&noscriptMatchSample;" />
               <textbox id="xssEx-sample" flex="1" value="https://www.google.com/search?q=test" />
             </hbox>
           </vbox>
         </tabpanel>
-        
+
         <tabpanel><!-- HTTPS -->
          <vbox flex="1">
             <label class="text-link header"
               accesskey="&noscriptHttpsFaq.accesskey;"
               onclick="noscriptUtil.openFaq('https')"
               value="&noscriptHttpsFaq;"/>
-            
+
             <tabbox id="nsopt-tabsHttps" flex="1">
               <tabs>
                 <tab label=" &noscriptHttps.behavior; " id="nsopt-tabHttpsBehavior" />
                 <tab label=" &noscriptHttps.cookies; " id="nsopt-tabHttpsCookies"/>
 								<tab label=" &noscriptPermissions; " id="nsopt-tabHttpsPermissions"/>
-	
+
               </tabs>
-            
+
               <tabpanels flex="1">
                 <tabpanel>
                   <vbox flex="1">
-               
+
                     <description control="opt-httpsForced" style="white-space: normal">&noscriptHttpsForced;</description>
                     <textbox id="opt-httpsForced" multiline="true" flex="1" />
                     <description control="opt-httpsForcedExceptions" style="white-space: normal">&noscriptHttpsForcedExceptions;</description>
@@ -364,7 +365,7 @@
                       <caption><checkbox id="opt-secureCookies" label="&noscriptSecureCookies;" oncommand="nsopt.utils.syncGroup(this)" /></caption>
                       <description control="opt-secureCookiesForced" style="white-space: normal">&noscriptSecureCookiesForced;</description>
                       <textbox id="opt-secureCookiesForced" multiline="true" flex="1" />
-                     
+
                       <description control="opt-secureCookiesExceptions" style="white-space: normal">&noscriptSecureCookiesExceptions;</description>
                       <textbox id="opt-secureCookiesExceptions" multiline="true" flex="1" />
                     </groupbox>
@@ -411,7 +412,7 @@
 					<vbox >
             <label control="abeRulesets-list" value="&ABE.rulesets.label;" />
             <hbox flex="1">
-              <listbox id="abeRulesets-list" 
+              <listbox id="abeRulesets-list"
                 onselect="abeOpts.selected(this)"
                 ondblclick="abeOpts.edit(this)"
                 flex="1"
@@ -430,7 +431,7 @@
 										 readonly="true" multiline="true" rows="2" hidden="true" value="" />
 							</vbox>
             </hbox>
-						
+
 					</vbox>
             <hbox align="center">
               <button id="abeRefresh-button" label="&ABE.refresh.label;" accesskey="&ABE.refresh.accesskey;" oncommand="abeOpts.refresh()" />
@@ -442,7 +443,7 @@
             </hbox>
           </vbox>
        </tabpanel><!-- End ABE -->
-			 
+
 			 <tabpanel><!--  ClearClick -->
           <vbox flex="1">
 
@@ -452,16 +453,16 @@
             <checkbox id="cc2" value="2" label="&noscriptTrustedPagesAdj;"/>
           </vbox>
         </vbox>
- 
+
        </tabpanel><!-- End ClearClick -->
-			 
+
       </tabpanels>
-      
-      
+
+
      </tabbox>
      </vbox>
      </tabpanel>
-        
+
   </tabpanels>
   </tabbox>
   </vbox>
diff --git a/chrome/noscript.jar!/content/noscript/parentProcess.js b/chrome/noscript.jar!/content/noscript/parentProcess.js
index 508529e..2dfaf16 100644
--- a/chrome/noscript.jar!/content/noscript/parentProcess.js
+++ b/chrome/noscript.jar!/content/noscript/parentProcess.js
@@ -26,13 +26,18 @@ IPC.parent = {
       globalMM.removeDelayedFrameScript("chrome://noscript/content/frameScript.js");
       let mm = this.mm;
       if (mm) {
-        mm.removeWeakMessageListener("NoScript:mustBlockJS");
+        mm.removeWeakMessageListener("NoScript:mustBlockJS", this);
         mm.removeDelayedProcessScript("chrome://noscript/content/processScript.js");
       }
     }
   },
 
   receiveMessage: function(m) {
+    ns.onContentInit();
+    this.receiveMessage = this._receiveMessageReal;
+    return this.receiveMessage(m);
+  },
+  _receiveMessageReal: function(m) {
     switch(m.name) {
       case "NoScript:mustBlockJS":
         return ns.mustBlockJS(m.objects.window, m.data.site, WinScript);
diff --git a/chrome/noscript.jar!/locale/bg-BG/noscript/noscript.dtd b/chrome/noscript.jar!/locale/bg-BG/noscript/noscript.dtd
index 98a2195..a7b44cf 100644
--- a/chrome/noscript.jar!/locale/bg-BG/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/bg-BG/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Настройки…">
 <!ENTITY noscriptOptions.accesskey "Н">
 <!ENTITY noscriptOptionsLong "Настройки на NoScript">
-<!ENTITY noscriptAbout "За NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "За NoScript 2.6.9.36">
 <!ENTITY noscriptPermissionsText "Можете да зададете в кои уеб-сайтове е позволено да се използват скриптовете. Напишете адреса или домейна (например "http://www.site.com" или "site.com") на сайта, който искате да разрешите и натиснете Разреши.">
 <!ENTITY noscriptWebAddress "Адрес на уеб-сайта:">
 <!ENTITY noscriptAllow "Разреши">
diff --git a/chrome/noscript.jar!/locale/ca-AD/noscript/noscript.dtd b/chrome/noscript.jar!/locale/ca-AD/noscript/noscript.dtd
index 22ab2ed..81f872b 100644
--- a/chrome/noscript.jar!/locale/ca-AD/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/ca-AD/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Opcions...">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "Opcions de NoScript">
-<!ENTITY noscriptAbout "Quant a NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "Quant a NoScript 2.6.9.36">
 <!ENTITY noscriptPermissionsText "Podeu especificar quins llocs web poden executar seqüències. El tipus d'adreça o el domini (p.ex. "http://www.site.com" o "site.com") del lloc al qual voleu donar permissos i feu clic a Permet.">
 <!ENTITY noscriptWebAddress "Adreça del lloc web:">
 <!ENTITY noscriptAllow "Permet">
diff --git a/chrome/noscript.jar!/locale/cs-CZ/noscript/noscript.dtd b/chrome/noscript.jar!/locale/cs-CZ/noscript/noscript.dtd
index dac0215..ba5d9f2 100644
--- a/chrome/noscript.jar!/locale/cs-CZ/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/cs-CZ/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Nastavení...">
 <!ENTITY noscriptOptions.accesskey "N">
 <!ENTITY noscriptOptionsLong "Nastavení NoScript">
-<!ENTITY noscriptAbout "O rozšíření NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "O rozšíření NoScript 2.6.9.36">
 <!ENTITY noscriptPermissionsText "Můžete si zvolit, které webové stránky mají povoleno spouštět skripty. Zadejte adresu (např. http://www.site.com nebo site.com) na které se nachází stránka, pro kterou chcete skripty povolit a klepněte na Povolit.">
 <!ENTITY noscriptWebAddress "Adresa webové stránky:">
 <!ENTITY noscriptAllow "Povolit">
diff --git a/chrome/noscript.jar!/locale/cy-GB/noscript/noscript.dtd b/chrome/noscript.jar!/locale/cy-GB/noscript/noscript.dtd
index cf2dc24..264e752 100644
--- a/chrome/noscript.jar!/locale/cy-GB/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/cy-GB/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Opsiynau">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "Opsiynau NoScript">
-<!ENTITY noscriptAbout "Yngylch NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "Yngylch NoScript 2.6.9.36">
 <!ENTITY noscriptPermissionsText "Cewch enwi pa wefannau sy'n cael rhedeg sgriptiau. Teipiwch gyfeiriad neu barth (e.e. "http://www.site.com" neu "site.com") y safle rydych eisiau ei ganiatau ac wedyn cliciwch Caniatau.">
 <!ENTITY noscriptWebAddress "Cyfeiriad wefan">
 <!ENTITY noscriptAllow "Caniatau">
diff --git a/chrome/noscript.jar!/locale/da/noscript/noscript.dtd b/chrome/noscript.jar!/locale/da/noscript/noscript.dtd
index 59f22c4..a745758 100644
--- a/chrome/noscript.jar!/locale/da/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/da/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Indstillinger…">
 <!ENTITY noscriptOptions.accesskey "I">
 <!ENTITY noscriptOptionsLong "NoScript Indstillinger">
-<!ENTITY noscriptAbout "Om NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "Om NoScript 2.6.9.36">
 <!ENTITY noscriptPermissionsText "Du kan angive hvilke websteder der må udføre scripts. Indtast adresse eller domæne (f.eks. "http://www.site.com" eller "site.com") på det websted du ønsker at tillade og klik på Tillad.">
 <!ENTITY noscriptWebAddress "Webstedets adresse:">
 <!ENTITY noscriptAllow "Tillad">
diff --git a/chrome/noscript.jar!/locale/de/noscript/noscript.dtd b/chrome/noscript.jar!/locale/de/noscript/noscript.dtd
index f34596a..5619702 100644
--- a/chrome/noscript.jar!/locale/de/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/de/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Einstellungen…">
 <!ENTITY noscriptOptions.accesskey "E">
 <!ENTITY noscriptOptionsLong "NoScript - Einstellungen">
-<!ENTITY noscriptAbout "Über NoScript 2.6.9.34…">
+<!ENTITY noscriptAbout "Über NoScript 2.6.9.36…">
 <!ENTITY noscriptPermissionsText "Sie können festlegen, welchen Websites Sie das Ausführen von Skripten erlauben möchten. Geben Sie bitte die exakte Adresse oder die Domain der Website ein (z.B. "http://www.site.com" oder "site.com"), für die Sie dies zulassen möchten, und klicken Sie dann auf "Erlauben".">
 <!ENTITY noscriptWebAddress "Adresse der Website:">
 <!ENTITY noscriptAllow "Erlauben">
diff --git a/chrome/noscript.jar!/locale/el/noscript/noscript.dtd b/chrome/noscript.jar!/locale/el/noscript/noscript.dtd
index c238ff5..2d37b4e 100644
--- a/chrome/noscript.jar!/locale/el/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/el/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Επιλογές">
 <!ENTITY noscriptOptions.accesskey "Ε">
 <!ENTITY noscriptOptionsLong "Επιλογές NoScript">
-<!ENTITY noscriptAbout "Περί NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "Περί NoScript 2.6.9.36">
 <!ENTITY noscriptPermissionsText "Μπορείτε να καθορίσετε για ποιους ιστότοπους θα επιτρέπεται η εκτέλεση σεναρίων εντολών. Πληκτρολογήστε τη διεύθυνση τομέα (πχ. "http://www.site.com" or "site.com") του ιστότοπου που θέλετε και μετά κάντε κλικ στο «Να επιτρέπεται»">
 <!ENTITY noscriptWebAddress "Διεύθυνση ιστότοπου">
 <!ENTITY noscriptAllow "Να επιτρέπεται">
diff --git a/chrome/noscript.jar!/locale/en-GB/noscript/noscript.dtd b/chrome/noscript.jar!/locale/en-GB/noscript/noscript.dtd
index 5b1c1f5..136014b 100644
--- a/chrome/noscript.jar!/locale/en-GB/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/en-GB/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Options…">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "NoScript Options">
-<!ENTITY noscriptAbout "About NoScript 2.6.9.34…">
+<!ENTITY noscriptAbout "About NoScript 2.6.9.36…">
 <!ENTITY noscriptPermissionsText "You can specify which web sites are allowed to execute scripts. Type the address or the domain (e.g. "http://www.site.com" or "site.com") of the site you want to allow and then click Allow.">
 <!ENTITY noscriptWebAddress "Address of web site:">
 <!ENTITY noscriptAllow "Allow">
diff --git a/chrome/noscript.jar!/locale/en-US/noscript/noscript.dtd b/chrome/noscript.jar!/locale/en-US/noscript/noscript.dtd
index 0d33259..f8bffae 100644
--- a/chrome/noscript.jar!/locale/en-US/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/en-US/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Options…">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "NoScript Options">
-<!ENTITY noscriptAbout "About NoScript 2.6.9.34…">
+<!ENTITY noscriptAbout "About NoScript 2.6.9.36…">
 <!ENTITY noscriptPermissionsText "You can specify which web sites are allowed to execute scripts. Type the address or the domain (e.g. "http://www.site.com" or "site.com") of the site you want to allow and then click Allow.">
 <!ENTITY noscriptWebAddress "Address of web site:">
 <!ENTITY noscriptAllow "Allow">
diff --git a/chrome/noscript.jar!/locale/eo/noscript/noscript.dtd b/chrome/noscript.jar!/locale/eo/noscript/noscript.dtd
index 9f76842..2781c0a 100644
--- a/chrome/noscript.jar!/locale/eo/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/eo/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Opcioj…">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "Opcioj de NoScript">
-<!ENTITY noscriptAbout "Pri NoScript 2.6.9.34…">
+<!ENTITY noscriptAbout "Pri NoScript 2.6.9.36…">
 <!ENTITY noscriptPermissionsText "Vi povas specifi, kiuj ttt-ejoj rajtu plenumigi skriptojn. Entajpu la adreson aŭ la domajnonomon (ekz. “http://www.retejo.org” aŭ “retejo.org”) de la ttt-ejo, kiun vi volas rajtigi, kaj poste alklaku “Rajtigi”.">
 <!ENTITY noscriptWebAddress "Adreso de retpaĝaro:">
 <!ENTITY noscriptAllow "Rajtigi">
diff --git a/chrome/noscript.jar!/locale/es-AR/noscript/noscript.dtd b/chrome/noscript.jar!/locale/es-AR/noscript/noscript.dtd
index d790a54..628e156 100644
--- a/chrome/noscript.jar!/locale/es-AR/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/es-AR/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Opciones…">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "Opciones de NoScript">
-<!ENTITY noscriptAbout "Acerca de NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "Acerca de NoScript 2.6.9.36">
 <!ENTITY noscriptPermissionsText "Puede especificar a cuáles sitios web le permitirá ejecutar scripts. Escriba la dirección o el dominio (por ejemplo, "http://www.sitio.com" o "sitio.com") del sitio y luego haga clic en Permitir.">
 <!ENTITY noscriptWebAddress "Dirección del sitio web:">
 <!ENTITY noscriptAllow "Permitir">
diff --git a/chrome/noscript.jar!/locale/es-CL/noscript/noscript.dtd b/chrome/noscript.jar!/locale/es-CL/noscript/noscript.dtd
index bc15d11..7beec12 100644
--- a/chrome/noscript.jar!/locale/es-CL/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/es-CL/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Options…">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "Opciones de NoScript">
-<!ENTITY noscriptAbout "About NoScript 2.6.9.34…">
+<!ENTITY noscriptAbout "About NoScript 2.6.9.36…">
 <!ENTITY noscriptPermissionsText "You can specify which web sites are allowed to execute scripts. Type the address or the domain (e.g. "http://www.site.com" or "site.com") of the site you want to allow and then click Allow.">
 <!ENTITY noscriptWebAddress "Address of web site:">
 <!ENTITY noscriptAllow "Allow">
diff --git a/chrome/noscript.jar!/locale/es-ES/noscript/noscript.dtd b/chrome/noscript.jar!/locale/es-ES/noscript/noscript.dtd
index c1f610e..caca1f6 100644
--- a/chrome/noscript.jar!/locale/es-ES/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/es-ES/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Opciones…">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "Configuración de NoScript">
-<!ENTITY noscriptAbout "Acerca de NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "Acerca de NoScript 2.6.9.36">
 <!ENTITY noscriptPermissionsText "Aquí puede especificar las páginas web a las que va a permitir ejecutar código JavaScript. Escriba la dirección de la web que quiera incluir (ej. "http://www.paginaweb.com" o "paginaweb.com") y después pulse "Permitir".">
 <!ENTITY noscriptWebAddress "Dirección de la página web:">
 <!ENTITY noscriptAllow "Permitir">
diff --git a/chrome/noscript.jar!/locale/et-EE/noscript/noscript.dtd b/chrome/noscript.jar!/locale/et-EE/noscript/noscript.dtd
index d9bd69b..bc90ea3 100644
--- a/chrome/noscript.jar!/locale/et-EE/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/et-EE/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Sätted…">
 <!ENTITY noscriptOptions.accesskey "S">
 <!ENTITY noscriptOptionsLong "NoScripti sätted">
-<!ENTITY noscriptAbout "Täpsemalt lisast NoScript 2.6.9.34…">
+<!ENTITY noscriptAbout "Täpsemalt lisast NoScript 2.6.9.36…">
 <!ENTITY noscriptPermissionsText "Sa saad määrata, millistel veebilehtedel lubatakse skripte käivitada. Kirjuta veebilehe aadress või domeeni, mida soovid lubada (nt "http://www.site.com" või "site.com") ja klõpsa Luba nuppu">
 <!ENTITY noscriptWebAddress "Veebilehe aadress:">
 <!ENTITY noscriptAllow "Luba">
diff --git a/chrome/noscript.jar!/locale/eu/noscript/noscript.dtd b/chrome/noscript.jar!/locale/eu/noscript/noscript.dtd
index 0c1c182..1cf56ae 100644
--- a/chrome/noscript.jar!/locale/eu/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/eu/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Aukerak:">
 <!ENTITY noscriptOptions.accesskey "A">
 <!ENTITY noscriptOptionsLong "NoScript aukerak">
-<!ENTITY noscriptAbout "NoScript 2.6.9.34-eri buruz:">
+<!ENTITY noscriptAbout "NoScript 2.6.9.36-eri buruz:">
 <!ENTITY noscriptPermissionsText "Zein webgunek script-ak exekuta ditzakeen zehaztu dezakezu. Idatzi script-ak erabiltzea onartzea nahi duzun domeinuaren izena (adib. "http://www.gunea.org" or "gunea.org") eta Onartu sakatu.">
 <!ENTITY noscriptWebAddress "Webgunearen helbidea:">
 <!ENTITY noscriptAllow "Onartu">
diff --git a/chrome/noscript.jar!/locale/fa-IR/noscript/noscript.dtd b/chrome/noscript.jar!/locale/fa-IR/noscript/noscript.dtd
index 531316d..e57e343 100644
--- a/chrome/noscript.jar!/locale/fa-IR/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/fa-IR/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "تنظیمات...">
 <!ENTITY noscriptOptions.accesskey "ت">
 <!ENTITY noscriptOptionsLong "تنظیمات NoScript">
-<!ENTITY noscriptAbout "درباره NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "درباره NoScript 2.6.9.36">
 <!ENTITY noscriptPermissionsText "شما می توانید سایت هایی را که اجازه اجرای اسکریپت دارند را مشخص کنید.آدرس سایت یا نام دامنه را وارد کنید.(به عنوان مثال "http://www.site.com" یا "site.com")">
 <!ENTITY noscriptWebAddress "آدرس وب سایت :">
 <!ENTITY noscriptAllow "اجازه دادن">
diff --git a/chrome/noscript.jar!/locale/fi/noscript/noscript.dtd b/chrome/noscript.jar!/locale/fi/noscript/noscript.dtd
index 4016ffc..4266930 100644
--- a/chrome/noscript.jar!/locale/fi/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/fi/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Asetukset…">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "NoScript asetukset">
-<!ENTITY noscriptAbout "Tietoja NoScript 2.6.9.34istä…">
+<!ENTITY noscriptAbout "Tietoja NoScript 2.6.9.36istä…">
 <!ENTITY noscriptPermissionsText "Voit määrittää verkkosivut joiden sallitaan suorittaa scriptejä. Kirjoita verkko-osoite tai verkkonimi (esim. "http://www.site.com" tai "site.com") jonka haluat sallia ja paina Salli.">
 <!ENTITY noscriptWebAddress "Verkkosivun osoite:">
 <!ENTITY noscriptAllow "Salli">
diff --git a/chrome/noscript.jar!/locale/fr/noscript/noscript.dtd b/chrome/noscript.jar!/locale/fr/noscript/noscript.dtd
index d2831e4..e333a39 100644
--- a/chrome/noscript.jar!/locale/fr/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/fr/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Options">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "Options de NoScript">
-<!ENTITY noscriptAbout "À propos de NoScript 2.6.9.34…">
+<!ENTITY noscriptAbout "À propos de NoScript 2.6.9.36…">
 <!ENTITY noscriptPermissionsText "Il est possible de spécifier quels sites Web sont autorisés à exécuter des scripts. Saisissez l'adresse exacte du site que vous désirez autoriser puis cliquez sur Autoriser.">
 <!ENTITY noscriptWebAddress "Adresse du site Web :">
 <!ENTITY noscriptAllow "Autoriser">
diff --git a/chrome/noscript.jar!/locale/gl-ES/noscript/noscript.dtd b/chrome/noscript.jar!/locale/gl-ES/noscript/noscript.dtd
index 6827fa8..239ce73 100644
--- a/chrome/noscript.jar!/locale/gl-ES/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/gl-ES/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Opcións...">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "Opcións de NoScript">
-<!ENTITY noscriptAbout "Acerca de NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "Acerca de NoScript 2.6.9.36">
 <!ENTITY noscriptPermissionsText "Podes especificar que páxinas web poden executar scripts. Teclea o enderezo ou o dominio (por exemplo "http://www.paxina.com" ou "paxina.com") do sitio que queres autorizar e despois preme en "Permitir".">
 <!ENTITY noscriptWebAddress "Enderezo web:">
 <!ENTITY noscriptAllow "Permitir">
diff --git a/chrome/noscript.jar!/locale/he-IL/noscript/noscript.dtd b/chrome/noscript.jar!/locale/he-IL/noscript/noscript.dtd
index 86d6e2c..ee285f6 100644
--- a/chrome/noscript.jar!/locale/he-IL/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/he-IL/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "הגדרות...">
 <!ENTITY noscriptOptions.accesskey "">
 <!ENTITY noscriptOptionsLong "NoScript הגדרות של">
-<!ENTITY noscriptAbout "אודות NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "אודות NoScript 2.6.9.36">
 <!ENTITY noscriptPermissionsText "ציין אילו אתרים יכולים לקבל היתר להפעלת קבצי Script. הקלד את כתובת האתר או את שם התחום (כגון: "http://www.site.com" או "site.com") ולאחר מכן לחץ על התר.">
 <!ENTITY noscriptWebAddress "כתובת/תחום:">
 <!ENTITY noscriptAllow "התר">
diff --git a/chrome/noscript.jar!/locale/hr-HR/noscript/noscript.dtd b/chrome/noscript.jar!/locale/hr-HR/noscript/noscript.dtd
index a667eff..661c4be 100644
--- a/chrome/noscript.jar!/locale/hr-HR/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/hr-HR/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Opcije...">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "NoScript Opcije">
-<!ENTITY noscriptAbout "O NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "O NoScript 2.6.9.36">
 <!ENTITY noscriptPermissionsText "Možete odrediti koje web stranice imaju dopuštenje za izvođenje skripti. Upišite adresu ili domenu (npr. "http://www.stranica.hr" ili "stranica.hr") stranice kojoj želite dopustiti i kliknite na Dopusti.">
 <!ENTITY noscriptWebAddress "Adresa web stranice:">
 <!ENTITY noscriptAllow "Dopusti">
diff --git a/chrome/noscript.jar!/locale/hsb/noscript/noscript.dtd b/chrome/noscript.jar!/locale/hsb/noscript/noscript.dtd
index a9076bb..defcc92 100644
--- a/chrome/noscript.jar!/locale/hsb/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/hsb/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Opcije…">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "Opcije NoScript">
-<!ENTITY noscriptAbout "Wo NoScript 2.6.9.34…">
+<!ENTITY noscriptAbout "Wo NoScript 2.6.9.36…">
 <!ENTITY noscriptPermissionsText "Móžeće podać, kotre websydła smědźa skripty wuwjesć. Zapisajće adresu abo domenu  (na př. "http://www.site.com" abo "site.com") websydła, kotremuž chceće to dowolić a klikńće potom na "Dowolić".">
 <!ENTITY noscriptWebAddress "Adresa websydła:">
 <!ENTITY noscriptAllow "Dowolić">
diff --git a/chrome/noscript.jar!/locale/hu-HU/noscript/noscript.dtd b/chrome/noscript.jar!/locale/hu-HU/noscript/noscript.dtd
index 08891d0..c233c9f 100644
--- a/chrome/noscript.jar!/locale/hu-HU/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/hu-HU/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Beállítások…">
 <!ENTITY noscriptOptions.accesskey "B">
 <!ENTITY noscriptOptionsLong "A NoScript beállításai">
-<!ENTITY noscriptAbout "A NoScript 2.6.9.34 névjegye">
+<!ENTITY noscriptAbout "A NoScript 2.6.9.36 névjegye">
 <!ENTITY noscriptPermissionsText "Megadhatja, hogy mely webhelyek számára engedélyezi a parancsfájlok futtatását. Írja be az engedélyezni kívánt webhely címét vagy tartomány nevét (pl. "http://www.webhely.hu" vagy "webhely.hu"), majd kattintson az Engedélyezés gombra.">
 <!ENTITY noscriptWebAddress "A webhely címe:">
 <!ENTITY noscriptAllow "Engedélyezés">
diff --git a/chrome/noscript.jar!/locale/id-ID/noscript/noscript.dtd b/chrome/noscript.jar!/locale/id-ID/noscript/noscript.dtd
index 9fe11c1..47deae7 100644
--- a/chrome/noscript.jar!/locale/id-ID/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/id-ID/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Pilihan...">
 <!ENTITY noscriptOptions.accesskey "P">
 <!ENTITY noscriptOptionsLong "Pilihan NoScript">
-<!ENTITY noscriptAbout "Tentang NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "Tentang NoScript 2.6.9.36">
 <!ENTITY noscriptPermissionsText "Anda dapat menentukan situs web mana yang diijinkan menjalankan naskah. Masukkan alamat atau domain (contoh: "http://www.site.com" atau "site.com") yang akan diberi ijin kemudian klik Ijinkan.">
 <!ENTITY noscriptWebAddress "Alamat situs web:">
 <!ENTITY noscriptAllow "Ijinkan">
diff --git a/chrome/noscript.jar!/locale/it/noscript/noscript.dtd b/chrome/noscript.jar!/locale/it/noscript/noscript.dtd
index 4484278..fcd743d 100644
--- a/chrome/noscript.jar!/locale/it/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/it/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Opzioni…">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "Opzioni NoScript">
-<!ENTITY noscriptAbout "Informazioni su NoScript 2.6.9.34…">
+<!ENTITY noscriptAbout "Informazioni su NoScript 2.6.9.36…">
 <!ENTITY noscriptPermissionsText "Qui si possono indicare i siti per i quali l'esecuzione degli script è consentita. Digitare l'indirizzo o il dominio (es. "http://www.sito.com" oppure "sito.com")  e fare clic su Permetti.">
 <!ENTITY noscriptWebAddress "Indirizzo del sito:">
 <!ENTITY noscriptAllow "Permetti">
diff --git a/chrome/noscript.jar!/locale/ja-JP/noscript/noscript.dtd b/chrome/noscript.jar!/locale/ja-JP/noscript/noscript.dtd
index 594761c..8437c20 100644
--- a/chrome/noscript.jar!/locale/ja-JP/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/ja-JP/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "オプション...">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "NoScript オプション">
-<!ENTITY noscriptAbout "NoScript 2.6.9.34について...">
+<!ENTITY noscriptAbout "NoScript 2.6.9.36について...">
 <!ENTITY noscriptPermissionsText "JavaScriptを許可するサイトを指定する事ができます。許可したいサイトのアドレスかドメインを入力して、ボタンを押してください。(例: "http://www.site.com" または "site.com")">
 <!ENTITY noscriptWebAddress "ウェブサイトのアドレス:">
 <!ENTITY noscriptAllow "許可する">
diff --git a/chrome/noscript.jar!/locale/kk-KZ/noscript/noscript.dtd b/chrome/noscript.jar!/locale/kk-KZ/noscript/noscript.dtd
index f0013f1..d73bbdf 100644
--- a/chrome/noscript.jar!/locale/kk-KZ/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/kk-KZ/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Баптаулары">
 <!ENTITY noscriptOptions.accesskey "Б">
 <!ENTITY noscriptOptionsLong "NoScript баптаулары">
-<!ENTITY noscriptAbout "NoScript 2.6.9.34 туралы...">
+<!ENTITY noscriptAbout "NoScript 2.6.9.36 туралы...">
 <!ENTITY noscriptPermissionsText "Қай сайттарға JavaScript орындауға рұқсат екенін көрсете аласыз. Рұқсат етілетін сайттың домен адресін енгізіңіз (мысалы, "http://www.site.com" немесе "site.com"), содан кейін Рұқсат ету басыңыз.">
 <!ENTITY noscriptWebAddress "Веб-сайт адресі:">
 <!ENTITY noscriptAllow "Рұқсат ету">
diff --git a/chrome/noscript.jar!/locale/km-KH/noscript/noscript.dtd b/chrome/noscript.jar!/locale/km-KH/noscript/noscript.dtd
index 90c8810..e8c7897 100644
--- a/chrome/noscript.jar!/locale/km-KH/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/km-KH/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Options...">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "NoScript Options">
-<!ENTITY noscriptAbout "About NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "About NoScript 2.6.9.36">
 <!ENTITY noscriptPermissionsText "You can specify which web sites are allowed to execute scripts. Type the address or the domain (e.g. "http://www.site.com" or "site.com") of the site you want to allow and then click Allow.">
 <!ENTITY noscriptWebAddress "Address of web site:">
 <!ENTITY noscriptAllow "Allow">
diff --git a/chrome/noscript.jar!/locale/ko-KR/noscript/noscript.dtd b/chrome/noscript.jar!/locale/ko-KR/noscript/noscript.dtd
index e58efe4..13d3784 100644
--- a/chrome/noscript.jar!/locale/ko-KR/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/ko-KR/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "옵션...">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "NoScript 옵션">
-<!ENTITY noscriptAbout "NoScript 2.6.9.34 정보...">
+<!ENTITY noscriptAbout "NoScript 2.6.9.36 정보...">
 <!ENTITY noscriptPermissionsText "스크립트 실행을 허용할 웹 사이트를 지정할 수 있습니다. 스크립트를 허용할 사이트의 주소나 도메인 (예를 들면, "http://www.site.com" 또는 "site.com")을 입력한 후 [허용] 버튼을 클릭합니다.">
 <!ENTITY noscriptWebAddress "웹 사이트 주소">
 <!ENTITY noscriptAllow "허용">
diff --git a/chrome/noscript.jar!/locale/lt/noscript/noscript.dtd b/chrome/noscript.jar!/locale/lt/noscript/noscript.dtd
index 0c08517..9d01b46 100644
--- a/chrome/noscript.jar!/locale/lt/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/lt/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Nuostatos...">
 <!ENTITY noscriptOptions.accesskey "N">
 <!ENTITY noscriptOptionsLong "NoScript nuostatos">
-<!ENTITY noscriptAbout "Apie NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "Apie NoScript 2.6.9.36">
 <!ENTITY noscriptPermissionsText "Jūs galite nurodyti, kurioms interneto svetainėms suteikiamas leidimas vykdyti programinius kodus. Įveskite adresą arba domeną (pvz., "http://www.svetaine.lt" arba "svetaine.lt") svetainės, kuriai norite suteikti leidimą ir spauskite Leisti.">
 <!ENTITY noscriptWebAddress "Interneto svetainės adresas:">
 <!ENTITY noscriptAllow "Leisti">
diff --git a/chrome/noscript.jar!/locale/mk-MK/noscript/noscript.dtd b/chrome/noscript.jar!/locale/mk-MK/noscript/noscript.dtd
index b280356..e2bff73 100644
--- a/chrome/noscript.jar!/locale/mk-MK/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/mk-MK/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Опции...">
 <!ENTITY noscriptOptions.accesskey "О">
 <!ENTITY noscriptOptionsLong "NoScript Опции">
-<!ENTITY noscriptAbout "За NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "За NoScript 2.6.9.36">
 <!ENTITY noscriptPermissionsText "Можете да ги назначите страните, на кои што скриптите ќе бидат дозволени. Напишете ја дозволената адреса (на пример http://www.site.com или site.com) и кликнете „Дозволи“">
 <!ENTITY noscriptWebAddress "Адреса на дозволената веб страна:">
 <!ENTITY noscriptAllow "Дозволи">
diff --git a/chrome/noscript.jar!/locale/ms-MY/noscript/noscript.dtd b/chrome/noscript.jar!/locale/ms-MY/noscript/noscript.dtd
index 66e8a47..d1bb22b 100644
--- a/chrome/noscript.jar!/locale/ms-MY/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/ms-MY/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Tetapan...">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "Tetapan NoScript">
-<!ENTITY noscriptAbout "Tentang NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "Tentang NoScript 2.6.9.36">
 <!ENTITY noscriptPermissionsText "Anda boleh menentukan laman web yang anda benarkan skripnya diproses. Taipkan alamat atau domain(contoh:"http://www.tapak.com" atau "tapak.com") laman web yang diingini dan klik Benarkan">
 <!ENTITY noscriptWebAddress "Alamat laman web:">
 <!ENTITY noscriptAllow "Benarkan">
diff --git a/chrome/noscript.jar!/locale/nb-NO/noscript/noscript.dtd b/chrome/noscript.jar!/locale/nb-NO/noscript/noscript.dtd
index e1632ec..b01fb59 100644
--- a/chrome/noscript.jar!/locale/nb-NO/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/nb-NO/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Innstillinger">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "NoScript Innstillinger">
-<!ENTITY noscriptAbout "Om NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "Om NoScript 2.6.9.36">
 <!ENTITY noscriptPermissionsText "Du kan spesifisere hvilke websider som har tillatelse til å kjøre scritper. Skriv inn adresse, eller domene (F.eks: "http://www.side.no", eller &quotside.no") du ønsker å gi tillatelse til, og klikk Tillat.">
 <!ENTITY noscriptWebAddress "Webadresse:">
 <!ENTITY noscriptAllow "Tillat">
diff --git a/chrome/noscript.jar!/locale/nb-NO/noscript/noscript.properties b/chrome/noscript.jar!/locale/nb-NO/noscript/noscript.properties
index d44c382..46bdf34 100644
--- a/chrome/noscript.jar!/locale/nb-NO/noscript/noscript.properties
+++ b/chrome/noscript.jar!/locale/nb-NO/noscript/noscript.properties
@@ -14,7 +14,7 @@ confirm=Er du sikker?
 alwaysAsk=Alltid spør om bekreftelse
 notifyHide=Gjem etter %S sekunder
 trust=Stol på %S
-distrust=Mer %S som usikker
+distrust=Merk %S som usikker
 untrustedOrigin=en usikker opprinnelse
 xss.notify.generic=NoScript filtrerte en potensiell kryss-side skriptingsforsøk (XSS) fra %S. Tekniske detaljer har blitt logget til Konsoll.
 xss.notify.showConsole=Vis Konsoll
diff --git a/chrome/noscript.jar!/locale/nl/noscript/noscript.dtd b/chrome/noscript.jar!/locale/nl/noscript/noscript.dtd
index 9860044..cd31375 100644
--- a/chrome/noscript.jar!/locale/nl/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/nl/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Opties...">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "NoScript opties">
-<!ENTITY noscriptAbout "Over NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "Over NoScript 2.6.9.36">
 <!ENTITY noscriptPermissionsText "Webadressen in deze lijst hebben toestemming om JavaScript te gebruiken. Type het adres of domein in (bijv. "http://www.site.com" of "site.com") van de door u toegestane site; klik daarna op Toestaan.">
 <!ENTITY noscriptWebAddress "Webadres:">
 <!ENTITY noscriptAllow "Toestaan">
diff --git a/chrome/noscript.jar!/locale/pl/noscript/noscript.dtd b/chrome/noscript.jar!/locale/pl/noscript/noscript.dtd
index 1cd8036..9e091f0 100644
--- a/chrome/noscript.jar!/locale/pl/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/pl/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Ustawienia">
 <!ENTITY noscriptOptions.accesskey "U">
 <!ENTITY noscriptOptionsLong "NoScript – ustawienia">
-<!ENTITY noscriptAbout "NoScript 2.6.9.34 – informacje">
+<!ENTITY noscriptAbout "NoScript 2.6.9.36 – informacje">
 <!ENTITY noscriptPermissionsText "Tutaj można określić witryny internetowe, które będą mogły uruchamiać skrypty. Proszę wprowadzić adres lub domenę witryny (np: „http://www.witryna.pl” lub „witryna.pl”) i nacisnąć przycisk Pozwól.">
 <!ENTITY noscriptWebAddress "Adres witryny:">
 <!ENTITY noscriptAllow "Pozwól">
diff --git a/chrome/noscript.jar!/locale/pt-BR/noscript/noscript.dtd b/chrome/noscript.jar!/locale/pt-BR/noscript/noscript.dtd
index 01e4bf5..dfb7bbc 100644
--- a/chrome/noscript.jar!/locale/pt-BR/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/pt-BR/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Opções">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "Opções do NoScript">
-<!ENTITY noscriptAbout "Sobre o NoScript 2.6.9.34…">
+<!ENTITY noscriptAbout "Sobre o NoScript 2.6.9.36…">
 <!ENTITY noscriptPermissionsText "Você pode especificar os sites que podem executar JavaScripts. Escreva o endereço ou o domínio (ex "http://www.site.com" ou "site.com") do site que deseja permitir e depois clique em Permitir.">
 <!ENTITY noscriptWebAddress "Endereço:">
 <!ENTITY noscriptAllow "Permitir">
diff --git a/chrome/noscript.jar!/locale/pt-PT/noscript/noscript.dtd b/chrome/noscript.jar!/locale/pt-PT/noscript/noscript.dtd
index a8db47c..54893d1 100644
--- a/chrome/noscript.jar!/locale/pt-PT/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/pt-PT/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Opções">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "Opções do NoScript">
-<!ENTITY noscriptAbout "Sobre o NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "Sobre o NoScript 2.6.9.36">
 <!ENTITY noscriptPermissionsText "Pode especificar os sítios que podem executar scripts. Escreva o endereço ou o domínio (ex: "http://www.sitio.com" ou "sitio.com") do sítio que deseja permitir e depois pressione em Permitir.">
 <!ENTITY noscriptWebAddress "Endereço:">
 <!ENTITY noscriptAllow "Permitir">
diff --git a/chrome/noscript.jar!/locale/ro/noscript/noscript.dtd b/chrome/noscript.jar!/locale/ro/noscript/noscript.dtd
index cb34a37..83dfb66 100644
--- a/chrome/noscript.jar!/locale/ro/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/ro/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Opțiuni...">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "Opțiuni NoScript">
-<!ENTITY noscriptAbout "Despre NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "Despre NoScript 2.6.9.36">
 <!ENTITY noscriptPermissionsText "Puteți specifica saiturile cărora li se permite să execute scripturi. Scrieți adresa sau domeniul paginii (exemplu: „http://www.sait.ro“ sau „sait.ro“), apoi apăsați pe butonul „Permite“.">
 <!ENTITY noscriptWebAddress "Adresă sait:">
 <!ENTITY noscriptAllow "Permite">
diff --git a/chrome/noscript.jar!/locale/sk-SK/noscript/noscript.dtd b/chrome/noscript.jar!/locale/sk-SK/noscript/noscript.dtd
index 58451fe..250bc30 100644
--- a/chrome/noscript.jar!/locale/sk-SK/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/sk-SK/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Možnosti...">
 <!ENTITY noscriptOptions.accesskey "M">
 <!ENTITY noscriptOptionsLong "NoScript – Možnosti">
-<!ENTITY noscriptAbout "O rozšírení NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "O rozšírení NoScript 2.6.9.36">
 <!ENTITY noscriptPermissionsText "Môžete určiť, ktoré webové stránky majú povolené spúšťať JavaScript. Zadajte adresu alebo doménu (napríklad "http://www.site.com" alebo "site.com") stránky, ktorú chcete povoliť, a potom kliknite na tlačidlo Povoliť.">
 <!ENTITY noscriptWebAddress "Adresa webovej stránky:">
 <!ENTITY noscriptAllow "Povoliť">
diff --git a/chrome/noscript.jar!/locale/sl-SI/noscript/noscript.dtd b/chrome/noscript.jar!/locale/sl-SI/noscript/noscript.dtd
index 38bccd4..b0fc717 100644
--- a/chrome/noscript.jar!/locale/sl-SI/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/sl-SI/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Možnosti...">
 <!ENTITY noscriptOptions.accesskey "M">
 <!ENTITY noscriptOptionsLong "NoScript Možnosti">
-<!ENTITY noscriptAbout "O NoScript 2.6.9.34 programu...">
+<!ENTITY noscriptAbout "O NoScript 2.6.9.36 programu...">
 <!ENTITY noscriptPermissionsText "Določite lahko na katerih straneh bo izvajanje skript dovoljeno. Vnesite naslov ali domeno (pr. "http://www.domena.com" or "domena.com") strani, na kateri želite omogočiti izvajanje skript in kliknite Dovoli.">
 <!ENTITY noscriptWebAddress "Naslov strani:">
 <!ENTITY noscriptAllow "Dovoli">
diff --git a/chrome/noscript.jar!/locale/sr-RS/noscript/noscript.dtd b/chrome/noscript.jar!/locale/sr-RS/noscript/noscript.dtd
index 872c4da..9f526fb 100644
--- a/chrome/noscript.jar!/locale/sr-RS/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/sr-RS/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Подешавања...">
 <!ENTITY noscriptOptions.accesskey "П">
 <!ENTITY noscriptOptionsLong "NoScript подешавања">
-<!ENTITY noscriptAbout "О NoScript 2.6.9.34-у">
+<!ENTITY noscriptAbout "О NoScript 2.6.9.36-у">
 <!ENTITY noscriptPermissionsText "Можете да наведете којим веб странама је дозвољено да извршавају скриптове. Унесите адресу или домен (нпр. "http://www.site.com" или "site.com") стране којој желите да дате дозволу и онда кликните Дозволи.">
 <!ENTITY noscriptWebAddress "Адреса веб стране:">
 <!ENTITY noscriptAllow "Дозволи">
diff --git a/chrome/noscript.jar!/locale/sv-SE/noscript/noscript.dtd b/chrome/noscript.jar!/locale/sv-SE/noscript/noscript.dtd
index 06607d0..80b3647 100644
--- a/chrome/noscript.jar!/locale/sv-SE/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/sv-SE/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Alternativ...">
 <!ENTITY noscriptOptions.accesskey "A">
 <!ENTITY noscriptOptionsLong "NoScript-alternativ">
-<!ENTITY noscriptAbout "Om NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "Om NoScript 2.6.9.36">
 <!ENTITY noscriptPermissionsText "Ange vilka webbplatser som får köra skript. Skriv webbadressen eller domänen (t ex. "http://www.webbplats.se" eller "webbplats.se") för den webbplats där skript ska tillåtas. Klicka sedan på "Tillåt".">
 <!ENTITY noscriptWebAddress "Sidans adress:">
 <!ENTITY noscriptAllow "Tillåt">
diff --git a/chrome/noscript.jar!/locale/te-IN/noscript/noscript.dtd b/chrome/noscript.jar!/locale/te-IN/noscript/noscript.dtd
index 1e1105e..3999305 100644
--- a/chrome/noscript.jar!/locale/te-IN/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/te-IN/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Options…">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "NoScript Options">
-<!ENTITY noscriptAbout "About NoScript 2.6.9.34…">
+<!ENTITY noscriptAbout "About NoScript 2.6.9.36…">
 <!ENTITY noscriptPermissionsText "You can specify which web sites are allowed to execute scripts. Type the address or the domain (e.g. "http://www.site.com" or "site.com") of the site you want to allow and then click Allow.">
 <!ENTITY noscriptWebAddress "Address of web site:">
 <!ENTITY noscriptAllow "Allow">
diff --git a/chrome/noscript.jar!/locale/th/noscript/noscript.dtd b/chrome/noscript.jar!/locale/th/noscript/noscript.dtd
index 97d8efd..fc846d8 100644
--- a/chrome/noscript.jar!/locale/th/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/th/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "ตัวเลือก...">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "ตัวเลือก NoScript">
-<!ENTITY noscriptAbout "เกี่ยวกับ NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "เกี่ยวกับ NoScript 2.6.9.36">
 <!ENTITY noscriptPermissionsText "คุณสามารถกำหนดเว็บไซต์ที่จะอนุญาตดำเนินการสคริปต์ พิมพ์ที่อยู่หรือโดเมน (เช่น "http://www.site.com" หรือ "site.com") ของไซต์ที่คุณต้องการอนุญาตและคลิกอนุญาต">
 <!ENTITY noscriptWebAddress "ที่อยู่เว็บไซต์:">
 <!ENTITY noscriptAllow "อนุญาต">
diff --git a/chrome/noscript.jar!/locale/tr/noscript/noscript.dtd b/chrome/noscript.jar!/locale/tr/noscript/noscript.dtd
index e982863..93d62c3 100644
--- a/chrome/noscript.jar!/locale/tr/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/tr/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Seçenekler">
 <!ENTITY noscriptOptions.accesskey "S">
 <!ENTITY noscriptOptionsLong "NoScript Seçenekleri">
-<!ENTITY noscriptAbout "NoScript 2.6.9.34 Hakkında">
+<!ENTITY noscriptAbout "NoScript 2.6.9.36 Hakkında">
 <!ENTITY noscriptPermissionsText "Hangi web sayfalarında JavaScript'e izni vereceğinizi kolayca seçebilirsiniz. Lütfen adresi tam olarak girin ve 'İzin ver' düğmesine tıklayarak sayfanın JavaScript kullanmasına izin verin.">
 <!ENTITY noscriptWebAddress "Site adresi:">
 <!ENTITY noscriptAllow "İzin ver">
diff --git a/chrome/noscript.jar!/locale/vi/noscript/noscript.dtd b/chrome/noscript.jar!/locale/vi/noscript/noscript.dtd
index 29a1753..3e10390 100644
--- a/chrome/noscript.jar!/locale/vi/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/vi/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Tùy chọn">
 <!ENTITY noscriptOptions.accesskey "y">
 <!ENTITY noscriptOptionsLong "Tùy chọn cho NoScript">
-<!ENTITY noscriptAbout "Thông tin về NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "Thông tin về NoScript 2.6.9.36">
 <!ENTITY noscriptPermissionsText "Bạn có thể chỉ định trang web nào được phép chạy script. Gõ địa chỉ hay tên miền (v.d. "http://www.nhaccodien.com" hay "nhaccodien.com") của trang mà bạn muốn cho phép, rồi nhấn Cho phép.">
 <!ENTITY noscriptWebAddress "Địa chỉ của trang web:">
 <!ENTITY noscriptAllow "Cho phép">
diff --git a/chrome/noscript.jar!/locale/zh-CN/noscript/noscript.dtd b/chrome/noscript.jar!/locale/zh-CN/noscript/noscript.dtd
index 40b2d56..6ed89e6 100644
--- a/chrome/noscript.jar!/locale/zh-CN/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/zh-CN/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "选项...">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "NoScript 选项">
-<!ENTITY noscriptAbout "关于 NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "关于 NoScript 2.6.9.36">
 <!ENTITY noscriptPermissionsText "您可以指定允许执行脚本的网站。请输入您想要允许的网站地址或域名(例如: “http://www.site.com”或者“site.com”)然后单击“允许”。">
 <!ENTITY noscriptWebAddress "网站地址:">
 <!ENTITY noscriptAllow "允许">
diff --git a/chrome/noscript.jar!/locale/zh-TW/noscript/noscript.dtd b/chrome/noscript.jar!/locale/zh-TW/noscript/noscript.dtd
index 0275809..1937149 100644
--- a/chrome/noscript.jar!/locale/zh-TW/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/zh-TW/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "選項…">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "NoScript 選項">
-<!ENTITY noscriptAbout "關於 NoScript 2.6.9.34">
+<!ENTITY noscriptAbout "關於 NoScript 2.6.9.36">
 <!ENTITY noscriptPermissionsText "您可以指定允許執行 JavaScript 的網站。輸入您要允許的網址或網域(例如 "http://www.site.com" 或 "site.com"),然後按下允許.">
 <!ENTITY noscriptWebAddress "網址:">
 <!ENTITY noscriptAllow "允許">
diff --git a/components/noscriptService.js b/components/noscriptService.js
index fc53072..c0221b8 100644
--- a/components/noscriptService.js
+++ b/components/noscriptService.js
@@ -1,5 +1,5 @@
 // const TIME0 = Date.now();
-const VERSION = "2.6.9.34";
+const VERSION = "2.6.9.36";
 const SERVICE_CTRID = "@maone.net/noscript-service;1";
 const SERVICE_ID = "{31aec909-8e86-4397-9380-63a59e0c5ff5}";
 const EXTENSION_ID = "{73a6fe31-595d-460b-a920-fcc0f8843232}";
@@ -1722,6 +1722,9 @@ var ns = {
 
 
   updateExtraPerm: function(prefName, baseName, names) {
+    if (prefName === "allowLocalLinks") {
+      ns.log("allowLocalLinks: " + new Error().stack)
+    }
     var cpName;
     var enabled = this.getPref(prefName, false);
     this[prefName] = enabled;
@@ -1890,7 +1893,6 @@ var ns = {
     this._batchPrefs = true;
     for each(var p in [
       "autoAllow",
-      "allowClipboard", "allowLocalLinks",
       "allowedMimeRegExp", "hideOnUnloadRegExp", "requireReloadRegExp",
       "consoleDump", "consoleLog", "contentBlocker", "alwaysShowObjectSources",
       "docShellJSBlocking",
@@ -1930,9 +1932,6 @@ var ns = {
     }
     this._batchPrefs = false;
 
-
-
-
     this.setupJSCaps();
 
     // locking management
@@ -1977,6 +1976,13 @@ var ns = {
   },
 
 
+  onContentInit: function() {
+    this._batchPrefs = true;
+    ["allowClipboard", "allowLocalLinks"].forEach(function(p) this.syncPrefs(this.pref, p), this);
+    this._batchPrefs = false;
+    this.setupJSCaps();
+  },
+
   _initE10s: function() {
     INCLUDE("parentProcess");
   },
@@ -1984,7 +1990,6 @@ var ns = {
     if (IPC.parent) IPC.parent.dispose();
   },
 
-
   dispose: function() {
     try {
       if(!this._inited) return;
@@ -2075,6 +2080,14 @@ var ns = {
         "!about:packet-save": "about:pocket-saved",
         "!about:pocket-signup": "about:pocket-signup",
         "google.com": "ajax.googleapis.com maps.googleapis.com"
+      },
+      "2.6.9.35rc1": {
+        "!about:pocket-save": "about:pocket-saved",
+        "!about:pocket-signup": "about:pocket-signup",
+        "google.com": "ajax.googleapis.com maps.googleapis.com"
+      },
+      "2.6.9.36rc1": {
+        "netflix.com": "https://*.nflxvideo.net"
       }
     };
 
@@ -2432,26 +2445,26 @@ var ns = {
 
     if (!policy) policy = this.jsPolicySites;
 
-    let map = policy.sitesMap;
+    if (this.ignorePorts && policy.matches(site.replace(/:\d+$/, '')))
+      return true;
 
-    if (this.portRx.test(site)) {
-      let portRx = this.portRx;
-      if (this.ignorePorts && policy.matches(site.replace(/:\d+$/, '')))
-        return true;
+    let map = policy.sitesMap;
+    let portRx = this.portRx;
+    let hasPort = portRx.test(site);
 
-      // port matching, with "0" as port wildcard  and * as nth level host wildcard
-      let key = site.replace(portRx, ":0");
-      if (key in map || site in map) return true;
-      var keys = site.split(".");
-      if (keys.length > 1) {
-        let prefix = keys[0].match(/^https?:\/\//i)[0] + "*.";
-        while (keys.length > 2) {
-          keys.shift();
-          key = prefix + keys.join(".");
-          if (key in map || key.replace(portRx, ":0") in map) return true;
-        }
+    // port matching, with "0" as port wildcard  and * as nth level host wildcard
+    let key = hasPort ? site.replace(portRx, ":0") : site;
+    if (key in map || site in map) return true;
+    var keys = site.split(".");
+    if (keys.length > 1) {
+      let prefix = keys[0].match(/^https?:\/\//i)[0] + "*.";
+      while (keys.length > 2) {
+        keys.shift();
+        key = prefix + keys.join(".");
+        if (key in map || hasPort && key.replace(portRx, ":0") in map) return true;
       }
     }
+
     // check IP leftmost portion up to 2nd byte (e.g. [http://]192.168 or [http://]10.0.0)
     let m = site.match(this._ipShorthandRx);
     return m && (m[2] in map || m[3] in map || (m[1] + m[2]) in map || (m[1] + m[3]) in map);
@@ -3006,6 +3019,7 @@ var ns = {
           }
         }
         prefString = prefString.replace(/,/g, ' ').replace(/\s+/g, ' ').replace(/^\s+/, '').replace(/\s+$/, '');
+
       } catch(ex) {
         prefString = POLICY_NAME;
       }
@@ -3451,9 +3465,8 @@ var ns = {
           ) return false;
 
     let locationSite = this.getSite(locationURL);
-    if (this.ignorePorts && this.portRx.test(locationSite) &&
-        this.isJSEnabled(locationSite.replace(this.portRx, '')) && this.autoTemp(locationSite))
-      return false;
+    if (!this.isJSEnabled(locationSite) && this.checkShorthands(locationSite))
+        this.autoTemp(locationSite);
 
     var win = aContext && aContext.defaultView;
     if(win) this.getExpando(win.top.document, "codeSites", []).push(locationSite);
@@ -7089,7 +7102,7 @@ var ns = {
     var checkInterval = this.getPref("subscription.checkInterval", 24) * 60000;
     var now = Date.now();
     if (lastCheck + checkInterval > now) {
-      this.delayExec(checkSubscriptions, lastCheck + checkInterval - now + 1000);
+      this.delayExec(this.checkSubscriptions, lastCheck + checkInterval - now + 1000);
       return;
     }
 
diff --git a/defaults/preferences/noscript.js b/defaults/preferences/noscript.js
index 6067e70..fd52179 100644
--- a/defaults/preferences/noscript.js
+++ b/defaults/preferences/noscript.js
@@ -271,7 +271,7 @@ pref("noscript.surrogate.ga.sources", "*.google-analytics.com");
 pref("noscript.surrogate.ga.replacement", "(function(){var _0=$S(function()_0),_u=function(){};_0.__noSuchMethod__=_0;('ga'in window)||(ga=_u);with(window)urchinTracker=_u,_gaq=$S({__noSuchMethod__:_0,push:function(f){if(typeof f=='function')f();else if(f&&f.shift&&f[0]in this)this[f.shift()].apply(this,f)},_set:function(a,b){if(typeof b=='function')b()},_link:function(h){if(h)location.href=h},_linkByPost:function(f){if(f&&f.submit)f.submit();return true},_getLinkerUrl:function(u){return [...]
 pref("noscript.surrogate.glinks.replacement", "['focus','mouseover','mousedown','click'].forEach(function(et){addEventListener(et,function(e){var a=e.target,href=a.href&&a.getAttribute&&a.getAttribute('href');if(href&&/^(?:http|\/url)/.test(href)&&!a._href){a._href=a.href=a.href.replace(/.*\/url.*[?&](?:url|q)=(http[^&]+).*/,function(a,b)decodeURIComponent(b));do{if(/\brwt\(/.test(a.getAttribute('onmousedown')))a.removeAttribute('onmousedown')}while((a=a.parentElement))}},true)})");
 pref("noscript.surrogate.glinks.sources", "!@^https?://[^/]+google\\..*/search");
-pref("noscript.surrogate.googletag.replacement", "googletag=$S({__noSuchMethod__:function()this,slots:{},cmd:$S({__noSuchMethod__:function()this, push:function(f){return f()}})}); let _renderedAds=new Proxy({},{ get:function(a,b){ return b in a ? a[b] : {size: [728,90]}; }, set:function(a,b,c) {a[b]=c} }); let _adsRenderedInfo=new Proxy({ get:function(n) { return _renderedAds[n]; } },{get:function(x,c){ return c in x ? x[c] : function(){}; },set:function(x,c,v){ }}); Object.definePropert [...]
+pref("noscript.surrogate.googletag.replacement", "if(typeof googletag==='undefined'){googletag=$S({__noSuchMethod__:function()this,slots:{},cmd:$S({__noSuchMethod__:function()this, push:function(f){return f()}})});}let _renderedAds=new Proxy({},{ get:function(a,b){ return b in a ? a[b] : {size: [728,90]}; }, set:function(a,b,c) {a[b]=c} }); let _adsRenderedInfo=new Proxy({ get:function(n) { return _renderedAds[n]; } },{get:function(x,c){ return c in x ? x[c] : function(){}; },set:functio [...]
 pref("noscript.surrogate.googletag.sources", ".googletagservices.com");
 pref("noscript.surrogate.gravatar.sources", ".gravatar.com");
 pref("noscript.surrogate.gravatar.replacement", "Gravatar=$S({my_hash:'', profile_cb:function(){}, init:function(){}, __noSuchMethod__:function(){}})");
diff --git a/install.rdf b/install.rdf
index 3666ac5..b8f73e5 100644
--- a/install.rdf
+++ b/install.rdf
@@ -5,7 +5,7 @@
 
    <em:id>{73a6fe31-595d-460b-a920-fcc0f8843232}</em:id>
    <em:name>NoScript</em:name>
-   <em:version>2.6.9.34</em:version>
+   <em:version>2.6.9.36</em:version>
    <em:description>Extra protection for your Firefox: NoScript allows JavaScript, Java (and other plugins) only for trusted domains of your choice (e.g. your home-banking web site). This whitelist based pre-emptive blocking approach  prevents exploitation of security vulnerabilities (known and even unknown!) with no loss of functionality... Experts will agree: Firefox is really safer with NoScript :-)</em:description>
    <em:creator>Giorgio Maone</em:creator>
    <em:type>2</em:type>

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/noscript.git



More information about the Pkg-mozext-commits mailing list