summaryrefslogtreecommitdiff
path: root/data/extensions/https-everywhere@eff.org/chrome/content/code
diff options
context:
space:
mode:
Diffstat (limited to 'data/extensions/https-everywhere@eff.org/chrome/content/code')
-rw-r--r--data/extensions/https-everywhere@eff.org/chrome/content/code/AndroidUI.jsm236
-rw-r--r--data/extensions/https-everywhere@eff.org/chrome/content/code/ApplicableList.js264
-rw-r--r--data/extensions/https-everywhere@eff.org/chrome/content/code/ChannelReplacement.js389
-rw-r--r--data/extensions/https-everywhere@eff.org/chrome/content/code/Cookie.js150
-rw-r--r--data/extensions/https-everywhere@eff.org/chrome/content/code/HTTPS.js320
-rw-r--r--data/extensions/https-everywhere@eff.org/chrome/content/code/HTTPSRules.js830
-rw-r--r--data/extensions/https-everywhere@eff.org/chrome/content/code/IOUtil.js265
-rw-r--r--data/extensions/https-everywhere@eff.org/chrome/content/code/NSS.js493
-rw-r--r--data/extensions/https-everywhere@eff.org/chrome/content/code/Root-CAs.js348
-rw-r--r--data/extensions/https-everywhere@eff.org/chrome/content/code/Thread.js100
-rw-r--r--data/extensions/https-everywhere@eff.org/chrome/content/code/X509ChainWhitelist.js1007
-rw-r--r--data/extensions/https-everywhere@eff.org/chrome/content/code/commonOCSP.json289
-rw-r--r--data/extensions/https-everywhere@eff.org/chrome/content/code/sha256.js249
13 files changed, 0 insertions, 4940 deletions
diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/code/AndroidUI.jsm b/data/extensions/https-everywhere@eff.org/chrome/content/code/AndroidUI.jsm
deleted file mode 100644
index 1a4936d..0000000
--- a/data/extensions/https-everywhere@eff.org/chrome/content/code/AndroidUI.jsm
+++ /dev/null
@@ -1,236 +0,0 @@
-const CC = Components.classes;
-const CI = Components.interfaces;
-const CU = Components.utils;
-
-var HTTPSEverywhere = CC["@eff.org/https-everywhere;1"]
- .getService(CI.nsISupports).wrappedJSObject;
-
-CU.import("resource://gre/modules/Prompt.jsm");
-
-var menuId;
-var urlbarId;
-var aWindow = getWindow();
-
-
-/*
- * Setup/Teardown for the UI
- */
-
-function loadIntoWindow() {
- if (!aWindow) {
- return;
- }
- var enabled = HTTPSEverywhere.prefs.getBoolPref("globalEnabled");
- addToggleItemToMenu(enabled);
- if (enabled) {
- urlbarId = aWindow.NativeWindow.pageactions.add(urlbarOptions);
- } else if (urlbarId) {
- aWindow.NativeWindow.pageactions.remove(urlbarId);
- }
-
- // When navigating away from a page, we want to clear the applicable list for
- // that page. There are a few different APIs to do this, but this is the one
- // that work on mobile. We trigger on pagehide rather than pageshow because we
- // want to capture subresources during load.
- var BrowserApp = aWindow.BrowserApp;
- BrowserApp.deck.addEventListener("pagehide", function(evt) {
- var browser = BrowserApp.getBrowserForDocument(evt.target);
- HTTPSEverywhere.resetApplicableList(browser);
- }, true);
-}
-
-function unloadFromWindow() {
- if (!aWindow) {
- return;
- }
- aWindow.NativeWindow.menu.remove(menuId);
- aWindow.NativeWindow.pageactions.remove(urlbarId);
-}
-
-
-/*
- * Add a menu item to toggle HTTPS Everywhere
- */
-
-function addToggleItemToMenu(enabled) {
- if (menuId) { aWindow.NativeWindow.menu.remove(menuId); }
- var menuLabel = enabled ? "HTTPS Everywhere on" : "HTTPS Everywhere off";
- menuId = aWindow.NativeWindow.menu.add(menuLabel, null, function() {
- popupToggleMenu(aWindow, enabled);
- });
-}
-
-function popupToggleMenu(aWindow, enabled) {
- var buttons = [
- {
- label: "Yes",
- callback: function() {
- toggleEnabledState();
- var msg = enabled ? "HTTPS Everywhere disabled!" : "HTTPS Everywhere enabled!";
- aWindow.NativeWindow.toast.show(msg, "short");
- return true;
- }
- }, {
- label: "No",
- callback: function() { return false; }
- }
- ];
- var newState = enabled ? "off?" : "on?";
- aWindow.NativeWindow.doorhanger.show("Would you like to turn HTTPS Everywhere "+newState,
- "doorhanger-toggle", buttons);
-}
-
-
-/*
- * The HTTPS Everywhere icon in the URL bar shows a popup of rules that the
- * user can activate/deactivate. On long click, reset all rules to defaults.
- */
-
-var popupInfo = {
- rules: [],
- ruleItems: [],
- ruleStatus: [],
- alist: null,
- getApplicableList: function() {
- var browser = aWindow.BrowserApp.selectedBrowser;
- return HTTPSEverywhere.getApplicableListForBrowser(browser);
- },
- fill: function() {
- this.clear();
- this.alist = this.getApplicableList();
- HTTPSEverywhere.log(4,"applicable list active: "+JSON.stringify(this.alist.active));
- HTTPSEverywhere.log(4,"applicable list inactive: "+JSON.stringify(this.alist.inactive));
- for (var rule in this.alist.all) {
- if (this.alist.active.hasOwnProperty(rule)) {
- // active rules are checked and toggleable
- this.ruleItems.push({ label: rule, selected: true });
- this.ruleStatus.push(true);
- this.rules.push(this.alist.active[rule]);
- } else if (this.alist.moot.hasOwnProperty(rule)) {
- // moot rules are checked and toggleable too
- this.ruleItems.push({ label: rule, selected: true });
- this.ruleStatus.push(true);
- this.rules.push(this.alist.moot[rule]);
- } else if (this.alist.inactive.hasOwnProperty(rule)) {
- // inactive rules are unchecked and toggleable
- this.ruleItems.push({ label: rule });
- this.ruleStatus.push(false);
- this.rules.push(this.alist.inactive[rule]);
- } else if (this.alist.breaking.hasOwnProperty(rule)) {
- // breaking rules are get a unicode clockwise arrow next to them
- var ruleLabel = "\u21B7"+rule;
- var isSelected = this.alist.breaking[rule].active;
- this.ruleItems.push({ label: ruleLabel, selected: isSelected });
- this.ruleStatus.push(isSelected);
- this.rules.push(this.alist.breaking[rule]);
- }
- }
- },
- clear: function() {
- this.rules = [];
- this.ruleItems = [];
- this.ruleStatus = [];
- this.alist = {};
- }
-};
-
-var urlbarOptions = {
-
- title: "HTTPS Everywhere",
-
- icon: "chrome://https-everywhere/skin/https-everywhere-128.png",
-
- clickCallback: function() {
- popupInfo.fill();
- rulesPrompt.setMultiChoiceItems(popupInfo.ruleItems);
- rulesPrompt.show(function(data) {
- var db = data.button;
- if (db === -1) { return null; } // user didn't click the accept button
- if (popupInfo.rules.length !== db.length) {
- // Why does db sometimes have an extra entry that doesn't correspond
- // to any of the ruleItems? No idea, but let's log it.
- HTTPSEverywhere.log(5,"Got length mismatch between popupInfo.ruleItems and data.button");
- HTTPSEverywhere.log(4,"Applicable rules: "+JSON.stringify(popupInfo.rules));
- HTTPSEverywhere.log(4, "data.button: "+JSON.stringify(db));
- }
- for (var i=0; i<popupInfo.rules.length; i++) {
- if (popupInfo.ruleStatus[i] !== db[i]) {
- HTTPSEverywhere.log(4, "toggling: "+JSON.stringify(popupInfo.rules[i]));
- popupInfo.rules[i].toggle();
- }
- }
- reloadTab();
- return null;
- });
- },
-
- longClickCallback: function() { popupResetDefaultsMenu(aWindow); }
-};
-
-var rulesPrompt = new Prompt({
- window: aWindow,
- title: "Enable/disable rules",
- buttons: ["Apply changes"]
-});
-
-function popupResetDefaultsMenu(aWindow) {
- var buttons = [
- {
- label: "Yes",
- callback: function() {
- resetToDefaults();
- var msg = "Default rules reset.";
- aWindow.NativeWindow.toast.show(msg, "short");
- return true;
- }
- }, {
- label: "No",
- callback: function() { return false; }
- }
- ];
- aWindow.NativeWindow.doorhanger.show("Reset all HTTPS Everywhere rules to defaults?",
- "doorhanger-reset", buttons);
-}
-
-
-/*
- * Some useful utils
- */
-
-function reloadTab() {
- // There seems to be no API to do this directly?
- aWindow.BrowserApp.selectedTab.window.location.reload();
-}
-
-function toggleEnabledState(){
- HTTPSEverywhere.toggleEnabledState();
- loadIntoWindow();
- reloadTab();
-}
-
-function resetToDefaults() {
- HTTPSEverywhere.https_rules.resetRulesetsToDefaults();
- reloadTab();
-}
-
-function getWindow() {
- return CC['@mozilla.org/appshell/window-mediator;1']
- .getService(CI.nsIWindowMediator)
- .getMostRecentWindow('navigator:browser');
-}
-
-
-/*
- * Here's the external API to this UI module
- */
-
-var AndroidUI = {
- init: function() {
- loadIntoWindow();
- },
- shutdown: function() {
- unloadFromWindow();
- }
-};
-
-var EXPORTED_SYMBOLS = ["AndroidUI"];
diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/code/ApplicableList.js b/data/extensions/https-everywhere@eff.org/chrome/content/code/ApplicableList.js
deleted file mode 100644
index 351530a..0000000
--- a/data/extensions/https-everywhere@eff.org/chrome/content/code/ApplicableList.js
+++ /dev/null
@@ -1,264 +0,0 @@
-// An ApplicableList is a structure used to keep track of which rulesets
-// were applied, and which ones weren't but might have been, to the contents
-// of a given page (top level nsIDOMWindow)
-
-var serial_number = 0;
-
-function ApplicableList(logger, uri) {
- this.log = logger;
- this.uri = uri.clone();
- if (!this.uri) {
- this.log(WARN,"NULL CLONING URI " + doc);
- if (uri) {
- this.log(WARN,"NULL CLONING URI " + uri.spec);
- }
- }
- this.home = uri.spec; // what doc we're housekeeping for
- this.active = {};
- this.breaking = {}; // rulesets with redirection loops
- this.inactive = {};
- this.moot={}; // rulesets that might be applicable but uris are already https
- this.all={}; // active + breaking + inactive + moot
- serial_number += 1;
- this.serial = serial_number;
- this.log(DBUG,"Alist serial #" + this.serial + " for " + this.home);
-}
-
-ApplicableList.prototype = {
-
- empty: function() {
- // Empty everything, used when toggles occur in order to ensure that if
- // the reload fails, the resulting list is not eroneous
- this.active = {};
- this.breaking = {};
- this.inactive = {};
- this.moot={};
- this.all={};
- },
-
- active_rule: function(ruleset) {
- this.log(INFO,"active rule " + ruleset.name +" in "+ this.home +" -> " +
- this.uri.spec+ " serial " + this.serial);
- this.active[ruleset.name] = ruleset;
- this.all[ruleset.name] = ruleset;
- },
-
- breaking_rule: function(ruleset) {
- this.log(NOTE,"breaking rule " + ruleset.name +" in "+ this.home +" -> " +
- this.uri.spec+ " serial " + this.serial);
- this.breaking[ruleset.name] = ruleset;
- this.all[ruleset.name] = ruleset;
- },
-
- inactive_rule: function(ruleset) {
-
- this.log(INFO,"inactive rule " + ruleset.name +" in "+ this.home +" -> " +
- this.uri.spec+ " serial " + this.serial);
- this.inactive[ruleset.name] = ruleset;
- this.all[ruleset.name] = ruleset;
- },
-
- moot_rule: function(ruleset) {
- this.log(INFO,"moot rule " + ruleset.name +" in "+ this.home + " serial " + this.serial);
- this.moot[ruleset.name] = ruleset;
- this.all[ruleset.name] = ruleset;
- },
-
- dom_handler: function(operation,key,data,src,dst) {
- // See https://developer.mozilla.org/En/DOM/UserDataHandler
- if (src && dst)
- dst.setUserData(key, data, this.dom_handler);
- },
-
- populate_list: function() {
- // The base URI of the dom tends to be loaded from some /other/
- // ApplicableList, so pretend we're loading it from here.
- HTTPSEverywhere.instance.https_rules.rewrittenURI(this, this.uri);
- this.log(DBUG, "populating using alist #" + this.serial);
- },
-
- populate_menu: function(document, menupopup, weird) {
- this.populate_list();
- this.document = document;
-
- var https_everywhere = CC["@eff.org/https-everywhere;1"].getService(Components.interfaces.nsISupports).wrappedJSObject;
-
- // get the menu popup
- this.menupopup = menupopup;
-
- // empty it all of its menuitems
- while(this.menupopup.firstChild.tagName != "menuseparator") {
- this.menupopup.removeChild(this.menupopup.firstChild);
- }
-
- // add global enable/disable toggle button
- var strings = document.getElementById("HttpsEverywhereStrings");
-
- var enableLabel = document.createElement('menuitem');
- var text = strings.getString("https-everywhere.menu.globalDisable");
- if(!https_everywhere.prefs.getBoolPref("globalEnabled"))
- text = strings.getString("https-everywhere.menu.globalEnable");
-
- enableLabel.setAttribute('label', text);
- enableLabel.setAttribute('command', 'https-everywhere-menuitem-globalEnableToggle');
- this.prepend_child(enableLabel);
-
- // add the label at the top
- var any_rules = false;
- for(var x in this.all) {
- any_rules = true; // how did JavaScript get this ugly?
- break;
- }
- var label = document.createElement('menuitem');
- label.setAttribute('label', strings.getString('https-everywhere.menu.enableDisable'));
- label.setAttribute('command', 'https-everywhere-menuitem-preferences');
- var label2 = false;
- if (!any_rules) {
- label2 = document.createElement('menuitem');
- if (!weird) text = strings.getString('https-everywhere.menu.noRules');
- else text = strings.getString('https-everywhere.menu.unknownRules');
- label2.setAttribute('label', text);
- label2.setAttribute('command', 'https-everywhere-menuitem-preferences');
- label2.setAttribute('style', 'color:#909090;');
- }
-
- // create a commandset if it doesn't already exist
- this.commandset = document.getElementById('https-everywhere-commandset');
- if(!this.commandset) {
- this.commandset = document.createElement('commandset');
- this.commandset.setAttribute('id', 'https-everywhere-commandset');
- var win = document.getElementById('main-window');
- win.appendChild(this.commandset);
- } else {
- // empty commandset
- while(this.commandset.firstChild)
- this.commandset.removeChild(this.commandset.firstChild);
- }
-
- var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
- .getService(Components.interfaces.nsIWindowMediator);
-
- var browser = wm.getMostRecentWindow("navigator:browser").gBrowser.selectedBrowser;
- var location = browser.currentURI.asciiSpec; //full url, including about:certerror details
-
- if(location.substr(0, 6) == "about:"){
- //"From" portion of the rule is retrieved from the location bar via document.getElementById("urlbar").value
-
- var fromHost = document.getElementById("urlbar").value;
-
- //scheme must be trimmed out to check for applicable rulesets
- if(fromHost.indexOf("://") != -1)
- fromHost = fromHost.substr(fromHost.indexOf("://") + 3, fromHost.length);
-
- //trim off any page locations - we only want the host - e.g. domain.com
- if(fromHost.indexOf("/") != -1)
- fromHost = fromHost.substr(0, fromHost.indexOf("/"));
-
- // Search for applicable rulesets for the host listed in the location bar
- var plist = HTTPSRules.potentiallyApplicableRulesets(fromHost);
- for (var i = 0 ; i < plist.length ; i++){
- //For each applicable rulset, determine active/inactive, and append to proper list.
- var ruleOn = false;
- try {
- if(https_everywhere.rule_toggle_prefs.getBoolPref(plist[i].name))
- ruleOn = true;
- } catch(e) {
- if(https_everywhere.https_rules.rulesetsByName[plist[i].name].active)
- ruleOn = true;
- }
- if(ruleOn)
- this.active_rule(plist[i]);
- else
- this.inactive_rule(plist[i]);
- }
- }
-
- // add all applicable commands
- for(var x in this.breaking)
- this.add_command(this.breaking[x]);
- for(var x in this.active)
- this.add_command(this.active[x]);
- for(var x in this.moot)
- this.add_command(this.moot[x]);
- for(var x in this.inactive)
- this.add_command(this.inactive[x]);
-
- if(https_everywhere.prefs.getBoolPref("globalEnabled")){
- // add all the menu items
- for (var x in this.inactive)
- this.add_menuitem(this.inactive[x], 'inactive');
- // rules that are active for some uris are not really moot
- for (var x in this.moot)
- if (!(x in this.active))
- this.add_menuitem(this.moot[x], 'moot');
- // break once break everywhere
- for (var x in this.active)
- if (!(x in this.breaking))
- this.add_menuitem(this.active[x], 'active');
- for (var x in this.breaking)
- this.add_menuitem(this.breaking[x], 'breaking');
-
- if (label2) this.prepend_child(label2);
- this.prepend_child(label);
- }
-
- },
-
- prepend_child: function(node) {
- this.menupopup.insertBefore(node, this.menupopup.firstChild);
- },
-
- add_command: function(rule) {
- var command = this.document.createElement("command");
- command.setAttribute('id', JSON.stringify(rule.id)+'-command');
- command.setAttribute('label', rule.name);
- command.setAttribute('oncommand', 'toggle_rule("'+JSON.stringify(rule.id)+'")');
- this.commandset.appendChild(command);
- },
-
- // add a menu item for a rule -- type is "active", "inactive", "moot",
- // or "breaking"
-
- add_menuitem: function(rule, type) {
- // create the menuitem
- var item = this.document.createElement('menuitem');
- item.setAttribute('command', rule.id+'-command');
- item.setAttribute('class', type+'-item menuitem-iconic');
- item.setAttribute('label', rule.name);
-
- // we can get confused if rulesets have their state changed after the
- // ApplicableList was constructed
- if (!rule.active && (type == 'active' || type == 'moot'))
- type = 'inactive';
- if (rule.active && type == 'inactive')
- type = 'moot';
-
- // set the icon
- var image_src;
- if (type == 'active') image_src = 'tick.png';
- else if (type == 'inactive') image_src = 'cross.png';
- else if (type == 'moot') image_src = 'tick-moot.png';
- else if (type == 'breaking') image_src = 'loop.png';
- item.setAttribute('image', 'chrome://https-everywhere/skin/'+image_src);
-
- // all done
- this.prepend_child(item);
- },
-
- show_applicable: function() {
- this.log(WARN, "Applicable list number " + this.serial);
- for (var x in this.active)
- this.log(WARN,"Active: " + this.active[x].name);
-
- for (var x in this.breaking)
- this.log(WARN,"Breaking: " + this.breaking[x].name);
-
- for (x in this.inactive)
- this.log(WARN,"Inactive: " + this.inactive[x].name);
-
- for (x in this.moot)
- this.log(WARN,"Moot: " + this.moot[x].name);
-
- }
-};
-
diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/code/ChannelReplacement.js b/data/extensions/https-everywhere@eff.org/chrome/content/code/ChannelReplacement.js
deleted file mode 100644
index ca70939..0000000
--- a/data/extensions/https-everywhere@eff.org/chrome/content/code/ChannelReplacement.js
+++ /dev/null
@@ -1,389 +0,0 @@
-Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
-
-function CtxCapturingListener(tracingChannel, captureObserver) {
- this.originalListener = tracingChannel.setNewListener(this);
- this.captureObserver = captureObserver;
-}
-CtxCapturingListener.prototype = {
- originalListener: null,
- originalCtx: null,
- onStartRequest: function(request, ctx) {
- this.originalCtx = ctx;
- if (this.captureObserver) {
- this.captureObserver.observeCapture(request, this);
- }
- },
- onDataAvailable: function(request, ctx, inputStream, offset, count) {},
- onStopRequest: function(request, ctx, statusCode) {},
- QueryInterface: XPCOMUtils.generateQI([Ci.nsIStreamListener])
-};
-
-function ChannelReplacement(chan, newURI, newMethod) {
- return this._init(chan, newURI, newMethod);
-}
-
-ChannelReplacement.supported = "nsITraceableChannel" in Ci;
-
-ChannelReplacement.runWhenPending = function(channel, callback) {
- if (channel.isPending()) {
- callback();
- return false;
- } else {
- new LoadGroupWrapper(channel, callback);
- return true;
- }
-};
-
-
-ChannelReplacement.prototype = {
- listener: null,
- context: null,
- oldChannel: null,
- channel: null,
- window: null,
- suspended: false,
-
- get _unsupportedError() {
- return new Error("Can't replace channels without nsITraceableChannel!");
- },
-
- get _classifierClass() {
- delete this.__proto__._classifierClass;
- return this.__proto__._classifierClass = Cc["@mozilla.org/channelclassifier"];
- },
-
- _autoHeadersRx: /^(?:Host|Cookie|Authorization)$|Cache|^If-/,
- visitHeader: function(key, val) {
- try {
- // we skip authorization and cache-related fields which should be automatically set
- if (!this._autoHeadersRx.test(key)) this.channel.setRequestHeader(key, val, false);
- } catch (e) {
- dump(e + "\n");
- }
- },
-
- _init: function(chan, newURI, newMethod) {
- if (!(ChannelReplacement.supported && chan instanceof Ci.nsITraceableChannel))
- throw this._unsupportedError;
-
- newURI = newURI || chan.URI;
-
- var newChan = IOS.newChannelFromURI(newURI);
-
- this.oldChannel = chan;
- this.channel = newChan;
-
- // porting of http://mxr.mozilla.org/mozilla-central/source/netwerk/protocol/http/src/nsHttpChannel.cpp#2750
-
- var loadFlags = chan.loadFlags;
-
- if (chan.URI.schemeIs("https"))
- loadFlags &= ~chan.INHIBIT_PERSISTENT_CACHING;
-
-
- newChan.loadGroup = chan.loadGroup;
- newChan.notificationCallbacks = chan.notificationCallbacks;
- newChan.loadFlags = loadFlags | newChan.LOAD_REPLACE;
-
- if (!(newChan instanceof Ci.nsIHttpChannel))
- return this;
-
- // copy headers
- chan.visitRequestHeaders(this);
-
- if (!newMethod || newMethod === chan.requestMethod) {
- if (newChan instanceof Ci.nsIUploadChannel && chan instanceof Ci.nsIUploadChannel && chan.uploadStream ) {
- var stream = chan.uploadStream;
- if (stream instanceof Ci.nsISeekableStream) {
- stream.seek(stream.NS_SEEK_SET, 0);
- }
-
- try {
- let ctype = chan.getRequestHeader("Content-type");
- let clen = chan.getRequestHeader("Content-length");
- if (ctype && clen) {
- newChan.setUploadStream(stream, ctype, parseInt(clen, 10));
- }
- } catch(e) {
- newChan.setUploadStream(stream, '', -1);
- }
-
- newChan.requestMethod = chan.requestMethod;
- }
- } else {
- newChan.requestMethod = newMethod;
- }
-
- if (chan.referrer) newChan.referrer = chan.referrer;
- newChan.allowPipelining = chan.allowPipelining;
- newChan.redirectionLimit = chan.redirectionLimit - 1;
- if (chan instanceof Ci.nsIHttpChannelInternal && newChan instanceof Ci.nsIHttpChannelInternal) {
- if (chan.URI == chan.documentURI) {
- newChan.documentURI = newURI;
- } else {
- newChan.documentURI = chan.documentURI;
- }
- }
-
- if (chan instanceof Ci.nsIEncodedChannel && newChan instanceof Ci.nsIEncodedChannel) {
- newChan.applyConversion = chan.applyConversion;
- }
-
- // we can't transfer resume information because we can't access mStartPos and mEntityID :(
- // http://mxr.mozilla.org/mozilla-central/source/netwerk/protocol/http/src/nsHttpChannel.cpp#2826
-
- if ("nsIApplicationCacheChannel" in Ci &&
- chan instanceof Ci.nsIApplicationCacheChannel && newChan instanceof Ci.nsIApplicationCacheChannel) {
- newChan.applicationCache = chan.applicationCache;
- newChan.inheritApplicationCache = chan.inheritApplicationCache;
- }
-
- if (chan instanceof Ci.nsIPropertyBag && newChan instanceof Ci.nsIWritablePropertyBag)
- for (var properties = chan.enumerator, p; properties.hasMoreElements();)
- if ((p = properties.getNext()) instanceof Ci.nsIProperty)
- newChan.setProperty(p.name, p.value);
-
- if (chan.loadFlags & chan.LOAD_DOCUMENT_URI) {
- this.window = IOUtil.findWindow(chan);
- if (this.window) this.window._replacedChannel = chan;
- }
-
- return this;
- },
-
- _onChannelRedirect: function() {
- var oldChan = this.oldChannel;
- var newChan = this.channel;
-
- if (this.realRedirect) {
- if (oldChan.redirectionLimit === 0) {
- oldChan.cancel(NS_ERROR_REDIRECT_LOOP);
- throw NS_ERROR_REDIRECT_LOOP;
- }
- } else newChan.redirectionLimit += 1;
-
-
-
- // nsHttpHandler::OnChannelRedirect()
-
- const CES = Ci.nsIChannelEventSink;
- const flags = CES.REDIRECT_INTERNAL;
- this._callSink(
- Cc["@mozilla.org/netwerk/global-channel-event-sink;1"].getService(CES),
- oldChan, newChan, flags);
- var sink;
-
- for (let cess = Cc['@mozilla.org/categorymanager;1'].getService(CI.nsICategoryManager)
- .enumerateCategory("net-channel-event-sinks");
- cess.hasMoreElements();
- ) {
- sink = cess.getNext();
- if (sink instanceof CES)
- this._callSink(sink, oldChan, newChan, flags);
- }
- sink = IOUtil.queryNotificationCallbacks(oldChan, CES);
- if (sink) this._callSink(sink, oldChan, newChan, flags);
-
- // ----------------------------------
-
- newChan.originalURI = oldChan.originalURI;
-
- sink = IOUtil.queryNotificationCallbacks(oldChan, Ci.nsIHttpEventSink);
- if (sink) sink.onRedirect(oldChan, newChan);
- },
-
- _callSink: function(sink, oldChan, newChan, flags) {
- try {
- if ("onChannelRedirect" in sink) sink.onChannelRedirect(oldChan, newChan, flags);
- else sink.asyncOnChannelRedirect(oldChan, newChan, flags, this._redirectCallback);
- } catch(e) {
- if (e.toString().indexOf("(NS_ERROR_DOM_BAD_URI)") !== -1 && oldChan.URI.spec !== newChan.URI.spec) {
- let oldURL = oldChan.URI.spec;
- try {
- oldChan.URI.spec = newChan.URI.spec;
- this._callSink(sink, oldChan, newChan, flags);
- } catch(e1) {
- throw e;
- } finally {
- oldChan.URI.spec = oldURL;
- }
- } else if (e.message.indexOf("(NS_ERROR_NOT_AVAILABLE)") === -1) throw e;
- }
- },
-
- _redirectCallback: ("nsIAsyncVerifyRedirectCallback" in Ci)
- ? {
- QueryInterface: XPCOMUtils.generateQI([Ci.nsIAsyncVerifyRedirectCallback]),
- onRedirectVerifyCallback: function(result) {}
- }
- : null
- ,
-
- replace: function(realRedirect, callback) {
- let self = this;
- let oldChan = this.oldChannel;
- this.realRedirect = !!realRedirect;
- if (typeof(callback) !== "function") {
- callback = this._defaultCallback;
- }
- ChannelReplacement.runWhenPending(oldChan, function() {
- if (oldChan.status) return; // channel's doom had been already defined
-
- let ccl = new CtxCapturingListener(oldChan, self);
- self.loadGroup = oldChan.loadGroup;
-
- oldChan.loadGroup = null; // prevents the wheel from stopping spinning
-
-
- if (self._redirectCallback) { // Gecko >= 2
- // this calls asyncAbort, which calls onStartRequest on our listener
- oldChan.cancel(NS_BINDING_REDIRECTED);
- self.suspend(); // believe it or not, this will defer asyncAbort() notifications until resume()
- callback(self);
- } else {
- // legacy (Gecko < 2)
- self.observeCapture = function(req, ccl) {
- self.open = function() { self._redirect(ccl); };
- callback(self);
- };
- oldChan.cancel(NS_BINDING_REDIRECTED);
- }
-
-
- });
- },
-
- observeCapture: function(req, ccl) {
- this._redirect(ccl);
- },
-
- _defaultCallback: function(replacement) {
- replacement.open();
- },
-
- open: function() {
- this.resume(); // this triggers asyncAbort and the listeners in cascade
- },
- _redirect: function(ccl) {
- let oldChan = this.oldChannel,
- newChan = this.channel,
- overlap;
-
- if (!(this.window && (overlap = this.window._replacedChannel) !== oldChan)) {
- try {
- if (ABE.consoleDump && this.window) {
- ABE.log("Opening delayed channel: " + oldChan.name + " - (current loading channel for this window " + (overlap && overlap.name) + ")");
- }
-
- oldChan.loadGroup = this.loadGroup;
-
- this._onChannelRedirect();
- newChan.asyncOpen(ccl.originalListener, ccl.originalCtx);
-
- if (this.window && this.window != IOUtil.findWindow(newChan)) {
- // late diverted load, unwanted artifact, abort
- IOUtil.abort(newChan);
- } else {
- // safe browsing hook
- if (this._classifierClass)
- this._classifierClass.createInstance(Ci.nsIChannelClassifier).start(newChan, true);
- }
- } catch (e) {
- ABE.log(e);
- }
- } else {
- if (ABE.consoleDump) {
- ABE.log("Detected double load on the same window: " + oldChan.name + " - " + (overlap && overlap.name));
- }
- }
-
- this.dispose();
- },
-
- suspend: function() {
- if (!this.suspended) {
- this.oldChannel.suspend();
- this.suspended = true;
- }
- },
- resume: function() {
- if (this.suspended) {
- this.suspended = false;
- try {
- this.oldChannel.resume();
- } catch (e) {}
- }
- },
-
- dispose: function() {
- this.resume();
- if (this.loadGroup) {
- try {
- this.loadGroup.removeRequest(this.oldChannel, null, NS_BINDING_REDIRECTED);
- } catch (e) {}
- this.loadGroup = null;
- }
-
- }
-};
-
-function LoadGroupWrapper(channel, callback) {
- this._channel = channel;
- this._inner = channel.loadGroup;
- this._callback = callback;
- channel.loadGroup = this;
-}
-LoadGroupWrapper.prototype = {
- QueryInterface: XPCOMUtils.generateQI([Ci.nsILoadGroup]),
-
- get activeCount() {
- return this._inner ? this._inner.activeCount : 0;
- },
- set defaultLoadRequest(v) {
- return this._inner ? this._inner.defaultLoadRequest = v : v;
- },
- get defaultLoadRequest() {
- return this._inner ? this._inner.defaultLoadRequest : null;
- },
- set groupObserver(v) {
- return this._inner ? this._inner.groupObserver = v : v;
- },
- get groupObserver() {
- return this._inner ? this._inner.groupObserver : null;
- },
- set notificationCallbacks(v) {
- return this._inner ? this._inner.notificationCallbacks = v : v;
- },
- get notificationCallbacks() {
- return this._inner ? this._inner.notificationCallbacks : null;
- },
- get requests() {
- return this._inner ? this._inner.requests : this._emptyEnum;
- },
-
- addRequest: function(r, ctx) {
- this.detach();
- if (this._inner) try {
- this._inner.addRequest(r, ctx);
- } catch(e) {
- // addRequest may have not been implemented
- }
- if (r === this._channel)
- try {
- this._callback(r, ctx);
- } catch (e) {}
- },
- removeRequest: function(r, ctx, status) {
- this.detach();
- if (this._inner) this._inner.removeRequest(r, ctx, status);
- },
-
- detach: function() {
- if (this._channel.loadGroup) this._channel.loadGroup = this._inner;
- },
- _emptyEnum: {
- QueryInterface: XPCOMUtils.generateQI([Ci.nsISimpleEnumerator]),
- getNext: function() { return null; },
- hasMoreElements: function() { return false; }
- }
-};
diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/code/Cookie.js b/data/extensions/https-everywhere@eff.org/chrome/content/code/Cookie.js
deleted file mode 100644
index f9134bc..0000000
--- a/data/extensions/https-everywhere@eff.org/chrome/content/code/Cookie.js
+++ /dev/null
@@ -1,150 +0,0 @@
-Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
-
-function Cookie(s, host) {
- this.parse(s, host);
-}
-Cookie.computeId = function(c) {
- return c.name + ";" + c.host + "/" + c.path;
-};
-Cookie.find = function(f) {
- var cc = Cookie.prototype.cookieManager.enumerator;
- var c;
- while (cc.hasMoreElements()) {
- if (f(c = cc.getNext())) return c;
- }
- return null;
-};
-
-Cookie.attributes = { host: 'domain', path: 'path', expires: 'expires', isHttpOnly: 'HttpOnly', isSecure: 'Secure' };
-Cookie.prototype = {
-
- name: '',
- value: '',
- source: '',
- domain: '',
- host: '',
- rawHost: '',
- path: '',
- secure: false,
- httponly: false,
- session: true,
- expires: 0,
-
- id: '',
-
-
- toString: function() {
- var c = [this['name'] + "=" + this.value];
- var v;
- const aa = Cookie.attributes;
- for (var k in aa) {
- var p = aa[k];
- v = this[k];
- switch(typeof(v)) {
- case "string":
- if (v) c.push(p + "=" + v);
- break;
- case "boolean":
- if (v) c.push(p);
- break;
- case "number":
- if (!this.isSession) c.push(p + "=" + new Date(v * 1000).toUTCString());
- break;
- }
- }
- return c.join("; ");
- },
- parse: function(s, host) {
- var p;
- if (this.source) {
- // cleanup for recycle
- for (p in this) {
- if (typeof (p) != "function") delete this[p];
- }
- }
- this.source = s;
- this.host = host;
-
- var parts = s.split(/;\s*/);
- var nv = parts.shift().split("=");
-
- this.name = nv.shift() || '';
- this.value = nv.join('=') || '';
-
- var n, v;
- for each (p in parts) {
- nv = p.split("=");
- switch (n = nv[0].toLowerCase()) {
- case 'expires':
- v = Math.round(Date.parse((nv[1] || '').replace(/\-/g, ' ')) / 1000);
- break;
- case 'domain':
- case 'path':
- v = nv[1] || '';
- break;
- case 'secure':
- case 'httponly':
- v = true;
- break;
- default:
- n = 'unknown';
- }
- this[n] = v;
- }
- if (!this.expires) {
- this.session = true;
- this.expires = Math.round(new Date() / 1000) + 31536000;
- }
- if (this.domain) {
- if (!this.isDomain) this.domain = "." + this.domain;
- this.host = this.domain;
- }
- this.rawHost = this.host.replace(/^\./, '');
-
- this.id = Cookie.computeId(this);
- },
-
-
- get cookieManager() {
- delete Cookie.prototype.cookieManager;
- var cman = Cc["@mozilla.org/cookiemanager;1"]
- .getService(Ci.nsICookieManager2).QueryInterface(Ci.nsICookieManager);
- return Cookie.prototype.cookieManager = cman;
- },
- belongsTo: function(host, path) {
- if (path && this.path && path.indexOf(this.path) != 0) return false;
- if (host == this.rawHost) return true;
- var d = this.domain;
- return d && (host == d || this.isDomain && host.slice(-d.length) == d);
- },
- save: function() {
- this.save = ("cookieExists" in this.cookieManager)
- ? function() { this.cookieManager.add(this.host, this.path, this.name, this.value, this.secure, this.httponly, this.session, this.expires); }
- : function() { this.cookieManager.add(this.host, this.path, this.name, this.value, this.secure, this.session, this.expires);}
- ;
- return this.save();
- },
- exists: function() {
- var cc = this.cookieManager.enumerator;
- while(cc.hasMoreElements()) {
- if (this.sameAs(cc.getNext())) return true;
- }
- return false;
- },
-
- sameAs: function(c) {
- (c instanceof Ci.nsICookie) && (c instanceof Ci.nsICookie2);
- return Cookie.computeId(c) == this.id;
- },
-
- // nsICookie2 interface extras
- get isSecure() { return this.secure; },
- get expiry() { return this.expires; },
- get isSession() { return this.session; },
- get isHttpOnly() { return this.httponly; },
- get isDomain() { return this.domain && this.domain[0] == '.'; },
- policy: 0,
- status: 0,
- QueryInterface: XPCOMUtils.generateQI([Ci.nsICookie, Ci.nsICookie2])
-
-};
diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/code/HTTPS.js b/data/extensions/https-everywhere@eff.org/chrome/content/code/HTTPS.js
deleted file mode 100644
index e41573a..0000000
--- a/data/extensions/https-everywhere@eff.org/chrome/content/code/HTTPS.js
+++ /dev/null
@@ -1,320 +0,0 @@
-INCLUDE('Cookie');
-
-var securityService = CC['@mozilla.org/ssservice;1']
- .getService(CI.nsISiteSecurityService);
-
-// Hack. We only need the part of the policystate that tracks content
-// policy loading.
-const PolicyState = {
- attach: function(channel) {
- IOUtil.attachToChannel(channel, "httpseverywhere.policyLoaded", true);
- },
-
- extract: function(channel) {
- var res = IOUtil.extractFromChannel(channel,
- "httpseverywhere.policyLoaded", true);
- return res;
- },
-};
-
-const HTTPS = {
- ready: false,
-
- secureCookies: true,
- secureCookiesExceptions: null,
- secureCookiesForced: null,
- httpsForced: null,
- httpsForcedExceptions: null,
- httpsRewrite: null,
-
- /**
- * Given a channel and a list of potentially applicable rules,
- * redirect or abort a request if appropriate.
- *
- * @param {RuleSet[]} applicable_list A list of potentially applicable rules
- * (i.e. those that match on a hostname basis).
- * @param {nsIChannel} channel The channel to be manipulated.
- * @param {boolean} httpNowhereEnabled Whether to abort non-https requests.
- * @returns {boolean} True if the request was redirected; false if it was
- * untouched or aborted.
- */
- replaceChannel: function(applicable_list, channel, httpNowhereEnabled) {
- var blob = HTTPSRules.rewrittenURI(applicable_list, channel.URI.clone());
- var isSTS = securityService.isSecureURI(
- CI.nsISiteSecurityService.HEADER_HSTS, channel.URI, 0);
- if (blob === null) {
- // Abort insecure requests if HTTP Nowhere is on
- if (httpNowhereEnabled && channel.URI.schemeIs("http") && !isSTS) {
- IOUtil.abort(channel);
- }
- return false; // no rewrite
- }
- var uri = blob.newuri;
- if (!uri) this.log(WARN, "OH NO BAD ARGH\nARGH");
-
- // Abort downgrading if HTTP Nowhere is on
- if (httpNowhereEnabled && uri.schemeIs("http")) {
- IOUtil.abort(channel);
- }
-
- var c2 = channel.QueryInterface(CI.nsIHttpChannel);
- this.log(DBUG, channel.URI.spec+": Redirection limit is " + c2.redirectionLimit);
- // XXX This used to be (c2.redirectionLimit == 1), but that's very
- // inefficient in a case (eg amazon) where this may happen A LOT.
- // Rather than number like 10, we should use the starting value
- // in network.http.redirection-limit minus some counter
- if (c2.redirectionLimit < 10) {
- this.log(WARN, "Redirection loop trying to set HTTPS on:\n " +
- channel.URI.spec +"\n(falling back to HTTP)");
- if (!blob.applied_ruleset) {
- this.log(WARN,"Blacklisting rule for: " + channel.URI.spec);
- https_everywhere_blacklist[channel.URI.spec] = true;
- }
- https_everywhere_blacklist[channel.URI.spec] = blob.applied_ruleset;
- var domain = null;
- try { domain = channel.URI.host; } catch (e) {}
- if (domain) https_blacklist_domains[domain] = true;
- if (httpNowhereEnabled && channel.URI.schemeIs("http")) {
- IOUtil.abort(channel);
- }
- return false;
- }
-
- // Check for the new internal redirect API. If it exists, use it.
- if (!"redirectTo" in channel) {
- this.log(WARN, "nsIHTTPChannel.redirectTo API is missing. This version of HTTPS Everywhere is useless!!!!\n!!!\n");
- return false;
- }
-
- this.log(INFO, "Using nsIHttpChannel.redirectTo: " + channel.URI.spec + " -> " + uri.spec);
- try {
- channel.redirectTo(uri);
- return true;
- } catch(e) {
- // This should not happen. We should only get exceptions if
- // the channel was already open.
- this.log(WARN, "Exception on nsIHttpChannel.redirectTo: "+e);
-
- // Don't return: Fallback to NoScript ChannelReplacement.js
- }
- this.log(WARN,"Aborting redirection " + channel.name + ", should be HTTPS!");
- IOUtil.abort(channel);
- return false;
- },
-
- // getApplicableListForContext was remove along with the nsIContentPolicy
- // bindings and the and forceURI path that used them.
-
- onCrossSiteRequest: function(channel, origin, browser, rw) {
- try {
- this.handleCrossSiteCookies(channel, origin, browser);
- } catch(e) {
- this.log(WARN, e + " --- " + e.stack);
- }
- },
-
- registered: false,
- handleSecureCookies: function(req) {
-
- try {
- req = req.QueryInterface(CI.nsIHttpChannel);
- } catch(e) {
- this.log(WARN, "Request is not an nsIHttpChannel: " + req);
- return;
- }
- if (!this.secureCookies) return;
- var uri = req.URI;
- if (!uri) {
- this.log(WARN,"No URI inside request " +req);
- return;
- }
- //this.log(DBUG, "Cookie hunting in " + uri.spec);
- var alist = HTTPSEverywhere.instance.getApplicableListForChannel(req);
- if (!alist)
- this.log(INFO, "No alist for cookies for "+(req.URI) ? req.URI.spec : "???");
-
- if (uri.schemeIs("https")) {
- var host = uri.host;
- try {
- var cookies = req.getResponseHeader("Set-Cookie");
- } catch(mayHappen) {
- //this.log(VERB,"Exception hunting Set-Cookie in headers: " + mayHappen);
- return;
- }
- if (!cookies) return;
- var c;
- for each (var cs in cookies.split("\n")) {
- this.log(DBUG, "Examining cookie: ");
- c = new Cookie(cs, host);
- if (!c.secure && HTTPSRules.shouldSecureCookie(alist, c, true)) {
- this.log(INFO, "Securing cookie: " + c.domain + " " + c.name);
- c.secure = true;
- req.setResponseHeader("Set-Cookie", c.source + ";Secure", true);
- }
- }
-
- }
- },
-
- handleInsecureCookie: function(c) {
- if (HTTPSRules.shouldSecureCookie(null, c, false)) {
- this.log(INFO, "Securing cookie from event: " + c.host + " " + c.name);
- var cookieManager = Components.classes["@mozilla.org/cookiemanager;1"]
- .getService(Components.interfaces.nsICookieManager2);
- //some braindead cookies apparently use umghzabilliontrabilions
- var expiry = Math.min(c.expiry, Math.pow(2,31));
- cookieManager.remove(c.host, c.name, c.path, false);
- cookieManager.add(c.host, c.path, c.name, c.value, true, c.isHTTPOnly, c.isSession, expiry);
- }
- },
-
- handleCrossSiteCookies: function(req, origin, browser) {
-
- var unsafeCookies = this.getUnsafeCookies(browser);
- if (!unsafeCookies) return;
-
- var uri = req.URI;
- var dscheme = uri.scheme;
-
- var oparts = origin && origin.match(/^(https?):\/\/([^\/:]+).*?(\/.*)/);
- if (!(oparts && /https?/.test(dscheme))) return;
-
- var oscheme = oparts[1];
- if (oscheme == dscheme) return; // we want to check only cross-scheme requests
-
- var dsecure = dscheme == "https";
-
- if (dsecure && !ns.getPref("secureCookies.recycle", false)) return;
-
- var dhost = uri.host;
- var dpath = uri.path;
-
- var ohost = oparts[2];
- var opath = oparts[3];
-
- var ocookieCount = 0, totCount = 0;
- var dcookies = [];
- var c;
-
- for (var k in unsafeCookies) {
- c = unsafeCookies[k];
- if (!c.exists()) {
- delete unsafeCookies[k];
- } else {
- totCount++;
- if (c.belongsTo(dhost, dpath) && c.secure != dsecure) { // either secure on http or not secure on https
- dcookies.push(c);
- }
- if (c.belongsTo(ohost, opath)) {
- ocookieCount++;
- }
- }
- }
-
- if (!totCount) {
- this.setUnsafeCookies(browser, null);
- return;
- }
-
- // We want to "desecurify" cookies only if cross-navigation to unsafe
- // destination originates from a site sharing some secured cookies
-
- if (ocookieCount == 0 && !dsecure || !dcookies.length) return;
-
- if (dsecure) {
- this.log(WARN,"Detected cross-site navigation with secured cookies: " + origin + " -> " + uri.spec);
-
- } else {
- this.log(WARN,"Detected unsafe navigation with NoScript-secured cookies: " + origin + " -> " + uri.spec);
- this.log(WARN,uri.prePath + " cannot support secure cookies because it does not use HTTPS. Consider forcing HTTPS for " + uri.host + " in NoScript's Advanced HTTPS options panel.");
- }
-
- var cs = CC['@mozilla.org/cookieService;1'].getService(CI.nsICookieService).getCookieString(uri, req);
-
- for each (c in dcookies) {
- c.secure = dsecure;
- c.save();
- this.log(WARN,"Toggled secure flag on " + c);
- }
-
- if (cs) {
- dcookies.push.apply(
- dcookies, cs.split(/\s*;\s*/).map(function(cs) { var nv = cs.split("="); return { name: nv.shift(), value: nv.join("=") }; })
- .filter(function(c) { return dcookies.every(function(x) { return x.name != c.name; }); })
- );
- }
-
- cs = dcookies.map(function(c) { return c.name + "=" + c.value; }).join("; ");
-
- this.log(WARN,"Sending Cookie for " + dhost + ": " + cs);
- req.setRequestHeader("Cookie", cs, false); // "false" because merge syntax breaks Cookie header
- },
-
-
- cookiesCleanup: function(refCookie) {
- var downgraded = [];
-
- var ignored = this.secureCookiesExceptions;
- var disabled = !this.secureCookies;
- var bi = DOM.createBrowserIterator();
- var unsafe, k, c, total, deleted;
- for (var browser; browser = bi.next();) {
- unsafe = this.getUnsafeCookies(browser);
- if (!unsafe) continue;
- total = deleted = 0;
- for (k in unsafe) {
- c = unsafe[k];
- total++;
- if (disabled || (refCookie ? c.belongsTo(refCookie.host) : ignored && ignored.test(c.rawHost))) {
- if (c.exists()) {
- this.log(WARN,"Cleaning Secure flag from " + c);
- c.secure = false;
- c.save();
- }
- delete unsafe[k];
- deleted++;
- }
- }
- if (total == deleted) this.setUnsafeCookies(browser, null);
- if (!this.cookiesPerTab) break;
- }
- },
-
- get cookiesPerTab() {
- return ns.getPref("secureCookies.perTab", false);
- },
-
- _globalUnsafeCookies: {},
- getUnsafeCookies: function(browser) {
- return this.cookiesPerTab
- ? browser && ns.getExpando(browser, "unsafeCookies")
- : this._globalUnsafeCookies;
- },
- setUnsafeCookies: function(browser, value) {
- return this.cookiesPerTab
- ? browser && ns.setExpando(browser, "unsafeCookies", value)
- : this._globalUnsafeCookies = value;
- },
-
- _getParent: function(req, w) {
- return w && w.frameElement || DOM.findBrowserForNode(w || IOUtil.findWindow(req));
- }
-
-};
-
-(function () {
- ["secureCookies", "secureCookiesExceptions", "secureCookiesForced"].forEach(function(p) {
- var v = HTTPS[p];
- delete HTTPS[p];
- HTTPS.__defineGetter__(p, function() {
- return v;
- });
- HTTPS.__defineSetter__(p, function(n) {
- v = n;
- if (HTTPS.ready) HTTPS.cookiesCleanup();
- return v;
- });
- });
-})();
-
-HTTPS.ready = true;
diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/code/HTTPSRules.js b/data/extensions/https-everywhere@eff.org/chrome/content/code/HTTPSRules.js
deleted file mode 100644
index fc91385..0000000
--- a/data/extensions/https-everywhere@eff.org/chrome/content/code/HTTPSRules.js
+++ /dev/null
@@ -1,830 +0,0 @@
-// Compilation of RegExps is now delayed until they are first used...
-
-function Rule(from, to) {
- this.to = to;
- this.from_c = from; // This will become a RegExp after compilation
-}
-
-function Exclusion(pattern) {
- this.pattern_c = pattern; // Will become a RegExp after compilation
-}
-
-function CookieRule(host, cookiename) {
- this.host = host;
- this.name = cookiename;
-
- // These will be made during compilation:
-
- //this.host_c = new RegExp(host);
- //this.name_c = new RegExp(cookiename);
-}
-
-function RuleSet(id, name, xmlName, match_rule, default_off, platform) {
- if(xmlName == "WordPress.xml" || xmlName == "Github.xml") {
- this.log(NOTE, "RuleSet( name="+name+", xmlName="+xmlName+", match_rule="+match_rule+", default_off="+default_off+", platform="+platform+" )");
- }
-
- this.id=id;
- this.on_by_default = true;
- this.compiled = false;
- this.name = name;
- this.xmlName = xmlName;
- this.notes = "";
-
- if (match_rule) this.ruleset_match_c = new RegExp(match_rule);
- else this.ruleset_match_c = null;
- if (default_off) {
- // Perhaps problematically, this currently ignores the actual content of
- // the default_off XML attribute. Ideally we'd like this attribute to be
- // "valueless"
- this.notes = default_off;
- this.on_by_default = false;
- }
- if (platform)
- if (platform.search(HTTPSRules.localPlatformRegexp) == -1) {
- this.on_by_default = false;
- this.notes = "Only for " + platform;
- }
-
- this.rules = [];
- this.exclusions = [];
- this.cookierules = [];
-
- this.rule_toggle_prefs = HTTPSEverywhere.instance.rule_toggle_prefs;
-
- try {
- // if this pref exists, use it
- this.active = this.rule_toggle_prefs.getBoolPref(name);
- } catch(e) {
- // if not, use the default
- this.active = this.on_by_default;
- }
-}
-
-var dom_parser = Cc["@mozilla.org/xmlextras/domparser;1"].createInstance(Ci.nsIDOMParser);
-
-RuleSet.prototype = {
-
- ensureCompiled: function() {
- // Postpone compilation of exclusions, rules and cookies until now, to accelerate
- // browser load time.
- if (this.compiled) return;
- var i;
-
- for (i = 0; i < this.exclusions.length; ++i) {
- this.exclusions[i].pattern_c = new RegExp(this.exclusions[i].pattern_c);
- }
- for (i = 0; i < this.rules.length; ++i) {
- this.rules[i].from_c = new RegExp(this.rules[i].from_c);
- }
-
- for (i = 0; i < this.cookierules.length; i++) {
- var cr = this.cookierules[i];
- cr.host_c = new RegExp(cr.host);
- cr.name_c = new RegExp(cr.name);
- }
-
- this.compiled = true;
- },
-
- apply: function(urispec) {
- // return null if it does not apply
- // and the new url if it does apply
- var i;
- var returl = null;
- this.ensureCompiled();
- // If a rulset has a match_rule and it fails, go no further
- if (this.ruleset_match_c && !this.ruleset_match_c.test(urispec)) {
- this.log(VERB, "ruleset_match_c excluded " + urispec);
- return null;
- }
- // Even so, if we're covered by an exclusion, go home
- for (i = 0; i < this.exclusions.length; ++i) {
- if (this.exclusions[i].pattern_c.test(urispec)) {
- this.log(DBUG,"excluded uri " + urispec);
- return null;
- }
- }
- // Okay, now find the first rule that triggers
- for (i = 0; i < this.rules.length; ++i) {
- // This is just for displaying inactive rules
- returl = urispec.replace(this.rules[i].from_c, this.rules[i].to);
- if (returl != urispec) {
- // we rewrote the uri
- this.log(DBUG, "Rewrote " + urispec + " -> " + returl + " using " + this.xmlName + ": " + this.rules[i].from_c + " -> " + this.rules[i].to);
- return returl;
- }
- }
-
- return null;
- },
- log: function(level, msg) {
- https_everywhereLog(level, msg);
- },
-
- wouldMatch: function(hypothetical_uri, alist) {
- // return true if this ruleset would match the uri, assuming it were http
- // used for judging moot / inactive rulesets
- // alist is optional
-
- // if the ruleset is already somewhere in this applicable list, we don't
- // care about hypothetical wouldMatch questions
- if (alist && (this.name in alist.all)) return false;
-
- this.log(DBUG,"Would " +this.name + " match " +hypothetical_uri.spec +
- "? serial " + (alist && alist.serial));
-
- var uri = hypothetical_uri.clone();
- if (uri.scheme == "https") uri.scheme = "http";
- var urispec = uri.spec;
-
- this.ensureCompiled();
-
- if (this.ruleset_match_c && !this.ruleset_match_c.test(urispec))
- return false;
-
- for (var i = 0; i < this.exclusions.length; ++i)
- if (this.exclusions[i].pattern_c.test(urispec)) return false;
-
- for (var i = 0; i < this.rules.length; ++i)
- if (this.rules[i].from_c.test(urispec)) return true;
- return false;
- },
-
- transformURI: function(uri) {
- // If no rule applies, return null; if a rule would have applied but was
- // inactive, return 0; otherwise, return a fresh uri instance
- // for the target
- var newurl = this.apply(uri.spec);
- if (null == newurl)
- return null;
- var newuri = Components.classes["@mozilla.org/network/standard-url;1"].
- createInstance(CI.nsIStandardURL);
- newuri.init(CI.nsIStandardURL.URLTYPE_STANDARD, 80,
- newurl, uri.originCharset, null);
- newuri = newuri.QueryInterface(CI.nsIURI);
- return newuri;
- },
-
- enable: function() {
- // Enable us.
- this.rule_toggle_prefs.setBoolPref(this.name, true);
- this.active = true;
- },
-
- disable: function() {
- // Disable us.
- this.rule_toggle_prefs.setBoolPref(this.name, false);
- this.active = false;
- },
-
- toggle: function() {
- this.active = !this.active;
- this.rule_toggle_prefs.setBoolPref(this.name, this.active);
- },
-
- clear: function() {
- try {
- this.rule_toggle_prefs.clearUserPref(this.name);
- } catch(e) {
- // this ruleset has never been toggled
- }
- this.active = this.on_by_default;
- }
-};
-
-const RuleWriter = {
-
- getCustomRuleDir: function() {
- var loc = "ProfD"; // profile directory
- var file =
- CC["@mozilla.org/file/directory_service;1"]
- .getService(CI.nsIProperties)
- .get(loc, CI.nsILocalFile)
- .clone();
- file.append("HTTPSEverywhereUserRules");
- // Check for existence, if not, create.
- if (!file.exists()) {
- file.create(CI.nsIFile.DIRECTORY_TYPE, 0700);
- }
- if (!file.isDirectory()) {
- // XXX: Arg, death!
- }
- return file;
- },
-
- chromeToPath: function (aPath) {
- if (!aPath || !(/^chrome:/.test(aPath)))
- return; //not a chrome url
-
- var ios =
- CC['@mozilla.org/network/io-service;1']
- .getService(CI.nsIIOService);
- var uri = ios.newURI(aPath, "UTF-8", null);
- var cr =
- CC['@mozilla.org/chrome/chrome-registry;1']
- .getService(CI.nsIChromeRegistry);
- var rv = cr.convertChromeURL(uri).spec;
-
- if (/^file:/.test(rv))
- rv = this.urlToPath(rv);
- else
- rv = this.urlToPath("file://"+rv);
-
- return rv;
- },
-
- urlToPath: function (aPath) {
- if (!aPath || !/^file:/.test(aPath))
- return ;
-
- var ph =
- CC["@mozilla.org/network/protocol;1?name=file"]
- .createInstance(CI.nsIFileProtocolHandler);
- var rv = ph.getFileFromURLSpec(aPath).path;
-
- return rv;
- },
-
- read: function(file) {
- if (!file.exists())
- return null;
- var data = "";
- var fstream = CC["@mozilla.org/network/file-input-stream;1"]
- .createInstance(CI.nsIFileInputStream);
- var sstream = CC["@mozilla.org/scriptableinputstream;1"]
- .createInstance(CI.nsIScriptableInputStream);
- fstream.init(file, -1, 0, 0);
- sstream.init(fstream);
-
- var str = sstream.read(4096);
- while (str.length > 0) {
- data += str;
- str = sstream.read(4096);
- }
-
- sstream.close();
- fstream.close();
- return data;
- },
-
- write: function(file, data) {
- //if (!file.exists())
- // return null;
- this.log(DBUG, "Opening " + file.path + " for writing");
- var fstream = CC["@mozilla.org/network/file-output-stream;1"]
- .createInstance(CI.nsIFileOutputStream);
- fstream.init(file, -1, -1, 0);
-
- var retval = fstream.write(data, data.length);
- this.log(DBUG, "Got retval " + retval);
- fstream.close();
- return data;
- },
-
- rulesetFromFile: function(file, rule_store, ruleset_id) {
- if ((rule_store.targets == null) && (rule_store.targets != {}))
- this.log(WARN, "TARGETS IS NULL");
- var data = this.read(file);
- if (!data) return null;
- return this.readFromString(data, rule_store, ruleset_id);
- },
-
- readFromString: function(data, rule_store, ruleset_id) {
- try {
- var xmlruleset = dom_parser.parseFromString(data, "text/xml");
- } catch(e) { // file has been corrupted; XXX: handle error differently
- this.log(WARN,"Error in XML data: " + e + "\n" + data);
- return null;
- }
- this.parseOneRuleset(xmlruleset.documentElement, rule_store, ruleset_id);
- },
-
- parseOneRuleset: function(xmlruleset, rule_store, ruleset_id) {
- // Extract an xmlruleset into the rulestore
- if (!xmlruleset.getAttribute("name")) {
- this.log(WARN, "This blob: '" + xmlruleset + "' is not a ruleset\n");
- return null;
- }
-
- this.log(DBUG, "Parsing " + xmlruleset.getAttribute("name"));
-
- var match_rl = xmlruleset.getAttribute("match_rule");
- var dflt_off = xmlruleset.getAttribute("default_off");
- var platform = xmlruleset.getAttribute("platform");
- var rs = new RuleSet(ruleset_id, xmlruleset.getAttribute("name"), xmlruleset.getAttribute("f"), match_rl, dflt_off, platform);
-
- // see if this ruleset has the same name as an existing ruleset;
- // if so, this ruleset is ignored; DON'T add or return it.
- if (rs.name in rule_store.rulesetsByName) {
- this.log(WARN, "Error: found duplicate rule name " + rs.name);
- return null;
- }
-
- // Add this ruleset id into HTTPSRules.targets if it's not already there.
- // This should only happen for custom user rules. Built-in rules get
- // their ids preloaded into the targets map, and have their <target>
- // tags stripped when the sqlite database is built.
- var targets = xmlruleset.getElementsByTagName("target");
- for (var i = 0; i < targets.length; i++) {
- var host = targets[i].getAttribute("host");
- if (!host) {
- this.log(WARN, "<target> missing host in " + xmlruleset.getAttribute("name"));
- return null;
- }
- if (! rule_store.targets[host])
- rule_store.targets[host] = [];
- this.log(DBUG, "Adding " + host + " to targets, pointing at " + ruleset_id);
- rule_store.targets[host].push(ruleset_id);
- }
-
- var exclusions = xmlruleset.getElementsByTagName("exclusion");
- for (var i = 0; i < exclusions.length; i++) {
- var exclusion = new Exclusion(exclusions[i].getAttribute("pattern"));
- rs.exclusions.push(exclusion);
- }
-
- var rules = xmlruleset.getElementsByTagName("rule");
- for (var i = 0; i < rules.length; i++) {
- var rule = new Rule(rules[i].getAttribute("from"),
- rules[i].getAttribute("to"));
- rs.rules.push(rule);
- }
-
- var securecookies = xmlruleset.getElementsByTagName("securecookie");
- for (var i = 0; i < securecookies.length; i++) {
- var c_rule = new CookieRule(securecookies[i].getAttribute("host"),
- securecookies[i].getAttribute("name"));
- rs.cookierules.push(c_rule);
- this.log(DBUG,"Cookie rule "+ c_rule.host+ " " +c_rule.name);
- }
-
- rule_store.rulesets.push(rs);
- rule_store.rulesetsByID[rs.id] = rs;
- rule_store.rulesetsByName[rs.name] = rs;
- },
-
- enumerate: function(dir) {
- // file is the given directory (nsIFile)
- var entries = dir.directoryEntries;
- var ret = [];
- while(entries.hasMoreElements()) {
- var entry = entries.getNext();
- entry.QueryInterface(Components.interfaces.nsIFile);
- ret.push(entry);
- }
- return ret;
- },
-};
-
-
-
-const HTTPSRules = {
- init: function() {
- try {
- this.rulesets = [];
- this.targets = {}; // dict mapping target host pattern -> list of
- // applicable ruleset ids
- this.rulesetsByID = {};
- this.rulesetsByName = {};
- var t1 = new Date().getTime();
- this.checkMixedContentHandling();
- var rulefiles = RuleWriter.enumerate(RuleWriter.getCustomRuleDir());
- this.scanRulefiles(rulefiles);
-
- // Initialize database connection.
- var dbFile = new FileUtils.File(RuleWriter.chromeToPath("chrome://https-everywhere/content/rulesets.sqlite"));
- var rulesetDBConn = Services.storage.openDatabase(dbFile);
- this.queryForRuleset = rulesetDBConn.createStatement(
- "select contents from rulesets where id = :id");
-
- // Preload the mapping of hostname target -> ruleset ID from DB.
- // This is a little slow (287 ms on a Core2 Duo @ 2.2GHz with SSD),
- // but is faster than loading all of the rulesets. If this becomes a
- // bottleneck, change it to load in a background webworker, or load
- // a smaller bloom filter instead.
- var targetsQuery = rulesetDBConn.createStatement("select host, ruleset_id from targets");
- this.log(DBUG, "Loading targets...");
- while (targetsQuery.executeStep()) {
- var host = targetsQuery.row.host;
- var id = targetsQuery.row.ruleset_id;
- if (!this.targets[host]) {
- this.targets[host] = [id];
- } else {
- this.targets[host].push(id);
- }
- }
- this.log(DBUG, "Loading adding targets.");
- } catch(e) {
- this.log(DBUG,"Rules Failed: "+e);
- }
- var t2 = new Date().getTime();
- this.log(NOTE,"Loading targets took " + (t2 - t1) / 1000.0 + " seconds");
-
- var gitCommitQuery = rulesetDBConn.createStatement("select git_commit from git_commit");
- if (gitCommitQuery.executeStep()) {
- this.GITCommitID = gitCommitQuery.row.git_commit;
- }
-
- try {
- if (HTTPSEverywhere.instance.prefs.getBoolPref("performance_tests")) {
- this.testRulesetRetrievalPerformance();
- }
- } catch(e) {
- this.log(WARN, "Exception during testing " + e);
- }
- return;
- },
-
- checkMixedContentHandling: function() {
- // Firefox 23+ blocks mixed content by default, so rulesets that create
- // mixed content situations should be disabled there
- var appInfo = CC["@mozilla.org/xre/app-info;1"].getService(CI.nsIXULAppInfo);
- var platformVer = appInfo.platformVersion;
- var versionChecker = CC["@mozilla.org/xpcom/version-comparator;1"]
- .getService(CI.nsIVersionComparator);
- var prefs = Components.classes["@mozilla.org/preferences-service;1"]
- .getService(Components.interfaces.nsIPrefService).getBranch("");
-
-
- // If mixed content is present and enabled, and the user hasn't opted to enable
- // mixed content triggering rules, leave them out. Otherwise add them in.
- if(versionChecker.compare(appInfo.version, "23.0a1") >= 0
- && prefs.getBoolPref("security.mixed_content.block_active_content")
- && !prefs.getBoolPref("extensions.https_everywhere.enable_mixed_rulesets")) {
- this.log(INFO, "Not activating rules that trigger mixed content errors.");
- this.localPlatformRegexp = new RegExp("firefox");
- } else {
- this.log(INFO, "Activating rules that would normally trigger mixed content");
- this.localPlatformRegexp = new RegExp("(firefox|mixedcontent)");
- }
- },
-
- scanRulefiles: function(rulefiles) {
- var i = 0;
- var r = null;
- for(i = 0; i < rulefiles.length; ++i) {
- try {
- this.log(DBUG,"Loading ruleset file: "+rulefiles[i].path);
- var ruleset_id = "custom_" + i;
- RuleWriter.rulesetFromFile(rulefiles[i], this, ruleset_id);
- } catch(e) {
- this.log(WARN, "Error in ruleset file: " + e);
- if (e.lineNumber)
- this.log(WARN, "(line number: " + e.lineNumber + ")");
- }
- }
- },
-
- resetRulesetsToDefaults: function() {
- // Callable from within the prefs UI and also for cleaning up buggy
- // configurations...
- for (var i in this.rulesets) {
- this.rulesets[i].clear();
- }
- },
-
-
- rewrittenURI: function(alist, input_uri) {
- // This function oversees the task of working out if a uri should be
- // rewritten, what it should be rewritten to, and recordkeeping of which
- // applicable rulesets are and aren't active. Previously this returned
- // the new uri if there was a rewrite. Now it returns a JS object with a
- // newuri attribute and an applied_ruleset attribute (or null if there's
- // no rewrite).
- var i = 0;
- userpass_present = false; // Global so that sanitiseURI can tweak it.
- // Why does JS have no tuples, again?
- var blob = {}; blob.newuri = null;
- if (!alist) this.log(DBUG, "No applicable list rewriting " + input_uri.spec);
- this.log(DBUG, "Processing " + input_uri.spec);
-
- var uri = this.sanitiseURI(input_uri);
-
- // Get the list of rulesets that target this host
- try {
- var rs = this.potentiallyApplicableRulesets(uri.host);
- } catch(e) {
- this.log(NOTE, 'Could not check applicable rules for '+uri.spec + '\n'+e);
- return null;
- }
-
- // ponder each potentially applicable ruleset, working out if it applies
- // and recording it as active/inactive/moot/breaking in the applicable list
- for (i = 0; i < rs.length; ++i) {
- if (!rs[i].active) {
- if (alist && rs[i].wouldMatch(uri, alist))
- alist.inactive_rule(rs[i]);
- continue;
- }
- blob.newuri = rs[i].transformURI(uri);
- if (blob.newuri) {
- if (alist) {
- if (uri.spec in https_everywhere_blacklist)
- alist.breaking_rule(rs[i]);
- else
- alist.active_rule(rs[i]);
- }
- if (userpass_present) blob.newuri.userPass = input_uri.userPass;
- blob.applied_ruleset = rs[i];
- return blob;
- }
- if (uri.scheme == "https" && alist) {
- // we didn't rewrite but the rule applies to this domain and the
- // requests are going over https
- if (rs[i].wouldMatch(uri, alist)) alist.moot_rule(rs[i]);
- continue;
- }
- }
- return null;
- },
-
- sanitiseURI: function(input_uri) {
- // Rulesets shouldn't try to parse usernames and passwords. If we find
- // those, apply the ruleset without them (and then add them back later).
- // When .userPass is absent, sometimes it is false and sometimes trying
- // to read it raises an exception (probably depending on the URI type).
- var uri = input_uri;
- try {
- if (input_uri.userPass) {
- uri = input_uri.clone();
- userpass_present = true; // tweaking a global in our caller :(
- uri.userPass = null;
- }
- } catch(e) {}
-
- // example.com. is equivalent to example.com
- // example.com.. is invalid, but firefox would load it anyway
- try {
- if (uri.host)
- try {
- var h = uri.host;
- if (h.charAt(h.length - 1) == ".") {
- while (h.charAt(h.length - 1) == ".")
- h = h.slice(0,-1);
- uri = uri.clone();
- uri.host = h;
- }
- } catch(e) {
- this.log(WARN, "Failed to normalise domain: ");
- try {this.log(WARN, input_uri.host);}
- catch(e2) {this.log(WARN, "bang" + e + " & " + e2 + " & "+ input_uri);}
- }
- } catch(e3) {
- this.log(INFO, "uri.host is explosive!");
- try { this.log(INFO, "(" + uri.spec + ")"); } // happens for about: uris and soforth
- catch(e4) { this.log(WARN, "(and unprintable!!!!!!)"); }
- }
- return uri;
- },
-
- setInsert: function(intoList, fromList) {
- // Insert any elements from fromList into intoList, if they are not
- // already there. fromList may be null.
- if (!fromList) return;
- for (var i = 0; i < fromList.length; i++)
- if (intoList.indexOf(fromList[i]) == -1)
- intoList.push(fromList[i]);
- },
-
- loadAllRulesets: function() {
- for (var host in this.targets) {
- var ruleset_ids = this.targets[host];
- for (var i = 0; i < ruleset_ids.length; i++) {
- var id = ruleset_ids[i];
- if (!this.rulesetsByID[id]) {
- this.loadRulesetById(id);
- }
- }
- }
- },
-
- // Load a ruleset by numeric id, e.g. 234
- // NOTE: This call runs synchronously, which can lock up the browser UI. Is
- // there any way to fix that, given that we need to run blocking in the request
- // flow? Perhaps we can preload all targets from the DB into memory at startup
- // so we only hit the DB when we know there is something to be had.
- loadRulesetById: function(ruleset_id) {
- this.queryForRuleset.params.id = ruleset_id;
-
- try {
- if (this.queryForRuleset.executeStep()) {
- RuleWriter.readFromString(this.queryForRuleset.row.contents, this, ruleset_id);
- } else {
- this.log(WARN,"Couldn't find ruleset for id " + ruleset_id);
- }
- } finally {
- this.queryForRuleset.reset();
- }
- },
-
- // Get all rulesets matching a given target, lazy-loading from DB as necessary.
- rulesetsByTarget: function(target) {
- var rulesetIds = this.targets[target];
-
- var output = [];
- if (rulesetIds) {
- this.log(INFO, "For target " + target + ", found ids " + rulesetIds.toString());
- for (var i = 0; i < rulesetIds.length; i++) {
- var id = rulesetIds[i];
- if (!this.rulesetsByID[id]) {
- this.loadRulesetById(id);
- }
- if (this.rulesetsByID[id]) {
- output.push(this.rulesetsByID[id]);
- }
- }
- } else {
- this.log(DBUG, "For target " + target + ", found no ids in DB");
- }
- return output;
- },
-
- /**
- * Return a list of rulesets that declare targets matching a given hostname.
- * The returned rulesets include those that are disabled for various reasons.
- * This function is only defined for fully-qualified hostnames. Wildcards and
- * cookie-style domain attributes with a leading dot are not permitted.
- * @param host {string}
- * @return {Array.<RuleSet>}
- */
- potentiallyApplicableRulesets: function(host) {
- var i, tmp, t;
- var results = [];
-
- var attempt = function(target) {
- this.setInsert(results, this.rulesetsByTarget(target));
- }.bind(this);
-
- attempt(host);
-
- // replace each portion of the domain with a * in turn
- var segmented = host.split(".");
- for (i = 0; i < segmented.length; ++i) {
- tmp = segmented[i];
- if (tmp.length === 0) {
- this.log(WARN,"Malformed host passed to potentiallyApplicableRulesets: " + host);
- return null;
- }
- segmented[i] = "*";
- t = segmented.join(".");
- segmented[i] = tmp;
- attempt(t);
- }
- // now eat away from the left, with *, so that for x.y.z.google.com we
- // check *.z.google.com and *.google.com (we did *.y.z.google.com above)
- for (i = 2; i <= segmented.length - 2; ++i) {
- t = "*." + segmented.slice(i,segmented.length).join(".");
- attempt(t);
- }
- this.log(DBUG,"Potentially applicable rules for " + host + ":");
- for (i = 0; i < results.length; ++i)
- this.log(DBUG, " " + results[i].name);
- return results;
- },
-
- testRulesetRetrievalPerformance: function() {
- // We can use this function to measure the impact of changes in the ruleset
- // storage architecture, potentiallyApplicableRulesets() caching
- // implementations, etc.
- var req = Cc["@mozilla.org/xmlextras/xmlhttprequest;1"]
- .createInstance(Ci.nsIXMLHttpRequest);
- req.open("GET", "https://www.eff.org/files/alexa-top-10000-global.txt", false);
- req.send();
- var domains = req.response.split("\n");
- var domains_l = domains.length - 1; // The last entry in this thing is bogus
- var prefix = "";
- this.log(WARN, "Calling potentiallyApplicableRulesets() with " + domains_l + " domains");
- var count = 0;
- var t1 = new Date().getTime();
- for (var n = 0; n < domains_l; n++) {
- if (this.potentiallyApplicableRulesets(prefix + domains[n]).length != 0)
- count++;
- }
- var t2 = new Date().getTime();
- this.log(NOTE, count + " hits: average call to potentiallyApplicableRulesets took " + (t2 - t1) / domains_l + " milliseconds");
- count = 0;
- t1 = new Date().getTime();
- for (var n = 0; n < domains_l; n++) {
- if (this.potentiallyApplicableRulesets(prefix + domains[n]).length != 0)
- count++;
- }
- t2 = new Date().getTime();
- this.log(NOTE, count + " hits: average subsequent call to potentiallyApplicableRulesets took " + (t2 - t1) / domains_l + " milliseconds");
- },
-
- /**
- * If a cookie's domain attribute has a leading dot to indicate it should be
- * sent for all subdomains (".example.com"), return the actual host part (the
- * part after the dot).
- *
- * @param cookieDomain {string} A cookie domain to strip a leading dot from.
- * @return {string} a fully qualified hostname.
- */
- hostFromCookieDomain: function(cookieDomain) {
- if (cookieDomain.length > 0 && cookieDomain[0] == ".") {
- return cookieDomain.slice(1);
- } else {
- return cookieDomain;
- }
- },
-
- /**
- * Check to see if the Cookie object c meets any of our cookierule citeria
- * for being marked as secure.
- *
- * @param applicable_list {ApplicableList} an ApplicableList for record keeping
- * @param c {nsICookie2} The cookie we might secure.
- * @param known_https {boolean} True if the cookie appeared in an HTTPS request and
- * so we know it is okay to mark it secure (assuming a cookierule matches it.
- * TODO(jsha): Double-check that the code calling this actually does that.
- * @return {boolean} True if the cookie in question should have the 'secure'
- * flag set to true.
- */
- shouldSecureCookie: function(applicable_list, c, known_https) {
- this.log(DBUG," rawhost: " + c.rawHost + " name: " + c.name + " host" + c.host);
- var i,j;
- // potentiallyApplicableRulesets is defined on hostnames not cookie-style
- // "domain" attributes, so we strip a leading dot before calling.
- var rs = this.potentiallyApplicableRulesets(this.hostFromCookieDomain(c.host));
- for (i = 0; i < rs.length; ++i) {
- var ruleset = rs[i];
- if (ruleset.active) {
- ruleset.ensureCompiled();
- // Never secure a cookie if this page might be HTTP
- if (!(known_https || this.safeToSecureCookie(c.rawHost))) {
- continue;
- }
- for (j = 0; j < ruleset.cookierules.length; j++) {
- var cr = ruleset.cookierules[j];
- if (cr.host_c.test(c.host) && cr.name_c.test(c.name)) {
- if (applicable_list) applicable_list.active_rule(ruleset);
- this.log(INFO,"Active cookie rule " + ruleset.name);
- return true;
- }
- }
- if (ruleset.cookierules.length > 0 && applicable_list) {
- applicable_list.moot_rule(ruleset);
- }
- } else if (ruleset.cookierules.length > 0) {
- if (applicable_list) {
- applicable_list.inactive_rule(ruleset);
- }
- this.log(INFO,"Inactive cookie rule " + ruleset.name);
- }
- }
- return false;
- },
-
- /**
- * Check if the domain might be being served over HTTP. If so, it isn't
- * safe to secure a cookie! We can't always know this for sure because
- * observing cookie-changed doesn't give us enough context to know the
- * full origin URI. In particular, if cookies are set from Javascript (as
- * opposed to HTTP/HTTPS responses), we don't know what page context that
- * Javascript ran in.
-
- * First, if there are any redirect loops on this domain, don't secure
- * cookies. XXX This is not a very satisfactory heuristic. Sometimes we
- * would want to secure the cookie anyway, because the URLs that loop are
- * not authenticated or not important. Also by the time the loop has been
- * observed and the domain blacklisted, a cookie might already have been
- * flagged as secure.
- *
- * @param domain {string} The cookie's 'domain' attribute.
- * @return {boolean} True if it's safe to secure a cookie on that domain.
- */
- safeToSecureCookie: function(domain) {
- if (domain in https_blacklist_domains) {
- this.log(INFO, "cookies for " + domain + "blacklisted");
- return false;
- }
-
- // If we passed that test, make up a random URL on the domain, and see if
- // we would HTTPSify that.
- try {
- var nonce_path = "/" + Math.random().toString();
- nonce_path = nonce_path + nonce_path;
- var test_uri = "http://" + domain + nonce_path;
- } catch (e) {
- this.log(WARN, "explosion in safeToSecureCookie for " + domain + "\n"
- + "(" + e + ")");
- return false;
- }
-
- this.log(DBUG, "Testing securecookie applicability with " + test_uri);
- // potentiallyApplicableRulesets is defined on hostnames not cookie-style
- // "domain" attributes, so we strip a leading dot before calling.
- var rs = this.potentiallyApplicableRulesets(this.hostFromCookieDomain(domain));
- for (var i = 0; i < rs.length; ++i) {
- if (!rs[i].active) continue;
- var rewrite = rs[i].apply(test_uri);
- if (rewrite) {
- this.log(DBUG, "Safe to secure cookie for " + test_uri + ": " + rewrite);
- return true;
- }
- }
- this.log(DBUG, "Unsafe to secure cookie for " + test_uri);
- return false;
- }
-};
diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/code/IOUtil.js b/data/extensions/https-everywhere@eff.org/chrome/content/code/IOUtil.js
deleted file mode 100644
index f3a5bee..0000000
--- a/data/extensions/https-everywhere@eff.org/chrome/content/code/IOUtil.js
+++ /dev/null
@@ -1,265 +0,0 @@
-Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
-
-const IO = {
- readFile: function(file, charset) {
- var res;
-
- const is = Cc["@mozilla.org/network/file-input-stream;1"]
- .createInstance(Ci.nsIFileInputStream );
- is.init(file ,0x01, 256 /*0400*/, null);
- const sis = Cc["@mozilla.org/scriptableinputstream;1"]
- .createInstance(Ci.nsIScriptableInputStream);
- sis.init(is);
-
- res = sis.read(sis.available());
- is.close();
-
- if (charset !== null) { // use "null" if you want uncoverted data...
- const unicodeConverter = Cc["@mozilla.org/intl/scriptableunicodeconverter"]
- .createInstance(Ci.nsIScriptableUnicodeConverter);
- try {
- unicodeConverter.charset = charset || "UTF-8";
- } catch(ex) {
- unicodeConverter.charset = "UTF-8";
- }
- res = unicodeConverter.ConvertToUnicode(res);
- }
-
- return res;
- },
- writeFile: function(file, content, charset) {
- const unicodeConverter = Cc["@mozilla.org/intl/scriptableunicodeconverter"]
- .createInstance(Ci.nsIScriptableUnicodeConverter);
- try {
- unicodeConverter.charset = charset || "UTF-8";
- } catch(ex) {
- unicodeConverter.charset = "UTF-8";
- }
-
- content = unicodeConverter.ConvertFromUnicode(content);
- const os = Cc["@mozilla.org/network/file-output-stream;1"]
- .createInstance(Ci.nsIFileOutputStream);
- os.init(file, 0x02 | 0x08 | 0x20, 448 /*0700*/, 0);
- os.write(content, content.length);
- os.close();
- },
-
- safeWriteFile: function(file, content, charset) {
- var tmp = file.clone();
- var name = file.leafName;
- tmp.leafName = name + ".tmp";
- tmp.createUnique(Ci.nsIFile.NORMAL_FILE_TYPE, file.exists() ? file.permissions : 384 /*0600*/);
- this.writeFile(tmp, content, charset);
- tmp.moveTo(file.parent, name);
- }
-};
-
-
-function nsISupportsWrapper(wrapped) {
- this.wrappedJSObject = wrapped;
-}
-nsISupportsWrapper.prototype = {
- QueryInterface: XPCOMUtils.generateQI([])
-};
-
-const IOUtil = {
- asyncNetworking: true,
- proxiedDNS: 0,
-
- attachToChannel: function(channel, key, requestInfo) {
- if (channel instanceof Ci.nsIWritablePropertyBag2)
- channel.setPropertyAsInterface(key, requestInfo);
- },
- extractFromChannel: function(channel, key, preserve) {
- if (channel instanceof Ci.nsIPropertyBag2) {
- let p = channel.get(key);
- if (p) {
- if (!preserve && (channel instanceof Ci.nsIWritablePropertyBag)) channel.deleteProperty(key);
- if (p.wrappedJSObject) return p.wrappedJSObject;
- p instanceof Ci.nsIURL || p instanceof Ci.nsIURL;
- return p;
- }
- }
- return null;
- },
-
- extractInternalReferrer: function(channel) {
- if (channel instanceof Ci.nsIPropertyBag2) {
- const key = "docshell.internalReferrer";
- if (channel.hasKey(key))
- try {
- return channel.getPropertyAsInterface(key, Ci.nsIURL);
- } catch(e) {}
- }
- return null;
- },
- extractInternalReferrerSpec: function(channel) {
- var ref = this.extractInternalReferrer(channel);
- return ref && ref.spec || null;
- },
-
- getProxyInfo: function(channel) {
- return Ci.nsIProxiedChannel && (channel instanceof Ci.nsIProxiedChannel)
- ? channel.proxyInfo
- : Components.classes["@mozilla.org/network/protocol-proxy-service;1"]
- .getService(Components.interfaces.nsIProtocolProxyService)
- .resolve(channel.URI, 0);
- },
-
-
- canDoDNS: function(channel) {
- if (!channel || IOS.offline) return false;
-
- var proxyInfo = this.getProxyInfo(channel);
- switch(this.proxiedDNS) {
- case 1:
- return !(proxyInfo && (proxyInfo.flags & Ci.nsIProxyInfo.TRANSPARENT_PROXY_RESOLVES_HOST));
- case 2:
- return true;
- default:
- return !proxyInfo || proxyInfo.type == "direct";
- }
-
- },
-
- abort: function(channel, noNetwork) {
- channel.cancel(Components.results.NS_ERROR_ABORT);
- },
-
- findWindow: function(channel) {
- for each(var cb in [channel.notificationCallbacks,
- channel.loadGroup && channel.loadGroup.notificationCallbacks]) {
- if (cb instanceof Ci.nsIInterfaceRequestor) {
- if (Ci.nsILoadContext) try {
- // For Gecko 1.9.1
- return cb.getInterface(Ci.nsILoadContext).associatedWindow;
- } catch(e) {}
-
- try {
- // For Gecko 1.9.0
- return cb.getInterface(Ci.nsIDOMWindow);
- } catch(e) {}
- }
- }
- return null;
- },
-
- readFile: IO.readFile,
- writeFile: IO.writeFile,
- safeWriteFIle: IO.safeWriteFile,
-
- _protocols: {}, // caching them we gain a 33% speed boost in URI creation :)
- newURI: function(url) {
- try {
- let scheme = url.substring(0, url.indexOf(':'));
- return (this._protocols[scheme] ||
- (this._protocols[scheme] =
- Cc["@mozilla.org/network/protocol;1?name=" + scheme]
- .getService(Ci.nsIProtocolHandler)))
- .newURI(url, null, null);
- } catch(e) {
- return IOS.newURI(url, null, null);
- }
- },
-
- unwrapURL: function(url) {
- try {
- if (!(url instanceof Ci.nsIURI))
- url = this.newURI(url);
-
- switch (url.scheme) {
- case "view-source":
- return this.unwrapURL(url.path);
- case "feed":
- let u = url.spec.substring(5);
- if (u.substring(0, 2) == '//') u = "http:" + u;
- return this.unwrapURL(u);
- case "wyciwyg":
- return this.unwrapURL(url.path.replace(/^\/\/\d+\//, ""));
- case "jar":
- if (url instanceof Ci.nsIJARURI)
- return this.unwrapURL(url.JARFile);
- }
- }
- catch (e) {}
-
- return url;
- },
-
-
- get _channelFlags() {
- delete this._channelFlags;
- const constRx = /^[A-Z_]+$/;
- const ff = {};
- [Ci.nsIHttpChannel, Ci.nsICachingChannel].forEach(function(c) {
- for (var p in c) {
- if (constRx.test(p)) ff[p] = c[p];
- }
- });
- return this._channelFlags = ff;
- },
- humanFlags: function(loadFlags) {
- var hf = [];
- var c = this._channelFlags;
- for (var p in c) {
- if (loadFlags & c[p]) hf.push(p + "=" + c[p]);
- }
- return hf.join("\n");
- },
-
- queryNotificationCallbacks: function(chan, iid) {
- var cb;
- try {
- cb = chan.notificationCallbacks.getInterface(iid);
- if (cb) return cb;
- } catch(e) {}
-
- try {
- return chan.loadGroup && chan.loadGroup.notificationCallbacks.getInterface(iid);
- } catch(e) {}
-
- return null;
- },
-
-
- anonymizeURI: function(uri, cookie) {
- if (uri instanceof Ci.nsIURL) {
- uri.query = this.anonymizeQS(uri.query, cookie);
- } else return this.anonymizeURL(uri, cookie);
- return uri;
- },
- anonymizeURL: function(url, cookie) {
- var parts = url.split("?");
- if (parts.length < 2) return url;
- parts[1] = this.anonymizeQS(parts[1], cookie);
- return parts.join("?");
- },
-
- _splitName: function(nv) nv.split("=")[0],
- _qsRx: /[&=]/,
- _anonRx: /(?:auth|s\w+(?:id|key)$)/,
- anonymizeQS: function(qs, cookie) {
- if (!qs) return qs;
- if (!this._qsRx.test(qs)) return '';
-
- var cookieNames, hasCookies;
- if ((hasCookies = !!cookie)) cookieNames = cookie.split(/\s*;\s*/).map(this._splitName);
-
- let parms = qs.split("&");
- for (j = parms.length; j-- > 0;) {
- let nv = parms[j].split("=");
- let name = nv[0];
- if (this._anonRx.test(name) || cookie && cookieNames.indexOf(name) > -1)
- parms.splice(j, 1);
- }
- return parms.join("&");
- },
-
- get TLDService() {
- delete this.TLDService;
- return this.TLDService = Cc["@mozilla.org/network/effective-tld-service;1"].getService(Ci.nsIEffectiveTLDService);
- }
-
-};
-
-
diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/code/NSS.js b/data/extensions/https-everywhere@eff.org/chrome/content/code/NSS.js
deleted file mode 100644
index 378a680..0000000
--- a/data/extensions/https-everywhere@eff.org/chrome/content/code/NSS.js
+++ /dev/null
@@ -1,493 +0,0 @@
-// Copyright (c) 2011 Moxie Marlinspike <moxie@thoughtcrime.org>
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as
-// published by the Free Software Foundation; either version 3 of the
-// License, or (at your option) any later version.
-
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
-// USA
-
-
-/**
- * This class manages the ctypes bridge to the NSS (crypto) libraries
- * distributed with Mozilla.
- *
- **/
-
-function NSS() {
-
-}
-
-NSS.initialize = function(nssPath) {
- var sharedLib;
-
- try {
- sharedLib = ctypes.open(nssPath);
- } catch (e) {
- Components.utils.import("resource://gre/modules/Services.jsm");
- var nssFile = Services.dirsvc.get("GreD", Ci.nsILocalFile);
- nssFile.append(ctypes.libraryName("nss3"));
- sharedLib = ctypes.open(nssFile.path);
- }
-
- NSS.types = new Object();
-
- NSS.types.CERTDistNames = ctypes.StructType("CERTDistNames");
-
- NSS.types.SECItem = ctypes.StructType("SECItem",
- [{'type' : ctypes.int},
- {'data' : ctypes.unsigned_char.ptr},
- {'len' : ctypes.uint32_t}]);
-
- NSS.types.PLArenaPool = ctypes.StructType("PLArenaPool");
-
- NSS.types.CERTCertificateList = ctypes.StructType("CERTCertificateList",
- [{'certs' : NSS.types.SECItem.ptr},
- {'len' : ctypes.int},
- {'arena' : NSS.types.PLArenaPool.ptr}]),
-
- NSS.types.CERTAVA = ctypes.StructType("CERTAVA",
- [{'type' : NSS.types.SECItem},
- {'value' : NSS.types.SECItem}]);
-
- NSS.types.CERTRDN = ctypes.StructType("CERTRDN",
- [{'avas' : NSS.types.CERTAVA.ptr.ptr}]);
-
- NSS.types.SECAlgorithmID = ctypes.StructType("SECAlgorithmID",
- [{'algorithm' : NSS.types.SECItem},
- {'parameters' : NSS.types.SECItem}]);
-
- NSS.types.CERTSignedData = ctypes.StructType("CERTSignedData",
- [{'data' : NSS.types.SECItem},
- {'signatureAlgorithm' : NSS.types.SECAlgorithmID},
- {'signature' : NSS.types.SECItem}]);
-
- NSS.types.CERTOKDomainName = ctypes.StructType("CERTOKDomainName");
-
- NSS.types.NSSCertificateStr = ctypes.StructType("NSSCertificateStr");
-
- NSS.types.CERTAuthKeyID = ctypes.StructType("CERTAuthKeyID");
-
- NSS.types.CERTName = ctypes.StructType("CERTName",
- [{'arena' : ctypes.voidptr_t},
- {'rdns' : NSS.types.CERTRDN.ptr.ptr}]);
-
- NSS.types.CERTValidity = ctypes.StructType("CERTValidity",
- [{'arena' : ctypes.voidptr_t},
- {'notBefore' : NSS.types.SECItem},
- {'notAfter' : NSS.types.SECItem}]);
-
- NSS.types.CERTCertExtension = ctypes.StructType("CERTCertExtension",
- [{'id' : NSS.types.SECItem},
- {'critical' : NSS.types.SECItem},
- {'value' : NSS.types.SECItem}]);
-
- NSS.types.CERTCertDBHandle = ctypes.StructType("CERTCertDBHandle");
-
- NSS.types.PK11SlotInfo = ctypes.StructType("PK11SlotInfo");
-
- NSS.types.PK11SlotListElement = ctypes.StructType("PK11SlotListElement",
- [{'next' : ctypes.StructType("PK11SlotListElement").ptr},
- {'prev' : ctypes.StructType("PK11SlotListElement").ptr},
- {'slot' : NSS.types.PK11SlotInfo.ptr},
- {'refCount' : ctypes.int}]),
-
- NSS.types.PK11SlotList = ctypes.StructType("PK11SlotList",
- [{'head' : NSS.types.PK11SlotListElement.ptr},
- {'tail' : NSS.types.PK11SlotListElement.ptr},
- {'lock' : ctypes.StructType("PZLock").ptr}]),
-
- NSS.types.SECKEYPrivateKey = ctypes.StructType("SECKEYPrivateKey",
- [{'arena' : NSS.types.PLArenaPool.ptr},
- {'keyType' : ctypes.int},
- {'pkcs11Slot' : NSS.types.PK11SlotInfo.ptr},
- {'pkcs11ID' : ctypes.unsigned_long},
- {'pkcs11IsTemp' : ctypes.int},
- {'wincx' : ctypes.voidptr_t},
- {'staticflags' : ctypes.int32_t}]);
-
- NSS.types.SECKEYPublicKey = ctypes.StructType("SECKEYPublicKey");
-
- NSS.types.CERTSubjectPublicKeyInfo = ctypes.StructType("CERTSubjectPublicKeyInfo",
- [{'arena' : NSS.types.PLArenaPool.ptr},
- {'algorithm' : NSS.types.SECAlgorithmID},
- {'subjectPublicKey' : NSS.types.SECItem}]);
-
- NSS.types.CERTCertificateRequest = ctypes.StructType("CERTCertificateRequest");
-
- NSS.types.SEC_ASN1Template = ctypes.StructType("SEC_ASN1Template",
- [{'kind' : ctypes.unsigned_long},
- {'offset' : ctypes.unsigned_long},
- {'sub' : ctypes.voidptr_t},
- {'size' : ctypes.unsigned_int}]);
-
- NSS.types.PK11RSAGenParams = ctypes.StructType("PK11RSAGenParams",
- [{'keySizeInBits' : ctypes.int},
- {'pe' : ctypes.unsigned_long}]);
-
- NSS.types.CERTCertTrust = ctypes.StructType("CERTCertTrust",
- [{'sslFlags' : ctypes.uint32_t},
- {'emailFlags' : ctypes.uint32_t},
- {'objectSigningFlags' : ctypes.uint32_t}]);
-
- NSS.types.CERTSubjectList = ctypes.StructType("CERTSubjectList");
-
- NSS.types.CERTGeneralName = ctypes.StructType("CERTGeneralName");
-
- NSS.types.CERTCertificate = ctypes.StructType("CERTCertificate",
- [{'arena' : NSS.types.PLArenaPool.ptr},
- {'subjectName' : ctypes.char.ptr},
- {'issuerName' : ctypes.char.ptr},
- {'signatureWrap' : NSS.types.CERTSignedData},
- {'derCert' : NSS.types.SECItem},
- {'derIssuer' : NSS.types.SECItem},
- {'derSubject' : NSS.types.SECItem},
- {'derPublicKey' : NSS.types.SECItem},
- {'certKey' : NSS.types.SECItem},
- {'version' : NSS.types.SECItem},
- {'serialNumber' : NSS.types.SECItem},
- {'signature' : NSS.types.SECAlgorithmID},
- {'issuer' : NSS.types.CERTName},
- {'validity' : NSS.types.CERTValidity},
- {'subject' : NSS.types.CERTName},
- {'subjectPublicKeyInfo' : NSS.types.CERTSubjectPublicKeyInfo},
- {'issuerID' : NSS.types.SECItem},
- {'subjectID' : NSS.types.SECItem},
- {'extensions' : NSS.types.CERTCertExtension.ptr.ptr},
- {'emailAddr' : ctypes.char.ptr},
- {'dbhandle' : NSS.types.CERTCertDBHandle.ptr},
- {'subjectKeyID' : NSS.types.SECItem},
- {'keyIDGenerated' : ctypes.int},
- {'keyUsage' : ctypes.unsigned_int},
- {'rawKeyUsage' : ctypes.unsigned_int},
- {'keyUsagePresent' : ctypes.int},
- {'nsCertType' : ctypes.uint32_t},
- {'keepSession' : ctypes.int},
- {'timeOK' : ctypes.int},
- {'domainOK' : NSS.types.CERTOKDomainName.ptr},
- {'isperm' : ctypes.int},
- {'istemp' : ctypes.int},
- {'nickname' : ctypes.char.ptr},
- {'dbnickname' : ctypes.char.ptr},
- {'nssCertificate' : NSS.types.NSSCertificateStr.ptr},
- {'trust' : NSS.types.CERTCertTrust.ptr},
- {'referenceCount' : ctypes.int},
- {'subjectList' : NSS.types.CERTSubjectList.ptr},
- {'authKeyID' : NSS.types.CERTAuthKeyID.ptr},
- {'isRoot' : ctypes.int},
- {'options' : ctypes.voidptr_t},
- {'series' : ctypes.int},
- {'slot' : NSS.types.PK11SlotInfo.ptr},
- {'pkcs11ID' : ctypes.unsigned_long},
- {'ownSlot' : ctypes.int}]);
-
- NSS.types.CERTBasicConstraints = ctypes.StructType("CERTBasicConstraints",
- [{'isCA': ctypes.int},
- {'pathLenConstraint' : ctypes.int}]);
-
-
- NSS.lib = {
- SEC_OID_MD5 : 3,
- SEC_OID_SHA1 : 4,
- SEC_OID_X509_KEY_USAGE : 81,
- SEC_OID_NS_CERT_EXT_COMMENT : 75,
- CKM_RSA_PKCS_KEY_PAIR_GEN : 0,
- buffer : ctypes.ArrayType(ctypes.char),
- ubuffer : ctypes.ArrayType(ctypes.unsigned_char),
-
- // CERT_CertificateTemplate : sharedLib.declare("CERT_CertificateTemplate",
- // NSS.types.SEC_ASN1Template),
-
- NSS_Get_CERT_CertificateTemplate : sharedLib.declare("NSS_Get_CERT_CertificateTemplate",
- ctypes.default_abi,
- NSS.types.SEC_ASN1Template.ptr),
-
- PK11_HashBuf : sharedLib.declare("PK11_HashBuf",
- ctypes.default_abi,
- ctypes.int,
- ctypes.int,
- ctypes.unsigned_char.ptr,
- ctypes.unsigned_char.ptr,
- ctypes.int32_t),
-
- CERT_GetDefaultCertDB : sharedLib.declare("CERT_GetDefaultCertDB",
- ctypes.default_abi,
- NSS.types.CERTCertDBHandle.ptr),
-
- CERT_ChangeCertTrust : sharedLib.declare("CERT_ChangeCertTrust",
- ctypes.default_abi,
- ctypes.int32_t,
- NSS.types.CERTCertDBHandle.ptr,
- NSS.types.CERTCertificate.ptr,
- NSS.types.CERTCertTrust.ptr),
-
- CERT_FindCertByNickname : sharedLib.declare("CERT_FindCertByNickname",
- ctypes.default_abi,
- NSS.types.CERTCertificate.ptr,
- NSS.types.CERTCertDBHandle.ptr,
- ctypes.char.ptr),
-
- CERT_FindCertByDERCert : sharedLib.declare("CERT_FindCertByDERCert",
- ctypes.default_abi,
- NSS.types.CERTCertificate.ptr,
- NSS.types.CERTCertDBHandle.ptr,
- NSS.types.SECItem.ptr),
-
- CERT_VerifyCertNow : sharedLib.declare("CERT_VerifyCertNow",
- ctypes.default_abi,
- ctypes.int,
- NSS.types.CERTCertDBHandle.ptr,
- NSS.types.CERTCertificate.ptr,
- ctypes.int,
- ctypes.int,
- ctypes.voidptr_t),
-
- CERT_CertChainFromCert : sharedLib.declare("CERT_CertChainFromCert",
- ctypes.default_abi,
- NSS.types.CERTCertificateList.ptr,
- NSS.types.CERTCertificate.ptr,
- ctypes.int,
- ctypes.int),
-
- PK11_FindKeyByAnyCert : sharedLib.declare("PK11_FindKeyByAnyCert",
- ctypes.default_abi,
- NSS.types.SECKEYPrivateKey.ptr,
- NSS.types.CERTCertificate.ptr,
- ctypes.voidptr_t),
-
- PK11_GetInternalKeySlot : sharedLib.declare("PK11_GetInternalKeySlot",
- ctypes.default_abi,
- NSS.types.PK11SlotInfo.ptr),
-
- PK11_GetAllSlotsForCert : sharedLib.declare("PK11_GetAllSlotsForCert",
- ctypes.default_abi,
- NSS.types.PK11SlotList.ptr,
- NSS.types.CERTCertificate.ptr,
- ctypes.voidptr_t),
-
- PK11_GetTokenName : sharedLib.declare("PK11_GetTokenName",
- ctypes.default_abi,
- ctypes.char.ptr,
- NSS.types.PK11SlotInfo.ptr),
-
- PK11_GenerateKeyPair : sharedLib.declare("PK11_GenerateKeyPair",
- ctypes.default_abi,
- NSS.types.SECKEYPrivateKey.ptr,
- NSS.types.PK11SlotInfo.ptr,
- ctypes.int,
- NSS.types.PK11RSAGenParams.ptr,
- NSS.types.SECKEYPublicKey.ptr.ptr,
- ctypes.int,
- ctypes.int,
- ctypes.voidptr_t),
-
- PK11_SetPrivateKeyNickname : sharedLib.declare("PK11_SetPrivateKeyNickname",
- ctypes.default_abi,
- ctypes.int,
- NSS.types.SECKEYPrivateKey.ptr,
- ctypes.char.ptr),
-
- SEC_ASN1EncodeItem : sharedLib.declare("SEC_ASN1EncodeItem",
- ctypes.default_abi,
- NSS.types.SECItem.ptr,
- NSS.types.PLArenaPool.ptr,
- NSS.types.SECItem.ptr,
- ctypes.voidptr_t,
- NSS.types.SEC_ASN1Template.ptr),
-
- SEC_DerSignData : sharedLib.declare("SEC_DerSignData",
- ctypes.default_abi,
- ctypes.int,
- NSS.types.PLArenaPool.ptr,
- NSS.types.SECItem.ptr,
- ctypes.unsigned_char.ptr,
- ctypes.int,
- NSS.types.SECKEYPrivateKey.ptr,
- ctypes.int),
-
- SEC_GetSignatureAlgorithmOidTag : sharedLib.declare("SEC_GetSignatureAlgorithmOidTag",
- ctypes.default_abi,
- ctypes.int,
- ctypes.int,
- ctypes.int),
-
- SECOID_SetAlgorithmID : sharedLib.declare("SECOID_SetAlgorithmID",
- ctypes.default_abi,
- ctypes.int,
- NSS.types.PLArenaPool.ptr,
- NSS.types.SECAlgorithmID.ptr,
- ctypes.int,
- NSS.types.SECItem.ptr),
-
-
- CERT_Hexify : sharedLib.declare("CERT_Hexify",
- ctypes.default_abi,
- ctypes.char.ptr,
- NSS.types.SECItem.ptr,
- ctypes.int),
-
- CERT_AsciiToName : sharedLib.declare("CERT_AsciiToName",
- ctypes.default_abi,
- NSS.types.CERTName.ptr,
- ctypes.char.ptr),
-
- SECKEY_CreateSubjectPublicKeyInfo : sharedLib.declare("SECKEY_CreateSubjectPublicKeyInfo",
- ctypes.default_abi,
- NSS.types.CERTSubjectPublicKeyInfo.ptr,
- NSS.types.SECKEYPublicKey.ptr),
-
- CERT_CreateCertificateRequest : sharedLib.declare("CERT_CreateCertificateRequest",
- ctypes.default_abi,
- NSS.types.CERTCertificateRequest.ptr,
- NSS.types.CERTName.ptr,
- NSS.types.CERTSubjectPublicKeyInfo.ptr,
- NSS.types.SECItem.ptr.ptr),
-
- CERT_CreateCertificate : sharedLib.declare("CERT_CreateCertificate",
- ctypes.default_abi,
- NSS.types.CERTCertificate.ptr,
- ctypes.uint32_t,
- NSS.types.CERTName.ptr,
- NSS.types.CERTValidity.ptr,
- NSS.types.CERTCertificateRequest.ptr),
-
- CERT_DestroyCertificate : sharedLib.declare("CERT_DestroyCertificate",
- ctypes.default_abi,
- ctypes.int,
- NSS.types.CERTCertificate.ptr),
-
- CERT_DestroyCertificateList : sharedLib.declare("CERT_DestroyCertificateList",
- ctypes.default_abi,
- ctypes.int,
- NSS.types.CERTCertificateList.ptr),
-
- CERT_NewTempCertificate : sharedLib.declare("CERT_NewTempCertificate",
- ctypes.default_abi,
- NSS.types.CERTCertificate.ptr,
- NSS.types.CERTCertDBHandle.ptr,
- NSS.types.SECItem.ptr,
- ctypes.char.ptr,
- ctypes.int,
- ctypes.int),
-
- CERT_CreateValidity : sharedLib.declare("CERT_CreateValidity",
- ctypes.default_abi,
- NSS.types.CERTValidity.ptr,
- ctypes.int64_t,
- ctypes.int64_t),
-
- CERT_CertListFromCert : sharedLib.declare("CERT_CertListFromCert",
- ctypes.default_abi,
- NSS.types.CERTCertificateList.ptr,
- NSS.types.CERTCertificate.ptr),
-
- CERT_StartCertExtensions : sharedLib.declare("CERT_StartCertExtensions",
- ctypes.default_abi,
- ctypes.voidptr_t,
- NSS.types.CERTCertificate.ptr),
-
- CERT_AddExtension : sharedLib.declare("CERT_AddExtension",
- ctypes.default_abi,
- ctypes.int,
- ctypes.voidptr_t,
- ctypes.int,
- NSS.types.SECItem.ptr,
- ctypes.int,
- ctypes.int),
-
-
- CERT_EncodeBasicConstraintValue : sharedLib.declare("CERT_EncodeBasicConstraintValue",
- ctypes.default_abi,
- ctypes.int,
- NSS.types.PLArenaPool.ptr,
- NSS.types.CERTBasicConstraints.ptr,
- NSS.types.SECItem.ptr),
-
- CERT_EncodeAndAddBitStrExtension : sharedLib.declare("CERT_EncodeAndAddBitStrExtension",
- ctypes.default_abi,
- ctypes.int,
- ctypes.voidptr_t,
- ctypes.int,
- NSS.types.SECItem.ptr,
- ctypes.int),
-
- CERT_EncodeAltNameExtension : sharedLib.declare("CERT_EncodeAltNameExtension",
- ctypes.default_abi,
- ctypes.int,
- NSS.types.PLArenaPool.ptr,
- NSS.types.CERTGeneralName.ptr,
- NSS.types.SECItem.ptr),
-
- CERT_FinishExtensions : sharedLib.declare("CERT_FinishExtensions",
- ctypes.default_abi,
- ctypes.int,
- ctypes.voidptr_t),
-
- CERT_ImportCerts : sharedLib.declare("CERT_ImportCerts",
- ctypes.default_abi,
- ctypes.int,
- NSS.types.CERTCertDBHandle.ptr,
- ctypes.int,
- ctypes.int,
- NSS.types.SECItem.ptr.ptr,
- NSS.types.CERTCertificate.ptr.ptr.ptr,
- ctypes.int,
- ctypes.int,
- ctypes.char.ptr),
-
- PORT_NewArena : sharedLib.declare("PORT_NewArena",
- ctypes.default_abi,
- NSS.types.PLArenaPool.ptr,
- ctypes.uint32_t),
-
- PORT_ArenaZAlloc : sharedLib.declare("PORT_ArenaZAlloc",
- ctypes.default_abi,
- ctypes.voidptr_t,
- NSS.types.PLArenaPool.ptr,
- ctypes.int),
-
- PORT_FreeArena : sharedLib.declare("PORT_FreeArena",
- ctypes.default_abi,
- ctypes.void_t,
- NSS.types.PLArenaPool.ptr,
- ctypes.int),
-
- CERT_GetCommonName : sharedLib.declare("CERT_GetCommonName",
- ctypes.default_abi,
- ctypes.char.ptr,
- NSS.types.CERTName.ptr),
-
- CERT_GetOrgUnitName : sharedLib.declare("CERT_GetOrgUnitName",
- ctypes.default_abi,
- ctypes.char.ptr,
- NSS.types.CERTName.ptr),
-
- CERT_GetCertificateNames : sharedLib.declare("CERT_GetCertificateNames",
- ctypes.default_abi,
- NSS.types.CERTGeneralName.ptr,
- NSS.types.CERTCertificate.ptr,
- NSS.types.PLArenaPool.ptr),
-
- CERT_DecodeDERCertificate : sharedLib.declare("__CERT_DecodeDERCertificate",
- ctypes.default_abi,
- NSS.types.CERTCertificate.ptr,
- NSS.types.SECItem.ptr,
- ctypes.int,
- ctypes.char.ptr),
-
- CERT_FindCertExtension : sharedLib.declare("CERT_FindCertExtension",
- ctypes.default_abi,
- ctypes.int,
- NSS.types.CERTCertificate.ptr,
- ctypes.int,
- NSS.types.SECItem.ptr),
- };
-
-};
diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/code/Root-CAs.js b/data/extensions/https-everywhere@eff.org/chrome/content/code/Root-CAs.js
deleted file mode 100644
index 15372bc..0000000
--- a/data/extensions/https-everywhere@eff.org/chrome/content/code/Root-CAs.js
+++ /dev/null
@@ -1,348 +0,0 @@
-// These are concatenated md5 and sha1 fingerprints for the Firefox and
-// Microsoft root CAs as of Aug 2010
-
-var root_ca_hashes = {
- '00531D1D7201D423C820D00B6088C5D143DDB1FFF3B49B73831407F6BC8B975023D07C50' : true,
- '015A99C3D64FA94B3C3BB1A3AB274CBFFC219A76112F76C1C508833C9A2FA2BA84AC087A' : true,
- '019408DE857F8D806CE602CA89522848750251B2C632536F9D917279543C137CD721C6E0' : true,
- '0208EE8CAAB8387A6824DCB4E26A52337E206939CC5FA883635F64C750EBF5FDA9AEE653' : true,
- '0226C3015E08303743A9D07DCF37E6BF323C118E1BF7B8B65254E2E2100DD6029037F096' : true,
- '034287D7C1167D18AFA4703CB8312C3E4EF2E6670AC9B5091FE06BE0E5483EAAD6BA32D9' : true,
- '03DC08EEC4703FFA20E5E179E81AE7C59ED18028FB1E8A9701480A7890A59ACD73DFF871' : true,
- '044BFDC96CDA2A32857C598461468A64BEB5A995746B9EDF738B56E6DF437A77BE106B81' : true,
- '0468E9247E41CED76C441630703DDDB9AB16DD144ECDC0FC4BAAB62ECF0408896FDE52B7' : true,
- '068690F2195471FDDD3DE6EEA161CAFF7030AABF8432A800666CCCC42A887E42B7553E2B' : true,
- '069F6979166690021B8C8CA2C3076F3A627F8D7827656399D27D7F9044C9FEB3F33EFA9A' : true,
- '06F0171EB1E961ED7A363CA594A1374AFAAA27B8CAF5FDF5CDA98AC3378572E04CE8F2E0' : true,
- '06F9EBECCC569D88BA90F5BAB01AE00216D424FE9610E17519AF232BB68774E24144BE6E' : true,
- '076192047EA6B9CD5E6B007AE3BF1D0434D499426F9FC2BB27B075BAB682AAE5EFFCBA74' : true,
- '087C581F522B44B43B79CD01F8C5C3C995E6ADF8D77146024DD56A21B2E73FCDF23B35FF' : true,
- '0B092C1CD721866F94376FE6A7F3224D0409565B77DA582E6495AC0060A72354E64B0192' : true,
- '0C412F135BA054F596662D7ECD0E03F4DA79C1711150C23439AA2B0B0C62FD55B2F9F580' : true,
- '0C5ADD5AAE29F7A77679FA4151FEF035B865130BEDCA38D27F69929420770BED86EFBC10' : true,
- '0C7FDD6AF42AB9C89BBD207EA9DB5C3760D68974B5C2659E8A0FC1887C88D246691B182C' : true,
- '0CF89E17FCD403BDE68D9B3C0587FE8433A335C23CE8034B04E13DE5C48E791AEB8C3204' : true,
- '0E40A76CDE035D8FD10FE4D18DF96CA9A9E9780814375888F20519B06D2B0D2B6016907D' : true,
- '0EFA4BF7D760CD65F7A7068857986239D29F6C98BEFC6D986521543EE8BE56CEBC288CF3' : true,
- '0FA01300C3558AB7D37E2D04739EDE3C8B1A1106B8E26B232980FD652E6181376441FD11' : true,
- '100EADF35C841D8E035F2DC93937F552742CDF1594049CBF17A2046CC639BB3888E02E33' : true,
- '10FC635DF6263E0DF325BE5F79CD6767742C3192E607E424EB4549542BE1BBC53E6174E2' : true,
- '119279403CB18340E5AB664A679280DFA9628F4B98A91B4835BAD2C1463286BB66646A8C' : true,
- '14F108AD9DFA64E289E71CCFA8AD7D5E3921C115C15D0ECA5CCB5BC4F07D21D8050B566A' : true,
- '155EF5117AA2C1150E927E66FE3B84C3B38FECEC0B148AA686C3D00F01ECC8848E8085EB' : true,
- '15ACA5C2922D79BCE87FCB67ED02CF36E7B4F69D61EC9069DB7E90A7401A3CF47D4FE8EE' : true,
- '15B298A354704048703A375582C45AFA0048F8D37B153F6EA2798C323EF4F318A5624A9E' : true,
- '15EE9F5AA08528DF6BDD34A3A056D8307F8A77836BDC6D068F8B0737FCC5725413068CA4' : true,
- '160A1613C17FF01D887EE3D9E71261CCF88015D3F98479E1DA553D24FD42BA3F43886AEF' : true,
- '173574AF7B611CEBF4F93CE2EE40F9A2925A8F8D2C6D04E0665F596AFF22D863E8256F3F' : true,
- '1802B00127036A191B323B83DE9AA985D6BF7994F42BE5FA29DA0BD7587B591F47A44F22' : true,
- '1898C0D6E93AFCF9B0F50CF74B014417FAB7EE36972662FB2DB02AF6BF03FDE87C4B2F9B' : true,
- '18AE695D15CAB917673267D597B260C04BA7B9DDD68788E12FF852E1A024204BF286A8F6' : true,
- '1AD00CB9A6E68A3B6E95860C5B8CD8195A4D0E8B5FDCFDF64E7299A36C060DB222CA78E4' : true,
- '1B2E00CA2606903DADFE6F1568D36BB367650DF17E8E7E5B8240A4F4564BCFE23D69C6F0' : true,
- '1BD75F76734CC0DC98CA442BCC0F78DD31E2C52CE1089BEFFDDADB26DD7C782EBC4037BD' : true,
- '1C4BE2C62DB9AC3114F4400769CB1F4011C5B5F75552B011669C2E9717DE6D9BFF5FA810' : true,
- '1D3554048578B03F42424DBF20730A3F02FAF3E291435468607857694DF5E45B68851868' : true,
- '1D6496AF2D821A300BA0620D76BC53AA7FBB6ACD7E0AB438DAAF6FD50210D007C6C0829C' : true,
- '1E240EA0F876D785A3F5F8A1493D2EBAFD1ED1E2021B0B9F73E8EB75CE23436BBCC746EB' : true,
- '1E42950233926BB95FC07FDAD6B24BFCCCAB0EA04C2301D6697BDD379FCD12EB24E3949D' : true,
- '1E74C3863C0C35C53EC27FEF3CAA3CD9209900B63D955728140CD13622D8C687A4EB0085' : true,
- '200B4A7A88A7A942868A5F74567B880593E6AB220303B52328DCDA569EBAE4D1D1CCFB65' : true,
- '206BD68B4A8F48ABE488090DE5651A500CFD83DBAE44B9A0C8F676F3B570650B94B69DBF' : true,
- '2124A681C1D8F219AF4998E39DFE0BF46A174570A916FBE84453EED3D070A1D8DA442829' : true,
- '21BC82AB49C4133B4BB22B5C6B909C198BAF4C9B1DF02A92F7DA128EB91BACF498604B6F' : true,
- '21D84C822B990933A2EB14248D8E5FE84054DA6F1C3F4074ACED0FECCDDB79D153FB901D' : true,
- '21EFB85040393F756F27FEE3EA5870EBA59C9B10EC7357515ABB660C4D94F73B9E6E9272' : true,
- '222DA601EA7C0AF7F06C56433F7776D3FEB8C432DCF9769ACEAE3DD8908FFD288665647D' : true,
- '224D8F8AFCF735C2BB5734907B8B22163E2BF7F2031B96F38CE6C4D8A85D3E2D58476A0F' : true,
- '246DABD2F2EA4A66AE5BBCAE50AD6E56F9DD19266B2043F1FE4B3DCB0190AFF11F31A69D' : true,
- '2477D9A891D13BFA882DC2FFF8CD3393D8C5388AB7301B1B6ED47AE645253A6F9F1A2761' : true,
- '252AC6C5896839F9557202165EA39ED23C71D70E35A5DAA8B2E3812DC3677417F5990DF3' : true,
- '255BA669B87BF8780DC18FA6EAE47063FA0882595F9CA6A11ECCBEAF65C764C0CCC311D0' : true,
- '257ABA832EB6A20BDAFEF5020F08D7AD81968B3AEF1CDC70F5FA3269C292A3635BD123D3' : true,
- '259DCF5EB3259D95B93F00865F47943D43F9B110D5BAFD48225231B0D0082B372FEF9A54' : true,
- '266D2C1998B6706838505419EC9034600B77BEBBCB7AA24705DECC0FBD6A02FC7ABD9B52' : true,
- '27DE36FE72B70003009DF4F01E6C0424DE3F40BD5093D39B6C60F6DABC076201008976C9' : true,
- '27EC3947CDDA5AAFE29A016521A94CBB4D2378EC919539B5007F758F033B211EC54D8BCF' : true,
- '2A5D003739469475397B11A6F29341E13F85F2BB4A62B0B58BE1614ABB0D4631B4BEF8BA' : true,
- '2A954ECA79B2874573D92D90BAF99FB6A43489159A520F0D93D032CCAF37E7FE20A8B419' : true,
- '2B508718392D3BFFC3917F2D7DC08A97B19DD096DCD4E3E0FD676885505A672C438D4E9C' : true,
- '2B7020568682A018C807531228702172F17F6FB631DC99E3A3C87FFE1CF1811088D96033' : true,
- '2C20269DCB1A4A0085B5B75AAEC201378C96BAEBDD2B070748EE303266A0F3986E7CAE58' : true,
- '2C6F17A39562012065D2076EFCB83F6DB1EAC3E5B82476E9D50B1EC67D2CC11E12E0B491' : true,
- '2C8C175EB154AB9317B5365ADBD1C6F2A073E5C5BD43610D864C21130A855857CC9CEA46' : true,
- '2C8F9F661D1890B147269D8E86828CA96252DC40F71143A22FDE9EF7348E064251B18118' : true,
- '2CC2B0D5D622C52E901EF4633F0FBB324A058FDFD761DB21B0C2EE48579BE27F42A4DA1C' : true,
- '2DBBE525D3D165823AB70EFAE6EBE2E1B3EAC44776C9C81CEAF29D95B6CCA0081B67EC9D' : true,
- '2E03FDC5F5D72B9464C1BE8931F1169B96995C7711E8E52DF9E34BECEC67D3CBF1B6C4D2' : true,
- '30C908DDD73E63A4092814C74EB97E2CCFE4313DBA05B8A7C30063995A9EB7C247AD8FD5' : true,
- '30C9E71E6BE614EB65B216692031674D3BC0380B33C3F6A60C86152293D9DFF54B81C004' : true,
- '31853C62949763B9AAFD894EAF6FE0CF1F4914F7D874951DDDAE02C0BEFD3A2D82755185' : true,
- '324A4BBBC863699BBE749AC6DD1D4624AD7E1C28B064EF8F6003402014C3D0E3370EB58A' : true,
- '3327D16CFC9185FC8C7E98FA854EF305E70715F6F728365B5190E271DEE4C65EBEEACAF3' : true,
- '33B784F55F27D76827DE14DE122AED6F0747220199CE74B97CB03D79B264A2C855E933FF' : true,
- '343339FC6D033A8FA25385443270DEC45E5A168867BFFF00987D0B1DC2AB466C4264F956' : true,
- '34FCB8D036DB9E14B3C2F2DB8FE494C7379A197B418545350CA60369F33C2EAF474F2079' : true,
- '354895364A545A72968EE064CCEF2C8CC90D1BEA883DA7D117BE3B79F4210E1A5894A72D' : true,
- '370971C4AFEB7501AE636C3016BFD1E5A399F76F0CBF4C9DA55E4AC24E8960984B2905B6' : true,
- '3741491B18569A26F5ADC266FB40A54C4313BB96F1D5869BC14E6A92F6CFF63469878237' : true,
- '3785445332451F20F0F395E125C4434EF48B11BFDEABBE94542071E641DE6BBE882B40B9' : true,
- '37A56ED4B1258497B7FD56157AF9A200B435D4E1119D1C6690A749EBB394BD637BA782B7' : true,
- '3916AAB96A41E11469DF9E6C3B72DCB6879F4BEE05DF98583BE360D633E70D3FFE9871AF' : true,
- '3AB2DE229A209349F9EDC8D28AE7680D36863563FD5128C7BEA6F005CFE9B43668086CCE' : true,
- '3AE550B039BEC7463633A1FE823E8D943CBB5DE0FCD6397C0588E56697BD462ABDF95C76' : true,
- '3B0AE4BB416A84B39D2C575E6542BE478E1032E9245944F84791983EC9E829CB1059B4D3' : true,
- '3C4C25CC0A19CAEE6AEB55160086725F23E833233E7D0CC92B7C4279AC19C2F474D604CA' : true,
- '3D4129CB1EAA1174CD5DB062AFB0435BDDE1D2A901802E1D875E84B3807E4BB1FD994134' : true,
- '3E455215095192E1B75D379FB187298AB1BC968BD4F49D622AA89A81F2150152A41D829C' : true,
- '3E80175BADD77C104BF941B0CF1642B000EA522C8A9C06AA3ECCE0B4FA6CDC21D92E8099' : true,
- '3F459639E25087F7BBFE980C3C2098E62AC8D58B57CEBF2F49AFF2FC768F511462907A41' : true,
- '400125068D21436A0E43009CE743F3D5F9CD0E2CDA7624C18FBDF0F0ABB645B8F7FED57A' : true,
- '410352DC0FF7501B16F0028EBA6F45C5DAC9024F54D8F6DF94935FB1732638CA6AD77C13' : true,
- '41B807F7A8D109EEB49A8E704DFC1B787A74410FB0CD5C972A364B71BF031D88A6510E9E' : true,
- '4265CABE019A9A4CA98C4149CDC0D57F293621028B20ED02F566C532D1D6ED909F45002F' : true,
- '42769768CFA6B43824AAA11BF267DECA4178AB4CBFCE7B4102ACDAC4933E6FF50DCF715C' : true,
- '4281A0E21CE35510DE558942659622E6E0B4322EB2F6A568B654538448184A5036874384' : true,
- '429BD669C6D445AD2E81511D355A89624F555CE20DCD3364E0DC7C41EFDD40F50356C122' : true,
- '45E1A572C5A93664409EF5E45884678C6B2F34AD8958BE62FDB06B5CCEBB9DD94F4E39F3' : true,
- '45F750114EC5ADBD53688663EC7B6AE1C09AB0C8AD7114714ED5E21A5A276ADCD5E7EFCB' : true,
- '468C210EAB92214659DBA6DB0061DE265A5A4DAF7861267C4B1F1E67586BAE6ED4FEB93F' : true,
- '48D11E627801C26E4369A42CEE130AB564902AD7277AF3E32CD8CC1DC79DE1FD7F8069EA' : true,
- '4963AE27F4D5953DD8DB2486B89C0753D3C063F219ED073E34AD5D750B327629FFD59AF2' : true,
- '497904B0EB8719AC47B0BC11519B74D0D1EB23A46D17D68FD92564C2F1F1601764D8E349' : true,
- '49EFA6A1F0DE8EA76AEE5B7D1E5FC4463E42A18706BD0C9CCF594750D2E4D6AB0048FDC4' : true,
- '4B1C568CA0E8C79E1EF5EE32939965FE4C95A9902ABE0777CED18D6ACCC3372D2748381E' : true,
- '4B6771BE33B90DB64B3A400187F08B1F7AC5FFF8DCBC5583176877073BF751735E9BD358' : true,
- '4B798DD41D0392AA51EE04E5906F474954F9C163759F19045121A319F64C2D0555B7E073' : true,
- '4BE2C99196650CF40E5A9392A00AFEB28CF427FD790C3AD166068DE81E57EFBB932272D4' : true,
- '4C5641E50DBB2BE8CAA3ED1808AD43390483ED3399AC3608058722EDBC5E4600E3BEF9D7' : true,
- '4D56677ECCE6457259B74F511172E169C0DB578157E9EE82B5917DF0DD6D82EE9039C4E2' : true,
- '4FEBF1F070C280635D589FDA123CA9C4E392512F0ACFF505DFF6DE067F7537E165EA574B' : true,
- '50193E2FE8B6F4055449F3AEC98B3E1947AFB915CDA26D82467B97FA42914468726138DD' : true,
- '5186E81FBCB1C371B51810DB5FDCF62078E9DD0650624DB9CB36B50767F209B843BE15B3' : true,
- '556EBEF54C1D7C0360C43418BC9649C1245C97DF7514E7CF2DF8BE72AE957B9E04741E85' : true,
- '565FAA80611217F66721E62B6D61568E8025EFF46E70C8D472246584FE403B8A8D6ADBF5' : true,
- '58EB470764D62CBAE29B96552B9700B56A6F2A8B6E2615088DF59CD24C402418AE42A3F1' : true,
- '59736628512B98B410FF7D06FA22D6C8A0F8DB3F0BF417693B282EB74A6AD86DF9D448A3' : true,
- '5A11B922850289E1C3F22CE14EC101844B421F7515F6AE8A6ECEF97F6982A400A4D9224E' : true,
- '5B6F532CBB8188FA6C042C325DA56B967CA04FD8064C1CAA32A37AA94375038E8DF8DDC0' : true,
- '5B9EFD3B6035EA688E52FE1319144AA36B81446A5CDDF474A0F800FFBE69FD0DB6287516' : true,
- '5C48DCF74272EC56946D1CCC713580756631BF9EF74F9EB6C9D5A60CBA6ABED1F7BDEF7B' : true,
- '5E397BDDF8BAEC82E9AC62BA0C54002BCA3AFBCF1240364B44B216208880483919937CF7' : true,
- '5E809E845A0E650B1702F355182A3ED7786A74AC76AB147F9C6A3050BA9EA87EFE9ACE3C' : true,
- '5F944A7322B8F7D131EC5939F78EFE6E9FC796E8F8524F863AE1496D381242105F1B78F5' : true,
- '60847C5ACEDB0CD4CBA7E9FE02C6A9C0101DFA3FD50BCBBB9BB5600C1955A41AF4733A04' : true,
- '649CEF2E44FCC68F5207D051738FCB3DDA40188B9189A3EDEEAEDA97FE2F9DF5B7D18A41' : true,
- '65295911BB8F5166890D47824002C5AFC4674DDC6CE2967FF9C92E072EF8E8A7FBD6A131' : true,
- '6558AB15AD576C1EA8A7B569ACBFFFEBE5DF743CB601C49B9843DCAB8CE86A81109FE48E' : true,
- '67AC0D773011DED143AE7B737190BCA9ED8DC8386C4886AEEE079158AAC3BFE658E394B4' : true,
- '67CB9DC013248A829BB2171ED11BECD4D23209AD23D314232174E40D7F9D62139786633A' : true,
- '689B17C654E0E0E099551642F75A86D8027268293E5F5D17AAA4B3C3E6361E1F92575EAA' : true,
- '6960ECBE8C94D76E6F2EC4782F55F08397226AAE4A7A64A59BD16787F27F841C0A001FD0' : true,
- '6C397DA40E5559B23FD641B11250DE435F3B8CF2F810B37D78B4CEEC1919C37334B9C774' : true,
- '6CC9A76E47F10CE3533B784C4DC26AC5B72FFF92D2CE43DE0A8D4C548C503726A81E2B93' : true,
- '6D38C49B22244CA3A8B3A09345E157FA89C32E6B524E4D65388B9ECEDC637134ED4193A3' : true,
- '70B57C4881953E80DC289BBAEF1EE4854072BA31FEC351438480F62E6CB95508461EAB2F' : true,
- '711F0E21E7AAEA323A6623D3AB50D66996974CD6B663A7184526B1D648AD815CF51E801A' : true,
- '71AA6AAF1FA5C0D50E90D40BF6AADFCC55C86F7414AC8BDD6814F4D86AF15F3710E104D0' : true,
- '71E265FBCD7B0B845BE3BCD76320C598CFF810FB2C4FFC0156BFE1E1FABCB418C68D31C5' : true,
- '72E44A87E369408077EABCE3F4FFF0E15F43E5B1BFF8788CAC1CC7CA4A9AC6222BCC34C6' : true,
- '733A747AECBBA396A6C2E4E2C89BC0C3AEC5FB3FC8E1BFC4E54F03075A9AE800B7F7B6FA' : true,
- '739DD35FC63C95FEC6ED89E58208DD897FB9E2C995C97A939F9E81A07AEA9B4D70463496' : true,
- '74014A91B108C458CE47CDF0DD11530885A408C09C193E5D51587DCDD61330FD8CDE37BF' : true,
- '747B820343F0009E6BB3EC47BF85A5934463C531D7CCC1006794612BB656D3BF8257846F' : true,
- '74A82C81432B35609B78056B58F36582CFF360F524CB20F1FEAD89006F7F586A285B2D5B' : true,
- '770D19B121FD00429C3E0CA5DD0B028E25019019CFFBD9991CB76825748D945F30939542' : true,
- '774AF42C9DB027B747B515E4C762F0FCDF646DCB7B0FD3A96AEE88C64E2D676711FF9D5F' : true,
- '782A02DFDB2E14D5A75F0ADFB68E9C5D4F65566336DB6598581D584A596C87934D5F2AB4' : true,
- '78A5FB104BE4632ED26BFBF2B6C24B8EEC0C3716EA9EDFADD35DFBD55608E60A05D3CBF3' : true,
- '79E4A9840D7D3A96D7C04FE2434C892EA8985D3A65E5E5C4B2D7D66D40C6DD2FB19C5436' : true,
- '7A79544D07923B5BFF41F00EC739A298C060ED44CBD881BD0EF86C0BA287DDCF8167478C' : true,
- '7BB508999A8C18BF85277D0EAEDAB2AB24BA6D6C8A5B5837A48DB5FAE919EA675C94D217' : true,
- '7C62FF749D31535E684AD578AA1EBF239F744E9F2B4DBAEC0F312C50B6563B8E2D93C311' : true,
- '7CA50FF85B9A7D6D30AE545AE342A28A59AF82799186C7B47507CBCF035746EB04DDB716' : true,
- '7D86908F5BF1F240C0F73D62B5A4A93B72997913EC9B0DAE65D1B6D7B24A76A3AEC2EE16' : true,
- '7E234E5BA7A5B425E90007741162AED67F8AB0CFD051876A66F3360F47C88D8CD335FC74' : true,
- '7F667A71D3EB6978209A51149D83DA20BE36A4562FB2EE05DBB3D32323ADF445084ED656' : true,
- '803ABC22C1E6FB8D9B3B274A321B9A0147BEABC922EAE80E78783462A79F45C254FDE68B' : true,
- '8135B9FBFB12CA186936EBAE6978A1F1DCBB9EB7194BC47205C111752986835B53CAE4F8' : true,
- '81D6ED354F1F26D031D040DD8AE5810DE0925E18C7765E22DABD9427529DA6AF4E066428' : true,
- '8212F789E10B9160A4B6229F9468119268ED18B309CD5291C0D3357C1D1141BF883866B1' : true,
- '824AD493004D66B6A32CA77B3536CF0B687EC17E0602E3CD3F7DFBD7E28D57A0199A3F44' : true,
- '8292BA5BEFCD8A6FA63D55F984F6D6B7F9B5B632455F9CBEEC575F80DCE96E2CC7B278B7' : true,
- '84901D95304956FC4181F045D776C46B439E525F5A6A47C32CEBC45C63ED39317CE5F4DF' : true,
- '852FF4764CD5426CCB5E7DF717E835BD4EFCED9C6BDD0C985CA3C7D253063C5BE6FC620C' : true,
- '85CA765A1BD16822DCA22312CAC680345BCDCDCC66F6DCE4441FE37D5CC3134C46F47038' : true,
- '86386D5E49636C855CDB6DDC94B7D0F7ACED5F6553FD25CE015F1F7A483B6A749F6178C6' : true,
- '86420509BCA79DEC1DF32E0EBAD81DD01D8259CA2127C3CBC16CD932F62C65298CA88712' : true,
- '86ACDE2BC56DC3D98C2888D38D16131ECE6A64A309E42FBBD9851C453E6409EAE87D60F1' : true,
- '86EF8E319D9F8569A2A41A127168BA1B90DECE77F8C825340E62EBD635E1BE20CF7327DD' : true,
- '8714AB83C4041BF193C750E2D721EBEF30779E9315022E94856A3FF8BCF815B082F9AEFD' : true,
- '879055F2CE31153C33D927C876E37DE13070F8833E4AA6803E09A646AE3F7D8AE1FD1654' : true,
- '87CE0B7B2A0E4900E158719B37A893720563B8630D62D75ABBC8AB1E4BDFB5A899B24D43' : true,
- '882C8C52B8A23CF3F7BB03EAAEAC420B74207441729CDD92EC7931D823108DC28192E2BB' : true,
- '8949548CC8689A8329ECDC067321AB97A60F34C8626C81F68BF77DA9F667588A903F7D36' : true,
- '8956AA4D441E59D805A1886DEAC828B26372C49DA9FFF051B8B5C7D4E5AAE30384024B9C' : true,
- '8BCA525F7553D02C6F630D8F882E1CD78EB03FC3CF7BB292866268B751223DB5103405CB' : true,
- '8CCADC0B22CEF5BE72AC411A11A8D81291C6D6EE3E8AC86384E548C299295C756C817B81' : true,
- '8CD79FEBC7B8144C5478A7903BA935671F55E8839BAC30728BE7108EDE7B0BB0D3298224' : true,
- '8D26FF2F316D5929DDE636A7E2CE6425720FC15DDC27D456D098FABF3CDD78D31EF5A8DA' : true,
- '8D639B56C114E4EE9A128586119082A3D2441AA8C203AECAA96E501F124D52B68FE4C375' : true,
- '8D7251DBA03ACF2077DFF265065EDFEFC8C25F169EF85074D5BEE8CDA2D43CAEE75FD257' : true,
- '8EADB501AA4D81E48C1DD1E1140095193679CA35668772304D30A5FB873B0FA77BB70D54' : true,
- '8F5D770627C4983C5B9378E7D77D9BCC7E784A101C8265CC2DE1F16D47B440CAD90A1945' : true,
- '8F91E7EEE3FCDA86CAFCDC70EDB7B70C8250BED5A214433A66377CBC10EF83F669DA3A67' : true,
- '911B3F6ECD9EABEE07FE1F71D2B36127E19FE30E8B84609E809B170D72A8C5BA6E1409BD' : true,
- '91DE0625ABDAFD32170CBB25172A84672796BAE63F1801E277261BA0D77770028F20EEE4' : true,
- '91F4035520A1F8632C62DEACFB611C8E21FCBD8E7F6CAF051BD1B343ECA8E76147F20F8A' : true,
- '9265588BA21A317273685CB4A57A0748E621F3354379059A4B68309D8A2F74221587EC79' : true,
- '932A3EF6FD23690D7120D42B47992BA6CBA1C5F8B0E35EB8B94512D3F934A2E90610D336' : true,
- '937F901CED846717A4655F9BCB3002978781C25A96BDC2FB4C65064FF9390B26048A0E01' : true,
- '93C28E117BD4F30319BD2875134A454AAB48F333DB04ABB9C072DA5B0CC1D057F0369B46' : true,
- '93EB36130BC154F13E7505E5E01CD4375F4E1FCF31B7913B850B54F6E5FF501A2B6FC6CF' : true,
- '93F1AD340B2BE7A85460E2738CA49431705D2B4565C7047A540694A79AF7ABB842BDC161' : true,
- '9414777E3E5EFD8F30BD41B0CFE7D03075E0ABB6138512271C04F85FDDDE38E4B7242EFE' : true,
- '96897D61D1552B27E25A39B42A6C446F8EFDCABC93E61E925D4D1DED181A4320A467A139' : true,
- '9760E8575FD35047E5430C94368AB06290AEA26985FF14804C434952ECE9608477AF556F' : true,
- '978FC66B3B3E40857724750B76BB55F8B5D303BF8682E152919D83F184ED05F1DCE5370C' : true,
- '9A771918ED96CFDF1BB70EF58DB9882ECF74BFFF9B86815B08335440363E87B6B6F0BF73' : true,
- '9AAEF722F533FB4EEC0A249DC63D7D255E997CA5945AAB75FFD14804A974BF2AE1DFE7E1' : true,
- '9B340D1A315B97462698BCA6136A71969E6CEB179185A29EC6060CA53E1974AF94AF59D4' : true,
- '9D666ACCFFD5F543B4BF8C16D12BA8998939576E178DF705780FCC5EC84F84F6253A4893' : true,
- '9DFBF9ACED893322F428488325235BE0A69A91FD057F136A42630BB1760D2D51120C1650' : true,
- '9E80FF78010C2EC136BDFE96906E08F34ABDEEEC950D359C89AEC752A12C5B29F6D6AA0C' : true,
- '9F6C1F0F07AC1921F915BBD5C72CD82AF5C27CF5FFF3029ACF1A1A4BEC7EE1964C77D784' : true,
- '9FDDDBABFF8EFF45215FF06C9D8FFE2B9656CD7B57969895D0E141466806FBB8C6110687' : true,
- 'A10B44B3CA10D8006E9D0FD80F920AD1B80186D1EB9C86A54104CF3054F34C52B7E558C6' : true,
- 'A208E4B33EEFDE084B60D0BF7952498D8CC4307BC60755E7B22DD9F7FEA245936C7CF288' : true,
- 'A2339B4C747873D46CE7C1F38DCB5CE985371CA6E550143DCE2803471BDE3A09E8F8770F' : true,
- 'A26F53B7EE40DB4A68E7FA18D9104B7269BD8CF49CD300FB592E1793CA556AF3ECAA35FB' : true,
- 'A33D88FE161BDDF95C9F1A7FD8C89008A3E31E20B2E46A328520472D0CDE9523E7260C6D' : true,
- 'A37D2C27E4A7F3AA5F75D4C49264026AB6AF5BE5F878A00114C3D7FEF8C775C34CCD17B6' : true,
- 'A3EC750F2E88DFFA48014E0B5C486FFB37F76DE6077C90C5B13E931AB74110B4F2E49A27' : true,
- 'A66B6090239B3F2DBB986FD6A7190D46E0AB059420725493056062023670F7CD2EFC6666' : true,
- 'A771FD26FC3CE540F19906EBC1936DE9E619D25B380B7B13FDA33E8A58CD82D8A88E0515' : true,
- 'A7F2E41606411150306B9CE3B49CB0C9E12DFB4B41D7D9C32B30514BAC1D81D8385E2D46' : true,
- 'A80D6F3978B9436D77426D985ACC23CAD6DAA8208D09D2154D24B52FCB346EB258B28A58' : true,
- 'A8EDDEEB938866D82FC3BD1DBE45BE4D7639C71847E151B5C7EA01C758FBF12ABA298F7A' : true,
- 'A923759BBA49366E31C2DBF2E766BA87317A2AD07F2B335EF5A1C34E4B57E8B7D8F1FCA6' : true,
- 'A981C0B73A9250BC91A521FF3D47879FCB658264EA8CDA186E1752FB52C397367EA387BE' : true,
- 'AA088FF6F97BB7F2B1A71E9BEAEABD79CF9E876DD3EBFC422697A3B5A37AA076A9062348' : true,
- 'AA8E5DD9F8DB0A58B78D26876C823555409D4BD917B55C27B69B64CB9822440DCD09B889' : true,
- 'AABFBF6497DA981D6FC6083A957033CA394FF6850B06BE52E51856CC10E180E882B385CC' : true,
- 'AB57A65B7D428219B5D85826285EFDFFB12E13634586A46F1AB2606837582DC4ACFD9497' : true,
- 'ABAB8D2DB740E5973D2FF2A63BDA6A05C18211328A92B3B23809B9B5E2740A07FB12EB5E' : true,
- 'ABBFEAE36B29A6CCA6783599EFAD2B802F173F7DE99667AFA57AF80AA2D1B12FAC830338' : true,
- 'ACB694A59C17E0D791529BB19706A6E4D4DE20D05E66FC53FE1A50882C78DB2852CAE474' : true,
- 'AD8E0F9E016BA0C574D50CD368654F1ECFDEFE102FDA05BBE4C78D2E4423589005B2571D' : true,
- 'AFB8336E7CDDC60264AD58FC0D4F7BCFBC7B3C6FEF26B9F7AB10D7A1F6B67C5ED2A12D3D' : true,
- 'B001EE14D9AF291894768EF169332A846E3A55A4190C195C93843CC0DB722E313061F0B1' : true,
- 'B147BC1857D118A0782DEC71E82A9573204285DCF7EB764195578E136BD4B7D1E98E46A5' : true,
- 'B39C25B1C32E32538015309D4D02773E6782AAE0EDEEE21A5839D3C0CD14680A4F60142A' : true,
- 'B3A53E77216DAC4AC0C9FBD5413DCA0658119F0E128287EA50FDD987456F4F78DCFAD6D4' : true,
- 'B44ADBE85916461E5AD86EDA064352622964B686135B5DFDDD3253A89BBC24D74B08C64D' : true,
- 'B465220A7CADDF41B7D544D5ADFA9A75BC9219DDC98E14BF1A781F6E280B04C27F902712' : true,
- 'B4819E89AC1724FD2A4285271D0C2B5D20CB594FB4EDD895763FD5254E959A6674C6EEB2' : true,
- 'B5E83436C910445848706D2E83D4B805039EEDB80BE7A03C6953893B20D2D9323A4C2AFD' : true,
- 'B75274E292B48093F275E4CCD7F2EA263BC49F48F8F373A09C1EBDF85BB1C365C7D811B3' : true,
- 'B774CD487C5F9A0D3BF3FE66F41B3DFA5B4E0EC28EBD8292A51782241281AD9FEEDD4E4C' : true,
- 'B7B0D1EC1A033ECEA91511CCB16FB2AEE3D73606996CDFEF61FA04C335E98EA96104264A' : true,
- 'B8089AF003CC1B0DC86C0B76A1756423A0A1AB90C9FC847B3B1261E8977D5FD32261D3CC' : true,
- 'B816334C4C4CF2D8D34D06B4A65B4003838E30F77FDD14AA385ED145009C0E2236494FAA' : true,
- 'B8D312034E8C0C5A47C9B6C59E5B97FD0560A2C738FF98D1172A94FE45FB8A47D665371E' : true,
- 'BA21EA20D6DDDB8FC1578B40ADA1FCFC801D62D07B449D5C5C035C98EA61FA443C2A58FE' : true,
- 'BA926442161FCBA116481AF6405C59870456F23D1E9C43AECB0D807F1C0647551A05F456' : true,
- 'BC6C5133A7E9D366635415721B2192935922A1E15AEA163521F898396A4646B0441B0FA9' : true,
- 'BD8ACE34A8AE6148E85EC87A1CE8CCBFD2EDF88B41B6FE01461D6E2834EC7C8F6C77721E' : true,
- 'BDD6F58A7C3CC4A6F934CCC38961F6B2CABB51672400588E6419F1D40878D0403AA20264' : true,
- 'BE395ABE078AB1121725CC1D46343CB2DE990CED99E0431F60EDC3937E7CD5BF0ED9E5FA' : true,
- 'BF6059A35BBAF6A77642DA6F1A7B50CF5D989CDB159611365165641B560FDBEA2AC23EF1' : true,
- 'BFB5E77D3DEA6F1DF08A50BC8C1CFA1DE4554333CA390E128B8BF81D90B70F4002D1D6E9' : true,
- 'C1623E23C582739C03594B2BE977497F2AB628485E78FBF3AD9E7910DD6BDF99722C96E5' : true,
- 'C1D43E07AEEBECFD7589E67EA84CEBCD76B76096DD145629AC7585D37063C1BC47861C8B' : true,
- 'C1D951C084B86A75E82FD7D65F7EAC460B972C9EA6E7CC58D93B20BF71EC412E7209FABF' : true,
- 'C22A59ABCF152F4CF7E631A316AE840C9158C5EF987301A8903CFDAB03D72DA1D88909C9' : true,
- 'C2DBAB8E9652C5EEAEF25500896D55953913853E45C439A2DA718CDFB6F3E033E04FEE71' : true,
- 'C45D0E48B6AC28304E0ABCF938168757D8A6332CE0036FB185F6634F7D6A066526322827' : true,
- 'C463AB44201C36E437C05F279D0F6F6E97E2E99636A547554F838FBA38B82E74F89A830A' : true,
- 'C4D7F0B2A3C57D6167F004CD43D3BA5890DEDE9E4C4E9F6FD88617579DD391BC65A68964' : true,
- 'C570C4A2ED53780CC810538164CBD01D23E594945195F2414803B4D564D2A3A3F5D88B8C' : true,
- 'C5A1B7FF73DDD6D7343218DFFC3CAD8806083F593F15A104A069A46BA903D006B7970991' : true,
- 'C5DFB849CA051355EE2DBA1AC33EB028D69B561148F01C77C54578C10926DF5B856976AD' : true,
- 'C5E67BBF06D04F43EDC47A658AFB6B19339B6B1450249B557A01877284D9E02FC3D2D8E9' : true,
- 'C69F6D5CB379B00389CBF03FA4C09F8AEF2DACCBEABB682D32CE4ABD6CB90025236C07BC' : true,
- 'C7BD11D6918A3582C53666017C6F4779634C3B0230CF1B78B4569FECF2C04A8652EFEF0E' : true,
- 'C86E97F335A729144782892391A6BEC84A3F8D6BDC0E1ECFCD72E377DEF2D7FF92C19BC7' : true,
- 'C91962D0DA7E1020FCA4CD0380872DF551A44C28F313E3F9CB5E7C0A1E0E0DD2843758AE' : true,
- 'C9982777281E3D0E153C8400B88503E656E0FAC03B8F18235518E5D311CAE8C24331AB66' : true,
- 'CA3DD368F1035CD032FAB82B59E85ADB97817950D81C9670CC34D809CF794431367EF474' : true,
- 'CB17E431673EE209FE455793F30AFA1C4EB6D578499B1CCF5F581EAD56BE3D9B6744A5E5' : true,
- 'CBBDC3682DB3CB1859D32952E8C66489C9321DE6B5A82666CF6971A18A56F2D3A8675602' : true,
- 'CC4DAEFB306BD838FE50EB86614BD2269C615C4D4D85103A5326C24DBAEAE4A2D2D5CC97' : true,
- 'CD3B3D625B09B80936879E122F7164BA67EB337B684CEB0EC2B0760AB488278CDD9597DD' : true,
- 'CD68B6A7C7C4CE75E01D4F5744619209132D0D45534B6997CDB2D5C339E25576609B5CC6' : true,
- 'CD996CDB2AC296155ABF879EAEA5EE93EE29D6EA98E632C6E527E0906F0280688BDF44DC' : true,
- 'CDF439F3B51850D73EA4C591A03E214BE1A45B141A21DA1A79F41A42A961D669CD0634C1' : true,
- 'CE78335C5978016E18EAB936A0B92E23AE5083ED7CF45CBC8F61C621FE685D794221156E' : true,
- 'CF8F3B62A3CACA711BA3E1CB4857351F5D003860F002ED829DEAA41868F788186D62127F' : true,
- 'CFF4270DD4EDDC6516496D3DDABF6EDE3A44735AE581901F248661461E3B9CC45FF53A1B' : true,
- 'D2EDEE7992F78272180BFED98BEC13D8A7F8390BA57705096FD36941D42E7198C6D4D9D5' : true,
- 'D35376E3CE58C5B0F29FF42A05F0A1F2211165CA379FBB5ED801E31C430A62AAC109BCB4' : true,
- 'D3D9BDAE9FAC6724B3C81B52E1B9A9BD4A65D5F41DEF39B8B8904A4AD3648133CFC7A1D1' : true,
- 'D3F3A616C0FA6B1D59B12D964D0E112E74F8A3C3EFE7B390064B83903C21646020E5DFCE' : true,
- 'D474DE575C39B2D39C8583C5C065498A5FB7EE0633E259DBAD0C4C9AE6D38F1A61C7DC25' : true,
- 'D480656824F9892228DBF5A49A178F14016897E1A0B8F2C3B134665C20A727B7A158E28F' : true,
- 'D59788DA6416E71D664AA6EA37FC7ADCEC93DE083C93D933A986B3D5CDE25ACB2FEECF8E' : true,
- 'D5BEFFB5EE826CF0E2578EA7E5346F03D904080A4929C838E9F185ECF7A22DEF99342407' : true,
- 'D5E98140C51869FC462C8975620FAA7807E032E020B72C3F192F0628A2593A19A70F069E' : true,
- 'D63981C6527E9669FCFCCA66ED05F296B51C067CEE2B0C3DF855AB2D92F4FE39D4E70F0E' : true,
- 'D6A5C3ED5DDD3E00C13D87921F1D3FE4B31EB1B740E36C8402DADC37D44DF5D4674952F9' : true,
- 'D6ED3CCAE2660FAF10430D779B0409BF85B5FF679B0C79961FC86E4422004613DB179284' : true,
- 'D7343DEF1D270928E131025B132BDDF7B172B1A56D95F91FE50287E14D37EA6A4463768A' : true,
- 'D87E32EF69F8BF72031D4082E8A775AF42EFDDE6BFF35ED0BAE6ACDD204C50AE86C4F4FA' : true,
- 'DA26B6E6C7C2F7B79E4659B3577718653E84D3BCC544C0F6FA19435C851F3F2FCBA8E814' : true,
- 'DB233DF969FA4BB9958044735E7D4183273EE12457FDC4F90C55E82B56167F62F532E547' : true,
- 'DBC8F2272EB1EA6A29235DFE563E33DFC8EC8C879269CB4BAB39E98D7E5767F31495739D' : true,
- 'DC32C3A76D2557C768099DEA2DA9A2D18782C6C304353BCFD29692D2593E7D44D934FF11' : true,
- 'DC6D6FAF897CDD17332FB5BA9035E9CE7F88CD7223F3C813818C994614A89C99FA3B5247' : true,
- 'DD753F56BFBBC5A17A1553C690F9FBCC24A40A1F573643A67F0A4B0749F6A22BF28ABB6B' : true,
- 'DF0DBC7CC836B77699A1ABF0D20F896A342CD9D3062DA48C346965297F081EBC2EF68FDC' : true,
- 'DF168A83EA83845DB96501C6A65D193EDBAC3C7AA4254DA1AA5CAAD68468CB88EEDDEEA8' : true,
- 'DF3C735981E7395081044C34A2CBB37B61573A11DF0ED87ED5926522EAD056D744B32371' : true,
- 'DFF28073CCF1E66173FCF542E9C57CEE99A69BE61AFE886B4D2B82007CB854FC317E1539' : true,
- 'E006A1C97DCFC9FC0DC0567596D862139BAAE59F56EE21CB435ABE2593DFA7F040D11DCB' : true,
- 'E14B5273D71BDB9330E5BDE4096EBEFB216B2A29E62A00CE820146D8244141B92511B279' : true,
- 'E1C07EA0AABBD4B77B84C228117808A7CDD4EEAE6000AC7F40C3802C171E30148030C072' : true,
- 'E2D52023ECEEB872E12B5D296FFA43DA9BACF3B664EAC5A17BED08437C72E4ACDA12F7E7' : true,
- 'E2D8F867F4509435FC5E05FC822295C30446C8BB9A6983C95C8A2E5464687C1115AAB74A' : true,
- 'E2F8E080D0083F1EC1E9D23F8069AE06C73026E325FE21916B55C4B53A56B13DCAF3D625' : true,
- 'E60BD2C9CA2D88DB1A710E4B78EB024140E78C1D523D1CD9954FAC1A1AB3BD3CBAA15BFC' : true,
- 'E77ADCB11F6E061F746C591627C34BC07454535C24A3A758207E3E3ED324F816FB211649' : true,
- 'E8CC9FB09B40C51F4FBA7421F952857A688B6EB807E8EDA5C7B17C4393D0795F0FAE155F' : true,
- 'EBB04F1D3A2E372F1DDA6E27D6B680FA18F7C1FCC3090203FD5BAA2F861A754976C8DD25' : true,
- 'EBF59D290D61F9421F7CC2BA6DE3150928903A635B5280FAE6774C0B6DA7D6BAA64AF2E8' : true,
- 'EC407D2B765267052CEAF23A4F65F0D8A5EC73D48C34FCBEF1005AEB85843524BBFAB727' : true,
- 'ED41F58C50C52B9C73E6EE6CEBC2A8261B4B396126276B6491A2686DD70243212D1F1D96' : true,
- 'EE2931BC327E9AE6E8B5F751B4347190503006091D97D4F5AE39F7CBE7927D7D652D3431' : true,
- 'EE7A41E0CF757D889280A21A9A7BA157679A4F81FC705DDEC419778DD2EBD875F4C242C6' : true,
- 'EEFE6169656EF89CC62AF4D72B63EFA29FAD91A6CE6AC6C50047C44EC9D4A50D92D84979' : true,
- 'EF5AF133EFF1CDBB5102EE12144B96C4A1DB6393916F17E4185509400415C70240B0AE6B' : true,
- 'F058C503826717AB8FDA0310278E19C2CB44A097857C45FA187ED952086CB9841F2D51B5' : true,
- 'F096B62FC510D5678E832532E85E2EE52388C9D371CC9E963DFF7D3CA7CEFCD625EC190D' : true,
- 'F09E639376A595BC1861F19BFBD364DD80BF3DE9A41D768D194B293C85632CDBC8EA8CF7' : true,
- 'F16A2218C9CDDFCE821D1DB7785CA9A57998A308E14D6585E6C21E153A719FBA5AD34AD9' : true,
- 'F1BC636A54E0B527F5CDE71AE34D6E4A36B12B49F9819ED74C9EBC380FC6568F5DACB2F7' : true,
- 'F20598E5964BBE5D55181B55B388E3929078C5A28F9A4325C2A7C73813CDFE13C20F934E' : true,
- 'F27DE954E4A3220D769FE70BBBB3242B049811056AFE9FD0F5BE01685AACE6A5D1C4454C' : true,
- 'F37E3A13DC746306741A3C38328CFBA9253F775B0E7797AB645F15915597C39E263631D1' : true,
- 'F3D752A875FD18ECE17D35B1706EA59C968338F113E36A7BABDD08F7776391A68736582E' : true,
- 'F4FF97428070FE66168BBED35315819BF44095C238AC73FC4F77BF8F98DF70F8F091BC52' : true,
- 'F520DA5203862B92768D5CB72D8B93ADA65CB4733D94A5C865A864647C2C01272C89B143' : true,
- 'F775AB29FB514EB7775EFF053C998EF5DE28F4A4FFE5B92FA3C503D1A349A7F9962A8212' : true,
- 'F7B661AB03C25C463E2D2CF4A124D854FAA7D9FB31B746F200A85E65797613D816E063B5' : true,
- 'F8387C7788DF2C16682EC2E2524BB8F95F3AFC0A8B64F686673474DF7EA9A2FEF9FA7A51' : true,
- 'F8BEC46322C9A846748BB81D1E4A2BF661EF43D77FCAD46151BC98E0C35912AF9FEB6311' : true,
- 'FB1B5D438A94CD44C676F2434B47E731F18B538D1BE903B6A6F056435B171589CAF36BF2' : true,
- 'FC11B8D8089330006D23F97EEB521E0270179B868C00A4FA609152223F9F3E32BDE00562' : true,
- 'FD49BE5B185A25ECF9C354851040E8D4086418E906CEE89C2353B6E27FBD9E7439F76316' : true
-};
diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/code/Thread.js b/data/extensions/https-everywhere@eff.org/chrome/content/code/Thread.js
deleted file mode 100644
index 8c9daf6..0000000
--- a/data/extensions/https-everywhere@eff.org/chrome/content/code/Thread.js
+++ /dev/null
@@ -1,100 +0,0 @@
-
-var Thread = {
-
- hostRunning: true,
- activeLoops: 0,
- _timers: [],
-
- spin: function(ctrl) {
- ctrl.startTime = ctrl.startTime || Date.now();
- ctrl.timeout = false;
- this.activeLoops++;
- this._spinInternal(ctrl);
- this.activeLoops--;
- ctrl.elapsed = Date.now() - ctrl.startTime;
- return ctrl.timeout;
- },
-
- _spinInternal: function(ctrl) {
- var t = ctrl.startTime;
- var maxTime = parseInt(ctrl.maxTime);
- if (maxTime) {
- while(ctrl.running && this.hostRunning) {
- this.yield();
- if (Date.now() - t > maxTime) {
- ctrl.timeout = true;
- ctrl.running = false;
- break;
- }
- }
- } else while(ctrl.running && this.hostRunning) this.yield();
- },
-
- yield: function() {
- this.current.processNextEvent(true);
- },
-
- yieldAll: function() {
- var t = this.current;
- while(t.hasPendingEvents()) t.processNextEvent(false);
- },
-
- get current() {
- delete this.current;
- var obj = "@mozilla.org/thread-manager;1" in Cc
- ? Cc["@mozilla.org/thread-manager;1"].getService()
- : Cc["@mozilla.org/thread;1"].createInstance(Ci.nsIThread);
- this.__defineGetter__("current", function() { return obj.currentThread; });
- return this.current;
- },
-
- get currentQueue() {
- delete this.currentQueue;
- var eqs = null;
- const CTRID = "@mozilla.org/event-queue-service;1";
- if (CTRID in Cc) {
- const IFace = Ci.nsIEventQueueService;
- eqs = Cc[CTRID].getService(IFace);
- }
- this.__defineGetter__("currentQueue", eqs
- ? function() { return eqs.getSpecialEventQueue(IFace.CURRENT_THREAD_EVENT_QUEUE); }
- : this.__lookupGetter__("current")
- );
- return this.currentQueue;
- },
-
- delay: function(callback, time, self, args) {
- var timer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer);
- this._timers.push(timer);
- timer.initWithCallback({
- notify: this._delayRunner,
- context: { callback: callback, args: args || DUMMY_ARRAY, self: self || null }
- }, time || 1, 0);
- },
-
- dispatch: function(runnable) {
- this.current.dispatch(runnable, Ci.nsIEventTarget.DISPATCH_NORMAL);
- },
-
- asap: function(callback, self, args) {
- this.current.dispatch({
- run: function() {
- callback.apply(self, args || DUMMY_ARRAY);
- }
- }, Ci.nsIEventTarget.DISPATCH_NORMAL);
- },
-
- _delayRunner: function(timer) {
- var ctx = this.context;
- try {
- ctx.callback.apply(ctx.self, ctx.args);
- } finally {
- this.context = null;
- var tt = Thread._timers;
- var pos = tt.indexOf(timer);
- if (pos > -1) tt.splice(pos, 1);
- timer.cancel();
- }
- }
-
-};
diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/code/X509ChainWhitelist.js b/data/extensions/https-everywhere@eff.org/chrome/content/code/X509ChainWhitelist.js
deleted file mode 100644
index d3f23cf..0000000
--- a/data/extensions/https-everywhere@eff.org/chrome/content/code/X509ChainWhitelist.js
+++ /dev/null
@@ -1,1007 +0,0 @@
-
-// These are SHA256 fingerprints for the most common chains observed by the
-// Decentralized SSL Observatory. These should not be resubmitted.
-// This file is automatically generated by utils/mk_client_whitelist.py
-
-const X509ChainWhitelist = {
- '000AA4E99FE86D84F762DFB2DC29323D0614B95AA335A270AF204EBA2F2240AF' : true,
- '002F83BE1562B658A7BA747EEE36FFBA25A7D6C66E263B2901184058802D9A43' : true,
- '006014E5A5190652C3475AA099483A273989F403FDB282AAD77DB72397C274A8' : true,
- '00C5E47B1FD6776F23E3C277A5D0E051E060E8540B49A8A955F5578EC1212899' : true,
- '013470D100AFBBA6D4E03735C1D924EFA6E25E66F781E9DBB6155EF713336307' : true,
- '0147A7B139D599058A43CDE86602DA56375CC78C2C15AC512953E3C98592D4D2' : true,
- '0163052F69741784B5CE768D0EE6B5C7C1B977358FDF7E1EC53F249CF0E1F62E' : true,
- '016BBB29A76DA59A20C5E9909D8D0A9CD25824D7462BD51B022D61B503569936' : true,
- '019591B144FAEE294D2BB557FD005FCFE7EC772543C79A86B968FAC895C5C57E' : true,
- '01E42F89ABE23F6B00E5A35240F35DF38A861FADA04A0B07B6DA9FFA4B57075C' : true,
- '01FC275FB7BB83082EA2C546876545030D74F68355AF2B0CCB1972993B393E58' : true,
- '02748B445F904F6C04BB42BB810B11B77BDE047350F3181DF40C3BA79D4DC89F' : true,
- '028CD123ABEA12F150435947299419928DC5E80E94E9148841265B64344C3DBC' : true,
- '028D7A3A5ACA6156AA42F1DAE25BD6116A417EFD8E64B7E6A004B1911CABCAC0' : true,
- '02E266B8D011CF92708D0DD0D9D840BB8EF54B4A4670BF700AE90EE6F7E445A8' : true,
- '02EE88738EA513E191ED7197DA80736330AAC72CD846B866683ECA283945113E' : true,
- '02FB82CE0C8614F748564CB3D14C2BCDDFCF982D6187EC85E5A33B28E5340CF7' : true,
- '0383B8763C6ED572306AB1253E433A3169F1EDF7078F57D07BC3461199BEF86B' : true,
- '043B68D81BB683927B40D3DAFC7F89C56F400F859DE68C0EA88AAB1FB1D75A27' : true,
- '044588D0C47A1900949CA779023D646E858FA13CC0E29236CCB270B925AE7A8D' : true,
- '045B734DD0081F9504751492B6059B22BC201018436701D98832E3A9AF050ADE' : true,
- '0494ED6BB7E16B78F2AEAAC053DAE6B31B52E39F0E10F5E8D95B77ECBA0A0BAC' : true,
- '04BE558E6D064E92B741B3C551CFE1F38462EF3A08AC56470894D1A80278AD5E' : true,
- '0508390E2DF4B63477E49A461AE883335BC71F03A24BAA06F46EB0DBF42641EF' : true,
- '0529FFECC3EB688DEA32684A0348F89876F1BD45FEA23DC8E9A25D524E7B1333' : true,
- '054806D84102E23956A821100183D32EC4B5E8E9DE72912A1F8E6EE53FF9A839' : true,
- '05546BBD905F23086AF150C0B1E30F0BCA2705B6E0CBDB56092D8E62CFD09D0E' : true,
- '055C88BD28194042771FF813973E086A30710231DB219FF377B79FA075E7F2AD' : true,
- '0589AF9C3A578488F4259AB8BBFFB2089D4C678B63D4C40B6A46CE2405346C0D' : true,
- '06183C90C1DCDC3E9340477D37DC231361321A9960C1948E92D1A175A1500A08' : true,
- '062C8DBFF4E5BE9BC9B9FFB76AF6CCCECFE8C0DDF52EB61EC9A4C7BCB6A1932C' : true,
- '06354AFD85075A5BDE2D84F8408B185CCFD354C2D75988D8FC67948AA6F60562' : true,
- '06808645F29D708E4C31AC40FA00000733238E10A56D2067AA62803C9736E923' : true,
- '0698D7B65AF15F9A903D8D364BB7DBC1B238DACA79505B8BCE8D44AEAAB5709D' : true,
- '06CF7C8A288CED36FD6E94F36E2726C7D96EC14BE860ACA35AC4B22922EB11BF' : true,
- '06D7D04035F29672F6921CF0BB432541AE7579AA2591ABFA9155639DBEFFD2F5' : true,
- '0742E85FE9C68350E070039897F5B790BDA92D92229D74BA9C6906D958A5C510' : true,
- '077495BFAEEBF5E62CEA015EDCE70CE78AF13C813920FD9D4AB72C999F60D4DC' : true,
- '0780AB0F9801F169F4E7DE6F6F40F9575707D4561E4EFEBBADE71279825E0CE6' : true,
- '07B61AF096B72D71AF801B9C7EB9F76C42CC20A7192C78DF1336611644289BE5' : true,
- '07CF2A06F1718D6E476B98C2B42E370A35FAFE4C1F41CF7A1DE115CDB6222FAC' : true,
- '07D5A15EAED5AE2CA304FFCAD864791055797B0252F925AE9177B686461E2C17' : true,
- '07E033082E94BEB3D19374BCFC5B127A65A98DF15004E1EBE6840CE81BAF8D60' : true,
- '09250AF23BC74D92973DD48812D5ED28CE1F5C110EE5F7CA791D9CFDE04A131C' : true,
- '095FB0FC3CC67539621E292205E758437D94D3B651714049E6F99130BD5ADB6D' : true,
- '097F996F81161F905C03E1882CA6F70044749A4954C30172DAB3768119934233' : true,
- '0B1C1033250F6DED11E4C0A7E43138AD3D52F5661FEC896519BEBCBEFDC16E41' : true,
- '0BA75006139D075BF8CD7D94B460A850F46509B23AD572CD1A1E23134F59431F' : true,
- '0BAA329411B026583F061B1244EE6A78030D6B5E0BE1DB8CD8A5BB62D12CE0A8' : true,
- '0CBDFCAB2337A7B0B7379B5FEC554D0361108C3CF55B6F2C39E6B843A47B28B7' : true,
- '0DAB05854E84AABD75D30CE09246103436A4C41E931374E16CC374596C8DBB94' : true,
- '0E3BD8F8BC06B326EF672A487855F0E9752EF7D4A2A913A41374088B6215EA44' : true,
- '0E49A9594364BFD4E6943DB24A2F77FA125596414D46F46AFCF070A1645AAC48' : true,
- '0ECB53FDA2349AB6008BBC0E5CD361EEC5B6BD769281800FF4B1C9764A925277' : true,
- '0EF8FA5AAD4BACDB842959378F18935855B027B0BADDCBDEADC9CC958C4C603B' : true,
- '0F01342B195E54DA8265E4B3928A2692F6CF05F41CB85152A8122FE6E914C67B' : true,
- '0F7391E841B068E145E12DBF6CC16DF16410083111E5F093302BA163AD4EF39F' : true,
- '0F820CFB486D8564C83E968049AD119FD838B2CD21C0B342A0D9B5D22C445C25' : true,
- '0FA392F6EABCE0F4DA14C7B5237B21BEEE6BDA55832A8A6090CAEBB53AC8D77B' : true,
- '0FBBC11F4627D5AA5F7A7847E0F8DE298021E175EC69ECA90A62740A71DC9B1F' : true,
- '0FEC8F0781CB9193F4996B43806C6D2C539847FBBC0C28146B64FC35617BAB99' : true,
- '105993C03E3F5C7E94D5A78242FCD6D0C7B7E5104295F8275752D7C6908428B8' : true,
- '1089E7487C08428CAACCCDBA18B8982049B6A915FBA4598E953395B4493CC358' : true,
- '10B8161FF4FC64020AD40EA57306CFC5010BF9682B18DEEF2544DD4D5DF0466E' : true,
- '10E65A16F0DEE4B2499EBD5C96CD416BD2713C73A422F3BDBA81899C736437C5' : true,
- '10E82776E55D0C2D58F6598E615CF38AA14161D1EAD97C4A09182FE1D44E695B' : true,
- '1134E778B42A8DBD01C547E9676F5294D4B16297DB8F6A512394F77B21F22052' : true,
- '116A5D5F3E99CFE5F72A4AFAC8699CC225C130F4B8520CDB350A1262D9585973' : true,
- '118FF53B6BEB35CBFE6592D45BE082BA1228D1817E46B2CC14B8855FCC5C9D59' : true,
- '119380AA5B344A339A3C0E724014E9F1562789F6E19320AA0C111B5910E8CE12' : true,
- '11F7A939F33BDF6270E16C747C0B0918902CD4501AF1843D9EA4445A2E708C58' : true,
- '12265448C0B0AEF0CD2A13E0F1D4BB1AE8A924A7418443345344E5F16E06758A' : true,
- '1243C75D0F805DA54E780D0D9C55247B1ABB31FC09EB65A7017695945F2A0D4A' : true,
- '12826065A034136FFC2258AA1A65F9E550A582B4017E396077917C775D42E553' : true,
- '12847FE3848EEBB38A6544A30C16833362D3A1E5601A38EA8138F09B59861CFA' : true,
- '1306A4D21476D28D3E2F7D6E4385686E1BCB6D7EEBB1A5217346A6E5855DF944' : true,
- '130F0A3C4B9E9132D1676B4EBBAB2B17AFD2AF39E291C983A696D8BF0DD379BD' : true,
- '13ECB3394571030912CDF82DDAFA05B242398929BD3ACE1598B79DBF28B701F8' : true,
- '142BA9FFCEF5D09FF3DE4BBF8110156D52FEF1C8C707E4B916692D7DDB335A6D' : true,
- '1491DCCE9B3E3F5EEA92C26671244EB7203C30F539EF5B6131459F389A0D2CD8' : true,
- '14CF0BEC6B8811A81FF5AD015C62BC85AF172E86B7504D40E9F27F0E0A6F9BDC' : true,
- '14D5F704481C18BA8A23559A9E49942C499BA8011926C09F4D721D92ACA5F20E' : true,
- '150B877BB614A98F2186C3B0978D190C77A605146A6A569036728F544520CDC8' : true,
- '150F5BC3D839579BD7DD1254A6C3C3AFE3485D7DED21C3B8123BA6875886A91A' : true,
- '154C4C43AAF5F838B7B9BE748FF671521BDF0ECF3D749EB85487F9C315239778' : true,
- '15ECBA98523C315922CFC13469827BC118123E02D1ADF24C3BF8305769869181' : true,
- '161AAA4D4A25BB68199DBE8BDDA1E8FBC52E9C7B299EC5BFAA7B36040B3916E5' : true,
- '163227E6A01ADF06502730FF25F39D8F52B79F9AE61D5AA2876980A21985A211' : true,
- '1632D9CADAB9444AAC7BBF6389BA59C12CD866725786D9284BF9B205E2586A28' : true,
- '1713C91C21F442044156AAD0A65E96A4C0020B2F765492A1431C6ABC3AF67D96' : true,
- '1715E347E92C85ADCEFCA2ED0C4B56DF7D7A3FA9C834B1F2DFA7CE115DC8DBC4' : true,
- '171F671393FB5CF2856957CB6925964B3C328E79EAF083DB15DE3D52233D6268' : true,
- '1765ACDC57A9EEDE87E6573443C7EBC42B17E012FE153D6D7158402D5CF9365C' : true,
- '18040AD71E7C0B9F8C0F275156BFF4FC6713FADA1F2AA5EF8BAD0552D02E7A50' : true,
- '183AE55CFEE1CAC5CCBC1C58D813DED429DF750E023362FB8BEDCB27A9F94559' : true,
- '1882C2D8D817DD1078933D244E379CFC5BA8EAAE302BCF9FA22636B08FAC86CE' : true,
- '18C1218D9ED6A609650AADB754644377914C34E7C35F305D12861D7C28BDBB80' : true,
- '18D46E40DC2A1F815A02742F6AAB8CCCB80BABB108B349D2E875762F7D80B2CC' : true,
- '191C5D575B18497FD90C8012DB912781FC016D2432EEF0F6A05493DE168FAB06' : true,
- '197B67187392F9D4653EC70C8BB277DD7DA843E62BA1A47B0BD95B89CB2C1735' : true,
- '1985D79429E03A4B25EF4195F04D0D6E770B36E8AB4369232CF3A1C1E40886D3' : true,
- '198719FE25A84786A0C2BD4053E93940AF864498D6071994E09A5335B675A73D' : true,
- '1A30713C34D901235DF30605AFB82AF55EE4D3940B86E60B50692145013AFBB5' : true,
- '1A91FBAFA70E4E0111480331EF09CBA83A6B53548CBE12A375C8D6C1C5BFEFAF' : true,
- '1A978CC61B3F7B936329198B939B5C27BD6B22EDA5BDE31FA7FCD35E6D61D265' : true,
- '1AA2692979DFDFEFD4854EC9EAB4CC323BE159529C3E85799E2C3C51350FB9C2' : true,
- '1AC37940540C25A5A2E2CC1DFF939F3FAE61C194894FD82F5861AC98E1D1ACE6' : true,
- '1B53976D26A5F691CEFCF098279AAEADDE2651B698FC3F7088F5C2A5B9CB2C5A' : true,
- '1BCC11E5459BEF3D48BCCFB10F57B0D640EC74C4BFAA3F0AA221B777170A5B6D' : true,
- '1BDD0D8B130AB4FE89DB814276912F04405F2D202CE9DA8B89C4420740517437' : true,
- '1D2A6A876B8C8A835206E337529E6C222E272D4AB79E2224E23A5B6414039D50' : true,
- '1DA6DEBFCC0A4BADEB9672E523C95F42B2D16B168759F75FD03EFBD2CD482032' : true,
- '1E07BA293C78E14CDFC629A797E8046A33F21981334BF6BFF9B4DD2D3C148CF4' : true,
- '1E51AC35C0CF103BB39F51DBC7096C53D1F3A255DC15A473B5882CC03C266198' : true,
- '1E5D810BCB8DA3AF393761C59CC88D22669ECB7D4F926760BE1EC6CD83E60765' : true,
- '1E8C696AD3E59F4835D10EF107B17427100E754EBE864B6FBC1501B8F1D00EAF' : true,
- '1F4C963A9BA39CE44E46F135EFEAD5B30D6A0A3A43545E18CBE59DE452A6468B' : true,
- '1F767AC5DDB239598F925936C242E61B280BBBD6D87C453E3131419530BC47C7' : true,
- '2088FE71BC64663BEA0FB04CF93E3053228D41914681A3F17DA61CA996D453AF' : true,
- '20C2806DEA7B729E29F7B7BB8B2653B8D71805605AD46394473D1B1F81103664' : true,
- '20C6290C0D7F1DC37BE540410CE80976FDC523C201D3BAF204454EF851F721E9' : true,
- '20E0911E2A528C3DC143646F9369D844E82CDA53C48549125DD690ED1047D8FF' : true,
- '20F5CF34D9A134A8920507B12EB84CB24C2F09152FE9B78FDADF57D892BE79E1' : true,
- '2128E4E9D372E50A94E43591AAA7C8B6BCDD8BF303C0B22F923B1DCD596E79B6' : true,
- '2156D89DFDE0B0676EBDE6CC82DF46DA81467DF96F9B8DC4A8B62F71DDA5DF95' : true,
- '21B2E2C095E47F4762069BA39AAD86802201AC4ED5B6DDBC20D1C7863AE511ED' : true,
- '21CA97793B165187383669364CEFC96F19BAF3F8987F7260CC46F3852721BA5C' : true,
- '21D70F62B14A3B2175742DB9F3C49999B67C15D0FF8ACA95B0C6A5393E043FA1' : true,
- '223264A2EEB01CD24524FB9273B38688A0AA8E3A2E7D63ECB76012B060039760' : true,
- '2234133DD7FCAE5D199EB31E1ED8A798554B29A355A895066FA6AE445386D9ED' : true,
- '225C19F21F4CC5241C15ACC6007060605DDF10817681F676CB8BD1B72014D52E' : true,
- '22CF6DCF97C92976F0572F0CD070A25697535E1980F08447D581FF18C6E74926' : true,
- '22E6BB3D9964F458D462BAF404323775B20EEF02F174CDBB442D4381DB98C61D' : true,
- '23980A7B935B10CA69315CDA05E61B4ABAE7876724C0E0C3CC7BE9748E41ACCC' : true,
- '240968FE922EFB9937AF8923AA4F0478D7F679937B9FA9BC1A2B1DF18994B9F8' : true,
- '24DFBC07031235121BEBA97AB5A061AAFCD8AAEB2145820A78EB0980E5111E02' : true,
- '2518D06777FE96E9D7D1B0D531149A5862177805443AC9D271BBCFEC660ACFC2' : true,
- '257335B1AD2B1D562552738ECA1C534A6331FD83B95C91A1EB3B6C2A44650BA9' : true,
- '261DD192486C36B9BF5DC0C4140F670FDD2BC62EA80C64123D827B5F32E0190B' : true,
- '262F8BE06605B4EE9D9545E404D32C2A965AC580A2A3179A8F5481F7D4BA9594' : true,
- '2635178113FBBCC75EABC09C497D411C994AD0170CF9DF999A4FF5C16872CDBB' : true,
- '2677470F2FBD067904B7014B88988BB94F72403C014240B9843AE5A5FA21661D' : true,
- '26D106DF3FE6E9C99924142C9DA27551E012C72C71FDE6EDD3CF4B5C87D59A26' : true,
- '26DCD94546C9207041868BA0293A40EF5DB353794EF0072BA3C63A76279B0C41' : true,
- '2741D5D511257BAB37E2DD48559D3FE3998CB3A5BA4FC1EA9C8656D5694D7BFD' : true,
- '274C93C8441ED469C7B7E01B5A4DB6D9923C3947C87CA4B71D09F34D13F37D47' : true,
- '27560906A3548AB767BA0992FD2F93575AD11AB83AED3354B6267C3F3228C858' : true,
- '278480669CEE2AB798934F06B963B68D25C0A276CA3EC4E523D2299CE01C4A4F' : true,
- '27893DE92514608F647A44E85314B90F983BD7E6BCD6CE9BE428FA52EEE34DD9' : true,
- '27B5CA8FBD760D881A9769019B0EC43CDADA9AAC3900861E1E14EE9348736FB9' : true,
- '28445F7C648AB6025EB469E9C5FD10C6C8D0D21B6A20F078854EFF406C55D3F7' : true,
- '2855C813E2F7369732C35656DD791928668591AC6AB3F9C73061B80AA7713920' : true,
- '286C62823B119606F33D5761CF39C86D4DFBC1531AC399969455CA227344D5C7' : true,
- '28B49BD8083286E1E01C3B94D6358697FE6827CCE71D7C1D0892941B49D83416' : true,
- '28C725A83ABDD4F961356B2B5583C1F165094C5BC820CF15A4FE18086272107E' : true,
- '290DE5FFD5BBBE1A557D3DABD01F3CF8FA5FDCFED4A919F4B73CF80B6CA2E4DF' : true,
- '2984CAEFE874032F0DF9F67888C0A304D8C7CDA1B4B8F915DDE42F125DF506F9' : true,
- '2AC8168217387601B753D08652B1FE2CD14E8A7C9A7DE7DF74A8300C976FBED2' : true,
- '2ADD4406064A5EBBD98A9D53051A0FB086A5D032655C12F503EA73C8179C783D' : true,
- '2AE917E3AB4B867883088BCFFED53EBEF9F87988C77AE47FE325547B181931A1' : true,
- '2B1B6843B33770E84785D0FACA5AA6EAB6C480AFA07E95F7A282534BEB69B065' : true,
- '2BDDDA7C2F05123A014AFE1044AE6AD3B1AA14F0BEAE4FDE812BE52DA271F992' : true,
- '2BE2AA18E281BB38BF0DCA7EED30F74DEC4A8BC8E3525D0632C4A9B4B426E0C2' : true,
- '2BE6A67777765CE8EB868416D68CA6AEA8C57D31523F4A683957DF560C152066' : true,
- '2C43EC0374BC603A1B191B88ADBCD5C1A0409120427995C2684A1590C7AB1432' : true,
- '2CAB9683916ADE98D778D3394221D8D07E07353E546771D507232A26FA577902' : true,
- '2CB02C933CD41CDB146CA0256A99AE53D9320BAFBDDE82EB24891AF68BC6E19B' : true,
- '2CD5E37B2C388FECDF839EE16998A0F0850B5A6BB39AA5A507AE676622001CB0' : true,
- '2CDCECA60D7F0E4700411340E6CBFE1B3C8FAFA9081E219462D25A14B61F9AB5' : true,
- '2D43ADE4441A40542869E06644741AE2392F1EC071E8D3E7732A322B8F051E98' : true,
- '2D4F0B81017D31BEFD5BA82CA91D5FBB95F3F8459E5ABF88360E9A3E1F1BB961' : true,
- '2D70DF21B5BE58F8A0664104F849ACB9741B90A871C2A0DBEA79CF012E3A0E53' : true,
- '2DBAF94C053FCCFA1EC09CBB22F54DAFF2DB4ABE1B3C61CFF1BEBC31260F4821' : true,
- '2DE3B602EC7847028D2EA59A8E241EDE63CEFAE7456802CAFFFAA8433CE9D885' : true,
- '2DEC053F97460AAAFB67EAB8C769B34049E9D44286F199A8D776D2FBC4A8A41C' : true,
- '2E40BCD87CC3A1033F406FD9FB81C5F405BDFC21283B22CE396562EC17CDDF02' : true,
- '2E936472C0CBE755C72128EECCF5BB8AE91AF188CB2F3277B205E27904A9EF20' : true,
- '2E9AA94F913F869B027272668BCA46D5076503EB9550737482C337950749E946' : true,
- '2F3A46F3C2FC1EBB5FB46B3135B7B4ED88CB515C2DB9A508716102340AC3583B' : true,
- '2F56C46CCFDB3A3F0192313C4801F02FFB1738F328CCF0F33F44C0731D340DD5' : true,
- '2FB44A33A5795F520D20CB4ABC4AE4E239FC193CC2E3D3A85056685ABDA9E0A5' : true,
- '2FEC6D75CCD95ADD4DB327257B4E73A880CC462E1760267970030576C46E0077' : true,
- '300B5DFEFE98F5280E47725FE63D7A0967CA022E4CF3531023A3969867677C6E' : true,
- '30354519FFD4794257A7EBEDB0D47DEC9A547B4E7213199000F41EB65C233EF7' : true,
- '305B4CDDF744AA543DA713E7E60C19ED5537D49ED2252330B46B7E664C4E588C' : true,
- '305D58D32D2FBAA00A386E3BCCE2202522B78C6B10E3D83C6A7402706ADEB4F6' : true,
- '30664111831B947406CEAFC2E660230B307F401DD060852E0E5281C95D9F526E' : true,
- '307483FC4C0D7608C2B6FC2DD068EDB1D686085586C4CA4284791294FC664D6F' : true,
- '308F0B0CF08358D501CB807667A31FEE7FDBF7539E1AE74945DD9245AB9F2CF6' : true,
- '311F6B428C4994F2677A56588DA04B704926D737669A76B1B3C8504EECCE4A61' : true,
- '31E5A342FC80BFBF1A1B4A76DF46481E5308BFBBC987D8A6DCF99057C1679E8C' : true,
- '31FE71304CC1591B0BBB208F10D39DB59FDF869D117BEC955E9A6430764312CF' : true,
- '3264E084FB98F560090992151EFBCB41AA84EAE0C3D8378127A974DF81473E9E' : true,
- '326F94C0B20B06F11A54904E31BCAB0C1A4DEC790BA2D1947E0E11F9B7210F58' : true,
- '32707DD6FF2DAE577C4097176D936DE4E46E5CF428B0831D12574128BBFF6309' : true,
- '32D398E73D053561EC78257EB01F0945C2A38D9F80674F6F2B4B10BA35A2B4E4' : true,
- '32ED76AE2E09C58605B9C2BF6A27080DB8C7EEB70889BCCCEA72104C7F33F95D' : true,
- '32FA61C84B195BCADA9A65448CD3C8CA66B1DFE252CF97D46567ACEB59BD2D83' : true,
- '33512B5F197ED2B530575C71046268C4E2F5724B645B8DF1C689EC535C0FC791' : true,
- '3361788E20F935BE971D4A9B9F49BCF9951C7B30E8E1B00E18130777401E634D' : true,
- '3379517964657D6F875971C1ED6218D9F890BEFC7390CA654C79A666D1989A18' : true,
- '33AA071D0BA51A7A7A2288437B87BD01B12CF0C62CA5D0ADE23344C14B729728' : true,
- '33C6F4BD1B6130814292B0D5334D6CEC9402FCB833F296664A7F519AC1DAACFD' : true,
- '34535CB0A54193C144158D23C5A7F6F0F448FDD8EB9C21542A1203BB66BB8144' : true,
- '34A2782BFE23B39D6C7FCE48ECD1675A8141BB9553898A1FF38EFCF14F7D3AED' : true,
- '34B1CD29AECA7639010C4082C4609B8EC6EFC5DF272CC90D2650D01ADEEA8A53' : true,
- '350123506BA002EA62350E82CFEC1DA7BF24B405C4160EF1BF4C445F7DC31757' : true,
- '35191A1755929B2A4039B3DA0C9FD6BAE4DDA312ED858BA6AA6444A34A4287CB' : true,
- '3551069D5774095145A9731885485CE10FBF3FB46144F33A4E48C03CF2E475E0' : true,
- '3572DCF086FCEFED230B4D1B47E73DF410A5C775BA3BC9DC2681204F2E980BC4' : true,
- '359BA4063DD43F04725A67F7E425EC48A593838AC97328374F83A31FFBB1EBF7' : true,
- '35D053D2BE3EF7503F4AA7A66006C38C0C6E9944A8A89EC5871103F4B83B312C' : true,
- '36267B2A60E0B5997DEEE17CDBE6AC7F7D54D279C6AB4F06CD469919F442E6AE' : true,
- '366B123FA1EA2FF7FDBCA0422E504C8E0AB62334AC8941D307060F5ACDFB58AA' : true,
- '376690DCA49A37377D699141D59A549953B2A0B730729BC6FF8BFDA67433F763' : true,
- '37F9EA077605A59865D6CE500A20AAFB318666DD42AE9B17FD10DF4C4DF4D157' : true,
- '381FB3EE49812423C2F3CA943350617377D0E36E0D7FAE21159F648DA79FD32F' : true,
- '383BD359B34DEAADBEF73CF41B93362BB3C59688EFCE1E8403C50C5783F1C50E' : true,
- '38BDD8D544DD1094861968FB021D7E27BC2A9D0031AA914F3398C377A4B5F9EB' : true,
- '38D12483160C6E3AC330EDC1DE173382B4C2AD79A298155181CCBC9A10CF6495' : true,
- '392944F5A1C82284C698C6BB512CB5ABA48445376D54BDDF0A53C66B832D1BB2' : true,
- '3955C196410B13A2BE4CE66E7CA1238F139DB5F00E2DF2997CD83903BA064B4F' : true,
- '3958BB2CE60148D4CDAE6266E4E04A6356E00B693621A4E9E05FC78C9709EF33' : true,
- '39863EF0FA91E0729FB834D4F99A376FE60A015301FBDC91EF818346489EA0E3' : true,
- '39FB813A6BE631C5802EA9C96CAEA7E21CBD7B831FECDA5F2A1FABA42B8F56E4' : true,
- '3A260A20CB6DC9BCEE25A21284C2304A9744F494B37359F5F0AFB46A1D0DABA6' : true,
- '3A2AC86801E185B3B8A189C42AF1574721D452DA425CEDEC6FA0CCD44894BBF2' : true,
- '3ACDE8B9E6B1100535007AC7316F4587DEA84EE0DF1B344DECEFFA952AEEDF96' : true,
- '3B00662EE3F01FFE2C40842F0F3B76C039ABB785962E371767E89E2AFA311A74' : true,
- '3B209B5718F54F113C557AB8D670B1501B05A16B92E6E16BC97D026087B90C3E' : true,
- '3BCC83CA8C459D028B1328C4431B939874F5D9DA09CF37A15A1A388498FF9B24' : true,
- '3C49B9DC9307C6B33E0DBE135836504ACB9F6204B7172A412C28E797E56CA02A' : true,
- '3C8B081D1FAE4B17E87EF63292AC0F5F754685EB3EB441213BD2170B068DEB54' : true,
- '3C9AD3DFF4DB327C01C03D00389A76E5E699D4C4707E23221DA6C61F949AD532' : true,
- '3D1C44AA234496D76A6BAC3434418253903B3C5019FF91F78348AC7C14E39CB6' : true,
- '3D666AC8FDB8483D6006C9E22E5E9539E27B322D5BCD0AF264DC8878F9476DB0' : true,
- '3D76435F7EA7583AD6F474333B7F8AC6368ACB53FAF4AFF9E8644765025ED427' : true,
- '3D7A71BB494A12E1F21A1EB9033CBEFCD1FE81F358B131016DAF92C1C06F1A38' : true,
- '3DB253A22F1FBD071CBAB9E97294CD6534BC74430123B82198F7A29ECF800D64' : true,
- '3E08AEB4D01EEE9C19968EDE2D5FEE0E974E6B7FD65769E767C28CCDADD85D46' : true,
- '3E09F448ED5A72584FA305F82A25706D2AE756083530B4E18665DA2AE46C1410' : true,
- '3E5558CB92AEDC7E01DB0FBCD0825CC0F51AA7B683ABFD01D1E5E04C8A4D716B' : true,
- '3E7D7F2DC25AB2F5F045601ECBD75B498A48731555E8027075BAC9768E34CA72' : true,
- '3E97B3E789A4BCF4776B5BD6E37B070DE9A1D4D5B27F1FD0E4DC9C6A65D637DC' : true,
- '3EE396E9C7E97016AFACE8285C152EC6781728AFFD747291AAA596D573C6ED5E' : true,
- '3EFF635571ED85551721F01985D1B2C62613C2B7DE25C8DAF17A8767ECFCC39F' : true,
- '3F1F9323436BD390A2355115CC333592B4B5AE3F3BA2755D342CD863371EAB1E' : true,
- '3F933B11C350C08B98993CBD045F11249CB355ADAA8FC405B9B3AAB0CBC72F7C' : true,
- '3FA41F7E559B84FA6918FAD6709B5026B05A1C1AC589049A4D5F05F3A6B7D65B' : true,
- '3FC8022D0C28EBFD45DC1D07E14F9E83F0CAD2E7ECEDBFDB991E01EBF2400F54' : true,
- '3FC92874F07DB0DEE11CCB2CA7BDF187641DC78ECE4C76E71B2253FBBC17E3FE' : true,
- '3FCBCC65096D7D731244167CCEAA21757E56D6EFC05A632AB3E062643E5B380F' : true,
- '4007AA6804EBD54CF48E514FC8BE08DE5BBBE5E6536D678DAC71DE0C05D05B07' : true,
- '41748175B1E9E26507156E326B06719603CCC2E54D9D1FAE0F6881012101F692' : true,
- '4181BB2178C564FEA4F0F5C87337921A1DB4C1CB1264B1E2168FFAF334C7DA55' : true,
- '41A4B72E197905E02DA1199B4B9D2B20CA9B1502151A14FE19D8470FCDF60E0C' : true,
- '41CD7602C418FD0831F1F207DD50A19A0A03679113F8508F43DE863AFD32FF45' : true,
- '4290EB1B22721BD2C297723FA6ACA6B3059F1E75C930FDC7075F14B3C5EB13E3' : true,
- '42A2B7BAFC9E81A94112C062E15EC8017861988A458D8C52A686702633559BEF' : true,
- '42D891E625A2FE563C10EC705A036928A9EED088915D480F5DDEDBC4BB35A557' : true,
- '43555C20820B179886354E63251A21247292B3B7BA46D8BEE860A0313258136A' : true,
- '43D81A0A5D8DE29F80ED805D9D440EB6DDEAF4AEC57B6F6D4883CBC3DFFA7EBB' : true,
- '440D00F6A763CEAF241756BFC150BABBB724D3AD48D6739ADEBC84004E24FB7A' : true,
- '448771ECDB6FF9B0B1A817E6C23048CAC06987EE2A6FCB6B84A6F0A75D7DAA6E' : true,
- '44C748D62020862C698F3A1BE86A0261BEEF4337B6E28B3597F7FA0E4A01E49A' : true,
- '450608B6DCC297A7FC00DACC4455E165091B8A4B56873B61C4ACD495A32AA2B7' : true,
- '452F8C17E67135B1FF58F58BC411FA165E80838C8705B1F6BAF1C90F287BBDC9' : true,
- '45CEF64AA866F2A2A72E13722374190F8EEDFE984F022C3B23B492A073741EBD' : true,
- '45D1C3C1E96982C752313C9059D4D6291BC0652ED7B266E25F67738E4D74915E' : true,
- '45EFC525BACC3D6E5AF98E1BFA4A60582231A423EE2E52D5760C184E66241DA5' : true,
- '4603C35A8304F6057C253381D39404E8B40AE0958B4EB2CEAB7777CD85802C0C' : true,
- '460D4CA817FB242D2263900689B3CBA7261A390B018391C7E1716991BE8ECAA0' : true,
- '46236B9468DB40FAF467AFB0C35B517E514251530785695F54440E6730AAE44A' : true,
- '464CC49DD9D781670D5B24D203D45F2CD011F63C8775862C2D7FAF4B23C64EEC' : true,
- '46601DC361A7306BA942625822C757F0702F63A009A5B0FA96CDB92CFDD07FB9' : true,
- '46E74AF8240C97D2E91E118761CA4F74371BF7D2266601BAF6084BB1924B62D6' : true,
- '478D230215F850914D64BD43327923DEC9E52B4F14EF5E7E9122B16F40B2733D' : true,
- '478E954CA5A715BC4E78DC2730A44ADFBB20D225C3AE4562882E0BFA3B13E374' : true,
- '47F4235DE4F1BBD02682F65A8B465D04721124582B6DEAFDAC164A699F56F419' : true,
- '48544D794B99D6942B8C3B2CF051782C2F6CE051860BECDE2736C2CD6A429893' : true,
- '48DF42F374FDCD58EB650256F421F6C1A73F663DCB8DE0972DF9421205509F8C' : true,
- '48E8ED415FD8EFB4407D0C67F3A4EBF15286569D29D566DEFA8B7AD8F135A5CD' : true,
- '49558145AB82E7F795C2E45402260F1AD1ED43D4DF145CF2577BA1615CD00843' : true,
- '4A12F9678B1A5B4677054BDA1CB6B41AD8A4F556A184E7E4C33669EDD31EA50D' : true,
- '4A80A015BEC13BF13BF90A093212BC7E939DF1F5F535730273342AE942769A2A' : true,
- '4A978057E01B2F443BFC218B48E7D00D2542DBA58ABD2609ECE7E152A8F86292' : true,
- '4AF1D354BDAA3AB076BB6A02BAA3E1BAA2503D21ABE54B54001BCF62C0982721' : true,
- '4AF86DB451BCBBB3BD8BB3D5982DBF4451CD96394540DE9FE6210E69F7C2F8D3' : true,
- '4B14ADF4E6015B7F5E4EBBEAE635E5FCA547B1885B9386DFD76A25B8D2A2A63C' : true,
- '4B29F275C3803C8B4E50951895FE2A4C94442F4A7D14922D54EADBCAAABF4056' : true,
- '4B50DC7F1BFC4867D02B551EBF66F63645DD5BC27681BA715154809449F381E4' : true,
- '4C71A0F5907EDCF7950980BCC1B7B6E00141C1FDD4A50D445BB43E1E054B59C5' : true,
- '4D112C44F7DBE6E0A55667E639E192515C54B00CE5E964EF696B13AA049BA656' : true,
- '4D26A014A4C4007564C743D9BBF9C2DC9A5A881C05E549DFFDAFCD3814F3966C' : true,
- '4D2E2CCFE3A068F7C89D22E4EA6F738F99D3E62287FC8B9C8787D78A7EA77B30' : true,
- '4D3CD85A0580A0298BECD2FA69BB246CA91261145CA03370847FEDD2BA707CB1' : true,
- '4D6CCD149A9BF9FA30CD78345F827ADB4A51553FCCDE1811FA39872E293EFE59' : true,
- '4DC761701AB68524A6BACAD94CAF1D8480229B66D8B9B9C0CDA3D3B233A6B785' : true,
- '4E49086BA0B8B96D1C31415D8A1464F19B93CF45B46D04AE4C21672279ECEFFB' : true,
- '4E5AD8D52C37A505176F9BA95BAF43CB5FD5A7FC4654DC71178ABEA8188E7ED6' : true,
- '4E9754EFADC9B8819640164B1D87C98B3E5D75AC7E64F33F7911ECBF389E0A80' : true,
- '4EEC544B64210519ACB153834E7AFE21867AA949946FEB78CE5A254D12A0934A' : true,
- '4EF7A69DC3625A39A416CCF7F607228D8A715D7419781218E4B827B83A504CCF' : true,
- '4F8C7657E222E678CED866714BEA093B11538CE155E1FD35D3E5AD1C8AE9877D' : true,
- '5020E1D1DCE61987673932CC9B92A411C081C5428EC637F3F0E3F8C0C5507E64' : true,
- '505707224B14F1FFF2F5937865DE662C85B0C21D090C59658E24B53CA635EFEA' : true,
- '50CC4D1AE164F66EC09AA6B7D5931074094FA1BB6788AFF3525D7711449CEA81' : true,
- '513B3B0E023E7013AD1D77E77AFDAC7D99627F8EE3C8FB291064D6D56C3CDFE4' : true,
- '51D06F5BD10CCE82EF993587A687822C99C3D8F3DD2F04408E99A5388C07333B' : true,
- '51F5AC607BCB1882F792585357C63B23D08267F717AAC5BE2AF557123EB19446' : true,
- '52064B1A1610B2374CC7319E51B4ABFAD46FA995B9447DF18ECBFC68382A9ACF' : true,
- '520E82B39BF086E3EFF21B582D587329371A881E2ADF8B656DB9DF190CE3E416' : true,
- '521E9362D22CC047B51F112D1C701D87E6BA49676A4C87CE8B9E6411C2FE425B' : true,
- '527E1D8CBE4936132EB16202101509A3A0535CEF78476DD9317AE7A31C097327' : true,
- '528F9666D1C35F9AB6C5E9E6496B0618C6A3F5C37D6808E0601A8F2829A352F5' : true,
- '52AFEFBC93919093868483354CF11C747FB38F946CDEFDCFA6E5117FB0F5039B' : true,
- '52BA9F37FFE1EE6E200988EE9266A9605C02B707A337993678389DEF865BB06B' : true,
- '52C584E4DA8D3FD6FD63E83B2EA0FD6D98DB0413776C26122FF0420A3F0F91A0' : true,
- '52E62F52537E672C499E0902B25BC800C87BD8C45BAB7B9683811A7D09C4559F' : true,
- '5320FDFFB41AF7F0E7057535EBCD28F5906D7F9B4F141B475B25E985399F0085' : true,
- '533D8997AAFFA435583E114FAF33F105F8CB1B87020DC86F5DA948808EE81AB4' : true,
- '5376577409E17E8F37B2CC6FD486FBD356FF2AD0B5EF520DB7CDAD06C6A6F3E0' : true,
- '539D60FA81E3F2D4A2BC38124BA464D8DE7068292B2F0A7E8A673AE0615749C6' : true,
- '53CB6E4A76F1BDA96200BC21FA943685A88C33EC1A4510F4073BF54644475390' : true,
- '5401D639B63C7A3075C6C5B61F64AD5246B8E06895EA510AA9D7C1418C3E06F4' : true,
- '545FFA9F423F4F13DF4C27ED786170DCE6D681B0AC9278B84CBC979E93A950AF' : true,
- '550C98DA3C1CCC2DB49A389D57397C73C4304F4A4B65A1EE1A300EBBFAB97478' : true,
- '55DB7B0ADB76D9C23CFF1CE64083074EAEFFB1F83642E1AEC2A7FBD365A9E962' : true,
- '5603628307C37436A0A6FD92B580DEDE34FE08652C3E73010745E471230A5B36' : true,
- '56A2C00BEDBCD3A014C22A89A1E887CB0F9A2095FED90ECF196F6719EFA35A5E' : true,
- '56B6BEB3100D40CAB0EA4E450188CDDA653F473F3F182578AAB314006E66FA5C' : true,
- '571DB04B46DBA2B26FD50FCC1F0B0F5C5ECA926E6A33D4354660B653FB62822E' : true,
- '5747EF64E7C857584498831611D042B568A3FFFBA79F476ED22F4D07E5239266' : true,
- '57A0A93A8193B5CC90AEED1D0B92696C9516F2C3A6FAF86F7BB8126B5A691311' : true,
- '57A0B57635F2D75EBC9C3B166E68E35E1CF91BD074AA9D5CBCB3359D93F02859' : true,
- '57B2958E7031793509E2EB58DE05C460E0791C4F78A43244640F7926FA3BD7D6' : true,
- '585568A4010D0650BF0F0C2F78402F25FBF6D0B8C82879E5B475708DA6617E35' : true,
- '58A7C6AD9A4C3247AE54306E47A631548065C989E435B13958BD5F552641E818' : true,
- '58B590F006C3B293A57D41FF491EDACB580EBBF8AB20A91D6F8F0ACC3D3C19EC' : true,
- '590F7D88D52E1E705632486F4CB869B519331ABADB9B139951F8705F33E42C55' : true,
- '59148BECF90A7738D4915EE2C70C38F7789A26131E0FDC0240A76CA7153EAC00' : true,
- '59A233455E2FEABA60B77DBCF09F6BF284C4A72856EE9107D2C574E77C56BFFE' : true,
- '5AA7341552FF047164227AEFB41437582F7116D76B854F54920A5D6A9B72271C' : true,
- '5BFE64EC4BAB95BBE3715E40574B76B99234097973E9C1862702C918DC6AAF29' : true,
- '5C34509E57E6B30A28891841EFB2A5F0D051493059DD80157C19B2822A97EAF4' : true,
- '5C3F4C823A953A561E8D0787CE7AD8FAC7434EF57CDEFA4520C18A5667C82003' : true,
- '5C568C32C672A2B3F7242D5CEAA2718B08CED5BDA028B84224D605079DBD0DD7' : true,
- '5CA279B9F09F877E7BC143481BCD463F2C04F39CEC9B8A4334DA493F429B66E3' : true,
- '5CCA5A4308740A6480296C690D8425A42D9D451269A542D00BE3335CB5C27EE4' : true,
- '5CDDF1DF7B5333F1B4C0FAA66297AD72ACA5258C5E9FDE4B9ACD9EAE832C7A02' : true,
- '5D088B418362280202FAACA75A39EC178CDD47900AD52E9849F99F37E0E945AD' : true,
- '5D133D3BC732EFC05E4C91931F8ACEC74F9BE1FFEC30F8C5E38616D2AF7BB20D' : true,
- '5D8DBE824180E72B5972E68A8373AC984757EAD57281A973B44B18C36DF6724B' : true,
- '5E03C9E7A51C7F8539BB4B25ABC9ED0CDB47B48D6A07B0C051D38939AAF91782' : true,
- '5EA032BC171418766EB1B1F71A7868FAB9DA3C484A487BB1FE062566DF166002' : true,
- '5EC202C52C6D9B266FD1A67D8A2D27FA39218E641E646119E4732787A70EF758' : true,
- '5F05ACF54EAA38008B650AAA2DBB3722805C793616B1A21B43E1879107254E38' : true,
- '5F0BC67CB7C74339B5D8389E90F5223CF35EBEE6315C083EA50063C379361473' : true,
- '5F71744E0B28E62ABB0626131E0877737B5084AA6E648D268DD7D0D26B115EA2' : true,
- '5FA0764CF295AD3743724E7419F3EB085D29E80E77731A2F7BE68DD3F2C559F3' : true,
- '5FB6ECAF5FD5CA42241B12521D7BB6F06B7D804C60C84D7BBA7B7A7543FE754E' : true,
- '5FEA0DFD20247FA12D63859439FF9F4D5D0207D6E1134820CAA9CFE4A1B08FEF' : true,
- '60B7C0E860123DF4BD6CD8EAC6560CAE6E9CE12DEA9B119B2FB90C57DB328EDE' : true,
- '60E9F3B150DCF1BD90562DEDD083FD783E2CA9A982C08BCA2C455F50BF977B98' : true,
- '60F715D7E6C8AD03E0A080602682966661E1F4614BD4B926E03BADE8CD94E042' : true,
- '610F08E31612A5F6111491389F25568731F3D330BC66751F950821A26870ADA1' : true,
- '6129C7157898F2D29FDF04A78AC6730FFB248F7467858C9F3441A5D4D6B88C8D' : true,
- '613E70A1BE3CA6314EDB7C00B2477990271E0C8DE8210EED56ACD391E8CFF28F' : true,
- '618F1FA3F38C857898847A865AE73D87B0071C8DCFD4EBB7E80828B11862151A' : true,
- '61BA185CD2FAB39562813CDCDDFCD75184A1572E2B2B87667728C2EE8596AC65' : true,
- '61CAB5A76C7B5AD89619944475E8D628F58A6A6DB42D66567FA80403883A4AB4' : true,
- '61FDD344421DEEB7314FAA2A6C1A5CD97720CB90B48C801EC4AE74C7D88F1E39' : true,
- '62210E1578BEBACCA159EED5A0EEE3192B7FA0C17FA2556A686E28B251D80C60' : true,
- '626042CAC6DE8C95C77C0E732144FCBD63418D72ED04CCB42FCBF260B38B21D5' : true,
- '62AD913E74BC37FCF69CB86718E13A47FDF1440C2B18A4241D3EEE7831456160' : true,
- '62B59DE2632C2A03669FF060A2C2047B9A95F49050C64B6BF5A782806AC10E99' : true,
- '62BCF7CB951CA841FD08B456BBBA3061C9B0DC3DD92BAEF748070BB923D68B4F' : true,
- '62C9A052080F8EBA5E8FEB9615B5CDDFFF1D74F8467653030CB1BA12337EB5D7' : true,
- '63448627F20BDD4F11B278941D82DE56AD3A689CC06064D867FF060FCFE29A49' : true,
- '635FDA4C1012FC8CA8E5EBCA6953D8F29D6B0EB279E72D043016658C0F62197B' : true,
- '63B7D2C03D1507A80B8617E50895472A3C9E47CA34E8756069378DCEF952CFD3' : true,
- '63E6A22E453B17B4EA3E35C6E39EB315DBB77A237B1BBA9BFB2B3BCF675A63B9' : true,
- '640AD0B7F4803223887EAE106DDD628BED925569AB309C01E1C8B640FF05B2B5' : true,
- '644685FCA2BDCE4C6D4AA3876174676CB961619414083ADA90FE2443CF929D32' : true,
- '64831454483CA9CA55859BBD324F492638DA8179EAAED19EA3CC8E16FCE7A83B' : true,
- '6489A71D718B44D5479D3C5AA2CEE70A2E6738AF25F0288B2BFFEF833280C0C5' : true,
- '64D1D9522071A54B43A6C43A759223AEA7AE209FEAB423EA24E3E95FD83BDFCC' : true,
- '64E4359CB75DDA1A17413906C2881931CCBA16E52A52F13F16E65A752C2097A4' : true,
- '651F8FBEC4C5909A0FDC3B8E8D557574FAF01B33981B5B725311B57DEBB47B24' : true,
- '65ACF48C5CF24783794CB8D5AFC30737273D3DDF93F62EF803EDCD05650D775F' : true,
- '662C92E3136C48881B42769EF6DA50B31CA577215D5AE4B465A1024CAAB1E033' : true,
- '6688912D47D0A49A3BF7EBA09AFCEA36E0D4DDF4BB571B383C134B763B17DF7A' : true,
- '668B926F5EAA59F351B7ABFCBBE5FA17B547B01C5A7D4AE385736CE8FD13359E' : true,
- '66B10F427AD63DB6544E9E20191BDE4F827A7C96F1DB17E01E0B254D67BE282E' : true,
- '66D67EC6407BBAA2F4A0EAF49D81F223332DEAADC96292827CD749DB07A82C02' : true,
- '67DBD139B060C071667F2A45E06C7E159117263D593C95138066C7BA3AD20DF0' : true,
- '68EE7C99FB1E2B8F0DA74C5339E58C6A1F7C2697CDE363B2A8A6D8E012D2C773' : true,
- '68F575FF9F2EE5CBBE2975DB80B0D2E8582B2B5A1624A70EE6470FD562D59E93' : true,
- '69643C10B6E53A5667D8BAF683B1D566BB54B001E0588D7B791E648EA5681BBB' : true,
- '69F71F4F07365D7F684EC748F9CE61559DA33FBE1C9772F836664D656F51A5F6' : true,
- '6A2DD995DB40154FF576E4B6C4544F92091BAAF3D43F075B63B5F882CFD21D5D' : true,
- '6A525C84FBFEF83BEA806634766F1530D9C5964DFAE49BD2F678984AF29FB474' : true,
- '6AC112C1828538894A1FAC7CECE0ACFEE75658118041513498E880274BD2B7C9' : true,
- '6AD39077DC61A2347F25E34A809107D3F11E18B1E197A88A9A39F5FDBB0A3861' : true,
- '6AEEBBFBD6A2EB3C41164F87A2491C293A66DB518999827273FDEA3F1892ADAD' : true,
- '6B02CD14A3675354A800006220E94D8D4D5F9774D60EC984955FF720D927E529' : true,
- '6B0F32FD3A2A683E8595F933F07DD41CF53C3CF786AB9A615DB27E7B865065A9' : true,
- '6B16CAD6D99596442162EEE7113248C0C77EBA7DBE1D3BDC044AB9802337D2CE' : true,
- '6B8153379F9AD865DAA48C0B805430D7B62D6624C4AA9389FBD770A366439995' : true,
- '6BC4B8F5756C6E11852DEAF28C2208733B463931BC5413937F897D4735CC2F01' : true,
- '6BF2234F99577BEF099F5A651C125E660A765202F83A7FF24C82FFC87F87C3FB' : true,
- '6C5E5DE77D1F4BC07A3C2AC49BD9022987191F576C92DCD778EC71399AA04E6E' : true,
- '6D2E55B7B10EC7E3F82F060350C9BB7DAEED8B6ACB8E79B4B088D9B711A9CC6E' : true,
- '6D53AA3328CC9AC46F2872113922BC105CC4A5C2B3EB7F45C331A93BBE4ADE3E' : true,
- '6DB177AE67C272A729818F26A5DC8A327236919BDF09E43961204BD9538CB09F' : true,
- '6DC90241CFAD3946A0A53940327E950D8D7248FA5896CFEFB60F543000A0B165' : true,
- '6EAC221C01F1C4E158E51B8AA15965260D186BDF22A579C9CE8D89E787A36FB3' : true,
- '6FCE4CF77E254C2920BE515857DAB1929ECE7638DD8C370C1AF6A374F36517A6' : true,
- '701E5C167D1D2A47E29F6E0EF64D59D978CA3287D20E3590ABF531EEFDDD885F' : true,
- '704172C04EB3CE46ADA086772ABDD4DEE208909ABA10D59D1815E9533107CE5C' : true,
- '707966CCAEC5908E84C5AE646566426234491D2F78CC00BA7C7B9E5F009924B0' : true,
- '7081C7813097A8602BE2DFE4BF202EF4574BCD4DDF51FE8C7A2F872F93481E83' : true,
- '70A137BA9CBC1043B06D08AF2800FC09F4D3334ACDC0915124CDC834A77564A1' : true,
- '70DF998D006A8684F543CF929F8223770479451AC680070169CF11B6B409CBD5' : true,
- '711280787458F0E54B0C9294A54270FA83E8CAB29E212ADAF665D7F6345C4DF9' : true,
- '7189EB04B704BF82CD647CEFCEFE86B96F5FC455827A531AFD9F991D8AD1229D' : true,
- '71CBA0C7ADFA0E0688BBE75D856278A477C4041C6F0895AB384BAD02B9D951BA' : true,
- '71F2DAF17AC798022DF73260BCDA153082CE08952CAED20A66A588B46E83000A' : true,
- '722368B696E375C97556E68FA5D53C3BA7CDCA15B13B72DB9E49090EE7C9C163' : true,
- '72821C51F9381C854D8EE79D8A515ED4A5B6104446A746FCE6337BD71D73F147' : true,
- '72950D958C6C1FFDAED4C597635776C7EC60B32CC683D03AF405B023C686FEC0' : true,
- '72F3DB1BB2B0B3D65683F62D927E20C95303A00E8C845E0088E4DACD4F3B19FE' : true,
- '73A621FFE0ABD75757F5C92C8EF20E63EC8F4A279A450BACC7E4FA9D75E0EE5A' : true,
- '73C4C95F998FC60D5EAE1283F28C36C63697C481E6B321EE7DC46DAE585B0E11' : true,
- '74711F9774C66CEC41DE4FD32197132B13A40A6758A106DC95BCADB9298A6241' : true,
- '74A9F7B27B38326F64792AAF791E5A5969071CD05C8ECB1E068035AF9AEAF482' : true,
- '74E97E84CDC17ED404B29595C6E408EBFE93159E45FB59FCE264BC111353EBFB' : true,
- '757071EF34F3CA907D7D29C6420EC14B6953F433FA03F2049636F55265E456B0' : true,
- '7572D3C2860E9D28159C0337E8DC7C693F307AE0F1F02E0C35E091AC1C1571F6' : true,
- '75893F8249D9326D2316BFA87F7DE3062EA1E00116C921C6876AFF322B636664' : true,
- '75A9264209E9CFFCF8C4D74F1988A6AD0F509269A5DDA3DAEFC0068EDBE6AB26' : true,
- '760650CA663BAF50AB023FB340DC4316998A7E66FE226C3A66E7D31CAACC9330' : true,
- '7633A1503B4C364C9C55BAAE30CC899238244FC16BEEDF7DC22E54CB9B569A6C' : true,
- '7644E55E75802D6FF784B75B8D77DCFADDADA23DA2FBF95836FA3CB975C6B982' : true,
- '76498ECB08242DC8AB6DE47C0EF0F87127C2809D2C1E1B8216D6297ED7D791D0' : true,
- '770784FC2B1A52F110194800E972006E868F055C52A8BE467F3AD7BCD7E441CC' : true,
- '77C5EFEDC19C242BDC746C5EF4A1DF4117918CBE078CF6DD65FC274DB64CFBAD' : true,
- '780AD07FBA71E98848DABAE3B6B94B292E5959CCC36769683E0213E78B759DEB' : true,
- '78765BF1DBA140B30E4EEBADC5DC056AE2A1E3E552907175AD14BFCCE2518C10' : true,
- '7889B1659DAF073B50A3FED9BDD6CA3F3F69E90E22C9EAC126E2F915C476984D' : true,
- '78DAE4B45606212F3DD7B93711B6DC11416C79D56578294E08A7C63CF4F0AFF5' : true,
- '78E4E5B9DC94A09084EF738F43D30114F90F95DDC550D6BC2ED203D722323EE3' : true,
- '78EA89695196A279F7B44D8F1AA15080C91C3BB240F1D1878A88F2B27228D430' : true,
- '79244B0AFBB3B26770A470A4F23555757DC25D3856F56D0096D9F06EB47D5889' : true,
- '792EE0B202E6A45AAA85E918497D9C9F16FEAC99500A7940C0FC812ECC42120C' : true,
- '79417B9E9B9B3E70E118AC6FDAFA782BA72701448D3A546540128FEA6E02A47D' : true,
- '79506C5663C38F43902B55BE2FFABE0757A806105C2A18473770E9DEE5322E40' : true,
- '79AF4B79980557257AA892DC9CE02CC8DAE19B98E5C60128F1A38410B39AD08C' : true,
- '79C0A68B7394978630E169EF44D521A7E53EF98358B122EA93706611C5FF62C9' : true,
- '7A081DEE8006EF40615953A1EF9BA820BADAA31338157E69660B3EBE7852838C' : true,
- '7A95B01B834A4CFF097B69C8D84488E0843D9C51A8045BF5AF6AC2CEAB65B079' : true,
- '7AD220DAF434C50200258E456AC5EB570821D33873A0238D87242111CF455A35' : true,
- '7AE7C2EA08D84EB5EE0F978D061FC9D6DDFB57C1382D5215977205894898E0EF' : true,
- '7B90E5B537B13743AC7B5B9F3EA28B3F5F5E95A6D9F4AA0904DE22858F38C780' : true,
- '7C63B78CCB8DE59051349EFBA4A9E34EB627F65855F3C754312DCFCDBFDC270C' : true,
- '7C99FBE3E1BF4CE4683186F8BC44BEA34B07919C1542ACDE9420CD75BBF3F388' : true,
- '7CD7424448AB83F8F029A00A71FB658B83B4F91FD3D0C32D9ADA20C23E02357C' : true,
- '7D100CF85EE12F47C6C9755F00CEDCEBBFA513CEC80993AE5E7FAF6F68289C23' : true,
- '7D3EF8DEBFDDD39FA7CA90EAC62E660639521686926488A315B10FB2A0005F6A' : true,
- '7D7CB9E4195E89426B889E09DD6EF0018B702EEA4C8E1C5C39DDB538E20CF150' : true,
- '7D817F280F1D664E0C9E717287D6AADB1132D4F3A3E2001B94009119733C9434' : true,
- '7DE8C95508E4933243E3EC7D7C222F82A250E1B71C5619C547FCDA51146392FD' : true,
- '7DFD6433613550E46711F591EB0B0790233460AB951DCCB4B60B61C91C359B83' : true,
- '7E01E1EBA9D9E46D3DEBEC868180199AE64DB3BC878F66066E91CB4C060B55D0' : true,
- '7E0AB095FE17F430AAE0B4AB7490366DF97BADF13AC223D96AF0913D6919BE7D' : true,
- '7E455271258308A370638B803981F4B05C819378F113C77DCDA5A91B9A5D6CDF' : true,
- '7E5A5F757EC2E17DB58177DB695DECDE6B3F7AECD795B207BA26ADFF2F8A0A00' : true,
- '7EAF183A91E8DA3866531C499039CEF3AEC4F214BEE293F268A28616B67D0474' : true,
- '7EB7AD799370443234A196FF0B9DBD7DA1F60A67C3857E41548072DE24BF479B' : true,
- '7F1566D05D1E3A90A9D5D551AEF51D2F1827FC9E82922F2BB32A08CDC5BDEC7F' : true,
- '7F3E5591F3F957AFC595F9336AAD8B4F578DFAAF1794FDBB7944DE7038AAAA3A' : true,
- '802B6D5941983A1F76B514028EDEAC33214B4F27AA490345BCE94DF9B1494516' : true,
- '806791E1F1BCA3B3AFECAB7D1EC6FD66C2616C6CF13A3256AF0D53AB0A759BCF' : true,
- '807849BBCF3FC901816BD5C23E0EFD51FFD9485FC34A5A086174A7E91DAD175D' : true,
- '80BB61C435AE010A1BBBC72F9CDD1BA74CCFFAEE4C74E07446ABED3DA2685427' : true,
- '80BCFC1145A7F287ABB29FD26F6FF09F2F9299D43DBFC2214B15BC346D1A7EE5' : true,
- '8133AEBBA592FF513EB1EA61723A0CEF57A583CDE66794FA9DE2FC0A8F573B54' : true,
- '813CF894750BE7FE8A0C8B5003B362D62D400F6F08BC1FCABF247172A63B17E7' : true,
- '8253A0516BAE8FA0D24AB03D7E4AF8898FD1EB8333D2925CE515FC3DB6ABC5CC' : true,
- '826F129EED33C26A96D2FA3EA71B7897E065E2A68280A77C03E948C9EAD80945' : true,
- '829124925C3F7AB9329A17C8329D55F04DE8C98994845083D9293F2546CFEED3' : true,
- '82AA24B77148C70C4C53F7E2F7DF295CC04E6BCA7AC4AF2635E8D10616F8DF84' : true,
- '82D1AEF2AFC46271D18C5FE50811DF9A5EAB812156C2FE6F531A34FD529E75A9' : true,
- '82F25208D7357EE223C6715E802CD0F8D019E3004DEFD76A90BFAB18D2DF07CE' : true,
- '844B51F620215D6845EB82700563692BDD5EE144D097D24FFA8D99C8FB5FCF28' : true,
- '846E636F41C74FCA1D44474F8B116D67A5E820299071548D70B98CD6ACAD2E4A' : true,
- '848E7A1C6E45D88BF111E43067FCF92F6F17BEE0B52C99381668797B108FE80A' : true,
- '84A093B67AC79FA09CC2E40B54BE4027DE363B86EDF64B623BC346188B877ACF' : true,
- '84A8C623C4304D57CE03893ACBF4E51FC9975C58658B89127508E5C33BE992A7' : true,
- '84B91F7D19D03A64195173E28A98C6A24AD166106B5AC14B36A404C45608B2D6' : true,
- '8540F78EF676D50879CFF30B3CAFCDCDB1287CE9472D0E39AD221AC0B049BF5C' : true,
- '8544A63131F49B49F2802FA5FFB5BB62D726E1A5972F668781040E2342770042' : true,
- '854588AEA6C97F0F9363D6AD09D324D0D154E1693A733A728287BE922B8FC86F' : true,
- '856D54922C6DB9C5747A1EE5ADB099907C63E0BB928B1D00BEFBF81E6B0E83A6' : true,
- '857EB3AE3D76F7A86260D7DF2583D65053D7DBC30558CF41078A51A841A15408' : true,
- '85CFBF3F71BABAFF31DBBAE3EE6615A269748572AACEC462E501B017A4B58C2F' : true,
- '85DBFA1260307B3DD783BA2AC6B1A3CDDFF073A9D0340834C4065EAE7E8466E3' : true,
- '8620FBF8F4B3D858B8AE9A6EF3423068026CEAD38ED1B70B12E65A66EBE62845' : true,
- '862F95FCB6F1CB539D4F62DFE7DF6F092DFC8A8120D2CC3DD8D62D75017F91A9' : true,
- '8632291EE6C74182159207F88A43B60EDD3715D9B23CB51B878C7DFA413AEBAC' : true,
- '878C8800E459A4D4B9989B0DB92C628E8A13574E71B3324E50484F70555B840C' : true,
- '878F9A1345B5F3F76831E0AA2CEC43E51FD88455FD70FF0C671DDB8D8646BECF' : true,
- '87C002662AAAB5BE7B6A7CF4B1CE9036E3A2A70A0A3CD80F64005C889ECCDDBE' : true,
- '884A5D3C3CBA39A5DD7D7199AC1624ED1DC87503CB52760360AD2F51090CD12C' : true,
- '8858520A8D4E5C88D777C33963CC7F43E796B555E7FC573681B59DCFAFB43EFA' : true,
- '88A9F13EF3721A05CD57C6E13E4B2D6F699C00312E92C24E04D86990177BFD3D' : true,
- '891419933107B0EC0222BF502DB271240F352C825D2E32776842C40D13C2F8C1' : true,
- '8998929C795E1C1A4D769B9E0FB886892FBA9D8F1542DD894E15E12530424BCC' : true,
- '8AA440E22415685F4A009BA8F14D9B8251614D78159C926A712542B0E9FCA143' : true,
- '8ADE74E6435437386C63E8C22DBF3BF0533A4B49E6668F5F15824AB58AF721D0' : true,
- '8B2E32630DFFDD0948A96CD94C57A433B9135F4949D2D93AB30D12B71AFF9D21' : true,
- '8B41B56DC76B41CBEF93FD4F1F74525CF5B11723140CB81A7DD29AA3D95703BD' : true,
- '8B52AE402628DBFA70BFCE1B172D676422D5E720F7E3AE2E7B195D4FB4E3F285' : true,
- '8B83806B610FF233FDE11E892A0023140E5CAD1500847E29F5E5C6CC21BF33C5' : true,
- '8BA369EB69B5D03D361F094FA58F73BEDE76E58E2ACC79B62DEBFA58CD695B1A' : true,
- '8BD1BB8CD29EBAEB36A58AFE2BA070CBB92EC003064B71AEC49E812E39C2874E' : true,
- '8BD3D0A64D73FCD8450DF0224F56F2B44F88D2B89B94EBBA3B5CB7E905DFCB74' : true,
- '8BF51CFA32BD64F3D54AF63295B5F890FF439D7FDF854D43F25F4D72E396021F' : true,
- '8C2DDBA5CA9E4CF79937A5A3AFCA79F371B6F235B37308EB53ADF12C319A7EC9' : true,
- '8C6DDA18A4CB339717E1321FBFDC9A3ACC52F2FEF6FB453EA389A2B43FFFC63C' : true,
- '8C742B891F670721F4F8E1D4DADEC74C9E9256E0C7D132578973823FE27C3A33' : true,
- '8C959CC99EA9E228577582BB36DBC373836E4D91CDD4FA3C89B20A289B11CD23' : true,
- '8CB93E0ED93C6730B58CC0314B8158A7A92184312C53A7CDABF05B369CC7E730' : true,
- '8D0394524B030A612B174B7F2FA75A535F6DE732E9317A394BA9286CD3F42F18' : true,
- '8D0CF6F0B227BE9394DA0DADABAB81A44900D104A915645ABF030220F3AE187C' : true,
- '8D1EBA5F6A209614B68AF63D583392DF844036E8BE335440D0740396366FFC4C' : true,
- '8DD64FF5EE29EAEA20DFFB1B446F1441CD291260939D41C7784AF872CDD60FAD' : true,
- '8E8FBD2654D291051FC080C47960747B4191C58D85765C77CAC1C239FF3DDD1C' : true,
- '8F1C043B3C47DD689F52F48EE4FF0AE4DDCB8D1F0C59619B65C6FD3853DAD0D1' : true,
- '8F31ABA69837A432E88579184085B0AE867412379E04666EF880DE539CB03257' : true,
- '8F8515B35B665B69D0DB9661EAE9FF0829B71CF4AFEB3BBF988BEE73985F5D3B' : true,
- '8FA478A1DE3999FD32313D519AB1BF7DA3C485C1EC90176E34F82CA74EE170B6' : true,
- '8FA49556B9E8C97F768F94A3D2653ED2E3E927D31EC7A916D0744BFF07B5E685' : true,
- '90C2F31A64343BA4CBEEAC90A43FCBDB46932CC21CC58095FB6D6CDA7B33F362' : true,
- '90DBD3387014AA593B61432DCBE6201BCD1ED7E17D539CDCBB996D2E00737EDC' : true,
- '91490F346E9CE34F77126105D7CB01AD7C58E0891B398289095613F1D1162F6C' : true,
- '91728081A414570C9CFDDB6A7F70CE56010D44F4E165762B73F4B05436D85351' : true,
- '918B02B75417DE289310E10FC77AF7041D1F380F02939D64F063776F121AD61E' : true,
- '91CD0D276921BD32F4C8616BF2676078C24E39AE1B30943C5263AE0377F41F21' : true,
- '91EE28B14AB2C7571BE6CDE2D75FD4C05C960FB033DA819EDD463D5D3C494591' : true,
- '9244CDCD0DED69F9AECD82846D0467062DDA89CD32D8174CD69F9DE602AED97E' : true,
- '925F02E984B20FB33B8343D81E8E22C24A55CE4CA9013260CC828758C144F73C' : true,
- '9295435D6B38A570B2F537814147422BC442A7E39E1AA307550DDEF0AB93C3DC' : true,
- '92E91A15A0542407788FCD78EF9287724B2B25A27F703C9FBF2F5BEE709A68F3' : true,
- '93197C3990B717E3C0A72941DE6DC382265AF352701F62FE07714449334CDD7F' : true,
- '93671EC41A75DADCAD2454D2D9951DA643ADD6C899C6F4EDF6E8806217949732' : true,
- '938B76624EF6CBA932EECEE4624D9172B10E681A4C42609117A073A5834FAE84' : true,
- '93DCEAA3D67BD8992097C446EECE4A6A02DCF89EAB0008EFAE7D0C9BE26B7C00' : true,
- '9446A5F64DFA26478AFBF6D0F3A0773ACDD46F1A4F7691A72BF24A58A411B340' : true,
- '94CE12FB5F69E4273C8F813ED37ECB954AD667BC81C4E37DD27A40C291DDB12E' : true,
- '95393B2FBDC6AECDA55FDFA4F7BE33E3CE85E1BA1AEFC030F2E9C44EABBFB536' : true,
- '956DE14452F6966BDC2C3CFE4874878D446083AE81BCD83C705B8E757FA0A390' : true,
- '95A4DD514D4B5F9B29118B3CE20FD8D4996F40424D7D64BF678A252262608C70' : true,
- '95A80082CCA2E52DFF16CA0E49B9FFE32F7ECB93770D20913605BBD47A2C65A6' : true,
- '95EEDB5E6C8B8552E29D7FB0C607EC68AB3D3F88A3FF97F4C70D7BA9D69C8521' : true,
- '9658D54C28C27DD6E9B79098D7D86C1EA32215492E8AE9DB225E3410EEBC39CE' : true,
- '9668363E5A4509F63E66C774CC7374E8D7654D0D63E833131665F65BB0116D90' : true,
- '96B78900F165A1CA3843F3036950C7A5CB299CFA98F7A1BA6950AADB5DC1459A' : true,
- '96ED7F4947B39E44EDCEEA05043F9B286C35BFA932C02D88A00B5338BE7829D5' : true,
- '9736272DB032615E95E0C6E413B0581BFDF19D9F398447A0512279743752F7A8' : true,
- '976ECEBA965B747F498F8E4D26E3BABEFC48A6DD2645210168D7D82BB97C15C5' : true,
- '977C77EDC0AE3D98F2FE87B8C309DACC9306DC575D2D8FC358973DC716EAD715' : true,
- '977FFC2869C36013D609F96B5C19E88EABF21E18BC7C80E1F8A63DB2E9FDBA66' : true,
- '9787C483E07B0D1A0251A93D9F86495C6E39D25375C395E9939145D6C1E818D6' : true,
- '979F95AFF9D71DE4B8ECE178862627DE62E0E24E5ABDA2E8A20E5177E8F428D2' : true,
- '983120089E357F1255EAA175207B7DB3462CC8481C2D4F8150B5C4FB93E274C7' : true,
- '9874E435B3A12419DA88FE7AE98EEFA9DE47D098DC95AA6204B499202AB1A0CB' : true,
- '98B754929FBB1859BAE00042F86599BCE3E4465C42503150BE320FDE8B82166C' : true,
- '99A4816C0BCDE615242EF4FCB3CD6E84EC60952E9F97E248424080DAD5D0629F' : true,
- '99BD9F4C25AF74058C9E443467C9FBA76EB37661CBEF5A1E1244D8077200A250' : true,
- '99DDDA7A8D6D222C3111DDF5E85A45261AE9A7CAE2972567996A7729D0FD6E68' : true,
- '99E2609E0CDCFD36015CC659568D5C5B01CE4F7FA0C5671738D525FD8C518B44' : true,
- '99E437DA5156E02DE52D0D95AFDE0FDBAF8F626F4D3BAD2FFFE7F4C75D76BD60' : true,
- '9A01E5759613554A5FAEB7E8889F18EEE16568073CCEDEFA0485F01969535C43' : true,
- '9A36248A6C3142FB6AE62E262E0F519CD609A0207BCB6891443BD5AA5C02AEDF' : true,
- '9A9B087A4581C1FE71B3F4D7C041E93D4EC1093B01AF3ED96548AB93254EF65A' : true,
- '9AC79E2916EDA1EB936B7FC6779F139ACC665C33F143340C5CE540B69F2E9F18' : true,
- '9AD27D42F0662852A1C45E122C3577E23F56342DA9598A26FC0D9B15C17ECB0F' : true,
- '9ADA51307C3FA225DB6F8E1FA3A218E477F775FA3D3DBE839232E3C385310902' : true,
- '9AF3A66EB67ED022E3F99B1E810BA8C0A110F83F0BF250914AA5F1F0989B2196' : true,
- '9B128E182D224AE31F63FA92892A8A322AE42BF2D4723D62F5A6744973C82F6C' : true,
- '9B80DD5C98B0F0A7AE343DBB896DBCE45DA52EB4E31BE057287A2A738D9CE3D6' : true,
- '9B8B430BCC7FFDD28FA85A1B18690D76DE8F18DE340656F63BD1472816A3C83E' : true,
- '9B8FAE805E1D9E43951E8E8D0DCB1A1EFAA3661C2BD974676CF6FCA8C046A4B0' : true,
- '9B98284571E5FBB2A2BE676AE24830A6F0048748FA38D1F11CBCB252505D2E62' : true,
- '9BAE8B30BBFA182D0BC3DCE5BADF78381980EE69F15884A0B93F291EA09A7EB9' : true,
- '9BAEB6606A1F13587AC6E8808B694D02541E6581F2874BD704DF55DF9202D9F0' : true,
- '9BEB9D4CF88A648ACC9CFFA48A687370D76E9F8188AB3BD638D9BFABD2D6AB24' : true,
- '9C0F47FE70B9E636409CD37362B052B40B3CF765DFE80E71D999E7EB1AE1D4C2' : true,
- '9C5435D416BDB4EAE642E2A66B8382BC848B362E3937069725DEFD9282772612' : true,
- '9C7DCBE2DF8C0BC947A09C39B1B6CD2EE137D366554F8CB46AFD80C5FA9C3B81' : true,
- '9CE9CC6694EE295272749CB4696616C9272DEDEDB7A4EF5253F4B7941C6A5F5D' : true,
- '9D28BF964F6C820DD26D42FFC18689C1D2FD43F4C4DA9B35F11CEB8FA24F2073' : true,
- '9D4DDF09ACA4F1241AA5774A1B24262777DD41A3473A029738F72E4084ACA7CD' : true,
- '9D98952A99B9FF1B2B7A86D21F50E311B3147CD9475830A856A4C63798B05630' : true,
- '9E418F784C18C79930946ED9BC408D8E2F694BE1E3DBAE4BB20917F8E1B277A7' : true,
- '9E492AEE3B5838FF2E4BDA9FF98D73B48CA846FBD2AEEDA19FB885A489F58DF1' : true,
- '9EA920DAC71F221B6CAAFD5F1728FA6D4A782E70BD5C0FB1A3789798D8E962B0' : true,
- '9F2B661A4824017A95B29022B95C6768B159D5A0CB1F442343A47A14424608A4' : true,
- '9F5CB7420AFF2B5250A87EE7D0F1878496A34BCADB0971DD5AC3C33465C07565' : true,
- '9FAD6E5AF9CE6D510DA6BF4AC01B74112692E4E4DBA814450224149D0A7653F0' : true,
- '9FB66B76C9B0AB6ED5DA3188A3DC6FCBC369AB273DCA99468C1EE4604A1E9E99' : true,
- 'A0212D4EE874832A0202ECD1349ED750083B1D238DB6E30120702BE1256F53D8' : true,
- 'A03D7CE2FA040738CCFEF1F20872DDC1E321745B2C34095822A51B3BDC07D9F5' : true,
- 'A03F32B0A7677B8D7102BCE24F121EE6CC503FF173C43CDD6B914BC69D954ACA' : true,
- 'A06E313693C42005CB7B7AE33A96E3ABD66E05A57012B6294671FBBEF4A84AAC' : true,
- 'A08110BB7D0D5F694D791F82071E44B4C968D4990C73A402B25E0E0ACA5EA6E7' : true,
- 'A0B4E9AFEFA1B8966355614B201506B13CC213060D2661264491601F7FAD8269' : true,
- 'A0B9ADCD27CD63E8842BAE80188453C09DEC27270C32748A4EC2508372AD36A5' : true,
- 'A13EAF82F0814BE5FA12BFB4D2FFBB75FC6375DF19E16B8490D140CFEB54AEE3' : true,
- 'A1504C131B0FE702B64AA259B901DA2D9B2AE9D85AADE02F1528C1147F98E535' : true,
- 'A15BB49CD56693B9881AD43F6366FD2966AF816643BB107E8A249E07227F67EA' : true,
- 'A16BC03AE3E35E7C39B45D339A22BEB39CEC134D6B9CCA289E873F91A384DCBF' : true,
- 'A16F347518B2C6930F30C6D6157AEF685D1993988846BA598AF8790E5A6C4F8C' : true,
- 'A19514A23AD3729EF69553D8293E9693528EC67609464D4EA0A96CEF8E9C3E05' : true,
- 'A1BF53CA92BD722E7277DF7C8AF1299DE0F3C35316EEDCA31EF7F4BF53CE5706' : true,
- 'A1D84A014F6ED46C07647B77CA8F2C88B9AB2273936AE3128C1DE7300963BE26' : true,
- 'A21691A9D41B6DA9C27DDA03477F63EE4377A978AF1CB6C296CFB7D2CC5783E1' : true,
- 'A219A198FA5CE79A2ADBC1EAB8BE34F086699B9A16F88DD2F823325F7481FA8D' : true,
- 'A277B893194AE7687EBBCFA344178B3578AA6228D2B430BBE2FC8D5EAEE43135' : true,
- 'A28337D306B9F107098D473AF3F34D8C14DCCBF62D725D5F8EEAE11BAAC558B0' : true,
- 'A29725F7446E6A2AD03DF0B7D77B72F9CF0249733B42F48DA80AE41C6B206C49' : true,
- 'A2C85895E192F69BFF3BD6CE420B8C84A6FC87B3A999F84701F0230887DD3344' : true,
- 'A300C56C8CB909C4F6ABAD6A7FCACC5E621BE17D5209717912B3F3BF2F7D6CAF' : true,
- 'A32A8197E25FF03AC02B1548EC597DC93B2F3376E971B143538542A6A2212AA1' : true,
- 'A32C868E44827044CE85B05E7E694717A5D3A7F8B9D28C41B7770DCD84F81218' : true,
- 'A334A1C1BCBBE82C131CA48858CC1D56495D2CE2B598E5C6E81672D7E9FF9FC7' : true,
- 'A33C924A4181FC26CCE183DF2C30AD332CF6D6A94626E2B6455CEF77560438F4' : true,
- 'A35426EFDAE7DC04D5F7926E254D5CEA23D4CAC5371D577ADA3A4AF828766F1F' : true,
- 'A37B9444FE3BB0FB2EC43F2677926EF458D0ED4F0688FEA6443A5F243F10C2AB' : true,
- 'A432841B8E8CE4F3B7992A740AB014B3D78ACD930DA113753E8D2E2E34A5358C' : true,
- 'A4433A490CBB5814065465D0A22C7260EBCAC5646C830971790254E4094DA502' : true,
- 'A46D4265BD5168CB36068465327371B2B9E2ACFBA66E368A8B90CF77A251ED09' : true,
- 'A61D1D1BF3A48836E418525F674E32CB457F4C74ECF525BC18A3035A26DB1CBE' : true,
- 'A6436C7837EB4F0FD89A1F3ECE954BCDC0D76E3817AD0289B64A22B78B071D7E' : true,
- 'A6781D1377008CD9AA9238D2F207B741EF8C42D209C06630E8C669EF1F863B56' : true,
- 'A686BB3EA8129BEA261D5B99357BDD2BC22DE15F0140AFA2D7CA3ADBCB64DE14' : true,
- 'A696B059AC99AA5CAF081FE9DE0F113EF0032A9F799A92663985EA5939B6F30B' : true,
- 'A718CF6FB0B4672FDB9BA1CDB812CDB98423DD8ACC8991780BE5E0FAEB863FBC' : true,
- 'A7636BE0A08F56D7F05A8D69AF0B7199FA7C05AAC123DCE71AB57C538A4D910A' : true,
- 'A82D480B6360B97B8FA507BD461FA4E2D6B73BDF171723C707FDBFD7C9C2C144' : true,
- 'A84DC1DB143EEE938A45743268683770BA0FB2EE69A4EB4B131841555CF1E124' : true,
- 'A8FFD3DCAC35478A6187DB3E317D7A9BA8D9823BDDA70440B8FCD5D83F49B836' : true,
- 'A9266E0A665A00C7C4360A7CE3FE0B5ADBD6E7E20A32677E43BA30FCFE112E30' : true,
- 'A9869713F6E5332E3F4902E82E81EACF34994042C411A28C8AAC116131EE90E9' : true,
- 'A9913780644EF0A55C80B8BBFFA76A7453DF7F9FC04E9BB09FB9434240D03961' : true,
- 'A9C3D776062E86182D7BFAD9005B716E1189EBD051D477078341EBA83F602DC7' : true,
- 'AA70F6E381B7B7BE508E8D5EB062186FB323FE00A75B264F43B771B731FE96AB' : true,
- 'AAA0B610FC8267716C7703C164E8E8A47B0DB68F821405F83AFBF5F4D7BB5219' : true,
- 'AB33CA8B659481B0120C5A227487E4F99D28106362B530D054FD812F7278CA51' : true,
- 'AB3975DCF7B531638F8E8EE570E416890F6E1FA4DFB66CD2EA62E81F6CB19383' : true,
- 'AB664D408382E848341572B2B10C2B9D1279B95F0AD02B8C5EAB00662D560C68' : true,
- 'ABD63734E1790C763452EFE508DAEE4EFA8A98F1BF72A2DAEACE57B02409CC33' : true,
- 'AC1199A88C3BB6564557B6BA422B776E8032D9457EE1099D0BD3E53DC44F73F5' : true,
- 'AC33C7B064D8FD9A0E5A00BC70581133E949AA0E61209B55010E310791339D4A' : true,
- 'AC523C58EEF332E2FA0491FD81659997FE32F1EEA4F7694D9C149ADF4B18BF2F' : true,
- 'AC72106DE06D4C1A17E641546E6DC5C53A1F48FCED34B9BD09368429F828CD70' : true,
- 'ACD1D0DF8BE51A80520D345BB16B04745BCBB48B01D936B018FFDA71981F817C' : true,
- 'ACE055C2E550D7C9F1D4847A26B21060A324BD4FF71EE2C3A8A202271EDEC115' : true,
- 'AD0C2E82F0B607A9B4D0571DF0302FF442E2B99ECE91C18E22C416B46B67E4F7' : true,
- 'AD40C15657CEFAB57F6A71035796462F0184B0AAA489E601087DE329F35CD757' : true,
- 'AD56E6AD659C808689220F5959DECE86001E37EEB88F452E2111BBAD634B4AFC' : true,
- 'AD5A935C6684CDB2459FA1D67250E8F9B6A6CB6455BC628750F9633FCF6EBF62' : true,
- 'AE51B75FD36BE0B6CF478F2441E57E91C216179A93BC05E35983D5FCD582CA91' : true,
- 'AE7BAFD9FB7AB3D87D0D58774420B314E46538D2894DC58DF5F5614DFE7F0435' : true,
- 'AE7D10798CDAEF50F7599FB03394DE7DED48C3054CE987479DB018E789E3718C' : true,
- 'AEA0E3A8AC6F70B681BDEFB28D9F156116F80230149D8E5C9DE76E9062EC015B' : true,
- 'AEBB7634F9BA9D293B5B1769E5E14C8EC2039487FFF02532DA9197A06DE84F77' : true,
- 'AEDE30ABFD76FFEFF77B437F8862FF677913239CB0DE0360FF93EDA6B515F731' : true,
- 'AF6F25BC29AA257FB80826165B3AA5BECB2CEF777817998D0619544F02FAF897' : true,
- 'AFBAAD26120F25FACFB7E1ABAD16A58455814B1A46DA986FCD04330A88DC1502' : true,
- 'AFDCE2C9BDE084811D64F5408E8AF94945CFB9F7FC69C9A27C8EE39102858DD3' : true,
- 'AFE6418D301202651844A84CC8B19A56C479D627DE922366E532643D995470A9' : true,
- 'B040095E5483E488179D07D81A9C14C6CE026480DBA570A6D16D75A7414D7499' : true,
- 'B06CD6AF9B4156B4379FF3C6C1F8CA182A923527D0DD92905394DB3446A11D5C' : true,
- 'B0A3CC901A3D58371289521F9345843F7ADEA438660729BE9B7B520DDB0BB965' : true,
- 'B0D656C4047A83E7012302B7CB04F056FDCC9493B506495E5DA4B0B97A9C1150' : true,
- 'B145A895F26B09540185848A600F7F58C0B03740C17B61A1B43BDC652740B80B' : true,
- 'B1991ED1894F821B66AEF2E26E0834CC796FFB43971A79588A44CCBF7E8B3076' : true,
- 'B1B58B7EEBC1947CB840FC4C2713D0DDB23DEBC75E58DB15610AB4EA9A1DE1C3' : true,
- 'B1BEE5F876D9695E23EBE9D0BF32D0DB4D05096C004A073487C5B3FA26719FCB' : true,
- 'B1D9B3EE2512A48A8E703E2D2263EEB4B0A3D24963F5165DB3719CD4750D2986' : true,
- 'B1EA0EB5DC9C9766C903870A4E9DD90C92C8780189ACCADDD9012E1D9911591B' : true,
- 'B2618AD6AE584F2CDCEC050ECB0FCE8E5BF0E9E978AFE692E4A1BCB8B7D03044' : true,
- 'B278FB3D58DC99E1CA192EEC63A0F34F9EB8294A23EF98C73F7C5F52A5C86FE4' : true,
- 'B295FDC9D7462488EBD4E5FA8E5B062FE5E2D0432C6A02B99F4CAD1F9BE6D0BB' : true,
- 'B29A6DB4686379EB52C1D8F249A74FA55A1DD9F2162B0B3E0683912C1E942437' : true,
- 'B2CB5A2A69339A575A4198D5B76822E6A0F90871A45C8348F2A060CEE67EC98D' : true,
- 'B30C7833C729209E938D2EDEE007438214024A6E424A849064A9B563040DDD39' : true,
- 'B31C07387E56AA457F17CA3D3A4C485683253CF387E6DCE37469B6A8E51CBF29' : true,
- 'B3251BB9A1B4F219400E69789FB08CA2BBA396C6D2FD3C4B69F4B7E1C0DDB615' : true,
- 'B33419AF991DF06128CC6A1EF6CAD190F68C1903CFB16B5346D0653C9C5139CA' : true,
- 'B3381C627EFBEF5DF3BCC9DB71A9B6E4C0A4F3114F7E7408A356FB33FBA5D20B' : true,
- 'B36D72C8B1F436DA49520421FC0A2869A9952DA405DA5E29EC3A1919453DD6F5' : true,
- 'B38307BF753F924511125E6FE9542C79A8541FCC780FF6905BA237A4C7FCBB13' : true,
- 'B3B278DD571DDC491FD26D3B0942C78EC4A1AE3D9A5D07C1E317CE901E6B8979' : true,
- 'B4130785116E5A84BF7B191696B213BA8877228388B18C2DA38DCB9EE14AC8CA' : true,
- 'B458C6F566E833CA5856703868BF09531CCC61D32AAB1BE65808DEEEC56EEF25' : true,
- 'B478303C0A26FF8A262C29BA3A9683FFC4CF075735E637F6A958640C5EC33669' : true,
- 'B4C49BF02ECA8D4E0648B386A408C377ED9A9E8E3DFEAC1D7904D3D14C5E2F76' : true,
- 'B4C5319F6F6A80B60C2A5A715FB1444F974024960339D49E0301E7F5A530595B' : true,
- 'B54B1776D34DF92E8E090FBF0C927D9852E6F18F98E6F306AE0369229A4AE2E6' : true,
- 'B5F50267B0042B154B8529FCD98F5E01C986F7D23628B49B63011A3C90398CEC' : true,
- 'B613D69F10DE096E664C3B4AA083E0BC9F50A98D0F9B682C496FDABB2E4AC9D2' : true,
- 'B663B6C8C60A5969BEE4F6844813AAB8945EE2CE2253CFBA67500B991CD8A07F' : true,
- 'B6B0AB34677500F9A39F33BFB229A8B211E9A75506BC0D4E894DA99804B40603' : true,
- 'B6CEE930054D71DEE1D167A566B9881B8971F7EB4BC4A34FCFD9DDB3DE311B9C' : true,
- 'B70CE73DC10ECA5F97059AFEA5A65F1B1CD45F3137BADD7F3A12DD1D6A468D82' : true,
- 'B740ED2F64278126EAE242BE49253ECE05B7EC944F8E201306B5128F82C0699E' : true,
- 'B75601AB7AE44FB2C77FF1E9C6FBC4B4D9ECB548009BF40C46CDDBBA8C0FE493' : true,
- 'B7EC03174DAD602E897345B072749AA86CAF05151062989E183C3039DE25569D' : true,
- 'B8845702F28C3AF9B35D8B5F1DFFFA014CE411CF592B18395F700CD8B937F3B9' : true,
- 'B902076C4F3E4FC9D45AE90E5AF637247D3A4566DBA2D6DAB15364828CF7BCD3' : true,
- 'B9891F4ABEA7FE5802FA2C07E596905422C39B16E36612B37FFABB81F49A0BCA' : true,
- 'B9B8984BD73419077A912955DEF673CCB572907E2C494256D627DCCAF86226A0' : true,
- 'B9EF83009F5C8B4C3A0C1B8EB263B4AADA87D4D2263887F8AFCA40FD4A7F78CE' : true,
- 'B9F8D7E05743BCE5E58CA2A0CDE89E7E1A9397417F75813B492785D72D4F8510' : true,
- 'BA43FBF51015CAA4D822D17A43F4DFB32561617B62E711D921112F12B76F9E43' : true,
- 'BA5BE146EA09B76F106B28AC62830E5240D1B7DC43BAD171EECC9998B1718E28' : true,
- 'BA8089CC9A0F25A27251DAD14E47714A331C35ACCE2EDFCC51CD73EFA83E2EB4' : true,
- 'BAFBC5503CBB29FE4D094BB0B0D04B22852E9120DD54D34D9247A4E570FD458B' : true,
- 'BB3C208314AFEC26DCB183A0E4DA2C1169F9CC435F1EDB38C349AD97B2C3F6B9' : true,
- 'BB998A2EEB4ED3C4251EB69296AE91EAE7360B0CBAF690FD250C38A710ACB38A' : true,
- 'BC0C5DBC1020476F067127D89E5C9A2AA88F141312919D7C0BF1B964D4820FF7' : true,
- 'BC86367AF49A238438C89460780C94DE2C1E49021437B3DFC590A63F46332888' : true,
- 'BC9B66EC1AF4106896624836D64B109922DA4163B83288E2131FD9A012CC95AC' : true,
- 'BCBFC4B205B7EEE5EB4D94029E1C3EED4DE049B3DF9FA6DB1D66F81B1247E9CF' : true,
- 'BCCC1893C98C4BD177A414C7B3D5EBD74893F964FB9A62B96B48A84F1FE64B53' : true,
- 'BCE02BE648B8A1EE092574F3D453388649082A1B72E7AFE7ADBA310EFBD38DE6' : true,
- 'BCEAEC2D8B8C18B58BD320D77850EC38285F419ACA8A9E939DAE7DFDF26696D0' : true,
- 'BD4309D792EBF40F5962B65405970EC2ACC7ED1109A1F5FEB486C84327FF6D46' : true,
- 'BE6E70EB169369668EF9523107E95867B1B9C0320C750180303720B35CF09798' : true,
- 'BED1A9D1A4414F4D465F04F9D8C8EC331F89388E19419D0371D0D177FA60287C' : true,
- 'BF7EAFFAA2647F47D816A83ADD1D7579F0CDDA690CBA00F75BC6ABD564987346' : true,
- 'C0144D1B67F2AB403DD08B73E5F1772F050E9713D8F2FD98BE999FCEE51D2792' : true,
- 'C03976BCBA4A9A4ADD099CE8F878A6DFF9B066179EC7DCF932EC4AA737FE415A' : true,
- 'C0A561684952AE3CE41432388E1F38C46B9CD607B4E555F46481AD90870CDA8F' : true,
- 'C0AB8B4E884A20E51AB9325567115F185D18654803E08E2C2C6A4632D7ACC2D0' : true,
- 'C0CDB9DCBD1FC873712C871C230C327A9E53E6D78FBD0E5CE1ABED5DA0D1C7D2' : true,
- 'C1EB50953EE0D16410A5DDFD97F5C05060B39F2902807F139EF6B015D0C66729' : true,
- 'C2118D84846AAB7DE521B0379672EC639CFD745D82E3D504EF68CA723725C5F6' : true,
- 'C2295D7C0FD4FC4DC7681FAF3CE851F6B416405554781C77FC8212DA169C258D' : true,
- 'C2C9A263D5F88D7064870FD13AB8633A10CD97E8281F0ECC49C2C1C3F54327A6' : true,
- 'C31135D0EE5E0B74D6A39E1FC67E9DB5CEAAE9F1D15338359CE02643C198634F' : true,
- 'C33DB47CE54F64CE33394E20A96D122EFB6F8DAB2584CF26120D8A8C5C380245' : true,
- 'C34069193CBFC866E03EB745416B50B25BBCAA00B5DE50D1D62D3365749CEDE4' : true,
- 'C34CDEA10E72069587970C7033095864B6F069B6637C6263A1E7A7A5187923BB' : true,
- 'C3801A5BC7707426FA083E828435810BE19C86FC9B94E18FD804BB3394459BFA' : true,
- 'C391E32BB11DD8F6F13BF71E0B9CE225364A50006E3F91147EDE39D2AA6E70E0' : true,
- 'C3DCE474FB44F22E6497A1FCE2C45DEE167853134C6F1C21C13F1707B0BC7FBC' : true,
- 'C3DD9BC59973438B62543E24CCB26B2724CC2346B0AE921EEECD064B50AA20F6' : true,
- 'C40FBDA777FF842501E19D444F8F3EE9B537C0D828537D59FE819AA9F9F3F145' : true,
- 'C4BDB4AF6E9CEE6017D3FB7ADD286E4B6348088E14D994CF698095DC86C939EB' : true,
- 'C4F9741D83486FFC06A841624631206EA81F82C5AE32E4A588C0911469989BA6' : true,
- 'C51ADC8D1B7014B4B9DB3EE230C67BF6F164956C390D41E5F8415977D9D9491E' : true,
- 'C58563CE93B0DF900E0681376244F32977F577D130320226D3BD9CF82863402E' : true,
- 'C58F0FF2DF810FAC8EA095F349A2E6D7E0D9C09D6FBE7D45895408530E1C75F4' : true,
- 'C591A346116A065185360B973A875B0329B48D924E15BE8D4FC4C0B849182732' : true,
- 'C689F3B9238DB156A7D563E76DF45FCA607B4B5F6CD62BDDC1AD1AC720E67952' : true,
- 'C6B197D2663DD850504C900569A800D914A5C99FD7E0DC7C2424A063B6C42CE5' : true,
- 'C6F63ACDAA452E008A1DCC711CAD36D00AFE55F958F2CC82A139BB53E27D11EB' : true,
- 'C7056A5FFEA8A4751271C17CAA9EF3BBDB7142A08ACA673522EDFD9AD18AFE66' : true,
- 'C71294A0124420512711C918C36F77192D2B45CDF8C99824B4BC862D0B31C3B0' : true,
- 'C74B4D9C0A7CB22F6F7B60BD4CEF94A34820E3A0419CA5CCA3CF187612693FAD' : true,
- 'C77AF2D81D578D009F9859CDEFD2E19A5B3DFA98FCE909C353E235D650DB514F' : true,
- 'C82AE26EBA1954BC778047DF9684F330C424E9FF778033485305AE0C87E57D68' : true,
- 'C936FEC68191D7AF75334834906C8CFB18F91FD53BDE7C2F0B2ACF8100ED3855' : true,
- 'C9462B9099A574DBBB9E2BB9B87C4AEA825DA388EE8153AB74414555420AA6DC' : true,
- 'C95235BA613C42AEEBE5B2CD04707B323083EF4BAF4B11C633288AAA7CF98AD7' : true,
- 'C959CD326D9F3AA21FDEDD42A5AF0B7A2FAA5E9B92907654F29F1ACDC691DBE6' : true,
- 'C9D7767021698AB5CFE3F43AB281F424E1515A52A0868C8752018CB292DE3190' : true,
- 'C9EF931AE82FA91CC76CEC12A5AE787BD3C081F57D4F70751DBB861B50CF38E2' : true,
- 'CA157632863D3E7B499F141741724FA84DBA48AEB51B04A53A9D3DFEA7F70BF1' : true,
- 'CA353A661EFF3C6EA9C66AA7585C19EDCD1C00085C06BB9B0DA2DA78C84D8CB2' : true,
- 'CA400A13D999554CB3EE03F1F12F7E578ED5C52CBCAF9748124E3402052F921E' : true,
- 'CA46DA728E76E97AD214DBB6AC9CB1EA2DC87202C88C35E87CE574FC1F2E0438' : true,
- 'CA529AC5A7489D57CEC2D6BA5881213C5A163409BD6946558DACFE899A977009' : true,
- 'CA846077B68DCA99AE30BAC33929143E856784B64E70098CBC7FF5BBD85C824B' : true,
- 'CAAF21212D1AFB10BA4844150A49541967BC1C9879801E43064429A632DFD941' : true,
- 'CAF98B60B1CE36971AD2DA67A18E72E53345EFCA16382827BD1C2022D009E751' : true,
- 'CB133229997821E418467CC3A72F77A7B9E31CC62B41032D6A82577B7AF1C6A2' : true,
- 'CC2E477D4A2640BCF70F232C040954DFC4878E536A4B03E788173E673A2D31FD' : true,
- 'CC8E9439ED527517579A913E8489CA704B4370AE09A823D36431063C53609C82' : true,
- 'CC99A37B34F4914C3E3B8B8D6236CE0E8F92DC77CEBEB09D50C6004D51C8D4CC' : true,
- 'CD35C7ABA0839C0D865DEA4C1DB624F709E5EA041A68DB55842E2C189F38BAC1' : true,
- 'CD749862756D49A24CD4B4893E78CC255639ABC6B8CF7972729F0A1DE547A050' : true,
- 'CDB02DBACBAD381EB4F6854E84372DAD1FD76462ACBC26A9DC86164E81E75C85' : true,
- 'CDE5ABA387C89D3B1CF6E70140F08B323027FF218A941CE31FA979E2295AEDEC' : true,
- 'CDEA4B65584E4EA2889F73E5907E95849BC6A2CA76B17EAD2B1FC7368193B550' : true,
- 'CED6501D3B06CDB7033EE79351EC3080BBC2993D0991AB91325DFC0550689AA7' : true,
- 'CEDFCE64CD03E3F512AC1CB6EE68C26F7C48C6753E8708E3A7D5AC867BA3ADC6' : true,
- 'CF099A3A9DBE3D79F3E420A47A8447A50A2F87ACF2874CA86D49F271B82A68C5' : true,
- 'CF19B1004488D5D9C882E2C4D0A47789618E0BCD6475F6D9C6B5591C2BF333C9' : true,
- 'CF44B5D052E8869D4632230291A81F3EBB7F681276D371161609BC23E40C8636' : true,
- 'CFF31BD8AB9FBB4681C17AA4135E67D402345E32CA8DC9D566537CA530F27B7D' : true,
- 'D027757FD24E68D7C422C10CFF9ED2401451C58A7B839DA3CA4A3BB3AB155642' : true,
- 'D03547E78303C9FBD70A38BEAFE87AA9F266A92275D818D1A8758DCB9D08DAE0' : true,
- 'D07441504C544C3C3374E4314A2FB91266585AE94460B2FBE5CD4292556CA20D' : true,
- 'D0927B6D60E3441E11D75A8FD593A38665AA7D211F691BDA3D0E815EBE303C25' : true,
- 'D0DA9A42796D063B8246DC549D1CDD1D64B0AEF50E7094F0A29F243B51012DC7' : true,
- 'D0F94901C782E50EA3A7B7300F6D9A113E45B5DA8944E956CE6629AF9C4C92B2' : true,
- 'D103ECB2B7F74BEFD44109C1CA30EA92D9016C0F9347F1DF3E5467C3AC20221B' : true,
- 'D10DFC97304D163140768E2D1698B1A0A3AF8331C4941F928622AB80091A3273' : true,
- 'D1C4E4D1F014FB8F889F45AFA39485BE742F64268C662BB28494855E393ADE96' : true,
- 'D207EED2218BA7CF564AD049677741A526B9ECB5BBB23CAF2B817A3B0085F004' : true,
- 'D277E65331EFA2A6668143F8BC5334AF870208332990F977BD7F3588689F4686' : true,
- 'D2785F7C48F180342D70978EEABFFC424D33A495A07D04F32C08B771BC4E43A4' : true,
- 'D39BD0C1656F99A47DA9D2957E2D7A49FC9EDD92CC6BE729C29299ECECFC42E7' : true,
- 'D44D1A7D80BD2F9B4A62E11BFEBBB74A5780B0366CB6038CEC9FBC8C8E19439A' : true,
- 'D44DF644880E56596405F1364D8C3E5301F05ACBF82FD66B671D895288C75360' : true,
- 'D462D57028E10CB7A7C87ADA83EBD7FE9B4DA384D2971BD7A708816C4EA8711F' : true,
- 'D46D29E4176A93E3DCD80BA5861A87E84FB7866B784488A977E7E4E4076DD2BD' : true,
- 'D5846E29C203E6EAFF8D474085653A1F9E2E123C4E9E8C1172D1CB62474789E4' : true,
- 'D5EDEAF240AD74C81017160821DE0FF6470839A2F8AB998D84E7392E90280D0D' : true,
- 'D60AFE53C8CF92DC2D9E8DD1E4003246A16A692A1F619426CE43EEE621319BCE' : true,
- 'D652650A3DE79A5C0DFEC1925007DA094925533D13F14094722A80F936FC9A8B' : true,
- 'D66B21D30F1CC1126A28B6349514DC6191F27FF727857D2EB2CAA9315AD46D5C' : true,
- 'D70BD006F4686795C1CF5435E8557D75BEECA1C5B96DE9D673A5B78E6BF95AED' : true,
- 'D7198C80471105D95103DB11B6BD2F6CDC8E7A7E67DB8329F1FA75C5F5D5E8CE' : true,
- 'D7632272521683A38E88A18C2CC6AED79B2C5E854483BDB6EE83D82BF41B96CA' : true,
- 'D780EB94814F0CE1AD1A2F8A1EFD6170C019F0B446E726C7C874C0730E59FF1C' : true,
- 'D78220C9BDCD563F71BD8139B40A495879DAE9FB1968AE3225BD0D04DAF294BF' : true,
- 'D844DEE1597B654C0E645C787DB52F6EA5C855C6C35626BD7787E71E873CAF8F' : true,
- 'D84CEE3A2993F9D7CA56C6C4B3ED9D4325A3542BAEABFFCB54C4E8F1CFCEFE42' : true,
- 'D86562629BA86C435C0965C4AC302160729F27804FEBA36E211F96CDEFB5DF8E' : true,
- 'D8AA8D8A7A48ACCB4C1B7E6C2228B7BFBC297EAFAB1315643744E3EE4DFA7E6C' : true,
- 'D8B8F53177C1E04D93746C8460A7296707654094814772BFAD31F79C03802240' : true,
- 'D91860DEFC109C7BEF5B4DA289D60CAA0EE1CA53D6D6675C1490315DE592FF7C' : true,
- 'D92D8ADE198EFC2EE43DCDF43C0433CB6B443F71A7AC083FB5C8DF1517007A36' : true,
- 'D92F41BE3DC8903580641073E0220C9B95B803B278C98E81DFF148386017BE36' : true,
- 'D96A581F03F6CAB11702CA28C088D4B71AD8B1CA6C3EFCDD66F5600EE11DA8FB' : true,
- 'D9FDB29EF83808BC82A97839FB2F22C2D20DAB2E6B67BF5862C8922BB1FA9068' : true,
- 'DA0D9391992825F7A10312F7E85568086F18DB901838A303E721E58239158EA0' : true,
- 'DA29D8725034D89C221F415CC5282F82A6502E1EAF416DFA41507BC662C90258' : true,
- 'DA5D20F1A6CF6CEC3AA7028A6E17D8F2E1A60069E497758B0CC938C08F4E76BC' : true,
- 'DA70536D31A4E949872D4E19BC8F111801425FEC6C955A5637D8B413D3C0DF0E' : true,
- 'DAA384D0D2A94A18A14E3DDF7A963E59BE41C06B978F3DC8862E1EE6C8E76DD0' : true,
- 'DAA9CED5BA817CED9942DB9CFAD0210505937A9DB2214298E0BEB831BFC8A31B' : true,
- 'DAFB1BB231A0D93B70726F2D3D8D8C8C54EFFCD901BB415C7A85AF02D09AA2A4' : true,
- 'DB18AF241CF4C262D080396F58EE892725C7FBD138DCD6FC8C995B647588AFAE' : true,
- 'DB301590A7DE580916559C6DE948B95A3F7FC50A7AB8678BC365595A4DCE4E4B' : true,
- 'DB7B1361B066EC2F777AE104F88A846DC163200AEB05B47D5BFEC91B6F13AC53' : true,
- 'DB8FEDEB510592FE37561120F9D27479A5E23FD1F77E6CAF662548F361739971' : true,
- 'DB90BF995B81CC0E7858647DA4AC0ECED0029E7E08DCC52CA18F21B426404DF7' : true,
- 'DB995D854C4EDEF4DB5CCF20B2B30719056F3EDAA0CCF4B9D9C5C898407C5C7A' : true,
- 'DBB0C3CC436B5E592960BE7E8836AE58D8D632D435365ED2EA3CFAA86681E272' : true,
- 'DBBF2D4498ED91C779C81FED5E96F9B5210CE86EA463712268BCAF098FE2E285' : true,
- 'DC8D710118FF258F27ED436F585756252FDB30F42DBB58B23B8CD3B2140E13B8' : true,
- 'DCA17501D12F98C84EE99DF4BC8EFC1FFFA9B65E2BC5A92B20C9296EC61C96CA' : true,
- 'DCC87ABAA2524536C43A280BC52710BF117E56EBB39444873F93AEF18519A502' : true,
- 'DCDE97B03688D8CB9F603AEF4D97110A38679F8EE01975E4B0B55855E4A8DD05' : true,
- 'DCF33FB3953551E4B5F06060A7EC211432C30FEF86FA7B45EE76A8F9F3473C86' : true,
- 'DD55F1E1BEBA4CF9F582CBEEF4A35E1C1DE36750A3403489C1C98955FCE9950E' : true,
- 'DD64C7D9E60AE6748B449ACE8CF9C21B5551BC6427EDDCE1D77B7C7720FD21E4' : true,
- 'DE327172F9BCDA3DBD4E6EEFC759F3EE88FBC635BAD34D76E360541420CDC8BC' : true,
- 'DE411E4537133A4D436E0D730AE192277792AA1D0584E60B1CECCDC736F53407' : true,
- 'DEA472B5BED8DA9F6F5539F8DC66FB5340010F7316FB28055E14EA76E03BBE41' : true,
- 'DEC7DC8AB8ED70C1D2FB2875F0F99FA99FB53E6BED70CD47B244ABA2104DA5AD' : true,
- 'DEF20D4F0C0D98AE8C9786C364182CCD8990A834C96C1F0989AAE9ECAF33720F' : true,
- 'DF0525A7807F3709BAD2DEC2ECC569A1D473F97F0C382C932DF726C79926DA0E' : true,
- 'DF4482289B54CB444569A5436AEEBEBFB348D966D2FBC8C5115376F3E5496303' : true,
- 'DF533C33DB800394971D608B89269426D3A2F58B76F190229C0573985E4F7CB8' : true,
- 'DF7FBA4917800A850600F3E7BD4DD0A717F2649060B300F5AF3B1F490BD26536' : true,
- 'DF905F5C4134B23862761FF69686B4E9C599F8F6D936E1C80695B652392E9E9A' : true,
- 'DF919779EC325DF19EE7186EC1AF526079C1D1552B18AA52004EF01F618266EB' : true,
- 'DFE29EDC6A77622D4963EAF8CEEAD0ED5DE393DD069425FE30175AD008D609DE' : true,
- 'E01A5251FAC16C537237EE4249874187E3BE3AF9B0F1D472E6C69E6C8B8832ED' : true,
- 'E09CD94E0A501BB4D25D5BBB02CCAE95A24D0BAF8CABADEC9D55A74B7D2C5BD8' : true,
- 'E0D7FA4702E25E7F51F94DD0D12C39A352DF48DE10A5249AE2687CBC15020CB3' : true,
- 'E1117A0AB7E1A80334C1C56891A4306CB553C100424773BB0F10C7574CF44ED5' : true,
- 'E1176E46C4FA7841D94FC724013E3D192E7B414933F92CD50EA36C51617A2C60' : true,
- 'E1595A9AA15B24610100AEB57ED619460CA1D976B769B856398EADA5A01F952B' : true,
- 'E17C4A5B0845135AEAE094BDCB314E32E76AF63A3BB51DFF4E47F83D8ACF972B' : true,
- 'E1A55E7ABA746B4A053359D13C91DCD7415F2CEECB7E87292DFD697213986946' : true,
- 'E1A583C63BCEBAC1136939B65CBD0E6DBD7493EA45910275D56E0E2DE209D2BF' : true,
- 'E1C97EFF3C246073604F341DBB3CEC9683EB6692463D85C1D23FA5269D9F3FFD' : true,
- 'E26F4C34273553354334DC7A22DC56A781F2491181799287CC91F12871FEB50D' : true,
- 'E276DC254DCFC8C0F2752221EE5D59EC0C86E714522A6600DB67A05E22E01740' : true,
- 'E27966B8B9C67C751F9AB8315D0BD1CEE334D96A8C5F60C764070EF8B8FCE61A' : true,
- 'E297439120E6E2701069440EC321BA98A5CFF9EA3F407FF16185671E466B87F0' : true,
- 'E2D55EAADCF87AD1BD50E53B7168CCC08561F0172004C1EC4DC13D8166D1A313' : true,
- 'E2D7EAAB6CC0961BE4E734BC1FEA960CB147DFD5A08F789506BB671A4360AC36' : true,
- 'E2FC1229FE0EDF06A3706DB8DBD2344B61A9364840A3E61E6B29CE49A966AC8F' : true,
- 'E30234ADF36D445F582C956B26E63BB76FF13FE90048CE1F37B40285BAE6529D' : true,
- 'E32ECC9EEA662085C10C003A5C910D77A6DCC1E99BD187576EFDD1BFA84591C4' : true,
- 'E37314E72C7304D32336940ABB576DBD7BE3190CD9A5E8F87413CEEB7579D502' : true,
- 'E381DF6792973BFE322D23C6CF2A6C24A4ECFC77F43F03D2FC04EE39FAD7C683' : true,
- 'E44515377AA3F7C1DC61E3A5C1F4C8FF52EC95BACDDAE1661B151E7700BEC1A9' : true,
- 'E469E3D28BF6AB0280F989BA50C11FF4D9EE608BAD2282219A5C4E60C0AD348E' : true,
- 'E4D680D0579075DCA20740BD4EF6AA4CEFD5542727071005774421A247941B8D' : true,
- 'E4F069C24D7162E3C94AB295EA33C8926BDDF79934CA28D8982A35650EB60B05' : true,
- 'E58CAB82E1F46C8DCFDB1387ECDCF227F1AF7FA9DDB14C71E4A035B028E2B34C' : true,
- 'E692108B3683F3C6362DF92476D62BAE60687035B70B9119F962190C9C215B04' : true,
- 'E6EB9DC7D407B4A2F308B4822E5BEA7428CD4520C59934214831D61E95F2BA34' : true,
- 'E72F9E7FF5A9E38975B19EE6627020754197E91E3EC6C8E75C3182CF7E877725' : true,
- 'E7EB8B4D5DE598BED2B9C817AB7D42F1EC99F16640B8C673AF2152D42F5344C4' : true,
- 'E7F4465713E093B4F7D970C89ED3A5E745457B80A974523648F07C6AAFCDC86C' : true,
- 'EA64F2625FAFE2EC122B493D4754C2B090153F167213AB6F07A87C1D993E5292' : true,
- 'EA7AD4DE86B47BEC726BFE21172676F92E0C0BB86888417916CB3123086E84A1' : true,
- 'EAA0454F2BBEED65A2FC7AAB8F308982387BDF33E6B56A1F3203F70F2981083A' : true,
- 'EB11019A7642C75F4DDC1DC9CF3B469BFB4C44B71C615693C73175F16DCA036C' : true,
- 'EB17EADBF0EA09B71BADD853CED1E5170C3A2D9FDE4F5C4A0EEC93E44C4B442C' : true,
- 'EB59182D7ACE742ED7D7AEE751763EF9F09EDF68D1DDF765E80BE40A53AD0E10' : true,
- 'EB6D34EFBF063DCACDFB823734B9788D9FB5E22A48372B7EA8AAFED8046652E1' : true,
- 'EBABE928B643E1B9FD6F61D67ACC4BA6A9BFCC95927D31D265F701AC4613B9AE' : true,
- 'EBD2581C1B0224FBDA489A642503CF3D3306751C336A66EB1816989900DA52BE' : true,
- 'EC521C3B04AF772AF812B63555A7C24BDA282C06EC619E1766CC346780EC6E04' : true,
- 'EC869ABCCE3A1C036F1AFABE5ECD4FDA581D16C0E81E16A2734E6004A55896BC' : true,
- 'ECB0646FEF13F818B1ACD2A8AFE448F3B39EC0EF6F623175931C48DC386EAF73' : true,
- 'ED5F00A17FCDDF01EF8531F5E1AD52C8F02F539C7B985A7C30EC87096AC8E59E' : true,
- 'ED918BDFDFCB9E4E679BC7C1938F9CE412AA85500BA3531FC550AD5213D5BDC7' : true,
- 'EDD929C40001C1ACDABD51797B63D689A0B80434FA323B4F7AD213AB8A530B8C' : true,
- 'EE5B8C42532363A48222B1493803B14EC2C98366CD0C5BA4126F468BA19C559D' : true,
- 'EE5D710097EAD11639F98940D1F32793ECC114F0408856CCB6536F1EF2366704' : true,
- 'EF0EE2FBF54D87B6AC02AEB88050155A27E1A60A5A8C4AC46FF24B529D912B04' : true,
- 'F09ECA7EC8BF7B582C42AEB4A0733A0D40FDFD28CEA2C70DA1BBCF1FF85E29FF' : true,
- 'F0BF33EE5C1D9A83A7BBDCDE95426DCD201D1C071CF1FB58CA4FE3776996A99F' : true,
- 'F0ED1008EDCD8A396F4C8FCE334210E629FBCECC19AF7416C901F6E4D30DFE45' : true,
- 'F0EDB0C989C20672BAFC51FA2710F3841BA5793BE379FC212D7ACC3AD4743455' : true,
- 'F1147FBF98A54E12693453EC571CE8B86C05D7FDF3995D775DFF135E10B9C520' : true,
- 'F11BB294EAD89BC4AAB21DD82BA85FFA6573215720E347D687D6D5D89EE33EEF' : true,
- 'F14532D01FD04640E9B009CCE5791EC4D11FA2979A4ED0978C234DAB8A8A2B24' : true,
- 'F153813F6CD126543E985CEFA06C8B978FE5D4825C189F58944DC0DE17D5A0E9' : true,
- 'F15E12419E936A907F201FD9D6D3DE2E01E5F8465AC4D8EDDCE1E58262183223' : true,
- 'F186AF5F155D63950BB5C05BFECA1273A93DD1DAE796E4FF71AE1DAB791CD327' : true,
- 'F18F115FE36E41A293BB1CA29875EFC7004D06144908713DD45305DAAE634687' : true,
- 'F205928C933AFF1F1A6411AB779CFAE3FAAF43754AB86735DB52F74DB1DA81D2' : true,
- 'F20CBF1FC073F7E7DEBC38DFE2042E2CDC5D82898773D6283C680A3BC966BC02' : true,
- 'F22F96FB88C9D96104167D95B3AD8B5888C92680B0AD13DC785FD5AD3E19EDB7' : true,
- 'F234FBFD807A0302CBF855175C73ABF27C94915B95135E3146C0ED73662DE3F5' : true,
- 'F28C56AA368BC4F8DA6B77CF3F8D2A7EF4994BBDE7DF85AA40FF740DC004750B' : true,
- 'F2C91876EDB36EAD7E4821C2A6581144F1E5A67B2DEF4A5E4AFDF79F5E1CC4D7' : true,
- 'F32ABEBBCFF1BE566CCDFCEC49D7D589FED08B97E855A11466D1734244449841' : true,
- 'F34151DCAD82DAF64C6A0674042BF618A93CA92F6A2CC66EB95D04B7099B20F3' : true,
- 'F35B7EB206DBF6A634A74B51611528984798BC06AF8882D899274B4461A55D3E' : true,
- 'F35B9D7C54418022E6FD4FDFE88C3261FD138329A11C013AD640145D40BE934A' : true,
- 'F3CA880E8CF918E29D956A8306A2A0EB9CF76E82135F60A9885033E22B7874E8' : true,
- 'F3D480D69675A57DC2061544BF7F52B631BB02716680C0E5605413C9B2A6183F' : true,
- 'F402A9D58A73C40B396B5CE756EDFCA68257AC6D8DE80AA8217F16C97512C51B' : true,
- 'F44731EEA5EB2ECD106E24F6BFB87505E09A46EEB921DAAF2351782C5EE13EAB' : true,
- 'F49BADFFBB2D2836A995A12E44ECF62E584F1B8D0740E0EDC7610C0C6765CDAA' : true,
- 'F4CF11FF85427F37B1546E4E840E6E3BC213A798F6912C841863BA2D99D9ED85' : true,
- 'F513DC8D7F8B425FCF55E74BDCF2675EF2ABF98523E5226CF8A2391B0A36A919' : true,
- 'F55617B92584757BB516B19BFCBDA9B4A71237075487651831CD9C5F9C6F5F29' : true,
- 'F5B19B2D5D880A4C1ADECA3D760FCB7E75FC2137B2EC99F3EEE034ADF788BADB' : true,
- 'F5D715B6BE56D1A677ECBF7C26B4D79716F5EC2D2E2EC323ABDFE3442F40BD31' : true,
- 'F5E43F516D61A0329F78A2560454B8346732A9420C172AC9983C0BEFFD8DEA0A' : true,
- 'F5FAC17F4DDD973352CBCD311E21AE81EEFA06150CE85B8C32126D7F1661EDA0' : true,
- 'F605AA2BD611765748A88F933BCBCEC70272F6C6A1A4AC614C2D02D17DAC6CEC' : true,
- 'F6620F848AB3CFC1695D2AF5399FD8FDD8F2FEC43F73F2924DF78C1A26C22653' : true,
- 'F69724886C30730DEC09A32E2BE002216EE35A06ECC2E951390A2C429B293A8A' : true,
- 'F6B9B7A36ADF7095D44420CCDCE4A739926841BC695ED40E78856D8F71D41257' : true,
- 'F74D9E23F4CB53775CA60178347F2A029F77579000B21AA08EC62A1C2932348A' : true,
- 'F754352E819D0C33E6CFC06EECBB4356DB5D8BD1FD2591C7C817CCE662BE2BC4' : true,
- 'F7FC63254BF2472575C6D5DEC8DDF02B24B6F1BDCE03D807B159A69820262D4A' : true,
- 'F805AE1FEDB2D94096F0D341B703ECD4975D773A179555DDC83D424F85578571' : true,
- 'F8237FCE3E7C9B2BE3592C0864ADEF9BA4A6FC3558E172E79DE6B025A755703A' : true,
- 'F94C306978496ED2183DC7591DA0240B513527293E5D522CF7089530E4C58D29' : true,
- 'F961BA44302F5AF5DC4045A7E3989D4B77AD4BDD53DE92A45F39FE56947293BF' : true,
- 'F9C9461AA83C154828777B8ED854A682D912463599CEC65AB54C6B919A47713F' : true,
- 'F9E220AC82D672997DC20E9EE89BF0713BC4153FB5F2EBC8D9AC9EE35A6E494D' : true,
- 'FA14D235A95650A4CFD7A2A4DD80BAF2AF47581E01E412D640F93D6BB79D1C06' : true,
- 'FA1B8F32DE3B7F4ACA8FEF5414B5D985FE3705D0E3371D4FE4AF46698B68B01B' : true,
- 'FA500D7B8D9BED2323488F83C9A6093C012143DEE3E453C1F75738625571E708' : true,
- 'FA616BE68A75F14CA6331BD5BFDBE3840CE34CC3C3C98E3C8C3E10F027389F2F' : true,
- 'FA75601E87823F0B02F8764B29377F4EBB02A179051297597E93FB4B1F5FCAD5' : true,
- 'FB067C05D337FC01FC0721FA712A9E1A4FFDE059A35F3B494D36FFE241107465' : true,
- 'FB1DF67EE132C7163167839175485C179E82024AD59EF806AF9D968A97F2ACA2' : true,
- 'FB3A5B27D3488E28ABA3F303A726C2F0440133025981816FEDF798E45B9B1751' : true,
- 'FB52A9B5EB7A494C06FB5CE4BB4505F32D6C666931AF2A018E6066244802A00D' : true,
- 'FB7EF701469F77B6412100BB2D6399B1A574BB9610186FFFCC0119E14CB2021F' : true,
- 'FB81BF294DB8EDE0C4DFFB7F5528EB3EB406FE435A6D62E6894482D8B42CCC48' : true,
- 'FBCC79E05CC135E183F4963C2A206F9DFDBC2DD0D379A743D5FB301741796921' : true,
- 'FBF769E6019DEA2724DB5768974B5D32E8A91F8045707B4F50552FE1D3BEAE4E' : true,
- 'FC072A7AD4E6E41680493AF4BEB98215D4D2F7CE040C95004BB3A1621A9DD513' : true,
- 'FC2B9FC5D6843065426D6D1E1F7EEC08D92A6569953AAC9F6273BFCA6E6D27B7' : true,
- 'FCA9C3A036EA797D58CA26F793C98A9952E59D37C35E352B67A30D4F8F49FC7D' : true,
- 'FCABE5BABEB2D2785BBA66B5D465FAF9F9A8E74E77AC1161273F49F4261F17B3' : true,
- 'FCC12514DEB82E09AFF7A8B73DAC3CF80683D447101F048804D0B1100169D87E' : true,
- 'FCF4BA663F0032118EADF9D327B65AB502C7A8B336462A397238884E9A28508E' : true,
- 'FDB416F216D943190D8CADA2EB8F138F77A99CB1BC1334246697D37D8C04AB38' : true,
- 'FE3360CC5F8AFA4C464A7FE90DE7FAE9462859FDADB9F2590171CE6081EB616E' : true,
- 'FE4A5357D197340536C61A1493D6EB64732D628B4435BCF43A1D52BCC5BF4CFD' : true,
- 'FE739A748FB17DAFB6CBA0DA5B2164B8E0435E8DA7FB85E7970BBE731B428631' : true,
- 'FEE9BBCB25431C59C14C72C963CEDF437D795B6BEFE79EBF262B7054B0E583A1' : true,
- 'FEFEF80071B0D8E2B57D6601BB353A435A425EAA701827370C3585CE09F2CE50' : true,
- 'FF3E77DFF8C24FE2DC89CE8757B6AE9ACBB838D35AEBDBD9A29D099E211380BB' : true,
- 'FF73EF3C41BC0CC04D28987004C7CC1C52B222AE6FE463A34E9E3C483EE731E8' : true,
- 'FFAE947BA6D3D7E8D31D04F02EEEE60601B0200ACDEBCB12AA5D617F650D5FD0' : true,
- 'FFFB09720CCEF3A610BCB81EEF5FCD614C1602D4968A9DE8400C05256AEDC1ED' : true,
-} ;
diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/code/commonOCSP.json b/data/extensions/https-everywhere@eff.org/chrome/content/code/commonOCSP.json
deleted file mode 100644
index 106916d..0000000
--- a/data/extensions/https-everywhere@eff.org/chrome/content/code/commonOCSP.json
+++ /dev/null
@@ -1,289 +0,0 @@
-[
-"https://safebrowsing-cache.google.com/",
-"http://ocsp.pca.dfn.de/OCSP-Server/OCSP",
-"http://ocsp.digicert.com",
-"http://ocsp.verisign.com",
-"http://ocsp.comodoca.com",
-"http://clients1.google.com/ocsp",
-"http://ocsp.usertrust.com",
-"http://ocsp.disa.mil",
-"http://ocsp.quovadisglobal.com",
-"http://ocsp.nsn0.rcvs.nit.disa.mil",
-"http://ocsp.camerfirma.com",
-"http://ocsp.thawte.com",
-"http://ocsp.serverpass.telesec.de/ocspr",
-"http://ocsp.certum.pl",
-"http://ocsp.certisign.com.br",
-"http://ocsp.entrust.net",
-"http://telstra-ocsp.pki.telstra.com.au/ocsp",
-"http://ocsp.a-trust.at/ocsp",
-"http://ocsp.godaddy.com",
-"https://ocspaces.trustdst.com",
-"http://ocsp.identrust.com",
-"http://ocsp.pki.auth.gr",
-"http://ocsp2.globalsign.com/gsorganizationvalg2",
-"http://ocsp.starfieldtech.com",
-"http://ocsp.pki.bayern.de:8080",
-"http://ocsp.netsolssl.com",
-"http://ocsp.europki.org:8026",
-"http://ocsp.starfieldtech.com",
-"http://ocsp.treas.gov",
-"http://ocsp.trust-provider.com",
-"http://ocsp.rcsc.lt/ocspresponder.rcsc",
-"http://ocsp.globessl.com",
-"http://ocsp1.wosign.com/ca1",
-"http://gtssl-ocsp.geotrust.com",
-"http://ocsp.turktrust.com.tr",
-"http://ocsp.quovadisoffshore.com",
-"http://eva.orc.com",
-"http://ocsp.incosolutions.com/ocsp",
-"http://validator.wellsfargo.com",
-"http://jjedsocsp1.jnj.com",
-"http://ocsp.cybertrust.ne.jp/OcspServer",
-"http://ocsp.digsigtrust.com",
-"http://ocsp.trust.teliasonera.com",
-"http://ocsp.harica.gr",
-"http://ocsp.pki-services.siemens.com",
-"http://sd.symcd.com",
-"http://ocsp.catcert.cat",
-"http://ocsp.certificateservices.eads.com",
-"http://dc/ocsp",
-"http://ocsp.wosign.com/ca",
-"http://ocsp.swissdigicert.ch/rubin",
-"http://ocsp.unimelb.edu.au/ocsp",
-"http://ocsp.gandi.net",
-"http://ca.multistructure.co.id/ocsp",
-"http://ocsp.buypass.no/ocsp/BPOcsp",
-"http://rapidssl-ocsp.geotrust.com",
-"http://ocsp.tcclass3-II.trustcenter.de",
-"http://ocsp2.globalsign.com/gsalphasha2g2",
-"http://ldap.takata-petri.com:2560",
-"http://ocsp.dpwn.net",
-"http://ocsp.certyfikatyssl.pl",
-"https://ocsp.quovadisoffshore.com",
-"http://ocsp.swissdigicert.ch/smaragd",
-"http://sureseries-ocsp.cybertrust.ne.jp/OcspServer",
-"http://wongtaisin.ms.local/ocsp",
-"http://nsc.vrm.lt/OCSP/ocspresponder.nsc",
-"http://ocsp.webspace-forum.de",
-"http://ocsp.luxtrust.lu",
-"https://ca.e-szigno.hu/aocsp",
-"http://ocsp.trustsign.com.br",
-"http://ocspape.cert.fnmt.es/ocspape/OcspResponder",
-"http://telstra-ocsp.pki.telstra.com.au/ocsp",
-"http://ocsp.tcclass2.trustcenter.de",
-"http://ocsp.inmeta.net/ejbca/publicweb/status/ocsp",
-"http://igc.auf.org/ocsp",
-"http://ocsp.certification.tn",
-"http://ocsp.globaltrust.eu",
-"http://ocsp.e-tugra.com/status/ocsp",
-"http://ocsp.bezeq.com",
-"http://ocsp.nsn0.rcvs.gds.disa.mil",
-"http://certinfo-ocsp.ubs.com:53417",
-"http://ocsp.tbs-x509.com",
-"http://ocsp.ll.mit.edu",
-"http://pki.utg.ua/ocsp",
-"http://ocsp.accv.es",
-"http://crl.itsumo.pl/ocsphttp://corppki/ocsp",
-"http://tr-dc-r2.telering.biz/ocsp",
-"http://ocsp.eme.lv/responder.eme",
-"http://ocsp2.globalsign.com/gsalphag2",
-"http://ocsp.ssl.com",
-"http://ocsp.certificadodigital.com.br/serasa_cd2006",
-"http://la-email.corp.valueclick.com/ocsp",
-"http://ocsp.startssl.com/sub/class3/server/ca",
-"http://acbridge.ds.commun.test.fc2consortium.org:8080/ejbca/publicweb/status/ocsp",
-"http://remote.hirschmann.nl/ocsp",
-"http://ocsp1jca.defence.gov.sg",
-"http://ocsp02.telesec.de/ocspr",
-"http://certs.vonagenetworks.net/ocsp/vonsca",
-"http://ca-ocsp.disig.sk",
-"http://www.isscorp.com/PKI/ra/ocsp",
-"http://ocsp.digi-sign.com",
-"http://ocsp.certificadodigital.com.br/serasarfbv1",
-"http://certificates.medsigroup.ru/ocsp",
-"http://ocsp.bee.vimpelcom.ru/ocsp",
-"http://cert1.cert.internal.loc1.gathowin.net/ocsp",
-"http://ocsp-ext.pki.wellsfargo.com",
-"http://ocsp.innossl.com",
-"http://ocsp.pcf.pl/ocsp",
-"http://nts15.etoncollege.org.uk/ocsp",
-"http://ocsp.dreamhost.com",
-"http://ocspISAca.cert.fnmt.es/ocspISAca/OcspResponder",
-"http://bt1svl0a.bpa.bouyguestelecom.fr/ocsp",
-"http://ocsp.co.vectis.local/ocsp",
-"http://localhost:8080/ejbca/publicweb/status/ocsp",
-"http://ocsp.siteblindadocerts.com",
-"http://corpcert.app.corpintra.net/ocsp",
-"http://ocsp.nlss.com",
-"http://ocsp.bobo-rousselin.com",
-"http://cert.bioscomputers.com/ocsp",
-"http://ocsp.lienvietpostbank.com.vn/ocsp",
-"http://sslocsp.twca.com.tw",
-"http://ocsp.mdais.co.il",
-"http://pki.sana-bb.de/ocsp",
-"http://ocsp.wisekey.com",
-"https://ocsp.rcsc.lt/ocspresponder.rcsc",
-"http://ocsp.startssl.com/sub/class2/server/ca",
-"http://ocsp-cpki.telekom.de/ocsp",
-"http://ocsp2.ssc.lt:2560",
-"http://ocsp.it.point/RMGRCA/http://ocsp.extranet.royalmail.com/RMGRCA",
-"http://eca.ocspts.identrust.com",
-"http://ocsp.vkb-bank.com/ocsp",
-"http://pki.automobiletechnologies.com/ocsp",
-"http://ocsp.g4s.no/ocsp",
-"http://vpn.ozero.com/ocsp",
-"http://ocsp.village-roadshow.com/ocsp",
-"http://ocsp.groupensia.com/ocsp",
-"http://pki.rosautoprom.ru/ocsp",
-"http://ogbl-ocsp2.ogbl.lan/ocsp",
-"http://ocsp.southernco.com/ocsp",
-"http://ocsp.swiss.signdemo.com",
-"http://ocsp.itexcellence.rs/ocsp",
-"http://www.cepsa.com/pki/ocsp",
-"https://ocspaces.identrust.com",
-"http://ocsp.dtica.eu",
-"http://www.tys.org/aia",
-"http://ocsp2.globalsign.com/gsextendvalg2",
-"http://caors.wiltshire.ac.uk/ocsp",
-"http://ocsp1.ssp-strong-id.net/SSP-CA-A1",
-"http://cert.econgas.com/ocsp",
-"http://ocsp.wienerberger.net/ocsp",
-"http://ocsp.pki.wayport.net:2560",
-"http://pkib.mallesons.com/ocsp",
-"http://ocsp.ovh.com",
-"http://ocsp.certificadodigital.com.br/serasacdv1",
-"http://pkiva.indra.es",
-"http://itcert.stanford.edu/ocsp",
-"http://certenroll.bogdanov-associates.com/ocsp",
-"http://srv-pki/ocsp",
-"http://ocsp.godaddy.com",
-"http://ocsp.pki.slb.com/ocsp",
-"http://ocsp.swisssign.net",
-"http://cert.naftogaz.com/ocsp",
-"http://ocsp.uk.deloitte.com",
-"http://ocsp.comodoca3.com",
-"http://ocsp.exzumin.de/ocsp",
-"http://ocsp.msocsp.com",
-"http://cdp2.nis.rs/ocsp",
-"http://corptestcert.app.corpintra.net/ocsp",
-"http://ocsp.comodoca2.com",
-"http://ocsp.ersca.com",
-"http://ocsp.xth.cc",
-"http://ocsp1.ssp-strong-id.net/VA-SSP-CA-B2",
-"http://ocsp.vnpt-ca.vn/responder",
-"http://ocspts.identrust.com",
-"http://ocsp2.globalsign.com/gsdomainvalg2",
-"http://pkiva.bde.es",
-"http://certs.mapservices.fr/ocsp",
-"http://ino.inosoft.de/ocsp",
-"http://rootca.poclabs.net/ocsp",
-"http://pki.rtc-leasing.ru/ocsp",
-"http://ocsp.startssl.com/ca",
-"http://ocsp.ca.vodafone.com/ocsp",
-"http://ocsp.cs.auscert.org.au",
-"http://ocsp.tcclass2-II.trustcenter.de",
-"http://www.er76.ru/ocsp",
-"http://ocsp.walgreens.com/ocsp",
-"http://www.pki.nosc.us/ocsp",
-"http://test_pki1/ocsp",
-"http://ocsp.mytrc.net/ocsp",
-"http://certs.ankalagon.ru/ocsp",
-"http://www.ocsp.gpo.gov",
-"http://ocsp.bayanca.ir",
-"http://va.pfizer.com:1025",
-"http://certificates.dnv.com/ocsp",
-"http://ocsp.orapharma.com/ocsp",
-"http://ocsp.seattlecca.org/ocsp",
-"http://backbone.cnsd.interno.it/ocsp",
-"http://nyppki02/ocsp",
-"http://ocsp2.globalsign.com/gsorganizationvalsha2g2",
-"http://gtssl2-ocsp.geotrust.com",
-"http://ocsp.tcuniversal-I.trustcenter.de",
-"http://ocsp.register.com",
-"http://ocsp.ncdc.gov.sa",
-"http://pki.life.com.by/ocsp",
-"http://ocsp.sgssl.net",
-"http://pki.gmprint.local/ocsp",
-"http://pki.solitdev.com/ocsp",
-"http://ocsp.dics.ua/ocsp",
-"http://ocsp.pre.swissdigicert.ch/rubin",
-"http://ocsp.affirmtrust.com/commev",
-"http://aia.gdir.vt.ru/ocsp",
-"http://ocsp.averius.nl/ocsp",
-"http://ocsp.bechtel.com/ocsp",
-"http://ac.ds.commun.test.fc2consortium.org:8080/ejbca/publicweb/status/ocsp",
-"http://cert-services.e-control.at/OCSP?ca=EControl_IntermediateCA",
-"http://nfiocsp.managed.entrust.com",
-"http://cert.bernards.com/ocsp",
-"http://bhca2.baker-hostetler.com/ocsp",
-"http://pki.suva.ch/ocsp",
-"http://EVSecure-ocsp.verisign.com",
-"http://ocsp.go",
-"http://pki.wabag.com/ocsp",
-"http://ocsp.startssl.com/sub/class4/server/ca",
-"http://nfi2.eva.orc.com",
-"http://onsite-ocsp.verisign.com",
-"http://ocspsslv3.kamusm.gov.tr",
-"http://ocsp.pki.belgium.be",
-"https://www.isscorp.com/PKI/ra/ocsp",
-"http://ocsp.statoil.com:3502",
-"http://pki-ocsp.allscriptscloud.com/ocsp",
-"http://swoop-pki.swoopin.com/ocsp",
-"http://kzatpki0002.okioc.com/ocsp",
-"http://ocsp.policia.es",
-"http://ocsp.startssl.com/sub/class1/client/ca",
-"http://dc01/ocsp",
-"http://ocsp2.pki.wayfair.com/ocsp",
-"http://10.1.101.2/publicweb/status/ocsp",
-"http://ocsp.bt.com/ocsp",
-"http://ocsp.sanofi-aventis.com/ocsp",
-"http://dc-01.raise.group",
-"http://ocsp.spar-ics.eu/ocsp",
-"http://ocsp.vodokanal.spb.ru/ocsp",
-"http://socsp.turktrust.com.tr",
-"http://ocsp.thermocolor.com/ocsp",
-"http://ocsp.lisec-sw.com",
-"http://ocsp.csctrustedsecure.com",
-"http://houpki2.nov.com/ocsp",
-"http://ocsp.bwinservices.com/ocsp",
-"http://ocsp2.globalsign.com/gsextendvalsha2g2",
-"http://ocsp.tcclass3.trustcenter.de",
-"http://ocsp-b.pki.wayport.net:2560",
-"http://devdc01.dev.gatesfoundation.org/ocsp",
-"http://certsrv1.dc1.thomson-webcast.net/ocsp",
-"http://relay.systemshouse.ru/ocsp",
-"http://gold-root-g2.ocsp.swisssign.net",
-"http://pecs1.unisys.com/ocsp",
-"http://ocsp.europeanssl.eu",
-"http://gw.idsaas.de/ocsp",
-"http://ocsp.tcs.terena.org",
-"http://ocsp.trendmicro.com/tmca",
-"http://ocsp-ent.pki.wellsfargo.com",
-"http://www.meridian-capital.kz/ocsp",
-"http://ca.x-any.com/ocsp",
-"http://crl.inditex.com/ocsp",
-"http://ocsp.firmaprofesional.com",
-"http://ocsp2.globalsign.com/gsdomainvalsha2g2",
-"http://exchange.cdl.cz/ocsp",
-"http://pkicvs.cisco.com/pki/ocsp",
-"http://ocsp.affirmtrust.com/premev",
-"http://ocsp.icewarp.com",
-"http://ocsp.ferbritas.pt/ocsp",
-"http://cert.energokaskad.com/ocsp",
-"http://ocsp.utn.com.ua:2560",
-"http://ocsp.affirmtrust.com/ntwkev",
-"http://ocsp.omniroot.com/baltimoreroot",
-"http://ocsp.shamusclan.com",
-"http://ocsp.wurthnet.com/ocsp",
-"http://ocsp.pkic.es/ocsp",
-"http://ocsp.strixchomutov.cz",
-"http://sha2ocsp.dnsalias.com/responder",
-"http://ocsp-test.ncdc.gov.sa",
-"http://ocsp.sysadmins.lv",
-"http://cert.incoma.ru/ocsp",
-"http://ocsp.north-winds.org",
-"http://iis1.eeza.csic.es/ocsp",
-"http://pki.winextreme.org/ocsp",
-"http://ocsp.startssl.com/sub/class1/server/ca",
-"http://pki.eduuni.local/ocsp"]
diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/code/sha256.js b/data/extensions/https-everywhere@eff.org/chrome/content/code/sha256.js
deleted file mode 100644
index 7e15f1a..0000000
--- a/data/extensions/https-everywhere@eff.org/chrome/content/code/sha256.js
+++ /dev/null
@@ -1,249 +0,0 @@
-/*
- * A JavaScript implementation of the SHA256 hash function.
- *
- * FILE:sha256.js
- * VERSION:0.8
- * AUTHOR:Christoph Bichlmeier <informatik@zombiearena.de>
- *
- * NOTE: This version is not tested thoroughly!
- *
- * Copyright (c) 2003, Christoph Bichlmeier
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the copyright holder nor the names of contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * ======================================================================
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ''AS IS'' AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/* SHA256 logical functions */
-function rotateRight(n,x) {
- return ((x >>> n) | (x << (32 - n)));
-}
-function choice(x,y,z) {
- return ((x & y) ^ (~x & z));
-}
-function majority(x,y,z) {
- return ((x & y) ^ (x & z) ^ (y & z));
-}
-function sha256_Sigma0(x) {
- return (rotateRight(2, x) ^ rotateRight(13, x) ^ rotateRight(22, x));
-}
-function sha256_Sigma1(x) {
- return (rotateRight(6, x) ^ rotateRight(11, x) ^ rotateRight(25, x));
-}
-function sha256_sigma0(x) {
- return (rotateRight(7, x) ^ rotateRight(18, x) ^ (x >>> 3));
-}
-function sha256_sigma1(x) {
- return (rotateRight(17, x) ^ rotateRight(19, x) ^ (x >>> 10));
-}
-function sha256_expand(W, j) {
- return (W[j&0x0f] += sha256_sigma1(W[(j+14)&0x0f]) + W[(j+9)&0x0f] +
- sha256_sigma0(W[(j+1)&0x0f]));
-}
-
-/* Hash constant words K: */
-var K256 = new Array(
- 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
- 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
- 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
- 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
- 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,
- 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
- 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,
- 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
- 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
- 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
- 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,
- 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
- 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,
- 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
- 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
- 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
- );
-
-/* global arrays */
-var ihash, count, buffer;
-var sha256_hex_digits = "0123456789abcdef";
-
-/* Add 32-bit integers with 16-bit operations (bug in some JS-interpreters:
- overflow) */
-function safe_add(x, y)
-{
- var lsw = (x & 0xffff) + (y & 0xffff);
- var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
- return (msw << 16) | (lsw & 0xffff);
-}
-
-/* Initialise the SHA256 computation */
-function sha256_init() {
- ihash = new Array(8);
- count = new Array(2);
- buffer = new Array(64);
- count[0] = count[1] = 0;
- ihash[0] = 0x6a09e667;
- ihash[1] = 0xbb67ae85;
- ihash[2] = 0x3c6ef372;
- ihash[3] = 0xa54ff53a;
- ihash[4] = 0x510e527f;
- ihash[5] = 0x9b05688c;
- ihash[6] = 0x1f83d9ab;
- ihash[7] = 0x5be0cd19;
-}
-
-/* Transform a 512-bit message block */
-function sha256_transform() {
- var a, b, c, d, e, f, g, h, T1, T2;
- var W = new Array(16);
-
- /* Initialize registers with the previous intermediate value */
- a = ihash[0];
- b = ihash[1];
- c = ihash[2];
- d = ihash[3];
- e = ihash[4];
- f = ihash[5];
- g = ihash[6];
- h = ihash[7];
-
- /* make 32-bit words */
- for(var i=0; i<16; i++)
- W[i] = ((buffer[(i<<2)+3]) | (buffer[(i<<2)+2] << 8) | (buffer[(i<<2)+1]
- << 16) | (buffer[i<<2] << 24));
-
- for(var j=0; j<64; j++) {
- T1 = h + sha256_Sigma1(e) + choice(e, f, g) + K256[j];
- if(j < 16) T1 += W[j];
- else T1 += sha256_expand(W, j);
- T2 = sha256_Sigma0(a) + majority(a, b, c);
- h = g;
- g = f;
- f = e;
- e = safe_add(d, T1);
- d = c;
- c = b;
- b = a;
- a = safe_add(T1, T2);
- }
-
- /* Compute the current intermediate hash value */
- ihash[0] += a;
- ihash[1] += b;
- ihash[2] += c;
- ihash[3] += d;
- ihash[4] += e;
- ihash[5] += f;
- ihash[6] += g;
- ihash[7] += h;
-}
-
-/* Read the next chunk of data and update the SHA256 computation */
-function sha256_update(data, inputLen) {
- var i, index, curpos = 0;
- /* Compute number of bytes mod 64 */
- index = ((count[0] >> 3) & 0x3f);
- var remainder = (inputLen & 0x3f);
-
- /* Update number of bits */
- if ((count[0] += (inputLen << 3)) < (inputLen << 3)) count[1]++;
- count[1] += (inputLen >> 29);
-
- /* Transform as many times as possible */
- for(i=0; i+63<inputLen; i+=64) {
- for(var j=index; j<64; j++)
- buffer[j] = data.charCodeAt(curpos++);
- sha256_transform();
- index = 0;
- }
-
- /* Buffer remaining input */
- for(var j=0; j<remainder; j++)
- buffer[j] = data.charCodeAt(curpos++);
-}
-
-/* Finish the computation by operations such as padding */
-function sha256_final() {
- var index = ((count[0] >> 3) & 0x3f);
- buffer[index++] = 0x80;
- if(index <= 56) {
- for(var i=index; i<56; i++)
- buffer[i] = 0;
- } else {
- for(var i=index; i<64; i++)
- buffer[i] = 0;
- sha256_transform();
- for(var i=0; i<56; i++)
- buffer[i] = 0;
- }
- buffer[56] = (count[1] >>> 24) & 0xff;
- buffer[57] = (count[1] >>> 16) & 0xff;
- buffer[58] = (count[1] >>> 8) & 0xff;
- buffer[59] = count[1] & 0xff;
- buffer[60] = (count[0] >>> 24) & 0xff;
- buffer[61] = (count[0] >>> 16) & 0xff;
- buffer[62] = (count[0] >>> 8) & 0xff;
- buffer[63] = count[0] & 0xff;
- sha256_transform();
-}
-
-/* Split the internal hash values into an array of bytes */
-function sha256_encode_bytes() {
- var j=0;
- var output = new Array(32);
- for(var i=0; i<8; i++) {
- output[j++] = ((ihash[i] >>> 24) & 0xff);
- output[j++] = ((ihash[i] >>> 16) & 0xff);
- output[j++] = ((ihash[i] >>> 8) & 0xff);
- output[j++] = (ihash[i] & 0xff);
- }
- return output;
-}
-
-/* Get the internal hash as a hex string */
-function sha256_encode_hex() {
- var output = new String();
- for(var i=0; i<8; i++) {
- for(var j=28; j>=0; j-=4)
- output += sha256_hex_digits.charAt((ihash[i] >>> j) & 0x0f);
- }
- return output;
-}
-
-/* Main function: returns a hex string representing the SHA256 value of the
- given data */
-function sha256_digest(data) {
- sha256_init();
- sha256_update(data, data.length);
- sha256_final();
- return sha256_encode_hex();
-}
-
-/* test if the JS-interpreter is working properly */
-function sha256_self_test()
-{
- return sha256_digest("message digest") ==
- "f7846f55cf23e14eebeab5b4e1550cad5b509e3348fbc4efa3a1413d393cb650";
-}
-