aboutsummaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
Diffstat (limited to 'contrib')
-rw-r--r--contrib/README.md4
-rw-r--r--contrib/bitcoind.bash-completion2
-rw-r--r--contrib/debian/examples/bitcoin.conf2
-rwxr-xr-xcontrib/devtools/check-doc.py5
-rwxr-xr-xcontrib/devtools/check-rpc-mappings.py158
-rwxr-xr-xcontrib/devtools/commit-script-check.sh33
-rwxr-xr-xcontrib/devtools/github-merge.py51
-rwxr-xr-xcontrib/devtools/lint-all.sh22
-rwxr-xr-xcontrib/devtools/lint-whitespace.sh88
-rwxr-xr-xcontrib/devtools/security-check.py2
-rwxr-xr-xcontrib/devtools/symbol-check.py2
-rwxr-xr-xcontrib/devtools/update-translations.py4
-rwxr-xr-xcontrib/filter-lcov.py25
-rwxr-xr-xcontrib/gitian-build.sh8
-rw-r--r--contrib/gitian-descriptors/README.md65
-rw-r--r--contrib/gitian-descriptors/gitian-linux.yml11
-rw-r--r--contrib/gitian-descriptors/gitian-osx.yml11
-rw-r--r--contrib/gitian-descriptors/gitian-win.yml11
-rw-r--r--contrib/gitian-keys/README.md2
-rw-r--r--contrib/gitian-keys/laanwj-key.pgpbin1713 -> 17689 bytes
-rw-r--r--contrib/gitian-keys/meshcollider-key.pgp51
-rw-r--r--contrib/gitian-keys/sjors-key.pgp76
-rw-r--r--contrib/init/bitcoind.conf4
-rw-r--r--contrib/init/bitcoind.openrc4
-rw-r--r--contrib/init/org.bitcoin.bitcoind.plist1
-rw-r--r--contrib/linearize/README.md2
-rw-r--r--contrib/linearize/example-linearize.cfg7
-rwxr-xr-xcontrib/linearize/linearize-hashes.py4
-rw-r--r--contrib/rpm/README.md16
-rw-r--r--contrib/rpm/bitcoin.if2
-rw-r--r--contrib/rpm/bitcoin.spec4
-rwxr-xr-xcontrib/seeds/generate-seeds.py2
-rwxr-xr-xcontrib/seeds/makeseeds.py2
-rw-r--r--contrib/seeds/nodes_main.txt2054
-rwxr-xr-xcontrib/verify-commits/gpg.sh5
-rwxr-xr-xcontrib/verify-commits/verify-commits.sh2
-rw-r--r--contrib/verifybinaries/README.md8
-rwxr-xr-xcontrib/verifybinaries/verify.sh74
-rwxr-xr-xcontrib/zmq/zmq_sub.py2
-rwxr-xr-xcontrib/zmq/zmq_sub3.4.py2
40 files changed, 1783 insertions, 1045 deletions
diff --git a/contrib/README.md b/contrib/README.md
index 6f750106e4..a582a724f7 100644
--- a/contrib/README.md
+++ b/contrib/README.md
@@ -26,7 +26,7 @@ Contains files used to package bitcoind/bitcoin-qt
for Debian-based Linux systems. If you compile bitcoind/bitcoin-qt yourself, there are some useful files here.
### [Gitian-descriptors](/contrib/gitian-descriptors) ###
-Notes on getting Gitian builds up and running using KVM.
+Files used during the gitian build process. For more information about gitian, see the [the Bitcoin Core documentation repository](https://github.com/bitcoin-core/docs).
### [Gitian-keys](/contrib/gitian-keys)
PGP keys used for signing Bitcoin Core [Gitian release](/doc/release-process.md) results.
@@ -35,7 +35,7 @@ PGP keys used for signing Bitcoin Core [Gitian release](/doc/release-process.md)
Scripts and notes for Mac builds.
### [RPM](/contrib/rpm) ###
-RPM spec file for building bitcoin-core on RPM based distributions
+RPM spec file for building bitcoin-core on RPM based distributions.
### [Gitian-build](/contrib/gitian-build.sh) ###
Script for running full Gitian builds.
diff --git a/contrib/bitcoind.bash-completion b/contrib/bitcoind.bash-completion
index af87e97d80..cccd4bde0d 100644
--- a/contrib/bitcoind.bash-completion
+++ b/contrib/bitcoind.bash-completion
@@ -30,7 +30,7 @@ _bitcoind() {
;;
*)
- # only parse -help if senseful
+ # only parse -help if sensible
if [[ -z "$cur" || "$cur" =~ ^- ]]; then
local helpopts
helpopts=$($bitcoind -help 2>&1 | awk '$1 ~ /^-/ { sub(/=.*/, "="); print $1 }' )
diff --git a/contrib/debian/examples/bitcoin.conf b/contrib/debian/examples/bitcoin.conf
index 1029a51073..14a59fdf6b 100644
--- a/contrib/debian/examples/bitcoin.conf
+++ b/contrib/debian/examples/bitcoin.conf
@@ -76,7 +76,7 @@
#rpcuser=Ulysseys
#rpcpassword=YourSuperGreatPasswordNumber_DO_NOT_USE_THIS_OR_YOU_WILL_GET_ROBBED_385593
#
-# The second method `rpcauth` can be added to server startup argument. It is set at intialization time
+# The second method `rpcauth` can be added to server startup argument. It is set at initialization time
# using the output from the script in share/rpcuser/rpcuser.py after providing a username:
#
# ./share/rpcuser/rpcuser.py alice
diff --git a/contrib/devtools/check-doc.py b/contrib/devtools/check-doc.py
index 445175ec2b..10c3bab03b 100755
--- a/contrib/devtools/check-doc.py
+++ b/contrib/devtools/check-doc.py
@@ -12,6 +12,7 @@ Author: @MarcoFalke
from subprocess import check_output
import re
+import sys
FOLDER_GREP = 'src'
FOLDER_TEST = 'src/test/'
@@ -21,7 +22,7 @@ CMD_GREP_DOCS = r"egrep -r -I 'HelpMessageOpt\(\"\-[^\"=]+?(=|\")' %s" % (CMD_RO
REGEX_ARG = re.compile(r'(?:map(?:Multi)?Args(?:\.count\(|\[)|Get(?:Bool)?Arg\()\"(\-[^\"]+?)\"')
REGEX_DOC = re.compile(r'HelpMessageOpt\(\"(\-[^\"=]+?)(?:=|\")')
# list unsupported, deprecated and duplicate args as they need no documentation
-SET_DOC_OPTIONAL = set(['-rpcssl', '-benchmark', '-h', '-help', '-socks', '-tor', '-debugnet', '-whitelistalwaysrelay', '-prematurewitness', '-walletprematurewitness', '-promiscuousmempoolflags', '-blockminsize', '-sendfreetransactions'])
+SET_DOC_OPTIONAL = set(['-rpcssl', '-benchmark', '-h', '-help', '-socks', '-tor', '-debugnet', '-whitelistalwaysrelay', '-prematurewitness', '-walletprematurewitness', '-promiscuousmempoolflags', '-blockminsize', '-dbcrashratio', '-forcecompactdb', '-usehd'])
def main():
used = check_output(CMD_GREP_ARGS, shell=True)
@@ -39,7 +40,7 @@ def main():
print "Args unknown : %s" % len(args_unknown)
print args_unknown
- exit(len(args_need_doc))
+ sys.exit(len(args_need_doc))
if __name__ == "__main__":
main()
diff --git a/contrib/devtools/check-rpc-mappings.py b/contrib/devtools/check-rpc-mappings.py
new file mode 100755
index 0000000000..7e96852c5c
--- /dev/null
+++ b/contrib/devtools/check-rpc-mappings.py
@@ -0,0 +1,158 @@
+#!/usr/bin/env python3
+# Copyright (c) 2017 The Bitcoin Core developers
+# Distributed under the MIT software license, see the accompanying
+# file COPYING or http://www.opensource.org/licenses/mit-license.php.
+"""Check RPC argument consistency."""
+
+from collections import defaultdict
+import os
+import re
+import sys
+
+# Source files (relative to root) to scan for dispatch tables
+SOURCES = [
+ "src/rpc/server.cpp",
+ "src/rpc/blockchain.cpp",
+ "src/rpc/mining.cpp",
+ "src/rpc/misc.cpp",
+ "src/rpc/net.cpp",
+ "src/rpc/rawtransaction.cpp",
+ "src/wallet/rpcwallet.cpp",
+]
+# Source file (relative to root) containing conversion mapping
+SOURCE_CLIENT = 'src/rpc/client.cpp'
+# Argument names that should be ignored in consistency checks
+IGNORE_DUMMY_ARGS = {'dummy', 'arg0', 'arg1', 'arg2', 'arg3', 'arg4', 'arg5', 'arg6', 'arg7', 'arg8', 'arg9'}
+
+class RPCCommand:
+ def __init__(self, name, args):
+ self.name = name
+ self.args = args
+
+class RPCArgument:
+ def __init__(self, names, idx):
+ self.names = names
+ self.idx = idx
+ self.convert = False
+
+def parse_string(s):
+ assert s[0] == '"'
+ assert s[-1] == '"'
+ return s[1:-1]
+
+def process_commands(fname):
+ """Find and parse dispatch table in implementation file `fname`."""
+ cmds = []
+ in_rpcs = False
+ with open(fname, "r") as f:
+ for line in f:
+ line = line.rstrip()
+ if not in_rpcs:
+ if re.match("static const CRPCCommand .*\[\] =", line):
+ in_rpcs = True
+ else:
+ if line.startswith('};'):
+ in_rpcs = False
+ elif '{' in line and '"' in line:
+ m = re.search('{ *("[^"]*"), *("[^"]*"), *&([^,]*), *{([^}]*)} *},', line)
+ assert m, 'No match to table expression: %s' % line
+ name = parse_string(m.group(2))
+ args_str = m.group(4).strip()
+ if args_str:
+ args = [RPCArgument(parse_string(x.strip()).split('|'), idx) for idx, x in enumerate(args_str.split(','))]
+ else:
+ args = []
+ cmds.append(RPCCommand(name, args))
+ assert not in_rpcs and cmds, "Something went wrong with parsing the C++ file: update the regexps"
+ return cmds
+
+def process_mapping(fname):
+ """Find and parse conversion table in implementation file `fname`."""
+ cmds = []
+ in_rpcs = False
+ with open(fname, "r") as f:
+ for line in f:
+ line = line.rstrip()
+ if not in_rpcs:
+ if line == 'static const CRPCConvertParam vRPCConvertParams[] =':
+ in_rpcs = True
+ else:
+ if line.startswith('};'):
+ in_rpcs = False
+ elif '{' in line and '"' in line:
+ m = re.search('{ *("[^"]*"), *([0-9]+) *, *("[^"]*") *},', line)
+ assert m, 'No match to table expression: %s' % line
+ name = parse_string(m.group(1))
+ idx = int(m.group(2))
+ argname = parse_string(m.group(3))
+ cmds.append((name, idx, argname))
+ assert not in_rpcs and cmds
+ return cmds
+
+def main():
+ root = sys.argv[1]
+
+ # Get all commands from dispatch tables
+ cmds = []
+ for fname in SOURCES:
+ cmds += process_commands(os.path.join(root, fname))
+
+ cmds_by_name = {}
+ for cmd in cmds:
+ cmds_by_name[cmd.name] = cmd
+
+ # Get current convert mapping for client
+ client = SOURCE_CLIENT
+ mapping = set(process_mapping(os.path.join(root, client)))
+
+ print('* Checking consistency between dispatch tables and vRPCConvertParams')
+
+ # Check mapping consistency
+ errors = 0
+ for (cmdname, argidx, argname) in mapping:
+ try:
+ rargnames = cmds_by_name[cmdname].args[argidx].names
+ except IndexError:
+ print('ERROR: %s argument %i (named %s in vRPCConvertParams) is not defined in dispatch table' % (cmdname, argidx, argname))
+ errors += 1
+ continue
+ if argname not in rargnames:
+ print('ERROR: %s argument %i is named %s in vRPCConvertParams but %s in dispatch table' % (cmdname, argidx, argname, rargnames), file=sys.stderr)
+ errors += 1
+
+ # Check for conflicts in vRPCConvertParams conversion
+ # All aliases for an argument must either be present in the
+ # conversion table, or not. Anything in between means an oversight
+ # and some aliases won't work.
+ for cmd in cmds:
+ for arg in cmd.args:
+ convert = [((cmd.name, arg.idx, argname) in mapping) for argname in arg.names]
+ if any(convert) != all(convert):
+ print('ERROR: %s argument %s has conflicts in vRPCConvertParams conversion specifier %s' % (cmd.name, arg.names, convert))
+ errors += 1
+ arg.convert = all(convert)
+
+ # Check for conversion difference by argument name.
+ # It is preferable for API consistency that arguments with the same name
+ # have the same conversion, so bin by argument name.
+ all_methods_by_argname = defaultdict(list)
+ converts_by_argname = defaultdict(list)
+ for cmd in cmds:
+ for arg in cmd.args:
+ for argname in arg.names:
+ all_methods_by_argname[argname].append(cmd.name)
+ converts_by_argname[argname].append(arg.convert)
+
+ for argname, convert in converts_by_argname.items():
+ if all(convert) != any(convert):
+ if argname in IGNORE_DUMMY_ARGS:
+ # these are testing or dummy, don't warn for them
+ continue
+ print('WARNING: conversion mismatch for argument named %s (%s)' %
+ (argname, list(zip(all_methods_by_argname[argname], converts_by_argname[argname]))))
+
+ sys.exit(errors > 0)
+
+
+if __name__ == '__main__':
+ main()
diff --git a/contrib/devtools/commit-script-check.sh b/contrib/devtools/commit-script-check.sh
index add4bb4883..1c9dbc7f68 100755
--- a/contrib/devtools/commit-script-check.sh
+++ b/contrib/devtools/commit-script-check.sh
@@ -20,20 +20,27 @@ RET=0
PREV_BRANCH=`git name-rev --name-only HEAD`
PREV_HEAD=`git rev-parse HEAD`
for i in `git rev-list --reverse $1`; do
- git rev-list -n 1 --pretty="%s" $i | grep -q "^scripted-diff:" || continue
- git checkout --quiet $i^ || exit
- SCRIPT="`git rev-list --format=%b -n1 $i | sed '/^-BEGIN VERIFY SCRIPT-$/,/^-END VERIFY SCRIPT-$/{//!b};d'`"
- if test "x$SCRIPT" = "x"; then
- echo "Error: missing script for: $i"
- echo "Failed"
- RET=1
- else
- echo "Running script for: $i"
- echo "$SCRIPT"
- eval "$SCRIPT"
- git --no-pager diff --exit-code $i && echo "OK" || (echo "Failed"; false) || RET=1
+ if git rev-list -n 1 --pretty="%s" $i | grep -q "^scripted-diff:"; then
+ git checkout --quiet $i^ || exit
+ SCRIPT="`git rev-list --format=%b -n1 $i | sed '/^-BEGIN VERIFY SCRIPT-$/,/^-END VERIFY SCRIPT-$/{//!b};d'`"
+ if test "x$SCRIPT" = "x"; then
+ echo "Error: missing script for: $i"
+ echo "Failed"
+ RET=1
+ else
+ echo "Running script for: $i"
+ echo "$SCRIPT"
+ eval "$SCRIPT"
+ git --no-pager diff --exit-code $i && echo "OK" || (echo "Failed"; false) || RET=1
+ fi
+ git reset --quiet --hard HEAD
+ else
+ if git rev-list "--format=%b" -n1 $i | grep -q '^-\(BEGIN\|END\)[ a-zA-Z]*-$'; then
+ echo "Error: script block marker but no scripted-diff in title"
+ echo "Failed"
+ RET=1
+ fi
fi
- git reset --quiet --hard HEAD
done
git checkout --quiet $PREV_BRANCH 2>/dev/null || git checkout --quiet $PREV_HEAD
exit $RET
diff --git a/contrib/devtools/github-merge.py b/contrib/devtools/github-merge.py
index e9816f7d19..2941d2cb6d 100755
--- a/contrib/devtools/github-merge.py
+++ b/contrib/devtools/github-merge.py
@@ -20,6 +20,7 @@ from sys import stdin,stdout,stderr
import argparse
import hashlib
import subprocess
+import sys
import json,codecs
try:
from urllib.request import Request,urlopen
@@ -158,11 +159,11 @@ def main():
if repo is None:
print("ERROR: No repository configured. Use this command to set:", file=stderr)
print("git config githubmerge.repository <owner>/<repo>", file=stderr)
- exit(1)
+ sys.exit(1)
if signingkey is None:
print("ERROR: No GPG signing key set. Set one using:",file=stderr)
print("git config --global user.signingkey <key>",file=stderr)
- exit(1)
+ sys.exit(1)
host_repo = host+":"+repo # shortcut for push/pull target
@@ -173,8 +174,9 @@ def main():
# Receive pull information from github
info = retrieve_pr_info(repo,pull)
if info is None:
- exit(1)
+ sys.exit(1)
title = info['title'].strip()
+ body = info['body'].strip()
# precedence order for destination branch argument:
# - command line argument
# - githubmerge.branch setting
@@ -193,27 +195,23 @@ def main():
subprocess.check_call([GIT,'checkout','-q',branch])
except subprocess.CalledProcessError as e:
print("ERROR: Cannot check out branch %s." % (branch), file=stderr)
- exit(3)
+ sys.exit(3)
try:
- subprocess.check_call([GIT,'fetch','-q',host_repo,'+refs/pull/'+pull+'/*:refs/heads/pull/'+pull+'/*'])
+ subprocess.check_call([GIT,'fetch','-q',host_repo,'+refs/pull/'+pull+'/*:refs/heads/pull/'+pull+'/*',
+ '+refs/heads/'+branch+':refs/heads/'+base_branch])
except subprocess.CalledProcessError as e:
- print("ERROR: Cannot find pull request #%s on %s." % (pull,host_repo), file=stderr)
- exit(3)
+ print("ERROR: Cannot find pull request #%s or branch %s on %s." % (pull,branch,host_repo), file=stderr)
+ sys.exit(3)
try:
subprocess.check_call([GIT,'log','-q','-1','refs/heads/'+head_branch], stdout=devnull, stderr=stdout)
except subprocess.CalledProcessError as e:
print("ERROR: Cannot find head of pull request #%s on %s." % (pull,host_repo), file=stderr)
- exit(3)
+ sys.exit(3)
try:
subprocess.check_call([GIT,'log','-q','-1','refs/heads/'+merge_branch], stdout=devnull, stderr=stdout)
except subprocess.CalledProcessError as e:
print("ERROR: Cannot find merge of pull request #%s on %s." % (pull,host_repo), file=stderr)
- exit(3)
- try:
- subprocess.check_call([GIT,'fetch','-q',host_repo,'+refs/heads/'+branch+':refs/heads/'+base_branch])
- except subprocess.CalledProcessError as e:
- print("ERROR: Cannot find branch %s on %s." % (branch,host_repo), file=stderr)
- exit(3)
+ sys.exit(3)
subprocess.check_call([GIT,'checkout','-q',base_branch])
subprocess.call([GIT,'branch','-q','-D',local_merge_branch], stderr=devnull)
subprocess.check_call([GIT,'checkout','-q','-b',local_merge_branch])
@@ -229,35 +227,36 @@ def main():
firstline = 'Merge #%s' % (pull,)
message = firstline + '\n\n'
message += subprocess.check_output([GIT,'log','--no-merges','--topo-order','--pretty=format:%h %s (%an)',base_branch+'..'+head_branch]).decode('utf-8')
+ message += '\n\nPull request description:\n\n ' + body.replace('\n', '\n ') + '\n'
try:
subprocess.check_call([GIT,'merge','-q','--commit','--no-edit','--no-ff','-m',message.encode('utf-8'),head_branch])
except subprocess.CalledProcessError as e:
print("ERROR: Cannot be merged cleanly.",file=stderr)
subprocess.check_call([GIT,'merge','--abort'])
- exit(4)
+ sys.exit(4)
logmsg = subprocess.check_output([GIT,'log','--pretty=format:%s','-n','1']).decode('utf-8')
if logmsg.rstrip() != firstline.rstrip():
print("ERROR: Creating merge failed (already merged?).",file=stderr)
- exit(4)
+ sys.exit(4)
symlink_files = get_symlink_files()
for f in symlink_files:
print("ERROR: File %s was a symlink" % f)
if len(symlink_files) > 0:
- exit(4)
+ sys.exit(4)
# Put tree SHA512 into the message
try:
first_sha512 = tree_sha512sum()
message += '\n\nTree-SHA512: ' + first_sha512
except subprocess.CalledProcessError as e:
- printf("ERROR: Unable to compute tree hash")
- exit(4)
+ print("ERROR: Unable to compute tree hash")
+ sys.exit(4)
try:
subprocess.check_call([GIT,'commit','--amend','-m',message.encode('utf-8')])
except subprocess.CalledProcessError as e:
- printf("ERROR: Cannot update message.",file=stderr)
- exit(4)
+ print("ERROR: Cannot update message.", file=stderr)
+ sys.exit(4)
print_merge_details(pull, title, branch, base_branch, head_branch)
print()
@@ -266,7 +265,7 @@ def main():
if testcmd:
if subprocess.call(testcmd,shell=True):
print("ERROR: Running %s failed." % testcmd,file=stderr)
- exit(5)
+ sys.exit(5)
# Show the created merge.
diff = subprocess.check_output([GIT,'diff',merge_branch+'..'+local_merge_branch])
@@ -277,7 +276,7 @@ def main():
if reply.lower() == 'ignore':
print("Difference with github ignored.",file=stderr)
else:
- exit(6)
+ sys.exit(6)
else:
# Verify the result manually.
print("Dropping you on a shell so you can try building/testing the merged source.",file=stderr)
@@ -290,7 +289,7 @@ def main():
second_sha512 = tree_sha512sum()
if first_sha512 != second_sha512:
print("ERROR: Tree hash changed unexpectedly",file=stderr)
- exit(8)
+ sys.exit(8)
# Sign the merge commit.
print_merge_details(pull, title, branch, base_branch, head_branch)
@@ -304,7 +303,7 @@ def main():
print("Error while signing, asking again.",file=stderr)
elif reply == 'x':
print("Not signing off on merge, exiting.",file=stderr)
- exit(1)
+ sys.exit(1)
# Put the result in branch.
subprocess.check_call([GIT,'checkout','-q',branch])
@@ -324,7 +323,7 @@ def main():
subprocess.check_call([GIT,'push',host_repo,'refs/heads/'+branch])
break
elif reply == 'x':
- exit(1)
+ sys.exit(1)
if __name__ == '__main__':
main()
diff --git a/contrib/devtools/lint-all.sh b/contrib/devtools/lint-all.sh
new file mode 100755
index 0000000000..b6d86959c6
--- /dev/null
+++ b/contrib/devtools/lint-all.sh
@@ -0,0 +1,22 @@
+#!/bin/bash
+#
+# Copyright (c) 2017 The Bitcoin Core developers
+# Distributed under the MIT software license, see the accompanying
+# file COPYING or http://www.opensource.org/licenses/mit-license.php.
+#
+# This script runs all contrib/devtools/lint-*.sh files, and fails if any exit
+# with a non-zero status code.
+
+set -u
+
+SCRIPTDIR=$(dirname "${BASH_SOURCE[0]}")
+LINTALL=$(basename "${BASH_SOURCE[0]}")
+
+for f in "${SCRIPTDIR}"/lint-*.sh; do
+ if [ "$(basename "$f")" != "$LINTALL" ]; then
+ if ! "$f"; then
+ echo "^---- failure generated from $f"
+ exit 1
+ fi
+ fi
+done
diff --git a/contrib/devtools/lint-whitespace.sh b/contrib/devtools/lint-whitespace.sh
new file mode 100755
index 0000000000..989923f31a
--- /dev/null
+++ b/contrib/devtools/lint-whitespace.sh
@@ -0,0 +1,88 @@
+#!/bin/bash
+#
+# Copyright (c) 2017 The Bitcoin Core developers
+# Distributed under the MIT software license, see the accompanying
+# file COPYING or http://www.opensource.org/licenses/mit-license.php.
+#
+# Check for new lines in diff that introduce trailing whitespace.
+
+# We can't run this check unless we know the commit range for the PR.
+if [ -z "${TRAVIS_COMMIT_RANGE}" ]; then
+ echo "Cannot run lint-whitespace.sh without commit range. To run locally, use:"
+ echo "TRAVIS_COMMIT_RANGE='<commit range>' .lint-whitespace.sh"
+ echo "For example:"
+ echo "TRAVIS_COMMIT_RANGE='47ba2c3...ee50c9e' .lint-whitespace.sh"
+ exit 1
+fi
+
+showdiff() {
+ if ! git diff -U0 "${TRAVIS_COMMIT_RANGE}" -- "." ":(exclude)src/leveldb/" ":(exclude)src/secp256k1/" ":(exclude)src/univalue/" ":(exclude)doc/release-notes/"; then
+ echo "Failed to get a diff"
+ exit 1
+ fi
+}
+
+showcodediff() {
+ if ! git diff -U0 "${TRAVIS_COMMIT_RANGE}" -- *.cpp *.h *.md *.py *.sh ":(exclude)src/leveldb/" ":(exclude)src/secp256k1/" ":(exclude)src/univalue/" ":(exclude)doc/release-notes/"; then
+ echo "Failed to get a diff"
+ exit 1
+ fi
+}
+
+RET=0
+
+# Check if trailing whitespace was found in the diff.
+if showdiff | grep -E -q '^\+.*\s+$'; then
+ echo "This diff appears to have added new lines with trailing whitespace."
+ echo "The following changes were suspected:"
+ FILENAME=""
+ SEEN=0
+ while read -r line; do
+ if [[ "$line" =~ ^diff ]]; then
+ FILENAME="$line"
+ SEEN=0
+ elif [[ "$line" =~ ^@@ ]]; then
+ LINENUMBER="$line"
+ else
+ if [ "$SEEN" -eq 0 ]; then
+ # The first time a file is seen with trailing whitespace, we print the
+ # filename (preceded by a newline).
+ echo
+ echo "$FILENAME"
+ echo "$LINENUMBER"
+ SEEN=1
+ fi
+ echo "$line"
+ fi
+ done < <(showdiff | grep -E '^(diff --git |@@|\+.*\s+$)')
+ RET=1
+fi
+
+# Check if tab characters were found in the diff.
+if showcodediff | grep -P -q '^\+.*\t'; then
+ echo "This diff appears to have added new lines with tab characters instead of spaces."
+ echo "The following changes were suspected:"
+ FILENAME=""
+ SEEN=0
+ while read -r line; do
+ if [[ "$line" =~ ^diff ]]; then
+ FILENAME="$line"
+ SEEN=0
+ elif [[ "$line" =~ ^@@ ]]; then
+ LINENUMBER="$line"
+ else
+ if [ "$SEEN" -eq 0 ]; then
+ # The first time a file is seen with a tab character, we print the
+ # filename (preceded by a newline).
+ echo
+ echo "$FILENAME"
+ echo "$LINENUMBER"
+ SEEN=1
+ fi
+ echo "$line"
+ fi
+ done < <(showcodediff | grep -P '^(diff --git |@@|\+.*\t)')
+ RET=1
+fi
+
+exit $RET
diff --git a/contrib/devtools/security-check.py b/contrib/devtools/security-check.py
index c90541e271..6eb5667453 100755
--- a/contrib/devtools/security-check.py
+++ b/contrib/devtools/security-check.py
@@ -212,5 +212,5 @@ if __name__ == '__main__':
except IOError:
print('%s: cannot open' % filename)
retval = 1
- exit(retval)
+ sys.exit(retval)
diff --git a/contrib/devtools/symbol-check.py b/contrib/devtools/symbol-check.py
index 8f8685006e..98daa1bd76 100755
--- a/contrib/devtools/symbol-check.py
+++ b/contrib/devtools/symbol-check.py
@@ -159,6 +159,6 @@ if __name__ == '__main__':
print('%s: NEEDED library %s is not allowed' % (filename, library_name.decode('utf-8')))
retval = 1
- exit(retval)
+ sys.exit(retval)
diff --git a/contrib/devtools/update-translations.py b/contrib/devtools/update-translations.py
index 2011841005..e1924749d2 100755
--- a/contrib/devtools/update-translations.py
+++ b/contrib/devtools/update-translations.py
@@ -36,12 +36,12 @@ def check_at_repository_root():
if not os.path.exists('.git'):
print('No .git directory found')
print('Execute this script at the root of the repository', file=sys.stderr)
- exit(1)
+ sys.exit(1)
def fetch_all_translations():
if subprocess.call([TX, 'pull', '-f', '-a']):
print('Error while fetching translations', file=sys.stderr)
- exit(1)
+ sys.exit(1)
def find_format_specifiers(s):
'''Find all format specifiers in a string.'''
diff --git a/contrib/filter-lcov.py b/contrib/filter-lcov.py
new file mode 100755
index 0000000000..299377d691
--- /dev/null
+++ b/contrib/filter-lcov.py
@@ -0,0 +1,25 @@
+#!/usr/bin/env python3
+
+import argparse
+
+parser = argparse.ArgumentParser(description='Remove the coverage data from a tracefile for all files matching the pattern.')
+parser.add_argument('--pattern', '-p', action='append', help='the pattern of files to remove', required=True)
+parser.add_argument('tracefile', help='the tracefile to remove the coverage data from')
+parser.add_argument('outfile', help='filename for the output to be written to')
+
+args = parser.parse_args()
+tracefile = args.tracefile
+pattern = args.pattern
+outfile = args.outfile
+
+in_remove = False
+with open(tracefile, 'r') as f:
+ with open(outfile, 'w') as wf:
+ for line in f:
+ for p in pattern:
+ if line.startswith("SF:") and p in line:
+ in_remove = True
+ if not in_remove:
+ wf.write(line)
+ if line == 'end_of_record\n':
+ in_remove = False
diff --git a/contrib/gitian-build.sh b/contrib/gitian-build.sh
index 6ee5df4703..8fdec21b0e 100755
--- a/contrib/gitian-build.sh
+++ b/contrib/gitian-build.sh
@@ -40,15 +40,15 @@ version Version number, commit, or branch to build. If building a commit or bra
Options:
-c|--commit Indicate that the version argument is for a commit or branch
-u|--url Specify the URL of the repository. Default is https://github.com/bitcoin/bitcoin
--v|--verify Verify the gitian build
--b|--build Do a gitian build
+-v|--verify Verify the Gitian build
+-b|--build Do a Gitian build
-s|--sign Make signed binaries for Windows and Mac OSX
-B|--buildsign Build both signed and unsigned binaries
-o|--os Specify which Operating Systems the build is for. Default is lwx. l for linux, w for windows, x for osx
-j Number of processes to use. Default 2
-m Memory to allocate in MiB. Default 2000
--kvm Use KVM instead of LXC
---setup Setup the gitian building environment. Uses KVM. If you want to use lxc, use the --lxc option. Only works on Debian-based systems (Ubuntu, Debian)
+--setup Set up the Gitian building environment. Uses KVM. If you want to use lxc, use the --lxc option. Only works on Debian-based systems (Ubuntu, Debian)
--detach-sign Create the assert file for detached signing. Will not commit anything.
--no-commit Do not commit anything to git
-h|--help Print this help message
@@ -179,8 +179,6 @@ done
if [[ $lxc = true ]]
then
export USE_LXC=1
- export LXC_BRIDGE=lxcbr0
- sudo ifconfig lxcbr0 up 10.0.2.2
fi
# Check for OSX SDK
diff --git a/contrib/gitian-descriptors/README.md b/contrib/gitian-descriptors/README.md
deleted file mode 100644
index 6149706596..0000000000
--- a/contrib/gitian-descriptors/README.md
+++ /dev/null
@@ -1,65 +0,0 @@
-### Gavin's notes on getting gitian builds up and running using KVM
-
-These instructions distilled from
-[https://help.ubuntu.com/community/KVM/Installation](https://help.ubuntu.com/community/KVM/Installation).
-
-You need the right hardware: you need a 64-bit-capable CPU with hardware virtualization support (Intel VT-x or AMD-V). Not all modern CPUs support hardware virtualization.
-
-You probably need to enable hardware virtualization in your machine's BIOS.
-
-You need to be running a recent version of 64-bit-Ubuntu, and you need to install several prerequisites:
-
- sudo apt-get install ruby apache2 git apt-cacher-ng python-vm-builder qemu-kvm
-
-Sanity checks:
-
- sudo service apt-cacher-ng status # Should return apt-cacher-ng is running
- ls -l /dev/kvm # Should show a /dev/kvm device
-
-
-Once you've got the right hardware and software:
-
- git clone git://github.com/bitcoin/bitcoin.git
- git clone git://github.com/devrandom/gitian-builder.git
- mkdir gitian-builder/inputs
- cd gitian-builder/inputs
-
- # Create base images
- cd gitian-builder
- bin/make-base-vm --suite trusty --arch amd64
- cd ..
-
- # Get inputs (see doc/release-process.md for exact inputs needed and where to get them)
- ...
-
- # For further build instructions see doc/release-process.md
- ...
-
----------------------
-
-`gitian-builder` now also supports building using LXC. See
-[help.ubuntu.com](https://help.ubuntu.com/14.04/serverguide/lxc.html)
-for how to get LXC up and running under Ubuntu.
-
-If your main machine is a 64-bit Mac or PC with a few gigabytes of memory
-and at least 10 gigabytes of free disk space, you can `gitian-build` using
-LXC running inside a virtual machine.
-
-Here's a description of Gavin's setup on OSX 10.6:
-
-1. Download and install VirtualBox from [https://www.virtualbox.org/](https://www.virtualbox.org/)
-
-2. Download the 64-bit Ubuntu Desktop 12.04 LTS .iso CD image from
- [http://www.ubuntu.com/](http://www.ubuntu.com/)
-
-3. Run VirtualBox and create a new virtual machine, using the Ubuntu .iso (see the [VirtualBox documentation](https://www.virtualbox.org/wiki/Documentation) for details). Create it with at least 2 gigabytes of memory and a disk that is at least 20 gigabytes big.
-
-4. Inside the running Ubuntu desktop, install:
-
- sudo apt-get install debootstrap lxc ruby apache2 git apt-cacher-ng python-vm-builder
-
-5. Still inside Ubuntu, tell gitian-builder to use LXC, then follow the "Once you've got the right hardware and software" instructions above:
-
- export USE_LXC=1
- git clone git://github.com/bitcoin/bitcoin.git
- ... etc
diff --git a/contrib/gitian-descriptors/gitian-linux.yml b/contrib/gitian-descriptors/gitian-linux.yml
index 3da8510cfb..c80e19edbb 100644
--- a/contrib/gitian-descriptors/gitian-linux.yml
+++ b/contrib/gitian-descriptors/gitian-linux.yml
@@ -1,5 +1,5 @@
---
-name: "bitcoin-linux-0.15"
+name: "bitcoin-linux-0.16"
enable_cache: true
suites:
- "trusty"
@@ -132,7 +132,6 @@ script: |
export PATH=${WRAP_DIR}:${PATH}
# Create the release tarball using (arbitrarily) the first host
- export GIT_DIR="$PWD/.git"
./autogen.sh
CONFIG_SITE=${BASEPREFIX}/`echo "${HOSTS}" | awk '{print $1;}'`/share/config.site ./configure --prefix=/
make dist
@@ -145,6 +144,9 @@ script: |
find bitcoin-* | sort | tar --no-recursion --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > ../$SOURCEDIST
popd
+ # Workaround for tarball not building with the bare tag version (prep)
+ make -C src obj/build.h
+
ORIGPATH="$PATH"
# Extract the release tarball into a dir for each host and build
for i in ${HOSTS}; do
@@ -155,6 +157,11 @@ script: |
mkdir -p ${INSTALLPATH}
tar --strip-components=1 -xf ../$SOURCEDIST
+ # Workaround for tarball not building with the bare tag version
+ echo '#!/bin/true' >share/genbuild.sh
+ mkdir src/obj
+ cp ../src/obj/build.h src/obj/
+
CONFIG_SITE=${BASEPREFIX}/${i}/share/config.site ./configure --prefix=/ --disable-ccache --disable-maintainer-mode --disable-dependency-tracking ${CONFIGFLAGS} CFLAGS="${HOST_CFLAGS}" CXXFLAGS="${HOST_CXXFLAGS}" LDFLAGS="${HOST_LDFLAGS}"
make ${MAKEOPTS}
make ${MAKEOPTS} -C src check-security
diff --git a/contrib/gitian-descriptors/gitian-osx.yml b/contrib/gitian-descriptors/gitian-osx.yml
index 206db7c19e..cbf286d2cd 100644
--- a/contrib/gitian-descriptors/gitian-osx.yml
+++ b/contrib/gitian-descriptors/gitian-osx.yml
@@ -1,5 +1,5 @@
---
-name: "bitcoin-osx-0.15"
+name: "bitcoin-osx-0.16"
enable_cache: true
suites:
- "trusty"
@@ -101,7 +101,6 @@ script: |
export PATH=${WRAP_DIR}:${PATH}
# Create the release tarball using (arbitrarily) the first host
- export GIT_DIR="$PWD/.git"
./autogen.sh
CONFIG_SITE=${BASEPREFIX}/`echo "${HOSTS}" | awk '{print $1;}'`/share/config.site ./configure --prefix=/
make dist
@@ -115,6 +114,9 @@ script: |
find bitcoin-* | sort | tar --no-recursion --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > ../$SOURCEDIST
popd
+ # Workaround for tarball not building with the bare tag version (prep)
+ make -C src obj/build.h
+
ORIGPATH="$PATH"
# Extract the release tarball into a dir for each host and build
for i in ${HOSTS}; do
@@ -125,6 +127,11 @@ script: |
mkdir -p ${INSTALLPATH}
tar --strip-components=1 -xf ../$SOURCEDIST
+ # Workaround for tarball not building with the bare tag version
+ echo '#!/bin/true' >share/genbuild.sh
+ mkdir src/obj
+ cp ../src/obj/build.h src/obj/
+
CONFIG_SITE=${BASEPREFIX}/${i}/share/config.site ./configure --prefix=/ --disable-ccache --disable-maintainer-mode --disable-dependency-tracking ${CONFIGFLAGS}
make ${MAKEOPTS}
make install-strip DESTDIR=${INSTALLPATH}
diff --git a/contrib/gitian-descriptors/gitian-win.yml b/contrib/gitian-descriptors/gitian-win.yml
index 1d4d70494b..95ff9759c7 100644
--- a/contrib/gitian-descriptors/gitian-win.yml
+++ b/contrib/gitian-descriptors/gitian-win.yml
@@ -1,5 +1,5 @@
---
-name: "bitcoin-win-0.15"
+name: "bitcoin-win-0.16"
enable_cache: true
suites:
- "trusty"
@@ -116,7 +116,6 @@ script: |
export PATH=${WRAP_DIR}:${PATH}
# Create the release tarball using (arbitrarily) the first host
- export GIT_DIR="$PWD/.git"
./autogen.sh
CONFIG_SITE=${BASEPREFIX}/`echo "${HOSTS}" | awk '{print $1;}'`/share/config.site ./configure --prefix=/
make dist
@@ -132,6 +131,9 @@ script: |
cp ../$SOURCEDIST $OUTDIR/src
popd
+ # Workaround for tarball not building with the bare tag version (prep)
+ make -C src obj/build.h
+
ORIGPATH="$PATH"
# Extract the release tarball into a dir for each host and build
for i in ${HOSTS}; do
@@ -142,6 +144,11 @@ script: |
mkdir -p ${INSTALLPATH}
tar --strip-components=1 -xf ../$SOURCEDIST
+ # Workaround for tarball not building with the bare tag version
+ echo '#!/bin/true' >share/genbuild.sh
+ mkdir src/obj
+ cp ../src/obj/build.h src/obj/
+
CONFIG_SITE=${BASEPREFIX}/${i}/share/config.site ./configure --prefix=/ --disable-ccache --disable-maintainer-mode --disable-dependency-tracking ${CONFIGFLAGS} CFLAGS="${HOST_CFLAGS}" CXXFLAGS="${HOST_CXXFLAGS}"
make ${MAKEOPTS}
make ${MAKEOPTS} -C src check-security
diff --git a/contrib/gitian-keys/README.md b/contrib/gitian-keys/README.md
index 439910330d..4b0b7a2615 100644
--- a/contrib/gitian-keys/README.md
+++ b/contrib/gitian-keys/README.md
@@ -3,7 +3,7 @@ PGP keys
This folder contains the public keys of developers and active contributors.
-The keys are mainly used to sign git commits or the build results of gitian
+The keys are mainly used to sign git commits or the build results of Gitian
builds.
You can import the keys into gpg as follows. Also, make sure to fetch the
diff --git a/contrib/gitian-keys/laanwj-key.pgp b/contrib/gitian-keys/laanwj-key.pgp
index 559295109d..eed232a872 100644
--- a/contrib/gitian-keys/laanwj-key.pgp
+++ b/contrib/gitian-keys/laanwj-key.pgp
Binary files differ
diff --git a/contrib/gitian-keys/meshcollider-key.pgp b/contrib/gitian-keys/meshcollider-key.pgp
new file mode 100644
index 0000000000..20963e7e25
--- /dev/null
+++ b/contrib/gitian-keys/meshcollider-key.pgp
@@ -0,0 +1,51 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+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
+gb52/WPhR6CJQ2/7y3Uj7u8sPNpb7BGI
+=as33
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/contrib/gitian-keys/sjors-key.pgp b/contrib/gitian-keys/sjors-key.pgp
new file mode 100644
index 0000000000..2b5acc82aa
--- /dev/null
+++ b/contrib/gitian-keys/sjors-key.pgp
@@ -0,0 +1,76 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQINBFWSwMoBEADG31O8+ex+xpgzVKQgF4iVRE5uBPT0+GM6FnwqIIhXVKiBLQh8
+YDhhgk6joh+vsLrFzKZ9kXwoiHN8y/AiNCQ0xjAUdpznD5xvHAaGIAlT/sodRNT+
+869WgT9G1uiVp0P4ucEeilmhCn9o51LqkS3roXkj0ec52b1pslUl2WKdu1ZD+Bj4
+3/oVZm7mmjkDwl0RHJQmqlK0bunq0jlVlgH5sdQfmLbCZaq3LhVPf73zt5qHH+J6
+ZbU7A4cqm2eN5SyH+Nno+cq3+vXmvVI+x/jPe/dPDCXaGWf5fWI/Lbk/mMP7JAl1
+6X44CN+hZHUnNuzeZt2/ROWZ0s0JJcjQkSe9noUQedjBAHX82s886vsFzOHvDtul
+EuV/XAjUlkhMbhZkZaIq9ucqHmUBI4+OcFEIbbKc9TrKtJe+CYuWTNlomVk/iFr8
+zSm/S64NiqKi/BeQGgcsDZIaJDYfDP83esOOaaxFswHnJNtHnU1PwntrJtXft0dK
+ydtlQZ6r96SYxLDTeGfC2SNk0zbnKAGvjj04vzQeN+JSRZ75tNKmgdbJdNL8wvPh
+879TpCwMhNDvSRG+YqCe6whaJV76a+Doxg48HCJYaj6bnRn41/QGJEyL31I8l/7S
+YsLLmAEbqwG7erYi7WZS3cRrGJI8RwohGMZf7yraqoaOgMKmtE/Sq0tLtwARAQAB
+tCNTam9ycyBQcm92b29zdCA8c2pvcnNAc3Byb3Zvb3N0Lm5sPokCQAQTAQoAKgIb
+AwUJB4YfgAULCQgHAwUVCgkICwUWAgMBAAIeAQIXgAUCWWXcoAIZAQAKCRBX/5vb
+zDAQCeYJD/47XDMfEMg4g4spo7k92XsNkvjlAhWvvxd+kxow/V8c64WQXody32FZ
+HRSmK8dVjf9mIJMKkX4lpKpim7cQxsdTcorcdu+yk4TK+Wah61vsMhbSSllfHs1U
++q8jYMGnXTD+CY0aeTMrTfJcR2yN98jmNSWIL1qWmJ51RSTL6BQKb6eYtR7pWRkW
+uMR6oFC09Db4fiKa4zhH81+/t0g+6pMY391gSluaS+OfNqGORCo+/IdG5IDzh5Vp
+f19qXjd5oMsZQf6/P4b4XUktgl8RVRcNzdYGoXpcd8LpeHtEOh5I93ODmCwqd67b
+YDlhDNN7iGhPndPEF6P4CNO/rXLPCZyMhRyt1dflu0KPCr+0AgR31cdhH/p7eCyj
+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
+N5Ug
+=80Es
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/contrib/init/bitcoind.conf b/contrib/init/bitcoind.conf
index f9554eecde..de4ea0ed52 100644
--- a/contrib/init/bitcoind.conf
+++ b/contrib/init/bitcoind.conf
@@ -30,12 +30,12 @@ pre-start script
echo
echo "This password is security critical to securing wallets "
echo "and must not be the same as the rpcuser setting."
- echo "You can generate a suitable random password using the following"
+ echo "You can generate a suitable random password using the following "
echo "command from the shell:"
echo
echo "bash -c 'tr -dc a-zA-Z0-9 < /dev/urandom | head -c32 && echo'"
echo
- echo "It is also recommended that you also set alertnotify so you are "
+ echo "It is recommended that you also set alertnotify so you are "
echo "notified of problems:"
echo
echo "ie: alertnotify=echo %%s | mail -s \"Bitcoin Alert\"" \
diff --git a/contrib/init/bitcoind.openrc b/contrib/init/bitcoind.openrc
index eda1a96fb4..50377c0995 100644
--- a/contrib/init/bitcoind.openrc
+++ b/contrib/init/bitcoind.openrc
@@ -76,12 +76,12 @@ checkconfig()
eerror ""
eerror "This password is security critical to securing wallets "
eerror "and must not be the same as the rpcuser setting."
- eerror "You can generate a suitable random password using the following"
+ eerror "You can generate a suitable random password using the following "
eerror "command from the shell:"
eerror ""
eerror "bash -c 'tr -dc a-zA-Z0-9 < /dev/urandom | head -c32 && echo'"
eerror ""
- eerror "It is also recommended that you also set alertnotify so you are "
+ eerror "It is recommended that you also set alertnotify so you are "
eerror "notified of problems:"
eerror ""
eerror "ie: alertnotify=echo %%s | mail -s \"Bitcoin Alert\"" \
diff --git a/contrib/init/org.bitcoin.bitcoind.plist b/contrib/init/org.bitcoin.bitcoind.plist
index e94cd4466d..95b5342f1e 100644
--- a/contrib/init/org.bitcoin.bitcoind.plist
+++ b/contrib/init/org.bitcoin.bitcoind.plist
@@ -7,7 +7,6 @@
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/bitcoind</string>
- <string>-daemon</string>
</array>
<key>RunAtLoad</key>
<true/>
diff --git a/contrib/linearize/README.md b/contrib/linearize/README.md
index f2a2ab2768..2985106982 100644
--- a/contrib/linearize/README.md
+++ b/contrib/linearize/README.md
@@ -46,7 +46,7 @@ linearize-hashes.py.
(Default: `1000*1000*1000 bytes`)
* `netmagic`: Network magic number.
* `out_of_order_cache_sz`: If out-of-order blocks are being read, the block can
-be written to a cache so that the blockchain doesn't have to be seeked again.
+be written to a cache so that the blockchain doesn't have to be sought again.
This option specifies the cache size. (Default: `100*1000*1000 bytes`)
* `rev_hash_bytes`: If true, the block hash list written by linearize-hashes.py
will be byte-reversed when read by linearize-data.py. See the linearize-hashes
diff --git a/contrib/linearize/example-linearize.cfg b/contrib/linearize/example-linearize.cfg
index d019b06b6c..2315898bf1 100644
--- a/contrib/linearize/example-linearize.cfg
+++ b/contrib/linearize/example-linearize.cfg
@@ -3,9 +3,16 @@ rpcuser=someuser
rpcpassword=somepassword
#datadir=~/.bitcoin
host=127.0.0.1
+
+#mainnet default
port=8332
+
+#testnet default
#port=18332
+#regtest default
+#port=18443
+
# bootstrap.dat hashlist settings (linearize-hashes)
max_height=313000
diff --git a/contrib/linearize/linearize-hashes.py b/contrib/linearize/linearize-hashes.py
index db8eb7021e..58fec6dddc 100755
--- a/contrib/linearize/linearize-hashes.py
+++ b/contrib/linearize/linearize-hashes.py
@@ -87,7 +87,7 @@ def get_block_hashes(settings, max_blocks_per_call=10000):
for x,resp_obj in enumerate(reply):
if rpc.response_is_error(resp_obj):
print('JSON-RPC: error at height', height+x, ': ', resp_obj['error'], file=sys.stderr)
- exit(1)
+ sys.exit(1)
assert(resp_obj['id'] == x) # assume replies are in-sequence
if settings['rev_hash_bytes'] == 'true':
resp_obj['result'] = hex_switchEndian(resp_obj['result'])
@@ -140,7 +140,7 @@ if __name__ == '__main__':
if 'datadir' in settings and not use_userpass:
use_datadir = True
if not use_userpass and not use_datadir:
- print("Missing datadir or username and/or password in cfg file", file=stderr)
+ print("Missing datadir or username and/or password in cfg file", file=sys.stderr)
sys.exit(1)
settings['port'] = int(settings['port'])
diff --git a/contrib/rpm/README.md b/contrib/rpm/README.md
index e1fd0b317b..e1e0745fd6 100644
--- a/contrib/rpm/README.md
+++ b/contrib/rpm/README.md
@@ -84,16 +84,16 @@ If you would prefer not to build the GUI at all, you can pass the switch
The desktop and KDE meta files are created in the spec file itself with the
`cat` command. This is done to allow easy distribution specific changes without
-needing to use any patches. A specific time stamp is given to the files so that
+needing to use any patches. A specific timestamp is given to the files so that
it does not they do not appear to have been updated every time the package is
-built. If you do make changes to them, you probably should update time stamp
-assigned to them in the `touch` command that specifies the time stamp.
+built. If you do make changes to them, you probably should update timestamp
+assigned to them in the `touch` command that specifies the timestamp.
## SVG, PNG, and XPM Icons
The `bitcoin.svg` file is from the source listed as `Source100`. It is used as
the source for the PNG and XPM files. The generated PNG and XPM files are given
-the same time stamp as the source SVG file as a means of indicating they are
+the same timestamp as the source SVG file as a means of indicating they are
derived from it.
## Systemd
@@ -105,10 +105,10 @@ distributions that still receive vendor updates do in fact use systemd.
The files to control the service are created in the RPM spec file itself using
the `cat` command. This is done to make it easy to modify for other
distributions that may implement things differently without needing to patch
-source. A specific time stamp is given to the files so that they do not appear
+source. A specific timestamp is given to the files so that they do not appear
to have been updated every time the package is built. If you do make changes to
-them, you probably should update the time stamp assigned to them in the `touch`
-command that specifies the time stamp.
+them, you probably should update the timestamp assigned to them in the `touch`
+command that specifies the timestamp.
## SELinux
@@ -181,5 +181,5 @@ knows what they are getting when installing the GUI package.
As far as minor differences, I generally prefer to assign the file permissions
in the `%files` portion of an RPM spec file rather than specifying the
-permissions of a file during `%install` and other minor things like that that
+permissions of a file during `%install` and other minor things like that
are largely just cosmetic.
diff --git a/contrib/rpm/bitcoin.if b/contrib/rpm/bitcoin.if
index 2b096c24dc..b206866cc5 100644
--- a/contrib/rpm/bitcoin.if
+++ b/contrib/rpm/bitcoin.if
@@ -121,7 +121,7 @@ interface(`bitcoin_manage_lib_dirs',`
########################################
## <summary>
## All of the rules required to administrate
-## an bitcoin environment
+## a bitcoin environment
## </summary>
## <param name="domain">
## <summary>
diff --git a/contrib/rpm/bitcoin.spec b/contrib/rpm/bitcoin.spec
index cc54fcaf3d..7c4d933ee0 100644
--- a/contrib/rpm/bitcoin.spec
+++ b/contrib/rpm/bitcoin.spec
@@ -336,6 +336,8 @@ done
%{_sbindir}/semanage port -a -t bitcoin_port_t -p tcp 8333
%{_sbindir}/semanage port -a -t bitcoin_port_t -p tcp 18332
%{_sbindir}/semanage port -a -t bitcoin_port_t -p tcp 18333
+%{_sbindir}/semanage port -a -t bitcoin_port_t -p tcp 18443
+%{_sbindir}/semanage port -a -t bitcoin_port_t -p tcp 18444
%{_sbindir}/fixfiles -R bitcoin-server restore &> /dev/null || :
%{_sbindir}/restorecon -R %{_localstatedir}/lib/bitcoin || :
fi
@@ -355,6 +357,8 @@ if [ $1 -eq 0 ]; then
%{_sbindir}/semanage port -d -p tcp 8333
%{_sbindir}/semanage port -d -p tcp 18332
%{_sbindir}/semanage port -d -p tcp 18333
+ %{_sbindir}/semanage port -d -p tcp 18443
+ %{_sbindir}/semanage port -d -p tcp 18444
for selinuxvariant in %{selinux_variants}; do
%{_sbindir}/semodule -s ${selinuxvariant} -r bitcoin &> /dev/null || :
done
diff --git a/contrib/seeds/generate-seeds.py b/contrib/seeds/generate-seeds.py
index b0ac92ae03..28068a7523 100755
--- a/contrib/seeds/generate-seeds.py
+++ b/contrib/seeds/generate-seeds.py
@@ -114,7 +114,7 @@ def process_nodes(g, f, structname, defaultport):
def main():
if len(sys.argv)<2:
print(('Usage: %s <path_to_nodes_txt>' % sys.argv[0]), file=sys.stderr)
- exit(1)
+ sys.exit(1)
g = sys.stdout
indir = sys.argv[1]
g.write('#ifndef BITCOIN_CHAINPARAMSSEEDS_H\n')
diff --git a/contrib/seeds/makeseeds.py b/contrib/seeds/makeseeds.py
index 34f0f57671..877a7836ef 100755
--- a/contrib/seeds/makeseeds.py
+++ b/contrib/seeds/makeseeds.py
@@ -30,7 +30,7 @@ import collections
PATTERN_IPV4 = re.compile(r"^((\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})):(\d+)$")
PATTERN_IPV6 = re.compile(r"^\[([0-9a-z:]+)\]:(\d+)$")
PATTERN_ONION = re.compile(r"^([abcdefghijklmnopqrstuvwxyz234567]{16}\.onion):(\d+)$")
-PATTERN_AGENT = re.compile(r"^(/Satoshi:0.12.(0|1|99)/|/Satoshi:0.13.(0|1|2|99)/)$")
+PATTERN_AGENT = re.compile(r"^(/Satoshi:0.13.(1|2|99)/|/Satoshi:0.14.(0|1|2|99)/)$")
def parseline(line):
sline = line.split()
diff --git a/contrib/seeds/nodes_main.txt b/contrib/seeds/nodes_main.txt
index 0451771dae..60b34216cd 100644
--- a/contrib/seeds/nodes_main.txt
+++ b/contrib/seeds/nodes_main.txt
@@ -1,1168 +1,1450 @@
-2.7.8.12:8333
2.228.70.198:8333
-5.39.64.7:8333
-5.45.80.34:38333
-5.51.160.38:8333
-5.61.33.33:8333
-5.61.37.12:8333
-5.95.80.47:8333
-5.102.164.173:8333
-5.175.71.130:8333
-5.189.165.22:8333
-5.199.130.228:8333
-5.228.100.222:8333
+4.15.180.29:8333
+4.15.180.30:8333
+5.2.67.110:8333
+5.39.224.103:8333
+5.43.124.154:8333
+5.189.165.102:8333
+5.226.149.145:8333
+5.228.7.146:8333
+5.228.64.71:8333
+5.249.152.101:8333
+5.254.124.55:8333
5.255.64.231:8333
-13.93.6.133:8333
-18.85.34.10:8333
-18.241.0.63:8333
+5.255.90.234:8333
+14.192.8.27:21301
+18.62.3.86:8333
+18.85.35.80:8333
23.28.128.65:8333
-23.248.113.52:8333
-23.253.151.73:8333
-24.4.96.121:8333
-24.69.65.191:8333
-24.87.8.43:8333
-24.150.224.110:8333
+23.108.83.12:8333
+23.233.2.238:8333
+24.27.65.168:8333
+24.56.241.219:8333
+24.64.75.132:8333
+24.73.70.26:8333
+24.121.154.140:8333
+24.203.96.72:8333
+24.225.34.62:8333
24.227.69.146:8333
-27.0.235.33:8333
-31.170.106.203:8333
-31.184.197.96:8333
-31.214.240.56:8333
-37.1.202.134:8333
-37.18.74.232:8333
-37.34.48.17:8333
+24.232.136.119:8333
+31.16.123.235:8333
+31.19.205.53:8333
+31.132.136.35:8333
+31.184.234.85:8333
+31.211.102.161:8333
37.48.64.140:8333
37.97.141.116:8333
+37.120.160.12:8333
37.120.164.16:8333
-37.120.169.123:8333
-37.143.9.128:8333
-37.153.172.227:8333
-37.193.227.16:8333
-37.205.8.78:8333
-37.220.0.114:8333
-37.232.218.199:8333
-38.140.161.53:8333
-40.87.70.120:8333
-41.162.163.93:8333
-42.2.198.48:8333
-45.20.67.1:8333
-45.55.197.77:8333
+37.134.226.181:8333
+37.147.110.43:8333
+37.194.10.30:8333
+37.247.22.53:8333
+38.27.65.158:8333
+38.133.141.34:8333
+43.248.160.151:8333
+45.32.130.19:8333
+45.32.193.157:8333
+45.46.161.121:8333
45.56.97.63:8333
-45.58.38.162:8333
-45.63.1.33:8333
-45.79.2.70:8333
+45.116.178.79:8188
46.16.240.98:8333
-46.19.137.74:8333
-46.28.206.146:8333
-46.32.252.197:8333
+46.20.246.100:8333
+46.21.97.135:8333
+46.59.10.237:8333
46.59.13.59:8333
-46.59.39.195:8333
46.148.16.210:8333
-46.160.195.121:8333
-46.166.142.21:8333
-46.166.160.29:8330
+46.166.160.96:8333
46.188.44.20:8333
46.229.238.187:8333
46.231.16.149:8333
+47.88.35.181:8333
47.88.100.130:8333
-47.89.192.134:8333
-47.185.194.160:8333
-47.189.129.218:8333
-49.65.2.140:8333
-50.3.72.129:8333
-50.31.99.225:8333
-51.175.33.95:8333
-52.1.165.219:8333
-52.10.170.186:8333
-52.51.128.216:8333
-54.197.130.244:8333
-58.59.2.22:8333
-58.84.6.81:8333
-59.125.8.143:8333
-59.167.130.139:8333
+47.184.129.94:8333
+47.199.68.204:8333
+50.30.38.203:8333
+50.63.162.242:8333
+50.97.133.208:8333
+50.114.227.224:8333
+51.15.0.17:8333
+51.174.69.239:8333
+52.7.135.69:8333
+52.14.64.82:8333
+52.204.105.25:8333
+54.255.160.87:8333
61.47.2.20:8333
+61.125.131.55:8333
62.43.130.178:8333
-62.76.96.6:8333
+62.106.16.111:8333
62.107.200.30:8333
-62.133.15.58:8333
+62.109.20.99:8333
62.133.194.2:8333
62.133.194.156:8333
-62.138.1.95:8333
-62.216.238.3:8333
-62.238.34.125:8333
-63.137.40.207:8333
-63.231.96.109:8333
-64.78.240.150:8333
-64.83.225.146:8333
-64.137.236.68:8833
-64.156.193.120:8333
-66.79.160.82:8333
-66.91.230.231:8333
-66.135.128.121:8333
-66.172.10.4:8333
+62.176.6.94:8333
+62.182.169.222:8333
+62.205.132.245:8333
+62.216.238.133:8333
+63.231.239.212:8333
+64.34.231.140:8333
+64.203.102.86:8333
+64.233.245.39:8333
+65.183.76.73:8333
+66.96.199.166:8333
66.194.38.250:8333
66.194.38.253:8333
-66.215.34.26:8333
-66.240.237.155:8333
-67.205.96.108:8333
-67.205.128.5:8333
-67.219.233.140:8333
+66.196.12.63:8333
+67.215.6.34:8333
67.221.193.55:8333
-68.100.196.118:8333
+68.66.193.192:8333
+68.69.235.230:8333
+68.111.10.219:8333
+68.119.138.175:8333
68.132.193.222:8333
-68.168.118.234:8333
+68.194.42.76:8333
+68.235.41.204:8333
69.11.97.43:8333
-69.30.229.10:8333
-69.50.171.205:8333
-69.125.193.145:8333
-69.162.139.125:8333
-70.35.98.39:8333
+69.41.3.212:8333
+69.41.171.35:8333
+69.41.171.36:8333
+69.55.64.216:8333
+69.84.42.56:8333
+70.48.48.250:8333
70.112.32.29:8333
-71.126.181.146:8333
-72.180.32.105:8333
-73.226.64.145:8333
-74.83.140.242:8333
-74.84.128.158:9333
+70.250.74.20:8333
+71.93.161.162:8333
+71.198.0.126:8333
+72.5.167.41:8333
+72.224.11.103:8333
+73.72.160.213:8333
74.122.237.124:8333
-74.215.133.145:8333
-75.76.101.169:8333
-75.85.13.8:8333
-75.86.168.13:8333
-75.170.97.25:8333
-75.177.137.134:8333
+75.86.137.34:8333
+75.165.99.144:8333
+76.64.74.193:8333
76.76.227.136:8333
-77.53.136.6:8333
-77.110.11.52:8333
-78.25.32.206:8333
-78.34.8.120:8333
-78.46.32.99:8333
-78.56.9.214:8333
-78.56.229.177:8333
-78.129.237.245:8333
+76.173.161.44:8333
+76.178.22.44:8333
+77.47.137.27:8333
+77.77.46.250:8333
+77.91.193.152:8333
+77.95.226.194:8333
+77.120.246.254:8333
+77.163.136.136:8333
+77.203.13.57:8333
+77.236.37.214:8333
+77.239.37.12:8333
+77.247.179.44:8333
+78.34.14.52:8333
+78.109.163.153:8333
78.196.172.45:8333
79.132.230.144:8333
-79.169.35.235:8333
-79.172.194.219:8333
-80.64.65.87:8333
-80.89.137.115:8333
-80.93.36.173:8333
-80.101.167.100:8333
-80.114.34.158:8333
-80.127.136.50:8333
-80.188.139.82:8333
-80.222.39.77:8333
-80.223.105.69:8333
-80.229.151.187:8333
-80.240.129.221:8333
+79.160.2.105:8333
+80.82.77.138:8333
+80.100.203.151:8333
+80.147.68.237:8333
+80.237.240.102:8333
+81.2.246.127:8333
+81.7.7.86:8333
81.7.10.238:8333
-81.7.13.84:8333
-81.27.96.92:8333
-81.35.143.98:8333
-81.82.201.5:8333
+81.27.96.37:8333
81.83.96.5:8333
-81.169.227.36:8333
-81.171.2.119:8333
-81.171.38.130:8333
-81.175.255.118:8333
-81.207.8.49:8333
81.228.194.187:8333
-82.9.1.77:8333
-82.11.33.229:8333
-82.102.13.117:8333
-82.116.203.240:8333
-82.130.103.16:8333
-82.136.65.227:8333
-82.158.227.238:8333
-82.197.212.25:8333
+82.45.69.216:8333
+82.69.44.183:8333
+82.72.198.68:8333
+82.95.204.10:8333
+82.118.236.127:8333
+82.118.242.4:8333
+82.134.66.146:8333
+82.193.109.199:8333
+82.197.210.65:8333
82.199.102.10:8333
-82.200.204.41:8333
-82.200.204.119:8333
-82.221.105.223:8333
+82.200.205.30:8333
82.221.108.27:8333
-82.221.111.136:8333
+82.221.128.81:8333
82.221.139.97:8333
+82.232.202.246:8333
+83.60.64.252:8333
+83.61.8.228:8333
+83.128.41.48:8333
+83.128.111.69:8333
83.137.41.10:8333
-83.143.130.19:8333
-83.150.9.196:8333
+83.150.43.17:8333
83.169.2.43:8333
-83.217.203.130:8333
-83.249.88.52:8333
-84.26.162.92:8333
+83.174.209.87:8333
+83.255.43.163:8333
84.42.193.6:8333
-84.134.194.115:8333
-84.201.32.115:8333
-84.212.232.71:8333
-84.238.140.176:8333
-85.10.104.34:8333
+84.52.145.231:8333
+84.52.234.70:8333
+84.85.102.113:8333
+84.92.92.247:8333
+84.146.35.123:8333
+84.212.198.222:8333
+84.217.163.135:8333
+84.245.27.185:8333
+84.251.203.5:8333
85.21.144.226:8333
85.25.194.12:8333
-85.144.79.190:8333
-85.145.228.192:8333
-85.194.238.130:8333
-85.228.201.80:8333
-85.229.228.174:8333
-85.236.233.87:8333
-86.80.204.185:8333
-86.105.227.190:8333
-86.135.39.40:8333
-87.106.139.127:8333
+85.25.194.28:8333
+85.144.119.222:8333
+85.183.140.62:8333
+85.214.228.203:8333
+85.214.234.254:8333
+85.218.150.1:8333
+85.228.196.10:8333
+86.15.2.235:8333
+86.61.6.210:8333
+87.92.115.194:8333
87.120.8.5:8333
87.120.37.230:8333
+87.233.181.146:8333
87.239.101.102:8333
-87.243.197.82:8333
-88.112.112.173:8333
+88.87.78.126:8333
+88.98.198.130:8333
+88.98.225.214:8333
+88.99.58.194:8333
88.150.192.17:8333
-88.185.155.134:8333
-88.202.202.221:8333
-88.202.230.87:8333
-88.208.39.182:8333
+88.196.136.31:17556
+88.208.58.193:8333
+88.208.58.194:8333
+89.22.96.132:8333
+89.22.104.48:8333
+89.25.80.98:8333
89.34.99.41:8333
+89.142.195.112:8333
89.163.224.187:8333
-89.169.233.150:8333
-89.184.65.85:8333
-89.212.91.219:8333
-89.249.178.36:8333
+89.163.224.195:8333
+89.238.79.235:8333
+90.46.240.214:8333
+90.65.232.129:8333
+90.71.117.90:8333
90.149.38.172:8333
-91.65.97.157:8333
-91.107.64.143:8333
-91.114.35.107:8333
+90.156.97.145:8333
+90.177.48.104:8333
+91.106.194.97:8333
91.135.0.187:8333
-91.145.110.95:8333
-91.157.38.151:8333
+91.150.189.155:8333
+91.185.198.216:8333
+91.196.11.45:8333
91.197.44.133:8333
-91.205.176.54:8333
-91.206.203.10:8333
-91.206.203.18:8333
-91.215.35.130:8333
-91.219.239.159:8333
-91.223.133.2:8333
-91.223.133.40:8333
+91.224.0.227:8333
91.226.10.90:8333
+91.228.45.130:8333
+91.229.77.239:8333
+91.238.100.249:8333
91.240.141.169:8333
92.27.7.209:8333
-92.89.67.207:8333
-92.221.201.138:8333
-93.95.187.122:8333
-93.103.73.187:8333
+92.54.16.135:8333
+93.89.84.93:8333
+93.100.51.48:8333
+93.100.76.151:8333
+93.104.214.235:8333
+93.115.86.246:8333
93.123.80.47:8333
+93.174.88.211:8333
93.188.224.253:8333
93.190.69.242:8333
-94.19.12.244:8333
-94.156.128.116:8333
-94.177.171.73:8333
+94.74.81.93:8333
+94.156.35.8:8333
+94.176.237.241:8333
94.181.44.104:8333
-94.237.26.173:8333
-94.242.229.158:8333
-94.255.128.98:8333
-95.79.35.50:8333
-95.91.41.39:8333
-95.110.234.93:8333
-95.128.48.209:8333
+94.227.43.171:8333
+95.79.102.208:8333
+95.79.102.209:8333
+95.154.237.24:8333
+95.183.48.62:8333
95.183.48.71:8333
-96.23.67.85:8333
-97.64.177.10:8333
-97.104.201.95:8333
-98.29.197.149:8333
-98.169.2.107:8333
-99.232.48.72:8333
-101.100.141.55:8333
-103.7.32.40:8333
-103.53.225.69:8333
-103.249.106.74:8333
-104.128.224.13:8333
-104.128.228.252:8333
-104.155.1.158:8333
-104.168.128.50:8333
-104.199.160.228:8333
-104.204.109.11:8333
-104.219.251.118:8333
-104.223.3.129:8333
-104.223.3.219:8333
-104.238.130.182:8333
-104.245.99.227:8333
-106.38.234.89:8333
-106.104.134.218:8333
-107.136.6.71:8333
+95.213.161.2:8333
+95.213.201.94:8333
+96.20.227.39:8333
+96.28.41.91:8333
+98.127.130.17:8333
+100.36.48.101:8333
+101.0.81.42:8333
+101.0.81.43:8333
+103.11.64.46:8333
+103.24.244.69:8333
+103.47.210.50:8333
+103.76.41.169:8333
+103.80.168.57:8333
+103.203.51.186:8333
+103.224.118.79:8333
+103.250.4.74:8333
+104.192.170.202:8333
+104.196.0.99:8333
+104.199.192.85:8333
+104.219.251.46:8333
+104.223.108.33:8333
+104.237.2.189:8333
+104.247.230.28:8333
107.150.45.210:8333
-107.151.144.103:8333
-107.170.44.99:8333
-107.181.137.133:8333
-107.191.102.13:8333
-108.58.252.82:8333
-108.59.9.167:8333
+107.174.34.77:8333
+107.174.34.78:8333
+107.180.71.47:8333
108.59.12.163:8333
-108.162.106.215:8333
-108.168.133.164:8333
-108.173.202.101:8333
-108.180.110.190:8333
-109.29.75.40:8333
-109.120.194.136:8333
-109.230.230.88:8333
-109.235.67.115:8333
-109.235.69.120:8333
-109.236.90.199:8333
+108.168.37.13:8333
+108.175.3.18:8333
+108.234.193.106:8333
+109.9.173.13:8333
+109.101.220.151:8333
+109.172.104.119:8333
+109.195.193.138:8333
+109.206.177.21:8333
+109.226.35.28:8333
109.255.0.107:8333
-110.10.130.12:8333
-110.10.176.94:8333
-110.132.172.251:8333
-111.90.158.17:8333
+113.29.183.143:8333
+114.145.97.73:8333
115.66.205.171:8333
-116.31.123.139:8333
-118.192.48.46:8333
-118.193.164.98:8333
-119.29.156.231:8333
-119.63.44.133:19980
-119.81.99.27:8333
-119.106.12.169:8333
-119.147.137.155:19980
-119.185.1.182:8333
-120.55.193.136:8333
-121.254.173.23:8333
+118.67.201.40:8333
+118.194.226.168:8333
+119.28.70.144:8333
+120.24.166.73:9998
+120.76.244.201:10022
+121.82.4.232:8333
121.254.173.40:8333
-123.56.129.45:8333
123.203.163.128:8333
-123.206.32.198:8333
-124.189.160.221:8333
-124.189.192.232:8333
-128.140.224.162:8333
-128.199.68.205:8333
-130.234.207.115:8333
-131.113.41.123:8333
-131.114.72.104:8333
-132.204.108.155:8333
-134.119.13.230:8333
-134.213.133.206:8333
-134.213.133.207:8333
-135.23.5.3:8333
-137.74.0.66:8333
-138.68.1.45:8333
-138.68.2.194:8333
+124.171.70.45:8333
+125.63.57.7:8333
+125.128.35.41:8333
+128.208.244.124:8333
+128.230.208.73:8333
+131.114.10.233:8333
+131.114.10.235:8333
+132.239.36.105:8333
+134.213.214.233:8333
+136.61.238.121:8333
+136.62.86.140:8333
+136.144.128.49:8333
+137.48.144.52:8333
+137.116.160.176:8333
+137.117.193.113:8333
+138.19.79.208:8333
138.68.64.19:8333
-138.68.64.28:8333
-139.59.42.248:8333
-139.220.240.153:8333
-140.112.107.118:8333
-140.186.224.112:8333
-141.52.64.141:8333
-142.68.237.107:8333
-142.217.12.106:8333
-146.60.204.92:8333
-146.185.161.209:8333
+139.59.96.16:8333
+139.162.160.232:8333
+141.136.115.230:8333
+142.59.232.111:8333
+142.111.2.74:8333
+142.162.128.23:8333
+143.107.116.5:8333
+143.229.22.74:8333
+143.229.36.71:8333
+144.2.105.60:8333
+144.76.224.214:8333
+146.185.19.30:8333
+147.32.30.25:8333
+147.229.13.210:8333
148.103.7.119:8333
-149.210.133.244:8333
+150.101.114.194:8333
150.229.0.143:8333
-151.231.238.25:8333
-151.248.160.227:8333
-153.230.228.15:8333
-155.133.43.249:8333
-158.58.238.145:8333
-158.109.79.13:34821
-159.203.70.208:8333
+154.66.207.126:8333
+158.129.212.236:8333
+158.129.212.251:8333
160.16.206.31:8333
162.209.1.233:8333
162.209.4.125:8333
-162.216.192.231:8333
-162.243.100.111:8333
-162.246.11.194:8333
-162.248.102.117:8333
-162.252.46.83:8333
-163.172.33.78:8333
-163.172.194.30:8333
-169.229.198.106:8333
+162.220.246.225:8333
+163.172.218.186:8333
+166.230.70.145:8333
+168.235.74.45:8333
+169.44.34.88:8333
170.75.195.168:8333
-172.103.205.197:8333
-172.245.225.126:8333
-173.179.37.8:8333
-173.208.203.74:8333
-173.252.46.16:8333
-174.117.141.124:8333
-175.126.38.158:8333
-175.126.38.177:8333
-175.139.106.119:8333
-175.140.232.66:8333
-176.9.117.100:8333
-176.36.33.121:8333
+172.112.2.67:8333
+173.94.164.38:8333
+173.183.232.109:8333
+173.208.176.122:8333
+173.212.194.114:8333
+173.232.228.146:8333
+175.126.124.92:8333
+175.145.109.51:8333
+176.24.198.205:8333
+176.36.37.62:8333
176.36.99.222:8333
-176.56.227.36:8333
-176.100.100.206:8333
176.106.144.183:8333
-176.123.7.148:8333
-176.126.167.10:8333
-176.223.201.198:8333
-178.62.68.62:8333
-178.62.102.56:8333
-178.62.203.185:8333
-178.124.197.101:8333
+177.33.1.40:8333
+178.162.214.225:8333
+178.164.109.83:8333
178.170.138.202:8333
-178.175.129.18:8333
-178.188.47.62:8333
-178.199.240.22:8333
+178.175.136.122:8333
178.218.209.162:8333
-178.237.35.34:8333
-178.238.224.242:8333
+178.254.2.64:8333
178.254.34.144:8333
-178.254.34.161:8333
-179.43.183.2:8333
+178.255.41.21:8333
+178.255.144.163:8333
+180.181.208.42:8333
180.200.128.58:8333
-182.93.34.130:8333
-185.8.238.197:8333
-185.11.139.172:8333
+180.235.50.14:8333
+181.215.148.154:8333
+184.64.13.43:8333
+184.94.164.170:8333
+184.152.107.251:8333
+184.182.233.206:8333
+185.4.24.199:8333
+185.20.99.49:8333
185.24.97.11:8333
-185.24.233.100:8333
+185.25.48.27:8333
185.25.48.71:8333
-185.25.48.114:8333
+185.26.196.249:8333
185.28.76.179:8333
-185.70.105.152:8339
-185.77.128.69:8333
-185.77.128.241:8333
-185.86.79.87:8333
-185.89.102.2:3333
-185.89.102.53:3333
-185.109.144.155:8333
-185.117.75.50:8333
+185.35.139.250:8333
+185.41.113.69:8333
+185.50.213.123:8333
+185.50.213.124:8333
+185.50.232.114:8333
+185.51.192.40:8333
+185.53.129.244:8333
+185.71.177.100:8333
+185.77.129.176:8333
+185.82.201.51:8333
185.121.173.223:8333
-185.128.41.157:8333
-185.130.226.106:8333
-185.145.130.76:8333
-188.63.192.104:8333
+185.140.252.253:8333
+185.145.129.184:8333
+185.145.130.163:8333
+185.154.156.50:8333
+185.162.124.69:8333
+185.170.42.2:8333
+186.149.197.96:8333
+188.65.212.138:8333
+188.65.213.48:8333
+188.93.209.192:8333
+188.113.79.45:8333
+188.113.84.116:8333
188.113.164.231:8333
-188.166.229.112:8333
-188.214.128.77:8333
-190.10.8.211:8333
-190.81.160.184:8333
-190.111.231.19:8333
-192.131.44.93:8333
+188.122.16.153:8333
+188.165.224.28:8333
+188.175.239.227:8333
+188.214.128.18:8333
+188.227.64.19:8333
+188.253.2.125:8333
+189.45.203.166:8333
+190.184.198.34:8333
+192.151.145.250:8333
192.206.202.6:8333
-192.227.245.133:8333
-192.241.74.123:8333
-192.241.74.126:8333
-192.254.71.222:8333
-193.10.64.85:8333
-193.46.80.101:8333
+192.228.101.157:8333
+193.2.76.41:8333
+193.27.209.100:8333
+193.33.237.187:8333
+193.46.83.17:8333
193.49.43.219:8333
-193.93.79.215:8333
-193.183.99.46:8333
-193.234.224.195:8333
-193.239.80.155:8333
-194.63.140.208:8333
-194.87.1.232:8333
-194.187.227.18:8333
-194.247.12.136:8333
-195.91.176.86:8333
-196.28.98.20:8333
-198.44.249.35:8333
-198.84.172.252:8333
-198.204.224.106:8333
-198.211.97.46:8333
-199.66.64.198:8333
-199.101.100.58:8333
-199.101.100.59:8333
+194.24.182.27:8333
+194.28.206.201:8333
+194.63.143.197:8333
+194.71.109.91:8333
+194.79.8.36:8333
+194.135.93.38:8333
+194.186.160.253:8333
+195.9.140.134:8333
+195.39.206.29:8333
+195.67.36.89:8333
+195.169.99.82:8333
+195.214.214.253:8333
+195.223.71.147:8333
+198.37.118.11:8333
+198.54.113.125:8333
+198.101.12.139:8333
+198.143.12.105:8333
+198.251.83.19:8333
199.127.224.50:8333
-200.46.241.71:8333
+200.12.138.146:8333
200.116.98.185:8333
-203.9.225.13:8333
-203.177.142.37:8333
-205.200.247.149:8333
-205.209.131.150:13838
-206.53.64.74:8333
-206.72.192.69:8333
-206.123.112.180:8333
-208.66.208.153:8333
-208.68.174.76:8333
+200.122.128.130:8333
+202.29.6.48:8333
+202.133.115.115:8333
+203.59.17.160:8333
+204.15.11.4:8333
+204.111.241.195:8333
+205.251.85.151:8333
+207.244.70.40:8333
+207.254.50.72:8333
+208.76.93.83:8333
208.107.97.242:8333
-208.111.48.132:8333
+208.110.73.107:8333
208.118.235.190:8333
-209.6.205.126:8333
-209.40.96.121:8333
-209.58.130.137:8333
209.73.142.226:8333
-209.90.224.4:8333
-209.126.69.243:8333
-209.126.108.91:8333
-209.195.4.18:8333
+209.81.9.223:8333
+209.126.107.166:8333
+209.177.86.19:8333
209.250.6.190:8333
-210.54.37.225:8333
+210.1.219.155:8333
+210.211.109.165:8333
210.223.3.44:8333
-211.149.234.109:8333
+211.21.129.69:8333
+212.50.98.161:8333
212.51.140.183:8333
+212.56.108.81:8333
+212.83.35.173:8333
212.90.179.206:8333
212.93.226.90:8333
212.110.171.118:8333
-212.202.132.17:8333
+213.5.36.58:8333
+213.5.181.205:8333
+213.17.16.251:8333
213.91.205.134:8333
-213.165.68.218:8333
-213.196.200.213:8333
+213.91.211.17:8333
+213.155.3.216:8333
+213.168.13.151:8333
+213.186.170.109:8334
+213.222.208.150:8333
+216.32.213.112:8333
216.59.4.212:8333
-216.74.32.109:8333
-216.158.225.70:8333
-216.164.138.13:8333
-216.167.236.247:8333
+216.126.193.163:8333
216.197.79.74:8333
-217.11.225.189:8333
+216.218.147.140:8333
+216.227.39.84:8333
+216.245.206.181:8333
+216.249.92.230:8333
217.12.199.207:8333
-217.20.130.72:8333
-217.23.6.148:8333
-217.23.140.103:8333
-217.28.96.180:8333
+217.23.2.177:8333
+217.23.5.68:8333
+217.28.194.2:8333
217.35.130.42:8333
-217.111.66.79:8333
-217.158.9.102:8333
+217.64.47.138:8333
+217.101.72.242:8333
+217.145.81.229:8333
217.168.143.169:8333
-217.209.32.219:8333
-218.161.33.165:8333
-221.121.144.138:8333
-[2001:0:4137:9e76:2048:3a84:bb91:e846]:8333
-[2001:0:4137:9e76:2066:e9e:b489:f8b8]:8333
-[2001:0:4137:9e76:3854:1211:b5ac:a96b]:8333
-[2001:0:4137:9e76:4e3:1f66:cd4c:829f]:8333
-[2001:0:4137:9e76:ad:1f4:9ea9:fa2e]:8333
-[2001:0:4137:9e76:e5:baa:b66f:f418]:8333
-[2001:0:53aa:64c:20a2:59c4:ad22:93ea]:8333
+217.169.7.111:8333
+217.182.192.7:8333
+219.88.232.229:8333
+219.113.244.52:8333
+220.130.128.58:8333
+220.244.225.239:8333
+221.141.3.12:8333
+222.166.176.99:8333
+223.252.173.147:8333
+[2001:0:4137:9e76:1025:4e5:acb0:22cd]:8333
+[2001:0:4137:9e76:1078:18a6:5d2c:2461]:8333
+[2001:0:4137:9e76:10ec:236a:bd3b:f3c0]:8333
+[2001:0:4137:9e76:186d:3f17:b7ad:95cf]:8333
+[2001:0:4137:9e76:1870:242:ac03:aaf9]:8333
+[2001:0:4137:9e76:18a6:1102:2abf:eb70]:8333
+[2001:0:4137:9e76:1ce5:248c:4ff5:2b1d]:8333
+[2001:0:4137:9e76:200f:156a:bc77:3acd]:8333
+[2001:0:4137:9e76:2418:19d1:cddc:b1af]:8333
+[2001:0:4137:9e76:2857:3d78:aaf8:eb28]:8333
+[2001:0:4137:9e76:28b2:1b84:64fb:2d6a]:8333
+[2001:0:4137:9e76:2c70:d51:d046:1209]:8333
+[2001:0:4137:9e76:2cac:2fcf:46bb:be0d]:8333
+[2001:0:4137:9e76:305e:20ee:a94f:6f69]:8333
+[2001:0:4137:9e76:30cd:849:adfe:6e67]:8333
+[2001:0:4137:9e76:345b:f12:ae1e:2948]:8333
+[2001:0:4137:9e76:3c40:146e:9741:5a3a]:8333
+[2001:0:4137:9e76:3c9e:3c3e:9d6e:7340]:8333
+[2001:0:4137:9e76:499:29a8:d047:7ea1]:8333
+[2001:0:4137:9e76:51:24:81b2:59e3]:8333
+[2001:0:4137:9e76:889:2d7c:b61b:bf0d]:8333
+[2001:0:4137:9e76:c9f:379c:add2:c938]:8333
+[2001:0:4137:9e76:cd6:2eb4:b82b:addb]:8333
+[2001:0:4137:9e76:cf0:2e3a:b29d:6207]:8333
+[2001:0:53aa:64c:1485:fbf9:a798:1ffe]:8333
[2001:0:53aa:64c:59:617f:a10d:e0]:8333
-[2001:0:5ef5:79fb:200f:3ae5:3cbc:74c9]:8333
-[2001:0:5ef5:79fb:38f2:13b4:b208:5604]:8333
-[2001:0:5ef5:79fd:200b:22a7:cc50:f52d]:8333
-[2001:0:5ef5:79fd:24ef:1aef:a994:303d]:8333
-[2001:0:5ef5:79fd:24fc:b5d:ad4f:4db2]:8333
-[2001:0:5ef5:79fd:28bf:2d23:e02e:c3ef]:8333
-[2001:0:5ef5:79fd:3cd0:3c2e:da44:a759]:8333
-[2001:0:5ef5:79fd:87e:fd7:b1c2:1b4]:8333
-[2001:0:9d38:6ab8:18db:3bda:ab90:e81e]:8333
-[2001:0:9d38:6ab8:4e7:1660:862f:a6d7]:8333
-[2001:0:9d38:6ab8:6:2b:5074:9588]:8333
-[2001:0:9d38:6abd:10f8:a7d7:bb90:f524]:8333
-[2001:13d8:1c01:1000::11]:8333
-[2001:15c0:65ff:610::2]:8333
-[2001:1608:10:156:ae::4adb]:8333
-[2001:1620:b1b:8888:20d:b9ff:fe41:6710]:8333
-[2001:1620:b1b:face:20d:b9ff:fe41:6710]:8333
-[2001:1620:f00:282::2]:8333
-[2001:1620:f00:8282::1]:8333
-[2001:1680:101:1ae::1]:8333
-[2001:16d8:ff00:85de:20c:29ff:fe52:9594]:8333
-[2001:19f0:4400:434d:5400:ff:fe42:2678]:8333
+[2001:0:5ef5:79fb:1020:2cd0:4750:eb12]:8333
+[2001:0:5ef5:79fb:1036:1d50:3881:6930]:8333
+[2001:0:5ef5:79fb:10a4:27d8:9c0a:cfa9]:8333
+[2001:0:5ef5:79fb:10ae:5a8:524b:dcc4]:8333
+[2001:0:5ef5:79fb:1892:3e3a:3f74:affa]:8333
+[2001:0:5ef5:79fb:1c95:1a60:d1f5:215b]:8333
+[2001:0:5ef5:79fb:200b:16ef:b9cf:9860]:8333
+[2001:0:5ef5:79fb:28e4:fbff:3237:992]:8333
+[2001:0:5ef5:79fb:2ce8:1d9e:b3bf:b53e]:8333
+[2001:0:5ef5:79fb:300a:2e20:4750:eb12]:8333
+[2001:0:5ef5:79fb:30a2:1ad9:5324:836a]:8333
+[2001:0:5ef5:79fb:3409:1996:bcac:241f]:8333
+[2001:0:5ef5:79fb:344b:2bd4:bb3e:e26]:8333
+[2001:0:5ef5:79fb:34b3:11db:e7da:d461]:8333
+[2001:0:5ef5:79fb:3839:2e0c:ba30:288e]:8333
+[2001:0:5ef5:79fb:3880:ef4:b5f0:ee4d]:8333
+[2001:0:5ef5:79fb:389f:52:9c0c:1f41]:8333
+[2001:0:5ef5:79fb:3c73:304a:9d8b:99d5]:8333
+[2001:0:5ef5:79fb:3cac:33e4:39ca:38c]:8333
+[2001:0:5ef5:79fb:6f:3667:5398:538f]:8333
+[2001:0:5ef5:79fb:88c:3e6:9454:3331]:8333
+[2001:0:5ef5:79fb:89:3b55:9fcc:8e66]:8333
+[2001:0:5ef5:79fb:c9b:3d65:bdf4:5d58]:8333
+[2001:0:5ef5:79fb:cb7:8cc:b8ee:6806]:8333
+[2001:0:5ef5:79fd:24f6:37b5:b9d2:2aa7]:8333
+[2001:0:5ef5:79fd:3c63:82e:aabc:bd39]:8333
+[2001:0:5ef5:79fd:3cf5:2eb7:c966:561d]:8333
+[2001:0:5ef5:79fd:cf4:28e2:aabd:b766]:8333
+[2001:0:9d38:6ab8:10f6:453:3ca4:1a8e]:8333
+[2001:0:9d38:6ab8:14dd:298b:431c:bfec]:8333
+[2001:0:9d38:6ab8:3051:1561:b62d:73a5]:8333
+[2001:0:9d38:6ab8:3467:ffa:b612:e9c6]:8333
+[2001:0:9d38:6ab8:8e8:1e26:e8e3:eed7]:8333
+[2001:0:9d38:6ab8:c82:37b3:47ee:3ae2]:8333
+[2001:0:9d38:6abd:1052:3cd8:a89b:e67]:8333
+[2001:0:9d38:6abd:144d:23f3:abcb:8bcb]:8333
+[2001:0:9d38:6abd:1c2e:31df:adf1:e616]:8333
+[2001:0:9d38:6abd:1c41:213b:facc:9c6b]:8333
+[2001:0:9d38:6abd:2093:12b5:8cbf:4f57]:8333
+[2001:0:9d38:6abd:243a:2394:fd91:712c]:8333
+[2001:0:9d38:6abd:2833:9f8:c94c:6881]:8333
+[2001:0:9d38:6abd:2c84:29d3:ae5a:f6f0]:8333
+[2001:0:9d38:6abd:2ce4:d50:cb22:3672]:8333
+[2001:0:9d38:6abd:3824:816:c30d:e9d4]:8333
+[2001:0:9d38:6abd:389a:24e9:cb5c:a1cd]:8333
+[2001:0:9d38:6abd:38bd:88f:2193:4932]:8333
+[2001:0:9d38:6abd:3c4f:cb1:d65b:d775]:8333
+[2001:0:9d38:6abd:3c51:280b:b1e9:ffd]:8333
+[2001:0:9d38:6abd:3c5a:2e2:2193:4932]:8333
+[2001:0:9d38:6abd:3c5e:3ebf:3dc0:703a]:8333
+[2001:0:9d38:6abd:4c9:12fc:d1d9:dc21]:8333
+[2001:0:9d38:6abd:6e:34e7:d0a7:6772]:8333
+[2001:0:9d38:6abd:8de:1f29:2aea:f96f]:8333
+[2001:0:9d38:6abd:c5f:2674:a467:787c]:8333
+[2001:0:9d38:6abd:cc0:23a4:ad7c:c998]:8333
+[2001:0:9d38:78cf:20c0:2097:d188:9c3b]:8333
+[2001:0:9d38:78cf:2420:dda:4ff6:8794]:8333
+[2001:0:9d38:78cf:2892:fcb:26b2:22ac]:8333
+[2001:0:9d38:78cf:3020:1ad7:26b2:22ac]:8333
+[2001:0:9d38:78cf:30ae:211b:e717:7788]:8333
+[2001:0:9d38:78cf:30d0:6edd:a418:a9e9]:8333
+[2001:0:9d38:78cf:30d9:3278:b004:65a7]:8333
+[2001:0:9d38:78cf:387a:17d5:dacb:bdf1]:8333
+[2001:0:9d38:78cf:3c38:c41:433c:7b87]:8333
+[2001:0:9d38:78cf:467:193:a8b0:a122]:8333
+[2001:0:9d38:78cf:c65:fb96:97d2:a9b0]:8333
+[2001:0:9d38:78cf:c9f:2633:d169:9999]:8333
+[2001:0:9d38:78cf:ce2:aba:d120:90db]:8333
+[2001:0:9d38:90d7:105d:26f2:a241:7339]:8333
+[2001:0:9d38:90d7:1062:3f95:e065:fc21]:8333
+[2001:0:9d38:90d7:10a6:19f6:ab95:ebcb]:8333
+[2001:0:9d38:90d7:14e2:22cb:738f:9489]:8333
+[2001:0:9d38:90d7:18fb:3da9:893d:1d57]:8333
+[2001:0:9d38:90d7:1cc3:2534:e020:53fa]:8333
+[2001:0:9d38:90d7:206d:2b34:d0cb:9de8]:8333
+[2001:0:9d38:90d7:20cb:2cb:b9a7:ca5e]:8333
+[2001:0:9d38:90d7:245c:2753:4382:704b]:8333
+[2001:0:9d38:90d7:24d6:225f:793b:bf5]:8333
+[2001:0:9d38:90d7:24da:8f0:bbf9:9c93]:8333
+[2001:0:9d38:90d7:28a2:107b:438e:b08d]:8333
+[2001:0:9d38:90d7:2c16:d58:b381:b61]:8333
+[2001:0:9d38:90d7:2c68:3068:cb59:3be7]:8333
+[2001:0:9d38:90d7:2c90:3855:b94f:c926]:8333
+[2001:0:9d38:90d7:2ca2:3592:c111:dd82]:8333
+[2001:0:9d38:90d7:2cce:1f6e:b381:8605]:8333
+[2001:0:9d38:90d7:3435:3915:2bcc:6cc7]:8333
+[2001:0:9d38:90d7:3438:2b9f:ad57:a721]:8333
+[2001:0:9d38:90d7:3474:1df1:e732:e5e3]:8333
+[2001:0:9d38:90d7:38c4:37af:ab0a:f5ef]:8333
+[2001:0:9d38:90d7:3a:39fd:a43b:5591]:8333
+[2001:0:9d38:90d7:3c9d:2a45:d537:3bd6]:8333
+[2001:0:9d38:90d7:3cfb:2cf5:5254:4d1e]:8333
+[2001:0:9d38:90d7:43f:337:adb4:6310]:8333
+[2001:0:9d38:90d7:493:995:d2e9:39be]:8333
+[2001:0:9d38:90d7:5b:ce3:b275:92ab]:8333
+[2001:0:9d38:90d7:8a8:59d:d0cb:d585]:8333
+[2001:0:9d38:90d7:c8e:1ba0:c5a9:dace]:8333
+[2001:0:9d38:90d7:cdb:365f:2302:f729]:8333
+[2001:0:9d38:90d7:cf5:222e:893e:716c]:8333
+[2001:0:9d38:90d7:d6:1085:b8dd:41c2]:8333
+[2001:0:9d38:953c:101a:23b3:6b98:f888]:8333
+[2001:0:9d38:953c:1805:f38:3eb2:2121]:8333
+[2001:0:9d38:953c:1858:16f9:3833:da19]:8333
+[2001:0:9d38:953c:18ea:2735:e73d:adc5]:8333
+[2001:0:9d38:953c:1c44:2b70:9de7:a7cc]:8333
+[2001:0:9d38:953c:200a:3f95:bb7c:c09f]:8333
+[2001:0:9d38:953c:200c:3473:b85d:ddd]:8333
+[2001:0:9d38:953c:200f:5a0:47c6:5507]:8333
+[2001:0:9d38:953c:2097:204a:47c5:5881]:8333
+[2001:0:9d38:953c:248f:24cd:aaf5:dee3]:8333
+[2001:0:9d38:953c:287d:168e:3caf:47af]:8333
+[2001:0:9d38:953c:28c1:58d:b721:94c1]:8333
+[2001:0:9d38:953c:2c31:30a3:39d3:528]:8188
+[2001:0:9d38:953c:2c3d:309b:d2db:8288]:8333
+[2001:0:9d38:953c:2c47:1b36:52c1:3c73]:8333
+[2001:0:9d38:953c:304a:10e1:b739:822a]:8333
+[2001:0:9d38:953c:30a3:29fd:33f6:eaab]:8333
+[2001:0:9d38:953c:3427:859b:b525:1069]:8333
+[2001:0:9d38:953c:3459:2541:3651:d675]:8333
+[2001:0:9d38:953c:4f5:9c88:af91:d3d3]:8333
+[2001:0:9d38:953c:cd1:1d54:b80a:42f4]:8333
+[2001:0:9d38:953c:cfa:37e6:9d8e:7474]:8333
+[2001:13d8:1c01:2000:2470::1]:8333
+[2001:1470:fffd:202c:225:90ff:fe8f:5f62]:8333
+[2001:14ba:200:0:543c:42ce:a48b:b0d0]:8333
+[2001:14ba:2fc:700:41b2:df51:efd8:f581]:8333
[2001:19f0:5000:8c8b:5400:ff:fe1f:c023]:8333
-[2001:19f0:5000:8ce6:5400:ff:fe1b:24a9]:8333
-[2001:19f0:5:314:5400:ff:fe2c:42e8]:8333
-[2001:19f0:5:51b:5400:ff:fe49:fe5b]:8333
+[2001:19f0:5:749:5400:ff:fe71:c3fc]:8333
[2001:19f0:5:bc:5400:ff:fe3b:9339]:8333
-[2001:1af8:4020:a020:5::]:8333
+[2001:19f0:7402:42c:5400:ff:fe6c:b9b8]:8333
+[2001:1af8:4010:a08f:f811:e5f0:3f63:e753]:8333
+[2001:1af8:4010:a094:3333::8c38]:8333
+[2001:1af8:4070:a016:3333::5afb]:8333
+[2001:1af8:4700:a071:4444::e26e]:8333
[2001:1bc8:1a0:590e:2e0:f4ff:fe16:3a39]:8333
-[2001:1c04:1401:8f00:f4fe:4fff:fe0c:df40]:8333
+[2001:2040:77::89]:8333
+[2001:288:1001:107:294e:5581:74bd:42f9]:8333
+[2001:3c8:c103:a001::48]:8333
[2001:4128:6135:10:20c:29ff:fe69:9e81]:8333
[2001:4128:6135:2010:21e:bff:fee8:a3c0]:8333
[2001:4128:6135:e001:5054:ff:fe37:e9eb]:8333
-[2001:41d0:1000:1024::]:8333
-[2001:41d0:1000:1433::]:8333
-[2001:41d0:1004:22ae::]:8333
-[2001:41d0:1004:2996::]:8333
-[2001:41d0:1008:11e0::1a5c:6d9d]:8333
-[2001:41d0:1008:11e0::b74:baf7]:8333
-[2001:41d0:1008:237a::]:8333
+[2001:4178:6:1427:62:116:188:85]:8333
+[2001:41d0:1004:20f0::]:8333
[2001:41d0:1008:2752::]:8333
-[2001:41d0:1008:494::]:8333
-[2001:41d0:1:45d8::1]:8333
-[2001:41d0:1:5630::1]:8333
+[2001:41d0:1:4722::1]:8333
[2001:41d0:1:6f57::1]:8333
-[2001:41d0:1:801e::1]:8333
-[2001:41d0:1:8852::1]:8333
+[2001:41d0:1:7353::1]:8333
+[2001:41d0:1:7469::1]:8333
+[2001:41d0:1:7d09::1]:8333
[2001:41d0:1:8b26::1]:8333
-[2001:41d0:1:a5b8::1]:8333
-[2001:41d0:1:b26b::1]:8333
-[2001:41d0:1:c139::1]:8333
-[2001:41d0:1:c8d7::1]:8333
+[2001:41d0:1:c129::1]:8333
[2001:41d0:1:d227::]:8333
-[2001:41d0:1:dbc4::1]:8333
-[2001:41d0:1:dc5d::1]:8333
[2001:41d0:1:e13b::1]:8333
-[2001:41d0:1:ef5b::1]:8333
+[2001:41d0:1:e623::1]:8333
[2001:41d0:2:16be::1]:8333
[2001:41d0:2:203c::1]:8333
-[2001:41d0:2:38c5::1]:8333
-[2001:41d0:2:519::]:8333
+[2001:41d0:2:3242::]:8333
+[2001:41d0:2:8a0f::]:8333
+[2001:41d0:2:8c65::]:8333
+[2001:41d0:2:8d13::]:8333
+[2001:41d0:2:9459::]:8333
+[2001:41d0:2:950a:ffff:ffff:0:3]:8333
[2001:41d0:2:9c94::1]:8333
-[2001:41d0:2:b792::]:8333
+[2001:41d0:2:a212::]:8333
+[2001:41d0:2:a232::]:8333
+[2001:41d0:2:ab1c::]:8333
[2001:41d0:2:bf2a::]:8333
[2001:41d0:2:c793::]:8333
-[2001:41d0:2:c9bf::]:8333
-[2001:41d0:303:4f0::]:8333
-[2001:41d0:8:1a8a::1]:8333
-[2001:41d0:8:3fa9::1]:8333
-[2001:41d0:8:4670::1]:8333
-[2001:41d0:8:4f48::1]:8333
-[2001:41d0:8:6728::]:8333
-[2001:41d0:8:72c2:d:242:ac11:2]:8333
-[2001:41d0:8:8007::]:8333
-[2001:41d0:8:a71c::]:8333
-[2001:41d0:8:bccc::1]:8333
+[2001:41d0:302:1000::fa25]:8333
+[2001:41d0:303:1907::]:8333
+[2001:41d0:52:d00::6e2]:8333
+[2001:41d0:52:d00::6e3]:8333
+[2001:41d0:8:1b29::]:8333
+[2001:41d0:8:3d4b::1]:8333
+[2001:41d0:8:4d4d::1]:8333
+[2001:41d0:8:7a38::1]:8333
+[2001:41d0:8:8f46::1]:8333
+[2001:41d0:8:ba87::1]:8333
[2001:41d0:8:bd45::1]:8333
+[2001:41d0:8:bed3::]:8333
[2001:41d0:8:c67c::]:8333
+[2001:41d0:8:d844:1337::1017]:8333
+[2001:41d0:8:ddb::1]:8333
+[2001:41d0:8:ddf::1]:8333
[2001:41d0:8:de3d::1]:8333
-[2001:41d0:8:e257::1]:8333
[2001:41d0:8:e3e4::1]:8333
-[2001:41d0:a:14cc::1]:8333
-[2001:41d0:a:15b2::1]:8333
-[2001:41d0:a:1ac9::1]:8333
-[2001:41d0:a:2496::1]:8333
-[2001:41d0:a:308c::]:8333
-[2001:41d0:a:5879::]:8333
+[2001:41d0:a:4e3f::1c7d:6b01]:8333
+[2001:41d0:a:635b::1]:8333
[2001:41d0:a:6810::1]:8333
-[2001:41d0:a:682d::1]:8333
[2001:41d0:a:6c29::1]:8333
-[2001:41d0:a:f52a::1]:8333
+[2001:41d0:a:6fd0::]:8333
+[2001:41d0:a:fac7::1]:8333
[2001:41d0:d:111c::]:8333
+[2001:41d0:d:2ac8::]:8333
[2001:41d0:e:1388::1]:8333
-[2001:41d0:e:26b::1]:8333
-[2001:41d0:e:f73::1]:8333
-[2001:41d0:fc8c:a200:7a24:afff:fe9d:c69b]:8333
[2001:41f0:61:0:72f3:95ff:fe09:7521]:8333
[2001:41f0:61::7]:8333
-[2001:4428:200:8171:db6:2ff4:9c0e:a2da]:8333
[2001:470:1f07:151c:baac:6fff:feb7:3ba9]:8333
-[2001:470:1f0b:ad6:a60:6eff:fec6:2323]:8333
-[2001:470:1f11:617::10f]:8333
-[2001:470:1f14:73e::2]:8333
-[2001:470:1f14:7d::2]:8333
+[2001:470:1f0b:8c4::5]:8333
+[2001:470:1f0b:967::11]:8333
[2001:470:1f15:11f8::10]:8333
[2001:470:1f15:1b95:2c3e:8a9a:24e1:7084]:8333
-[2001:470:1f15:e9b::3ef]:8333
+[2001:470:1f15:f28::3]:8333
+[2001:470:1f1a:172::2]:8333
+[2001:470:1f1c:b07::2]:8333
[2001:470:1f1d:3a9::10]:8333
[2001:470:25:482::2]:8333
-[2001:470:27:19f::2]:8333
-[2001:470:27:665::2]:8333
[2001:470:28:365::4]:8333
-[2001:470:41:6::2]:8333
-[2001:470:727b::11:14]:8333
-[2001:470:7:2f0::2]:8333
-[2001:470:7:65::2]:8333
-[2001:470:7f85::2]:8333
-[2001:470:8:2e1:5825:39df:3e4c:54a8]:8333
-[2001:470:8:2e1::43]:8333
-[2001:470:8:2e1:ae2a:e257:4470:6350]:8333
+[2001:470:754f:42::17a]:8333
+[2001:470:7:b74::2]:8333
+[2001:470:7dda:1::1]:8333
+[2001:470:8:c70:20c:29ff:fe6a:8fdc]:8333
+[2001:470:8:c70::54]:8333
[2001:470:a:c13::2]:8333
+[2001:470:d00d:0:3664:a9ff:fe9a:5150]:8333
+[2001:470:dbf2:aaaa::b17:c01c]:8333
+[2001:470:f457:8000::a6]:8333
[2001:4801:7819:74:b745:b9d5:ff10:a61a]:8333
[2001:4801:7819:74:b745:b9d5:ff10:aaec]:8333
[2001:4801:7828:104:be76:4eff:fe10:1325]:8333
-[2001:4802:7800:2:30d7:1775:ff20:1858]:8333
-[2001:4ba0:babe:832::]:8333
-[2001:4ba0:cafe:379::1]:8333
-[2001:4ba0:ffee:33::10]:8333
-[2001:4dd0:ff00:9a67::9]:8333
-[2001:610:1b19::3]:8333
-[2001:610:600:a41::2]:8333
-[2001:678:174:4021::2:8333]:8333
-[2001:67c:16dc:1201:5054:ff:fe17:4dac]:8333
+[2001:4ba0:cafe:13c0::1]:8333
+[2001:4ba0:cafe:418::1]:8333
+[2001:558:6045:23:1830:896c:d901:190d]:8333
+[2001:67c:1220:80c::93e5:dd2]:8333
[2001:67c:2128:ffff:6062:36ff:fe30:6532]:8333
-[2001:67c:2564:331:3547:6e28:85a4:fb27]:8333
-[2001:6a0:200:368::2]:8333
-[2001:718:801:311:5054:ff:fe19:c483]:8333
-[2001:7b8:2ff:8f::2]:8333
-[2001:8d8:8a6:4400::3f:86c]:8333
[2001:8d8:923:8400::87:ebd]:8333
-[2001:960:66d::2]:8333
+[2001:981:4452:1::100]:8333
[2001:981:46:1:ba27:ebff:fe5b:edee]:8333
-[2001:ba8:1f1:f069::2]:8333
+[2001:981:bdbd:1:c506:7d38:4b47:da15]:8333
+[2001:985:79af:20::35]:8333
[2001:bc8:225f:10e:505:6573:7573:d0a]:8333
-[2001:bc8:2706::1]:8333
[2001:bc8:323c:100::53]:8333
[2001:bc8:323c:100::80:4]:8333
[2001:bc8:323c:100::cafe]:8333
[2001:bc8:3680:4242::1]:8333
[2001:bc8:399f:f000::1]:8333
-[2001:bc8:3cbf::5]:8333
-[2001:bc8:4700:2300::19:807]:8333
-[2001:e42:102:1805:160:16:206:31]:8333
-[2002:12f1:3f::12f1:3f]:8333
-[2002:1e2:5349::1e2:5349]:8333
+[2002:1e2:5587::1e2:5587]:8333
[2002:1e2:5588::1e2:5588]:8333
-[2002:2501:cf62::2501:cf62]:8333
-[2002:268c:a135::268c:a135]:8333
-[2002:2a33:99db::2a33:99db]:8332
-[2002:2ebc:2c14::7]:8333
-[2002:2f59:2c9c::2f59:2c9c]:11885
-[2002:2f5a:3619::2f5a:3619]:8333
-[2002:2f5a:36a4::2f5a:36a4]:8333
-[2002:2f5a:429::2f5a:429]:8333
+[2002:2a33:21c4::2a33:21c4]:8333
+[2002:2e04:784b::2e04:784b]:8333
+[2002:2ebc:2c14::16]:8333
+[2002:2f5a:3c1c::2f5a:3c1c]:10011
[2002:2f5a:562a::2f5a:562a]:8333
-[2002:3a3b:216::3a3b:216]:8333
-[2002:3dfa:5d23::3dfa:5d23]:8333
-[2002:424f:a052::424f:a052]:8333
-[2002:451e:e922::451e:e922]:8333
+[2002:2f5b:a5f9::2f5b:a5f9]:8333
+[2002:3141:28c::3141:28c]:8333
+[2002:323f:a2f2::323f:a2f2]:8333
+[2002:323f:fbd::323f:fbd]:8333
+[2002:33ff:69a0::1]:8333
+[2002:3e6a:106f::3e6a:106f]:8333
+[2002:3e70:bbc::3e70:bbc]:8333
+[2002:3e7a:6727::3e7a:6727]:8333
+[2002:3f62:e6bb::3f62:e6bb]:8333
[2002:4540:4b30::4540:4b30]:8333
-[2002:51ab:7cc::51ab:7cc]:8333
-[2002:527:de11::527:de11]:8333
-[2002:5395:7d01::5395:7d01]:8333
-[2002:5395:7d2a::5395:7d2a]:8333
-[2002:5669:e3be::5669:e3be]:8333
-[2002:566a:5d6d::566a:5d6d]:8333
-[2002:59b9:f820::59b9:f820]:8333
-[2002:59f8:ac69::59f8:ac69]:8333
-[2002:5bd4:b65a::5bd4:b65a]:8333
-[2002:5c3f:39db::5c3f:39db]:8333
-[2002:5d33:8d03::5d33:8d03]:8333
-[2002:5d67:49bb::5d67:49bb]:8333
-[2002:5dae:5d5f::5dae:5d5f]:8333
+[2002:4e6b:c745::1]:8333
+[2002:5052:4d8a::5052:4d8a]:8333
+[2002:51a9:9cc9::51a9:9cc9]:8333
+[2002:54fb:cb05::1]:8333
+[2002:5bc2:5428::5bc2:5428]:8333
+[2002:5bce:1253::5bce:1253]:8333
+[2002:5bdb:19e8::5bdb:19e8]:8333
+[2002:5c3f:3912::5c3f:3912]:8333
+[2002:5dbd:91a9::5dbd:91a9]:8333
[2002:5dbe:8cc6::5dbe:8cc6]:8333
-[2002:5dbe:9503::5dbe:9503]:8333
[2002:5fd3:8944::5fd3:8944]:8333
-[2002:5fd3:9467::5fd3:9467]:8333
-[2002:67f9:6a48::67f9:6a48]:8333
-[2002:67f9:6a4a::67f9:6a4a]:8333
-[2002:67f9:6a95::67f9:6a95]:8333
+[2002:65c8:a018::65c8:a018]:8333
+[2002:6750:a839::6750:a839]:8333
+[2002:67fa:44b::67fa:44b]:8333
[2002:6a0e:3ea8::6a0e:3ea8]:10011
-[2002:6b96:375a::6b96:375a]:8333
-[2002:6ca8:cffb::6ca8:cffb]:8333
-[2002:6caf:234::6caf:234]:8333
-[2002:6dec:58f5::6dec:58f5]:8333
+[2002:6a0f:2497::6a0f:2497]:8333
[2002:6dec:5ac7::6dec:5ac7]:8333
-[2002:7237:4a02::7237:4a02]:20033
-[2002:7237:94fd::7237:94fd]:10011
-[2002:7237:e428::7237:e428]:8333
+[2002:704a:d6d4::704a:d6d4]:9997
[2002:7237:fcf6::7237:fcf6]:20188
-[2002:76c0:96e6::76c0:96e6]:8333
+[2002:76b2:7f40::76b2:7f40]:8333
[2002:7819:7e80::7819:7e80]:7743
-[2002:781a:ea86::781a:ea86]:8333
-[2002:781a:f3c2::781a:f3c2]:14475
-[2002:784c:c2c0::784c:c2c0]:8333
-[2002:784c:ec97::784c:ec97]:8333
-[2002:792b:261a::792b:261a]:8333
-[2002:88f3:8cca::88f3:8cca]:8333
-[2002:88f3:a83c::88f3:a83c]:8333
-[2002:8ac9:516f::8ac9:516f]:8333
-[2002:8b81:6d78::8b81:6d78]:50344
-[2002:8b81:6e5c::8b81:6e5c]:38176
-[2002:8bc4:90a6::8bc4:90a6]:8333
+[2002:781b:8db8::781b:8db8]:8333
+[2002:7b38:cd00::7b38:cd00]:8333
[2002:ac52:b854::ac52:b854]:8333
-[2002:add0:c14a::add0:c14a]:8333
-[2002:b07e:a70a::b07e:a70a]:8333
-[2002:b27c:c565:1::250]:8333
-[2002:b27c:c565::1]:8333
-[2002:b94d:80f1::b94d:80f1]:8333
-[2002:b982:e26a::b982:e26a]:8333
-[2002:bcd5:3145::bcd5:3145]:8333
-[2002:c08a:d22b::c08a:d22b]:8333
-[2002:c0c7:f8e3::c0c7:f8e3]:32771
-[2002:c1a9:fc5a::c1a9:fc5a]:8333
+[2002:b610:1ca3::b610:1ca3]:8333
+[2002:b946:694a::b946:694a]:8339
+[2002:b994:9167::b994:9167]:8333
+[2002:bc28:6b92::bc28:6b92]:8333
[2002:c23f:8fc5::c23f:8fc5]:8333
-[2002:d395:ea6d::d395:ea6d]:8333
-[2002:d917:ca5::d917:ca5]:8333
-[2002:d917:e91::d917:e91]:8333
+[2002:c338:3f0a::c338:3f0a]:8333
+[2002:d1b1:5615::d1b1:5615]:8333
+[2002:d2d3:6da5::d2d3:6da5]:8333
+[2002:d917:2b1::d917:2b1]:8333
[2002:db71:f434::db71:f434]:8333
-[2400:2651:161:1000:6847:d40f:aaa3:4848]:8333
-[2400:8901::f03c:91ff:fec8:4280]:8333
-[2401:1800:7800:102:be76:4eff:fe1c:a7d]:8333
+[2003:a:36f:4f01::1]:8333
+[2003:a:37f:ef4f:dead:babe:b00b:beef]:8333
+[2400:8901::f03c:91ff:fe2c:63d8]:8333
+[2400:8902::f03c:91ff:fed5:9d8d]:8333
[2401:2500:203:10:153:120:156:83]:8333
[2401:a400:3200:5600:14ee:f361:4bdc:1f7c]:8333
+[2402:1f00:8100:36::]:8333
[2403:4200:403:2::ff]:8333
+[2405:9800:b440:947f:59a5:f379:1876:858c]:8333
[2405:aa00:2::40]:8333
+[2406:da14:445:5201::4]:8333
+[2406:da18:f7c:4351:1a58:81fe:6ed0:1103]:8333
+[2406:da18:f7c:4351:22aa:2585:fe88:7d58]:8333
+[2406:da18:f7c:4351:2674:33bb:25d6:cbba]:8333
+[2406:da18:f7c:4351:2e19:a8c7:a36a:bde0]:8333
+[2406:da18:f7c:4351:3cc8:43d:fbcc:5067]:8333
+[2406:da18:f7c:4351:5228:2b53:bb9a:edf5]:8333
+[2406:da18:f7c:4351:5729:102:998c:d41a]:8333
+[2406:da18:f7c:4351:591b:4881:3986:3703]:8333
+[2406:da18:f7c:4351:59b9:b50:f47f:b560]:8333
+[2406:da18:f7c:4351:61f2:cfb0:8c45:5fdd]:8333
+[2406:da18:f7c:4351:6356:68e0:73fc:ac0b]:8333
+[2406:da18:f7c:4351:660e:f6bc:3563:ba8e]:8333
+[2406:da18:f7c:4351:691:9e:f2df:227d]:8333
+[2406:da18:f7c:4351:721c:83d2:6765:4300]:8333
+[2406:da18:f7c:4351:7237:9be:4601:bc15]:8333
+[2406:da18:f7c:4351:7a3b:c203:fd11:6c7d]:8333
+[2406:da18:f7c:4351:7a74:a80e:889a:ba42]:8333
+[2406:da18:f7c:4351:7ee3:a181:f25c:fa79]:8333
+[2406:da18:f7c:4351:8a25:9084:140:4549]:8333
+[2406:da18:f7c:4351:8bc0:c6fd:ecfb:f074]:8333
+[2406:da18:f7c:4351:91ce:d0ba:1b9e:c27b]:8333
+[2406:da18:f7c:4351:9336:44e7:84b4:85b9]:8333
+[2406:da18:f7c:4351:936c:c3b9:a1d0:848]:8333
+[2406:da18:f7c:4351:93ef:1eef:65c8:766d]:8333
+[2406:da18:f7c:4351:94e0:5b27:78c2:5111]:8333
+[2406:da18:f7c:4351:9815:a202:18a3:2a36]:8333
+[2406:da18:f7c:4351:9e1b:135c:7472:9d9]:8333
+[2406:da18:f7c:4351:9f84:278:68f5:b8ea]:8333
+[2406:da18:f7c:4351:a062:493f:a6f8:ca75]:8333
+[2406:da18:f7c:4351:a192:b98:3066:8f11]:8333
+[2406:da18:f7c:4351:a1cb:2f19:4a54:38c9]:8333
+[2406:da18:f7c:4351:a4a2:4c9:c43a:98ae]:8333
+[2406:da18:f7c:4351:a7e9:cd48:fa90:46d3]:8333
+[2406:da18:f7c:4351:a88:99:6671:fce4]:8333
+[2406:da18:f7c:4351:abe1:2e48:eb97:2ab5]:8333
+[2406:da18:f7c:4351:acf5:2b21:5d2a:6b31]:8333
+[2406:da18:f7c:4351:b51f:8966:74a5:6c53]:8333
+[2406:da18:f7c:4351:b8e3:f3ca:e412:daa5]:8333
+[2406:da18:f7c:4351:ba7c:6da8:da59:b1b6]:8333
+[2406:da18:f7c:4351:be04:6f8e:8f93:c555]:8333
+[2406:da18:f7c:4351:c82d:2a0b:31a5:e28d]:8333
+[2406:da18:f7c:4351:c993:eb06:bd2c:1e65]:8333
+[2406:da18:f7c:4351:d4b9:bff8:c4d4:1e05]:8333
+[2406:da18:f7c:4351:d70d:a73d:1ddd:439e]:8333
+[2406:da18:f7c:4351:e103:f456:b296:9f29]:8333
+[2406:da18:f7c:4351:ea3b:27ec:7c2:aebc]:8333
+[2406:da18:f7c:4351:f62c:5013:379b:363e]:8333
[240b:10:ca20:f0:224:e8ff:fe1f:60d9]:8333
[240b:250:1e0:2400:b9ef:8fe3:a69a:7378]:8333
-[240d:1a:302:8600:8876:a36d:12ee:f285]:8333
+[2600:1f14:34a:fe00:13f4:ceb6:a9db:4f47]:8333
+[2600:1f14:34a:fe00:2550:9366:a5d9:78a5]:8333
+[2600:1f14:34a:fe00:27d:6ed:7c8d:7bee]:8333
+[2600:1f14:34a:fe00:2ed6:8a19:4eb:36c1]:8333
+[2600:1f14:34a:fe00:34c7:2e9e:e60e:f823]:8333
+[2600:1f14:34a:fe00:38de:442:72df:6346]:8333
+[2600:1f14:34a:fe00:3a1e:878f:991a:9582]:8333
+[2600:1f14:34a:fe00:3d88:1805:54e3:f4c8]:8333
+[2600:1f14:34a:fe00:3f3e:58bd:ec82:5dac]:8333
+[2600:1f14:34a:fe00:449a:9515:8436:f407]:8333
+[2600:1f14:34a:fe00:4f84:277f:e64d:1f06]:8333
+[2600:1f14:34a:fe00:5229:de84:8226:7257]:8333
+[2600:1f14:34a:fe00:5743:42c3:951b:e97a]:8333
+[2600:1f14:34a:fe00:5a29:85b:86b5:fa0e]:8333
+[2600:1f14:34a:fe00:5de8:81e:6d79:330b]:8333
+[2600:1f14:34a:fe00:5fca:ad1e:5b9c:5265]:8333
+[2600:1f14:34a:fe00:68c4:ca1b:813e:1bce]:8333
+[2600:1f14:34a:fe00:6:de9e:7b5e:a558]:8333
+[2600:1f14:34a:fe00:6c72:1fcd:433:dc97]:8333
+[2600:1f14:34a:fe00:77ee:629f:bc13:fb4f]:8333
+[2600:1f14:34a:fe00:79d0:85d6:516f:3293]:8333
+[2600:1f14:34a:fe00:81:422f:9ef3:4579]:8333
+[2600:1f14:34a:fe00:822b:5f05:ec8d:48c6]:8333
+[2600:1f14:34a:fe00:82a:76a2:fdc9:845e]:8333
+[2600:1f14:34a:fe00:83ca:cef6:e04c:50c0]:8333
+[2600:1f14:34a:fe00:8ba2:a36c:8687:d5aa]:8333
+[2600:1f14:34a:fe00:8c80:5c67:3b47:90b3]:8333
+[2600:1f14:34a:fe00:8eb8:f47f:6d53:e3ae]:8333
+[2600:1f14:34a:fe00:989c:f8f8:a922:1b9a]:8333
+[2600:1f14:34a:fe00:98c9:1eb3:ea12:a8f0]:8333
+[2600:1f14:34a:fe00:9ee5:a8f6:6b2a:866e]:8333
+[2600:1f14:34a:fe00:a46b:7bd5:629f:f75c]:8333
+[2600:1f14:34a:fe00:a627:8299:8784:d439]:8333
+[2600:1f14:34a:fe00:ad0b:955e:b4e5:d97d]:8333
+[2600:1f14:34a:fe00:ae82:7117:9d69:7c86]:8333
+[2600:1f14:34a:fe00:ccee:365a:43f8:b871]:8333
+[2600:1f14:34a:fe00:d5ee:a3e2:2f85:e593]:8333
+[2600:1f14:34a:fe00:d5f0:1fe0:6bd5:18a8]:8333
+[2600:1f14:34a:fe00:e4a7:5aba:af87:4cdb]:8333
+[2600:1f14:34a:fe00:e8e5:2d0:fb6f:2f5]:8333
+[2600:1f14:34a:fe00:e9ef:4690:a5ac:92be]:8333
+[2600:1f14:34a:fe00:efba:2260:6997:fcf7]:8333
+[2600:1f14:34a:fe00:f107:2d08:c67:e5dd]:8333
+[2600:1f14:34a:fe00:f1b9:88fb:f3db:a86e]:8333
+[2600:1f14:34a:fe00:f79c:17b7:6f75:95b7]:8333
+[2600:1f14:6ae:d900:6550:3fc5:e074:a72c]:8333
+[2600:1f16:625:e00:1243:38b3:caa:d62e]:8333
+[2600:1f16:625:e00:166d:a956:1041:f97d]:8333
+[2600:1f16:625:e00:35f2:2428:fc57:d638]:8333
+[2600:1f16:625:e00:3c75:333e:b7f:8cc0]:8333
+[2600:1f16:625:e00:3fbf:31f:1b57:8b18]:8333
+[2600:1f16:625:e00:5617:7575:379:a8cc]:8333
+[2600:1f16:625:e00:58fa:fce6:30:a5dc]:8333
+[2600:1f16:625:e00:5e74:70dc:af78:6b77]:8333
+[2600:1f16:625:e00:7036:f651:2ee:39cd]:8333
+[2600:1f16:625:e00:7fc:9004:e7be:ffe2]:8333
+[2600:1f16:625:e00:814a:23f6:e996:5e64]:8333
+[2600:1f16:625:e00:822c:a88b:f9c:57e3]:8333
+[2600:1f16:625:e00:8314:b91e:a7ba:702]:8333
+[2600:1f16:625:e00:88bb:ee9a:10de:12]:8333
+[2600:1f16:625:e00:8c30:56f5:a29a:91de]:8333
+[2600:1f16:625:e00:8fdf:6517:7718:8c42]:8333
+[2600:1f16:625:e00:91fd:78b1:62a3:193]:8333
+[2600:1f16:625:e00:930d:93ed:76a6:3285]:8333
+[2600:1f16:625:e00:93c2:615f:a79a:c11f]:8333
+[2600:1f16:625:e00:a780:8bc8:a1f6:d417]:8333
+[2600:1f16:625:e00:a951:e663:4046:8c3a]:8333
+[2600:1f16:625:e00:ab19:5fe3:f155:1371]:8333
+[2600:1f16:625:e00:aefd:9cc7:d3:6e86]:8333
+[2600:1f16:625:e00:b031:e86e:8604:324a]:8333
+[2600:1f16:625:e00:b6e:4399:9dc2:6b45]:8333
+[2600:1f16:625:e00:b7c7:58c6:21a1:fd41]:8333
+[2600:1f16:625:e00:c169:6282:178c:27d6]:8333
+[2600:1f16:625:e00:c94e:58b:bd35:d815]:8333
+[2600:1f16:625:e00:caa5:7369:73a4:5711]:8333
+[2600:1f16:625:e00:cd15:b9f2:6e3e:6fd1]:8333
+[2600:1f16:625:e00:d6f3:775:66b7:3e92]:8333
+[2600:1f16:625:e00:dbec:f7d9:e15:f8e0]:8333
+[2600:1f16:625:e00:dbf4:4d41:594e:bc20]:8333
+[2600:1f16:625:e00:e11b:4589:a0c3:9cc7]:8333
+[2600:1f16:625:e00:ed68:15b0:3a97:be0c]:8333
+[2600:1f16:625:e00:eef3:bce0:84ee:a98b]:8333
+[2600:1f16:625:e00:ef3a:f66e:f059:d03f]:8333
+[2600:1f16:625:e00:f67c:d398:5b6:d34f]:8333
+[2600:1f16:625:e00:fe35:5099:3a8e:d123]:8333
+[2600:1f18:64d9:1603:6f6f:eef9:b595:1958]:8333
+[2600:3c00::f03c:91ff:fe84:d650]:8333
+[2600:3c00::f03c:91ff:fe89:7438]:8333
[2600:3c00::f03c:91ff:fe91:3e49]:8333
[2600:3c00::f03c:91ff:febb:981e]:8333
-[2600:3c01::f03c:91ff:fe18:6adf]:8333
[2600:3c01::f03c:91ff:fe69:89e9]:8333
[2600:3c01::f03c:91ff:fe91:6a29]:8333
-[2600:3c01::f03c:91ff:fef1:1eaa]:8333
-[2600:3c03::f03c:91ff:fe18:da80]:8333
[2600:3c03::f03c:91ff:fe28:1445]:8333
-[2600:3c03::f03c:91ff:fe67:d2e]:8333
-[2600:3c03::f03c:91ff:fe89:116f]:8333
-[2600:3c03::f03c:91ff:feb0:5fc4]:8333
[2600:3c03::f03c:91ff:fee0:233e]:8333
-[2600:3c03::f03c:91ff:fee0:51]:8333
+[2600:6c55:7200:24d:cf4:811c:7cb3:f7a7]:8333
[2600:8805:2400:14e:226:4aff:fe02:2ba4]:8333
-[2600:8807:5080:3301:1487:83b7:33d7:eb97]:8333
-[2601:186:c100:6bcd:16bd:cea1:235d:1c19]:8333
-[2601:18c:4200:28d0:e4d:e9ff:fec5:76d0]:8333
-[2601:247:8201:6251:30e6:7b95:69bf:9248]:8333
+[2601:18d:4600:3cc2:20e7:b3ff:fecf:a99]:8333
+[2601:1c2:1702:5241:47d:4016:ec42:6705]:8333
+[2601:441:4101:70cd:4e3:8e81:3250:1f0b]:8333
[2601:602:9980:f78:211:11ff:fec5:1ae]:8333
-[2602:ae:1993:de00:2c50:9a44:8f11:77a5]:8333
-[2602:ff68:0:1:21e:bff:feca:db72]:8333
-[2602:ff68:0:1:2bd:27ff:feb0:adf8]:8333
-[2602:ff68:0:1::5]:8333
-[2602:ff68:0:5:2bd:27ff:feb0:adf8]:8333
-[2602:ffc5:1f::1f:2d61]:8333
-[2602:ffc5:1f::1f:9211]:8333
-[2602:ffc5::9e63:27a2]:8333
+[2601:646:4103:179f:5809:1bff:fe55:6678]:8333
+[2602:4c:323:b101:35a3:9de8:6984:ef56]:8333
+[2602:ff62:104:ac1:8000::]:8333
+[2602:ffc5:40::1:711e]:8333
[2602:ffc5::c30:1c75]:8333
-[2602:ffc5::ffc5:b844]:8333
-[2602:ffe8:100:2::457:936b]:8333
-[2604:180:2:eee::ca46]:8333
-[2604:880:d:85::be37]:8333
-[2604:9a00:2100:a009:2::]:8333
-[2604:a880:2:d0::301:8001]:8333
-[2604:a880:2:d0::4a9:1001]:8333
-[2604:a880:2:d0::53a:c001]:8333
+[2604:a880:2:d0::17e9:2001]:8333
+[2604:a880:2:d0::22f8:f001]:8333
+[2604:a880:2:d0::22f9:1]:8333
+[2604:a880:2:d0::22f9:c001]:8333
+[2604:a880:2:d0::22f9:d001]:8333
+[2604:a880:2:d0::22f9:e001]:8333
+[2604:a880:2:d0::22fa:2001]:8333
+[2604:a880:2:d0::22fa:3001]:8333
+[2604:a880:400:d0::1684:5001]:8333
+[2604:a880:400:d0::1ac4:b001]:8333
+[2604:a880:400:d0::2004:4001]:8333
+[2604:a880:400:d0::2004:5001]:8333
+[2604:a880:400:d0::2004:6001]:8333
+[2604:a880:400:d0::2004:c001]:8333
+[2604:a880:400:d0::2004:d001]:8333
+[2604:a880:400:d0::2004:e001]:8333
+[2604:a880:400:d0::2004:f001]:8333
+[2604:a880:400:d0::2005:1]:8333
+[2604:a880:400:d0::2005:3001]:8333
+[2604:a880:400:d0::261f:6001]:8333
+[2604:a880:400:d0::28b8:5001]:8333
[2604:a880:400:d0::ad7:e001]:8333
-[2604:a880:400:d0::dcf:f001]:8333
[2605:4d00::50]:8333
-[2605:6000:edc8:300::ddfe]:8333
-[2605:6000:ffc0:70:74d5:225c:f553:5bb8]:8333
-[2606:6000:c148:7003:5054:ff:fe78:66ff]:8333
-[2606:6000:e6d6:d701:d428:5e44:a2c9:3ff6]:8333
-[2606:c680:1:4a:2016:d1ff:fe93:52a7]:8333
+[2605:5d80:2002::245]:8333
+[2605:9880:0:953:225:90ff:fed2:c0b4]:8333
+[2606:c380::215:17ff:feb3:3ec]:8333
+[2607:1c00:a:6:3c1c:1b0d:ba4:8ea9]:8333
+[2607:1c00:a:6::1000]:8333
+[2607:4480:2:2000:250:56ff:fe86:6449]:8333
+[2607:5300:120:671::]:8333
+[2607:5300:120:962::]:8333
+[2607:5300:201:2000::1:556]:8333
[2607:5300:203:118:3733::1414]:8333
-[2607:5300:60:13bb::1]:8333
-[2607:5300:60:1966::1]:8333
-[2607:5300:60:2218::]:8333
-[2607:5300:60:3775::]:8333
+[2607:5300:60:10aa::1]:8333
+[2607:5300:60:1e83::]:8333
+[2607:5300:60:1e83::1000]:8333
+[2607:5300:60:1e83::2000]:8333
+[2607:5300:60:2d0::1]:8333
[2607:5300:60:3ddf::]:8333
-[2607:5300:60:a654::]:8333
-[2607:5300:60:a7a3::]:8333
+[2607:5300:60:3f3c::]:8333
+[2607:5300:60:5428::]:8333
[2607:5300:60:ac0::1]:8333
-[2607:5300:60:cf97::]:8333
-[2607:f0d0:1901:19::6]:8333
-[2607:f128:40:1202:69:162:139:125]:8333
-[2607:f128:40:1703::2]:8333
-[2607:f178:0:8::106]:8333
-[2607:f1c0:84d:8900::7e:cad]:8333
+[2607:5300:61:f4b::1]:8333
+[2607:9000:0:1:5054:ff:fe5d:264e]:8333
+[2607:f1c0:846:9a00::87:d00e]:8333
+[2607:f2d8:4005:d:a8a2:eeff:fee0:a859]:8333
[2607:f948:0:1::1:40]:8333
-[2607:fcd0:100:2302::6094:635a]:8333
-[2607:fcd0:100:6a00::3a96:1]:8333
-[2607:fcd0:100:6a02::7ff0:1]:8333
-[2607:fcd0:100:8203::8c58:dbc]:8333
-[2607:fea8:1360:9c2:221a:6ff:fe47:776d]:8333
-[2607:fea8:4da0:9ce:5114:a8ec:20f5:a50b]:8333
-[2607:fea8:5df:fda0:feaa:14ff:feda:c79a]:8333
-[2607:fea8:84c0:163:f42c:baff:fecc:6bbf]:8333
+[2607:fa18:3a01::50]:8333
+[2607:fea8:3ca0:926::2]:8333
+[2607:fea8:4da0:3b0::2]:8333
[2607:ff10:c5:502:225:90ff:fe32:d446]:8333
-[2607:ff48:aa81:800::96cf:1]:8333
-[2620:11c:5001:1118:d267:e5ff:fee9:e673]:8333
+[2607:ff28:9005:1::2567:57e0]:8333
+[2620:71:4000:0:192:30:120:110]:8333
[2620:b8:4000:1000::93:1]:8333
[2800:1a0::9]:8333
-[2a00:1178:2:43:19fd:d43e:b77:edeb]:8333
-[2a00:1178:2:43:b4e3:e562:f811:d761]:8333
-[2a00:14f0:e000:80d2:cd1a::1]:8333
-[2a00:1630:14::101]:8333
-[2a00:1630:2:1802:188:122:91:11]:8333
-[2a00:1630:2:500::4]:8333
+[2801:84:0:1034:76d4:35ff:fe7f:5033]:8333
+[2a00:16d8:c::5b6a:c261]:8333
[2a00:1768:2001:24::148:218]:8333
-[2a00:1768:2001:27::142:21]:8333
+[2a00:19e0:1:1:225:90ff:fea5:fc0]:8333
[2a00:1a48:7810:101:be76:4eff:fe08:c774]:8333
-[2a00:1ca8:37::a5fc:40d1]:8333
-[2a00:1ca8:37::ab6d:ce2c]:8333
-[2a00:1dc0:2255:10::2]:8333
+[2a00:6340:2004:0:5054:ff:fe54:38c]:8333
+[2a00:7b80:477:21::1c8c:83a6]:8333
[2a00:7c80:0:71::8]:8333
[2a00:7c80:0:97::7]:8333
-[2a00:bbe0:0:42:222:64ff:fe9a:e206]:8333
-[2a00:c98:2050:a020:3::110]:8333
-[2a00:dcc0:eda:98:183:193:1d24:b53a]:8333
-[2a00:dcc0:eda:98:183:193:c382:6bdb]:8333
-[2a00:dcc0:eda:98:183:193:f72e:d943]:8333
-[2a00:f90:ff0:c100:53c4:97a7:8b59:796a]:8333
-[2a01:238:435c:de00:b110:38cf:192d:b2c]:28333
-[2a01:348:6:7cf::2]:8333
-[2a01:368:e012:8888:216:3eff:fe24:1162]:8333
+[2a01:238:4363:4900:d85e:c1d9:2b32:61d0]:8333
[2a01:488:66:1000:53a9:22b:0:1]:8333
-[2a01:488:67:1000:523:ffa7:0:1]:8333
+[2a01:488:67:1000:5bfa:5526:0:1]:8333
[2a01:488:67:1000:b01c:3379:0:1]:8333
-[2a01:4f8:100:34ce::2]:8333
-[2a01:4f8:100:44e7::2]:8333
-[2a01:4f8:10a:2e4::2]:8333
-[2a01:4f8:10a:34e::2]:8333
-[2a01:4f8:10a:51d::2]:8333
-[2a01:4f8:10a:622::2]:8333
-[2a01:4f8:10a:85f::2]:8333
-[2a01:4f8:10a:864::2]:8333
-[2a01:4f8:10a:d04::2]:8333
-[2a01:4f8:110:334c::2]:8333
+[2a01:4d60:3:1:5::1]:8333
+[2a01:4f8:10a:1d8f::2]:8333
+[2a01:4f8:10a:1e81::2]:8333
+[2a01:4f8:10a:2261::2]:8833
+[2a01:4f8:10a:239c::2]:9002
+[2a01:4f8:10a:294a::2]:8333
+[2a01:4f8:10a:31d3::2]:8333
+[2a01:4f8:10a:3fe6::2]:8333
+[2a01:4f8:10a:b2e::2]:8333
+[2a01:4f8:10b:12d7::2]:8333
+[2a01:4f8:10b:d50::2]:8333
+[2a01:4f8:10b:e2d::2]:8333
+[2a01:4f8:10b:ee1::2]:8333
+[2a01:4f8:110:5107::2]:8333
+[2a01:4f8:110:5292::2]:8333
[2a01:4f8:110:536e::2]:8333
[2a01:4f8:120:43e4::2]:8333
-[2a01:4f8:120:702e::2]:8333
-[2a01:4f8:121:4346::2]:8333
[2a01:4f8:130:3332::2]:8333
+[2a01:4f8:130:430b::2]:8333
+[2a01:4f8:130:618e::2]:8333
+[2a01:4f8:130:71d2::2]:8333
+[2a01:4f8:130:7422::2]:8333
[2a01:4f8:131:33ad::2]:8333
[2a01:4f8:131:33ad:fea1::666]:8333
-[2a01:4f8:140:31b0::2]:8333
-[2a01:4f8:140:4088::2]:8333
+[2a01:4f8:131:3428::2]:8333
+[2a01:4f8:140:1326::2]:8333
+[2a01:4f8:140:524a::2]:8333
+[2a01:4f8:140:6055::2]:8333
+[2a01:4f8:140:7410::2]:8333
[2a01:4f8:140:931a::2]:8333
-[2a01:4f8:140:93b0::2]:8333
-[2a01:4f8:141:13ad::c451]:8333
-[2a01:4f8:141:186::2]:8333
+[2a01:4f8:141:2254::2]:8333
[2a01:4f8:141:22ae::2]:8333
-[2a01:4f8:141:322c::2]:8333
[2a01:4f8:150:11d4::2]:8333
-[2a01:4f8:150:440f::2]:8333
-[2a01:4f8:150:61ee::2]:8333
+[2a01:4f8:150:70a4::2]:8333
[2a01:4f8:150:726b::2]:8333
-[2a01:4f8:151:30c9::2]:15000
-[2a01:4f8:151:41a2::2]:8333
-[2a01:4f8:151:41cc::2]:8333
-[2a01:4f8:151:52c6::154]:8333
-[2a01:4f8:151:600b::1:1]:8333
+[2a01:4f8:150:72ee::4202]:8333
+[2a01:4f8:150:90ca::2]:8333
+[2a01:4f8:151:30c9::2]:8333
+[2a01:4f8:151:334d::3]:8333
[2a01:4f8:151:7175::2]:8333
[2a01:4f8:160:41f0::1:33]:8333
-[2a01:4f8:160:5328::27f0:187a]:8333
-[2a01:4f8:160:814f::2]:8333
-[2a01:4f8:161:21ad::333:30]:8333
+[2a01:4f8:160:636e::2]:8333
[2a01:4f8:161:7026::2]:8333
-[2a01:4f8:162:4110::2]:8333
-[2a01:4f8:162:4348::2]:8333
+[2a01:4f8:162:2108::2]:8333
+[2a01:4f8:162:3121::50]:8333
+[2a01:4f8:162:424c::2]:8333
[2a01:4f8:171:1c1b::2]:8333
[2a01:4f8:171:1c3::2]:8333
[2a01:4f8:171:2258::2]:8333
-[2a01:4f8:171:2a70::2]:8333
-[2a01:4f8:171:2e1b::2]:8333
+[2a01:4f8:171:27d6::2]:8333
[2a01:4f8:171:2f28::2]:8333
-[2a01:4f8:171:3248::2]:8333
-[2a01:4f8:171:380c::2]:8333
-[2a01:4f8:171:b93::2]:8333
-[2a01:4f8:171:d0a::2]:8333
-[2a01:4f8:172:116c::2]:8333
-[2a01:4f8:172:1287::2]:8333
-[2a01:4f8:172:17a9::2]:8333
-[2a01:4f8:172:1ca7::2]:8333
-[2a01:4f8:172:2159::2]:8333
-[2a01:4f8:172:3a41::2]:8333
-[2a01:4f8:172:3b42::2]:8333
-[2a01:4f8:172:3ec1::2]:8333
-[2a01:4f8:172:3ec2::2]:8333
-[2a01:4f8:172:aeb::2]:8333
-[2a01:4f8:172:aec::2]:8333
-[2a01:4f8:173:10ab::2]:8333
-[2a01:4f8:173:1551::2]:8333
-[2a01:4f8:173:1bca::2]:8333
-[2a01:4f8:173:1e2e::2]:8333
-[2a01:4f8:173:2162::2]:8333
-[2a01:4f8:173:21e6::2]:8333
+[2a01:4f8:171:d23::2]:8333
+[2a01:4f8:172:10da::2]:8333
+[2a01:4f8:172:504::2]:8333
+[2a01:4f8:173:1622::2]:8333
[2a01:4f8:173:42::2]:8333
-[2a01:4f8:173:cc1::2]:8333
-[2a01:4f8:190:1253::2]:8333
[2a01:4f8:190:24eb::2]:8333
-[2a01:4f8:190:34f0::2]:8333
[2a01:4f8:190:528d::2]:8333
-[2a01:4f8:190:91ce::2]:8333
-[2a01:4f8:191:2194::83]:8333
-[2a01:4f8:191:40e8::2]:8333
-[2a01:4f8:191:8165::2]:22556
+[2a01:4f8:190:61f3::2]:8333
+[2a01:4f8:191:418f::2]:3333
+[2a01:4f8:191:63b4:5000::1]:8333
[2a01:4f8:191:81b7::2]:8333
[2a01:4f8:191:8328::3]:8333
-[2a01:4f8:192:11b2::2]:8343
-[2a01:4f8:192:216c::2]:8333
-[2a01:4f8:192:22af::2]:8333
-[2a01:4f8:192:2422::2]:8333
-[2a01:4f8:192:34d0::2]:8333
-[2a01:4f8:192:440b::2]:8333
+[2a01:4f8:192:4a5::2]:8333
[2a01:4f8:192:5230::2]:8333
-[2a01:4f8:192:db::2]:8333
[2a01:4f8:200:1012::2]:8333
+[2a01:4f8:200:32a6::2]:8333
[2a01:4f8:200:414e::2]:8333
[2a01:4f8:200:416a::2]:8333
-[2a01:4f8:201:21a7::2]:8333
-[2a01:4f8:201:4017::11]:8333
+[2a01:4f8:200:90c3::2]:8333
+[2a01:4f8:201:148d::2]:8333
+[2a01:4f8:201:2cc::2]:8333
+[2a01:4f8:201:3e3::2]:8333
+[2a01:4f8:201:53cc::2]:8333
[2a01:4f8:201:6011::4]:8333
-[2a01:4f8:201:60d5::2]:8333
-[2a01:4f8:202:12d6::2]:8333
+[2a01:4f8:202:3030::2]:8333
[2a01:4f8:202:31e3::2]:8333
[2a01:4f8:202:32c6::2]:8333
-[2a01:4f8:202:53c3::2]:8333
-[2a01:4f8:211:14cf::2]:8333
+[2a01:4f8:202:6035::2]:8333
+[2a01:4f8:210:5488::2]:8333
+[2a01:4f8:211:1e17::2]:8333
[2a01:4f8:211:1ec5::2]:8333
-[2a01:4f8:211:483::2]:8333
-[2a01:4f8:211:d99::8]:8333
[2a01:4f8:212:1826::2]:8333
-[2a01:4f8:212:27a8::2]:8333
-[2a01:4f8:221:801::2]:8333
-[2a01:4f8:a0:12cc::2]:8333
-[2a01:4f8:a0:746a:101:1:1:2]:8333
-[2a01:4f8:a0:828a::2]:8333
-[2a01:4f8:c17:2eef::2]:8333
-[2a01:4f8:c17:2f3c::2]:3333
+[2a01:4f8:221:f59::2]:8333
+[2a01:4f8:c0c:1026::2]:8333
+[2a01:4f8:c0c:1028::2]:8333
+[2a01:4f8:c0c:1029::2]:8333
+[2a01:4f8:c0c:105f::2]:8333
+[2a01:4f8:c0c:1064::2]:8333
+[2a01:4f8:c0c:106b::2]:8333
+[2a01:4f8:c0c:106d::2]:8333
+[2a01:4f8:c0c:1070::2]:8333
+[2a01:4f8:c0c:1105::2]:8333
+[2a01:4f8:c0c:1106::2]:8333
+[2a01:4f8:c0c:1134::2]:8333
+[2a01:4f8:c0c:1135::2]:8333
+[2a01:4f8:c0c:113c::2]:8333
+[2a01:4f8:c0c:115c::2]:8333
+[2a01:4f8:c0c:115e::2]:8333
+[2a01:4f8:c0c:1170::2]:8333
+[2a01:4f8:c0c:1172::2]:8333
+[2a01:4f8:c0c:117b::2]:8333
+[2a01:4f8:c0c:117c::2]:8333
+[2a01:4f8:c0c:1180::2]:8333
+[2a01:4f8:c0c:1181::2]:8333
+[2a01:4f8:c0c:1185::2]:8333
+[2a01:4f8:c0c:1186::2]:8333
+[2a01:4f8:c0c:1187::2]:8333
+[2a01:4f8:c0c:1188::2]:8333
+[2a01:4f8:c0c:1189::2]:8333
+[2a01:4f8:c0c:121::2]:8333
+[2a01:4f8:c0c:122::2]:8333
+[2a01:4f8:c0c:15a8::2]:8333
+[2a01:4f8:c0c:1da4::2]:8333
+[2a01:4f8:c0c:1ff7::2]:8333
+[2a01:4f8:c0c:2262::2]:8333
+[2a01:4f8:c0c:73d::2]:8333
+[2a01:4f8:c0c:790::2]:8333
+[2a01:4f8:c0c:7a8::2]:8333
+[2a01:4f8:c0c:7a9::2]:8333
+[2a01:4f8:c0c:7e9::2]:8333
+[2a01:4f8:c0c:816::2]:8333
+[2a01:4f8:c0c:817::2]:8333
+[2a01:4f8:c0c:818::2]:8333
+[2a01:4f8:c0c:820::2]:8333
+[2a01:4f8:c0c:821::2]:8333
+[2a01:4f8:c0c:822::2]:8333
+[2a01:4f8:c0c:896::2]:8333
+[2a01:4f8:c0c:8c6::2]:8333
+[2a01:4f8:c0c:8c9::2]:8333
+[2a01:4f8:c0c:8d1::2]:8333
+[2a01:4f8:c0c:8d2::2]:8333
+[2a01:4f8:c0c:8d9::2]:8333
+[2a01:4f8:c0c:8da::2]:8333
+[2a01:4f8:c0c:8dc::2]:8333
+[2a01:4f8:c0c:8f1::2]:8333
+[2a01:4f8:c0c:91e::2]:8333
+[2a01:4f8:c0c:927::2]:8333
+[2a01:4f8:c0c:939::2]:8333
+[2a01:4f8:c0c:944::2]:8333
+[2a01:4f8:c0c:951::2]:8333
+[2a01:4f8:c0c:967::2]:8333
+[2a01:4f8:c0c:96f::2]:8333
+[2a01:4f8:c0c:97d::2]:8333
+[2a01:4f8:c0c:982::2]:8333
+[2a01:4f8:c0c:9fc::2]:8333
+[2a01:4f8:c0c:b35::2]:8333
+[2a01:4f8:c0c:b4c::2]:8333
+[2a01:4f8:c0c:bfe::2]:8333
+[2a01:4f8:c0c:c08::2]:8333
+[2a01:4f8:c0c:c13::2]:8333
+[2a01:4f8:c0c:c14::2]:8333
+[2a01:4f8:c0c:c16::2]:8333
+[2a01:4f8:c0c:c19::2]:8333
+[2a01:4f8:c0c:c32::2]:8333
+[2a01:4f8:c0c:c36::2]:8333
+[2a01:4f8:c0c:c39::2]:8333
+[2a01:4f8:c0c:c58::2]:8333
+[2a01:4f8:c0c:c5e::2]:8333
+[2a01:4f8:c0c:c70::2]:8333
+[2a01:4f8:c0c:c72::2]:8333
+[2a01:4f8:c0c:c79::2]:8333
+[2a01:4f8:c0c:cb1::2]:8333
+[2a01:4f8:c0c:cf5::2]:8333
+[2a01:4f8:c0c:cff::2]:8333
+[2a01:4f8:c0c:d0e::2]:8333
+[2a01:4f8:c0c:d1b::2]:8333
+[2a01:4f8:c0c:d67::2]:8333
+[2a01:4f8:c0c:d68::2]:8333
+[2a01:4f8:c0c:d81::2]:8333
+[2a01:4f8:c0c:e2d::2]:8333
+[2a01:4f8:c0c:e30::2]:8333
+[2a01:4f8:c0c:e4f::2]:8333
+[2a01:4f8:c0c:e5b::2]:8333
+[2a01:4f8:c0c:e88::2]:8333
+[2a01:4f8:c0c:f69::2]:8333
+[2a01:4f8:c0c:f76::2]:8333
+[2a01:4f8:c0c:f77::2]:8333
+[2a01:4f8:c0c:f78::2]:8333
+[2a01:4f8:c0c:f89::2]:8333
+[2a01:4f8:c0c:f8a::2]:8333
+[2a01:4f8:c0c:fd6::2]:8333
+[2a01:4f8:c0c:fea::2]:8333
+[2a01:4f8:c17:24ee::2]:8333
+[2a01:4f8:c17:2c16::2]:8333
+[2a01:4f8:c17:330f::2]:8333
+[2a01:4f8:c17:34f0::2]:8333
+[2a01:4f8:c17:3986::2]:8333
[2a01:4f8:c17:3b02::2]:8333
-[2a01:4f8:c17:4245::2]:8333
-[2a01:4f8:c17:464f::2]:8333
-[2a01:4f8:c17:4a1c::2]:8333
-[2a01:4f8:c17:4c5d::2]:8333
+[2a01:4f8:c17:3d85::2]:8333
+[2a01:4f8:c17:4271::2]:8333
+[2a01:4f8:c17:5dc0::2]:8333
+[2a01:4f8:c17:63a0::2]:8333
[2a01:4f8:c17:67f8::2]:8333
-[2a01:4f8:c17:6dd0::2]:8333
[2a01:4f8:c17:710b::2]:8333
-[2a01:4f8:c17:714::2]:8333
-[2a01:4f8:c17:72c6::2]:8333
-[2a01:608:ffff:a009:8bf5:879d:e51a:f837]:8333
+[2a01:4f8:c17:e00::2]:8333
[2a01:680:10:10::1]:8333
[2a01:6f0:ffff:120::8dcb]:8333
-[2a01:79c:cebc:857c:98c1:88ff:fef5:90de]:8333
-[2a01:79d:7377:2629:7e57:7e57:1:1]:8333
-[2a01:7c8:aaac:43d:5054:ff:fe4e:3dd4]:8333
+[2a01:79d:b7dd:ffb4:5d86:70b8:fc7f:f253]:8333
+[2a01:7a0:2:1374::4]:8333
+[2a01:7a0:2:1374::5]:8333
+[2a01:7a0:2:137c::3]:8333
+[2a01:7c8:aaaa:373:5054:ff:feb3:2947]:8333
+[2a01:7c8:aaaa:3a0:5054:ff:fe8c:974c]:8333
+[2a01:7c8:aab0:4b7:910d:625e:a13e:c342]:8333
[2a01:7c8:aab5:3e6:5054:ff:fed7:4e54]:8333
+[2a01:7c8:aab5:41e:5054:ff:fe38:f4fb]:8333
+[2a01:7c8:aaba:343::8333]:8333
+[2a01:7c8:aabc:18c:5054:ff:fefd:3b49]:8333
[2a01:7c8:aabd:3d5:5054:ff:fe95:f586]:8333
-[2a01:7c8:aac1:453:d0d2:af96:fa88:5d0e]:8333
-[2a01:7c8:aac3:663:5054:ff:fe25:8c69]:8333
-[2a01:7c8:aac3:97:5054:ff:fea7:3780]:8333
-[2a01:7c8:aac4:567:5054:ff:fedc:518a]:8333
-[2a01:7e00::f03c:91ff:fe26:8c87]:8333
[2a01:7e00::f03c:91ff:fe50:94b8]:8333
-[2a01:7e00::f03c:91ff:fe55:2c]:8333
-[2a01:7e00::f03c:91ff:fe89:1143]:8333
-[2a01:7e00::f03c:91ff:fe89:53fd]:8333
-[2a01:7e00::f03c:91ff:fedf:b70f]:8333
-[2a01:b000::4166:515b:ef9e:b3]:8333
+[2a01:8e01:b943:3a63:d250:99ff:fe1f:4fb2]:8333
[2a01:b2e0:2::40]:8333
-[2a01:e34:ec29:24c0:f3:ddaf:9f59:586f]:8333
+[2a01:d0:0:1c::245]:8333
+[2a01:d0:8fc3::2]:8333
+[2a01:e34:ec29:e8d0:25c7:c1ce:b7a3:d238]:8333
+[2a01:e34:ec4a:c2d0:1cf3:40d2:a79f:3901]:8333
[2a01:e34:eed7:6670:ec1b:bf7c:b012:6069]:8333
+[2a01:e35:2433:e320:9c8e:6ff0:990f:f06e]:8333
[2a01:e35:2ee5:610:21f:d0ff:fe4e:7460]:8333
-[2a01:e35:8a3f:47c0:c617:feff:fe3c:9fbd]:8333
-[2a01:e35:8bff:70b0:1e1b:dff:fe0b:236d]:8333
-[2a02:1205:34c3:a4e0:d63d:7eff:fe98:10c8]:8333
-[2a02:1205:34da:aa00:5882:249d:ddbf:bc43]:8333
[2a02:1205:5051:a640:d6ae:52ff:fea3:ac]:8333
-[2a02:1205:c689:d980:baae:edff:feea:9445]:8333
[2a02:120b:2c2a:5ec0:10dd:31ff:fe42:5079]:8333
-[2a02:120b:2c35:69d0:219:99ff:fe6b:4ec3]:8333
-[2a02:120b:c3c2:ff60:21f:5bff:fec3:a7ad]:24312
-[2a02:13b8:4000:1000:216:e6ff:fe92:8619]:8333
-[2a02:13b8:4000:1000::27]:8333
-[2a02:17d0:2a:4400:40f:3dd4:b053:47ad]:8333
-[2a02:180:1:1::517:afb]:8333
+[2a02:168:6273::614]:8333
[2a02:180:6:1::18]:8333
-[2a02:1810:1d11:f900:6872:f28e:8126:f635]:8333
-[2a02:27a8:0:1:52e5:49ff:fee3:3b49]:8333
-[2a02:348:86:3011::1]:8333
+[2a02:180:6:1::ed]:8333
+[2a02:1811:b707:116:8c1f:c5be:bf3a:54df]:8333
+[2a02:20c8:1422:1::a3]:8333
+[2a02:2168:d05:2c00:216:3eff:fef7:a099]:8333
+[2a02:27f8:2012:0:e9f7:268f:c441:6129]:8333
+[2a02:2808:5401:0:225:90ff:fe4e:ee42]:8333
[2a02:390:9000:0:218:7dff:fe10:be33]:8333
-[2a02:582:78c1:7600:2d49:6212:29d3:abb]:8333
-[2a02:6080::1:190b:69e3]:8333
-[2a02:750:7:3305::575]:8333
-[2a02:752:100:3::53]:8333
-[2a02:7aa0:1201::7501:d950]:8333
-[2a02:7aa0:1201::deb3:81a2]:8333
-[2a02:7aa0:1619::a037:69a6]:8333
-[2a02:810d:14c0:8694:d250:99ff:fe81:23d9]:8333
-[2a02:a50::dacb:8aff:fe36:8d2d]:8333
-[2a02:c200:0:10:3:0:2591:1]:8333
-[2a02:c200:1:10:2:5:9982:1]:8333
-[2a02:c200:1:10:3:0:9290:1]:8333
-[2a02:c205:3000:7158::1]:8333
-[2a02:c205:3001:4522::1]:8333
-[2a02:c205:3001:6549::1]:8333
-[2a02:c207:2008:3772::1]:8333
-[2a02:c207:2008:6519::1]:8333
+[2a02:7aa0:1201::bd4e:1219]:8333
+[2a02:7aa0:1619::590:eba2]:8333
+[2a02:7aa0:1619::a7a2:7e86]:8333
+[2a02:c200:1:10:2:5:800:1]:8333
+[2a02:c205:2002:2550::17]:8333
+[2a02:c205:2008:272::1]:8333
+[2a02:c205:2010:5484::1]:8333
+[2a02:c205:3001:6710::1]:8333
+[2a02:c205:3001:7714::2]:8333
+[2a02:c205:3002:888::1]:8333
+[2a02:c207:2002:9013::1]:8333
+[2a02:c207:2008:3392::1]:8333
+[2a02:c207:2008:8337::1]:8333
[2a02:c207:2009:213::1]:8333
-[2a02:c207:2009:7858::1]:8333
-[2a02:c207:2010:302::1]:8333
+[2a02:c207:2010:7751::1]:8333
+[2a02:c207:2010:7986::1]:8333
+[2a02:c207:2011:7829::1]:8333
+[2a02:c207:2011:8299::1]:8333
+[2a02:c207:2012:2133::1]:8333
+[2a02:c207:2012:263::1]:8333
+[2a02:c207:2012:2682::1]:8333
+[2a02:c207:2012:3635::1]:8333
+[2a02:c207:2012:4826::1]:8333
+[2a02:c207:2012:5668::1]:8333
[2a02:c207:3001:5824::1]:8333
+[2a02:c207:3001:7776::1]:8333
+[2a02:c207:3002:621::1]:8333
[2a02:ce80:0:20::1]:8333
+[2a03:2260:11e:301::8]:8333
+[2a03:2260:11e:302::3]:8333
[2a03:4000:2:496::8]:8333
+[2a03:4000:6:12e7::1]:8333
[2a03:4000:6:416c::53]:8333
-[2a03:4000:6:8009::1]:8333
-[2a03:4000:9:8e::1]:8333
-[2a03:7380:2140:17:51fe:3519:b571:4a13]:8333
-[2a03:b0c0:0:1010::7a3:1001]:8333
-[2a03:b0c0:0:1010::7aa:4001]:8333
+[2a03:b0c0:3:d0::1219:6001]:8333
[2a03:b0c0:3:d0::1b99:c001]:8333
[2a03:b0c0:3:d0::1b99:e001]:8333
[2a03:b0c0:3:d0::1b9a:3001]:8333
-[2a03:b0c0:3:d0::2208:6001]:8333
[2a03:b0c0:3:d0::23f7:1001]:8333
+[2a03:b0c0:3:d0::23f7:2001]:8333
+[2a03:b0c0:3:d0::23f7:4001]:8333
+[2a03:b0c0:3:d0::23f7:5001]:8333
+[2a03:b0c0:3:d0::23f7:7001]:8333
[2a03:b0c0:3:d0::23f7:9001]:8333
+[2a03:b0c0:3:d0::23fb:1001]:8333
[2a03:b0c0:3:d0::23fb:2001]:8333
[2a03:b0c0:3:d0::23fb:3001]:8333
[2a03:b0c0:3:d0::23fb:5001]:8333
-[2a03:b0c0:3:d0::23fb:7001]:8333
+[2a03:b0c0:3:d0::23fb:6001]:8333
+[2a03:b0c0:3:d0::23fb:8001]:8333
+[2a03:b0c0:3:d0::23ff:b001]:8333
[2a03:b0c0:3:d0::2400:1]:8333
[2a03:b0c0:3:d0::2400:3001]:8333
+[2a03:b0c0:3:d0::2400:4001]:8333
[2a03:b0c0:3:d0::2400:e001]:8333
+[2a03:b0c0:3:d0::2400:f001]:8333
[2a03:b0c0:3:d0::2401:e001]:8333
+[2a03:b0c0:3:d0::2402:1]:8333
[2a03:b0c0:3:d0::2402:2001]:8333
[2a03:b0c0:3:d0::2402:8001]:8333
[2a03:b0c0:3:d0::2402:9001]:8333
[2a03:b0c0:3:d0::2402:b001]:8333
[2a03:b0c0:3:d0::2402:d001]:8333
+[2a03:b0c0:3:d0::2402:e001]:8333
[2a03:b0c0:3:d0::2403:1001]:8333
[2a03:b0c0:3:d0::2403:2001]:8333
+[2a03:b0c0:3:d0::2403:3001]:8333
[2a03:b0c0:3:d0::2403:4001]:8333
[2a03:b0c0:3:d0::2403:6001]:8333
[2a03:b0c0:3:d0::2403:a001]:8333
[2a03:b0c0:3:d0::2403:b001]:8333
+[2a03:b0c0:3:d0::2403:e001]:8333
[2a03:b0c0:3:d0::2403:f001]:8333
+[2a03:b0c0:3:d0::2404:1]:8333
+[2a03:b0c0:3:d0::2404:3001]:8333
+[2a03:b0c0:3:d0::2404:4001]:8333
[2a03:b0c0:3:d0::2404:6001]:8333
+[2a03:b0c0:3:d0::2404:8001]:8333
+[2a03:b0c0:3:d0::2404:9001]:8333
[2a03:b0c0:3:d0::2404:b001]:8333
-[2a03:f80:ed15:149:154:155:235:1]:8333
-[2a04:1980:3100:1aac:e61d:2dff:fe29:f241]:8333
-[2a04:1980:3100:1aac:e61d:2dff:fe29:f251]:8333
-[2a04:2180:0:1::5a49:3c06]:8333
-[2a04:2180:1:7::3]:8333
-[2a04:2e00:5:2e:9a4b:e1ff:fe62:6dc0]:8333
+[2a03:b0c0:3:d0::2405:2001]:8333
+[2a03:b0c0:3:d0::2405:3001]:8333
+[2a03:b0c0:3:d0::2405:8001]:8333
+[2a03:b0c0:3:d0::2405:9001]:8333
+[2a03:b0c0:3:d0::2405:a001]:8333
+[2a03:b0c0:3:d0::44b8:9001]:8333
+[2a03:b0c0:3:d0::44b8:e001]:8333
+[2a03:b0c0:3:d0::44b8:f001]:8333
+[2a03:b0c0:3:d0::44b9:1]:8333
+[2a03:b0c0:3:d0::44b9:1001]:8333
+[2a03:b0c0:3:d0::44b9:2001]:8333
+[2a03:b0c0:3:d0::44b9:4001]:8333
+[2a04:2180:0:2::94]:8333
[2a04:3542:1000:910:8492:b8ff:fe91:711d]:8333
-[2a04:dbc3:fffe:0:e61f:13ff:fe95:8401]:8333
+[2a04:52c0:101:122::ba8e]:8333
+[2a05:3580:d400:140d:da6e:826e:e771:4100]:8333
[2a06:9fc0:2a06:9fc0:2a06:9fc1:67c:e706]:8333
-[2c0f:f738:2004:82::]:8333
-2hryb3uh3tzwgnya.onion:8333
-3nmbbakinewlgdln.onion:8333
-3qeri3tmhzmpegyv.onion:8333
-4wdknmecghcmclq5.onion:8333
-53tsjt6zq3iasv5q.onion:8333
-5cg7qeywvwo6vxpt.onion:8333
-5gbcrgqxcbxj253s.onion:8333
-6cn4ilbwkrkh7gwo.onion:8333
-6e4jrnn7igeqxmlf.onion:8333
-6ymgbvnn6d5nfmv4.onion:8333
-6zsh3bfduhpo7ldl.onion:8333
-72fq6phv4fg4rhvh.onion:8333
-7gdqp6npusk4lfwk.onion:8333
-a7emxol55e623lqc.onion:8333
-assbiydziq77zaki.onion:8333
+226eupdnaouu4h2v.onion:8333
+2frgxpe5mheghyom.onion:8333
+3ihjnsvwc3x6dp2o.onion:8333
+3w77hrilg6q64opl.onion:8333
+4ls4o6iszcd7mkfw.onion:8333
+4p3abjxqppzxi7qi.onion:8333
+546esc6botbjfbxb.onion:8333
+5msftytzlsskr4ut.onion:8333
+5ty6rxpgrkmdnk4a.onion:8333
+akmqyuidrf56ip26.onion:8333
+alhlegtjkdmbqsvt.onion:8333
bafk5ioatlgt7dgl.onion:8333
-bk7yp6epnmcllq72.onion:8333
-brwqezn6le54w2bb.onion:8333
-bs4bq6s6qkvt5hpi.onion:8333
bup5n5e3kurvjzf3.onion:8333
-c2tpqkaz4ihjzwgb.onion:8333
-cernrmrk5zomzozn.onion:8333
-cfyegj64ht3jpodr.onion:8333
-cg5vg54cazzpvoug.onion:8333
-cgk4u2lxrvml4jvb.onion:8333
cjygd7pu5lqkky5j.onion:8333
-d6wubsdtr46dd5ki.onion:8333
-dfq6yjc3aelplwr4.onion:8333
+cyvpgt25274i5b7c.onion:8333
+dekj4wacywpqsad3.onion:8333
dqpxwlpnv3z3hznl.onion:8333
-eamfospuveabaimd.onion:8333
-ep2mjzox3kvb6ax4.onion:8333
-fpbxb4wjudiw2w5a.onion:8333
-fu5hfsbbf5jwsvhv.onion:8333
-g4freoibsczujle3.onion:8333
+drarzpycbtxwbcld.onion:8333
+drp4pvejybx2ejdr.onion:8333
+dxkmtmwiq7ddtgul.onion:8333
+e6j57zkyibu2smad.onion:8333
+ejcqevujcqltqn7d.onion:8333
+eqgbt2ghfvsshbvo.onion:8333
+fgizgkdnndilo6ka.onion:8333
+fqxup4oev33eeidg.onion:8333
gb5ypqt63du3wfhn.onion:8333
ggdy2pb2avlbtjwq.onion:8333
-gh2aiddzxmvyrnue.onion:8333
-gnxgylbgzvaazkq7.onion:8333
-hnizdxnejel64ubk.onion:8333
-htvdcmlc3abji2ab.onion:8443
-hwuboois4gslupgx.onion:8333
-hxz6gowludlj6d5a.onion:8333
-j6umo4bnsztpsonc.onion:8333
-jdunmaocwbbnw565.onion:8333
-ktv3qlxl7xvmdlf4.onion:8333
+hahhloezyfqh3hci.onion:8333
+ihdv6bzz2gx72fs7.onion:8333
+in7r5ieo7ogkxbne.onion:8333
kvd44sw7skb5folw.onion:8333
-kwimnzm6vd4zakvl.onion:8333
-la5xhk3lprxzxmz2.onion:8333
-lc7cx67end26uutp.onion:8352
-mwu5og2agcspmgkx.onion:8333
-mzxkipiyekaoh7my.onion:8333
-n6rwlrtwpqc7qwo7.onion:8333
-nj36424yccqph62z.onion:8333
-o256w7t3vcgktmxk.onion:8333
+mn744hbioayn3ojs.onion:8333
+ms4ntrrisfxzpvmy.onion:8333
+n5lqwpjabqg62ihx.onion:8333
o4sl5na6jeqgi3l6.onion:8333
-okdzjarwekbshnof.onion:8333
-oyebydl2pacx6v26.onion:8333
-p5mx2imj75dpmime.onion:8333
+omjv24nbck4k5ud6.onion:8333
+po3j2hfkmf7sh36o.onion:8333
psco6bxjewljrczx.onion:8333
-pxtgswet6tlgrbwj.onion:8333
-rb4v3fhgx2zr4rre.onion:8333
+qi5yr6lvlckzffor.onion:8333
+qlv6py6hdtzipntn.onion:8333
+qynmpgdbp23xyfnj.onion:8333
+rhtawcs7xak4gi3t.onion:8333
+rjacws757ai66lre.onion:8333
rjlnp3hwvrsmap6e.onion:8333
+rkdvqcrtfv6yt4oy.onion:8333
rlafimkctvz63llg.onion:8333
-rxjvy5eyttep5tts.onion:8333
+rlj4ppok4dnsdu5n.onion:8333
seoskudzk6vn6mqz.onion:8333
-tpgdufxxsw3jkrdf.onion:8333
-tuiyvqgi3o675pjb.onion:8333
+tayqi57tfiy7x3vk.onion:8333
+tchop676j6yppwwm.onion:8333
+trrtyp3sirmwttyu.onion:8333
tx4zd7d5exonnblh.onion:8333
-uokg6avfgbhofls3.onion:8333
-v3gjphgqy5hygcml.onion:8333
-vhdoxqq63xr53ol7.onion:8333
+u4ecb7txxi6l3gix.onion:8333
+umcxcmfycvejw264.onion:8333
+v7xqd42ocemalurd.onion:8333
+vb267mt3lnwfdmdb.onion:8333
+vev3n5fxfrtqj6e5.onion:8333
visevrizz3quyagj.onion:8333
-vqpye2k5rcqvj5mq.onion:8333
-wfsx2gi7djhy22hk.onion:8333
-wg6vwmbrzyyzapun.onion:8333
-xub4w3w4wwk56xiq.onion:8333
+vpg6p5e5ln33dqtp.onion:8333
+vr2ruasinafoy3fl.onion:8333
+x6pthvd5x6abyfo7.onion:8333
+xbwbzrspvav7u5ie.onion:8333
+xfcevnql2chnawko.onion:8333
ycivnom44dmxx4ob.onion:8333
-ywskufc62bf2fum4.onion:8333
-z4fax2vxg23t2ddf.onion:8333
-zo5dklwelmdrpo5n.onion:8333
+yzdvlv5daitafekn.onion:8333
diff --git a/contrib/verify-commits/gpg.sh b/contrib/verify-commits/gpg.sh
index b01e2a6d39..abd8f5fd9f 100755
--- a/contrib/verify-commits/gpg.sh
+++ b/contrib/verify-commits/gpg.sh
@@ -46,6 +46,11 @@ for LINE in $(echo "$GPG_RES"); do
REVSIG=true
GOODREVSIG="[GNUPG:] GOODSIG ${LINE#* * *}"
;;
+ "[GNUPG:] EXPKEYSIG "*)
+ [ "$BITCOIN_VERIFY_COMMITS_ALLOW_REVSIG" != 1 ] && exit 1
+ REVSIG=true
+ GOODREVSIG="[GNUPG:] GOODSIG ${LINE#* * *}"
+ ;;
esac
done
if ! $VALID; then
diff --git a/contrib/verify-commits/verify-commits.sh b/contrib/verify-commits/verify-commits.sh
index 74b7f38375..7194b040eb 100755
--- a/contrib/verify-commits/verify-commits.sh
+++ b/contrib/verify-commits/verify-commits.sh
@@ -39,7 +39,7 @@ PREV_COMMIT=""
while true; do
if [ "$CURRENT_COMMIT" = $VERIFIED_ROOT ]; then
echo "There is a valid path from "$CURRENT_COMMIT" to $VERIFIED_ROOT where all commits are signed!"
- exit 0;
+ exit 0
fi
if [ "$CURRENT_COMMIT" = $VERIFIED_SHA512_ROOT ]; then
diff --git a/contrib/verifybinaries/README.md b/contrib/verifybinaries/README.md
index ed3e14fb6c..3ffe0a2f28 100644
--- a/contrib/verifybinaries/README.md
+++ b/contrib/verifybinaries/README.md
@@ -26,6 +26,14 @@ The script returns 0 if everything passes the checks. It returns 1 if either the
./verify.sh bitcoin-core-0.13.0-rc3
```
+If you only want to download the binaries of certain platform, add the corresponding suffix, e.g.:
+
+```sh
+./verify.sh bitcoin-core-0.11.2-osx
+./verify.sh 0.12.0-linux
+./verify.sh bitcoin-core-0.13.0-rc3-win64
+```
+
If you do not want to keep the downloaded binaries, specify anything as the second parameter.
```sh
diff --git a/contrib/verifybinaries/verify.sh b/contrib/verifybinaries/verify.sh
index e20770c96a..409f517c9f 100755
--- a/contrib/verifybinaries/verify.sh
+++ b/contrib/verifybinaries/verify.sh
@@ -3,7 +3,8 @@
# Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
-### This script attempts to download the signature file SHA256SUMS.asc from bitcoin.org
+### This script attempts to download the signature file SHA256SUMS.asc from
+### bitcoincore.org and bitcoin.org and compares them.
### It first checks if the signature passes, and then downloads the files specified in
### the file, and checks if the hashes of these files match those that are specified
### in the signature file.
@@ -22,7 +23,9 @@ TMPFILE="hashes.tmp"
SIGNATUREFILENAME="SHA256SUMS.asc"
RCSUBDIR="test"
-BASEDIR="https://bitcoin.org/bin/"
+HOST1="https://bitcoincore.org"
+HOST2="https://bitcoin.org"
+BASEDIR="/bin/"
VERSIONPREFIX="bitcoin-core-"
RCVERSIONSTRING="rc"
@@ -42,13 +45,36 @@ if [ -n "$1" ]; then
VERSION="$VERSIONPREFIX$1"
fi
- #now let's see if the version string contains "rc", and strip it off if it does
- # and simultaneously add RCSUBDIR to BASEDIR, where we will look for SIGNATUREFILENAME
- if [[ $VERSION == *"$RCVERSIONSTRING"* ]]; then
- BASEDIR="$BASEDIR${VERSION/%-$RCVERSIONSTRING*}/"
- BASEDIR="$BASEDIR$RCSUBDIR.$RCVERSIONSTRING${VERSION: -1}/"
+ STRIPPEDLAST="${VERSION%-*}"
+
+ #now let's see if the version string contains "rc" or a platform name (e.g. "osx")
+ if [[ "$STRIPPEDLAST-" == "$VERSIONPREFIX" ]]; then
+ BASEDIR="$BASEDIR$VERSION/"
else
+ # let's examine the last part to see if it's rc and/or platform name
+ STRIPPEDNEXTTOLAST="${STRIPPEDLAST%-*}"
+ if [[ "$STRIPPEDNEXTTOLAST-" == "$VERSIONPREFIX" ]]; then
+
+ LASTSUFFIX="${VERSION##*-}"
+ VERSION="$STRIPPEDLAST"
+
+ if [[ $LASTSUFFIX == *"$RCVERSIONSTRING"* ]]; then
+ RCVERSION="$LASTSUFFIX"
+ else
+ PLATFORM="$LASTSUFFIX"
+ fi
+
+ else
+ RCVERSION="${STRIPPEDLAST##*-}"
+ PLATFORM="${VERSION##*-}"
+
+ VERSION="$STRIPPEDNEXTTOLAST"
+ fi
+
BASEDIR="$BASEDIR$VERSION/"
+ if [[ $RCVERSION == *"$RCVERSIONSTRING"* ]]; then
+ BASEDIR="$BASEDIR$RCSUBDIR.$RCVERSION/"
+ fi
fi
SIGNATUREFILE="$BASEDIR$SIGNATUREFILENAME"
@@ -58,7 +84,7 @@ else
fi
#first we fetch the file containing the signature
-WGETOUT=$(wget -N "$BASEDIR$SIGNATUREFILENAME" 2>&1)
+WGETOUT=$(wget -N "$HOST1$BASEDIR$SIGNATUREFILENAME" 2>&1)
#and then see if wget completed successfully
if [ $? -ne 0 ]; then
@@ -69,6 +95,22 @@ if [ $? -ne 0 ]; then
exit 2
fi
+WGETOUT=$(wget -N -O "$SIGNATUREFILENAME.2" "$HOST2$BASEDIR$SIGNATUREFILENAME" 2>&1)
+if [ $? -ne 0 ]; then
+ echo "bitcoin.org failed to provide signature file, but bitcoincore.org did?"
+ echo "wget output:"
+ echo "$WGETOUT"|sed 's/^/\t/g'
+ clean_up $SIGNATUREFILENAME
+ exit 3
+fi
+
+SIGFILEDIFFS="$(diff $SIGNATUREFILENAME $SIGNATUREFILENAME.2)"
+if [ "$SIGFILEDIFFS" != "" ]; then
+ echo "bitcoin.org and bitcoincore.org signature files were not equal?"
+ clean_up $SIGNATUREFILENAME $SIGNATUREFILENAME.2
+ exit 4
+fi
+
#then we check it
GPGOUT=$(gpg --yes --decrypt --output "$TMPFILE" "$SIGNATUREFILENAME" 2>&1)
@@ -88,17 +130,27 @@ if [ $RET -ne 0 ]; then
echo "gpg output:"
echo "$GPGOUT"|sed 's/^/\t/g'
- clean_up $SIGNATUREFILENAME $TMPFILE
+ clean_up $SIGNATUREFILENAME $SIGNATUREFILENAME.2 $TMPFILE
exit "$RET"
fi
+if [ -n "$PLATFORM" ]; then
+ grep $PLATFORM $TMPFILE > "$TMPFILE-plat"
+ TMPFILESIZE=$(stat -c%s "$TMPFILE-plat")
+ if [ $TMPFILESIZE -eq 0 ]; then
+ echo "error: no files matched the platform specified" && exit 3
+ fi
+ mv "$TMPFILE-plat" $TMPFILE
+fi
+
#here we extract the filenames from the signature file
FILES=$(awk '{print $2}' "$TMPFILE")
#and download these one by one
for file in $FILES
do
- wget --quiet -N "$BASEDIR$file"
+ echo "Downloading $file"
+ wget --quiet -N "$HOST1$BASEDIR$file"
done
#check hashes
@@ -116,7 +168,7 @@ fi
if [ -n "$2" ]; then
echo "Clean up the binaries"
- clean_up $FILES $SIGNATUREFILENAME $TMPFILE
+ clean_up $FILES $SIGNATUREFILENAME $SIGNATUREFILENAME.2 $TMPFILE
else
echo "Keep the binaries in $WORKINGDIR"
clean_up $TMPFILE
diff --git a/contrib/zmq/zmq_sub.py b/contrib/zmq/zmq_sub.py
index ea398a27ea..5cc19761d4 100755
--- a/contrib/zmq/zmq_sub.py
+++ b/contrib/zmq/zmq_sub.py
@@ -32,7 +32,7 @@ import sys
if not (sys.version_info.major >= 3 and sys.version_info.minor >= 5):
print("This example only works with Python 3.5 and greater")
- exit(1)
+ sys.exit(1)
port = 28332
diff --git a/contrib/zmq/zmq_sub3.4.py b/contrib/zmq/zmq_sub3.4.py
index 1cb7eec0c0..bfb7ea9eae 100755
--- a/contrib/zmq/zmq_sub3.4.py
+++ b/contrib/zmq/zmq_sub3.4.py
@@ -36,7 +36,7 @@ import sys
if not (sys.version_info.major >= 3 and sys.version_info.minor >= 4):
print("This example only works with Python 3.4 and greater")
- exit(1)
+ sys.exit(1)
port = 28332