No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
 
 
 
 
 
 

1998 líneas
132 KiB

  1. (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
  2. 'use strict';
  3. var _urlParser = require('./url-parser');
  4. var autoLoginButton = document.getElementById('autoLoginButton');
  5. function getCurrentTab() {
  6. return new Promise(function (resolve) {
  7. chrome.tabs.query({ active: true, currentWindow: true }, function (tabs) {
  8. resolve(tabs[0]);
  9. });
  10. });
  11. }
  12. getCurrentTab().then(function (currentTab) {
  13. chrome.tabs.sendMessage(currentTab.id, { type: 'isThereALoginForm' }, function (response) {
  14. if (typeof response !== 'undefined') {
  15. if (response.isThereALoginForm) {
  16. autoLoginButton.style.display = 'table-cell';
  17. } else {
  18. autoLoginButton.style.display = 'none';
  19. }
  20. }
  21. });
  22. });
  23. autoLoginButton.addEventListener('click', function (event) {
  24. event.preventDefault();
  25. var login = document.getElementById('login');
  26. var generatedPassword = document.getElementById('generatedPassword');
  27. if (!generatedPassword) {
  28. console.log('login, master password and site are required to generate a password', 'errorMessageField');
  29. return;
  30. }
  31. getCurrentTab().then(function (currentTab) {
  32. chrome.tabs.sendMessage(currentTab.id, {
  33. type: 'submitForm',
  34. login: login.value,
  35. password: generatedPassword.value
  36. });
  37. window.close();
  38. });
  39. });
  40. getCurrentTab().then(function (currentTab) {
  41. var site = (0, _urlParser.getDomainName)(currentTab.url);
  42. if (site !== null) {
  43. var siteField = document.getElementById('site');
  44. siteField.value = site;
  45. }
  46. });
  47. },{"./url-parser":2}],2:[function(require,module,exports){
  48. 'use strict';
  49. Object.defineProperty(exports, "__esModule", {
  50. value: true
  51. });
  52. exports._ipIsValid = exports.getDomainName = undefined;
  53. var _tldjs = require('tldjs');
  54. var _tldjs2 = _interopRequireDefault(_tldjs);
  55. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  56. function _ipIsValid(ipAddress) {
  57. return Boolean(/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(ipAddress));
  58. }
  59. function getDomainName(urlStr) {
  60. var domain = _tldjs2.default.getDomain(urlStr);
  61. var subDomain = _tldjs2.default.getSubdomain(urlStr);
  62. var ip = subDomain + '.' + domain;
  63. if (_ipIsValid(ip)) {
  64. return ip;
  65. }
  66. return domain;
  67. }
  68. exports.getDomainName = getDomainName;
  69. exports._ipIsValid = _ipIsValid;
  70. },{"tldjs":7}],3:[function(require,module,exports){
  71. (function (global){
  72. /*! https://mths.be/punycode v1.4.1 by @mathias */
  73. ;(function(root) {
  74. /** Detect free variables */
  75. var freeExports = typeof exports == 'object' && exports &&
  76. !exports.nodeType && exports;
  77. var freeModule = typeof module == 'object' && module &&
  78. !module.nodeType && module;
  79. var freeGlobal = typeof global == 'object' && global;
  80. if (
  81. freeGlobal.global === freeGlobal ||
  82. freeGlobal.window === freeGlobal ||
  83. freeGlobal.self === freeGlobal
  84. ) {
  85. root = freeGlobal;
  86. }
  87. /**
  88. * The `punycode` object.
  89. * @name punycode
  90. * @type Object
  91. */
  92. var punycode,
  93. /** Highest positive signed 32-bit float value */
  94. maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1
  95. /** Bootstring parameters */
  96. base = 36,
  97. tMin = 1,
  98. tMax = 26,
  99. skew = 38,
  100. damp = 700,
  101. initialBias = 72,
  102. initialN = 128, // 0x80
  103. delimiter = '-', // '\x2D'
  104. /** Regular expressions */
  105. regexPunycode = /^xn--/,
  106. regexNonASCII = /[^\x20-\x7E]/, // unprintable ASCII chars + non-ASCII chars
  107. regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, // RFC 3490 separators
  108. /** Error messages */
  109. errors = {
  110. 'overflow': 'Overflow: input needs wider integers to process',
  111. 'not-basic': 'Illegal input >= 0x80 (not a basic code point)',
  112. 'invalid-input': 'Invalid input'
  113. },
  114. /** Convenience shortcuts */
  115. baseMinusTMin = base - tMin,
  116. floor = Math.floor,
  117. stringFromCharCode = String.fromCharCode,
  118. /** Temporary variable */
  119. key;
  120. /*--------------------------------------------------------------------------*/
  121. /**
  122. * A generic error utility function.
  123. * @private
  124. * @param {String} type The error type.
  125. * @returns {Error} Throws a `RangeError` with the applicable error message.
  126. */
  127. function error(type) {
  128. throw new RangeError(errors[type]);
  129. }
  130. /**
  131. * A generic `Array#map` utility function.
  132. * @private
  133. * @param {Array} array The array to iterate over.
  134. * @param {Function} callback The function that gets called for every array
  135. * item.
  136. * @returns {Array} A new array of values returned by the callback function.
  137. */
  138. function map(array, fn) {
  139. var length = array.length;
  140. var result = [];
  141. while (length--) {
  142. result[length] = fn(array[length]);
  143. }
  144. return result;
  145. }
  146. /**
  147. * A simple `Array#map`-like wrapper to work with domain name strings or email
  148. * addresses.
  149. * @private
  150. * @param {String} domain The domain name or email address.
  151. * @param {Function} callback The function that gets called for every
  152. * character.
  153. * @returns {Array} A new string of characters returned by the callback
  154. * function.
  155. */
  156. function mapDomain(string, fn) {
  157. var parts = string.split('@');
  158. var result = '';
  159. if (parts.length > 1) {
  160. // In email addresses, only the domain name should be punycoded. Leave
  161. // the local part (i.e. everything up to `@`) intact.
  162. result = parts[0] + '@';
  163. string = parts[1];
  164. }
  165. // Avoid `split(regex)` for IE8 compatibility. See #17.
  166. string = string.replace(regexSeparators, '\x2E');
  167. var labels = string.split('.');
  168. var encoded = map(labels, fn).join('.');
  169. return result + encoded;
  170. }
  171. /**
  172. * Creates an array containing the numeric code points of each Unicode
  173. * character in the string. While JavaScript uses UCS-2 internally,
  174. * this function will convert a pair of surrogate halves (each of which
  175. * UCS-2 exposes as separate characters) into a single code point,
  176. * matching UTF-16.
  177. * @see `punycode.ucs2.encode`
  178. * @see <https://mathiasbynens.be/notes/javascript-encoding>
  179. * @memberOf punycode.ucs2
  180. * @name decode
  181. * @param {String} string The Unicode input string (UCS-2).
  182. * @returns {Array} The new array of code points.
  183. */
  184. function ucs2decode(string) {
  185. var output = [],
  186. counter = 0,
  187. length = string.length,
  188. value,
  189. extra;
  190. while (counter < length) {
  191. value = string.charCodeAt(counter++);
  192. if (value >= 0xD800 && value <= 0xDBFF && counter < length) {
  193. // high surrogate, and there is a next character
  194. extra = string.charCodeAt(counter++);
  195. if ((extra & 0xFC00) == 0xDC00) { // low surrogate
  196. output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);
  197. } else {
  198. // unmatched surrogate; only append this code unit, in case the next
  199. // code unit is the high surrogate of a surrogate pair
  200. output.push(value);
  201. counter--;
  202. }
  203. } else {
  204. output.push(value);
  205. }
  206. }
  207. return output;
  208. }
  209. /**
  210. * Creates a string based on an array of numeric code points.
  211. * @see `punycode.ucs2.decode`
  212. * @memberOf punycode.ucs2
  213. * @name encode
  214. * @param {Array} codePoints The array of numeric code points.
  215. * @returns {String} The new Unicode string (UCS-2).
  216. */
  217. function ucs2encode(array) {
  218. return map(array, function(value) {
  219. var output = '';
  220. if (value > 0xFFFF) {
  221. value -= 0x10000;
  222. output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);
  223. value = 0xDC00 | value & 0x3FF;
  224. }
  225. output += stringFromCharCode(value);
  226. return output;
  227. }).join('');
  228. }
  229. /**
  230. * Converts a basic code point into a digit/integer.
  231. * @see `digitToBasic()`
  232. * @private
  233. * @param {Number} codePoint The basic numeric code point value.
  234. * @returns {Number} The numeric value of a basic code point (for use in
  235. * representing integers) in the range `0` to `base - 1`, or `base` if
  236. * the code point does not represent a value.
  237. */
  238. function basicToDigit(codePoint) {
  239. if (codePoint - 48 < 10) {
  240. return codePoint - 22;
  241. }
  242. if (codePoint - 65 < 26) {
  243. return codePoint - 65;
  244. }
  245. if (codePoint - 97 < 26) {
  246. return codePoint - 97;
  247. }
  248. return base;
  249. }
  250. /**
  251. * Converts a digit/integer into a basic code point.
  252. * @see `basicToDigit()`
  253. * @private
  254. * @param {Number} digit The numeric value of a basic code point.
  255. * @returns {Number} The basic code point whose value (when used for
  256. * representing integers) is `digit`, which needs to be in the range
  257. * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is
  258. * used; else, the lowercase form is used. The behavior is undefined
  259. * if `flag` is non-zero and `digit` has no uppercase form.
  260. */
  261. function digitToBasic(digit, flag) {
  262. // 0..25 map to ASCII a..z or A..Z
  263. // 26..35 map to ASCII 0..9
  264. return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);
  265. }
  266. /**
  267. * Bias adaptation function as per section 3.4 of RFC 3492.
  268. * https://tools.ietf.org/html/rfc3492#section-3.4
  269. * @private
  270. */
  271. function adapt(delta, numPoints, firstTime) {
  272. var k = 0;
  273. delta = firstTime ? floor(delta / damp) : delta >> 1;
  274. delta += floor(delta / numPoints);
  275. for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {
  276. delta = floor(delta / baseMinusTMin);
  277. }
  278. return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));
  279. }
  280. /**
  281. * Converts a Punycode string of ASCII-only symbols to a string of Unicode
  282. * symbols.
  283. * @memberOf punycode
  284. * @param {String} input The Punycode string of ASCII-only symbols.
  285. * @returns {String} The resulting string of Unicode symbols.
  286. */
  287. function decode(input) {
  288. // Don't use UCS-2
  289. var output = [],
  290. inputLength = input.length,
  291. out,
  292. i = 0,
  293. n = initialN,
  294. bias = initialBias,
  295. basic,
  296. j,
  297. index,
  298. oldi,
  299. w,
  300. k,
  301. digit,
  302. t,
  303. /** Cached calculation results */
  304. baseMinusT;
  305. // Handle the basic code points: let `basic` be the number of input code
  306. // points before the last delimiter, or `0` if there is none, then copy
  307. // the first basic code points to the output.
  308. basic = input.lastIndexOf(delimiter);
  309. if (basic < 0) {
  310. basic = 0;
  311. }
  312. for (j = 0; j < basic; ++j) {
  313. // if it's not a basic code point
  314. if (input.charCodeAt(j) >= 0x80) {
  315. error('not-basic');
  316. }
  317. output.push(input.charCodeAt(j));
  318. }
  319. // Main decoding loop: start just after the last delimiter if any basic code
  320. // points were copied; start at the beginning otherwise.
  321. for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {
  322. // `index` is the index of the next character to be consumed.
  323. // Decode a generalized variable-length integer into `delta`,
  324. // which gets added to `i`. The overflow checking is easier
  325. // if we increase `i` as we go, then subtract off its starting
  326. // value at the end to obtain `delta`.
  327. for (oldi = i, w = 1, k = base; /* no condition */; k += base) {
  328. if (index >= inputLength) {
  329. error('invalid-input');
  330. }
  331. digit = basicToDigit(input.charCodeAt(index++));
  332. if (digit >= base || digit > floor((maxInt - i) / w)) {
  333. error('overflow');
  334. }
  335. i += digit * w;
  336. t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);
  337. if (digit < t) {
  338. break;
  339. }
  340. baseMinusT = base - t;
  341. if (w > floor(maxInt / baseMinusT)) {
  342. error('overflow');
  343. }
  344. w *= baseMinusT;
  345. }
  346. out = output.length + 1;
  347. bias = adapt(i - oldi, out, oldi == 0);
  348. // `i` was supposed to wrap around from `out` to `0`,
  349. // incrementing `n` each time, so we'll fix that now:
  350. if (floor(i / out) > maxInt - n) {
  351. error('overflow');
  352. }
  353. n += floor(i / out);
  354. i %= out;
  355. // Insert `n` at position `i` of the output
  356. output.splice(i++, 0, n);
  357. }
  358. return ucs2encode(output);
  359. }
  360. /**
  361. * Converts a string of Unicode symbols (e.g. a domain name label) to a
  362. * Punycode string of ASCII-only symbols.
  363. * @memberOf punycode
  364. * @param {String} input The string of Unicode symbols.
  365. * @returns {String} The resulting Punycode string of ASCII-only symbols.
  366. */
  367. function encode(input) {
  368. var n,
  369. delta,
  370. handledCPCount,
  371. basicLength,
  372. bias,
  373. j,
  374. m,
  375. q,
  376. k,
  377. t,
  378. currentValue,
  379. output = [],
  380. /** `inputLength` will hold the number of code points in `input`. */
  381. inputLength,
  382. /** Cached calculation results */
  383. handledCPCountPlusOne,
  384. baseMinusT,
  385. qMinusT;
  386. // Convert the input in UCS-2 to Unicode
  387. input = ucs2decode(input);
  388. // Cache the length
  389. inputLength = input.length;
  390. // Initialize the state
  391. n = initialN;
  392. delta = 0;
  393. bias = initialBias;
  394. // Handle the basic code points
  395. for (j = 0; j < inputLength; ++j) {
  396. currentValue = input[j];
  397. if (currentValue < 0x80) {
  398. output.push(stringFromCharCode(currentValue));
  399. }
  400. }
  401. handledCPCount = basicLength = output.length;
  402. // `handledCPCount` is the number of code points that have been handled;
  403. // `basicLength` is the number of basic code points.
  404. // Finish the basic string - if it is not empty - with a delimiter
  405. if (basicLength) {
  406. output.push(delimiter);
  407. }
  408. // Main encoding loop:
  409. while (handledCPCount < inputLength) {
  410. // All non-basic code points < n have been handled already. Find the next
  411. // larger one:
  412. for (m = maxInt, j = 0; j < inputLength; ++j) {
  413. currentValue = input[j];
  414. if (currentValue >= n && currentValue < m) {
  415. m = currentValue;
  416. }
  417. }
  418. // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,
  419. // but guard against overflow
  420. handledCPCountPlusOne = handledCPCount + 1;
  421. if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {
  422. error('overflow');
  423. }
  424. delta += (m - n) * handledCPCountPlusOne;
  425. n = m;
  426. for (j = 0; j < inputLength; ++j) {
  427. currentValue = input[j];
  428. if (currentValue < n && ++delta > maxInt) {
  429. error('overflow');
  430. }
  431. if (currentValue == n) {
  432. // Represent delta as a generalized variable-length integer
  433. for (q = delta, k = base; /* no condition */; k += base) {
  434. t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);
  435. if (q < t) {
  436. break;
  437. }
  438. qMinusT = q - t;
  439. baseMinusT = base - t;
  440. output.push(
  441. stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))
  442. );
  443. q = floor(qMinusT / baseMinusT);
  444. }
  445. output.push(stringFromCharCode(digitToBasic(q, 0)));
  446. bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);
  447. delta = 0;
  448. ++handledCPCount;
  449. }
  450. }
  451. ++delta;
  452. ++n;
  453. }
  454. return output.join('');
  455. }
  456. /**
  457. * Converts a Punycode string representing a domain name or an email address
  458. * to Unicode. Only the Punycoded parts of the input will be converted, i.e.
  459. * it doesn't matter if you call it on a string that has already been
  460. * converted to Unicode.
  461. * @memberOf punycode
  462. * @param {String} input The Punycoded domain name or email address to
  463. * convert to Unicode.
  464. * @returns {String} The Unicode representation of the given Punycode
  465. * string.
  466. */
  467. function toUnicode(input) {
  468. return mapDomain(input, function(string) {
  469. return regexPunycode.test(string)
  470. ? decode(string.slice(4).toLowerCase())
  471. : string;
  472. });
  473. }
  474. /**
  475. * Converts a Unicode string representing a domain name or an email address to
  476. * Punycode. Only the non-ASCII parts of the domain name will be converted,
  477. * i.e. it doesn't matter if you call it with a domain that's already in
  478. * ASCII.
  479. * @memberOf punycode
  480. * @param {String} input The domain name or email address to convert, as a
  481. * Unicode string.
  482. * @returns {String} The Punycode representation of the given domain name or
  483. * email address.
  484. */
  485. function toASCII(input) {
  486. return mapDomain(input, function(string) {
  487. return regexNonASCII.test(string)
  488. ? 'xn--' + encode(string)
  489. : string;
  490. });
  491. }
  492. /*--------------------------------------------------------------------------*/
  493. /** Define the public API */
  494. punycode = {
  495. /**
  496. * A string representing the current Punycode.js version number.
  497. * @memberOf punycode
  498. * @type String
  499. */
  500. 'version': '1.4.1',
  501. /**
  502. * An object of methods to convert from JavaScript's internal character
  503. * representation (UCS-2) to Unicode code points, and back.
  504. * @see <https://mathiasbynens.be/notes/javascript-encoding>
  505. * @memberOf punycode
  506. * @type Object
  507. */
  508. 'ucs2': {
  509. 'decode': ucs2decode,
  510. 'encode': ucs2encode
  511. },
  512. 'decode': decode,
  513. 'encode': encode,
  514. 'toASCII': toASCII,
  515. 'toUnicode': toUnicode
  516. };
  517. /** Expose `punycode` */
  518. // Some AMD build optimizers, like r.js, check for specific condition patterns
  519. // like the following:
  520. if (
  521. typeof define == 'function' &&
  522. typeof define.amd == 'object' &&
  523. define.amd
  524. ) {
  525. define('punycode', function() {
  526. return punycode;
  527. });
  528. } else if (freeExports && freeModule) {
  529. if (module.exports == freeExports) {
  530. // in Node.js, io.js, or RingoJS v0.8.0+
  531. freeModule.exports = punycode;
  532. } else {
  533. // in Narwhal or RingoJS v0.7.0-
  534. for (key in punycode) {
  535. punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);
  536. }
  537. }
  538. } else {
  539. // in Rhino or a web browser
  540. root.punycode = punycode;
  541. }
  542. }(this));
  543. }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
  544. },{}],4:[function(require,module,exports){
  545. // Copyright Joyent, Inc. and other Node contributors.
  546. //
  547. // Permission is hereby granted, free of charge, to any person obtaining a
  548. // copy of this software and associated documentation files (the
  549. // "Software"), to deal in the Software without restriction, including
  550. // without limitation the rights to use, copy, modify, merge, publish,
  551. // distribute, sublicense, and/or sell copies of the Software, and to permit
  552. // persons to whom the Software is furnished to do so, subject to the
  553. // following conditions:
  554. //
  555. // The above copyright notice and this permission notice shall be included
  556. // in all copies or substantial portions of the Software.
  557. //
  558. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  559. // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  560. // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
  561. // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
  562. // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
  563. // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
  564. // USE OR OTHER DEALINGS IN THE SOFTWARE.
  565. 'use strict';
  566. // If obj.hasOwnProperty has been overridden, then calling
  567. // obj.hasOwnProperty(prop) will break.
  568. // See: https://github.com/joyent/node/issues/1707
  569. function hasOwnProperty(obj, prop) {
  570. return Object.prototype.hasOwnProperty.call(obj, prop);
  571. }
  572. module.exports = function(qs, sep, eq, options) {
  573. sep = sep || '&';
  574. eq = eq || '=';
  575. var obj = {};
  576. if (typeof qs !== 'string' || qs.length === 0) {
  577. return obj;
  578. }
  579. var regexp = /\+/g;
  580. qs = qs.split(sep);
  581. var maxKeys = 1000;
  582. if (options && typeof options.maxKeys === 'number') {
  583. maxKeys = options.maxKeys;
  584. }
  585. var len = qs.length;
  586. // maxKeys <= 0 means that we should not limit keys count
  587. if (maxKeys > 0 && len > maxKeys) {
  588. len = maxKeys;
  589. }
  590. for (var i = 0; i < len; ++i) {
  591. var x = qs[i].replace(regexp, '%20'),
  592. idx = x.indexOf(eq),
  593. kstr, vstr, k, v;
  594. if (idx >= 0) {
  595. kstr = x.substr(0, idx);
  596. vstr = x.substr(idx + 1);
  597. } else {
  598. kstr = x;
  599. vstr = '';
  600. }
  601. k = decodeURIComponent(kstr);
  602. v = decodeURIComponent(vstr);
  603. if (!hasOwnProperty(obj, k)) {
  604. obj[k] = v;
  605. } else if (isArray(obj[k])) {
  606. obj[k].push(v);
  607. } else {
  608. obj[k] = [obj[k], v];
  609. }
  610. }
  611. return obj;
  612. };
  613. var isArray = Array.isArray || function (xs) {
  614. return Object.prototype.toString.call(xs) === '[object Array]';
  615. };
  616. },{}],5:[function(require,module,exports){
  617. // Copyright Joyent, Inc. and other Node contributors.
  618. //
  619. // Permission is hereby granted, free of charge, to any person obtaining a
  620. // copy of this software and associated documentation files (the
  621. // "Software"), to deal in the Software without restriction, including
  622. // without limitation the rights to use, copy, modify, merge, publish,
  623. // distribute, sublicense, and/or sell copies of the Software, and to permit
  624. // persons to whom the Software is furnished to do so, subject to the
  625. // following conditions:
  626. //
  627. // The above copyright notice and this permission notice shall be included
  628. // in all copies or substantial portions of the Software.
  629. //
  630. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  631. // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  632. // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
  633. // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
  634. // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
  635. // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
  636. // USE OR OTHER DEALINGS IN THE SOFTWARE.
  637. 'use strict';
  638. var stringifyPrimitive = function(v) {
  639. switch (typeof v) {
  640. case 'string':
  641. return v;
  642. case 'boolean':
  643. return v ? 'true' : 'false';
  644. case 'number':
  645. return isFinite(v) ? v : '';
  646. default:
  647. return '';
  648. }
  649. };
  650. module.exports = function(obj, sep, eq, name) {
  651. sep = sep || '&';
  652. eq = eq || '=';
  653. if (obj === null) {
  654. obj = undefined;
  655. }
  656. if (typeof obj === 'object') {
  657. return map(objectKeys(obj), function(k) {
  658. var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;
  659. if (isArray(obj[k])) {
  660. return map(obj[k], function(v) {
  661. return ks + encodeURIComponent(stringifyPrimitive(v));
  662. }).join(sep);
  663. } else {
  664. return ks + encodeURIComponent(stringifyPrimitive(obj[k]));
  665. }
  666. }).join(sep);
  667. }
  668. if (!name) return '';
  669. return encodeURIComponent(stringifyPrimitive(name)) + eq +
  670. encodeURIComponent(stringifyPrimitive(obj));
  671. };
  672. var isArray = Array.isArray || function (xs) {
  673. return Object.prototype.toString.call(xs) === '[object Array]';
  674. };
  675. function map (xs, f) {
  676. if (xs.map) return xs.map(f);
  677. var res = [];
  678. for (var i = 0; i < xs.length; i++) {
  679. res.push(f(xs[i], i));
  680. }
  681. return res;
  682. }
  683. var objectKeys = Object.keys || function (obj) {
  684. var res = [];
  685. for (var key in obj) {
  686. if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);
  687. }
  688. return res;
  689. };
  690. },{}],6:[function(require,module,exports){
  691. 'use strict';
  692. exports.decode = exports.parse = require('./decode');
  693. exports.encode = exports.stringify = require('./encode');
  694. },{"./decode":4,"./encode":5}],7:[function(require,module,exports){
  695. "use strict";
  696. var tld = require('./lib/tld.js').init();
  697. tld.rules = require('./rules.json');
  698. module.exports = tld;
  699. },{"./lib/tld.js":9,"./rules.json":10}],8:[function(require,module,exports){
  700. "use strict";
  701. function Rule (data){
  702. data = data || {};
  703. this.exception = data.exception || false;
  704. this.firstLevel = data.firstLevel || '';
  705. this.secondLevel = data.secondLevel || null;
  706. this.isHost = data.isHost || false;
  707. this.source = data.source || '';
  708. this.wildcard = data.wildcard || false;
  709. }
  710. /**
  711. * Returns the TLD or SLD (Second Level Domain) pattern for a rule
  712. *
  713. * @return {String}
  714. */
  715. Rule.prototype.getNormalXld = function getNormalXld(){
  716. return (this.secondLevel ? '.' + this.secondLevel : '') + '.' + this.firstLevel;
  717. };
  718. /**
  719. * Returns a pattern suitable for normal rule
  720. * Mostly for internal use
  721. *
  722. * @return {String}
  723. */
  724. Rule.prototype.getNormalPattern = function getNormalPattern(){
  725. return (this.secondLevel ? '\\.' + this.secondLevel : '') + '\\.' + this.firstLevel;
  726. };
  727. /**
  728. * Returns a pattern suitable for wildcard rule
  729. * Mostly for internal use
  730. *
  731. * @return {String}
  732. */
  733. Rule.prototype.getWildcardPattern = function getWildcardPattern(){
  734. return '\\.[^\\.]+' + this.getNormalXld().replace(/\./g, '\\.');
  735. };
  736. /**
  737. * Returns a pattern suitable for exception rule
  738. * Mostly for internal use
  739. *
  740. * @return {String}
  741. */
  742. Rule.prototype.getExceptionPattern = function getExceptionPattern(){
  743. return (this.secondLevel || '') + '\\.' + this.firstLevel;
  744. };
  745. /**
  746. * Returns the best pattern possible for a rule
  747. * You just have to test a value against it to check or extract a hostname
  748. *
  749. * @api
  750. * @param {string|undefined} before
  751. * @param {string|undefined} after
  752. * @return {String} A pattern to challenge some string against
  753. */
  754. Rule.prototype.getPattern = function getPattern(before, after){
  755. var pattern = '';
  756. before = (before === undefined) ? '(': before+'';
  757. after = (after === undefined) ? ')$': after+'';
  758. if (this.exception === true){
  759. pattern = this.getExceptionPattern();
  760. }
  761. else if (this.isHost === true) {
  762. pattern = this.firstLevel;
  763. }
  764. else{
  765. pattern = '[^\\.]+' + (this.wildcard ? this.getWildcardPattern() : this.getNormalPattern());
  766. }
  767. return before + pattern + after;
  768. };
  769. module.exports = Rule;
  770. },{}],9:[function(require,module,exports){
  771. "use strict";
  772. var Rule = require('./rule.js');
  773. var URL = require('url');
  774. /**
  775. * tld library
  776. *
  777. * Useable methods are those documented with an @api in JSDoc
  778. * See README.md for more explanations on how to use this stuff.
  779. */
  780. function tld () {
  781. /* jshint validthis: true */
  782. this.validHosts = [];
  783. this.rules = [];
  784. }
  785. tld.init = function init () {
  786. return new tld();
  787. };
  788. function trim(value) {
  789. return String(value).replace(/(^\s+|\s+$)/g, '');
  790. }
  791. // Array.some() polyfill for IE8
  792. function _someFunction(value, fun /*, thisArg */) {
  793. 'use strict';
  794. if (value === void 0 || value === null)
  795. throw new TypeError();
  796. var t = Object(value);
  797. var len = t.length >>> 0;
  798. if (typeof fun !== 'function') {
  799. throw new TypeError();
  800. }
  801. var thisArg = arguments.length >= 3 ? arguments[2] : void 0;
  802. for (var i = 0; i < len; i++)
  803. {
  804. if (i in t && fun.call(thisArg, t[i], i, t))
  805. return true;
  806. }
  807. return false;
  808. }
  809. // Array.map polyfill for IE8
  810. function _mapFunction(thisVal, fun /*, thisArg */) {
  811. "use strict";
  812. if (thisVal === void 0 || thisVal === null)
  813. throw new TypeError();
  814. var t = Object(thisVal);
  815. var len = t.length >>> 0;
  816. if (typeof fun !== "function") {
  817. throw new TypeError();
  818. }
  819. var res = new Array(len);
  820. var thisArg = arguments.length >= 3 ? arguments[2] : void 0;
  821. for (var i = 0; i < len; i++)
  822. {
  823. // NOTE: Absolute correctness would demand Object.defineProperty
  824. // be used. But this method is fairly new, and failure is
  825. // possible only if Object.prototype or Array.prototype
  826. // has a property |i| (very unlikely), so use a lesscorrect
  827. // but more portable alternative.
  828. if (i in t)
  829. res[i] = fun.call(thisArg, t[i], i, t);
  830. }
  831. return res;
  832. };
  833. /**
  834. * Returns the best rule for a given host based on candidates
  835. *
  836. * @static
  837. * @param host {String} Hostname to check rules against
  838. * @param rules {Array} List of rules used to work on
  839. * @return {Object} Candidate object, with a normal and exception state
  840. */
  841. tld.getCandidateRule = function getCandidateRule (host, rules, options) {
  842. var rule = {'normal': null, 'exception': null};
  843. options = options || { lazy: false };
  844. _someFunction(rules, function (r) {
  845. var pattern;
  846. // sld matching or validHost? escape the loop immediately (except if it's an exception)
  847. if ('.' + host === r.getNormalXld()) {
  848. if (options.lazy || r.exception || r.isHost) {
  849. rule.normal = r;
  850. }
  851. return true;
  852. }
  853. // otherwise check as a complete host
  854. // if it's an exception, we want to loop a bit more to a normal rule
  855. pattern = '.+' + r.getNormalPattern() + '$';
  856. if ((new RegExp(pattern)).test(host)) {
  857. rule[r.exception ? 'exception' : 'normal'] = r;
  858. return !r.exception;
  859. }
  860. return false;
  861. });
  862. // favouring the exception if encountered
  863. // previously we were copy-altering a rule, creating inconsistent results based on rule order order
  864. // @see https://github.com/oncletom/tld.js/pull/35
  865. if (rule.normal && rule.exception) {
  866. return rule.exception;
  867. }
  868. return rule.normal;
  869. };
  870. /**
  871. * Retrieve a subset of rules for a Top-Level-Domain string
  872. *
  873. * @param tld {String} Top-Level-Domain string
  874. * @return {Array} Rules subset
  875. */
  876. tld.prototype.getRulesForTld = function getRulesForTld (tld, default_rule) {
  877. var exception = '!';
  878. var wildcard = '*';
  879. var append_tld_rule = true;
  880. var rules = this.rules[tld];
  881. // Already parsed
  882. // Array.isArray polyfill for IE8
  883. if (Object.prototype.toString.call(rules) === '[object Array]') {
  884. return rules;
  885. }
  886. // Nothing found, apply some default value
  887. if (rules === void 0) {
  888. return default_rule ? [ default_rule ] : [];
  889. }
  890. // Parsing needed
  891. rules = _mapFunction(rules.split('|'), function transformAsRule (sld) {
  892. var first_bit = sld[0];
  893. if (first_bit === exception || first_bit === wildcard) {
  894. sld = sld.slice(1);
  895. if (!sld) {
  896. append_tld_rule = false;
  897. }
  898. }
  899. return new Rule({
  900. "firstLevel": tld,
  901. "secondLevel": sld,
  902. "exception": first_bit === exception,
  903. "wildcard": first_bit === wildcard
  904. });
  905. });
  906. // Always prepend to make it the latest rule to be applied
  907. if (append_tld_rule) {
  908. rules.unshift(new Rule({
  909. "firstLevel": tld
  910. }));
  911. }
  912. this.rules[tld] = rules.reverse();
  913. return rules;
  914. };
  915. /**
  916. * Checks if the TLD exists for a given host
  917. *
  918. * @api
  919. * @param {string} host
  920. * @return {boolean}
  921. */
  922. tld.prototype.tldExists = function tldExists(host){
  923. var hostTld;
  924. host = tld.cleanHostValue(host);
  925. // Easy case, it's a TLD
  926. if (this.rules[host]){
  927. return true;
  928. }
  929. // Popping only the TLD of the hostname
  930. hostTld = tld.extractTldFromHost(host);
  931. return this.rules[hostTld] !== undefined;
  932. };
  933. /**
  934. * Returns the public suffix (including exact matches)
  935. *
  936. * @api
  937. * @since 1.5
  938. * @param {string} host
  939. * @return {String}
  940. */
  941. tld.prototype.getPublicSuffix = function getPublicSuffix(host) {
  942. var hostTld, rules, rule;
  943. if (host in this.rules){
  944. return host;
  945. }
  946. host = tld.cleanHostValue(host);
  947. hostTld = tld.extractTldFromHost(host);
  948. rules = this.getRulesForTld(hostTld);
  949. rule = tld.getCandidateRule(host, rules, { lazy: true });
  950. if (rule === null) {
  951. return null;
  952. }
  953. return rule.getNormalXld().slice(1);
  954. };
  955. /**
  956. * Detects the domain based on rules and upon and a host string
  957. *
  958. * @api
  959. * @param {string} host
  960. * @return {String}
  961. */
  962. tld.prototype.getDomain = function getDomain (host) {
  963. var domain = null, hostTld, rules, rule;
  964. if (this.isValid(host) === false) {
  965. return null;
  966. }
  967. host = tld.cleanHostValue(host);
  968. hostTld = tld.extractTldFromHost(host);
  969. rules = this.getRulesForTld(hostTld, new Rule({"firstLevel": hostTld, "isHost": this.validHosts.indexOf(hostTld) !== -1}));
  970. rule = tld.getCandidateRule(host, rules);
  971. if (rule === null) {
  972. return null;
  973. }
  974. host.replace(new RegExp(rule.getPattern()), function (m, d) {
  975. domain = d;
  976. });
  977. return domain;
  978. };
  979. /**
  980. * Returns the subdomain of a host string
  981. *
  982. * @api
  983. * @param {string} host
  984. * @return {string|null} a subdomain string if any, blank string if subdomain is empty, otherwise null
  985. */
  986. tld.prototype.getSubdomain = function getSubdomain(host){
  987. var domain, r, subdomain;
  988. host = tld.cleanHostValue(host);
  989. domain = this.getDomain(host);
  990. // No domain found? Just abort, abort!
  991. if (domain === null){
  992. return null;
  993. }
  994. r = '\\.?'+ tld.escapeRegExp(domain)+'$';
  995. subdomain = host.replace(new RegExp(r, 'i'), '');
  996. return subdomain;
  997. };
  998. /**
  999. * Checking if a host string is valid
  1000. * It's usually a preliminary check before trying to use getDomain or anything else
  1001. *
  1002. * Beware: it does not check if the TLD exists.
  1003. *
  1004. * @api
  1005. * @param host {String}
  1006. * @return {Boolean}
  1007. */
  1008. tld.prototype.isValid = function isValid (host) {
  1009. return typeof host === 'string' && (this.validHosts.indexOf(host) !== -1 || (host.indexOf('.') !== -1 && host[0] !== '.'));
  1010. };
  1011. /**
  1012. * Utility to cleanup the base host value. Also removes url fragments.
  1013. *
  1014. * Works for:
  1015. * - hostname
  1016. * - //hostname
  1017. * - scheme://hostname
  1018. * - scheme+scheme://hostname
  1019. *
  1020. * @param {string} value
  1021. * @return {String}
  1022. */
  1023. // scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )
  1024. var hasPrefixRE = /^(([a-z][a-z0-9+.-]*)?:)?\/\//;
  1025. var invalidHostnameChars = /[^A-Za-z0-9.-]/;
  1026. tld.cleanHostValue = function cleanHostValue(value){
  1027. value = trim(value).toLowerCase();
  1028. var parts = URL.parse(hasPrefixRE.test(value) ? value : '//' + value, null, true);
  1029. if (parts.hostname && !invalidHostnameChars.test(parts.hostname)) { return parts.hostname; }
  1030. if (!invalidHostnameChars.test(value)) { return value; }
  1031. return '';
  1032. };
  1033. /**
  1034. * Utility to extract the TLD from a host string
  1035. *
  1036. * @param {string} host
  1037. * @return {String}
  1038. */
  1039. tld.extractTldFromHost = function extractTldFromHost(host){
  1040. return host.split('.').pop();
  1041. };
  1042. /**
  1043. * Escapes RegExp specific chars.
  1044. *
  1045. * @since 1.3.1
  1046. * @see https://github.com/oncletom/tld.js/pull/33
  1047. * @param {String|Mixed} s
  1048. * @returns {string} Escaped string for a safe use in a `new RegExp` expression
  1049. */
  1050. tld.escapeRegExp = function escapeRegExp(s) {
  1051. return String(s).replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1");
  1052. };
  1053. module.exports = tld;
  1054. },{"./rule.js":8,"url":11}],10:[function(require,module,exports){
  1055. module.exports={"ac":"com|edu|gov|net|mil|org","ad":"nom","ae":"co|net|org|sch|ac|gov|mil|blogspot","aero":"accident-investigation|accident-prevention|aerobatic|aeroclub|aerodrome|agents|aircraft|airline|airport|air-surveillance|airtraffic|air-traffic-control|ambulance|amusement|association|author|ballooning|broker|caa|cargo|catering|certification|championship|charter|civilaviation|club|conference|consultant|consulting|control|council|crew|design|dgca|educator|emergency|engine|engineer|entertainment|equipment|exchange|express|federation|flight|freight|fuel|gliding|government|groundhandling|group|hanggliding|homebuilt|insurance|journal|journalist|leasing|logistics|magazine|maintenance|marketplace|media|microlight|modelling|navigation|parachuting|paragliding|passenger-association|pilot|press|production|recreation|repbody|res|research|rotorcraft|safety|scientist|services|show|skydiving|software|student|taxi|trader|trading|trainer|union|workinggroup|works","af":"gov|com|org|net|edu","ag":"com|org|net|co|nom","ai":"off|com|net|org","al":"com|edu|gov|mil|net|org|blogspot","am":"blogspot","ao":"ed|gv|og|co|pb|it","aq":"","ar":"com|edu|gob|gov|int|mil|net|org|tur|blogspot.com","arpa":"e164|in-addr|ip6|iris|uri|urn","as":"gov","asia":"","at":"ac|co|gv|or|blogspot.co|biz|info|priv","au":"com|net|org|edu|gov|asn|id|info|conf|oz|act|nsw|nt|qld|sa|tas|vic|wa|act.edu|nsw.edu|nt.edu|qld.edu|sa.edu|tas.edu|vic.edu|wa.edu|qld.gov|sa.gov|tas.gov|vic.gov|wa.gov|blogspot.com","aw":"com","ax":"","az":"com|net|int|gov|org|edu|info|pp|mil|name|pro|biz","ba":"org|net|edu|gov|mil|unsa|unbi|co|com|rs|blogspot","bb":"biz|co|com|edu|gov|info|net|org|store|tv","bd":"*","be":"ac|blogspot","bf":"gov","bg":"a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|0|1|2|3|4|5|6|7|8|9|blogspot","bh":"com|edu|net|org|gov","bi":"co|com|edu|or|org","biz":"dyndns|for-better|for-more|for-some|for-the|selfip|webhop","bj":"asso|barreau|gouv|blogspot","bm":"com|edu|gov|net|org","bn":"*","bo":"com|edu|gov|gob|int|org|net|mil|tv","br":"adm|adv|agr|am|arq|art|ato|b|bio|blog|bmd|cim|cng|cnt|com|coop|ecn|eco|edu|emp|eng|esp|etc|eti|far|flog|fm|fnd|fot|fst|g12|ggf|gov|imb|ind|inf|jor|jus|leg|lel|mat|med|mil|mp|mus|net|*nom|not|ntr|odo|org|ppg|pro|psc|psi|qsl|radio|rec|slg|srv|taxi|teo|tmp|trd|tur|tv|vet|vlog|wiki|zlg|blogspot.com","bs":"com|net|org|edu|gov","bt":"com|edu|gov|net|org","bv":"","bw":"co|org","by":"gov|mil|com|of|blogspot.com","bz":"com|net|org|edu|gov|za","ca":"ab|bc|mb|nb|nf|nl|ns|nt|nu|on|pe|qc|sk|yk|gc|co|blogspot","cat":"","cc":"ftpaccess|game-server|myphotos|scrapping","cd":"gov","cf":"blogspot","cg":"","ch":"blogspot","ci":"org|or|com|co|edu|ed|ac|net|go|asso|xn--aroport-bya|int|presse|md|gouv","ck":"*|!www","cl":"gov|gob|co|mil|blogspot","cm":"co|com|gov|net","cn":"ac|com|edu|gov|net|org|mil|xn--55qx5d|xn--io0a7i|xn--od0alg|ah|bj|cq|fj|gd|gs|gz|gx|ha|hb|he|hi|hl|hn|jl|js|jx|ln|nm|nx|qh|sc|sd|sh|sn|sx|tj|xj|xz|yn|zj|hk|mo|tw|cn-north-1.compute.amazonaws|compute.amazonaws|s3.cn-north-1.amazonaws.com","co":"arts|com|edu|firm|gov|info|int|mil|net|nom|org|rec|web|blogspot.com","com":"ap-northeast-1.compute.amazonaws|ap-southeast-1.compute.amazonaws|ap-southeast-2.compute.amazonaws|compute.amazonaws|compute-1.amazonaws|eu-west-1.compute.amazonaws|eu-central-1.compute.amazonaws|sa-east-1.compute.amazonaws|us-east-1.amazonaws|us-gov-west-1.compute.amazonaws|us-west-1.compute.amazonaws|us-west-2.compute.amazonaws|z-1.compute-1.amazonaws|z-2.compute-1.amazonaws|elasticbeanstalk|elb.amazonaws|s3.amazonaws|s3-ap-northeast-1.amazonaws|s3-ap-southeast-1.amazonaws|s3-ap-southeast-2.amazonaws|s3-external-1.amazonaws|s3-external-2.amazonaws|s3-fips-us-gov-west-1.amazonaws|s3-eu-central-1.amazonaws|s3-eu-west-1.amazonaws|s3-sa-east-1.amazonaws|s3-us-gov-west-1.amazonaws|s3-us-west-1.amazonaws|s3-us-west-2.amazonaws|s3.eu-central-1.amazonaws|betainabox|ar|br|cn|de|eu|gb|hu|jpn|kr|mex|no|qc|ru|sa|se|uk|us|uy|za|africa|gr|co|cloudcontrolled|cloudcontrolapp|dreamhosters|dyndns-at-home|dyndns-at-work|dyndns-blog|dyndns-free|dyndns-home|dyndns-ip|dyndns-mail|dyndns-office|dyndns-pics|dyndns-remote|dyndns-server|dyndns-web|dyndns-wiki|dyndns-work|blogdns|cechire|dnsalias|dnsdojo|doesntexist|dontexist|doomdns|dyn-o-saur|dynalias|est-a-la-maison|est-a-la-masion|est-le-patron|est-mon-blogueur|from-ak|from-al|from-ar|from-ca|from-ct|from-dc|from-de|from-fl|from-ga|from-hi|from-ia|from-id|from-il|from-in|from-ks|from-ky|from-ma|from-md|from-mi|from-mn|from-mo|from-ms|from-mt|from-nc|from-nd|from-ne|from-nh|from-nj|from-nm|from-nv|from-oh|from-ok|from-or|from-pa|from-pr|from-ri|from-sc|from-sd|from-tn|from-tx|from-ut|from-va|from-vt|from-wa|from-wi|from-wv|from-wy|getmyip|gotdns|hobby-site|homelinux|homeunix|iamallama|is-a-anarchist|is-a-blogger|is-a-bookkeeper|is-a-bulls-fan|is-a-caterer|is-a-chef|is-a-conservative|is-a-cpa|is-a-cubicle-slave|is-a-democrat|is-a-designer|is-a-doctor|is-a-financialadvisor|is-a-geek|is-a-green|is-a-guru|is-a-hard-worker|is-a-hunter|is-a-landscaper|is-a-lawyer|is-a-liberal|is-a-libertarian|is-a-llama|is-a-musician|is-a-nascarfan|is-a-nurse|is-a-painter|is-a-personaltrainer|is-a-photographer|is-a-player|is-a-republican|is-a-rockstar|is-a-socialist|is-a-student|is-a-teacher|is-a-techie|is-a-therapist|is-an-accountant|is-an-actor|is-an-actress|is-an-anarchist|is-an-artist|is-an-engineer|is-an-entertainer|is-certified|is-gone|is-into-anime|is-into-cars|is-into-cartoons|is-into-games|is-leet|is-not-certified|is-slick|is-uberleet|is-with-theband|isa-geek|isa-hockeynut|issmarterthanyou|likes-pie|likescandy|neat-url|saves-the-whales|selfip|sells-for-less|sells-for-u|servebbs|simple-url|space-to-rent|teaches-yoga|writesthisblog|firebaseapp|flynnhub|githubusercontent|ro|appspot|blogspot|codespot|googleapis|googlecode|pagespeedmobilizer|withgoogle|withyoutube|herokuapp|herokussl|4u|nfshost|operaunite|outsystemscloud|gotpantheon|qa2|rhcloud|sinaapp|vipsinaapp|1kapp|hk|yolasite","coop":"","cr":"ac|co|ed|fi|go|or|sa","cu":"com|edu|org|net|gov|inf","cv":"blogspot","cw":"com|edu|net|org","cx":"gov|ath","cy":"ac|biz|com|ekloges|gov|ltd|name|net|org|parliament|press|pro|tm|blogspot.com","cz":"blogspot","de":"com|fuettertdasnetz|isteingeek|istmein|lebtimnetz|leitungsen|traeumtgerade|blogspot","dj":"","dk":"blogspot","dm":"com|net|org|edu|gov","do":"art|com|edu|gob|gov|mil|net|org|sld|web","dz":"com|org|net|gov|edu|asso|pol|art","ec":"com|info|net|fin|k12|med|pro|org|edu|gov|gob|mil","edu":"","ee":"edu|gov|riik|lib|med|com|pri|aip|org|fie|blogspot.com","eg":"com|edu|eun|gov|mil|name|net|org|sci|blogspot.com","er":"*","es":"com|nom|org|gob|edu|blogspot.com","et":"com|gov|org|edu|biz|name|info|net","eu":"","fi":"aland|blogspot|iki","fj":"*","fk":"*","fm":"","fo":"","fr":"com|asso|nom|prd|presse|tm|aeroport|assedic|avocat|avoues|cci|chambagri|chirurgiens-dentistes|experts-comptables|geometre-expert|gouv|greta|huissier-justice|medecin|notaires|pharmacien|port|veterinaire|blogspot","ga":"","gb":"","gd":"","ge":"com|edu|gov|org|mil|net|pvt","gf":"","gg":"co|net|org","gh":"com|edu|gov|org|mil","gi":"com|ltd|gov|mod|edu|org","gl":"co|com|edu|net|org","gm":"","gn":"ac|com|edu|gov|org|net","gov":"","gp":"com|net|mobi|edu|org|asso","gq":"","gr":"com|edu|net|org|gov|blogspot","gs":"","gt":"com|edu|gob|ind|mil|net|org","gu":"*","gw":"","gy":"co|com|net","hk":"com|edu|gov|idv|net|org|xn--55qx5d|xn--wcvs22d|xn--lcvr32d|xn--mxtq1m|xn--gmqw5a|xn--ciqpn|xn--gmq050i|xn--zf0avx|xn--io0a7i|xn--mk0axi|xn--od0alg|xn--od0aq3b|xn--tn0ag|xn--uc0atv|xn--uc0ay4a|blogspot|ltd|inc","hm":"","hn":"com|edu|org|net|mil|gob","hr":"iz|from|name|com|blogspot","ht":"com|shop|firm|info|adult|net|pro|org|med|art|coop|pol|asso|edu|rel|gouv|perso","hu":"co|info|org|priv|sport|tm|2000|agrar|bolt|casino|city|erotica|erotika|film|forum|games|hotel|ingatlan|jogasz|konyvelo|lakas|media|news|reklam|sex|shop|suli|szex|tozsde|utazas|video|blogspot","id":"ac|biz|co|desa|go|mil|my|net|or|sch|web|blogspot.co","ie":"gov|blogspot","il":"ac|co|gov|idf|k12|muni|net|org|blogspot.co","im":"ac|co|com|ltd.co|net|org|plc.co|tt|tv","in":"co|firm|net|org|gen|ind|nic|ac|edu|res|gov|mil|blogspot","info":"dyndns|barrel-of-knowledge|barrell-of-knowledge|for-our|groks-the|groks-this|here-for-more|knowsitall|selfip|webhop","int":"eu","io":"com|github|ngrok|nid|pantheon|sandcats","iq":"gov|edu|mil|com|org|net","ir":"ac|co|gov|id|net|org|sch|xn--mgba3a4f16a|xn--mgba3a4fra","is":"net|com|edu|gov|org|int|cupcake|blogspot","it":"gov|edu|abr|abruzzo|aosta-valley|aostavalley|bas|basilicata|cal|calabria|cam|campania|emilia-romagna|emiliaromagna|emr|friuli-v-giulia|friuli-ve-giulia|friuli-vegiulia|friuli-venezia-giulia|friuli-veneziagiulia|friuli-vgiulia|friuliv-giulia|friulive-giulia|friulivegiulia|friulivenezia-giulia|friuliveneziagiulia|friulivgiulia|fvg|laz|lazio|lig|liguria|lom|lombardia|lombardy|lucania|mar|marche|mol|molise|piedmont|piemonte|pmn|pug|puglia|sar|sardegna|sardinia|sic|sicilia|sicily|taa|tos|toscana|trentino-a-adige|trentino-aadige|trentino-alto-adige|trentino-altoadige|trentino-s-tirol|trentino-stirol|trentino-sud-tirol|trentino-sudtirol|trentino-sued-tirol|trentino-suedtirol|trentinoa-adige|trentinoaadige|trentinoalto-adige|trentinoaltoadige|trentinos-tirol|trentinostirol|trentinosud-tirol|trentinosudtirol|trentinosued-tirol|trentinosuedtirol|tuscany|umb|umbria|val-d-aosta|val-daosta|vald-aosta|valdaosta|valle-aosta|valle-d-aosta|valle-daosta|valleaosta|valled-aosta|valledaosta|vallee-aoste|valleeaoste|vao|vda|ven|veneto|ag|agrigento|al|alessandria|alto-adige|altoadige|an|ancona|andria-barletta-trani|andria-trani-barletta|andriabarlettatrani|andriatranibarletta|ao|aosta|aoste|ap|aq|aquila|ar|arezzo|ascoli-piceno|ascolipiceno|asti|at|av|avellino|ba|balsan|bari|barletta-trani-andria|barlettatraniandria|belluno|benevento|bergamo|bg|bi|biella|bl|bn|bo|bologna|bolzano|bozen|br|brescia|brindisi|bs|bt|bz|ca|cagliari|caltanissetta|campidano-medio|campidanomedio|campobasso|carbonia-iglesias|carboniaiglesias|carrara-massa|carraramassa|caserta|catania|catanzaro|cb|ce|cesena-forli|cesenaforli|ch|chieti|ci|cl|cn|co|como|cosenza|cr|cremona|crotone|cs|ct|cuneo|cz|dell-ogliastra|dellogliastra|en|enna|fc|fe|fermo|ferrara|fg|fi|firenze|florence|fm|foggia|forli-cesena|forlicesena|fr|frosinone|ge|genoa|genova|go|gorizia|gr|grosseto|iglesias-carbonia|iglesiascarbonia|im|imperia|is|isernia|kr|la-spezia|laquila|laspezia|latina|lc|le|lecce|lecco|li|livorno|lo|lodi|lt|lu|lucca|macerata|mantova|massa-carrara|massacarrara|matera|mb|mc|me|medio-campidano|mediocampidano|messina|mi|milan|milano|mn|mo|modena|monza-brianza|monza-e-della-brianza|monza|monzabrianza|monzaebrianza|monzaedellabrianza|ms|mt|na|naples|napoli|no|novara|nu|nuoro|og|ogliastra|olbia-tempio|olbiatempio|or|oristano|ot|pa|padova|padua|palermo|parma|pavia|pc|pd|pe|perugia|pesaro-urbino|pesarourbino|pescara|pg|pi|piacenza|pisa|pistoia|pn|po|pordenone|potenza|pr|prato|pt|pu|pv|pz|ra|ragusa|ravenna|rc|re|reggio-calabria|reggio-emilia|reggiocalabria|reggioemilia|rg|ri|rieti|rimini|rm|rn|ro|roma|rome|rovigo|sa|salerno|sassari|savona|si|siena|siracusa|so|sondrio|sp|sr|ss|suedtirol|sv|ta|taranto|te|tempio-olbia|tempioolbia|teramo|terni|tn|to|torino|tp|tr|trani-andria-barletta|trani-barletta-andria|traniandriabarletta|tranibarlettaandria|trapani|trentino|trento|treviso|trieste|ts|turin|tv|ud|udine|urbino-pesaro|urbinopesaro|va|varese|vb|vc|ve|venezia|venice|verbania|vercelli|verona|vi|vibo-valentia|vibovalentia|vicenza|viterbo|vr|vs|vt|vv|blogspot","je":"co|net|org","jm":"*","jo":"com|org|net|edu|sch|gov|mil|name","jobs":"","jp":"ac|ad|co|ed|go|gr|lg|ne|or|aichi|akita|aomori|chiba|ehime|fukui|fukuoka|fukushima|gifu|gunma|hiroshima|hokkaido|hyogo|ibaraki|ishikawa|iwate|kagawa|kagoshima|kanagawa|kochi|kumamoto|kyoto|mie|miyagi|miyazaki|nagano|nagasaki|nara|niigata|oita|okayama|okinawa|osaka|saga|saitama|shiga|shimane|shizuoka|tochigi|tokushima|tokyo|tottori|toyama|wakayama|yamagata|yamaguchi|yamanashi|xn--4pvxs|xn--vgu402c|xn--c3s14m|xn--f6qx53a|xn--8pvr4u|xn--uist22h|xn--djrs72d6uy|xn--mkru45i|xn--0trq7p7nn|xn--8ltr62k|xn--2m4a15e|xn--efvn9s|xn--32vp30h|xn--4it797k|xn--1lqs71d|xn--5rtp49c|xn--5js045d|xn--ehqz56n|xn--1lqs03n|xn--qqqt11m|xn--kbrq7o|xn--pssu33l|xn--ntsq17g|xn--uisz3g|xn--6btw5a|xn--1ctwo|xn--6orx2r|xn--rht61e|xn--rht27z|xn--djty4k|xn--nit225k|xn--rht3d|xn--klty5x|xn--kltx9a|xn--kltp7d|xn--uuwu58a|xn--zbx025d|xn--ntso0iqx3a|xn--elqq16h|xn--4it168d|xn--klt787d|xn--rny31h|xn--7t0a264c|xn--5rtq34k|xn--k7yn95e|xn--tor131o|xn--d5qv7z876c|*kawasaki|*kitakyushu|*kobe|*nagoya|*sapporo|*sendai|*yokohama|!city.kawasaki|!city.kitakyushu|!city.kobe|!city.nagoya|!city.sapporo|!city.sendai|!city.yokohama|aisai.aichi|ama.aichi|anjo.aichi|asuke.aichi|chiryu.aichi|chita.aichi|fuso.aichi|gamagori.aichi|handa.aichi|hazu.aichi|hekinan.aichi|higashiura.aichi|ichinomiya.aichi|inazawa.aichi|inuyama.aichi|isshiki.aichi|iwakura.aichi|kanie.aichi|kariya.aichi|kasugai.aichi|kira.aichi|kiyosu.aichi|komaki.aichi|konan.aichi|kota.aichi|mihama.aichi|miyoshi.aichi|nishio.aichi|nisshin.aichi|obu.aichi|oguchi.aichi|oharu.aichi|okazaki.aichi|owariasahi.aichi|seto.aichi|shikatsu.aichi|shinshiro.aichi|shitara.aichi|tahara.aichi|takahama.aichi|tobishima.aichi|toei.aichi|togo.aichi|tokai.aichi|tokoname.aichi|toyoake.aichi|toyohashi.aichi|toyokawa.aichi|toyone.aichi|toyota.aichi|tsushima.aichi|yatomi.aichi|akita.akita|daisen.akita|fujisato.akita|gojome.akita|hachirogata.akita|happou.akita|higashinaruse.akita|honjo.akita|honjyo.akita|ikawa.akita|kamikoani.akita|kamioka.akita|katagami.akita|kazuno.akita|kitaakita.akita|kosaka.akita|kyowa.akita|misato.akita|mitane.akita|moriyoshi.akita|nikaho.akita|noshiro.akita|odate.akita|oga.akita|ogata.akita|semboku.akita|yokote.akita|yurihonjo.akita|aomori.aomori|gonohe.aomori|hachinohe.aomori|hashikami.aomori|hiranai.aomori|hirosaki.aomori|itayanagi.aomori|kuroishi.aomori|misawa.aomori|mutsu.aomori|nakadomari.aomori|noheji.aomori|oirase.aomori|owani.aomori|rokunohe.aomori|sannohe.aomori|shichinohe.aomori|shingo.aomori|takko.aomori|towada.aomori|tsugaru.aomori|tsuruta.aomori|abiko.chiba|asahi.chiba|chonan.chiba|chosei.chiba|choshi.chiba|chuo.chiba|funabashi.chiba|futtsu.chiba|hanamigawa.chiba|ichihara.chiba|ichikawa.chiba|ichinomiya.chiba|inzai.chiba|isumi.chiba|kamagaya.chiba|kamogawa.chiba|kashiwa.chiba|katori.chiba|katsuura.chiba|kimitsu.chiba|kisarazu.chiba|kozaki.chiba|kujukuri.chiba|kyonan.chiba|matsudo.chiba|midori.chiba|mihama.chiba|minamiboso.chiba|mobara.chiba|mutsuzawa.chiba|nagara.chiba|nagareyama.chiba|narashino.chiba|narita.chiba|noda.chiba|oamishirasato.chiba|omigawa.chiba|onjuku.chiba|otaki.chiba|sakae.chiba|sakura.chiba|shimofusa.chiba|shirako.chiba|shiroi.chiba|shisui.chiba|sodegaura.chiba|sosa.chiba|tako.chiba|tateyama.chiba|togane.chiba|tohnosho.chiba|tomisato.chiba|urayasu.chiba|yachimata.chiba|yachiyo.chiba|yokaichiba.chiba|yokoshibahikari.chiba|yotsukaido.chiba|ainan.ehime|honai.ehime|ikata.ehime|imabari.ehime|iyo.ehime|kamijima.ehime|kihoku.ehime|kumakogen.ehime|masaki.ehime|matsuno.ehime|matsuyama.ehime|namikata.ehime|niihama.ehime|ozu.ehime|saijo.ehime|seiyo.ehime|shikokuchuo.ehime|tobe.ehime|toon.ehime|uchiko.ehime|uwajima.ehime|yawatahama.ehime|echizen.fukui|eiheiji.fukui|fukui.fukui|ikeda.fukui|katsuyama.fukui|mihama.fukui|minamiechizen.fukui|obama.fukui|ohi.fukui|ono.fukui|sabae.fukui|sakai.fukui|takahama.fukui|tsuruga.fukui|wakasa.fukui|ashiya.fukuoka|buzen.fukuoka|chikugo.fukuoka|chikuho.fukuoka|chikujo.fukuoka|chikushino.fukuoka|chikuzen.fukuoka|chuo.fukuoka|dazaifu.fukuoka|fukuchi.fukuoka|hakata.fukuoka|higashi.fukuoka|hirokawa.fukuoka|hisayama.fukuoka|iizuka.fukuoka|inatsuki.fukuoka|kaho.fukuoka|kasuga.fukuoka|kasuya.fukuoka|kawara.fukuoka|keisen.fukuoka|koga.fukuoka|kurate.fukuoka|kurogi.fukuoka|kurume.fukuoka|minami.fukuoka|miyako.fukuoka|miyama.fukuoka|miyawaka.fukuoka|mizumaki.fukuoka|munakata.fukuoka|nakagawa.fukuoka|nakama.fukuoka|nishi.fukuoka|nogata.fukuoka|ogori.fukuoka|okagaki.fukuoka|okawa.fukuoka|oki.fukuoka|omuta.fukuoka|onga.fukuoka|onojo.fukuoka|oto.fukuoka|saigawa.fukuoka|sasaguri.fukuoka|shingu.fukuoka|shinyoshitomi.fukuoka|shonai.fukuoka|soeda.fukuoka|sue.fukuoka|tachiarai.fukuoka|tagawa.fukuoka|takata.fukuoka|toho.fukuoka|toyotsu.fukuoka|tsuiki.fukuoka|ukiha.fukuoka|umi.fukuoka|usui.fukuoka|yamada.fukuoka|yame.fukuoka|yanagawa.fukuoka|yukuhashi.fukuoka|aizubange.fukushima|aizumisato.fukushima|aizuwakamatsu.fukushima|asakawa.fukushima|bandai.fukushima|date.fukushima|fukushima.fukushima|furudono.fukushima|futaba.fukushima|hanawa.fukushima|higashi.fukushima|hirata.fukushima|hirono.fukushima|iitate.fukushima|inawashiro.fukushima|ishikawa.fukushima|iwaki.fukushima|izumizaki.fukushima|kagamiishi.fukushima|kaneyama.fukushima|kawamata.fukushima|kitakata.fukushima|kitashiobara.fukushima|koori.fukushima|koriyama.fukushima|kunimi.fukushima|miharu.fukushima|mishima.fukushima|namie.fukushima|nango.fukushima|nishiaizu.fukushima|nishigo.fukushima|okuma.fukushima|omotego.fukushima|ono.fukushima|otama.fukushima|samegawa.fukushima|shimogo.fukushima|shirakawa.fukushima|showa.fukushima|soma.fukushima|sukagawa.fukushima|taishin.fukushima|tamakawa.fukushima|tanagura.fukushima|tenei.fukushima|yabuki.fukushima|yamato.fukushima|yamatsuri.fukushima|yanaizu.fukushima|yugawa.fukushima|anpachi.gifu|ena.gifu|gifu.gifu|ginan.gifu|godo.gifu|gujo.gifu|hashima.gifu|hichiso.gifu|hida.gifu|higashishirakawa.gifu|ibigawa.gifu|ikeda.gifu|kakamigahara.gifu|kani.gifu|kasahara.gifu|kasamatsu.gifu|kawaue.gifu|kitagata.gifu|mino.gifu|minokamo.gifu|mitake.gifu|mizunami.gifu|motosu.gifu|nakatsugawa.gifu|ogaki.gifu|sakahogi.gifu|seki.gifu|sekigahara.gifu|shirakawa.gifu|tajimi.gifu|takayama.gifu|tarui.gifu|toki.gifu|tomika.gifu|wanouchi.gifu|yamagata.gifu|yaotsu.gifu|yoro.gifu|annaka.gunma|chiyoda.gunma|fujioka.gunma|higashiagatsuma.gunma|isesaki.gunma|itakura.gunma|kanna.gunma|kanra.gunma|katashina.gunma|kawaba.gunma|kiryu.gunma|kusatsu.gunma|maebashi.gunma|meiwa.gunma|midori.gunma|minakami.gunma|naganohara.gunma|nakanojo.gunma|nanmoku.gunma|numata.gunma|oizumi.gunma|ora.gunma|ota.gunma|shibukawa.gunma|shimonita.gunma|shinto.gunma|showa.gunma|takasaki.gunma|takayama.gunma|tamamura.gunma|tatebayashi.gunma|tomioka.gunma|tsukiyono.gunma|tsumagoi.gunma|ueno.gunma|yoshioka.gunma|asaminami.hiroshima|daiwa.hiroshima|etajima.hiroshima|fuchu.hiroshima|fukuyama.hiroshima|hatsukaichi.hiroshima|higashihiroshima.hiroshima|hongo.hiroshima|jinsekikogen.hiroshima|kaita.hiroshima|kui.hiroshima|kumano.hiroshima|kure.hiroshima|mihara.hiroshima|miyoshi.hiroshima|naka.hiroshima|onomichi.hiroshima|osakikamijima.hiroshima|otake.hiroshima|saka.hiroshima|sera.hiroshima|seranishi.hiroshima|shinichi.hiroshima|shobara.hiroshima|takehara.hiroshima|abashiri.hokkaido|abira.hokkaido|aibetsu.hokkaido|akabira.hokkaido|akkeshi.hokkaido|asahikawa.hokkaido|ashibetsu.hokkaido|ashoro.hokkaido|assabu.hokkaido|atsuma.hokkaido|bibai.hokkaido|biei.hokkaido|bifuka.hokkaido|bihoro.hokkaido|biratori.hokkaido|chippubetsu.hokkaido|chitose.hokkaido|date.hokkaido|ebetsu.hokkaido|embetsu.hokkaido|eniwa.hokkaido|erimo.hokkaido|esan.hokkaido|esashi.hokkaido|fukagawa.hokkaido|fukushima.hokkaido|furano.hokkaido|furubira.hokkaido|haboro.hokkaido|hakodate.hokkaido|hamatonbetsu.hokkaido|hidaka.hokkaido|higashikagura.hokkaido|higashikawa.hokkaido|hiroo.hokkaido|hokuryu.hokkaido|hokuto.hokkaido|honbetsu.hokkaido|horokanai.hokkaido|horonobe.hokkaido|ikeda.hokkaido|imakane.hokkaido|ishikari.hokkaido|iwamizawa.hokkaido|iwanai.hokkaido|kamifurano.hokkaido|kamikawa.hokkaido|kamishihoro.hokkaido|kamisunagawa.hokkaido|kamoenai.hokkaido|kayabe.hokkaido|kembuchi.hokkaido|kikonai.hokkaido|kimobetsu.hokkaido|kitahiroshima.hokkaido|kitami.hokkaido|kiyosato.hokkaido|koshimizu.hokkaido|kunneppu.hokkaido|kuriyama.hokkaido|kuromatsunai.hokkaido|kushiro.hokkaido|kutchan.hokkaido|kyowa.hokkaido|mashike.hokkaido|matsumae.hokkaido|mikasa.hokkaido|minamifurano.hokkaido|mombetsu.hokkaido|moseushi.hokkaido|mukawa.hokkaido|muroran.hokkaido|naie.hokkaido|nakagawa.hokkaido|nakasatsunai.hokkaido|nakatombetsu.hokkaido|nanae.hokkaido|nanporo.hokkaido|nayoro.hokkaido|nemuro.hokkaido|niikappu.hokkaido|niki.hokkaido|nishiokoppe.hokkaido|noboribetsu.hokkaido|numata.hokkaido|obihiro.hokkaido|obira.hokkaido|oketo.hokkaido|okoppe.hokkaido|otaru.hokkaido|otobe.hokkaido|otofuke.hokkaido|otoineppu.hokkaido|oumu.hokkaido|ozora.hokkaido|pippu.hokkaido|rankoshi.hokkaido|rebun.hokkaido|rikubetsu.hokkaido|rishiri.hokkaido|rishirifuji.hokkaido|saroma.hokkaido|sarufutsu.hokkaido|shakotan.hokkaido|shari.hokkaido|shibecha.hokkaido|shibetsu.hokkaido|shikabe.hokkaido|shikaoi.hokkaido|shimamaki.hokkaido|shimizu.hokkaido|shimokawa.hokkaido|shinshinotsu.hokkaido|shintoku.hokkaido|shiranuka.hokkaido|shiraoi.hokkaido|shiriuchi.hokkaido|sobetsu.hokkaido|sunagawa.hokkaido|taiki.hokkaido|takasu.hokkaido|takikawa.hokkaido|takinoue.hokkaido|teshikaga.hokkaido|tobetsu.hokkaido|tohma.hokkaido|tomakomai.hokkaido|tomari.hokkaido|toya.hokkaido|toyako.hokkaido|toyotomi.hokkaido|toyoura.hokkaido|tsubetsu.hokkaido|tsukigata.hokkaido|urakawa.hokkaido|urausu.hokkaido|uryu.hokkaido|utashinai.hokkaido|wakkanai.hokkaido|wassamu.hokkaido|yakumo.hokkaido|yoichi.hokkaido|aioi.hyogo|akashi.hyogo|ako.hyogo|amagasaki.hyogo|aogaki.hyogo|asago.hyogo|ashiya.hyogo|awaji.hyogo|fukusaki.hyogo|goshiki.hyogo|harima.hyogo|himeji.hyogo|ichikawa.hyogo|inagawa.hyogo|itami.hyogo|kakogawa.hyogo|kamigori.hyogo|kamikawa.hyogo|kasai.hyogo|kasuga.hyogo|kawanishi.hyogo|miki.hyogo|minamiawaji.hyogo|nishinomiya.hyogo|nishiwaki.hyogo|ono.hyogo|sanda.hyogo|sannan.hyogo|sasayama.hyogo|sayo.hyogo|shingu.hyogo|shinonsen.hyogo|shiso.hyogo|sumoto.hyogo|taishi.hyogo|taka.hyogo|takarazuka.hyogo|takasago.hyogo|takino.hyogo|tamba.hyogo|tatsuno.hyogo|toyooka.hyogo|yabu.hyogo|yashiro.hyogo|yoka.hyogo|yokawa.hyogo|ami.ibaraki|asahi.ibaraki|bando.ibaraki|chikusei.ibaraki|daigo.ibaraki|fujishiro.ibaraki|hitachi.ibaraki|hitachinaka.ibaraki|hitachiomiya.ibaraki|hitachiota.ibaraki|ibaraki.ibaraki|ina.ibaraki|inashiki.ibaraki|itako.ibaraki|iwama.ibaraki|joso.ibaraki|kamisu.ibaraki|kasama.ibaraki|kashima.ibaraki|kasumigaura.ibaraki|koga.ibaraki|miho.ibaraki|mito.ibaraki|moriya.ibaraki|naka.ibaraki|namegata.ibaraki|oarai.ibaraki|ogawa.ibaraki|omitama.ibaraki|ryugasaki.ibaraki|sakai.ibaraki|sakuragawa.ibaraki|shimodate.ibaraki|shimotsuma.ibaraki|shirosato.ibaraki|sowa.ibaraki|suifu.ibaraki|takahagi.ibaraki|tamatsukuri.ibaraki|tokai.ibaraki|tomobe.ibaraki|tone.ibaraki|toride.ibaraki|tsuchiura.ibaraki|tsukuba.ibaraki|uchihara.ibaraki|ushiku.ibaraki|yachiyo.ibaraki|yamagata.ibaraki|yawara.ibaraki|yuki.ibaraki|anamizu.ishikawa|hakui.ishikawa|hakusan.ishikawa|kaga.ishikawa|kahoku.ishikawa|kanazawa.ishikawa|kawakita.ishikawa|komatsu.ishikawa|nakanoto.ishikawa|nanao.ishikawa|nomi.ishikawa|nonoichi.ishikawa|noto.ishikawa|shika.ishikawa|suzu.ishikawa|tsubata.ishikawa|tsurugi.ishikawa|uchinada.ishikawa|wajima.ishikawa|fudai.iwate|fujisawa.iwate|hanamaki.iwate|hiraizumi.iwate|hirono.iwate|ichinohe.iwate|ichinoseki.iwate|iwaizumi.iwate|iwate.iwate|joboji.iwate|kamaishi.iwate|kanegasaki.iwate|karumai.iwate|kawai.iwate|kitakami.iwate|kuji.iwate|kunohe.iwate|kuzumaki.iwate|miyako.iwate|mizusawa.iwate|morioka.iwate|ninohe.iwate|noda.iwate|ofunato.iwate|oshu.iwate|otsuchi.iwate|rikuzentakata.iwate|shiwa.iwate|shizukuishi.iwate|sumita.iwate|tanohata.iwate|tono.iwate|yahaba.iwate|yamada.iwate|ayagawa.kagawa|higashikagawa.kagawa|kanonji.kagawa|kotohira.kagawa|manno.kagawa|marugame.kagawa|mitoyo.kagawa|naoshima.kagawa|sanuki.kagawa|tadotsu.kagawa|takamatsu.kagawa|tonosho.kagawa|uchinomi.kagawa|utazu.kagawa|zentsuji.kagawa|akune.kagoshima|amami.kagoshima|hioki.kagoshima|isa.kagoshima|isen.kagoshima|izumi.kagoshima|kagoshima.kagoshima|kanoya.kagoshima|kawanabe.kagoshima|kinko.kagoshima|kouyama.kagoshima|makurazaki.kagoshima|matsumoto.kagoshima|minamitane.kagoshima|nakatane.kagoshima|nishinoomote.kagoshima|satsumasendai.kagoshima|soo.kagoshima|tarumizu.kagoshima|yusui.kagoshima|aikawa.kanagawa|atsugi.kanagawa|ayase.kanagawa|chigasaki.kanagawa|ebina.kanagawa|fujisawa.kanagawa|hadano.kanagawa|hakone.kanagawa|hiratsuka.kanagawa|isehara.kanagawa|kaisei.kanagawa|kamakura.kanagawa|kiyokawa.kanagawa|matsuda.kanagawa|minamiashigara.kanagawa|miura.kanagawa|nakai.kanagawa|ninomiya.kanagawa|odawara.kanagawa|oi.kanagawa|oiso.kanagawa|sagamihara.kanagawa|samukawa.kanagawa|tsukui.kanagawa|yamakita.kanagawa|yamato.kanagawa|yokosuka.kanagawa|yugawara.kanagawa|zama.kanagawa|zushi.kanagawa|aki.kochi|geisei.kochi|hidaka.kochi|higashitsuno.kochi|ino.kochi|kagami.kochi|kami.kochi|kitagawa.kochi|kochi.kochi|mihara.kochi|motoyama.kochi|muroto.kochi|nahari.kochi|nakamura.kochi|nankoku.kochi|nishitosa.kochi|niyodogawa.kochi|ochi.kochi|okawa.kochi|otoyo.kochi|otsuki.kochi|sakawa.kochi|sukumo.kochi|susaki.kochi|tosa.kochi|tosashimizu.kochi|toyo.kochi|tsuno.kochi|umaji.kochi|yasuda.kochi|yusuhara.kochi|amakusa.kumamoto|arao.kumamoto|aso.kumamoto|choyo.kumamoto|gyokuto.kumamoto|hitoyoshi.kumamoto|kamiamakusa.kumamoto|kashima.kumamoto|kikuchi.kumamoto|kosa.kumamoto|kumamoto.kumamoto|mashiki.kumamoto|mifune.kumamoto|minamata.kumamoto|minamioguni.kumamoto|nagasu.kumamoto|nishihara.kumamoto|oguni.kumamoto|ozu.kumamoto|sumoto.kumamoto|takamori.kumamoto|uki.kumamoto|uto.kumamoto|yamaga.kumamoto|yamato.kumamoto|yatsushiro.kumamoto|ayabe.kyoto|fukuchiyama.kyoto|higashiyama.kyoto|ide.kyoto|ine.kyoto|joyo.kyoto|kameoka.kyoto|kamo.kyoto|kita.kyoto|kizu.kyoto|kumiyama.kyoto|kyotamba.kyoto|kyotanabe.kyoto|kyotango.kyoto|maizuru.kyoto|minami.kyoto|minamiyamashiro.kyoto|miyazu.kyoto|muko.kyoto|nagaokakyo.kyoto|nakagyo.kyoto|nantan.kyoto|oyamazaki.kyoto|sakyo.kyoto|seika.kyoto|tanabe.kyoto|uji.kyoto|ujitawara.kyoto|wazuka.kyoto|yamashina.kyoto|yawata.kyoto|asahi.mie|inabe.mie|ise.mie|kameyama.mie|kawagoe.mie|kiho.mie|kisosaki.mie|kiwa.mie|komono.mie|kumano.mie|kuwana.mie|matsusaka.mie|meiwa.mie|mihama.mie|minamiise.mie|misugi.mie|miyama.mie|nabari.mie|shima.mie|suzuka.mie|tado.mie|taiki.mie|taki.mie|tamaki.mie|toba.mie|tsu.mie|udono.mie|ureshino.mie|watarai.mie|yokkaichi.mie|furukawa.miyagi|higashimatsushima.miyagi|ishinomaki.miyagi|iwanuma.miyagi|kakuda.miyagi|kami.miyagi|kawasaki.miyagi|kesennuma.miyagi|marumori.miyagi|matsushima.miyagi|minamisanriku.miyagi|misato.miyagi|murata.miyagi|natori.miyagi|ogawara.miyagi|ohira.miyagi|onagawa.miyagi|osaki.miyagi|rifu.miyagi|semine.miyagi|shibata.miyagi|shichikashuku.miyagi|shikama.miyagi|shiogama.miyagi|shiroishi.miyagi|tagajo.miyagi|taiwa.miyagi|tome.miyagi|tomiya.miyagi|wakuya.miyagi|watari.miyagi|yamamoto.miyagi|zao.miyagi|aya.miyazaki|ebino.miyazaki|gokase.miyazaki|hyuga.miyazaki|kadogawa.miyazaki|kawaminami.miyazaki|kijo.miyazaki|kitagawa.miyazaki|kitakata.miyazaki|kitaura.miyazaki|kobayashi.miyazaki|kunitomi.miyazaki|kushima.miyazaki|mimata.miyazaki|miyakonojo.miyazaki|miyazaki.miyazaki|morotsuka.miyazaki|nichinan.miyazaki|nishimera.miyazaki|nobeoka.miyazaki|saito.miyazaki|shiiba.miyazaki|shintomi.miyazaki|takaharu.miyazaki|takanabe.miyazaki|takazaki.miyazaki|tsuno.miyazaki|achi.nagano|agematsu.nagano|anan.nagano|aoki.nagano|asahi.nagano|azumino.nagano|chikuhoku.nagano|chikuma.nagano|chino.nagano|fujimi.nagano|hakuba.nagano|hara.nagano|hiraya.nagano|iida.nagano|iijima.nagano|iiyama.nagano|iizuna.nagano|ikeda.nagano|ikusaka.nagano|ina.nagano|karuizawa.nagano|kawakami.nagano|kiso.nagano|kisofukushima.nagano|kitaaiki.nagano|komagane.nagano|komoro.nagano|matsukawa.nagano|matsumoto.nagano|miasa.nagano|minamiaiki.nagano|minamimaki.nagano|minamiminowa.nagano|minowa.nagano|miyada.nagano|miyota.nagano|mochizuki.nagano|nagano.nagano|nagawa.nagano|nagiso.nagano|nakagawa.nagano|nakano.nagano|nozawaonsen.nagano|obuse.nagano|ogawa.nagano|okaya.nagano|omachi.nagano|omi.nagano|ookuwa.nagano|ooshika.nagano|otaki.nagano|otari.nagano|sakae.nagano|sakaki.nagano|saku.nagano|sakuho.nagano|shimosuwa.nagano|shinanomachi.nagano|shiojiri.nagano|suwa.nagano|suzaka.nagano|takagi.nagano|takamori.nagano|takayama.nagano|tateshina.nagano|tatsuno.nagano|togakushi.nagano|togura.nagano|tomi.nagano|ueda.nagano|wada.nagano|yamagata.nagano|yamanouchi.nagano|yasaka.nagano|yasuoka.nagano|chijiwa.nagasaki|futsu.nagasaki|goto.nagasaki|hasami.nagasaki|hirado.nagasaki|iki.nagasaki|isahaya.nagasaki|kawatana.nagasaki|kuchinotsu.nagasaki|matsuura.nagasaki|nagasaki.nagasaki|obama.nagasaki|omura.nagasaki|oseto.nagasaki|saikai.nagasaki|sasebo.nagasaki|seihi.nagasaki|shimabara.nagasaki|shinkamigoto.nagasaki|togitsu.nagasaki|tsushima.nagasaki|unzen.nagasaki|ando.nara|gose.nara|heguri.nara|higashiyoshino.nara|ikaruga.nara|ikoma.nara|kamikitayama.nara|kanmaki.nara|kashiba.nara|kashihara.nara|katsuragi.nara|kawai.nara|kawakami.nara|kawanishi.nara|koryo.nara|kurotaki.nara|mitsue.nara|miyake.nara|nara.nara|nosegawa.nara|oji.nara|ouda.nara|oyodo.nara|sakurai.nara|sango.nara|shimoichi.nara|shimokitayama.nara|shinjo.nara|soni.nara|takatori.nara|tawaramoto.nara|tenkawa.nara|tenri.nara|uda.nara|yamatokoriyama.nara|yamatotakada.nara|yamazoe.nara|yoshino.nara|aga.niigata|agano.niigata|gosen.niigata|itoigawa.niigata|izumozaki.niigata|joetsu.niigata|kamo.niigata|kariwa.niigata|kashiwazaki.niigata|minamiuonuma.niigata|mitsuke.niigata|muika.niigata|murakami.niigata|myoko.niigata|nagaoka.niigata|niigata.niigata|ojiya.niigata|omi.niigata|sado.niigata|sanjo.niigata|seiro.niigata|seirou.niigata|sekikawa.niigata|shibata.niigata|tagami.niigata|tainai.niigata|tochio.niigata|tokamachi.niigata|tsubame.niigata|tsunan.niigata|uonuma.niigata|yahiko.niigata|yoita.niigata|yuzawa.niigata|beppu.oita|bungoono.oita|bungotakada.oita|hasama.oita|hiji.oita|himeshima.oita|hita.oita|kamitsue.oita|kokonoe.oita|kuju.oita|kunisaki.oita|kusu.oita|oita.oita|saiki.oita|taketa.oita|tsukumi.oita|usa.oita|usuki.oita|yufu.oita|akaiwa.okayama|asakuchi.okayama|bizen.okayama|hayashima.okayama|ibara.okayama|kagamino.okayama|kasaoka.okayama|kibichuo.okayama|kumenan.okayama|kurashiki.okayama|maniwa.okayama|misaki.okayama|nagi.okayama|niimi.okayama|nishiawakura.okayama|okayama.okayama|satosho.okayama|setouchi.okayama|shinjo.okayama|shoo.okayama|soja.okayama|takahashi.okayama|tamano.okayama|tsuyama.okayama|wake.okayama|yakage.okayama|aguni.okinawa|ginowan.okinawa|ginoza.okinawa|gushikami.okinawa|haebaru.okinawa|higashi.okinawa|hirara.okinawa|iheya.okinawa|ishigaki.okinawa|ishikawa.okinawa|itoman.okinawa|izena.okinawa|kadena.okinawa|kin.okinawa|kitadaito.okinawa|kitanakagusuku.okinawa|kumejima.okinawa|kunigami.okinawa|minamidaito.okinawa|motobu.okinawa|nago.okinawa|naha.okinawa|nakagusuku.okinawa|nakijin.okinawa|nanjo.okinawa|nishihara.okinawa|ogimi.okinawa|okinawa.okinawa|onna.okinawa|shimoji.okinawa|taketomi.okinawa|tarama.okinawa|tokashiki.okinawa|tomigusuku.okinawa|tonaki.okinawa|urasoe.okinawa|uruma.okinawa|yaese.okinawa|yomitan.okinawa|yonabaru.okinawa|yonaguni.okinawa|zamami.okinawa|abeno.osaka|chihayaakasaka.osaka|chuo.osaka|daito.osaka|fujiidera.osaka|habikino.osaka|hannan.osaka|higashiosaka.osaka|higashisumiyoshi.osaka|higashiyodogawa.osaka|hirakata.osaka|ibaraki.osaka|ikeda.osaka|izumi.osaka|izumiotsu.osaka|izumisano.osaka|kadoma.osaka|kaizuka.osaka|kanan.osaka|kashiwara.osaka|katano.osaka|kawachinagano.osaka|kishiwada.osaka|kita.osaka|kumatori.osaka|matsubara.osaka|minato.osaka|minoh.osaka|misaki.osaka|moriguchi.osaka|neyagawa.osaka|nishi.osaka|nose.osaka|osakasayama.osaka|sakai.osaka|sayama.osaka|sennan.osaka|settsu.osaka|shijonawate.osaka|shimamoto.osaka|suita.osaka|tadaoka.osaka|taishi.osaka|tajiri.osaka|takaishi.osaka|takatsuki.osaka|tondabayashi.osaka|toyonaka.osaka|toyono.osaka|yao.osaka|ariake.saga|arita.saga|fukudomi.saga|genkai.saga|hamatama.saga|hizen.saga|imari.saga|kamimine.saga|kanzaki.saga|karatsu.saga|kashima.saga|kitagata.saga|kitahata.saga|kiyama.saga|kouhoku.saga|kyuragi.saga|nishiarita.saga|ogi.saga|omachi.saga|ouchi.saga|saga.saga|shiroishi.saga|taku.saga|tara.saga|tosu.saga|yoshinogari.saga|arakawa.saitama|asaka.saitama|chichibu.saitama|fujimi.saitama|fujimino.saitama|fukaya.saitama|hanno.saitama|hanyu.saitama|hasuda.saitama|hatogaya.saitama|hatoyama.saitama|hidaka.saitama|higashichichibu.saitama|higashimatsuyama.saitama|honjo.saitama|ina.saitama|iruma.saitama|iwatsuki.saitama|kamiizumi.saitama|kamikawa.saitama|kamisato.saitama|kasukabe.saitama|kawagoe.saitama|kawaguchi.saitama|kawajima.saitama|kazo.saitama|kitamoto.saitama|koshigaya.saitama|kounosu.saitama|kuki.saitama|kumagaya.saitama|matsubushi.saitama|minano.saitama|misato.saitama|miyashiro.saitama|miyoshi.saitama|moroyama.saitama|nagatoro.saitama|namegawa.saitama|niiza.saitama|ogano.saitama|ogawa.saitama|ogose.saitama|okegawa.saitama|omiya.saitama|otaki.saitama|ranzan.saitama|ryokami.saitama|saitama.saitama|sakado.saitama|satte.saitama|sayama.saitama|shiki.saitama|shiraoka.saitama|soka.saitama|sugito.saitama|toda.saitama|tokigawa.saitama|tokorozawa.saitama|tsurugashima.saitama|urawa.saitama|warabi.saitama|yashio.saitama|yokoze.saitama|yono.saitama|yorii.saitama|yoshida.saitama|yoshikawa.saitama|yoshimi.saitama|aisho.shiga|gamo.shiga|higashiomi.shiga|hikone.shiga|koka.shiga|konan.shiga|kosei.shiga|koto.shiga|kusatsu.shiga|maibara.shiga|moriyama.shiga|nagahama.shiga|nishiazai.shiga|notogawa.shiga|omihachiman.shiga|otsu.shiga|ritto.shiga|ryuoh.shiga|takashima.shiga|takatsuki.shiga|torahime.shiga|toyosato.shiga|yasu.shiga|akagi.shimane|ama.shimane|gotsu.shimane|hamada.shimane|higashiizumo.shimane|hikawa.shimane|hikimi.shimane|izumo.shimane|kakinoki.shimane|masuda.shimane|matsue.shimane|misato.shimane|nishinoshima.shimane|ohda.shimane|okinoshima.shimane|okuizumo.shimane|shimane.shimane|tamayu.shimane|tsuwano.shimane|unnan.shimane|yakumo.shimane|yasugi.shimane|yatsuka.shimane|arai.shizuoka|atami.shizuoka|fuji.shizuoka|fujieda.shizuoka|fujikawa.shizuoka|fujinomiya.shizuoka|fukuroi.shizuoka|gotemba.shizuoka|haibara.shizuoka|hamamatsu.shizuoka|higashiizu.shizuoka|ito.shizuoka|iwata.shizuoka|izu.shizuoka|izunokuni.shizuoka|kakegawa.shizuoka|kannami.shizuoka|kawanehon.shizuoka|kawazu.shizuoka|kikugawa.shizuoka|kosai.shizuoka|makinohara.shizuoka|matsuzaki.shizuoka|minamiizu.shizuoka|mishima.shizuoka|morimachi.shizuoka|nishiizu.shizuoka|numazu.shizuoka|omaezaki.shizuoka|shimada.shizuoka|shimizu.shizuoka|shimoda.shizuoka|shizuoka.shizuoka|susono.shizuoka|yaizu.shizuoka|yoshida.shizuoka|ashikaga.tochigi|bato.tochigi|haga.tochigi|ichikai.tochigi|iwafune.tochigi|kaminokawa.tochigi|kanuma.tochigi|karasuyama.tochigi|kuroiso.tochigi|mashiko.tochigi|mibu.tochigi|moka.tochigi|motegi.tochigi|nasu.tochigi|nasushiobara.tochigi|nikko.tochigi|nishikata.tochigi|nogi.tochigi|ohira.tochigi|ohtawara.tochigi|oyama.tochigi|sakura.tochigi|sano.tochigi|shimotsuke.tochigi|shioya.tochigi|takanezawa.tochigi|tochigi.tochigi|tsuga.tochigi|ujiie.tochigi|utsunomiya.tochigi|yaita.tochigi|aizumi.tokushima|anan.tokushima|ichiba.tokushima|itano.tokushima|kainan.tokushima|komatsushima.tokushima|matsushige.tokushima|mima.tokushima|minami.tokushima|miyoshi.tokushima|mugi.tokushima|nakagawa.tokushima|naruto.tokushima|sanagochi.tokushima|shishikui.tokushima|tokushima.tokushima|wajiki.tokushima|adachi.tokyo|akiruno.tokyo|akishima.tokyo|aogashima.tokyo|arakawa.tokyo|bunkyo.tokyo|chiyoda.tokyo|chofu.tokyo|chuo.tokyo|edogawa.tokyo|fuchu.tokyo|fussa.tokyo|hachijo.tokyo|hachioji.tokyo|hamura.tokyo|higashikurume.tokyo|higashimurayama.tokyo|higashiyamato.tokyo|hino.tokyo|hinode.tokyo|hinohara.tokyo|inagi.tokyo|itabashi.tokyo|katsushika.tokyo|kita.tokyo|kiyose.tokyo|kodaira.tokyo|koganei.tokyo|kokubunji.tokyo|komae.tokyo|koto.tokyo|kouzushima.tokyo|kunitachi.tokyo|machida.tokyo|meguro.tokyo|minato.tokyo|mitaka.tokyo|mizuho.tokyo|musashimurayama.tokyo|musashino.tokyo|nakano.tokyo|nerima.tokyo|ogasawara.tokyo|okutama.tokyo|ome.tokyo|oshima.tokyo|ota.tokyo|setagaya.tokyo|shibuya.tokyo|shinagawa.tokyo|shinjuku.tokyo|suginami.tokyo|sumida.tokyo|tachikawa.tokyo|taito.tokyo|tama.tokyo|toshima.tokyo|chizu.tottori|hino.tottori|kawahara.tottori|koge.tottori|kotoura.tottori|misasa.tottori|nanbu.tottori|nichinan.tottori|sakaiminato.tottori|tottori.tottori|wakasa.tottori|yazu.tottori|yonago.tottori|asahi.toyama|fuchu.toyama|fukumitsu.toyama|funahashi.toyama|himi.toyama|imizu.toyama|inami.toyama|johana.toyama|kamiichi.toyama|kurobe.toyama|nakaniikawa.toyama|namerikawa.toyama|nanto.toyama|nyuzen.toyama|oyabe.toyama|taira.toyama|takaoka.toyama|tateyama.toyama|toga.toyama|tonami.toyama|toyama.toyama|unazuki.toyama|uozu.toyama|yamada.toyama|arida.wakayama|aridagawa.wakayama|gobo.wakayama|hashimoto.wakayama|hidaka.wakayama|hirogawa.wakayama|inami.wakayama|iwade.wakayama|kainan.wakayama|kamitonda.wakayama|katsuragi.wakayama|kimino.wakayama|kinokawa.wakayama|kitayama.wakayama|koya.wakayama|koza.wakayama|kozagawa.wakayama|kudoyama.wakayama|kushimoto.wakayama|mihama.wakayama|misato.wakayama|nachikatsuura.wakayama|shingu.wakayama|shirahama.wakayama|taiji.wakayama|tanabe.wakayama|wakayama.wakayama|yuasa.wakayama|yura.wakayama|asahi.yamagata|funagata.yamagata|higashine.yamagata|iide.yamagata|kahoku.yamagata|kaminoyama.yamagata|kaneyama.yamagata|kawanishi.yamagata|mamurogawa.yamagata|mikawa.yamagata|murayama.yamagata|nagai.yamagata|nakayama.yamagata|nanyo.yamagata|nishikawa.yamagata|obanazawa.yamagata|oe.yamagata|oguni.yamagata|ohkura.yamagata|oishida.yamagata|sagae.yamagata|sakata.yamagata|sakegawa.yamagata|shinjo.yamagata|shirataka.yamagata|shonai.yamagata|takahata.yamagata|tendo.yamagata|tozawa.yamagata|tsuruoka.yamagata|yamagata.yamagata|yamanobe.yamagata|yonezawa.yamagata|yuza.yamagata|abu.yamaguchi|hagi.yamaguchi|hikari.yamaguchi|hofu.yamaguchi|iwakuni.yamaguchi|kudamatsu.yamaguchi|mitou.yamaguchi|nagato.yamaguchi|oshima.yamaguchi|shimonoseki.yamaguchi|shunan.yamaguchi|tabuse.yamaguchi|tokuyama.yamaguchi|toyota.yamaguchi|ube.yamaguchi|yuu.yamaguchi|chuo.yamanashi|doshi.yamanashi|fuefuki.yamanashi|fujikawa.yamanashi|fujikawaguchiko.yamanashi|fujiyoshida.yamanashi|hayakawa.yamanashi|hokuto.yamanashi|ichikawamisato.yamanashi|kai.yamanashi|kofu.yamanashi|koshu.yamanashi|kosuge.yamanashi|minami-alps.yamanashi|minobu.yamanashi|nakamichi.yamanashi|nanbu.yamanashi|narusawa.yamanashi|nirasaki.yamanashi|nishikatsura.yamanashi|oshino.yamanashi|otsuki.yamanashi|showa.yamanashi|tabayama.yamanashi|tsuru.yamanashi|uenohara.yamanashi|yamanakako.yamanashi|yamanashi.yamanashi|blogspot","ke":"*|blogspot.co","kg":"org|net|com|edu|gov|mil","kh":"*","ki":"edu|biz|net|org|gov|info|com","km":"org|nom|gov|prd|tm|edu|mil|ass|com|coop|asso|presse|medecin|notaires|pharmaciens|veterinaire|gouv","kn":"net|org|edu|gov","kp":"com|edu|gov|org|rep|tra","kr":"ac|co|es|go|hs|kg|mil|ms|ne|or|pe|re|sc|busan|chungbuk|chungnam|daegu|daejeon|gangwon|gwangju|gyeongbuk|gyeonggi|gyeongnam|incheon|jeju|jeonbuk|jeonnam|seoul|ulsan|blogspot","kw":"*","ky":"edu|gov|com|org|net","kz":"org|edu|net|gov|mil|com","la":"int|net|info|edu|gov|per|com|org|c","lb":"com|edu|gov|net|org","lc":"com|net|co|org|edu|gov","li":"blogspot","lk":"gov|sch|net|int|com|org|edu|ngo|soc|web|ltd|assn|grp|hotel|ac","lr":"com|edu|gov|org|net","ls":"co|org","lt":"gov|blogspot","lu":"blogspot","lv":"com|edu|gov|org|mil|id|net|asn|conf","ly":"com|net|gov|plc|edu|sch|med|org|id","ma":"co|net|gov|org|ac|press","mc":"tm|asso","md":"blogspot","me":"co|net|org|edu|ac|gov|its|priv","mg":"org|nom|gov|prd|tm|edu|mil|com|co","mh":"","mil":"","mk":"com|org|net|edu|gov|inf|name|blogspot","ml":"com|edu|gouv|gov|net|org|presse","mm":"*","mn":"gov|edu|org|nyc","mo":"com|net|org|edu|gov","mobi":"","mp":"","mq":"","mr":"gov|blogspot","ms":"com|edu|gov|net|org","mt":"com|edu|net|org|blogspot.com","mu":"com|net|org|gov|ac|co|or","museum":"academy|agriculture|air|airguard|alabama|alaska|amber|ambulance|american|americana|americanantiques|americanart|amsterdam|and|annefrank|anthro|anthropology|antiques|aquarium|arboretum|archaeological|archaeology|architecture|art|artanddesign|artcenter|artdeco|arteducation|artgallery|arts|artsandcrafts|asmatart|assassination|assisi|association|astronomy|atlanta|austin|australia|automotive|aviation|axis|badajoz|baghdad|bahn|bale|baltimore|barcelona|baseball|basel|baths|bauern|beauxarts|beeldengeluid|bellevue|bergbau|berkeley|berlin|bern|bible|bilbao|bill|birdart|birthplace|bonn|boston|botanical|botanicalgarden|botanicgarden|botany|brandywinevalley|brasil|bristol|british|britishcolumbia|broadcast|brunel|brussel|brussels|bruxelles|building|burghof|bus|bushey|cadaques|california|cambridge|can|canada|capebreton|carrier|cartoonart|casadelamoneda|castle|castres|celtic|center|chattanooga|cheltenham|chesapeakebay|chicago|children|childrens|childrensgarden|chiropractic|chocolate|christiansburg|cincinnati|cinema|circus|civilisation|civilization|civilwar|clinton|clock|coal|coastaldefence|cody|coldwar|collection|colonialwilliamsburg|coloradoplateau|columbia|columbus|communication|communications|community|computer|computerhistory|xn--comunicaes-v6a2o|contemporary|contemporaryart|convent|copenhagen|corporation|xn--correios-e-telecomunicaes-ghc29a|corvette|costume|countryestate|county|crafts|cranbrook|creation|cultural|culturalcenter|culture|cyber|cymru|dali|dallas|database|ddr|decorativearts|delaware|delmenhorst|denmark|depot|design|detroit|dinosaur|discovery|dolls|donostia|durham|eastafrica|eastcoast|education|educational|egyptian|eisenbahn|elburg|elvendrell|embroidery|encyclopedic|england|entomology|environment|environmentalconservation|epilepsy|essex|estate|ethnology|exeter|exhibition|family|farm|farmequipment|farmers|farmstead|field|figueres|filatelia|film|fineart|finearts|finland|flanders|florida|force|fortmissoula|fortworth|foundation|francaise|frankfurt|franziskaner|freemasonry|freiburg|fribourg|frog|fundacio|furniture|gallery|garden|gateway|geelvinck|gemological|geology|georgia|giessen|glas|glass|gorge|grandrapids|graz|guernsey|halloffame|hamburg|handson|harvestcelebration|hawaii|health|heimatunduhren|hellas|helsinki|hembygdsforbund|heritage|histoire|historical|historicalsociety|historichouses|historisch|historisches|history|historyofscience|horology|house|humanities|illustration|imageandsound|indian|indiana|indianapolis|indianmarket|intelligence|interactive|iraq|iron|isleofman|jamison|jefferson|jerusalem|jewelry|jewish|jewishart|jfk|journalism|judaica|judygarland|juedisches|juif|karate|karikatur|kids|koebenhavn|koeln|kunst|kunstsammlung|kunstunddesign|labor|labour|lajolla|lancashire|landes|lans|xn--lns-qla|larsson|lewismiller|lincoln|linz|living|livinghistory|localhistory|london|losangeles|louvre|loyalist|lucerne|luxembourg|luzern|mad|madrid|mallorca|manchester|mansion|mansions|manx|marburg|maritime|maritimo|maryland|marylhurst|media|medical|medizinhistorisches|meeres|memorial|mesaverde|michigan|midatlantic|military|mill|miners|mining|minnesota|missile|missoula|modern|moma|money|monmouth|monticello|montreal|moscow|motorcycle|muenchen|muenster|mulhouse|muncie|museet|museumcenter|museumvereniging|music|national|nationalfirearms|nationalheritage|nativeamerican|naturalhistory|naturalhistorymuseum|naturalsciences|nature|naturhistorisches|natuurwetenschappen|naumburg|naval|nebraska|neues|newhampshire|newjersey|newmexico|newport|newspaper|newyork|niepce|norfolk|north|nrw|nuernberg|nuremberg|nyc|nyny|oceanographic|oceanographique|omaha|online|ontario|openair|oregon|oregontrail|otago|oxford|pacific|paderborn|palace|paleo|palmsprings|panama|paris|pasadena|pharmacy|philadelphia|philadelphiaarea|philately|phoenix|photography|pilots|pittsburgh|planetarium|plantation|plants|plaza|portal|portland|portlligat|posts-and-telecommunications|preservation|presidio|press|project|public|pubol|quebec|railroad|railway|research|resistance|riodejaneiro|rochester|rockart|roma|russia|saintlouis|salem|salvadordali|salzburg|sandiego|sanfrancisco|santabarbara|santacruz|santafe|saskatchewan|satx|savannahga|schlesisches|schoenbrunn|schokoladen|school|schweiz|science|scienceandhistory|scienceandindustry|sciencecenter|sciencecenters|science-fiction|sciencehistory|sciences|sciencesnaturelles|scotland|seaport|settlement|settlers|shell|sherbrooke|sibenik|silk|ski|skole|society|sologne|soundandvision|southcarolina|southwest|space|spy|square|stadt|stalbans|starnberg|state|stateofdelaware|station|steam|steiermark|stjohn|stockholm|stpetersburg|stuttgart|suisse|surgeonshall|surrey|svizzera|sweden|sydney|tank|tcm|technology|telekommunikation|television|texas|textile|theater|time|timekeeping|topology|torino|touch|town|transport|tree|trolley|trust|trustee|uhren|ulm|undersea|university|usa|usantiques|usarts|uscountryestate|usculture|usdecorativearts|usgarden|ushistory|ushuaia|uslivinghistory|utah|uvic|valley|vantaa|versailles|viking|village|virginia|virtual|virtuel|vlaanderen|volkenkunde|wales|wallonie|war|washingtondc|watchandclock|watch-and-clock|western|westfalen|whaling|wildlife|williamsburg|windmill|workshop|york|yorkshire|yosemite|youth|zoological|zoology|xn--9dbhblg6di|xn--h1aegh","mv":"aero|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro","mw":"ac|biz|co|com|coop|edu|gov|int|museum|net|org","mx":"com|org|gob|edu|net|blogspot","my":"com|net|org|gov|edu|mil|name|blogspot","mz":"*|!teledata","na":"info|pro|name|school|or|dr|us|mx|ca|in|cc|tv|ws|mobi|co|com|org","name":"forgot.her|forgot.his","nc":"asso","ne":"","net":"cloudfront|gb|hu|jp|se|uk|in|cdn77-ssl|r.cdn77|at-band-camp|blogdns|broke-it|buyshouses|dnsalias|dnsdojo|does-it|dontexist|dynalias|dynathome|endofinternet|from-az|from-co|from-la|from-ny|gets-it|ham-radio-op|homeftp|homeip|homelinux|homeunix|in-the-band|is-a-chef|is-a-geek|isa-geek|kicks-ass|office-on-the|podzone|scrapper-site|selfip|sells-it|servebbs|serveftp|thruhere|webhop|a.ssl.fastly|b.ssl.fastly|global.ssl.fastly|a.prod.fastly|global.prod.fastly|azurewebsites|azure-mobile|cloudapp|za","nf":"com|net|per|rec|web|arts|firm|info|other|store","ng":"com|edu|name|net|org|sch|gov|mil|mobi|blogspot.com","ni":"*","nl":"bv|co|blogspot","no":"fhs|vgs|fylkesbibl|folkebibl|museum|idrett|priv|mil|stat|dep|kommune|herad|aa|ah|bu|fm|hl|hm|jan-mayen|mr|nl|nt|of|ol|oslo|rl|sf|st|svalbard|tm|tr|va|vf|gs.aa|gs.ah|gs.bu|gs.fm|gs.hl|gs.hm|gs.jan-mayen|gs.mr|gs.nl|gs.nt|gs.of|gs.ol|gs.oslo|gs.rl|gs.sf|gs.st|gs.svalbard|gs.tm|gs.tr|gs.va|gs.vf|akrehamn|xn--krehamn-dxa|algard|xn--lgrd-poac|arna|brumunddal|bryne|bronnoysund|xn--brnnysund-m8ac|drobak|xn--drbak-wua|egersund|fetsund|floro|xn--flor-jra|fredrikstad|hokksund|honefoss|xn--hnefoss-q1a|jessheim|jorpeland|xn--jrpeland-54a|kirkenes|kopervik|krokstadelva|langevag|xn--langevg-jxa|leirvik|mjondalen|xn--mjndalen-64a|mo-i-rana|mosjoen|xn--mosjen-eya|nesoddtangen|orkanger|osoyro|xn--osyro-wua|raholt|xn--rholt-mra|sandnessjoen|xn--sandnessjen-ogb|skedsmokorset|slattum|spjelkavik|stathelle|stavern|stjordalshalsen|xn--stjrdalshalsen-sqb|tananger|tranby|vossevangen|afjord|xn--fjord-lra|agdenes|al|xn--l-1fa|alesund|xn--lesund-hua|alstahaug|alta|xn--lt-liac|alaheadju|xn--laheadju-7ya|alvdal|amli|xn--mli-tla|amot|xn--mot-tla|andebu|andoy|xn--andy-ira|andasuolo|ardal|xn--rdal-poa|aremark|arendal|xn--s-1fa|aseral|xn--seral-lra|asker|askim|askvoll|askoy|xn--asky-ira|asnes|xn--snes-poa|audnedaln|aukra|aure|aurland|aurskog-holand|xn--aurskog-hland-jnb|austevoll|austrheim|averoy|xn--avery-yua|balestrand|ballangen|balat|xn--blt-elab|balsfjord|bahccavuotna|xn--bhccavuotna-k7a|bamble|bardu|beardu|beiarn|bajddar|xn--bjddar-pta|baidar|xn--bidr-5nac|berg|bergen|berlevag|xn--berlevg-jxa|bearalvahki|xn--bearalvhki-y4a|bindal|birkenes|bjarkoy|xn--bjarky-fya|bjerkreim|bjugn|bodo|xn--bod-2na|badaddja|xn--bdddj-mrabd|budejju|bokn|bremanger|bronnoy|xn--brnny-wuac|bygland|bykle|barum|xn--brum-voa|bo.telemark|xn--b-5ga.telemark|bo.nordland|xn--b-5ga.nordland|bievat|xn--bievt-0qa|bomlo|xn--bmlo-gra|batsfjord|xn--btsfjord-9za|bahcavuotna|xn--bhcavuotna-s4a|dovre|drammen|drangedal|dyroy|xn--dyry-ira|donna|xn--dnna-gra|eid|eidfjord|eidsberg|eidskog|eidsvoll|eigersund|elverum|enebakk|engerdal|etne|etnedal|evenes|evenassi|xn--eveni-0qa01ga|evje-og-hornnes|farsund|fauske|fuossko|fuoisku|fedje|fet|finnoy|xn--finny-yua|fitjar|fjaler|fjell|flakstad|flatanger|flekkefjord|flesberg|flora|fla|xn--fl-zia|folldal|forsand|fosnes|frei|frogn|froland|frosta|frana|xn--frna-woa|froya|xn--frya-hra|fusa|fyresdal|forde|xn--frde-gra|gamvik|gangaviika|xn--ggaviika-8ya47h|gaular|gausdal|gildeskal|xn--gildeskl-g0a|giske|gjemnes|gjerdrum|gjerstad|gjesdal|gjovik|xn--gjvik-wua|gloppen|gol|gran|grane|granvin|gratangen|grimstad|grong|kraanghke|xn--kranghke-b0a|grue|gulen|hadsel|halden|halsa|hamar|hamaroy|habmer|xn--hbmer-xqa|hapmir|xn--hpmir-xqa|hammerfest|hammarfeasta|xn--hmmrfeasta-s4ac|haram|hareid|harstad|hasvik|aknoluokta|xn--koluokta-7ya57h|hattfjelldal|aarborte|haugesund|hemne|hemnes|hemsedal|heroy.more-og-romsdal|xn--hery-ira.xn--mre-og-romsdal-qqb|heroy.nordland|xn--hery-ira.nordland|hitra|hjartdal|hjelmeland|hobol|xn--hobl-ira|hof|hol|hole|holmestrand|holtalen|xn--holtlen-hxa|hornindal|horten|hurdal|hurum|hvaler|hyllestad|hagebostad|xn--hgebostad-g3a|hoyanger|xn--hyanger-q1a|hoylandet|xn--hylandet-54a|ha|xn--h-2fa|ibestad|inderoy|xn--indery-fya|iveland|jevnaker|jondal|jolster|xn--jlster-bya|karasjok|karasjohka|xn--krjohka-hwab49j|karlsoy|galsa|xn--gls-elac|karmoy|xn--karmy-yua|kautokeino|guovdageaidnu|klepp|klabu|xn--klbu-woa|kongsberg|kongsvinger|kragero|xn--krager-gya|kristiansand|kristiansund|krodsherad|xn--krdsherad-m8a|kvalsund|rahkkeravju|xn--rhkkervju-01af|kvam|kvinesdal|kvinnherad|kviteseid|kvitsoy|xn--kvitsy-fya|kvafjord|xn--kvfjord-nxa|giehtavuoatna|kvanangen|xn--kvnangen-k0a|navuotna|xn--nvuotna-hwa|kafjord|xn--kfjord-iua|gaivuotna|xn--givuotna-8ya|larvik|lavangen|lavagis|loabat|xn--loabt-0qa|lebesby|davvesiida|leikanger|leirfjord|leka|leksvik|lenvik|leangaviika|xn--leagaviika-52b|lesja|levanger|lier|lierne|lillehammer|lillesand|lindesnes|lindas|xn--linds-pra|lom|loppa|lahppi|xn--lhppi-xqa|lund|lunner|luroy|xn--lury-ira|luster|lyngdal|lyngen|ivgu|lardal|lerdal|xn--lrdal-sra|lodingen|xn--ldingen-q1a|lorenskog|xn--lrenskog-54a|loten|xn--lten-gra|malvik|masoy|xn--msy-ula0h|muosat|xn--muost-0qa|mandal|marker|marnardal|masfjorden|meland|meldal|melhus|meloy|xn--mely-ira|meraker|xn--merker-kua|moareke|xn--moreke-jua|midsund|midtre-gauldal|modalen|modum|molde|moskenes|moss|mosvik|malselv|xn--mlselv-iua|malatvuopmi|xn--mlatvuopmi-s4a|namdalseid|aejrie|namsos|namsskogan|naamesjevuemie|xn--nmesjevuemie-tcba|laakesvuemie|nannestad|narvik|narviika|naustdal|nedre-eiker|nes.akershus|nes.buskerud|nesna|nesodden|nesseby|unjarga|xn--unjrga-rta|nesset|nissedal|nittedal|nord-aurdal|nord-fron|nord-odal|norddal|nordkapp|davvenjarga|xn--davvenjrga-y4a|nordre-land|nordreisa|raisa|xn--risa-5na|nore-og-uvdal|notodden|naroy|xn--nry-yla5g|notteroy|xn--nttery-byae|odda|oksnes|xn--ksnes-uua|oppdal|oppegard|xn--oppegrd-ixa|orkdal|orland|xn--rland-uua|orskog|xn--rskog-uua|orsta|xn--rsta-fra|os.hedmark|os.hordaland|osen|osteroy|xn--ostery-fya|ostre-toten|xn--stre-toten-zcb|overhalla|ovre-eiker|xn--vre-eiker-k8a|oyer|xn--yer-zna|oygarden|xn--ygarden-p1a|oystre-slidre|xn--ystre-slidre-ujb|porsanger|porsangu|xn--porsgu-sta26f|porsgrunn|radoy|xn--rady-ira|rakkestad|rana|ruovat|randaberg|rauma|rendalen|rennebu|rennesoy|xn--rennesy-v1a|rindal|ringebu|ringerike|ringsaker|rissa|risor|xn--risr-ira|roan|rollag|rygge|ralingen|xn--rlingen-mxa|rodoy|xn--rdy-0nab|romskog|xn--rmskog-bya|roros|xn--rros-gra|rost|xn--rst-0na|royken|xn--ryken-vua|royrvik|xn--ryrvik-bya|rade|xn--rde-ula|salangen|siellak|saltdal|salat|xn--slt-elab|xn--slat-5na|samnanger|sande.more-og-romsdal|sande.xn--mre-og-romsdal-qqb|sande.vestfold|sandefjord|sandnes|sandoy|xn--sandy-yua|sarpsborg|sauda|sauherad|sel|selbu|selje|seljord|sigdal|siljan|sirdal|skaun|skedsmo|ski|skien|skiptvet|skjervoy|xn--skjervy-v1a|skierva|xn--skierv-uta|skjak|xn--skjk-soa|skodje|skanland|xn--sknland-fxa|skanit|xn--sknit-yqa|smola|xn--smla-hra|snillfjord|snasa|xn--snsa-roa|snoasa|snaase|xn--snase-nra|sogndal|sokndal|sola|solund|songdalen|sortland|spydeberg|stange|stavanger|steigen|steinkjer|stjordal|xn--stjrdal-s1a|stokke|stor-elvdal|stord|stordal|storfjord|omasvuotna|strand|stranda|stryn|sula|suldal|sund|sunndal|surnadal|sveio|svelvik|sykkylven|sogne|xn--sgne-gra|somna|xn--smna-gra|sondre-land|xn--sndre-land-0cb|sor-aurdal|xn--sr-aurdal-l8a|sor-fron|xn--sr-fron-q1a|sor-odal|xn--sr-odal-q1a|sor-varanger|xn--sr-varanger-ggb|matta-varjjat|xn--mtta-vrjjat-k7af|sorfold|xn--srfold-bya|sorreisa|xn--srreisa-q1a|sorum|xn--srum-gra|tana|deatnu|time|tingvoll|tinn|tjeldsund|dielddanuorri|tjome|xn--tjme-hra|tokke|tolga|torsken|tranoy|xn--trany-yua|tromso|xn--troms-zua|tromsa|romsa|trondheim|troandin|trysil|trana|xn--trna-woa|trogstad|xn--trgstad-r1a|tvedestrand|tydal|tynset|tysfjord|divtasvuodna|divttasvuotna|tysnes|tysvar|xn--tysvr-vra|tonsberg|xn--tnsberg-q1a|ullensaker|ullensvang|ulvik|utsira|vadso|xn--vads-jra|cahcesuolo|xn--hcesuolo-7ya35b|vaksdal|valle|vang|vanylven|vardo|xn--vard-jra|varggat|xn--vrggt-xqad|vefsn|vaapste|vega|vegarshei|xn--vegrshei-c0a|vennesla|verdal|verran|vestby|vestnes|vestre-slidre|vestre-toten|vestvagoy|xn--vestvgy-ixa6o|vevelstad|vik|vikna|vindafjord|volda|voss|varoy|xn--vry-yla5g|vagan|xn--vgan-qoa|voagat|vagsoy|xn--vgsy-qoa0j|vaga|xn--vg-yiab|valer.ostfold|xn--vler-qoa.xn--stfold-9xa|valer.hedmark|xn--vler-qoa.hedmark|co|blogspot","np":"*","nr":"biz|info|gov|edu|org|net|com","nu":"merseine|mine|shacknet","nz":"ac|co|cri|geek|gen|govt|health|iwi|kiwi|maori|mil|xn--mori-qsa|net|org|parliament|school|blogspot.co","om":"co|com|edu|gov|med|museum|net|org|pro","org":"ae|us|c.cdn77|rsc.cdn77|ssl.origin.cdn77-secure|duckdns|dyndns|blogdns|blogsite|boldlygoingnowhere|dnsalias|dnsdojo|doesntexist|dontexist|doomdns|dvrdns|dynalias|endofinternet|endoftheinternet|from-me|game-host|go.dyndns|gotdns|hobby-site|home.dyndns|homedns|homeftp|homelinux|homeunix|is-a-bruinsfan|is-a-candidate|is-a-celticsfan|is-a-chef|is-a-geek|is-a-knight|is-a-linux-user|is-a-patsfan|is-a-soxfan|is-found|is-lost|is-saved|is-very-bad|is-very-evil|is-very-good|is-very-nice|is-very-sweet|isa-geek|kicks-ass|misconfused|podzone|readmyblog|selfip|sellsyourhome|servebbs|serveftp|servegame|stuff-4-sale|webhop|eu|al.eu|asso.eu|at.eu|au.eu|be.eu|bg.eu|ca.eu|cd.eu|ch.eu|cn.eu|cy.eu|cz.eu|de.eu|dk.eu|edu.eu|ee.eu|es.eu|fi.eu|fr.eu|gr.eu|hr.eu|hu.eu|ie.eu|il.eu|in.eu|int.eu|is.eu|it.eu|jp.eu|kr.eu|lt.eu|lu.eu|lv.eu|mc.eu|me.eu|mk.eu|mt.eu|my.eu|net.eu|ng.eu|nl.eu|no.eu|nz.eu|paris.eu|pl.eu|pt.eu|q-a.eu|ro.eu|ru.eu|se.eu|si.eu|sk.eu|tr.eu|uk.eu|us.eu|bmoattachments|hk|za","pa":"ac|gob|com|org|sld|edu|net|ing|abo|med|nom","pe":"edu|gob|nom|mil|org|com|net|blogspot","pf":"com|org|edu","pg":"*","ph":"com|net|org|gov|edu|ngo|mil|i","pk":"com|net|edu|org|fam|biz|web|gov|gob|gok|gon|gop|gos|info","pl":"com|net|org|aid|agro|atm|auto|biz|edu|gmina|gsm|info|mail|miasta|media|mil|nieruchomosci|nom|pc|powiat|priv|realestate|rel|sex|shop|sklep|sos|szkola|targi|tm|tourism|travel|turystyka|gov|ap.gov|ic.gov|is.gov|us.gov|kmpsp.gov|kppsp.gov|kwpsp.gov|psp.gov|wskr.gov|kwp.gov|mw.gov|ug.gov|um.gov|umig.gov|ugim.gov|upow.gov|uw.gov|starostwo.gov|pa.gov|po.gov|psse.gov|pup.gov|rzgw.gov|sa.gov|so.gov|sr.gov|wsa.gov|sko.gov|uzs.gov|wiih.gov|winb.gov|pinb.gov|wios.gov|witd.gov|wzmiuw.gov|piw.gov|wiw.gov|griw.gov|wif.gov|oum.gov|sdn.gov|zp.gov|uppo.gov|mup.gov|wuoz.gov|konsulat.gov|oirm.gov|augustow|babia-gora|bedzin|beskidy|bialowieza|bialystok|bielawa|bieszczady|boleslawiec|bydgoszcz|bytom|cieszyn|czeladz|czest|dlugoleka|elblag|elk|glogow|gniezno|gorlice|grajewo|ilawa|jaworzno|jelenia-gora|jgora|kalisz|kazimierz-dolny|karpacz|kartuzy|kaszuby|katowice|kepno|ketrzyn|klodzko|kobierzyce|kolobrzeg|konin|konskowola|kutno|lapy|lebork|legnica|lezajsk|limanowa|lomza|lowicz|lubin|lukow|malbork|malopolska|mazowsze|mazury|mielec|mielno|mragowo|naklo|nowaruda|nysa|olawa|olecko|olkusz|olsztyn|opoczno|opole|ostroda|ostroleka|ostrowiec|ostrowwlkp|pila|pisz|podhale|podlasie|polkowice|pomorze|pomorskie|prochowice|pruszkow|przeworsk|pulawy|radom|rawa-maz|rybnik|rzeszow|sanok|sejny|slask|slupsk|sosnowiec|stalowa-wola|skoczow|starachowice|stargard|suwalki|swidnica|swiebodzin|swinoujscie|szczecin|szczytno|tarnobrzeg|tgory|turek|tychy|ustka|walbrzych|warmia|warszawa|waw|wegrow|wielun|wlocl|wloclawek|wodzislaw|wolomin|wroclaw|zachpomor|zagan|zarow|zgora|zgorzelec|co|art|gliwice|krakow|poznan|wroc|zakopane|gda|gdansk|gdynia|med|sopot","pm":"","pn":"gov|co|org|edu|net","post":"","pr":"com|net|org|gov|edu|isla|pro|biz|info|name|est|prof|ac","pro":"aca|bar|cpa|jur|law|med|eng","ps":"edu|gov|sec|plo|com|org|net","pt":"net|gov|org|edu|int|publ|com|nome|blogspot","pw":"co|ne|or|ed|go|belau","py":"com|coop|edu|gov|mil|net|org","qa":"com|edu|gov|mil|name|net|org|sch|blogspot","re":"com|asso|nom|blogspot","ro":"com|org|tm|nt|nom|info|rec|arts|firm|store|www|blogspot","rs":"co|org|edu|ac|gov|in|blogspot","ru":"ac|com|edu|int|net|org|pp|adygeya|altai|amur|arkhangelsk|astrakhan|bashkiria|belgorod|bir|bryansk|buryatia|cbg|chel|chelyabinsk|chita|chukotka|chuvashia|dagestan|dudinka|e-burg|grozny|irkutsk|ivanovo|izhevsk|jar|joshkar-ola|kalmykia|kaluga|kamchatka|karelia|kazan|kchr|kemerovo|khabarovsk|khakassia|khv|kirov|koenig|komi|kostroma|krasnoyarsk|kuban|kurgan|kursk|lipetsk|magadan|mari|mari-el|marine|mordovia|msk|murmansk|nalchik|nnov|nov|novosibirsk|nsk|omsk|orenburg|oryol|palana|penza|perm|ptz|rnd|ryazan|sakhalin|samara|saratov|simbirsk|smolensk|spb|stavropol|stv|surgut|tambov|tatarstan|tom|tomsk|tsaritsyn|tsk|tula|tuva|tver|tyumen|udm|udmurtia|ulan-ude|vladikavkaz|vladimir|vladivostok|volgograd|vologda|voronezh|vrn|vyatka|yakutia|yamal|yaroslavl|yekaterinburg|yuzhno-sakhalinsk|amursk|baikal|cmw|fareast|jamal|kms|k-uralsk|kustanai|kuzbass|magnitka|mytis|nakhodka|nkz|norilsk|oskol|pyatigorsk|rubtsovsk|snz|syzran|vdonsk|zgrad|gov|mil|test|blogspot","rw":"gov|net|edu|ac|com|co|int|mil|gouv","sa":"com|net|org|gov|med|pub|edu|sch","sb":"com|edu|gov|net|org","sc":"com|gov|net|org|edu","sd":"com|net|org|edu|med|tv|gov|info","se":"a|ac|b|bd|brand|c|d|e|f|fh|fhsk|fhv|g|h|i|k|komforb|kommunalforbund|komvux|l|lanbib|m|n|naturbruksgymn|o|org|p|parti|pp|press|r|s|t|tm|u|w|x|y|z|com|blogspot","sg":"com|net|org|gov|edu|per|blogspot","sh":"com|net|gov|org|mil|*platform","si":"blogspot","sj":"","sk":"blogspot","sl":"com|net|edu|gov|org","sm":"","sn":"art|com|edu|gouv|org|perso|univ|blogspot","so":"com|net|org","sr":"","st":"co|com|consulado|edu|embaixada|gov|mil|net|org|principe|saotome|store","su":"adygeya|arkhangelsk|balashov|bashkiria|bryansk|dagestan|grozny|ivanovo|kalmykia|kaluga|karelia|khakassia|krasnodar|kurgan|lenug|mordovia|msk|murmansk|nalchik|nov|obninsk|penza|pokrovsk|sochi|spb|togliatti|troitsk|tula|tuva|vladikavkaz|vladimir|vologda","sv":"com|edu|gob|org|red","sx":"gov","sy":"edu|gov|net|mil|com|org","sz":"co|ac|org","tc":"","td":"blogspot","tel":"","tf":"","tg":"","th":"ac|co|go|in|mi|net|or","tj":"ac|biz|co|com|edu|go|gov|int|mil|name|net|nic|org|test|web","tk":"","tl":"gov","tm":"com|co|org|net|nom|gov|mil|edu","tn":"com|ens|fin|gov|ind|intl|nat|net|org|info|perso|tourism|edunet|rnrt|rns|rnu|mincom|agrinet|defense|turen","to":"com|gov|net|org|edu|mil","tp":"","tr":"com|info|biz|net|org|web|gen|tv|av|dr|bbs|name|tel|gov|bel|pol|mil|k12|edu|kep|nc|gov.nc|blogspot.com","travel":"","tt":"co|com|org|net|biz|info|pro|int|coop|jobs|mobi|travel|museum|aero|name|gov|edu","tv":"dyndns|better-than|on-the-web|worse-than","tw":"edu|gov|mil|com|net|org|idv|game|ebiz|club|xn--zf0ao64a|xn--uc0atv|xn--czrw28b|blogspot","tz":"ac|co|go|hotel|info|me|mil|mobi|ne|or|sc|tv","ua":"com|edu|gov|in|net|org|cherkassy|cherkasy|chernigov|chernihiv|chernivtsi|chernovtsy|ck|cn|cr|crimea|cv|dn|dnepropetrovsk|dnipropetrovsk|dominic|donetsk|dp|if|ivano-frankivsk|kh|kharkiv|kharkov|kherson|khmelnitskiy|khmelnytskyi|kiev|kirovograd|km|kr|krym|ks|kv|kyiv|lg|lt|lugansk|lutsk|lv|lviv|mk|mykolaiv|nikolaev|od|odesa|odessa|pl|poltava|rivne|rovno|rv|sb|sebastopol|sevastopol|sm|sumy|te|ternopil|uz|uzhgorod|vinnica|vinnytsia|vn|volyn|yalta|zaporizhzhe|zaporizhzhia|zhitomir|zhytomyr|zp|zt|biz|co|pp","ug":"co|or|ac|sc|go|ne|com|org|blogspot","uk":"ac|co|gov|ltd|me|net|nhs|org|plc|police|*sch|service.gov|blogspot.co","us":"dni|fed|isa|kids|nsn|ak|al|ar|as|az|ca|co|ct|dc|de|fl|ga|gu|hi|ia|id|il|in|ks|ky|la|ma|md|me|mi|mn|mo|ms|mt|nc|nd|ne|nh|nj|nm|nv|ny|oh|ok|or|pa|pr|ri|sc|sd|tn|tx|ut|vi|vt|va|wa|wi|wv|wy|k12.ak|k12.al|k12.ar|k12.as|k12.az|k12.ca|k12.co|k12.ct|k12.dc|k12.de|k12.fl|k12.ga|k12.gu|k12.ia|k12.id|k12.il|k12.in|k12.ks|k12.ky|k12.la|k12.ma|k12.md|k12.me|k12.mi|k12.mn|k12.mo|k12.ms|k12.mt|k12.nc|k12.ne|k12.nh|k12.nj|k12.nm|k12.nv|k12.ny|k12.oh|k12.ok|k12.or|k12.pa|k12.pr|k12.ri|k12.sc|k12.tn|k12.tx|k12.ut|k12.vi|k12.vt|k12.va|k12.wa|k12.wi|k12.wy|cc.ak|cc.al|cc.ar|cc.as|cc.az|cc.ca|cc.co|cc.ct|cc.dc|cc.de|cc.fl|cc.ga|cc.gu|cc.hi|cc.ia|cc.id|cc.il|cc.in|cc.ks|cc.ky|cc.la|cc.ma|cc.md|cc.me|cc.mi|cc.mn|cc.mo|cc.ms|cc.mt|cc.nc|cc.nd|cc.ne|cc.nh|cc.nj|cc.nm|cc.nv|cc.ny|cc.oh|cc.ok|cc.or|cc.pa|cc.pr|cc.ri|cc.sc|cc.sd|cc.tn|cc.tx|cc.ut|cc.vi|cc.vt|cc.va|cc.wa|cc.wi|cc.wv|cc.wy|lib.ak|lib.al|lib.ar|lib.as|lib.az|lib.ca|lib.co|lib.ct|lib.dc|lib.de|lib.fl|lib.ga|lib.gu|lib.hi|lib.ia|lib.id|lib.il|lib.in|lib.ks|lib.ky|lib.la|lib.ma|lib.md|lib.me|lib.mi|lib.mn|lib.mo|lib.ms|lib.mt|lib.nc|lib.nd|lib.ne|lib.nh|lib.nj|lib.nm|lib.nv|lib.ny|lib.oh|lib.ok|lib.or|lib.pa|lib.pr|lib.ri|lib.sc|lib.sd|lib.tn|lib.tx|lib.ut|lib.vi|lib.vt|lib.va|lib.wa|lib.wi|lib.wy|pvt.k12.ma|chtr.k12.ma|paroch.k12.ma|is-by|land-4-sale|stuff-4-sale","uy":"com|edu|gub|mil|net|org|blogspot.com","uz":"co|com|net|org","va":"","vc":"com|net|org|gov|mil|edu","ve":"arts|co|com|e12|edu|firm|gob|gov|info|int|mil|net|org|rec|store|tec|web","vg":"","vi":"co|com|k12|net|org","vn":"com|net|org|edu|gov|int|ac|biz|info|name|pro|health|blogspot","vu":"com|edu|net|org","wf":"","ws":"com|net|org|gov|edu|dyndns|mypets","yt":"","xn--mgbaam7a8h":"","xn--y9a3aq":"","xn--54b7fta0cc":"","xn--90ais":"","xn--fiqs8s":"","xn--fiqz9s":"","xn--lgbbat1ad8j":"","xn--wgbh1c":"","xn--node":"","xn--qxam":"","xn--j6w193g":"","xn--h2brj9c":"","xn--mgbbh1a71e":"","xn--fpcrj9c3d":"","xn--gecrj9c":"","xn--s9brj9c":"","xn--45brj9c":"","xn--xkc2dl3a5ee0h":"","xn--mgba3a4f16a":"","xn--mgba3a4fra":"","xn--mgbtx2b":"","xn--mgbayh7gpa":"","xn--3e0b707e":"","xn--80ao21a":"","xn--fzc2c9e2c":"","xn--xkc2al3hye2a":"","xn--mgbc0a9azcg":"","xn--d1alf":"","xn--l1acc":"","xn--mix891f":"","xn--mix082f":"","xn--mgbx4cd0ab":"","xn--mgb9awbf":"","xn--mgbai9azgqp6j":"","xn--mgbai9a5eva00b":"","xn--ygbi2ammx":"","xn--90a3ac":"xn--o1ac|xn--c1avg|xn--90azh|xn--d1at|xn--o1ach|xn--80au","xn--p1ai":"","xn--wgbl6a":"","xn--mgberp4a5d4ar":"","xn--mgberp4a5d4a87g":"","xn--mgbqly7c0a67fbc":"","xn--mgbqly7cvafr":"","xn--mgbpl2fh":"","xn--yfro4i67o":"","xn--clchc0ea0b2g2a9gcd":"","xn--ogbpf8fl":"","xn--mgbtf8fl":"","xn--o3cw4h":"","xn--pgbs0dh":"","xn--kpry57d":"","xn--kprw13d":"","xn--nnx388a":"","xn--j1amh":"","xn--mgb2ddes":"","xxx":"","ye":"*","za":"ac|agrica|alt|co|edu|gov|grondar|law|mil|net|ngo|nis|nom|org|school|tm|web|blogspot.co","zm":"*","zw":"*","aaa":"","aarp":"","abarth":"","abb":"","abbott":"","abbvie":"","abc":"","able":"","abogado":"","abudhabi":"","academy":"","accenture":"","accountant":"","accountants":"","aco":"","active":"","actor":"","adac":"","ads":"","adult":"","aeg":"","aetna":"","afamilycompany":"","afl":"","africa":"","africamagic":"","agakhan":"","agency":"","aig":"","aigo":"","airbus":"","airforce":"","airtel":"","akdn":"","alfaromeo":"","alibaba":"","alipay":"","allfinanz":"","allstate":"","ally":"","alsace":"","alstom":"","americanexpress":"","americanfamily":"","amex":"","amfam":"","amica":"","amsterdam":"","analytics":"","android":"","anquan":"","anz":"","aol":"","apartments":"","app":"","apple":"","aquarelle":"","aramco":"","archi":"","army":"","arte":"","asda":"","associates":"","athleta":"","attorney":"","auction":"","audi":"","audible":"","audio":"","auspost":"","author":"","auto":"","autos":"","avianca":"","aws":"","axa":"","azure":"","baby":"","baidu":"","banamex":"","bananarepublic":"","band":"","bank":"","bar":"","barcelona":"","barclaycard":"","barclays":"","barefoot":"","bargains":"","baseball":"","basketball":"","bauhaus":"","bayern":"","bbc":"","bbt":"","bbva":"","bcg":"","bcn":"","beats":"","beer":"","bentley":"","berlin":"","best":"","bestbuy":"","bet":"","bharti":"","bible":"","bid":"","bike":"","bing":"","bingo":"","bio":"","black":"","blackfriday":"","blanco":"","blockbuster":"","blog":"","bloomberg":"","blue":"","bms":"","bmw":"","bnl":"","bnpparibas":"","boats":"","boehringer":"","bofa":"","bom":"","bond":"","boo":"","book":"","booking":"","boots":"","bosch":"","bostik":"","bot":"","boutique":"","bradesco":"","bridgestone":"","broadway":"","broker":"","brother":"","brussels":"","budapest":"","bugatti":"","build":"","builders":"","business":"","buy":"","buzz":"","bzh":"","cab":"","cafe":"","cal":"","call":"","calvinklein":"","camera":"","camp":"","cancerresearch":"","canon":"","capetown":"","capital":"","capitalone":"","car":"","caravan":"","cards":"","care":"","career":"","careers":"","cars":"","cartier":"","casa":"","case":"","caseih":"","cash":"","casino":"","catering":"","catholic":"","cba":"","cbn":"","cbre":"","cbs":"","ceb":"","center":"","ceo":"","cern":"","cfa":"","cfd":"","chanel":"","channel":"","chase":"","chat":"","cheap":"","chintai":"","chloe":"","christmas":"","chrome":"","chrysler":"","church":"","cipriani":"","circle":"","cisco":"","citadel":"","citi":"","citic":"","city":"","cityeats":"","claims":"","cleaning":"","click":"","clinic":"","clinique":"","clothing":"","cloud":"","club":"","clubmed":"","coach":"","codes":"","coffee":"","college":"","cologne":"","comcast":"","commbank":"","community":"","company":"","compare":"","computer":"","comsec":"","condos":"","construction":"","consulting":"","contact":"","contractors":"","cooking":"","cookingchannel":"","cool":"","corsica":"","country":"","coupon":"","coupons":"","courses":"","credit":"","creditcard":"","creditunion":"","cricket":"","crown":"","crs":"","cruises":"","csc":"","cuisinella":"","cymru":"","cyou":"","dabur":"","dad":"","dance":"","date":"","dating":"","datsun":"","day":"","dclk":"","dds":"","deal":"","dealer":"","deals":"","degree":"","delivery":"","dell":"","deloitte":"","delta":"","democrat":"","dental":"","dentist":"","desi":"","design":"","dev":"","dhl":"","diamonds":"","diet":"","digital":"","direct":"","directory":"","discount":"","discover":"","dish":"","diy":"","dnp":"","docs":"","dodge":"","dog":"","doha":"","domains":"","doosan":"","dot":"","download":"","drive":"","dstv":"","dtv":"","dubai":"","duck":"","dunlop":"","duns":"","dupont":"","durban":"","dvag":"","dwg":"","earth":"","eat":"","edeka":"","education":"","email":"","emerck":"","emerson":"","energy":"","engineer":"","engineering":"","enterprises":"","epost":"","epson":"","equipment":"","ericsson":"","erni":"","esq":"","estate":"","esurance":"","etisalat":"","eurovision":"","eus":"","events":"","everbank":"","exchange":"","expert":"","exposed":"","express":"","extraspace":"","fage":"","fail":"","fairwinds":"","faith":"","family":"","fan":"","fans":"","farm":"","farmers":"","fashion":"","fast":"","fedex":"","feedback":"","ferrari":"","ferrero":"","fiat":"","fidelity":"","fido":"","film":"","final":"","finance":"","financial":"","fire":"","firestone":"","firmdale":"","fish":"","fishing":"","fit":"","fitness":"","flickr":"","flights":"","flir":"","florist":"","flowers":"","flsmidth":"","fly":"","foo":"","foodnetwork":"","football":"","ford":"","forex":"","forsale":"","forum":"","foundation":"","fox":"","fresenius":"","frl":"","frogans":"","frontdoor":"","frontier":"","ftr":"","fujitsu":"","fujixerox":"","fund":"","furniture":"","futbol":"","fyi":"","gal":"","gallery":"","gallo":"","gallup":"","game":"","games":"","gap":"","garden":"","gbiz":"","gdn":"","gea":"","gent":"","genting":"","george":"","ggee":"","gift":"","gifts":"","gives":"","giving":"","glade":"","glass":"","gle":"","global":"","globo":"","gmail":"","gmo":"","gmx":"","godaddy":"","gold":"","goldpoint":"","golf":"","goo":"","goodhands":"","goodyear":"","goog":"","google":"","gop":"","got":"","gotv":"","grainger":"","graphics":"","gratis":"","green":"","gripe":"","group":"","guardian":"","gucci":"","guge":"","guide":"","guitars":"","guru":"","hamburg":"","hangout":"","haus":"","hbo":"","hdfc":"","hdfcbank":"","health":"","healthcare":"","help":"","helsinki":"","here":"","hermes":"","hgtv":"","hiphop":"","hisamitsu":"","hitachi":"","hiv":"","hkt":"","hockey":"","holdings":"","holiday":"","homedepot":"","homegoods":"","homes":"","homesense":"","honda":"","honeywell":"","horse":"","host":"","hosting":"","hot":"","hoteles":"","hotmail":"","house":"","how":"","hsbc":"","htc":"","hughes":"","hyatt":"","hyundai":"","ibm":"","icbc":"","ice":"","icu":"","ieee":"","ifm":"","iinet":"","ikano":"","imamat":"","imdb":"","immo":"","immobilien":"","industries":"","infiniti":"","ing":"","ink":"","institute":"","insurance":"","insure":"","intel":"","international":"","intuit":"","investments":"","ipiranga":"","irish":"","iselect":"","ismaili":"","ist":"","istanbul":"","itau":"","itv":"","iveco":"","iwc":"","jaguar":"","java":"","jcb":"","jcp":"","jeep":"","jetzt":"","jewelry":"","jio":"","jlc":"","jll":"","jmp":"","jnj":"","joburg":"","jot":"","joy":"","jpmorgan":"","jprs":"","juegos":"","juniper":"","kaufen":"","kddi":"","kerryhotels":"","kerrylogistics":"","kerryproperties":"","kfh":"","kia":"","kim":"","kinder":"","kindle":"","kitchen":"","kiwi":"","koeln":"","komatsu":"","kosher":"","kpmg":"","kpn":"","krd":"","kred":"","kuokgroup":"","kyknet":"","kyoto":"","lacaixa":"","ladbrokes":"","lamborghini":"","lamer":"","lancaster":"","lancia":"","lancome":"","land":"","landrover":"","lanxess":"","lasalle":"","lat":"","latino":"","latrobe":"","law":"","lawyer":"","lds":"","lease":"","leclerc":"","lefrak":"","legal":"","lego":"","lexus":"","lgbt":"","liaison":"","lidl":"","life":"","lifeinsurance":"","lifestyle":"","lighting":"","like":"","lilly":"","limited":"","limo":"","lincoln":"","linde":"","link":"","lipsy":"","live":"","living":"","lixil":"","loan":"","loans":"","locker":"","locus":"","loft":"","lol":"","london":"","lotte":"","lotto":"","love":"","lpl":"","lplfinancial":"","ltd":"","ltda":"","lundbeck":"","lupin":"","luxe":"","luxury":"","macys":"","madrid":"","maif":"","maison":"","makeup":"","man":"","management":"","mango":"","market":"","marketing":"","markets":"","marriott":"","marshalls":"","maserati":"","mattel":"","mba":"","mcd":"","mcdonalds":"","mckinsey":"","med":"","media":"","meet":"","melbourne":"","meme":"","memorial":"","men":"","menu":"","meo":"","metlife":"","miami":"","microsoft":"","mini":"","mint":"","mit":"","mitsubishi":"","mlb":"","mls":"","mma":"","mnet":"","mobily":"","moda":"","moe":"","moi":"","mom":"","monash":"","money":"","monster":"","montblanc":"","mopar":"","mormon":"","mortgage":"","moscow":"","moto":"","motorcycles":"","mov":"","movie":"","movistar":"","msd":"","mtn":"","mtpc":"","mtr":"","multichoice":"","mutual":"","mutuelle":"","mzansimagic":"","nab":"","nadex":"","nagoya":"","naspers":"","nationwide":"","natura":"","navy":"","nba":"","nec":"","netbank":"","netflix":"","network":"","neustar":"","new":"","newholland":"","news":"","next":"","nextdirect":"","nexus":"","nfl":"","ngo":"","nhk":"","nico":"","nike":"","nikon":"","ninja":"","nissan":"","nissay":"","nokia":"","northwesternmutual":"","norton":"","now":"","nowruz":"","nowtv":"","nra":"","nrw":"","ntt":"","nyc":"","obi":"","observer":"","off":"","office":"","okinawa":"","olayan":"","olayangroup":"","oldnavy":"","ollo":"","omega":"","one":"","ong":"","onl":"","online":"","onyourside":"","ooo":"","open":"","oracle":"","orange":"","organic":"","orientexpress":"","origins":"","osaka":"","otsuka":"","ott":"","ovh":"","page":"","pamperedchef":"","panasonic":"","panerai":"","paris":"","pars":"","partners":"","parts":"","party":"","passagens":"","pay":"","payu":"","pccw":"","pet":"","pfizer":"","pharmacy":"","philips":"","photo":"","photography":"","photos":"","physio":"","piaget":"","pics":"","pictet":"","pictures":"","pid":"","pin":"","ping":"","pink":"","pioneer":"","pizza":"","place":"","play":"","playstation":"","plumbing":"","plus":"","pnc":"","pohl":"","poker":"","politie":"","porn":"","pramerica":"","praxi":"","press":"","prime":"","prod":"","productions":"","prof":"","progressive":"","promo":"","properties":"","property":"","protection":"","pru":"","prudential":"","pub":"","pwc":"","qpon":"","quebec":"","quest":"","qvc":"","racing":"","raid":"","read":"","realestate":"","realtor":"","realty":"","recipes":"","red":"","redstone":"","redumbrella":"","rehab":"","reise":"","reisen":"","reit":"","reliance":"","ren":"","rent":"","rentals":"","repair":"","report":"","republican":"","rest":"","restaurant":"","review":"","reviews":"","rexroth":"","rich":"","richardli":"","ricoh":"","rightathome":"","ril":"","rio":"","rip":"","rocher":"","rocks":"","rodeo":"","rogers":"","room":"","rsvp":"","ruhr":"","run":"","rwe":"","ryukyu":"","saarland":"","safe":"","safety":"","sakura":"","sale":"","salon":"","samsclub":"","samsung":"","sandvik":"","sandvikcoromant":"","sanofi":"","sap":"","sapo":"","sarl":"","sas":"","save":"","saxo":"","sbi":"","sbs":"","sca":"","scb":"","schaeffler":"","schmidt":"","scholarships":"","school":"","schule":"","schwarz":"","science":"","scjohnson":"","scor":"","scot":"","seat":"","secure":"","security":"","seek":"","select":"","sener":"","services":"","ses":"","seven":"","sew":"","sex":"","sexy":"","sfr":"","shangrila":"","sharp":"","shaw":"","shell":"","shia":"","shiksha":"","shoes":"","shouji":"","show":"","showtime":"","shriram":"","silk":"","sina":"","singles":"","site":"","ski":"","skin":"","sky":"","skype":"","sling":"","smart":"","smile":"","sncf":"","soccer":"","social":"","softbank":"","software":"","sohu":"","solar":"","solutions":"","song":"","sony":"","soy":"","space":"","spiegel":"","spot":"","spreadbetting":"","srl":"","srt":"","stada":"","staples":"","star":"","starhub":"","statebank":"","statefarm":"","statoil":"","stc":"","stcgroup":"","stockholm":"","storage":"","store":"","studio":"","study":"","style":"","sucks":"","supersport":"","supplies":"","supply":"","support":"","surf":"","surgery":"","suzuki":"","swatch":"","swiftcover":"","swiss":"","sydney":"","symantec":"","systems":"","tab":"","taipei":"","talk":"","taobao":"","target":"","tatamotors":"","tatar":"","tattoo":"","tax":"","taxi":"","tci":"","tdk":"","team":"","tech":"","technology":"","telecity":"","telefonica":"","temasek":"","tennis":"","teva":"","thd":"","theater":"","theatre":"","theguardian":"","tiaa":"","tickets":"","tienda":"","tiffany":"","tips":"","tires":"","tirol":"","tjmaxx":"","tjx":"","tkmaxx":"","tmall":"","today":"","tokyo":"","tools":"","top":"","toray":"","toshiba":"","total":"","tours":"","town":"","toyota":"","toys":"","trade":"","trading":"","training":"","travelchannel":"","travelers":"","travelersinsurance":"","trust":"","trv":"","tube":"","tui":"","tunes":"","tushu":"","tvs":"","ubank":"","ubs":"","uconnect":"","unicom":"","university":"","uno":"","uol":"","ups":"","vacations":"","vana":"","vanguard":"","vegas":"","ventures":"","verisign":"","versicherung":"","vet":"","viajes":"","video":"","vig":"","viking":"","villas":"","vin":"","vip":"","virgin":"","visa":"","vision":"","vista":"","vistaprint":"","viva":"","vivo":"","vlaanderen":"","vodka":"","volkswagen":"","vote":"","voting":"","voto":"","voyage":"","vuelos":"","wales":"","walmart":"","walter":"","wang":"","wanggou":"","warman":"","watch":"","watches":"","weather":"","weatherchannel":"","webcam":"","weber":"","website":"","wed":"","wedding":"","weibo":"","weir":"","whoswho":"","wien":"","wiki":"","williamhill":"","win":"","windows":"","wine":"","winners":"","wme":"","wolterskluwer":"","woodside":"","work":"","works":"","world":"","wow":"","wtc":"","wtf":"","xbox":"","xerox":"","xfinity":"","xihuan":"","xin":"","xn--11b4c3d":"","xn--1ck2e1b":"","xn--1qqw23a":"","xn--30rr7y":"","xn--3bst00m":"","xn--3ds443g":"","xn--3oq18vl8pn36a":"","xn--3pxu8k":"","xn--42c2d9a":"","xn--45q11c":"","xn--4gbrim":"","xn--4gq48lf9j":"","xn--55qw42g":"","xn--55qx5d":"","xn--5su34j936bgsg":"","xn--5tzm5g":"","xn--6frz82g":"","xn--6qq986b3xl":"","xn--80adxhks":"","xn--80aqecdr1a":"","xn--80asehdb":"","xn--80aswg":"","xn--8y0a063a":"","xn--9dbq2a":"","xn--9et52u":"","xn--9krt00a":"","xn--b4w605ferd":"","xn--bck1b9a5dre4c":"","xn--c1avg":"","xn--c2br7g":"","xn--cck2b3b":"","xn--cg4bki":"","xn--czr694b":"","xn--czrs0t":"","xn--czru2d":"","xn--d1acj3b":"","xn--eckvdtc9d":"","xn--efvy88h":"","xn--estv75g":"","xn--fct429k":"","xn--fhbei":"","xn--fiq228c5hs":"","xn--fiq64b":"","xn--fjq720a":"","xn--flw351e":"","xn--fzys8d69uvgm":"","xn--g2xx48c":"","xn--gckr3f0f":"","xn--gk3at1e":"","xn--hxt814e":"","xn--i1b6b1a6a2e":"","xn--imr513n":"","xn--io0a7i":"","xn--j1aef":"","xn--jlq61u9w7b":"","xn--jvr189m":"","xn--kcrx77d1x4a":"","xn--kpu716f":"","xn--kput3i":"","xn--mgba3a3ejt":"","xn--mgba7c0bbn0a":"","xn--mgbaakc7dvf":"","xn--mgbab2bd":"","xn--mgbb9fbpob":"","xn--mgbca7dzdo":"","xn--mgbi4ecexp":"","xn--mgbt3dhd":"","xn--mk1bu44c":"","xn--mxtq1m":"","xn--ngbc5azd":"","xn--ngbe9e0a":"","xn--nqv7f":"","xn--nqv7fs00ema":"","xn--nyqy26a":"","xn--p1acf":"","xn--pbt977c":"","xn--pssy2u":"","xn--q9jyb4c":"","xn--qcka1pmc":"","xn--rhqv96g":"","xn--rovu88b":"","xn--ses554g":"","xn--t60b56a":"","xn--tckwe":"","xn--tiq49xqyj":"","xn--unup4y":"","xn--vermgensberater-ctb":"","xn--vermgensberatung-pwb":"","xn--vhquv":"","xn--vuq861b":"","xn--w4r85el8fhu5dnra":"","xn--w4rs40l":"","xn--xhq521b":"","xn--zfr164b":"","xperia":"","xyz":"","yachts":"","yahoo":"","yamaxun":"","yandex":"","yodobashi":"","yoga":"","yokohama":"","you":"","youtube":"","yun":"","zappos":"","zara":"","zero":"","zip":"","zippo":"","zone":"","zuerich":""}
  1056. },{}],11:[function(require,module,exports){
  1057. // Copyright Joyent, Inc. and other Node contributors.
  1058. //
  1059. // Permission is hereby granted, free of charge, to any person obtaining a
  1060. // copy of this software and associated documentation files (the
  1061. // "Software"), to deal in the Software without restriction, including
  1062. // without limitation the rights to use, copy, modify, merge, publish,
  1063. // distribute, sublicense, and/or sell copies of the Software, and to permit
  1064. // persons to whom the Software is furnished to do so, subject to the
  1065. // following conditions:
  1066. //
  1067. // The above copyright notice and this permission notice shall be included
  1068. // in all copies or substantial portions of the Software.
  1069. //
  1070. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  1071. // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  1072. // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
  1073. // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
  1074. // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
  1075. // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
  1076. // USE OR OTHER DEALINGS IN THE SOFTWARE.
  1077. 'use strict';
  1078. var punycode = require('punycode');
  1079. var util = require('./util');
  1080. exports.parse = urlParse;
  1081. exports.resolve = urlResolve;
  1082. exports.resolveObject = urlResolveObject;
  1083. exports.format = urlFormat;
  1084. exports.Url = Url;
  1085. function Url() {
  1086. this.protocol = null;
  1087. this.slashes = null;
  1088. this.auth = null;
  1089. this.host = null;
  1090. this.port = null;
  1091. this.hostname = null;
  1092. this.hash = null;
  1093. this.search = null;
  1094. this.query = null;
  1095. this.pathname = null;
  1096. this.path = null;
  1097. this.href = null;
  1098. }
  1099. // Reference: RFC 3986, RFC 1808, RFC 2396
  1100. // define these here so at least they only have to be
  1101. // compiled once on the first module load.
  1102. var protocolPattern = /^([a-z0-9.+-]+:)/i,
  1103. portPattern = /:[0-9]*$/,
  1104. // Special case for a simple path URL
  1105. simplePathPattern = /^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,
  1106. // RFC 2396: characters reserved for delimiting URLs.
  1107. // We actually just auto-escape these.
  1108. delims = ['<', '>', '"', '`', ' ', '\r', '\n', '\t'],
  1109. // RFC 2396: characters not allowed for various reasons.
  1110. unwise = ['{', '}', '|', '\\', '^', '`'].concat(delims),
  1111. // Allowed by RFCs, but cause of XSS attacks. Always escape these.
  1112. autoEscape = ['\''].concat(unwise),
  1113. // Characters that are never ever allowed in a hostname.
  1114. // Note that any invalid chars are also handled, but these
  1115. // are the ones that are *expected* to be seen, so we fast-path
  1116. // them.
  1117. nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),
  1118. hostEndingChars = ['/', '?', '#'],
  1119. hostnameMaxLen = 255,
  1120. hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,
  1121. hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,
  1122. // protocols that can allow "unsafe" and "unwise" chars.
  1123. unsafeProtocol = {
  1124. 'javascript': true,
  1125. 'javascript:': true
  1126. },
  1127. // protocols that never have a hostname.
  1128. hostlessProtocol = {
  1129. 'javascript': true,
  1130. 'javascript:': true
  1131. },
  1132. // protocols that always contain a // bit.
  1133. slashedProtocol = {
  1134. 'http': true,
  1135. 'https': true,
  1136. 'ftp': true,
  1137. 'gopher': true,
  1138. 'file': true,
  1139. 'http:': true,
  1140. 'https:': true,
  1141. 'ftp:': true,
  1142. 'gopher:': true,
  1143. 'file:': true
  1144. },
  1145. querystring = require('querystring');
  1146. function urlParse(url, parseQueryString, slashesDenoteHost) {
  1147. if (url && util.isObject(url) && url instanceof Url) return url;
  1148. var u = new Url;
  1149. u.parse(url, parseQueryString, slashesDenoteHost);
  1150. return u;
  1151. }
  1152. Url.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {
  1153. if (!util.isString(url)) {
  1154. throw new TypeError("Parameter 'url' must be a string, not " + typeof url);
  1155. }
  1156. // Copy chrome, IE, opera backslash-handling behavior.
  1157. // Back slashes before the query string get converted to forward slashes
  1158. // See: https://code.google.com/p/chromium/issues/detail?id=25916
  1159. var queryIndex = url.indexOf('?'),
  1160. splitter =
  1161. (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#',
  1162. uSplit = url.split(splitter),
  1163. slashRegex = /\\/g;
  1164. uSplit[0] = uSplit[0].replace(slashRegex, '/');
  1165. url = uSplit.join(splitter);
  1166. var rest = url;
  1167. // trim before proceeding.
  1168. // This is to support parse stuff like " http://foo.com \n"
  1169. rest = rest.trim();
  1170. if (!slashesDenoteHost && url.split('#').length === 1) {
  1171. // Try fast path regexp
  1172. var simplePath = simplePathPattern.exec(rest);
  1173. if (simplePath) {
  1174. this.path = rest;
  1175. this.href = rest;
  1176. this.pathname = simplePath[1];
  1177. if (simplePath[2]) {
  1178. this.search = simplePath[2];
  1179. if (parseQueryString) {
  1180. this.query = querystring.parse(this.search.substr(1));
  1181. } else {
  1182. this.query = this.search.substr(1);
  1183. }
  1184. } else if (parseQueryString) {
  1185. this.search = '';
  1186. this.query = {};
  1187. }
  1188. return this;
  1189. }
  1190. }
  1191. var proto = protocolPattern.exec(rest);
  1192. if (proto) {
  1193. proto = proto[0];
  1194. var lowerProto = proto.toLowerCase();
  1195. this.protocol = lowerProto;
  1196. rest = rest.substr(proto.length);
  1197. }
  1198. // figure out if it's got a host
  1199. // user@server is *always* interpreted as a hostname, and url
  1200. // resolution will treat //foo/bar as host=foo,path=bar because that's
  1201. // how the browser resolves relative URLs.
  1202. if (slashesDenoteHost || proto || rest.match(/^\/\/[^@\/]+@[^@\/]+/)) {
  1203. var slashes = rest.substr(0, 2) === '//';
  1204. if (slashes && !(proto && hostlessProtocol[proto])) {
  1205. rest = rest.substr(2);
  1206. this.slashes = true;
  1207. }
  1208. }
  1209. if (!hostlessProtocol[proto] &&
  1210. (slashes || (proto && !slashedProtocol[proto]))) {
  1211. // there's a hostname.
  1212. // the first instance of /, ?, ;, or # ends the host.
  1213. //
  1214. // If there is an @ in the hostname, then non-host chars *are* allowed
  1215. // to the left of the last @ sign, unless some host-ending character
  1216. // comes *before* the @-sign.
  1217. // URLs are obnoxious.
  1218. //
  1219. // ex:
  1220. // http://a@b@c/ => user:a@b host:c
  1221. // http://a@b?@c => user:a host:c path:/?@c
  1222. // v0.12 TODO(isaacs): This is not quite how Chrome does things.
  1223. // Review our test case against browsers more comprehensively.
  1224. // find the first instance of any hostEndingChars
  1225. var hostEnd = -1;
  1226. for (var i = 0; i < hostEndingChars.length; i++) {
  1227. var hec = rest.indexOf(hostEndingChars[i]);
  1228. if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))
  1229. hostEnd = hec;
  1230. }
  1231. // at this point, either we have an explicit point where the
  1232. // auth portion cannot go past, or the last @ char is the decider.
  1233. var auth, atSign;
  1234. if (hostEnd === -1) {
  1235. // atSign can be anywhere.
  1236. atSign = rest.lastIndexOf('@');
  1237. } else {
  1238. // atSign must be in auth portion.
  1239. // http://a@b/c@d => host:b auth:a path:/c@d
  1240. atSign = rest.lastIndexOf('@', hostEnd);
  1241. }
  1242. // Now we have a portion which is definitely the auth.
  1243. // Pull that off.
  1244. if (atSign !== -1) {
  1245. auth = rest.slice(0, atSign);
  1246. rest = rest.slice(atSign + 1);
  1247. this.auth = decodeURIComponent(auth);
  1248. }
  1249. // the host is the remaining to the left of the first non-host char
  1250. hostEnd = -1;
  1251. for (var i = 0; i < nonHostChars.length; i++) {
  1252. var hec = rest.indexOf(nonHostChars[i]);
  1253. if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))
  1254. hostEnd = hec;
  1255. }
  1256. // if we still have not hit it, then the entire thing is a host.
  1257. if (hostEnd === -1)
  1258. hostEnd = rest.length;
  1259. this.host = rest.slice(0, hostEnd);
  1260. rest = rest.slice(hostEnd);
  1261. // pull out port.
  1262. this.parseHost();
  1263. // we've indicated that there is a hostname,
  1264. // so even if it's empty, it has to be present.
  1265. this.hostname = this.hostname || '';
  1266. // if hostname begins with [ and ends with ]
  1267. // assume that it's an IPv6 address.
  1268. var ipv6Hostname = this.hostname[0] === '[' &&
  1269. this.hostname[this.hostname.length - 1] === ']';
  1270. // validate a little.
  1271. if (!ipv6Hostname) {
  1272. var hostparts = this.hostname.split(/\./);
  1273. for (var i = 0, l = hostparts.length; i < l; i++) {
  1274. var part = hostparts[i];
  1275. if (!part) continue;
  1276. if (!part.match(hostnamePartPattern)) {
  1277. var newpart = '';
  1278. for (var j = 0, k = part.length; j < k; j++) {
  1279. if (part.charCodeAt(j) > 127) {
  1280. // we replace non-ASCII char with a temporary placeholder
  1281. // we need this to make sure size of hostname is not
  1282. // broken by replacing non-ASCII by nothing
  1283. newpart += 'x';
  1284. } else {
  1285. newpart += part[j];
  1286. }
  1287. }
  1288. // we test again with ASCII char only
  1289. if (!newpart.match(hostnamePartPattern)) {
  1290. var validParts = hostparts.slice(0, i);
  1291. var notHost = hostparts.slice(i + 1);
  1292. var bit = part.match(hostnamePartStart);
  1293. if (bit) {
  1294. validParts.push(bit[1]);
  1295. notHost.unshift(bit[2]);
  1296. }
  1297. if (notHost.length) {
  1298. rest = '/' + notHost.join('.') + rest;
  1299. }
  1300. this.hostname = validParts.join('.');
  1301. break;
  1302. }
  1303. }
  1304. }
  1305. }
  1306. if (this.hostname.length > hostnameMaxLen) {
  1307. this.hostname = '';
  1308. } else {
  1309. // hostnames are always lower case.
  1310. this.hostname = this.hostname.toLowerCase();
  1311. }
  1312. if (!ipv6Hostname) {
  1313. // IDNA Support: Returns a punycoded representation of "domain".
  1314. // It only converts parts of the domain name that
  1315. // have non-ASCII characters, i.e. it doesn't matter if
  1316. // you call it with a domain that already is ASCII-only.
  1317. this.hostname = punycode.toASCII(this.hostname);
  1318. }
  1319. var p = this.port ? ':' + this.port : '';
  1320. var h = this.hostname || '';
  1321. this.host = h + p;
  1322. this.href += this.host;
  1323. // strip [ and ] from the hostname
  1324. // the host field still retains them, though
  1325. if (ipv6Hostname) {
  1326. this.hostname = this.hostname.substr(1, this.hostname.length - 2);
  1327. if (rest[0] !== '/') {
  1328. rest = '/' + rest;
  1329. }
  1330. }
  1331. }
  1332. // now rest is set to the post-host stuff.
  1333. // chop off any delim chars.
  1334. if (!unsafeProtocol[lowerProto]) {
  1335. // First, make 100% sure that any "autoEscape" chars get
  1336. // escaped, even if encodeURIComponent doesn't think they
  1337. // need to be.
  1338. for (var i = 0, l = autoEscape.length; i < l; i++) {
  1339. var ae = autoEscape[i];
  1340. if (rest.indexOf(ae) === -1)
  1341. continue;
  1342. var esc = encodeURIComponent(ae);
  1343. if (esc === ae) {
  1344. esc = escape(ae);
  1345. }
  1346. rest = rest.split(ae).join(esc);
  1347. }
  1348. }
  1349. // chop off from the tail first.
  1350. var hash = rest.indexOf('#');
  1351. if (hash !== -1) {
  1352. // got a fragment string.
  1353. this.hash = rest.substr(hash);
  1354. rest = rest.slice(0, hash);
  1355. }
  1356. var qm = rest.indexOf('?');
  1357. if (qm !== -1) {
  1358. this.search = rest.substr(qm);
  1359. this.query = rest.substr(qm + 1);
  1360. if (parseQueryString) {
  1361. this.query = querystring.parse(this.query);
  1362. }
  1363. rest = rest.slice(0, qm);
  1364. } else if (parseQueryString) {
  1365. // no query string, but parseQueryString still requested
  1366. this.search = '';
  1367. this.query = {};
  1368. }
  1369. if (rest) this.pathname = rest;
  1370. if (slashedProtocol[lowerProto] &&
  1371. this.hostname && !this.pathname) {
  1372. this.pathname = '/';
  1373. }
  1374. //to support http.request
  1375. if (this.pathname || this.search) {
  1376. var p = this.pathname || '';
  1377. var s = this.search || '';
  1378. this.path = p + s;
  1379. }
  1380. // finally, reconstruct the href based on what has been validated.
  1381. this.href = this.format();
  1382. return this;
  1383. };
  1384. // format a parsed object into a url string
  1385. function urlFormat(obj) {
  1386. // ensure it's an object, and not a string url.
  1387. // If it's an obj, this is a no-op.
  1388. // this way, you can call url_format() on strings
  1389. // to clean up potentially wonky urls.
  1390. if (util.isString(obj)) obj = urlParse(obj);
  1391. if (!(obj instanceof Url)) return Url.prototype.format.call(obj);
  1392. return obj.format();
  1393. }
  1394. Url.prototype.format = function() {
  1395. var auth = this.auth || '';
  1396. if (auth) {
  1397. auth = encodeURIComponent(auth);
  1398. auth = auth.replace(/%3A/i, ':');
  1399. auth += '@';
  1400. }
  1401. var protocol = this.protocol || '',
  1402. pathname = this.pathname || '',
  1403. hash = this.hash || '',
  1404. host = false,
  1405. query = '';
  1406. if (this.host) {
  1407. host = auth + this.host;
  1408. } else if (this.hostname) {
  1409. host = auth + (this.hostname.indexOf(':') === -1 ?
  1410. this.hostname :
  1411. '[' + this.hostname + ']');
  1412. if (this.port) {
  1413. host += ':' + this.port;
  1414. }
  1415. }
  1416. if (this.query &&
  1417. util.isObject(this.query) &&
  1418. Object.keys(this.query).length) {
  1419. query = querystring.stringify(this.query);
  1420. }
  1421. var search = this.search || (query && ('?' + query)) || '';
  1422. if (protocol && protocol.substr(-1) !== ':') protocol += ':';
  1423. // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.
  1424. // unless they had them to begin with.
  1425. if (this.slashes ||
  1426. (!protocol || slashedProtocol[protocol]) && host !== false) {
  1427. host = '//' + (host || '');
  1428. if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;
  1429. } else if (!host) {
  1430. host = '';
  1431. }
  1432. if (hash && hash.charAt(0) !== '#') hash = '#' + hash;
  1433. if (search && search.charAt(0) !== '?') search = '?' + search;
  1434. pathname = pathname.replace(/[?#]/g, function(match) {
  1435. return encodeURIComponent(match);
  1436. });
  1437. search = search.replace('#', '%23');
  1438. return protocol + host + pathname + search + hash;
  1439. };
  1440. function urlResolve(source, relative) {
  1441. return urlParse(source, false, true).resolve(relative);
  1442. }
  1443. Url.prototype.resolve = function(relative) {
  1444. return this.resolveObject(urlParse(relative, false, true)).format();
  1445. };
  1446. function urlResolveObject(source, relative) {
  1447. if (!source) return relative;
  1448. return urlParse(source, false, true).resolveObject(relative);
  1449. }
  1450. Url.prototype.resolveObject = function(relative) {
  1451. if (util.isString(relative)) {
  1452. var rel = new Url();
  1453. rel.parse(relative, false, true);
  1454. relative = rel;
  1455. }
  1456. var result = new Url();
  1457. var tkeys = Object.keys(this);
  1458. for (var tk = 0; tk < tkeys.length; tk++) {
  1459. var tkey = tkeys[tk];
  1460. result[tkey] = this[tkey];
  1461. }
  1462. // hash is always overridden, no matter what.
  1463. // even href="" will remove it.
  1464. result.hash = relative.hash;
  1465. // if the relative url is empty, then there's nothing left to do here.
  1466. if (relative.href === '') {
  1467. result.href = result.format();
  1468. return result;
  1469. }
  1470. // hrefs like //foo/bar always cut to the protocol.
  1471. if (relative.slashes && !relative.protocol) {
  1472. // take everything except the protocol from relative
  1473. var rkeys = Object.keys(relative);
  1474. for (var rk = 0; rk < rkeys.length; rk++) {
  1475. var rkey = rkeys[rk];
  1476. if (rkey !== 'protocol')
  1477. result[rkey] = relative[rkey];
  1478. }
  1479. //urlParse appends trailing / to urls like http://www.example.com
  1480. if (slashedProtocol[result.protocol] &&
  1481. result.hostname && !result.pathname) {
  1482. result.path = result.pathname = '/';
  1483. }
  1484. result.href = result.format();
  1485. return result;
  1486. }
  1487. if (relative.protocol && relative.protocol !== result.protocol) {
  1488. // if it's a known url protocol, then changing
  1489. // the protocol does weird things
  1490. // first, if it's not file:, then we MUST have a host,
  1491. // and if there was a path
  1492. // to begin with, then we MUST have a path.
  1493. // if it is file:, then the host is dropped,
  1494. // because that's known to be hostless.
  1495. // anything else is assumed to be absolute.
  1496. if (!slashedProtocol[relative.protocol]) {
  1497. var keys = Object.keys(relative);
  1498. for (var v = 0; v < keys.length; v++) {
  1499. var k = keys[v];
  1500. result[k] = relative[k];
  1501. }
  1502. result.href = result.format();
  1503. return result;
  1504. }
  1505. result.protocol = relative.protocol;
  1506. if (!relative.host && !hostlessProtocol[relative.protocol]) {
  1507. var relPath = (relative.pathname || '').split('/');
  1508. while (relPath.length && !(relative.host = relPath.shift()));
  1509. if (!relative.host) relative.host = '';
  1510. if (!relative.hostname) relative.hostname = '';
  1511. if (relPath[0] !== '') relPath.unshift('');
  1512. if (relPath.length < 2) relPath.unshift('');
  1513. result.pathname = relPath.join('/');
  1514. } else {
  1515. result.pathname = relative.pathname;
  1516. }
  1517. result.search = relative.search;
  1518. result.query = relative.query;
  1519. result.host = relative.host || '';
  1520. result.auth = relative.auth;
  1521. result.hostname = relative.hostname || relative.host;
  1522. result.port = relative.port;
  1523. // to support http.request
  1524. if (result.pathname || result.search) {
  1525. var p = result.pathname || '';
  1526. var s = result.search || '';
  1527. result.path = p + s;
  1528. }
  1529. result.slashes = result.slashes || relative.slashes;
  1530. result.href = result.format();
  1531. return result;
  1532. }
  1533. var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),
  1534. isRelAbs = (
  1535. relative.host ||
  1536. relative.pathname && relative.pathname.charAt(0) === '/'
  1537. ),
  1538. mustEndAbs = (isRelAbs || isSourceAbs ||
  1539. (result.host && relative.pathname)),
  1540. removeAllDots = mustEndAbs,
  1541. srcPath = result.pathname && result.pathname.split('/') || [],
  1542. relPath = relative.pathname && relative.pathname.split('/') || [],
  1543. psychotic = result.protocol && !slashedProtocol[result.protocol];
  1544. // if the url is a non-slashed url, then relative
  1545. // links like ../.. should be able
  1546. // to crawl up to the hostname, as well. This is strange.
  1547. // result.protocol has already been set by now.
  1548. // Later on, put the first path part into the host field.
  1549. if (psychotic) {
  1550. result.hostname = '';
  1551. result.port = null;
  1552. if (result.host) {
  1553. if (srcPath[0] === '') srcPath[0] = result.host;
  1554. else srcPath.unshift(result.host);
  1555. }
  1556. result.host = '';
  1557. if (relative.protocol) {
  1558. relative.hostname = null;
  1559. relative.port = null;
  1560. if (relative.host) {
  1561. if (relPath[0] === '') relPath[0] = relative.host;
  1562. else relPath.unshift(relative.host);
  1563. }
  1564. relative.host = null;
  1565. }
  1566. mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');
  1567. }
  1568. if (isRelAbs) {
  1569. // it's absolute.
  1570. result.host = (relative.host || relative.host === '') ?
  1571. relative.host : result.host;
  1572. result.hostname = (relative.hostname || relative.hostname === '') ?
  1573. relative.hostname : result.hostname;
  1574. result.search = relative.search;
  1575. result.query = relative.query;
  1576. srcPath = relPath;
  1577. // fall through to the dot-handling below.
  1578. } else if (relPath.length) {
  1579. // it's relative
  1580. // throw away the existing file, and take the new path instead.
  1581. if (!srcPath) srcPath = [];
  1582. srcPath.pop();
  1583. srcPath = srcPath.concat(relPath);
  1584. result.search = relative.search;
  1585. result.query = relative.query;
  1586. } else if (!util.isNullOrUndefined(relative.search)) {
  1587. // just pull out the search.
  1588. // like href='?foo'.
  1589. // Put this after the other two cases because it simplifies the booleans
  1590. if (psychotic) {
  1591. result.hostname = result.host = srcPath.shift();
  1592. //occationaly the auth can get stuck only in host
  1593. //this especially happens in cases like
  1594. //url.resolveObject('mailto:local1@domain1', 'local2@domain2')
  1595. var authInHost = result.host && result.host.indexOf('@') > 0 ?
  1596. result.host.split('@') : false;
  1597. if (authInHost) {
  1598. result.auth = authInHost.shift();
  1599. result.host = result.hostname = authInHost.shift();
  1600. }
  1601. }
  1602. result.search = relative.search;
  1603. result.query = relative.query;
  1604. //to support http.request
  1605. if (!util.isNull(result.pathname) || !util.isNull(result.search)) {
  1606. result.path = (result.pathname ? result.pathname : '') +
  1607. (result.search ? result.search : '');
  1608. }
  1609. result.href = result.format();
  1610. return result;
  1611. }
  1612. if (!srcPath.length) {
  1613. // no path at all. easy.
  1614. // we've already handled the other stuff above.
  1615. result.pathname = null;
  1616. //to support http.request
  1617. if (result.search) {
  1618. result.path = '/' + result.search;
  1619. } else {
  1620. result.path = null;
  1621. }
  1622. result.href = result.format();
  1623. return result;
  1624. }
  1625. // if a url ENDs in . or .., then it must get a trailing slash.
  1626. // however, if it ends in anything else non-slashy,
  1627. // then it must NOT get a trailing slash.
  1628. var last = srcPath.slice(-1)[0];
  1629. var hasTrailingSlash = (
  1630. (result.host || relative.host || srcPath.length > 1) &&
  1631. (last === '.' || last === '..') || last === '');
  1632. // strip single dots, resolve double dots to parent dir
  1633. // if the path tries to go above the root, `up` ends up > 0
  1634. var up = 0;
  1635. for (var i = srcPath.length; i >= 0; i--) {
  1636. last = srcPath[i];
  1637. if (last === '.') {
  1638. srcPath.splice(i, 1);
  1639. } else if (last === '..') {
  1640. srcPath.splice(i, 1);
  1641. up++;
  1642. } else if (up) {
  1643. srcPath.splice(i, 1);
  1644. up--;
  1645. }
  1646. }
  1647. // if the path is allowed to go above the root, restore leading ..s
  1648. if (!mustEndAbs && !removeAllDots) {
  1649. for (; up--; up) {
  1650. srcPath.unshift('..');
  1651. }
  1652. }
  1653. if (mustEndAbs && srcPath[0] !== '' &&
  1654. (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {
  1655. srcPath.unshift('');
  1656. }
  1657. if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {
  1658. srcPath.push('');
  1659. }
  1660. var isAbsolute = srcPath[0] === '' ||
  1661. (srcPath[0] && srcPath[0].charAt(0) === '/');
  1662. // put the host back
  1663. if (psychotic) {
  1664. result.hostname = result.host = isAbsolute ? '' :
  1665. srcPath.length ? srcPath.shift() : '';
  1666. //occationaly the auth can get stuck only in host
  1667. //this especially happens in cases like
  1668. //url.resolveObject('mailto:local1@domain1', 'local2@domain2')
  1669. var authInHost = result.host && result.host.indexOf('@') > 0 ?
  1670. result.host.split('@') : false;
  1671. if (authInHost) {
  1672. result.auth = authInHost.shift();
  1673. result.host = result.hostname = authInHost.shift();
  1674. }
  1675. }
  1676. mustEndAbs = mustEndAbs || (result.host && srcPath.length);
  1677. if (mustEndAbs && !isAbsolute) {
  1678. srcPath.unshift('');
  1679. }
  1680. if (!srcPath.length) {
  1681. result.pathname = null;
  1682. result.path = null;
  1683. } else {
  1684. result.pathname = srcPath.join('/');
  1685. }
  1686. //to support request.http
  1687. if (!util.isNull(result.pathname) || !util.isNull(result.search)) {
  1688. result.path = (result.pathname ? result.pathname : '') +
  1689. (result.search ? result.search : '');
  1690. }
  1691. result.auth = relative.auth || result.auth;
  1692. result.slashes = result.slashes || relative.slashes;
  1693. result.href = result.format();
  1694. return result;
  1695. };
  1696. Url.prototype.parseHost = function() {
  1697. var host = this.host;
  1698. var port = portPattern.exec(host);
  1699. if (port) {
  1700. port = port[0];
  1701. if (port !== ':') {
  1702. this.port = port.substr(1);
  1703. }
  1704. host = host.substr(0, host.length - port.length);
  1705. }
  1706. if (host) this.hostname = host;
  1707. };
  1708. },{"./util":12,"punycode":3,"querystring":6}],12:[function(require,module,exports){
  1709. 'use strict';
  1710. module.exports = {
  1711. isString: function(arg) {
  1712. return typeof(arg) === 'string';
  1713. },
  1714. isObject: function(arg) {
  1715. return typeof(arg) === 'object' && arg !== null;
  1716. },
  1717. isNull: function(arg) {
  1718. return arg === null;
  1719. },
  1720. isNullOrUndefined: function(arg) {
  1721. return arg == null;
  1722. }
  1723. };
  1724. },{}]},{},[1]);