Commit Diff
Diff:
/dev/null
ee50ffddda4b1e709e9f7316511c32c1a0bc5ff5
Commit:
ee50ffddda4b1e709e9f7316511c32c1a0bc5ff5
Tree:
c777ce3091a409085d4f4bc68bb8103eef65429c
Author:
jrmu <jrmu@ircnow.org>
Committer:
jrmu <jrmu@ircnow.org>
Date:
Tue Sep 8 10:23:36 2020 UTC
Message:
Initial import
blob - /dev/null
blob + 294ed0bb4de2e8349d901cdf80cb2691b30aa282 (mode 644)
--- /dev/null
+++ LICENSE
@@ -0,0 +1,10 @@
+Copyright (C) 2020 by jrmu <jrmu@ircnow.org>
+
+Permission is granted to use, copy, modify, and/or distribute
+this work for any purpose with or without fee. This work is offered
+as-is, with absolutely no warranty whatsoever. The author is not
+responsible for any damages that result from using this work.
+
+The file Words comes from:
+
+https://github.com/first20hours/google-10000-english/raw/master/google-10000-english-usa-no-swears-medium.txt
blob - /dev/null
blob + e003442ddb936af7f0057dc62b6988e760ea98b2 (mode 644)
--- /dev/null
+++ README
@@ -0,0 +1,57 @@
+botnow: the IRCNow bot for internet services
+
+botnow has only been tested on openbsd 6.7
+
+### System requirements ###
+
+In order to install botnow, you will need to have the following installed and
+configured:
+
+1) sendmail (https://wiki.ircnow.org/index.php?n=Openbsd.Opensmtpd)
+2) nsd (https://wiki.ircnow.org/index.php?n=Openbsd.Nsd)
+3) openhttpd (https://wiki.ircnow.org/index.php?n=Openbsd.Openhttpd)
+4) php (https://wiki.ircnow.org/index.php?n=Openbsd.Php)
+5) znc (https://wiki.ircnow.org/index.php?n=Openbsd.Znc)
+6) IPv6 (https://wiki.ircnow.org/index.php?n=Openbsd.Staticnet)
+
+### Install instructions ###
+
+$ tar xvzf botnow.tgz
+$ cd botnow
+$ doas make
+$ doas su botnow
+$ cd /home/botnow/
+
+Fill the file ipv6s with all the free IPv6 addresses available on your server.
+
+Edit the variables in botnow.pl
+
+$ ./botnow.pl
+
+### Configuration of httpd.conf ###
+
+server "www.$hostname" {
+ alias "$hostname"
+ listen on $ext_ip port 80
+ location "/.well-known/acme-challenge/*" {
+ root "/acme"
+ request strip 2
+ }
+ location "*.php" {
+ fastcgi socket "/run/php-fpm.sock"
+ }
+ root "/htdocs/ircnow/"
+}
+
+### Reinstall ###
+
+If you need to reinstall, run
+
+$ doas make -i
+
+### Changelog ###
+
+Version 0.02: Updated wiki pages, added warnings to common errors, added support
+for trustallcerts
+
+Version 0.01 -- First public version of botnow
blob - /dev/null
blob + 2594a651ade7d39b9410defe1d5b4322326f9b2e (mode 644)
--- /dev/null
+++ botnow.pl
@@ -0,0 +1,957 @@
+#!/usr/bin/perl
+
+# Name of local network
+my $localnet = "ircnow";
+
+# IP address to connect to bouncer
+my $host = "127.0.0.1";
+
+# Port to connect to bouncer (plaintext, not SSL)
+my $port = "1337";
+
+# Bouncer hostname
+my $hostname = "example.ircnow.org";
+
+# Users will bind to this external IPv4 address
+my $ip4 = "192.168.1.1";
+
+# Nick of bot
+my $botnick = "botnick";
+my $pass = "YourPassword";
+
+# Nick of oper
+my $opernick = "botnick";
+my $operpass = "YourPassword";
+
+# Comma-separated list of channels for requesting bouncers
+my $chans = "#ircnow,#testing";
+
+# Number of words in password
+my $passlength = 3;
+
+# Comma-separated list of staff nicks; comment out for no highlights
+my $staff = "jrmu,test";
+
+# Comma-separated list of team channels on localnet
+my $teamchans = "#ircnow-team";
+
+# Mail from address
+my $mailfrom = 'support@ircnow.org';
+
+# DNS zone directory
+my $zonedir = "/var/nsd/zones/master/";
+
+# rDNS keys from Stallion in BuyVM
+my ($key, $hash) = ("ABCDE-FGHIJ-KLMNO", "ABCDEFGHIJKLMNOPQRST");
+
+# Network Interface Config File
+my $hostnameif = "/etc/hostname.vio0";
+
+# Terms of Service; don't edit lines with the word EOF
+my $terms = <<"EOF";
+IRCNow is a Christian network. Rules: no profanity, no porn, no illegal drugs, no gambling, no slander, no warez, no promoting violence, no spam, illegal cracking, or DDoS.
+Only one account per person. Don't share passwords. Religious or political content may be moderated. Full terms: https://ircnow.org/terms.php . Do you agree? (yes/no)
+EOF
+
+# Comment out the line below
+die("You did not configure the bot!");
+
+
+
+
+
+##### Do not edit code below #####
+
+
+
+
+
+use strict;
+use warnings;
+use IO::Socket;
+use IO::Select;
+use OpenBSD::Pledge;
+use OpenBSD::Unveil;
+use File::Copy qw(copy);
+use Digest::SHA qw(sha256_hex);
+use Data::Dumper;
+
+my $sysname = "botnow"; # system username
+my $wwwpath = "/var/www/htdocs/botnow"; # Web folder path
+my $ipv6path = "ipv6s"; # ipv6 file path
+my $database = "/var/www/botnow/"; # database path
+
+unveil("./", "r") or die "Unable to unveil $!";
+unveil("$ipv6path", "rwc") or die "Unable to unveil $!";
+unveil("$database", "rwxc") or die "Unable to unveil $!";
+unveil("$zonedir", "rwc") or die "Unable to unveil $!";
+
+#dependencies for figlet
+unveil("/usr/local/bin/figlet", "rx") or die "Unable to unveil $!";
+unveil("/usr/lib/libc.so.95.1", "r") or die "Unable to unveil $!";
+unveil("/usr/libexec/ld.so", "r") or die "Unable to unveil $!";
+
+#dependencies for mail
+unveil("/usr/sbin/sendmail", "rx") or die "Unable to unveil $!";
+unveil("/usr/lib/libutil.so.13.1", "r") or die "Unable to unveil $!";
+#unveil("/usr/lib/libc.so.95.1", "r") or die "Unable to unveil $!";
+unveil("/bin/sh", "rx") or die "Unable to unveil $!";
+
+#dependencies for doas
+unveil("/usr/bin/doas", "rx") or die "Unable to unveil $!";
+
+#dependencies for encrypt
+unveil("/usr/bin/encrypt", "rx") or die "Unable to unveil $!";
+
+unveil() or die "Unable to lock unveil $!";
+
+#dns and inet for sockets, proc and exec for figlet
+#rpath for reading file, wpath for writing file, cpath for creating path
+pledge( qw(stdio rpath wpath cpath inet dns proc exec) ) or die "Unable to pledge: $!";
+
+my @networks;
+my @bots;
+my @words;
+my $records;
+my @months = qw( Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec );
+my @days = qw(Sun Mon Tue Wed Thu Fri Sat Sun);
+my @chans = split /,/m, $chans;
+my @teamchans = split /,/m, $teamchans;
+
+# Load list of networks
+# To add multiple servers for a single network, simplify create a new
+# entry for the same net name; znc ignores addnetwork commands when a network
+# already exists
+open(my $fh, '<', "networks") or die "Could not read file 'networks' $!";
+while (my $line = <$fh>) {
+ my ($name, $server, $trustcerts, $port);
+ chomp($line);
+ if ($line =~ /^#/ or $line =~ /^\s*$/) { # skip comments and whitespace
+ next;
+ } elsif ($line =~ /^\s*([-a-zA-Z0-9]+)\s*([-_.:a-zA-Z0-9]+)\s*(~|\+)?([0-9]+)\s*$/) {
+ ($name, $server, $port) = ($1, $2, $4);
+ if (!defined($3)) {
+ $trustcerts = 0;
+ } elsif ($3 eq "~") { # Use SSL but trust all certs
+ $port = "+".$port;
+ $trustcerts = 1;
+ } else { # Use SSL and verify certs
+ $port = "+".$port;
+ $trustcerts = 0;
+ }
+ push(@networks, {"name" => $name, "server" => $server, "port" => $port, "trustcerts" => $trustcerts });
+ } else {
+ die "network format invalid: $line\n";
+ }
+}
+close $fh;
+# networks must be sorted to avoid multiple connections
+@networks = sort @networks;
+
+# dictionary words for passwords
+open($fh, '<', "words") or die "Could not read file 'words' $!";
+chomp(@words = <$fh>);
+close $fh;
+
+# Validate ipv6s if it exists, otherwise load addresses from /etc/hostname.if
+
+if (!(-s "$ipv6path")) {
+ if (open($fh, '+<', $hostnameif)) {
+ my $ipv6s;
+ while (my $line = <$fh>) {
+ if ($line =~ /^\s*inet6 (alias )?([0-9a-f:]{4,}) [0-9]+\s*$/i) {
+ $ipv6s .= "$2\n";
+ }
+ }
+ close $fh;
+ open($fh, '>', "$ipv6path") or die "Could not write to '$ipv6path";
+ print $fh $ipv6s;
+ close $fh;
+ } else {
+ die "No IPv6 addresses in $ipv6path and cannot read '$hostnameif' $!";
+ }
+}
+
+if (open($fh, '+<', "$ipv6path")) {
+ my $ipv6s;
+ while (my $line = <$fh>) {
+ if ($line =~ /^\s*([0-9a-f:]{4,})\s*$/i) {
+ $ipv6s .= "$1\n";
+ }
+ }
+ close $fh;
+ open($fh, '>', "$ipv6path") or die "Could not write to '$ipv6path' $!";
+ print $fh $ipv6s;
+ close $fh;
+} else {
+ die "Cannot open '$ipv6path' $!";
+}
+
+# create sockets
+my $sel = IO::Select->new( );
+my $lastname = "";
+foreach my $network (@networks) {
+ if ($lastname eq $network->{name}) { # avoid duplicate connections
+ next;
+ }
+ $lastname = $network->{name};
+ my $socket = IO::Socket::INET->new(PeerAddr=>$host, PeerPort=>$port, Proto=>'tcp', Timeout=>'300') || print "Failed to establish connection\n";
+ $sel->add($socket);
+ my $tmp = {"sock" => $socket};
+ push(@bots, {%$tmp, %$network});
+ print $socket "NICK $botnick\r\n";
+ print $socket "USER $botnick * * :$botnick\r\n";
+}
+
+while(my @ready = $sel->can_read) {
+ my $bot;
+ foreach my $socket (@ready) {
+ foreach my $b (@bots) {
+ if($socket == $b->{sock}) {
+ $bot = $b;
+ last;
+ }
+ }
+ my $response;
+ if (!defined($response = <$socket>)) {
+ next;
+ }
+ if ($response =~ /^PING :ZNC\r\n$/i) {
+ print $socket "PONG :ZNC\r\n";
+ foreach my $chan (@chans) {
+ print $socket "JOIN ".$chan."\r\n";
+ }
+ } elsif ($response =~ /^:irc.znc.in 464 $botnick.? :Password required\r\n$/i) {
+ print $socket "PASS $botnick/$bot->{name}:$pass\r\n";
+ if ($bot->{name} =~ /$localnet/i) {
+ print $socket "PRIVMSG *status :LoadMod --type=user controlpanel\r\n";
+ print $socket "PRIVMSG *controlpanel :get Admin $botnick\r\n";
+ print $socket "PRIVMSG *controlpanel :get Nick cloneuser\r\n";
+ print $socket "OPER $opernick $operpass\r\n";
+ }
+ } elsif($response =~ /^:([^!]+![^@]+@[^@ ]+) PRIVMSG ([^ ]+) :(.*)\r\n$/i) {
+ my ($hostmask, $target, $reply) = ($1, $2, $3);
+ parsemsg($bot, $hostmask, $target, $reply);
+ } elsif($response =~ /^:([^!]+![^@]+@[^@ ]+) NOTICE ([^ ]+) :(.*)\r\n$/i) {
+ my ($hostmask, $target, $reply) = ($1, $2, $3);
+ parsenotice($bot, $hostmask, $target, $reply);
+ } elsif ($response =~ /^:irc\.[a-zA-Z0-9]+\.ircnow.org (\d\d\d) $botnick.? (.*)\r?\n?\r$/i) {
+ my ($code, $reply) = ($1, $2);
+ parsewhois($bot, $code, $reply);
+ } else {
+# print "Unexpected: $response\r\n";
+ }
+ }
+}
+
+sub sendmsg {
+ my( $bot, $target, $msg )=@_;
+ my $socket = $bot->{sock};
+ my @lines = split /\r?\n\r?/m, $msg;
+ foreach my $l (@lines) {
+ print $socket "PRIVMSG $target :$l\r\n";
+ # if not sending to znc
+ if ($bot->{name} =~ /$localnet/i and $target !~ /^\*/) {
+ sleep(1);
+ }
+ }
+}
+
+sub mailverify {
+ my( $username, $email, $password, $service )=@_;
+ my $hash = sha256_hex("$username");
+
+my $msg = <<"EOF";
+From: support \<$mailfrom\>
+To: $email
+Subject: Verify IRCNow Account
+MIME-Version: 1.0
+Content-Type: text/plain; charset=us-ascii
+Content-Disposition: inline
+
+You created the account $username with temporary password $password. Your server is
+$hostname, port is 31337 for SSL (secure connection), 1337 for plaintext.
+
+Please verify your email address:
+
+https://www.$hostname/register.php?id=$hash
+
+You *MUST* click on the link or your account will be deleted.
+
+IRCNow
+EOF
+open(my $fh, "| /usr/sbin/sendmail -tv -F support -f $mailfrom") or die "Could not send mail $!";
+print $fh $msg;
+close $fh;
+}
+
+sub www {
+ my( $username, $email, $password, $service )=@_;
+ my $hash = sha256_hex("$username");
+ my $filename = "$database/www";
+ my $lines = "";
+ if (open($fh, '+<', $filename)) {
+ while (my $line = <$fh>) {
+ $lines .= $line;
+ }
+ close $fh;
+ }
+ open($fh, '>', "$filename") or die "Could not write to '$database/www' $!";
+ print $fh $lines;
+ print $fh "Hash: $hash, Username: $username, Email: $email, Password: $password\n";
+ close $fh;
+}
+
+sub pmstaff {
+ my( $sender, $msg )=@_;
+ my @nicks = split /,/m, $staff;
+ my $bot;
+
+ if (!defined($staff)) { return; }
+
+ #prevent duplicates on other networks
+ if ($sender =~ /\|/) {
+ return;
+ }
+
+ foreach my $b (@bots) {
+ if($b->{name} =~ /$localnet/i) {
+ $bot = $b;
+ last;
+ }
+ }
+ foreach my $nick (@nicks) {
+ sendmsg($bot, $nick, "$msg");
+ }
+}
+
+sub whois {
+ my( $socket, $target )=@_;
+ print $socket "WHOIS $target $target\r\n";
+}
+
+sub ctcp {
+ my( $socket, $target )=@_;
+# print $socket "PRIVMSG $target :".chr(01)."CLIENTINFO".chr(01)."\r\n";
+# print $socket "PRIVMSG $target :".chr(01)."FINGER".chr(01)."\r\n";
+# print $socket "PRIVMSG $target :".chr(01)."SOURCE".chr(01)."\r\n";
+ print $socket "PRIVMSG $target :".chr(01)."TIME".chr(01)."\r\n";
+# print $socket "PRIVMSG $target :".chr(01)."USERINFO".chr(01)."\r\n";
+ print $socket "PRIVMSG $target :".chr(01)."VERSION".chr(01)."\r\n";
+# print $socket "PRIVMSG $target :".chr(01)."PING".chr(01)."\r\n";
+}
+
+sub newpass {
+ my $len = scalar @words;
+ my $pass;
+ for (my $i=0; $i < $passlength; $i++) {
+ my $word = $words[int(rand($len))];
+ $word =~ s/(\w+)/\u$1/g;
+ $pass .= $word;
+ }
+ $pass .= int(rand(10));
+ $pass .= int(rand(10));
+ $pass .= int(rand(10));
+ return $pass;
+}
+sub nickfromhost {
+ my ($hostmask) = @_;
+ if ($hostmask =~ /([^!]+)!/i) {
+ return $1;
+ }
+ return;
+}
+sub getrecords {
+ my $date = date();
+ my $filename;
+ opendir(DIR, "$database") || die "Can't open $database: $!\n";
+ my @flist = grep(/^[0-9]+$/, readdir(DIR));
+ closedir(DIR);
+# sort numerically descending
+ if (scalar(@flist) == 0) {
+# create new file
+ $filename = "$database/$date";
+ open($fh, '>', "$filename") or die "Could not write file '$filename' $!";
+ close $fh;
+ } else {
+ my @sorted = sort {$b <=> $a} @flist;
+ $filename = "$database/".$sorted[0];
+ }
+ open($fh, '+<', $filename) or die "Could not read '$filename' $!";
+ my $hostmask;
+ while (my $line = <$fh>) {
+ if ($line =~ /^hostmask: ([-_.@~*!:0-9a-zA-Z]+)$/) {
+ $hostmask = $1;
+ $records->{$hostmask} = ();
+ } elsif ($line =~ /^([-_.@~*!:0-9a-zA-Z]+): (.*)$/) {
+ $records->{$hostmask}->{$1} = $2;
+ }
+ }
+ close $fh;
+}
+sub getkeyval {
+ my ($hostmask, $key) = @_;
+ if (!defined($records)) {
+ getrecords();
+ }
+ return $records->{$hostmask}->{$key};
+}
+sub setkeyval {
+ my ($hostmask, $key, $val) = @_;
+#print "$hostmask: $key => $val\r\n";
+ if (!defined($records)) {
+ getrecords();
+ }
+ $records->{$hostmask}->{$key} = $val; # autovivifies
+ saverecords();
+}
+sub delkey {
+ my ($hostmask, $key) = @_;
+ if (!defined($records)) {
+ getrecords();
+ }
+ delete($records->{$hostmask}->{$key});
+ saverecords();
+}
+sub delhost {
+ my ($hostmask) = @_;
+ if (!defined($records)) {
+ getrecords();
+ }
+ delete($records->{$hostmask});
+ saverecords();
+}
+sub firstval {
+ my ($key, $val) = @_;
+ if (!defined($records)) {
+ getrecords();
+ }
+ foreach my $hostmask (keys %$records) {
+ if (exists($records->{$hostmask}->{$key}) && $records->{$hostmask}->{$key} eq $val) {
+ return $hostmask;
+ }
+ }
+ return;
+}
+sub saverecords {
+ my $filename = "$database/".date();
+ if (!defined($records)) {
+ getrecords();
+ }
+ open($fh, '>', "$filename.bak") or die "Could not write to '$database' $!";
+ while (my ($hostmask, $record) = each (%$records)) {
+ print $fh "hostmask: $hostmask\n";
+ foreach my $key (sort {lc $a cmp lc $b} keys %$record) {
+ print $fh "$key: ".$record->{$key}."\n";
+ }
+ print $fh "\n";
+ }
+ close $fh;
+ copy "$filename.bak", $filename;
+ return 1;
+}
+
+sub date {
+ my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime();
+ my $localtime = sprintf("%04d%02d%02d", $year+1900, $mon+1, $mday);
+ return $localtime;
+}
+sub mytime {
+ my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime();
+ my $localtime = sprintf("%s %s %d %02d:%02d:%02d", $days[$wday], $months[$mon], $mday, $hour, $min, $sec);
+ return $localtime;
+}
+
+sub parsemsg {
+ my ($bot, $hostmask, $target, $reply) = @_;
+ my $socket = $bot->{sock};
+ my $sender = nickfromhost($hostmask);
+ my $help = sub {
+ my $msg = <<"EOF";
+To request a free bouncer, type !bnc . To reset the password, type !resetpass <nick> <email>. To change email, type !set email <email>.
+EOF
+ sendmsg($bot, $sender, $msg);
+ pmstaff($bot->{name}, "Help *$sender* on ".$bot->{name});
+ };
+ my $captcha = sub {
+ my $num = int(rand(999));
+ setkeyval($hostmask, "num", $num);
+ my @strings = split('\n', `figlet $num`);
+ foreach my $s (@strings) {
+ sendmsg($bot, $sender, $s);
+ }
+ pmstaff($sender, "$sender\'s captcha is $num");
+ };
+
+ if ($hostmask eq '*status!znc@znc.in') {
+ return;
+ } elsif($hostmask eq '*controlpanel!znc@znc.in') {
+ if ($reply =~ /^Error: User \[cloneuser\] does not exist/) {
+ print "Cloneuser created!\r\n";
+ createclone($bot);
+ } elsif($reply =~ /^Nick = ([a-zA-Z][-_a-zA-Z0-9]+)$/) {
+# only one requestnick
+ my $requestnick = $1;
+ my $hostmask = firstval("requestnick", $requestnick);
+ if (!defined($hostmask)) {
+ return;
+ }
+ delkey($hostmask, "requestnick");
+ sendmsg($bot, nickfromhost($hostmask), "Username already taken. New username:");
+ } elsif($reply =~ /^Error: User \[(.*)\] does not exist/) {
+# delete requestnick after granted
+ my $newnick = $1;
+ my $hostmask = firstval("requestnick", $newnick);
+ if (!defined($hostmask)) {
+ return;
+ }
+ setkeyval($hostmask, "newnick", $newnick);
+ delkey($hostmask, "requestnick");
+ sendmsg($bot, nickfromhost($hostmask), "Email:");
+ } elsif ($reply =~ /^Admin = false/) {
+ pmstaff("", "Error: $botnick is not admin");
+ die;
+ } elsif ($reply =~ /^Admin = true/) {
+ sendmsg($bot, "*status", "LoadMod --type=user chansaver");
+ } elsif ($reply =~ /(.*) = (.*)/) {
+# my ($key, $val) = ($1, $2);
+# print "$key = $val\r\n";
+ } else {
+ print "$hostmask: $reply\r\n";
+ }
+ } elsif ($reply =~ /^!(help|request)/i) {
+ if ($chans =~ $target) {
+ print "target: $target\r\n";
+ sendmsg($bot, $target, "$sender: Please check private message");
+ }
+ $help->();
+ } elsif ($reply =~ /^!bnc/i) {
+ if (defined(getkeyval($hostmask, "services"))) {
+ sendmsg($bot, $sender, "Sorry, only one account per person. Please contact staff if you need help.");
+ } else {
+ delhost($hostmask);
+ setkeyval($hostmask, "oldnick", $sender);
+ whois($socket, $sender);
+ if ($chans =~ $target) {
+ print "target: $target\r\n";
+ sendmsg($bot, $target, "$sender: Please check private message");
+ }
+ sendmsg($bot, $sender, $terms);
+ pmstaff($bot->{name}, "Help *$sender* on ".$bot->{name});
+ }
+ } elsif ($target !~ /^$botnick.?/) {
+# print "$hostmask: $target $reply\r\n";
+ } elsif (!defined(getkeyval($hostmask, "num"))) {
+ if ($reply =~ /^(y|yes)/i) {
+ setkeyval($hostmask, "terms", "yes");
+ ctcp($socket, $sender);
+ sendmsg($bot, $sender, "What number is this?");
+ $captcha->();
+ } elsif (defined(getkeyval($hostmask, "terms")) && !getkeyval($hostmask, "terms")) {
+# already asked, so repeat help message
+ $help->();
+ return;
+ } else {
+ setkeyval($hostmask, "terms", "no");
+ sendmsg($bot, $sender, "Sorry. Contact staff or type !bnc to try again.");
+ }
+ } elsif (!defined(getkeyval($hostmask, "captcha"))) {
+ if ($reply =~ /^([0-9]+)$/ && $reply == getkeyval($hostmask, "num")) {
+ setkeyval($hostmask, "captcha", $reply);
+ sendmsg($bot, $sender, "New username:");
+ } else {
+ sendmsg($bot, $sender, "Wrong. What number is this?");
+ $captcha->();
+ }
+ } elsif(!defined(getkeyval($hostmask, "newnick"))) {
+ if ($reply =~ /^([a-zA-Z][-a-zA-Z0-9]+)/) {
+ setkeyval($hostmask, "requestnick", $reply);
+ sendmsg($bot, "*controlpanel", "get Nick $reply");
+ } else {
+ sendmsg($bot, $sender, "Invalid username. New username:");
+ }
+ } elsif(!defined(getkeyval($hostmask, "email"))) {
+ if ($reply =~ /^(([-_.0-9a-zA-Z]+)\@([-_.0-9a-zA-Z]+))$/) {
+ my $otheracct = firstval("email", $reply);
+ if (defined($otheracct)) {
+ setkeyval($hostmask, "terms", "no");
+ sendmsg($bot, $sender, "Sorry, only one account per person. Please contact staff if you need help.");
+ return;
+ }
+ my $newnick = getkeyval($hostmask, "newnick");
+ setkeyval($hostmask, "email", $reply);
+ my $password = newpass();
+ my $encrypted = `encrypt $password`;
+ chomp($encrypted);
+ setkeyval($hostmask, "password", $encrypted);
+ my $bindhost = nextdns($newnick);
+ mailverify($newnick, $reply, $password, "bouncer");
+ my $msg = <<"EOF";
+Check your email.
+EOF
+ sendmsg($bot, $sender, $msg);
+ sleep(5);
+ createbnc($bot, $newnick, $password, $bindhost);
+ setkeyval($hostmask, "services", "znc");
+ www($newnick, $reply, $password, "bouncer");
+ } else {
+ sendmsg($bot, $sender, "Invalid email. New email:");
+ }
+ }
+
+# Hidden functionality
+ if ($reply =~ /^!dns\s+([-.0-9a-z]+)\s+([:0-9a-f]+)/i) {
+ my ($fqdn, $ip6) = ($1, $2);
+ if ($staff !~ /$sender/) {
+ return;
+ }
+ dns($fqdn, $ip6);
+ }
+ if ($reply =~ /^!nextdns ([-0-9a-zA-Z]+)/i) {
+ my $username = $1;
+ if ($staff !~ /$sender/) {
+ return;
+ }
+ nextdns($username);
+ sendmsg($bot, $sender, "nextdns called");
+ }
+ if ($reply =~ /^!getkeyval ([-_0-9a-zA-Z]+) ([-_0-9a-zA-Z]+)/) {
+ if ($staff !~ /$sender/) {
+ return;
+ }
+ sendmsg($bot, $sender, getkeyval($1, $2));
+ }
+ if ($reply =~ /^!setkeyval ([-_0-9a-zA-Z]+) ([-_0-9a-zA-Z]+) ([-_0-9a-zA-Z]+)/) {
+ if ($staff !~ /$sender/) {
+ return;
+ }
+ sendmsg($bot, $sender, setkeyval($1, $2, $3));
+ }
+ if ($reply =~ /^!delkey ([-_0-9a-zA-Z]+) ([-_0-9a-zA-Z]+)/) {
+ if ($staff !~ /$sender/) {
+ return;
+ }
+ sendmsg($bot, $sender, delkey($1, $2));
+ }
+ if ($reply =~ /^!saverecords/) {
+ if ($staff !~ /$sender/) {
+ return;
+ }
+ if (saverecords()) {
+ sendmsg($bot, $sender, "Records saved.");
+ }
+ }
+}
+
+sub parsenotice {
+ my ($bot, $hostmask, $target, $reply) = @_;
+ my $socket = $bot->{sock};
+ my $sender;
+
+ # get the sender's nick from hostmask
+ if ($hostmask =~ /([^!]+)!/i) {
+ $sender = $1;
+ }
+ # don't verify ident
+ #if ($hostmask =~ /^([^!]+)!~?([^@]+)@(.+)$/i) {
+ # $hostmask = "$1\!$2\@$3";
+ #}
+ # CTCP replies
+ if ($hostmask ne '*status!znc@znc.in') {
+ if ($reply =~ /^(PING|VERSION|TIME|USERINFO) (.*)$/i) {
+ my ($key, $val) = ($1, $2);
+ setkeyval($hostmask, $key, $val);
+ setkeyval($hostmask, "localtime", mytime());
+ }
+ }
+}
+
+sub parsewhois {
+ my ($bot, $code, $reply) = @_;
+ my ($sender, $val, $key);
+ if ($code == 307 && $reply =~ /^([-_\|`a-zA-Z0-9]+) (.*)/) {
+ ($sender, $val, $key) = ($1, $2, "register");
+ } elsif ($code == 311 && $reply =~ /^([-_\|`a-zA-Z0-9]+) (.*)/) {
+ ($sender, $val, $key) = ($1, $2, "vhost");
+ } elsif ($code == 312 && $reply =~ /^([-_\|`a-zA-Z0-9]+) (.*)/) {
+ ($sender, $val, $key) = ($1, $2, "server");
+ } elsif ($code == 313 && $reply =~ /^([-_\|`a-zA-Z0-9]+) (.*)/) {
+ ($sender, $val, $key) = ($1, $2, "oper");
+ } elsif ($code == 319 && $reply =~ /^([-_\|`a-zA-Z0-9]+) (.*)/) {
+ ($sender, $val, $key) = ($1, $2, "chans");
+ } elsif ($code == 330 && $reply =~ /^([-_\|`a-zA-Z0-9]+) (.*)/) {
+ ($sender, $val, $key) = ($1, $2, "logged");
+ } elsif ($code == 378 && $reply =~ /^([-_\|`a-zA-Z0-9]+) (.*)/) {
+ ($sender, $val, $key) = ($1, $2, "ip");
+ } else {
+ return;
+ }
+ my $hostmask = firstval("oldnick", $sender);
+ setkeyval($hostmask, $key, $val);
+}
+
+sub createclone {
+ my ($bot) = @_;
+ my $socket = $bot->{sock};
+ my $password = newpass();
+ my $msg = <<"EOF";
+adduser cloneuser $password
+set MaxNetworks cloneuser 1000
+set ChanBufferSize cloneuser 1000
+set MaxQueryBuffers cloneuser 1000
+set QueryBufferSize cloneuser 1000
+set QuitMsg cloneuser IRCNow and Forever!
+set RealName cloneuser cloneuser
+set DenySetBindHost cloneuser true
+LoadModule cloneuser controlpanel
+EOF
+#set BindHost cloneuser $bindhost
+#set DCCBindHost $newnick $bindhost
+#set Language $newnick $lang
+ sendmsg($bot, "*controlpanel", $msg);
+ foreach my $n (@networks) {
+ my $net = $n->{name};
+ my $server = $n->{server};
+ my $port = $n->{port};
+ my $trustcerts = $n->{trustcerts};
+ $msg = <<"EOF";
+addnetwork cloneuser $net
+addserver cloneuser $net $server $port
+disconnect cloneuser $net
+EOF
+# if (defined($net) && $name eq $net->{name}) {
+# print "identical: $name\r\n";
+# push(@{$net->{servers}}, $server);
+# } else {
+# $net = {"name" => $name, "servers" => [$server], "port" => $port, "trustcerts" => $trustcerts };
+# }
+# push(@networks, $net);
+ if ($trustcerts) {
+#print "net: $net, server: $server, port: $port, trustcerts: $trustcerts\r\n";
+ $msg .= "SetNetwork TrustAllCerts cloneuser $net True\r\n";
+ }
+foreach my $chan (@chans) {
+ $msg .= "addchan cloneuser $net $chan\r\n";
+}
+ sendmsg($bot, "*controlpanel", $msg);
+ }
+}
+
+sub createbnc {
+ my ($bot, $newnick, $password, $bindhost) = @_;
+ my $netname = $bot->{name};
+ my $msg = <<"EOF";
+cloneuser cloneuser $newnick
+set Nick $newnick $newnick
+set Altnick $newnick ${newnick}_
+set Ident $newnick $newnick
+set RealName $newnick $newnick
+set Password $newnick $password
+set MaxNetworks $newnick 1000
+set ChanBufferSize $newnick 1000
+set MaxQueryBuffers $newnick 1000
+set QueryBufferSize $newnick 1000
+set NoTrafficTimeout $newnick 600
+set QuitMsg $newnick IRCNow and Forever!
+set BindHost $newnick $bindhost
+set DCCBindHost $newnick $bindhost
+set DenySetBindHost $newnick true
+EOF
+#set Language $newnick $lang
+ sendmsg($bot, "*controlpanel", $msg);
+ foreach my $p (@networks) {
+ my $netname = $bot->{name};
+ my $pnetname = $p->{name};
+ my $pserver = $p->{server};
+ my $pnetport = $p->{port};
+ sendmsg($bot, "*controlpanel", "setnetwork Altnick $newnick $pnetname ${newnick}_");
+ }
+ sendmsg($bot, "*controlpanel", "reconnect $newnick $netname");
+}
+
+# returns true upon success, false upon failure
+sub dns {
+ my ($fqdn, $ip6) = @_;
+ my $username;
+ my $filename = "$zonedir/$hostname";
+ if ($fqdn =~ /^([a-zA-Z][-a-zA-Z0-9]+)\.$hostname$/) {
+ $username = $1;
+ } else {
+ pmstaff("", "Error: not authoritative");
+ return;
+ }
+ my ($line, $lines);
+ open($fh, '+<', "$filename") or die "Could not read file '$filename' $!";
+ while(my $line = <$fh>){
+# increment the zone's serial number
+ if ($line =~ /([0-9]{10})( [0-9]+ [0-9]+ [0-9]+ [0-9]+ \).*)/) {
+ my $num = $1+1;
+ $line = " $num$2\n";
+ }
+ $lines .= $line;
+ }
+ close $fh;
+ $lines .= "$username 3600 IN AAAA $ip6\n";
+ $lines .= "$username 3600 IN A $ip4\n";
+ open($fh, '>', "$filename.bak") or die "Could not write file '$filename.bak' $!";
+ print $fh $lines;
+ close $fh;
+ copy "$filename.bak", $filename;
+ my $stdout = `curl -d \"key=$key&hash=$hash&action=rdns&ip=$ip6&rdns=$fqdn\" https://manage.buyvm.net/api/client/command.php`;
+ if ($stdout !~ /success/) {
+ pmstaff("", "Error: failed to set rDNS");
+ return;
+ }
+ if (system("doas -u _nsd nsd-control reload")) {
+ pmstaff("", "Error: failed to reload nsd");
+ return;
+ }
+ pmstaff("", "$fqdn set to $ip6");
+ return 1;
+}
+
+sub nextdns {
+ my ($username) = @_;
+ my $lines;
+ open($fh, '+<', "$ipv6path") or die "Could not read file 'ipv6s' $!";
+ chomp(my $ipv6 = <$fh>);
+ while(my $line = <$fh>){
+ $lines .= $line;
+ }
+ close $fh;
+ open($fh, '>', "$ipv6path") or die "Could not write file 'ipv6s' $!";
+ print $fh $lines;
+ close $fh;
+ if (dns("$username.$hostname", $ipv6)) {
+ return "$username.$hostname";
+ }
+ return;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#sub resend {
+# my ($bot, $newnick, $email) = @_;
+# my $password = newpass();
+# sendmsg($bot, "*controlpanel", "set Password $newnick $password");
+# mailverify($newnick, $email, $password, "bouncer");
+# sendmsg($bot, "$newnick", "Email sent");
+#}
+
+#sub mailfinish {
+# my( $username, $password, $email, $service )=@_;
+#my $msg = <<"EOF";
+#From: support \<support\@ircnow.org\>
+#To: $email
+#Subject: Welcome to IRCNow!
+#MIME-Version: 1.0
+#Content-Type: text/plain; charset=us-ascii
+#Content-Disposition: inline
+#
+#Welcome to IRCNow!
+#
+#Your account $username with password $password is now activated.
+#
+#For instructions on how to connect, please visit: https://ircnow.org
+#
+#For help, please visit our support channel on irc.ircnow.org #ircnow.
+#
+#IRCNow
+#EOF
+#open(my $fh, '| /usr/sbin/sendmail -tv -F support -f support@ircnow.org') or die "Could not send mail $!";
+#print $fh $msg;
+#close $fh;
+#open($fh, '>>', "$database") or die "Could not open file '$database' $!";
+#print $fh $msg;
+#close $fh;
+#}
+#
+
+
+#sub createshell {
+#my $msg = <<"EOF";
+#Your shell account username is $newnick and password is $password . The server is $hostname , port 22. Our official support channel is on #shell. Instructions: https://ircnow.org/kb/doku.php?id=shell:shell .
+#EOF
+#
+# my ($password, $username) = @_;
+# `doas sh /home/bnc/newacct $username $password`;
+#}
+
+
+# if ($reply =~ /^!resend ([-_0-9a-zA-Z]+) ([-_0-9a-zA-Z]+@[-_0-9a-zA-Z]+\.[-_0-9a-zA-Z]+)$/i) {
+# my ($newnick, $email) = ($1, $2);
+# my $password = newpass();
+# resend($bot, $newnick, $email);
+# }
+# if ($reply =~ /^!vpn (.*) ([-_0-9a-zA-Z]+)$/i) {
+# my $ircnick = $1;
+# my $newnick = $2;
+# if ($staff !~ /$sender/) {
+# return;
+# }
+# my $password = newpass();
+# createvpn($password, $newnick);
+# sendmsg($bot, $sender, "vpn created for $newnick");
+#my $msg = <<"EOF";
+#Your vpn account has been created! Username: $newnick with password: $password
+#Our official support channel is #vpn. To connect, please follow these instructions: https://ircnow.org/kb/doku.php?id=vpn:vpn .
+#EOF
+# sendmsg($bot, $ircnick, $msg);
+# }
+# if ($reply =~ /^!email (.*) ([-_0-9a-zA-Z]+)$/i) {
+# my $ircnick = $1;
+# my $newnick = $2;
+# if ($staff !~ /$sender/) {
+# return;
+# }
+# my $password = newpass();
+# createmail($password, $newnick);
+# sendmsg($bot, $sender, "email created for $newnick");
+#my $msg = <<"EOF";
+#Your email account has been created! Username: $newnick with password: $password
+#Our official support channel is #email. To connect, please follow these instructions: https://ircnow.org/kb/doku.php?id=email:email .
+#EOF
+# sendmsg($bot, $ircnick, $msg);
+# }
+#sub createvpn {
+# my ($password, $username) = @_;
+# `doas sh -c 'echo "user '$username' '$password'" >> /etc/iked.conf'`;
+# `doas rcctl reload iked`;
+#}
+#sub createmail {
+# my ($password, $username) = @_;
+# my $encrypted = `encrypt $password`;
+# chomp($encrypted);
+# my $line = "${username}\@ircnow.org:${encrypted}::::::userdb_quota_rule=*:storage=1G";
+# $line =~ s{\$}{\\\$}g;
+# my $line2 = "${username}\@ircnow.org vmail";
+# my $line3 = "${username}: ${username}\@ircnow.org";
+# `doas sh -c 'echo $line >> /etc/mail/passwd'`;
+# `doas sh -c 'echo $line2 >> /etc/mail/virtuals'`;
+# `doas sh -c 'echo $line3 >> /etc/mail/aliases'`;
+# `doas rcctl restart smtpd`;
+# `doas rcctl reload dovecot`;
+#}
+#unveil("./newacct", "rx") or die "Unable to unveil $!";
+#use Data::Dumper;
blob - /dev/null
blob + cf0a5753e13b24daa6c21c9e6074d0efff65755a (mode 644)
--- /dev/null
+++ makefile
@@ -0,0 +1,36 @@
+USERNAME="botnow"
+HOMEDIR="/home/botnow"
+HTDOCS="/var/www/htdocs/botnow"
+DATABASE="/var/www/botnow/"
+ZONES="/var/nsd/zones/master/"
+
+botnow: figlet php znc
+ useradd -m -g =uid -c ${USERNAME} -d ${HOMEDIR} -s /bin/ksh ${USERNAME}
+ mkdir ${DATABASE}
+ touch ${DATABASE}/www
+ chown -R www:${USERNAME} ${DATABASE}
+ chmod -R ug+rw ${DATABASE}
+ mkdir ${HTDOCS}
+ cp words ${HTDOCS}/
+ cp register.php ${HTDOCS}/
+ chown -R www:daemon ${HTDOCS}
+ usermod -G daemon ${USERNAME}
+ chown -R _nsd:daemon ${ZONES}
+ echo "permit nopass $sysname as _nsd cmd nsd-control" >> /etc/doas.conf
+ cp register.php ${HTDOCS}/
+ cp LICENSE README botnow.pl makefile networks register.php words ${HOMEDIR}/
+ chown -R ${USERNAME}:${USERNAME} ${HOMEDIR}
+ chmod u+x ${HOMEDIR}/botnow.pl
+ echo "Installation complete. To run botnow, type $ ./botnow.pl"
+figlet:
+ pkg_add figlet-2.2.5
+
+php:
+ pkg_add php-7.4.10
+ rcctl enable php74_fpm
+ rcctl restart php74_fpm
+ rcctl enable httpd
+ rcctl restart httpd
+
+znc:
+ echo Foo
blob - /dev/null
blob + 42de9ad2aff9d920cf6affbbff0bbdf3972bba4d (mode 644)
--- /dev/null
+++ networks
@@ -0,0 +1,246 @@
+# Network entries follow this format:
+#
+# Name Address Port
+#
+# For ports, + indicates SSL, ~ indicates SSL with no PKI checking
+#
+# Repeating the same network name will add multiple servers for a single network
+#
+# Please keep network names lowercase
+# Please edit 0000net and ircnow to connect to the local server's IPv6 address
+#
+0000net 2605:6400:20:b4:: 6667
+ircnow 2605:6400:20:b4:: 6667
+2600net irc.2600.net 6667
+42net sol.42net.org 6667
+#abandoned-irc irc.abandoned-irc.net ~6697
+aerospacechat irc.aerospacechat.com +6697
+afterall irc.after-all.org 6667
+afternet irc.afternet.org +6697
+afterx irc.afterx.net +6697
+allnetwork irc6.allnetwork.org ~6697
+#allnetwork irc.allnetwork.org ~6697
+allnightcafe irc.allnightcafe.com ~6697
+allrednc irc.allrednc.org ~6697
+alphachat irc.alphachat.net +6697
+amicachat irc.amicachat.net ~6697
+amorlatino irc.amorlatino.org 6667
+anope irc.anope.org 6667
+atrum irc.atrum.org ~6697
+axon irc.axon.pw +6697
+ayochat irc.ayochat.or.id 6667
+banglacafe irc.banglacafe.com 6667
+barton irc.barton.de 6667
+bgirc irc.bgirc.com ~6697
+bitlbee 127.0.0.1 6668
+blitzed irc.blitzed.org +6697
+bolchat irc.bolchat.com 6667
+brasirc irc.brasirc.com.br ~6697
+bsdunix irc.bsdunix.us +6697
+canternet irc.canternet.org +6697
+chaat irc.chaat.fr 6667
+chat4all irc.chat4all.org ~6697
+chatgentr chat.gen.tr 6667
+chathispano irc.chathispano.com +6697
+chating irc.chating.id 6667
+chatlatino irc.chatlatinos.cl 9090
+chatlounge irc.chatlounge.net +6697
+chatspike irc.chatspike.net ~6697
+chatzona irc.chatzona.org 6667
+#coolsmile irc.coolsmile.net +6697
+dalnet irc6.dal.net +6697
+#dalnet bifrost.ca.us.dal.net ~6697
+#dalnet bitcoin.uk.eu.dal.net ~6697
+#dalnet choopa.nj.us.dal.net ~6697
+#dalnet diamond.hub.dal.net ~6697
+#dalnet foxtrot.hub.dal.net ~6697
+#dalnet halcyon.il.us.dal.net ~6697
+#dalnet hash.ix.nl.dal.net ~6697
+#dalnet hoon.ix.au.dal.net ~6697
+#dalnet istana.ix.sg.dal.net ~6697
+#dalnet jingo.ix.us.dal.net ~6697
+#dalnet karsk.ix.eu.dal.net ~6697
+#dalnet kiwi.ix.nz.dal.net ~6697
+#dalnet koala.vc.au.dal.net ~6697
+#dalnet lair.nl.eu.dal.net ~6697
+#dalnet laud.ix.us.dal.net ~6697
+#dalnet lion.tx.us.dal.net ~6697
+#dalnet loyalty.ix.us.dal.net ~6697
+#dalnet merlin.hub.dal.net ~6697
+#dalnet midnight.hub.dal.net ~6697
+#dalnet ninja.hub.dal.net ~6697
+#dalnet nonstop.ix.me.dal.net ~6697
+#dalnet oi.ix.au.dal.net ~6697
+#dalnet oper-e.dal.net ~6697
+#dalnet paradigm.hub.dal.net ~6697
+#dalnet powertech.no.eu.dal.net ~6697
+#dalnet punch.wa.us.dal.net ~6697
+#dalnet rangers.ix.us.dal.net ~6697
+#dalnet redemption.ix.us.dal.net ~6697
+#dalnet renew.hub.dal.net ~6697
+#dalnet smurf.hub.dal.net ~6697
+#dalnet underworld.se.eu.dal.net ~6697
+darkfasel irc.darkfasel.net +6697
+darkmyst irc2.darkmyst.org ~6697
+darkscience irc.darkscience.net +6697
+dejatoons irc.dejatoons.net ~6697
+desirenet irc.desirenet.org 6667
+digitalirc irc.digitalirc.org +6697
+efnet irc.efnet.nl 6667
+efnet efnet.deic.eu 6667
+efnet efnet.port80.se ~6697
+efnet efnet.portlane.se 6667
+efnet irc.Prison.NET 6667
+efnet irc.choopa.net ~6697
+efnet irc.colosolutions.net 6667
+efnet irc.du.se 6667
+efnet irc.efnet.fr 6667
+efnet irc.efnet.nl 6667
+efnet irc.homelien.no 6667
+efnet irc.mzima.net 6667
+efnet irc.nordunet.se 6667
+efnet irc.servercentral.net ~6697
+efnet irc.underworld.no 6667
+epiknet irc.epiknet.org +6697
+esper irc.esper.net +6697
+euirc irc.euirc.net 6667
+europnet irc.europnet.org 6667
+evolu irc.evolu.net ~6697
+exchat irc.exchat.net ~6697
+explosionirc irc.explosionirc.net 6667
+forumcerdas irc.forumcerdas.net ~6697
+freenode chat.ipv6.freenode.net +6697
+freenode ipv6.chat.freenode.net +6697
+freeunibg irc.freeunibg.eu 6667
+freshchat irc.freshchat.org +6697
+gamesurge irc.gamesurge.net 6667
+geeknode irc.geeknode.org +6697
+geekshed irc.geekshed.net +6697
+germanelite irc.german-elite.net ~6697
+geveze irc.geveze.org 6667
+gigairc irc.gigairc.net ~6697
+gimp irc.gimp.org +6697
+globalirc irc.global-irc.org 6667
+globalirc-it irc.globalirc.it ~6697
+greekirc irc.greekirc.net 6667
+hybridirc irc.hybridirc.com ~6697
+icq-chat irc.icq-chat.com +6697
+icqchat irc.icq-chat.com +6697
+insomnia irc.insomnia247.nl 6667
+irc4fun irc.irc4fun.net 6667
+irccloud irc.irccloud.com +6697
+ircfreakz irc.ircfreakz.net ~6697
+ircgate irc.ircgate.it 6667
+irchighway irc.irchighway.net ~6697
+ircnet open.ircnet.net 6667
+ircnet ircnet.hostsailor.com ~6697
+ircnet ssl.irc.atw-inter.net ~6697
+ircnet irc.atw-inter.net ~6697
+ircnet irc.us.ircnet.net ~6697
+ircnet irc.psychz.net ~6697
+ircnet openirc.snt.utwente.nl 6667
+ircnet irc.portlane.se ~6697
+ircnet irc.nlnog.net 6667
+irczone irc6.irczone.net ~6697
+italian-amici irc.italian-amici.org 6667
+juggler irc.juggler.jp 6667
+kalbim irc.kalbim.net 6667
+kampungchat ipv6.fat2fit.ch 6667
+librairc irc.librairc.net ~6697
+luatic irc.luatic.net 6667
+mibbit irc.mibbit.com ~6697
+mindforge irc.mindforge.org 6667
+nationchat irc.nationchat.org 6667
+netchat irc.netchat.cl 6667
+oftc irc6.oftc.net +6697
+#oftc irc.oftc.net +6697
+ogn irc.onlinegamesnet.net 6667
+oltreirc irc.oltreirc.net +6697
+onlinegamesnet irc.onlinegamesnet.net 6667
+openjoke irc.openjoke.org ~6697
+#optilan irc.optilan.eu 6667
+perl irc.perl.org 6667
+pirc-pl irc.pirc.pl +6697
+ptnet irc.ptnet.org +6697
+quake irc6.quakenet.org 6667
+quake irc.ipv6.quakenet.org 6667
+#quake adrift.sg.quakenet.org 6667
+#quake cymru.us.quakenet.org 6667
+#quake dreamhack.se.quakenet.org 6667
+#quake euroserv.fr.quakenet.org 6667
+#quake hostsailor.ro.quakenet.org 6667
+#quake port80a.se.quakenet.org 6667
+#quake port80b.se.quakenet.org 6667
+#quake port80c.se.quakenet.org 6667
+#quake portlane.se.quakenet.org 6667
+#quake underworld1.no.quakenet.org 6667
+#quake underworld2.no.quakenet.org 6667
+quartznet irc.quartznet.org 6667
+recycled-irc irc.recycled-irc.net 6667
+rezosup irc.rezosup.org +6697
+rizon irc6.rizon.net ~6697
+#rizon irc.rizon.net ~6697
+#rizon irc.criten.net ~6697
+#rizon magnet.rizon.net ~6697
+#rizon irc.sxci.net ~6697
+#rizon irc.rizon.io ~6697
+#rizon irc2.rizon.io ~6697
+#rizon irc.x2x.cc ~6697
+#rizon solenoid.rizon.net ~6697
+#rizon irc.sacredland.world ~6697
+#rizon irc.rizon.no ~6697
+#rizon irc.uworld.se ~6697
+#rizon irc.rizon.club ~6697
+#rizon irc.rizon.fun ~6697
+#rizon irc.hostsailor.com ~6697
+#rizon irc.losslessone.com ~6697
+#rootworld irc.rootworld.net 6667
+rusnet irc.run.net 6667
+shadowcat irc.shadowcat.co.uk 6667
+simosnap irc.simosnap.com +6697
+slashnet irc.slashnet.org +6697
+smurfnet irc.smurfnet.ch ~6697
+snoonet irc.snoonet.org +6697
+sohbet irc.sohbet.net ~6697
+sorcery irc.sorcery.net ~6697
+spigotmc irc.spi.gt +6697
+spotchat irc.spotchat.org +6697
+svipchat irc.svipchat.org ~6697
+swiftirc irc.swiftirc.net 6667
+swisschat irc.swisschat.tk 6667
+synirc irc.synirc.net ~6697
+technet irc.technet.xi.ht +6697
+thaiirc irc.thaiirc.com 6667
+tilde-chat irc.tilde.chat +6697
+trsohbet irc.trsohbet.com 6667
+tweakers irc.tweakers.net 6667
+twistednet irc.twistednet.org ~6697
+twitch irc.twitch.tv 6667
+undernet irc6.undernet.org 6667
+undernet eu6.undernet.org 6667
+undernet us6.undernet.org 6667
+#undernet irc.undernet.org 6667
+#undernet chicago.il.us.undernet.org 6667
+#undernet bucharest.ro.eu.undernet.org 6667
+#undernet amsterdam.nl.eu.undernet.org 6667
+#undernet pipera.ro.eu.undernet.org 6667
+#undernet budapest.hu.eu.undernet.org 6667
+#undernet melbourne.vic.au.undernet.org 6667
+#undernet dallas.tx.us.undernet.org 6667
+#undernet losangeles.ca.us.undernet.org 6667
+#undernet miami.fl.us.undernet.org 6667
+#undernet capelle.nl.eu.undernet.org 6667
+virtualife irc.virtualife.org ~6697
+w3 irc.w3.org 6667
+wenet irc.wenet.ru 6667
+#whatnet irc.whatnet.org ~6697
+wnet irc.wnet.tk 6667
+xertion irc.xertion.org +6697
+zairc irc.zairc.net ~6697
+zandronum irc.zandronum.com ~6697
+zemra irc.zemra.org +6697
+zenet irc.zenet.org +6697
+zeronode irc.zeronode.net +6697
+zoite irc.zoite.net +6697
+zonebg irc.zonebg.eu ~6697
+zwergenirc irc.zwergenirc.de ~6697
blob - /dev/null
blob + 404c0bdbcb4fe00575cb7baf3e94069228e1b06b (mode 644)
--- /dev/null
+++ register.php
@@ -0,0 +1,47 @@
+<?php
+
+$words = file('words');
+$wordslen = sizeof($words);
+$passphrase;
+for ($n = 0; $n < 5; $n++) {
+ $i = rand(0, $wordslen-1);
+ $passphrase .= substr($words[$i], 0, -1)." ";
+}
+$passphrase = substr($passphrase, 0, -1);
+$passphrase = ucwords($passphrase);
+$fpr = "hash: ".$_REQUEST["id"]."\n";
+$fpr .= "passphrase: $passphrase\n";
+$fpr .= "remote addr: ".$_SERVER['REMOTE_ADDR']."\n";
+$fpr .= "http_x_forwarded: ".$_SERVER['HTTP_X_FORWARDED_FOR']."\n";
+$fpr .= "time: ".date("Y-m-d H:i:s")."\n";
+foreach (getallheaders() as $name => $value) {
+ $fpr .= "$name: $value\n";
+}
+$fpr .= "\n";
+$file = '../../database/www';
+$current = file_get_contents($file);
+$current .= $fpr;
+file_put_contents($file, $current);
+?>
+
+<html>
+<head>
+<style>
+body {
+ width: 80%;
+ margin: 5rem auto;
+ text-align: center;
+}
+</style>
+</head>
+<body>
+<p>Please email <a href="mailto:support@ircnow.org">support@ircnow.org</a> with the following passphrase:</p>
+
+<p>IRCNow Verify <?php echo $passphrase ?></p>
+
+<p><a href="https://ircnow.org/kb/doku.php?id=irc:bouncer">Click here for connection instructions.</a></p>
+
+<p>To change your password, login to <a href="https://us10.ircnow.org">https://us10.ircnow.org</a>, fill in the password field, then click on the "Save and Return" button.</p>
+
+</body>
+</html>
blob - /dev/null
blob + 9a08b418928b428b36f54f5ded4132a59696ec8f (mode 644)
--- /dev/null
+++ words
@@ -0,0 +1,5459 @@
+about
+search
+other
+which
+their
+there
+contact
+business
+online
+first
+would
+services
+these
+click
+service
+price
+people
+state
+email
+health
+world
+products
+music
+should
+product
+system
+policy
+number
+please
+support
+message
+after
+software
+video
+where
+rights
+public
+books
+school
+through
+links
+review
+years
+order
+privacy
+items
+company
+group
+under
+general
+research
+january
+reviews
+program
+games
+could
+great
+united
+hotel
+center
+store
+travel
+comments
+report
+member
+details
+terms
+before
+hotels
+right
+because
+local
+those
+using
+results
+office
+national
+design
+posted
+internet
+address
+within
+states
+phone
+shipping
+reserved
+subject
+between
+forum
+family
+based
+black
+check
+special
+prices
+website
+index
+being
+women
+today
+south
+project
+pages
+version
+section
+found
+sports
+house
+related
+security
+county
+american
+photo
+members
+power
+while
+network
+computer
+systems
+three
+total
+place
+download
+without
+access
+think
+north
+current
+posts
+media
+control
+water
+history
+pictures
+personal
+since
+guide
+board
+location
+change
+white
+small
+rating
+children
+during
+return
+students
+shopping
+account
+times
+sites
+level
+digital
+profile
+previous
+events
+hours
+image
+title
+another
+shall
+property
+class
+still
+money
+quality
+every
+listing
+content
+country
+private
+little
+visit
+tools
+reply
+customer
+december
+compare
+movies
+include
+college
+value
+article
+provide
+source
+author
+press
+learn
+around
+print
+course
+canada
+process
+stock
+training
+credit
+point
+science
+advanced
+sales
+english
+estate
+select
+windows
+photos
+thread
+category
+large
+gallery
+table
+register
+however
+october
+november
+market
+library
+really
+action
+start
+series
+model
+features
+industry
+human
+provided
+required
+second
+movie
+forums
+march
+better
+yahoo
+going
+medical
+friend
+server
+study
+staff
+articles
+feedback
+again
+looking
+issues
+april
+never
+users
+complete
+street
+topic
+comment
+things
+working
+against
+standard
+person
+below
+mobile
+party
+payment
+login
+student
+programs
+offers
+legal
+above
+recent
+stores
+problem
+memory
+social
+august
+quote
+language
+story
+options
+rates
+create
+young
+america
+field
+paper
+single
+example
+girls
+password
+latest
+question
+changes
+night
+texas
+poker
+status
+browse
+issue
+range
+building
+seller
+court
+february
+always
+result
+audio
+light
+write
+offer
+groups
+given
+files
+event
+release
+analysis
+request
+china
+making
+picture
+needs
+possible
+might
+month
+major
+areas
+future
+space
+cards
+problems
+london
+meeting
+become
+interest
+child
+enter
+share
+similar
+garden
+schools
+million
+added
+listed
+learning
+energy
+delivery
+popular
+stories
+journal
+reports
+welcome
+central
+images
+notice
+original
+radio
+until
+color
+council
+includes
+track
+archive
+others
+format
+least
+society
+months
+safety
+friends
+trade
+edition
+messages
+further
+updated
+having
+provides
+david
+already
+green
+studies
+close
+common
+drive
+specific
+several
+living
+called
+short
+display
+limited
+powered
+means
+director
+daily
+beach
+natural
+whether
+period
+planning
+database
+official
+weather
+average
+window
+france
+region
+island
+record
+direct
+records
+district
+calendar
+costs
+style
+front
+update
+parts
+early
+miles
+sound
+resource
+present
+either
+document
+works
+material
+written
+federal
+hosting
+rules
+final
+adult
+tickets
+thing
+centre
+cheap
+finance
+minutes
+third
+gifts
+europe
+reading
+topics
+cover
+usually
+together
+videos
+percent
+function
+getting
+global
+economic
+player
+projects
+lyrics
+often
+submit
+germany
+amount
+watch
+included
+though
+thanks
+deals
+various
+words
+linux
+james
+weight
+heart
+received
+choose
+archives
+points
+magazine
+error
+camera
+clear
+receive
+domain
+methods
+chapter
+makes
+policies
+beauty
+manager
+india
+position
+taken
+listings
+models
+michael
+known
+cases
+florida
+simple
+quick
+wireless
+license
+friday
+whole
+annual
+later
+basic
+shows
+google
+church
+method
+purchase
+active
+response
+practice
+hardware
+figure
+holiday
+enough
+designed
+along
+among
+death
+writing
+speed
+brand
+discount
+higher
+effects
+created
+remember
+yellow
+increase
+kingdom
+thought
+stuff
+french
+storage
+japan
+doing
+loans
+shoes
+entry
+nature
+orders
+africa
+summary
+growth
+notes
+agency
+monday
+european
+activity
+although
+western
+income
+force
+overall
+river
+package
+contents
+players
+engine
+album
+regional
+supplies
+started
+views
+plans
+double
+build
+screen
+exchange
+types
+lines
+continue
+across
+benefits
+needed
+season
+apply
+someone
+anything
+printer
+believe
+effect
+asked
+sunday
+casino
+volume
+cross
+anyone
+mortgage
+silver
+inside
+solution
+mature
+rather
+weeks
+addition
+supply
+nothing
+certain
+running
+lower
+union
+jewelry
+clothing
+names
+robert
+homepage
+skills
+islands
+advice
+career
+military
+rental
+decision
+leave
+british
+teens
+woman
+sellers
+middle
+cable
+taking
+values
+division
+coming
+tuesday
+object
+lesbian
+machine
+length
+actually
+score
+client
+returns
+capital
+follow
+sample
+shown
+saturday
+england
+culture
+flash
+george
+choice
+starting
+thursday
+courses
+consumer
+airport
+foreign
+artist
+outside
+levels
+channel
+letter
+phones
+ideas
+summer
+allow
+degree
+contract
+button
+releases
+homes
+super
+matter
+custom
+virginia
+almost
+located
+multiple
+asian
+editor
+cause
+focus
+featured
+rooms
+female
+thomas
+primary
+cancer
+numbers
+reason
+browser
+spring
+answer
+voice
+friendly
+schedule
+purpose
+feature
+comes
+police
+everyone
+approach
+cameras
+brown
+physical
+medicine
+ratings
+chicago
+forms
+glass
+happy
+smith
+wanted
+thank
+unique
+survey
+prior
+sport
+ready
+animal
+sources
+mexico
+regular
+secure
+simply
+evidence
+station
+round
+paypal
+favorite
+option
+master
+valley
+recently
+probably
+rentals
+built
+blood
+improve
+larger
+networks
+earth
+parents
+nokia
+impact
+transfer
+kitchen
+strong
+carolina
+wedding
+hospital
+ground
+overview
+owners
+disease
+italy
+perfect
+classic
+basis
+command
+cities
+william
+express
+award
+distance
+peter
+ensure
+involved
+extra
+partners
+budget
+rated
+guides
+success
+maximum
+existing
+quite
+selected
+amazon
+patients
+warning
+horse
+forward
+flowers
+stars
+lists
+owner
+retail
+animals
+useful
+directly
+housing
+takes
+bring
+catalog
+searches
+trying
+mother
+traffic
+joined
+input
+strategy
+agent
+valid
+modern
+senior
+ireland
+teaching
+grand
+testing
+trial
+charge
+units
+instead
+canadian
+normal
+wrote
+ships
+entire
+leading
+metal
+positive
+fitness
+chinese
+opinion
+football
+abstract
+output
+funds
+greater
+likely
+develop
+artists
+guest
+seems
+trust
+contains
+session
+multi
+republic
+vacation
+century
+academic
+graphics
+indian
+expected
+grade
+dating
+pacific
+mountain
+filter
+mailing
+vehicle
+longer
+consider
+northern
+behind
+panel
+floor
+german
+buying
+match
+proposed
+default
+require
+outdoor
+morning
+allows
+protein
+plant
+reported
+politics
+partner
+authors
+boards
+faculty
+parties
+mission
+string
+sense
+modified
+released
+stage
+internal
+goods
+unless
+richard
+detailed
+japanese
+approved
+target
+except
+ability
+maybe
+moving
+brands
+places
+pretty
+spain
+southern
+yourself
+winter
+battery
+youth
+pressure
+boston
+keywords
+medium
+break
+purposes
+dance
+itself
+defined
+papers
+playing
+awards
+studio
+reader
+virtual
+device
+answers
+remote
+external
+apple
+offered
+theory
+enjoy
+remove
+surface
+minimum
+visual
+variety
+teachers
+martin
+manual
+block
+subjects
+agents
+repair
+civil
+steel
+songs
+fixed
+wrong
+hands
+finally
+updates
+desktop
+classes
+paris
+sector
+capacity
+requires
+jersey
+fully
+father
+electric
+quotes
+officer
+driver
+respect
+unknown
+worth
+teacher
+workers
+georgia
+peace
+campus
+showing
+creative
+coast
+benefit
+progress
+funding
+devices
+grant
+agree
+fiction
+watches
+careers
+beyond
+families
+museum
+blogs
+accepted
+former
+complex
+agencies
+parent
+spanish
+michigan
+columbia
+setting
+scale
+stand
+economy
+highest
+helpful
+monthly
+critical
+frame
+musical
+angeles
+employee
+chief
+gives
+bottom
+packages
+detail
+changed
+heard
+begin
+colorado
+royal
+clean
+switch
+russian
+largest
+african
+titles
+relevant
+justice
+connect
+bible
+basket
+applied
+weekly
+demand
+suite
+vegas
+square
+chris
+advance
+auction
+allowed
+correct
+charles
+nation
+selling
+piece
+sheet
+seven
+older
+illinois
+elements
+species
+cells
+module
+resort
+facility
+random
+pricing
+minister
+motion
+looks
+fashion
+visitors
+monitor
+trading
+forest
+calls
+whose
+coverage
+couple
+giving
+chance
+vision
+ending
+clients
+actions
+listen
+discuss
+accept
+naked
+clinical
+sciences
+markets
+lowest
+highly
+appear
+lives
+currency
+leather
+patient
+actual
+stone
+commerce
+perhaps
+persons
+tests
+village
+accounts
+amateur
+factors
+coffee
+settings
+buyer
+cultural
+steve
+easily
+poster
+closed
+holidays
+zealand
+balance
+graduate
+replies
+initial
+label
+thinking
+scott
+canon
+league
+waste
+minute
+provider
+optional
+sections
+chair
+fishing
+effort
+phase
+fields
+fantasy
+letters
+motor
+context
+install
+shirt
+apparel
+crime
+count
+breast
+johnson
+quickly
+dollars
+websites
+religion
+claim
+driving
+surgery
+patch
+measures
+kansas
+chemical
+doctor
+reduce
+brought
+himself
+enable
+exercise
+santa
+leader
+diamond
+israel
+servers
+alone
+meetings
+seconds
+jones
+arizona
+keyword
+flight
+congress
+username
+produced
+italian
+pocket
+saint
+freedom
+argument
+creating
+drugs
+joint
+premium
+fresh
+attorney
+upgrade
+factor
+growing
+stream
+hearing
+eastern
+auctions
+therapy
+entries
+dates
+signed
+upper
+serious
+prime
+samsung
+limit
+began
+louis
+steps
+errors
+shops
+efforts
+informed
+thoughts
+creek
+worked
+quantity
+urban
+sorted
+myself
+tours
+platform
+labor
+admin
+nursing
+defense
+machines
+heavy
+covered
+recovery
+merchant
+expert
+protect
+solid
+became
+orange
+vehicles
+prevent
+theme
+campaign
+marine
+guitar
+finding
+examples
+saying
+spirit
+claims
+motorola
+affairs
+touch
+intended
+towards
+goals
+election
+suggest
+branch
+charges
+serve
+reasons
+magic
+mount
+smart
+talking
+latin
+avoid
+manage
+corner
+oregon
+element
+birth
+virus
+abuse
+requests
+separate
+quarter
+tables
+define
+racing
+facts
+column
+plants
+faith
+chain
+identify
+avenue
+missing
+domestic
+sitemap
+moved
+houston
+reach
+mental
+viewed
+moment
+extended
+sequence
+attack
+sorry
+centers
+opening
+damage
+reserve
+recipes
+gamma
+plastic
+produce
+placed
+truth
+counter
+failure
+follows
+weekend
+dollar
+ontario
+films
+bridge
+native
+williams
+movement
+printing
+baseball
+owned
+approval
+draft
+chart
+played
+contacts
+jesus
+readers
+clubs
+jackson
+equal
+matching
+offering
+shirts
+profit
+leaders
+posters
+variable
+expect
+parking
+compared
+workshop
+russia
+codes
+kinds
+seattle
+golden
+teams
+lighting
+senate
+forces
+funny
+brother
+turned
+portable
+tried
+returned
+pattern
+named
+theatre
+laser
+earlier
+sponsor
+warranty
+indiana
+harry
+objects
+delete
+evening
+assembly
+nuclear
+taxes
+mouse
+signal
+criminal
+issued
+brain
+sexual
+powerful
+dream
+obtained
+false
+flower
+passed
+supplied
+falls
+opinions
+promote
+stated
+stats
+hawaii
+appears
+carry
+decided
+covers
+hello
+designs
+maintain
+tourism
+priority
+adults
+clips
+savings
+graphic
+payments
+binding
+brief
+ended
+winning
+eight
+straight
+script
+served
+wants
+prepared
+dining
+alert
+atlanta
+dakota
+queen
+credits
+clearly
+handle
+sweet
+criteria
+pubmed
+diego
+truck
+behavior
+enlarge
+revenue
+measure
+changing
+votes
+looked
+festival
+ocean
+flights
+experts
+signs
+depth
+whatever
+logged
+laptop
+vintage
+train
+exactly
+explore
+maryland
+concept
+nearly
+eligible
+checkout
+reality
+forgot
+handling
+origin
+gaming
+feeds
+billion
+scotland
+faster
+dallas
+bought
+nations
+route
+followed
+broken
+frank
+alaska
+battle
+anime
+speak
+protocol
+query
+equity
+speech
+rural
+shared
+sounds
+judge
+bytes
+forced
+fight
+height
+speaker
+filed
+obtain
+offices
+designer
+remain
+managed
+failed
+marriage
+korea
+banks
+secret
+kelly
+leads
+negative
+austin
+toronto
+theater
+springs
+missouri
+andrew
+perform
+healthy
+assets
+injury
+joseph
+ministry
+drivers
+lawyer
+figures
+married
+proposal
+sharing
+portal
+waiting
+birthday
+gratis
+banking
+brian
+toward
+slightly
+assist
+conduct
+lingerie
+calling
+serving
+profiles
+miami
+comics
+matters
+houses
+postal
+controls
+breaking
+combined
+ultimate
+wales
+minor
+finish
+noted
+reduced
+physics
+spent
+extreme
+samples
+davis
+daniel
+reviewed
+forecast
+removed
+helps
+singles
+cycle
+amounts
+contain
+accuracy
+sleep
+pharmacy
+brazil
+creation
+static
+scene
+hunter
+crystal
+famous
+writer
+chairman
+violence
+oklahoma
+speakers
+drink
+academy
+dynamic
+gender
+cleaning
+concerns
+vendor
+intel
+officers
+referred
+supports
+regions
+junior
+rings
+meaning
+ladies
+henry
+ticket
+guess
+agreed
+soccer
+import
+posting
+presence
+instant
+viewing
+majority
+christ
+aspects
+austria
+ahead
+scheme
+utility
+preview
+manner
+matrix
+devel
+despite
+strength
+turkey
+proper
+degrees
+delta
+seeking
+inches
+phoenix
+shares
+daughter
+standing
+comfort
+colors
+cisco
+ordering
+alpha
+appeal
+cruise
+bonus
+bookmark
+specials
+disney
+adobe
+smoking
+becomes
+drives
+alabama
+improved
+trees
+achieve
+dress
+dealer
+nearby
+carried
+happen
+exposure
+gambling
+refer
+miller
+outdoors
+clothes
+caused
+luxury
+babes
+frames
+indeed
+circuit
+layer
+printed
+removal
+easier
+printers
+adding
+kentucky
+mostly
+taylor
+prints
+spend
+factory
+interior
+revised
+optical
+relative
+amazing
+clock
+identity
+suites
+feeling
+hidden
+victoria
+serial
+relief
+revision
+ratio
+planet
+copies
+recipe
+permit
+seeing
+proof
+tennis
+bedroom
+empty
+instance
+licensed
+orlando
+bureau
+maine
+ideal
+specs
+recorded
+pieces
+finished
+parks
+dinner
+lawyers
+sydney
+stress
+cream
+trends
+discover
+patterns
+boxes
+hills
+fourth
+advisor
+aware
+wilson
+shape
+irish
+stations
+remains
+greatest
+firms
+operator
+generic
+usage
+charts
+mixed
+census
+exist
+wheel
+transit
+compact
+poetry
+lights
+tracking
+angel
+keeping
+attempt
+matches
+width
+noise
+engines
+forget
+array
+accurate
+stephen
+climate
+alcohol
+greek
+managing
+sister
+walking
+explain
+smaller
+newest
+happened
+extent
+sharp
+lesbians
+export
+managers
+aircraft
+modules
+sweden
+conflict
+versions
+employer
+occur
+knows
+describe
+concern
+backup
+citizens
+heritage
+holding
+trouble
+spread
+coach
+kevin
+expand
+audience
+assigned
+jordan
+affect
+virgin
+raised
+directed
+dealers
+sporting
+helping
+affected
+totally
+plate
+expenses
+indicate
+blonde
+anderson
+organic
+albums
+cheats
+guests
+hosted
+diseases
+nevada
+thailand
+agenda
+anyway
+tracks
+advisory
+logic
+template
+prince
+circle
+grants
+anywhere
+atlantic
+edward
+investor
+leaving
+wildlife
+cooking
+speaking
+sponsors
+respond
+sizes
+plain
+entered
+launch
+checking
+costa
+belgium
+guidance
+trail
+symbol
+crafts
+highway
+buddy
+observed
+setup
+booking
+glossary
+fiscal
+styles
+denver
+filled
+channels
+ericsson
+appendix
+notify
+blues
+portion
+scope
+supplier
+cables
+cotton
+biology
+dental
+killed
+border
+ancient
+debate
+starts
+causes
+arkansas
+leisure
+learned
+notebook
+explorer
+historic
+attached
+opened
+husband
+disabled
+crazy
+upcoming
+britain
+concert
+scores
+comedy
+adopted
+weblog
+linear
+bears
+carrier
+edited
+constant
+mouth
+jewish
+meter
+linked
+portland
+concepts
+reflect
+deliver
+wonder
+lessons
+fruit
+begins
+reform
+alerts
+treated
+mysql
+relating
+assume
+alliance
+confirm
+neither
+lewis
+howard
+offline
+leaves
+engineer
+replace
+checks
+reached
+becoming
+safari
+sugar
+stick
+allen
+relation
+enabled
+genre
+slide
+montana
+tested
+enhance
+exact
+bound
+adapter
+formal
+hockey
+storm
+micro
+colleges
+laptops
+showed
+editors
+threads
+supreme
+brothers
+presents
+dolls
+estimate
+cancel
+limits
+weapons
+paint
+delay
+pilot
+outlet
+czech
+novel
+ultra
+winner
+idaho
+episode
+potter
+plays
+bulletin
+modify
+oxford
+truly
+epinions
+painting
+universe
+patent
+eating
+planned
+watching
+lodge
+mirror
+sterling
+sessions
+kernel
+stocks
+buyers
+journals
+jennifer
+antonio
+charged
+broad
+taiwan
+chosen
+greece
+swiss
+sarah
+clark
+terminal
+nights
+behalf
+liquid
+nebraska
+salary
+foods
+gourmet
+guard
+properly
+orleans
+saving
+empire
+resume
+twenty
+newly
+raise
+prepare
+avatar
+illegal
+hundreds
+lincoln
+helped
+premier
+tomorrow
+decide
+consent
+drama
+visiting
+downtown
+keyboard
+contest
+bands
+suitable
+millions
+lunch
+audit
+chamber
+guinea
+findings
+muscle
+clicking
+polls
+typical
+tower
+yours
+chicken
+attend
+shower
+sending
+jason
+tonight
+holdem
+shell
+province
+catholic
+governor
+seemed
+swimming
+spyware
+formula
+solar
+catch
+pakistan
+reliable
+doubt
+finder
+unable
+periods
+tasks
+attacks
+const
+doors
+symptoms
+resorts
+biggest
+memorial
+visitor
+forth
+insert
+gateway
+alumni
+drawing
+ordered
+fighting
+happens
+romance
+bruce
+split
+themes
+powers
+heaven
+pregnant
+twice
+focused
+egypt
+bargain
+cellular
+norway
+vermont
+asking
+blocks
+normally
+hunting
+diabetes
+shift
+bodies
+cutting
+simon
+writers
+marks
+flexible
+loved
+mapping
+numerous
+birds
+indexed
+superior
+saved
+paying
+cartoon
+shots
+moore
+granted
+choices
+carbon
+spending
+magnetic
+registry
+crisis
+outlook
+massive
+denmark
+employed
+bright
+treat
+header
+poverty
+formed
+piano
+sheets
+patrick
+puerto
+displays
+plasma
+allowing
+earnings
+mystery
+journey
+delaware
+bidding
+risks
+banner
+charter
+barbara
+counties
+ports
+dreams
+blogger
+stands
+teach
+occurred
+rapid
+hairy
+reverse
+deposit
+seminar
+latina
+wheels
+specify
+dutch
+formats
+depends
+boots
+holds
+router
+concrete
+editing
+poland
+folder
+womens
+upload
+pulse
+voting
+courts
+notices
+detroit
+metro
+toshiba
+strip
+pearl
+accident
+resident
+possibly
+airline
+regard
+exists
+smooth
+strike
+flashing
+narrow
+threat
+surveys
+sitting
+putting
+vietnam
+trailer
+castle
+gardens
+missed
+malaysia
+antique
+labels
+willing
+acting
+heads
+stored
+logos
+antiques
+density
+hundred
+strange
+mention
+parallel
+honda
+amended
+operate
+bills
+bathroom
+stable
+opera
+doctors
+lesson
+cinema
+asset
+drinking
+reaction
+blank
+enhanced
+entitled
+severe
+generate
+deluxe
+humor
+monitors
+lived
+duration
+pursuant
+fabric
+visits
+tight
+domains
+contrast
+flying
+berlin
+siemens
+adoption
+meant
+capture
+pounds
+buffalo
+plane
+desire
+camping
+meets
+welfare
+caught
+marked
+driven
+measured
+medline
+bottle
+marshall
+massage
+rubber
+closing
+tampa
+thousand
+legend
+grace
+susan
+adams
+python
+monster
+villa
+columns
+hamilton
+cookies
+inner
+tutorial
+entity
+cruises
+holder
+portugal
+lawrence
+roman
+duties
+valuable
+ethics
+forever
+dragon
+captain
+imagine
+brings
+heating
+scripts
+stereo
+taste
+dealing
+commit
+airlines
+liberal
+livecam
+trips
+sides
+turns
+cache
+jacket
+oracle
+matthew
+lease
+aviation
+hobbies
+proud
+excess
+disaster
+console
+commands
+giant
+achieved
+injuries
+shipped
+seats
+alarm
+voltage
+anthony
+nintendo
+usual
+loading
+stamps
+appeared
+franklin
+angle
+vinyl
+mining
+ongoing
+worst
+imaging
+betting
+liberty
+wyoming
+convert
+analyst
+garage
+exciting
+thongs
+ringtone
+finland
+morgan
+derived
+pleasure
+honor
+oriented
+eagle
+desktops
+pants
+columbus
+nurse
+prayer
+quiet
+postage
+producer
+cheese
+comic
+crown
+maker
+crack
+picks
+semester
+fetish
+applies
+casinos
+smoke
+apache
+filters
+craft
+apart
+fellow
+blind
+lounge
+coins
+gross
+strongly
+hilton
+proteins
+horror
+familiar
+capable
+douglas
+debian
+epson
+elected
+carrying
+victory
+madison
+editions
+mainly
+ethnic
+actor
+finds
+fifth
+citizen
+vertical
+prize
+occurs
+absolute
+consists
+anytime
+soldiers
+guardian
+lecture
+layout
+classics
+horses
+dirty
+wayne
+donate
+taught
+worker
+alive
+temple
+prove
+wings
+breaks
+genetic
+waters
+promise
+prefer
+ridge
+cabinet
+modem
+harris
+bringing
+evaluate
+tiffany
+tropical
+collect
+toyota
+streets
+vector
+shaved
+turning
+buffer
+purple
+larry
+mutual
+pipeline
+syntax
+prison
+skill
+chairs
+everyday
+moves
+inquiry
+ethernet
+checked
+exhibit
+throw
+trend
+sierra
+visible
+desert
+oldest
+rhode
+mercury
+steven
+handbook
+navigate
+worse
+summit
+victims
+spaces
+burning
+escape
+coupons
+somewhat
+receiver
+cialis
+boats
+glance
+scottish
+arcade
+richmond
+russell
+tells
+obvious
+fiber
+graph
+covering
+platinum
+judgment
+bedrooms
+talks
+filing
+foster
+modeling
+passing
+awarded
+trials
+tissue
+clinton
+masters
+bonds
+alberta
+commons
+fraud
+spectrum
+arrival
+pottery
+emphasis
+roger
+aspect
+awesome
+mexican
+counts
+priced
+crash
+desired
+inter
+closer
+assumes
+heights
+shadow
+riding
+firefox
+expense
+grove
+venture
+clinic
+korean
+healing
+princess
+entering
+packet
+spray
+studios
+buttons
+funded
+thompson
+winners
+extend
+roads
+dublin
+rolling
+memories
+nelson
+arrived
+creates
+faces
+tourist
+mayor
+murder
+adequate
+senator
+yield
+grades
+cartoons
+digest
+lodging
+hence
+entirely
+replaced
+radar
+rescue
+losses
+combat
+reducing
+stopped
+lakes
+closely
+diary
+kings
+shooting
+flags
+baker
+launched
+shock
+walls
+abroad
+ebony
+drawn
+arthur
+visited
+walker
+suggests
+beast
+operated
+targets
+overseas
+dodge
+counsel
+pizza
+invited
+yards
+gordon
+farmers
+queries
+ukraine
+absence
+nearest
+cluster
+vendors
+whereas
+serves
+woods
+surprise
+partial
+shoppers
+couples
+ranking
+jokes
+simpson
+twiki
+sublime
+palace
+verify
+globe
+trusted
+copper
+dicke
+kerry
+receipt
+supposed
+ordinary
+nobody
+ghost
+applying
+pride
+knowing
+reporter
+keith
+champion
+cloudy
+linda
+chile
+plenty
+sentence
+throat
+ignore
+maria
+uniform
+wealth
+vacuum
+dancing
+brass
+writes
+plaza
+outcomes
+survival
+quest
+publish
+trans
+jonathan
+whenever
+lifetime
+pioneer
+booty
+acrobat
+plates
+acres
+venue
+athletic
+thermal
+essays
+vital
+telling
+fairly
+coastal
+config
+charity
+excel
+modes
+campbell
+stupid
+harbor
+hungary
+traveler
+segment
+realize
+enemy
+puzzle
+rising
+aluminum
+wells
+wishlist
+opens
+insight
+secrets
+lucky
+latter
+thick
+trailers
+repeat
+syndrome
+philips
+penalty
+glasses
+enables
+iraqi
+builder
+vista
+jessica
+chips
+terry
+flood
+arena
+pupils
+stewart
+outcome
+expanded
+casual
+grown
+polish
+lovely
+extras
+centres
+jerry
+clause
+smile
+lands
+troops
+indoor
+bulgaria
+armed
+broker
+charger
+believed
+cooling
+trucks
+divorce
+laura
+shopper
+tokyo
+partly
+nikon
+candy
+pills
+tiger
+donald
+folks
+sensor
+exposed
+telecom
+angels
+deputy
+sealed
+loaded
+scenes
+boost
+spanking
+founded
+chronic
+icons
+moral
+catering
+finger
+keeps
+pound
+locate
+trained
+roses
+bread
+tobacco
+wooden
+motors
+tough
+roberts
+incident
+gonna
+dynamics
+decrease
+chest
+pension
+billy
+revenues
+emerging
+worship
+craig
+herself
+churches
+damages
+reserves
+solve
+shorts
+minority
+diverse
+johnny
+recorder
+facing
+nancy
+tones
+passion
+sight
+defence
+patches
+refund
+towns
+trembl
+divided
+emails
+cyprus
+insider
+seminars
+makers
+hearts
+worry
+carter
+legacy
+pleased
+danger
+vitamin
+widely
+phrase
+genuine
+raising
+paradise
+hybrid
+reads
+roles
+glory
+bigger
+billing
+diesel
+versus
+combine
+exceed
+saudi
+fault
+babies
+karen
+compiled
+romantic
+revealed
+albert
+examine
+jimmy
+graham
+bristol
+margaret
+compaq
+slowly
+rugby
+portions
+infant
+sectors
+samuel
+fluid
+grounds
+regards
+unlike
+equation
+baskets
+wright
+barry
+proven
+cached
+warren
+studied
+reviewer
+involves
+profits
+devil
+grass
+comply
+marie
+florist
+cherry
+deutsch
+kenya
+webcam
+funeral
+nutten
+earrings
+enjoyed
+chapters
+charlie
+quebec
+dennis
+francis
+sized
+manga
+noticed
+socket
+silent
+literary
+signals
+theft
+swing
+symbols
+humans
+analog
+facial
+choosing
+talent
+dated
+seeker
+wisdom
+shoot
+boundary
+packard
+offset
+payday
+philip
+elite
+holders
+believes
+swedish
+poems
+deadline
+robot
+witness
+collins
+equipped
+stages
+winds
+powder
+broadway
+acquired
+assess
+stones
+entrance
+gnome
+roots
+losing
+attempts
+gadgets
+noble
+glasgow
+impacts
+gospel
+shore
+loves
+induced
+knight
+loose
+linking
+appeals
+earned
+illness
+islamic
+pending
+parker
+lebanon
+kennedy
+teenage
+triple
+cooper
+vincent
+secured
+unusual
+answered
+slots
+disorder
+routine
+toolbar
+rocks
+titans
+wearing
+sought
+genes
+mounted
+habitat
+firewall
+median
+scanner
+herein
+animated
+judicial
+integer
+bachelor
+attitude
+engaged
+falling
+basics
+montreal
+carpet
+struct
+lenses
+binary
+genetics
+attended
+dropped
+walter
+besides
+hosts
+moments
+atlas
+strings
+feels
+torture
+deleted
+mitchell
+ralph
+warner
+embedded
+inkjet
+wizard
+corps
+actors
+liver
+liable
+brochure
+morris
+petition
+eminem
+recall
+antenna
+picked
+assumed
+belief
+killing
+bikini
+memphis
+shoulder
+decor
+lookup
+texts
+harvard
+brokers
+diameter
+ottawa
+podcast
+seasons
+refine
+bidder
+singer
+evans
+herald
+literacy
+fails
+aging
+plugin
+diving
+invite
+alice
+latinas
+suppose
+involve
+moderate
+terror
+younger
+thirty
+opposite
+rapidly
+dealtime
+intro
+mercedes
+clerk
+mills
+outline
+tramadol
+holland
+receives
+jeans
+fonts
+refers
+favor
+veterans
+sigma
+xhtml
+occasion
+victim
+demands
+sleeping
+careful
+arrive
+sunset
+tracked
+moreover
+minimal
+lottery
+framed
+aside
+licence
+michelle
+essay
+dialogue
+camps
+declared
+aaron
+handheld
+trace
+disposal
+florists
+packs
+switches
+romania
+consult
+greatly
+blogging
+cycling
+midnight
+commonly
+inform
+turkish
+pentium
+quantum
+murray
+intent
+largely
+pleasant
+announce
+spoke
+arrow
+sampling
+rough
+weird
+inspired
+holes
+weddings
+blade
+suddenly
+oxygen
+cookie
+meals
+canyon
+meters
+merely
+passes
+pointer
+stretch
+durham
+permits
+muslim
+sleeve
+netscape
+cleaner
+cricket
+feeding
+stroke
+township
+rankings
+robin
+robinson
+strap
+sharon
+crowd
+olympic
+remained
+entities
+customs
+rainbow
+roulette
+decline
+gloves
+israeli
+medicare
+skiing
+cloud
+valve
+hewlett
+explains
+proceed
+flickr
+feelings
+knife
+jamaica
+shelf
+timing
+liked
+adopt
+denied
+fotos
+britney
+freeware
+donation
+outer
+deaths
+rivers
+tales
+katrina
+islam
+nodes
+thumbs
+seeds
+cited
+targeted
+skype
+realized
+twelve
+founder
+decade
+gamecube
+dispute
+tired
+titten
+adverse
+excerpt
+steam
+drinks
+voices
+acute
+climbing
+stood
+perfume
+carol
+honest
+albany
+restore
+stack
+somebody
+curve
+creator
+amber
+museums
+coding
+tracker
+passage
+trunk
+hiking
+pierre
+jelsoft
+headset
+oakland
+colombia
+waves
+camel
+lamps
+suicide
+archived
+arabia
+juice
+chase
+logical
+sauce
+extract
+panama
+payable
+courtesy
+athens
+judges
+retired
+remarks
+detected
+decades
+walked
+arising
+nissan
+bracelet
+juvenile
+afraid
+acoustic
+railway
+cassette
+pointed
+causing
+mistake
+norton
+locked
+fusion
+mineral
+steering
+beads
+fortune
+canvas
+parish
+claimed
+screens
+cemetery
+planner
+croatia
+flows
+stadium
+fewer
+coupon
+nurses
+proxy
+lanka
+edwards
+contests
+costume
+tagged
+berkeley
+voted
+killer
+bikes
+gates
+adjusted
+bishop
+pulled
+shaped
+seasonal
+farmer
+counters
+slave
+cultures
+norfolk
+coaching
+examined
+encoding
+heroes
+painted
+lycos
+zdnet
+artwork
+cosmetic
+resulted
+portrait
+ethical
+carriers
+mobility
+floral
+builders
+struggle
+schemes
+neutral
+fisher
+spears
+bedding
+joining
+heading
+equally
+bearing
+combo
+seniors
+worlds
+guilty
+haven
+tablet
+charm
+violent
+basin
+ranch
+crossing
+cottage
+drunk
+crimes
+resolved
+mozilla
+toner
+latex
+branches
+anymore
+delhi
+holdings
+alien
+locator
+broke
+nepal
+zimbabwe
+browsing
+resolve
+melissa
+moscow
+thesis
+nylon
+discs
+rocky
+bargains
+frequent
+nigeria
+ceiling
+pixels
+ensuring
+hispanic
+anybody
+diamonds
+fleet
+untitled
+bunch
+totals
+marriott
+singing
+afford
+starring
+referral
+optimal
+distinct
+turner
+sucking
+cents
+reuters
+spoken
+omega
+stayed
+civic
+manuals
+watched
+saver
+thereof
+grill
+redeem
+rogers
+grain
+regime
+wanna
+wishes
+depend
+differ
+ranging
+monica
+repairs
+breath
+candle
+hanging
+colored
+verified
+formerly
+situated
+seeks
+herbal
+loving
+strictly
+routing
+stanley
+retailer
+vitamins
+elegant
+gains
+renewal
+opposed
+deemed
+scoring
+brooklyn
+sisters
+critics
+spots
+hacker
+madrid
+margin
+solely
+salon
+norman
+turbo
+headed
+voters
+madonna
+murphy
+thinks
+thats
+soldier
+phillips
+aimed
+justin
+interval
+mirrors
+tricks
+reset
+brush
+expansys
+panels
+repeated
+assault
+spare
+kodak
+tongue
+bowling
+danish
+monkey
+filename
+skirt
+florence
+invest
+honey
+analyzes
+drawings
+scenario
+lovers
+atomic
+approx
+arabic
+gauge
+junction
+faced
+rachel
+solving
+weekends
+produces
+chains
+kingston
+sixth
+engage
+deviant
+quoted
+adapters
+farms
+imports
+cheat
+bronze
+sandy
+suspect
+macro
+sender
+crucial
+adjacent
+tuition
+spouse
+exotic
+viewer
+signup
+threats
+puzzles
+reaching
+damaged
+receptor
+laugh
+surgical
+destroy
+citation
+pitch
+autos
+premises
+perry
+proved
+imperial
+dozen
+benjamin
+teeth
+cloth
+studying
+stamp
+lotus
+salmon
+olympus
+cargo
+salem
+starter
+upgrades
+likes
+butter
+pepper
+weapon
+luggage
+burden
+tapes
+zones
+races
+stylish
+maple
+grocery
+offshore
+depot
+kenneth
+blend
+harrison
+julie
+emission
+finest
+realty
+janet
+apparent
+phpbb
+autumn
+probe
+toilet
+ranked
+jackets
+routes
+packed
+excited
+outreach
+helen
+mounting
+recover
+lopez
+balanced
+timely
+talked
+debug
+delayed
+chuck
+explicit
+villas
+ebook
+exclude
+peeing
+brooks
+newton
+anxiety
+bingo
+whilst
+spatial
+ceramic
+prompt
+precious
+minds
+annually
+scanners
+xanax
+fingers
+sunny
+ebooks
+delivers
+necklace
+leeds
+cedar
+arranged
+theaters
+advocacy
+raleigh
+threaded
+qualify
+blair
+hopes
+mason
+diagram
+burns
+pumps
+footwear
+beijing
+peoples
+victor
+mario
+attach
+licenses
+utils
+removing
+advised
+spider
+ranges
+pairs
+trails
+hudson
+isolated
+calgary
+interim
+assisted
+divine
+approve
+chose
+compound
+abortion
+dialog
+venues
+blast
+wellness
+calcium
+newport
+indians
+shield
+harvest
+membrane
+prague
+previews
+locally
+pickup
+mothers
+nascar
+iceland
+candles
+sailing
+sacred
+morocco
+chrome
+tommy
+refused
+brake
+exterior
+greeting
+ecology
+oliver
+congo
+botswana
+delays
+olive
+cyber
+verizon
+scored
+clone
+velocity
+lambda
+relay
+composed
+tears
+oasis
+baseline
+angry
+silicon
+compete
+lover
+belong
+honolulu
+beatles
+rolls
+thomson
+barnes
+malta
+daddy
+ferry
+rabbit
+seating
+exports
+omaha
+electron
+loads
+heather
+passport
+motel
+unions
+treasury
+warrant
+solaris
+frozen
+occupied
+royalty
+scales
+rally
+observer
+sunshine
+strain
+ceremony
+somehow
+arrested
+yamaha
+hebrew
+gained
+dying
+laundry
+stuck
+solomon
+placing
+stops
+homework
+adjust
+assessed
+enabling
+filling
+imposed
+silence
+focuses
+soviet
+treaty
+vocal
+trainer
+organ
+stronger
+volumes
+advances
+lemon
+toxic
+darkness
+bizrate
+vienna
+implied
+stanford
+packing
+statute
+rejected
+satisfy
+shelter
+chapel
+gamespot
+layers
+guided
+bahamas
+powell
+mixture
+bench
+rider
+radius
+logging
+hampton
+borders
+butts
+bobby
+sheep
+railroad
+lectures
+wines
+nursery
+harder
+cheapest
+travesti
+stuart
+salvador
+salad
+monroe
+tender
+paste
+clouds
+tanzania
+preserve
+unsigned
+staying
+easter
+theories
+praise
+jeremy
+venice
+estonia
+veteran
+streams
+landing
+signing
+executed
+katie
+showcase
+integral
+relax
+namibia
+synopsis
+hardly
+prairie
+reunion
+composer
+sword
+absent
+sells
+ecuador
+hoping
+accessed
+spirits
+coral
+pixel
+float
+colin
+imported
+paths
+bubble
+acquire
+contrary
+tribune
+vessel
+acids
+focusing
+viruses
+cheaper
+admitted
+dairy
+admit
+fancy
+equality
+samoa
+stickers
+leasing
+lauren
+beliefs
+squad
+analyze
+ashley
+scroll
+relate
+wages
+suffer
+forests
+invalid
+concerts
+martial
+males
+retain
+execute
+tunnel
+genres
+cambodia
+patents
+chaos
+wheat
+beaver
+updating
+readings
+kijiji
+confused
+compiler
+eagles
+bases
+accused
+unity
+bride
+defines
+airports
+begun
+brunette
+packets
+anchor
+socks
+parade
+trigger
+gathered
+essex
+slovenia
+notified
+beaches
+folders
+dramatic
+surfaces
+terrible
+routers
+pendant
+dresses
+baptist
+hiring
+clocks
+females
+wallace
+reflects
+taxation
+fever
+cuisine
+surely
+myspace
+theorem
+stylus
+drums
+arnold
+chicks
+cattle
+radical
+rover
+treasure
+reload
+flame
+levitra
+tanks
+assuming
+monetary
+elderly
+floating
+bolivia
+spell
+hottest
+stevens
+kuwait
+emily
+alleged
+compile
+webster
+struck
+plymouth
+warnings
+bridal
+annex
+tribal
+curious
+freight
+rebate
+meetup
+eclipse
+sudan
+shuttle
+stunning
+cycles
+affects
+detect
+actively
+ampland
+fastest
+butler
+injured
+payroll
+cookbook
+courier
+uploaded
+hints
+collapse
+americas
+unlikely
+techno
+beverage
+tribute
+wired
+elvis
+immune
+latvia
+forestry
+barriers
+rarely
+infected
+martha
+genesis
+barrier
+argue
+trains
+metals
+bicycle
+letting
+arise
+celtic
+thereby
+jamie
+particle
+minerals
+advise
+humidity
+bottles
+boxing
+bangkok
+hughes
+jeffrey
+chess
+operates
+brisbane
+survive
+oscar
+menus
+reveal
+canal
+amino
+herbs
+clinics
+manitoba
+missions
+watson
+lying
+costumes
+strict
+saddam
+drill
+offense
+bryan
+protest
+hobby
+tries
+nickname
+inline
+washing
+staffing
+trick
+enquiry
+closure
+timber
+intense
+playlist
+showers
+ruling
+steady
+statutes
+myers
+drops
+wider
+plugins
+enrolled
+sensors
+screw
+publicly
+hourly
+blame
+geneva
+freebsd
+reseller
+handed
+suffered
+intake
+informal
+tucson
+heavily
+swingers
+fifty
+headers
+mistakes
+uncle
+defining
+counting
+assure
+devoted
+jacob
+sodium
+randy
+hormone
+timothy
+brick
+naval
+medieval
+bridges
+captured
+thehun
+decent
+casting
+dayton
+shortly
+cameron
+carlos
+donna
+andreas
+warrior
+diploma
+cabin
+innocent
+scanning
+valium
+copying
+cordless
+patricia
+eddie
+uganda
+fired
+trivia
+adidas
+perth
+grammar
+syria
+disagree
+klein
+harvey
+tires
+hazard
+retro
+gregory
+episodes
+boolean
+circular
+anger
+mainland
+suits
+chances
+interact
+bizarre
+glenn
+auckland
+olympics
+fruits
+ribbon
+startup
+suzuki
+trinidad
+kissing
+handy
+exempt
+crops
+reduces
+geometry
+slovakia
+guild
+gorgeous
+capitol
+dishes
+barbados
+chrysler
+nervous
+refuse
+extends
+mcdonald
+replica
+plumbing
+brussels
+tribe
+trades
+superb
+trinity
+handled
+legends
+floors
+exhaust
+shanghai
+speaks
+burton
+davidson
+copied
+scotia
+farming
+gibson
+roller
+batch
+organize
+alter
+nicole
+latino
+ghana
+edges
+mixing
+handles
+skilled
+fitted
+harmony
+asthma
+twins
+triangle
+amend
+oriental
+reward
+windsor
+zambia
+hydrogen
+webshots
+sprint
+chick
+advocate
+inputs
+genome
+escorts
+thong
+medal
+coaches
+vessels
+walks
+knives
+arrange
+artistic
+honors
+booth
+indie
+unified
+bones
+breed
+detector
+ignored
+polar
+fallen
+precise
+sussex
+msgid
+invoice
+gather
+backed
+alfred
+colonial
+carey
+motels
+forming
+embassy
+danny
+rebecca
+slight
+proceeds
+indirect
+amongst
+msgstr
+arrest
+adipex
+horizon
+deeply
+toolbox
+marina
+prizes
+bosnia
+browsers
+patio
+surfing
+lloyd
+optics
+pursue
+overcome
+attract
+brighton
+beans
+ellis
+disable
+snake
+succeed
+leonard
+lending
+reminder
+searched
+plains
+raymond
+insights
+sullivan
+midwest
+karaoke
+lonely
+hereby
+observe
+julia
+berry
+collar
+racial
+bermuda
+amanda
+mobiles
+kelkoo
+exhibits
+terrace
+bacteria
+replied
+seafood
+novels
+ought
+safely
+finite
+kidney
+fixes
+sends
+durable
+mazda
+allied
+throws
+moisture
+roster
+symantec
+spencer
+wichita
+nasdaq
+uruguay
+timer
+tablets
+tuning
+gotten
+tyler
+futures
+verse
+highs
+wanting
+custody
+scratch
+launches
+ellen
+rocket
+bullet
+towers
+racks
+nasty
+latitude
+tumor
+deposits
+beverly
+mistress
+trustees
+watts
+duncan
+reprints
+bernard
+forty
+tubes
+midlands
+priest
+floyd
+ronald
+analysts
+queue
+trance
+locale
+nicholas
+bundle
+hammer
+invasion
+runner
+notion
+skins
+mailed
+fujitsu
+spelling
+arctic
+exams
+rewards
+beneath
+defend
+medicaid
+infrared
+seventh
+welsh
+belly
+quarters
+stolen
+soonest
+haiti
+naturals
+lenders
+fitting
+fixtures
+bloggers
+agrees
+surplus
+elder
+sonic
+cheers
+belarus
+zoning
+gravity
+thumb
+guitars
+essence
+flooring
+ethiopia
+mighty
+athletes
+humanity
+holmes
+scholars
+galaxy
+chester
+snapshot
+caring
+segments
+dominant
+twist
+itunes
+stomach
+buried
+newbie
+minimize
+darwin
+ranks
+debut
+bradley
+anatomy
+fraction
+defects
+milton
+marker
+clarity
+sandra
+adelaide
+monaco
+settled
+folding
+emirates
+airfare
+vaccine
+belize
+promised
+volvo
+penny
+robust
+bookings
+minolta
+porter
+jungle
+ivory
+alpine
+andale
+fabulous
+remix
+alias
+newer
+spice
+implies
+cooler
+maritime
+periodic
+overhead
+ascii
+prospect
+shipment
+breeding
+donor
+tension
+trash
+shapes
+manor
+envelope
+diane
+homeland
+excluded
+andrea
+breeds
+rapids
+disco
+bailey
+endif
+emotions
+incoming
+lexmark
+cleaners
+eternal
+cashiers
+rotation
+eugene
+metric
+minus
+bennett
+hotmail
+joshua
+armenia
+varied
+grande
+closest
+actress
+assign
+tigers
+aurora
+slides
+milan
+premiere
+lender
+villages
+shade
+chorus
+rhythm
+digit
+argued
+dietary
+symphony
+clarke
+sudden
+marilyn
+lions
+findlaw
+pools
+lyric
+claire
+speeds
+matched
+carroll
+rational
+fighters
+chambers
+warming
+vocals
+fountain
+chubby
+grave
+burner
+finnish
+gentle
+deeper
+muslims
+footage
+howto
+worthy
+reveals
+saints
+carries
+devon
+helena
+saves
+regarded
+marion
+lobby
+egyptian
+tunisia
+outlined
+headline
+treating
+punch
+gotta
+cowboy
+bahrain
+enormous
+karma
+consist
+betty
+queens
+lucas
+tribes
+defeat
+clicks
+honduras
+naughty
+hazards
+insured
+harper
+mardi
+tenant
+cabinets
+tattoo
+shake
+algebra
+shadows
+holly
+silly
+mercy
+hartford
+freely
+marcus
+sunrise
+wrapping
+weblogs
+timeline
+belongs
+readily
+fence
+nudist
+infinite
+diana
+ensures
+lindsay
+legally
+shame
+civilian
+fatal
+remedy
+realtors
+briefly
+genius
+fighter
+flesh
+retreat
+adapted
+barely
+wherever
+estates
+democrat
+borough
+failing
+retained
+pamela
+andrews
+marble
+jesse
+logitech
+surrey
+briefing
+belkin
+highland
+modular
+brandon
+giants
+balloon
+winston
+solved
+hawaiian
+gratuit
+consoles
+qatar
+magnet
+porsche
+cayman
+jaguar
+sheer
+posing
+hopkins
+urgent
+infants
+gothic
+cylinder
+witch
+cohen
+puppy
+kathy
+graphs
+surround
+revenge
+expires
+enemies
+finances
+accepts
+enjoying
+patrol
+smell
+italiano
+carnival
+roughly
+sticker
+promises
+divide
+cornell
+satin
+deserve
+mailto
+promo
+worried
+tunes
+garbage
+combines
+bradford
+phrases
+chelsea
+boring
+reynolds
+speeches
+reaches
+schema
+catalogs
+quizzes
+prefix
+lucia
+savannah
+barrel
+typing
+nerve
+planets
+deficit
+boulder
+pointing
+renew
+coupled
+myanmar
+metadata
+harold
+circuits
+floppy
+texture
+handbags
+somerset
+incurred
+antigua
+thunder
+caution
+locks
+namely
+euros
+pirates
+aerial
+rebel
+origins
+hired
+makeup
+textile
+nathan
+tobago
+indexes
+hindu
+licking
+markers
+weights
+albania
+lasting
+wicked
+kills
+roommate
+webcams
+pushed
+slope
+reggae
+failures
+surname
+theology
+nails
+evident
+whats
+rides
+rehab
+saturn
+allergy
+twisted
+merit
+enzyme
+zshops
+planes
+edmonton
+tackle
+disks
+condo
+pokemon
+ambien
+retrieve
+vernon
+worldcat
+titanium
+fairy
+builds
+shaft
+leslie
+casio
+deutsche
+postings
+kitty
+drain
+monte
+fires
+algeria
+blessed
+cardiff
+cornwall
+favors
+potato
+panic
+sticks
+leone
+excuse
+reforms
+basement
+onion
+strand
+sandwich
+lawsuit
+cheque
+banners
+reject
+circles
+italic
+beats
+merry
+scuba
+passive
+valued
+courage
+verde
+gazette
+hitachi
+batman
+hearings
+coleman
+anaheim
+textbook
+dried
+luther
+frontier
+settle
+stopping
+refugees
+knights
+palmer
+derby
+peaceful
+altered
+pontiac
+doctrine
+scenic
+trainers
+sewing
+conclude
+munich
+celebs
+propose
+lighter
+advisors
+pavilion
+tactics
+trusts
+talented
+annie
+pillow
+derek
+shorter
+harley
+relying
+finals
+paraguay
+steal
+parcel
+refined
+fifteen
+fears
+predict
+boutique
+acrylic
+rolled
+tuner
+peterson
+shannon
+toddler
+flavor
+alike
+homeless
+horrible
+hungry
+metallic
+blocked
+warriors
+cadillac
+malawi
+sagem
+curtis
+parental
+strikes
+lesser
+marathon
+pressing
+gasoline
+dressed
+scout
+belfast
+dealt
+niagara
+warcraft
+charms
+catalyst
+trader
+bucks
+denial
+thrown
+prepaid
+raises
+electro
+badge
+wrist
+analyzed
+heath
+ballot
+lexus
+varying
+remedies
+validity
+trustee
+weighted
+angola
+performs
+plastics
+realm
+jenny
+helmet
+salaries
+postcard
+elephant
+yemen
+tsunami
+scholar
+nickel
+buses
+expedia
+geology
+coating
+wallet
+cleared
+smilies
+boating
+drainage
+shakira
+corners
+broader
+rouge
+yeast
+clearing
+coated
+intend
+louise
+kenny
+routines
+hitting
+yukon
+beings
+aquatic
+reliance
+habits
+striking
+podcasts
+singh
+gilbert
+ferrari
+brook
+outputs
+ensemble
+insulin
+assured
+biblical
+accent
+mysimon
+eleven
+wives
+ambient
+utilize
+mileage
+prostate
+adaptor
+auburn
+unlock
+hyundai
+pledge
+vampire
+angela
+relates
+nitrogen
+xerox
+merger
+softball
+firewire
+nextel
+framing
+musician
+blocking
+rwanda
+sorts
+vsnet
+limiting
+dispatch
+papua
+restored
+armor
+riders
+chargers
+remark
+dozens
+varies
+rendered
+picking
+guards
+openings
+councils
+kruger
+pockets
+granny
+viral
+inquire
+pipes
+laden
+aruba
+cottages
+realtor
+merge
+edgar
+develops
+chassis
+dubai
+pushing
+fleece
+pierce
+allan
+dressing
+sperm
+filme
+craps
+frost
+sally
+yacht
+tracy
+prefers
+drilling
+breach
+whale
+tomatoes
+bedford
+mustang
+clusters
+antibody
+momentum
+wiring
+pastor
+calvin
+shark
+phases
+grateful
+emerald
+laughing
+grows
+cliff
+tract
+ballet
+abraham
+bumper
+webpage
+garlic
+hostels
+shine
+senegal
+banned
+wendy
+briefs
+diffs
+mumbai
+ozone
+radios
+tariff
+nvidia
+opponent
+pasta
+muscles
+serum
+wrapped
+swift
+runtime
+inbox
+focal
+distant
+decimal
+propecia
+samba
+hostel
+employ
+mongolia
+penguin
+magical
+miracle
+manually
+reprint
+centered
+yearly
+wound
+belle
+writings
+hamburg
+cindy
+fathers
+charging
+marvel
+lined
+petite
+terrain
+strips
+gossip
+rangers
+rotary
+discrete
+beginner
+boxed
+cubic
+sapphire
+kinase
+skirts
+crawford
+labeled
+marking
+serbia
+sheriff
+griffin
+declined
+guyana
+spies
+neighbor
+elect
+highways
+thinkpad
+intimate
+preston
+deadly
+bunny
+chevy
+rounds
+longest
+tions
+dentists
+flyer
+dosage
+variance
+cameroon
+baking
+adaptive
+computed
+needle
+baths
+brakes
+nirvana
+invision
+sticky
+destiny
+generous
+madness
+emacs
+climb
+blowing
+heated
+jackie
+sparc
+cardiac
+dover
+adrian
+vatican
+brutal
+learners
+token
+seekers
+yields
+suited
+numeric
+skating
+kinda
+aberdeen
+emperor
+dylan
+belts
+blacks
+educated
+rebates
+burke
+proudly
+inserted
+pulling
+basename
+obesity
+curves
+suburban
+touring
+clara
+vertex
+tomato
+andorra
+expired
+travels
+flush
+waiver
+hayes
+delight
+survivor
+garcia
+cingular
+moses
+counted
+declare
+johns
+valves
+impaired
+donors
+jewel
+teddy
+teaches
+ventures
+bufing
+stranger
+tragedy
+julian
+dryer
+painful
+velvet
+tribunal
+ruled
+pensions
+prayers
+funky
+nowhere
+joins
+wesley
+lately
+scary
+mattress
+mpegs
+brunei
+likewise
+banana
+slovak
+cakes
+mixer
+remind
+sbjct
+charming
+tooth
+annoying
+stays
+disclose
+affair
+drove
+washer
+upset
+restrict
+springer
+beside
+mines
+rebound
+logan
+mentor
+fought
+baghdad
+metres
+pencil
+freeze
+titled
+sphere
+ratios
+concord
+endorsed
+walnut
+lance
+ladder
+italia
+liberia
+sherman
+maximize
+hansen
+senators
+workout
+bleeding
+colon
+lanes
+purse
+optimize
+stating
+caroline
+align
+bless
+engaging
+crest
+triumph
+welding
+deferred
+alloy
+condos
+plots
+polished
+gently
+tulsa
+locking
+casey
+draws
+fridge
+blanket
+bloom
+simpsons
+elliott
+fraser
+justify
+blades
+loops
+surge
+trauma
+tahoe
+advert
+possess
+flashers
+subaru
+vanilla
+picnic
+souls
+arrivals
+spank
+hollow
+vault
+securely
+fioricet
+groove
+pursuit
+wires
+mails
+backing
+sleeps
+blake
+travis
+endless
+figured
+orbit
+niger
+bacon
+heater
+colony
+cannon
+circus
+promoted
+forbes
+moldova
+paxil
+spine
+trout
+enclosed
+cooked
+thriller
+transmit
+apnic
+fatty
+gerald
+pressed
+scanned
+hunger
+mariah
+joyce
+surgeon
+cement
+planners
+disputes
+textiles
+missile
+intranet
+closes
+deborah
+marco
+assists
+gabriel
+auditor
+aquarium
+violin
+prophet
+bracket
+isaac
+oxide
+naples
+promptly
+modems
+harmful
+prozac
+sexually
+dividend
+newark
+glucose
+phantom
+playback
+turtle
+warned
+neural
+fossil
+hometown
+badly
+apollo
+persian
+handmade
+greene
+robots
+grenada
+scoop
+earning
+mailman
+sanyo
+nested
+somalia
+movers
+verbal
+blink
+carlo
+workflow
+novelty
+bryant
+tiles
+voyuer
+switched
+tamil
+garmin
+fuzzy
+grams
+richards
+budgets
+toolkit
+render
+carmen
+hardwood
+erotica
+temporal
+forge
+dense
+brave
+awful
+airplane
+istanbul
+impose
+viewers
+asbestos
+meyer
+enters
+savage
+willow
+resumes
+throwing
+existed
+wagon
+barbie
+knock
+potatoes
+thorough
+peers
+roland
+optimum
+quilt
+creature
+mounts
+syracuse
+refresh
+webcast
+michel
+subtle
+notre
+maldives
+stripes
+firmware
+shepherd
+canberra
+cradle
+mambo
+flour
+sympathy
+choir
+avoiding
+blond
+expects
+jumping
+fabrics
+polymer
+hygiene
+poultry
+virtue
+burst
+surgeons
+bouquet
+promotes
+mandate
+wiley
+corpus
+johnston
+fibre
+shades
+indices
+adware
+zoloft
+prisoner
+daisy
+halifax
+ultram
+cursor
+earliest
+donated
+stuffed
+insects
+crude
+morrison
+maiden
+examines
+viking
+myrtle
+bored
+cleanup
+bother
+budapest
+knitting
+attacked
+bhutan
+mating
+compute
+redhead
+arrives
+tractor
+allah
+unwrap
+fares
+resist
+hoped
+safer
+wagner
+touched
+cologne
+wishing
+ranger
+smallest
+newman
+marsh
+ricky
+scared
+theta
+monsters
+asylum
+lightbox
+robbie
+stake
+cocktail
+outlets
+arbor
+poison