[Mulgara-svn] r752 - projects/xa2/object-pool/scratch

andrae at mulgara.org andrae at mulgara.org
Thu Apr 10 06:06:43 UTC 2008


Author: andrae
Date: 2008-04-09 23:06:42 -0700 (Wed, 09 Apr 2008)
New Revision: 752

Added:
   projects/xa2/object-pool/scratch/LEGAL-propernames
   projects/xa2/object-pool/scratch/propernames
Modified:
   projects/xa2/object-pool/scratch/TrieTest.java
Log:
Well it compiles; it runs; still working on getting it to not crash though.



Added: projects/xa2/object-pool/scratch/LEGAL-propernames
===================================================================
--- projects/xa2/object-pool/scratch/LEGAL-propernames	                        (rev 0)
+++ projects/xa2/object-pool/scratch/LEGAL-propernames	2008-04-10 06:06:42 UTC (rev 752)
@@ -0,0 +1,12 @@
+#	$NetBSD: README,v 1.2 1997/03/26 07:14:32 mikel Exp $
+#	@(#)README	8.1 (Berkeley) 6/5/93
+
+WEB ---- (introduction provided by jaw at riacs) -------------------------
+
+Welcome to web2 (Webster's Second International) all 234,936 words worth.
+The 1934 copyright has elapsed, according to the supplier.  The
+supplemental 'web2a' list contains hyphenated terms as well as assorted
+noun and adverbial phrases.  The wordlist makes a dandy 'grep' victim.
+
+     -- James A. Woods    {ihnp4,hplabs}!ames!jaw    (or jaw at riacs)
+

Modified: projects/xa2/object-pool/scratch/TrieTest.java
===================================================================
--- projects/xa2/object-pool/scratch/TrieTest.java	2008-04-10 04:12:41 UTC (rev 751)
+++ projects/xa2/object-pool/scratch/TrieTest.java	2008-04-10 06:06:42 UTC (rev 752)
@@ -4,10 +4,16 @@
  * Date 9th April 2008
  */
 
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+
 /**
  * Simple test class to help crystalise my thinking on tries.
  */
-
 public class TrieTest {
   public static class NotFound extends Exception {};
 
@@ -32,7 +38,7 @@
 
     public long lookup(String key) throws NotFound {
       if (root == null) {
-        throw NotFound();
+        throw new NotFound();
       }
 
       return root.lookup(key);
@@ -43,87 +49,106 @@
     public static class InsertAbove extends Exception {} ;
     protected static final InsertAbove cont = new InsertAbove();
 
-    int type;
-    TrieLeaf least;
+    protected TrieLeaf least;
 
-    public TrieNode() {
-      type = this.getClass().identityHashCode();
+    protected abstract void insert(TrieLeaf node, int parentLcd) throws InsertAbove;
+    protected abstract long lookup(byte[] key, int parentLcd) throws NotFound;
+
+    public static boolean regionMatches(byte[] lhs, int lhsOff, byte[] rhs, int rhsOff, int len) {
+      if (lhsOff < 0 || rhsOff < 0) {
+        return false;
+      }
+      if (lhs.length < lhsOff + len || rhs.length < rhsOff + len) {
+        return false;
+      }
+      for (int i = 0; i < len; i++) {
+        if (lhs[lhsOff + i] != rhs[rhsOff + i]) return false;
+      }
+
+      return true;
     }
-
-    protected abstract void insert(TrieNode node, int parentLcd);
-    protected abstract long lookup(String str, int parentLcd) throws NotFound;
   }
 
   public static class TrieBranch extends TrieNode {
-    public static final int TYPE = TrieBranch.class.identityHashCode();
-
     int offset;
-    Map<char, TrieNode> children;
+    Map<Byte, TrieNode> children;
+    TrieLeaf term;
 
     public TrieBranch(String str, long value) {
       super();
-      this.offset = str.length;
-      this.children = new HashMap<char, TrieNode>();
-      this.least = new TrieLeaf(str, value);
-      this.children.put(null, this.least);
+      this.children = new HashMap<Byte, TrieNode>();
+      this.term = new TrieLeaf(str, value);
+      this.offset = term.key.length;
+      this.least = this.term;
     }
 
     public TrieBranch(TrieBranch oldRoot, String key, long value) {
+      this(oldRoot, new TrieLeaf(key, value));
+    }
+
+    protected TrieBranch(TrieNode oldNode, TrieLeaf newNode) {
       super();
-      assert oldRoot != null;
-      assert key != null;
-      assert value != null;
+      assert oldNode != null;
+      assert newNode != null;
 
-      TrieLeaf newNode = new TrieLeaf(key, value);
+      offset = 0;
+      children = new HashMap<Byte, TrieNode>();
+      term = null;
+      least = null;
 
-      children = new HashMap<char, TrieNode>();
+      byte[] lhs = oldNode.least.key;
+      byte[] rhs = newNode.key;
 
-      String lhs = oldRoot.least.key;
-      String rhs = newNode.key;
-
       int i = 0;
       while (i < lhs.length && i < rhs.length) {
         if (lhs[i] != rhs[i]) {
           offset = i;
-          children.put(lhs[i], oldRoot);
+          children.put(lhs[i], oldNode);
           children.put(rhs[i], newNode);
 
-          least = lhs[i] < rhs[i] ? oldRoot.least : newNode;
+          least = lhs[i] < rhs[i] ? oldNode.least : newNode;
 
           return; // Escape here.
         }
         i++;
       }
 
-      assert lhs.length != rhs.length;  // Strings can't be equal.
-
-      // If we reach this point the leaf had better be a prefix of the old-root or something has gone wrong.
       if (i < lhs.length) {
-        children.put(lhs[i], oldRoot);
-        children.put(null, newNode);
-        least = newNode
+        offset = i;
+        children.put(lhs[i], oldNode);
+        term = newNode;
+        least = newNode;
+      } else if (i < rhs.length) {
+        if (oldNode instanceof TrieLeaf) {
+          offset = i;
+          children.put(rhs[i], newNode);
+          term = (TrieLeaf)oldNode;
+          least = (TrieLeaf)oldNode;
+        } else {
+          throw new IllegalStateException("Attempt to create new branch node with leaf > branch.");
+        }
       } else {
-        throw new IllegalStateException("Attempt to create new root node with leaf > root.
+        throw new IllegalStateException("Attempt to create new branch node with equal children");
       }
     }
 
-    public insert(String str, long value) {
-      return insert(new TrieLeaf(str, value), 0);
+    public void insert(String str, long value) throws InsertAbove {
+      insert(new TrieLeaf(str, value), 0);
     }
 
     public long lookup(String str) throws NotFound {
-      return lookup(str, 0);
+      return lookup(str.getBytes(), 0);
     }
 
-    protected insert(TrieLeaf node, int parentLcp) throws InsertAbove {
-      if (!least.key.regionMatches(parentLcp, node.least.key, parentLcp, offset - 1)) {
+    protected void insert(TrieLeaf node, int parentLcp) throws InsertAbove {
+      if (!regionMatches(least.key, parentLcp, node.least.key, parentLcp, offset - 1)) {
         throw cont;
       } else {
         // new node matches the lcp of this node.
         TrieNode child;
         if (node.least.key.length == offset) {
           // new node is expected to terminate here.
-          child = children.get(null);
+          child = term;
         } else {
           // new node is expected to terminate in one of this nodes children.
           child = children.get(node.least.key[offset]);
@@ -132,45 +157,38 @@
         if (child == null) {
           // this is the first node to be inserted on this branching key.
           children.put(node.least.key[offset], node);
-          return SUCCESS;
         } else {
           try {
             // there is an existing child node branching on this branching key.
             child.insert(node, offset);
-          } catch (EscapeContinuation k) {
+          } catch (InsertAbove k) {
               // as every child node shares a common lcp, any child will suffice when preparing the new
               // lcp/offset of the new node.  The least node is only required as the new parent's least node
               // will be the smallest of the inserted node and this node's least node.
-              children.put(node.least.key[offset],
-                  new TrieBranch(child, child.least.key, node, node.least.key));
+              children.put(node.least.key[offset], new TrieBranch(child, node));
           }
         }
       }
     }
 
-    protected long lookup(String str, int parentLcd) throws NotFound {
-      if (!least.key.regionMatches(parentLcd, str, parentLcd, offset - 1)) {
+    protected long lookup(byte[] key, int parentLcd) throws NotFound {
+      if (!regionMatches(least.key, parentLcd, key, parentLcd, offset - 1)) {
         throw new NotFound();
       } else {
         // new node matches the lcp of this node.
         TrieNode child;
-        if (str.length == offset) {
+        if (key.length == offset) {
           // new node is expected to terminate here.
-          child = children.get(null);
-          if (child != null) {
-            switch (child.type) {
-              case TrieLeaf.TYPE: return ((TrieLeaf)child).value;
-              case TrieBranch.TYPE: throw new IllegalStateException("Trie entry terminated in a branch");
-              default: throw new IllegalStateException("Unknown trie node type");
-            }
+          if (term != null) {
+            return term.value;
           } else {
             throw new NotFound();
           }
         } else {
           // new node is expected to terminate in one of this nodes children.
-          child = children.get(str[offset]);
+          child = children.get(key[offset]);
           if (child != null) {
-            child.lookup(str, offset);
+            return child.lookup(key, offset);
           } else {
             throw new NotFound();
           }
@@ -179,35 +197,56 @@
     }
   }
 
-
-  public static class TrieLeaf {
-    static final int TYPE = TrieBranch.class.identityHashCode();
-
-    final String key;
+  public static class TrieLeaf extends TrieNode {
+    final byte[] key;
     final long value;
 
     TrieLeaf(String key, long value) {
       super();
-      this.key = key;
+      this.key = key.getBytes();
       this.value = value;
       this.least = this;
     }
 
-    protected void insert(TrieNode node, int parentLcd) throws InsertAbove {
-      switch (node.type) {
-        case TrieLeaf.TYPE:
-          assert key.equals(node.least.key);
-          return;
-        case TrieBranch.TYPE:
-          throw cont;
-        default:
-          throw new IllegalStateException("Attempt to insert unknown node-type into leaf");
+    protected void insert(TrieLeaf node, int parentLcp) throws InsertAbove {
+      if (key.length != node.key.length) {
+        throw cont;
+      } else if (!regionMatches(key, parentLcp, node.key, parentLcp, key.length - parentLcp)) {
+        throw cont;
+      } else if (value == node.value) {
+        return; // Duplicate key/value pair.
+      } else {
+        throw new IllegalArgumentException("Attempt to insert multiple values for same key");
       }
     }
 
-    protected long lookup(String str, int parentLcd) {
-      assert key.equals(str);
+    protected long lookup(byte[] key, int parentLcd) {
+      assert Arrays.equals(this.key, key);
       return value;
     }
   }
+
+
+  public static void main(String[] args) throws Exception {
+    File namesFile = new File("./propernames");
+    Map<String, Long> namesMap = new HashMap<String, Long>();
+    Trie namesTrie = new Trie();
+
+    BufferedReader names = new BufferedReader(new FileReader(namesFile));
+    long n = 0;
+    String name = names.readLine();
+    while (name != null) {
+      namesMap.put(name, n);
+      namesTrie.insert(name, n);
+      name = names.readLine();
+      n++;
+    }
+    names.close();
+
+    for (String key : namesMap.keySet()) {
+      if (namesTrie.lookup(key) != namesMap.get(key)) {
+        throw new IllegalStateException("Trie doesn't match Map");
+      }
+    }
+  }
 }

Added: projects/xa2/object-pool/scratch/propernames
===================================================================
--- projects/xa2/object-pool/scratch/propernames	                        (rev 0)
+++ projects/xa2/object-pool/scratch/propernames	2008-04-10 06:06:42 UTC (rev 752)
@@ -0,0 +1,1323 @@
+Aaron
+Adam
+Adlai
+Adrian
+Agatha
+Ahmed
+Ahmet
+Aimee
+Amy
+Ami
+Al
+Alain
+Alan
+Alastair
+Albert
+Alberto
+Alejandro
+Alex
+Alexander
+Alexis
+Alf
+Alfred
+Alison
+Allan
+Allen
+Alvin
+Amanda
+Amarth
+Amedeo
+Ami
+Amigo
+Amir
+Amos
+Amy
+Anatole
+Anatoly
+Anderson
+Andre
+Andrea
+Andreas
+Andrew
+Andries
+Andy
+Angela
+Angus
+Anita
+Ann
+Anna
+Annard
+Anne
+Annie
+Anthony
+Anton
+Antonella
+Antonio
+Antony
+Archie
+Ariel
+Arlene
+Arne
+Arnold
+Art
+Arthur
+Audrey
+Avery
+Axel
+Barbara
+Barbra
+Barney
+Barrett
+Barrio
+Barry
+Bart
+Barton
+Bea
+Becky
+Beckie
+Belinda
+Ben
+Benjamin
+Benson
+Bernard
+Bernie
+Bert
+Bertrand
+Beth
+Betsy
+Betty
+Beverly
+Bill
+Billy
+Billie
+Bjorne
+Blaine
+Blair
+Blake
+Blayne
+Bob
+Bobbie
+Bobby
+Bonnie
+Boyce
+Boyd
+Brad
+Bradford
+Bradley
+Brandi
+Brandon
+Brandy
+Brenda
+Brendan
+Brender
+Brent
+Bret
+Brett
+Brian
+Briggs
+Brodie
+Brooke
+Bruce
+Bruno
+Bryan
+Bryce
+Bucky
+Bud
+Butler
+Byron
+Caleb
+Calvin
+Carisa
+Carl
+Carlo
+Carlos
+Carol
+Carole
+Caroline
+Carolyn
+Carsten
+Kirsten
+Cristi
+Kristi
+Carter
+Cary
+Case
+Casey
+Leith
+Casper
+Cathy
+Catherine
+Cathrin
+Cathryn
+Cecilia
+Celeste
+Celia
+Charleen
+Charlene
+Charles
+Charley
+Charlie
+Chet
+Chip
+Chris
+Christian
+Christie
+Christina
+Christofer
+Christophe
+Christopher
+Chuck
+Charles
+Cindie
+Cindy
+Clara
+Clare
+Claire
+Clarence
+Clarissa
+Clark
+Claude
+Claudia
+Claudio
+Clay
+Clayton
+Samuel
+Cliff
+Clifford
+Clyde
+Cole
+Clem
+Coleen
+Colin
+Collin
+Connie
+Conrad
+Corey
+Cory
+Courtney
+Craig
+Cris
+Kris
+Cristina
+Cristopher
+Curt
+Curtis
+Cynthia
+Cyrus
+Dale
+Dalton
+Damon
+Damone
+Ramon
+Dan
+Dana
+Dani
+Daniel
+Daniele
+Danielle
+Danny
+Dannie
+Darci
+Daren
+Darin
+Darrell
+Darren
+Darryl
+Daryl
+Dave
+David
+Dawn
+Dawson
+Dean
+Deb
+Debbie
+Debi
+Deborah
+Deirdre
+Del
+Delbert
+Denis
+Dennis
+Derek
+Devon
+Huey
+Dewey
+Louis
+Louie
+Diana
+Diane
+Dick
+Richard
+Dieter
+Dimitry
+Dimetry
+Dion
+Dirk
+Dominic
+Dominick
+Don
+Donal
+Donald
+Donn
+Donne
+Donna
+Donnie
+Donovan
+Dori
+Dory
+Dorian
+Dorothy
+Doug
+Douglas
+Doyle
+Drew
+Duane
+Duke
+Duncan
+Dustin
+Dwayne
+Dwight
+Dylan
+Earl
+Earle
+Earnie
+Ernie
+Ed
+Eddy
+Edgar
+Eddie
+Edith
+Edmond
+Edmund
+Eduardo
+Edward
+Edwin
+Eva
+Eileen
+Erick
+Erik
+Eric
+Elaine
+Eli
+Elias
+Elijah
+Eliot
+Elisabeth
+Elizabeth
+Ellen
+Elliot
+Elliott
+Elric
+Elsa
+Elvis
+Emil
+Emily
+Elwood
+Emma
+Emmett
+Eric
+Erik
+Ernest
+Ernie
+Ernst
+Erwin
+Ethan
+Eugene
+Evan
+Evelyn
+Everett
+Farouk
+Fay
+Frederick
+Felix
+Fletcher
+Floria
+Florian
+Floyd
+Frances
+Francis
+Francisco
+Francois
+Frank
+Franklin
+Jerrie
+Jerry
+Fred
+Frederic
+Frederick
+Fritz
+Gabriel
+Gail
+Gale
+Galen
+Gary
+Gene
+Geoff
+Geoffrey
+Jeff
+Jeffrey
+Jeffie
+George
+Gerald
+Jerald
+Hazel
+Gerard
+Gideon
+Gigi
+Gil
+Gill
+Gilles
+Giles
+Ginny
+Jinny
+Giovanni
+Glen
+Glenn
+Glynn
+Gordon
+Grace
+Graeme
+Graham
+Grant
+Granville
+Greg
+Gregg
+Gregge
+Gregor
+Gregory
+Gretchen
+Griff
+Guido
+Guillermo
+Gunnar
+Gunter
+Guy
+Gypsy
+Hal
+Hamilton
+Hank
+Hans
+Harmon
+Harold
+Harris
+Harry
+Hartmann
+Harv
+Harvey
+Heather
+Hector
+Heidi
+Hein
+Heinrich
+Heinz
+Helen
+Helge
+Henry
+Herb
+Herbert
+Herman
+Herve
+Hienz
+Hilda
+Hillary
+Hillel
+Himawan
+Hirofumi
+Hirotoshi
+Hiroyuki
+Hitoshi
+Hohn
+Holly
+Hon
+Honzo
+Horst
+Hotta
+Howard
+Hsi
+Hsuan
+Huashi
+Hubert
+Hugh
+Hughes
+Hui
+Hume
+Hunter
+Hurf
+Hwa
+Hy
+Ian
+Ilya
+Ima
+Indra
+Ira
+Irfan
+Irvin
+Irving
+Irwin
+Isaac
+Isabelle
+Isidore
+Israel
+Izchak
+Izumi
+Izzy
+Jack
+Jackye
+Jacob
+Jacobson
+Jacques
+Jagath
+Jaime
+Jakob
+James
+Jamie
+Jan
+Jane
+Janet
+Janice
+Janos
+Jared
+Jarl
+Jarmo
+Jarvis
+Jason
+Jay
+Jayant
+Jayesh
+Jean
+Jean-Christophe
+Jean-Pierre
+Jeanette
+Jeanne
+Jeannette
+Jeannie
+Jeany
+Jef
+Jeff
+Jeffery
+Jeffrey
+Jelske
+Jem
+Jenine
+Jennie
+Jennifer
+Jeremy
+Jerome
+Jerry
+Jesper
+Jess
+Jesse
+Jesus
+Ji
+Jianyun
+Jill
+Jim
+Jimmy
+Jin
+Jinchao
+Jingbai
+Jiri
+Jisheng
+Jitendra
+Joachim
+Joanne
+Jochen
+Jock
+Joe
+Joel
+Johan
+Johann
+John
+Johnathan
+Johnnie
+Johnny
+Jon
+Jonathan
+Jones
+Jong
+Joni
+Joon
+Jordan
+Jorge
+Jos
+Jose
+Joseph
+Josh
+Joshua
+Josip
+Joubert
+Joyce
+Juan
+Judge
+Judith
+Judy
+Juergen
+Juha
+Julia
+Julian
+Juliane
+Julianto
+Julie
+Juliet
+Julius
+Jun
+June
+Jurevis
+Juri
+Jussi
+Justin
+Jwahar
+Kaj
+Kamel
+Kamiya
+Kanthan
+Karen
+Kari
+Karl
+Kate
+Kathleen
+Kathryn
+Kathy
+Kay
+Kayvan
+Kazuhiro
+Kee
+Kees
+Keith
+Kelly
+Kelvin
+Kemal
+Ken
+Kenn
+Kenneth
+Kent
+Kenton
+Kerri
+Kerry
+Kevan
+Kevin
+Kevyn
+Kieran
+Kiki
+Kikki
+Kim
+Kimberly
+Kimmo
+Kinch
+King
+Kirk
+Kit
+Kitty
+Klaudia
+Klaus
+Knapper
+Knudsen
+Knut
+Knute
+Kolkka
+Konrad
+Konstantinos
+Kory
+Kris
+Kristen
+Kristi
+Kristian
+Kristin
+Kriton
+Krzysztof
+Kuldip
+Kurt
+Kusum
+Kyle
+Kylo
+Kyu
+Kyung
+Lana
+Lance
+Lanny
+Lar
+Larry
+Lars
+Laura
+Laurel
+Laurence
+Laurent
+Laurianne
+Laurie
+Lawrence
+Lea
+Leads
+Lee
+Leif
+Leigh
+Leila
+Len
+Lenora
+Lenny
+Leo
+Leon
+Leonard
+Leora
+Les
+Leslie
+Lester
+Leung
+Lewis
+Lex
+Liber
+Lievaart
+Lila
+Lin
+Linda
+Linder
+Lindsay
+Lindsey
+Linley
+Lisa
+List
+Liyuan
+Liz
+Liza
+Lloyd
+Lois
+Lonhyn
+Lord
+Loren
+Lorenzo
+Lori
+Lorien
+Lorraine
+Lou
+Louiqa
+Louis
+Louise
+Loukas
+Lowell
+Loyd
+Luc
+Lucifer
+Lucius
+Lui
+Luis
+Lukas
+Luke
+Lum
+Lyndon
+Lynn
+Lynne
+Lynnette
+Maarten
+Mac
+Magnus
+Mah
+Mahesh
+Mahmoud
+Major
+Malaclypse
+Malcolm
+Malloy
+Malus
+Manavendra
+Manjeri
+Mann
+Manny
+Manolis
+Manuel
+Mara
+Marc
+Marcel
+Marci
+Marcia
+Marco
+Marcos
+Marek
+Margaret
+Margie
+Margot
+Marguerite
+Maria
+Marian
+Marie
+Marilyn
+Mario
+Marion
+Mariou
+Mark
+Markus
+Marla
+Marlena
+Marnix
+Marsh
+Marsha
+Marshall
+Martha
+Martin
+Marty
+Martyn
+Marvin
+Mary
+Masanao
+Masanobu
+Mason
+Mat
+Mats
+Matt
+Matthew
+Matthias
+Matthieu
+Matti
+Maureen
+Maurice
+Max
+Mayo
+Mechael
+Meehan
+Meeks
+Mehrdad
+Melinda
+Merat
+Merril
+Merton
+Metin
+Micah
+Michael
+Micheal
+Michel
+Michelle
+Michiel
+Mick
+Mickey
+Micky
+Miek
+Mikael
+Mike
+Mikey
+Miki
+Miles
+Milner
+Milo
+Miltos
+Miriam
+Miriamne
+Mitch
+Mitchell
+Moe
+Mohammad
+Molly
+Mongo
+Monica
+Monty
+Moore
+Moran
+Morgan
+Morris
+Morton
+Moses
+Mosur
+Mott
+Murat
+Murph
+Murray
+Murthy
+Mwa
+Myrick
+Myron
+Mysore
+Nadeem
+Naim
+Nancy
+Nanda
+Naomi
+Naoto
+Naren
+Narendra
+Naresh
+Nate
+Nathan
+Nathaniel
+Natraj
+Neal
+Ned
+Neil
+Nelken
+Neville
+Nguyen
+Nhan
+Niall
+Nichael
+Nicholas
+Nici
+Nick
+Nicolas
+Nicolette
+Nicolo
+Niels
+Nigel
+Nikolai
+Nils
+Ning
+Ninja
+No
+Noam
+Noemi
+Nora
+Norbert
+Norm
+Norma
+Norman
+Nou
+Novo
+Novorolsky
+Ofer
+Olaf
+Old
+Ole
+Oleg
+Oliver
+Olivier
+Olof
+Olson
+Omar
+Orville
+Oscar
+Oskar
+Owen
+Ozan
+Pablo
+Page
+Pam
+Pamela
+Panacea
+Pandora
+Panos
+Pantelis
+Panzer
+Paola
+Part
+Pascal
+Pat
+Patrice
+Patricia
+Patricio
+Patrick
+Patty
+Paul
+Paula
+Pedro
+Peggy
+Penny
+Per
+Perry
+Pete
+Peter
+Petr
+Phil
+Philip
+Philippe
+Phill
+Phillip
+Phiroze
+Pia
+Piercarlo
+Pierce
+Pierette
+Pierre
+Piet
+Piete
+Pieter
+Pilar
+Pilot
+Pim
+Ping
+Piotr
+Pitawas
+Plastic
+Po
+Polly
+Pontus
+Pradeep
+Prakash
+Pratap
+Pratapwant
+Pratt
+Pravin
+Presley
+Pria
+Price
+Raanan
+Rabin
+Radek
+Rafael
+Rafik
+Raghu
+Ragnar
+Rahul
+Raif
+Rainer
+Raj
+Raja
+Rajarshi
+Rajeev
+Rajendra
+Rajesh
+Rajiv
+Rakhal
+Ralf
+Ralph
+Ram
+Ramadoss
+Raman
+Ramanan
+Ramesh
+Ramiro
+Ramneek
+Ramsey
+Rand
+Randal
+Randall
+Randell
+Randolph
+Randy
+Ranjit
+Raphael
+Rathnakumar
+Raul
+Ravi
+Ravindran
+Ravindranath
+Ray
+Rayan
+Raymond
+Real
+Rebecca
+Rees
+Reid
+Reiner
+Reinhard
+Renu
+Revised
+Rex
+Rhonda
+Ric
+Ricardo
+Rich
+Richard
+Rick
+Ricky
+Rik
+Ritalynne
+Ritchey
+Ro
+Rob
+Robbin
+Robert
+Roberta
+Roberto
+Robin
+Rod
+Rodent
+Roderick
+Rodger
+Rodney
+Roger
+Rogue
+Roland
+Rolf
+Rolfe
+Romain
+Roman
+Ron
+Ronald
+Ronni
+Root
+Ross
+Roxana
+Roxane
+Roxanne
+Roxie
+Roy
+Rudolf
+Rudolph
+Rudy
+Rupert
+Russ
+Russell
+Rusty
+Ruth
+Saad
+Sabrina
+Saify
+Saiid
+Sal
+Sally
+Sam
+Samir
+Samuel
+Sanand
+Sanche
+Sandeep
+Sandip
+Sandra
+Sandy
+Sanford
+Sangho
+Sanity
+Sanjay
+Sanjeev
+Sanjib
+Santa
+Saqib
+Sarah
+Sassan
+Saul
+Saumya
+Scot
+Scott
+Sean
+Sedat
+Sedovic
+Seenu
+Sehyo
+Sekar
+Serdar
+Sergeant
+Sergei
+Sergio
+Sergiu
+Seth
+Seymour
+Shadow
+Shahid
+Shai
+Shakil
+Shamim
+Shane
+Shankar
+Shannon
+Sharada
+Sharan
+Shari
+Sharon
+Shatter
+Shaw
+Shawn
+Shean
+Sheila
+Shel
+Sherman
+Sherri
+Shirley
+Sho
+Shutoku
+Shuvra
+Shyam
+Sid
+Sidney
+Siegurd
+Sigurd
+Simon
+Siping
+Sir
+Sjaak
+Sjouke
+Skeeter
+Skef
+Skip
+Slartibartfast
+Socorrito
+Sofia
+Sofoklis
+Son
+Sonja
+Sonny
+Soohong
+Sorrel
+Space
+Spass
+Spencer
+Spike
+Spock
+Spudboy
+Spy
+Spyros
+Sri
+Sridhar
+Sridharan
+Srikanth
+Srinivas
+Srinivasan
+Sriram
+Srivatsan
+Ssi
+Stacey
+Stacy
+Stagger
+Stan
+Stanislaw
+Stanley
+Stanly
+Starbuck
+Steen
+Stefan
+Stephan
+Stephanie
+Stephe
+Stephen
+Stevan
+Steve
+Steven
+Stewart
+Straka
+Stu
+Stuart
+Subra
+Sue
+Sugih
+Sumitro
+Sundar
+Sundaresan
+Sunil
+Suresh
+Surya
+Susan
+Susanne
+Susumu
+Suu
+Suwandi
+Suyog
+Suzan
+Suzanne
+Svante
+Swamy
+Syd
+Syed
+Sylvan
+Syun
+Tad
+Tahsin
+Tai
+Tait
+Takao
+Takayuki
+Takeuchi
+Tal
+Tammy
+Tanaka
+Tandy
+Tanya
+Tao
+Tareq
+Tarmi
+Taurus
+Ted
+Teresa
+Teri
+Teriann
+Terrance
+Terrence
+Terri
+Terry
+Teruyuki
+Thad
+Tharen
+The
+Theo
+Theodore
+Thierry
+Think
+Thomas
+Those
+Thuan
+Ti
+Tiefenthal
+Tigger
+Tim
+Timo
+Timothy
+Tobias
+Toby
+Todd
+Toerless
+Toft
+Tolerant
+Tollefsen
+Tom
+Tomas
+Tommy
+Tony
+Tor
+Torsten
+Toufic
+Tovah
+Tracey
+Tracy
+Tran
+Travis
+Trent
+Trevor
+Trey
+Triantaphyllos
+Tricia
+Troy
+Trying
+Tuan
+Tuna
+Turkeer
+Tyler
+Uri
+Urs
+Vadim
+Val
+Valentin
+Valeria
+Valerie
+Van
+Vance
+Varda
+Vassos
+Vaughn
+Venkata
+Vern
+Vernon
+Vic
+Vice
+Vick
+Vicki
+Vickie
+Vicky
+Victor
+Victoria
+Vidhyanath
+Vijay
+Vilhelm
+Vince
+Vincent
+Vincenzo
+Vinod
+Vishal
+Vistlik
+Vivek
+Vladimir
+Vladislav
+Wade
+Walt
+Walter
+Warren
+Wayne
+Wendell
+Wendy
+Wendi
+Werner
+Wes
+Will
+William
+Willie
+Wilmer
+Wilson
+Win
+Winnie
+Winston
+Wolf
+Wolfgang
+Woody
+Yvonne




More information about the Mulgara-svn mailing list