html Google Chrome扩展程序:蜂蜜(请参阅Ext错误:此扩展程序无法修改网络请求的请求标头“Referer”
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了html Google Chrome扩展程序:蜂蜜(请参阅Ext错误:此扩展程序无法修改网络请求的请求标头“Referer”相关的知识,希望对你有一定的参考价值。
null == window.honey && (window.honey = {
version: "9.8.6",
environment: "production",
platform: "ch",
context: "background",
_native: {}
}), null == window.env && (window.env = {}),
function() {
var e, t, bind = function(e, t) {
return function() {
return e.apply(t, arguments)
}
},
a = [].indexOf || function(e) {
for (var t = 0, a = this.length; a > t; t++)
if (t in this && this[t] === e) return t;
return -1
};
null == (t = honey._native).MessagesBase && (t.MessagesBase = e = function() {
function e() {
this._deliver = bind(this._deliver, this), this.removeListener = bind(this.removeListener, this), this.addListener = bind(this.addListener, this), this._listeners = {}
}
return e.prototype.addListener = function(e, t) {
var o;
return null == (o = this._listeners)[e] && (o[e] = []), a.call(this._listeners[e], t) >= 0 ? !1 : (this._listeners[e].push(t), !0)
}, e.prototype.removeListener = function(e, t) {
var a, o, n;
return (a = null != (o = this._listeners) && null != (n = o[e]) ? n.indexOf(t) : void 0) >= 0 ? (this._listeners[e].splice(a, 1), this._listeners[e].length || delete this._listeners[e], !0) : !1
}, e.prototype._deliver = function(e, t, a) {
var o, n, i;
return o = null != (n = this._listeners) && null != (i = n[e]) ? i.map(function(o) {
return Promise.resolve().then(function() {
return o(e, t, a)
})
}) : void 0, (null != o ? o.length : void 0) ? Promise.any(o)["catch"](function(e) {
var t, a;
throw (null != e ? e[0] : void 0) instanceof Error ? null != e ? e[0] : void 0 : new MessageListenerError((null != e && null != (t = e[0]) ? t.message : void 0) || (null != e && null != (a = e[0]) ? a.name : void 0) || "listener_failure")
}) : Promise.reject(new NoMessageListenersError("No listeners for message of type " + e))
}, e
}())
}.call(this),
function() {
var e;
null == (e = honey._native).storage && (e.storage = {
local: {
isAvailable: function() {
return !0
},
get: function(e, t) {
return new Promise(function(a, o) {
return chrome.storage.local.get(e, function(n) {
var i, r;
return chrome.runtime.lastError ? o(new StorageError(JSON.stringify(null != (i = chrome.runtime.lastError) ? i.message : void 0))) : void 0 === (r = null != n ? n[e] : void 0) ? o(new NotFoundError) : a((null != t ? t.raw : void 0) ? r : JSON.parse(r))
})
})
},
set: function(e, t, a) {
return new Promise(function(a, o) {
var n;
return chrome.storage.local.set((n = {}, n["" + e] = JSON.stringify(t), n), function() {
var e;
return chrome.runtime.lastError ? o(new StorageError(JSON.stringify(null != (e = chrome.runtime.lastError) ? e.message : void 0))) : a(t)
})
})
},
del: function(e, t) {
return new Promise(function(t, a) {
return chrome.storage.local.remove(e, function(e) {
var o;
return chrome.runtime.lastError ? a(new StorageError(JSON.stringify(null != (o = chrome.runtime.lastError) ? o.message : void 0))) : t()
})
})
}
},
sync: {
isAvailable: function() {
return !0
},
get: function(e, t) {
return new Promise(function(a, o) {
return chrome.storage.sync.get(e, function(n) {
var i, r;
return chrome.runtime.lastError ? o(new StorageError(JSON.stringify(null != (i = chrome.runtime.lastError) ? i.message : void 0))) : void 0 === (r = null != n ? n[e] : void 0) ? o(new NotFoundError) : a((null != t ? t.raw : void 0) ? r : JSON.parse(r))
})
})
},
set: function(e, t, a) {
return new Promise(function(a, o) {
var n;
return chrome.storage.sync.set((n = {}, n["" + e] = JSON.stringify(t), n), function() {
var e;
return chrome.runtime.lastError ? o(new StorageError(JSON.stringify(null != (e = chrome.runtime.lastError) ? e.message : void 0))) : a(t)
})
})
},
del: function(e, t) {
return new Promise(function(t, a) {
return chrome.storage.sync.remove(e, function(e) {
var o;
return chrome.runtime.lastError ? a(new StorageError(JSON.stringify(null != (o = chrome.runtime.lastError) ? o.message : void 0))) : t()
})
})
}
},
bundled: {
isAvailable: function() {
return !0
},
getAssetURL: function(e) {
return chrome.extension.getURL(e)
}
}
})
}.call(this),
function() {
var e, t, bind = function(e, t) {
return function() {
return e.apply(t, arguments)
}
};
null == (t = honey._native).button && (t.button = new(e = function() {
function e() {
this._onMessage = bind(this._onMessage, this), this._onClicked = bind(this._onClicked, this), this._setBadgeColor = bind(this._setBadgeColor, this), this._setBadgeText = bind(this._setBadgeText, this), this._setTitle = bind(this._setTitle, this), this._setIcon = bind(this._setIcon, this), this.setButtonInfo = bind(this.setButtonInfo, this), this.getLastSetIcon = bind(this.getLastSetIcon, this), chrome.runtime.onMessage.addListener(this._onMessage), chrome.browserAction.onClicked.addListener(this._onClicked), this._lastIconForTab = {}
}
return e.prototype.getLastSetIcon = function(e) {
return this._lastIconForTab[e]
}, e.prototype.setButtonInfo = function(e, t, a) {
if (null == a && (a = 2), !(null != e ? e.icon : void 0)) throw new InvalidParametersError("button info must be provided with at least an icon");
return Promise["try"](function(o) {
return function() {
return o._setIcon(e.icon, t, a)
}
}(this)).then(function(o) {
return function() {
return Promise.all([null != e.title ? o._setTitle(e.title, t, a).reflect() : void 0, null != e.badgeColor ? o._setBadgeColor(e.badgeColor, t, a).reflect() : void 0, null != e.badgeText ? o._setBadgeText(e.badgeText, t, a).reflect() : void 0])
}
}(this)).then(function(e) {
return e.filter(function(e) {
return e
}).forEach(function(e) {
return e.isFulfilled() ? void 0 : honey.logger.warn(e.reason())
})
})["catch"](function(e) {
return honey.logger.warn(e)
})
}, e.prototype._setIcon = function(e, t, a) {
return null == a && (a = 2), Promise["try"](function(o) {
return function() {
return new Promise(function(n, i) {
return chrome.browserAction.setIcon({
path: {
19: "icons/" + e + "-19.png",
38: "icons/" + e + "-38.png"
},
tabId: t || void 0
}, function() {
return chrome.runtime.lastError ? a > 0 ? n(o._setIcon(e, t, a - 1)) : i(new Error(chrome.runtime.lastError.message)) : (o._lastIconForTab[t] = e, n())
})
})
}
}(this))
}, e.prototype._setTitle = function(e, t, a) {
return null == a && (a = 2), Promise["try"](function() {
return chrome.browserAction.setTitle({
title: e,
tabId: t || void 0
})
})["catch"](function(o) {
return function(n) {
if (a > 0) return o._setTitle(e, t, a - 1);
throw n
}
}(this))
}, e.prototype._setBadgeText = function(e, t, a) {
return null == a && (a = 2), Promise["try"](function() {
return chrome.browserAction.setBadgeText({
text: "" + e,
tabId: t || void 0
})
})["catch"](function(o) {
return function(n) {
if (a > 0) return o._setBadgeText(e, t, a - 1);
throw n
}
}(this))
}, e.prototype._setBadgeColor = function(e, t, a) {
return null == a && (a = 2), Promise["try"](function() {
return chrome.browserAction.setBadgeBackgroundColor({
color: e,
tabId: t || void 0
})
})["catch"](function(o) {
return function(n) {
if (a > 0) return o._setBadgeColor(e, t, a - 1);
throw n
}
}(this))
}, e.prototype._onClicked = function(e) {
return (null != e ? e.id : void 0) ? honey.messages.send("button:bg:clicked", {}, {
tab: e.id,
ignoreResponse: !0
}) : void 0
}, e.prototype._onMessage = function(e, t, a) {
var o, n;
return "button:cs" !== (null != e ? e.service : void 0) ? !1 : (n = null != t && null != (o = t.tab) ? o.id : void 0) ? (Promise.resolve().then(function(t) {
return function() {
switch (e.type) {
case "getLastSetIcon":
return t.getLastSetIcon(n);
case "setButtonInfo":
return t.setButtonInfo(e.info, n);
default:
throw new InvalidParametersError("type")
}
}
}(this)).then(function(e) {
return a(honey.util.assign({
result: e
}, {
success: !0
}))
})["catch"](function(e) {
return a({
success: !1,
error: (null != e ? e.message : void 0) || (null != e ? e.name : void 0)
})
}), !0) : a({
success: !1,
error: "invalid_tab"
})
}, e
}()))
}.call(this),
function() {
var e, t, bind = function(e, t) {
return function() {
return e.apply(t, arguments)
}
};
null == (t = honey._native).clipboard && (t.clipboard = new(e = function() {
function e() {
this._onMessage = bind(this._onMessage, this), this.copy = bind(this.copy, this), chrome.runtime.onMessage.addListener(this._onMessage)
}
return e.prototype.isAvailable = function() {
return !0
}, e.prototype.copy = function(e) {
return Promise.resolve().then(function(t) {
return function() {
var t;
return t = document.createElement("textarea"), document.body.appendChild(t), t.value = e, t.focus(), t.select(), document.execCommand("copy"), t.remove(), !0
}
}(this))
}, e.prototype._onMessage = function(e, t, a) {
return "clipboard:cs" !== (null != e ? e.service : void 0) ? !1 : (Promise.resolve().then(function(t) {
return function() {
switch (e.type) {
case "copy":
return t.copy(e.text);
default:
throw new InvalidParametersError("type")
}
}
}(this)).then(function() {
return a({
success: !0
})
})["catch"](function(e) {
return a({
success: !1,
error: (null != e ? e.message : void 0) || (null != e ? e.name : void 0)
})
}), !0)
}, e
}()))
}.call(this),
function() {
var e, t, bind = function(e, t) {
return function() {
return e.apply(t, arguments)
}
};
null == (t = honey._native).cookies && (t.cookies = new(e = function() {
function e() {
this._onMessage = bind(this._onMessage, this), this._postProcessCookie = bind(this._postProcessCookie, this), this.getAllForDomain = bind(this.getAllForDomain, this), chrome.runtime.onMessage.addListener(this._onMessage)
}
return e.prototype.getAllForDomain = function(e) {
return new Promise(function(t) {
return function(a, o) {
return chrome.cookies.getAll({
domain: e
}, function(e) {
return a((e || []).map(t._postProcessCookie))
})
}
}(this))
}, e.prototype._postProcessCookie = function(e) {
return {
name: ("" + (e.name || "")).trim(),
value: ("" + (e.value || "")).trim(),
domain: ("" + (e.domain || "")).trim(),
path: ("" + (e.path || "")).trim() || "/",
expires: parseInt(1e3 * e.expirationDate) || 0,
secure: !!e.secure,
httpOnly: !!e.httpOnly,
hostOnly: !!e.hostOnly,
session: !!e.session
}
}, e.prototype._onMessage = function(e, t, a) {
return "cookies:cs" !== (null != e ? e.service : void 0) ? !1 : (Promise.resolve().then(function(t) {
return function() {
switch (e.type) {
case "getAllForDomain":
return t.getAllForDomain(e.domain);
default:
throw new InvalidParametersError("type")
}
}
}(this)).then(function(e) {
return a({
success: !0,
data: e
})
})["catch"](function(e) {
return a({
success: !1,
error: (null != e ? e.message : void 0) || (null != e ? e.name : void 0)
})
}), !0)
}, e
}()))
}.call(this),
function() {
var e, t;
null == (t = honey._native).globalEvents && (t.globalEvents = new(e = function() {
function e() {}
return e.prototype.addOnInstallListener = function(e) {
return chrome.runtime.onInstalled.addListener(e)
}, e.prototype.setUninstallURL = function(e, t) {
return null == t && (t = 2), chrome.runtime.setUninstallURL(e, function(a) {
return function() {
var o;
return (o = chrome.runtime.lastError) && (honey.logger.warn(new Error(o.message)), t > 0) ? a.setUninstallURL(e, t - 1) : void 0
}
}(this))
}, e
}()))
}.call(this),
function() {
var e, t, bind = function(e, t) {
return function() {
return e.apply(t, arguments)
}
},
a = function(e, t) {
function a() {
this.constructor = e
}
for (var n in t) o.call(t, n) && (e[n] = t[n]);
return a.prototype = t.prototype, e.prototype = new a, e.__super__ = t.prototype, e
},
o = {}.hasOwnProperty;
null == (t = honey._native).messages && (t.messages = new(e = function(e) {
function t() {
this._onMessage = bind(this._onMessage, this), this._dispatchToAllTabs = bind(this._dispatchToAllTabs, this), this._dispatchToMultipleTabs = bind(this._dispatchToMultipleTabs, this), this._dispatchToTab = bind(this._dispatchToTab, this), this._dispatch = bind(this._dispatch, this), this.send = bind(this.send, this), t.__super__.constructor.apply(this, arguments), chrome.runtime.onMessage.addListener(this._onMessage)
}
return a(t, e), t.prototype.send = function(e, t, a) {
return Promise.resolve().then(function(o) {
return function() {
return o._dispatch(e, t, {
type: "bg"
}, a)
}
}(this))["catch"](function(e) {
return function(e) {
if (!(null != a ? a.ignoreResponse : void 0)) throw e
}
}(this))
}, t.prototype._dispatch = function(e, t, a, o) {
var n, i;
return i = [], (null != o ? o.allTabs : void 0) ? i.push(this._dispatchToAllTabs(e, t, a, !!o.ignoreResponse, !!o.allFrames)) : Array.isArray(null != o ? o.tabs : void 0) && o.tabs.length ? i.push(this._dispatchToMultipleTabs(e, t, a, o.tabs, !!o.ignoreResponse, !!o.allFrames)) : (null != o ? o.tab : void 0) && i.push(this._dispatchToTab(e, t, a, o.tab, !!o.ignoreResponse, !!o.allFrames)), ((null != o ? o.background : void 0) || !i.length) && (n = "bg" === a.type ? null : a, i.push(this._deliver(e, t, n))), Promise.any(i)["catch"](function(e) {
return function(e) {
var t, a, o, n, i;
for (n = null, i = e || [], a = 0, o = i.length; o > a; a++)
if (t = i[a], t instanceof NoMessageListenersError) n = t;
else if (t) throw t;
throw n || new MessageListenerError("listener_failed")
}
}(this))
}, t.prototype._dispatchToTab = function(e, t, a, o, n, i) {
return new Promise(function(r) {
return function(r, u) {
var s;
return s = {
service: "messages:bg",
type: e,
allFrames: i,
content: JSON.stringify(t),
src: "tab" === a.type && a.tabId === o ? null : a
}, chrome.tabs.sendMessage(o, s, null, n ? (r(), null) : function(t) {
var a, o, n, i, s;
return !t || t.noListeners ? u(new NoMessageListenersError("No listeners for message of type " + e)) : t.success ? r(t.data) : (a = (null != t && null != (o = t.error) ? o.name : void 0) ? new window[t.error.name](t.error.message) : new MessageListenerError((null != t && null != (n = t.error) ? n.message : void 0) || "listener_failure"), null == a.stack && (a.stack = ""), (null != t && null != (i = t.error) ? i.stack : void 0) && (a.stack += t.error.stack), (null != t && null != (s = t.error) ? s.data : void 0) && (a.data = t.error.data), u(a))
})
}
}(this))
}, t.prototype._dispatchToMultipleTabs = function(e, t, a, o, n, i) {
return (null != o ? o.length : void 0) ? Promise.any(o.map(function(o) {
return function(r) {
return o._dispatchToTab(e, t, a, r, n, i)
}
}(this)))["catch"](function(e) {
return function(e) {
var t, a, o, n, i;
for (n = null, i = e || [], a = 0, o = i.length; o > a; a++)
if (t = i[a], t instanceof NoMessageListenersError) n = t;
else if (t) throw t;
throw n || new MessageListenerError("listener_failed")
}
}(this)) : Promise.resolve(null)
}, t.prototype._dispatchToAllTabs = function(e, t, a, o, n) {
return new Promise(function(i) {
return function(r, u) {
return chrome.tabs.query({}, function(s) {
var c, l, m;
return (c = null != (l = chrome.runtime.lastError) ? l.message : void 0) ? u(new Error(c)) : (m = s.map(function(e) {
return e.id
}), r(i._dispatchToMultipleTabs(e, t, a, m, o, n)))
})
}
}(this))
}, t.prototype._onMessage = function(e, t, a) {
var o;
return (null != t && null != (o = t.tab) ? o.id : 0) && "messages:cs" === (null != e ? e.service : void 0) ? (Promise.resolve().then(function(a) {
return function() {
var o, n, i;
return null == e.dest && (e.dest = {}), e.dest.background || e.dest.tab || (null != (i = e.dest.tabs) ? i.length : void 0) || (e.dest.currentTab = !0), e.dest.currentTab && (null == (o = e.dest).tabs && (o.tabs = []), e.dest.tabs.push(t.tab.id)), n = {
type: "tab",
tabId: t.tab.id,
tabUrl: t.tab.url
}, a._dispatch(e.type, JSON.parse(null != e ? e.content : void 0), n, e.dest)
}
}(this)).then(function(e) {
return a({
success: !0,
data: e
})
})["catch"](NoMessageListenersError, function() {
return a({
success: !1,
noListeners: !0
})
})["catch"](function(e) {
return a({
success: !1,
error: {
name: null != e ? e.name : void 0,
message: null != e ? e.message : void 0,
stack: null != e ? e.stack : void 0,
data: null != e ? e.data : void 0
}
})
})["catch"](function() {}), !0) : !1
}, t
}(honey._native.MessagesBase)))
}.call(this),
function() {
var e, t, bind = function(e, t) {
return function() {
return e.apply(t, arguments)
}
};
null == (t = honey._native).tabs && (t.tabs = new(e = function() {
function e() {
this._cleanPendingTabs = bind(this._cleanPendingTabs, this), this._waitReady = bind(this._waitReady, this), this._refreshUrl = bind(this._refreshUrl, this), this._onTabReplaced = bind(this._onTabReplaced, this), this._onTabRemoved = bind(this._onTabRemoved, this), this._onTabUpdated = bind(this._onTabUpdated, this), this._onTabCreated = bind(this._onTabCreated, this), this._onMessage = bind(this._onMessage, this), this.getUrlSync = bind(this.getUrlSync, this), this.getAllIds = bind(this.getAllIds, this), this.getAll = bind(this.getAll, this), this._isOneOfPrevId = bind(this._isOneOfPrevId, this), this.isCurrentTabId = bind(this.isCurrentTabId, this), this.get = bind(this.get, this), this.close = bind(this.close, this), this.openFBAuthWindow = bind(this.openFBAuthWindow, this), this.open = bind(this.open, this), this._tabIdMappings = {}, this._tabUrls = {}, this._tabsPending = [], setInterval(this._cleanPendingTabs, 6e4), chrome.runtime.onMessage.addListener(this._onMessage), chrome.tabs.onCreated.addListener(this._onTabCreated), chrome.tabs.onUpdated.addListener(this._onTabUpdated), chrome.tabs.onRemoved.addListener(this._onTabRemoved), chrome.tabs.onReplaced.addListener(this._onTabReplaced)
}
return e.prototype.open = function(e) {
return new Promise(function(t, a) {
return chrome.tabs.create({
url: null != e ? e.url : void 0,
active: "active" in e ? !!e.active : !0
}, function(e) {
var o, n;
return (o = null != (n = chrome.runtime.lastError) ? n.message : void 0) ? a(new Error(o)) : t(e.id)
})
})
}, e.prototype.openFBAuthWindow = function(e) {
return new Promise(function(t, a) {
var o, n;
return n = window.open(e, "Facebook | Honey", "height=360,width=420"), n.focus(), o = setInterval(function() {
return n.closed ? honey.user.getLoggedInUser().then(function(e) {
return t(e)
})["catch"](function(e) {
return a(e)
})["finally"](function() {
return clearInterval(o)
}) : void 0
}, 200)
})
}, e.prototype.close = function(e) {
return new Promise(function(t, a) {
return chrome.tabs.remove(e, function() {
var e, o;
return (e = null != (o = chrome.runtime.lastError) ? o.message : void 0) ? a(new Error(e)) : t()
})
})
}, e.prototype.get = function(e) {
return new Promise(function(t) {
return function(t, a) {
return chrome.tabs.get(e, function(e) {
var o, n;
return e ? t(e) : a((o = null != (n = chrome.runtime.lastError) ? n.message : void 0) ? new Error(o) : new NotFoundError)
})
}
}(this))
}, e.prototype.isCurrentTabId = function(e, t) {
return new Promise(function(a) {
return function(o, n) {
var i;
try {
return o(a._isOneOfPrevId(a._tabIdMappings, t, e))
} catch (r) {
return i = r, n(new Error(i))
}
}
}(this))
}, e.prototype._isOneOfPrevId = function(e, t, a, o) {
return t && t === a ? !0 : a && t ? this._isOneOfPrevId(e, t, e[a], a) : !1
}, e.prototype.getAll = function() {
return new Promise(function(e, t) {
return chrome.windows.getAll({
populate: !0
}, function(a) {
var o, n, i;
return i = [], (o = null != (n = chrome.runtime.lastError) ? n.message : void 0) ? t(new Error(o)) : (a.forEach(function(e) {
return i = i.concat(e.tabs)
}), e(i))
})
})
}, e.prototype.getAllIds = function() {
return new Promise(function(e, t) {
return chrome.tabs.query({}, function(a) {
var o, n;
return (o = null != (n = chrome.runtime.lastError) ? n.message : void 0) ? t(new Error(o)) : e((a || []).map(function(e) {
return e.id
}))
})
})
}, e.prototype.getUrlSync = function(e) {
return this._tabUrls[e]
}, e.prototype._onMessage = function(e, t, a) {
return "tabs:cs" !== (null != e ? e.service : void 0) ? !1 : (Promise.resolve().then(function(a) {
return function() {
var o, n, i;
switch (null != e ? e.type : void 0) {
case "open":
return a.open(e.params);
case "close":
return a.close(e.tabId);
case "closeCurrent":
return a.close(null != (o = t.tab) ? o.id : void 0);
case "get":
return a.get(e.tabId);
case "getCurrent":
return a.get(null != (n = t.tab) ? n.id : void 0);
case "getAll":
return a.getAll();
case "getAllIds":
return a.getAllIds();
case "waitReady":
return a._waitReady(t.tab);
case "isCurrentTabId":
return a.isCurrentTabId(null != (i = t.tab) ? i.id : void 0, e.tabId);
default:
throw new InvalidParametersError("type")
}
}
}(this)).then(function(e) {
return function(e) {
return a({
success: !0,
data: e
})
}
}(this))["catch"](function(e) {
return a({
success: !1,
error: (null != e ? e.message : void 0) || (null != e ? e.name : void 0)
})
})["catch"](function() {}), !0)
}, e.prototype._onTabCreated = function(e) {
return this._refreshUrl(null != e ? e.id : void 0), honey.messages.send("tabs:created", {
tabId: null != e ? e.id : void 0
}, {
background: !0,
allTabs: !0,
ignoreResponse: !0
})
}, e.prototype._onTabUpdated = function(e, t, a) {
return this._refreshUrl(e), honey.messages.send("tabs:updated", {
tabId: null != a ? a.id : void 0,
status: null != a ? a.status : void 0
}, {
background: !0,
allTabs: !0,
ignoreResponse: !0
})
}, e.prototype._onTabRemoved = function(e) {
return delete this._tabUrls[e], honey.messages.send("tabs:removed", {
tabId: e
}, {
background: !0,
allTabs: !0,
ignoreResponse: !0
})
}, e.prototype._onTabReplaced = function(e, t) {
return this._tabIdMappings[e] = t, this._tabsPending = this._tabsPending.filter(function(t) {
return function(t) {
if (t.id === e) {
try {
"function" == typeof t.resolve && t.resolve(!0)
} catch (a) {}
return !1
}
return !0
}
}(this))
}, e.prototype._refreshUrl = function(e) {
return e ? new Promise(function(t) {
return function(a, o) {
return chrome.tabs.get(e, function(a) {
var o, n;
return (null != a ? a.url : void 0) ? t._tabUrls[e] = a.url : ((o = null != (n = chrome.runtime.lastError) ? n.message : void 0) && honey.logger.warn(new Error(o)), delete t._tabUrls[e])
})
}
}(this)) : void 0
}, e.prototype._waitReady = function(e) {
if (!((null != e ? e.id : void 0) >= 0)) throw new InvalidParametersError("Invalid tab");
return e.index >= 0 ? !0 : new Promise(function(t) {
return function(a, o) {
var n, i;
if (n = t._tabsPending.push({
id: e.id,
resolve: a,
reject: o,
expires: Moment().add(6, "hours").unix()
}), n > 2e4) try {
return null != (i = t._tabsPending.shift()) && "function" == typeof i.reject ? i.reject(new CancellationError) : void 0
} catch (r) {}
}
}(this))
}, e.prototype._cleanPendingTabs = function() {
var e;
return e = Moment().unix(), this._tabsPending = this._tabsPending.filter(function(t) {
return function(t) {
if ((null != t ? t.expires : void 0) > e) return !0;
try {
"function" == typeof t.reject && t.reject(new CancellationError)
} catch (a) {}
return !1
}
}(this))
}, e
}()))
}.call(this),
function() {
var e, bind = function(e, t) {
return function() {
return e.apply(t, arguments)
}
};
null == (e = honey._native).webHooks && (e.webHooks = new(function() {
function e() {
this.removeErrorOccurredListener = bind(this.removeErrorOccurredListener, this), this.addErrorOccurredListener = bind(this.addErrorOccurredListener, this), this.removeCompleteListener = bind(this.removeCompleteListener, this), this.addCompleteListener = bind(this.addCompleteListener, this), this.removeResponseStartedListener = bind(this.removeResponseStartedListener, this), this.addResponseStartedListener = bind(this.addResponseStartedListener, this), this.removeBeforeRedirectListener = bind(this.removeBeforeRedirectListener, this), this.addBeforeRedirectListener = bind(this.addBeforeRedirectListener, this), this.removeAuthRequiredListener = bind(this.removeAuthRequiredListener, this), this.addAuthRequiredListener = bind(this.addAuthRequiredListener, this), this.removeHeadersReceivedListener = bind(this.removeHeadersReceivedListener, this), this.addHeadersReceivedListener = bind(this.addHeadersReceivedListener, this), this.removeSendHeadersListener = bind(this.removeSendHeadersListener, this), this.addSendHeadersListener = bind(this.addSendHeadersListener, this), this.removeBeforeSendHeadersListener = bind(this.removeBeforeSendHeadersListener, this), this.addBeforeSendHeadersListener = bind(this.addBeforeSendHeadersListener, this), this.removeBeforeRequestListener = bind(this.removeBeforeRequestListener, this), this.addBeforeRequestListener = bind(this.addBeforeRequestListener, this)
}
return e.prototype.addBeforeRequestListener = function(e, t) {
var a;
return a = ["requestBody"], (null != t ? t.blocking : void 0) && a.unshift("blocking"), chrome.webRequest.onBeforeRequest.addListener(e, {
urls: (null != t ? t.urls : void 0) || ["<all_urls>"],
types: null != t ? t.types : void 0,
tabId: null != t ? t.tabId : void 0
}, a)
}, e.prototype.removeBeforeRequestListener = function(e) {
return chrome.webRequest.onBeforeRequest.removeListener(e)
}, e.prototype.addBeforeSendHeadersListener = function(e, t) {
var a;
return a = ["requestHeaders"], (null != t ? t.blocking : void 0) && a.unshift("blocking"), chrome.webRequest.onBeforeSendHeaders.addListener(e, {
urls: (null != t ? t.urls : void 0) || ["<all_urls>"],
types: null != t ? t.types : void 0,
tabId: null != t ? t.tabId : void 0
}, a)
}, e.prototype.removeBeforeSendHeadersListener = function(e) {
return chrome.webRequest.onBeforeSendHeaders.removeListener(e)
}, e.prototype.addSendHeadersListener = function(e, t) {
var a;
return a = ["requestHeaders"], chrome.webRequest.onSendHeaders.addListener(e, {
urls: (null != t ? t.urls : void 0) || ["<all_urls>"],
types: null != t ? t.types : void 0,
tabId: null != t ? t.tabId : void 0
}, a)
}, e.prototype.removeSendHeadersListener = function(e) {
return chrome.webRequest.onSendHeaders.removeListener(e)
}, e.prototype.addHeadersReceivedListener = function(e, t) {
var a;
return a = ["responseHeaders"], (null != t ? t.blocking : void 0) && a.unshift("blocking"), chrome.webRequest.onHeadersReceived.addListener(e, {
urls: (null != t ? t.urls : void 0) || ["<all_urls>"],
types: null != t ? t.types : void 0,
tabId: null != t ? t.tabId : void 0
}, a)
}, e.prototype.removeHeadersReceivedListener = function(e) {
return chrome.webRequest.onHeadersReceived.removeListener(e)
}, e.prototype.addAuthRequiredListener = function(e, t) {
var a;
return a = ["responseHeaders"], (null != t ? t.blocking : void 0) && a.unshift("blocking"), chrome.webRequest.onAuthRequired.addListener(e, {
urls: (null != t ? t.urls : void 0) || ["<all_urls>"],
types: null != t ? t.types : void 0,
tabId: null != t ? t.tabId : void 0
}, a)
}, e.prototype.removeAuthRequiredListener = function(e) {
return chrome.webRequest.onAuthRequired.removeListener(e)
}, e.prototype.addBeforeRedirectListener = function(e, t) {
var a;
return a = ["responseHeaders"], chrome.webRequest.onBeforeRedirect.addListener(e, {
urls: (null != t ? t.urls : void 0) || ["<all_urls>"],
types: null != t ? t.types : void 0,
tabId: null != t ? t.tabId : void 0
}, a)
}, e.prototype.removeBeforeRedirectListener = function(e) {
return chrome.webRequest.onBeforeRedirect.removeListener(e)
}, e.prototype.addResponseStartedListener = function(e, t) {
var a;
return a = ["responseHeaders"], chrome.webRequest.onResponseStarted.addListener(e, {
urls: (null != t ? t.urls : void 0) || ["<all_urls>"],
types: null != t ? t.types : void 0,
tabId: null != t ? t.tabId : void 0
}, a)
}, e.prototype.removeResponseStartedListener = function(e) {
return chrome.webRequest.onResponseStarted.removeListener(e)
}, e.prototype.addCompleteListener = function(e, t) {
var a;
return a = ["responseHeaders"], chrome.webRequest.onCompleted.addListener(e, {
urls: (null != t ? t.urls : void 0) || ["<all_urls>"],
types: null != t ? t.types : void 0,
tabId: null != t ? t.tabId : void 0
}, a)
}, e.prototype.removeCompleteListener = function(e) {
return chrome.webRequest.onCompleted.removeListener(e)
}, e.prototype.addErrorOccurredListener = function(e, t) {
return chrome.webRequest.onErrorOccurred.addListener(e, {
urls: (null != t ? t.urls : void 0) || ["<all_urls>"],
types: null != t ? t.types : void 0,
tabId: null != t ? t.tabId : void 0
})
}, e.prototype.removeErrorOccurredListener = function(e) {
return chrome.webRequest.onErrorOccurred.removeListener(e)
}, e
}()))
}.call(this),
function e(t, a, o) {
function n(r, u) {
if (!a[r]) {
if (!t[r]) {
var s = "function" == typeof require && require;
if (!u && s) return s(r, !0);
if (i) return i(r, !0);
var c = new Error("Cannot find module '" + r + "'");
throw c.code = "MODULE_NOT_FOUND", c
}
var l = a[r] = {
exports: {}
};
t[r][0].call(l.exports, function(e) {
var a = t[r][1][e];
return n(a ? a : e)
}, l, l.exports, e, t, a, o)
}
return a[r].exports
}
for (var i = "function" == typeof require && require, r = 0; r < o.length; r++) n(o[r]);
return n
}({
1: [function(e, t, a) {
"use strict";
function o(e, t) {
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
}
Object.defineProperty(a, "__esModule", {
value: !0
});
var n = function() {
function e(e, t) {
for (var a = 0; a < t.length; a++) {
var o = t[a];
o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o)
}
}
return function(t, a, o) {
return a && e(t.prototype, a), o && e(t, o), t
}
}(),
i = function() {
function e() {
var t = this;
o(this, e), this.storage = honey.storage.local.prefixed("stores"), this.pendingTags = {}, this.pendingRequests = {}, this.goldActivations = {}, honey.webHooks.addBeforeSendHeadersListener(this.onBeforeSendHeadersWebHook.bind(this), {
types: ["sub_frame"],
blocking: !0
}), honey.webHooks.addHeadersReceivedListener(this.onHeadersReceivedWebHook.bind(this), {
types: ["sub_frame"],
blocking: !0
}), this.ready = this.storage.get("goldActivations")["catch"](function() {}).then(function(e) {
return t.goldActivations = e || {}, t.cleanup()
}), setInterval(this.cleanup.bind(this), 6e4)
}
return n(e, [{
key: "onBeforeSendHeadersWebHook",
value: function(e) {
var t = e.url,
a = e.requestId,
o = e.requestHeaders,
n = t.match(/^https?\:\/\/(?:o|out)\.joinhoney\.com\/store\/\d+\/([^\/\?]+).*[\?&]turl=([^&#]*)/);
n && "website" != n[1] && (this.pendingRequests[a] = {
url: decodeURIComponent(n[2] || "").trim(),
expires: Moment().add(3, "minutes").unix()
});
var i = this.pendingRequests[a];
if (i) {
var r = !1;
return o = o.filter(function(e) {
switch (honey.util.cleanStringLower(e && e.name)) {
case "referrer":
return e.value = i.url, r = !0, !0;
case "x-requested-with":
return !1;
default:
return !0
}
}), r || o.push({
name: "Referer",
value: i.url
}), {
requestHeaders: o
}
}
}
}, {
key: "onHeadersReceivedWebHook",
value: function(e) {
var t = e.tabId,
a = e.responseHeaders;
if (0 > t) {
var o = a.length;
if (a = a.filter(function(e) {
return "x-frame-options" !== honey.util.cleanStringLower(e && e.name)
}), o !== a.length) return {
responseHeaders: a
}
}
}
}, {
key: "activateStoreGold",
value: function(e, t) {
var a = this;
return honey.user.getUserId().then(function(o) {
var n = Moment().unix();
t = t || {}, t.userId = o, e.gold.activated = a.goldActivations[e.id + ":" + o] = {
ttl: e.gold.activateTTL || 3600,
timestamp: n
};
var i = {
store: e,
cashback_claim: {
succeeded: !0
},
cashback_offer: {
claimed: n
}
};
return t.standUp && (i.stand_up = !0), Promise.all([a.tag(e.id, "offer_claim", null, t), honey.stats.sendEvent("ext008002", i).reflect(), a.storage.set("goldActivations", a.goldActivations).reflect()])
}).then(function() {
return e
})
}
}, {
key: "deactivateStoreGold",
value: function(e) {
var t = this;
return honey.user.getUserId().then(function(a) {
delete t.goldActivations[e + ":" + a]
})
}
}, {
key: "getStoreGoldActivated",
value: function(e, t) {
var a = this;
return Promise["try"](function() {
return t || honey.user.getUserId()
}).then(function(t) {
var o = a.goldActivations[e + ":" + t];
return o && o.timestamp + o.ttl > Moment().unix() ? {
ttl: o.ttl,
timestamp: o.timestamp
} : void 0
})
}
}, {
key: "tag",
value: function(e, t, a, o) {
var n = this;
if (t = honey.util.cleanStringLower(t), ["hbc", "offer_claim", "extension_links"].indexOf(t) < 0) throw new InvalidParametersError("Invalid tag type: " + t);
return o = o || {}, Promise.all([honey.stores.getStoreById(e), o.userId || honey.user.getUserId()]).spread(function(e, t) {
return Promise.all([e, t, honey.user.getExv(), n.getStoreGoldActivated(e.id, t)])
}).spread(function(e, i, r, u) {
var s = "" + (u ? "g" : "u") + i,
c = "https://o.joinhoney.com/store/" + e.id + "/" + t + "?exv=" + r + "¶m0=" + s + "&turl=" + encodeURIComponent(honey.util.cleanString(a));
if (n.pendingTags[c] > Moment().unix()) throw new OperationSkippedError;
var l = void 0;
return l = o.forceHidden ? !1 : e.metadata.pns_tagInTab ? !0 : n.shouldTagInTab(e), Promise.all([c, l])
}).spread(function(a, i) {
var r = i ? n.tagInTab(a, e) : n.tagInFrame(a, e, o.forceHidden);
honey.stores.setSessionAttribute(e, "tagged", !0);
var u = Moment().unix();
return o.standUp && honey.stores.setSessionAttribute(e, "standUpTs", u), honey.stores.setSessionAttribute(e, "taggedTs", u), r.then(function() {
return honey.stats.sendEvent("ext300002", {
store: {
id: e
},
aff_url: a,
type: t
})
})["catch"](function() {})
})
}
}, {
key: "shouldTagInTab",
value: function(e) {
if ("sf" !== honey.platform) return Promise.resolve(!1);
var t = $.ajax({
type: "get",
url: e.url
});
Promise.resolve(t).then(function() {
return !!t.getResponseHeader("X-Frame-Options")
})["catch"](function() {
return !1
})
}
}, {
key: "checkIframePossible",
value: function() {
return new Promise(function(e, t) {
var a = "ready",
o = $("#check-iframe");
o.length || (a = "load", o = $('<iframe id="check-iframe" src="https://www.joinhoney.com/hz/alive" />').appendTo("body")), o[a](function() {
try {
return o.contents(), t()
} catch (a) {
return e()
}
})
})
}
}, {
key: "tagInTab",
value: function(e, t) {
var a = this;
return honey.tabs.open({
url: e,
active: !1
}).then(function(t) {
a.pendingTags[e] = Moment().add(5, "seconds").unix();
var o = Moment().add(2, "minutes"),
n = function i(n) {
return Promise.delay(n).then(function() {
return honey.tabs.get(t)
}).then(function(e) {
return !e || "complete" !== e.readyState && "complete" !== e.status ? o.isAfter() ? i(2e3) : void 0 : Promise.delay(2e3).then(function() {
return honey.tabs.close(t)
})
}).reflect()["finally"](function() {
delete a.pendingTags[e]
})
};
n(5e3)
})
}
}, {
key: "tagInFrame",
value: function(e, t, a) {
var o = this;
return this.checkIframePossible().then(function() {
var t = $('<iframe src="' + e + '" />').appendTo("body");
o.pendingTags[e] = Moment().add(5, "seconds").unix(), setTimeout(function() {
delete o.pendingTags[e], t.remove(), "production" === honey.environment && console.clear()
}, 9e4)
})["catch"](function() {
if (honey.stats.sendEvent("ext000011", {
store: {
id: t
},
aff_url: e
}).reflect(), a) throw new OperationSkippedError("Unable to tag: forceHidden with no iframe available");
return o.tagInTab(e, t)
})
}
}, {
key: "cleanup",
value: function() {
var e = Moment().unix(),
t = !1;
for (var a in this.goldActivations) {
var o = this.goldActivations[a];
o && o.timestamp + o.ttl > e || (delete this.goldActivations[a], t = !0)
}
t && this.storage.set("goldActivations", this.goldActivations).reflect()
}
}]), e
}();
a["default"] = i
}, {}],
2: [function(e, t, a) {
"use strict";
function o(e) {
return e && e.__esModule ? e : {
"default": e
}
}
function n(e, t) {
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
}
Object.defineProperty(a, "__esModule", {
value: !0
});
var i = function() {
function e(e, t) {
for (var a = 0; a < t.length; a++) {
var o = t[a];
o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o)
}
}
return function(t, a, o) {
return a && e(t.prototype, a), o && e(t, o), t
}
}(),
r = e("change-case"),
u = o(r),
s = e("clone"),
c = o(s),
l = function() {
function e() {
n(this, e), this.storage = honey.storage.local.prefixed("stores"), this.fetchingDetails = {}
}
return i(e, [{
key: "getStoreInfo",
value: function(e) {
var t = this;
return this.fetchingDetails[e] ? this.fetchingDetails[e] : this.fetchingDetails[e] = this.storage.get("id:" + e).then(function(a) {
var o = Moment().unix();
if (!(a && a.id && a.expiresHard > o)) throw new NotFoundError;
return a.expiresSoft > o || t.fetchStoreInfoFromServer(e).reflect(), a
})["catch"](NotFoundError, function() {
return Promise["try"](function() {
return t.fetchStoreInfoFromServer(e)
})["catch"](UnavailableError, function() {
return t.storage.get("id:" + e)
})["catch"](NotFoundError, function() {
return {
id: e,
supported: !1
}
})
}).then(function(e) {
return e = c["default"](e), delete e.expiresSoft, delete e.expiresHard, e
})["finally"](function() {
delete t.fetchingDetails[e]
})
}
}, {
key: "fetchStoreInfoFromServer",
value: function(e) {
var t = this,
a = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 2;
return Promise["try"](function() {
if (t.serverFetchBackoff && t.serverFetchBackoff.nextTs > Moment().unix()) throw new UnavailableError;
return delete t.serverFetchBackoff, $.getAsync(DATA_API_URL + "/stores/" + e, {
coupons: 1,
meta: 1,
affiliate: 1,
stats: 1,
ugc: 1,
gold: 1
})
}).then(function(a) {
if (!a || !a.id) throw new NotFoundError;
var o = {};
for (var n in a) o[u["default"].camel(n)] = a[n];
return o.expiresSoft = Moment().add(10, "minutes").unix(), o.expiresHard = Moment().add(15, "minutes").unix(), t.storage.set("id:" + e, o).reflect(), o
})["catch"](NotFoundError, function() {
return {
id: e,
supported: !1,
expiresSoft: Moment().add(10, "minutes").unix(),
expiresHard: Moment().add(15, "minutes").unix()
}
})["catch"](function(o) {
if (a > 0) return honey.logger.debug("Failed to fetch information for store " + e + " from the server (" + a + " retries left)"), Promise.delay(500).then(function() {
return t.fetchStoreInfoFromServer(e, a - 1)
});
throw t.serverFetchBackoff = t.serverFetchBackoff || {}, t.serverFetchBackoff.delay = Math.min(2 * t.serverFetchBackoff.delay, 30) || 4, t.serverFetchBackoff.nextTs = Moment().unix() + t.serverFetchBackoff.delay, honey.logger.debug("Failed to fetch information for store " + e + " from the server: " + ("backing off for " + t.serverFetchBackoff.delay + " seconds")), new UnavailableError
})
}
}]), e
}();
a["default"] = l
}, {
"change-case": 92,
clone: 93
}],
3: [function(e, t, a) {
"use strict";
function o(e) {
return e && e.__esModule ? e : {
"default": e
}
}
function n(e, t) {
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
}
Object.defineProperty(a, "__esModule", {
value: !0
});
var i = function() {
function e(e, t) {
for (var a = 0; a < t.length; a++) {
var o = t[a];
o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o)
}
}
return function(t, a, o) {
return a && e(t.prototype, a), o && e(t, o), t
}
}(),
r = e("clone"),
u = o(r),
s = function() {
function e() {
n(this, e), this.storage = honey.storage.local.prefixed("stores")
}
return i(e, [{
key: "getPopularOffers",
value: function() {
var e = this;
return this.fetchingPopularOffers ? this.fetchingPopularOffers : this.fetchingPopularOffers = Promise["try"](function() {
return e.storage.get("popularOffers")
}).then(function(t) {
return t && t.expires > Moment().unix() ? t.offers : e.fetchRemotePopularOffers()
})["catch"](NotFoundError, function() {
return e.fetchRemotePopularOffers()
})["finally"](function() {
delete e.fetchingPopularOffers
})
}
}, {
key: "fetchRemotePopularOffers",
value: function() {
var e = this;
return $.getAsync(DATA_API_URL + "/csbk/offers?mode=popular").then(function(t) {
var a = {
offers: t,
expires: Moment().add(1, "hour").unix()
};
return e.storage.set("popularOffers", a).reflect(), u["default"](t)
})
}
}]), e
}();
a["default"] = s
}, {
clone: 93
}],
4: [function(e, t, a) {
"use strict";
function o(e) {
return e && e.__esModule ? e : {
"default": e
}
}
function n(e, t) {
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
}
Object.defineProperty(a, "__esModule", {
value: !0
});
var i = function() {
function e(e, t) {
for (var a = 0; a < t.length; a++) {
var o = t[a];
o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o)
}
}
return function(t, a, o) {
return a && e(t.prototype, a), o && e(t, o), t
}
}(),
r = e("clone"),
u = (o(r), function() {
function e() {
n(this, e), this.storage = honey.storage.local.prefixed("stores"), this.searches = {}
}
return i(e, [{
key: "searchStores",
value: function(e) {
var t = this,
a = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : !1,
o = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 10;
if (e = honey.util.cleanString(e), !e) throw new InvalidParametersError("stores search query");
return this.searches[e] ? this.searches[e] : this.searches[e] = $.getAsync(DATA_API_URL + "/stores/search", {
search: e,
limit: o,
stats: a ? 1 : 0,
gold: 1
}).then(function(e) {
return e && e.stores && e.stores.length ? e.stores : []
})["finally"](function() {
delete t.searches[e]
})
}
}]), e
}());
a["default"] = u
}, {
clone: 93
}],
5: [function(e, t, a) {
"use strict";
function o(e) {
return e && e.__esModule ? e : {
"default": e
}
}
function n(e, t) {
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
}
Object.defineProperty(a, "__esModule", {
value: !0
});
var i = function() {
function e(e, t) {
for (var a = 0; a < t.length; a++) {
var o = t[a];
o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o)
}
}
return function(t, a, o) {
return a && e(t.prototype, a), o && e(t, o), t
}
}(),
r = e("clone"),
u = o(r),
s = {
tagged: !0,
activated: !0,
applyCodesDuration: !0,
applyCodesShown: !0,
applyCodesComplete: !0,
applyCodesCancelled: !0,
applyCodesClick: !0,
userInitiated: !0,
userHBC: !0,
startPrice: !0,
finalPrice: !0,
applyCodesData: !0,
taggedTs: !0,
standUpTs: !0,
standDownTs: !0,
standDownMethod: !0,
standUpTabId: !0,
standDownValue: !0,
hasStoodUp: !0,
manualCoupon: !0
},
c = function() {
function e() {
var t = this;
n(this, e), this.storage = honey.storage.local.prefixed("stores"), this.sessions = {}, this.ready = this.storage.get("sessions")["catch"](NotFoundError, function() {}).then(function(e) {
return t.sessions = e || {}, t.cleanup()
}), setInterval(this.cleanup.bind(this), 6e4)
}
return i(e, [{
key: "getSession",
value: function(e) {
var t = this.sessions[e];
return t && t.expires > Moment().unix() ? u["default"](t) : null
}
}, {
key: "upsertSession",
value: function(e) {
var t = this;
e = honey.util.cleanString(e);
var a = this.sessions[e];
return Promise["try"](function() {
var o = Moment().add(3, "hours").unix();
if (!(a && a.expires > Moment().unix())) {
a = t.sessions[e] = {
id: Moment().valueOf(),
expires: o,
attributes: {},
tagged: !1
};
var n = honey.messages.send("stores:session:started", {
storeId: e,
sessionId: a.id
}, {
allTabs: !0,
background: !0,
ignoreResponse: !0
}).reflect(),
i = honey.stats.sendEvent("ext004001", {
store: {
id: e,
session_id: a.id
}
}).reflect();
return honey.logger.debug("Started session " + a.id + " for store " + e), Promise.all([n, i])
}
a.expires = o
}).then(function() {
return t.storage.set("sessions", t.sessions).reflect(), u["default"](a)
})
}
}, {
key: "activateSession",
value: function(e) {
var t = this.sessions[e];
return t && t.expires > Moment().unix() && !t.activated ? (t.activated = Moment().unix(), honey.stats.sendEvent("ext004002", {
store: {
id: e,
sessionId: t.id
}
}).reflect(), this.storage.set("sessions", this.sessions).reflect(), !0) : !1
}
}, {
key: "setSessionAttribute",
value: function(e, t, a) {
if (!s[t]) throw new InvalidParametersError("Invalid session attribute");
var o = this.sessions[e];
o && o.expires > Moment().unix() && (o.attributes[t] = a, this.storage.set("sessions", this.sessions).reflect())
}
}, {
key: "cleanup",
value: function() {
var e = Moment().unix();
for (var t in this.sessions) {
var a = this.sessions[t];
a && a.expires > e || delete this.sessions[t]
}
this.storage.set("sessions", this.sessions).reflect()
}
}]), e
}();
a["default"] = c
}, {
clone: 93
}],
6: [function(e, t, a) {
"use strict";
function o(e, t) {
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
}
Object.defineProperty(a, "__esModule", {
value: !0
});
var n = function() {
function e(e, t) {
for (var a = 0; a < t.length; a++) {
var o = t[a];
o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o)
}
}
return function(t, a, o) {
return a && e(t.prototype, a), o && e(t, o), t
}
}(),
i = function() {
function e() {
var t = this;
o(this, e), this.storage = honey.storage.local.prefixed("stores"), this.standDownTypes = {
base: 1,
stdn: 2,
nopopup: 3,
suspend: 4
}, this.honeyOutUrlRegex = /^https?\:\/\/(?:o|out)\.joinhoney\.com\//i, this.standDownRules = {}, this.standDownStatus = {}, this.pendingRequests = {}, honey.webHooks.addHeadersReceivedListener(this.onHeadersReceivedNonBlocking.bind(this), {
blocking: !1,
types: ["main_frame"]
}), this.ready = Promise["try"](function() {
t.storage.get("standDownStatus")["catch"](function() {})
}).then(function(e) {
return t.standDownStatus = e || {}, Promise.all([t.cleanup(), t.checkForRulesUpdates()])
}), setInterval(this.cleanup.bind(this), 3e4), setInterval(this.checkForRulesUpdates.bind(this), 3e4)
}
return n(e, [{
key: "getStoreTabStandDownStatus",
value: function(e, t) {
if (!(e && t >= 0)) return !1;
var a = this.standDownStatus[e + ":" + t];
return a && a.expires > Moment().unix() ? a.status : !1
}
}, {
key: "getStoreTabStandDownValue",
value: function(e, t) {
return this.standDownTypes[this.getStoreTabStandDownStatus(e, t)]
}
}, {
key: "setStoreTabStandDownStatus",
value: function(e, t, a) {
var o = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : Moment.duration(1, "hour").asSeconds();
if (!(parseInt(e) > 0)) throw new InvalidParametersError("Invalid store identifier");
if (!(parseInt(t) > 0)) throw new InvalidParametersError("Invalid tab identifier");
if (!(o > 0)) throw new InvalidParametersError("Invalid TTL");
if (a !== !1 && !this.standDownTypes[a]) throw new InvalidParametersError("Invalid stand down status: " + a);
a ? (this.standDownStatus[e + ":" + t] = {
status: a,
expires: Moment().add(o, "seconds").unix()
}, honey.stores.setSessionAttribute(e, "tagged", !1), honey.stores.setSessionAttribute(e, "standDownTs", Moment().unix()), honey.stores.setSessionAttribute(e, "standDownMethod", a), honey.stores.setSessionAttribute(e, "standDownValue", this.standDownTypes[a]), honey.stores.setSessionAttribute(e, "hasStoodUp", !1), "suspend" === a && honey.button.setButtonInactive(t)) : delete this.standDownStatus[e + ":" + t], this.storage.set("standDownStatus", this.standDownStatus).reflect()
}
}, {
key: "isStoreActiveInOtherTabs",
value: function(e, t) {
return new Promise(function(a, o) {
honey.user.getUserId().then(function(o) {
honey.stores.getClaimedOffers(o, [e]).then(function(o) {
o.length <= 0 && a(!1), honey.tabs.getAll().then(function(o) {
Promise.filter(o, function(a) {
return a && a.url && a.id !== t ? honey.stores.getStoreByUrl(a.url).then(function(t) {
return t && t.id === e
})["catch"](function() {
return !1
}) : !1
}).then(function(e) {
a(!!e.length)
})
})
})
})["catch"](function() {
return a(!1)
})
})
}
}, {
key: "checkForRulesUpdates",
value: function() {
var e = this,
t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : !1,
a = Moment().unix();
return !t && this.standDownRules.expires > a ? void 0 : this.checkingForRulesUpdates ? this.checkingForRulesUpdates : this.checkingForRulesUpdates = $.getAsync(DATA_API_URL + "/extdata/stdnrules").then(function(t) {
if (!t || !t.rules) throw new InvalidDataError("stand down rule set");
var a = Math.max(Moment.duration(30, "minutes").asSeconds(), Math.min(Moment.duration(6, "hours").asSeconds(), parseInt(t.ttl))) || Moment.duration(30, "minutes").asSeconds(),
o = {
rules: [],
expires: Moment().add(a, "seconds").unix()
};
Object.keys(e.standDownTypes).forEach(function(e) {
var a = t.rules[e] || [];
for (var n in a) {
var i = a[n];
if (!i || "string" != typeof i.regex) throw new InvalidDataError("stand down rule regex");
var r = i.regex.trim();
if (!r) throw new InvalidDataError("stand down rule regex");
o.rules.push({
type: e,
regex: new RegExp(r, "i"),
ttl: Math.max(1, Math.min(Moment.duration(1, "day").asSeconds(), parseInt(i.ttl))) || null
})
}
}), e.standDownRules = o
})["catch"](function(t) {
honey.logger.error(t), e.standDownRules.rules || (e.standDownRules.rules = []), e.standDownRules.expires = Moment().add(5, "minutes").unix()
})["finally"](function() {
delete e.checkingForRulesUpdates
})
}
}, {
key: "onHeadersReceivedNonBlocking",
value: function(e) {
var t = this,
a = e.tabId,
o = e.statusCode,
n = e.url;
if (a >= 0 && o > 0 && this.standDownRules.rules && this.standDownRules.rules.length > 0) {
var i = Moment().unix(),
r = this.pendingRequests[a];
if ((o >= 300 && 399 >= o || "sf" === honey.platform) && n.match(this.honeyOutUrlRegex)) r && r.expires >= i || (r = this.pendingRequests[a] = {}), r.isHoney = !0, r.expires = i + 5;
else if (!r || !(r.expires >= i && r.isHoney) || r.url !== n) {
for (var u in this.standDownRules.rules) {
var s = this.standDownRules.rules[u];
n.match(s.regex) && (r && r.expires >= i || (r = this.pendingRequests[a] = {}), this.standDownTypes[r.standDownType] > this.standDownTypes[s.type] || (r.rule = s.regex.toString(), r.standDownType = s.type, r.standDownTtl = s.ttl, r.expires = i + 5, r.url = n))
}
if (300 > o || o > 399) {
var c = this.pendingRequests[a];
c && c.standDownType && !c.isHoney && c.expires >= Moment().unix() && honey.stores.getStoreByUrl(n).then(function(e) {
var o = t.getStoreTabStandDownStatus(e.id, a);
return t.standDownTypes[o] > t.standDownTypes[c.standDownType] || (t.setStoreTabStandDownStatus(e.id, a, c.standDownType, c.standDownTtl), c.standDownType && t.isStoreActiveInOtherTabs(e.id, a).then(function(t) {
honey.stats.sendEvent("ext300004", {
method: c.standDownType,
store: {
id: e.id
},
honey_tab_open: t,
tagged: e.tagged,
rule: c.rule,
referral_url: c.url
})
})), "sf" !== honey.platform && delete t.pendingRequests[a], e
})["finally"](function(e) {
(200 > o || o > 399) && honey.stats.sendEvent("ext300404", {
url: n,
status_code: o,
store: {
id: e ? e.id : void 0
}
})
}).reflect()
}
}
}
}
}, {
key: "cleanup",
value: function() {
var e = Moment().unix(),
t = !1;
for (var a in this.standDownStatus) {
var o = this.standDownStatus[a];
o && o.expires > e || (delete this.standDownStatus[a], t = !0)
}
t && this.storage.set("standDownStatus", this.standDownStatus).reflect();
for (var n in this.pendingRequests) {
var i = this.pendingRequests[n];
i && i.expires > e || delete this.pendingRequests[n]
}
}
}]), e
}();
a["default"] = i
}, {}],
7: [function(e, t, a) {
"use strict";
function o(e) {
return e && e.__esModule ? e : {
"default": e
}
}
function n(e, t) {
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
}
Object.defineProperty(a, "__esModule", {
value: !0
});
var i = function() {
function e(e, t) {
for (var a = 0; a < t.length; a++) {
var o = t[a];
o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o)
}
}
return function(t, a, o) {
return a && e(t.prototype, a), o && e(t, o), t
}
}(),
r = e("clone"),
u = o(r),
s = function() {
function e() {
n(this, e), this.storage = honey.storage.local.prefixed("stores"), this.fetchingTrendingPage = {}
}
return i(e, [{
key: "getTrendingStores",
value: function(e) {
var t = this;
if (!(e >= 0 && 9 >= e)) throw new InvalidParametersError("Invalid trending stores page");
return this.fetchingTrendingPage[e] ? this.fetchingTrendingPage[e] : this.fetchingTrendingPage[e] = Promise["try"](function() {
return t.storage.get("trendingStores")
}).then(function(a) {
return a && a[e] && a[e].expires > Moment().unix() ? a[e].stores : t.fetchRemoteTrendingStores(a, e)
})["catch"](NotFoundError, function() {
return t.fetchRemoteTrendingStores({}, e)
})["finally"](function() {
delete t.fetchingTrendingPage[e]
})
}
}, {
key: "fetchRemoteTrendingStores",
value: function(e, t) {
var a = this;
return $.getAsync(DATA_API_URL + "/storesstats/trending", {
gold: 1,
page: t
}).then(function(o) {
return e[t] = o, a.storage.set("trendingStores", e).reflect(), u["default"](o.stores)
})
}
}]), e
}();
a["default"] = s
}, {
clone: 93
}],
8: [function(e, t, a) {
"use strict";
function o(e) {
return e && e.__esModule ? e : {
"default": e
}
}
function n(e, t) {
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
}
Object.defineProperty(a, "__esModule", {
value: !0
});
var i = function() {
function e(e, t) {
for (var a = 0; a < t.length; a++) {
var o = t[a];
o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o)
}
}
return function(t, a, o) {
return a && e(t.prototype, a), o && e(t, o), t
}
}(),
r = e("parse-domain"),
u = o(r),
s = e("url"),
c = o(s),
l = function() {
function e() {
n(this, e), this.storage = honey.storage.local.prefixed("stores")
}
return i(e, [{
key: "findStoreIdForUrl",
value: function(e) {
var t = this;
return Promise.resolve().then(function() {
e = honey.util.cleanStringLower(e);
var a = c["default"].parse(e) || {},
o = a.protocol,
n = a.hostname,
i = a.pathname;
if (!n || !i || "http:" !== o && "https:" !== o) throw new NotFoundError("Invalid store URL");
var r = u["default"](n);
if (!r) throw new NotFoundError("Invalid store URL");
var s = r.domain,
l = r.tld;
if (!s || !l) throw new NotFoundError("Invalid store URL");
var m = {
host: "." + n,
path: i.endsWith("/") ? i : i + "/",
domain: s + "." + l
};
return t.getPartialDomainsMap().then(function(e) {
var t = e[m.domain] || {},
a = Object.keys(t).reduce(function(e, a) {
var o = void 0,
n = void 0,
i = a.indexOf("/");
return i >= 0 ? (o = "." + a.substr(0, i), n = a.substr(i) + "/") : (o = "." + a, n = "/"), e.lengthHost > o.length || e.lengthHost === o.length && e.lengthPath > n.length || !m.host.endsWith(o) || !m.path.startsWith(n) ? e : {
storeId: t[a].id,
lengthHost: o.length,
lengthPath: n.length
}
}, {});
if (a.storeId) return a.storeId;
throw new NotFoundError
})
})
}
}, {
key: "getPartialDomainsMap",
value: function() {
var e = this;
return Promise.resolve(this.partialsData).then(function(t) {
return t || e.storage.get("partials")
}).then(function(t) {
var a = Moment().unix();
if (!(t && t.perDomain && t.expiresHard > a)) throw new NotFoundError;
return t.expiresSoft > a || e.fetchRemotePartialsData().reflect(), t
})["catch"](NotFoundError, function() {
return e.fetchRemotePartialsData()
}).then(function(t) {
return (e.partialsData = t).perDomain
})
}
}, {
key: "fetchRemotePartialsData",
value: function() {
var e = this;
if (this.fetchingPartialsData) return this.fetchingPartialsData;
var t = void 0;
return this.fetchingPartialsData = Promise["try"](function() {
return e.storage.get("partials")
})["catch"](NotFoundError, function() {
return {}
}).then(function(e) {
return t = e, $.getAsync(DATA_API_URL + "/partials", {
version: t.perDomain && t.version
})
})["catch"](function() {
return {}
}).then(function(a) {
a = a || {};
var o = a.version ? Math.max(1800, Math.min(259200, parseInt(a.ttl))) || 21600 : 3600;
return e.partialsData = {
version: a.version || t.version,
perDomain: a.partial_urls || t.perDomain || {},
expiresSoft: Moment().add(.8 * o, "seconds").unix(),
expiresHard: Moment().add(o, "seconds").unix()
}, e.storage.set("partials", e.partialsData), e.partialsData
})["finally"](function() {
delete e.fetchingPartialsData
})
}
}]), e
}();
a["default"] = l
}, {
"parse-domain": 139,
url: 177
}],
9: [function(e, t, a) {
"use strict";
function o(e) {
return e && e.__esModule ? e : {
"default": e
}
}
function n(e, t) {
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
}
Object.defineProperty(a, "__esModule", {
value: !0
});
var i = function() {
function e(e, t) {
for (var a = 0; a < t.length; a++) {
var o = t[a];
o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o)
}
}
return function(t, a, o) {
return a && e(t.prototype, a), o && e(t, o), t
}
}(),
r = e("./AffManager"),
u = o(r),
s = e("./InfoManager"),
c = o(s),
l = e("./PopularOffersManager"),
m = o(l),
p = e("./SearchManager"),
h = o(p),
d = e("./SessionManager"),
g = o(d),
f = e("./StandDownManager"),
k = o(f),
y = e("./TrendingManager"),
j = o(y),
v = e("./UrlMatcher"),
b = o(v),
w = function() {
function e() {
n(this, e), this.storage = honey.storage.local.prefixed("stores"), this.affManager = new u["default"], this.infoManager = new c["default"], this.popularOffersManager = new m["default"], this.searchManager = new h["default"], this.sessionManager = new g["default"], this.standDownManager = new k["default"], this.trendingManager = new j["default"], this.urlMatcher = new b["default"], honey.messages.addListener("page:load", this.onPageLoad.bind(this)), honey.messages.addListener("stores:action", this.onStoreActionMessage.bind(this)), honey.messages.addListener("ui:interaction", this.onUIInteraction.bind(this)), this.ready = Promise.all([this.affManager.ready, this.infoManager.ready, this.popularOffersManager.ready, this.searchManager.ready, this.sessionManager.ready, this.standDownManager.ready, this.trendingManager.ready, this.urlMatcher.ready])
}
return i(e, [{
key: "onStoreActionMessage",
value: function(e, t, a) {
if (t) {
var o = t.data || {};
switch (t.action) {
case "getStoreById":
return this.getStoreById(o.storeId, a.tabId);
case "getStoreByUrl":
return this.getStoreByUrl(o.storeUrl, a.tabId);
case "search":
return this.search(o.query, o.stats, o.limit);
case "getTrending":
return this.getTrending(o.page);
case "getPopularOffers":
return this.getPopularOffers();
case "setSessionAttribute":
return this.setSessionAttribute(o.storeId, o.attribute, o.value);
case "tag":
return this.tag(o.storeId, o.type, o.targetUrl, o.options, a.tabId);
case "activateStoreGold":
return this.activateStoreGold(o.storeId, o.taggingOptions, a.tabId);
case "deactivateStoreGold":
return this.deactivateStoreGold(o.storeId);
case "getClaimedOffers":
return this.getClaimedOffers(o.userId, o.stores);
case "getStoreTabStandDownStatus":
return this.getStoreTabStandDownStatus(o.storeId, a.tabId);
case "setStoreTabStandDownStatus":
return this.setStoreTabStandDownStatus(o.storeId, a.tabId, o.standDownStatus, o.ttlSeconds);
case "showTabStandUpMessage":
return this.showTabStandUpMessage(a.tabId, o.tabId);
case "hideTabStandUpMessage":
return this.hideTabStandUpMessage(a.tabId, o.tabId)
}
}
}
}, {
key: "showTabStandUpMessage",
value: function(e, t) {
e !== t && honey.messages.send("stores:action", {
action: "showTabStandUpMessage"
}, {
tab: t
})["catch"](function(e) {})
}
}, {
key: "hideTabStandUpMessage",
value: function(e, t) {
e !== t && honey.messages.send("stores:action", {
action: "hideTabStandUpMessage"
}, {
tab: t
})["catch"](function(e) {})
}
}, {
key: "onPageLoad",
value: function(e, t, a) {
var o = this;
t && t.url && a && a.tabId >= 0 && Promise["try"](function() {
return o.getStoreByUrl(t.url)
}).then(function(e) {
return Promise.all([e, o.sessionManager.getSession(e.id), honey.messages.send("stores:action", {
action: "getSubIds"
}, {
tab: a.tabId
})["catch"](function(e) {})])
}).spread(function(e, a, o) {
o = o || [], honey.stats.sendEvent("ext001001", {
referrerUrl: t.url,
store: {
id: e.id,
sessionId: a.id,
subid1: o[0],
subid2: o[1],
subid3: o[2]
}
}, {
immediate: !0
})
}).reflect()
}
}, {
key: "onUIInteraction",
value: function(e, t, a) {
t && t.store && t.store.id && this.sessionManager.activateSession(t.store.id)
}
}, {
key: "getStoreById",
value: function(e, t) {
var a = this;
return Promise.all([this.infoManager.getStoreInfo(e), this.sessionManager.upsertSession(e), this.affManager.getStoreGoldActivated(e)]).spread(function(o, n, i) {
if (n) {
o.sessionId = n.id, o.tagged = n.tagged;
for (var r in n.attributes) o[r] = n.attributes[r]
}
return o.gold && o.gold.max > 0 && (o.gold.activated = i), t >= 0 && (o.standDown = a.standDownManager.getStoreTabStandDownStatus(e, t), o.standDownValue = a.standDownManager.getStoreTabStandDownValue(e, t), o.standDownValue > 1 && a.removeGold(o)), o
})["catch"](function() {
return {
id: e,
supported: !1
}
})
}
}, {
key: "removeGold",
value: function(e) {
var t = e.gold;
delete e.gold, e.hadGold = t || e.hadGold
}
}, {
key: "getStoreByUrl",
value: function(e, t) {
var a = this;
return this.urlMatcher.findStoreIdForUrl(e).then(function(e) {
return a.getStoreById(e, t)
})
}
}, {
key: "getTrending",
value: function() {
var e = this,
t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0;
return this.trendingManager.getTrendingStores(t).each(function(t) {
return t.gold && t.gold.min > 0 ? e.affManager.getStoreGoldActivated(t.id).then(function(e) {
t.gold.activated = e
}) : void 0
})
}
}, {
key: "search",
value: function(e, t, a) {
var o = this;
return this.searchManager.searchStores(e, t, a).each(function(e) {
return e.gold && e.gold.min > 0 ? o.affManager.getStoreGoldActivated(e.id).then(function(t) {
e.gold.activated = t
}) : void 0
})
}
}, {
key: "tag",
value: function(e, t, a, o, n) {
var i = this.standDownManager.getStoreTabStandDownValue(e, n);
if (i > 1) throw new UnauthorizedError("Cannot tag: stand down is set to " + i);
return this.affManager.tag(e, t, a, o)
}
}, {
key: "activateStoreGold",
value: function(e, t, a) {
var o = this,
n = this.standDownManager.getStoreTabStandDownValue(e, a);
if (n > 1) throw new UnauthorizedError("Cannot activate Gold: stand down is set to " + n);
return this.getStoreById(e).then(function(e) {
if (!(e && e.gold && e.gold.max > 0)) throw new InvalidParametersError("Cannot activate Gold: offer not available");
return o.affManager.activateStoreGold(e, t)
})
}
}, {
key: "deactivateStoreGold",
value: function(e) {
return e ? this.affManager.deactivateStoreGold(e) : void 0
}
}, {
key: "getClaimedOffers",
value: function(e) {
var t = this,
a = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : [];
return Promise.filter(a, function(e) {
return t.affManager.getStoreGoldActivated(e)
})
}
}, {
key: "getPopularOffers",
value: function() {
return this.popularOffersManager.getPopularOffers()
}
}, {
key: "setSessionAttribute",
value: function(e, t, a) {
this.sessionManager.setSessionAttribute(e, t, a)
}
}, {
key: "getStoreTabStandDownStatus",
value: function(e, t) {
return this.standDownManager.getStoreTabStandDownStatus(e, t)
}
}, {
key: "setStoreTabStandDownStatus",
value: function(e, t, a, o) {
return this.standDownManager.setStoreTabStandDownStatus(e, t, a, o)
}
}]), e
}();
a["default"] = w
}, {
"./AffManager": 1,
"./InfoManager": 2,
"./PopularOffersManager": 3,
"./SearchManager": 4,
"./SessionManager": 5,
"./StandDownManager": 6,
"./TrendingManager": 7,
"./UrlMatcher": 8
}],
10: [function(e, t, a) {
var o, bind = function(e, t) {
return function() {
return e.apply(t, arguments)
}
};
o = e("./hxmlhttprequest"), t.exports = function() {
function e() {
this._onHXMLHttpRequestAction = bind(this._onHXMLHttpRequestAction, this), this._onTabRemoved = bind(this._onTabRemoved, this), this._delActiveHXMLHttpRequest = bind(this._delActiveHXMLHttpRequest, this), this._addActiveHXMLHttpRequest = bind(this._addActiveHXMLHttpRequest, this), this._activeHXMLHttpRequestsPerId = {}, this._activeHXMLHttpRequestsPerTab = {}, honey.messages.addListener("tabs:removed", this._onTabRemoved), honey.messages.addListener("adbbp:hxmlhttprequest:action", this._onHXMLHttpRequestAction)
}
return e.prototype._addActiveHXMLHttpRequest = function(e) {
var t;
if (e) return this._activeHXMLHttpRequestsPerId[e.reqId] = e, (t = this._activeHXMLHttpRequestsPerTab[e.tabId]) || (t = this._activeHXMLHttpRequestsPerTab[e.tabId] = {}), t[e.reqId] = e
}, e.prototype._delActiveHXMLHttpRequest = function(e) {
var t;
if (e) return delete this._activeHXMLHttpRequestsPerId[e.reqId], (t = this._activeHXMLHttpRequestsPerTab[e.tabId]) && (delete t[e.reqId], !Object.keys(t).length) ? delete this._activeHXMLHttpRequestsPerTab[e.tabId] : void 0
}, e.prototype._onTabRemoved = function(e, t, a) {
var o, n;
if (n = this._activeHXMLHttpRequestsPerTab[data.tabId]) {
for (o in n) delete this._activeHXMLHttpRequestsPerId[o];
return delete this._activeHXMLHttpRequestsPerTab[tabId]
}
}, e.prototype._onHXMLHttpRequestAction = function(e, t, a) {
var n, i;
if ((null != t ? t.reqId : void 0) && "tab" === (null != a ? a.type : void 0) && a.tabId && "responseType" !== t.action) return n = this._activeHXMLHttpRequestsPerId[t.reqId], n || "open" !== t.action || (n = new o(this, t.reqId, a.tabId, null != (i = t.data) ? i.ctorOptions : void 0), this._addActiveHXMLHttpRequest(n)), n && t.action in n ? "function" == typeof n[t.action] ? n[t.action](t.data) : n[t.action] = t.data : void 0
}, e
}()
}, {
"./hxmlhttprequest": 12
}],
11: [function(e, t, a) {
var bind = function(e, t) {
return function() {
return e.apply(t, arguments)
}
};
t.exports = function() {
function e() {
this._getFiltersMessageListener = bind(this._getFiltersMessageListener, this), this.getFiltersForUrl = bind(this.getFiltersForUrl, this), this.fetchFilters = bind(this.fetchFilters, this), this.MIN_FETCH_PERIOD = 3600, this.MAX_FETCH_PERIOD = 259200, this.DEFAULT_FETCH_PERIOD = 21600, this.DEFAULT_FETCH_BACKOFF = 600, this._filters = [], this._fetchPeriod = this.DEFAULT_FETCH_PERIOD, this.fetchFilters(), honey.messages.addListener("adbbp:getfilters", this._getFiltersMessageListener)
}
return e.prototype.fetchFilters = function() {
return this._fetchingPromise ? this._fetchingPromise : (this._fetchTimeout && (clearTimeout(this._fetchTimeout), this._fetchTimeout = null), this._fetchingPromise = $.ajaxAsync({
url: DATA_API_URL + "/adb/bpfilters",
timeout: 6e4,
dataType: "json"
}).then(function(e) {
return function(t) {
var a, o, n, i, r, u, s, c, l, m;
for (e._fetchPeriod = Math.min(e.MAX_FETCH_PERIOD, Math.max(e.MIN_FETCH_PERIOD, honey.util.parsePositiveInt(null != t ? t.period : void 0, e.DEFAULT_FETCH_PERIOD))), s = [], l = (null != t ? t.filters : void 0) || [], o = 0, i = l.length; i > o; o++)
if (a = l[o], Array.isArray(null != a ? a.partial_urls : void 0)) try {
for (u = {
origins: [],
targets: {}
}, m = a.partial_urls, n = 0, r = m.length; r > n; n++) c = m[n], u.origins.push(new RegExp("^https?\\:\\/\\/(?:[^\\/\\?]+\\.)*" + c.slice(1).replace(/(\W)/g, "\\$1"), "i"));
if (!u.origins.length) continue;
u.targets.ajax = ((null != a ? a.targets_aj : void 0) || []).map(function(e) {
return t.targets[e]
}).filter(function(e) {
return e
}), u.targets.script = ((null != a ? a.targets_st : void 0) || []).map(function(e) {
return t.targets[e]
}).filter(function(e) {
return e
}), u.exclusions = ((null != a ? a.exclusions : void 0) || []).filter(function(e) {
return e
}), (u.targets.ajax.length || u.targets.script.length) && s.push(u)
} catch (p) {}
return e._filters = s, e._fetchBackoff = e.DEFAULT_FETCH_BACKOFF, e._fetchTimeout = setTimeout(e.fetchFilters, 1e3 * e._fetchPeriod)
}
}(this))["catch"](function(e) {
return function() {
return e._fetchBackoff = Math.max(Math.min(2 * e._fetchBackoff, e._fetchPeriod) || 0, e.DEFAULT_FETCH_BACKOFF), e._fetchTimeout = setTimeout(e.fetchFilters, 1e3 * e._fetchBackoff)
}
}(this))["finally"](function(e) {
return function() {
return delete e._fetchingPromise
}
}(this)))
}, e.prototype.getFiltersForUrl = function(e) {
var t, a, o, n, i, r, u, s, c, l, m, p, h, d, g, f;
if (f = {
ajax: [],
script: []
}, !e) return f;
for (m = this._filters, n = 0, u = m.length; u > n; n++) {
for (a = m[n], o = !1, p = (null != a ? a.exclusions : void 0) || [], i = 0, s = p.length; s > i; i++)
if (t = p[i], e.match(t)) return null;
for (h = (null != a ? a.origins : void 0) || [], r = 0, c = h.length; c > r; r++)
if (l = h[r], e.match(l)) {
o = !0;
break
}
o && (Array.prototype.push.apply(f.ajax, (null != (d = a.targets) ? d.ajax : void 0) || []), Array.prototype.push.apply(f.script, (null != (g = a.targets) ? g.script : void 0) || []))
}
return f
}, e.prototype._getFiltersMessageListener = function(e, t, a) {
return this.getFiltersForUrl(a.tabUrl)
}, e
}()
}, {}],
12: [function(e, t, a) {
var bind = function(e, t) {
return function() {
return e.apply(t, arguments)
}
};
t.exports = function() {
function e(e, t, a, o) {
this._parent = e, this._reqId = t, this._tabId = a, this._base64ArrayBuffer = bind(this._base64ArrayBuffer, this), this._uploadEventHandler = bind(this._uploadEventHandler, this), this._requestEventHandler = bind(this._requestEventHandler, this), this.withCredentials = bind(this.withCredentials, this), this.timeout = bind(this.timeout, this), this.setRequestHeader = bind(this.setRequestHeader, this), this.overrideMimeType = bind(this.overrideMimeType, this), this.abort = bind(this.abort, this), this.send = bind(this.send, this), this.open = bind(this.open, this), this._req = new XMLHttpRequest(o), this._req.responseType = "arraybuffer", this._req.onload = this._requestEventHandler, this._req.onloadstart = this._requestEventHandler, this._req.onloadend = this._requestEventHandler, this._req.onprogress = this._requestEventHandler, this._req.ontimeout = this._requestEventHandler, this._req.onabort = this._requestEventHandler, this._req.onerror = this._requestEventHandler, this._req.onreadystatechange = this._requestEventHandler, this._req.upload.onload = this._uploadEventHandler, this._req.upload.onloadstart = this._uploadEventHandler, this._req.upload.onloadend = this._uploadEventHandler, this._req.upload.onprogress = this._uploadEventHandler, this._req.upload.ontimeout = this._uploadEventHandler, this._req.upload.onabort = this._uploadEventHandler, this._req.upload.onerror = this._uploadEventHandler, Object.defineProperty(this, "reqId", {
get: function(e) {
return function() {
return e._reqId
}
}(this)
}), Object.defineProperty(this, "tabId", {
get: function(e) {
return function() {
return e._tabId
}
}(this)
})
}
return e.prototype.open = function(e) {
return this._req.open(e.method, e.url, !0, e.username, e.password), this._req.setRequestHeader("X-Honey-HXMLHttpRequest-Origin", e.location.origin), this._req.setRequestHeader("X-Honey-HXMLHttpRequest-Referer", "" + e.location.origin + e.location.pathname), this._req.setRequestHeader("X-Honey-HXMLHttpRequest-ParentUrl", e.parentUrl)
}, e.prototype.send = function(e) {
return this._req.send(e.data)
}, e.prototype.abort = function(e) {
return this._req.abort(), this._parent._delActiveHXMLHttpRequest(this)
}, e.prototype.overrideMimeType = function(e) {
return this._req.overrideMimeType(e.mimeType)
}, e.prototype.setRequestHeader = function(e) {
return this._req.setRequestHeader(e.header, e.value)
}, e.prototype.timeout = function(e) {
return this._req.timeout = honey.util.parsePositiveInt(e)
}, e.prototype.withCredentials = function(e) {
return this._req.withCredentials = !!e
}, e.prototype._requestEventHandler = function(e) {
var t, a;
return ("loadend" === (a = e.type) || "abort" === a) && this._parent._delActiveHXMLHttpRequest(this), t = {
reqId: this._reqId,
event: e.type,
data: {
readyState: this._req.readyState,
response: this._base64ArrayBuffer(this._req.response),
responseURL: this._req.responseURL,
responseHeaders: this._req.getAllResponseHeaders(),
status: this._req.status,
statusText: this._req.statusText
}
}, ("undefined" != typeof ProgressEvent && e instanceof ProgressEvent || "undefined" != typeof XMLHttpRequestProgressEvent && e instanceof XMLHttpRequestProgressEvent) && (t.progress = {
loaded: null != e ? e.loaded : void 0,
total: null != e ? e.total : void 0,
lengthComputable: null != e ? e.lengthComputable : void 0
}), honey.messages.send("adbbp:hxmlhttprequest:requestevent", t, {
tab: this._tabId,
allFrames: !0,
ignoreResponse: !0
})
}, e.prototype._uploadEventHandler = function(e) {
return honey.messages.send("adbbp:hxmlhttprequest:uploadevent", {
reqId: this._reqId,
event: e.type,
progress: {
loaded: e.loaded,
total: e.total,
lengthComputable: e.lengthComputable
}
}, {
tab: this._tabId,
allFrames: !0,
ignoreResponse: !0
})
}, e.prototype._base64ArrayBuffer = function(e) {
var t, a, o, n, i, r, u, s, c, l, m, p, h, d;
if (!e) return null;
for (t = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",
n = "", u = new Uint8Array(e), i = u.byteLength, r = i % 3, h = i - r, m = p = 0, d = h; d > p; m = p += 3) c = u[m] << 16 | u[m + 1] << 8 | u[m + 2], a = (16515072 & c) >> 18, o = (258048 & c) >> 12, s = (4032 & c) >> 6, l = 63 & c, n += t[a] + t[o] + t[s] + t[l];
return 1 === r ? (c = u[h], a = (252 & c) >> 2, o = (3 & c) << 4, n += t[a] + t[o] + "==") : 2 === r && (c = u[h] << 8 | u[h + 1], a = (64512 & c) >> 10, o = (1008 & c) >> 4, s = (15 & c) << 2, n += t[a] + t[o] + t[s] + "="), n
}, e
}()
}, {}],
13: [function(e, t, a) {
var o, n, i, r, u, bind = function(e, t) {
return function() {
return e.apply(t, arguments)
}
};
i = e("./filter_manager"), n = e("./ajax_proxy"), u = e("./script_replayer"), r = e("./req_replayer"), t.exports = o = function() {
function e() {
this._onWebHookBeforeSendHeaders = bind(this._onWebHookBeforeSendHeaders, this), honey.ready.then(function(e) {
return function() {
return e._filterManager = new i, e._ajaxProxy = new n, e._scriptReplayer = new u, e._reqReplayer = new r, honey.webHooks.addBeforeSendHeadersListener(e._onWebHookBeforeSendHeaders, {
types: ["xmlhttprequest"],
blocking: !0
})
}
}(this))
}
return e.prototype._onWebHookBeforeSendHeaders = function(e) {
var t, a, o, n, i, r, u, s, c, l, m;
if (c = e.tabId, i = e.method, l = e.url, u = e.requestHeaders, !(c > 0) && (s = null, t = {}, u = u.filter(function(e) {
var a;
return (a = e.name.match(/^X-Honey-HXMLHttpRequest-(\w+)$/)) ? (s = "HXMLHttpRequest", t[a[1]] = e.value, !1) : (a = e.name.match(/^X-Honey-HScriptTags-(\w+)$/)) ? (s = "HScriptTags", t[a[1]] = e.value, !1) : !0
}), s)) {
for (o = 0, n = u.length; n > o; o++) a = u[o], a.name in t && (a.value = t[a.name], delete t[a.name]);
if (delete t.ParentUrl, Object.keys(t).length) {
for (r in t) m = t[r], u.push({
name: r,
value: m
});
return {
requestHeaders: u
}
}
}
}, e
}()
}, {
"./ajax_proxy": 10,
"./filter_manager": 11,
"./req_replayer": 14,
"./script_replayer": 15
}],
14: [function(e, t, a) {
var o, n, i, r, bind = function(e, t) {
return function() {
return e.apply(t, arguments)
}
};
r = e("url"), i = 1800, n = 259200, o = 21600, t.exports = function() {
function e() {
this._onWebHookBeforeSendHeaders = bind(this._onWebHookBeforeSendHeaders, this), this._replayRequest = bind(this._replayRequest, this), this._onWebHookErrorOccurred = bind(this._onWebHookErrorOccurred, this), this._onWebHookComplete = bind(this._onWebHookComplete, this), this._onWebHookBeforeRequest = bind(this._onWebHookBeforeRequest, this), this._cleanupPendingReqs = bind(this._cleanupPendingReqs, this), this._resetWebHooks = bind(this._resetWebHooks, this), this._onStoreTag = bind(this._onStoreTag, this), this._fetchRemoteBaseFilter = bind(this._fetchRemoteBaseFilter, this), this._updateFilters = bind(this._updateFilters, this), this._loadFilters = bind(this._loadFilters, this), this._storage = honey.storage.local.prefixed("adb_bp:reqreplayer"), this._filters = {
stores: {}
}, this._loadFilters(), this._pendingReqs = {}, setInterval(this._cleanupPendingReqs, Moment.duration(1, "minute").asMilliseconds()), honey.messages.addListener("stores:tag", this._onStoreTag)
}
return e.prototype._loadFilters = function() {
return Promise.resolve().then(function(e) {
return function() {
return e._storage.get("filters")
}
}(this))["catch"](NotFoundError, function(e) {
return function() {
return null
}
}(this)).then(function(e) {
return function(t) {
var a, o, n, i, r;
e._filters.base = {
urls: Array.isArray(null != t && null != (o = t.base) ? o.urls : void 0) ? t.base.urls : [],
expires: null != t && null != (n = t.base) ? n.expires : void 0
}, e._filters.stores = {}, i = null != t ? t.stores : void 0;
for (r in i) a = i[r], parseInt(r) && Array.isArray(null != a ? a.urls : void 0) && (null != a ? a.expires : void 0) > Moment().unix() && (e._filters.stores[r] = {
urls: a.urls,
expires: a.expires
});
return e._updateFilters()
}
}(this))["catch"](function(e) {
return function(e) {
return honey.logger.error("Failed to load AdbBp req replayer filters: " + ((null != e ? e.message : void 0) || e))
}
}(this))
}, e.prototype._updateFilters = function() {
return this._updateFiltersPromise = (this._updateFiltersPromise || Promise.resolve()).then(function(e) {
return function() {
var t, a;
return Array.isArray(null != (t = e._filters.base) ? t.urls : void 0) && (null != (a = e._filters.base) ? a.expires : void 0) > Moment().unix() ? e._filters.base : e._fetchRemoteBaseFilter()
}
}(this)).then(function(e) {
return function(t) {
var a, o, n, i, r, u, s, c, l, m, p, h;
for (e._filters.base = t, a = {}, c = e._filters.base.urls, n = 0, r = c.length; r > n; n++) h = c[n], a[h] = !0;
l = e._filters.stores || {};
for (p in l)
if (o = l[p], Array.isArray(null != o ? o.urls : void 0) && (null != o ? o.expires : void 0) > Moment().unix())
for (m = o.urls, i = 0, u = m.length; u > i; i++) h = m[i], a[h] = !0;
else delete e._filters.stores[p];
return s = e._filters.hash, e._filters.all = Object.keys(a), e._filters.hash = CryptoJS.MD5(JSON.stringify(e._filters.all)).toString(), e._filters.hash !== s ? (e._resetWebHooks(), e._storage.set("filters", e._filters)) : void 0
}
}(this))["catch"](function(e) {
return function(e) {
return honey.logger.error("Failed to update AdbBp req replayer filters: " + ((null != e ? e.message : void 0) || e))
}
}(this))
}, e.prototype._fetchRemoteBaseFilter = function() {
return $.ajaxAsync(window.DATA_API_URL + "/adb/filter").then(function(e) {
return function(e) {
var t;
return t = Math.max(i, Math.min(n, parseInt(null != e ? e.ttl : void 0))), {
urls: Array.isArray(null != e ? e.urls : void 0) ? e.urls : [],
expires: Moment().add(t || o, "seconds").unix()
}
}
}(this))
}, e.prototype._onStoreTag = function(e, t, a) {
var o, n;
return (null != t && null != (o = t.store) ? o.id : void 0) && Array.isArray(null != t && null != (n = t.store) ? n.partialUrls : void 0) ? (this._filters.stores[t.store.id] = {
urls: t.store.partialUrls.map(function(e) {
return "*://*." + e + "/*"
}),
expires: Moment().add(12, "hours").unix()
}, this._updateFilters()["catch"](function() {})) : void 0
}, e.prototype._resetWebHooks = function() {
var e;
return honey.webHooks.removeBeforeRequestListener(this._onWebHookBeforeRequest), honey.webHooks.removeCompleteListener(this._onWebHookComplete), honey.webHooks.removeErrorOccurredListener(this._onWebHookErrorOccurred), honey.webHooks.removeBeforeSendHeadersListener(this._onWebHookBeforeSendHeaders), (null != (e = this._filters.all) ? e.length : void 0) ? (honey.webHooks.addBeforeRequestListener(this._onWebHookBeforeRequest, {
urls: this._filters.all
}), honey.webHooks.addCompleteListener(this._onWebHookComplete, {
urls: this._filters.all
}), honey.webHooks.addErrorOccurredListener(this._onWebHookErrorOccurred, {
urls: this._filters.all
}), honey.webHooks.addBeforeSendHeadersListener(this._onWebHookBeforeSendHeaders, {
urls: this._filters.all,
types: ["xmlhttprequest"],
blocking: !0
})) : void 0
}, e.prototype._cleanupPendingReqs = function() {
var e, t, a, o, n;
t = Moment().unix(), a = this._pendingReqs, n = [];
for (o in a) e = a[o].expires, e > t ? n.push(void 0) : n.push(delete this._pendingReqs[o]);
return n
}, e.prototype._onWebHookBeforeRequest = function(e) {
var t, a, o, n, i;
return n = e.requestId, a = e.method, i = e.url, o = e.requestBody, t = Moment().add(1, "minute").unix(), void(this._pendingReqs[n] = {
method: a,
url: i,
requestBody: o,
expires: t
})
}, e.prototype._onWebHookComplete = function(e) {
var t;
return t = e.requestId, void delete this._pendingReqs[t]
}, e.prototype._onWebHookErrorOccurred = function(e) {
var t, a, o, n, i, r, u;
return u = e.tabId, r = e.requestId, t = e.error, (i = this._pendingReqs[r]) ? ("net::ERR_BLOCKED_BY_CLIENT" === t && (a = {
method: i.method,
url: i.url
}, (null != (o = i.requestBody) ? o.raw : void 0) ? (a.processData = !1, a.data = i.requestBody.raw) : (null != (n = i.requestBody) ? n.formData : void 0) && (a.processData = !0, a.data = i.requestBody.formData), this._replayRequest(u, a)["catch"](function() {})), void delete this._pendingReqs[r]) : void 0
}, e.prototype._replayRequest = function(e, t) {
return honey.tabs.get(e).then(function(e) {
return function(e) {
var a, o, n, i;
return i = e.url, n = r.parse(i), o = n.protocol, a = n.host, t.headers = {
"X-Honey-AdbBp-Origin": o + "//" + a,
"X-Honey-AdbBp-Referer": i
}, $.ajaxAsync(t)
}
}(this))["catch"](function() {})
}, e.prototype._onWebHookBeforeSendHeaders = function(e) {
var t, a, o, n, i;
if (i = e.tabId, n = e.requestHeaders, !(i > 0)) {
o = {}, n = n.filter(function(e) {
var t, a;
return (t = null != (a = e.name.match(/^X-Honey-AdbBp-([^\s]+)/)) ? a[1] : void 0) ? (o[t.toLowerCase()] = {
name: t,
value: e.value
}, !1) : !0
}).filter(function(e) {
return !(honey.util.cleanStringLower(e.name) in o)
});
for (t in o) a = o[t], n.push(a);
return {
requestHeaders: n
}
}
}, e
}()
}, {
url: 177
}],
15: [function(e, t, a) {
var bind = function(e, t) {
return function() {
return e.apply(t, arguments)
}
};
t.exports = function() {
function e() {
this._onWebHookErrorOccurred = bind(this._onWebHookErrorOccurred, this), this._onHScriptTagFetch = bind(this._onHScriptTagFetch, this), honey.messages.addListener("adbbp:hscripttag:fetch", this._onHScriptTagFetch), honey.webHooks.addErrorOccurredListener(this._onWebHookErrorOccurred)
}
return e.prototype._onHScriptTagFetch = function(e, t, a) {
if (!(null != t ? t.url : void 0)) throw new InvalidParametersError("url");
return $.ajaxAsync({
method: "GET",
url: t.url,
dataType: "text",
headers: {
"X-Honey-HScriptTags-Referer": t.referrerUrl
}
})
}, e.prototype._onWebHookErrorOccurred = function(e) {
return "net::ERR_BLOCKED_BY_CLIENT" === (null != e ? e.error : void 0) && e.url && e.tabId && "script" === e.type ? honey.messages.send("adbbp:hscripttags:blockedscript", {
url: e.url
}, {
tab: e.tabId,
allFrames: !0,
ignoreResponse: !0
}) : void 0
}, e
}()
}, {}],
16: [function(e, t, a) {
var o, bind = function(e, t) {
return function() {
return e.apply(t, arguments)
}
};
t.exports = o = function() {
function e() {
this._onUtilsActionMessage = bind(this._onUtilsActionMessage, this), honey.messages.addListener("utils:action", this._onUtilsActionMessage)
}
return e.prototype._onUtilsActionMessage = function(e, t, a) {
switch (null != t ? t.action : void 0) {
case "ajaxAsync":
return this._ajaxAsync(t.data, null != a ? a.tabId : void 0)
}
}, e.prototype._ajaxAsync = function(e) {
return $.ajaxAsync(e)
}, e
}()
}, {}],
17: [function(e, t, a) {
var o, n, i, r, bind = function(e, t) {
return function() {
return e.apply(t, arguments)
}
};
o = "#88c987", n = "active", r = {
icon: "default",
badgeText: ""
}, t.exports = i = function() {
function e() {
this._onPageLoad = bind(this._onPageLoad, this), this.setButtonInactive = bind(this.setButtonInactive, this), this.setButtonInfo = bind(this.setButtonInfo, this), honey.messages.addListener("page:load", this._onPageLoad)
}
return e.prototype.getLastSetIcon = function(e) {
return honey._native.button.getLastSetIcon(e)
}, e.prototype.setButtonInfo = function(e, t) {
return honey._native.button.setButtonInfo(e, t)
}, e.prototype.setButtonInactive = function(e) {
return this.setButtonInfo(r, e)
}, e.prototype._onPageLoad = function(e, t, a) {
return (null != a ? a.tabId : void 0) >= 0 ? Promise["try"](function(e) {
return function() {
return honey.stores.getStoreByUrl(null != t ? t.url : void 0, a.tabId)
}
}(this)).then(function(e) {
return function(t) {
var i;
return (null != t ? t.supported : void 0) && "suspend" !== t.standDown && "nopopup" !== t.standDown ? (i = {
badgeColor: o,
badgeText: t.numCoupons > 0 ? t.numCoupons : void 0,
icon: n
}, e.setButtonInfo(i, a.tabId)) : e.setButtonInfo(r, a.tabId)
}
}(this))["catch"](function(e) {
return function() {
return e.setButtonInfo(r, a.tabId)
}
}(this)) : void 0
}, e
}()
}, {}],
18: [function(e, t, a) {
"use strict";
function o() {
function e(e) {
var t = e.requestHeaders,
a = t.reduce(function(e, t) {
var a = Object.assign({}, t);
return "object" === ("undefined" == typeof t ? "undefined" : n(t)) && "referer" === honey.util.cleanStringLower(t.name) && (a.value = "https://match.amazonbrowserapp.com/pcomp/pcomp-process.html?locale=US"), e.push(a), e
}, []);
return {
requestHeaders: a
}
}
function t(e) {
var t = e.tabId,
a = e.url,
o = i.parse(a, !0);
("AddToCart" === o.query.ev || "Purchase" === o.query.ev) && honey.tabs.get(t).then(function(e) {
return honey.stores.getStoreByUrl(e.url)
}).then(function(e) {
var t = e.id,
a = null,
n = null;
try {
var i = JSON.parse(o.query["cd[content_ids]"]);
i.length > 1 ? n = i.filter(function(e) {
return e
}) : a = i[0]
} catch (r) {
a = o.query["cd[content_ids]"]
}
var u = {
merch_id: a,
ids_arr: n,
title: o.query["cd[content_name]"],
currency: o.query["cd[currency]"],
prod_type: o.query.content_type,
type: "FB",
price: {
sale: honey.util.cleanPrice(o.query["cd[value]"]) || null
},
store: {
id: t
}
};
"AddToCart" === o.query.ev ? honey.stats.sendEvent("prd001002", u) : "Purchase" === o.query.ev && honey.stats.sendEvent("ext009003", u)
})["catch"](function() {})
}
return honey.webHooks.addBeforeSendHeadersListener(e, {
blocking: !0,
urls: ["*://*.amazonbrowserapp.com/*"]
}), {
onAzMessage: e,
onTag: t
}
}
Object.defineProperty(a, "__esModule", {
value: !0
});
var n = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
return typeof e
} : function(e) {
return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
};
a["default"] = o;
var i = e("url")
}, {
url: 177
}],
19: [function(e, t, a) {
var o, n, i, r, u, s, bind = function(e, t) {
return function() {
return e.apply(t, arguments)
}
};
s = e("./tough_cookie"), u = 1800, r = 259200, i = 21600, o = 3e4, t.exports = n = function() {
function e() {
this._onWebHookWriteCookies = bind(this._onWebHookWriteCookies, this), this._onWebHookReadCookies = bind(this._onWebHookReadCookies, this), this._refreshWebHooks = bind(this._refreshWebHooks, this), this._loadSystemCookies = bind(this._loadSystemCookies, this), this._startPersistingJarInStorage = bind(this._startPersistingJarInStorage, this), this._loadJarFromStorage = bind(this._loadJarFromStorage, this), this._fetchRemoteFilter = bind(this._fetchRemoteFilter, this), this._updateFilter = bind(this._updateFilter, this), this._loadFilterFromStorage = bind(this._loadFilterFromStorage, this), this._storage = honey.storage.local.prefixed("ck_bp"), honey.ready.then(function(e) {
return function() {
return Promise.all([e._loadFilterFromStorage(), e._loadJarFromStorage()]).reflect()
}
}(this)).then(function(e) {
return function() {
return e._updateFilter()
}
}(this)).then(function(e) {
return function() {
return e._loadSystemCookies()
}
}(this))["catch"](function() {})
}
return e.prototype._loadFilterFromStorage = function() {
return this._storage.get("filter").then(function(e) {
return function(t) {
return Array.isArray((null != t ? t.urls : void 0) && (null != t ? t.expires : void 0) > Moment().unix()) ? e._filter = {
urls: t.urls,
expires: t.expires
} : void 0
}
}(this))["catch"](NotFoundError, function(e) {
return function() {
return null
}
}(this))
}, e.prototype._updateFilter = function() {
return Promise.resolve().then(function(e) {
return function() {
var t, a;
return Array.isArray((null != (t = e._filter) ? t.urls : void 0) && (null != (a = e._filter) ? a.expires : void 0) > Moment().unix()) ? e._filter : e._fetchRemoteFilter()
}
}(this)).then(function(e) {
return function(t) {
var a, o, n;
return a = null != (o = e._filter) ? o.hash : void 0, e._filter = t, e._filter.hash = CryptoJS.MD5(JSON.stringify(null != (n = e._filter) ? n.urls : void 0)).toString(), Promise.all([e._storage.set("filter", e._filter), e._filter.hash !== a ? e._refreshWebHooks() : void 0])
}
}(this))["catch"](function(e) {
return function(e) {
return honey.logger.error("Failed to update ck_bp filter: " + ((null != e ? e.message : void 0) || e), e)
}
}(this))
}, e.prototype._fetchRemoteFilter = function() {
return $.ajaxAsync(window.DATA_API_URL + "/extdata/ckfilter").then(function(e) {
return function(t) {
var a;
return a = Math.max(e.FILTERS_TTL_MIN, Math.min(e.FILTERS_TTL_MAX, parseInt(null != t ? t.ttl : void 0))), {
urls: Array.isArray(null != t ? t.urls : void 0) ? t.urls : [],
expires: Moment().add(a || e.FILTERS_TTL_DEFAULT, "seconds").unix()
}
}
}(this))
}, e.prototype._loadJarFromStorage = function() {
return this._storage.get("jarData").then(function(e) {
return function(t) {
return e._jar = s.CookieJar.deserializeSync(t)
}
}(this))["catch"](function(e) {
return function() {
return e._jar = new s.CookieJar
}
}(this))["finally"](function(e) {
return function() {
return e._startPersistingJarInStorage()
}
}(this))
}, e.prototype._startPersistingJarInStorage = function() {
return this._persistJarInterval && clearInterval(this._persistJarInterval), this._persistJarInterval = setInterval(function(e) {
return function() {
var t, a;
try {
if (!e._cookiesChanged) return;
return t = e._jar.serializeSync(), t.cookies = null != (a = t.cookies) ? a.filter(function(e) {
return new Date(e.expires).getTime() > 0
}) : void 0, e._storage.set("jarData", t)["catch"](function() {})
} catch (o) {}
}
}(this), o)
}, e.prototype._loadSystemCookies = function() {
var e;
return Promise.resolve((null != (e = this._filter) ? e.urls : void 0) || []).each(function(e) {
return function(t) {
var a, o;
if (a = null != (o = t.match(/^.*\:\/\/(?:\*\.)*([^\/]+)\//)) ? o[1] : void 0) return honey.cookies.getAllForDomain(a).then(function(t) {
var a, o, n, i, r, u, c;
for (r = t || [], c = [], n = 0, i = r.length; i > n; n++)
if (a = r[n], null != a ? a.domain : void 0) {
a.key = a.name, "." === a.domain[0] && (a.domain = a.domain.substr(1)), o = "http" + (a.secure ? "s" : "") + "://" + a.domain + (a.path || "/"), a.expires = a.expires && !a.session ? new Date(a.expires) : void 0, (null != (u = a.expires) ? u.valueOf() : void 0) || delete a.expires;
try {
c.push(e._jar.setCookieSync(new s.Cookie(a), o, {
ignoreError: !1
}))
} catch (l) {}
}
return c
})["catch"](function() {})
}
}(this))
}, e.prototype._refreshWebHooks = function() {
var e;
return honey.webHooks.removeBeforeRedirectListener(this._onWebHookReadCookies), honey.webHooks.removeResponseStartedListener(this._onWebHookReadCookies), honey.webHooks.removeBeforeSendHeadersListener(this._onWebHookWriteCookies), Array.isArray(null != (e = this._filter) ? e.urls : void 0) && this._filter.urls.length ? (honey.webHooks.addBeforeRedirectListener(this._onWebHookReadCookies, {
urls: this._filter.urls
}), honey.webHooks.addResponseStartedListener(this._onWebHookReadCookies, {
urls: this._filter.urls
}), honey.webHooks.addBeforeSendHeadersListener(this._onWebHookWriteCookies, {
urls: this._filter.urls,
blocking: !0
})) : void 0
}, e.prototype._onWebHookReadCookies = function(e) {
var t, a, o, n, i, r, u, s;
for (u = e.url, i = e.responseHeaders, r = [], t = 0, a = i.length; a > t; t++)
if (n = i[t], o = n.name, s = n.value, "SET-COOKIE" === honey.util.cleanStringUpper(o)) try {
this._jar.setCookieSync(s, u), r.push(this._cookiesChanged = !0)
} catch (c) {} else r.push(void 0);
return r
}, e.prototype._onWebHookWriteCookies = function(e) {
var t, a, o, n, i, r;
for (r = e.url, i = e.requestHeaders, a = 0, o = i.length; o > a; a++)
if (n = i[a].name, "COOKIE" === honey.util.cleanStringUpper(n)) return;
return (t = this._jar.getCookieStringSync(r)) ? (i.push({
name: "Cookie",
value: t
}), {
requestHeaders: i
}) : void 0
}, e
}()
}, {
"./tough_cookie": 20
}],
20: [function(e, t, a) {
"use strict";
function o(e) {
if (e) {
var t = e.split(x);
if (t) {
for (var a = null, o = null, n = null, i = null, r = null, u = null, s = 0; s < t.length; s++) {
var c = t[s].trim();
if (c.length) {
var l;
if (null === n && (l = I.exec(c))) {
if (a = parseInt(l[1], 10), o = parseInt(l[2], 10), n = parseInt(l[3], 10), a > 23 || o > 59 || n > 59) return
} else if (null === i && (l = R.exec(c))) {
if (i = parseInt(l, 10), 1 > i || i > 31) return
} else if (null === r && (l = N.exec(c))) r = L[l[1].toLowerCase()];
else if (null === u && (l = q.exec(c), l && (u = parseInt(l[0], 10), u >= 70 && 99 >= u ? u += 1900 : u >= 0 && 69 >= u && (u += 2e3), 1601 > u))) return
}
}
if (null !== n && null !== i && null !== r && null !== u) return new Date(Date.UTC(u, r, i, a, o, n))
}
}
}
function n(e) {
var t = e.getUTCDate();
t = t >= 10 ? t : "0" + t;
var a = e.getUTCHours();
a = a >= 10 ? a : "0" + a;
var o = e.getUTCMinutes();
o = o >= 10 ? o : "0" + o;
var n = e.getUTCSeconds();
return n = n >= 10 ? n : "0" + n, M[e.getUTCDay()] + ", " + t + " " + O[e.getUTCMonth()] + " " + e.getUTCFullYear() + " " + a + ":" + o + ":" + n + " GMT"
}
function i(e) {
return null == e ? null : (e = e.trim().replace(/^\./, ""), k && /[^\u0001-\u007f]/.test(e) && (e = k.toASCII(e)), e.toLowerCase())
}
function r(e, t, a) {
if (null == e || null == t) return null;
if (a !== !1 && (e = i(e), t = i(t)), e == t) return !0;
if (j.isV4Format(e) || j.isV6Format(e)) return !1;
var o = e.indexOf(t);
return 0 >= o ? !1 : e.length !== t.length + o ? !1 : "." !== e.substr(o - 1, 1) ? !1 : !0
}
function u(e) {
if (!e || "/" !== e.substr(0, 1)) return "/";
if ("/" === e) return e;
var t = e.lastIndexOf("/");
return 0 === t ? "/" : e.slice(0, t)
}
function s(e, t) {
t && "object" === ("undefined" == typeof t ? "undefined" : y(t)) || (t = {}), e = e.trim();
var a = P.exec(e);
a && (e = e.slice(0, a.index));
var n = e.indexOf(";"),
i = t.loose ? S : B,
r = i.exec(-1 === n ? e : e.substr(0, n));
if (r) {
var u = new d;
if (r[1] ? u.key = r[2].trim() : u.key = "", u.value = r[3].trim(), !D.test(u.key) && !D.test(u.value)) {
if (-1 === n) return u;
var s = e.slice(n).replace(/^\s*;\s*/, "").trim();
if (0 === s.length) return u;
for (var c = s.split(/\s*;\s*/); c.length;) {
var l, m, p = c.shift(),
h = p.indexOf("=");
switch (-1 === h ? (l = p, m = null) : (l = p.substr(0, h), m = p.substr(h + 1)), l = l.trim().toLowerCase(), m && (m = m.trim()), l) {
case "expires":
if (m) {
var g = o(m);
g && (u.expires = g)
}
break;
case "max-age":
if (m && /^-?[0-9]+$/.test(m)) {
var f = parseInt(m, 10);
u.setMaxAge(f)
}
break;
case "domain":
if (m) {
var k = m.trim().replace(/^\./, "");
k && (u.domain = k.toLowerCase())
}
break;
case "path":
u.path = m && "/" === m[0] ? m : null;
break;
case "secure":
u.secure = !0;
break;
case "httponly":
u.httpOnly = !0;
break;
default:
u.extensions = u.extensions || [], u.extensions.push(p)
}
}
return u
}
}
}
function c(e) {
var t;
try {
t = JSON.parse(e)
} catch (a) {
return a
}
return t
}
function l(e) {
if (!e) return null;
var t;
if ("string" == typeof e) {
if (t = c(e), t instanceof Error) return null
} else t = e;
for (var a = new d, o = 0; o < d.serializableProperties.length; o++) {
var n = d.serializableProperties[o];
void 0 !== t[n] && t[n] !== d.prototype[n] && ("expires" === n || "creation" === n || "lastAccessed" === n ? null === t[n] ? a[n] = null : a[n] = "Infinity" == t[n] ? "Infinity" : new Date(t[n]) : a[n] = t[n])
}
return a
}
function m(e, t) {
var a = 0,
o = e.path ? e.path.length : 0,
n = t.path ? t.path.length : 0;
if (a = n - o, 0 !== a) return a;
var i = e.creation ? e.creation.getTime() : U,
r = t.creation ? t.creation.getTime() : U;
return a = i - r, 0 !== a ? a : a = e.creationIndex - t.creationIndex
}
function p(e) {
if ("/" === e) return ["/"];
e.lastIndexOf("/") === e.length - 1 && (e = e.substr(0, e.length - 1));
for (var t = [e]; e.length > 1;) {
var a = e.lastIndexOf("/");
if (0 === a) break;
e = e.substr(0, a), t.push(e)
}
return t.push("/"), t
}
function h(e) {
if (e instanceof Object) return e;
try {
e = decodeURI(e)
} catch (t) {}
return v(e)
}
function d(e) {
e = e || {}, Object.keys(e).forEach(function(t) {
d.prototype.hasOwnProperty(t) && d.prototype[t] !== e[t] && "_" !== t.substr(0, 1) && (this[t] = e[t])
}, this), this.creation = this.creation || new Date, Object.defineProperty(this, "creationIndex", {
configurable: !1,
enumerable: !1,
writable: !0,
value: ++d.cookiesCreated
})
}
function g(e, t) {
"boolean" == typeof t ? t = {
rejectPublicSuffixes: t
} : null == t && (t = {}), null != t.rejectPublicSuffixes && (this.rejectPublicSuffixes = t.rejectPublicSuffixes), null != t.looseMode && (this.enableLooseMode = t.looseMode), e || (e = new _), this.store = e
}
function f(e) {
return function() {
if (!this.store.synchronous) throw new Error("CookieJar store is not synchronous; use async API instead.");
var t, a, o = Array.prototype.slice.call(arguments);
if (o.push(function(e, o) {
t = e, a = o
}), this[e].apply(this, o), t) throw t;
return a
}
}
var k, y = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
return typeof e
} : function(e) {
return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
},
j = e("ip"),
v = e("url").parse,
b = e("./pubsuffix"),
w = e("./store").Store,
_ = e("./memstore").MemoryCookieStore,
A = e("./pathMatch").pathMatch,
E = "2.2.0";
try {
k = e("punycode")
} catch (C) {
console.warn("cookie: can't load punycode; won't use punycode for domain normalization")
}
var x = /[\x09\x20-\x2F\x3B-\x40\x5B-\x60\x7B-\x7E]/,
F = /[\x21\x23-\x2B\x2D-\x3A\x3C-\x5B\x5D-\x7E]/,
z = new RegExp("^" + F.source + "+$"),
D = /[\x00-\x1F]/,
B = /^(([^=;]+))\s*=\s*(("?)[^\n\r\0]*\3)/,
S = /^((?:=)?([^=;]*)\s*=\s*)?(("?)[^\n\r\0]*\3)/,
T = /[\x20-\x3A\x3C-\x7E]+/,
P = /;+$/,
R = /^(\d{1,2})[^\d]*$/,
I = /^(\d{1,2})[^\d]*:(\d{1,2})[^\d]*:(\d{1,2})[^\d]*$/,
N = /^(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)/i,
L = {
jan: 0,
feb: 1,
mar: 2,
apr: 3,
may: 4,
jun: 5,
jul: 6,
aug: 7,
sep: 8,
oct: 9,
nov: 10,
dec: 11
},
O = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
M = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
q = /^(\d{2}|\d{4})$/,
U = 2147483647e3,
H = 0;
d.cookiesCreated = 0, d.parse = s, d.fromJSON = l, d.prototype.key = "", d.prototype.value = "", d.prototype.expires = "Infinity", d.prototype.maxAge = null, d.prototype.domain = null, d.prototype.path = null, d.prototype.secure = !1, d.prototype.httpOnly = !1, d.prototype.extensions = null, d.prototype.hostOnly = null, d.prototype.pathIsDefault = null, d.prototype.creation = null, d.prototype.lastAccessed = null, Object.defineProperty(d.prototype, "creationIndex", {
configurable: !0,
enumerable: !1,
writable: !0,
value: 0
}), d.serializableProperties = Object.keys(d.prototype).filter(function(e) {
return !(d.prototype[e] instanceof Function || "creationIndex" === e || "_" === e.substr(0, 1))
}), d.prototype.inspect = function() {
var e = Date.now();
return 'Cookie="' + this.toString() + "; hostOnly=" + (null != this.hostOnly ? this.hostOnly : "?") + "; aAge=" + (this.lastAccessed ? e - this.lastAccessed.getTime() + "ms" : "?") + "; cAge=" + (this.creation ? e - this.creation.getTime() + "ms" : "?") + '"'
}, d.prototype.toJSON = function() {
for (var e = {}, t = d.serializableProperties, a = 0; a < t.length; a++) {
var o = t[a];
this[o] !== d.prototype[o] && ("expires" === o || "creation" === o || "lastAccessed" === o ? null === this[o] ? e[o] = null : e[o] = "Infinity" == this[o] ? "Infinity" : this[o].toISOString() : "maxAge" === o ? null !== this[o] && (e[o] = this[o] == 1 / 0 || this[o] == -(1 / 0) ? this[o].toString() : this[o]) : this[o] !== d.prototype[o] && (e[o] = this[o]))
}
return e
}, d.prototype.clone = function() {
return l(this.toJSON())
}, d.prototype.validate = function() {
if (!z.test(this.value)) return !1;
if (!(this.expires == 1 / 0 || this.expires instanceof Date || o(this.expires))) return !1;
if (null != this.maxAge && this.maxAge <= 0) return !1;
if (null != this.path && !T.test(this.path)) return !1;
var e = this.cdomain();
if (e) {
if (e.match(/\.$/)) return !1;
var t = b.getPublicSuffix(e);
if (null == t) return !1
}
return !0
}, d.prototype.setExpires = function(e) {
e instanceof Date ? this.expires = e : this.expires = o(e) || "Infinity"
}, d.prototype.setMaxAge = function(e) {
e === 1 / 0 || e === -(1 / 0) ? this.maxAge = e.toString() : this.maxAge = e
}, d.prototype.cookieString = function() {
var e = this.value;
return null == e && (e = ""), "" === this.key ? e : this.key + "=" + e
}, d.prototype.toString = function() {
var e = this.cookieString();
return this.expires != 1 / 0 && (e += this.expires instanceof Date ? "; Expires=" + n(this.expires) : "; Expires=" + this.expires), null != this.maxAge && this.maxAge != 1 / 0 && (e += "; Max-Age=" + this.maxAge), this.domain && !this.hostOnly && (e += "; Domain=" + this.domain), this.path && (e += "; Path=" + this.path), this.secure && (e += "; Secure"), this.httpOnly && (e += "; HttpOnly"), this.extensions && this.extensions.forEach(function(t) {
e += "; " + t
}), e
}, d.prototype.TTL = function(e) {
if (null != this.maxAge) return this.maxAge <= 0 ? 0 : 1e3 * this.maxAge;
var t = this.expires;
return t != 1 / 0 ? (t instanceof Date || (t = o(t) || 1 / 0), t == 1 / 0 ? 1 / 0 : t.getTime() - (e || Date.now())) : 1 / 0
}, d.prototype.expiryTime = function(e) {
if (null != this.maxAge) {
var t = e || this.creation || new Date,
a = this.maxAge <= 0 ? -(1 / 0) : 1e3 * this.maxAge;
return t.getTime() + a
}
return this.expires == 1 / 0 ? 1 / 0 : this.expires.getTime()
}, d.prototype.expiryDate = function(e) {
var t = this.expiryTime(e);
return t == 1 / 0 ? new Date(U) : t == -(1 / 0) ? new Date(H) : new Date(t)
}, d.prototype.isPersistent = function() {
return null != this.maxAge || this.expires != 1 / 0
}, d.prototype.cdomain = d.prototype.canonicalizedDomain = function() {
return null == this.domain ? null : i(this.domain)
}, g.prototype.store = null, g.prototype.rejectPublicSuffixes = !0, g.prototype.enableLooseMode = !1;
var $ = [];
$.push("setCookie"), g.prototype.setCookie = function(e, t, a, o) {
function n(t, n) {
if (t) return o(t);
var i = function(t) {
return t ? o(t) : void o(null, e)
};
if (n) {
if (a.http === !1 && n.httpOnly) return t = new Error("old Cookie is HttpOnly and this isn't an HTTP API"), o(a.ignoreError ? null : t);
e.creation = n.creation, e.creationIndex = n.creationIndex, e.lastAccessed = p, f.updateCookie(n, e, i)
} else e.creation = e.lastAccessed = p, f.putCookie(e, i)
}
var s, c = h(t);
a instanceof Function && (o = a, a = {});
var l = i(c.hostname),
m = this.enableLooseMode;
if (null != a.loose && (m = a.loose), e instanceof d || (e = d.parse(e, {
loose: m
})), !e) return s = new Error("Cookie failed to parse"), o(a.ignoreError ? null : s);
var p = a.now || new Date;
if (this.rejectPublicSuffixes && e.domain) {
var g = b.getPublicSuffix(e.cdomain());
if (null == g) return s = new Error("Cookie has domain set to a public suffix"), o(a.ignoreError ? null : s)
}
if (e.domain) {
if (!r(l, e.cdomain(), !1)) return s = new Error("Cookie not in this host's domain. Cookie:" + e.cdomain() + " Request:" + l), o(a.ignoreError ? null : s);
null == e.hostOnly && (e.hostOnly = !1)
} else e.hostOnly = !0, e.domain = l;
if (e.path && "/" === e.path[0] || (e.path = u(c.pathname), e.pathIsDefault = !0), a.http === !1 && e.httpOnly) return s = new Error("Cookie is HttpOnly and this isn't an HTTP API"), o(a.ignoreError ? null : s);
var f = this.store;
f.updateCookie || (f.updateCookie = function(e, t, a) {
this.putCookie(t, a)
}), f.findCookie(e.domain, e.path, e.key, n)
}, $.push("getCookies"), g.prototype.getCookies = function(e, t, a) {
function o(e) {
if (e.hostOnly) {
if (e.domain != u) return !1
} else if (!r(u, e.domain, !1)) return !1;
return g || A(s, e.path) ? e.secure && !c ? !1 : e.httpOnly && !l ? !1 : d && e.expiryTime() <= p ? (f.removeCookie(e.domain, e.path, e.key, function() {}), !1) : !0 : !1
}
var n = h(e);
t instanceof Function && (a = t, t = {});
var u = i(n.hostname),
s = n.pathname || "/",
c = t.secure;
null != c || !n.protocol || "https:" != n.protocol && "wss:" != n.protocol || (c = !0);
var l = t.http;
null == l && (l = !0);
var p = t.now || Date.now(),
d = t.expire !== !1,
g = !!t.allPaths,
f = this.store;
f.findCookies(u, g ? null : s, function(e, n) {
if (e) return a(e);
n = n.filter(o), t.sort !== !1 && (n = n.sort(m));
var i = new Date;
n.forEach(function(e) {
e.lastAccessed = i
}), a(null, n)
})
}, $.push("getCookieString"), g.prototype.getCookieString = function() {
var e = Array.prototype.slice.call(arguments, 0),
t = e.pop(),
a = function(e, a) {
e ? t(e) : t(null, a.sort(m).map(function(e) {
return e.cookieString()
}).join("; "))
};
e.push(a), this.getCookies.apply(this, e)
}, $.push("getSetCookieStrings"), g.prototype.getSetCookieStrings = function() {
var e = Array.prototype.slice.call(arguments, 0),
t = e.pop(),
a = function(e, a) {
e ? t(e) : t(null, a.map(function(e) {
return e.toString()
}))
};
e.push(a), this.getCookies.apply(this, e)
}, $.push("serialize"), g.prototype.serialize = function(e) {
var t = this.store.constructor.name;
"Object" === t && (t = null);
var a = {
version: "tough-cookie@" + E,
storeType: t,
rejectPublicSuffixes: !!this.rejectPublicSuffixes,
cookies: []
};
return this.store.getAllCookies && "function" == typeof this.store.getAllCookies ? void this.store.getAllCookies(function(t, o) {
return t ? e(t) : (a.cookies = o.map(function(e) {
return e = e instanceof d ? e.toJSON() : e, delete e.creationIndex, e
}), e(null, a))
}) : e(new Error("store does not support getAllCookies and cannot be serialized"))
}, g.prototype.toJSON = function() {
return this.serializeSync()
}, $.push("_importCookies"), g.prototype._importCookies = function(e, t) {
function a(e) {
if (e) return t(e);
if (!n.length) return t(e, o);
var i;
try {
i = l(n.shift())
} catch (r) {
return t(r)
}
return null === i ? a(null) : void o.store.putCookie(i, a)
}
var o = this,
n = e.cookies;
return n && Array.isArray(n) ? void a() : t(new Error("serialized jar has no cookies array"))
}, g.deserialize = function(e, t, a) {
3 !== arguments.length && (a = t, t = null);
var o;
if ("string" == typeof e) {
if (o = c(e), o instanceof Error) return a(o)
} else o = e;
var n = new g(t, o.rejectPublicSuffixes);
n._importCookies(o, function(e) {
return e ? a(e) : void a(null, n)
})
}, g.fromJSON = g.deserializeSync, g.deserializeSync = function(e, t) {
var a = "string" == typeof e ? JSON.parse(e) : e,
o = new g(t, a.rejectPublicSuffixes);
if (!o.store.synchronous) throw new Error("CookieJar store is not synchronous; use async API instead.");
return o._importCookiesSync(a), o
}, $.push("clone"), g.prototype.clone = function(e, t) {
1 === arguments.length && (t = e, e = null), this.serialize(function(a, o) {
return a ? t(a) : void g.deserialize(e, o, t)
})
}, $.forEach(function(e) {
g.prototype[e + "Sync"] = f(e)
}), t.exports = {
CookieJar: g,
Cookie: d,
Store: w,
MemoryCookieStore: _,
parseDate: o,
formatDate: n,
parse: s,
fromJSON: l,
domainMatch: r,
defaultPath: u,
pathMatch: A,
getPublicSuffix: b.getPublicSuffix,
cookieCompare: m,
permuteDomain: e("./permuteDomain").permuteDomain,
permutePath: p,
canonicalDomain: i
}
}, {
"./memstore": 21,
"./pathMatch": 22,
"./permuteDomain": 23,
"./pubsuffix": 24,
"./store": 25,
ip: 123,
punycode: 147,
url: 177
}],
21: [function(e, t, a) {
"use strict";
function o() {
n.call(this), this.idx = {}
}
var n = e("./store").Store,
i = e("./permuteDomain").permuteDomain,
r = e("./pathMatch").pathMatch,
u = e("util");
u.inherits(o, n), a.MemoryCookieStore = o, o.prototype.idx = null, o.prototype.synchronous = !0, o.prototype.inspect = function() {
return "{ idx: " + u.inspect(this.idx, !1, 2) + " }"
}, o.prototype.findCookie = function(e, t, a, o) {
return this.idx[e] && this.idx[e][t] ? o(null, this.idx[e][t][a] || null) : o(null, void 0)
}, o.prototype.findCookies = function(e, t, a) {
var o = [];
if (!e) return a(null, []);
var n;
n = t ? function(e) {
Object.keys(e).forEach(function(a) {
if (r(t, a)) {
var n = e[a];
for (var i in n) o.push(n[i])
}
})
} : function(e) {
for (var t in e) {
var a = e[t];
for (var n in a) o.push(a[n])
}
};
var u = i(e) || [e],
s = this.idx;
u.forEach(function(e) {
var t = s[e];
t && n(t)
}), a(null, o)
}, o.prototype.putCookie = function(e, t) {
this.idx[e.domain] || (this.idx[e.domain] = {}), this.idx[e.domain][e.path] || (this.idx[e.domain][e.path] = {}), this.idx[e.domain][e.path][e.key] = e, t(null)
}, o.prototype.updateCookie = function(e, t, a) {
this.putCookie(t, a)
}, o.prototype.removeCookie = function(e, t, a, o) {
this.idx[e] && this.idx[e][t] && this.idx[e][t][a] && delete this.idx[e][t][a], o(null)
}, o.prototype.removeCookies = function(e, t, a) {
return this.idx[e] && (t ? delete this.idx[e][t] : delete this.idx[e]), a(null)
}, o.prototype.getAllCookies = function(e) {
var t = [],
a = this.idx,
o = Object.keys(a);
o.forEach(function(e) {
var o = Object.keys(a[e]);
o.forEach(function(o) {
var n = Object.keys(a[e][o]);
n.forEach(function(n) {
null !== n && t.push(a[e][o][n])
})
})
}), t.sort(function(e, t) {
return (e.creationIndex || 0) - (t.creationIndex || 0)
}), e(null, t)
}
}, {
"./pathMatch": 22,
"./permuteDomain": 23,
"./store": 25,
util: 181
}],
22: [function(e, t, a) {
"use strict";
function o(e, t) {
if (t === e) return !0;
var a = e.indexOf(t);
if (0 === a) {
if ("/" === t.substr(-1)) return !0;
if ("/" === e.substr(t.length, 1)) return !0
}
return !1
}
a.pathMatch = o
}, {}],
23: [function(e, t, a) {
"use strict";
function o(e) {
var t = n.getPublicSuffix(e);
if (!t) return null;
if (t == e) return [e];
for (var a = e.slice(0, -(t.length + 1)), o = a.split(".").reverse(), i = t, r = [i]; o.length;) i = o.shift() + "." + i, r.push(i);
return r
}
var n = e("./pubsuffix");
a.permuteDomain = o
}, {
"./pubsuffix": 24
}],
24: [function(e, t, a) {
"use strict";
var o = e("punycode");
t.exports.getPublicSuffix = function(e) {
if (!e) return null;
if (e.match(/^\./)) return null;
var t = o.toASCII(e),
a = !1;
if (t !== e && (e = t, a = !0), n[e]) return null;
e = e.toLowerCase();
for (var i = e.split(".").reverse(), r = "", u = 0, s = 0; s < i.length; s++) {
var c = i[s],
l = "*" + r,
m = c + r;
n[l] ? (u = s + 1, n[m] === !1 && u--) : n[m] && (u = s + 1), r = "." + m
}
if (n["*" + r]) return null;
if (u = u || 1, i.length > u) {
var p = i.slice(0, u + 1).reverse().join(".");
return a ? o.toUnicode(p) : p
}
return null
};
var n = t.exports.index = Object.freeze({
ac: !0,
"com.ac": !0,
"edu.ac": !0,
"gov.ac": !0,
"net.ac": !0,
"mil.ac": !0,
"org.ac": !0,
ad: !0,
"nom.ad": !0,
ae: !0,
"co.ae": !0,
"net.ae": !0,
"org.ae": !0,
"sch.ae": !0,
"ac.ae": !0,
"gov.ae": !0,
"mil.ae": !0,
aero: !0,
"accident-investigation.aero": !0,
"accident-prevention.aero": !0,
"aerobatic.aero": !0,
"aeroclub.aero": !0,
"aerodrome.aero": !0,
"agents.aero": !0,
"aircraft.aero": !0,
"airline.aero": !0,
"airport.aero": !0,
"air-surveillance.aero": !0,
"airtraffic.aero": !0,
"air-traffic-control.aero": !0,
"ambulance.aero": !0,
"amusement.aero": !0,
"association.aero": !0,
"author.aero": !0,
"ballooning.aero": !0,
"broker.aero": !0,
"caa.aero": !0,
"cargo.aero": !0,
"catering.aero": !0,
"certification.aero": !0,
"championship.aero": !0,
"charter.aero": !0,
"civilaviation.aero": !0,
"club.aero": !0,
"conference.aero": !0,
"consultant.aero": !0,
"consulting.aero": !0,
"control.aero": !0,
"council.aero": !0,
"crew.aero": !0,
"design.aero": !0,
"dgca.aero": !0,
"educator.aero": !0,
"emergency.aero": !0,
"engine.aero": !0,
"engineer.aero": !0,
"entertainment.aero": !0,
"equipment.aero": !0,
"exchange.aero": !0,
"express.aero": !0,
"federation.aero": !0,
"flight.aero": !0,
"freight.aero": !0,
"fuel.aero": !0,
"gliding.aero": !0,
"government.aero": !0,
"groundhandling.aero": !0,
"group.aero": !0,
"hanggliding.aero": !0,
"homebuilt.aero": !0,
"insurance.aero": !0,
"journal.aero": !0,
"journalist.aero": !0,
"leasing.aero": !0,
"logistics.aero": !0,
"magazine.aero": !0,
"maintenance.aero": !0,
"marketplace.aero": !0,
"media.aero": !0,
"microlight.aero": !0,
"modelling.aero": !0,
"navigation.aero": !0,
"parachuting.aero": !0,
"paragliding.aero": !0,
"passenger-association.aero": !0,
"pilot.aero": !0,
"press.aero": !0,
"production.aero": !0,
"recreation.aero": !0,
"repbody.aero": !0,
"res.aero": !0,
"research.aero": !0,
"rotorcraft.aero": !0,
"safety.aero": !0,
"scientist.aero": !0,
"services.aero": !0,
"show.aero": !0,
"skydiving.aero": !0,
"software.aero": !0,
"student.aero": !0,
"taxi.aero": !0,
"trader.aero": !0,
"trading.aero": !0,
"trainer.aero": !0,
"union.aero": !0,
"workinggroup.aero": !0,
"works.aero": !0,
af: !0,
"gov.af": !0,
"com.af": !0,
"org.af": !0,
"net.af": !0,
"edu.af": !0,
ag: !0,
"com.ag": !0,
"org.ag": !0,
"net.ag": !0,
"co.ag": !0,
"nom.ag": !0,
ai: !0,
"off.ai": !0,
"com.ai": !0,
"net.ai": !0,
"org.ai": !0,
al: !0,
"com.al": !0,
"edu.al": !0,
"gov.al": !0,
"mil.al": !0,
"net.al": !0,
"org.al": !0,
am: !0,
an: !0,
"com.an": !0,
"net.an": !0,
"org.an": !0,
"edu.an": !0,
ao: !0,
"ed.ao": !0,
"gv.ao": !0,
"og.ao": !0,
"co.ao": !0,
"pb.ao": !0,
"it.ao": !0,
aq: !0,
ar: !0,
"com.ar": !0,
"edu.ar": !0,
"gob.ar": !0,
"gov.ar": !0,
"int.ar": !0,
"mil.ar": !0,
"net.ar": !0,
"org.ar": !0,
"tur.ar": !0,
arpa: !0,
"e164.arpa": !0,
"in-addr.arpa": !0,
"ip6.arpa": !0,
"iris.arpa": !0,
"uri.arpa": !0,
"urn.arpa": !0,
as: !0,
"gov.as": !0,
asia: !0,
at: !0,
"ac.at": !0,
"co.at": !0,
"gv.at": !0,
"or.at": !0,
au: !0,
"com.au": !0,
"net.au": !0,
"org.au": !0,
"edu.au": !0,
"gov.au": !0,
"asn.au": !0,
"id.au": !0,
"info.au": !0,
"conf.au": !0,
"oz.au": !0,
"act.au": !0,
"nsw.au": !0,
"nt.au": !0,
"qld.au": !0,
"sa.au": !0,
"tas.au": !0,
"vic.au": !0,
"wa.au": !0,
"act.edu.au": !0,
"nsw.edu.au": !0,
"nt.edu.au": !0,
"qld.edu.au": !0,
"sa.edu.au": !0,
"tas.edu.au": !0,
"vic.edu.au": !0,
"wa.edu.au": !0,
"qld.gov.au": !0,
"sa.gov.au": !0,
"tas.gov.au": !0,
"vic.gov.au": !0,
"wa.gov.au": !0,
aw: !0,
"com.aw": !0,
ax: !0,
az: !0,
"com.az": !0,
"net.az": !0,
"int.az": !0,
"gov.az": !0,
"org.az": !0,
"edu.az": !0,
"info.az": !0,
"pp.az": !0,
"mil.az": !0,
"name.az": !0,
"pro.az": !0,
"biz.az": !0,
ba: !0,
"org.ba": !0,
"net.ba": !0,
"edu.ba": !0,
"gov.ba": !0,
"mil.ba": !0,
"unsa.ba": !0,
"unbi.ba": !0,
"co.ba": !0,
"com.ba": !0,
"rs.ba": !0,
bb: !0,
"biz.bb": !0,
"co.bb": !0,
"com.bb": !0,
"edu.bb": !0,
"gov.bb": !0,
"info.bb": !0,
"net.bb": !0,
"org.bb": !0,
"store.bb": !0,
"tv.bb": !0,
"*.bd": !0,
be: !0,
"ac.be": !0,
bf: !0,
"gov.bf": !0,
bg: !0,
"a.bg": !0,
"b.bg": !0,
"c.bg": !0,
"d.bg": !0,
"e.bg": !0,
"f.bg": !0,
"g.bg": !0,
"h.bg": !0,
"i.bg": !0,
"j.bg": !0,
"k.bg": !0,
"l.bg": !0,
"m.bg": !0,
"n.bg": !0,
"o.bg": !0,
"p.bg": !0,
"q.bg": !0,
"r.bg": !0,
"s.bg": !0,
"t.bg": !0,
"u.bg": !0,
"v.bg": !0,
"w.bg": !0,
"x.bg": !0,
"y.bg": !0,
"z.bg": !0,
"0.bg": !0,
"1.bg": !0,
"2.bg": !0,
"3.bg": !0,
"4.bg": !0,
"5.bg": !0,
"6.bg": !0,
"7.bg": !0,
"8.bg": !0,
"9.bg": !0,
bh: !0,
"com.bh": !0,
"edu.bh": !0,
"net.bh": !0,
"org.bh": !0,
"gov.bh": !0,
bi: !0,
"co.bi": !0,
"com.bi": !0,
"edu.bi": !0,
"or.bi": !0,
"org.bi": !0,
biz: !0,
bj: !0,
"asso.bj": !0,
"barreau.bj": !0,
"gouv.bj": !0,
bm: !0,
"com.bm": !0,
"edu.bm": !0,
"gov.bm": !0,
"net.bm": !0,
"org.bm": !0,
"*.bn": !0,
bo: !0,
"com.bo": !0,
"edu.bo": !0,
"gov.bo": !0,
"gob.bo": !0,
"int.bo": !0,
"org.bo": !0,
"net.bo": !0,
"mil.bo": !0,
"tv.bo": !0,
br: !0,
"adm.br": !0,
"adv.br": !0,
"agr.br": !0,
"am.br": !0,
"arq.br": !0,
"art.br": !0,
"ato.br": !0,
"b.br": !0,
"bio.br": !0,
"blog.br": !0,
"bmd.br": !0,
"cim.br": !0,
"cng.br": !0,
"cnt.br": !0,
"com.br": !0,
"coop.br": !0,
"ecn.br": !0,
"eco.br": !0,
"edu.br": !0,
"emp.br": !0,
"eng.br": !0,
"esp.br": !0,
"etc.br": !0,
"eti.br": !0,
"far.br": !0,
"flog.br": !0,
"fm.br": !0,
"fnd.br": !0,
"fot.br": !0,
"fst.br": !0,
"g12.br": !0,
"ggf.br": !0,
"gov.br": !0,
"imb.br": !0,
"ind.br": !0,
"inf.br": !0,
"jor.br": !0,
"jus.br": !0,
"leg.br": !0,
"lel.br": !0,
"mat.br": !0,
"med.br": !0,
"mil.br": !0,
"mp.br": !0,
"mus.br": !0,
"net.br": !0,
"*.nom.br": !0,
"not.br": !0,
"ntr.br": !0,
"odo.br": !0,
"org.br": !0,
"ppg.br": !0,
"pro.br": !0,
"psc.br": !0,
"psi.br": !0,
"qsl.br": !0,
"radio.br": !0,
"rec.br": !0,
"slg.br": !0,
"srv.br": !0,
"taxi.br": !0,
"teo.br": !0,
"tmp.br": !0,
"trd.br": !0,
"tur.br": !0,
"tv.br": !0,
"vet.br": !0,
"vlog.br": !0,
"wiki.br": !0,
"zlg.br": !0,
bs: !0,
"com.bs": !0,
"net.bs": !0,
"org.bs": !0,
"edu.bs": !0,
"gov.bs": !0,
bt: !0,
"com.bt": !0,
"edu.bt": !0,
"gov.bt": !0,
"net.bt": !0,
"org.bt": !0,
bv: !0,
bw: !0,
"co.bw": !0,
"org.bw": !0,
by: !0,
"gov.by": !0,
"mil.by": !0,
"com.by": !0,
"of.by": !0,
bz: !0,
"com.bz": !0,
"net.bz": !0,
"org.bz": !0,
"edu.bz": !0,
"gov.bz": !0,
ca: !0,
"ab.ca": !0,
"bc.ca": !0,
"mb.ca": !0,
"nb.ca": !0,
"nf.ca": !0,
"nl.ca": !0,
"ns.ca": !0,
"nt.ca": !0,
"nu.ca": !0,
"on.ca": !0,
"pe.ca": !0,
"qc.ca": !0,
"sk.ca": !0,
"yk.ca": !0,
"gc.ca": !0,
cat: !0,
cc: !0,
cd: !0,
"gov.cd": !0,
cf: !0,
cg: !0,
ch: !0,
ci: !0,
"org.ci": !0,
"or.ci": !0,
"com.ci": !0,
"co.ci": !0,
"edu.ci": !0,
"ed.ci": !0,
"ac.ci": !0,
"net.ci": !0,
"go.ci": !0,
"asso.ci": !0,
"xn--aroport-bya.ci": !0,
"int.ci": !0,
"presse.ci": !0,
"md.ci": !0,
"gouv.ci": !0,
"*.ck": !0,
"www.ck": !1,
cl: !0,
"gov.cl": !0,
"gob.cl": !0,
"co.cl": !0,
"mil.cl": !0,
cm: !0,
"co.cm": !0,
"com.cm": !0,
"gov.cm": !0,
"net.cm": !0,
cn: !0,
"ac.cn": !0,
"com.cn": !0,
"edu.cn": !0,
"gov.cn": !0,
"net.cn": !0,
"org.cn": !0,
"mil.cn": !0,
"xn--55qx5d.cn": !0,
"xn--io0a7i.cn": !0,
"xn--od0alg.cn": !0,
"ah.cn": !0,
"bj.cn": !0,
"cq.cn": !0,
"fj.cn": !0,
"gd.cn": !0,
"gs.cn": !0,
"gz.cn": !0,
"gx.cn": !0,
"ha.cn": !0,
"hb.cn": !0,
"he.cn": !0,
"hi.cn": !0,
"hl.cn": !0,
"hn.cn": !0,
"jl.cn": !0,
"js.cn": !0,
"jx.cn": !0,
"ln.cn": !0,
"nm.cn": !0,
"nx.cn": !0,
"qh.cn": !0,
"sc.cn": !0,
"sd.cn": !0,
"sh.cn": !0,
"sn.cn": !0,
"sx.cn": !0,
"tj.cn": !0,
"xj.cn": !0,
"xz.cn": !0,
"yn.cn": !0,
"zj.cn": !0,
"hk.cn": !0,
"mo.cn": !0,
"tw.cn": !0,
co: !0,
"arts.co": !0,
"com.co": !0,
"edu.co": !0,
"firm.co": !0,
"gov.co": !0,
"info.co": !0,
"int.co": !0,
"mil.co": !0,
"net.co": !0,
"nom.co": !0,
"org.co": !0,
"rec.co": !0,
"web.co": !0,
com: !0,
coop: !0,
cr: !0,
"ac.cr": !0,
"co.cr": !0,
"ed.cr": !0,
"fi.cr": !0,
"go.cr": !0,
"or.cr": !0,
"sa.cr": !0,
cu: !0,
"com.cu": !0,
"edu.cu": !0,
"org.cu": !0,
"net.cu": !0,
"gov.cu": !0,
"inf.cu": !0,
cv: !0,
cw: !0,
"com.cw": !0,
"edu.cw": !0,
"net.cw": !0,
"org.cw": !0,
cx: !0,
"gov.cx": !0,
"ac.cy": !0,
"biz.cy": !0,
"com.cy": !0,
"ekloges.cy": !0,
"gov.cy": !0,
"ltd.cy": !0,
"name.cy": !0,
"net.cy": !0,
"org.cy": !0,
"parliament.cy": !0,
"press.cy": !0,
"pro.cy": !0,
"tm.cy": !0,
cz: !0,
de: !0,
dj: !0,
dk: !0,
dm: !0,
"com.dm": !0,
"net.dm": !0,
"org.dm": !0,
"edu.dm": !0,
"gov.dm": !0,
"do": !0,
"art.do": !0,
"com.do": !0,
"edu.do": !0,
"gob.do": !0,
"gov.do": !0,
"mil.do": !0,
"net.do": !0,
"org.do": !0,
"sld.do": !0,
"web.do": !0,
dz: !0,
"com.dz": !0,
"org.dz": !0,
"net.dz": !0,
"gov.dz": !0,
"edu.dz": !0,
"asso.dz": !0,
"pol.dz": !0,
"art.dz": !0,
ec: !0,
"com.ec": !0,
"info.ec": !0,
"net.ec": !0,
"fin.ec": !0,
"k12.ec": !0,
"med.ec": !0,
"pro.ec": !0,
"org.ec": !0,
"edu.ec": !0,
"gov.ec": !0,
"gob.ec": !0,
"mil.ec": !0,
edu: !0,
ee: !0,
"edu.ee": !0,
"gov.ee": !0,
"riik.ee": !0,
"lib.ee": !0,
"med.ee": !0,
"com.ee": !0,
"pri.ee": !0,
"aip.ee": !0,
"org.ee": !0,
"fie.ee": !0,
eg: !0,
"com.eg": !0,
"edu.eg": !0,
"eun.eg": !0,
"gov.eg": !0,
"mil.eg": !0,
"name.eg": !0,
"net.eg": !0,
"org.eg": !0,
"sci.eg": !0,
"*.er": !0,
es: !0,
"com.es": !0,
"nom.es": !0,
"org.es": !0,
"gob.es": !0,
"edu.es": !0,
et: !0,
"com.et": !0,
"gov.et": !0,
"org.et": !0,
"edu.et": !0,
"biz.et": !0,
"name.et": !0,
"info.et": !0,
"net.et": !0,
eu: !0,
fi: !0,
"aland.fi": !0,
"*.fj": !0,
"*.fk": !0,
fm: !0,
fo: !0,
fr: !0,
"com.fr": !0,
"asso.fr": !0,
"nom.fr": !0,
"prd.fr": !0,
"presse.fr": !0,
"tm.fr": !0,
"aeroport.fr": !0,
"assedic.fr": !0,
"avocat.fr": !0,
"avoues.fr": !0,
"cci.fr": !0,
"chambagri.fr": !0,
"chirurgiens-dentistes.fr": !0,
"experts-comptables.fr": !0,
"geometre-expert.fr": !0,
"gouv.fr": !0,
"greta.fr": !0,
"huissier-justice.fr": !0,
"medecin.fr": !0,
"notaires.fr": !0,
"pharmacien.fr": !0,
"port.fr": !0,
"veterinaire.fr": !0,
ga: !0,
gb: !0,
gd: !0,
ge: !0,
"com.ge": !0,
"edu.ge": !0,
"gov.ge": !0,
"org.ge": !0,
"mil.ge": !0,
"net.ge": !0,
"pvt.ge": !0,
gf: !0,
gg: !0,
"co.gg": !0,
"net.gg": !0,
"org.gg": !0,
gh: !0,
"com.gh": !0,
"edu.gh": !0,
"gov.gh": !0,
"org.gh": !0,
"mil.gh": !0,
gi: !0,
"com.gi": !0,
"ltd.gi": !0,
"gov.gi": !0,
"mod.gi": !0,
"edu.gi": !0,
"org.gi": !0,
gl: !0,
"co.gl": !0,
"com.gl": !0,
"edu.gl": !0,
"net.gl": !0,
"org.gl": !0,
gm: !0,
gn: !0,
"ac.gn": !0,
"com.gn": !0,
"edu.gn": !0,
"gov.gn": !0,
"org.gn": !0,
"net.gn": !0,
gov: !0,
gp: !0,
"com.gp": !0,
"net.gp": !0,
"mobi.gp": !0,
"edu.gp": !0,
"org.gp": !0,
"asso.gp": !0,
gq: !0,
gr: !0,
"com.gr": !0,
"edu.gr": !0,
"net.gr": !0,
"org.gr": !0,
"gov.gr": !0,
gs: !0,
gt: !0,
"com.gt": !0,
"edu.gt": !0,
"gob.gt": !0,
"ind.gt": !0,
"mil.gt": !0,
"net.gt": !0,
"org.gt": !0,
"*.gu": !0,
gw: !0,
gy: !0,
"co.gy": !0,
"com.gy": !0,
"net.gy": !0,
hk: !0,
"com.hk": !0,
"edu.hk": !0,
"gov.hk": !0,
"idv.hk": !0,
"net.hk": !0,
"org.hk": !0,
"xn--55qx5d.hk": !0,
"xn--wcvs22d.hk": !0,
"xn--lcvr32d.hk": !0,
"xn--mxtq1m.hk": !0,
"xn--gmqw5a.hk": !0,
"xn--ciqpn.hk": !0,
"xn--gmq050i.hk": !0,
"xn--zf0avx.hk": !0,
"xn--io0a7i.hk": !0,
"xn--mk0axi.hk": !0,
"xn--od0alg.hk": !0,
"xn--od0aq3b.hk": !0,
"xn--tn0ag.hk": !0,
"xn--uc0atv.hk": !0,
"xn--uc0ay4a.hk": !0,
hm: !0,
hn: !0,
"com.hn": !0,
"edu.hn": !0,
"org.hn": !0,
"net.hn": !0,
"mil.hn": !0,
"gob.hn": !0,
hr: !0,
"iz.hr": !0,
"from.hr": !0,
"name.hr": !0,
"com.hr": !0,
ht: !0,
"com.ht": !0,
"shop.ht": !0,
"firm.ht": !0,
"info.ht": !0,
"adult.ht": !0,
"net.ht": !0,
"pro.ht": !0,
"org.ht": !0,
"med.ht": !0,
"art.ht": !0,
"coop.ht": !0,
"pol.ht": !0,
"asso.ht": !0,
"edu.ht": !0,
"rel.ht": !0,
"gouv.ht": !0,
"perso.ht": !0,
hu: !0,
"co.hu": !0,
"info.hu": !0,
"org.hu": !0,
"priv.hu": !0,
"sport.hu": !0,
"tm.hu": !0,
"2000.hu": !0,
"agrar.hu": !0,
"bolt.hu": !0,
"casino.hu": !0,
"city.hu": !0,
"erotica.hu": !0,
"erotika.hu": !0,
"film.hu": !0,
"forum.hu": !0,
"games.hu": !0,
"hotel.hu": !0,
"ingatlan.hu": !0,
"jogasz.hu": !0,
"konyvelo.hu": !0,
"lakas.hu": !0,
"media.hu": !0,
"news.hu": !0,
"reklam.hu": !0,
"sex.hu": !0,
"shop.hu": !0,
"suli.hu": !0,
"szex.hu": !0,
"tozsde.hu": !0,
"utazas.hu": !0,
"video.hu": !0,
id: !0,
"ac.id": !0,
"biz.id": !0,
"co.id": !0,
"desa.id": !0,
"go.id": !0,
"mil.id": !0,
"my.id": !0,
"net.id": !0,
"or.id": !0,
"sch.id": !0,
"web.id": !0,
ie: !0,
"gov.ie": !0,
il: !0,
"ac.il": !0,
"co.il": !0,
"gov.il": !0,
"idf.il": !0,
"k12.il": !0,
"muni.il": !0,
"net.il": !0,
"org.il": !0,
im: !0,
"ac.im": !0,
"co.im": !0,
"com.im": !0,
"ltd.co.im": !0,
"net.im": !0,
"org.im": !0,
"plc.co.im": !0,
"tt.im": !0,
"tv.im": !0,
"in": !0,
"co.in": !0,
"firm.in": !0,
"net.in": !0,
"org.in": !0,
"gen.in": !0,
"ind.in": !0,
"nic.in": !0,
"ac.in": !0,
"edu.in": !0,
"res.in": !0,
"gov.in": !0,
"mil.in": !0,
info: !0,
"int": !0,
"eu.int": !0,
io: !0,
"com.io": !0,
iq: !0,
"gov.iq": !0,
"edu.iq": !0,
"mil.iq": !0,
"com.iq": !0,
"org.iq": !0,
"net.iq": !0,
ir: !0,
"ac.ir": !0,
"co.ir": !0,
"gov.ir": !0,
"id.ir": !0,
"net.ir": !0,
"org.ir": !0,
"sch.ir": !0,
"xn--mgba3a4f16a.ir": !0,
"xn--mgba3a4fra.ir": !0,
is: !0,
"net.is": !0,
"com.is": !0,
"edu.is": !0,
"gov.is": !0,
"org.is": !0,
"int.is": !0,
it: !0,
"gov.it": !0,
"edu.it": !0,
"abr.it": !0,
"abruzzo.it": !0,
"aosta-valley.it": !0,
"aostavalley.it": !0,
"bas.it": !0,
"basilicata.it": !0,
"cal.it": !0,
"calabria.it": !0,
"cam.it": !0,
"campania.it": !0,
"emilia-romagna.it": !0,
"emiliaromagna.it": !0,
"emr.it": !0,
"friuli-v-giulia.it": !0,
"friuli-ve-giulia.it": !0,
"friuli-vegiulia.it": !0,
"friuli-venezia-giulia.it": !0,
"friuli-veneziagiulia.it": !0,
"friuli-vgiulia.it": !0,
"friuliv-giulia.it": !0,
"friulive-giulia.it": !0,
"friulivegiulia.it": !0,
"friulivenezia-giulia.it": !0,
"friuliveneziagiulia.it": !0,
"friulivgiulia.it": !0,
"fvg.it": !0,
"laz.it": !0,
"lazio.it": !0,
"lig.it": !0,
"liguria.it": !0,
"lom.it": !0,
"lombardia.it": !0,
"lombardy.it": !0,
"lucania.it": !0,
"mar.it": !0,
"marche.it": !0,
"mol.it": !0,
"molise.it": !0,
"piedmont.it": !0,
"piemonte.it": !0,
"pmn.it": !0,
"pug.it": !0,
"puglia.it": !0,
"sar.it": !0,
"sardegna.it": !0,
"sardinia.it": !0,
"sic.it": !0,
"sicilia.it": !0,
"sicily.it": !0,
"taa.it": !0,
"tos.it": !0,
"toscana.it": !0,
"trentino-a-adige.it": !0,
"trentino-aadige.it": !0,
"trentino-alto-adige.it": !0,
"trentino-altoadige.it": !0,
"trentino-s-tirol.it": !0,
"trentino-stirol.it": !0,
"trentino-sud-tirol.it": !0,
"trentino-sudtirol.it": !0,
"trentino-sued-tirol.it": !0,
"trentino-suedtirol.it": !0,
"trentinoa-adige.it": !0,
"trentinoaadige.it": !0,
"trentinoalto-adige.it": !0,
"trentinoaltoadige.it": !0,
"trentinos-tirol.it": !0,
"trentinostirol.it": !0,
"trentinosud-tirol.it": !0,
"trentinosudtirol.it": !0,
"trentinosued-tirol.it": !0,
"trentinosuedtirol.it": !0,
"tuscany.it": !0,
"umb.it": !0,
"umbria.it": !0,
"val-d-aosta.it": !0,
"val-daosta.it": !0,
"vald-aosta.it": !0,
"valdaosta.it": !0,
"valle-aosta.it": !0,
"valle-d-aosta.it": !0,
"valle-daosta.it": !0,
"valleaosta.it": !0,
"valled-aosta.it": !0,
"valledaosta.it": !0,
"vallee-aoste.it": !0,
"valleeaoste.it": !0,
"vao.it": !0,
"vda.it": !0,
"ven.it": !0,
"veneto.it": !0,
"ag.it": !0,
"agrigento.it": !0,
"al.it": !0,
"alessandria.it": !0,
"alto-adige.it": !0,
"altoadige.it": !0,
"an.it": !0,
"ancona.it": !0,
"andria-barletta-trani.it": !0,
"andria-trani-barletta.it": !0,
"andriabarlettatrani.it": !0,
"andriatranibarletta.it": !0,
"ao.it": !0,
"aosta.it": !0,
"aoste.it": !0,
"ap.it": !0,
"aq.it": !0,
"aquila.it": !0,
"ar.it": !0,
"arezzo.it": !0,
"ascoli-piceno.it": !0,
"ascolipiceno.it": !0,
"asti.it": !0,
"at.it": !0,
"av.it": !0,
"avellino.it": !0,
"ba.it": !0,
"balsan.it": !0,
"bari.it": !0,
"barletta-trani-andria.it": !0,
"barlettatraniandria.it": !0,
"belluno.it": !0,
"benevento.it": !0,
"bergamo.it": !0,
"bg.it": !0,
"bi.it": !0,
"biella.it": !0,
"bl.it": !0,
"bn.it": !0,
"bo.it": !0,
"bologna.it": !0,
"bolzano.it": !0,
"bozen.it": !0,
"br.it": !0,
"brescia.it": !0,
"brindisi.it": !0,
"bs.it": !0,
"bt.it": !0,
"bz.it": !0,
"ca.it": !0,
"cagliari.it": !0,
"caltanissetta.it": !0,
"campidano-medio.it": !0,
"campidanomedio.it": !0,
"campobasso.it": !0,
"carbonia-iglesias.it": !0,
"carboniaiglesias.it": !0,
"carrara-massa.it": !0,
"carraramassa.it": !0,
"caserta.it": !0,
"catania.it": !0,
"catanzaro.it": !0,
"cb.it": !0,
"ce.it": !0,
"cesena-forli.it": !0,
"cesenaforli.it": !0,
"ch.it": !0,
"chieti.it": !0,
"ci.it": !0,
"cl.it": !0,
"cn.it": !0,
"co.it": !0,
"como.it": !0,
"cosenza.it": !0,
"cr.it": !0,
"cremona.it": !0,
"crotone.it": !0,
"cs.it": !0,
"ct.it": !0,
"cuneo.it": !0,
"cz.it": !0,
"dell-ogliastra.it": !0,
"dellogliastra.it": !0,
"en.it": !0,
"enna.it": !0,
"fc.it": !0,
"fe.it": !0,
"fermo.it": !0,
"ferrara.it": !0,
"fg.it": !0,
"fi.it": !0,
"firenze.it": !0,
"florence.it": !0,
"fm.it": !0,
"foggia.it": !0,
"forli-cesena.it": !0,
"forlicesena.it": !0,
"fr.it": !0,
"frosinone.it": !0,
"ge.it": !0,
"genoa.it": !0,
"genova.it": !0,
"go.it": !0,
"gorizia.it": !0,
"gr.it": !0,
"grosseto.it": !0,
"iglesias-carbonia.it": !0,
"iglesiascarbonia.it": !0,
"im.it": !0,
"imperia.it": !0,
"is.it": !0,
"isernia.it": !0,
"kr.it": !0,
"la-spezia.it": !0,
"laquila.it": !0,
"laspezia.it": !0,
"latina.it": !0,
"lc.it": !0,
"le.it": !0,
"lecce.it": !0,
"lecco.it": !0,
"li.it": !0,
"livorno.it": !0,
"lo.it": !0,
"lodi.it": !0,
"lt.it": !0,
"lu.it": !0,
"lucca.it": !0,
"macerata.it": !0,
"mantova.it": !0,
"massa-carrara.it": !0,
"massacarrara.it": !0,
"matera.it": !0,
"mb.it": !0,
"mc.it": !0,
"me.it": !0,
"medio-campidano.it": !0,
"mediocampidano.it": !0,
"messina.it": !0,
"mi.it": !0,
"milan.it": !0,
"milano.it": !0,
"mn.it": !0,
"mo.it": !0,
"modena.it": !0,
"monza-brianza.it": !0,
"monza-e-della-brianza.it": !0,
"monza.it": !0,
"monzabrianza.it": !0,
"monzaebrianza.it": !0,
"monzaedellabrianza.it": !0,
"ms.it": !0,
"mt.it": !0,
"na.it": !0,
"naples.it": !0,
"napoli.it": !0,
"no.it": !0,
"novara.it": !0,
"nu.it": !0,
"nuoro.it": !0,
"og.it": !0,
"ogliastra.it": !0,
"olbia-tempio.it": !0,
"olbiatempio.it": !0,
"or.it": !0,
"oristano.it": !0,
"ot.it": !0,
"pa.it": !0,
"padova.it": !0,
"padua.it": !0,
"palermo.it": !0,
"parma.it": !0,
"pavia.it": !0,
"pc.it": !0,
"pd.it": !0,
"pe.it": !0,
"perugia.it": !0,
"pesaro-urbino.it": !0,
"pesarourbino.it": !0,
"pescara.it": !0,
"pg.it": !0,
"pi.it": !0,
"piacenza.it": !0,
"pisa.it": !0,
"pistoia.it": !0,
"pn.it": !0,
"po.it": !0,
"pordenone.it": !0,
"potenza.it": !0,
"pr.it": !0,
"prato.it": !0,
"pt.it": !0,
"pu.it": !0,
"pv.it": !0,
"pz.it": !0,
"ra.it": !0,
"ragusa.it": !0,
"ravenna.it": !0,
"rc.it": !0,
"re.it": !0,
"reggio-calabria.it": !0,
"reggio-emilia.it": !0,
"reggiocalabria.it": !0,
"reggioemilia.it": !0,
"rg.it": !0,
"ri.it": !0,
"rieti.it": !0,
"rimini.it": !0,
"rm.it": !0,
"rn.it": !0,
"ro.it": !0,
"roma.it": !0,
"rome.it": !0,
"rovigo.it": !0,
"sa.it": !0,
"salerno.it": !0,
"sassari.it": !0,
"savona.it": !0,
"si.it": !0,
"siena.it": !0,
"siracusa.it": !0,
"so.it": !0,
"sondrio.it": !0,
"sp.it": !0,
"sr.it": !0,
"ss.it": !0,
"suedtirol.it": !0,
"sv.it": !0,
"ta.it": !0,
"taranto.it": !0,
"te.it": !0,
"tempio-olbia.it": !0,
"tempioolbia.it": !0,
"teramo.it": !0,
"terni.it": !0,
"tn.it": !0,
"to.it": !0,
"torino.it": !0,
"tp.it": !0,
"tr.it": !0,
"trani-andria-barletta.it": !0,
"trani-barletta-andria.it": !0,
"traniandriabarletta.it": !0,
"tranibarlettaandria.it": !0,
"trapani.it": !0,
"trentino.it": !0,
"trento.it": !0,
"treviso.it": !0,
"trieste.it": !0,
"ts.it": !0,
"turin.it": !0,
"tv.it": !0,
"ud.it": !0,
"udine.it": !0,
"urbino-pesaro.it": !0,
"urbinopesaro.it": !0,
"va.it": !0,
"varese.it": !0,
"vb.it": !0,
"vc.it": !0,
"ve.it": !0,
"venezia.it": !0,
"venice.it": !0,
"verbania.it": !0,
"vercelli.it": !0,
"verona.it": !0,
"vi.it": !0,
"vibo-valentia.it": !0,
"vibovalentia.it": !0,
"vicenza.it": !0,
"viterbo.it": !0,
"vr.it": !0,
"vs.it": !0,
"vt.it": !0,
"vv.it": !0,
je: !0,
"co.je": !0,
"net.je": !0,
"org.je": !0,
"*.jm": !0,
jo: !0,
"com.jo": !0,
"org.jo": !0,
"net.jo": !0,
"edu.jo": !0,
"sch.jo": !0,
"gov.jo": !0,
"mil.jo": !0,
"name.jo": !0,
jobs: !0,
jp: !0,
"ac.jp": !0,
"ad.jp": !0,
"co.jp": !0,
"ed.jp": !0,
"go.jp": !0,
"gr.jp": !0,
"lg.jp": !0,
"ne.jp": !0,
"or.jp": !0,
"aichi.jp": !0,
"akita.jp": !0,
"aomori.jp": !0,
"chiba.jp": !0,
"ehime.jp": !0,
"fukui.jp": !0,
"fukuoka.jp": !0,
"fukushima.jp": !0,
"gifu.jp": !0,
"gunma.jp": !0,
"hiroshima.jp": !0,
"hokkaido.jp": !0,
"hyogo.jp": !0,
"ibaraki.jp": !0,
"ishikawa.jp": !0,
"iwate.jp": !0,
"kagawa.jp": !0,
"kagoshima.jp": !0,
"kanagawa.jp": !0,
"kochi.jp": !0,
"kumamoto.jp": !0,
"kyoto.jp": !0,
"mie.jp": !0,
"miyagi.jp": !0,
"miyazaki.jp": !0,
"nagano.jp": !0,
"nagasaki.jp": !0,
"nara.jp": !0,
"niigata.jp": !0,
"oita.jp": !0,
"okayama.jp": !0,
"okinawa.jp": !0,
"osaka.jp": !0,
"saga.jp": !0,
"saitama.jp": !0,
"shiga.jp": !0,
"shimane.jp": !0,
"shizuoka.jp": !0,
"tochigi.jp": !0,
"tokushima.jp": !0,
"tokyo.jp": !0,
"tottori.jp": !0,
"toyama.jp": !0,
"wakayama.jp": !0,
"yamagata.jp": !0,
"yamaguchi.jp": !0,
"yamanashi.jp": !0,
"xn--4pvxs.jp": !0,
"xn--vgu402c.jp": !0,
"xn--c3s14m.jp": !0,
"xn--f6qx53a.jp": !0,
"xn--8pvr4u.jp": !0,
"xn--uist22h.jp": !0,
"xn--djrs72d6uy.jp": !0,
"xn--mkru45i.jp": !0,
"xn--0trq7p7nn.jp": !0,
"xn--8ltr62k.jp": !0,
"xn--2m4a15e.jp": !0,
"xn--efvn9s.jp": !0,
"xn--32vp30h.jp": !0,
"xn--4it797k.jp": !0,
"xn--1lqs71d.jp": !0,
"xn--5rtp49c.jp": !0,
"xn--5js045d.jp": !0,
"xn--ehqz56n.jp": !0,
"xn--1lqs03n.jp": !0,
"xn--qqqt11m.jp": !0,
"xn--kbrq7o.jp": !0,
"xn--pssu33l.jp": !0,
"xn--ntsq17g.jp": !0,
"xn--uisz3g.jp": !0,
"xn--6btw5a.jp": !0,
"xn--1ctwo.jp": !0,
"xn--6orx2r.jp": !0,
"xn--rht61e.jp": !0,
"xn--rht27z.jp": !0,
"xn--djty4k.jp": !0,
"xn--nit225k.jp": !0,
"xn--rht3d.jp": !0,
"xn--klty5x.jp": !0,
"xn--kltx9a.jp": !0,
"xn--kltp7d.jp": !0,
"xn--uuwu58a.jp": !0,
"xn--zbx025d.jp": !0,
"xn--ntso0iqx3a.jp": !0,
"xn--elqq16h.jp": !0,
"xn--4it168d.jp": !0,
"xn--klt787d.jp": !0,
"xn--rny31h.jp": !0,
"xn--7t0a264c.jp": !0,
"xn--5rtq34k.jp": !0,
"xn--k7yn95e.jp": !0,
"xn--tor131o.jp": !0,
"xn--d5qv7z876c.jp": !0,
"*.kawasaki.jp": !0,
"*.kitakyushu.jp": !0,
"*.kobe.jp": !0,
"*.nagoya.jp": !0,
"*.sapporo.jp": !0,
"*.sendai.jp": !0,
"*.yokohama.jp": !0,
"city.kawasaki.jp": !1,
"city.kitakyushu.jp": !1,
"city.kobe.jp": !1,
"city.nagoya.jp": !1,
"city.sapporo.jp": !1,
"city.sendai.jp": !1,
"city.yokohama.jp": !1,
"aisai.aichi.jp": !0,
"ama.aichi.jp": !0,
"anjo.aichi.jp": !0,
"asuke.aichi.jp": !0,
"chiryu.aichi.jp": !0,
"chita.aichi.jp": !0,
"fuso.aichi.jp": !0,
"gamagori.aichi.jp": !0,
"handa.aichi.jp": !0,
"hazu.aichi.jp": !0,
"hekinan.aichi.jp": !0,
"higashiura.aichi.jp": !0,
"ichinomiya.aichi.jp": !0,
"inazawa.aichi.jp": !0,
"inuyama.aichi.jp": !0,
"isshiki.aichi.jp": !0,
"iwakura.aichi.jp": !0,
"kanie.aichi.jp": !0,
"kariya.aichi.jp": !0,
"kasugai.aichi.jp": !0,
"kira.aichi.jp": !0,
"kiyosu.aichi.jp": !0,
"komaki.aichi.jp": !0,
"konan.aichi.jp": !0,
"kota.aichi.jp": !0,
"mihama.aichi.jp": !0,
"miyoshi.aichi.jp": !0,
"nishio.aichi.jp": !0,
"nisshin.aichi.jp": !0,
"obu.aichi.jp": !0,
"oguchi.aichi.jp": !0,
"oharu.aichi.jp": !0,
"okazaki.aichi.jp": !0,
"owariasahi.aichi.jp": !0,
"seto.aichi.jp": !0,
"shikatsu.aichi.jp": !0,
"shinshiro.aichi.jp": !0,
"shitara.aichi.jp": !0,
"tahara.aichi.jp": !0,
"takahama.aichi.jp": !0,
"tobishima.aichi.jp": !0,
"toei.aichi.jp": !0,
"togo.aichi.jp": !0,
"tokai.aichi.jp": !0,
"tokoname.aichi.jp": !0,
"toyoake.aichi.jp": !0,
"toyohashi.aichi.jp": !0,
"toyokawa.aichi.jp": !0,
"toyone.aichi.jp": !0,
"toyota.aichi.jp": !0,
"tsushima.aichi.jp": !0,
"yatomi.aichi.jp": !0,
"akita.akita.jp": !0,
"daisen.akita.jp": !0,
"fujisato.akita.jp": !0,
"gojome.akita.jp": !0,
"hachirogata.akita.jp": !0,
"happou.akita.jp": !0,
"higashinaruse.akita.jp": !0,
"honjo.akita.jp": !0,
"honjyo.akita.jp": !0,
"ikawa.akita.jp": !0,
"kamikoani.akita.jp": !0,
"kamioka.akita.jp": !0,
"katagami.akita.jp": !0,
"kazuno.akita.jp": !0,
"kitaakita.akita.jp": !0,
"kosaka.akita.jp": !0,
"kyowa.akita.jp": !0,
"misato.akita.jp": !0,
"mitane.akita.jp": !0,
"moriyoshi.akita.jp": !0,
"nikaho.akita.jp": !0,
"noshiro.akita.jp": !0,
"odate.akita.jp": !0,
"oga.akita.jp": !0,
"ogata.akita.jp": !0,
"semboku.akita.jp": !0,
"yokote.akita.jp": !0,
"yurihonjo.akita.jp": !0,
"aomori.aomori.jp": !0,
"gonohe.aomori.jp": !0,
"hachinohe.aomori.jp": !0,
"hashikami.aomori.jp": !0,
"hiranai.aomori.jp": !0,
"hirosaki.aomori.jp": !0,
"itayanagi.aomori.jp": !0,
"kuroishi.aomori.jp": !0,
"misawa.aomori.jp": !0,
"mutsu.aomori.jp": !0,
"nakadomari.aomori.jp": !0,
"noheji.aomori.jp": !0,
"oirase.aomori.jp": !0,
"owani.aomori.jp": !0,
"rokunohe.aomori.jp": !0,
"sannohe.aomori.jp": !0,
"shichinohe.aomori.jp": !0,
"shingo.aomori.jp": !0,
"takko.aomori.jp": !0,
"towada.aomori.jp": !0,
"tsugaru.aomori.jp": !0,
"tsuruta.aomori.jp": !0,
"abiko.chiba.jp": !0,
"asahi.chiba.jp": !0,
"chonan.chiba.jp": !0,
"chosei.chiba.jp": !0,
"choshi.chiba.jp": !0,
"chuo.chiba.jp": !0,
"funabashi.chiba.jp": !0,
"futtsu.chiba.jp": !0,
"hanamigawa.chiba.jp": !0,
"ichihara.chiba.jp": !0,
"ichikawa.chiba.jp": !0,
"ichinomiya.chiba.jp": !0,
"inzai.chiba.jp": !0,
"isumi.chiba.jp": !0,
"kamagaya.chiba.jp": !0,
"kamogawa.chiba.jp": !0,
"kashiwa.chiba.jp": !0,
"katori.chiba.jp": !0,
"katsuura.chiba.jp": !0,
"kimitsu.chiba.jp": !0,
"kisarazu.chiba.jp": !0,
"kozaki.chiba.jp": !0,
"kujukuri.chiba.jp": !0,
"kyonan.chiba.jp": !0,
"matsudo.chiba.jp": !0,
"midori.chiba.jp": !0,
"mihama.chiba.jp": !0,
"minamiboso.chiba.jp": !0,
"mobara.chiba.jp": !0,
"mutsuzawa.chiba.jp": !0,
"nagara.chiba.jp": !0,
"nagareyama.chiba.jp": !0,
"narashino.chiba.jp": !0,
"narita.chiba.jp": !0,
"noda.chiba.jp": !0,
"oamishirasato.chiba.jp": !0,
"omigawa.chiba.jp": !0,
"onjuku.chiba.jp": !0,
"otaki.chiba.jp": !0,
"sakae.chiba.jp": !0,
"sakura.chiba.jp": !0,
"shimofusa.chiba.jp": !0,
"shirako.chiba.jp": !0,
"shiroi.chiba.jp": !0,
"shisui.chiba.jp": !0,
"sodegaura.chiba.jp": !0,
"sosa.chiba.jp": !0,
"tako.chiba.jp": !0,
"tateyama.chiba.jp": !0,
"togane.chiba.jp": !0,
"tohnosho.chiba.jp": !0,
"tomisato.chiba.jp": !0,
"urayasu.chiba.jp": !0,
"yachimata.chiba.jp": !0,
"yachiyo.chiba.jp": !0,
"yokaichiba.chiba.jp": !0,
"yokoshibahikari.chiba.jp": !0,
"yotsukaido.chiba.jp": !0,
"ainan.ehime.jp": !0,
"honai.ehime.jp": !0,
"ikata.ehime.jp": !0,
"imabari.ehime.jp": !0,
"iyo.ehime.jp": !0,
"kamijima.ehime.jp": !0,
"kihoku.ehime.jp": !0,
"kumakogen.ehime.jp": !0,
"masaki.ehime.jp": !0,
"matsuno.ehime.jp": !0,
"matsuyama.ehime.jp": !0,
"namikata.ehime.jp": !0,
"niihama.ehime.jp": !0,
"ozu.ehime.jp": !0,
"saijo.ehime.jp": !0,
"seiyo.ehime.jp": !0,
"shikokuchuo.ehime.jp": !0,
"tobe.ehime.jp": !0,
"toon.ehime.jp": !0,
"uchiko.ehime.jp": !0,
"uwajima.ehime.jp": !0,
"yawatahama.ehime.jp": !0,
"echizen.fukui.jp": !0,
"eiheiji.fukui.jp": !0,
"fukui.fukui.jp": !0,
"ikeda.fukui.jp": !0,
"katsuyama.fukui.jp": !0,
"mihama.fukui.jp": !0,
"minamiechizen.fukui.jp": !0,
"obama.fukui.jp": !0,
"ohi.fukui.jp": !0,
"ono.fukui.jp": !0,
"sabae.fukui.jp": !0,
"sakai.fukui.jp": !0,
"takahama.fukui.jp": !0,
"tsuruga.fukui.jp": !0,
"wakasa.fukui.jp": !0,
"ashiya.fukuoka.jp": !0,
"buzen.fukuoka.jp": !0,
"chikugo.fukuoka.jp": !0,
"chikuho.fukuoka.jp": !0,
"chikujo.fukuoka.jp": !0,
"chikushino.fukuoka.jp": !0,
"chikuzen.fukuoka.jp": !0,
"chuo.fukuoka.jp": !0,
"dazaifu.fukuoka.jp": !0,
"fukuchi.fukuoka.jp": !0,
"hakata.fukuoka.jp": !0,
"higashi.fukuoka.jp": !0,
"hirokawa.fukuoka.jp": !0,
"hisayama.fukuoka.jp": !0,
"iizuka.fukuoka.jp": !0,
"inatsuki.fukuoka.jp": !0,
"kaho.fukuoka.jp": !0,
"kasuga.fukuoka.jp": !0,
"kasuya.fukuoka.jp": !0,
"kawara.fukuoka.jp": !0,
"keisen.fukuoka.jp": !0,
"koga.fukuoka.jp": !0,
"kurate.fukuoka.jp": !0,
"kurogi.fukuoka.jp": !0,
"kurume.fukuoka.jp": !0,
"minami.fukuoka.jp": !0,
"miyako.fukuoka.jp": !0,
"miyama.fukuoka.jp": !0,
"miyawaka.fukuoka.jp": !0,
"mizumaki.fukuoka.jp": !0,
"munakata.fukuoka.jp": !0,
"nakagawa.fukuoka.jp": !0,
"nakama.fukuoka.jp": !0,
"nishi.fukuoka.jp": !0,
"nogata.fukuoka.jp": !0,
"ogori.fukuoka.jp": !0,
"okagaki.fukuoka.jp": !0,
"okawa.fukuoka.jp": !0,
"oki.fukuoka.jp": !0,
"omuta.fukuoka.jp": !0,
"onga.fukuoka.jp": !0,
"onojo.fukuoka.jp": !0,
"oto.fukuoka.jp": !0,
"saigawa.fukuoka.jp": !0,
"sasaguri.fukuoka.jp": !0,
"shingu.fukuoka.jp": !0,
"shinyoshitomi.fukuoka.jp": !0,
"shonai.fukuoka.jp": !0,
"soeda.fukuoka.jp": !0,
"sue.fukuoka.jp": !0,
"tachiarai.fukuoka.jp": !0,
"tagawa.fukuoka.jp": !0,
"takata.fukuoka.jp": !0,
"toho.fukuoka.jp": !0,
"toyotsu.fukuoka.jp": !0,
"tsuiki.fukuoka.jp": !0,
"ukiha.fukuoka.jp": !0,
"umi.fukuoka.jp": !0,
"usui.fukuoka.jp": !0,
"yamada.fukuoka.jp": !0,
"yame.fukuoka.jp": !0,
"yanagawa.fukuoka.jp": !0,
"yukuhashi.fukuoka.jp": !0,
"aizubange.fukushima.jp": !0,
"aizumisato.fukushima.jp": !0,
"aizuwakamatsu.fukushima.jp": !0,
"asakawa.fukushima.jp": !0,
"bandai.fukushima.jp": !0,
"date.fukushima.jp": !0,
"fukushima.fukushima.jp": !0,
"furudono.fukushima.jp": !0,
"futaba.fukushima.jp": !0,
"hanawa.fukushima.jp": !0,
"higashi.fukushima.jp": !0,
"hirata.fukushima.jp": !0,
"hirono.fukushima.jp": !0,
"iitate.fukushima.jp": !0,
"inawashiro.fukushima.jp": !0,
"ishikawa.fukushima.jp": !0,
"iwaki.fukushima.jp": !0,
"izumizaki.fukushima.jp": !0,
"kagamiishi.fukushima.jp": !0,
"kaneyama.fukushima.jp": !0,
"kawamata.fukushima.jp": !0,
"kitakata.fukushima.jp": !0,
"kitashiobara.fukushima.jp": !0,
"koori.fukushima.jp": !0,
"koriyama.fukushima.jp": !0,
"kunimi.fukushima.jp": !0,
"miharu.fukushima.jp": !0,
"mishima.fukushima.jp": !0,
"namie.fukushima.jp": !0,
"nango.fukushima.jp": !0,
"nishiaizu.fukushima.jp": !0,
"nishigo.fukushima.jp": !0,
"okuma.fukushima.jp": !0,
"omotego.fukushima.jp": !0,
"ono.fukushima.jp": !0,
"otama.fukushima.jp": !0,
"samegawa.fukushima.jp": !0,
"shimogo.fukushima.jp": !0,
"shirakawa.fukushima.jp": !0,
"showa.fukushima.jp": !0,
"soma.fukushima.jp": !0,
"sukagawa.fukushima.jp": !0,
"taishin.fukushima.jp": !0,
"tamakawa.fukushima.jp": !0,
"tanagura.fukushima.jp": !0,
"tenei.fukushima.jp": !0,
"yabuki.fukushima.jp": !0,
"yamato.fukushima.jp": !0,
"yamatsuri.fukushima.jp": !0,
"yanaizu.fukushima.jp": !0,
"yugawa.fukushima.jp": !0,
"anpachi.gifu.jp": !0,
"ena.gifu.jp": !0,
"gifu.gifu.jp": !0,
"ginan.gifu.jp": !0,
"godo.gifu.jp": !0,
"gujo.gifu.jp": !0,
"hashima.gifu.jp": !0,
"hichiso.gifu.jp": !0,
"hida.gifu.jp": !0,
"higashishirakawa.gifu.jp": !0,
"ibigawa.gifu.jp": !0,
"ikeda.gifu.jp": !0,
"kakamigahara.gifu.jp": !0,
"kani.gifu.jp": !0,
"kasahara.gifu.jp": !0,
"kasamatsu.gifu.jp": !0,
"kawaue.gifu.jp": !0,
"kitagata.gifu.jp": !0,
"mino.gifu.jp": !0,
"minokamo.gifu.jp": !0,
"mitake.gifu.jp": !0,
"mizunami.gifu.jp": !0,
"motosu.gifu.jp": !0,
"nakatsugawa.gifu.jp": !0,
"ogaki.gifu.jp": !0,
"sakahogi.gifu.jp": !0,
"seki.gifu.jp": !0,
"sekigahara.gifu.jp": !0,
"shirakawa.gifu.jp": !0,
"tajimi.gifu.jp": !0,
"takayama.gifu.jp": !0,
"tarui.gifu.jp": !0,
"toki.gifu.jp": !0,
"tomika.gifu.jp": !0,
"wanouchi.gifu.jp": !0,
"yamagata.gifu.jp": !0,
"yaotsu.gifu.jp": !0,
"yoro.gifu.jp": !0,
"annaka.gunma.jp": !0,
"chiyoda.gunma.jp": !0,
"fujioka.gunma.jp": !0,
"higashiagatsuma.gunma.jp": !0,
"isesaki.gunma.jp": !0,
"itakura.gunma.jp": !0,
"kanna.gunma.jp": !0,
"kanra.gunma.jp": !0,
"katashina.gunma.jp": !0,
"kawaba.gunma.jp": !0,
"kiryu.gunma.jp": !0,
"kusatsu.gunma.jp": !0,
"maebashi.gunma.jp": !0,
"meiwa.gunma.jp": !0,
"midori.gunma.jp": !0,
"minakami.gunma.jp": !0,
"naganohara.gunma.jp": !0,
"nakanojo.gunma.jp": !0,
"nanmoku.gunma.jp": !0,
"numata.gunma.jp": !0,
"oizumi.gunma.jp": !0,
"ora.gunma.jp": !0,
"ota.gunma.jp": !0,
"shibukawa.gunma.jp": !0,
"shimonita.gunma.jp": !0,
"shinto.gunma.jp": !0,
"showa.gunma.jp": !0,
"takasaki.gunma.jp": !0,
"takayama.gunma.jp": !0,
"tamamura.gunma.jp": !0,
"tatebayashi.gunma.jp": !0,
"tomioka.gunma.jp": !0,
"tsukiyono.gunma.jp": !0,
"tsumagoi.gunma.jp": !0,
"ueno.gunma.jp": !0,
"yoshioka.gunma.jp": !0,
"asaminami.hiroshima.jp": !0,
"daiwa.hiroshima.jp": !0,
"etajima.hiroshima.jp": !0,
"fuchu.hiroshima.jp": !0,
"fukuyama.hiroshima.jp": !0,
"hatsukaichi.hiroshima.jp": !0,
"higashihiroshima.hiroshima.jp": !0,
"hongo.hiroshima.jp": !0,
"jinsekikogen.hiroshima.jp": !0,
"kaita.hiroshima.jp": !0,
"kui.hiroshima.jp": !0,
"kumano.hiroshima.jp": !0,
"kure.hiroshima.jp": !0,
"mihara.hiroshima.jp": !0,
"miyoshi.hiroshima.jp": !0,
"naka.hiroshima.jp": !0,
"onomichi.hiroshima.jp": !0,
"osakikamijima.hiroshima.jp": !0,
"otake.hiroshima.jp": !0,
"saka.hiroshima.jp": !0,
"sera.hiroshima.jp": !0,
"seranishi.hiroshima.jp": !0,
"shinichi.hiroshima.jp": !0,
"shobara.hiroshima.jp": !0,
"takehara.hiroshima.jp": !0,
"abashiri.hokkaido.jp": !0,
"abira.hokkaido.jp": !0,
"aibetsu.hokkaido.jp": !0,
"akabira.hokkaido.jp": !0,
"akkeshi.hokkaido.jp": !0,
"asahikawa.hokkaido.jp": !0,
"ashibetsu.hokkaido.jp": !0,
"ashoro.hokkaido.jp": !0,
"assabu.hokkaido.jp": !0,
"atsuma.hokkaido.jp": !0,
"bibai.hokkaido.jp": !0,
"biei.hokkaido.jp": !0,
"bifuka.hokkaido.jp": !0,
"bihoro.hokkaido.jp": !0,
"biratori.hokkaido.jp": !0,
"chippubetsu.hokkaido.jp": !0,
"chitose.hokkaido.jp": !0,
"date.hokkaido.jp": !0,
"ebetsu.hokkaido.jp": !0,
"embetsu.hokkaido.jp": !0,
"eniwa.hokkaido.jp": !0,
"erimo.hokkaido.jp": !0,
"esan.hokkaido.jp": !0,
"esashi.hokkaido.jp": !0,
"fukagawa.hokkaido.jp": !0,
"fukushima.hokkaido.jp": !0,
"furano.hokkaido.jp": !0,
"furubira.hokkaido.jp": !0,
"haboro.hokkaido.jp": !0,
"hakodate.hokkaido.jp": !0,
"hamatonbetsu.hokkaido.jp": !0,
"hidaka.hokkaido.jp": !0,
"higashikagura.hokkaido.jp": !0,
"higashikawa.hokkaido.jp": !0,
"hiroo.hokkaido.jp": !0,
"hokuryu.hokkaido.jp": !0,
"hokuto.hokkaido.jp": !0,
"honbetsu.hokkaido.jp": !0,
"horokanai.hokkaido.jp": !0,
"horonobe.hokkaido.jp": !0,
"ikeda.hokkaido.jp": !0,
"imakane.hokkaido.jp": !0,
"ishikari.hokkaido.jp": !0,
"iwamizawa.hokkaido.jp": !0,
"iwanai.hokkaido.jp": !0,
"kamifurano.hokkaido.jp": !0,
"kamikawa.hokkaido.jp": !0,
"kamishihoro.hokkaido.jp": !0,
"kamisunagawa.hokkaido.jp": !0,
"kamoenai.hokkaido.jp": !0,
"kayabe.hokkaido.jp": !0,
"kembuchi.hokkaido.jp": !0,
"kikonai.hokkaido.jp": !0,
"kimobetsu.hokkaido.jp": !0,
"kitahiroshima.hokkaido.jp": !0,
"kitami.hokkaido.jp": !0,
"kiyosato.hokkaido.jp": !0,
"koshimizu.hokkaido.jp": !0,
"kunneppu.hokkaido.jp": !0,
"kuriyama.hokkaido.jp": !0,
"kuromatsunai.hokkaido.jp": !0,
"kushiro.hokkaido.jp": !0,
"kutchan.hokkaido.jp": !0,
"kyowa.hokkaido.jp": !0,
"mashike.hokkaido.jp": !0,
"matsumae.hokkaido.jp": !0,
"mikasa.hokkaido.jp": !0,
"minamifurano.hokkaido.jp": !0,
"mombetsu.hokkaido.jp": !0,
"moseushi.hokkaido.jp": !0,
"mukawa.hokkaido.jp": !0,
"muroran.hokkaido.jp": !0,
"naie.hokkaido.jp": !0,
"nakagawa.hokkaido.jp": !0,
"nakasatsunai.hokkaido.jp": !0,
"nakatombetsu.hokkaido.jp": !0,
"nanae.hokkaido.jp": !0,
"nanporo.hokkaido.jp": !0,
"nayoro.hokkaido.jp": !0,
"nemuro.hokkaido.jp": !0,
"niikappu.hokkaido.jp": !0,
"niki.hokkaido.jp": !0,
"nishiokoppe.hokkaido.jp": !0,
"noboribetsu.hokkaido.jp": !0,
"numata.hokkaido.jp": !0,
"obihiro.hokkaido.jp": !0,
"obira.hokkaido.jp": !0,
"oketo.hokkaido.jp": !0,
"okoppe.hokkaido.jp": !0,
"otaru.hokkaido.jp": !0,
"otobe.hokkaido.jp": !0,
"otofuke.hokkaido.jp": !0,
"otoineppu.hokkaido.jp": !0,
"oumu.hokkaido.jp": !0,
"ozora.hokkaido.jp": !0,
"pippu.hokkaido.jp": !0,
"rankoshi.hokkaido.jp": !0,
"rebun.hokkaido.jp": !0,
"rikubetsu.hokkaido.jp": !0,
"rishiri.hokkaido.jp": !0,
"rishirifuji.hokkaido.jp": !0,
"saroma.hokkaido.jp": !0,
"sarufutsu.hokkaido.jp": !0,
"shakotan.hokkaido.jp": !0,
"shari.hokkaido.jp": !0,
"shibecha.hokkaido.jp": !0,
"shibetsu.hokkaido.jp": !0,
"shikabe.hokkaido.jp": !0,
"shikaoi.hokkaido.jp": !0,
"shimamaki.hokkaido.jp": !0,
"shimizu.hokkaido.jp": !0,
"shimokawa.hokkaido.jp": !0,
"shinshinotsu.hokkaido.jp": !0,
"shintoku.hokkaido.jp": !0,
"shiranuka.hokkaido.jp": !0,
"shiraoi.hokkaido.jp": !0,
"shiriuchi.hokkaido.jp": !0,
"sobetsu.hokkaido.jp": !0,
"sunagawa.hokkaido.jp": !0,
"taiki.hokkaido.jp": !0,
"takasu.hokkaido.jp": !0,
"takikawa.hokkaido.jp": !0,
"takinoue.hokkaido.jp": !0,
"teshikaga.hokkaido.jp": !0,
"tobetsu.hokkaido.jp": !0,
"tohma.hokkaido.jp": !0,
"tomakomai.hokkaido.jp": !0,
"tomari.hokkaido.jp": !0,
"toya.hokkaido.jp": !0,
"toyako.hokkaido.jp": !0,
"toyotomi.hokkaido.jp": !0,
"toyoura.hokkaido.jp": !0,
"tsubetsu.hokkaido.jp": !0,
"tsukigata.hokkaido.jp": !0,
"urakawa.hokkaido.jp": !0,
"urausu.hokkaido.jp": !0,
"uryu.hokkaido.jp": !0,
"utashinai.hokkaido.jp": !0,
"wakkanai.hokkaido.jp": !0,
"wassamu.hokkaido.jp": !0,
"yakumo.hokkaido.jp": !0,
"yoichi.hokkaido.jp": !0,
"aioi.hyogo.jp": !0,
"akashi.hyogo.jp": !0,
"ako.hyogo.jp": !0,
"amagasaki.hyogo.jp": !0,
"aogaki.hyogo.jp": !0,
"asago.hyogo.jp": !0,
"ashiya.hyogo.jp": !0,
"awaji.hyogo.jp": !0,
"fukusaki.hyogo.jp": !0,
"goshiki.hyogo.jp": !0,
"harima.hyogo.jp": !0,
"himeji.hyogo.jp": !0,
"ichikawa.hyogo.jp": !0,
"inagawa.hyogo.jp": !0,
"itami.hyogo.jp": !0,
"kakogawa.hyogo.jp": !0,
"kamigori.hyogo.jp": !0,
"kamikawa.hyogo.jp": !0,
"kasai.hyogo.jp": !0,
"kasuga.hyogo.jp": !0,
"kawanishi.hyogo.jp": !0,
"miki.hyogo.jp": !0,
"minamiawaji.hyogo.jp": !0,
"nishinomiya.hyogo.jp": !0,
"nishiwaki.hyogo.jp": !0,
"ono.hyogo.jp": !0,
"sanda.hyogo.jp": !0,
"sannan.hyogo.jp": !0,
"sasayama.hyogo.jp": !0,
"sayo.hyogo.jp": !0,
"shingu.hyogo.jp": !0,
"shinonsen.hyogo.jp": !0,
"shiso.hyogo.jp": !0,
"sumoto.hyogo.jp": !0,
"taishi.hyogo.jp": !0,
"taka.hyogo.jp": !0,
"takarazuka.hyogo.jp": !0,
"takasago.hyogo.jp": !0,
"takino.hyogo.jp": !0,
"tamba.hyogo.jp": !0,
"tatsuno.hyogo.jp": !0,
"toyooka.hyogo.jp": !0,
"yabu.hyogo.jp": !0,
"yashiro.hyogo.jp": !0,
"yoka.hyogo.jp": !0,
"yokawa.hyogo.jp": !0,
"ami.ibaraki.jp": !0,
"asahi.ibaraki.jp": !0,
"bando.ibaraki.jp": !0,
"chikusei.ibaraki.jp": !0,
"daigo.ibaraki.jp": !0,
"fujishiro.ibaraki.jp": !0,
"hitachi.ibaraki.jp": !0,
"hitachinaka.ibaraki.jp": !0,
"hitachiomiya.ibaraki.jp": !0,
"hitachiota.ibaraki.jp": !0,
"ibaraki.ibaraki.jp": !0,
"ina.ibaraki.jp": !0,
"inashiki.ibaraki.jp": !0,
"itako.ibaraki.jp": !0,
"iwama.ibaraki.jp": !0,
"joso.ibaraki.jp": !0,
"kamisu.ibaraki.jp": !0,
"kasama.ibaraki.jp": !0,
"kashima.ibaraki.jp": !0,
"kasumigaura.ibaraki.jp": !0,
"koga.ibaraki.jp": !0,
"miho.ibaraki.jp": !0,
"mito.ibaraki.jp": !0,
"moriya.ibaraki.jp": !0,
"naka.ibaraki.jp": !0,
"namegata.ibaraki.jp": !0,
"oarai.ibaraki.jp": !0,
"ogawa.ibaraki.jp": !0,
"omitama.ibaraki.jp": !0,
"ryugasaki.ibaraki.jp": !0,
"sakai.ibaraki.jp": !0,
"sakuragawa.ibaraki.jp": !0,
"shimodate.ibaraki.jp": !0,
"shimotsuma.ibaraki.jp": !0,
"shirosato.ibaraki.jp": !0,
"sowa.ibaraki.jp": !0,
"suifu.ibaraki.jp": !0,
"takahagi.ibaraki.jp": !0,
"tamatsukuri.ibaraki.jp": !0,
"tokai.ibaraki.jp": !0,
"tomobe.ibaraki.jp": !0,
"tone.ibaraki.jp": !0,
"toride.ibaraki.jp": !0,
"tsuchiura.ibaraki.jp": !0,
"tsukuba.ibaraki.jp": !0,
"uchihara.ibaraki.jp": !0,
"ushiku.ibaraki.jp": !0,
"yachiyo.ibaraki.jp": !0,
"yamagata.ibaraki.jp": !0,
"yawara.ibaraki.jp": !0,
"yuki.ibaraki.jp": !0,
"anamizu.ishikawa.jp": !0,
"hakui.ishikawa.jp": !0,
"hakusan.ishikawa.jp": !0,
"kaga.ishikawa.jp": !0,
"kahoku.ishikawa.jp": !0,
"kanazawa.ishikawa.jp": !0,
"kawakita.ishikawa.jp": !0,
"komatsu.ishikawa.jp": !0,
"nakanoto.ishikawa.jp": !0,
"nanao.ishikawa.jp": !0,
"nomi.ishikawa.jp": !0,
"nonoichi.ishikawa.jp": !0,
"noto.ishikawa.jp": !0,
"shika.ishikawa.jp": !0,
"suzu.ishikawa.jp": !0,
"tsubata.ishikawa.jp": !0,
"tsurugi.ishikawa.jp": !0,
"uchinada.ishikawa.jp": !0,
"wajima.ishikawa.jp": !0,
"fudai.iwate.jp": !0,
"fujisawa.iwate.jp": !0,
"hanamaki.iwate.jp": !0,
"hiraizumi.iwate.jp": !0,
"hirono.iwate.jp": !0,
"ichinohe.iwate.jp": !0,
"ichinoseki.iwate.jp": !0,
"iwaizumi.iwate.jp": !0,
"iwate.iwate.jp": !0,
"joboji.iwate.jp": !0,
"kamaishi.iwate.jp": !0,
"kanegasaki.iwate.jp": !0,
"karumai.iwate.jp": !0,
"kawai.iwate.jp": !0,
"kitakami.iwate.jp": !0,
"kuji.iwate.jp": !0,
"kunohe.iwate.jp": !0,
"kuzumaki.iwate.jp": !0,
"miyako.iwate.jp": !0,
"mizusawa.iwate.jp": !0,
"morioka.iwate.jp": !0,
"ninohe.iwate.jp": !0,
"noda.iwate.jp": !0,
"ofunato.iwate.jp": !0,
"oshu.iwate.jp": !0,
"otsuchi.iwate.jp": !0,
"rikuzentakata.iwate.jp": !0,
"shiwa.iwate.jp": !0,
"shizukuishi.iwate.jp": !0,
"sumita.iwate.jp": !0,
"tanohata.iwate.jp": !0,
"tono.iwate.jp": !0,
"yahaba.iwate.jp": !0,
"yamada.iwate.jp": !0,
"ayagawa.kagawa.jp": !0,
"higashikagawa.kagawa.jp": !0,
"kanonji.kagawa.jp": !0,
"kotohira.kagawa.jp": !0,
"manno.kagawa.jp": !0,
"marugame.kagawa.jp": !0,
"mitoyo.kagawa.jp": !0,
"naoshima.kagawa.jp": !0,
"sanuki.kagawa.jp": !0,
"tadotsu.kagawa.jp": !0,
"takamatsu.kagawa.jp": !0,
"tonosho.kagawa.jp": !0,
"uchinomi.kagawa.jp": !0,
"utazu.kagawa.jp": !0,
"zentsuji.kagawa.jp": !0,
"akune.kagoshima.jp": !0,
"amami.kagoshima.jp": !0,
"hioki.kagoshima.jp": !0,
"isa.kagoshima.jp": !0,
"isen.kagoshima.jp": !0,
"izumi.kagoshima.jp": !0,
"kagoshima.kagoshima.jp": !0,
"kanoya.kagoshima.jp": !0,
"kawanabe.kagoshima.jp": !0,
"kinko.kagoshima.jp": !0,
"kouyama.kagoshima.jp": !0,
"makurazaki.kagoshima.jp": !0,
"matsumoto.kagoshima.jp": !0,
"minamitane.kagoshima.jp": !0,
"nakatane.kagoshima.jp": !0,
"nishinoomote.kagoshima.jp": !0,
"satsumasendai.kagoshima.jp": !0,
"soo.kagoshima.jp": !0,
"tarumizu.kagoshima.jp": !0,
"yusui.kagoshima.jp": !0,
"aikawa.kanagawa.jp": !0,
"atsugi.kanagawa.jp": !0,
"ayase.kanagawa.jp": !0,
"chigasaki.kanagawa.jp": !0,
"ebina.kanagawa.jp": !0,
"fujisawa.kanagawa.jp": !0,
"hadano.kanagawa.jp": !0,
"hakone.kanagawa.jp": !0,
"hiratsuka.kanagawa.jp": !0,
"isehara.kanagawa.jp": !0,
"kaisei.kanagawa.jp": !0,
"kamakura.kanagawa.jp": !0,
"kiyokawa.kanagawa.jp": !0,
"matsuda.kanagawa.jp": !0,
"minamiashigara.kanagawa.jp": !0,
"miura.kanagawa.jp": !0,
"nakai.kanagawa.jp": !0,
"ninomiya.kanagawa.jp": !0,
"odawara.kanagawa.jp": !0,
"oi.kanagawa.jp": !0,
"oiso.kanagawa.jp": !0,
"sagamihara.kanagawa.jp": !0,
"samukawa.kanagawa.jp": !0,
"tsukui.kanagawa.jp": !0,
"yamakita.kanagawa.jp": !0,
"yamato.kanagawa.jp": !0,
"yokosuka.kanagawa.jp": !0,
"yugawara.kanagawa.jp": !0,
"zama.kanagawa.jp": !0,
"zushi.kanagawa.jp": !0,
"aki.kochi.jp": !0,
"geisei.kochi.jp": !0,
"hidaka.kochi.jp": !0,
"higashitsuno.kochi.jp": !0,
"ino.kochi.jp": !0,
"kagami.kochi.jp": !0,
"kami.kochi.jp": !0,
"kitagawa.kochi.jp": !0,
"kochi.kochi.jp": !0,
"mihara.kochi.jp": !0,
"motoyama.kochi.jp": !0,
"muroto.kochi.jp": !0,
"nahari.kochi.jp": !0,
"nakamura.kochi.jp": !0,
"nankoku.kochi.jp": !0,
"nishitosa.kochi.jp": !0,
"niyodogawa.kochi.jp": !0,
"ochi.kochi.jp": !0,
"okawa.kochi.jp": !0,
"otoyo.kochi.jp": !0,
"otsuki.kochi.jp": !0,
"sakawa.kochi.jp": !0,
"sukumo.kochi.jp": !0,
"susaki.kochi.jp": !0,
"tosa.kochi.jp": !0,
"tosashimizu.kochi.jp": !0,
"toyo.kochi.jp": !0,
"tsuno.kochi.jp": !0,
"umaji.kochi.jp": !0,
"yasuda.kochi.jp": !0,
"yusuhara.kochi.jp": !0,
"amakusa.kumamoto.jp": !0,
"arao.kumamoto.jp": !0,
"aso.kumamoto.jp": !0,
"choyo.kumamoto.jp": !0,
"gyokuto.kumamoto.jp": !0,
"hitoyoshi.kumamoto.jp": !0,
"kamiamakusa.kumamoto.jp": !0,
"kashima.kumamoto.jp": !0,
"kikuchi.kumamoto.jp": !0,
"kosa.kumamoto.jp": !0,
"kumamoto.kumamoto.jp": !0,
"mashiki.kumamoto.jp": !0,
"mifune.kumamoto.jp": !0,
"minamata.kumamoto.jp": !0,
"minamioguni.kumamoto.jp": !0,
"nagasu.kumamoto.jp": !0,
"nishihara.kumamoto.jp": !0,
"oguni.kumamoto.jp": !0,
"ozu.kumamoto.jp": !0,
"sumoto.kumamoto.jp": !0,
"takamori.kumamoto.jp": !0,
"uki.kumamoto.jp": !0,
"uto.kumamoto.jp": !0,
"yamaga.kumamoto.jp": !0,
"yamato.kumamoto.jp": !0,
"yatsushiro.kumamoto.jp": !0,
"ayabe.kyoto.jp": !0,
"fukuchiyama.kyoto.jp": !0,
"higashiyama.kyoto.jp": !0,
"ide.kyoto.jp": !0,
"ine.kyoto.jp": !0,
"joyo.kyoto.jp": !0,
"kameoka.kyoto.jp": !0,
"kamo.kyoto.jp": !0,
"kita.kyoto.jp": !0,
"kizu.kyoto.jp": !0,
"kumiyama.kyoto.jp": !0,
"kyotamba.kyoto.jp": !0,
"kyotanabe.kyoto.jp": !0,
"kyotango.kyoto.jp": !0,
"maizuru.kyoto.jp": !0,
"minami.kyoto.jp": !0,
"minamiyamashiro.kyoto.jp": !0,
"miyazu.kyoto.jp": !0,
"muko.kyoto.jp": !0,
"nagaokakyo.kyoto.jp": !0,
"nakagyo.kyoto.jp": !0,
"nantan.kyoto.jp": !0,
"oyamazaki.kyoto.jp": !0,
"sakyo.kyoto.jp": !0,
"seika.kyoto.jp": !0,
"tanabe.kyoto.jp": !0,
"uji.kyoto.jp": !0,
"ujitawara.kyoto.jp": !0,
"wazuka.kyoto.jp": !0,
"yamashina.kyoto.jp": !0,
"yawata.kyoto.jp": !0,
"asahi.mie.jp": !0,
"inabe.mie.jp": !0,
"ise.mie.jp": !0,
"kameyama.mie.jp": !0,
"kawagoe.mie.jp": !0,
"kiho.mie.jp": !0,
"kisosaki.mie.jp": !0,
"kiwa.mie.jp": !0,
"komono.mie.jp": !0,
"kumano.mie.jp": !0,
"kuwana.mie.jp": !0,
"matsusaka.mie.jp": !0,
"meiwa.mie.jp": !0,
"mihama.mie.jp": !0,
"minamiise.mie.jp": !0,
"misugi.mie.jp": !0,
"miyama.mie.jp": !0,
"nabari.mie.jp": !0,
"shima.mie.jp": !0,
"suzuka.mie.jp": !0,
"tado.mie.jp": !0,
"taiki.mie.jp": !0,
"taki.mie.jp": !0,
"tamaki.mie.jp": !0,
"toba.mie.jp": !0,
"tsu.mie.jp": !0,
"udono.mie.jp": !0,
"ureshino.mie.jp": !0,
"watarai.mie.jp": !0,
"yokkaichi.mie.jp": !0,
"furukawa.miyagi.jp": !0,
"higashimatsushima.miyagi.jp": !0,
"ishinomaki.miyagi.jp": !0,
"iwanuma.miyagi.jp": !0,
"kakuda.miyagi.jp": !0,
"kami.miyagi.jp": !0,
"kawasaki.miyagi.jp": !0,
"kesennuma.miyagi.jp": !0,
"marumori.miyagi.jp": !0,
"matsushima.miyagi.jp": !0,
"minamisanriku.miyagi.jp": !0,
"misato.miyagi.jp": !0,
"murata.miyagi.jp": !0,
"natori.miyagi.jp": !0,
"ogawara.miyagi.jp": !0,
"ohira.miyagi.jp": !0,
"onagawa.miyagi.jp": !0,
"osaki.miyagi.jp": !0,
"rifu.miyagi.jp": !0,
"semine.miyagi.jp": !0,
"shibata.miyagi.jp": !0,
"shichikashuku.miyagi.jp": !0,
"shikama.miyagi.jp": !0,
"shiogama.miyagi.jp": !0,
"shiroishi.miyagi.jp": !0,
"tagajo.miyagi.jp": !0,
"taiwa.miyagi.jp": !0,
"tome.miyagi.jp": !0,
"tomiya.miyagi.jp": !0,
"wakuya.miyagi.jp": !0,
"watari.miyagi.jp": !0,
"yamamoto.miyagi.jp": !0,
"zao.miyagi.jp": !0,
"aya.miyazaki.jp": !0,
"ebino.miyazaki.jp": !0,
"gokase.miyazaki.jp": !0,
"hyuga.miyazaki.jp": !0,
"kadogawa.miyazaki.jp": !0,
"kawaminami.miyazaki.jp": !0,
"kijo.miyazaki.jp": !0,
"kitagawa.miyazaki.jp": !0,
"kitakata.miyazaki.jp": !0,
"kitaura.miyazaki.jp": !0,
"kobayashi.miyazaki.jp": !0,
"kunitomi.miyazaki.jp": !0,
"kushima.miyazaki.jp": !0,
"mimata.miyazaki.jp": !0,
"miyakonojo.miyazaki.jp": !0,
"miyazaki.miyazaki.jp": !0,
"morotsuka.miyazaki.jp": !0,
"nichinan.miyazaki.jp": !0,
"nishimera.miyazaki.jp": !0,
"nobeoka.miyazaki.jp": !0,
"saito.miyazaki.jp": !0,
"shiiba.miyazaki.jp": !0,
"shintomi.miyazaki.jp": !0,
"takaharu.miyazaki.jp": !0,
"takanabe.miyazaki.jp": !0,
"takazaki.miyazaki.jp": !0,
"tsuno.miyazaki.jp": !0,
"achi.nagano.jp": !0,
"agematsu.nagano.jp": !0,
"anan.nagano.jp": !0,
"aoki.nagano.jp": !0,
"asahi.nagano.jp": !0,
"azumino.nagano.jp": !0,
"chikuhoku.nagano.jp": !0,
"chikuma.nagano.jp": !0,
"chino.nagano.jp": !0,
"fujimi.nagano.jp": !0,
"hakuba.nagano.jp": !0,
"hara.nagano.jp": !0,
"hiraya.nagano.jp": !0,
"iida.nagano.jp": !0,
"iijima.nagano.jp": !0,
"iiyama.nagano.jp": !0,
"iizuna.nagano.jp": !0,
"ikeda.nagano.jp": !0,
"ikusaka.nagano.jp": !0,
"ina.nagano.jp": !0,
"karuizawa.nagano.jp": !0,
"kawakami.nagano.jp": !0,
"kiso.nagano.jp": !0,
"kisofukushima.nagano.jp": !0,
"kitaaiki.nagano.jp": !0,
"komagane.nagano.jp": !0,
"komoro.nagano.jp": !0,
"matsukawa.nagano.jp": !0,
"matsumoto.nagano.jp": !0,
"miasa.nagano.jp": !0,
"minamiaiki.nagano.jp": !0,
"minamimaki.nagano.jp": !0,
"minamiminowa.nagano.jp": !0,
"minowa.nagano.jp": !0,
"miyada.nagano.jp": !0,
"miyota.nagano.jp": !0,
"mochizuki.nagano.jp": !0,
"nagano.nagano.jp": !0,
"nagawa.nagano.jp": !0,
"nagiso.nagano.jp": !0,
"nakagawa.nagano.jp": !0,
"nakano.nagano.jp": !0,
"nozawaonsen.nagano.jp": !0,
"obuse.nagano.jp": !0,
"ogawa.nagano.jp": !0,
"okaya.nagano.jp": !0,
"omachi.nagano.jp": !0,
"omi.nagano.jp": !0,
"ookuwa.nagano.jp": !0,
"ooshika.nagano.jp": !0,
"otaki.nagano.jp": !0,
"otari.nagano.jp": !0,
"sakae.nagano.jp": !0,
"sakaki.nagano.jp": !0,
"saku.nagano.jp": !0,
"sakuho.nagano.jp": !0,
"shimosuwa.nagano.jp": !0,
"shinanomachi.nagano.jp": !0,
"shiojiri.nagano.jp": !0,
"suwa.nagano.jp": !0,
"suzaka.nagano.jp": !0,
"takagi.nagano.jp": !0,
"takamori.nagano.jp": !0,
"takayama.nagano.jp": !0,
"tateshina.nagano.jp": !0,
"tatsuno.nagano.jp": !0,
"togakushi.nagano.jp": !0,
"togura.nagano.jp": !0,
"tomi.nagano.jp": !0,
"ueda.nagano.jp": !0,
"wada.nagano.jp": !0,
"yamagata.nagano.jp": !0,
"yamanouchi.nagano.jp": !0,
"yasaka.nagano.jp": !0,
"yasuoka.nagano.jp": !0,
"chijiwa.nagasaki.jp": !0,
"futsu.nagasaki.jp": !0,
"goto.nagasaki.jp": !0,
"hasami.nagasaki.jp": !0,
"hirado.nagasaki.jp": !0,
"iki.nagasaki.jp": !0,
"isahaya.nagasaki.jp": !0,
"kawatana.nagasaki.jp": !0,
"kuchinotsu.nagasaki.jp": !0,
"matsuura.nagasaki.jp": !0,
"nagasaki.nagasaki.jp": !0,
"obama.nagasaki.jp": !0,
"omura.nagasaki.jp": !0,
"oseto.nagasaki.jp": !0,
"saikai.nagasaki.jp": !0,
"sasebo.nagasaki.jp": !0,
"seihi.nagasaki.jp": !0,
"shimabara.nagasaki.jp": !0,
"shinkamigoto.nagasaki.jp": !0,
"togitsu.nagasaki.jp": !0,
"tsushima.nagasaki.jp": !0,
"unzen.nagasaki.jp": !0,
"ando.nara.jp": !0,
"gose.nara.jp": !0,
"heguri.nara.jp": !0,
"higashiyoshino.nara.jp": !0,
"ikaruga.nara.jp": !0,
"ikoma.nara.jp": !0,
"kamikitayama.nara.jp": !0,
"kanmaki.nara.jp": !0,
"kashiba.nara.jp": !0,
"kashihara.nara.jp": !0,
"katsuragi.nara.jp": !0,
"kawai.nara.jp": !0,
"kawakami.nara.jp": !0,
"kawanishi.nara.jp": !0,
"koryo.nara.jp": !0,
"kurotaki.nara.jp": !0,
"mitsue.nara.jp": !0,
"miyake.nara.jp": !0,
"nara.nara.jp": !0,
"nosegawa.nara.jp": !0,
"oji.nara.jp": !0,
"ouda.nara.jp": !0,
"oyodo.nara.jp": !0,
"sakurai.nara.jp": !0,
"sango.nara.jp": !0,
"shimoichi.nara.jp": !0,
"shimokitayama.nara.jp": !0,
"shinjo.nara.jp": !0,
"soni.nara.jp": !0,
"takatori.nara.jp": !0,
"tawaramoto.nara.jp": !0,
"tenkawa.nara.jp": !0,
"tenri.nara.jp": !0,
"uda.nara.jp": !0,
"yamatokoriyama.nara.jp": !0,
"yamatotakada.nara.jp": !0,
"yamazoe.nara.jp": !0,
"yoshino.nara.jp": !0,
"aga.niigata.jp": !0,
"agano.niigata.jp": !0,
"gosen.niigata.jp": !0,
"itoigawa.niigata.jp": !0,
"izumozaki.niigata.jp": !0,
"joetsu.niigata.jp": !0,
"kamo.niigata.jp": !0,
"kariwa.niigata.jp": !0,
"kashiwazaki.niigata.jp": !0,
"minamiuonuma.niigata.jp": !0,
"mitsuke.niigata.jp": !0,
"muika.niigata.jp": !0,
"murakami.niigata.jp": !0,
"myoko.niigata.jp": !0,
"nagaoka.niigata.jp": !0,
"niigata.niigata.jp": !0,
"ojiya.niigata.jp": !0,
"omi.niigata.jp": !0,
"sado.niigata.jp": !0,
"sanjo.niigata.jp": !0,
"seiro.niigata.jp": !0,
"seirou.niigata.jp": !0,
"sekikawa.niigata.jp": !0,
"shibata.niigata.jp": !0,
"tagami.niigata.jp": !0,
"tainai.niigata.jp": !0,
"tochio.niigata.jp": !0,
"tokamachi.niigata.jp": !0,
"tsubame.niigata.jp": !0,
"tsunan.niigata.jp": !0,
"uonuma.niigata.jp": !0,
"yahiko.niigata.jp": !0,
"yoita.niigata.jp": !0,
"yuzawa.niigata.jp": !0,
"beppu.oita.jp": !0,
"bungoono.oita.jp": !0,
"bungotakada.oita.jp": !0,
"hasama.oita.jp": !0,
"hiji.oita.jp": !0,
"himeshima.oita.jp": !0,
"hita.oita.jp": !0,
"kamitsue.oita.jp": !0,
"kokonoe.oita.jp": !0,
"kuju.oita.jp": !0,
"kunisaki.oita.jp": !0,
"kusu.oita.jp": !0,
"oita.oita.jp": !0,
"saiki.oita.jp": !0,
"taketa.oita.jp": !0,
"tsukumi.oita.jp": !0,
"usa.oita.jp": !0,
"usuki.oita.jp": !0,
"yufu.oita.jp": !0,
"akaiwa.okayama.jp": !0,
"asakuchi.okayama.jp": !0,
"bizen.okayama.jp": !0,
"hayashima.okayama.jp": !0,
"ibara.okayama.jp": !0,
"kagamino.okayama.jp": !0,
"kasaoka.okayama.jp": !0,
"kibichuo.okayama.jp": !0,
"kumenan.okayama.jp": !0,
"kurashiki.okayama.jp": !0,
"maniwa.okayama.jp": !0,
"misaki.okayama.jp": !0,
"nagi.okayama.jp": !0,
"niimi.okayama.jp": !0,
"nishiawakura.okayama.jp": !0,
"okayama.okayama.jp": !0,
"satosho.okayama.jp": !0,
"setouchi.okayama.jp": !0,
"shinjo.okayama.jp": !0,
"shoo.okayama.jp": !0,
"soja.okayama.jp": !0,
"takahashi.okayama.jp": !0,
"tamano.okayama.jp": !0,
"tsuyama.okayama.jp": !0,
"wake.okayama.jp": !0,
"yakage.okayama.jp": !0,
"aguni.okinawa.jp": !0,
"ginowan.okinawa.jp": !0,
"ginoza.okinawa.jp": !0,
"gushikami.okinawa.jp": !0,
"haebaru.okinawa.jp": !0,
"higashi.okinawa.jp": !0,
"hirara.okinawa.jp": !0,
"iheya.okinawa.jp": !0,
"ishigaki.okinawa.jp": !0,
"ishikawa.okinawa.jp": !0,
"itoman.okinawa.jp": !0,
"izena.okinawa.jp": !0,
"kadena.okinawa.jp": !0,
"kin.okinawa.jp": !0,
"kitadaito.okinawa.jp": !0,
"kitanakagusuku.okinawa.jp": !0,
"kumejima.okinawa.jp": !0,
"kunigami.okinawa.jp": !0,
"minamidaito.okinawa.jp": !0,
"motobu.okinawa.jp": !0,
"nago.okinawa.jp": !0,
"naha.okinawa.jp": !0,
"nakagusuku.okinawa.jp": !0,
"nakijin.okinawa.jp": !0,
"nanjo.okinawa.jp": !0,
"nishihara.okinawa.jp": !0,
"ogimi.okinawa.jp": !0,
"okinawa.okinawa.jp": !0,
"onna.okinawa.jp": !0,
"shimoji.okinawa.jp": !0,
"taketomi.okinawa.jp": !0,
"tarama.okinawa.jp": !0,
"tokashiki.okinawa.jp": !0,
"tomigusuku.okinawa.jp": !0,
"tonaki.okinawa.jp": !0,
"urasoe.okinawa.jp": !0,
"uruma.okinawa.jp": !0,
"yaese.okinawa.jp": !0,
"yomitan.okinawa.jp": !0,
"yonabaru.okinawa.jp": !0,
"yonaguni.okinawa.jp": !0,
"zamami.okinawa.jp": !0,
"abeno.osaka.jp": !0,
"chihayaakasaka.osaka.jp": !0,
"chuo.osaka.jp": !0,
"daito.osaka.jp": !0,
"fujiidera.osaka.jp": !0,
"habikino.osaka.jp": !0,
"hannan.osaka.jp": !0,
"higashiosaka.osaka.jp": !0,
"higashisumiyoshi.osaka.jp": !0,
"higashiyodogawa.osaka.jp": !0,
"hirakata.osaka.jp": !0,
"ibaraki.osaka.jp": !0,
"ikeda.osaka.jp": !0,
"izumi.osaka.jp": !0,
"izumiotsu.osaka.jp": !0,
"izumisano.osaka.jp": !0,
"kadoma.osaka.jp": !0,
"kaizuka.osaka.jp": !0,
"kanan.osaka.jp": !0,
"kashiwara.osaka.jp": !0,
"katano.osaka.jp": !0,
"kawachinagano.osaka.jp": !0,
"kishiwada.osaka.jp": !0,
"kita.osaka.jp": !0,
"kumatori.osaka.jp": !0,
"matsubara.osaka.jp": !0,
"minato.osaka.jp": !0,
"minoh.osaka.jp": !0,
"misaki.osaka.jp": !0,
"moriguchi.osaka.jp": !0,
"neyagawa.osaka.jp": !0,
"nishi.osaka.jp": !0,
"nose.osaka.jp": !0,
"osakasayama.osaka.jp": !0,
"sakai.osaka.jp": !0,
"sayama.osaka.jp": !0,
"sennan.osaka.jp": !0,
"settsu.osaka.jp": !0,
"shijonawate.osaka.jp": !0,
"shimamoto.osaka.jp": !0,
"suita.osaka.jp": !0,
"tadaoka.osaka.jp": !0,
"taishi.osaka.jp": !0,
"tajiri.osaka.jp": !0,
"takaishi.osaka.jp": !0,
"takatsuki.osaka.jp": !0,
"tondabayashi.osaka.jp": !0,
"toyonaka.osaka.jp": !0,
"toyono.osaka.jp": !0,
"yao.osaka.jp": !0,
"ariake.saga.jp": !0,
"arita.saga.jp": !0,
"fukudomi.saga.jp": !0,
"genkai.saga.jp": !0,
"hamatama.saga.jp": !0,
"hizen.saga.jp": !0,
"imari.saga.jp": !0,
"kamimine.saga.jp": !0,
"kanzaki.saga.jp": !0,
"karatsu.saga.jp": !0,
"kashima.saga.jp": !0,
"kitagata.saga.jp": !0,
"kitahata.saga.jp": !0,
"kiyama.saga.jp": !0,
"kouhoku.saga.jp": !0,
"kyuragi.saga.jp": !0,
"nishiarita.saga.jp": !0,
"ogi.saga.jp": !0,
"omachi.saga.jp": !0,
"ouchi.saga.jp": !0,
"saga.saga.jp": !0,
"shiroishi.saga.jp": !0,
"taku.saga.jp": !0,
"tara.saga.jp": !0,
"tosu.saga.jp": !0,
"yoshinogari.saga.jp": !0,
"arakawa.saitama.jp": !0,
"asaka.saitama.jp": !0,
"chichibu.saitama.jp": !0,
"fujimi.saitama.jp": !0,
"fujimino.saitama.jp": !0,
"fukaya.saitama.jp": !0,
"hanno.saitama.jp": !0,
"hanyu.saitama.jp": !0,
"hasuda.saitama.jp": !0,
"hatogaya.saitama.jp": !0,
"hatoyama.saitama.jp": !0,
"hidaka.saitama.jp": !0,
"higashichichibu.saitama.jp": !0,
"higashimatsuyama.saitama.jp": !0,
"honjo.saitama.jp": !0,
"ina.saitama.jp": !0,
"iruma.saitama.jp": !0,
"iwatsuki.saitama.jp": !0,
"kamiizumi.saitama.jp": !0,
"kamikawa.saitama.jp": !0,
"kamisato.saitama.jp": !0,
"kasukabe.saitama.jp": !0,
"kawagoe.saitama.jp": !0,
"kawaguchi.saitama.jp": !0,
"kawajima.saitama.jp": !0,
"kazo.saitama.jp": !0,
"kitamoto.saitama.jp": !0,
"koshigaya.saitama.jp": !0,
"kounosu.saitama.jp": !0,
"kuki.saitama.jp": !0,
"kumagaya.saitama.jp": !0,
"matsubushi.saitama.jp": !0,
"minano.saitama.jp": !0,
"misato.saitama.jp": !0,
"miyashiro.saitama.jp": !0,
"miyoshi.saitama.jp": !0,
"moroyama.saitama.jp": !0,
"nagatoro.saitama.jp": !0,
"namegawa.saitama.jp": !0,
"niiza.saitama.jp": !0,
"ogano.saitama.jp": !0,
"ogawa.saitama.jp": !0,
"ogose.saitama.jp": !0,
"okegawa.saitama.jp": !0,
"omiya.saitama.jp": !0,
"otaki.saitama.jp": !0,
"ranzan.saitama.jp": !0,
"ryokami.saitama.jp": !0,
"saitama.saitama.jp": !0,
"sakado.saitama.jp": !0,
"satte.saitama.jp": !0,
"sayama.saitama.jp": !0,
"shiki.saitama.jp": !0,
"shiraoka.saitama.jp": !0,
"soka.saitama.jp": !0,
"sugito.saitama.jp": !0,
"toda.saitama.jp": !0,
"tokigawa.saitama.jp": !0,
"tokorozawa.saitama.jp": !0,
"tsurugashima.saitama.jp": !0,
"urawa.saitama.jp": !0,
"warabi.saitama.jp": !0,
"yashio.saitama.jp": !0,
"yokoze.saitama.jp": !0,
"yono.saitama.jp": !0,
"yorii.saitama.jp": !0,
"yoshida.saitama.jp": !0,
"yoshikawa.saitama.jp": !0,
"yoshimi.saitama.jp": !0,
"aisho.shiga.jp": !0,
"gamo.shiga.jp": !0,
"higashiomi.shiga.jp": !0,
"hikone.shiga.jp": !0,
"koka.shiga.jp": !0,
"konan.shiga.jp": !0,
"kosei.shiga.jp": !0,
"koto.shiga.jp": !0,
"kusatsu.shiga.jp": !0,
"maibara.shiga.jp": !0,
"moriyama.shiga.jp": !0,
"nagahama.shiga.jp": !0,
"nishiazai.shiga.jp": !0,
"notogawa.shiga.jp": !0,
"omihachiman.shiga.jp": !0,
"otsu.shiga.jp": !0,
"ritto.shiga.jp": !0,
"ryuoh.shiga.jp": !0,
"takashima.shiga.jp": !0,
"takatsuki.shiga.jp": !0,
"torahime.shiga.jp": !0,
"toyosato.shiga.jp": !0,
"yasu.shiga.jp": !0,
"akagi.shimane.jp": !0,
"ama.shimane.jp": !0,
"gotsu.shimane.jp": !0,
"hamada.shimane.jp": !0,
"higashiizumo.shimane.jp": !0,
"hikawa.shimane.jp": !0,
"hikimi.shimane.jp": !0,
"izumo.shimane.jp": !0,
"kakinoki.shimane.jp": !0,
"masuda.shimane.jp": !0,
"matsue.shimane.jp": !0,
"misato.shimane.jp": !0,
"nishinoshima.shimane.jp": !0,
"ohda.shimane.jp": !0,
"okinoshima.shimane.jp": !0,
"okuizumo.shimane.jp": !0,
"shimane.shimane.jp": !0,
"tamayu.shimane.jp": !0,
"tsuwano.shimane.jp": !0,
"unnan.shimane.jp": !0,
"yakumo.shimane.jp": !0,
"yasugi.shimane.jp": !0,
"yatsuka.shimane.jp": !0,
"arai.shizuoka.jp": !0,
"atami.shizuoka.jp": !0,
"fuji.shizuoka.jp": !0,
"fujieda.shizuoka.jp": !0,
"fujikawa.shizuoka.jp": !0,
"fujinomiya.shizuoka.jp": !0,
"fukuroi.shizuoka.jp": !0,
"gotemba.shizuoka.jp": !0,
"haibara.shizuoka.jp": !0,
"hamamatsu.shizuoka.jp": !0,
"higashiizu.shizuoka.jp": !0,
"ito.shizuoka.jp": !0,
"iwata.shizuoka.jp": !0,
"izu.shizuoka.jp": !0,
"izunokuni.shizuoka.jp": !0,
"kakegawa.shizuoka.jp": !0,
"kannami.shizuoka.jp": !0,
"kawanehon.shizuoka.jp": !0,
"kawazu.shizuoka.jp": !0,
"kikugawa.shizuoka.jp": !0,
"kosai.shizuoka.jp": !0,
"makinohara.shizuoka.jp": !0,
"matsuzaki.shizuoka.jp": !0,
"minamiizu.shizuoka.jp": !0,
"mishima.shizuoka.jp": !0,
"morimachi.shizuoka.jp": !0,
"nishiizu.shizuoka.jp": !0,
"numazu.shizuoka.jp": !0,
"omaezaki.shizuoka.jp": !0,
"shimada.shizuoka.jp": !0,
"shimizu.shizuoka.jp": !0,
"shimoda.shizuoka.jp": !0,
"shizuoka.shizuoka.jp": !0,
"susono.shizuoka.jp": !0,
"yaizu.shizuoka.jp": !0,
"yoshida.shizuoka.jp": !0,
"ashikaga.tochigi.jp": !0,
"bato.tochigi.jp": !0,
"haga.tochigi.jp": !0,
"ichikai.tochigi.jp": !0,
"iwafune.tochigi.jp": !0,
"kaminokawa.tochigi.jp": !0,
"kanuma.tochigi.jp": !0,
"karasuyama.tochigi.jp": !0,
"kuroiso.tochigi.jp": !0,
"mashiko.tochigi.jp": !0,
"mibu.tochigi.jp": !0,
"moka.tochigi.jp": !0,
"motegi.tochigi.jp": !0,
"nasu.tochigi.jp": !0,
"nasushiobara.tochigi.jp": !0,
"nikko.tochigi.jp": !0,
"nishikata.tochigi.jp": !0,
"nogi.tochigi.jp": !0,
"ohira.tochigi.jp": !0,
"ohtawara.tochigi.jp": !0,
"oyama.tochigi.jp": !0,
"sakura.tochigi.jp": !0,
"sano.tochigi.jp": !0,
"shimotsuke.tochigi.jp": !0,
"shioya.tochigi.jp": !0,
"takanezawa.tochigi.jp": !0,
"tochigi.tochigi.jp": !0,
"tsuga.tochigi.jp": !0,
"ujiie.tochigi.jp": !0,
"utsunomiya.tochigi.jp": !0,
"yaita.tochigi.jp": !0,
"aizumi.tokushima.jp": !0,
"anan.tokushima.jp": !0,
"ichiba.tokushima.jp": !0,
"itano.tokushima.jp": !0,
"kainan.tokushima.jp": !0,
"komatsushima.tokushima.jp": !0,
"matsushige.tokushima.jp": !0,
"mima.tokushima.jp": !0,
"minami.tokushima.jp": !0,
"miyoshi.tokushima.jp": !0,
"mugi.tokushima.jp": !0,
"nakagawa.tokushima.jp": !0,
"naruto.tokushima.jp": !0,
"sanagochi.tokushima.jp": !0,
"shishikui.tokushima.jp": !0,
"tokushima.tokushima.jp": !0,
"wajiki.tokushima.jp": !0,
"adachi.tokyo.jp": !0,
"akiruno.tokyo.jp": !0,
"akishima.tokyo.jp": !0,
"aogashima.tokyo.jp": !0,
"arakawa.tokyo.jp": !0,
"bunkyo.tokyo.jp": !0,
"chiyoda.tokyo.jp": !0,
"chofu.tokyo.jp": !0,
"chuo.tokyo.jp": !0,
"edogawa.tokyo.jp": !0,
"fuchu.tokyo.jp": !0,
"fussa.tokyo.jp": !0,
"hachijo.tokyo.jp": !0,
"hachioji.tokyo.jp": !0,
"hamura.tokyo.jp": !0,
"higashikurume.tokyo.jp": !0,
"higashimurayama.tokyo.jp": !0,
"higashiyamato.tokyo.jp": !0,
"hino.tokyo.jp": !0,
"hinode.tokyo.jp": !0,
"hinohara.tokyo.jp": !0,
"inagi.tokyo.jp": !0,
"itabashi.tokyo.jp": !0,
"katsushika.tokyo.jp": !0,
"kita.tokyo.jp": !0,
"kiyose.tokyo.jp": !0,
"kodaira.tokyo.jp": !0,
"koganei.tokyo.jp": !0,
"kokubunji.tokyo.jp": !0,
"komae.tokyo.jp": !0,
"koto.tokyo.jp": !0,
"kouzushima.tokyo.jp": !0,
"kunitachi.tokyo.jp": !0,
"machida.tokyo.jp": !0,
"meguro.tokyo.jp": !0,
"minato.tokyo.jp": !0,
"mitaka.tokyo.jp": !0,
"mizuho.tokyo.jp": !0,
"musashimurayama.tokyo.jp": !0,
"musashino.tokyo.jp": !0,
"nakano.tokyo.jp": !0,
"nerima.tokyo.jp": !0,
"ogasawara.tokyo.jp": !0,
"okutama.tokyo.jp": !0,
"ome.tokyo.jp": !0,
"oshima.tokyo.jp": !0,
"ota.tokyo.jp": !0,
"setagaya.tokyo.jp": !0,
"shibuya.tokyo.jp": !0,
"shinagawa.tokyo.jp": !0,
"shinjuku.tokyo.jp": !0,
"suginami.tokyo.jp": !0,
"sumida.tokyo.jp": !0,
"tachikawa.tokyo.jp": !0,
"taito.tokyo.jp": !0,
"tama.tokyo.jp": !0,
"toshima.tokyo.jp": !0,
"chizu.tottori.jp": !0,
"hino.tottori.jp": !0,
"kawahara.tottori.jp": !0,
"koge.tottori.jp": !0,
"kotoura.tottori.jp": !0,
"misasa.tottori.jp": !0,
"nanbu.tottori.jp": !0,
"nichinan.tottori.jp": !0,
"sakaiminato.tottori.jp": !0,
"tottori.tottori.jp": !0,
"wakasa.tottori.jp": !0,
"yazu.tottori.jp": !0,
"yonago.tottori.jp": !0,
"asahi.toyama.jp": !0,
"fuchu.toyama.jp": !0,
"fukumitsu.toyama.jp": !0,
"funahashi.toyama.jp": !0,
"himi.toyama.jp": !0,
"imizu.toyama.jp": !0,
"inami.toyama.jp": !0,
"johana.toyama.jp": !0,
"kamiichi.toyama.jp": !0,
"kurobe.toyama.jp": !0,
"nakaniikawa.toyama.jp": !0,
"namerikawa.toyama.jp": !0,
"nanto.toyama.jp": !0,
"nyuzen.toyama.jp": !0,
"oyabe.toyama.jp": !0,
"taira.toyama.jp": !0,
"takaoka.toyama.jp": !0,
"tateyama.toyama.jp": !0,
"toga.toyama.jp": !0,
"tonami.toyama.jp": !0,
"toyama.toyama.jp": !0,
"unazuki.toyama.jp": !0,
"uozu.toyama.jp": !0,
"yamada.toyama.jp": !0,
"arida.wakayama.jp": !0,
"aridagawa.wakayama.jp": !0,
"gobo.wakayama.jp": !0,
"hashimoto.wakayama.jp": !0,
"hidaka.wakayama.jp": !0,
"hirogawa.wakayama.jp": !0,
"inami.wakayama.jp": !0,
"iwade.wakayama.jp": !0,
"kainan.wakayama.jp": !0,
"kamitonda.wakayama.jp": !0,
"katsuragi.wakayama.jp": !0,
"kimino.wakayama.jp": !0,
"kinokawa.wakayama.jp": !0,
"kitayama.wakayama.jp": !0,
"koya.wakayama.jp": !0,
"koza.wakayama.jp": !0,
"kozagawa.wakayama.jp": !0,
"kudoyama.wakayama.jp": !0,
"kushimoto.wakayama.jp": !0,
"mihama.wakayama.jp": !0,
"misato.wakayama.jp": !0,
"nachikatsuura.wakayama.jp": !0,
"shingu.wakayama.jp": !0,
"shirahama.wakayama.jp": !0,
"taiji.wakayama.jp": !0,
"tanabe.wakayama.jp": !0,
"wakayama.wakayama.jp": !0,
"yuasa.wakayama.jp": !0,
"yura.wakayama.jp": !0,
"asahi.yamagata.jp": !0,
"funagata.yamagata.jp": !0,
"higashine.yamagata.jp": !0,
"iide.yamagata.jp": !0,
"kahoku.yamagata.jp": !0,
"kaminoyama.yamagata.jp": !0,
"kaneyama.yamagata.jp": !0,
"kawanishi.yamagata.jp": !0,
"mamurogawa.yamagata.jp": !0,
"mikawa.yamagata.jp": !0,
"murayama.yamagata.jp": !0,
"nagai.yamagata.jp": !0,
"nakayama.yamagata.jp": !0,
"nanyo.yamagata.jp": !0,
"nishikawa.yamagata.jp": !0,
"obanazawa.yamagata.jp": !0,
"oe.yamagata.jp": !0,
"oguni.yamagata.jp": !0,
"ohkura.yamagata.jp": !0,
"oishida.yamagata.jp": !0,
"sagae.yamagata.jp": !0,
"sakata.yamagata.jp": !0,
"sakegawa.yamagata.jp": !0,
"shinjo.yamagata.jp": !0,
"shirataka.yamagata.jp": !0,
"shonai.yamagata.jp": !0,
"takahata.yamagata.jp": !0,
"tendo.yamagata.jp": !0,
"tozawa.yamagata.jp": !0,
"tsuruoka.yamagata.jp": !0,
"yamagata.yamagata.jp": !0,
"yamanobe.yamagata.jp": !0,
"yonezawa.yamagata.jp": !0,
"yuza.yamagata.jp": !0,
"abu.yamaguchi.jp": !0,
"hagi.yamaguchi.jp": !0,
"hikari.yamaguchi.jp": !0,
"hofu.yamaguchi.jp": !0,
"iwakuni.yamaguchi.jp": !0,
"kudamatsu.yamaguchi.jp": !0,
"mitou.yamaguchi.jp": !0,
"nagato.yamaguchi.jp": !0,
"oshima.yamaguchi.jp": !0,
"shimonoseki.yamaguchi.jp": !0,
"shunan.yamaguchi.jp": !0,
"tabuse.yamaguchi.jp": !0,
"tokuyama.yamaguchi.jp": !0,
"toyota.yamaguchi.jp": !0,
"ube.yamaguchi.jp": !0,
"yuu.yamaguchi.jp": !0,
"chuo.yamanashi.jp": !0,
"doshi.yamanashi.jp": !0,
"fuefuki.yamanashi.jp": !0,
"fujikawa.yamanashi.jp": !0,
"fujikawaguchiko.yamanashi.jp": !0,
"fujiyoshida.yamanashi.jp": !0,
"hayakawa.yamanashi.jp": !0,
"hokuto.yamanashi.jp": !0,
"ichikawamisato.yamanashi.jp": !0,
"kai.yamanashi.jp": !0,
"kofu.yamanashi.jp": !0,
"koshu.yamanashi.jp": !0,
"kosuge.yamanashi.jp": !0,
"minami-alps.yamanashi.jp": !0,
"minobu.yamanashi.jp": !0,
"nakamichi.yamanashi.jp": !0,
"nanbu.yamanashi.jp": !0,
"narusawa.yamanashi.jp": !0,
"nirasaki.yamanashi.jp": !0,
"nishikatsura.yamanashi.jp": !0,
"oshino.yamanashi.jp": !0,
"otsuki.yamanashi.jp": !0,
"showa.yamanashi.jp": !0,
"tabayama.yamanashi.jp": !0,
"tsuru.yamanashi.jp": !0,
"uenohara.yamanashi.jp": !0,
"yamanakako.yamanashi.jp": !0,
"yamanashi.yamanashi.jp": !0,
"*.ke": !0,
kg: !0,
"org.kg": !0,
"net.kg": !0,
"com.kg": !0,
"edu.kg": !0,
"gov.kg": !0,
"mil.kg": !0,
"*.kh": !0,
ki: !0,
"edu.ki": !0,
"biz.ki": !0,
"net.ki": !0,
"org.ki": !0,
"gov.ki": !0,
"info.ki": !0,
"com.ki": !0,
km: !0,
"org.km": !0,
"nom.km": !0,
"gov.km": !0,
"prd.km": !0,
"tm.km": !0,
"edu.km": !0,
"mil.km": !0,
"ass.km": !0,
"com.km": !0,
"coop.km": !0,
"asso.km": !0,
"presse.km": !0,
"medecin.km": !0,
"notaires.km": !0,
"pharmaciens.km": !0,
"veterinaire.km": !0,
"gouv.km": !0,
kn: !0,
"net.kn": !0,
"org.kn": !0,
"edu.kn": !0,
"gov.kn": !0,
kp: !0,
"com.kp": !0,
"edu.kp": !0,
"gov.kp": !0,
"org.kp": !0,
"rep.kp": !0,
"tra.kp": !0,
kr: !0,
"ac.kr": !0,
"co.kr": !0,
"es.kr": !0,
"go.kr": !0,
"hs.kr": !0,
"kg.kr": !0,
"mil.kr": !0,
"ms.kr": !0,
"ne.kr": !0,
"or.kr": !0,
"pe.kr": !0,
"re.kr": !0,
"sc.kr": !0,
"busan.kr": !0,
"chungbuk.kr": !0,
"chungnam.kr": !0,
"daegu.kr": !0,
"daejeon.kr": !0,
"gangwon.kr": !0,
"gwangju.kr": !0,
"gyeongbuk.kr": !0,
"gyeonggi.kr": !0,
"gyeongnam.kr": !0,
"incheon.kr": !0,
"jeju.kr": !0,
"jeonbuk.kr": !0,
"jeonnam.kr": !0,
"seoul.kr": !0,
"ulsan.kr": !0,
"*.kw": !0,
ky: !0,
"edu.ky": !0,
"gov.ky": !0,
"com.ky": !0,
"org.ky": !0,
"net.ky": !0,
kz: !0,
"org.kz": !0,
"edu.kz": !0,
"net.kz": !0,
"gov.kz": !0,
"mil.kz": !0,
"com.kz": !0,
la: !0,
"int.la": !0,
"net.la": !0,
"info.la": !0,
"edu.la": !0,
"gov.la": !0,
"per.la": !0,
"com.la": !0,
"org.la": !0,
lb: !0,
"com.lb": !0,
"edu.lb": !0,
"gov.lb": !0,
"net.lb": !0,
"org.lb": !0,
lc: !0,
"com.lc": !0,
"net.lc": !0,
"co.lc": !0,
"org.lc": !0,
"edu.lc": !0,
"gov.lc": !0,
li: !0,
lk: !0,
"gov.lk": !0,
"sch.lk": !0,
"net.lk": !0,
"int.lk": !0,
"com.lk": !0,
"org.lk": !0,
"edu.lk": !0,
"ngo.lk": !0,
"soc.lk": !0,
"web.lk": !0,
"ltd.lk": !0,
"assn.lk": !0,
"grp.lk": !0,
"hotel.lk": !0,
"ac.lk": !0,
lr: !0,
"com.lr": !0,
"edu.lr": !0,
"gov.lr": !0,
"org.lr": !0,
"net.lr": !0,
ls: !0,
"co.ls": !0,
"org.ls": !0,
lt: !0,
"gov.lt": !0,
lu: !0,
lv: !0,
"com.lv": !0,
"edu.lv": !0,
"gov.lv": !0,
"org.lv": !0,
"mil.lv": !0,
"id.lv": !0,
"net.lv": !0,
"asn.lv": !0,
"conf.lv": !0,
ly: !0,
"com.ly": !0,
"net.ly": !0,
"gov.ly": !0,
"plc.ly": !0,
"edu.ly": !0,
"sch.ly": !0,
"med.ly": !0,
"org.ly": !0,
"id.ly": !0,
ma: !0,
"co.ma": !0,
"net.ma": !0,
"gov.ma": !0,
"org.ma": !0,
"ac.ma": !0,
"press.ma": !0,
mc: !0,
"tm.mc": !0,
"asso.mc": !0,
md: !0,
me: !0,
"co.me": !0,
"net.me": !0,
"org.me": !0,
"edu.me": !0,
"ac.me": !0,
"gov.me": !0,
"its.me": !0,
"priv.me": !0,
mg: !0,
"org.mg": !0,
"nom.mg": !0,
"gov.mg": !0,
"prd.mg": !0,
"tm.mg": !0,
"edu.mg": !0,
"mil.mg": !0,
"com.mg": !0,
"co.mg": !0,
mh: !0,
mil: !0,
mk: !0,
"com.mk": !0,
"org.mk": !0,
"net.mk": !0,
"edu.mk": !0,
"gov.mk": !0,
"inf.mk": !0,
"name.mk": !0,
ml: !0,
"com.ml": !0,
"edu.ml": !0,
"gouv.ml": !0,
"gov.ml": !0,
"net.ml": !0,
"org.ml": !0,
"presse.ml": !0,
"*.mm": !0,
mn: !0,
"gov.mn": !0,
"edu.mn": !0,
"org.mn": !0,
mo: !0,
"com.mo": !0,
"net.mo": !0,
"org.mo": !0,
"edu.mo": !0,
"gov.mo": !0,
mobi: !0,
mp: !0,
mq: !0,
mr: !0,
"gov.mr": !0,
ms: !0,
"com.ms": !0,
"edu.ms": !0,
"gov.ms": !0,
"net.ms": !0,
"org.ms": !0,
mt: !0,
"com.mt": !0,
"edu.mt": !0,
"net.mt": !0,
"org.mt": !0,
mu: !0,
"com.mu": !0,
"net.mu": !0,
"org.mu": !0,
"gov.mu": !0,
"ac.mu": !0,
"co.mu": !0,
"or.mu": !0,
museum: !0,
"academy.museum": !0,
"agriculture.museum": !0,
"air.museum": !0,
"airguard.museum": !0,
"alabama.museum": !0,
"alaska.museum": !0,
"amber.museum": !0,
"ambulance.museum": !0,
"american.museum": !0,
"americana.museum": !0,
"americanantiques.museum": !0,
"americanart.museum": !0,
"amsterdam.museum": !0,
"and.museum": !0,
"annefrank.museum": !0,
"anthro.museum": !0,
"anthropology.museum": !0,
"antiques.museum": !0,
"aquarium.museum": !0,
"arboretum.museum": !0,
"archaeological.museum": !0,
"archaeology.museum": !0,
"architecture.museum": !0,
"art.museum": !0,
"artanddesign.museum": !0,
"artcenter.museum": !0,
"artdeco.museum": !0,
"arteducation.museum": !0,
"artgallery.museum": !0,
"arts.museum": !0,
"artsandcrafts.museum": !0,
"asmatart.museum": !0,
"assassination.museum": !0,
"assisi.museum": !0,
"association.museum": !0,
"astronomy.museum": !0,
"atlanta.museum": !0,
"austin.museum": !0,
"australia.museum": !0,
"automotive.museum": !0,
"aviation.museum": !0,
"axis.museum": !0,
"badajoz.museum": !0,
"baghdad.museum": !0,
"bahn.museum": !0,
"bale.museum": !0,
"baltimore.museum": !0,
"barcelona.museum": !0,
"baseball.museum": !0,
"basel.museum": !0,
"baths.museum": !0,
"bauern.museum": !0,
"beauxarts.museum": !0,
"beeldengeluid.museum": !0,
"bellevue.museum": !0,
"bergbau.museum": !0,
"berkeley.museum": !0,
"berlin.museum": !0,
"bern.museum": !0,
"bible.museum": !0,
"bilbao.museum": !0,
"bill.museum": !0,
"birdart.museum": !0,
"birthplace.museum": !0,
"bonn.museum": !0,
"boston.museum": !0,
"botanical.museum": !0,
"botanicalgarden.museum": !0,
"botanicgarden.museum": !0,
"botany.museum": !0,
"brandywinevalley.museum": !0,
"brasil.museum": !0,
"bristol.museum": !0,
"british.museum": !0,
"britishcolumbia.museum": !0,
"broadcast.museum": !0,
"brunel.museum": !0,
"brussel.museum": !0,
"brussels.museum": !0,
"bruxelles.museum": !0,
"building.museum": !0,
"burghof.museum": !0,
"bus.museum": !0,
"bushey.museum": !0,
"cadaques.museum": !0,
"california.museum": !0,
"cambridge.museum": !0,
"can.museum": !0,
"canada.museum": !0,
"capebreton.museum": !0,
"carrier.museum": !0,
"cartoonart.museum": !0,
"casadelamoneda.museum": !0,
"castle.museum": !0,
"castres.museum": !0,
"celtic.museum": !0,
"center.museum": !0,
"chattanooga.museum": !0,
"cheltenham.museum": !0,
"chesapeakebay.museum": !0,
"chicago.museum": !0,
"children.museum": !0,
"childrens.museum": !0,
"childrensgarden.museum": !0,
"chiropractic.museum": !0,
"chocolate.museum": !0,
"christiansburg.museum": !0,
"cincinnati.museum": !0,
"cinema.museum": !0,
"circus.museum": !0,
"civilisation.museum": !0,
"civilization.museum": !0,
"civilwar.museum": !0,
"clinton.museum": !0,
"clock.museum": !0,
"coal.museum": !0,
"coastaldefence.museum": !0,
"cody.museum": !0,
"coldwar.museum": !0,
"collection.museum": !0,
"colonialwilliamsburg.museum": !0,
"coloradoplateau.museum": !0,
"columbia.museum": !0,
"columbus.museum": !0,
"communication.museum": !0,
"communications.museum": !0,
"community.museum": !0,
"computer.museum": !0,
"computerhistory.museum": !0,
"xn--comunicaes-v6a2o.museum": !0,
"contemporary.museum": !0,
"contemporaryart.museum": !0,
"convent.museum": !0,
"copenhagen.museum": !0,
"corporation.museum": !0,
"xn--correios-e-telecomunicaes-ghc29a.museum": !0,
"corvette.museum": !0,
"costume.museum": !0,
"countryestate.museum": !0,
"county.museum": !0,
"crafts.museum": !0,
"cranbrook.museum": !0,
"creation.museum": !0,
"cultural.museum": !0,
"culturalcenter.museum": !0,
"culture.museum": !0,
"cyber.museum": !0,
"cymru.museum": !0,
"dali.museum": !0,
"dallas.museum": !0,
"database.museum": !0,
"ddr.museum": !0,
"decorativearts.museum": !0,
"delaware.museum": !0,
"delmenhorst.museum": !0,
"denmark.museum": !0,
"depot.museum": !0,
"design.museum": !0,
"detroit.museum": !0,
"dinosaur.museum": !0,
"discovery.museum": !0,
"dolls.museum": !0,
"donostia.museum": !0,
"durham.museum": !0,
"eastafrica.museum": !0,
"eastcoast.museum": !0,
"education.museum": !0,
"educational.museum": !0,
"egyptian.museum": !0,
"eisenbahn.museum": !0,
"elburg.museum": !0,
"elvendrell.museum": !0,
"embroidery.museum": !0,
"encyclopedic.museum": !0,
"england.museum": !0,
"entomology.museum": !0,
"environment.museum": !0,
"environmentalconservation.museum": !0,
"epilepsy.museum": !0,
"essex.museum": !0,
"estate.museum": !0,
"ethnology.museum": !0,
"exeter.museum": !0,
"exhibition.museum": !0,
"family.museum": !0,
"farm.museum": !0,
"farmequipment.museum": !0,
"farmers.museum": !0,
"farmstead.museum": !0,
"field.museum": !0,
"figueres.museum": !0,
"filatelia.museum": !0,
"film.museum": !0,
"fineart.museum": !0,
"finearts.museum": !0,
"finland.museum": !0,
"flanders.museum": !0,
"florida.museum": !0,
"force.museum": !0,
"fortmissoula.museum": !0,
"fortworth.museum": !0,
"foundation.museum": !0,
"francaise.museum": !0,
"frankfurt.museum": !0,
"franziskaner.museum": !0,
"freemasonry.museum": !0,
"freiburg.museum": !0,
"fribourg.museum": !0,
"frog.museum": !0,
"fundacio.museum": !0,
"furniture.museum": !0,
"gallery.museum": !0,
"garden.museum": !0,
"gateway.museum": !0,
"geelvinck.museum": !0,
"gemological.museum": !0,
"geology.museum": !0,
"georgia.museum": !0,
"giessen.museum": !0,
"glas.museum": !0,
"glass.museum": !0,
"gorge.museum": !0,
"grandrapids.museum": !0,
"graz.museum": !0,
"guernsey.museum": !0,
"halloffame.museum": !0,
"hamburg.museum": !0,
"handson.museum": !0,
"harvestcelebration.museum": !0,
"hawaii.museum": !0,
"health.museum": !0,
"heimatunduhren.museum": !0,
"hellas.museum": !0,
"helsinki.museum": !0,
"hembygdsforbund.museum": !0,
"heritage.museum": !0,
"histoire.museum": !0,
"historical.museum": !0,
"historicalsociety.museum": !0,
"historichouses.museum": !0,
"historisch.museum": !0,
"historisches.museum": !0,
"history.museum": !0,
"historyofscience.museum": !0,
"horology.museum": !0,
"house.museum": !0,
"humanities.museum": !0,
"illustration.museum": !0,
"imageandsound.museum": !0,
"indian.museum": !0,
"indiana.museum": !0,
"indianapolis.museum": !0,
"indianmarket.museum": !0,
"intelligence.museum": !0,
"interactive.museum": !0,
"iraq.museum": !0,
"iron.museum": !0,
"isleofman.museum": !0,
"jamison.museum": !0,
"jefferson.museum": !0,
"jerusalem.museum": !0,
"jewelry.museum": !0,
"jewish.museum": !0,
"jewishart.museum": !0,
"jfk.museum": !0,
"journalism.museum": !0,
"judaica.museum": !0,
"judygarland.museum": !0,
"juedisches.museum": !0,
"juif.museum": !0,
"karate.museum": !0,
"karikatur.museum": !0,
"kids.museum": !0,
"koebenhavn.museum": !0,
"koeln.museum": !0,
"kunst.museum": !0,
"kunstsammlung.museum": !0,
"kunstunddesign.museum": !0,
"labor.museum": !0,
"labour.museum": !0,
"lajolla.museum": !0,
"lancashire.museum": !0,
"landes.museum": !0,
"lans.museum": !0,
"xn--lns-qla.museum": !0,
"larsson.museum": !0,
"lewismiller.museum": !0,
"lincoln.museum": !0,
"linz.museum": !0,
"living.museum": !0,
"livinghistory.museum": !0,
"localhistory.museum": !0,
"london.museum": !0,
"losangeles.museum": !0,
"louvre.museum": !0,
"loyalist.museum": !0,
"lucerne.museum": !0,
"luxembourg.museum": !0,
"luzern.museum": !0,
"mad.museum": !0,
"madrid.museum": !0,
"mallorca.museum": !0,
"manchester.museum": !0,
"mansion.museum": !0,
"mansions.museum": !0,
"manx.museum": !0,
"marburg.museum": !0,
"maritime.museum": !0,
"maritimo.museum": !0,
"maryland.museum": !0,
"marylhurst.museum": !0,
"media.museum": !0,
"medical.museum": !0,
"medizinhistorisches.museum": !0,
"meeres.museum": !0,
"memorial.museum": !0,
"mesaverde.museum": !0,
"michigan.museum": !0,
"midatlantic.museum": !0,
"military.museum": !0,
"mill.museum": !0,
"miners.museum": !0,
"mining.museum": !0,
"minnesota.museum": !0,
"missile.museum": !0,
"missoula.museum": !0,
"modern.museum": !0,
"moma.museum": !0,
"money.museum": !0,
"monmouth.museum": !0,
"monticello.museum": !0,
"montreal.museum": !0,
"moscow.museum": !0,
"motorcycle.museum": !0,
"muenchen.museum": !0,
"muenster.museum": !0,
"mulhouse.museum": !0,
"muncie.museum": !0,
"museet.museum": !0,
"museumcenter.museum": !0,
"museumvereniging.museum": !0,
"music.museum": !0,
"national.museum": !0,
"nationalfirearms.museum": !0,
"nationalheritage.museum": !0,
"nativeamerican.museum": !0,
"naturalhistory.museum": !0,
"naturalhistorymuseum.museum": !0,
"naturalsciences.museum": !0,
"nature.museum": !0,
"naturhistorisches.museum": !0,
"natuurwetenschappen.museum": !0,
"naumburg.museum": !0,
"naval.museum": !0,
"nebraska.museum": !0,
"neues.museum": !0,
"newhampshire.museum": !0,
"newjersey.museum": !0,
"newmexico.museum": !0,
"newport.museum": !0,
"newspaper.museum": !0,
"newyork.museum": !0,
"niepce.museum": !0,
"norfolk.museum": !0,
"north.museum": !0,
"nrw.museum": !0,
"nuernberg.museum": !0,
"nuremberg.museum": !0,
"nyc.museum": !0,
"nyny.museum": !0,
"oceanographic.museum": !0,
"oceanographique.museum": !0,
"omaha.museum": !0,
"online.museum": !0,
"ontario.museum": !0,
"openair.museum": !0,
"oregon.museum": !0,
"oregontrail.museum": !0,
"otago.museum": !0,
"oxford.museum": !0,
"pacific.museum": !0,
"paderborn.museum": !0,
"palace.museum": !0,
"paleo.museum": !0,
"palmsprings.museum": !0,
"panama.museum": !0,
"paris.museum": !0,
"pasadena.museum": !0,
"pharmacy.museum": !0,
"philadelphia.museum": !0,
"philadelphiaarea.museum": !0,
"philately.museum": !0,
"phoenix.museum": !0,
"photography.museum": !0,
"pilots.museum": !0,
"pittsburgh.museum": !0,
"planetarium.museum": !0,
"plantation.museum": !0,
"plants.museum": !0,
"plaza.museum": !0,
"portal.museum": !0,
"portland.museum": !0,
"portlligat.museum": !0,
"posts-and-telecommunications.museum": !0,
"preservation.museum": !0,
"presidio.museum": !0,
"press.museum": !0,
"project.museum": !0,
"public.museum": !0,
"pubol.museum": !0,
"quebec.museum": !0,
"railroad.museum": !0,
"railway.museum": !0,
"research.museum": !0,
"resistance.museum": !0,
"riodejaneiro.museum": !0,
"rochester.museum": !0,
"rockart.museum": !0,
"roma.museum": !0,
"russia.museum": !0,
"saintlouis.museum": !0,
"salem.museum": !0,
"salvadordali.museum": !0,
"salzburg.museum": !0,
"sandiego.museum": !0,
"sanfrancisco.museum": !0,
"santabarbara.museum": !0,
"santacruz.museum": !0,
"santafe.museum": !0,
"saskatchewan.museum": !0,
"satx.museum": !0,
"savannahga.museum": !0,
"schlesisches.museum": !0,
"schoenbrunn.museum": !0,
"schokoladen.museum": !0,
"school.museum": !0,
"schweiz.museum": !0,
"science.museum": !0,
"scienceandhistory.museum": !0,
"scienceandindustry.museum": !0,
"sciencecenter.museum": !0,
"sciencecenters.museum": !0,
"science-fiction.museum": !0,
"sciencehistory.museum": !0,
"sciences.museum": !0,
"sciencesnaturelles.museum": !0,
"scotland.museum": !0,
"seaport.museum": !0,
"settlement.museum": !0,
"settlers.museum": !0,
"shell.museum": !0,
"sherbrooke.museum": !0,
"sibenik.museum": !0,
"silk.museum": !0,
"ski.museum": !0,
"skole.museum": !0,
"society.museum": !0,
"sologne.museum": !0,
"soundandvision.museum": !0,
"southcarolina.museum": !0,
"southwest.museum": !0,
"space.museum": !0,
"spy.museum": !0,
"square.museum": !0,
"stadt.museum": !0,
"stalbans.museum": !0,
"starnberg.museum": !0,
"state.museum": !0,
"stateofdelaware.museum": !0,
"station.museum": !0,
"steam.museum": !0,
"steiermark.museum": !0,
"stjohn.museum": !0,
"stockholm.museum": !0,
"stpetersburg.museum": !0,
"stuttgart.museum": !0,
"suisse.museum": !0,
"surgeonshall.museum": !0,
"surrey.museum": !0,
"svizzera.museum": !0,
"sweden.museum": !0,
"sydney.museum": !0,
"tank.museum": !0,
"tcm.museum": !0,
"technology.museum": !0,
"telekommunikation.museum": !0,
"television.museum": !0,
"texas.museum": !0,
"textile.museum": !0,
"theater.museum": !0,
"time.museum": !0,
"timekeeping.museum": !0,
"topology.museum": !0,
"torino.museum": !0,
"touch.museum": !0,
"town.museum": !0,
"transport.museum": !0,
"tree.museum": !0,
"trolley.museum": !0,
"trust.museum": !0,
"trustee.museum": !0,
"uhren.museum": !0,
"ulm.museum": !0,
"undersea.museum": !0,
"university.museum": !0,
"usa.museum": !0,
"usantiques.museum": !0,
"usarts.museum": !0,
"uscountryestate.museum": !0,
"usculture.museum": !0,
"usdecorativearts.museum": !0,
"usgarden.museum": !0,
"ushistory.museum": !0,
"ushuaia.museum": !0,
"uslivinghistory.museum": !0,
"utah.museum": !0,
"uvic.museum": !0,
"valley.museum": !0,
"vantaa.museum": !0,
"versailles.museum": !0,
"viking.museum": !0,
"village.museum": !0,
"virginia.museum": !0,
"virtual.museum": !0,
"virtuel.museum": !0,
"vlaanderen.museum": !0,
"volkenkunde.museum": !0,
"wales.museum": !0,
"wallonie.museum": !0,
"war.museum": !0,
"washingtondc.museum": !0,
"watchandclock.museum": !0,
"watch-and-clock.museum": !0,
"western.museum": !0,
"westfalen.museum": !0,
"whaling.museum": !0,
"wildlife.museum": !0,
"williamsburg.museum": !0,
"windmill.museum": !0,
"workshop.museum": !0,
"york.museum": !0,
"yorkshire.museum": !0,
"yosemite.museum": !0,
"youth.museum": !0,
"zoological.museum": !0,
"zoology.museum": !0,
"xn--9dbhblg6di.museum": !0,
"xn--h1aegh.museum": !0,
mv: !0,
"aero.mv": !0,
"biz.mv": !0,
"com.mv": !0,
"coop.mv": !0,
"edu.mv": !0,
"gov.mv": !0,
"info.mv": !0,
"int.mv": !0,
"mil.mv": !0,
"museum.mv": !0,
"name.mv": !0,
"net.mv": !0,
"org.mv": !0,
"pro.mv": !0,
mw: !0,
"ac.mw": !0,
"biz.mw": !0,
"co.mw": !0,
"com.mw": !0,
"coop.mw": !0,
"edu.mw": !0,
"gov.mw": !0,
"int.mw": !0,
"museum.mw": !0,
"net.mw": !0,
"org.mw": !0,
mx: !0,
"com.mx": !0,
"org.mx": !0,
"gob.mx": !0,
"edu.mx": !0,
"net.mx": !0,
my: !0,
"com.my": !0,
"net.my": !0,
"org.my": !0,
"gov.my": !0,
"edu.my": !0,
"mil.my": !0,
"name.my": !0,
"*.mz": !0,
"teledata.mz": !1,
na: !0,
"info.na": !0,
"pro.na": !0,
"name.na": !0,
"school.na": !0,
"or.na": !0,
"dr.na": !0,
"us.na": !0,
"mx.na": !0,
"ca.na": !0,
"in.na": !0,
"cc.na": !0,
"tv.na": !0,
"ws.na": !0,
"mobi.na": !0,
"co.na": !0,
"com.na": !0,
"org.na": !0,
name: !0,
nc: !0,
"asso.nc": !0,
ne: !0,
net: !0,
nf: !0,
"com.nf": !0,
"net.nf": !0,
"per.nf": !0,
"rec.nf": !0,
"web.nf": !0,
"arts.nf": !0,
"firm.nf": !0,
"info.nf": !0,
"other.nf": !0,
"store.nf": !0,
ng: !0,
"com.ng": !0,
"edu.ng": !0,
"name.ng": !0,
"net.ng": !0,
"org.ng": !0,
"sch.ng": !0,
"gov.ng": !0,
"mil.ng": !0,
"mobi.ng": !0,
"*.ni": !0,
nl: !0,
"bv.nl": !0,
no: !0,
"fhs.no": !0,
"vgs.no": !0,
"fylkesbibl.no": !0,
"folkebibl.no": !0,
"museum.no": !0,
"idrett.no": !0,
"priv.no": !0,
"mil.no": !0,
"stat.no": !0,
"dep.no": !0,
"kommune.no": !0,
"herad.no": !0,
"aa.no": !0,
"ah.no": !0,
"bu.no": !0,
"fm.no": !0,
"hl.no": !0,
"hm.no": !0,
"jan-mayen.no": !0,
"mr.no": !0,
"nl.no": !0,
"nt.no": !0,
"of.no": !0,
"ol.no": !0,
"oslo.no": !0,
"rl.no": !0,
"sf.no": !0,
"st.no": !0,
"svalbard.no": !0,
"tm.no": !0,
"tr.no": !0,
"va.no": !0,
"vf.no": !0,
"gs.aa.no": !0,
"gs.ah.no": !0,
"gs.bu.no": !0,
"gs.fm.no": !0,
"gs.hl.no": !0,
"gs.hm.no": !0,
"gs.jan-mayen.no": !0,
"gs.mr.no": !0,
"gs.nl.no": !0,
"gs.nt.no": !0,
"gs.of.no": !0,
"gs.ol.no": !0,
"gs.oslo.no": !0,
"gs.rl.no": !0,
"gs.sf.no": !0,
"gs.st.no": !0,
"gs.svalbard.no": !0,
"gs.tm.no": !0,
"gs.tr.no": !0,
"gs.va.no": !0,
"gs.vf.no": !0,
"akrehamn.no": !0,
"xn--krehamn-dxa.no": !0,
"algard.no": !0,
"xn--lgrd-poac.no": !0,
"arna.no": !0,
"brumunddal.no": !0,
"bryne.no": !0,
"bronnoysund.no": !0,
"xn--brnnysund-m8ac.no": !0,
"drobak.no": !0,
"xn--drbak-wua.no": !0,
"egersund.no": !0,
"fetsund.no": !0,
"floro.no": !0,
"xn--flor-jra.no": !0,
"fredrikstad.no": !0,
"hokksund.no": !0,
"honefoss.no": !0,
"xn--hnefoss-q1a.no": !0,
"jessheim.no": !0,
"jorpeland.no": !0,
"xn--jrpeland-54a.no": !0,
"kirkenes.no": !0,
"kopervik.no": !0,
"krokstadelva.no": !0,
"langevag.no": !0,
"xn--langevg-jxa.no": !0,
"leirvik.no": !0,
"mjondalen.no": !0,
"xn--mjndalen-64a.no": !0,
"mo-i-rana.no": !0,
"mosjoen.no": !0,
"xn--mosjen-eya.no": !0,
"nesoddtangen.no": !0,
"orkanger.no": !0,
"osoyro.no": !0,
"xn--osyro-wua.no": !0,
"raholt.no": !0,
"xn--rholt-mra.no": !0,
"sandnessjoen.no": !0,
"xn--sandnessjen-ogb.no": !0,
"skedsmokorset.no": !0,
"slattum.no": !0,
"spjelkavik.no": !0,
"stathelle.no": !0,
"stavern.no": !0,
"stjordalshalsen.no": !0,
"xn--stjrdalshalsen-sqb.no": !0,
"tananger.no": !0,
"tranby.no": !0,
"vossevangen.no": !0,
"afjord.no": !0,
"xn--fjord-lra.no": !0,
"agdenes.no": !0,
"al.no": !0,
"xn--l-1fa.no": !0,
"alesund.no": !0,
"xn--lesund-hua.no": !0,
"alstahaug.no": !0,
"alta.no": !0,
"xn--lt-liac.no": !0,
"alaheadju.no": !0,
"xn--laheadju-7ya.no": !0,
"alvdal.no": !0,
"amli.no": !0,
"xn--mli-tla.no": !0,
"amot.no": !0,
"xn--mot-tla.no": !0,
"andebu.no": !0,
"andoy.no": !0,
"xn--andy-ira.no": !0,
"andasuolo.no": !0,
"ardal.no": !0,
"xn--rdal-poa.no": !0,
"aremark.no": !0,
"arendal.no": !0,
"xn--s-1fa.no": !0,
"aseral.no": !0,
"xn--seral-lra.no": !0,
"asker.no": !0,
"askim.no": !0,
"askvoll.no": !0,
"askoy.no": !0,
"xn--asky-ira.no": !0,
"asnes.no": !0,
"xn--snes-poa.no": !0,
"audnedaln.no": !0,
"aukra.no": !0,
"aure.no": !0,
"aurland.no": !0,
"aurskog-holand.no": !0,
"xn--aurskog-hland-jnb.no": !0,
"austevoll.no": !0,
"austrheim.no": !0,
"averoy.no": !0,
"xn--avery-yua.no": !0,
"balestrand.no": !0,
"ballangen.no": !0,
"balat.no": !0,
"xn--blt-elab.no": !0,
"balsfjord.no": !0,
"bahccavuotna.no": !0,
"xn--bhccavuotna-k7a.no": !0,
"bamble.no": !0,
"bardu.no": !0,
"beardu.no": !0,
"beiarn.no": !0,
"bajddar.no": !0,
"xn--bjddar-pta.no": !0,
"baidar.no": !0,
"xn--bidr-5nac.no": !0,
"berg.no": !0,
"bergen.no": !0,
"berlevag.no": !0,
"xn--berlevg-jxa.no": !0,
"bearalvahki.no": !0,
"xn--bearalvhki-y4a.no": !0,
"bindal.no": !0,
"birkenes.no": !0,
"bjarkoy.no": !0,
"xn--bjarky-fya.no": !0,
"bjerkreim.no": !0,
"bjugn.no": !0,
"bodo.no": !0,
"xn--bod-2na.no": !0,
"badaddja.no": !0,
"xn--bdddj-mrabd.no": !0,
"budejju.no": !0,
"bokn.no": !0,
"bremanger.no": !0,
"bronnoy.no": !0,
"xn--brnny-wuac.no": !0,
"bygland.no": !0,
"bykle.no": !0,
"barum.no": !0,
"xn--brum-voa.no": !0,
"bo.telemark.no": !0,
"xn--b-5ga.telemark.no": !0,
"bo.nordland.no": !0,
"xn--b-5ga.nordland.no": !0,
"bievat.no": !0,
"xn--bievt-0qa.no": !0,
"bomlo.no": !0,
"xn--bmlo-gra.no": !0,
"batsfjord.no": !0,
"xn--btsfjord-9za.no": !0,
"bahcavuotna.no": !0,
"xn--bhcavuotna-s4a.no": !0,
"dovre.no": !0,
"drammen.no": !0,
"drangedal.no": !0,
"dyroy.no": !0,
"xn--dyry-ira.no": !0,
"donna.no": !0,
"xn--dnna-gra.no": !0,
"eid.no": !0,
"eidfjord.no": !0,
"eidsberg.no": !0,
"eidskog.no": !0,
"eidsvoll.no": !0,
"eigersund.no": !0,
"elverum.no": !0,
"enebakk.no": !0,
"engerdal.no": !0,
"etne.no": !0,
"etnedal.no": !0,
"evenes.no": !0,
"evenassi.no": !0,
"xn--eveni-0qa01ga.no": !0,
"evje-og-hornnes.no": !0,
"farsund.no": !0,
"fauske.no": !0,
"fuossko.no": !0,
"fuoisku.no": !0,
"fedje.no": !0,
"fet.no": !0,
"finnoy.no": !0,
"xn--finny-yua.no": !0,
"fitjar.no": !0,
"fjaler.no": !0,
"fjell.no": !0,
"flakstad.no": !0,
"flatanger.no": !0,
"flekkefjord.no": !0,
"flesberg.no": !0,
"flora.no": !0,
"fla.no": !0,
"xn--fl-zia.no": !0,
"folldal.no": !0,
"forsand.no": !0,
"fosnes.no": !0,
"frei.no": !0,
"frogn.no": !0,
"froland.no": !0,
"frosta.no": !0,
"frana.no": !0,
"xn--frna-woa.no": !0,
"froya.no": !0,
"xn--frya-hra.no": !0,
"fusa.no": !0,
"fyresdal.no": !0,
"forde.no": !0,
"xn--frde-gra.no": !0,
"gamvik.no": !0,
"gangaviika.no": !0,
"xn--ggaviika-8ya47h.no": !0,
"gaular.no": !0,
"gausdal.no": !0,
"gildeskal.no": !0,
"xn--gildeskl-g0a.no": !0,
"giske.no": !0,
"gjemnes.no": !0,
"gjerdrum.no": !0,
"gjerstad.no": !0,
"gjesdal.no": !0,
"gjovik.no": !0,
"xn--gjvik-wua.no": !0,
"gloppen.no": !0,
"gol.no": !0,
"gran.no": !0,
"grane.no": !0,
"granvin.no": !0,
"gratangen.no": !0,
"grimstad.no": !0,
"grong.no": !0,
"kraanghke.no": !0,
"xn--kranghke-b0a.no": !0,
"grue.no": !0,
"gulen.no": !0,
"hadsel.no": !0,
"halden.no": !0,
"halsa.no": !0,
"hamar.no": !0,
"hamaroy.no": !0,
"habmer.no": !0,
"xn--hbmer-xqa.no": !0,
"hapmir.no": !0,
"xn--hpmir-xqa.no": !0,
"hammerfest.no": !0,
"hammarfeasta.no": !0,
"xn--hmmrfeasta-s4ac.no": !0,
"haram.no": !0,
"hareid.no": !0,
"harstad.no": !0,
"hasvik.no": !0,
"aknoluokta.no": !0,
"xn--koluokta-7ya57h.no": !0,
"hattfjelldal.no": !0,
"aarborte.no": !0,
"haugesund.no": !0,
"hemne.no": !0,
"hemnes.no": !0,
"hemsedal.no": !0,
"heroy.more-og-romsdal.no": !0,
"xn--hery-ira.xn--mre-og-romsdal-qqb.no": !0,
"heroy.nordland.no": !0,
"xn--hery-ira.nordland.no": !0,
"hitra.no": !0,
"hjartdal.no": !0,
"hjelmeland.no": !0,
"hobol.no": !0,
"xn--hobl-ira.no": !0,
"hof.no": !0,
"hol.no": !0,
"hole.no": !0,
"holmestrand.no": !0,
"holtalen.no": !0,
"xn--holtlen-hxa.no": !0,
"hornindal.no": !0,
"horten.no": !0,
"hurdal.no": !0,
"hurum.no": !0,
"hvaler.no": !0,
"hyllestad.no": !0,
"hagebostad.no": !0,
"xn--hgebostad-g3a.no": !0,
"hoyanger.no": !0,
"xn--hyanger-q1a.no": !0,
"hoylandet.no": !0,
"xn--hylandet-54a.no": !0,
"ha.no": !0,
"xn--h-2fa.no": !0,
"ibestad.no": !0,
"inderoy.no": !0,
"xn--indery-fya.no": !0,
"iveland.no": !0,
"jevnaker.no": !0,
"jondal.no": !0,
"jolster.no": !0,
"xn--jlster-bya.no": !0,
"karasjok.no": !0,
"karasjohka.no": !0,
"xn--krjohka-hwab49j.no": !0,
"karlsoy.no": !0,
"galsa.no": !0,
"xn--gls-elac.no": !0,
"karmoy.no": !0,
"xn--karmy-yua.no": !0,
"kautokeino.no": !0,
"guovdageaidnu.no": !0,
"klepp.no": !0,
"klabu.no": !0,
"xn--klbu-woa.no": !0,
"kongsberg.no": !0,
"kongsvinger.no": !0,
"kragero.no": !0,
"xn--krager-gya.no": !0,
"kristiansand.no": !0,
"kristiansund.no": !0,
"krodsherad.no": !0,
"xn--krdsherad-m8a.no": !0,
"kvalsund.no": !0,
"rahkkeravju.no": !0,
"xn--rhkkervju-01af.no": !0,
"kvam.no": !0,
"kvinesdal.no": !0,
"kvinnherad.no": !0,
"kviteseid.no": !0,
"kvitsoy.no": !0,
"xn--kvitsy-fya.no": !0,
"kvafjord.no": !0,
"xn--kvfjord-nxa.no": !0,
"giehtavuoatna.no": !0,
"kvanangen.no": !0,
"xn--kvnangen-k0a.no": !0,
"navuotna.no": !0,
"xn--nvuotna-hwa.no": !0,
"kafjord.no": !0,
"xn--kfjord-iua.no": !0,
"gaivuotna.no": !0,
"xn--givuotna-8ya.no": !0,
"larvik.no": !0,
"lavangen.no": !0,
"lavagis.no": !0,
"loabat.no": !0,
"xn--loabt-0qa.no": !0,
"lebesby.no": !0,
"davvesiida.no": !0,
"leikanger.no": !0,
"leirfjord.no": !0,
"leka.no": !0,
"leksvik.no": !0,
"lenvik.no": !0,
"leangaviika.no": !0,
"xn--leagaviika-52b.no": !0,
"lesja.no": !0,
"levanger.no": !0,
"lier.no": !0,
"lierne.no": !0,
"lillehammer.no": !0,
"lillesand.no": !0,
"lindesnes.no": !0,
"lindas.no": !0,
"xn--linds-pra.no": !0,
"lom.no": !0,
"loppa.no": !0,
"lahppi.no": !0,
"xn--lhppi-xqa.no": !0,
"lund.no": !0,
"lunner.no": !0,
"luroy.no": !0,
"xn--lury-ira.no": !0,
"luster.no": !0,
"lyngdal.no": !0,
"lyngen.no": !0,
"ivgu.no": !0,
"lardal.no": !0,
"lerdal.no": !0,
"xn--lrdal-sra.no": !0,
"lodingen.no": !0,
"xn--ldingen-q1a.no": !0,
"lorenskog.no": !0,
"xn--lrenskog-54a.no": !0,
"loten.no": !0,
"xn--lten-gra.no": !0,
"malvik.no": !0,
"masoy.no": !0,
"xn--msy-ula0h.no": !0,
"muosat.no": !0,
"xn--muost-0qa.no": !0,
"mandal.no": !0,
"marker.no": !0,
"marnardal.no": !0,
"masfjorden.no": !0,
"meland.no": !0,
"meldal.no": !0,
"melhus.no": !0,
"meloy.no": !0,
"xn--mely-ira.no": !0,
"meraker.no": !0,
"xn--merker-kua.no": !0,
"moareke.no": !0,
"xn--moreke-jua.no": !0,
"midsund.no": !0,
"midtre-gauldal.no": !0,
"modalen.no": !0,
"modum.no": !0,
"molde.no": !0,
"moskenes.no": !0,
"moss.no": !0,
"mosvik.no": !0,
"malselv.no": !0,
"xn--mlselv-iua.no": !0,
"malatvuopmi.no": !0,
"xn--mlatvuopmi-s4a.no": !0,
"namdalseid.no": !0,
"aejrie.no": !0,
"namsos.no": !0,
"namsskogan.no": !0,
"naamesjevuemie.no": !0,
"xn--nmesjevuemie-tcba.no": !0,
"laakesvuemie.no": !0,
"nannestad.no": !0,
"narvik.no": !0,
"narviika.no": !0,
"naustdal.no": !0,
"nedre-eiker.no": !0,
"nes.akershus.no": !0,
"nes.buskerud.no": !0,
"nesna.no": !0,
"nesodden.no": !0,
"nesseby.no": !0,
"unjarga.no": !0,
"xn--unjrga-rta.no": !0,
"nesset.no": !0,
"nissedal.no": !0,
"nittedal.no": !0,
"nord-aurdal.no": !0,
"nord-fron.no": !0,
"nord-odal.no": !0,
"norddal.no": !0,
"nordkapp.no": !0,
"davvenjarga.no": !0,
"xn--davvenjrga-y4a.no": !0,
"nordre-land.no": !0,
"nordreisa.no": !0,
"raisa.no": !0,
"xn--risa-5na.no": !0,
"nore-og-uvdal.no": !0,
"notodden.no": !0,
"naroy.no": !0,
"xn--nry-yla5g.no": !0,
"notteroy.no": !0,
"xn--nttery-byae.no": !0,
"odda.no": !0,
"oksnes.no": !0,
"xn--ksnes-uua.no": !0,
"oppdal.no": !0,
"oppegard.no": !0,
"xn--oppegrd-ixa.no": !0,
"orkdal.no": !0,
"orland.no": !0,
"xn--rland-uua.no": !0,
"orskog.no": !0,
"xn--rskog-uua.no": !0,
"orsta.no": !0,
"xn--rsta-fra.no": !0,
"os.hedmark.no": !0,
"os.hordaland.no": !0,
"osen.no": !0,
"osteroy.no": !0,
"xn--ostery-fya.no": !0,
"ostre-toten.no": !0,
"xn--stre-toten-zcb.no": !0,
"overhalla.no": !0,
"ovre-eiker.no": !0,
"xn--vre-eiker-k8a.no": !0,
"oyer.no": !0,
"xn--yer-zna.no": !0,
"oygarden.no": !0,
"xn--ygarden-p1a.no": !0,
"oystre-slidre.no": !0,
"xn--ystre-slidre-ujb.no": !0,
"porsanger.no": !0,
"porsangu.no": !0,
"xn--porsgu-sta26f.no": !0,
"porsgrunn.no": !0,
"radoy.no": !0,
"xn--rady-ira.no": !0,
"rakkestad.no": !0,
"rana.no": !0,
"ruovat.no": !0,
"randaberg.no": !0,
"rauma.no": !0,
"rendalen.no": !0,
"rennebu.no": !0,
"rennesoy.no": !0,
"xn--rennesy-v1a.no": !0,
"rindal.no": !0,
"ringebu.no": !0,
"ringerike.no": !0,
"ringsaker.no": !0,
"rissa.no": !0,
"risor.no": !0,
"xn--risr-ira.no": !0,
"roan.no": !0,
"rollag.no": !0,
"rygge.no": !0,
"ralingen.no": !0,
"xn--rlingen-mxa.no": !0,
"rodoy.no": !0,
"xn--rdy-0nab.no": !0,
"romskog.no": !0,
"xn--rmskog-bya.no": !0,
"roros.no": !0,
"xn--rros-gra.no": !0,
"rost.no": !0,
"xn--rst-0na.no": !0,
"royken.no": !0,
"xn--ryken-vua.no": !0,
"royrvik.no": !0,
"xn--ryrvik-bya.no": !0,
"rade.no": !0,
"xn--rde-ula.no": !0,
"salangen.no": !0,
"siellak.no": !0,
"saltdal.no": !0,
"salat.no": !0,
"xn--slt-elab.no": !0,
"xn--slat-5na.no": !0,
"samnanger.no": !0,
"sande.more-og-romsdal.no": !0,
"sande.xn--mre-og-romsdal-qqb.no": !0,
"sande.vestfold.no": !0,
"sandefjord.no": !0,
"sandnes.no": !0,
"sandoy.no": !0,
"xn--sandy-yua.no": !0,
"sarpsborg.no": !0,
"sauda.no": !0,
"sauherad.no": !0,
"sel.no": !0,
"selbu.no": !0,
"selje.no": !0,
"seljord.no": !0,
"sigdal.no": !0,
"siljan.no": !0,
"sirdal.no": !0,
"skaun.no": !0,
"skedsmo.no": !0,
"ski.no": !0,
"skien.no": !0,
"skiptvet.no": !0,
"skjervoy.no": !0,
"xn--skjervy-v1a.no": !0,
"skierva.no": !0,
"xn--skierv-uta.no": !0,
"skjak.no": !0,
"xn--skjk-soa.no": !0,
"skodje.no": !0,
"skanland.no": !0,
"xn--sknland-fxa.no": !0,
"skanit.no": !0,
"xn--sknit-yqa.no": !0,
"smola.no": !0,
"xn--smla-hra.no": !0,
"snillfjord.no": !0,
"snasa.no": !0,
"xn--snsa-roa.no": !0,
"snoasa.no": !0,
"snaase.no": !0,
"xn--snase-nra.no": !0,
"sogndal.no": !0,
"sokndal.no": !0,
"sola.no": !0,
"solund.no": !0,
"songdalen.no": !0,
"sortland.no": !0,
"spydeberg.no": !0,
"stange.no": !0,
"stavanger.no": !0,
"steigen.no": !0,
"steinkjer.no": !0,
"stjordal.no": !0,
"xn--stjrdal-s1a.no": !0,
"stokke.no": !0,
"stor-elvdal.no": !0,
"stord.no": !0,
"stordal.no": !0,
"storfjord.no": !0,
"omasvuotna.no": !0,
"strand.no": !0,
"stranda.no": !0,
"stryn.no": !0,
"sula.no": !0,
"suldal.no": !0,
"sund.no": !0,
"sunndal.no": !0,
"surnadal.no": !0,
"sveio.no": !0,
"svelvik.no": !0,
"sykkylven.no": !0,
"sogne.no": !0,
"xn--sgne-gra.no": !0,
"somna.no": !0,
"xn--smna-gra.no": !0,
"sondre-land.no": !0,
"xn--sndre-land-0cb.no": !0,
"sor-aurdal.no": !0,
"xn--sr-aurdal-l8a.no": !0,
"sor-fron.no": !0,
"xn--sr-fron-q1a.no": !0,
"sor-odal.no": !0,
"xn--sr-odal-q1a.no": !0,
"sor-varanger.no": !0,
"xn--sr-varanger-ggb.no": !0,
"matta-varjjat.no": !0,
"xn--mtta-vrjjat-k7af.no": !0,
"sorfold.no": !0,
"xn--srfold-bya.no": !0,
"sorreisa.no": !0,
"xn--srreisa-q1a.no": !0,
"sorum.no": !0,
"xn--srum-gra.no": !0,
"tana.no": !0,
"deatnu.no": !0,
"time.no": !0,
"tingvoll.no": !0,
"tinn.no": !0,
"tjeldsund.no": !0,
"dielddanuorri.no": !0,
"tjome.no": !0,
"xn--tjme-hra.no": !0,
"tokke.no": !0,
"tolga.no": !0,
"torsken.no": !0,
"tranoy.no": !0,
"xn--trany-yua.no": !0,
"tromso.no": !0,
"xn--troms-zua.no": !0,
"tromsa.no": !0,
"romsa.no": !0,
"trondheim.no": !0,
"troandin.no": !0,
"trysil.no": !0,
"trana.no": !0,
"xn--trna-woa.no": !0,
"trogstad.no": !0,
"xn--trgstad-r1a.no": !0,
"tvedestrand.no": !0,
"tydal.no": !0,
"tynset.no": !0,
"tysfjord.no": !0,
"divtasvuodna.no": !0,
"divttasvuotna.no": !0,
"tysnes.no": !0,
"tysvar.no": !0,
"xn--tysvr-vra.no": !0,
"tonsberg.no": !0,
"xn--tnsberg-q1a.no": !0,
"ullensaker.no": !0,
"ullensvang.no": !0,
"ulvik.no": !0,
"utsira.no": !0,
"vadso.no": !0,
"xn--vads-jra.no": !0,
"cahcesuolo.no": !0,
"xn--hcesuolo-7ya35b.no": !0,
"vaksdal.no": !0,
"valle.no": !0,
"vang.no": !0,
"vanylven.no": !0,
"vardo.no": !0,
"xn--vard-jra.no": !0,
"varggat.no": !0,
"xn--vrggt-xqad.no": !0,
"vefsn.no": !0,
"vaapste.no": !0,
"vega.no": !0,
"vegarshei.no": !0,
"xn--vegrshei-c0a.no": !0,
"vennesla.no": !0,
"verdal.no": !0,
"verran.no": !0,
"vestby.no": !0,
"vestnes.no": !0,
"vestre-slidre.no": !0,
"vestre-toten.no": !0,
"vestvagoy.no": !0,
"xn--vestvgy-ixa6o.no": !0,
"vevelstad.no": !0,
"vik.no": !0,
"vikna.no": !0,
"vindafjord.no": !0,
"volda.no": !0,
"voss.no": !0,
"varoy.no": !0,
"xn--vry-yla5g.no": !0,
"vagan.no": !0,
"xn--vgan-qoa.no": !0,
"voagat.no": !0,
"vagsoy.no": !0,
"xn--vgsy-qoa0j.no": !0,
"vaga.no": !0,
"xn--vg-yiab.no": !0,
"valer.ostfold.no": !0,
"xn--vler-qoa.xn--stfold-9xa.no": !0,
"valer.hedmark.no": !0,
"xn--vler-qoa.hedmark.no": !0,
"*.np": !0,
nr: !0,
"biz.nr": !0,
"info.nr": !0,
"gov.nr": !0,
"edu.nr": !0,
"org.nr": !0,
"net.nr": !0,
"com.nr": !0,
nu: !0,
nz: !0,
"ac.nz": !0,
"co.nz": !0,
"cri.nz": !0,
"geek.nz": !0,
"gen.nz": !0,
"govt.nz": !0,
"health.nz": !0,
"iwi.nz": !0,
"kiwi.nz": !0,
"maori.nz": !0,
"mil.nz": !0,
"xn--mori-qsa.nz": !0,
"net.nz": !0,
"org.nz": !0,
"parliament.nz": !0,
"school.nz": !0,
om: !0,
"co.om": !0,
"com.om": !0,
"edu.om": !0,
"gov.om": !0,
"med.om": !0,
"museum.om": !0,
"net.om": !0,
"org.om": !0,
"pro.om": !0,
org: !0,
pa: !0,
"ac.pa": !0,
"gob.pa": !0,
"com.pa": !0,
"org.pa": !0,
"sld.pa": !0,
"edu.pa": !0,
"net.pa": !0,
"ing.pa": !0,
"abo.pa": !0,
"med.pa": !0,
"nom.pa": !0,
pe: !0,
"edu.pe": !0,
"gob.pe": !0,
"nom.pe": !0,
"mil.pe": !0,
"org.pe": !0,
"com.pe": !0,
"net.pe": !0,
pf: !0,
"com.pf": !0,
"org.pf": !0,
"edu.pf": !0,
"*.pg": !0,
ph: !0,
"com.ph": !0,
"net.ph": !0,
"org.ph": !0,
"gov.ph": !0,
"edu.ph": !0,
"ngo.ph": !0,
"mil.ph": !0,
"i.ph": !0,
pk: !0,
"com.pk": !0,
"net.pk": !0,
"edu.pk": !0,
"org.pk": !0,
"fam.pk": !0,
"biz.pk": !0,
"web.pk": !0,
"gov.pk": !0,
"gob.pk": !0,
"gok.pk": !0,
"gon.pk": !0,
"gop.pk": !0,
"gos.pk": !0,
"info.pk": !0,
pl: !0,
"com.pl": !0,
"net.pl": !0,
"org.pl": !0,
"aid.pl": !0,
"agro.pl": !0,
"atm.pl": !0,
"auto.pl": !0,
"biz.pl": !0,
"edu.pl": !0,
"gmina.pl": !0,
"gsm.pl": !0,
"info.pl": !0,
"mail.pl": !0,
"miasta.pl": !0,
"media.pl": !0,
"mil.pl": !0,
"nieruchomosci.pl": !0,
"nom.pl": !0,
"pc.pl": !0,
"powiat.pl": !0,
"priv.pl": !0,
"realestate.pl": !0,
"rel.pl": !0,
"sex.pl": !0,
"shop.pl": !0,
"sklep.pl": !0,
"sos.pl": !0,
"szkola.pl": !0,
"targi.pl": !0,
"tm.pl": !0,
"tourism.pl": !0,
"travel.pl": !0,
"turystyka.pl": !0,
"gov.pl": !0,
"ap.gov.pl": !0,
"ic.gov.pl": !0,
"is.gov.pl": !0,
"us.gov.pl": !0,
"kmpsp.gov.pl": !0,
"kppsp.gov.pl": !0,
"kwpsp.gov.pl": !0,
"psp.gov.pl": !0,
"wskr.gov.pl": !0,
"kwp.gov.pl": !0,
"mw.gov.pl": !0,
"ug.gov.pl": !0,
"um.gov.pl": !0,
"umig.gov.pl": !0,
"ugim.gov.pl": !0,
"upow.gov.pl": !0,
"uw.gov.pl": !0,
"starostwo.gov.pl": !0,
"pa.gov.pl": !0,
"po.gov.pl": !0,
"psse.gov.pl": !0,
"pup.gov.pl": !0,
"rzgw.gov.pl": !0,
"sa.gov.pl": !0,
"so.gov.pl": !0,
"sr.gov.pl": !0,
"wsa.gov.pl": !0,
"sko.gov.pl": !0,
"uzs.gov.pl": !0,
"wiih.gov.pl": !0,
"winb.gov.pl": !0,
"pinb.gov.pl": !0,
"wios.gov.pl": !0,
"witd.gov.pl": !0,
"wzmiuw.gov.pl": !0,
"piw.gov.pl": !0,
"wiw.gov.pl": !0,
"griw.gov.pl": !0,
"wif.gov.pl": !0,
"oum.gov.pl": !0,
"sdn.gov.pl": !0,
"zp.gov.pl": !0,
"uppo.gov.pl": !0,
"mup.gov.pl": !0,
"wuoz.gov.pl": !0,
"konsulat.gov.pl": !0,
"oirm.gov.pl": !0,
"augustow.pl": !0,
"babia-gora.pl": !0,
"bedzin.pl": !0,
"beskidy.pl": !0,
"bialowieza.pl": !0,
"bialystok.pl": !0,
"bielawa.pl": !0,
"bieszczady.pl": !0,
"boleslawiec.pl": !0,
"bydgoszcz.pl": !0,
"bytom.pl": !0,
"cieszyn.pl": !0,
"czeladz.pl": !0,
"czest.pl": !0,
"dlugoleka.pl": !0,
"elblag.pl": !0,
"elk.pl": !0,
"glogow.pl": !0,
"gniezno.pl": !0,
"gorlice.pl": !0,
"grajewo.pl": !0,
"ilawa.pl": !0,
"jaworzno.pl": !0,
"jelenia-gora.pl": !0,
"jgora.pl": !0,
"kalisz.pl": !0,
"kazimierz-dolny.pl": !0,
"karpacz.pl": !0,
"kartuzy.pl": !0,
"kaszuby.pl": !0,
"katowice.pl": !0,
"kepno.pl": !0,
"ketrzyn.pl": !0,
"klodzko.pl": !0,
"kobierzyce.pl": !0,
"kolobrzeg.pl": !0,
"konin.pl": !0,
"konskowola.pl": !0,
"kutno.pl": !0,
"lapy.pl": !0,
"lebork.pl": !0,
"legnica.pl": !0,
"lezajsk.pl": !0,
"limanowa.pl": !0,
"lomza.pl": !0,
"lowicz.pl": !0,
"lubin.pl": !0,
"lukow.pl": !0,
"malbork.pl": !0,
"malopolska.pl": !0,
"mazowsze.pl": !0,
"mazury.pl": !0,
"mielec.pl": !0,
"mielno.pl": !0,
"mragowo.pl": !0,
"naklo.pl": !0,
"nowaruda.pl": !0,
"nysa.pl": !0,
"olawa.pl": !0,
"olecko.pl": !0,
"olkusz.pl": !0,
"olsztyn.pl": !0,
"opoczno.pl": !0,
"opole.pl": !0,
"ostroda.pl": !0,
"ostroleka.pl": !0,
"ostrowiec.pl": !0,
"ostrowwlkp.pl": !0,
"pila.pl": !0,
"pisz.pl": !0,
"podhale.pl": !0,
"podlasie.pl": !0,
"polkowice.pl": !0,
"pomorze.pl": !0,
"pomorskie.pl": !0,
"prochowice.pl": !0,
"pruszkow.pl": !0,
"przeworsk.pl": !0,
"pulawy.pl": !0,
"radom.pl": !0,
"rawa-maz.pl": !0,
"rybnik.pl": !0,
"rzeszow.pl": !0,
"sanok.pl": !0,
"sejny.pl": !0,
"slask.pl": !0,
"slupsk.pl": !0,
"sosnowiec.pl": !0,
"stalowa-wola.pl": !0,
"skoczow.pl": !0,
"starachowice.pl": !0,
"stargard.pl": !0,
"suwalki.pl": !0,
"swidnica.pl": !0,
"swiebodzin.pl": !0,
"swinoujscie.pl": !0,
"szczecin.pl": !0,
"szczytno.pl": !0,
"tarnobrzeg.pl": !0,
"tgory.pl": !0,
"turek.pl": !0,
"tychy.pl": !0,
"ustka.pl": !0,
"walbrzych.pl": !0,
"warmia.pl": !0,
"warszawa.pl": !0,
"waw.pl": !0,
"wegrow.pl": !0,
"wielun.pl": !0,
"wlocl.pl": !0,
"wloclawek.pl": !0,
"wodzislaw.pl": !0,
"wolomin.pl": !0,
"wroclaw.pl": !0,
"zachpomor.pl": !0,
"zagan.pl": !0,
"zarow.pl": !0,
"zgora.pl": !0,
"zgorzelec.pl": !0,
pm: !0,
pn: !0,
"gov.pn": !0,
"co.pn": !0,
"org.pn": !0,
"edu.pn": !0,
"net.pn": !0,
post: !0,
pr: !0,
"com.pr": !0,
"net.pr": !0,
"org.pr": !0,
"gov.pr": !0,
"edu.pr": !0,
"isla.pr": !0,
"pro.pr": !0,
"biz.pr": !0,
"info.pr": !0,
"name.pr": !0,
"est.pr": !0,
"prof.pr": !0,
"ac.pr": !0,
pro: !0,
"aca.pro": !0,
"bar.pro": !0,
"cpa.pro": !0,
"jur.pro": !0,
"law.pro": !0,
"med.pro": !0,
"eng.pro": !0,
ps: !0,
"edu.ps": !0,
"gov.ps": !0,
"sec.ps": !0,
"plo.ps": !0,
"com.ps": !0,
"org.ps": !0,
"net.ps": !0,
pt: !0,
"net.pt": !0,
"gov.pt": !0,
"org.pt": !0,
"edu.pt": !0,
"int.pt": !0,
"publ.pt": !0,
"com.pt": !0,
"nome.pt": !0,
pw: !0,
"co.pw": !0,
"ne.pw": !0,
"or.pw": !0,
"ed.pw": !0,
"go.pw": !0,
"belau.pw": !0,
py: !0,
"com.py": !0,
"coop.py": !0,
"edu.py": !0,
"gov.py": !0,
"mil.py": !0,
"net.py": !0,
"org.py": !0,
qa: !0,
"com.qa": !0,
"edu.qa": !0,
"gov.qa": !0,
"mil.qa": !0,
"name.qa": !0,
"net.qa": !0,
"org.qa": !0,
"sch.qa": !0,
re: !0,
"com.re": !0,
"asso.re": !0,
"nom.re": !0,
ro: !0,
"com.ro": !0,
"org.ro": !0,
"tm.ro": !0,
"nt.ro": !0,
"nom.ro": !0,
"info.ro": !0,
"rec.ro": !0,
"arts.ro": !0,
"firm.ro": !0,
"store.ro": !0,
"www.ro": !0,
rs: !0,
"co.rs": !0,
"org.rs": !0,
"edu.rs": !0,
"ac.rs": !0,
"gov.rs": !0,
"in.rs": !0,
ru: !0,
"ac.ru": !0,
"com.ru": !0,
"edu.ru": !0,
"int.ru": !0,
"net.ru": !0,
"org.ru": !0,
"pp.ru": !0,
"adygeya.ru": !0,
"altai.ru": !0,
"amur.ru": !0,
"arkhangelsk.ru": !0,
"astrakhan.ru": !0,
"bashkiria.ru": !0,
"belgorod.ru": !0,
"bir.ru": !0,
"bryansk.ru": !0,
"buryatia.ru": !0,
"cbg.ru": !0,
"chel.ru": !0,
"chelyabinsk.ru": !0,
"chita.ru": !0,
"chukotka.ru": !0,
"chuvashia.ru": !0,
"dagestan.ru": !0,
"dudinka.ru": !0,
"e-burg.ru": !0,
"grozny.ru": !0,
"irkutsk.ru": !0,
"ivanovo.ru": !0,
"izhevsk.ru": !0,
"jar.ru": !0,
"joshkar-ola.ru": !0,
"kalmykia.ru": !0,
"kaluga.ru": !0,
"kamchatka.ru": !0,
"karelia.ru": !0,
"kazan.ru": !0,
"kchr.ru": !0,
"kemerovo.ru": !0,
"khabarovsk.ru": !0,
"khakassia.ru": !0,
"khv.ru": !0,
"kirov.ru": !0,
"koenig.ru": !0,
"komi.ru": !0,
"kostroma.ru": !0,
"krasnoyarsk.ru": !0,
"kuban.ru": !0,
"kurgan.ru": !0,
"kursk.ru": !0,
"lipetsk.ru": !0,
"magadan.ru": !0,
"mari.ru": !0,
"mari-el.ru": !0,
"marine.ru": !0,
"mordovia.ru": !0,
"msk.ru": !0,
"murmansk.ru": !0,
"nalchik.ru": !0,
"nnov.ru": !0,
"nov.ru": !0,
"novosibirsk.ru": !0,
"nsk.ru": !0,
"omsk.ru": !0,
"orenburg.ru": !0,
"oryol.ru": !0,
"palana.ru": !0,
"penza.ru": !0,
"perm.ru": !0,
"ptz.ru": !0,
"rnd.ru": !0,
"ryazan.ru": !0,
"sakhalin.ru": !0,
"samara.ru": !0,
"saratov.ru": !0,
"simbirsk.ru": !0,
"smolensk.ru": !0,
"spb.ru": !0,
"stavropol.ru": !0,
"stv.ru": !0,
"surgut.ru": !0,
"tambov.ru": !0,
"tatarstan.ru": !0,
"tom.ru": !0,
"tomsk.ru": !0,
"tsaritsyn.ru": !0,
"tsk.ru": !0,
"tula.ru": !0,
"tuva.ru": !0,
"tver.ru": !0,
"tyumen.ru": !0,
"udm.ru": !0,
"udmurtia.ru": !0,
"ulan-ude.ru": !0,
"vladikavkaz.ru": !0,
"vladimir.ru": !0,
"vladivostok.ru": !0,
"volgograd.ru": !0,
"vologda.ru": !0,
"voronezh.ru": !0,
"vrn.ru": !0,
"vyatka.ru": !0,
"yakutia.ru": !0,
"yamal.ru": !0,
"yaroslavl.ru": !0,
"yekaterinburg.ru": !0,
"yuzhno-sakhalinsk.ru": !0,
"amursk.ru": !0,
"baikal.ru": !0,
"cmw.ru": !0,
"fareast.ru": !0,
"jamal.ru": !0,
"kms.ru": !0,
"k-uralsk.ru": !0,
"kustanai.ru": !0,
"kuzbass.ru": !0,
"magnitka.ru": !0,
"mytis.ru": !0,
"nakhodka.ru": !0,
"nkz.ru": !0,
"norilsk.ru": !0,
"oskol.ru": !0,
"pyatigorsk.ru": !0,
"rubtsovsk.ru": !0,
"snz.ru": !0,
"syzran.ru": !0,
"vdonsk.ru": !0,
"zgrad.ru": !0,
"gov.ru": !0,
"mil.ru": !0,
"test.ru": !0,
rw: !0,
"gov.rw": !0,
"net.rw": !0,
"edu.rw": !0,
"ac.rw": !0,
"com.rw": !0,
"co.rw": !0,
"int.rw": !0,
"mil.rw": !0,
"gouv.rw": !0,
sa: !0,
"com.sa": !0,
"net.sa": !0,
"org.sa": !0,
"gov.sa": !0,
"med.sa": !0,
"pub.sa": !0,
"edu.sa": !0,
"sch.sa": !0,
sb: !0,
"com.sb": !0,
"edu.sb": !0,
"gov.sb": !0,
"net.sb": !0,
"org.sb": !0,
sc: !0,
"com.sc": !0,
"gov.sc": !0,
"net.sc": !0,
"org.sc": !0,
"edu.sc": !0,
sd: !0,
"com.sd": !0,
"net.sd": !0,
"org.sd": !0,
"edu.sd": !0,
"med.sd": !0,
"tv.sd": !0,
"gov.sd": !0,
"info.sd": !0,
se: !0,
"a.se": !0,
"ac.se": !0,
"b.se": !0,
"bd.se": !0,
"brand.se": !0,
"c.se": !0,
"d.se": !0,
"e.se": !0,
"f.se": !0,
"fh.se": !0,
"fhsk.se": !0,
"fhv.se": !0,
"g.se": !0,
"h.se": !0,
"i.se": !0,
"k.se": !0,
"komforb.se": !0,
"kommunalforbund.se": !0,
"komvux.se": !0,
"l.se": !0,
"lanbib.se": !0,
"m.se": !0,
"n.se": !0,
"naturbruksgymn.se": !0,
"o.se": !0,
"org.se": !0,
"p.se": !0,
"parti.se": !0,
"pp.se": !0,
"press.se": !0,
"r.se": !0,
"s.se": !0,
"t.se": !0,
"tm.se": !0,
"u.se": !0,
"w.se": !0,
"x.se": !0,
"y.se": !0,
"z.se": !0,
sg: !0,
"com.sg": !0,
"net.sg": !0,
"org.sg": !0,
"gov.sg": !0,
"edu.sg": !0,
"per.sg": !0,
sh: !0,
"com.sh": !0,
"net.sh": !0,
"gov.sh": !0,
"org.sh": !0,
"mil.sh": !0,
si: !0,
sj: !0,
sk: !0,
sl: !0,
"com.sl": !0,
"net.sl": !0,
"edu.sl": !0,
"gov.sl": !0,
"org.sl": !0,
sm: !0,
sn: !0,
"art.sn": !0,
"com.sn": !0,
"edu.sn": !0,
"gouv.sn": !0,
"org.sn": !0,
"perso.sn": !0,
"univ.sn": !0,
so: !0,
"com.so": !0,
"net.so": !0,
"org.so": !0,
sr: !0,
st: !0,
"co.st": !0,
"com.st": !0,
"consulado.st": !0,
"edu.st": !0,
"embaixada.st": !0,
"gov.st": !0,
"mil.st": !0,
"net.st": !0,
"org.st": !0,
"principe.st": !0,
"saotome.st": !0,
"store.st": !0,
su: !0,
"adygeya.su": !0,
"arkhangelsk.su": !0,
"balashov.su": !0,
"bashkiria.su": !0,
"bryansk.su": !0,
"dagestan.su": !0,
"grozny.su": !0,
"ivanovo.su": !0,
"kalmykia.su": !0,
"kaluga.su": !0,
"karelia.su": !0,
"khakassia.su": !0,
"krasnodar.su": !0,
"kurgan.su": !0,
"lenug.su": !0,
"mordovia.su": !0,
"msk.su": !0,
"murmansk.su": !0,
"nalchik.su": !0,
"nov.su": !0,
"obninsk.su": !0,
"penza.su": !0,
"pokrovsk.su": !0,
"sochi.su": !0,
"spb.su": !0,
"togliatti.su": !0,
"troitsk.su": !0,
"tula.su": !0,
"tuva.su": !0,
"vladikavkaz.su": !0,
"vladimir.su": !0,
"vologda.su": !0,
sv: !0,
"com.sv": !0,
"edu.sv": !0,
"gob.sv": !0,
"org.sv": !0,
"red.sv": !0,
sx: !0,
"gov.sx": !0,
sy: !0,
"edu.sy": !0,
"gov.sy": !0,
"net.sy": !0,
"mil.sy": !0,
"com.sy": !0,
"org.sy": !0,
sz: !0,
"co.sz": !0,
"ac.sz": !0,
"org.sz": !0,
tc: !0,
td: !0,
tel: !0,
tf: !0,
tg: !0,
th: !0,
"ac.th": !0,
"co.th": !0,
"go.th": !0,
"in.th": !0,
"mi.th": !0,
"net.th": !0,
"or.th": !0,
tj: !0,
"ac.tj": !0,
"biz.tj": !0,
"co.tj": !0,
"com.tj": !0,
"edu.tj": !0,
"go.tj": !0,
"gov.tj": !0,
"int.tj": !0,
"mil.tj": !0,
"name.tj": !0,
"net.tj": !0,
"nic.tj": !0,
"org.tj": !0,
"test.tj": !0,
"web.tj": !0,
tk: !0,
tl: !0,
"gov.tl": !0,
tm: !0,
"com.tm": !0,
"co.tm": !0,
"org.tm": !0,
"net.tm": !0,
"nom.tm": !0,
"gov.tm": !0,
"mil.tm": !0,
"edu.tm": !0,
tn: !0,
"com.tn": !0,
"ens.tn": !0,
"fin.tn": !0,
"gov.tn": !0,
"ind.tn": !0,
"intl.tn": !0,
"nat.tn": !0,
"net.tn": !0,
"org.tn": !0,
"info.tn": !0,
"perso.tn": !0,
"tourism.tn": !0,
"edunet.tn": !0,
"rnrt.tn": !0,
"rns.tn": !0,
"rnu.tn": !0,
"mincom.tn": !0,
"agrinet.tn": !0,
"defense.tn": !0,
"turen.tn": !0,
to: !0,
"com.to": !0,
"gov.to": !0,
"net.to": !0,
"org.to": !0,
"edu.to": !0,
"mil.to": !0,
tp: !0,
tr: !0,
"com.tr": !0,
"info.tr": !0,
"biz.tr": !0,
"net.tr": !0,
"org.tr": !0,
"web.tr": !0,
"gen.tr": !0,
"tv.tr": !0,
"av.tr": !0,
"dr.tr": !0,
"bbs.tr": !0,
"name.tr": !0,
"tel.tr": !0,
"gov.tr": !0,
"bel.tr": !0,
"pol.tr": !0,
"mil.tr": !0,
"k12.tr": !0,
"edu.tr": !0,
"kep.tr": !0,
"nc.tr": !0,
"gov.nc.tr": !0,
travel: !0,
tt: !0,
"co.tt": !0,
"com.tt": !0,
"org.tt": !0,
"net.tt": !0,
"biz.tt": !0,
"info.tt": !0,
"pro.tt": !0,
"int.tt": !0,
"coop.tt": !0,
"jobs.tt": !0,
"mobi.tt": !0,
"travel.tt": !0,
"museum.tt": !0,
"aero.tt": !0,
"name.tt": !0,
"gov.tt": !0,
"edu.tt": !0,
tv: !0,
tw: !0,
"edu.tw": !0,
"gov.tw": !0,
"mil.tw": !0,
"com.tw": !0,
"net.tw": !0,
"org.tw": !0,
"idv.tw": !0,
"game.tw": !0,
"ebiz.tw": !0,
"club.tw": !0,
"xn--zf0ao64a.tw": !0,
"xn--uc0atv.tw": !0,
"xn--czrw28b.tw": !0,
tz: !0,
"ac.tz": !0,
"co.tz": !0,
"go.tz": !0,
"hotel.tz": !0,
"info.tz": !0,
"me.tz": !0,
"mil.tz": !0,
"mobi.tz": !0,
"ne.tz": !0,
"or.tz": !0,
"sc.tz": !0,
"tv.tz": !0,
ua: !0,
"com.ua": !0,
"edu.ua": !0,
"gov.ua": !0,
"in.ua": !0,
"net.ua": !0,
"org.ua": !0,
"cherkassy.ua": !0,
"cherkasy.ua": !0,
"chernigov.ua": !0,
"chernihiv.ua": !0,
"chernivtsi.ua": !0,
"chernovtsy.ua": !0,
"ck.ua": !0,
"cn.ua": !0,
"cr.ua": !0,
"crimea.ua": !0,
"cv.ua": !0,
"dn.ua": !0,
"dnepropetrovsk.ua": !0,
"dnipropetrovsk.ua": !0,
"dominic.ua": !0,
"donetsk.ua": !0,
"dp.ua": !0,
"if.ua": !0,
"ivano-frankivsk.ua": !0,
"kh.ua": !0,
"kharkiv.ua": !0,
"kharkov.ua": !0,
"kherson.ua": !0,
"khmelnitskiy.ua": !0,
"khmelnytskyi.ua": !0,
"kiev.ua": !0,
"kirovograd.ua": !0,
"km.ua": !0,
"kr.ua": !0,
"krym.ua": !0,
"ks.ua": !0,
"kv.ua": !0,
"kyiv.ua": !0,
"lg.ua": !0,
"lt.ua": !0,
"lugansk.ua": !0,
"lutsk.ua": !0,
"lv.ua": !0,
"lviv.ua": !0,
"mk.ua": !0,
"mykolaiv.ua": !0,
"nikolaev.ua": !0,
"od.ua": !0,
"odesa.ua": !0,
"odessa.ua": !0,
"pl.ua": !0,
"poltava.ua": !0,
"rivne.ua": !0,
"rovno.ua": !0,
"rv.ua": !0,
"sb.ua": !0,
"sebastopol.ua": !0,
"sevastopol.ua": !0,
"sm.ua": !0,
"sumy.ua": !0,
"te.ua": !0,
"ternopil.ua": !0,
"uz.ua": !0,
"uzhgorod.ua": !0,
"vinnica.ua": !0,
"vinnytsia.ua": !0,
"vn.ua": !0,
"volyn.ua": !0,
"yalta.ua": !0,
"zaporizhzhe.ua": !0,
"zaporizhzhia.ua": !0,
"zhitomir.ua": !0,
"zhytomyr.ua": !0,
"zp.ua": !0,
"zt.ua": !0,
ug: !0,
"co.ug": !0,
"or.ug": !0,
"ac.ug": !0,
"sc.ug": !0,
"go.ug": !0,
"ne.ug": !0,
"com.ug": !0,
"org.ug": !0,
uk: !0,
"ac.uk": !0,
"co.uk": !0,
"gov.uk": !0,
"ltd.uk": !0,
"me.uk": !0,
"net.uk": !0,
"nhs.uk": !0,
"org.uk": !0,
"plc.uk": !0,
"police.uk": !0,
"*.sch.uk": !0,
us: !0,
"dni.us": !0,
"fed.us": !0,
"isa.us": !0,
"kids.us": !0,
"nsn.us": !0,
"ak.us": !0,
"al.us": !0,
"ar.us": !0,
"as.us": !0,
"az.us": !0,
"ca.us": !0,
"co.us": !0,
"ct.us": !0,
"dc.us": !0,
"de.us": !0,
"fl.us": !0,
"ga.us": !0,
"gu.us": !0,
"hi.us": !0,
"ia.us": !0,
"id.us": !0,
"il.us": !0,
"in.us": !0,
"ks.us": !0,
"ky.us": !0,
"la.us": !0,
"ma.us": !0,
"md.us": !0,
"me.us": !0,
"mi.us": !0,
"mn.us": !0,
"mo.us": !0,
"ms.us": !0,
"mt.us": !0,
"nc.us": !0,
"nd.us": !0,
"ne.us": !0,
"nh.us": !0,
"nj.us": !0,
"nm.us": !0,
"nv.us": !0,
"ny.us": !0,
"oh.us": !0,
"ok.us": !0,
"or.us": !0,
"pa.us": !0,
"pr.us": !0,
"ri.us": !0,
"sc.us": !0,
"sd.us": !0,
"tn.us": !0,
"tx.us": !0,
"ut.us": !0,
"vi.us": !0,
"vt.us": !0,
"va.us": !0,
"wa.us": !0,
"wi.us": !0,
"wv.us": !0,
"wy.us": !0,
"k12.ak.us": !0,
"k12.al.us": !0,
"k12.ar.us": !0,
"k12.as.us": !0,
"k12.az.us": !0,
"k12.ca.us": !0,
"k12.co.us": !0,
"k12.ct.us": !0,
"k12.dc.us": !0,
"k12.de.us": !0,
"k12.fl.us": !0,
"k12.ga.us": !0,
"k12.gu.us": !0,
"k12.ia.us": !0,
"k12.id.us": !0,
"k12.il.us": !0,
"k12.in.us": !0,
"k12.ks.us": !0,
"k12.ky.us": !0,
"k12.la.us": !0,
"k12.ma.us": !0,
"k12.md.us": !0,
"k12.me.us": !0,
"k12.mi.us": !0,
"k12.mn.us": !0,
"k12.mo.us": !0,
"k12.ms.us": !0,
"k12.mt.us": !0,
"k12.nc.us": !0,
"k12.ne.us": !0,
"k12.nh.us": !0,
"k12.nj.us": !0,
"k12.nm.us": !0,
"k12.nv.us": !0,
"k12.ny.us": !0,
"k12.oh.us": !0,
"k12.ok.us": !0,
"k12.or.us": !0,
"k12.pa.us": !0,
"k12.pr.us": !0,
"k12.ri.us": !0,
"k12.sc.us": !0,
"k12.tn.us": !0,
"k12.tx.us": !0,
"k12.ut.us": !0,
"k12.vi.us": !0,
"k12.vt.us": !0,
"k12.va.us": !0,
"k12.wa.us": !0,
"k12.wi.us": !0,
"k12.wy.us": !0,
"cc.ak.us": !0,
"cc.al.us": !0,
"cc.ar.us": !0,
"cc.as.us": !0,
"cc.az.us": !0,
"cc.ca.us": !0,
"cc.co.us": !0,
"cc.ct.us": !0,
"cc.dc.us": !0,
"cc.de.us": !0,
"cc.fl.us": !0,
"cc.ga.us": !0,
"cc.gu.us": !0,
"cc.hi.us": !0,
"cc.ia.us": !0,
"cc.id.us": !0,
"cc.il.us": !0,
"cc.in.us": !0,
"cc.ks.us": !0,
"cc.ky.us": !0,
"cc.la.us": !0,
"cc.ma.us": !0,
"cc.md.us": !0,
"cc.me.us": !0,
"cc.mi.us": !0,
"cc.mn.us": !0,
"cc.mo.us": !0,
"cc.ms.us": !0,
"cc.mt.us": !0,
"cc.nc.us": !0,
"cc.nd.us": !0,
"cc.ne.us": !0,
"cc.nh.us": !0,
"cc.nj.us": !0,
"cc.nm.us": !0,
"cc.nv.us": !0,
"cc.ny.us": !0,
"cc.oh.us": !0,
"cc.ok.us": !0,
"cc.or.us": !0,
"cc.pa.us": !0,
"cc.pr.us": !0,
"cc.ri.us": !0,
"cc.sc.us": !0,
"cc.sd.us": !0,
"cc.tn.us": !0,
"cc.tx.us": !0,
"cc.ut.us": !0,
"cc.vi.us": !0,
"cc.vt.us": !0,
"cc.va.us": !0,
"cc.wa.us": !0,
"cc.wi.us": !0,
"cc.wv.us": !0,
"cc.wy.us": !0,
"lib.ak.us": !0,
"lib.al.us": !0,
"lib.ar.us": !0,
"lib.as.us": !0,
"lib.az.us": !0,
"lib.ca.us": !0,
"lib.co.us": !0,
"lib.ct.us": !0,
"lib.dc.us": !0,
"lib.de.us": !0,
"lib.fl.us": !0,
"lib.ga.us": !0,
"lib.gu.us": !0,
"lib.hi.us": !0,
"lib.ia.us": !0,
"lib.id.us": !0,
"lib.il.us": !0,
"lib.in.us": !0,
"lib.ks.us": !0,
"lib.ky.us": !0,
"lib.la.us": !0,
"lib.ma.us": !0,
"lib.md.us": !0,
"lib.me.us": !0,
"lib.mi.us": !0,
"lib.mn.us": !0,
"lib.mo.us": !0,
"lib.ms.us": !0,
"lib.mt.us": !0,
"lib.nc.us": !0,
"lib.nd.us": !0,
"lib.ne.us": !0,
"lib.nh.us": !0,
"lib.nj.us": !0,
"lib.nm.us": !0,
"lib.nv.us": !0,
"lib.ny.us": !0,
"lib.oh.us": !0,
"lib.ok.us": !0,
"lib.or.us": !0,
"lib.pa.us": !0,
"lib.pr.us": !0,
"lib.ri.us": !0,
"lib.sc.us": !0,
"lib.sd.us": !0,
"lib.tn.us": !0,
"lib.tx.us": !0,
"lib.ut.us": !0,
"lib.vi.us": !0,
"lib.vt.us": !0,
"lib.va.us": !0,
"lib.wa.us": !0,
"lib.wi.us": !0,
"lib.wy.us": !0,
"pvt.k12.ma.us": !0,
"chtr.k12.ma.us": !0,
"paroch.k12.ma.us": !0,
uy: !0,
"com.uy": !0,
"edu.uy": !0,
"gub.uy": !0,
"mil.uy": !0,
"net.uy": !0,
"org.uy": !0,
uz: !0,
"co.uz": !0,
"com.uz": !0,
"net.uz": !0,
"org.uz": !0,
va: !0,
vc: !0,
"com.vc": !0,
"net.vc": !0,
"org.vc": !0,
"gov.vc": !0,
"mil.vc": !0,
"edu.vc": !0,
ve: !0,
"arts.ve": !0,
"co.ve": !0,
"com.ve": !0,
"e12.ve": !0,
"edu.ve": !0,
"firm.ve": !0,
"gob.ve": !0,
"gov.ve": !0,
"info.ve": !0,
"int.ve": !0,
"mil.ve": !0,
"net.ve": !0,
"org.ve": !0,
"rec.ve": !0,
"store.ve": !0,
"tec.ve": !0,
"web.ve": !0,
vg: !0,
vi: !0,
"co.vi": !0,
"com.vi": !0,
"k12.vi": !0,
"net.vi": !0,
"org.vi": !0,
vn: !0,
"com.vn": !0,
"net.vn": !0,
"org.vn": !0,
"edu.vn": !0,
"gov.vn": !0,
"int.vn": !0,
"ac.vn": !0,
"biz.vn": !0,
"info.vn": !0,
"name.vn": !0,
"pro.vn": !0,
"health.vn": !0,
vu: !0,
"com.vu": !0,
"edu.vu": !0,
"net.vu": !0,
"org.vu": !0,
wf: !0,
ws: !0,
"com.ws": !0,
"net.ws": !0,
"org.ws": !0,
"gov.ws": !0,
"edu.ws": !0,
yt: !0,
"xn--mgbaam7a8h": !0,
"xn--y9a3aq": !0,
"xn--54b7fta0cc": !0,
"xn--90ais": !0,
"xn--fiqs8s": !0,
"xn--fiqz9s": !0,
"xn--lgbbat1ad8j": !0,
"xn--wgbh1c": !0,
"xn--node": !0,
"xn--qxam": !0,
"xn--j6w193g": !0,
"xn--h2brj9c": !0,
"xn--mgbbh1a71e": !0,
"xn--fpcrj9c3d": !0,
"xn--gecrj9c": !0,
"xn--s9brj9c": !0,
"xn--45brj9c": !0,
"xn--xkc2dl3a5ee0h": !0,
"xn--mgba3a4f16a": !0,
"xn--mgba3a4fra": !0,
"xn--mgbtx2b": !0,
"xn--mgbayh7gpa": !0,
"xn--3e0b707e": !0,
"xn--80ao21a": !0,
"xn--fzc2c9e2c": !0,
"xn--xkc2al3hye2a": !0,
"xn--mgbc0a9azcg": !0,
"xn--d1alf": !0,
"xn--l1acc": !0,
"xn--mix891f": !0,
"xn--mix082f": !0,
"xn--mgbx4cd0ab": !0,
"xn--mgb9awbf": !0,
"xn--mgbai9azgqp6j": !0,
"xn--mgbai9a5eva00b": !0,
"xn--ygbi2ammx": !0,
"xn--90a3ac": !0,
"xn--o1ac.xn--90a3ac": !0,
"xn--c1avg.xn--90a3ac": !0,
"xn--90azh.xn--90a3ac": !0,
"xn--d1at.xn--90a3ac": !0,
"xn--o1ach.xn--90a3ac": !0,
"xn--80au.xn--90a3ac": !0,
"xn--p1ai": !0,
"xn--wgbl6a": !0,
"xn--mgberp4a5d4ar": !0,
"xn--mgberp4a5d4a87g": !0,
"xn--mgbqly7c0a67fbc": !0,
"xn--mgbqly7cvafr": !0,
"xn--mgbpl2fh": !0,
"xn--yfro4i67o": !0,
"xn--clchc0ea0b2g2a9gcd": !0,
"xn--ogbpf8fl": !0,
"xn--mgbtf8fl": !0,
"xn--o3cw4h": !0,
"xn--pgbs0dh": !0,
"xn--kpry57d": !0,
"xn--kprw13d": !0,
"xn--nnx388a": !0,
"xn--j1amh": !0,
"xn--mgb2ddes": !0,
xxx: !0,
"*.ye": !0,
"ac.za": !0,
"agrica.za": !0,
"alt.za": !0,
"co.za": !0,
"edu.za": !0,
"gov.za": !0,
"grondar.za": !0,
"law.za": !0,
"mil.za": !0,
"net.za": !0,
"ngo.za": !0,
"nis.za": !0,
"nom.za": !0,
"org.za": !0,
"school.za": !0,
"tm.za": !0,
"web.za": !0,
"*.zm": !0,
"*.zw": !0,
aaa: !0,
aarp: !0,
abarth: !0,
abb: !0,
abbott: !0,
abbvie: !0,
abc: !0,
able: !0,
abogado: !0,
abudhabi: !0,
academy: !0,
accenture: !0,
accountant: !0,
accountants: !0,
aco: !0,
active: !0,
actor: !0,
adac: !0,
ads: !0,
adult: !0,
aeg: !0,
aetna: !0,
afamilycompany: !0,
afl: !0,
africa: !0,
africamagic: !0,
agakhan: !0,
agency: !0,
aig: !0,
aigo: !0,
airbus: !0,
airforce: !0,
airtel: !0,
akdn: !0,
alfaromeo: !0,
alibaba: !0,
alipay: !0,
allfinanz: !0,
allstate: !0,
ally: !0,
alsace: !0,
alstom: !0,
americanexpress: !0,
americanfamily: !0,
amex: !0,
amfam: !0,
amica: !0,
amsterdam: !0,
analytics: !0,
android: !0,
anquan: !0,
anz: !0,
aol: !0,
apartments: !0,
app: !0,
apple: !0,
aquarelle: !0,
aramco: !0,
archi: !0,
army: !0,
arte: !0,
asda: !0,
associates: !0,
athleta: !0,
attorney: !0,
auction: !0,
audi: !0,
audible: !0,
audio: !0,
auspost: !0,
author: !0,
auto: !0,
autos: !0,
avianca: !0,
aws: !0,
axa: !0,
azure: !0,
baby: !0,
baidu: !0,
banamex: !0,
bananarepublic: !0,
band: !0,
bank: !0,
bar: !0,
barcelona: !0,
barclaycard: !0,
barclays: !0,
barefoot: !0,
bargains: !0,
basketball: !0,
bauhaus: !0,
bayern: !0,
bbc: !0,
bbt: !0,
bbva: !0,
bcg: !0,
bcn: !0,
beats: !0,
beer: !0,
bentley: !0,
berlin: !0,
best: !0,
bestbuy: !0,
bet: !0,
bharti: !0,
bible: !0,
bid: !0,
bike: !0,
bing: !0,
bingo: !0,
bio: !0,
black: !0,
blackfriday: !0,
blanco: !0,
blockbuster: !0,
blog: !0,
bloomberg: !0,
blue: !0,
bms: !0,
bmw: !0,
bnl: !0,
bnpparibas: !0,
boats: !0,
boehringer: !0,
bofa: !0,
bom: !0,
bond: !0,
boo: !0,
book: !0,
booking: !0,
boots: !0,
bosch: !0,
bostik: !0,
bot: !0,
boutique: !0,
bradesco: !0,
bridgestone: !0,
broadway: !0,
broker: !0,
brother: !0,
brussels: !0,
budapest: !0,
bugatti: !0,
build: !0,
builders: !0,
business: !0,
buy: !0,
buzz: !0,
bzh: !0,
cab: !0,
cafe: !0,
cal: !0,
call: !0,
calvinklein: !0,
camera: !0,
camp: !0,
cancerresearch: !0,
canon: !0,
capetown: !0,
capital: !0,
capitalone: !0,
car: !0,
caravan: !0,
cards: !0,
care: !0,
career: !0,
careers: !0,
cars: !0,
cartier: !0,
casa: !0,
"case": !0,
caseih: !0,
cash: !0,
casino: !0,
catering: !0,
cba: !0,
cbn: !0,
cbre: !0,
cbs: !0,
ceb: !0,
center: !0,
ceo: !0,
cern: !0,
cfa: !0,
cfd: !0,
chanel: !0,
channel: !0,
chase: !0,
chat: !0,
cheap: !0,
chintai: !0,
chloe: !0,
christmas: !0,
chrome: !0,
chrysler: !0,
church: !0,
cipriani: !0,
circle: !0,
cisco: !0,
citadel: !0,
citi: !0,
citic: !0,
city: !0,
cityeats: !0,
claims: !0,
cleaning: !0,
click: !0,
clinic: !0,
clothing: !0,
cloud: !0,
club: !0,
clubmed: !0,
coach: !0,
codes: !0,
coffee: !0,
college: !0,
cologne: !0,
comcast: !0,
commbank: !0,
community: !0,
company: !0,
computer: !0,
comsec: !0,
condos: !0,
construction: !0,
consulting: !0,
contact: !0,
contractors: !0,
cooking: !0,
cookingchannel: !0,
cool: !0,
corsica: !0,
country: !0,
coupon: !0,
coupons: !0,
courses: !0,
credit: !0,
creditcard: !0,
creditunion: !0,
cricket: !0,
crown: !0,
crs: !0,
cruises: !0,
csc: !0,
cuisinella: !0,
cymru: !0,
cyou: !0,
dabur: !0,
dad: !0,
dance: !0,
date: !0,
dating: !0,
datsun: !0,
day: !0,
dclk: !0,
dds: !0,
deal: !0,
dealer: !0,
deals: !0,
degree: !0,
delivery: !0,
dell: !0,
deloitte: !0,
delta: !0,
democrat: !0,
dental: !0,
dentist: !0,
desi: !0,
design: !0,
dev: !0,
dhl: !0,
diamonds: !0,
diet: !0,
digital: !0,
direct: !0,
directory: !0,
discount: !0,
discover: !0,
dish: !0,
dnp: !0,
docs: !0,
dodge: !0,
dog: !0,
doha: !0,
domains: !0,
doosan: !0,
dot: !0,
download: !0,
drive: !0,
dstv: !0,
dtv: !0,
dubai: !0,
duck: !0,
dunlop: !0,
duns: !0,
dupont: !0,
durban: !0,
dvag: !0,
dwg: !0,
earth: !0,
eat: !0,
edeka: !0,
education: !0,
email: !0,
emerck: !0,
emerson: !0,
energy: !0,
engineer: !0,
engineering: !0,
enterprises: !0,
epost: !0,
epson: !0,
equipment: !0,
ericsson: !0,
erni: !0,
esq: !0,
estate: !0,
esurance: !0,
etisalat: !0,
eurovision: !0,
eus: !0,
events: !0,
everbank: !0,
exchange: !0,
expert: !0,
exposed: !0,
express: !0,
extraspace: !0,
fage: !0,
fail: !0,
fairwinds: !0,
faith: !0,
family: !0,
fan: !0,
fans: !0,
farm: !0,
farmers: !0,
fashion: !0,
fast: !0,
fedex: !0,
feedback: !0,
ferrari: !0,
ferrero: !0,
fiat: !0,
fidelity: !0,
fido: !0,
film: !0,
"final": !0,
finance: !0,
financial: !0,
fire: !0,
firestone: !0,
firmdale: !0,
fish: !0,
fishing: !0,
fit: !0,
fitness: !0,
flickr: !0,
flights: !0,
flir: !0,
florist: !0,
flowers: !0,
flsmidth: !0,
fly: !0,
foo: !0,
foodnetwork: !0,
football: !0,
ford: !0,
forex: !0,
forsale: !0,
forum: !0,
foundation: !0,
fox: !0,
fresenius: !0,
frl: !0,
frogans: !0,
frontdoor: !0,
frontier: !0,
ftr: !0,
fujitsu: !0,
fujixerox: !0,
fund: !0,
furniture: !0,
futbol: !0,
fyi: !0,
gal: !0,
gallery: !0,
gallo: !0,
gallup: !0,
game: !0,
games: !0,
gap: !0,
garden: !0,
gbiz: !0,
gdn: !0,
gea: !0,
gent: !0,
genting: !0,
george: !0,
ggee: !0,
gift: !0,
gifts: !0,
gives: !0,
giving: !0,
glade: !0,
glass: !0,
gle: !0,
global: !0,
globo: !0,
gmail: !0,
gmo: !0,
gmx: !0,
godaddy: !0,
gold: !0,
goldpoint: !0,
golf: !0,
goo: !0,
goodhands: !0,
goodyear: !0,
goog: !0,
google: !0,
gop: !0,
got: !0,
gotv: !0,
grainger: !0,
graphics: !0,
gratis: !0,
green: !0,
gripe: !0,
group: !0,
guardian: !0,
gucci: !0,
guge: !0,
guide: !0,
guitars: !0,
guru: !0,
hamburg: !0,
hangout: !0,
haus: !0,
hbo: !0,
hdfc: !0,
hdfcbank: !0,
health: !0,
healthcare: !0,
help: !0,
helsinki: !0,
here: !0,
hermes: !0,
hgtv: !0,
hiphop: !0,
hisamitsu: !0,
hitachi: !0,
hiv: !0,
hkt: !0,
hockey: !0,
holdings: !0,
holiday: !0,
homedepot: !0,
homegoods: !0,
homes: !0,
homesense: !0,
honda: !0,
honeywell: !0,
horse: !0,
host: !0,
hosting: !0,
hot: !0,
hoteles: !0,
hotmail: !0,
house: !0,
how: !0,
hsbc: !0,
htc: !0,
hughes: !0,
hyatt: !0,
hyundai: !0,
ibm: !0,
icbc: !0,
ice: !0,
icu: !0,
ieee: !0,
ifm: !0,
iinet: !0,
ikano: !0,
imamat: !0,
imdb: !0,
immo: !0,
immobilien: !0,
industries: !0,
infiniti: !0,
ing: !0,
ink: !0,
institute: !0,
insurance: !0,
insure: !0,
intel: !0,
international: !0,
intuit: !0,
investments: !0,
ipiranga: !0,
irish: !0,
iselect: !0,
ismaili: !0,
ist: !0,
istanbul: !0,
itau: !0,
itv: !0,
iveco: !0,
iwc: !0,
jaguar: !0,
java: !0,
jcb: !0,
jcp: !0,
jeep: !0,
jetzt: !0,
jewelry: !0,
jio: !0,
jlc: !0,
jll: !0,
jmp: !0,
jnj: !0,
joburg: !0,
jot: !0,
joy: !0,
jpmorgan: !0,
jprs: !0,
juegos: !0,
juniper: !0,
kaufen: !0,
kddi: !0,
kerryhotels: !0,
kerrylogistics: !0,
kerryproperties: !0,
kfh: !0,
kia: !0,
kim: !0,
kinder: !0,
kindle: !0,
kitchen: !0,
kiwi: !0,
koeln: !0,
komatsu: !0,
kosher: !0,
kpmg: !0,
kpn: !0,
krd: !0,
kred: !0,
kuokgroup: !0,
kyknet: !0,
kyoto: !0,
lacaixa: !0,
ladbrokes: !0,
lamborghini: !0,
lancaster: !0,
lancia: !0,
lancome: !0,
land: !0,
landrover: !0,
lanxess: !0,
lasalle: !0,
lat: !0,
latino: !0,
latrobe: !0,
law: !0,
lawyer: !0,
lds: !0,
lease: !0,
leclerc: !0,
lefrak: !0,
legal: !0,
lego: !0,
lexus: !0,
lgbt: !0,
liaison: !0,
lidl: !0,
life: !0,
lifeinsurance: !0,
lifestyle: !0,
lighting: !0,
like: !0,
lilly: !0,
limited: !0,
limo: !0,
lincoln: !0,
linde: !0,
link: !0,
lipsy: !0,
live: !0,
living: !0,
lixil: !0,
loan: !0,
loans: !0,
locker: !0,
locus: !0,
loft: !0,
lol: !0,
london: !0,
lotte: !0,
lotto: !0,
love: !0,
lpl: !0,
lplfinancial: !0,
ltd: !0,
ltda: !0,
lundbeck: !0,
lupin: !0,
luxe: !0,
luxury: !0,
macys: !0,
madrid: !0,
maif: !0,
maison: !0,
makeup: !0,
man: !0,
management: !0,
mango: !0,
market: !0,
marketing: !0,
markets: !0,
marriott: !0,
marshalls: !0,
maserati: !0,
mattel: !0,
mba: !0,
mcd: !0,
mcdonalds: !0,
mckinsey: !0,
med: !0,
media: !0,
meet: !0,
melbourne: !0,
meme: !0,
memorial: !0,
men: !0,
menu: !0,
meo: !0,
metlife: !0,
miami: !0,
microsoft: !0,
mini: !0,
mint: !0,
mit: !0,
mitsubishi: !0,
mlb: !0,
mls: !0,
mma: !0,
mnet: !0,
mobily: !0,
moda: !0,
moe: !0,
moi: !0,
mom: !0,
monash: !0,
money: !0,
monster: !0,
montblanc: !0,
mopar: !0,
mormon: !0,
mortgage: !0,
moscow: !0,
moto: !0,
motorcycles: !0,
mov: !0,
movie: !0,
movistar: !0,
msd: !0,
mtn: !0,
mtpc: !0,
mtr: !0,
multichoice: !0,
mutual: !0,
mutuelle: !0,
mzansimagic: !0,
nab: !0,
nadex: !0,
nagoya: !0,
naspers: !0,
nationwide: !0,
natura: !0,
navy: !0,
nba: !0,
nec: !0,
netbank: !0,
netflix: !0,
network: !0,
neustar: !0,
"new": !0,
newholland: !0,
news: !0,
next: !0,
nextdirect: !0,
nexus: !0,
nfl: !0,
ngo: !0,
nhk: !0,
nico: !0,
nike: !0,
nikon: !0,
ninja: !0,
nissan: !0,
nokia: !0,
northwesternmutual: !0,
norton: !0,
now: !0,
nowruz: !0,
nowtv: !0,
nra: !0,
nrw: !0,
ntt: !0,
nyc: !0,
obi: !0,
observer: !0,
off: !0,
office: !0,
okinawa: !0,
olayan: !0,
olayangroup: !0,
oldnavy: !0,
ollo: !0,
omega: !0,
one: !0,
ong: !0,
onl: !0,
online: !0,
onyourside: !0,
ooo: !0,
open: !0,
oracle: !0,
orange: !0,
organic: !0,
orientexpress: !0,
osaka: !0,
otsuka: !0,
ott: !0,
ovh: !0,
page: !0,
pamperedchef: !0,
panasonic: !0,
panerai: !0,
paris: !0,
pars: !0,
partners: !0,
parts: !0,
party: !0,
passagens: !0,
pay: !0,
payu: !0,
pccw: !0,
pet: !0,
pfizer: !0,
pharmacy: !0,
philips: !0,
photo: !0,
photography: !0,
photos: !0,
physio: !0,
piaget: !0,
pics: !0,
pictet: !0,
pictures: !0,
pid: !0,
pin: !0,
ping: !0,
pink: !0,
pioneer: !0,
pizza: !0,
place: !0,
play: !0,
playstation: !0,
plumbing: !0,
plus: !0,
pnc: !0,
pohl: !0,
poker: !0,
politie: !0,
porn: !0,
pramerica: !0,
praxi: !0,
press: !0,
prime: !0,
prod: !0,
productions: !0,
prof: !0,
progressive: !0,
promo: !0,
properties: !0,
property: !0,
protection: !0,
pru: !0,
prudential: !0,
pub: !0,
qpon: !0,
quebec: !0,
quest: !0,
qvc: !0,
racing: !0,
raid: !0,
read: !0,
realestate: !0,
realtor: !0,
realty: !0,
recipes: !0,
red: !0,
redstone: !0,
redumbrella: !0,
rehab: !0,
reise: !0,
reisen: !0,
reit: !0,
reliance: !0,
ren: !0,
rent: !0,
rentals: !0,
repair: !0,
report: !0,
republican: !0,
rest: !0,
restaurant: !0,
review: !0,
reviews: !0,
rexroth: !0,
rich: !0,
richardli: !0,
ricoh: !0,
rightathome: !0,
ril: !0,
rio: !0,
rip: !0,
rocher: !0,
rocks: !0,
rodeo: !0,
rogers: !0,
room: !0,
rsvp: !0,
ruhr: !0,
run: !0,
rwe: !0,
ryukyu: !0,
saarland: !0,
safe: !0,
safety: !0,
sakura: !0,
sale: !0,
salon: !0,
samsclub: !0,
samsung: !0,
sandvik: !0,
sandvikcoromant: !0,
sanofi: !0,
sap: !0,
sapo: !0,
sarl: !0,
sas: !0,
save: !0,
saxo: !0,
sbi: !0,
sbs: !0,
sca: !0,
scb: !0,
schaeffler: !0,
schmidt: !0,
scholarships: !0,
school: !0,
schule: !0,
schwarz: !0,
science: !0,
scjohnson: !0,
scor: !0,
scot: !0,
seat: !0,
secure: !0,
security: !0,
seek: !0,
sener: !0,
services: !0,
ses: !0,
seven: !0,
sew: !0,
sex: !0,
sexy: !0,
sfr: !0,
shangrila: !0,
sharp: !0,
shaw: !0,
shell: !0,
shia: !0,
shiksha: !0,
shoes: !0,
shouji: !0,
show: !0,
showtime: !0,
shriram: !0,
silk: !0,
sina: !0,
singles: !0,
site: !0,
ski: !0,
skin: !0,
sky: !0,
skype: !0,
sling: !0,
smart: !0,
smile: !0,
sncf: !0,
soccer: !0,
social: !0,
softbank: !0,
software: !0,
sohu: !0,
solar: !0,
solutions: !0,
song: !0,
sony: !0,
soy: !0,
space: !0,
spiegel: !0,
spot: !0,
spreadbetting: !0,
srl: !0,
srt: !0,
stada: !0,
staples: !0,
star: !0,
starhub: !0,
statebank: !0,
statefarm: !0,
statoil: !0,
stc: !0,
stcgroup: !0,
stockholm: !0,
storage: !0,
store: !0,
studio: !0,
study: !0,
style: !0,
sucks: !0,
supersport: !0,
supplies: !0,
supply: !0,
support: !0,
surf: !0,
surgery: !0,
suzuki: !0,
swatch: !0,
swiftcover: !0,
swiss: !0,
sydney: !0,
symantec: !0,
systems: !0,
tab: !0,
taipei: !0,
talk: !0,
taobao: !0,
target: !0,
tatamotors: !0,
tatar: !0,
tattoo: !0,
tax: !0,
taxi: !0,
tci: !0,
tdk: !0,
team: !0,
tech: !0,
technology: !0,
telecity: !0,
telefonica: !0,
temasek: !0,
tennis: !0,
teva: !0,
thd: !0,
theater: !0,
theatre: !0,
theguardian: !0,
tiaa: !0,
tickets: !0,
tienda: !0,
tiffany: !0,
tips: !0,
tires: !0,
tirol: !0,
tjmaxx: !0,
tjx: !0,
tkmaxx: !0,
tmall: !0,
today: !0,
tokyo: !0,
tools: !0,
top: !0,
toray: !0,
toshiba: !0,
total: !0,
tours: !0,
town: !0,
toyota: !0,
toys: !0,
trade: !0,
trading: !0,
training: !0,
travelchannel: !0,
travelers: !0,
travelersinsurance: !0,
trust: !0,
trv: !0,
tube: !0,
tui: !0,
tunes: !0,
tushu: !0,
tvs: !0,
ubank: !0,
ubs: !0,
uconnect: !0,
university: !0,
uno: !0,
uol: !0,
ups: !0,
vacations: !0,
vana: !0,
vanguard: !0,
vegas: !0,
ventures: !0,
verisign: !0,
versicherung: !0,
vet: !0,
viajes: !0,
video: !0,
vig: !0,
viking: !0,
villas: !0,
vin: !0,
vip: !0,
virgin: !0,
visa: !0,
vision: !0,
vista: !0,
vistaprint: !0,
viva: !0,
vivo: !0,
vlaanderen: !0,
vodka: !0,
volkswagen: !0,
vote: !0,
voting: !0,
voto: !0,
voyage: !0,
vuelos: !0,
wales: !0,
walmart: !0,
walter: !0,
wang: !0,
wanggou: !0,
warman: !0,
watch: !0,
watches: !0,
weather: !0,
weatherchannel: !0,
webcam: !0,
weber: !0,
website: !0,
wed: !0,
wedding: !0,
weibo: !0,
weir: !0,
whoswho: !0,
wien: !0,
wiki: !0,
williamhill: !0,
win: !0,
windows: !0,
wine: !0,
winners: !0,
wme: !0,
wolterskluwer: !0,
woodside: !0,
work: !0,
works: !0,
world: !0,
wtc: !0,
wtf: !0,
xbox: !0,
xerox: !0,
xfinity: !0,
xihuan: !0,
xin: !0,
"xn--11b4c3d": !0,
"xn--1ck2e1b": !0,
"xn--1qqw23a": !0,
"xn--30rr7y": !0,
"xn--3bst00m": !0,
"xn--3ds443g": !0,
"xn--3oq18vl8pn36a": !0,
"xn--3pxu8k": !0,
"xn--42c2d9a": !0,
"xn--45q11c": !0,
"xn--4gbrim": !0,
"xn--4gq48lf9j": !0,
"xn--55qw42g": !0,
"xn--55qx5d": !0,
"xn--5su34j936bgsg": !0,
"xn--5tzm5g": !0,
"xn--6frz82g": !0,
"xn--6qq986b3xl": !0,
"xn--80adxhks": !0,
"xn--80asehdb": !0,
"xn--80aswg": !0,
"xn--8y0a063a": !0,
"xn--9dbq2a": !0,
"xn--9et52u": !0,
"xn--9krt00a": !0,
"xn--b4w605ferd": !0,
"xn--bck1b9a5dre4c": !0,
"xn--c1avg": !0,
"xn--c2br7g": !0,
"xn--cck2b3b": !0,
"xn--cg4bki": !0,
"xn--czr694b": !0,
"xn--czrs0t": !0,
"xn--czru2d": !0,
"xn--d1acj3b": !0,
"xn--eckvdtc9d": !0,
"xn--efvy88h": !0,
"xn--estv75g": !0,
"xn--fct429k": !0,
"xn--fhbei": !0,
"xn--fiq228c5hs": !0,
"xn--fiq64b": !0,
"xn--fjq720a": !0,
"xn--flw351e": !0,
"xn--fzys8d69uvgm": !0,
"xn--g2xx48c": !0,
"xn--gckr3f0f": !0,
"xn--hxt814e": !0,
"xn--i1b6b1a6a2e": !0,
"xn--imr513n": !0,
"xn--io0a7i": !0,
"xn--j1aef": !0,
"xn--jlq61u9w7b": !0,
"xn--jvr189m": !0,
"xn--kcrx77d1x4a": !0,
"xn--kpu716f": !0,
"xn--kput3i": !0,
"xn--mgba3a3ejt": !0,
"xn--mgba7c0bbn0a": !0,
"xn--mgbaakc7dvf": !0,
"xn--mgbab2bd": !0,
"xn--mgbb9fbpob": !0,
"xn--mgbca7dzdo": !0,
"xn--mgbt3dhd": !0,
"xn--mk1bu44c": !0,
"xn--mxtq1m": !0,
"xn--ngbc5azd": !0,
"xn--ngbe9e0a": !0,
"xn--nqv7f": !0,
"xn--nqv7fs00ema": !0,
"xn--nyqy26a": !0,
"xn--p1acf": !0,
"xn--pbt977c": !0,
"xn--pssy2u": !0,
"xn--q9jyb4c": !0,
"xn--qcka1pmc": !0,
"xn--rhqv96g": !0,
"xn--rovu88b": !0,
"xn--ses554g": !0,
"xn--t60b56a": !0,
"xn--tckwe": !0,
"xn--unup4y": !0,
"xn--vermgensberater-ctb": !0,
"xn--vermgensberatung-pwb": !0,
"xn--vhquv": !0,
"xn--vuq861b": !0,
"xn--w4r85el8fhu5dnra": !0,
"xn--w4rs40l": !0,
"xn--xhq521b": !0,
"xn--zfr164b": !0,
xperia: !0,
xyz: !0,
yachts: !0,
yahoo: !0,
yamaxun: !0,
yandex: !0,
yodobashi: !0,
yoga: !0,
yokohama: !0,
you: !0,
youtube: !0,
yun: !0,
zappos: !0,
zara: !0,
zero: !0,
zip: !0,
zippo: !0,
zone: !0,
zuerich: !0,
"cloudfront.net": !0,
"ap-northeast-1.compute.amazonaws.com": !0,
"ap-southeast-1.compute.amazonaws.com": !0,
"ap-southeast-2.compute.amazonaws.com": !0,
"cn-north-1.compute.amazonaws.cn": !0,
"compute.amazonaws.cn": !0,
"compute.amazonaws.com": !0,
"compute-1.amazonaws.com": !0,
"eu-west-1.compute.amazonaws.com": !0,
"eu-central-1.compute.amazonaws.com": !0,
"sa-east-1.compute.amazonaws.com": !0,
"us-east-1.amazonaws.com": !0,
"us-gov-west-1.compute.amazonaws.com": !0,
"us-west-1.compute.amazonaws.com": !0,
"us-west-2.compute.amazonaws.com": !0,
"z-1.compute-1.amazonaws.com": !0,
"z-2.compute-1.amazonaws.com": !0,
"elasticbeanstalk.com": !0,
"elb.amazonaws.com": !0,
"s3.amazonaws.com": !0,
"s3-ap-northeast-1.amazonaws.com": !0,
"s3-ap-southeast-1.amazonaws.com": !0,
"s3-ap-southeast-2.amazonaws.com": !0,
"s3-external-1.amazonaws.com": !0,
"s3-external-2.amazonaws.com": !0,
"s3-fips-us-gov-west-1.amazonaws.com": !0,
"s3-eu-central-1.amazonaws.com": !0,
"s3-eu-west-1.amazonaws.com": !0,
"s3-sa-east-1.amazonaws.com": !0,
"s3-us-gov-west-1.amazonaws.com": !0,
"s3-us-west-1.amazonaws.com": !0,
"s3-us-west-2.amazonaws.com": !0,
"s3.cn-north-1.amazonaws.com.cn": !0,
"s3.eu-central-1.amazonaws.com": !0,
"betainabox.com": !0,
"ae.org": !0,
"ar.com": !0,
"br.com": !0,
"cn.com": !0,
"com.de": !0,
"com.se": !0,
"de.com": !0,
"eu.com": !0,
"gb.com": !0,
"gb.net": !0,
"hu.com": !0,
"hu.net": !0,
"jp.net": !0,
"jpn.com": !0,
"kr.com": !0,
"mex.com": !0,
"no.com": !0,
"qc.com": !0,
"ru.com": !0,
"sa.com": !0,
"se.com": !0,
"se.net": !0,
"uk.com": !0,
"uk.net": !0,
"us.com": !0,
"uy.com": !0,
"za.bz": !0,
"za.com": !0,
"africa.com": !0,
"gr.com": !0,
"in.net": !0,
"us.org": !0,
"co.com": !0,
"c.la": !0,
"cloudcontrolled.com": !0,
"cloudcontrolapp.com": !0,
"co.ca": !0,
"c.cdn77.org": !0,
"cdn77-ssl.net": !0,
"r.cdn77.net": !0,
"rsc.cdn77.org": !0,
"ssl.origin.cdn77-secure.org": !0,
"co.nl": !0,
"co.no": !0,
"*.platform.sh": !0,
"cupcake.is": !0,
"dreamhosters.com": !0,
"duckdns.org": !0,
"dyndns-at-home.com": !0,
"dyndns-at-work.com": !0,
"dyndns-blog.com": !0,
"dyndns-free.com": !0,
"dyndns-home.com": !0,
"dyndns-ip.com": !0,
"dyndns-mail.com": !0,
"dyndns-office.com": !0,
"dyndns-pics.com": !0,
"dyndns-remote.com": !0,
"dyndns-server.com": !0,
"dyndns-web.com": !0,
"dyndns-wiki.com": !0,
"dyndns-work.com": !0,
"dyndns.biz": !0,
"dyndns.info": !0,
"dyndns.org": !0,
"dyndns.tv": !0,
"at-band-camp.net": !0,
"ath.cx": !0,
"barrel-of-knowledge.info": !0,
"barrell-of-knowledge.info": !0,
"better-than.tv": !0,
"blogdns.com": !0,
"blogdns.net": !0,
"blogdns.org": !0,
"blogsite.org": !0,
"boldlygoingnowhere.org": !0,
"broke-it.net": !0,
"buyshouses.net": !0,
"cechire.com": !0,
"dnsalias.com": !0,
"dnsalias.net": !0,
"dnsalias.org": !0,
"dnsdojo.com": !0,
"dnsdojo.net": !0,
"dnsdojo.org": !0,
"does-it.net": !0,
"doesntexist.com": !0,
"doesntexist.org": !0,
"dontexist.com": !0,
"dontexist.net": !0,
"dontexist.org": !0,
"doomdns.com": !0,
"doomdns.org": !0,
"dvrdns.org": !0,
"dyn-o-saur.com": !0,
"dynalias.com": !0,
"dynalias.net": !0,
"dynalias.org": !0,
"dynathome.net": !0,
"dyndns.ws": !0,
"endofinternet.net": !0,
"endofinternet.org": !0,
"endoftheinternet.org": !0,
"est-a-la-maison.com": !0,
"est-a-la-masion.com": !0,
"est-le-patron.com": !0,
"est-mon-blogueur.com": !0,
"for-better.biz": !0,
"for-more.biz": !0,
"for-our.info": !0,
"for-some.biz": !0,
"for-the.biz": !0,
"forgot.her.name": !0,
"forgot.his.name": !0,
"from-ak.com": !0,
"from-al.com": !0,
"from-ar.com": !0,
"from-az.net": !0,
"from-ca.com": !0,
"from-co.net": !0,
"from-ct.com": !0,
"from-dc.com": !0,
"from-de.com": !0,
"from-fl.com": !0,
"from-ga.com": !0,
"from-hi.com": !0,
"from-ia.com": !0,
"from-id.com": !0,
"from-il.com": !0,
"from-in.com": !0,
"from-ks.com": !0,
"from-ky.com": !0,
"from-la.net": !0,
"from-ma.com": !0,
"from-md.com": !0,
"from-me.org": !0,
"from-mi.com": !0,
"from-mn.com": !0,
"from-mo.com": !0,
"from-ms.com": !0,
"from-mt.com": !0,
"from-nc.com": !0,
"from-nd.com": !0,
"from-ne.com": !0,
"from-nh.com": !0,
"from-nj.com": !0,
"from-nm.com": !0,
"from-nv.com": !0,
"from-ny.net": !0,
"from-oh.com": !0,
"from-ok.com": !0,
"from-or.com": !0,
"from-pa.com": !0,
"from-pr.com": !0,
"from-ri.com": !0,
"from-sc.com": !0,
"from-sd.com": !0,
"from-tn.com": !0,
"from-tx.com": !0,
"from-ut.com": !0,
"from-va.com": !0,
"from-vt.com": !0,
"from-wa.com": !0,
"from-wi.com": !0,
"from-wv.com": !0,
"from-wy.com": !0,
"ftpaccess.cc": !0,
"fuettertdasnetz.de": !0,
"game-host.org": !0,
"game-server.cc": !0,
"getmyip.com": !0,
"gets-it.net": !0,
"go.dyndns.org": !0,
"gotdns.com": !0,
"gotdns.org": !0,
"groks-the.info": !0,
"groks-this.info": !0,
"ham-radio-op.net": !0,
"here-for-more.info": !0,
"hobby-site.com": !0,
"hobby-site.org": !0,
"home.dyndns.org": !0,
"homedns.org": !0,
"homeftp.net": !0,
"homeftp.org": !0,
"homeip.net": !0,
"homelinux.com": !0,
"homelinux.net": !0,
"homelinux.org": !0,
"homeunix.com": !0,
"homeunix.net": !0,
"homeunix.org": !0,
"iamallama.com": !0,
"in-the-band.net": !0,
"is-a-anarchist.com": !0,
"is-a-blogger.com": !0,
"is-a-bookkeeper.com": !0,
"is-a-bruinsfan.org": !0,
"is-a-bulls-fan.com": !0,
"is-a-candidate.org": !0,
"is-a-caterer.com": !0,
"is-a-celticsfan.org": !0,
"is-a-chef.com": !0,
"is-a-chef.net": !0,
"is-a-chef.org": !0,
"is-a-conservative.com": !0,
"is-a-cpa.com": !0,
"is-a-cubicle-slave.com": !0,
"is-a-democrat.com": !0,
"is-a-designer.com": !0,
"is-a-doctor.com": !0,
"is-a-financialadvisor.com": !0,
"is-a-geek.com": !0,
"is-a-geek.net": !0,
"is-a-geek.org": !0,
"is-a-green.com": !0,
"is-a-guru.com": !0,
"is-a-hard-worker.com": !0,
"is-a-hunter.com": !0,
"is-a-knight.org": !0,
"is-a-landscaper.com": !0,
"is-a-lawyer.com": !0,
"is-a-liberal.com": !0,
"is-a-libertarian.com": !0,
"is-a-linux-user.org": !0,
"is-a-llama.com": !0,
"is-a-musician.com": !0,
"is-a-nascarfan.com": !0,
"is-a-nurse.com": !0,
"is-a-painter.com": !0,
"is-a-patsfan.org": !0,
"is-a-personaltrainer.com": !0,
"is-a-photographer.com": !0,
"is-a-player.com": !0,
"is-a-republican.com": !0,
"is-a-rockstar.com": !0,
"is-a-socialist.com": !0,
"is-a-soxfan.org": !0,
"is-a-student.com": !0,
"is-a-teacher.com": !0,
"is-a-techie.com": !0,
"is-a-therapist.com": !0,
"is-an-accountant.com": !0,
"is-an-actor.com": !0,
"is-an-actress.com": !0,
"is-an-anarchist.com": !0,
"is-an-artist.com": !0,
"is-an-engineer.com": !0,
"is-an-entertainer.com": !0,
"is-by.us": !0,
"is-certified.com": !0,
"is-found.org": !0,
"is-gone.com": !0,
"is-into-anime.com": !0,
"is-into-cars.com": !0,
"is-into-cartoons.com": !0,
"is-into-games.com": !0,
"is-leet.com": !0,
"is-lost.org": !0,
"is-not-certified.com": !0,
"is-saved.org": !0,
"is-slick.com": !0,
"is-uberleet.com": !0,
"is-very-bad.org": !0,
"is-very-evil.org": !0,
"is-very-good.org": !0,
"is-very-nice.org": !0,
"is-very-sweet.org": !0,
"is-with-theband.com": !0,
"isa-geek.com": !0,
"isa-geek.net": !0,
"isa-geek.org": !0,
"isa-hockeynut.com": !0,
"issmarterthanyou.com": !0,
"isteingeek.de": !0,
"istmein.de": !0,
"kicks-ass.net": !0,
"kicks-ass.org": !0,
"knowsitall.info": !0,
"land-4-sale.us": !0,
"lebtimnetz.de": !0,
"leitungsen.de": !0,
"likes-pie.com": !0,
"likescandy.com": !0,
"merseine.nu": !0,
"mine.nu": !0,
"misconfused.org": !0,
"mypets.ws": !0,
"myphotos.cc": !0,
"neat-url.com": !0,
"office-on-the.net": !0,
"on-the-web.tv": !0,
"podzone.net": !0,
"podzone.org": !0,
"readmyblog.org": !0,
"saves-the-whales.com": !0,
"scrapper-site.net": !0,
"scrapping.cc": !0,
"selfip.biz": !0,
"selfip.com": !0,
"selfip.info": !0,
"selfip.net": !0,
"selfip.org": !0,
"sells-for-less.com": !0,
"sells-for-u.com": !0,
"sells-it.net": !0,
"sellsyourhome.org": !0,
"servebbs.com": !0,
"servebbs.net": !0,
"servebbs.org": !0,
"serveftp.net": !0,
"serveftp.org": !0,
"servegame.org": !0,
"shacknet.nu": !0,
"simple-url.com": !0,
"space-to-rent.com": !0,
"stuff-4-sale.org": !0,
"stuff-4-sale.us": !0,
"teaches-yoga.com": !0,
"thruhere.net": !0,
"traeumtgerade.de": !0,
"webhop.biz": !0,
"webhop.info": !0,
"webhop.net": !0,
"webhop.org": !0,
"worse-than.tv": !0,
"writesthisblog.com": !0,
"eu.org": !0,
"al.eu.org": !0,
"asso.eu.org": !0,
"at.eu.org": !0,
"au.eu.org": !0,
"be.eu.org": !0,
"bg.eu.org": !0,
"ca.eu.org": !0,
"cd.eu.org": !0,
"ch.eu.org": !0,
"cn.eu.org": !0,
"cy.eu.org": !0,
"cz.eu.org": !0,
"de.eu.org": !0,
"dk.eu.org": !0,
"edu.eu.org": !0,
"ee.eu.org": !0,
"es.eu.org": !0,
"fi.eu.org": !0,
"fr.eu.org": !0,
"gr.eu.org": !0,
"hr.eu.org": !0,
"hu.eu.org": !0,
"ie.eu.org": !0,
"il.eu.org": !0,
"in.eu.org": !0,
"int.eu.org": !0,
"is.eu.org": !0,
"it.eu.org": !0,
"jp.eu.org": !0,
"kr.eu.org": !0,
"lt.eu.org": !0,
"lu.eu.org": !0,
"lv.eu.org": !0,
"mc.eu.org": !0,
"me.eu.org": !0,
"mk.eu.org": !0,
"mt.eu.org": !0,
"my.eu.org": !0,
"net.eu.org": !0,
"ng.eu.org": !0,
"nl.eu.org": !0,
"no.eu.org": !0,
"nz.eu.org": !0,
"paris.eu.org": !0,
"pl.eu.org": !0,
"pt.eu.org": !0,
"q-a.eu.org": !0,
"ro.eu.org": !0,
"ru.eu.org": !0,
"se.eu.org": !0,
"si.eu.org": !0,
"sk.eu.org": !0,
"tr.eu.org": !0,
"uk.eu.org": !0,
"us.eu.org": !0,
"a.ssl.fastly.net": !0,
"b.ssl.fastly.net": !0,
"global.ssl.fastly.net": !0,
"a.prod.fastly.net": !0,
"global.prod.fastly.net": !0,
"firebaseapp.com": !0,
"flynnhub.com": !0,
"service.gov.uk": !0,
"github.io": !0,
"githubusercontent.com": !0,
"ro.com": !0,
"appspot.com": !0,
"blogspot.ae": !0,
"blogspot.al": !0,
"blogspot.am": !0,
"blogspot.ba": !0,
"blogspot.be": !0,
"blogspot.bg": !0,
"blogspot.bj": !0,
"blogspot.ca": !0,
"blogspot.cf": !0,
"blogspot.ch": !0,
"blogspot.cl": !0,
"blogspot.co.at": !0,
"blogspot.co.id": !0,
"blogspot.co.il": !0,
"blogspot.co.ke": !0,
"blogspot.co.nz": !0,
"blogspot.co.uk": !0,
"blogspot.co.za": !0,
"blogspot.com": !0,
"blogspot.com.ar": !0,
"blogspot.com.au": !0,
"blogspot.com.br": !0,
"blogspot.com.by": !0,
"blogspot.com.co": !0,
"blogspot.com.cy": !0,
"blogspot.com.ee": !0,
"blogspot.com.eg": !0,
"blogspot.com.es": !0,
"blogspot.com.mt": !0,
"blogspot.com.ng": !0,
"blogspot.com.tr": !0,
"blogspot.com.uy": !0,
"blogspot.cv": !0,
"blogspot.cz": !0,
"blogspot.de": !0,
"blogspot.dk": !0,
"blogspot.fi": !0,
"blogspot.fr": !0,
"blogspot.gr": !0,
"blogspot.hk": !0,
"blogspot.hr": !0,
"blogspot.hu": !0,
"blogspot.ie": !0,
"blogspot.in": !0,
"blogspot.is": !0,
"blogspot.it": !0,
"blogspot.jp": !0,
"blogspot.kr": !0,
"blogspot.li": !0,
"blogspot.lt": !0,
"blogspot.lu": !0,
"blogspot.md": !0,
"blogspot.mk": !0,
"blogspot.mr": !0,
"blogspot.mx": !0,
"blogspot.my": !0,
"blogspot.nl": !0,
"blogspot.no": !0,
"blogspot.pe": !0,
"blogspot.pt": !0,
"blogspot.qa": !0,
"blogspot.re": !0,
"blogspot.ro": !0,
"blogspot.rs": !0,
"blogspot.ru": !0,
"blogspot.se": !0,
"blogspot.sg": !0,
"blogspot.si": !0,
"blogspot.sk": !0,
"blogspot.sn": !0,
"blogspot.td": !0,
"blogspot.tw": !0,
"blogspot.ug": !0,
"blogspot.vn": !0,
"codespot.com": !0,
"googleapis.com": !0,
"googlecode.com": !0,
"pagespeedmobilizer.com": !0,
"withgoogle.com": !0,
"withyoutube.com": !0,
"herokuapp.com": !0,
"herokussl.com": !0,
"iki.fi": !0,
"biz.at": !0,
"info.at": !0,
"co.pl": !0,
"azurewebsites.net": !0,
"azure-mobile.net": !0,
"cloudapp.net": !0,
"bmoattachments.org": !0,
"4u.com": !0,
"nfshost.com": !0,
"nyc.mn": !0,
"nid.io": !0,
"operaunite.com": !0,
"outsystemscloud.com": !0,
"art.pl": !0,
"gliwice.pl": !0,
"krakow.pl": !0,
"poznan.pl": !0,
"wroc.pl": !0,
"zakopane.pl": !0,
"pantheon.io": !0,
"gotpantheon.com": !0,
"priv.at": !0,
"qa2.com": !0,
"rhcloud.com": !0,
"sandcats.io": !0,
"biz.ua": !0,
"co.ua": !0,
"pp.ua": !0,
"sinaapp.com": !0,
"vipsinaapp.com": !0,
"1kapp.com": !0,
"gda.pl": !0,
"gdansk.pl": !0,
"gdynia.pl": !0,
"med.pl": !0,
"sopot.pl": !0,
"hk.com": !0,
"hk.org": !0,
"ltd.hk": !0,
"inc.hk": !0,
"yolasite.com": !0,
"za.net": !0,
"za.org": !0
})
}, {
punycode: 147
}],
25: [function(e, t, a) {
"use strict";
function o() {}
a.Store = o, o.prototype.synchronous = !1, o.prototype.findCookie = function(e, t, a, o) {
throw new Error("findCookie is not implemented")
}, o.prototype.findCookies = function(e, t, a) {
throw new Error("findCookies is not implemented")
}, o.prototype.putCookie = function(e, t) {
throw new Error("putCookie is not implemented")
}, o.prototype.updateCookie = function(e, t, a) {
throw new Error("updateCookie is not implemented")
}, o.prototype.removeCookie = function(e, t, a, o) {
throw new Error("removeCookie is not implemented")
}, o.prototype.removeCookies = function(e, t, a) {
throw new Error("removeCookies is not implemented")
}, o.prototype.getAllCookies = function(e) {
throw new Error("getAllCookies is not implemented (therefore jar cannot be serialized)")
}
}, {}],
26: [function(e, t, a) {
var o, n, bind = function(e, t) {
return function() {
return e.apply(t, arguments)
}
};
n = 90, t.exports = o = function() {
function e() {
this.replay = bind(this.replay, this), this._onConfirmationActionMessage = bind(this._onConfirmationActionMessage, this), this._currentReplays = {}, honey.messages.addListener("confirmation:action", this._onConfirmationActionMessage)
}
return e.prototype._onConfirmationActionMessage = function(e, t, a) {
var o;
switch (null != t ? t.action : void 0) {
case "replay":
return this.replay(null != (o = t.data) ? o.url : void 0);
default:
throw new InvalidParametersError("Invalid action type: " + (null != t ? t.action : void 0))
}
}, e.prototype.replay = function(e) {
var t;
return t = $('<iframe src="' + e + '" />').appendTo("body"), setTimeout(function(e) {
return function() {
return t.remove()
}
}(this), 1e3 * n)
}, e
}()
}, {}],
27: [function(e, t, a) {
var o, bind = function(e, t) {
return function() {
return e.apply(t, arguments)
}
};
t.exports = o = function() {
function e() {
this.getAllForDomain = bind(this.getAllForDomain, this)
}
return e.prototype.getAllForDomain = function(e) {
return honey._native.cookies.getAllForDomain(e)
}, e
}()
}, {}],
28: [function(e, t, a) {
var o, n, i, r, u, s, bind = function(e, t) {
return function() {
return e.apply(t, arguments)
}
};
s = e("url"), o = e("../../../data/bldata"), u = 1800, n = 21600, r = 259200, t.exports = i = function() {
function e() {
this._checkForUpdates = bind(this._checkForUpdates, this), this._updateBlData = bind(this._updateBlData, this), this._onCheckMessage = bind(this._onCheckMessage, this), this.check = bind(this.check, this), honey.messages.addListener("domainbl:check", this._onCheckMessage), this._storage = honey.storage.local.prefixed("domainBl"), this._urlRegexes = [], this._domainRegexes = [], this.ready = Promise.resolve().then(function(e) {
return function() {
if ("development" === honey.environment) throw new NotFoundError;
return e._storage.get("bldata")
}
}(this))["catch"](NotFoundError, function(e) {
return function() {
return o
}
}(this)).then(function(e) {
return function(t) {
return e._updateBlData(t || o)
}
}(this))["catch"](function(e) {
return function(t) {
return e._storage.del("bldata")["catch"](function() {}), honey.logger.debug("Failed to initialise blacklisted domains data: " + ((null != t ? t.message : void 0) || "unknown error"), t)
}
}(this))["finally"](function(e) {
return function() {
return "production" === honey.environment && e._checkForUpdates(), null
}
}(this))
}
return e.prototype.check = function(e) {
return Promise.resolve().then(function(t) {
return function() {
var a, o, n, i, r, u, c;
if (e = function() {
try {
return s.parse(e)
} catch (t) {}
}(), null != e ? e.href : void 0) {
if (e.hostname)
for (r = t._domainRegexes, a = 0, n = r.length; n > a; a++)
if (c = r[a], e.hostname.match(c)) throw new DomainBlacklistedError;
for (u = t._urlRegexes, o = 0, i = u.length; i > o; o++)
if (c = u[o], e.href.match(c)) throw new DomainBlacklistedError;
return !0
}
}
}(this))
}, e.prototype._onCheckMessage = function(e, t, a) {
return this.check(null != t ? t.url : void 0)
}, e.prototype._updateBlData = function(e) {
var t, a, o, n, i, r, u, s, c;
if (!Array.isArray(null != e ? e.domains : void 0) || !Array.isArray(null != e ? e.urls : void 0)) throw new InvalidDataError("invalid bldata");
for (t = [], u = e.domains, a = 0, n = u.length; n > a; a++) {
r = u[a];
try {
(r = honey.util.cleanString(r)) && t.push(new RegExp(r, "i"))
} catch (l) {}
}
for (c = [], s = e.urls, o = 0, i = s.length; i > o; o++) {
r = s[o];
try {
(r = honey.util.cleanString(r)) && c.push(new RegExp(r, "i"))
} catch (l) {}
}
return this._domainRegexes = t, this._urlRegexes = c
}, e.prototype._checkForUpdates = function() {
var e;
return this._checkingForUpdates ? this._checkingForUpdates : (e = {
checkInterval: o.interval || n
}, this._checkingForUpdates = Promise.resolve().then(function(e) {
return function() {
if (clearTimeout(e._checkForUpdatesTo), delete e._checkForUpdatesTo, !navigator.onLine) throw new OperationSkippedError("Computer is offline");
return honey.logger.debug("Fetching latest store modules meta"), $.getAsync(CDN_URL + "/bldata/bldata.json")
}
}(this)).then(function(t) {
return function(a) {
if (!((null != a ? a.domains : void 0) && (null != a ? a.urls : void 0))) throw new InvalidDataError;
return t._updateBlData(a), e.checkInterval = a.interval, t._storage.set("bldata", a)
}
}(this)).then(function(e) {
return function() {
return honey.logger.debug("Updated blacklisted domains data")
}
}(this))["catch"](InvalidDataError, function(e) {
return function() {
return honey.logger.debug("Blacklisted domains data is invalid")
}
}(this))["catch"](function(e) {
return function(e) {
return null == e && (e = new Error("unknown")), e.message = "Domains blacklist: " + e.message, honey.logger.error(e)
}
}(this))["finally"](function(t) {
return function() {
var a;
return delete t._checkingForUpdates, a = honey.util.parsePositiveInt(e.checkInterval, n), u > a ? a = u : a > r && (a = r), t._checkForUpdatesTo = setTimeout(t._checkForUpdates, 1e3 * a), honey.logger.debug("Next domains blacklist update check is in " + Moment.duration(a, "seconds").humanize())
}
}(this)))
}, e
}()
}, {
"../../../data/bldata": 58,
url: 177
}],
29: [function(e, t, a) {
var bind = function(e, t) {
return function() {
return e.apply(t, arguments)
}
};
t.exports = function() {
function e() {
this._resetFilters = bind(this._resetFilters, this), this._createListener = bind(this._createListener, this), this._removeListener = bind(this._removeListener, this), this._generateRequest = bind(this._generateRequest, this), this._generateTemplate = bind(this._generateTemplate, this), this._sendRequestToContent = bind(this._sendRequestToContent, this), this._bundleRequest = bind(this._bundleRequest, this), this._stopWatchingListener = bind(this._stopWatchingListener, this), this._startWatchingListener = bind(this._startWatchingListener, this), this._coupons = [], this._currentTabId = null, this._setupDAC = !0, this._headers = {}, this._body = {}, honey.messages.addListener("site_support:startWatching", this._startWatchingListener), honey.messages.addListener("site_support:stopWatching", this._stopWatchingListener)
}
return e.prototype._startWatchingListener = function(e, t, a) {
var o, n, i, r, u;
if (t.store.metadata.pns_gDAC) return this._startTime = Date.now(), this._currentTabId = a.tabId, this._store = null != t ? t.store : void 0, this._test = null != t && null != (o = t.store) ? o.pns_gDACtest : void 0, this._coupons = null != t && null != (n = t.coupons) ? n.map(function(e) {
return {
code: e.code,
visible: e.visible
}
}) : void 0, this._requestFound = !1, Array.isArray(null != t && null != (i = t.store) ? i.partialUrls : void 0) && (null != (r = this._coupons) ? r.length : void 0) ? (u = t.store.partialUrls.map(function(e) {
return "*://*." + e + "/*"
}), this._resetFilters(u), this._timeOut = Promise.delay(3e5).then(function(e) {
return function() {
return e._finish("timed_out")
}
}(this))["catch"](function() {})) : void 0
}, e.prototype._stopWatchingListener = function(e, t, a) {
return a.tabId === this._currentTabId ? (this._timeOut && this._timeOut.cancel(), this._removeListeners()) : void 0
}, e.prototype._bundleRequest = function(e) {
var t, a;
if (!(e.tabId < 0)) return null != e.requestHeaders ? this._headers[e.requestId] = e : this._body[e.requestId] = e, null != this._headers[e.requestId] && null != this._body[e.requestId] ? (a = this._headers[e.requestId], t = this._body[e.requestId], delete this._headers[e.requestId], delete this._body[e.requestId], this._sendRequestToContent(a, t)) : void 0
}, e.prototype._sendRequestToContent = function(e, t) {
var a, o;
return o = null, this._requestFound || "DELETE" === t.method ? void 0 : (t.tabId === this._currentTabId && (o = this._generateTemplate(e, t)), o ? (a = JSON.stringify(this._generateRequest(o, e, t)), this._test && console.log("** sending template to content - ", a), this._requestFound = !0, honey.storage.local.set("dacRequest", a).then(function() {
return honey.messages.send("stores:current:generate_dac", {
ready: !0
}, {
allTabs: !0
})
})["catch"](function() {})) : void 0)
}, e.prototype._generateTemplate = function(e, t) {
var a, o, n, i, r, u;
return u = null, o = null, r = null != t ? t.requestBody : void 0, o = (a = null != r && null != (n = r.raw) && null != (i = n[0]) ? i.bytes : void 0) ? String.fromCharCode.apply(null, new Uint8Array(a)) : null != (null != r ? r.formData : void 0) ? JSON.stringify(null != r ? r.formData : void 0) : JSON.stringify(t.url), (null != o ? o.match("HONEYNEXTCOUPON") : void 0) && (u = null != (null != r ? r.formData : void 0) ? this._formatFormData(o) : JSON.parse(o)), u
}, e.prototype._formatFormData = function(e) {
var t, a, o, n, i;
t = {}, a = "", n = JSON.parse(e);
for (o in n) i = n[o], i instanceof Array ? t[o] = i[0] : t[o] = i;
for (o in t) i = t[o], a += a.length > 0 ? "&" + o + "=" + i : o + "=" + i;
return t
}, e.prototype._generateRequest = function(e, t, a) {
var o, n, i, r, u;
return i = {}, r = {}, u = null, null != (o = t.requestHeaders) && o.forEach(function(e) {
return "User-Agent" !== e.name && "Referer" !== e.name && "Accept-Encoding" !== e.name && "Cookie" !== e.name ? r[e.name] = e.value : void 0
}), this._test && console.log("** template - ", e), (null != (n = this._store.metadata) ? n.pns_gDACjsonContentType : void 0) && (e = JSON.stringify(e)), i = "GET" === a.method ? {
type: a.method,
contentType: a.type,
url: JSON.parse(e),
headers: r
} : {
type: a.method,
contentType: a.type,
url: a.url,
data: e,
headers: r
}
}, e.prototype._removeListener = function() {
return honey.webHooks.removeBeforeRequestListener(this._bundleRequest), honey.webHooks.removeBeforeSendHeadersListener(this._bundleRequest)
}, e.prototype._createListener = function(e) {
return honey.webHooks.addBeforeRequestListener(this._bundleRequest, {
urls: e
}, ["main_frame"]), honey.webHooks.addBeforeSendHeadersListener(this._bundleRequest, {
urls: e
}, ["main_frame"])
}, e.prototype._resetFilters = function(e) {
return this._removeListener(), this._createListener(e)
}, e
}()
}, {}],
30: [function(e, t, a) {
var o, bind = function(e, t) {
return function() {
return e.apply(t, arguments)
}
};
t.exports = o = function() {
function e() {
this._b64Encode = bind(this._b64Encode, this), this.getB64FromCDN = bind(this.getB64FromCDN, this), this._onActionMessage = bind(this._onActionMessage, this), honey.messages.addListener("imageloader:action", this._onActionMessage)
}
return e.prototype._onActionMessage = function(e, t, a) {
switch (null != t ? t.action : void 0) {
case "getB64FromCDN":
return this.getB64FromCDN(null != t ? t.path : void 0);
default:
throw new InvalidParametersError("action")
}
}, e.prototype.getB64FromCDN = function(e) {
return new Promise(function(t) {
return function(a, o) {
var n;
return n = function() {
var t;
switch (honey.util.cleanStringLower(null != e && "function" == typeof e.split && null != (t = e.split(".")) ? t.pop() : void 0)) {
case "jpg":
case "jpeg":
return "jpg";
case "png":
return "png";
case "svg":
return "svg+xml";
default:
throw new InvalidParametersError("file_type")
}
}(), $.ajax({
url: CDN_URL + "/images/" + e,
type: "GET",
mimeType: "text/plain; charset=x-user-defined"
}).done(function(e, o, i) {
return a("data:image/" + n + ";base64," + t._b64Encode(e))
}).fail(function(e, t, a) {
var n, i;
return i = parseInt(null != e ? e.status : void 0) || 0, n = (i + " " + ((null != e ? e.statusText : void 0) || "")).trim(), a = 404 === i ? new NotFoundError(n) : new Error(n), a.data = {
status: i,
statusText: "undefined" != typeof req && null !== req ? req.statusText : void 0,
responseText: "undefined" != typeof req && null !== req ? req.responseText : void 0,
responseJSON: "undefined" != typeof req && null !== req ? req.responseJSON : void 0
}, o(a)
})
}
}(this))
}, e.prototype._b64Encode = function(e) {
var t, a, o, n, i, r, u;
for (t = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", u = "", i = 0, r = e.length; r > i;) {
if (a = 255 & e.charCodeAt(i++), i === r) {
u += t.charAt(a >> 2), u += t.charAt((3 & a) << 4), u += "==";
break
}
if (o = e.charCodeAt(i++), i === r) {
u += t.charAt(a >> 2), u += t.charAt((3 & a) << 4 | (240 & o) >> 4), u += t.charAt((15 & o) << 2), u += "=";
break
}
n = e.charCodeAt(i++), u += t.charAt(a >> 2), u += t.charAt((3 & a) << 4 | (240 & o) >> 4), u += t.charAt((15 & o) << 2 | (192 & n) >> 6), u += t.charAt(63 & n)
}
return u
}, e
}()
}, {}],
31: [function(e, t, a) {
var o, bind = function(e, t) {
return function() {
return e.apply(t, arguments)
}
};
t.exports = o = function() {
function e() {
this._addInstallCookieData = bind(this._addInstallCookieData, this), this._sendInstallReport = bind(this._sendInstallReport, this), this._onBackgroundInstalledMessage = bind(this._onBackgroundInstalledMessage, this), honey.messages.addListener("background:installed", this._onBackgroundInstalledMessage), Promise.resolve().then(function(e) {
return function() {
return honey.user.ready
}
}(this)).then(function(e) {
return function() {
return honey.storage.local.get("install:pending_report")
}
}(this)).then(function(e) {
return function(t) {
return e._sendInstallReport(t)
}
}(this))["catch"](function() {})
}
return e.prototype._onBackgroundInstalledMessage = function(e, t, a) {
var o;
return "install" === (null != t ? t.reason : void 0) && Promise.resolve().then(function(e) {
return function() {
return honey.user.ready
}
}(this)).then(function(e) {
return function() {
return Promise.all([honey.storage.local.get("install:synced")["catch"](NotFoundError, function() {
return !1
}), honey.storage.local.get("install:repeat")["catch"](NotFoundError, function() {
return !1
})])
}
}(this)).spread(function(e) {
return function(t, a) {
return "development" !== honey.environment ? Promise.all([e._sendInstallReport({
synced: !!t
}), t || a ? void 0 : (honey.tabs.open({
url: "https://www.joinhoney.com/welcome"
}), honey.storage.local.set("install:repeat", !0)["catch"](function() {}))]) : void 0
}
}(this))["catch"](function() {}), (o = window.localStorage.getItem("user_settings")) && window.localStorage.removeItem("user_settings"), null
}, e.prototype._sendInstallReport = function(e, t) {
return null == t && (t = 5), this._sendingInstallReport ? this._sendingInstallReport : this._sendingInstallReport = Promise.resolve().then(function(e) {
return function() {
return honey.user.getLoggedInUser()["catch"](function() {})
}
}(this)).then(function(t) {
return function() {
return Promise.all([honey.user.getExv(), t._addInstallCookieData(e)["catch"](function() {})])
}
}(this)).spread(function(t) {
return function(t) {
return $.ajaxAsync({
type: "POST",
url: DATA_API_URL + "/extusers/install",
dataType: "json",
contentType: "application/json",
data: JSON.stringify({
exv: t,
synced: e.synced,
campaign: e.campaign,
visitor_id: e.visitor_id,
first_referrer_url: e.first_referrer_url
})
})
}
}(this)).then(function(e) {
return function() {
return honey.storage.local.del("install:pending_report")["catch"](function() {})
}
}(this))["catch"](function(a) {
return function(o) {
return t = Math.max(5, Math.min(1800, honey.util.parsePositiveInt(t))), setTimeout(a._sendInstallReport, 1e3 * t, e, 2 * t), honey.storage.local.set("install:pending_report", e)["catch"](function() {})
}
}(this))["finally"](function(e) {
return function() {
return delete e._sendingInstallReport
}
}(this))
}, e.prototype._addInstallCookieData = function(e) {
return Promise.resolve().then(function(e) {
return function() {
return honey.cookies.getAllForDomain("joinhoney.com")
}
}(this)).each(function(t) {
return function(t) {
var a, o, n;
try {
switch (honey.util.cleanStringLower(null != t ? t.name : void 0)) {
case "visitor":
return null != e.visitor_id ? e.visitor_id : e.visitor_id = honey.util.cleanString(t.value);
case "referrer":
return null != e.first_referrer_url ? e.first_referrer_url : e.first_referrer_url = null != (n = JSON.parse(decodeURIComponent(t.value))) ? n.referrer : void 0;
case "honeycampaign":
if (a = JSON.parse(decodeURIComponent(t.value)), o = honey.util.cleanString(null != a ? a.campaign : void 0)) return null != e.campaign ? e.campaign : e.campaign = {
id: o,
token: honey.util.cleanString(a.token),
track_id: honey.util.cleanString(a.tid)
}
}
} catch (i) {}
}
}(this))
}, e
}()
}, {}],
32: [function(e, t, a) {
var o, n, i, r, bind = function(e, t) {
return function() {
return e.apply(t, arguments)
}
};
r = e("socket.io-client"), n = 5, o = 600, t.exports = i = function() {
function e() {
this.start = bind(this.start, this), this._backoff = n, this._reload_ws = null
}
return e.prototype.start = function() {
return this._reload_ws = r("ws://localhost:35729/livereload"), this._reload_ws.on("connect", function(e) {
return function() {
return honey.logger.debug("Live reload websocket is listening. Id is " + e._reload_ws.id)
}
}(this)), this._reload_ws.on("error", function(e) {
return function(e) {
return honey.logger.error("Live reload websocket error: " + e)
}
}(this)), this._reload_ws.on("reload", function(e) {
return function() {
var e;
return honey.logger.debug("Live reload signal received: reloading the extension"), "undefined" != typeof chrome && null !== chrome && null != (e = chrome.runtime) && "function" == typeof e.reload ? e.reload() : void 0
}
}(this))
}, e
}()
}, {
"socket.io-client": 156
}],
33: [function(e, t, a) {
"use strict";
function o(e, t) {
return $.getAsync(DATA_API_URL + "/v2/products/details/storeId/1/" + t.asin + "?priceHistory=30").then(function(e) {
var t = null;
return e.priceHistory && e.priceHistory.history && e.priceHistory.history.length > 4 && (t = e.priceHistory.numChanges), t
})
}
t.exports = function() {
honey.messages.addListener("optimus:fetch:product:priceChanges", o)
}
}, {}],
34: [function(e, t, a) {
var o, bind = function(e, t) {
return function() {
return e.apply(t, arguments)
}
};
t.exports = o = function() {
function e() {
this._onProductFetcherMessage = bind(this._onProductFetcherMessage, this), honey.messages.addListener("product_fetcher:action", this._onProductFetcherMessage)
}
return e.prototype._onProductFetcherMessage = function(e, t, a) {
switch (null != t ? t.action : void 0) {
case "getDesiredIds":
return this._getDesiredIds(null != t ? t.data : void 0);
default:
throw new InvalidParametersError("action")
}
}, e.prototype._getDesiredIds = function(e) {
return (null != e ? e.storeId : void 0) && (null != e ? e.prodIds : void 0) ? honey.user.getExv().then(function(t) {
return function(t) {
return $.ajaxAsync(STAT_API_URL + "/pr/check", {
type: "POST",
contentType: "application/json",
data: JSON.stringify({
exv: t,
ids: e.prodIds,
store_id: e.storeId
})
})
}
}(this)) : Promise.resolve({})
}, e
}()
}, {}],
35: [function(e, t, a) {
var o, n, i, r, u, s, bind = function(e, t) {
return function() {
return e.apply(t, arguments)
}
};
i = 500, r = 100, u = 10, o = 1, n = [/^current\sstore\sis\snot\sfound$/i, /^failed\sto\ssend\sto\ssdata/i, /^computer\sis\soffline$/i, /chromemethodbfe/i], t.exports = s = function() {
function e() {
this._camelKeysToSnake = bind(this._camelKeysToSnake, this), this._onBeforeSendHeadersWebHook = bind(this._onBeforeSendHeadersWebHook, this), this._processQueue = bind(this._processQueue, this), this._sendEventImmediately = bind(this._sendEventImmediately, this), this._onStatsEventMessage = bind(this._onStatsEventMessage, this), this.sendException = bind(this.sendException, this), this.sendEvent = bind(this.sendEvent, this);
var e;
this._queue = [], this._nextSendMoment = Moment(), this._nextErrorSend = Moment(), this._nextSendTimeout = null, honey.messages.addListener("stats:event", this._onStatsEventMessage), e = [STAT_API_URL + "/*"], honey.webHooks.addBeforeSendHeadersListener(this._onBeforeSendHeadersWebHook, {
urls: e,
blocking: !0
})
}
return e.prototype.sendEvent = function(e, t, a) {
var o;
return o = null != t ? t.store : void 0, Promise.resolve().then(function(e) {
return function() {
var e, a;
return (null != o ? o.id : void 0) && (null != o ? o.sessionId : void 0) ? o : (e = null != o ? o.id : void 0) ? honey.stores.getStoreById(e) : (a = honey.util.cleanString(null != t ? t.referrer_url : void 0)) ? honey.stores.getStoreByUrl(a) : void 0
}
}(this))["catch"](function() {}).then(function(a) {
return function(a) {
var n;
if (!(e = honey.util.cleanStringLower(e))) throw new InvalidParametersError("code");
return null == t && (t = {}), t.store = {
id: null != a ? a.id : void 0,
session_id: null != a ? a.sessionId : void 0,
subid1: null != o ? o.subid1 : void 0,
subid2: null != o ? o.subid2 : void 0,
subid3: null != o ? o.subid3 : void 0
}, null != (n = honey.user) && "function" == typeof n.getSessionId ? n.getSessionId()["catch"](function() {}) : void 0
}
}(this)).then(function(o) {
return function(n) {
var i;
return t.session_id = n || 0, i = o._camelKeysToSnake(t), "development" === honey.environment ? (honey.logger.debug("sdata event bypassed (" + honey.environment + "): " + e, i), Promise.resolve()) : (null != a ? a.immediate : void 0) ? o._sendEventImmediately(e, i) : "ext000010" === e ? o.sendException(i) : (i.code = e, o._queue.push(i), o._processQueue())
}
}(this))["catch"](function() {})
}, e.prototype.sendException = function(e) {
var t, a;
return t = null != (a = e.exception) ? a.message : void 0, n.every(function(e) {
return function(e) {
return !(null != t ? t.match(e) : void 0)
}
}(this)) && this._nextErrorSend.isBefore() ? (this._sendEventImmediately("ext000010", e), this._nextErrorSend = Moment().add(o, "minutes")) : void 0
}, e.prototype._onStatsEventMessage = function(e, t, a) {
return (null != t ? t.code : void 0) ? this.sendEvent(t.code, t.data, t.options) : void 0
}, e.prototype._sendEventImmediately = function(e, t) {
return honey.user.getExv().then(function(a) {
return function(a) {
var o, n;
return n = honey.util.cleanString(t.referrer_url), delete t.referrer_url, o = "ext000010" === e ? ERR_API_URL : STAT_API_URL, $.ajaxAsync({
type: "POST",
url: o + "/ev/" + e,
dataType: "json",
contentType: "application/json",
headers: {
"X-Referer": n
},
data: JSON.stringify({
src: "extension",
exv: a,
event: t
})
})
}
}(this))["catch"](function(e) {
return function(e) {}
}(this))
}, e.prototype._processQueue = function() {
return this._queue.length > i && (this._queue = this._queue.slice(-i)), this._isSending || !this._queue.length || this._nextSendMoment.isAfter() ? void 0 : (this._isSending = !0, Promise.resolve().then(function(e) {
return function() {
return honey.user.getExv()
}
}(this)).then(function(e) {
return function(t) {
var a;
return a = e._queue.splice(0, r), a.length ? $.ajaxAsync({
type: "POST",
url: STAT_API_URL + "/evs",
dataType: "json",
contentType: "application/json",
data: JSON.stringify({
src: "extension",
exv: t,
events: a
})
}) : void 0
}
}(this))["catch"](function(e) {
return function(e) {
var t;
return honey.logger.error("Failed to send to sdata: " + (null != e && null != (t = e.data) ? t.status : void 0) + " " + ((null != e ? e.message : void 0) || "unknown error"))
}
}(this))["finally"](function(e) {
return function() {
return e._isSending = !1, clearTimeout(e._nextSendTimeout), e._nextSendMoment = Moment().add(u, "seconds"), e._nextSendTimeout = setTimeout(e._processQueue, 100 + 1e3 * u)
}
}(this)))
}, e.prototype._onBeforeSendHeadersWebHook = function(e) {
var t, a, o, n, i, r, u, s;
for (r = -1, i = -1, s = e.requestHeaders, a = o = 0, n = s.length; n > o; a = ++o) switch (t = s[a], honey.util.cleanStringLower(t.name)) {
case "referer":
r = a;
break;
case "x-honey-stats-referer":
i = a
}
return 0 > i ? void 0 : (u = s[i].value, s.splice(i, 1), r >= 0 ? s[r].value = u : s.push({
name: "Referer",
value: u
}), {
requestHeaders: s
})
}, e.prototype._camelKeysToSnake = function(e) {
var t;
return t = {}, Object.keys(e).forEach(function(a) {
return function(o) {
var n, i, r;
return r = e[o], n = o.replace(/[a-z][A-Z]/, function(e) {
return e[0] + "_" + e[1]
}).toLowerCase(), r && "object" == typeof r && !Array.isArray(r) ? (i = a._camelKeysToSnake(r), t[n] = i) : Array.isArray(r) ? t[n] = r.slice() : t[n] = r
}
}(this)), t
}, e
}()
}, {}],
36: [function(e, t, a) {
var bind = function(e, t) {
return function() {
return e.apply(t, arguments)
}
};
t.exports = function() {
function e() {
this._resetFilters = bind(this._resetFilters, this), this._createListener = bind(this._createListener, this), this._removeListener = bind(this._removeListener, this), this._onBeforeRequest = bind(this._onBeforeRequest, this), this._finish = bind(this._finish, this), this._stopWatchingListener = bind(this._stopWatchingListener, this), this._startWatchingListener = bind(this._startWatchingListener, this), this._coupons = [], this._currentTabId = null, this._setupDAC = !0, honey.messages.addListener("site_support:startWatching", this._startWatchingListener), honey.messages.addListener("site_support:stopWatching", this._stopWatchingListener)
}
return e.prototype._startWatchingListener = function(e, t, a) {
var o, n, i, r;
return this._startTime = Date.now(), this._currentTabId = a.tabId, this._store = null != t ? t.store : void 0, this._coupons = null != t && null != (o = t.coupons) ? o.map(function(e) {
return {
code: e.code,
tested: !1
}
}) : void 0, Array.isArray(null != t && null != (n = t.store) ? n.partialUrls : void 0) && (null != (i = this._coupons) ? i.length : void 0) ? (r = t.store.partialUrls.map(function(e) {
return "*://*." + e + "/*"
}), this._resetFilters(r), this._timeOut = Promise.delay(3e5).then(function(e) {
return function() {
return e._finish("timed_out")
}
}(this))["catch"](function() {})) : void 0
}, e.prototype._stopWatchingListener = function(e, t, a) {
return a.tabId === this._currentTabId ? (this._timeOut && this._timeOut.cancel(), this._finish("complete")) : void 0
}, e.prototype._finish = function(e) {
var t;
return null == e && (e = "complete"), this._removeListener(), this._currentTabId = null, t = 0, this._coupons.forEach(function(e) {
return e.tested ? t++ : void 0
}), honey.stats.sendEvent("ext003012", {
total_codes: this._coupons.length,
codes_seen: t,
status: e,
duration_sec: (Date.now() - this._startTime) / 1e3,
coupons: this._coupons,
store: {
id: this._store.id
}
})
}, e.prototype._onBeforeRequest = function(e) {
var t, a, o, n, i, r, u, s, c, l;
if (e.tabId === this._currentTabId) {
for (a = (t = null != e && null != (r = e.requestBody) && null != (u = r.raw) && null != (s = u[0]) ? s.bytes : void 0) ? String.fromCharCode.apply(null, new Uint8Array(t)) : JSON.stringify(null != e ? e.requestBody : void 0), c = this._coupons, l = [], n = 0, i = c.length; i > n; n++) o = c[n], e.url.match(o.code) || (null != a ? a.match(o.code) : void 0) ? (o.tested = !0, l.push(null != o.method ? o.method : o.method = e.method)) : l.push(void 0);
return l
}
}, e.prototype._removeListener = function() {
return honey.webHooks.removeBeforeRequestListener(this._onBeforeRequest)
}, e.prototype._createListener = function(e) {
return honey.webHooks.addBeforeRequestListener(this._onBeforeRequest, e, ["main_frame"])
}, e.prototype._resetFilters = function(e) {
return this._removeListener(), this._createListener(e)
}, e
}()
}, {}],
37: [function(e, t, a) {
var o, bind = function(e, t) {
return function() {
return e.apply(t, arguments)
}
};
t.exports = o = function() {
function e() {
this.getAllIds = bind(this.getAllIds, this), this.getAll = bind(this.getAll, this), this.get = bind(this.get, this), this.close = bind(this.close, this), this.openFBAuthWindow = bind(this.openFBAuthWindow, this), this.open = bind(this.open, this), this._onPageLoadMessage = bind(this._onPageLoadMessage, this), this._onTabsActionMessage = bind(this._onTabsActionMessage, this), honey.messages.addListener("tabs:action", this._onTabsActionMessage), honey.messages.addListener("page:load", this._onPageLoadMessage), this._delayedOpen = {}
}
var t;
return e.prototype._onTabsActionMessage = function(e, t, a) {
switch (null != t ? t.action : void 0) {
case "open":
return this.open(t.data);
default:
throw new InvalidParametersError("action")
}
}, e.prototype._onPageLoadMessage = function(e, t, a) {
var o;
return (o = this._delayedOpen[a.tabId]) ? (delete this._delayedOpen[a.tabId], honey.messages.send("ui:action", {
action: "open",
data: o
}, {
tab: a.tabId
})) : void 0
}, e.prototype.open = function(e) {
var t, a;
if (!(a = null != e && null != (t = e.url) && "function" == typeof t.trim ? t.trim() : void 0)) throw new InvalidParametersError("url");
return honey._native.tabs.open({
url: a,
active: "active" in e ? !!e.active : !0
}).then(function(t) {
return function(a) {
var o;
return (o = null != e ? e.extensionState : void 0) && (t._delayedOpen[a] = o), a
}
}(this))
}, t = "https://www.facebook.com/v2.5/dialog/oauth?response_type=code&scope=public_profile%2Cemail%2Cuser_friends&display=popup&redirect_uri=https%3A%2F%2Fd.joinhoney.com%2Flogin%2Ffb&client_id=1551397998523315", e.prototype.openFBAuthWindow = function() {
var e;
if (e = t, !(e = null != e && "function" == typeof e.trim ? e.trim() : void 0)) throw new InvalidParametersError("url");
return honey._native.tabs.openFBAuthWindow(e)
}, e.prototype.close = function(e) {
if (!e) throw new InvalidParametersError("tabId");
return honey._native.tabs.close(e)
}, e.prototype.get = function(e) {
if (!e) throw new InvalidParametersError("tabId");
return honey._native.tabs.get(e)
}, e.prototype.getAll = function() {
return honey._native.tabs.getAll()
}, e.prototype.getAllIds = function() {
return honey._native.tabs.getAllIds()
}, e
}()
}, {}],
38: [function(e, t, a) {
var o, n, i, r, u, s, c, bind = function(e, t) {
return function() {
return e.apply(t, arguments)
}
},
l = function(e, t) {
function a() {
this.constructor = e
}
for (var o in t) m.call(t, o) && (e[o] = t[o]);
return a.prototype = t.prototype, e.prototype = new a, e.__super__ = t.prototype, e
},
m = {}.hasOwnProperty;
s = 180, o = "pns_merchcoupon", i = "Facebook's being fussy. If you created your Facebook account with a phone number, add your email and try again. Or join with your email below :)", n = [1, 2, 3], r = "https://www.facebook.com/tr?id=454105921439264&ev=ExtensionActive", u = "https://www.facebook.com/tr?id=878703805520439&ev=ExtensionActive", t.exports = c = function(e) {
function t() {
this.engageExclusive = bind(this.engageExclusive, this), this.rewardExclusive = bind(this.rewardExclusive, this), this.onboardingDemoClose = bind(this.onboardingDemoClose, this), this.onboardingStatus = bind(this.onboardingStatus, this), this.onboardingProgress = bind(this.onboardingProgress, this), this.initOnboarding = bind(this.initOnboarding, this), this.setHasAgreedToAttribution = bind(this.setHasAgreedToAttribution, this), this.getHasAgreedToAttribution = bind(this.getHasAgreedToAttribution, this), this.getSessionId = bind(this.getSessionId, this), this._startSession = bind(this._startSession, this), this._onPageLoad = bind(this._onPageLoad, this), this._onUserActionMessage = bind(this._onUserActionMessage, this), this._checkUpgradeDeviceId = bind(this._checkUpgradeDeviceId, this), this._checkUpgradeUserId = bind(this._checkUpgradeUserId, this), t.__super__.constructor.apply(this, arguments), honey.messages.addListener("page:load", this._onPageLoad), honey.messages.addListener("user:action", this._onUserActionMessage), this.ready = Promise.all([this._checkUpgradeUserId(), this._checkUpgradeDeviceId()].map(function(e) {
return e.reflect()
})), honey.ready.then(function(e) {
return function() {
return e._startSession()
}
}(this))
}
return l(t, e), t.prototype.updateSettings = function(e) {
return $.ajaxAsync({
url: DATA_API_URL + "/users",
contentType: "application/json",
data: JSON.stringify({
settings: e
}),
type: "PATCH"
}).then(function(e) {
return function() {
var t;
return e.getLoggedInUser(t = !0)
}
}(this))["catch"](function() {})
}, t.prototype._checkUpgradeUserId = function() {
return Promise.resolve().then(function(e) {
return function() {
return e._storageLocal.get("id")["catch"](NotFoundError, function() {
return null
})
}
}(this)).then(function(e) {
return function(t) {
if ("string" == typeof t && honey.util.parsePositiveInt(t)) throw new OperationSkippedError;
return e._storageSync.get("id")["catch"](NotFoundError, function() {
return null
})["catch"](UnavailableError, function() {
return null
})
}
}(this)).then(function(e) {
return function(e) {
return "string" == typeof e && honey.util.parsePositiveInt(e) ? honey.storage.local.set("install:synced", !0)["catch"](function() {}).then(function() {
return e
}) : honey.storage.sync.get("honey_userID", {
raw: !0
})["catch"](UnavailableError, function() {
throw new NotFoundError
})
}
}(this))["catch"](NotFoundError, function(e) {
return function() {
var e, t, a, o;
try {
if (e = decodeURIComponent(window.localStorage.getItem("savehoney_userID")) || decodeURIComponent(window.localStorage.getItem("honey_userID")), t = null != e && "function" == typeof e.match && null != (a = e.match(/^\s*(\d+)\s*$/)) ? a[1] : void 0) return t;
if (t = null != e && "function" == typeof e.match && null != (o = e.match(/^\s*\"\s*(\d+)\s*\"\s*$/)) ? o[1] : void 0) return t
} catch (n) {}
return null
}
}(this)).then(function(e) {
return function(t) {
return t = "string" == typeof t && !t.match(/000$/) && honey.util.parsePositiveInt(t) ? honey.util.cleanString(t) || honey.util.createId() : honey.util.createId(), Promise.all([e._storageLocal.set("id", t).reflect(), e._storageSync.set("id", t).reflect()])
}
}(this))["catch"](OperationSkippedError, function(e) {
return function() {}
}(this))
}, t.prototype._checkUpgradeDeviceId = function() {
return Promise.resolve().then(function(e) {
return function() {
return e._storageLocal.get("device-id")["catch"](NotFoundError, function() {
return null
})
}
}(this)).then(function(e) {
return function(e) {
var t, a, o;
if ("string" == typeof e && honey.util.parsePositiveInt(e)) throw new OperationSkippedError;
try {
if (e = window.localStorage.getItem("pns_deviceID"),
t = null != e && "function" == typeof e.match && null != (a = e.match(/^\s*(\d+)\s*$/)) ? a[1] : void 0) return t;
if (t = null != e && "function" == typeof e.match && null != (o = e.match(/^\s*\"\s*(\d+)\s*\"\s*$/)) ? o[1] : void 0) return t
} catch (n) {}
return null
}
}(this))["catch"](NotFoundError, function(e) {
return function() {
return null
}
}(this)).then(function(e) {
return function(t) {
return t = "string" == typeof t && !t.match(/000$/) && honey.util.parsePositiveInt(t) ? honey.util.cleanString(t) || honey.util.createId() : honey.util.createId(), e._storageLocal.set("device-id", t)
}
}(this))["catch"](OperationSkippedError, function(e) {
return function() {}
}(this))
}, t.prototype._onUserActionMessage = function(e, t, a) {
var o, n, i, r, u, s, c, l, m, p, h, d, g;
switch (null != t ? t.action : void 0) {
case "getLoggedInUser":
return this.getLoggedInUser(null != (o = t.data) ? o.fetch : void 0);
case "fbAuth":
return this.fbAuth();
case "getSessionId":
return this.getSessionId();
case "logout":
return this.logout();
case "login":
return this.login(null != (n = t.data) ? n.email : void 0, null != (s = t.data) ? s.password : void 0);
case "register":
return this.register(null != (c = t.data) ? c.email : void 0, null != (l = t.data) ? l.password : void 0);
case "edit":
return this.edit(t.data);
case "resetPwd":
return this.resetPwd(null != (m = t.data) ? m.email : void 0);
case "updateSettings":
return this.updateSettings(null != (p = t.data) ? p.settings : void 0);
case "updateLocalSettings":
return this.updateLocalSettings(null != (h = t.data) ? h.settings : void 0);
case "getHasAgreedToAttribution":
return this.getHasAgreedToAttribution(null != (d = t.data) ? d.userId : void 0);
case "setHasAgreedToAttribution":
return this.setHasAgreedToAttribution(null != (g = t.data) ? g.userId : void 0);
case "initOnboarding":
return this.initOnboarding();
case "onboardingProgress":
return this.onboardingProgress(null != (i = t.data) ? i.step : void 0);
case "onboardingStatus":
return this.onboardingStatus();
case "onboardingDemoClose":
return this.onboardingDemoClose();
case "rewardExclusive":
return this.rewardExclusive(null != (r = t.data) ? r.storeId : void 0);
case "engageExclusive":
return this.engageExclusive(null != (u = t.data) ? u.exclusiveId : void 0);
default:
throw new InvalidParametersError("action")
}
}, t.prototype.fbAuth = function() {
return honey.tabs.openFBAuthWindow().then(function() {
return honey.user.getLoggedInUser()
})["catch"](function() {
return honey.user.getLoggedInUser()
})["catch"](function() {
throw new Error(i)
})
}, t.prototype._onPageLoad = function() {
return Promise.resolve().then(function(e) {
return function() {
var t;
return (null != (t = e._session) ? t.expires : void 0) > Moment().unix() ? e._session.expires = Moment().add(s, "minutes").unix() : e._startSession()
}
}(this)).then(function(e) {
return function() {
return e._storageLocal.get("ping")["catch"](function() {
return 0
})
}
}(this)).then(function(e) {
return function(e) {
if (Moment.unix(e).isAfter(Moment().subtract(6, "hour"))) throw new OperationSkippedError;
honey.stats.sendEvent("ext000001"), $.getAsync(r)["catch"](function() {}), $.getAsync(u)["catch"](function() {})
}
}(this)).then(function(e) {
return function() {
return e._storageLocal.set("ping", Moment().unix())
}
}(this)).then(function(e) {
return function() {
return e._storageLocal.get("migrated")["catch"](NotFoundError, function() {})
}
}(this)).then(function(e) {
return function(t) {
return t ? void 0 : e._storageLocal.get("trackPageViews").then(function(e) {
return $.ajaxAsync({
url: DATA_API_URL + "/users",
data: {
data: {
settings: e
}
},
type: "PATCH"
})
}).then(function() {
return Promise.all([e._storageLocal.del("trackPageViews"), e._storageLocal.del("trackProductViews")["catch"](function() {}), e._storageLocal.set("migrated", !0)])
})["catch"](NotFoundError, function() {})["catch"](function(e) {
return console.error("Error migrating settings " + (null != e ? e.stack : void 0))
})
}
}(this))["catch"](OperationSkippedError, function() {})
}, t.prototype._startSession = function() {
var e;
return this._session = {
id: Moment().valueOf(),
expires: Moment().add(s, "minutes").unix()
}, e = [], e.push(this.getLoggedInUser()["catch"](function(e) {
return function() {}
}(this))), e.push(honey.messages.send("user:session:started", {
sessionId: this._session.id
}, {
allTabs: !0,
background: !0,
ignoreResponse: !0
})), e.push(honey.stats.sendEvent("ext005001")), Promise.all(e.map(function(e) {
return function(e) {
return e.reflect()
}
}(this))).then(function(e) {
return function() {
return e._session.id
}
}(this))
}, t.prototype.getLoggedInUser = function(e) {
var t;
return null == e && (e = !0), e ? (t = null, Promise.all([$.getAsync(DATA_API_URL + "/users"), this._storageLocal.get("id")["catch"](NotFoundError, function(e) {
return function() {}
}(this))]).spread(function(a) {
return function(o, n) {
var i;
return e && a._storageLocal.set("user", o), (null != (i = t = o) ? i.id : void 0) && (null != t ? t.id : void 0) !== n ? Promise.all([a._storageLocal.set("user", t), a._storageLocal.set("id", null != t ? t.id : void 0), a._storageSync.set("id", null != t ? t.id : void 0)]) : void 0
}
}(this)).then(function(e) {
return function() {
return honey.messages.send("user:current:update", {
user: t
}, {
allTabs: !0,
ignoreResponse: !0
}), t || function() {
throw new UnauthorizedError
}()
}
}(this))) : this._storageLocal.get("user")
}, t.prototype.getSessionId = function() {
var e, t;
return (null != (e = this._session) ? e.id : void 0) && (null != (t = this._session) ? t.expires : void 0) > Moment().unix() ? Promise.resolve(this._session.id) : this._startSession()
}, t.prototype.getHasAgreedToAttribution = function(e) {
return this._storageLocal.get("agreedToAttribution-" + e)["catch"](NotFoundError, function() {
return !1
})
}, t.prototype.setHasAgreedToAttribution = function(e) {
return this._storageLocal.set("agreedToAttribution-" + e, !0)
}, t.prototype.initOnboarding = function() {
return $.postAsync(DATA_API_URL + "/onboarding")
}, t.prototype.onboardingProgress = function(e) {
return $.ajaxAsync({
type: "PATCH",
url: DATA_API_URL + "/onboarding?step=" + e
}).then(function(e) {
return function(e) {
return honey.messages.send("user:onboarding:update", {
onboarding: e
}, {
allTabs: !0,
ignoreResponse: !0
}), e
}
}(this))["catch"](function() {})
}, t.prototype.onboardingStatus = function() {
return $.getAsync(DATA_API_URL + "/onboarding").then(function(e) {
return function(e) {
return honey.messages.send("user:onboarding:update", {
onboarding: e
}, {
allTabs: !0,
ignoreResponse: !0
}), e
}
}(this))
}, t.prototype.onboardingDemoClose = function() {
return honey.messages.send("onboarding:demo:close", {}, {
allTabs: !0
})
}, t.prototype.rewardExclusive = function(e) {
return $.postAsync(DATA_API_URL + "/gift/show", {
storeId: e
}).then(function(e) {
return function(e) {
return e
}
}(this))["catch"](function() {})
}, t.prototype.engageExclusive = function(e) {
return $.postAsync(DATA_API_URL + "/gift/engage", {
exclusiveId: e
}).then(function(e) {
return function(e) {
return e
}
}(this))["catch"](function() {})
}, t
}(e("../../base/user"))
}, {
"../../base/user": 42
}],
39: [function(e, t, a) {
var o, n, bind = function(e, t) {
return function() {
return e.apply(t, arguments)
}
},
i = [].indexOf || function(e) {
for (var t = 0, a = this.length; a > t; t++)
if (t in this && this[t] === e) return t;
return -1
};
o = ["BeforeRequest", "BeforeSendHeaders", "SendHeaders", "HeadersReceived", "AuthRequired", "BeforeRedirect", "ResponseStarted", "Complete", "ErrorOccurred"], t.exports = n = function() {
function e() {
this.removeAllNonCoreListeners = bind(this.removeAllNonCoreListeners, this), this._removeListener = bind(this._removeListener, this), this._addListener = bind(this._addListener, this), this._listeners = {}, o.forEach(function(e) {
return function(t) {
return e._listeners[t] = [], Object.defineProperty(e, "add" + t + "Listener", {
value: function(a, o) {
return e._addListener(t, a, o, !1)
}
}), Object.defineProperty(e, "add" + t + "CoreListener", {
value: function(a, o) {
return e._addListener(t, a, o, !0)
}
}), Object.defineProperty(e, "remove" + t + "Listener", {
value: function(a) {
return e._removeListener(t, a)
}
})
}
}(this))
}
return e.prototype._addListener = function(e, t, a, o) {
if ("function" != typeof t) throw new InvalidParametersError("listener");
return honey._native.webHooks["add" + e + "Listener"](t, a), o || i.call(this._listeners[e], t) >= 0 ? void 0 : this._listeners[e].push(t)
}, e.prototype._removeListener = function(e, t) {
var a;
return honey._native.webHooks["remove" + e + "Listener"](t), (a = this._listeners[e].indexOf(t)) >= 0 ? this._listeners[e].splice(a, 1) : void 0
}, e.prototype.removeAllNonCoreListeners = function() {
var e, t, a, o, n, i, r;
n = 0, i = this._listeners;
for (r in i) {
for (o = i[r], e = 0, t = o.length; t > e; e++) a = o[e], honey._native.webHooks["remove" + r + "Listener"](a), ++n;
this._listeners[r] = []
}
return n
}, e
}()
}, {}],
40: [function(e, t, a) {
"use strict";
function o(e, t) {
var a = void 0;
if ("object" === ("undefined" == typeof t ? "undefined" : n(t))) switch (t.action) {
case "makeGrouponRequest":
a = $.getAsync(t.data.reqUrl);
break;
default:
throw new InvalidParametersError("action")
}
return a
}
var n = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
return typeof e
} : function(e) {
return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
};
t.exports = function() {
honey.messages.addListener("yelp:action", o)
}
}, {}],
41: [function(e, t, a) {
Promise = e("bluebird"), window.Moment = e("moment"), window.CryptoJS = e("browserify-cryptojs"), e("browserify-cryptojs/components/enc-base64"), e("browserify-cryptojs/components/md5"), e("browserify-cryptojs/components/sha1"), e("browserify-cryptojs/components/sha256"), e("browserify-cryptojs/components/cipher-core"), e("browserify-cryptojs/components/aes"), Promise.config({
longStackTraces: "development" === honey.environment,
cancellation: !0,
warnings: {
wForgottenReturn: !1
}
}), honey.ready = Promise.resolve().then(function() {
var t, a;
return e("../shared"), t = {
button: e("./button"),
cookies: e("./cookies"),
tabs: e("./tabs"),
webHooks: e("./web_hooks"),
adbBp: e("./adb_bp"),
ckBp: e("./ck_bp"),
confirmation: e("./confirmation"),
domainBlacklist: e("./domain_blacklist"),
productFetcher: e("./product_fetcher"),
imageLoader: e("./image_loader"),
stats: e("./stats"),
stores: e("./Stores")["default"],
user: e("./user"),
storeSupport: e("./store_support"),
generatedDAC: e("./generated_dac"),
ajax: e("./ajax"),
cartDetector: e("./cart_detector")["default"],
yelp: e("./yelp"),
optimus: e("./optimus")
}, a = Object.keys(t).map(function(e) {
return function(e) {
return Promise["try"](function() {
return (honey[e] = new t[e]).ready
}).reflect()
}
}(this)), new(e("./install")), a
}).map(function(e) {
return e.isFulfilled() ? void 0 : honey.logger.error(e.reason())
}).then(function() {
return honey.webHooks.addBeforeSendHeadersListener(function(e) {
return function(e) {
var t;
return t = e.requestHeaders, t.push({
name: "X-Honey",
value: honey.version.toString()
}), {
requestHeaders: t
}
}
}(this), {
urls: ["https://*.joinhoney.com/*", "http://*.joinhoney.com/*"],
blocking: !0
})
}).then(function() {
return "ch" === honey.platform && "development" === honey.environment && (new(e("./live_reload"))).start(), honey.messages.send("background:started", {}, {
background: !0,
allTabs: !0,
ignoreResponse: !0
})["catch"](function(e) {
return honey.logger.error(e.name + ": e.message")
})
}).then(function() {
return honey.logger.debug("Honey " + honey.version + " background script is ready")
})["catch"](function(e) {
throw honey.logger.error(e.name + ": e.message"), e
}), "development" !== honey.environment && honey._native.globalEvents.setUninstallURL("https://www.joinhoney.com/uninstall"), honey._native.globalEvents.addOnInstallListener(function(e) {
return honey.ready.then(function(t) {
return function() {
return honey.messages.send("background:installed", e, {
background: !0,
allTabs: !0,
ignoreResponse: !0
})["catch"](function(e) {
return honey.logger.error(e.name + ": e.message")
})
}
}(this))
})
}, {
"../shared": 45,
"./Stores": 9,
"./adb_bp": 13,
"./ajax": 16,
"./button": 17,
"./cart_detector": 18,
"./ck_bp": 19,
"./confirmation": 26,
"./cookies": 27,
"./domain_blacklist": 28,
"./generated_dac": 29,
"./image_loader": 30,
"./install": 31,
"./live_reload": 32,
"./optimus": 33,
"./product_fetcher": 34,
"./stats": 35,
"./store_support": 36,
"./tabs": 37,
"./user": 38,
"./web_hooks": 39,
"./yelp": 40,
bluebird: 81,
"browserify-cryptojs": 89,
"browserify-cryptojs/components/aes": 83,
"browserify-cryptojs/components/cipher-core": 84,
"browserify-cryptojs/components/enc-base64": 85,
"browserify-cryptojs/components/md5": 86,
"browserify-cryptojs/components/sha1": 87,
"browserify-cryptojs/components/sha256": 88,
moment: 132
}],
42: [function(e, t, a) {
var o, bind = function(e, t) {
return function() {
return e.apply(t, arguments)
}
};
t.exports = o = function() {
function e() {
this.resetPwd = bind(this.resetPwd, this), this.getExv = bind(this.getExv, this), this._storageLocal = honey.storage.local.prefixed("user"), this._storageSync = honey.storage.sync.prefixed("user")
}
return e.prototype.getUserId = function() {
return this._storageLocal.get("id")["catch"](NotFoundError, function(e) {
return function() {
return honey.util.createId()
}
}(this))
}, e.prototype.getDeviceId = function() {
return this._storageLocal.get("device-id")["catch"](NotFoundError, function(e) {
return function() {
return honey.util.createId()
}
}(this))
}, e.prototype.updateLocalSettings = function(e) {
return this._storageLocal.get("user").then(function(t) {
return function(a) {
var o, n, i;
for (o in e) i = e[o], null != (n = a.settings) && (n[o] = i);
return t._storageLocal.set("user", a)
}
}(this))
}, e.prototype.edit = function(e) {
return Promise["try"](function(t) {
return function() {
return $.ajaxAsync({
type: "PATCH",
url: DATA_API_URL + "/users",
data: e
})
}
}(this)).then(function(e) {
return function(e) {
return honey.messages.send("user:current:update", {
user: e
}, {
allTabs: !0,
ignoreResponse: !0
}), e || function() {
throw new NotFoundError
}()
}
}(this))
}, e.prototype.register = function(e, t) {
return this.getExv().then(function(a) {
return function(a) {
return $.postAsync(DATA_API_URL + "/extusers", {
email: e,
password: t,
v: a
})
}
}(this)).then(function(e) {
return function(t) {
var a;
return honey.messages.send("user:current:update", {
user: t
}, {
allTabs: !0,
ignoreResponse: !0
}), null != (a = honey.stats) && a.sendEvent("usr001001", {
register_source: "extension"
})["catch"](function() {}), e._storageLocal.set("id", t.id), t
}
}(this))
}, e.prototype.login = function(e, t) {
return this.getExv().then(function(a) {
return function(a) {
return $.postAsync(DATA_API_URL + "/extusers/login", {
username: e,
password: t,
v: a
})
}
}(this)).then(function(e) {
return function(t) {
var a;
return honey.messages.send("user:current:update", {
user: t
}, {
allTabs: !0,
ignoreResponse: !0
}), null != (a = honey.stats) && a.sendEvent("usr001002")["catch"](function() {}), e._storageLocal.set("user", t), e._storageLocal.set("id", null != t ? t.id : void 0), e._storageSync.set("id", null != t ? t.id : void 0), t
}
}(this))
}, e.prototype.logout = function() {
return $.postAsync(DATA_API_URL + "/extusers/logout").then(function(e) {
return function(t) {
return e._storageLocal.del("user")
}
}(this)).then(function(e) {
return function() {
var e;
return honey.messages.send("user:current:update", {
user: null
}, {
allTabs: !0,
ignoreResponse: !0
}), null != (e = honey.stats) && e.sendEvent("usr001003")["catch"](function() {}), !0
}
}(this))
}, e.prototype.getExv = function() {
return Promise.all(["function" == typeof this.getUserId ? this.getUserId()["catch"](function() {
return "0"
}) : void 0, "function" == typeof this.getDeviceId ? this.getDeviceId()["catch"](function() {
return "0"
}) : void 0]).spread(function(e) {
return function(e, t) {
var a, o;
return a = [honey.platform, (null != (o = honey.version) && "function" == typeof o.toString ? o.toString() : void 0) || "0.0.0", e, t].join(".")
}
}(this))
}, e.prototype.resetPwd = function(e) {
return $.postAsync(DATA_API_URL + "/request", {
type: "send_password_reset_email",
email: e
}).then(function(e) {
return e
})
}, e
}()
}, {}],
43: [function(e, t, a) {
var o, bind = function(e, t) {
return function() {
return e.apply(t, arguments)
}
};
t.exports = o = function() {
function e() {
this.copy = bind(this.copy, this)
}
return e.prototype.isAvailable = function() {
return honey._native.clipboard.isAvailable()
}, e.prototype.copy = function(e) {
return honey._native.clipboard.copy(e)
}, e
}()
}, {}],
44: [function(e, t, a) {
var o, bind = function(e, t) {
return function() {
return e.apply(t, arguments)
}
};
t.exports = o = function() {
function e() {
this.get = bind(this.get, this), this.set = bind(this.set, this), this._storageLocal = honey.storage.local.prefixed("config"), this._storageSync = honey.storage.sync.prefixed("config")
}
return e.prototype.set = function(e, t, a) {
var o;
return o = (null != a ? a.local : void 0) ? this._storageLocal : this._storageSync, o.set(e, t)
}, e.prototype.get = function(e) {
return Promise.resolve().then(function(t) {
return function() {
return t._storageLocal.get(e)
}
}(this))["catch"](NotFoundError, function(t) {
return function() {
return t._storageSync.get(e)
}
}(this))
}, e
}()
}, {}],
45: [function(e, t, a) {
var o, n;
o = e("@honeyscience/honey-errors"), n = new(e("./util")), window.DATA_API_URL ? honey.logger.debug("DATA_API_URL already set, skipping shared loading") : (window.DATA_API_URL = window.env.DATA_API_URL || "https://d.joinhoney.com", window.STAT_API_URL = window.env.STAT_API_URL || "https://s.joinhoney.com", window.ERR_API_URL = window.env.ERR_API_URL || "https://err.joinhoney.com", window.WEB_URL = window.env.WEB_URL || "https://www.joinhoney.com", window.CDN_URL = window.env.CDN_URL || "https://cdn.joinhoney.com", window.$ = e("jquery"), $.readyAsync = new Promise(function(e) {
return $(function() {
return e()
})
}), window.Version = e("./version"), honey.version = new window.Version(honey.version), Promise.onPossiblyUnhandledRejection(function(e) {
var t;
return null != (t = honey.logger) ? t.error(e) : void 0
}), ["ajax", "get", "post"].map(function(e) {
return $[e + "Async"] = function() {
var t;
return Promise.resolve(t = $[e].apply(this, arguments))["catch"](Promise.TimeoutError, Promise.CancellationError, function(e) {
throw t.abort(), e
})["catch"](function(e) {
var t, a, n, i, r, u;
throw u = parseInt(null != e ? e.status : void 0) || 0, a = o.errorClass(null != (i = e.responseJSON) ? i.error : void 0), n = null != e && null != (r = e.responseJSON) ? r.message : void 0, t = new a(n), t.data = {
status: u,
statusText: null != e ? e.statusText : void 0,
responseText: null != e ? e.responseText : void 0,
responseJSON: null != e ? e.responseJSON : void 0
}, t
})
}
}), Promise.log = function(e) {
return e.then(function(e) {
return function(e) {
return console.log(e), e
}
}(this))["catch"](function(e) {
throw console.error(e), e
})
}, "function" != typeof Object.assign && (Object.assign = n.assign), o.errors.define("Unavailable"), null == honey.util && (honey.util = n), null == honey.logger && (honey.logger = new(e("./logger"))), null == honey.session && (honey.session = new(e("./session"))), null == honey.messages && (honey.messages = new(e("./messages"))), null == honey.storage && (honey.storage = new(e("./storage"))), null == honey.config && (honey.config = new(e("./config"))), null == honey.clipboard && (honey.clipboard = new(e("./clipboard"))), null == honey.errors && (honey.errors = o))
}, {
"./clipboard": 43,
"./config": 44,
"./logger": 46,
"./messages": 47,
"./session": 48,
"./storage": 51,
"./util": 56,
"./version": 57,
"@honeyscience/honey-errors": 63,
jquery: 127
}],
46: [function(e, t, a) {
var o, n, bind = function(e, t) {
return function() {
return e.apply(t, arguments)
}
};
o = {
trace: 100,
debug: 200,
info: 300,
warn: 400,
error: 500
}, t.exports = n = function() {
function e() {
this._console = bind(this._console, this), this._log = bind(this._log, this), this.setLevel = bind(this.setLevel, this), this.getLevel = bind(this.getLevel, this), "production" === honey.environment ? this.setLevel("error") : this.setLevel("debug"), Object.keys(o).forEach(function(e) {
return function(t) {
return Object.defineProperty(e, t, {
value: function(a, o) {
return e._log(t, a, o)
}
})
}
}(this)), Object.defineProperty(this, "console", {
value: this._console
})
}
return e.prototype.getLevel = function() {
return this._level
}, e.prototype.setLevel = function(e) {
var t;
if (!(t = o[e = honey.util.cleanStringLower(e)])) throw new InvalidParameterError("level");
return this._level = e, this._levelNum = t
}, e.prototype._log = function(e, t, a) {
var n, i, r, u, s, c, l, m, p, h, d;
try {
if (!((s = o[e]) >= this._levelNum)) return;
if (null == a && (a = {}), "production" !== honey.environment && (d = (new Date).toISOString(), c = t instanceof Error ? [d + " honey." + e, honey.util.cleanString(t.stack) + "\n"] : (null != t ? t.message : void 0) ? [d + " honey." + e + ": " + honey.util.cleanString(t.message)] : [d + " honey." + e + ": " + honey.util.cleanString(t)], Object.keys(a).length && c.push(a), l = s >= o.error ? "error" : e, console[l].apply(console, c)), s >= o.error) {
if (n = {
level: e,
level_num: s,
name: "Error"
}, t instanceof Error)
for (n.name = honey.util.cleanString(t.name, "Error"), n.stack = honey.util.cleanString(t.stack), n.message = honey.util.cleanString(t.message), m = Object.getOwnPropertyNames(t), i = 0, u = m.length; u > i; i++) r = m[i], "function" != typeof t[r] && "name" !== r && "message" !== r && "stack" !== r && null == a[r] && (a[r] = t[r]);
else "string" == typeof t ? n.message = t : n.message = function() {
try {
return JSON.stringify(t)
} catch (e) {}
}();
try {
n.xtra = Object.keys(a).length ? JSON.stringify(a) : void 0
} catch (g) {}
null != (p = honey.stats) && p.sendException({
exception: n,
referrer_url: "background" === honey.context ? "background" : null != (h = window.location) ? h.href : void 0
})
}
} catch (g) {}
return void 0
}, e.prototype._console = function() {
var e;
return (null != arguments ? arguments[0] : void 0) instanceof Error ? console.error((null != (e = arguments[0]) ? e.stack : void 0) || arguments[0]) : console.log.apply(console, arguments)
}, e
}()
}, {}],
47: [function(e, t, a) {
var o, bind = function(e, t) {
return function() {
return e.apply(t, arguments)
}
},
n = [].indexOf || function(e) {
for (var t = 0, a = this.length; a > t; t++)
if (t in this && this[t] === e) return t;
return -1
};
t.exports = o = function() {
function e() {
this.removeAllNonCoreListeners = bind(this.removeAllNonCoreListeners, this), this.removeCoreListener = bind(this.removeCoreListener, this), this.removeListener = bind(this.removeListener, this), this.addCoreListener = bind(this.addCoreListener, this), this.addListener = bind(this.addListener, this), this.send = bind(this.send, this), this._nonCoreListeners = {}
}
return e.prototype.send = function(e, t, a) {
return honey._native.messages.send(honey.util.cleanStringLower(e), t, a)
}, e.prototype.addListener = function(e, t) {
var a;
if (!(e = honey.util.cleanStringLower(e))) throw new InvalidParametersError("type");
if ("function" != typeof t) throw new InvalidParametersError("listener");
return null == (a = this._nonCoreListeners)[e] && (a[e] = []), n.call(this._nonCoreListeners[e], t) >= 0 ? !1 : (this._nonCoreListeners[e].push(t), honey._native.messages.addListener(e, t))
}, e.prototype.addCoreListener = function(e, t) {
if (!(e = honey.util.cleanStringLower(e))) throw new InvalidParametersError("type");
if ("function" != typeof t) throw new InvalidParametersError("listener");
return honey._native.messages.addListener(e, t)
}, e.prototype.removeListener = function(e, t) {
var a, o, n;
if (!(e = honey.util.cleanStringLower(e))) throw new InvalidParametersError("type");
if ("function" != typeof t) throw new InvalidParametersError("listener");
return (a = null != (o = this._nonCoreListeners) && null != (n = o[e]) ? n.indexOf(t) : void 0) >= 0 && (this._nonCoreListeners[e].splice(a, 1), this._nonCoreListeners[e].length || delete this._nonCoreListeners[e]), honey._native.messages.removeListener(e, t)
}, e.prototype.removeCoreListener = function(e, t) {
if (!(e = honey.util.cleanStringLower(e))) throw new InvalidParametersError("type");
if ("function" != typeof t) throw new InvalidParametersError("listener");
return honey._native.messages.removeListener(e, t)
}, e.prototype.removeAllNonCoreListeners = function() {
var e, t, a, o, n, i, r;
n = this._nonCoreListeners;
for (r in n)
for (o = n[r], i = this._nonCoreListeners[r] || [], e = 0, t = i.length; t > e; e++) a = i[e], honey._native.messages.removeListener(r, a);
return this._nonCoreListeners = {}
}, e
}()
}, {}],
48: [function(e, t, a) {
var o;
t.exports = o = function() {
function e() {}
return e.prototype.get = function() {
return honey._native.session.get()
}, e.prototype.reset = function() {
return honey._native.session.reset()
}, e
}()
}, {}],
49: [function(e, t, a) {
var o, bind = function(e, t) {
return function() {
return e.apply(t, arguments)
}
};
t.exports = o = function() {
function e() {
this.prefixed = bind(this.prefixed, this), this.del = bind(this.del, this), this.set = bind(this.set, this), this.get = bind(this.get, this), this.isAvailable = bind(this.isAvailable, this)
}
return e.prototype.isAvailable = function() {
return this._isAvailable()
}, e.prototype.get = function(e, t) {
return Promise.resolve().then(function(a) {
return function() {
if (!a.isAvailable()) throw new UnavailableError(a.type + "_storage_unavailable");
if (!(e = honey.util.cleanString(e))) throw new InvalidParametersError("key");
return a._get(e, t)
}
}(this))
}, e.prototype.set = function(e, t, a) {
return Promise.resolve().then(function(o) {
return function() {
if (!o.isAvailable()) throw new UnavailableError(o.type + "_storage_unavailable");
if (!(e = honey.util.cleanString(e))) throw new InvalidParametersError("key");
return void 0 === t ? o._del(e, a) : o._set(e, t, a)
}
}(this))
}, e.prototype.del = function(e, t) {
return Promise.resolve().then(function(a) {
return function() {
if (!a.isAvailable()) throw new UnavailableError(a.type + "_storage_unavailable");
if (!(e = honey.util.cleanString(e))) throw new InvalidParametersError("key");
return a._del(e, t)
}
}(this))
}, e.prototype.prefixed = function(e) {
return {
isAvailable: function(e) {
return function() {
return e.isAvailable()
}
}(this),
del: function(t) {
return function(a, o) {
return t.del(e + ":" + a, o)
}
}(this),
get: function(t) {
return function(a, o) {
return t.get(e + ":" + a, o)
}
}(this),
set: function(t) {
return function(a, o, n) {
return t.set(e + ":" + a, o, n)
}
}(this)
}
}, e
}()
}, {}],
50: [function(e, t, a) {
var o;
t.exports = o = function() {
function e() {}
return e.prototype.getAssetURL = function(e) {
return honey._native.storage.bundled.getAssetURL(e)
}, e.prototype.isAvailable = function() {
return honey._native.storage.bundled.isAvailable()
}, e
}()
}, {}],
51: [function(e, t, a) {
var o;
t.exports = o = function() {
function t() {}
return t.prototype.local = new(e("./local")), t.prototype.sync = new(e("./sync")), t.prototype.bundled = new(e("./bundled")), t
}()
}, {
"./bundled": 50,
"./local": 52,
"./sync": 53
}],
52: [function(e, t, a) {
var o, bind = function(e, t) {
return function() {
return e.apply(t, arguments)
}
},
n = function(e, t) {
function a() {
this.constructor = e
}
for (var o in t) i.call(t, o) && (e[o] = t[o]);
return a.prototype = t.prototype, e.prototype = new a, e.__super__ = t.prototype, e
},
i = {}.hasOwnProperty;
t.exports = o = function(e) {
function t() {
this._del = bind(this._del, this), this._set = bind(this._set, this), this._get = bind(this._get, this), this._isAvailable = bind(this._isAvailable, this), t.__super__.constructor.apply(this, arguments), Object.defineProperty(this, "type", {
value: "local"
})
}
return n(t, e), t.prototype._isAvailable = function() {
return honey._native.storage.local.isAvailable()
}, t.prototype._get = function(e, t) {
return honey._native.storage.local.get(e, t)
}, t.prototype._set = function(e, t, a) {
return honey._native.storage.local.set(e, t, a)
}, t.prototype._del = function(e, t) {
return honey._native.storage.local.del(e, t)
}, t
}(e("./base"))
}, {
"./base": 49
}],
53: [function(e, t, a) {
var o, bind = function(e, t) {
return function() {
return e.apply(t, arguments)
}
},
n = function(e, t) {
function a() {
this.constructor = e
}
for (var o in t) i.call(t, o) && (e[o] = t[o]);
return a.prototype = t.prototype, e.prototype = new a, e.__super__ = t.prototype, e
},
i = {}.hasOwnProperty;
t.exports = o = function(e) {
function t() {
this._del = bind(this._del, this), this._set = bind(this._set, this), this._get = bind(this._get, this), this._isAvailable = bind(this._isAvailable, this), t.__super__.constructor.apply(this, arguments), Object.defineProperty(this, "type", {
value: "sync"
})
}
return n(t, e), t.prototype._isAvailable = function() {
return honey._native.storage.sync.isAvailable()
}, t.prototype._get = function(e, t) {
return honey._native.storage.sync.get(e, t)
}, t.prototype._set = function(e, t, a) {
return honey._native.storage.sync.set(e, t, a)
}, t.prototype._del = function(e, t) {
return honey._native.storage.sync.del(e, t)
}, t
}(e("./base"))
}, {
"./base": 49
}],
54: [function(e, t, a) {
t.exports = {
AC: {
currencyCode: "USD",
currencySymbol: "$",
currencyName: "United States Dollar"
},
AD: {
currencyCode: "EUR",
currencySymbol: "\u20ac",
currencyName: "Euro"
},
AF: {
currencyCode: "AFN",
currencySymbol: "\u060b",
currencyName: "Afghanistan Afghani"
},
AG: {
currencyCode: "XCD",
currencySymbol: "$",
currencyName: "East Caribbean Dollar"
},
AI: {
currencyCode: "XCD",
currencySymbol: "$",
currencyName: "East Caribbean Dollar"
},
AL: {
currencyCode: "ALL",
currencySymbol: "Lek",
currencyName: "Albania Lek"
},
AR: {
currencyCode: "ARS",
currencySymbol: "$",
currencyName: "Argentina Peso"
},
AS: {
currencyCode: "USD",
currencySymbol: "$",
currencyName: "United States Dollar"
},
AT: {
currencyCode: "EUR",
currencySymbol: "\u20ac",
currencyName: "Euro"
},
AU: {
currencyCode: "AUD",
currencySymbol: "$",
currencyName: "Australia Dollar"
},
AW: {
currencyCode: "AWG",
currencySymbol: "\u0192",
currencyName: "Aruba Guilder"
},
AZ: {
currencyCode: "AZN",
currencySymbol: "\u043c\u0430\u043d",
currencyName: "Azerbaijan New Manat"
},
BA: {
currencyCode: "BAM",
currencySymbol: "KM",
currencyName: "Bosnia and Herzegovina Convertible Marka"
},
BB: {
currencyCode: "BBD",
currencySymbol: "$",
currencyName: "Barbados Dollar"
},
BE: {
currencyCode: "EUR",
currencySymbol: "\u20ac",
currencyName: "Euro"
},
BG: {
currencyCode: "BGN",
currencySymbol: "\u043b\u0432",
currencyName: "Bulgaria Lev"
},
BL: {
currencyCode: "EUR",
currencySymbol: "\u20ac",
currencyName: "Euro"
},
BM: {
currencyCode: "BMD",
currencySymbol: "$",
currencyName: "Bermuda Dollar"
},
BN: {
currencyCode: "BND",
currencySymbol: "$",
currencyName: "Brunei Darussalam Dollar"
},
BO: {
currencyCode: "BOB",
currencySymbol: "$b",
currencyName: "Bolivia Boliviano"
},
BQ: {
currencyCode: "USD",
currencySymbol: "$",
currencyName: "United States Dollar"
},
BR: {
currencyCode: "BRL",
currencySymbol: "R$",
currencyName: "Brazil Real"
},
BS: {
currencyCode: "BSD",
currencySymbol: "$",
currencyName: "Bahamas Dollar"
},
BT: {
currencyCode: "INR",
currencySymbol: "Rs.",
currencyName: "India Rupee"
},
BV: {
currencyCode: "NOK",
currencySymbol: "kr",
currencyName: "Norway Krone"
},
BW: {
currencyCode: "BWP",
currencySymbol: "P",
currencyName: "Botswana Pula"
},
BY: {
currencyCode: "BYR",
currencySymbol: "p.",
currencyName: "Belarus Ruble"
},
BZ: {
currencyCode: "BZD",
currencySymbol: "BZ$",
currencyName: "Belize Dollar"
},
CA: {
currencyCode: "CAD",
currencySymbol: "$",
currencyName: "Canada Dollar"
},
CC: {
currencyCode: "AUD",
currencySymbol: "$",
currencyName: "Australia Dollar"
},
CH: {
currencyCode: "CHF",
currencySymbol: "CHF",
currencyName: "Switzerland Franc"
},
CK: {
currencyCode: "NZD",
currencySymbol: "$",
currencyName: "New Zealand Dollar"
},
CL: {
currencyCode: "CLP",
currencySymbol: "$",
currencyName: "Chile Peso"
},
CN: {
currencyCode: "CNY",
currencySymbol: "\xa5",
currencyName: "China Yuan Renminbi"
},
CO: {
currencyCode: "COP",
currencySymbol: "$",
currencyName: "Colombia Peso"
},
CP: {
currencyCode: "EUR",
currencySymbol: "\u20ac",
currencyName: "Euro"
},
CR: {
currencyCode: "CRC",
currencySymbol: "\u20a1",
currencyName: "Costa Rica Colon"
},
CU: {
currencyCode: "CUP",
currencySymbol: "\u20b1",
currencyName: "Cuba Peso"
},
CW: {
currencyCode: "ANG",
currencySymbol: "\u0192",
currencyName: "Netherlands Antilles Guilder"
},
CX: {
currencyCode: "AUD",
currencySymbol: "$",
currencyName: "Australia Dollar"
},
CY: {
currencyCode: "EUR",
currencySymbol: "\u20ac",
currencyName: "Euro"
},
CZ: {
currencyCode: "CZK",
currencySymbol: "K\u010d",
currencyName: "Czech Republic Koruna"
},
DE: {
currencyCode: "EUR",
currencySymbol: "\u20ac",
currencyName: "Euro"
},
DG: {
currencyCode: "USD",
currencySymbol: "$",
currencyName: "United States Dollar"
},
DK: {
currencyCode: "DKK",
currencySymbol: "kr",
currencyName: "Denmark Krone"
},
DM: {
currencyCode: "XCD",
currencySymbol: "$",
currencyName: "East Caribbean Dollar"
},
DO: {
currencyCode: "DOP",
currencySymbol: "RD$",
currencyName: "Dominican Republic Peso"
},
EA: {
currencyCode: "EUR",
currencySymbol: "\u20ac",
currencyName: "Euro"
},
EC: {
currencyCode: "USD",
currencySymbol: "$",
currencyName: "United States Dollar"
},
EE: {
currencyCode: "EUR",
currencySymbol: "\u20ac",
currencyName: "Euro"
},
EG: {
currencyCode: "EGP",
currencySymbol: "\xa3",
currencyName: "Egypt Pound"
},
ES: {
currencyCode: "EUR",
currencySymbol: "\u20ac",
currencyName: "Euro"
},
EU: {
currencyCode: "EUR",
currencySymbol: "\u20ac",
currencyName: "Euro"
},
FI: {
currencyCode: "EUR",
currencySymbol: "\u20ac",
currencyName: "Euro"
},
FJ: {
currencyCode: "FJD",
currencySymbol: "$",
currencyName: "Fiji Dollar"
},
FK: {
currencyCode: "FKP",
currencySymbol: "\xa3",
currencyName: "Falkland Islands (Malvinas) Pound"
},
FM: {
currencyCode: "USD",
currencySymbol: "$",
currencyName: "United States Dollar"
},
FO: {
currencyCode: "DKK",
currencySymbol: "kr",
currencyName: "Denmark Krone"
},
FR: {
currencyCode: "EUR",
currencySymbol: "\u20ac",
currencyName: "Euro"
},
FX: {
currencyCode: "EUR",
currencySymbol: "\u20ac",
currencyName: "Euro"
},
GB: {
currencyCode: "GBP",
currencySymbol: "\xa3",
currencyName: "United Kingdom Pound"
},
GD: {
currencyCode: "XCD",
currencySymbol: "$",
currencyName: "East Caribbean Dollar"
},
GF: {
currencyCode: "EUR",
currencySymbol: "\u20ac",
currencyName: "Euro"
},
GG: {
currencyCode: "GBP",
currencySymbol: "\xa3",
currencyName: "United Kingdom Pound"
},
GI: {
currencyCode: "GIP",
currencySymbol: "\xa3",
currencyName: "Gibraltar Pound"
},
GL: {
currencyCode: "DKK",
currencySymbol: "kr",
currencyName: "Denmark Krone"
},
GP: {
currencyCode: "EUR",
currencySymbol: "\u20ac",
currencyName: "Euro"
},
GR: {
currencyCode: "EUR",
currencySymbol: "\u20ac",
currencyName: "Euro"
},
GS: {
currencyCode: "GBP",
currencySymbol: "\xa3",
currencyName: "United Kingdom Pound"
},
GT: {
currencyCode: "GTQ",
currencySymbol: "Q",
currencyName: "Guatemala Quetzal"
},
GU: {
currencyCode: "USD",
currencySymbol: "$",
currencyName: "United States Dollar"
},
GY: {
currencyCode: "GYD",
currencySymbol: "$",
currencyName: "Guyana Dollar"
},
HK: {
currencyCode: "HKD",
currencySymbol: "$",
currencyName: "Hong Kong Dollar"
},
HM: {
currencyCode: "AUD",
currencySymbol: "$",
currencyName: "Australia Dollar"
},
HN: {
currencyCode: "HNL",
currencySymbol: "L",
currencyName: "Honduras Lempira"
},
HR: {
currencyCode: "HRK",
currencySymbol: "kn",
currencyName: "Croatia Kuna"
},
HU: {
currencyCode: "HUF",
currencySymbol: "Ft",
currencyName: "Hungary Forint"
},
IC: {
currencyCode: "EUR",
currencySymbol: "\u20ac",
currencyName: "Euro"
},
ID: {
currencyCode: "IDR",
currencySymbol: "Rp",
currencyName: "Indonesia Rupiah"
},
IE: {
currencyCode: "EUR",
currencySymbol: "\u20ac",
currencyName: "Euro"
},
IL: {
currencyCode: "ILS",
currencySymbol: "\u20aa",
currencyName: "Israel Shekel"
},
IM: {
currencyCode: "GBP",
currencySymbol: "\xa3",
currencyName: "United Kingdom Pound"
},
IN: {
currencyCode: "INR",
currencySymbol: "",
currencyName: "India Rupee"
},
IO: {
currencyCode: "USD",
currencySymbol: "$",
currencyName: "United States Dollar"
},
IR: {
currencyCode: "IRR",
currencySymbol: "\ufdfc",
currencyName: "Iran Rial"
},
IS: {
currencyCode: "ISK",
currencySymbol: "kr",
currencyName: "Iceland Krona"
},
IT: {
currencyCode: "EUR",
currencySymbol: "\u20ac",
currencyName: "Euro"
},
JE: {
currencyCode: "GBP",
currencySymbol: "\xa3",
currencyName: "United Kingdom Pound"
},
JM: {
currencyCode: "JMD",
currencySymbol: "J$",
currencyName: "Jamaica Dollar"
},
JP: {
currencyCode: "JPY",
currencySymbol: "\xa5",
currencyName: "Japan Yen"
},
KG: {
currencyCode: "KGS",
currencySymbol: "\u043b\u0432",
currencyName: "Kyrgyzstan Som"
},
KH: {
currencyCode: "KHR",
currencySymbol: "\u17db",
currencyName: "Cambodia Riel"
},
KI: {
currencyCode: "AUD",
currencySymbol: "$",
currencyName: "Australia Dollar"
},
KN: {
currencyCode: "XCD",
currencySymbol: "$",
currencyName: "East Caribbean Dollar"
},
KP: {
currencyCode: "KPW",
currencySymbol: "\u20a9",
currencyName: "Korea (North) Won"
},
KR: {
currencyCode: "KRW",
currencySymbol: "\u20a9",
currencyName: "Korea (South) Won"
},
KY: {
currencyCode: "KYD",
currencySymbol: "$",
currencyName: "Cayman Islands Dollar"
},
KZ: {
currencyCode: "KZT",
currencySymbol: "\u043b\u0432",
currencyName: "Kazakhstan Tenge"
},
LA: {
currencyCode: "LAK",
currencySymbol: "\u20ad",
currencyName: "Laos Kip"
},
LB: {
currencyCode: "LBP",
currencySymbol: "\xa3",
currencyName: "Lebanon Pound"
},
LC: {
currencyCode: "XCD",
currencySymbol: "$",
currencyName: "East Caribbean Dollar"
},
LI: {
currencyCode: "CHF",
currencySymbol: "CHF",
currencyName: "Switzerland Franc"
},
LK: {
currencyCode: "LKR",
currencySymbol: "\u20a8",
currencyName: "Sri Lanka Rupee"
},
LR: {
currencyCode: "LRD",
currencySymbol: "$",
currencyName: "Liberia Dollar"
},
LT: {
currencyCode: "LTL",
currencySymbol: "Lt",
currencyName: "Lithuania Litas"
},
LU: {
currencyCode: "EUR",
currencySymbol: "\u20ac",
currencyName: "Euro"
},
LV: {
currencyCode: "LVL",
currencySymbol: "Ls",
currencyName: "Latvia Lat"
},
MC: {
currencyCode: "EUR",
currencySymbol: "\u20ac",
currencyName: "Euro"
},
ME: {
currencyCode: "EUR",
currencySymbol: "\u20ac",
currencyName: "Euro"
},
MF: {
currencyCode: "EUR",
currencySymbol: "\u20ac",
currencyName: "Euro"
},
MH: {
currencyCode: "USD",
currencySymbol: "$",
currencyName: "United States Dollar"
},
MK: {
currencyCode: "MKD",
currencySymbol: "\u0434\u0435\u043d",
currencyName: "Macedonia Denar"
},
MN: {
currencyCode: "MNT",
currencySymbol: "\u20ae",
currencyName: "Mongolia Tughrik"
},
MP: {
currencyCode: "USD",
currencySymbol: "$",
currencyName: "United States Dollar"
},
MQ: {
currencyCode: "EUR",
currencySymbol: "\u20ac",
currencyName: "Euro"
},
MS: {
currencyCode: "XCD",
currencySymbol: "$",
currencyName: "East Caribbean Dollar"
},
MT: {
currencyCode: "EUR",
currencySymbol: "\u20ac",
currencyName: "Euro"
},
MU: {
currencyCode: "MUR",
currencySymbol: "\u20a8",
currencyName: "Mauritius Rupee"
},
MX: {
currencyCode: "MXN",
currencySymbol: "$",
currencyName: "Mexico Peso"
},
MY: {
currencyCode: "MYR",
currencySymbol: "RM",
currencyName: "Malaysia Ringgit"
},
MZ: {
currencyCode: "MZN",
currencySymbol: "MT",
currencyName: "Mozambique Metical"
},
NA: {
currencyCode: "NAD",
currencySymbol: "$",
currencyName: "Namibia Dollar"
},
NF: {
currencyCode: "AUD",
currencySymbol: "$",
currencyName: "Australia Dollar"
},
NG: {
currencyCode: "NGN",
currencySymbol: "\u20a6",
currencyName: "Nigeria Naira"
},
NI: {
currencyCode: "NIO",
currencySymbol: "C$",
currencyName: "Nicaragua Cordoba"
},
NL: {
currencyCode: "EUR",
currencySymbol: "\u20ac",
currencyName: "Euro"
},
NO: {
currencyCode: "NOK",
currencySymbol: "kr",
currencyName: "Norway Krone"
},
NP: {
currencyCode: "NPR",
currencySymbol: "\u20a8",
currencyName: "Nepal Rupee"
},
NR: {
currencyCode: "AUD",
currencySymbol: "$",
currencyName: "Australia Dollar"
},
NU: {
currencyCode: "NZD",
currencySymbol: "$",
currencyName: "New Zealand Dollar"
},
NZ: {
currencyCode: "NZD",
currencySymbol: "$",
currencyName: "New Zealand Dollar"
},
OM: {
currencyCode: "OMR",
currencySymbol: "\ufdfc",
currencyName: "Oman Rial"
},
PA: {
currencyCode: "PAB",
currencySymbol: "B/.",
currencyName: "Panama Balboa"
},
PE: {
currencyCode: "PEN",
currencySymbol: "S/.",
currencyName: "Peru Nuevo Sol"
},
PH: {
currencyCode: "PHP",
currencySymbol: "\u20b1",
currencyName: "Philippines Peso"
},
PK: {
currencyCode: "PKR",
currencySymbol: "\u20a8",
currencyName: "Pakistan Rupee"
},
PL: {
currencyCode: "PLN",
currencySymbol: "z\u0142",
currencyName: "Poland Zloty"
},
PM: {
currencyCode: "EUR",
currencySymbol: "\u20ac",
currencyName: "Euro"
},
PN: {
currencyCode: "NZD",
currencySymbol: "$",
currencyName: "New Zealand Dollar"
},
PR: {
currencyCode: "USD",
currencySymbol: "$",
currencyName: "United States Dollar"
},
PT: {
currencyCode: "EUR",
currencySymbol: "\u20ac",
currencyName: "Euro"
},
PW: {
currencyCode: "USD",
currencySymbol: "$",
currencyName: "United States Dollar"
},
PY: {
currencyCode: "PYG",
currencySymbol: "Gs",
currencyName: "Paraguay Guarani"
},
QA: {
currencyCode: "QAR",
currencySymbol: "\ufdfc",
currencyName: "Qatar Riyal"
},
RE: {
currencyCode: "EUR",
currencySymbol: "\u20ac",
currencyName: "Euro"
},
RO: {
currencyCode: "RON",
currencySymbol: "lei",
currencyName: "Romania New Leu"
},
RS: {
currencyCode: "RSD",
currencySymbol: "\u0414\u0438\u043d.",
currencyName: "Serbia Dinar"
},
RU: {
currencyCode: "RUB",
currencySymbol: "\u0440\u0443\u0431",
currencyName: "Russia Ruble"
},
SA: {
currencyCode: "SAR",
currencySymbol: "\ufdfc",
currencyName: "Saudi Arabia Riyal"
},
SB: {
currencyCode: "SBD",
currencySymbol: "$",
currencyName: "Solomon Islands Dollar"
},
SC: {
currencyCode: "SCR",
currencySymbol: "\u20a8",
currencyName: "Seychelles Rupee"
},
SE: {
currencyCode: "SEK",
currencySymbol: "kr",
currencyName: "Sweden Krona"
},
SG: {
currencyCode: "SGD",
currencySymbol: "$",
currencyName: "Singapore Dollar"
},
SH: {
currencyCode: "SHP",
currencySymbol: "\xa3",
currencyName: "Saint Helena Pound"
},
SI: {
currencyCode: "EUR",
currencySymbol: "\u20ac",
currencyName: "Euro"
},
SJ: {
currencyCode: "NOK",
currencySymbol: "kr",
currencyName: "Norway Krone"
},
SK: {
currencyCode: "EUR",
currencySymbol: "\u20ac",
currencyName: "Euro"
},
SM: {
currencyCode: "EUR",
currencySymbol: "\u20ac",
currencyName: "Euro"
},
SO: {
currencyCode: "SOS",
currencySymbol: "S",
currencyName: "Somalia Shilling"
},
SR: {
currencyCode: "SRD",
currencySymbol: "$",
currencyName: "Suriname Dollar"
},
SU: {
currencyCode: "RUB",
currencySymbol: "\u0440\u0443\u0431",
currencyName: "Russia Ruble"
},
SV: {
currencyCode: "USD",
currencySymbol: "$",
currencyName: "United States Dollar"
},
SX: {
currencyCode: "ANG",
currencySymbol: "\u0192",
currencyName: "Netherlands Antilles Guilder"
},
SY: {
currencyCode: "SYP",
currencySymbol: "\xa3",
currencyName: "Syria Pound"
},
TA: {
currencyCode: "GBP",
currencySymbol: "\xa3",
currencyName: "United Kingdom Pound"
},
TC: {
currencyCode: "USD",
currencySymbol: "$",
currencyName: "United States Dollar"
},
TF: {
currencyCode: "EUR",
currencySymbol: "\u20ac",
currencyName: "Euro"
},
TH: {
currencyCode: "THB",
currencySymbol: "\u0e3f",
currencyName: "Thailand Baht"
},
TK: {
currencyCode: "NZD",
currencySymbol: "$",
currencyName: "New Zealand Dollar"
},
TL: {
currencyCode: "USD",
currencySymbol: "$",
currencyName: "United States Dollar"
},
TR: {
currencyCode: "TRY",
currencySymbol: "",
currencyName: "Turkey Lira"
},
TT: {
currencyCode: "TTD",
currencySymbol: "TT$",
currencyName: "Trinidad and Tobago Dollar"
},
TV: {
currencyCode: "AUD",
currencySymbol: "$",
currencyName: "Australia Dollar"
},
TW: {
currencyCode: "TWD",
currencySymbol: "NT$",
currencyName: "Taiwan New Dollar"
},
UA: {
currencyCode: "UAH",
currencySymbol: "\u20b4",
currencyName: "Ukraine Hryvnia"
},
UK: {
currencyCode: "GBP",
currencySymbol: "\xa3",
currencyName: "United Kingdom Pound"
},
UM: {
currencyCode: "USD",
currencySymbol: "$",
currencyName: "United States Dollar"
},
US: {
currencyCode: "USD",
currencySymbol: "$",
currencyName: "United States Dollar"
},
UY: {
currencyCode: "UYU",
currencySymbol: "$U",
currencyName: "Uruguay Peso"
},
UZ: {
currencyCode: "UZS",
currencySymbol: "\u043b\u0432",
currencyName: "Uzbekistan Som"
},
VA: {
currencyCode: "EUR",
currencySymbol: "\u20ac",
currencyName: "Euro"
},
VC: {
currencyCode: "XCD",
currencySymbol: "$",
currencyName: "East Caribbean Dollar"
},
VE: {
currencyCode: "VEF",
currencySymbol: "Bs",
currencyName: "Venezuela Bolivar"
},
VG: {
currencyCode: "USD",
currencySymbol: "$",
currencyName: "United States Dollar"
},
VI: {
currencyCode: "USD",
currencySymbol: "$",
currencyName: "United States Dollar"
},
VN: {
currencyCode: "VND",
currencySymbol: "\u20ab",
currencyName: "Viet Nam Dong"
},
YE: {
currencyCode: "YER",
currencySymbol: "\ufdfc",
currencyName: "Yemen Rial"
},
YT: {
currencyCode: "EUR",
currencySymbol: "\u20ac",
currencyName: "Euro"
},
ZA: {
currencyCode: "ZAR",
currencySymbol: "R",
currencyName: "South Africa Rand"
},
ZW: {
currencyCode: "USD",
currencySymbol: "$",
currencyName: "United States Dollar"
}
}
}, {}],
55: [function(e, t, a) {
var o, bind = function(e, t) {
return function() {
return e.apply(t, arguments)
}
};
o = e("long"), t.exports = new(function() {
function e() {
this.create = bind(this.create, this), this._localId = parseInt(Math.random().toString().slice(-6)) % 256
}
return e.prototype.create = function() {
return (new o).add(10 * Moment().valueOf()).shiftLeft(11).and(new o(4294965248, 4294967295)).add(parseInt(Math.random().toString().slice(-6)) % 2048).shiftLeft(8).and(new o(4294967280, 4294967295)).add(this._localId).toString(10)
}, e
}())
}, {
"long": 129
}],
56: [function(e, t, a) {
var o, n, i, r, u, s, c, bind = function(e, t) {
return function() {
return e.apply(t, arguments)
}
},
l = [].slice;
o = e("accounting"), c = e("./honey_id"), n = e("./currencies"), u = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", r = /([\d+][\,\.\d+]+)/, i = /([,\.\d]+)(\.\d{2}|\,\d{2})\b/, t.exports = s = function() {
function e() {
this.retainFocus = bind(this.retainFocus, this), this.execTopFrameJS = bind(this.execTopFrameJS, this)
}
return e.prototype.createId = c.create, e.prototype.cleanUp = function(e) {
var t, a;
try {
if (a = $("#undefined")[0], a && document.body.removeChild(a), t = $("#" + e)[0]) return document.body.removeChild(t)
} catch (o) {}
}, e.prototype.execTopFrameJS = function(e, a) {
var o, n, i;
return null == a && (a = 1e4), o = t.exports.prototype.randomString(32), n = $("<div id='" + o + "' />"), $("body").append(n), i = document.createElement("script"), i.textContent = "javascript:( function () { var value = null; try { value = JSON.stringify(function(){" + e + "}()); } catch(e) { e.error = true; value = JSON.stringify(e, ['message', 'name', 'error']); } document.getElementById('" + o + "').setAttribute('value', value); }() )", new Promise(function(e) {
return function(t, r) {
var u, s;
return s = setTimeout(function() {
return u.disconnect(), e.cleanUp(o), r(new Error("timeout"))
}, a), u = new MutationObserver(function(a) {
var n, i, c, l;
return c = null != (i = a[0]) ? i.target : void 0, l = null != c && "function" == typeof c.getAttribute ? c.getAttribute("value") : void 0, l = l && "undefined" !== l ? JSON.parse(l) : null, u.disconnect(), clearTimeout(s), e.cleanUp(o), (null != l ? l.error : void 0) ? (n = new Error(l.message), n.name = l.name, r(n)) : t(l)
}), u.observe(n[0], {
attributes: !0
}), (document.head || document.documentElement).appendChild(i), i.remove()
}
}(this))
}, e.prototype.randomString = function(e) {
var t;
return function() {
t = [];
for (var a = 0; e >= 0 ? e > a : a > e; e >= 0 ? a++ : a--) t.push(a);
return t
}.apply(this).map(function() {
return u.charAt(Math.floor(Math.random() * u.length))
}).join("")
}, e.prototype.cleanPrice = function(e) {
var a, n;
return e = honey.util.cleanString(e), n = (null != (a = e.match(r)) ? a[1] : void 0) || e, Number(o.unformat(n, t.exports.prototype.decimalSeparator(n)))
}, e.prototype.decimalSeparator = function(e) {
var t, a;
return (null != (t = e.match(i)) && null != (a = t[2]) ? a.substring(0, 1) : void 0) || "."
}, e.prototype.formatPrice = function(e, t, a, n) {
return null == t && (t = "US"), null == a && (a = ","), null == n && (n = "."), o.formatMoney(e, honey.util.getCountryCurrency(t), 2, a, n)
}, e.prototype.getCountryCurrencyCode = function(e) {
var t;
return (null != (t = n[e.toUpperCase()]) ? t.currencyCode : void 0) || "USD"
}, e.prototype.getCountryCurrency = function(e) {
var t;
return (null != (t = n[e.toUpperCase()]) ? t.currencySymbol : void 0) || "$"
}, e.prototype.parseInt = function(e, t) {
return null == t && (t = 0), parseInt(e) || t
}, e.prototype.parsePositiveInt = function(e, t) {
return null == t && (t = 0), Math.max(0, parseInt(e)) || t
}, e.prototype.parseFloat = function(e, t) {
return null == t && (t = 0), parseFloat(e) || t
}, e.prototype.parsePositiveFloat = function(e, t) {
return null == t && (t = 0), Math.max(0, parseFloat(e)) || t
}, e.prototype.round = function(e, t) {
var a;
return a = Math.pow(10, Math.max(0, t) || 0), Math.round(e * a) / a
}, e.prototype.cleanString = function(e, t) {
return null == t && (t = ""), ("" + (e || "")).trim() || t
}, e.prototype.cleanStringLower = function(e, t) {
return null == t && (t = ""), ("" + (e || "")).trim().toLowerCase() || t
}, e.prototype.cleanStringUpper = function(e, t) {
return null == t && (t = ""), ("" + (e || "")).trim().toUpperCase() || t
}, e.prototype.replaceAll = function(e, t, a) {
return t instanceof RegExp || (t = new RegExp(t.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1"), "g")), e.replace(t, a)
}, e.prototype.assign = function() {
var e, t, a, o, n, i, r;
for (i = arguments[0], n = 2 <= arguments.length ? l.call(arguments, 1) : [], t = 0, o = n.length; o > t; t++) {
e = n[t];
for (a in e) r = e[a], i[a] = r
}
return i
}, e.prototype.lowerClone = function(e) {
var t, a, o;
a = {};
for (t in e) o = e[t], o && "object" == typeof o && (o = honey.util.lowerClone(o)), a[honey.util.cleanStringLower(t)] = o;
return a
}, e.prototype.retainFocus = function(e) {
var t, a;
return t = e || window.event, a = t.path || t.composedPath && t.composedPath(), a && a[0] ? (a[0].focus(), t.stopPropagation(), t) : void 0
}, e
}()
}, {
"./currencies": 54,
"./honey_id": 55,
accounting: 74
}],
57: [function(e, t, a) {
var bind = function(e, t) {
return function() {
return e.apply(t, arguments)
}
};
t.exports = function() {
function e(e) {
this.valueOf = bind(this.valueOf, this), this.toString = bind(this.toString, this), this.lte = bind(this.lte, this), this.gte = bind(this.gte, this), this.gt = bind(this.gt, this), this.lt = bind(this.lt, this), this.ne = bind(this.ne, this), this.eq = bind(this.eq, this), this._v = function() {
switch (!1) {
case "string" != typeof e:
return e.split(".", 3);
case !(e instanceof Version):
return [e.maj, e.min, e.rev];
default:
return [null != e ? e[0] : void 0, null != e ? e[1] : void 0, null != e ? e[2] : void 0]
}
}().map(function(e) {
if ((e = parseInt(e)) >= 0) return e;
throw new Error("invalid_version")
}), Object.defineProperty(this, "maj", {
value: this._v[0]
}), Object.defineProperty(this, "min", {
value: this._v[1]
}), Object.defineProperty(this, "rev", {
value: this._v[2]
}), Object.freeze(this._v), Object.freeze(this)
}
return e.prototype.eq = function(e) {
var t, a, o, n, i;
try {
for (e = new Version(e), n = this._v, t = a = 0, o = n.length; o > a; t = ++a)
if (i = n[t], i !== e._v[t]) return !1;
return !0
} catch (r) {
return !1
}
}, e.prototype.ne = function(e) {
return !this.eq(e)
}, e.prototype.lt = function(e) {
var t, a, o, n, i;
try {
for (e = new Version(e), n = this._v, t = a = 0, o = n.length; o > a; t = ++a) {
if (i = n[t], i < e._v[t]) return !0;
if (i > e._v[t]) return !1
}
} catch (r) {}
return !1
}, e.prototype.gt = function(e) {
var t, a, o, n, i;
try {
for (e = new Version(e), n = this._v, t = a = 0, o = n.length; o > a; t = ++a) {
if (i = n[t], i > e._v[t]) return !0;
if (i < e._v[t]) return !1
}
} catch (r) {}
return !1
}, e.prototype.gte = function(e) {
return !this.lt(e)
}, e.prototype.lte = function(e) {
return !this.gt(e)
}, e.prototype.toString = function() {
return this._v.join(".")
}, e.prototype.valueOf = function() {
return this._v.join(".")
}, e
}()
}, {}],
58: [function(e, t, a) {
t.exports = {
interval: 1800,
domains: ["tdbank\\.com", "wellsfargo\\.com", "bankofamerica\\.com"],
urls: []
}
}, {}],
59: [function(e, t, a) {
"use strict";
function o(e) {
return e && i[e] ? i[e] : Error
}
var n = e("../errors"),
i = (n.errors, {
Unauthorized: UnauthorizedError,
InvalidCredentials: InvalidCredentialsError,
EmailLocked: EmailLockedError,
NotFound: NotFoundError,
AlreadyExists: AlreadyExistsError,
InsufficientBalance: InsufficientBalanceError,
MissingParameters: MissingParametersError,
InvalidParameters: InvalidParametersError,
Profanity: ProfanityError,
FacebookNoEmail: FacebookNoEmailError,
NothingToUpdate: NothingToUpdateError,
RequestThrottled: RequestThrottledError
});
t.exports = o
}, {
"../errors": 61
}],
60: [function(e, t, a) {
"use strict";
function o(e) {
return e.name && n[e.name] ? n[e.name] : 500
}
var n = {
UnauthorizedError: 401,
InvalidCredentialsError: 401,
EmailLockedError: 403,
InsufficientBalanceError: 403,
NotFoundError: 404,
AlreadyExistsError: 409,
MissingParametersError: 400,
InvalidParametersError: 400,
ProfanityError: 400,
FacebookNoEmailError: 400,
NothingToUpdateError: 400,
RequestThrottledError: 400
};
t.exports = o
}, {}],
61: [function(e, t, a) {
"use strict";
function o(e, t, a) {
return t in e ? Object.defineProperty(e, t, {
value: a,
enumerable: !0,
configurable: !0,
writable: !0
}) : e[t] = a, e
}
function n(e, t) {
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
}
var i, r = e("change-case"),
u = e("./getGlobal"),
s = function(e) {
var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : u,
a = function(e, t, a) {
var o = {
value: a,
configurable: !0,
enumerable: !1,
writable: !0
};
return Object.defineProperty(e, t, o)
},
o = t[e + "Error"] = function() {
function t(o) {
n(this, t), a(this, "name", e + "Error"), a(this, "message", o || r.snake(e)), this.stack = new Error(o).stack
}
return t
}();
return o.prototype = Object.create(Error.prototype), o
},
c = (i = {
RequestThrottledError: "RequestThrottledError",
UnauthorizedError: "UnauthorizedError",
NotImplementedError: "NotImplementedError",
NotFoundError: "NotFoundError",
AlreadyExistsError: "AlreadyExistsError",
CapacityExceededError: "CapacityExceededError",
OperationSkippedError: "OperationSkippedError",
ResourceLockedError: "ResourceLockedError",
ConfigError: "ConfigError",
Datastore: "DatastoreError",
InvalidConfigurationError: "InvalidConfigurationError",
InvalidParametersError: "InvalidParametersError",
InvalidCredentialsError: "InvalidCredentialsError",
InvalidResponseError: "InvalidResponseError",
InvalidDataError: "InvalidDataError",
NotSupportedError: "NotSupportedError",
NotStartedError: "NotStartedError",
ExpiredError: "ExpiredError",
UpToDateError: "UpToDateError",
ServerError: "ServerError",
BlacklistError: "BlacklistError",
FatalError: "FatalError"
}, o(i, "RequestThrottledError", "RequestThrottledError"), o(i, "UnauthorizedError", "UnauthorizedError"), o(i, "InsufficientBalanceError", "InsufficientBalanceError"), o(i, "InsufficientResourcesError", "InsufficientResourcesError"), o(i, "EmailLockedError", "EmailLockedError"), o(i, "MissingParametersError", "MissingParametersError"), o(i, "ProfanityError", "ProfanityError"), o(i, "FacebookNoEmailError", "FacebookNoEmailError"), o(i, "NothingToUpdateError", "NothingToUpdateError"), o(i, "InvalidMappingError", "InvalidMappingError"), o(i, "EventNotSupportedError", "EventNotSupportedError"), o(i, "EventIgnoredError", "EventIgnoredError"), o(i, "MessageListenerError", "MessageListenerError"), o(i, "NoMessageListenersError", "NoMessageListenersError"), o(i, "TimeoutError", "TimeoutError"), o(i, "CancellationError", "CancellationError"), o(i, "DomainBlacklistedError", "DomainBlacklistedError"), o(i, "StorageError", "StorageError"), i);
Object.keys(c).forEach(function(e) {
s(e.slice(0, -5))
}), t.exports = {
errors: c,
define: s
}
}, {
"./getGlobal": 62,
"change-case": 65
}],
62: [function(e, t, a) {
(function(e) {
"use strict";
var a = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
return typeof e
} : function(e) {
return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
};
t.exports = "object" === ("undefined" == typeof self ? "undefined" : a(self)) && self.self === self && self || "object" === ("undefined" == typeof e ? "undefined" : a(e)) && e.global === e && e || void 0
}).call(this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {})
}, {}],
63: [function(e, t, a) {
"use strict";
t.exports = {
errorClass: e("./error-to-class"),
getStatusCode: e("./error-to-statuscode"),
errors: e("./errors")
}
}, {
"./error-to-class": 59,
"./error-to-statuscode": 60,
"./errors": 61
}],
64: [function(e, t, a) {
var o = e("upper-case"),
n = e("no-case");
t.exports = function(e, t, a) {
var i = n(e, t);
return a || (i = i.replace(/ (?=\d)/g, "_")), i.replace(/ (.)/g, function(e, a) {
return o(a, t)
})
}
}, {
"no-case": 133,
"upper-case": 176
}],
65: [function(e, t, a) {
a.no = a.noCase = e("no-case"), a.dot = a.dotCase = e("dot-case"), a.swap = a.swapCase = e("swap-case"), a.path = a.pathCase = e("path-case"), a.upper = a.upperCase = e("upper-case"), a.lower = a.lowerCase = e("lower-case"), a.camel = a.camelCase = e("camel-case"), a.snake = a.snakeCase = e("snake-case"), a.title = a.titleCase = e("title-case"), a.param = a.paramCase = e("param-case"), a.header = a.headerCase = e("header-case"), a.pascal = a.pascalCase = e("pascal-case"), a.constant = a.constantCase = e("constant-case"), a.sentence = a.sentenceCase = e("sentence-case"), a.isUpper = a.isUpperCase = e("is-upper-case"), a.isLower = a.isLowerCase = e("is-lower-case"), a.ucFirst = a.upperCaseFirst = e("upper-case-first"), a.lcFirst = a.lowerCaseFirst = e("lower-case-first")
}, {
"camel-case": 64,
"constant-case": 66,
"dot-case": 67,
"header-case": 120,
"is-lower-case": 124,
"is-upper-case": 125,
"lower-case": 131,
"lower-case-first": 130,
"no-case": 133,
"param-case": 68,
"pascal-case": 69,
"path-case": 70,
"sentence-case": 71,
"snake-case": 72,
"swap-case": 172,
"title-case": 73,
"upper-case": 176,
"upper-case-first": 175
}],
66: [function(e, t, a) {
var o = e("upper-case"),
n = e("snake-case");
t.exports = function(e, t) {
return o(n(e, t), t)
}
}, {
"snake-case": 72,
"upper-case": 176
}],
67: [function(e, t, a) {
var o = e("no-case");
t.exports = function(e, t) {
return o(e, t, ".")
}
}, {
"no-case": 133
}],
68: [function(e, t, a) {
var o = e("no-case");
t.exports = function(e, t) {
return o(e, t, "-")
}
}, {
"no-case": 133
}],
69: [function(e, t, a) {
var o = e("camel-case"),
n = e("upper-case-first");
t.exports = function(e, t, a) {
return n(o(e, t, a), t)
}
}, {
"camel-case": 64,
"upper-case-first": 175
}],
70: [function(e, t, a) {
var o = e("no-case");
t.exports = function(e, t) {
return o(e, t, "/")
}
}, {
"no-case": 133
}],
71: [function(e, t, a) {
var o = e("no-case"),
n = e("upper-case-first");
t.exports = function(e, t) {
return n(o(e, t), t)
}
}, {
"no-case": 133,
"upper-case-first": 175
}],
72: [function(e, t, a) {
var o = e("no-case");
t.exports = function(e, t) {
return o(e, t, "_")
}
}, {
"no-case": 133
}],
73: [function(e, t, a) {
var o = e("no-case"),
n = e("upper-case");
t.exports = function(e, t) {
return o(e, t).replace(/^.| ./g, function(e) {
return n(e, t)
})
}
}, {
"no-case": 133,
"upper-case": 176
}],
74: [function(e, t, a) {
! function(e, o) {
function n(e) {
return !!("" === e || e && e.charCodeAt && e.substr)
}
function i(e) {
return h ? h(e) : "[object Array]" === d.call(e)
}
function r(e) {
return e && "[object Object]" === d.call(e)
}
function u(e, t) {
var a;
e = e || {}, t = t || {};
for (a in t) t.hasOwnProperty(a) && null == e[a] && (e[a] = t[a]);
return e
}
function s(e, t, a) {
var o, n, i = [];
if (!e) return i;
if (p && e.map === p) return e.map(t, a);
for (o = 0, n = e.length; n > o; o++) i[o] = t.call(a, e[o], o, e);
return i
}
function c(e, t) {
return e = Math.round(Math.abs(e)), isNaN(e) ? t : e
}
function l(e) {
var t = m.settings.currency.format;
return "function" == typeof e && (e = e()), n(e) && e.match("%v") ? {
pos: e,
neg: e.replace("-", "").replace("%v", "-%v"),
zero: e
} : e && e.pos && e.pos.match("%v") ? e : n(t) ? m.settings.currency.format = {
pos: t,
neg: t.replace("%v", "-%v"),
zero: t
} : t
}
var m = {};
m.version = "0.4.1", m.settings = {
currency: {
symbol: "$",
format: "%s%v",
decimal: ".",
thousand: ",",
precision: 2,
grouping: 3
},
number: {
precision: 0,
grouping: 3,
thousand: ",",
decimal: "."
}
};
var p = Array.prototype.map,
h = Array.isArray,
d = Object.prototype.toString,
g = m.unformat = m.parse = function(e, t) {
if (i(e)) return s(e, function(e) {
return g(e, t)
});
if (e = e || 0, "number" == typeof e) return e;
t = t || m.settings.number.decimal;
var a = new RegExp("[^0-9-" + t + "]", ["g"]),
o = parseFloat(("" + e).replace(/\((.*)\)/, "-$1").replace(a, "").replace(t, "."));
return isNaN(o) ? 0 : o
},
f = m.toFixed = function(e, t) {
t = c(t, m.settings.number.precision);
var a = Math.pow(10, t);
return (Math.round(m.unformat(e) * a) / a).toFixed(t)
},
k = m.formatNumber = m.format = function(e, t, a, o) {
if (i(e)) return s(e, function(e) {
return k(e, t, a, o)
});
e = g(e);
var n = u(r(t) ? t : {
precision: t,
thousand: a,
decimal: o
}, m.settings.number),
l = c(n.precision),
p = 0 > e ? "-" : "",
h = parseInt(f(Math.abs(e || 0), l), 10) + "",
d = h.length > 3 ? h.length % 3 : 0;
return p + (d ? h.substr(0, d) + n.thousand : "") + h.substr(d).replace(/(\d{3})(?=\d)/g, "$1" + n.thousand) + (l ? n.decimal + f(Math.abs(e), l).split(".")[1] : "")
},
y = m.formatMoney = function(e, t, a, o, n, p) {
if (i(e)) return s(e, function(e) {
return y(e, t, a, o, n, p)
});
e = g(e);
var h = u(r(t) ? t : {
symbol: t,
precision: a,
thousand: o,
decimal: n,
format: p
}, m.settings.currency),
d = l(h.format),
f = e > 0 ? d.pos : 0 > e ? d.neg : d.zero;
return f.replace("%s", h.symbol).replace("%v", k(Math.abs(e), c(h.precision), h.thousand, h.decimal))
};
m.formatColumn = function(e, t, a, o, p, h) {
if (!e) return [];
var d = u(r(t) ? t : {
symbol: t,
precision: a,
thousand: o,
decimal: p,
format: h
}, m.settings.currency),
f = l(d.format),
y = f.pos.indexOf("%s") < f.pos.indexOf("%v") ? !0 : !1,
j = 0,
v = s(e, function(e, t) {
if (i(e)) return m.formatColumn(e, d);
e = g(e);
var a = e > 0 ? f.pos : 0 > e ? f.neg : f.zero,
o = a.replace("%s", d.symbol).replace("%v", k(Math.abs(e), c(d.precision), d.thousand, d.decimal));
return o.length > j && (j = o.length), o
});
return s(v, function(e, t) {
return n(e) && e.length < j ? y ? e.replace(d.symbol, d.symbol + new Array(j - e.length + 1).join(" ")) : new Array(j - e.length + 1).join(" ") + e : e
})
}, "undefined" != typeof a ? ("undefined" != typeof t && t.exports && (a = t.exports = m), a.accounting = m) : "function" == typeof define && define.amd ? define([], function() {
return m
}) : (m.noConflict = function(t) {
return function() {
return e.accounting = t, m.noConflict = o, m
}
}(e.accounting), e.accounting = m)
}(this)
}, {}],
75: [function(e, t, a) {
function o(e, t, a) {
function o(e, n) {
if (o.count <= 0) throw new Error("after called too many times");
--o.count, e ? (i = !0, t(e), t = a) : 0 !== o.count || i || t(null, n)
}
var i = !1;
return a = a || n, o.count = e, 0 === e ? t() : o
}
function n() {}
t.exports = o
}, {}],
76: [function(e, t, a) {
t.exports = function(e, t, a) {
var o = e.byteLength;
if (t = t || 0, a = a || o, e.slice) return e.slice(t, a);
if (0 > t && (t += o), 0 > a && (a += o), a > o && (a = o), t >= o || t >= a || 0 === o) return new ArrayBuffer(0);
for (var n = new Uint8Array(e), i = new Uint8Array(a - t), r = t, u = 0; a > r; r++, u++) i[u] = n[r];
return i.buffer
}
}, {}],
77: [function(e, t, a) {
function o(e) {
e = e || {}, this.ms = e.min || 100, this.max = e.max || 1e4, this.factor = e.factor || 2, this.jitter = e.jitter > 0 && e.jitter <= 1 ? e.jitter : 0, this.attempts = 0
}
t.exports = o, o.prototype.duration = function() {
var e = this.ms * Math.pow(this.factor, this.attempts++);
if (this.jitter) {
var t = Math.random(),
a = Math.floor(t * this.jitter * e);
e = 0 == (1 & Math.floor(10 * t)) ? e - a : e + a
}
return 0 | Math.min(e, this.max)
}, o.prototype.reset = function() {
this.attempts = 0
}, o.prototype.setMin = function(e) {
this.ms = e
}, o.prototype.setMax = function(e) {
this.max = e
}, o.prototype.setJitter = function(e) {
this.jitter = e
}
}, {}],
78: [function(e, t, a) {
! function() {
"use strict";
for (var e = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", t = new Uint8Array(256), o = 0; o < e.length; o++) t[e.charCodeAt(o)] = o;
a.encode = function(t) {
var a, o = new Uint8Array(t),
n = o.length,
i = "";
for (a = 0; n > a; a += 3) i += e[o[a] >> 2], i += e[(3 & o[a]) << 4 | o[a + 1] >> 4], i += e[(15 & o[a + 1]) << 2 | o[a + 2] >> 6], i += e[63 & o[a + 2]];
return n % 3 === 2 ? i = i.substring(0, i.length - 1) + "=" : n % 3 === 1 && (i = i.substring(0, i.length - 2) + "=="), i
}, a.decode = function(e) {
var a, o, n, i, r, u = .75 * e.length,
s = e.length,
c = 0;
"=" === e[e.length - 1] && (u--, "=" === e[e.length - 2] && u--);
var l = new ArrayBuffer(u),
m = new Uint8Array(l);
for (a = 0; s > a; a += 4) o = t[e.charCodeAt(a)], n = t[e.charCodeAt(a + 1)], i = t[e.charCodeAt(a + 2)], r = t[e.charCodeAt(a + 3)], m[c++] = o << 2 | n >> 4, m[c++] = (15 & n) << 4 | i >> 2, m[c++] = (3 & i) << 6 | 63 & r;
return l
}
}()
}, {}],
79: [function(e, t, a) {
"use strict";
function o(e) {
var t = e.length;
if (t % 4 > 0) throw new Error("Invalid string. Length must be a multiple of 4");
return "=" === e[t - 2] ? 2 : "=" === e[t - 1] ? 1 : 0
}
function n(e) {
return 3 * e.length / 4 - o(e)
}
function i(e) {
var t, a, n, i, r, u, s = e.length;
r = o(e), u = new m(3 * s / 4 - r), n = r > 0 ? s - 4 : s;
var c = 0;
for (t = 0, a = 0; n > t; t += 4, a += 3) i = l[e.charCodeAt(t)] << 18 | l[e.charCodeAt(t + 1)] << 12 | l[e.charCodeAt(t + 2)] << 6 | l[e.charCodeAt(t + 3)], u[c++] = i >> 16 & 255, u[c++] = i >> 8 & 255, u[c++] = 255 & i;
return 2 === r ? (i = l[e.charCodeAt(t)] << 2 | l[e.charCodeAt(t + 1)] >> 4, u[c++] = 255 & i) : 1 === r && (i = l[e.charCodeAt(t)] << 10 | l[e.charCodeAt(t + 1)] << 4 | l[e.charCodeAt(t + 2)] >> 2, u[c++] = i >> 8 & 255, u[c++] = 255 & i), u
}
function r(e) {
return c[e >> 18 & 63] + c[e >> 12 & 63] + c[e >> 6 & 63] + c[63 & e]
}
function u(e, t, a) {
for (var o, n = [], i = t; a > i; i += 3) o = (e[i] << 16) + (e[i + 1] << 8) + e[i + 2], n.push(r(o));
return n.join("")
}
function s(e) {
for (var t, a = e.length, o = a % 3, n = "", i = [], r = 16383, s = 0, l = a - o; l > s; s += r) i.push(u(e, s, s + r > l ? l : s + r));
return 1 === o ? (t = e[a - 1], n += c[t >> 2], n += c[t << 4 & 63], n += "==") : 2 === o && (t = (e[a - 2] << 8) + e[a - 1], n += c[t >> 10], n += c[t >> 4 & 63], n += c[t << 2 & 63], n += "="), i.push(n), i.join("")
}
a.byteLength = n, a.toByteArray = i, a.fromByteArray = s;
for (var c = [], l = [], m = "undefined" != typeof Uint8Array ? Uint8Array : Array, p = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", h = 0, d = p.length; d > h; ++h) c[h] = p[h], l[p.charCodeAt(h)] = h;
l["-".charCodeAt(0)] = 62, l["_".charCodeAt(0)] = 63
}, {}],
80: [function(e, t, a) {
(function(e) {
function a(e) {
for (var t = 0; t < e.length; t++) {
var a = e[t];
if (a.buffer instanceof ArrayBuffer) {
var o = a.buffer;
if (a.byteLength !== o.byteLength) {
var n = new Uint8Array(a.byteLength);
n.set(new Uint8Array(o, a.byteOffset, a.byteLength)), o = n.buffer
}
e[t] = o
}
}
}
function o(e, t) {
t = t || {};
var o = new i;
a(e);
for (var n = 0; n < e.length; n++) o.append(e[n]);
return t.type ? o.getBlob(t.type) : o.getBlob()
}
function n(e, t) {
return a(e), new Blob(e, t || {})
}
var i = e.BlobBuilder || e.WebKitBlobBuilder || e.MSBlobBuilder || e.MozBlobBuilder,
r = function() {
try {
var e = new Blob(["hi"]);
return 2 === e.size
} catch (t) {
return !1
}
}(),
u = r && function() {
try {
var e = new Blob([new Uint8Array([1, 2])]);
return 2 === e.size
} catch (t) {
return !1
}
}(),
s = i && i.prototype.append && i.prototype.getBlob;
t.exports = function() {
return r ? u ? e.Blob : n : s ? o : void 0
}()
}).call(this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {})
}, {}],
81: [function(e, t, a) {
(function(e, o) {
! function(e) {
if ("object" == typeof a && "undefined" != typeof t) t.exports = e();
else if ("function" == typeof define && define.amd) define([], e);
else {
var n;
"undefined" != typeof window ? n = window : "undefined" != typeof o ? n = o : "undefined" != typeof self && (n = self), n.Promise = e()
}
}(function() {
var t, a, n;
return function i(e, t, a) {
function o(r, u) {
if (!t[r]) {
if (!e[r]) {
var s = "function" == typeof _dereq_ && _dereq_;
if (!u && s) return s(r, !0);
if (n) return n(r, !0);
var c = new Error("Cannot find module '" + r + "'");
throw c.code = "MODULE_NOT_FOUND", c
}
var l = t[r] = {
exports: {}
};
e[r][0].call(l.exports, function(t) {
var a = e[r][1][t];
return o(a ? a : t)
}, l, l.exports, i, e, t, a)
}
return t[r].exports
}
for (var n = "function" == typeof _dereq_ && _dereq_, r = 0; r < a.length; r++) o(a[r]);
return o
}({
1: [function(e, t, a) {
"use strict";
t.exports = function(e) {
function t(e) {
var t = new a(e),
o = t.promise();
return t.setHowMany(1), t.setUnwrap(), t.init(), o
}
var a = e._SomePromiseArray;
e.any = function(e) {
return t(e)
}, e.prototype.any = function() {
return t(this)
}
}
}, {}],
2: [function(t, a, o) {
"use strict";
function n() {
this._customScheduler = !1, this._isTickUsed = !1, this._lateQueue = new m(16), this._normalQueue = new m(16), this._haveDrainedQueues = !1, this._trampolineEnabled = !0;
var e = this;
this.drainQueues = function() {
e._drainQueues()
}, this._schedule = l
}
function i(e, t, a) {
this._lateQueue.push(e, t, a), this._queueTick()
}
function r(e, t, a) {
this._normalQueue.push(e, t, a), this._queueTick()
}
function u(e) {
this._normalQueue._pushOne(e), this._queueTick()
}
var s;
try {
throw new Error
} catch (c) {
s = c
}
var l = t("./schedule"),
m = t("./queue"),
p = t("./util");
n.prototype.setScheduler = function(e) {
var t = this._schedule;
return this._schedule = e, this._customScheduler = !0, t
}, n.prototype.hasCustomScheduler = function() {
return this._customScheduler
}, n.prototype.enableTrampoline = function() {
this._trampolineEnabled = !0
}, n.prototype.disableTrampolineIfNecessary = function() {
p.hasDevTools && (this._trampolineEnabled = !1)
}, n.prototype.haveItemsQueued = function() {
return this._isTickUsed || this._haveDrainedQueues
}, n.prototype.fatalError = function(t, a) {
a ? (e.stderr.write("Fatal " + (t instanceof Error ? t.stack : t) + "\n"), e.exit(2)) : this.throwLater(t)
}, n.prototype.throwLater = function(e, t) {
if (1 === arguments.length && (t = e, e = function() {
throw t
}), "undefined" != typeof setTimeout) setTimeout(function() {
e(t)
}, 0);
else try {
this._schedule(function() {
e(t)
})
} catch (a) {
throw new Error("No async scheduler available\n\n See http://goo.gl/MqrFmX\n")
}
}, p.hasDevTools ? (n.prototype.invokeLater = function(e, t, a) {
this._trampolineEnabled ? i.call(this, e, t, a) : this._schedule(function() {
setTimeout(function() {
e.call(t, a)
}, 100)
})
}, n.prototype.invoke = function(e, t, a) {
this._trampolineEnabled ? r.call(this, e, t, a) : this._schedule(function() {
e.call(t, a)
})
}, n.prototype.settlePromises = function(e) {
this._trampolineEnabled ? u.call(this, e) : this._schedule(function() {
e._settlePromises()
})
}) : (n.prototype.invokeLater = i,
n.prototype.invoke = r, n.prototype.settlePromises = u), n.prototype.invokeFirst = function(e, t, a) {
this._normalQueue.unshift(e, t, a), this._queueTick()
}, n.prototype._drainQueue = function(e) {
for (; e.length() > 0;) {
var t = e.shift();
if ("function" == typeof t) {
var a = e.shift(),
o = e.shift();
t.call(a, o)
} else t._settlePromises()
}
}, n.prototype._drainQueues = function() {
this._drainQueue(this._normalQueue), this._reset(), this._haveDrainedQueues = !0, this._drainQueue(this._lateQueue)
}, n.prototype._queueTick = function() {
this._isTickUsed || (this._isTickUsed = !0, this._schedule(this.drainQueues))
}, n.prototype._reset = function() {
this._isTickUsed = !1
}, a.exports = n, a.exports.firstLineError = s
}, {
"./queue": 26,
"./schedule": 29,
"./util": 36
}],
3: [function(e, t, a) {
"use strict";
t.exports = function(e, t, a, o) {
var n = !1,
i = function(e, t) {
this._reject(t)
},
r = function(e, t) {
t.promiseRejectionQueued = !0, t.bindingPromise._then(i, i, null, this, e)
},
u = function(e, t) {
0 === (50397184 & this._bitField) && this._resolveCallback(t.target)
},
s = function(e, t) {
t.promiseRejectionQueued || this._reject(e)
};
e.prototype.bind = function(i) {
n || (n = !0, e.prototype._propagateFrom = o.propagateFromFunction(), e.prototype._boundValue = o.boundValueFunction());
var c = a(i),
l = new e(t);
l._propagateFrom(this, 1);
var m = this._target();
if (l._setBoundTo(c), c instanceof e) {
var p = {
promiseRejectionQueued: !1,
promise: l,
target: m,
bindingPromise: c
};
m._then(t, r, void 0, l, p), c._then(u, s, void 0, l, p), l._setOnCancel(c)
} else l._resolveCallback(m);
return l
}, e.prototype._setBoundTo = function(e) {
void 0 !== e ? (this._bitField = 2097152 | this._bitField, this._boundTo = e) : this._bitField = -2097153 & this._bitField
}, e.prototype._isBound = function() {
return 2097152 === (2097152 & this._bitField)
}, e.bind = function(t, a) {
return e.resolve(a).bind(t)
}
}
}, {}],
4: [function(e, t, a) {
"use strict";
function o() {
try {
Promise === i && (Promise = n)
} catch (e) {}
return i
}
var n;
"undefined" != typeof Promise && (n = Promise);
var i = e("./promise")();
i.noConflict = o, t.exports = i
}, {
"./promise": 22
}],
5: [function(e, t, a) {
"use strict";
var o = Object.create;
if (o) {
var n = o(null),
i = o(null);
n[" size"] = i[" size"] = 0
}
t.exports = function(t) {
function a(e, a) {
var o;
if (null != e && (o = e[a]), "function" != typeof o) {
var n = "Object " + u.classString(e) + " has no method '" + u.toString(a) + "'";
throw new t.TypeError(n)
}
return o
}
function o(e) {
var t = this.pop(),
o = a(e, t);
return o.apply(e, this)
}
function n(e) {
return e[this]
}
function i(e) {
var t = +this;
return 0 > t && (t = Math.max(0, t + e.length)), e[t]
}
var r, u = e("./util"),
s = u.canEvaluate;
u.isIdentifier;
t.prototype.call = function(e) {
var t = [].slice.call(arguments, 1);
return t.push(e), this._then(o, void 0, void 0, t, void 0)
}, t.prototype.get = function(e) {
var t, a = "number" == typeof e;
if (a) t = i;
else if (s) {
var o = r(e);
t = null !== o ? o : n
} else t = n;
return this._then(t, void 0, void 0, e, void 0)
}
}
}, {
"./util": 36
}],
6: [function(e, t, a) {
"use strict";
t.exports = function(t, a, o, n) {
var i = e("./util"),
r = i.tryCatch,
u = i.errorObj,
s = t._async;
t.prototype["break"] = t.prototype.cancel = function() {
if (!n.cancellation()) return this._warn("cancellation is disabled");
for (var e = this, t = e; e._isCancellable();) {
if (!e._cancelBy(t)) {
t._isFollowing() ? t._followee().cancel() : t._cancelBranched();
break
}
var a = e._cancellationParent;
if (null == a || !a._isCancellable()) {
e._isFollowing() ? e._followee().cancel() : e._cancelBranched();
break
}
e._isFollowing() && e._followee().cancel(), e._setWillBeCancelled(), t = e, e = a
}
}, t.prototype._branchHasCancelled = function() {
this._branchesRemainingToCancel--
}, t.prototype._enoughBranchesHaveCancelled = function() {
return void 0 === this._branchesRemainingToCancel || this._branchesRemainingToCancel <= 0
}, t.prototype._cancelBy = function(e) {
return e === this ? (this._branchesRemainingToCancel = 0, this._invokeOnCancel(), !0) : (this._branchHasCancelled(), this._enoughBranchesHaveCancelled() ? (this._invokeOnCancel(), !0) : !1)
}, t.prototype._cancelBranched = function() {
this._enoughBranchesHaveCancelled() && this._cancel()
}, t.prototype._cancel = function() {
this._isCancellable() && (this._setCancelled(), s.invoke(this._cancelPromises, this, void 0))
}, t.prototype._cancelPromises = function() {
this._length() > 0 && this._settlePromises()
}, t.prototype._unsetOnCancel = function() {
this._onCancelField = void 0
}, t.prototype._isCancellable = function() {
return this.isPending() && !this._isCancelled()
}, t.prototype.isCancellable = function() {
return this.isPending() && !this.isCancelled()
}, t.prototype._doInvokeOnCancel = function(e, t) {
if (i.isArray(e))
for (var a = 0; a < e.length; ++a) this._doInvokeOnCancel(e[a], t);
else if (void 0 !== e)
if ("function" == typeof e) {
if (!t) {
var o = r(e).call(this._boundValue());
o === u && (this._attachExtraTrace(o.e), s.throwLater(o.e))
}
} else e._resultCancelled(this)
}, t.prototype._invokeOnCancel = function() {
var e = this._onCancel();
this._unsetOnCancel(), s.invoke(this._doInvokeOnCancel, this, e)
}, t.prototype._invokeInternalOnCancel = function() {
this._isCancellable() && (this._doInvokeOnCancel(this._onCancel(), !0), this._unsetOnCancel())
}, t.prototype._resultCancelled = function() {
this.cancel()
}
}
}, {
"./util": 36
}],
7: [function(e, t, a) {
"use strict";
t.exports = function(t) {
function a(e, a, u) {
return function(s) {
var c = u._boundValue();
e: for (var l = 0; l < e.length; ++l) {
var m = e[l];
if (m === Error || null != m && m.prototype instanceof Error) {
if (s instanceof m) return i(a).call(c, s)
} else if ("function" == typeof m) {
var p = i(m).call(c, s);
if (p === r) return p;
if (p) return i(a).call(c, s)
} else if (o.isObject(s)) {
for (var h = n(m), d = 0; d < h.length; ++d) {
var g = h[d];
if (m[g] != s[g]) continue e
}
return i(a).call(c, s)
}
}
return t
}
}
var o = e("./util"),
n = e("./es5").keys,
i = o.tryCatch,
r = o.errorObj;
return a
}
}, {
"./es5": 13,
"./util": 36
}],
8: [function(e, t, a) {
"use strict";
t.exports = function(e) {
function t() {
this._trace = new t.CapturedTrace(o())
}
function a() {
return n ? new t : void 0
}
function o() {
var e = i.length - 1;
return e >= 0 ? i[e] : void 0
}
var n = !1,
i = [];
return e.prototype._promiseCreated = function() {}, e.prototype._pushContext = function() {}, e.prototype._popContext = function() {
return null
}, e._peekContext = e.prototype._peekContext = function() {}, t.prototype._pushContext = function() {
void 0 !== this._trace && (this._trace._promiseCreated = null, i.push(this._trace))
}, t.prototype._popContext = function() {
if (void 0 !== this._trace) {
var e = i.pop(),
t = e._promiseCreated;
return e._promiseCreated = null, t
}
return null
}, t.CapturedTrace = null, t.create = a, t.deactivateLongStackTraces = function() {}, t.activateLongStackTraces = function() {
var a = e.prototype._pushContext,
i = e.prototype._popContext,
r = e._peekContext,
u = e.prototype._peekContext,
s = e.prototype._promiseCreated;
t.deactivateLongStackTraces = function() {
e.prototype._pushContext = a, e.prototype._popContext = i, e._peekContext = r, e.prototype._peekContext = u, e.prototype._promiseCreated = s, n = !1
}, n = !0, e.prototype._pushContext = t.prototype._pushContext, e.prototype._popContext = t.prototype._popContext, e._peekContext = e.prototype._peekContext = o, e.prototype._promiseCreated = function() {
var e = this._peekContext();
e && null == e._promiseCreated && (e._promiseCreated = this)
}
}, t
}
}, {}],
9: [function(t, a, o) {
"use strict";
a.exports = function(a, o) {
function n(e, t) {
return {
promise: t
}
}
function i() {
return !1
}
function r(e, t, a) {
var o = this;
try {
e(t, a, function(e) {
if ("function" != typeof e) throw new TypeError("onCancel must be a function, got: " + O.toString(e));
o._attachCancellationCallback(e)
})
} catch (n) {
return n
}
}
function u(e) {
if (!this._isCancellable()) return this;
var t = this._onCancel();
void 0 !== t ? O.isArray(t) ? t.push(e) : this._setOnCancel([t, e]) : this._setOnCancel(e)
}
function s() {
return this._onCancelField
}
function c(e) {
this._onCancelField = e
}
function l() {
this._cancellationParent = void 0, this._onCancelField = void 0
}
function m(e, t) {
if (0 !== (1 & t)) {
this._cancellationParent = e;
var a = e._branchesRemainingToCancel;
void 0 === a && (a = 0), e._branchesRemainingToCancel = a + 1
}
0 !== (2 & t) && e._isBound() && this._setBoundTo(e._boundTo)
}
function p(e, t) {
0 !== (2 & t) && e._isBound() && this._setBoundTo(e._boundTo)
}
function h() {
var e = this._boundTo;
return void 0 !== e && e instanceof a ? e.isFulfilled() ? e.value() : void 0 : e
}
function d() {
this._trace = new S(this._peekContext())
}
function g(e, t) {
if (M(e)) {
var a = this._trace;
if (void 0 !== a && t && (a = a._parent), void 0 !== a) a.attachExtraTrace(e);
else if (!e.__stackCleaned__) {
var o = A(e);
O.notEnumerableProp(e, "stack", o.message + "\n" + o.stack.join("\n")), O.notEnumerableProp(e, "__stackCleaned__", !0)
}
}
}
function f(e, t, a, o, n) {
if (void 0 === e && null !== t && X) {
if (void 0 !== n && n._returnedNonUndefined()) return;
if (0 === (65535 & o._bitField)) return;
a && (a += " ");
var i = "",
r = "";
if (t._trace) {
for (var u = t._trace.stack.split("\n"), s = w(u), c = s.length - 1; c >= 0; --c) {
var l = s[c];
if (!U.test(l)) {
var m = l.match(H);
m && (i = "at " + m[1] + ":" + m[2] + ":" + m[3] + " ");
break
}
}
if (s.length > 0)
for (var p = s[0], c = 0; c < u.length; ++c)
if (u[c] === p) {
c > 0 && (r = "\n" + u[c - 1]);
break
}
}
var h = "a promise was created in a " + a + "handler " + i + "but was not returned from it, see http://goo.gl/rRqMUw" + r;
o._warn(h, !0, t)
}
}
function k(e, t) {
var a = e + " is deprecated and will be removed in a future version.";
return t && (a += " Use " + t + " instead."), y(a)
}
function y(e, t, o) {
if (re.warnings) {
var n, i = new L(e);
if (t) o._attachExtraTrace(i);
else if (re.longStackTraces && (n = a._peekContext())) n.attachExtraTrace(i);
else {
var r = A(i);
i.stack = r.message + "\n" + r.stack.join("\n")
}
te("warning", i) || E(i, "", !0)
}
}
function j(e, t) {
for (var a = 0; a < t.length - 1; ++a) t[a].push("From previous event:"), t[a] = t[a].join("\n");
return a < t.length && (t[a] = t[a].join("\n")), e + "\n" + t.join("\n")
}
function v(e) {
for (var t = 0; t < e.length; ++t)(0 === e[t].length || t + 1 < e.length && e[t][0] === e[t + 1][0]) && (e.splice(t, 1), t--)
}
function b(e) {
for (var t = e[0], a = 1; a < e.length; ++a) {
for (var o = e[a], n = t.length - 1, i = t[n], r = -1, u = o.length - 1; u >= 0; --u)
if (o[u] === i) {
r = u;
break
}
for (var u = r; u >= 0; --u) {
var s = o[u];
if (t[n] !== s) break;
t.pop(), n--
}
t = o
}
}
function w(e) {
for (var t = [], a = 0; a < e.length; ++a) {
var o = e[a],
n = " (No stack trace)" === o || $.test(o),
i = n && oe(o);
n && !i && (Y && " " !== o.charAt(0) && (o = " " + o), t.push(o))
}
return t
}
function _(e) {
for (var t = e.stack.replace(/\s+$/g, "").split("\n"), a = 0; a < t.length; ++a) {
var o = t[a];
if (" (No stack trace)" === o || $.test(o)) break
}
return a > 0 && (t = t.slice(a)), t
}
function A(e) {
var t = e.stack,
a = e.toString();
return t = "string" == typeof t && t.length > 0 ? _(e) : [" (No stack trace)"], {
message: a,
stack: w(t)
}
}
function E(e, t, a) {
if ("undefined" != typeof console) {
var o;
if (O.isObject(e)) {
var n = e.stack;
o = t + W(n, e)
} else o = t + String(e);
"function" == typeof R ? R(o, a) : ("function" == typeof console.log || "object" == typeof console.log) && console.log(o)
}
}
function C(e, t, a, o) {
var n = !1;
try {
"function" == typeof t && (n = !0, "rejectionHandled" === e ? t(o) : t(a, o))
} catch (i) {
N.throwLater(i)
}
"unhandledRejection" === e ? te(e, a, o) || n || E(a, "Unhandled rejection ") : te(e, o)
}
function x(e) {
var t;
if ("function" == typeof e) t = "[function " + (e.name || "anonymous") + "]";
else {
t = e && "function" == typeof e.toString ? e.toString() : O.toString(e);
var a = /\[object [a-zA-Z0-9$_]+\]/;
if (a.test(t)) try {
var o = JSON.stringify(e);
t = o
} catch (n) {}
0 === t.length && (t = "(empty array)")
}
return "(<" + F(t) + ">, no stack trace)"
}
function F(e) {
var t = 41;
return e.length < t ? e : e.substr(0, t - 3) + "..."
}
function z() {
return "function" == typeof ie
}
function D(e) {
var t = e.match(ne);
return t ? {
fileName: t[1],
line: parseInt(t[2], 10)
} : void 0
}
function B(e, t) {
if (z()) {
for (var a, o, n = e.stack.split("\n"), i = t.stack.split("\n"), r = -1, u = -1, s = 0; s < n.length; ++s) {
var c = D(n[s]);
if (c) {
a = c.fileName, r = c.line;
break
}
}
for (var s = 0; s < i.length; ++s) {
var c = D(i[s]);
if (c) {
o = c.fileName, u = c.line;
break
}
}
0 > r || 0 > u || !a || !o || a !== o || r >= u || (oe = function(e) {
if (q.test(e)) return !0;
var t = D(e);
return t && t.fileName === a && r <= t.line && t.line <= u ? !0 : !1
})
}
}
function S(e) {
this._parent = e, this._promisesCreated = 0;
var t = this._length = 1 + (void 0 === e ? 0 : e._length);
ie(this, S), t > 32 && this.uncycle()
}
var T, P, R, I = a._getDomain,
N = a._async,
L = t("./errors").Warning,
O = t("./util"),
M = O.canAttachTrace,
q = /[\\\/]bluebird[\\\/]js[\\\/](release|debug|instrumented)/,
U = /\((?:timers\.js):\d+:\d+\)/,
H = /[\/<\(](.+?):(\d+):(\d+)\)?\s*$/,
$ = null,
W = null,
Y = !1,
V = !(0 == O.env("BLUEBIRD_DEBUG")),
G = !(0 == O.env("BLUEBIRD_WARNINGS") || !V && !O.env("BLUEBIRD_WARNINGS")),
J = !(0 == O.env("BLUEBIRD_LONG_STACK_TRACES") || !V && !O.env("BLUEBIRD_LONG_STACK_TRACES")),
X = 0 != O.env("BLUEBIRD_W_FORGOTTEN_RETURN") && (G || !!O.env("BLUEBIRD_W_FORGOTTEN_RETURN"));
a.prototype.suppressUnhandledRejections = function() {
var e = this._target();
e._bitField = -1048577 & e._bitField | 524288
}, a.prototype._ensurePossibleRejectionHandled = function() {
0 === (524288 & this._bitField) && (this._setRejectionIsUnhandled(), N.invokeLater(this._notifyUnhandledRejection, this, void 0))
}, a.prototype._notifyUnhandledRejectionIsHandled = function() {
C("rejectionHandled", T, void 0, this)
}, a.prototype._setReturnedNonUndefined = function() {
this._bitField = 268435456 | this._bitField
}, a.prototype._returnedNonUndefined = function() {
return 0 !== (268435456 & this._bitField)
}, a.prototype._notifyUnhandledRejection = function() {
if (this._isRejectionUnhandled()) {
var e = this._settledValue();
this._setUnhandledRejectionIsNotified(), C("unhandledRejection", P, e, this)
}
}, a.prototype._setUnhandledRejectionIsNotified = function() {
this._bitField = 262144 | this._bitField
}, a.prototype._unsetUnhandledRejectionIsNotified = function() {
this._bitField = -262145 & this._bitField
}, a.prototype._isUnhandledRejectionNotified = function() {
return (262144 & this._bitField) > 0
}, a.prototype._setRejectionIsUnhandled = function() {
this._bitField = 1048576 | this._bitField
}, a.prototype._unsetRejectionIsUnhandled = function() {
this._bitField = -1048577 & this._bitField, this._isUnhandledRejectionNotified() && (this._unsetUnhandledRejectionIsNotified(), this._notifyUnhandledRejectionIsHandled())
}, a.prototype._isRejectionUnhandled = function() {
return (1048576 & this._bitField) > 0
}, a.prototype._warn = function(e, t, a) {
return y(e, t, a || this)
}, a.onPossiblyUnhandledRejection = function(e) {
var t = I();
P = "function" == typeof e ? null === t ? e : t.bind(e) : void 0
}, a.onUnhandledRejectionHandled = function(e) {
var t = I();
T = "function" == typeof e ? null === t ? e : t.bind(e) : void 0
};
var K = function() {};
a.longStackTraces = function() {
if (N.haveItemsQueued() && !re.longStackTraces) throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n");
if (!re.longStackTraces && z()) {
var e = a.prototype._captureStackTrace,
t = a.prototype._attachExtraTrace;
re.longStackTraces = !0, K = function() {
if (N.haveItemsQueued() && !re.longStackTraces) throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n");
a.prototype._captureStackTrace = e, a.prototype._attachExtraTrace = t, o.deactivateLongStackTraces(), N.enableTrampoline(), re.longStackTraces = !1
}, a.prototype._captureStackTrace = d, a.prototype._attachExtraTrace = g, o.activateLongStackTraces(), N.disableTrampolineIfNecessary()
}
}, a.hasLongStackTraces = function() {
return re.longStackTraces && z()
};
var Z = function() {
try {
if ("function" == typeof CustomEvent) {
var e = new CustomEvent("CustomEvent");
return O.global.dispatchEvent(e),
function(e, t) {
var a = new CustomEvent(e.toLowerCase(), t);
return !O.global.dispatchEvent(a)
}
}
var e = document.createEvent("CustomEvent");
return e.initCustomEvent("testingtheevent", !1, !0, {}), O.global.dispatchEvent(e),
function(e, t) {
var a = document.createEvent("CustomEvent");
return a.initCustomEvent(e.toLowerCase(), !1, !0, t), !O.global.dispatchEvent(a)
}
} catch (t) {}
return function() {
return !1
}
}(),
Q = function() {
return O.isNode ? function() {
return e.emit.apply(e, arguments)
} : O.global ? function(e) {
var t = "on" + e.toLowerCase(),
a = O.global[t];
return a ? (a.apply(O.global, [].slice.call(arguments, 1)), !0) : !1
} : function() {
return !1
}
}(),
ee = {
promiseCreated: n,
promiseFulfilled: n,
promiseRejected: n,
promiseResolved: n,
promiseCancelled: n,
promiseChained: function(e, t, a) {
return {
promise: t,
child: a
}
},
warning: function(e, t) {
return {
warning: t
}
},
unhandledRejection: function(e, t, a) {
return {
reason: t,
promise: a
}
},
rejectionHandled: n
},
te = function(e) {
var t = !1;
try {
t = Q.apply(null, arguments)
} catch (a) {
N.throwLater(a), t = !0
}
var o = !1;
try {
o = Z(e, ee[e].apply(null, arguments))
} catch (a) {
N.throwLater(a), o = !0
}
return o || t
};
a.config = function(e) {
if (e = Object(e), "longStackTraces" in e && (e.longStackTraces ? a.longStackTraces() : !e.longStackTraces && a.hasLongStackTraces() && K()), "warnings" in e) {
var t = e.warnings;
re.warnings = !!t, X = re.warnings, O.isObject(t) && "wForgottenReturn" in t && (X = !!t.wForgottenReturn)
}
if ("cancellation" in e && e.cancellation && !re.cancellation) {
if (N.haveItemsQueued()) throw new Error("cannot enable cancellation after promises are in use");
a.prototype._clearCancellationData = l, a.prototype._propagateFrom = m, a.prototype._onCancel = s, a.prototype._setOnCancel = c, a.prototype._attachCancellationCallback = u, a.prototype._execute = r, ae = m, re.cancellation = !0
}
"monitoring" in e && (e.monitoring && !re.monitoring ? (re.monitoring = !0, a.prototype._fireEvent = te) : !e.monitoring && re.monitoring && (re.monitoring = !1, a.prototype._fireEvent = i))
}, a.prototype._fireEvent = i, a.prototype._execute = function(e, t, a) {
try {
e(t, a)
} catch (o) {
return o
}
}, a.prototype._onCancel = function() {}, a.prototype._setOnCancel = function(e) {}, a.prototype._attachCancellationCallback = function(e) {}, a.prototype._captureStackTrace = function() {}, a.prototype._attachExtraTrace = function() {}, a.prototype._clearCancellationData = function() {}, a.prototype._propagateFrom = function(e, t) {};
var ae = p,
oe = function() {
return !1
},
ne = /[\/<\(]([^:\/]+):(\d+):(?:\d+)\)?\s*$/;
O.inherits(S, Error), o.CapturedTrace = S, S.prototype.uncycle = function() {
var e = this._length;
if (!(2 > e)) {
for (var t = [], a = {}, o = 0, n = this; void 0 !== n; ++o) t.push(n), n = n._parent;
e = this._length = o;
for (var o = e - 1; o >= 0; --o) {
var i = t[o].stack;
void 0 === a[i] && (a[i] = o)
}
for (var o = 0; e > o; ++o) {
var r = t[o].stack,
u = a[r];
if (void 0 !== u && u !== o) {
u > 0 && (t[u - 1]._parent = void 0, t[u - 1]._length = 1), t[o]._parent = void 0, t[o]._length = 1;
var s = o > 0 ? t[o - 1] : this;
e - 1 > u ? (s._parent = t[u + 1], s._parent.uncycle(), s._length = s._parent._length + 1) : (s._parent = void 0, s._length = 1);
for (var c = s._length + 1, l = o - 2; l >= 0; --l) t[l]._length = c, c++;
return
}
}
}
}, S.prototype.attachExtraTrace = function(e) {
if (!e.__stackCleaned__) {
this.uncycle();
for (var t = A(e), a = t.message, o = [t.stack], n = this; void 0 !== n;) o.push(w(n.stack.split("\n"))), n = n._parent;
b(o), v(o), O.notEnumerableProp(e, "stack", j(a, o)), O.notEnumerableProp(e, "__stackCleaned__", !0)
}
};
var ie = function() {
var e = /^\s*at\s*/,
t = function(e, t) {
return "string" == typeof e ? e : void 0 !== t.name && void 0 !== t.message ? t.toString() : x(t)
};
if ("number" == typeof Error.stackTraceLimit && "function" == typeof Error.captureStackTrace) {
Error.stackTraceLimit += 6, $ = e, W = t;
var a = Error.captureStackTrace;
return oe = function(e) {
return q.test(e)
},
function(e, t) {
Error.stackTraceLimit += 6, a(e, t), Error.stackTraceLimit -= 6
}
}
var o = new Error;
if ("string" == typeof o.stack && o.stack.split("\n")[0].indexOf("stackDetection@") >= 0) return $ = /@/, W = t, Y = !0,
function(e) {
e.stack = (new Error).stack
};
var n;
try {
throw new Error
} catch (i) {
n = "stack" in i
}
return "stack" in o || !n || "number" != typeof Error.stackTraceLimit ? (W = function(e, t) {
return "string" == typeof e ? e : "object" != typeof t && "function" != typeof t || void 0 === t.name || void 0 === t.message ? x(t) : t.toString()
}, null) : ($ = e, W = t, function(e) {
Error.stackTraceLimit += 6;
try {
throw new Error
} catch (t) {
e.stack = t.stack
}
Error.stackTraceLimit -= 6
})
}([]);
"undefined" != typeof console && "undefined" != typeof console.warn && (R = function(e) {
console.warn(e)
}, O.isNode && e.stderr.isTTY ? R = function(e, t) {
var a = t ? "[33m" : "[31m";
console.warn(a + e + "[0m\n")
} : O.isNode || "string" != typeof(new Error).stack || (R = function(e, t) {
console.warn("%c" + e, t ? "color: darkorange" : "color: red")
}));
var re = {
warnings: G,
longStackTraces: !1,
cancellation: !1,
monitoring: !1
};
return J && a.longStackTraces(), {
longStackTraces: function() {
return re.longStackTraces
},
warnings: function() {
return re.warnings
},
cancellation: function() {
return re.cancellation
},
monitoring: function() {
return re.monitoring
},
propagateFromFunction: function() {
return ae
},
boundValueFunction: function() {
return h
},
checkForgottenReturns: f,
setBounds: B,
warn: y,
deprecated: k,
CapturedTrace: S,
fireDomEvent: Z,
fireGlobalEvent: Q
}
}
}, {
"./errors": 12,
"./util": 36
}],
10: [function(e, t, a) {
"use strict";
t.exports = function(e, t) {
function a() {
return this.value
}
function o() {
throw this.reason
}
e.prototype["return"] = e.prototype.thenReturn = function(o) {
return o = t(o), o instanceof e && o.suppressUnhandledRejections(), this._then(a, void 0, void 0, {
value: o
}, void 0)
}, e.prototype["throw"] = e.prototype.thenThrow = function(e) {
return this._then(o, void 0, void 0, {
reason: e
}, void 0)
}, e.prototype.catchThrow = function(e) {
if (arguments.length <= 1) return this._then(void 0, o, void 0, {
reason: e
}, void 0);
var t = arguments[1],
a = function() {
throw t
};
return this.caught(e, a)
}, e.prototype.catchReturn = function(o) {
if (arguments.length <= 1) return o = t(o), o instanceof e && o.suppressUnhandledRejections(), this._then(void 0, a, void 0, {
value: o
}, void 0);
var n = arguments[1];
n = t(n), n instanceof e && n.suppressUnhandledRejections();
var i = function() {
return n
};
return this.caught(o, i)
}
}
}, {}],
11: [function(e, t, a) {
"use strict";
t.exports = function(e, t) {
function a() {
return i(this)
}
function o(e, a) {
return n(e, a, t, t)
}
var n = e.reduce,
i = e.all;
e.prototype.each = function(e) {
return this.mapSeries(e)._then(a, void 0, void 0, this, void 0)
}, e.prototype.mapSeries = function(e) {
return n(this, e, t, t)
}, e.each = function(e, t) {
return o(e, t)._then(a, void 0, void 0, e, void 0)
}, e.mapSeries = o
}
}, {}],
12: [function(e, t, a) {
"use strict";
function o(e, t) {
function a(o) {
return this instanceof a ? (m(this, "message", "string" == typeof o ? o : t), m(this, "name", e), void(Error.captureStackTrace ? Error.captureStackTrace(this, this.constructor) : Error.call(this))) : new a(o)
}
return l(a, Error), a
}
function n(e) {
return this instanceof n ? (m(this, "name", "OperationalError"), m(this, "message", e), this.cause = e, this.isOperational = !0, void(e instanceof Error ? (m(this, "message", e.message), m(this, "stack", e.stack)) : Error.captureStackTrace && Error.captureStackTrace(this, this.constructor))) : new n(e)
}
var i, r, u = e("./es5"),
s = u.freeze,
c = e("./util"),
l = c.inherits,
m = c.notEnumerableProp,
p = o("Warning", "warning"),
h = o("CancellationError", "cancellation error"),
d = o("TimeoutError", "timeout error"),
g = o("AggregateError", "aggregate error");
try {
i = TypeError, r = RangeError
} catch (f) {
i = o("TypeError", "type error"), r = o("RangeError", "range error")
}
for (var k = "join pop push shift unshift slice filter forEach some every map indexOf lastIndexOf reduce reduceRight sort reverse".split(" "), y = 0; y < k.length; ++y) "function" == typeof Array.prototype[k[y]] && (g.prototype[k[y]] = Array.prototype[k[y]]);
u.defineProperty(g.prototype, "length", {
value: 0,
configurable: !1,
writable: !0,
enumerable: !0
}), g.prototype.isOperational = !0;
var j = 0;
g.prototype.toString = function() {
var e = Array(4 * j + 1).join(" "),
t = "\n" + e + "AggregateError of:\n";
j++, e = Array(4 * j + 1).join(" ");
for (var a = 0; a < this.length; ++a) {
for (var o = this[a] === this ? "[Circular AggregateError]" : this[a] + "", n = o.split("\n"), i = 0; i < n.length; ++i) n[i] = e + n[i];
o = n.join("\n"), t += o + "\n"
}
return j--, t
}, l(n, Error);
var v = Error.__BluebirdErrorTypes__;
v || (v = s({
CancellationError: h,
TimeoutError: d,
OperationalError: n,
RejectionError: n,
AggregateError: g
}), u.defineProperty(Error, "__BluebirdErrorTypes__", {
value: v,
writable: !1,
enumerable: !1,
configurable: !1
})), t.exports = {
Error: Error,
TypeError: i,
RangeError: r,
CancellationError: v.CancellationError,
OperationalError: v.OperationalError,
TimeoutError: v.TimeoutError,
AggregateError: v.AggregateError,
Warning: p
}
}, {
"./es5": 13,
"./util": 36
}],
13: [function(e, t, a) {
var o = function() {
"use strict";
return void 0 === this
}();
if (o) t.exports = {
freeze: Object.freeze,
defineProperty: Object.defineProperty,
getDescriptor: Object.getOwnPropertyDescriptor,
keys: Object.keys,
names: Object.getOwnPropertyNames,
getPrototypeOf: Object.getPrototypeOf,
isArray: Array.isArray,
isES5: o,
propertyIsWritable: function(e, t) {
var a = Object.getOwnPropertyDescriptor(e, t);
return !(a && !a.writable && !a.set)
}
};
else {
var n = {}.hasOwnProperty,
i = {}.toString,
r = {}.constructor.prototype,
u = function(e) {
var t = [];
for (var a in e) n.call(e, a) && t.push(a);
return t
},
s = function(e, t) {
return {
value: e[t]
}
},
c = function(e, t, a) {
return e[t] = a.value, e
},
l = function(e) {
return e
},
m = function(e) {
try {
return Object(e).constructor.prototype
} catch (t) {
return r
}
},
p = function(e) {
try {
return "[object Array]" === i.call(e)
} catch (t) {
return !1
}
};
t.exports = {
isArray: p,
keys: u,
names: u,
defineProperty: c,
getDescriptor: s,
freeze: l,
getPrototypeOf: m,
isES5: o,
propertyIsWritable: function() {
return !0
}
}
}
}, {}],
14: [function(e, t, a) {
"use strict";
t.exports = function(e, t) {
var a = e.map;
e.prototype.filter = function(e, o) {
return a(this, e, o, t)
}, e.filter = function(e, o, n) {
return a(e, o, n, t)
}
}
}, {}],
15: [function(e, t, a) {
"use strict";
t.exports = function(t, a) {
function o(e, t, a) {
this.promise = e, this.type = t, this.handler = a, this.called = !1, this.cancelPromise = null
}
function n(e) {
this.finallyHandler = e
}
function i(e, t) {
return null != e.cancelPromise ? (arguments.length > 1 ? e.cancelPromise._reject(t) : e.cancelPromise._cancel(), e.cancelPromise = null, !0) : !1
}
function r() {
return s.call(this, this.promise._target()._settledValue())
}
function u(e) {
return i(this, e) ? void 0 : (m.e = e, m)
}
function s(e) {
var o = this.promise,
s = this.handler;
if (!this.called) {
this.called = !0;
var c = this.isFinallyHandler() ? s.call(o._boundValue()) : s.call(o._boundValue(), e);
if (void 0 !== c) {
o._setReturnedNonUndefined();
var p = a(c, o);
if (p instanceof t) {
if (null != this.cancelPromise) {
if (p._isCancelled()) {
var h = new l("late cancellation observer");
return o._attachExtraTrace(h), m.e = h, m
}
p.isPending() && p._attachCancellationCallback(new n(this))
}
return p._then(r, u, void 0, this, void 0)
}
}
}
return o.isRejected() ? (i(this), m.e = e, m) : (i(this), e)
}
var c = e("./util"),
l = t.CancellationError,
m = c.errorObj;
return o.prototype.isFinallyHandler = function() {
return 0 === this.type
}, n.prototype._resultCancelled = function() {
i(this.finallyHandler)
}, t.prototype._passThrough = function(e, t, a, n) {
return "function" != typeof e ? this.then() : this._then(a, n, void 0, new o(this, t, e), void 0)
}, t.prototype.lastly = t.prototype["finally"] = function(e) {
return this._passThrough(e, 0, s, s)
}, t.prototype.tap = function(e) {
return this._passThrough(e, 1, s)
}, o
}
}, {
"./util": 36
}],
16: [function(e, t, a) {
"use strict";
t.exports = function(t, a, o, n, i, r) {
function u(e, a, o) {
for (var i = 0; i < a.length; ++i) {
o._pushContext();
var r = h(a[i])(e);
if (o._popContext(), r === p) {
o._pushContext();
var u = t.reject(p.e);
return o._popContext(), u
}
var s = n(r, o);
if (s instanceof t) return s
}
return null
}
function s(e, a, n, i) {
if (r.cancellation()) {
var u = new t(o),
s = this._finallyPromise = new t(o);
this._promise = u.lastly(function() {
return s
}), u._captureStackTrace(), u._setOnCancel(this)
} else {
var c = this._promise = new t(o);
c._captureStackTrace()
}
this._stack = i, this._generatorFunction = e, this._receiver = a, this._generator = void 0, this._yieldHandlers = "function" == typeof n ? [n].concat(d) : d, this._yieldedPromise = null, this._cancellationPhase = !1
}
var c = e("./errors"),
l = c.TypeError,
m = e("./util"),
p = m.errorObj,
h = m.tryCatch,
d = [];
m.inherits(s, i), s.prototype._isResolved = function() {
return null === this._promise
}, s.prototype._cleanup = function() {
this._promise = this._generator = null, r.cancellation() && null !== this._finallyPromise && (this._finallyPromise._fulfill(), this._finallyPromise = null)
}, s.prototype._promiseCancelled = function() {
if (!this._isResolved()) {
var e, a = "undefined" != typeof this._generator["return"];
if (a) this._promise._pushContext(), e = h(this._generator["return"]).call(this._generator, void 0), this._promise._popContext();
else {
var o = new t.CancellationError("generator .return() sentinel");
t.coroutine.returnSentinel = o, this._promise._attachExtraTrace(o), this._promise._pushContext(), e = h(this._generator["throw"]).call(this._generator, o), this._promise._popContext()
}
this._cancellationPhase = !0, this._yieldedPromise = null, this._continue(e)
}
}, s.prototype._promiseFulfilled = function(e) {
this._yieldedPromise = null, this._promise._pushContext();
var t = h(this._generator.next).call(this._generator, e);
this._promise._popContext(), this._continue(t)
}, s.prototype._promiseRejected = function(e) {
this._yieldedPromise = null, this._promise._attachExtraTrace(e), this._promise._pushContext();
var t = h(this._generator["throw"]).call(this._generator, e);
this._promise._popContext(), this._continue(t)
}, s.prototype._resultCancelled = function() {
if (this._yieldedPromise instanceof t) {
var e = this._yieldedPromise;
this._yieldedPromise = null, e.cancel()
}
}, s.prototype.promise = function() {
return this._promise
}, s.prototype._run = function() {
this._generator = this._generatorFunction.call(this._receiver), this._receiver = this._generatorFunction = void 0, this._promiseFulfilled(void 0)
}, s.prototype._continue = function(e) {
var a = this._promise;
if (e === p) return this._cleanup(), this._cancellationPhase ? a.cancel() : a._rejectCallback(e.e, !1);
var o = e.value;
if (e.done === !0) return this._cleanup(), this._cancellationPhase ? a.cancel() : a._resolveCallback(o);
var i = n(o, this._promise);
if (!(i instanceof t) && (i = u(i, this._yieldHandlers, this._promise), null === i)) return void this._promiseRejected(new l("A value %s was yielded that could not be treated as a promise\n\n See http://goo.gl/MqrFmX\n\n".replace("%s", o) + "From coroutine:\n" + this._stack.split("\n").slice(1, -7).join("\n")));
i = i._target();
var r = i._bitField;
0 === (50397184 & r) ? (this._yieldedPromise = i, i._proxy(this, null)) : 0 !== (33554432 & r) ? t._async.invoke(this._promiseFulfilled, this, i._value()) : 0 !== (16777216 & r) ? t._async.invoke(this._promiseRejected, this, i._reason()) : this._promiseCancelled()
}, t.coroutine = function(e, t) {
if ("function" != typeof e) throw new l("generatorFunction must be a function\n\n See http://goo.gl/MqrFmX\n");
var a = Object(t).yieldHandler,
o = s,
n = (new Error).stack;
return function() {
var t = e.apply(this, arguments),
i = new o(void 0, void 0, a, n),
r = i.promise();
return i._generator = t, i._promiseFulfilled(void 0), r
}
}, t.coroutine.addYieldHandler = function(e) {
if ("function" != typeof e) throw new l("expecting a function but got " + m.classString(e));
d.push(e)
}, t.spawn = function(e) {
if (r.deprecated("Promise.spawn()", "Promise.coroutine()"), "function" != typeof e) return a("generatorFunction must be a function\n\n See http://goo.gl/MqrFmX\n");
var o = new s(e, this),
n = o.promise();
return o._run(t.spawn), n
}
}
}, {
"./errors": 12,
"./util": 36
}],
17: [function(e, t, a) {
"use strict";
t.exports = function(t, a, o, n) {
var i = e("./util");
i.canEvaluate, i.tryCatch, i.errorObj;
t.join = function() {
var e, t = arguments.length - 1;
if (t > 0 && "function" == typeof arguments[t]) {
e = arguments[t];
var o
}
var n = [].slice.call(arguments);
e && n.pop();
var o = new a(n).promise();
return void 0 !== e ? o.spread(e) : o
}
}
}, {
"./util": 36
}],
18: [function(e, t, a) {
"use strict";
t.exports = function(t, a, o, n, i, r) {
function u(e, t, a, o) {
this.constructor$(e), this._promise._captureStackTrace();
var n = c();
this._callback = null === n ? t : n.bind(t), this._preservedValues = o === i ? new Array(this.length()) : null, this._limit = a, this._inFlight = 0, this._queue = a >= 1 ? [] : h, this._init$(void 0, -2)
}
function s(e, a, n, i) {
if ("function" != typeof a) return o("expecting a function but got " + l.classString(a));
var r = 0;
if (void 0 !== n) {
if ("object" != typeof n || null === n) return t.reject(new TypeError("options argument must be an object but it is " + l.classString(n)));
if ("number" != typeof n.concurrency) return t.reject(new TypeError("'concurrency' must be a number but it is " + l.classString(n.concurrency)));
r = n.concurrency
}
return r = "number" == typeof r && isFinite(r) && r >= 1 ? r : 0, new u(e, a, r, i).promise()
}
var c = t._getDomain,
l = e("./util"),
m = l.tryCatch,
p = l.errorObj,
h = [];
l.inherits(u, a), u.prototype._init = function() {}, u.prototype._promiseFulfilled = function(e, a) {
var o = this._values,
i = this.length(),
u = this._preservedValues,
s = this._limit;
if (0 > a) {
if (a = -1 * a - 1, o[a] = e, s >= 1 && (this._inFlight--, this._drainQueue(), this._isResolved())) return !0
} else {
if (s >= 1 && this._inFlight >= s) return o[a] = e, this._queue.push(a), !1;
null !== u && (u[a] = e);
var c = this._promise,
l = this._callback,
h = c._boundValue();
c._pushContext();
var d = m(l).call(h, e, a, i),
g = c._popContext();
if (r.checkForgottenReturns(d, g, null !== u ? "Promise.filter" : "Promise.map", c), d === p) return this._reject(d.e), !0;
var f = n(d, this._promise);
if (f instanceof t) {
f = f._target();
var k = f._bitField;
if (0 === (50397184 & k)) return s >= 1 && this._inFlight++, o[a] = f, f._proxy(this, -1 * (a + 1)), !1;
if (0 === (33554432 & k)) return 0 !== (16777216 & k) ? (this._reject(f._reason()), !0) : (this._cancel(), !0);
d = f._value()
}
o[a] = d
}
var y = ++this._totalResolved;
return y >= i ? (null !== u ? this._filter(o, u) : this._resolve(o), !0) : !1
}, u.prototype._drainQueue = function() {
for (var e = this._queue, t = this._limit, a = this._values; e.length > 0 && this._inFlight < t;) {
if (this._isResolved()) return;
var o = e.pop();
this._promiseFulfilled(a[o], o)
}
}, u.prototype._filter = function(e, t) {
for (var a = t.length, o = new Array(a), n = 0, i = 0; a > i; ++i) e[i] && (o[n++] = t[i]);
o.length = n, this._resolve(o)
}, u.prototype.preservedValues = function() {
return this._preservedValues
}, t.prototype.map = function(e, t) {
return s(this, e, t, null)
}, t.map = function(e, t, a, o) {
return s(e, t, a, o)
}
}
}, {
"./util": 36
}],
19: [function(e, t, a) {
"use strict";
t.exports = function(t, a, o, n, i) {
var r = e("./util"),
u = r.tryCatch;
t.method = function(e) {
if ("function" != typeof e) throw new t.TypeError("expecting a function but got " + r.classString(e));
return function() {
var o = new t(a);
o._captureStackTrace(), o._pushContext();
var n = u(e).apply(this, arguments),
r = o._popContext();
return i.checkForgottenReturns(n, r, "Promise.method", o), o._resolveFromSyncValue(n), o
}
}, t.attempt = t["try"] = function(e) {
if ("function" != typeof e) return n("expecting a function but got " + r.classString(e));
var o = new t(a);
o._captureStackTrace(), o._pushContext();
var s;
if (arguments.length > 1) {
i.deprecated("calling Promise.try with more than 1 argument");
var c = arguments[1],
l = arguments[2];
s = r.isArray(c) ? u(e).apply(l, c) : u(e).call(l, c)
} else s = u(e)();
var m = o._popContext();
return i.checkForgottenReturns(s, m, "Promise.try", o), o._resolveFromSyncValue(s), o
}, t.prototype._resolveFromSyncValue = function(e) {
e === r.errorObj ? this._rejectCallback(e.e, !1) : this._resolveCallback(e, !0)
}
}
}, {
"./util": 36
}],
20: [function(e, t, a) {
"use strict";
function o(e) {
return e instanceof Error && l.getPrototypeOf(e) === Error.prototype
}
function n(e) {
var t;
if (o(e)) {
t = new c(e), t.name = e.name, t.message = e.message, t.stack = e.stack;
for (var a = l.keys(e), n = 0; n < a.length; ++n) {
var i = a[n];
m.test(i) || (t[i] = e[i])
}
return t
}
return r.markAsOriginatingFromRejection(e), e
}
function i(e, t) {
return function(a, o) {
if (null !== e) {
if (a) {
var i = n(u(a));
e._attachExtraTrace(i), e._reject(i)
} else if (t) {
var r = [].slice.call(arguments, 1);
e._fulfill(r)
} else e._fulfill(o);
e = null
}
}
}
var r = e("./util"),
u = r.maybeWrapAsError,
s = e("./errors"),
c = s.OperationalError,
l = e("./es5"),
m = /^(?:name|message|stack|cause)$/;
t.exports = i
}, {
"./errors": 12,
"./es5": 13,
"./util": 36
}],
21: [function(e, t, a) {
"use strict";
t.exports = function(t) {
function a(e, t) {
var a = this;
if (!i.isArray(e)) return o.call(a, e, t);
var n = u(t).apply(a._boundValue(), [null].concat(e));
n === s && r.throwLater(n.e)
}
function o(e, t) {
var a = this,
o = a._boundValue(),
n = void 0 === e ? u(t).call(o, null) : u(t).call(o, null, e);
n === s && r.throwLater(n.e)
}
function n(e, t) {
var a = this;
if (!e) {
var o = new Error(e + "");
o.cause = e, e = o
}
var n = u(t).call(a._boundValue(), e);
n === s && r.throwLater(n.e)
}
var i = e("./util"),
r = t._async,
u = i.tryCatch,
s = i.errorObj;
t.prototype.asCallback = t.prototype.nodeify = function(e, t) {
if ("function" == typeof e) {
var i = o;
void 0 !== t && Object(t).spread && (i = a), this._then(i, n, void 0, this, e)
}
return this
}
}
}, {
"./util": 36
}],
22: [function(t, a, o) {
"use strict";
a.exports = function() {
function o() {}
function n(e, t) {
if ("function" != typeof t) throw new j("expecting a function but got " + d.classString(t));
if (e.constructor !== i) throw new j("the promise constructor cannot be invoked directly\n\n See http://goo.gl/MqrFmX\n")
}
function i(e) {
this._bitField = 0, this._fulfillmentHandler0 = void 0, this._rejectionHandler0 = void 0, this._promise0 = void 0, this._receiver0 = void 0, e !== b && (n(this, e), this._resolveFromExecutor(e)), this._promiseCreated(), this._fireEvent("promiseCreated", this)
}
function r(e) {
this.promise._resolveCallback(e)
}
function u(e) {
this.promise._rejectCallback(e, !1)
}
function s(e) {
var t = new i(b);
t._fulfillmentHandler0 = e, t._rejectionHandler0 = e, t._promise0 = e, t._receiver0 = e
}
var c, l = function() {
return new j("circular promise resolution chain\n\n See http://goo.gl/MqrFmX\n")
},
m = function() {
return new i.PromiseInspection(this._target())
},
p = function(e) {
return i.reject(new j(e))
},
h = {},
d = t("./util");
c = d.isNode ? function() {
var t = e.domain;
return void 0 === t && (t = null), t
} : function() {
return null
}, d.notEnumerableProp(i, "_getDomain", c);
var g = t("./es5"),
f = t("./async"),
k = new f;
g.defineProperty(i, "_async", {
value: k
});
var y = t("./errors"),
j = i.TypeError = y.TypeError;
i.RangeError = y.RangeError;
var v = i.CancellationError = y.CancellationError;
i.TimeoutError = y.TimeoutError, i.OperationalError = y.OperationalError, i.RejectionError = y.OperationalError, i.AggregateError = y.AggregateError;
var b = function() {},
w = {},
_ = {},
A = t("./thenables")(i, b),
E = t("./promise_array")(i, b, A, p, o),
C = t("./context")(i),
x = C.create,
F = t("./debuggability")(i, C),
z = (F.CapturedTrace, t("./finally")(i, A)),
D = t("./catch_filter")(_),
B = t("./nodeback"),
S = d.errorObj,
T = d.tryCatch;
return i.prototype.toString = function() {
return "[object Promise]"
}, i.prototype.caught = i.prototype["catch"] = function(e) {
var t = arguments.length;
if (t > 1) {
var a, o = new Array(t - 1),
n = 0;
for (a = 0; t - 1 > a; ++a) {
var i = arguments[a];
if (!d.isObject(i)) return p("expecting an object but got A catch statement predicate " + d.classString(i));
o[n++] = i
}
return o.length = n, e = arguments[a], this.then(void 0, D(o, e, this))
}
return this.then(void 0, e)
}, i.prototype.reflect = function() {
return this._then(m, m, void 0, this, void 0)
}, i.prototype.then = function(e, t) {
if (F.warnings() && arguments.length > 0 && "function" != typeof e && "function" != typeof t) {
var a = ".then() only accepts functions but was passed: " + d.classString(e);
arguments.length > 1 && (a += ", " + d.classString(t)), this._warn(a)
}
return this._then(e, t, void 0, void 0, void 0)
}, i.prototype.done = function(e, t) {
var a = this._then(e, t, void 0, void 0, void 0);
a._setIsFinal()
}, i.prototype.spread = function(e) {
return "function" != typeof e ? p("expecting a function but got " + d.classString(e)) : this.all()._then(e, void 0, void 0, w, void 0)
}, i.prototype.toJSON = function() {
var e = {
isFulfilled: !1,
isRejected: !1,
fulfillmentValue: void 0,
rejectionReason: void 0
};
return this.isFulfilled() ? (e.fulfillmentValue = this.value(), e.isFulfilled = !0) : this.isRejected() && (e.rejectionReason = this.reason(), e.isRejected = !0), e
}, i.prototype.all = function() {
return arguments.length > 0 && this._warn(".all() was passed arguments but it does not take any"), new E(this).promise()
}, i.prototype.error = function(e) {
return this.caught(d.originatesFromRejection, e)
}, i.getNewLibraryCopy = a.exports, i.is = function(e) {
return e instanceof i
}, i.fromNode = i.fromCallback = function(e) {
var t = new i(b);
t._captureStackTrace();
var a = arguments.length > 1 ? !!Object(arguments[1]).multiArgs : !1,
o = T(e)(B(t, a));
return o === S && t._rejectCallback(o.e, !0), t._isFateSealed() || t._setAsyncGuaranteed(), t
}, i.all = function(e) {
return new E(e).promise()
}, i.cast = function(e) {
var t = A(e);
return t instanceof i || (t = new i(b), t._captureStackTrace(), t._setFulfilled(), t._rejectionHandler0 = e), t
}, i.resolve = i.fulfilled = i.cast, i.reject = i.rejected = function(e) {
var t = new i(b);
return t._captureStackTrace(), t._rejectCallback(e, !0), t
}, i.setScheduler = function(e) {
if ("function" != typeof e) throw new j("expecting a function but got " + d.classString(e));
return k.setScheduler(e)
}, i.prototype._then = function(e, t, a, o, n) {
var r = void 0 !== n,
u = r ? n : new i(b),
s = this._target(),
l = s._bitField;
r || (u._propagateFrom(this, 3), u._captureStackTrace(), void 0 === o && 0 !== (2097152 & this._bitField) && (o = 0 !== (50397184 & l) ? this._boundValue() : s === this ? void 0 : this._boundTo), this._fireEvent("promiseChained", this, u));
var m = c();
if (0 !== (50397184 & l)) {
var p, h, d = s._settlePromiseCtx;
0 !== (33554432 & l) ? (h = s._rejectionHandler0, p = e) : 0 !== (16777216 & l) ? (h = s._fulfillmentHandler0, p = t, s._unsetRejectionIsUnhandled()) : (d = s._settlePromiseLateCancellationObserver, h = new v("late cancellation observer"), s._attachExtraTrace(h), p = t), k.invoke(d, s, {
handler: null === m ? p : "function" == typeof p && m.bind(p),
promise: u,
receiver: o,
value: h
})
} else s._addCallbacks(e, t, u, o, m);
return u
}, i.prototype._length = function() {
return 65535 & this._bitField
}, i.prototype._isFateSealed = function() {
return 0 !== (117506048 & this._bitField)
}, i.prototype._isFollowing = function() {
return 67108864 === (67108864 & this._bitField)
}, i.prototype._setLength = function(e) {
this._bitField = -65536 & this._bitField | 65535 & e
}, i.prototype._setFulfilled = function() {
this._bitField = 33554432 | this._bitField, this._fireEvent("promiseFulfilled", this)
}, i.prototype._setRejected = function() {
this._bitField = 16777216 | this._bitField, this._fireEvent("promiseRejected", this)
}, i.prototype._setFollowing = function() {
this._bitField = 67108864 | this._bitField, this._fireEvent("promiseResolved", this)
}, i.prototype._setIsFinal = function() {
this._bitField = 4194304 | this._bitField
}, i.prototype._isFinal = function() {
return (4194304 & this._bitField) > 0
}, i.prototype._unsetCancelled = function() {
this._bitField = -65537 & this._bitField
}, i.prototype._setCancelled = function() {
this._bitField = 65536 | this._bitField, this._fireEvent("promiseCancelled", this)
}, i.prototype._setWillBeCancelled = function() {
this._bitField = 8388608 | this._bitField
}, i.prototype._setAsyncGuaranteed = function() {
k.hasCustomScheduler() || (this._bitField = 134217728 | this._bitField)
}, i.prototype._receiverAt = function(e) {
var t = 0 === e ? this._receiver0 : this[4 * e - 4 + 3];
return t === h ? void 0 : void 0 === t && this._isBound() ? this._boundValue() : t
}, i.prototype._promiseAt = function(e) {
return this[4 * e - 4 + 2]
}, i.prototype._fulfillmentHandlerAt = function(e) {
return this[4 * e - 4 + 0]
}, i.prototype._rejectionHandlerAt = function(e) {
return this[4 * e - 4 + 1]
}, i.prototype._boundValue = function() {}, i.prototype._migrateCallback0 = function(e) {
var t = (e._bitField, e._fulfillmentHandler0),
a = e._rejectionHandler0,
o = e._promise0,
n = e._receiverAt(0);
void 0 === n && (n = h), this._addCallbacks(t, a, o, n, null)
}, i.prototype._migrateCallbackAt = function(e, t) {
var a = e._fulfillmentHandlerAt(t),
o = e._rejectionHandlerAt(t),
n = e._promiseAt(t),
i = e._receiverAt(t);
void 0 === i && (i = h), this._addCallbacks(a, o, n, i, null)
}, i.prototype._addCallbacks = function(e, t, a, o, n) {
var i = this._length();
if (i >= 65531 && (i = 0, this._setLength(0)), 0 === i) this._promise0 = a, this._receiver0 = o, "function" == typeof e && (this._fulfillmentHandler0 = null === n ? e : n.bind(e)), "function" == typeof t && (this._rejectionHandler0 = null === n ? t : n.bind(t));
else {
var r = 4 * i - 4;
this[r + 2] = a, this[r + 3] = o, "function" == typeof e && (this[r + 0] = null === n ? e : n.bind(e)), "function" == typeof t && (this[r + 1] = null === n ? t : n.bind(t))
}
return this._setLength(i + 1), i
}, i.prototype._proxy = function(e, t) {
this._addCallbacks(void 0, void 0, t, e, null)
}, i.prototype._resolveCallback = function(e, t) {
if (0 === (117506048 & this._bitField)) {
if (e === this) return this._rejectCallback(l(), !1);
var a = A(e, this);
if (!(a instanceof i)) return this._fulfill(e);
t && this._propagateFrom(a, 2);
var o = a._target();
if (o === this) return void this._reject(l());
var n = o._bitField;
if (0 === (50397184 & n)) {
var r = this._length();
r > 0 && o._migrateCallback0(this);
for (var u = 1; r > u; ++u) o._migrateCallbackAt(this, u);
this._setFollowing(), this._setLength(0), this._setFollowee(o)
} else if (0 !== (33554432 & n)) this._fulfill(o._value());
else if (0 !== (16777216 & n)) this._reject(o._reason());
else {
var s = new v("late cancellation observer");
o._attachExtraTrace(s), this._reject(s)
}
}
}, i.prototype._rejectCallback = function(e, t, a) {
var o = d.ensureErrorObject(e),
n = o === e;
if (!n && !a && F.warnings()) {
var i = "a promise was rejected with a non-error: " + d.classString(e);
this._warn(i, !0)
}
this._attachExtraTrace(o, t ? n : !1), this._reject(e)
}, i.prototype._resolveFromExecutor = function(e) {
var t = this;
this._captureStackTrace(), this._pushContext();
var a = !0,
o = this._execute(e, function(e) {
t._resolveCallback(e)
}, function(e) {
t._rejectCallback(e, a)
});
a = !1, this._popContext(), void 0 !== o && t._rejectCallback(o, !0)
}, i.prototype._settlePromiseFromHandler = function(e, t, a, o) {
var n = o._bitField;
if (0 === (65536 & n)) {
o._pushContext();
var i;
t === w ? a && "number" == typeof a.length ? i = T(e).apply(this._boundValue(), a) : (i = S, i.e = new j("cannot .spread() a non-array: " + d.classString(a))) : i = T(e).call(t, a);
var r = o._popContext();
n = o._bitField, 0 === (65536 & n) && (i === _ ? o._reject(a) : i === S ? o._rejectCallback(i.e, !1) : (F.checkForgottenReturns(i, r, "", o, this), o._resolveCallback(i)))
}
}, i.prototype._target = function() {
for (var e = this; e._isFollowing();) e = e._followee();
return e
}, i.prototype._followee = function() {
return this._rejectionHandler0
}, i.prototype._setFollowee = function(e) {
this._rejectionHandler0 = e
}, i.prototype._settlePromise = function(e, t, a, n) {
var r = e instanceof i,
u = this._bitField,
s = 0 !== (134217728 & u);
0 !== (65536 & u) ? (r && e._invokeInternalOnCancel(), a instanceof z && a.isFinallyHandler() ? (a.cancelPromise = e, T(t).call(a, n) === S && e._reject(S.e)) : t === m ? e._fulfill(m.call(a)) : a instanceof o ? a._promiseCancelled(e) : r || e instanceof E ? e._cancel() : a.cancel()) : "function" == typeof t ? r ? (s && e._setAsyncGuaranteed(), this._settlePromiseFromHandler(t, a, n, e)) : t.call(a, n, e) : a instanceof o ? a._isResolved() || (0 !== (33554432 & u) ? a._promiseFulfilled(n, e) : a._promiseRejected(n, e)) : r && (s && e._setAsyncGuaranteed(), 0 !== (33554432 & u) ? e._fulfill(n) : e._reject(n))
}, i.prototype._settlePromiseLateCancellationObserver = function(e) {
var t = e.handler,
a = e.promise,
o = e.receiver,
n = e.value;
"function" == typeof t ? a instanceof i ? this._settlePromiseFromHandler(t, o, n, a) : t.call(o, n, a) : a instanceof i && a._reject(n)
}, i.prototype._settlePromiseCtx = function(e) {
this._settlePromise(e.promise, e.handler, e.receiver, e.value)
}, i.prototype._settlePromise0 = function(e, t, a) {
var o = this._promise0,
n = this._receiverAt(0);
this._promise0 = void 0, this._receiver0 = void 0, this._settlePromise(o, e, n, t)
}, i.prototype._clearCallbackDataAtIndex = function(e) {
var t = 4 * e - 4;
this[t + 2] = this[t + 3] = this[t + 0] = this[t + 1] = void 0
}, i.prototype._fulfill = function(e) {
var t = this._bitField;
if (!((117506048 & t) >>> 16)) {
if (e === this) {
var a = l();
return this._attachExtraTrace(a), this._reject(a)
}
this._setFulfilled(), this._rejectionHandler0 = e, (65535 & t) > 0 && (0 !== (134217728 & t) ? this._settlePromises() : k.settlePromises(this))
}
}, i.prototype._reject = function(e) {
var t = this._bitField;
if (!((117506048 & t) >>> 16)) return this._setRejected(), this._fulfillmentHandler0 = e, this._isFinal() ? k.fatalError(e, d.isNode) : void((65535 & t) > 0 ? k.settlePromises(this) : this._ensurePossibleRejectionHandled())
}, i.prototype._fulfillPromises = function(e, t) {
for (var a = 1; e > a; a++) {
var o = this._fulfillmentHandlerAt(a),
n = this._promiseAt(a),
i = this._receiverAt(a);
this._clearCallbackDataAtIndex(a), this._settlePromise(n, o, i, t)
}
}, i.prototype._rejectPromises = function(e, t) {
for (var a = 1; e > a; a++) {
var o = this._rejectionHandlerAt(a),
n = this._promiseAt(a),
i = this._receiverAt(a);
this._clearCallbackDataAtIndex(a), this._settlePromise(n, o, i, t)
}
}, i.prototype._settlePromises = function() {
var e = this._bitField,
t = 65535 & e;
if (t > 0) {
if (0 !== (16842752 & e)) {
var a = this._fulfillmentHandler0;
this._settlePromise0(this._rejectionHandler0, a, e), this._rejectPromises(t, a)
} else {
var o = this._rejectionHandler0;
this._settlePromise0(this._fulfillmentHandler0, o, e), this._fulfillPromises(t, o)
}
this._setLength(0)
}
this._clearCancellationData()
}, i.prototype._settledValue = function() {
var e = this._bitField;
return 0 !== (33554432 & e) ? this._rejectionHandler0 : 0 !== (16777216 & e) ? this._fulfillmentHandler0 : void 0
}, i.defer = i.pending = function() {
F.deprecated("Promise.defer", "new Promise");
var e = new i(b);
return {
promise: e,
resolve: r,
reject: u
}
}, d.notEnumerableProp(i, "_makeSelfResolutionError", l), t("./method")(i, b, A, p, F), t("./bind")(i, b, A, F), t("./cancel")(i, E, p, F), t("./direct_resolve")(i, A), t("./synchronous_inspection")(i), t("./join")(i, E, A, b, F), i.Promise = i, i.version = "3.4.3", t("./map.js")(i, E, p, A, b, F), t("./call_get.js")(i), t("./using.js")(i, p, A, x, b, F), t("./timers.js")(i, b, F), t("./generators.js")(i, p, b, A, o, F), t("./nodeify.js")(i), t("./promisify.js")(i, b), t("./props.js")(i, E, A, p), t("./race.js")(i, b, A, p), t("./reduce.js")(i, E, p, A, b, F), t("./settle.js")(i, E, F), t("./some.js")(i, E, p), t("./filter.js")(i, b), t("./each.js")(i, b), t("./any.js")(i), d.toFastProperties(i), d.toFastProperties(i.prototype), s({
a: 1
}), s({
b: 2
}), s({
c: 3
}), s(1), s(function() {}), s(void 0), s(!1), s(new i(b)), F.setBounds(f.firstLineError, d.lastLineError), i
}
}, {
"./any.js": 1,
"./async": 2,
"./bind": 3,
"./call_get.js": 5,
"./cancel": 6,
"./catch_filter": 7,
"./context": 8,
"./debuggability": 9,
"./direct_resolve": 10,
"./each.js": 11,
"./errors": 12,
"./es5": 13,
"./filter.js": 14,
"./finally": 15,
"./generators.js": 16,
"./join": 17,
"./map.js": 18,
"./method": 19,
"./nodeback": 20,
"./nodeify.js": 21,
"./promise_array": 23,
"./promisify.js": 24,
"./props.js": 25,
"./race.js": 27,
"./reduce.js": 28,
"./settle.js": 30,
"./some.js": 31,
"./synchronous_inspection": 32,
"./thenables": 33,
"./timers.js": 34,
"./using.js": 35,
"./util": 36
}],
23: [function(e, t, a) {
"use strict";
t.exports = function(t, a, o, n, i) {
function r(e) {
switch (e) {
case -2:
return [];
case -3:
return {}
}
}
function u(e) {
var o = this._promise = new t(a);
e instanceof t && o._propagateFrom(e, 3), o._setOnCancel(this), this._values = e, this._length = 0, this._totalResolved = 0, this._init(void 0, -2)
}
var s = e("./util");
s.isArray;
return s.inherits(u, i), u.prototype.length = function() {
return this._length
}, u.prototype.promise = function() {
return this._promise
}, u.prototype._init = function c(e, a) {
var i = o(this._values, this._promise);
if (i instanceof t) {
i = i._target();
var u = i._bitField;
if (this._values = i, 0 === (50397184 & u)) return this._promise._setAsyncGuaranteed(), i._then(c, this._reject, void 0, this, a);
if (0 === (33554432 & u)) return 0 !== (16777216 & u) ? this._reject(i._reason()) : this._cancel();
i = i._value()
}
if (i = s.asArray(i), null === i) {
var l = n("expecting an array or an iterable object but got " + s.classString(i)).reason();
return void this._promise._rejectCallback(l, !1)
}
return 0 === i.length ? void(-5 === a ? this._resolveEmptyArray() : this._resolve(r(a))) : void this._iterate(i)
}, u.prototype._iterate = function(e) {
var a = this.getActualLength(e.length);
this._length = a, this._values = this.shouldCopyValues() ? new Array(a) : this._values;
for (var n = this._promise, i = !1, r = null, u = 0; a > u; ++u) {
var s = o(e[u], n);
s instanceof t ? (s = s._target(), r = s._bitField) : r = null, i ? null !== r && s.suppressUnhandledRejections() : null !== r ? 0 === (50397184 & r) ? (s._proxy(this, u), this._values[u] = s) : i = 0 !== (33554432 & r) ? this._promiseFulfilled(s._value(), u) : 0 !== (16777216 & r) ? this._promiseRejected(s._reason(), u) : this._promiseCancelled(u) : i = this._promiseFulfilled(s, u)
}
i || n._setAsyncGuaranteed()
}, u.prototype._isResolved = function() {
return null === this._values
}, u.prototype._resolve = function(e) {
this._values = null, this._promise._fulfill(e)
}, u.prototype._cancel = function() {
!this._isResolved() && this._promise._isCancellable() && (this._values = null, this._promise._cancel())
}, u.prototype._reject = function(e) {
this._values = null, this._promise._rejectCallback(e, !1)
}, u.prototype._promiseFulfilled = function(e, t) {
this._values[t] = e;
var a = ++this._totalResolved;
return a >= this._length ? (this._resolve(this._values), !0) : !1
}, u.prototype._promiseCancelled = function() {
return this._cancel(), !0
}, u.prototype._promiseRejected = function(e) {
return this._totalResolved++, this._reject(e), !0
}, u.prototype._resultCancelled = function() {
if (!this._isResolved()) {
var e = this._values;
if (this._cancel(), e instanceof t) e.cancel();
else
for (var a = 0; a < e.length; ++a) e[a] instanceof t && e[a].cancel()
}
}, u.prototype.shouldCopyValues = function() {
return !0
}, u.prototype.getActualLength = function(e) {
return e
}, u
}
}, {
"./util": 36
}],
24: [function(e, t, a) {
"use strict";
t.exports = function(t, a) {
function o(e) {
return !w.test(e)
}
function n(e) {
try {
return e.__isPromisified__ === !0
} catch (t) {
return !1
}
}
function i(e, t, a) {
var o = h.getDataPropertyOrDefault(e, t + a, v);
return o ? n(o) : !1
}
function r(e, t, a) {
for (var o = 0; o < e.length; o += 2) {
var n = e[o];
if (a.test(n))
for (var i = n.replace(a, ""), r = 0; r < e.length; r += 2)
if (e[r] === i) throw new y("Cannot promisify an API that has normal methods with '%s'-suffix\n\n See http://goo.gl/MqrFmX\n".replace("%s", t))
}
}
function u(e, t, a, o) {
for (var u = h.inheritedDataKeys(e), s = [], c = 0; c < u.length; ++c) {
var l = u[c],
m = e[l],
p = o === _ ? !0 : _(l, m, e);
"function" != typeof m || n(m) || i(e, l, t) || !o(l, m, e, p) || s.push(l, m)
}
return r(s, t, a), s
}
function s(e, o, n, i, r, u) {
function s() {
var n = o;
o === p && (n = this);
var i = new t(a);
i._captureStackTrace();
var r = "string" == typeof l && this !== c ? this[l] : e,
s = d(i, u);
try {
r.apply(n, g(arguments, s))
} catch (m) {
i._rejectCallback(f(m), !0, !0)
}
return i._isFateSealed() || i._setAsyncGuaranteed(), i
}
var c = function() {
return this
}(),
l = e;
return "string" == typeof l && (e = i), h.notEnumerableProp(s, "__isPromisified__", !0), s
}
function c(e, t, a, o, n) {
for (var i = new RegExp(A(t) + "$"), r = u(e, t, i, a), s = 0, c = r.length; c > s; s += 2) {
var l = r[s],
m = r[s + 1],
d = l + t;
if (o === E) e[d] = E(l, p, l, m, t, n);
else {
var g = o(m, function() {
return E(l, p, l, m, t, n)
});
h.notEnumerableProp(g, "__isPromisified__", !0), e[d] = g
}
}
return h.toFastProperties(e), e
}
function l(e, t, a) {
return E(e, t, void 0, e, null, a)
}
var m, p = {},
h = e("./util"),
d = e("./nodeback"),
g = h.withAppended,
f = h.maybeWrapAsError,
k = h.canEvaluate,
y = e("./errors").TypeError,
j = "Async",
v = {
__isPromisified__: !0
},
b = ["arity", "length", "name", "arguments", "caller", "callee", "prototype", "__isPromisified__"],
w = new RegExp("^(?:" + b.join("|") + ")$"),
_ = function(e) {
return h.isIdentifier(e) && "_" !== e.charAt(0) && "constructor" !== e
},
A = function(e) {
return e.replace(/(
<!DOCTYPE html>
<body>
<script src="h0.js"></script>
以上是关于html Google Chrome扩展程序:蜂蜜(请参阅Ext错误:此扩展程序无法修改网络请求的请求标头“Referer”的主要内容,如果未能解决你的问题,请参考以下文章
Google Chrome 扩展程序 - 单击工具栏图标时打开新选项卡
当使用带有各种脚本的 Google Chrome 扩展注入 HTML 模板时,jQuery 似乎没有导入