4 $Text::Wrap::columns = 80;
5 my ($committer, $patch, $log,$date);
8 my ($rank, $percentage, $cumulative, $reverse, $ta, @authors, %authors,
9 %untraced, %patchers, %committers, %real_names);
10 my $result = GetOptions ("rank" => \$rank, # rank authors
11 "thanks-applied" => \$ta, # ranks committers
12 "acknowledged=s" => \@authors , # authors files
13 "percentage" => \$percentage, # show as %age
14 "cumulative" => \$cumulative,
15 "reverse" => \$reverse,
18 if (!$result or (($rank||0) + ($ta||0) + (@authors ? 1 : 0) != 1) or !@ARGV) {
20 $0 --rank Changelogs # rank authors by patches
21 $0 --acknowledged <authors file> Changelogs # Display unacknowledged authors
22 $0 --thanks-applied Changelogs # ranks committers
23 $0 --percentage ... # show rankings as percentages
24 $0 --cumulative ... # show rankings cumulatively
25 $0 --reverse ... # show rankings in reverse
26 Specify stdin as - if needs be. Remember that option names can be abbreviated.
38 if (my ($correct, $alias) = /^\s*([^#\s]\S*)\s+(.*\S)/) {
39 $correct =~ s/^\\043/#/;
40 if ($correct eq '+') {$correct = $prev} else {$prev = $correct}
41 $map {$alias} = $correct;
46 # Email addresses for we do not have names.
49 "agrow\100thegotonerd.com",
50 "alexander_bluhm\100genua.de",
51 "alexander_gernler\100genua.de",
52 "ammon\100rhythm.com",
53 "andrew\100sundale.net",
54 "bah\100longitude.com",
55 "bbucklan\100jpl-devvax.jpl.nasa.gov",
56 "ben\100linuxgazette.net",
58 "blino\100mandriva.com",
59 "bob\100starlabs.net",
60 "bonefish\100cs.tu-berlin.de",
61 "bstrand\100switchmanagement.com",
62 "cygwin\100cygwin.com",
63 "david\100dhaller.de",
64 "dformosa\100dformosa.zeta.org.au",
66 "erik\100cs.uni-jena.de",
67 "glasser\100tang-eleven-seventy-nine.mit.edu",
68 "gml4410\100ggr.co.uk",
69 "grommel\100sears.com",
70 "ilmari\100vesla.ilmari.org",
72 "info\100lingo.kiev.ua",
73 "jms\100mathras.comcast.net",
76 "kaminsky\100math.huji.ac.il",
77 "knew-p5p\100pimb.org",
79 "lemkemch\100t-online.de",
80 "mauzo\100csv.warwick.ac.uk",
81 "mlelstv\100serpens.de",
84 "pancho\100pancho.name",
85 "perlbug\100veggiechinese.net",
87 "premchai21\100yahoo.com",
89 "raf\100tradingpost.com.au",
90 "scott\100perlcode.org",
91 "smoketst\100hp46t243.cup.hp.com",
92 "yath-perlbug\100yath.de",
96 # Email addresses for people that don't have an email address in AUTHORS
97 # Presumably deliberately?
101 # Nick Ing-Simmons has passed away (2006-09-25).
102 "nick\100ing-simmons.net",
103 "nik\100tiuk.ti.com",
104 "nick.ing-simmons\100elixent.com",
105 "nick\100ni-s.u-net.com",
106 "nick.ing-simmons\100tiuk.ti.com",
108 # Iain Truskett has passed away (2003-12-29).
109 "perl\100dellah.anu.edu.au",
110 "spoon\100dellah.org",
114 "me-02\100ton.iguana.be",
115 "perl-5.8.0\100ton.iguana.be",
116 "perl5-porters\100ton.iguana.be",
119 "beau\100beaucox.com",
122 "ml-perl\100thepierianspring.org",
124 # perl internal addresses
126 "perl5-porters\100africa.nicoh.com",
127 "perlbug\100perl.org",
128 "perl5-porters.nicoh.com"
134 foreach my $filename (@authors) {
135 open FH, "<$filename" or die "Can't open $filename: $!";
142 } elsif (/^([-A-Za-z0-9 .\'À-ÖØöø-ÿ]+)[\t\n]/) {
147 warn "Can't parse line '$_'";
151 foreach (keys %raw) {
152 print "E-mail $_ occurs $raw{$_} times\n" if $raw{$_} > 1;
154 $authors{$map{$_} || $_}++;
160 my @lines = split(/^commit\s*/sm,join('',<>));
163 next if m/^(\S*?)^Merge:/ism; # skip merge commits
164 if (m/^(.*?)^Author:\s*(.*?)^Date:\s*(.*?)^(.*)$/gism) {
166 ($patch, $committer, $date,$log) = ($1,$2,$3,$4);
168 unless ($committer) { die $_}
169 &process ($committer, $patch, $log);
170 } else { die "XXX $_ did not match";}
175 &display_ordered(\%patchers);
177 &display_ordered(\%committers);
180 foreach (sort keys %patchers) {
181 next if $authors{$_};
182 # Sort by number of patches, then name.
183 $missing{$patchers{$_}}->{$_}++;
185 foreach my $patches (sort {$b <=> $a} keys %missing) {
186 print "\n\n=head1 $patches patch(es)\n\n";
187 foreach my $author (sort keys %{$missing{$patches}}) {
188 my $xauthor = $author;
189 $xauthor =~ s/@/\\100/g; # xxx temp hack
190 print "".($real_names{$author}||$author) ."\t\t\t<" . $xauthor.">\n" ;
195 sub display_ordered {
199 while (my ($name, $count) = each %$what) {
200 push @{$sorted[$count]}, $name;
205 return unless @sorted;
207 foreach my $i ($reverse ? 0 .. $#sorted : reverse 0 .. $#sorted) {
208 next unless $sorted[$i];
210 $sum += $i * @{$sorted[$i]};
211 # Value to display is either this one, or the cumulative sum.
212 my $value = $cumulative ? $sum : $i;
214 $prefix = sprintf "%6.2f:\t", 100 * $value / $total;
216 $prefix = "$value:\t";
218 print wrap ($prefix, "\t", join (" ", sort @{$sorted[$i]}), "\n");
223 my ($committer, $patch, $log) = @_;
224 return unless $committer;
225 my @authors = $log =~ /From:\s+.*?([^"\@ \t\n<>]+\@[^"\@ \t\n<>]+)/gm;
228 foreach my $addr (@authors) {
230 $patchers{_raw_address($addr)}++;
232 # print "$patch: @authors\n";
233 $committers{_raw_address($committer)}++;
235 # print "$patch: $committer\n";
236 # Not entirely fair as this means that the maint pumpking scores for
237 # everything intergrated that wasn't a third party patch in blead
238 $patchers{_raw_address($committer)}++;
245 if ($addr =~ /<.*>/) {
246 $addr =~ s/^\s*(.*)\s*<(.*?)>.*$/$2/ ;
250 $addr = $map{$addr} || $addr;
252 if ($real_name) { $real_names{$addr} = $real_name};
260 # List of mappings. First entry the "correct" email address, as appears
261 # in the AUTHORS file. Second is any "alias" mapped to it.
263 # If the "correct" email address is a '+', the entry above is reused;
264 # this for addresses with more than one alias.
266 # Note that all entries are in lowercase. Further, no '@' signs should
267 # appear; use \100 instead.
272 adi enache\100rdslink.ro
273 alanbur alan.burlison\100sun.com
274 + alan.burlison\100uk.sun.com
275 + aburlison\100cix.compulink.co.uk
276 ams ams\100toroid.org
278 chip chip\100pobox.com
280 + salzench\100nielsenmedia.com
281 + chip\100atlantic.net
282 + chip\100rio.atlantic.net
283 + salzench\100dun.nielsen.com
284 craigb craig.berry\100psinetcs.com
285 + craig.berry\100metamorgs.com
286 + craig.berry\100signaltreesolutions.com
287 + craigberry\100mac.com
288 + craig.a.berry\100gmail.com
289 davem davem\100fdgroup.com
290 + davem\100iabyn.nospamdeletethisbit.com
292 + davem\100fdgroup.co.uk
293 + davem\100fdisolutions.com
295 demerphq demerphq\100gmail.com
296 + yves.orton\100de.mci.com
297 + yves.orton\100mciworldcom.de
298 + demerphq\100dromedary.booking.com
299 + demerphq\100gemini.(none)
300 + demerphq\100camel.booking.com
301 + demerphq\100hotmail.com
302 doughera doughera\100lafayette.edu
303 + doughera\100lafcol.lafayette.edu
304 + doughera\100fractal.phys.lafayette.edu
305 + doughera.lafayette.edu
306 + doughera\100newton.phys.lafayette.edu
308 gbarr gbarr\100pobox.com
309 + bodg\100tiuk.ti.com
311 + graham.barr\100tiuk.ti.com
312 gisle gisle\100activestate.com
315 + aas\100bergen.sn.no
316 gsar gsar\100activestate.com
318 + gsar\100engin.umich.edu
319 hv hv\100crypt.compulink.co.uk
323 + jhietaniemi\100gmail.com
325 + jhi\100alpha.hut.fi
328 + jarkko.hietaniemi\100nokia.com
329 + jarkko.hietaniemi\100cc.hut.fi
330 jesse jesse\100bestpractical.com
333 merijn h.m.brand\100xs4all.nl
334 + h.m.brand\100hccnet.nl
335 + merijn\100l1.procura.nl
336 + merijn\100a5.(none)
338 + merijnb\100iloquent.nl
339 + merijnb\100iloquent.com
340 mhx mhx-perl\100gmx.net
342 nicholas nick\100unfortu.net
344 + nick\100talking.bollo.cx
345 + nick\100plum.flirble.org
346 + nick\100babyhippo.co.uk
347 + nick\100bagpuss.unfortu.net
348 + Nicholas Clark (sans From field in mail header)
349 pudge pudge\100pobox.com
350 rgs rgarciasuarez\100free.fr
351 + rgarciasuarez\100mandrakesoft.com
352 + rgarciasuarez\100mandriva.com
353 + rgarciasuarez\100gmail.com
354 + raphel.garcia-suarez\100hexaflux.com
355 sky sky\100nanisky.com
356 + artur\100contiller.se
357 + arthur\100contiller.se
358 steveh stevehay\100planit.com
359 + steve.hay\100uk.radan.com
360 stevep steve\100fisharerojo.org
361 + steve.peters\100gmail.com
362 timb Tim.Bunce\100pobox.com
363 + tim.bunce\100ig.co.uk
369 \043####\100juerd.nl juerd\100cpan.org
370 + juerd\100convolution.nl
371 7k8lrvf02\100sneakemail.com kjx9zthh3001\100sneakemail.com
372 + dtr8sin02\100sneakemail.com
373 + rt8363b02\100sneakemail.com
374 + o6hhmk002\100sneakemail.com
375 + smueller\100cpan.org
376 + l2ot9pa02\100sneakemail.com
377 + wyp3rlx02\100sneakemail.com
378 + 0mgwtfbbq\100sneakemail.com
380 a.r.ferreira\100gmail.com aferreira\100shopzilla.com
381 abe\100ztreet.demon.nl abeltje\100cpan.org
382 abela\100hsc.fr abela\100geneanet.org
383 abigail\100abigail.be abigail\100foad.org
384 + abigail\100abigail.nl
386 ach\100mpe.mpg.de ach\100rosat.mpe-garching.mpg.de
387 ajohnson\100nvidia.com ajohnson\100wischip.com
388 alexm\100netli.com alexm\100w-m.ru
389 alex-p5p\100earth.li alex\100rcon.rog
390 alexmv\100mit.edu alex\100chmrr.net
391 alian\100cpan.org alian\100alianwebserver.com
392 allen\100grumman.com allen\100gateway.grumman.com
393 allen\100huarp.harvard.edu nort\100bottesini.harvard.edu
395 allens\100cpan.org easmith\100beatrice.rutgers.edu
396 andreas.koenig\100anima.de andreas.koenig.gmwojprw\100franz.ak.mind.de
397 + andreas.koenig.7os6vvqr\100franz.ak.mind.de
398 + a.koenig\100mind.de
399 + k\100anna.in-berlin.de
401 + koenig\100anna.mind.de
403 + root\100ak-71.mind.de
404 + root\100ak-75.mind.de
405 + k\100sissy.in-berlin.de
406 + a.koenig\100kulturbox.de
407 + k\100sissy.in-berlin.de
408 anno4000\100lublin.zrz.tu-berlin.de anno4000\100mailbox.tu-berlin.de
409 + siegel\100zrz.tu-berlin.de
410 ash\100cpan.org ash_cpan\100firemirror.com
411 avarab\100gmail.com avar\100cpan.org
413 bailey\100newman.upenn.edu bailey\100hmivax.humgen.upenn.edu
414 + bailey\100genetics.upenn.edu
415 + bailey.charles\100gmail.com
416 bah\100ecnvantage.com bholzman\100longitude.com
417 bcarter\100gumdrop.flyinganvil.org q.eibcartereio.=~m-b.{6}-cgimosx\100gumdrop.flyinganvil.org
418 ben_tilly\100operamail.com btilly\100gmail.com
419 BQW10602\100nifty.com sadahiro\100cpan.org
421 chromatic\100wgz.org chromatic\100rmci.net
422 clintp\100geeksalad.org cpierce1\100ford.com
423 clkao\100clkao.org clkao\100bestpractical.com
424 corion\100corion.net corion\100cpan.org
425 cp\100onsitetech.com publiustemp-p5p\100yahoo.com
426 + publiustemp-p5p3\100yahoo.com
427 cpan\100audreyt.org autrijus\100egb.elixus.org
428 + autrijus\100geb.elixus.org
429 + autrijus\100gmail.com
430 + autrijus\100ossf.iis.sinica.edu.tw
431 + autrijus\100autrijus.org
432 + audreyt\100audreyt.org
433 crt\100kiski.net perl\100ctweten.amsite.com
435 damian\100conway.org damian\100cs.monash.edu.au
436 dagolden\100cpan.org xdaveg\100gmail.com
437 dan\100sidhe.org sugalsd\100lbcc.cc.or.us
438 + sugalskd\100osshe.edu
439 david.dyck\100fluke.com dcd\100tc.fluke.com
440 david\100wheeler.com david\100kineticode.com
441 domo\100computer.org shouldbedomo\100mac.com
442 + domo\100slipper.ip.lu
444 dougm\100covalent.net dougm\100opengroup.org
447 egf7\100columbia.edu efifer\100sanwaint.com
448 epeschko\100den-mdev1 esp5\100pge.com
450 fugazi\100zyx.net larrysh\100cpan.org
451 + lshatzer\100islanddata.com
453 gbacon\100itsc.uah.edu gbacon\100adtrn-srv4.adtran.com
454 gfuji\100cpan.org g.psy.va\100gmail.com
455 gibreel\100pobox.com stephen.zander\100interlock.mckesson.com
457 gnat\100frii.com gnat\100prometheus.frii.com
458 gp\100familiehaase.de gerrit\100familiehaase.de
459 grazz\100pobox.com grazz\100nyc.rr.com
460 gward\100ase.com greg\100bic.mni.mcgill.ca
461 hansmu\100xs4all.nl hansm\100icgroup.nl
464 + hansm\100euronet.nl
465 hio\100ymir.co.jp hio\100hio.jp
466 hops\100sco.com hops\100scoot.pdev.sco.com
468 james\100mastros.biz theorb\100desert-island.me.uk
469 jand\100activestate.com jan.dubois\100ibm.net
470 japhy\100pobox.com japhy\100pobox.org
471 + japhy\100perlmonk.org
473 jari.aalto\100poboxes.com jari.aalto\100cante.net
474 jcromie\100divsol.com jcromie\100cpan.org
475 + jim.cromie\100gmail.com
476 jdanni\100jdanni.org jidanni\100hoffa.dreamhost.com
477 jdhedden\100cpan.org jerry\100hedden.us
478 + jdhedden\1001979.usna.com
479 + jdhedden\100gmail.com
480 + jdhedden\100yahoo.com
481 + jhedden\100pn100-02-2-356p.corp.bloomberg.com
482 jeremy\100zawodny.com jzawodn\100wcnet.org
483 jesse\100sig.bsh.com jesse\100ginger
484 jfriedl\100yahoo.com jfriedl\100yahoo-inc.com
485 jhannah\100omnihotels.com jay\100jays.net
486 jjore\100cpan.org twists\100gmail.com
487 jns\100integration-house.com jns\100gellyfish.com
488 + gellyfish\100gellyfish.com
489 john\100atlantech.com john\100titanic.atlantech.com
490 john\100johnwright.org john.wright\100hp.com
491 joseph\100cscaper.com joseph\1005sigma.com
492 joshua\100rodd.us jrodd\100pbs.org
493 jtobey\100john-edwin-tobey.org jtobey\100user1.channel1.com
494 jpeacock\100rowman.com john.peacock\100havurah-software.org
495 + jpeacock\100havurah-software.org
496 jsm28\100hermes.cam.ac.uk jsm28\100cam.ac.uk
498 kane\100dwim.org kane\100xs4all.net
503 ken\100mathforum.org kenahoo\100gmail.com
504 kroepke\100dolphin-services.de kay\100dolphin-services.de
505 kstar\100wolfetech.com kstar\100cpan.org
506 + kurt_starsinic\100ml.com
507 + kstar\100www.chapin.edu
508 larry\100wall.org lwall\100jpl-devvax.jpl.nasa.gov
509 + lwall\100netlabs.com
510 + larry\100netlabs.com
512 + lwall\100scalpel.netlabs.com
513 laszlo.molnar\100eth.ericsson.se molnarl\100cdata.tvnet.hu
514 lewart\100uiuc.edu lewart\100vadds.cvm.uiuc.edu
515 + d-lewart\100uiuc.edu
516 lstein\100cshl.org lstein\100formaggio.cshl.org
517 + lstein\100genome.wi.mit.edu
518 lupe\100lupe-christoph.de lupe\100alanya.m.isar.de
519 lutherh\100stratcom.com lutherh\100infinet.com
520 mab\100wdl.loral.com markb\100rdcf.sm.unisys.com
521 marcel\100codewerk.com gr\100univie.ac.at
522 mark.p.lutz\100boeing.com tecmpl1\100triton.ca.boeing.com
523 mats\100sm6sxl.net mats\100sm5sxl.net
524 mbarbon\100dsi.unive.it mattia.barbon\100libero.it
525 mcmahon\100ibiblio.org mcmahon\100metalab.unc.edu
526 merlyn\100stonehenge.com merlyn\100gadget.cscaper.com
527 mgjv\100comdyn.com.au mgjv\100tradingpost.com.au
528 mlh\100swl.msd.ray.com webtools\100uewrhp03.msd.ray.com
529 michael.schroeder\100informatik.uni-erlangen.de mls\100suse.de
530 mike\100stok.co.uk mike\100exegenix.com
531 mjtg\100cam.ac.uk mjtg\100cus.cam.ac.uk
532 moritz\100casella.verplant.org moritz\100faui2k3.org
536 neeracher\100mac.com neeri\100iis.ee.ethz.ch
537 neil\100bowers.com neilb\100cre.canon.co.uk
538 nospam-abuse\100bloodgate.com tels\100bloodgate.com
539 + perl_dummy\100bloodgate.com
541 ignasi.roca\100fujitsu-siemens.com ignasi.roca\100fujitsu.siemens.es
542 ilya\100math.berkeley.edu ilya\100math.ohio-state.edu
543 + nospam-abuse\100ilyaz.org
545 okamoto\100corp.hp.com okamoto\100hpcc123.corp.hp.com
546 orwant\100oreilly.com orwant\100media.mit.edu
548 p5-authors\100crystalflame.net perl\100crystalflame.net
549 + rs\100crystalflame.net
550 + coral\100eekeek.org
551 + coral\100moonlight.crystalflame.net
552 + rs\100oregonnet.com
553 paul.green\100stratus.com paul_greenvos\100vos.stratus.com
554 + pgreen\100seussnt.stratus.com
555 paul.marquess\100btinternet.com paul_marquess\100yahoo.co.uk
556 + paul.marquess\100ntlworld.com
557 + paul.marquess\100openwave.com
558 + pmarquess\100bfsec.bt.co.uk
560 pcg\100goof.com schmorp\100schmorp.de
561 perl\100cadop.com cdp\100hpescdp.fc.hp.com
562 perl\100greerga.m-l.org greerga\100m-l.org
563 perl\100profvince.com vince\100profvince.com
564 perl-rt\100wizbit.be p5p\100perl.wizbit.be
565 # Maybe we should special case this to get real names out?
566 perlbug\100perl.org perlbug-followup\100perl.org
567 + bugs-perl5\100bugs6.perl.org
568 Peter.Dintelmann\100Dresdner-Bank.com peter.dintelmann\100dresdner-bank.com
569 # NOTE: There is an intentional trailing space in the line above
570 pfeifer\100wait.de pfeifer\100charly.informatik.uni-dortmund.de
572 phil\100perkpartners.com phil\100finchcomputer.com
573 pimlott\100idiomtech.com andrew\100pimlott.net
574 + pimlott\100abel.math.harvard.edu
575 pne\100cpan.org philip.newton\100gmx.net
576 + philip.newton\100datenrevision.de
578 pprymmer\100factset.com pvhp\100forte.com
579 public\100khwilliamson.com khw\100karl.(none)
581 radu\100netsoft.ro rgreab\100fx.ro
582 raphael.manfredi\100pobox.com raphael_manfredi\100grenoble.hp.com
583 renee.baecker\100smart-websolutions.de reneeb\100reneeb-desktop.(none)
584 richard.foley\100ubsw.com richard.foley\100t-online.de
585 + richard.foley\100ubs.com
586 + richard.foley\100rfi.net
587 rick\100consumercontact.com rick\100bort.ca
588 + rick.delaney\100rogers.com
590 rjbs\100cpan.org rjbs-perl-p5p\100lists.manxome.org
591 + perl.p5p\100rjbs.manxome.org
592 rjk\100linguist.dartmouth.edu rjk\100linguist.thayer.dartmouth.edu
593 + rjk-perl-p5p\100tamias.net
594 rjray\100redhat.com rjray\100uswest.com
595 rmgiroux\100acm.org rmgiroux\100hotmail.com
596 + mgiroux\100bear.com
597 rmbarker\100cpan.org rmb1\100cise.npl.co.uk
598 + robin.barker\100npl.co.uk
599 + rmb\100cise.npl.co.uk
600 robertmay\100cpan.org rob\100themayfamily.me.uk
601 roberto\100keltia.freenix.fr roberto\100eurocontrol.fr
602 robin\100cpan.org robin\100kitsite.com
603 roderick\100argon.org roderick\100gate.net
604 + roderick\100ibcinc.com
605 rootbeer\100teleport.com rootbeer\100redcat.com
606 + tomphoenix\100unknown
607 schubiger\100cpan.org steven\100accognoscere.org
608 + sts\100accognoscere.org
609 + schubiger\100gmail.com
610 schwern\100pobox.com schwern\100gmail.com
611 + schwern\100athens.arena-i.com
612 + schwern\100blackrider.aocn.com
613 + schwern\100ool-18b93024.dyn.optonline.net
614 schwab\100suse.de schwab\100issan.informatik.uni-dortmund.de
615 + schwab\100ls5.informatik.uni-dortmund.de
616 sebastien\100aperghis.net maddingue\100free.fr
618 shlomif\100vipe.technion.ac.il shlomif\100iglu.org.il
619 simon\100simon-cozens.org simon\100pembro4.pmb.ox.ac.uk
620 + simon\100brecon.co.uk
621 + simon\100othersideofthe.earth.li
622 + simon\100cozens.net
623 + simon\100netthink.co.uk
624 slaven\100rezic.de slaven.rezic\100berlin.de
625 + srezic\100iconmobile.com
627 + eserte\100cs.tu-berlin.de
628 smcc\100mit.edu smcc\100ocf.berkeley.edu
629 + smcc\100csua.berkeley.edu
631 + smccam\100uclink4.berkeley.edu
632 spider\100orb.nashua.nh.us spider\100web.zk3.dec.com
633 + spider\100leggy.zk3.dec.com
634 + spider-perl\100orb.nashua.nh.us
635 + spider\100peano.zk3.dec.com
636 + spider.boardman\100orb.nashua.nh.us>
638 + spider.boardman\100orb.nashua.nh.us
639 spp\100ds.net spp\100psa.pencom.com
640 + spp\100psasolar.colltech.com
641 + spp\100spotter.yi.org
642 stef\100mongueurs.net stef\100payrard.net
643 + s.payrard\100wanadoo.fr
644 + properler\100freesurf.fr
645 + stef\100francenet.fr
647 tassilo.parseval\100post.rwth-aachen.de tassilo.von.parseval\100rwth-aachen.de
648 tchrist\100perl.com tchrist\100mox.perl.com
649 + tchrist\100jhereg.perl.com
650 thomas.dorner\100start.de tdorner\100amadeus.net
651 tjenness\100cpan.org t.jenness\100jach.hawaii.edu
652 + timj\100jach.hawaii.edu
653 tom.horsley\100mail.ccur.com tom.horsley\100ccur.com
654 + tom\100amber.ssd.hcsc.com
656 vkonovalov\100lucent.com vkonovalov\100peterstar.ru
657 + konovalo\100mail.wplus.net
658 + vadim\100vkonovalov.ru
659 + vkonovalov\100spb.lucent.com
660 + vkonovalov\100alcatel-lucent.com
662 whatever\100davidnicol.com davidnicol\100gmail.com
663 wolfgang.laun\100alcatel.at wolfgang.laun\100chello.at
664 + wolfgang.laun\100thalesgroup.com
665 + wolfgang.laun\100gmail.com