This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Create inversion list for Assigned code points
[perl5.git] / Porting / checkAUTHORS.pl
CommitLineData
5649b9c9
NC
1#!/usr/bin/perl -w
2use strict;
8a5e2fa6 3my ($committer, $patch, $author);
cdad3b53 4use utf8;
5649b9c9 5use Getopt::Long;
0be47eca 6use Unicode::Collate;
7582f0f6
JV
7use Text::Wrap;
8$Text::Wrap::columns = 80;
5649b9c9 9
946fbe37
DG
10my ($rank, $ta, $ack, $who, $tap) = (0) x 5;
11my ($author_file, $percentage, $cumulative, $reverse);
12my (%authors, %untraced, %patchers, %committers, %real_names);
13
14my $result = GetOptions (
15 # modes
c673b32a
MH
16 "who" => \$who,
17 "rank" => \$rank,
946fbe37 18 "thanks-applied" => \$ta,
c673b32a
MH
19 "missing" => \$ack ,
20 "tap" => \$tap,
21
946fbe37 22 # modifiers
c673b32a
MH
23 "authors=s" => \$author_file,
24 "percentage" => \$percentage, # show as %age
25 "cumulative" => \$cumulative,
26 "reverse" => \$reverse,
00229b97 27 );
5649b9c9 28
946fbe37 29if (!$result or ( $rank + $ta + $who + $ack + $tap != 1 ) or !@ARGV) {
7582f0f6
JV
30 usage();
31}
32
946fbe37 33$author_file ||= './AUTHORS';
c673b32a 34die "Can't locate '$author_file'. Specify it with '--authors <path>'."
946fbe37
DG
35 unless -f $author_file;
36
7582f0f6
JV
37my $map = generate_known_author_map();
38
946fbe37 39read_authors_files($author_file);
7582f0f6 40
7582f0f6
JV
41
42if ($rank) {
3877da06 43 parse_commits_from_stdin();
7582f0f6
JV
44 display_ordered(\%patchers);
45} elsif ($ta) {
3877da06 46 parse_commits_from_stdin();
7582f0f6 47 display_ordered(\%committers);
946fbe37 48} elsif ($tap) {
3877da06 49 parse_commits_from_stdin_authors();
7582f0f6 50 display_test_output(\%patchers, \%authors, \%real_names);
946fbe37 51} elsif ($ack) {
3877da06 52 parse_commits_from_stdin();
7582f0f6 53 display_missing_authors(\%patchers, \%authors, \%real_names);
64265e98 54} elsif ($who) {
3877da06 55 parse_commits_from_stdin();
946fbe37 56 list_authors(\%patchers, \%authors);
7582f0f6
JV
57}
58
7582f0f6
JV
59exit(0);
60
61sub usage {
62
5649b9c9 63 die <<"EOS";
946fbe37
DG
64Usage: $0 [modes] [modifiers] <git-log-output-file>
65
66Modes (use only one):
67 --who # show list of unique authors by full name
68 --rank # rank authors by patches
69 --thanks-applied # ranks committers of others' patches
70 --missing # display authors not in AUTHORS
71 --tap # show authors present/missing as TAP
72
73Modifiers:
74 --authors <authors-file> # path to authors file (default: ./AUTHORS)
75 --percentage # show rankings as percentages
76 --cumulative # show rankings cumulatively
77 --reverse # show rankings in reverse
78
79Generate git-log-output-file with git log --pretty=fuller rev1..rev2
47e01c32 80(or pipe by specifying '-' for stdin). For example:
64265e98 81 \$ git log --pretty=fuller v5.12.0..v5.12.1 > gitlog
946fbe37 82 \$ perl Porting/checkAUTHORS.pl --rank --percentage gitlog
5649b9c9
NC
83EOS
84}
85
64265e98 86sub list_authors {
946fbe37
DG
87 my ($patchers, $authors) = @_;
88 binmode(STDOUT, ":utf8");
0be47eca 89 print wrap '', '', join(', ', Unicode::Collate->new(level => 1)->sort(
946fbe37 90 map { $authors->{$_} }
0be47eca 91 keys %$patchers)) . ".\n";
64265e98 92}
7582f0f6
JV
93
94sub parse_commits_from_stdin {
95 my @lines = split( /^commit\s*/sm, join( '', <> ) );
96 for (@lines) {
97 next if m/^$/;
98 next if m/^(\S*?)^Merge:/ism; # skip merge commits
8a5e2fa6 99 if (m/^(.*?)^Author:\s*(.*?)^AuthorDate:\s*.*?^Commit:\s*(.*?)^(.*)$/gism) {
7582f0f6
JV
100
101 # new patch
8a5e2fa6 102 ( $patch, $author, $committer ) = ( $1, $2, $3 );
7582f0f6
JV
103 chomp($author);
104 unless ($author) { die $_ }
105 chomp($committer);
106 unless ($committer) { die $_ }
107 process( $committer, $patch, $author );
108 } else {
109 die "XXX $_ did not match";
110 }
e427132c 111 }
e427132c 112
e427132c
JV
113}
114
3877da06
DM
115# just grab authors. Quicker than parse_commits_from_stdin
116
117sub parse_commits_from_stdin_authors {
118 while (<>) {
119 next unless /^Author:\s*(.*)$/;
120 my $author = $1;
121 $author = _raw_address($author);
122 $patchers{$author}++;
123 }
124}
125
e427132c 126
7582f0f6
JV
127sub generate_known_author_map {
128 my %map;
e427132c 129
7582f0f6
JV
130 my $prev = "";
131 while (<DATA>) {
132 chomp;
133 s/\\100/\@/g;
134 $_ = lc;
135 if ( my ( $correct, $alias ) = /^\s*([^#\s]\S*)\s+(.*\S)/ ) {
136 $correct =~ s/^\\043/#/;
137 if ( $correct eq '+' ) { $correct = $prev }
138 else { $prev = $correct }
139 $map{$alias} = $correct;
140 }
141 }
8513229b 142
7582f0f6
JV
143 #
144 # Email addresses for we do not have names.
145 #
146 $map{$_} = "?"
147 for
148 "bah\100longitude.com",
149 "bbucklan\100jpl-devvax.jpl.nasa.gov",
150 "bilbo\100ua.fm",
151 "bob\100starlabs.net",
152 "cygwin\100cygwin.com",
153 "david\100dhaller.de", "erik\100cs.uni-jena.de", "info\100lingo.kiev.ua", # Lingo Translation agency
154 "jms\100mathras.comcast.net",
155 "premchai21\100yahoo.com",
156 "pxm\100nubz.org",
157 "raf\100tradingpost.com.au",
158 "smoketst\100hp46t243.cup.hp.com", "root\100chronos.fi.muni.cz", # no clue - jrv 20090803
159 "gomar\100md.media-web.de", # no clue - jrv 20090803
160 "data-drift\100so.uio.no", # no data. originally private message from 199701282014.VAA12645@selters.uio.no
161 "arbor\100al37al08.telecel.pt"
162 , # reported perlbug ticket 5196 - no actual code contribution. no real name - jrv 20091006
163 "oracle\100pcr8.pcr.com", # Reported perlbug ticket 1015 - no patch - Probably Ed Eddington ed@pcr.com
48f3d0c6 164 "snaury\100gmail.com", # Reported cpan ticket 35943, with patch for fix
7582f0f6
JV
165 ;
166
167 #
168 # Email addresses for people that don't have an email address in AUTHORS
169 # Presumably deliberately?
170 #
171
172 $map{$_} = '!' for
173
174 # Nick Ing-Simmons has passed away (2006-09-25).
175 "nick\100ing-simmons.net",
176 "nik\100tiuk.ti.com",
177 "nick.ing-simmons\100elixent.com",
178 "nick\100ni-s.u-net.com",
179 "nick.ing-simmons\100tiuk.ti.com",
180
181 # Iain Truskett has passed away (2003-12-29).
182 "perl\100dellah.anu.edu.au", "spoon\100dellah.org", "spoon\100cpan.org",
183
184 # Ton Hospel
185 "me-02\100ton.iguana.be", "perl-5.8.0\100ton.iguana.be", "perl5-porters\100ton.iguana.be",
186
187 # Beau Cox
188 "beau\100beaucox.com",
189
190 # Randy W. Sims
191 "ml-perl\100thepierianspring.org",
192
193 # perl internal addresses
194 "perl5-porters\100africa.nicoh.com",
195 "perlbug\100perl.org",,
196 "perl5-porters.nicoh.com",
197 "perlbug-followup\100perl.org",
198 "perlbug-comment\100perl.org",
199 "bug-module-corelist\100rt.cpan.org",
200 "bug-storable\100rt.cpan.org",
201 "bugs-perl5\100bugs6.perl.org",
202 "unknown",
203 "unknown\100unknown",
204 "unknown\100longtimeago",
205 "unknown\100perl.org",
206 "",
207 "(none)",
208 ;
209
210 return \%map;
211}
e427132c 212
7582f0f6
JV
213sub read_authors_files {
214 my @authors = (@_);
215 return unless (@authors);
946fbe37 216 my (%count, %raw);
7582f0f6 217 foreach my $filename (@authors) {
1ae6ead9 218 open FH, '<', $filename or die "Can't open $filename: $!";
60d42009 219 binmode FH, ':encoding(UTF-8)';
7582f0f6
JV
220 while (<FH>) {
221 next if /^\#/;
222 next if /^-- /;
946fbe37 223 if (/^([^<]+)<([^>]+)>/) {
7582f0f6 224 # Easy line.
946fbe37
DG
225 my ($name, $email) = ($1, $2);
226 $name =~ s/\s*\z//;
227 $raw{$email} = $name;
228 $count{$email}++;
daeedd11 229 } elsif (/^([- .'\w]+)[\t\n]/) {
7582f0f6
JV
230
231 # Name only
232 $untraced{$1}++;
233 } elsif ( length $_ ) {
234 chomp;
235 warn "Can't parse line '$_'";
236 } else {
237 next;
238 }
239 }
8513229b 240 }
7582f0f6 241 foreach ( keys %raw ) {
946fbe37
DG
242 print "E-mail $_ occurs $count{$_} times\n" if $count{$_} > 1;
243 my $lc = lc $_;
244 $authors{ $map->{$lc} || $lc } = $raw{$_};
7582f0f6 245 }
946fbe37 246 $authors{$_} = $_ for qw(? !);
8513229b
A
247}
248
7582f0f6
JV
249sub display_test_output {
250 my $patchers = shift;
251 my $authors = shift;
252 my $real_names = shift;
253 my $count = 0;
3877da06 254 printf "1..%d\n", scalar keys %$patchers;
7582f0f6 255 foreach ( sort keys %$patchers ) {
3877da06 256 $count++;
7582f0f6
JV
257 if ($authors->{$_}) {
258 print "ok $count - ".$real_names->{$_} ." $_\n";
259 } else {
260 print "not ok $count - Contributor not found in AUTHORS: $_ ".($real_names->{$_} || '???' )."\n";
7ce1b4c4 261 print STDERR ($real_names->{$_} || '???' )." <$_> not found in AUTHORS\n";
7582f0f6 262 }
8513229b 263
7582f0f6 264 }
5649b9c9
NC
265}
266
e427132c 267sub display_missing_authors {
7582f0f6
JV
268 my $patchers = shift;
269 my $authors = shift;
e427132c 270 my $real_names = shift;
7582f0f6
JV
271 my %missing;
272 foreach ( sort keys %$patchers ) {
273 next if $authors->{$_};
274
275 # Sort by number of patches, then name.
276 $missing{ $patchers{$_} }->{$_}++;
277 }
278 foreach my $patches ( sort { $b <=> $a } keys %missing ) {
279 print "\n\n=head1 $patches patch(es)\n\n";
280 foreach my $author ( sort keys %{ $missing{$patches} } ) {
281 my $xauthor = $author;
282 $xauthor =~ s/@/\\100/g; # xxx temp hack
283 print "" . ( $real_names->{$author} || $author ) . "\t\t\t<" . $xauthor . ">\n";
284 }
5649b9c9 285 }
5649b9c9
NC
286}
287
288sub display_ordered {
7582f0f6
JV
289 my $what = shift;
290 my @sorted;
291 my $total;
292
293 while ( my ( $name, $count ) = each %$what ) {
294 push @{ $sorted[$count] }, $name;
295 $total += $count;
296 }
297
298 my $i = @sorted;
299 return unless @sorted;
300 my $sum = 0;
301 foreach my $i ( $reverse ? 0 .. $#sorted : reverse 0 .. $#sorted ) {
302 next unless $sorted[$i];
303 my $prefix;
304 $sum += $i * @{ $sorted[$i] };
305
306 # Value to display is either this one, or the cumulative sum.
307 my $value = $cumulative ? $sum : $i;
308 if ($percentage) {
309 $prefix = sprintf "%6.2f:\t", 100 * $value / $total;
310 } else {
311 $prefix = "$value:\t";
312 }
313 print wrap ( $prefix, "\t", join( " ", sort @{ $sorted[$i] } ), "\n" );
15b8f96d 314 }
5649b9c9
NC
315}
316
317sub process {
7582f0f6
JV
318 my ( $committer, $patch, $author ) = @_;
319 return unless $author;
320 return unless $committer;
321
322 $author = _raw_address($author);
323 $patchers{$author}++;
324
325 $committer = _raw_address($committer);
326 if ( $committer ne $author ) {
327
328 # separate commit credit only if committing someone else's patch
329 $committers{$committer}++;
330 }
5649b9c9
NC
331}
332
00229b97
JV
333sub _raw_address {
334 my $addr = shift;
335 my $real_name;
350bd8f1 336 if ($addr =~ /(?:\\?")?\s*\(via RT\) <perlbug-followup\@perl\.org>$/p) {
08dc3bc8 337 my $name = ${^PREMATCH};
e529a387 338 $addr = 'perlbug-followup@perl.org';
08dc3bc8
A
339 #
340 # Try to find the author
341 #
ac664a5e
DR
342 if (exists $map->{$name}) {
343 $addr = $map->{$name};
344 $real_name = $authors{$addr};
345 }
346 else {
347 while (my ($email, $author_name) = each %authors) {
348 if ($name eq $author_name) {
349 $addr = $email;
350 $real_name = $name;
351 last;
352 }
08dc3bc8
A
353 }
354 }
355 }
356 elsif ( $addr =~ /<.*>/ ) {
7582f0f6
JV
357 $addr =~ s/^\s*(.*)\s*<\s*(.*?)\s*>.*$/$2/;
358 $real_name = $1;
00229b97 359 }
5a528087
CB
360 $addr =~ s/\[mailto://;
361 $addr =~ s/\]//;
00229b97 362 $addr = lc $addr;
e427132c 363 $addr = $map->{$addr} || $addr;
7582f0f6 364 $addr =~ s/\\100/@/g; # Sometimes, there are encoded @ signs in the git log.
5e8353a0 365
7582f0f6 366 if ($real_name) { $real_names{$addr} = $real_name }
00229b97
JV
367 return $addr;
368}
369
5649b9c9 370
8513229b
A
371__DATA__
372
373#
374# List of mappings. First entry the "correct" email address, as appears
375# in the AUTHORS file. Second is any "alias" mapped to it.
376#
a695a9ef 377# If the "correct" email address is a '+', the entry above it is reused;
8513229b
A
378# this for addresses with more than one alias.
379#
380# Note that all entries are in lowercase. Further, no '@' signs should
381# appear; use \100 instead.
382#
383#
384# Committers.
385#
386adi enache\100rdslink.ro
387alanbur alan.burlison\100sun.com
388+ alan.burlison\100uk.sun.com
00229b97
JV
389+ aburlison\100cix.compulink.co.uk
390ams ams\100toroid.org
391+ ams\100wiw.org
8513229b 392chip chip\100pobox.com
00229b97
JV
393+ chip\100perl.com
394+ salzench\100nielsenmedia.com
395+ chip\100atlantic.net
396+ chip\100rio.atlantic.net
397+ salzench\100dun.nielsen.com
3bf51dad 398+ chip\100ci005.sv2.upperbeyond.com
8513229b
A
399craigb craig.berry\100psinetcs.com
400+ craig.berry\100metamorgs.com
401+ craig.berry\100signaltreesolutions.com
402+ craigberry\100mac.com
a94e4597 403+ craig.a.berry\100gmail.com
e82692ac 404+ craig a. berry)
8513229b
A
405davem davem\100fdgroup.com
406+ davem\100iabyn.nospamdeletethisbit.com
a94e4597 407+ davem\100iabyn.com
8513229b
A
408+ davem\100fdgroup.co.uk
409+ davem\100fdisolutions.com
410+ davem\100iabyn.com
411demerphq demerphq\100gmail.com
412+ yves.orton\100de.mci.com
413+ yves.orton\100mciworldcom.de
745b54e4 414+ yves.orton\100booking.com
00229b97
JV
415+ demerphq\100dromedary.booking.com
416+ demerphq\100gemini.(none)
417+ demerphq\100camel.booking.com
418+ demerphq\100hotmail.com
8513229b 419doughera doughera\100lafayette.edu
00229b97
JV
420+ doughera\100lafcol.lafayette.edu
421+ doughera\100fractal.phys.lafayette.edu
422+ doughera.lafayette.edu
423+ doughera\100newton.phys.lafayette.edu
424
8513229b 425gbarr gbarr\100pobox.com
00229b97
JV
426+ bodg\100tiuk.ti.com
427+ gbarr\100ti.com
428+ graham.barr\100tiuk.ti.com
e82692ac 429+ gbarr\100monty.mutatus.co.uk
8513229b
A
430gisle gisle\100activestate.com
431+ gisle\100aas.no
00229b97
JV
432+ aas\100aas.no
433+ aas\100bergen.sn.no
8513229b
A
434gsar gsar\100activestate.com
435+ gsar\100cpan.org
00229b97 436+ gsar\100engin.umich.edu
8513229b
A
437hv hv\100crypt.compulink.co.uk
438+ hv\100crypt.org
00229b97 439+ hv\100iii.co.uk
8513229b
A
440jhi jhi\100iki.fi
441+ jhietaniemi\100gmail.com
442+ jhi\100kosh.hut.fi
00229b97 443+ jhi\100alpha.hut.fi
8513229b 444+ jhi\100cc.hut.fi
fda5b70a 445+ jhi\100hut.fi
8513229b 446+ jarkko.hietaniemi\100nokia.com
00229b97 447+ jarkko.hietaniemi\100cc.hut.fi
63d7924f 448+ jarkko.hietaniemi\100booking.com
00229b97
JV
449jesse jesse\100bestpractical.com
450+ jesse\100fsck.com
451+ jesse\100perl.org
8513229b
A
452merijn h.m.brand\100xs4all.nl
453+ h.m.brand\100hccnet.nl
454+ merijn\100l1.procura.nl
e82692ac 455+ merijn\100a5.(none)
8513229b 456mhx mhx-perl\100gmx.net
e82692ac 457+ mhx\100r2d2.(none)
93456aa7
JV
458mst mst\100shadowcat.co.uk
459+ matthewt\100hercule.scsys.co.uk
8513229b
A
460nicholas nick\100unfortu.net
461+ nick\100ccl4.org
462+ nick\100talking.bollo.cx
463+ nick\100plum.flirble.org
464+ nick\100babyhippo.co.uk
465+ nick\100bagpuss.unfortu.net
e82692ac 466+ nick\100babyhippo.com
93456aa7 467+ nicholas\100dromedary.ams6.corp.booking.com
e82692ac 468+ Nicholas Clark (sans From field in mail header)
8513229b
A
469pudge pudge\100pobox.com
470rgs rgarciasuarez\100free.fr
471+ rgarciasuarez\100mandrakesoft.com
472+ rgarciasuarez\100mandriva.com
473+ rgarciasuarez\100gmail.com
474+ raphel.garcia-suarez\100hexaflux.com
12feb466 475+ rgs@consttype.org
8513229b
A
476sky sky\100nanisky.com
477+ artur\100contiller.se
478+ arthur\100contiller.se
86e2f329
S
479smueller 7k8lrvf02\100sneakemail.com
480+ kjx9zthh3001\100sneakemail.com
481+ dtr8sin02\100sneakemail.com
482+ rt8363b02\100sneakemail.com
483+ o6hhmk002\100sneakemail.com
484+ smueller\100cpan.org
485+ l2ot9pa02\100sneakemail.com
486+ wyp3rlx02\100sneakemail.com
487+ 0mgwtfbbq\100sneakemail.com
488+ xyey9001\100sneakemail.com
03c4920e
SH
489steveh steve.m.hay\100googlemail.com
490+ stevehay\100planit.com
b692cd7a 491+ steve.hay\100uk.radan.com
8513229b
A
492stevep steve\100fisharerojo.org
493+ steve.peters\100gmail.com
e82692ac 494+ root\100dixie.cscaper.com
00229b97
JV
495timb Tim.Bunce\100pobox.com
496+ tim.bunce\100ig.co.uk
87ff2bbe
TC
497tonyc tony\100develop-help.com
498+ tony\100openbsd32.tony.develop-help.com
a2d496af 499+ tony\100saturn.(none)
8513229b
A
500
501#
502# Mere mortals.
503#
00229b97 504\043####\100juerd.nl juerd\100cpan.org
212682ea 505+ juerd\100c3.convolution.nl
00229b97 506+ juerd\100convolution.nl
00229b97 507a.r.ferreira\100gmail.com aferreira\100shopzilla.com
8513229b 508abe\100ztreet.demon.nl abeltje\100cpan.org
00229b97 509abela\100hsc.fr abela\100geneanet.org
8513229b
A
510abigail\100abigail.be abigail\100foad.org
511+ abigail\100abigail.nl
00229b97 512+ abigail\100fnx.com
e82692ac 513aburt\100isis.cs.du.edu isis!aburt
00229b97 514ach\100mpe.mpg.de ach\100rosat.mpe-garching.mpg.de
e82692ac 515adavies\100ptc.com alex.davies\100talktalk.net
8513229b 516ajohnson\100nvidia.com ajohnson\100wischip.com
e82692ac 517+ anders\100broadcom.com
8513229b 518alexm\100netli.com alexm\100w-m.ru
a94e4597 519alex-p5p\100earth.li alex\100rcon.rog
00229b97 520alexmv\100mit.edu alex\100chmrr.net
8513229b 521alian\100cpan.org alian\100alianwebserver.com
00229b97
JV
522allen\100grumman.com allen\100gateway.grumman.com
523allen\100huarp.harvard.edu nort\100bottesini.harvard.edu
e82692ac 524+ nort\100qnx.com
8513229b 525allens\100cpan.org easmith\100beatrice.rutgers.edu
e82692ac 526+ root\100dogberry.rutgers.edu
00229b97
JV
527andreas.koenig\100anima.de andreas.koenig.gmwojprw\100franz.ak.mind.de
528+ andreas.koenig.7os6vvqr\100franz.ak.mind.de
8513229b 529+ a.koenig\100mind.de
00229b97
JV
530+ k\100anna.in-berlin.de
531+ andk\100cpan.org
532+ koenig\100anna.mind.de
533+ k\100anna.mind.de
e82692ac
MB
534+ root\100ak-71.mind.de
535+ root\100ak-75.mind.de
536+ k\100sissy.in-berlin.de
537+ a.koenig\100kulturbox.de
538+ k\100sissy.in-berlin.de
539+ root\100dubravka.in-berlin.de
8513229b
A
540anno4000\100lublin.zrz.tu-berlin.de anno4000\100mailbox.tu-berlin.de
541+ siegel\100zrz.tu-berlin.de
25b68122 542apocal@cpan.org perl\1000ne.us
e82692ac
MB
543arnold\100gnu.ai.mit.edu arnold\100emoryu2.arpa
544+ gatech!skeeve!arnold
7dbe2044 545arodland\100cpan.org andrew\100hbslabs.com
e82692ac 546arussell\100cs.uml.edu adam\100adam-pc.(none)
8513229b
A
547ash\100cpan.org ash_cpan\100firemirror.com
548avarab\100gmail.com avar\100cpan.org
549
00229b97
JV
550bailey\100newman.upenn.edu bailey\100hmivax.humgen.upenn.edu
551+ bailey\100genetics.upenn.edu
e82692ac 552+ bailey.charles\100gmail.com
8513229b 553bah\100ecnvantage.com bholzman\100longitude.com
e82692ac
MB
554barries\100slaysys.com root\100jester.slaysys.com
555bkedryna\100home.com bart\100cg681574-a.adubn1.nj.home.com
00229b97 556bcarter\100gumdrop.flyinganvil.org q.eibcartereio.=~m-b.{6}-cgimosx\100gumdrop.flyinganvil.org
8513229b 557ben_tilly\100operamail.com btilly\100gmail.com
e82692ac
MB
558+ ben_tilly\100hotmail.com
559ben\100morrow.me.uk mauzo\100csv.warwick.ac.uk
560+ mauzo\100.(none)
561bepi\100perl.it enrico.sorcinelli\100gmail.com
562bert\100alum.mit.edu bert\100genscan.com
93456aa7 563bigbang7\100gmail.com ddascalescu+github\100gmail.com
f8a89dce 564blgl\100stacken.kth.se blgl\100hagernas.com
6fd0ab63 565+ 2bfjdsla52kztwejndzdstsxl9athp\100gmail.com
d203773f 566brian.d.foy\100gmail.com bdfoy\100cpan.org
e82692ac 567BQW10602\100nifty.com sadahiro\100cpan.org
ac664a5e 568bulk88\100hotmail.com bulk88
8513229b 569
4bba85d0 570chad.granum\100dreamhost.com exodist7\100gmail.com
4d88742b 571choroba\100cpan.org choroba\100weed.(none)
8513229b 572chromatic\100wgz.org chromatic\100rmci.net
201da6ff 573ckuskie\100cadence.com colink\100perldreamer.com
040d2336 574claes\100surfar.nu claes\100versed.se
e82692ac 575clintp\100geeksalad.org cpierce1\100ford.com
8513229b 576clkao\100clkao.org clkao\100bestpractical.com
00229b97 577corion\100corion.net corion\100cpan.org
8513229b
A
578cp\100onsitetech.com publiustemp-p5p\100yahoo.com
579+ publiustemp-p5p3\100yahoo.com
580cpan\100audreyt.org autrijus\100egb.elixus.org
581+ autrijus\100geb.elixus.org
582+ autrijus\100gmail.com
583+ autrijus\100ossf.iis.sinica.edu.tw
584+ autrijus\100autrijus.org
585+ audreyt\100audreyt.org
e82692ac 586cpan\100ton.iguana.be me-01\100ton.iguana.be
d203773f 587crt\100kiski.net perl\100ctweten.amsite.com
8513229b 588
e82692ac 589dairiki\100dairiki.org dairiki at dairiki.org
fda5b70a 590dagolden\100cpan.org xdaveg\100gmail.com
6fb5c52d 591+ xdg\100xdg.me
895db057 592damian\100conway.org damian\100cs.monash.edu.au
00229b97
JV
593dan\100sidhe.org sugalsd\100lbcc.cc.or.us
594+ sugalskd\100osshe.edu
e82692ac 595daniel\100bitpusher.com daniel\100biz.bitpusher.com
8513229b 596david.dyck\100fluke.com dcd\100tc.fluke.com
9d1ee727
KW
597david\100justatheory.com david\100wheeler.net
598+ david\100kineticode.com
599+ david\100wheeler.com
e82692ac 600+ david\100wheeler.net
c2e08204 601whatever\100davidnicol.com davidnicol\100gmail.com
3bf51dad 602dennis\100booking.com dennis\100camel.ams6.corp.booking.com
6439ee77 603+ dennis.kaarsemaker\100booking.com
a4d824de 604+ dennis\100kaarsemaker.net
d203773f 605dev-perl\100pimb.org knew-p5p\100pimb.org
5a528087 606+ lists-p5p\100pimb.org
e82692ac 607djberg86\100attbi.com djberg96\100attbi.com
09c3cef4 608dk\100tetsuo.karasik.eu.org dmitry\100karasik.eu.org
8513229b 609domo\100computer.org shouldbedomo\100mac.com
00229b97 610+ domo\100slipper.ip.lu
e82692ac 611+ domo\100tcp.ip.lu
00229b97
JV
612dougm\100covalent.net dougm\100opengroup.org
613+ dougm\100osf.org
e82692ac
MB
614dougw\100cpan.org doug_wilson\100intuit.com
615dwegscheid\100qtm.net wegscd\100whirlpool.com
616edwardp\100excitehome.net epeschko\100den-mdev1
617+ epeschko\100elmer.tci.com
618+ esp5\100pge.com
00229b97 619egf7\100columbia.edu efifer\100sanwaint.com
e82692ac 620eggert\100twinsun.com eggert\100sea.sm.unisys.com
2330d9b7 621etj\100cpan.org mohawk2\100users.noreply.github.com
8513229b
A
622
623fugazi\100zyx.net larrysh\100cpan.org
e82692ac 624+ lshatzer\100islanddata.com
8513229b 625
e82692ac 626gbacon\100itsc.uah.edu gbacon\100adtrn-srv4.adtran.com
d203773f 627gerberb\100zenez.com root\100devsys0.zenez.com
e82692ac
MB
628gfuji\100cpan.org g.psy.va\100gmail.com
629gerard\100ggoossen.net gerard\100tty.nl
fda5b70a
JV
630gibreel\100pobox.com stephen.zander\100interlock.mckesson.com
631+ srz\100loopback
b9ff0c49 632gideon\100cpan.org gidisrael\100gmail.com
00229b97 633gnat\100frii.com gnat\100prometheus.frii.com
8513229b
A
634gp\100familiehaase.de gerrit\100familiehaase.de
635grazz\100pobox.com grazz\100nyc.rr.com
d203773f 636gward\100ase.com greg\100bic.mni.mcgill.ca
a22ececd
AHA
637haggai\100cpan.org alanhaggai\100alanhaggai.org
638+ alanhaggai\100gmail.com
00229b97
JV
639hansmu\100xs4all.nl hansm\100icgroup.nl
640+ hansm\100icgned.nl
641+ hans\100icgned.nl
b5e2dde1 642+ hans\100icgroup.nl
00229b97 643+ hansm\100euronet.nl
e82692ac 644+ hansm\100euro.net
8513229b 645hio\100ymir.co.jp hio\100hio.jp
e82692ac 646hops\100sco.com hops\100scoot.pdev.sco.com
8513229b 647
74314d7a 648ian.goodacre\100xtra.co.nz ian\100debian.lan
e82692ac 649ingo_weinhold\100gmx.de bonefish\100cs.tu-berlin.de
c07671d7 650
e82692ac 651james\100mastros.biz theorb\100desert-island.me.uk
5ab3d1b3
JD
652jan\100jandubois.com jand\100activestate.com
653+ jan.dubois\100ibm.net
8513229b
A
654japhy\100pobox.com japhy\100pobox.org
655+ japhy\100perlmonk.org
656+ japhy\100cpan.org
e82692ac 657+ jeffp\100crusoe.net
8513229b 658jari.aalto\100poboxes.com jari.aalto\100cante.net
e82692ac
MB
659jarausch\100numa1.igpm.rwth-aachen.de helmutjarausch\100unknown
660jasons\100cs.unm.edu jasons\100sandy-home.arc.unm.edu
661jbuehler\100hekimian.com jhpb\100hekimian.com
662jcromie\100100divsol.com jcromie\100cpan.org
8513229b 663+ jim.cromie\100gmail.com
1ae6ead9 664jd\100cpanel.net lightsey\100debian.org
8513229b
A
665jdhedden\100cpan.org jerry\100hedden.us
666+ jdhedden\1001979.usna.com
667+ jdhedden\100gmail.com
668+ jdhedden\100yahoo.com
e82692ac 669+ jhedden\100pn100-02-2-356p.corp.bloomberg.com
9846bace 670+ jdhedden\100solydxk
e82692ac 671jeremy\100zawodny.com jzawodn\100wcnet.org
d203773f 672jesse\100sig.bsh.com jesse\100ginger
8513229b 673jfriedl\100yahoo.com jfriedl\100yahoo-inc.com
e82692ac 674jfs\100fluent.com jfs\100jfs.fluent.com
fd548ba4
FC
675jhannah\100mutationgrid.com jay\100jays.net
676+ jhannah\100omnihotels.com
677jidanni\100jidanni.org jidanni\100hoffa.dreamhost.com
8513229b 678jjore\100cpan.org twists\100gmail.com
dfe12d64
JK
679jkeenan\100cpan.org jkeen\100verizon.net
680+ jkeenan\100dromedary-001.ams6.corp.booking.com
fda5b70a
JV
681jns\100integration-house.com jns\100gellyfish.com
682+ gellyfish\100gellyfish.com
e82692ac
MB
683john\100atlantech.com john\100titanic.atlantech.com
684john\100johnwright.org john.wright\100hp.com
685joseph\100cscaper.com joseph\1005sigma.com
686joshua\100rodd.us jrodd\100pbs.org
687jtobey\100john-edwin-tobey.org jtobey\100user1.channel1.com
9feb1316 688jpeacock\100messagesystems.com john.peacock\100havurah-software.org
fda5b70a 689+ jpeacock\100havurah-software.org
e82692ac 690+ jpeacock\100dsl092-147-156.wdc1.dsl.speakeasy.net
feaafc86 691+ jpeacock\100jpeacock-hp.doesntexist.org
05ddb96b 692+ jpeacock\100cpan.org
9feb1316 693+ jpeacock\100rowman.com
277c21af 694jpl.jpl\100gmail.com jpl\100research.att.com
d203773f 695jql\100accessone.com jql\100jql.accessone.com
e82692ac 696jsm28\100hermes.cam.ac.uk jsm28\100cam.ac.uk
8513229b
A
697
698kane\100dwim.org kane\100xs4all.net
699+ kane\100cpan.org
700+ kane\100xs4all.nl
701+ jos\100dwim.org
702+ jib\100ripe.net
60d42009 703keith.s.thompson\100gmail.com kst\100mib.org
00229b97 704ken\100mathforum.org kenahoo\100gmail.com
e82692ac 705+ ken.williams\100thomsonreuters.com
31a15f36 706kentfredric\100gmail.com kentnl\100cpan.org
63781094
RS
707kmx\100volny.cz kmx\100volny.cz
708+ kmx\100cpan.org
8513229b 709kroepke\100dolphin-services.de kay\100dolphin-services.de
78d25b6c
JV
710kst\100mib.org kst\100cts.com
711+ kst\100SDSC.EDU
8513229b 712kstar\100wolfetech.com kstar\100cpan.org
00229b97 713+ kurt_starsinic\100ml.com
e82692ac
MB
714+ kstar\100www.chapin.edu
715+ kstar\100chapin.edu
00229b97
JV
716larry\100wall.org lwall\100jpl-devvax.jpl.nasa.gov
717+ lwall\100netlabs.com
718+ larry\100netlabs.com
719+ lwall\100sems.com
720+ lwall\100scalpel.netlabs.com
e82692ac
MB
721laszlo.molnar\100eth.ericsson.se molnarl\100cdata.tvnet.hu
722+ ml1050\100freemail.hu
946fbe37 723lewart\100uiuc.edu lewart\100vadds.cvm.uiuc.edu
00229b97 724+ d-lewart\100uiuc.edu
84ad9c6c 725lkundrak\100v3.sk lubo.rintel\100gooddata.com
e82692ac
MB
726lstein\100cshl.org lstein\100formaggio.cshl.org
727+ lstein\100genome.wi.mit.edu
84ad9c6c 728l.mai\100web.de plokinom\100gmail.com
e82692ac
MB
729lupe\100lupe-christoph.de lupe\100alanya.m.isar.de
730lutherh\100stratcom.com lutherh\100infinet.com
731mab\100wdl.loral.com markb\100rdcf.sm.unisys.com
00229b97 732marcel\100codewerk.com gr\100univie.ac.at
06fdbb00 733+ hanekomu\100gmail.com
9d0e037a 734marcgreen\100cpan.org marcgreen\100wpi.edu
d4cb306b 735markleightonfisher\100gmail.com fisherm\100tce.com
a8a7611f 736+ mark-fisher\100mindspring.com
e82692ac
MB
737mark.p.lutz\100boeing.com tecmpl1\100triton.ca.boeing.com
738marnix\100gmail.com pttesac!marnix!vanam
88048be8 739marty+p5p\100kasei.com marty\100martian.org
8513229b
A
740mats\100sm6sxl.net mats\100sm5sxl.net
741mbarbon\100dsi.unive.it mattia.barbon\100libero.it
a73beef9 742+ mattia\100barbon.org
8513229b 743mcmahon\100ibiblio.org mcmahon\100metalab.unc.edu
e82692ac
MB
744me\100davidglasser.net glasser\100tang-eleven-seventy-nine.mit.edu
745merijnb\100iloquent.nl merijnb\100ms.com
746+ merijnb\100iloquent.com
d203773f 747merlyn\100stonehenge.com merlyn\100gadget.cscaper.com
d5564dc4 748mestre.smash\100gmail.com smash\100cpan.org
8513229b 749mgjv\100comdyn.com.au mgjv\100tradingpost.com.au
e82692ac 750mlh\100swl.msd.ray.com webtools\100uewrhp03.msd.ray.com
8513229b
A
751michael.schroeder\100informatik.uni-erlangen.de mls\100suse.de
752mike\100stok.co.uk mike\100exegenix.com
e7613a67 753miyagawa\100bulknews.net miyagawa\100edge.co.jp
8513229b 754mjtg\100cam.ac.uk mjtg\100cus.cam.ac.uk
e82692ac 755mikedlr\100tardis.ed.ac.uk mikedlr\100it.com.pl
fda5b70a 756moritz\100casella.verplant.org moritz\100faui2k3.org
e82692ac 757+ moritz lenz
fda5b70a 758
e82692ac 759neale\100VMA.TABNSW.COM.AU neale\100pucc.princeton.edu
d203773f 760neeracher\100mac.com neeri\100iis.ee.ethz.ch
e82692ac 761neil\100bowers.com neilb\100cre.canon.co.uk
20b15ed1 762
8513229b
A
763nospam-abuse\100bloodgate.com tels\100bloodgate.com
764+ perl_dummy\100bloodgate.com
00229b97 765
e82692ac
MB
766ian.phillipps\100iname.com ian_phillipps\100yahoo.co.uk
767+ ian\100dial.pipex.com
00229b97 768ignasi.roca\100fujitsu-siemens.com ignasi.roca\100fujitsu.siemens.es
e82692ac 769ikegami\100adaelis.com eric\100fmdev10.(none)
d203773f 770ilmari\100ilmari.org ilmari\100vesla.ilmari.org
e82692ac 771illpide\100telecel.pt arbor\100al37al08.telecel.pt
20b15ed1
JV
772# see http://www.nntp.perl.org/group/perl.perl5.porters/2001/01/msg28925.html
773#
a94e4597
S
774ilya\100math.berkeley.edu ilya\100math.ohio-state.edu
775+ nospam-abuse\100ilyaz.org
e82692ac 776+ [9]ilya\100math.ohio-state.edu
d203773f 777ilya\100martynov.org ilya\100juil.nonet
8513229b 778
31febfb6
FC
779joshua.pritikin\100db.com joshua\100paloalto.com
780
9fcef2a0
FC
781litt\100acm.org tlhackque\100yahoo.com
782
3b8d3bda
FC
783meyering@asic.sc.ti.com jim\100meyering.net
784
00229b97 785okamoto\100corp.hp.com okamoto\100hpcc123.corp.hp.com
e82692ac 786orwant\100oreilly.com orwant\100media.mit.edu
00229b97 787
8513229b
A
788p5-authors\100crystalflame.net perl\100crystalflame.net
789+ rs\100crystalflame.net
00229b97
JV
790+ coral\100eekeek.org
791+ coral\100moonlight.crystalflame.net
792+ rs\100oregonnet.com
93456aa7 793+ rs\100topsy.com
8513229b 794paul.green\100stratus.com paul_greenvos\100vos.stratus.com
e82692ac 795+ pgreen\100seussnt.stratus.com
8513229b
A
796paul.marquess\100btinternet.com paul_marquess\100yahoo.co.uk
797+ paul.marquess\100ntlworld.com
798+ paul.marquess\100openwave.com
00229b97
JV
799+ pmarquess\100bfsec.bt.co.uk
800+ pmqs\100cpan.org
e82692ac
MB
801+ paul\100paul-desktop.(none)
802Pavel.Zakouril\100mff.cuni.cz root\100egg.karlov.mff.cuni.cz
8513229b 803pcg\100goof.com schmorp\100schmorp.de
00229b97 804perl\100cadop.com cdp\100hpescdp.fc.hp.com
e82692ac 805perl\100greerga.m-l.org greerga\100m-l.org
00229b97
JV
806perl\100profvince.com vince\100profvince.com
807perl-rt\100wizbit.be p5p\100perl.wizbit.be
8513229b 808# Maybe we should special case this to get real names out?
946fbe37 809Peter.Dintelmann\100Dresdner-Bank.com peter.dintelmann\100dresdner-bank.com
fda5b70a 810# NOTE: There is an intentional trailing space in the line above
00229b97 811pfeifer\100wait.de pfeifer\100charly.informatik.uni-dortmund.de
e82692ac 812+ upf\100de.uu.net
36a4e1d1
NC
813ribasushi@cpan.org rabbit\100rabbit.us
814+ rabbit+bugs\100rabbit.us
d6abd0a3 815perl\100aaroncrane.co.uk arc\100cpan.org
8513229b
A
816phil\100perkpartners.com phil\100finchcomputer.com
817pimlott\100idiomtech.com andrew\100pimlott.net
e82692ac
MB
818+ pimlott\100abel.math.harvard.edu
819pixel\100mandriva.com pixel\100mandrakesoft.com
8513229b
A
820pne\100cpan.org philip.newton\100gmx.net
821+ philip.newton\100datenrevision.de
822+ pnewton\100gmx.de
00229b97 823pprymmer\100factset.com pvhp\100forte.com
3eab96ca
KW
824khw\100cpan.org khw\100karl.(none)
825+ public\100khwilliamson.com
e82692ac 826+ khw\100khw-desktop.(none)
8513229b
A
827
828radu\100netsoft.ro rgreab\100fx.ro
549122ae 829rajagopa\100pauline.schrodinger.com rajagopa\100schrodinger.com
00229b97 830raphael.manfredi\100pobox.com raphael_manfredi\100grenoble.hp.com
117a8c22
RB
831module@renee-baecker.de renee.baecker\100smart-websolutions.de
832+ reneeb\100reneeb-desktop.(none)
a7f7a167 833+ github@renee-baecker.de
2bacf451 834+ otrs\100ubuntu.(none)
524cd813 835+ perl\100renee-baecker.de
f157ad77 836richard.foley\100rfi.net richard.foley\100t-online.de
8513229b 837+ richard.foley\100ubs.com
f157ad77 838+ richard.foley\100ubsw.com
8513229b
A
839rick\100consumercontact.com rick\100bort.ca
840+ rick.delaney\100rogers.com
a94e4597 841+ rick\100bort.ca
e82692ac 842+ rick.delaney\100home.com
4bc69901 843rjbs\100cpan.org rjbs-perl-p5p\100lists.manxome.org
e82692ac 844+ perl.p5p\100rjbs.manxome.org
8513229b
A
845rjk\100linguist.dartmouth.edu rjk\100linguist.thayer.dartmouth.edu
846+ rjk-perl-p5p\100tamias.net
ec36440e 847+ rjk\100tamias.net
e82692ac 848rjray\100redhat.com rjray\100uswest.com
8513229b 849rmgiroux\100acm.org rmgiroux\100hotmail.com
e82692ac 850+ mgiroux\100bear.com
a94e4597
S
851rmbarker\100cpan.org rmb1\100cise.npl.co.uk
852+ robin.barker\100npl.co.uk
00229b97 853+ rmb\100cise.npl.co.uk
5b2081f5 854+ robin\100spade-ubuntu.(none)
b2061475 855+ r.m.barker\100btinternet.com
34c029c7 856+ rmbarker.cpan\100btinternet.com
00229b97 857robertmay\100cpan.org rob\100themayfamily.me.uk
d203773f 858roberto\100keltia.freenix.fr roberto\100eurocontrol.fr
00229b97
JV
859robin\100cpan.org robin\100kitsite.com
860roderick\100argon.org roderick\100gate.net
e82692ac 861+ roderick\100ibcinc.com
3560ee4d 862argrath\100ub32.org root\100ub32.org
8513229b 863rootbeer\100teleport.com rootbeer\100redcat.com
e82692ac 864+ tomphoenix\100unknown
3bf51dad 865rurban\100x-ray.at rurban\100cpan.org
080d4cd3 866+ rurban\100cpanel.net
2515a12c 867rvtol+news\100isolution.nl rvtol\100isolution.nl
c0e9ef6a 868sartak\100bestpractical.com sartak\100gmail.com
a3d8b840 869+ code\100sartak.org
ed429a63 870sadinoff\100olf.com danny-cpan\100sadinoff.com
8513229b
A
871schubiger\100cpan.org steven\100accognoscere.org
872+ sts\100accognoscere.org
00229b97 873+ schubiger\100gmail.com
f273d1e7 874+ stsc\100refcnt.org
8513229b 875schwern\100pobox.com schwern\100gmail.com
8ed05479
MS
876+ schwern\100athens.arena-i.com
877+ schwern\100blackrider.aocn.com
878+ schwern\100ool-18b93024.dyn.optonline.net
e82692ac
MB
879scotth\100sgi.com author scotth\100sgi.com 842220273 +0000
880+ schotth\100sgi.com
881schwab\100suse.de schwab\100issan.informatik.uni-dortmund.de
882+ schwab\100ls5.informatik.uni-dortmund.de
8513229b
A
883sebastien\100aperghis.net maddingue\100free.fr
884+ saper\100cpan.org
1048cfac 885shigeya\100wide.ad.jp shigeya\100foretune.co.jp
917cc27d
SF
886shlomif\100cpan.org shlomif\100vipe.technion.ac.il
887+ shlomif\100iglu.org.il
ff47f462 888+ shlomif+processed-by-perl\100gmail.com
be235cc1 889+ shlomif\100shlomifish.org
8513229b
A
890simon\100simon-cozens.org simon\100pembro4.pmb.ox.ac.uk
891+ simon\100brecon.co.uk
892+ simon\100othersideofthe.earth.li
893+ simon\100cozens.net
894+ simon\100netthink.co.uk
cd799e5a
SL
895lannings\100who.int lannings\100gmail.com
896+ slanning\100cpan.org
8513229b 897slaven\100rezic.de slaven.rezic\100berlin.de
a94e4597 898+ srezic\100iconmobile.com
00229b97 899+ srezic\100cpan.org
e82692ac
MB
900+ eserte\100cs.tu-berlin.de
901+ eserte\100vran.herceg.de
8513229b
A
902smcc\100mit.edu smcc\100ocf.berkeley.edu
903+ smcc\100csua.berkeley.edu
00229b97 904+ alias\100mcs.com
fda5b70a 905+ smccam\100uclink4.berkeley.edu
8513229b
A
906spider\100orb.nashua.nh.us spider\100web.zk3.dec.com
907+ spider\100leggy.zk3.dec.com
908+ spider-perl\100orb.nashua.nh.us
909+ spider\100peano.zk3.dec.com
fda5b70a
JV
910+ spider.boardman\100orb.nashua.nh.us>
911+ spidb\100cpan.org
e82692ac
MB
912+ spider.boardman\100orb.nashua.nh.us
913+ root\100peano.zk3.dec.com
1ea085fc 914spiros\100lokku.com s.denaxas\100gmail.com
00229b97 915spp\100ds.net spp\100psa.pencom.com
fda5b70a
JV
916+ spp\100psasolar.colltech.com
917+ spp\100spotter.yi.org
8513229b
A
918stef\100mongueurs.net stef\100payrard.net
919+ s.payrard\100wanadoo.fr
e82692ac
MB
920+ properler\100freesurf.fr
921+ stef\100francenet.fr
cb991fd8 922stevan\100cpan.org stevan.little\100gmail.com
c6a7f572 923+ stevan.little\100iinteractive.com
e82692ac 924sthoenna\100efn.org ysth\100raven.shiftboard.com
8b2d7fd7 925sisyphus1\100optusnet.com.au sisyphus\100cpan.org
8513229b
A
926
927tassilo.parseval\100post.rwth-aachen.de tassilo.von.parseval\100rwth-aachen.de
e82692ac
MB
928tchrist\100perl.com tchrist\100mox.perl.com
929+ tchrist\100jhereg.perl.com
930thomas.dorner\100start.de tdorner\100amadeus.net
931tjenness\100cpan.org t.jenness\100jach.hawaii.edu
932+ timj\100jach.hawaii.edu
933tobez\100tobez.org tobez\100plab.ku.dk
2fe8fc10 934toddr\100cpan.org toddr\100cpanel.net
e82692ac
MB
935tom\100compton.nu thh\100cyberscience.com
936tom.horsley\100mail.ccur.com tom.horsley\100ccur.com
937+ tom\100amber.ssd.hcsc.com
938
939vkonovalov\100lucent.com vkonovalov\100peterstar.ru
940+ konovalo\100mail.wplus.net
941+ vadim\100vkonovalov.ru
942+ vkonovalov\100spb.lucent.com
943+ vkonovalov\100alcatel-lucent.com
058a5f6c 944+ vadim.konovalov\100alcatel-lucent.com
e82692ac
MB
945
946whatever\100davidnicol.com davidnicol\100gmail.com
947wolfgang.laun\100alcatel.at wolfgang.laun\100chello.at
948+ wolfgang.laun\100thalesgroup.com
949+ wolfgang.laun\100gmail.com
64698074 950wolfsage\100gmail.com mhorsfall\100darmstadtium.(none)
e82692ac 951yath\100yath.de yath-perlbug\100yath.de
691b316a 952