/**
* bAnimalCare 1.2-SNAPSHOT
* Copyright (C) 2013 CodingBadgers <plugins@mcbadgercraft.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package uk.codingbadgers.banimalcare;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map.Entry;
import java.util.Set;
import java.util.UUID;
import org.bukkit.Bukkit;
import org.bukkit.Chunk;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.OfflinePlayer;
import org.bukkit.World;
import org.bukkit.entity.Animals;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
import org.bukkit.event.player.PlayerInteractEntityEvent;
import org.bukkit.event.player.PlayerTeleportEvent;
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
import org.bukkit.event.world.ChunkUnloadEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.scheduler.BukkitRunnable;
import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
import uk.codingbadgers.bFundamentals.bFundamentals;
import uk.codingbadgers.bFundamentals.module.Module;
public class bAnimalCare extends Module implements Listener {
public static WorldGuardPlugin WORLDGUARD = null;
private HashMap<UUID, PlayerPet> m_pets = new HashMap<UUID, PlayerPet>();
private HashMap<String, Entity> m_tpVehicle = new HashMap<String, Entity>();
private static int MAX_NOOF_PETS = 10;
private String m_dbPrefix = "";
/**
* Called when the module is disabled.
*/
public void onDisable() {
WORLDGUARD = null;
}
/**
* Called when the module is loaded.
*/
public void onEnable() {
m_dbPrefix = bFundamentals.getConfigurationManager().getDatabaseSettings().prefix;
WORLDGUARD = (WorldGuardPlugin)m_plugin.getServer().getPluginManager().getPlugin("WorldGuard");
register(this);
registerCommand(new AnimalCommand(this));
setupDatabase();
loadPets();
}
/**
* Called when a player interacts with an entity
*/
@EventHandler(priority = EventPriority.LOW)
public void onPlayerInteract(PlayerInteractEntityEvent event) {
final Player player = event.getPlayer();
final ItemStack item = player.getItemInHand();
if (!(event.getRightClicked() instanceof LivingEntity)) {
return;
}
final LivingEntity entity = (LivingEntity)event.getRightClicked();
if (entity == null) {
return;
}
if (m_pets.containsKey(entity.getUniqueId())) {
if (!m_pets.get(entity.getUniqueId()).GetOwner().equalsIgnoreCase(player.getName())) {
if (!Module.hasPermission(player, "bAnimalCare.override")) {
Module.sendMessage("bAnimalCare", player, "This animal is someone elses pet.");
event.setCancelled(true);
}
}
else {
if (item != null && item.getType() == Material.STRING) {
Module.sendMessage("bAnimalCare", player, "You have released your pet...");
releasePet(player, entity.getUniqueId());
if (entity.getCustomName() != null) {
entity.setCustomName(null);
entity.setCustomNameVisible(false);
}
}
}
return;
}
if (item == null || item.getType() != Material.STRING) {
return;
}
if (isBlackListed(entity)) {
// Dont output a message, just pretend this never happened
return;
}
if (!Module.hasPermission(player, "bAnimalCare.capture")) {
Module.sendMessage("bAnimalCare", player, "You do not have permission to capture pet animals.");
return;
}
if (getNumberOfPets(player) >= MAX_NOOF_PETS) {
Module.sendMessage("bAnimalCare", player, "You have the maximum number of pets, release an old one before getting a new.");
return;
}
ProtectedRegion region = getChildRegionFromLocation(entity.getLocation());
// In non safe, allow capture
if (region == null) {
attemptToCaptureEntity(player, entity);
return;
}
// check all owners of the region, if they are an owner then attempt to capture
Set<String> owners = region.getOwners().getPlayers();
for (String owner : owners) {
if (owner.equalsIgnoreCase(player.getName())) {
attemptToCaptureEntity(player, entity);
return;
}
}
// not an owner, so tell them NO!
Module.sendMessage("bAnimalCare", player, "You can't capture pets in other peoples safezones.");
}
/**
* Called when a chunk is unloaded
*/
@EventHandler(priority = EventPriority.LOW)
public void onChunkUnload(ChunkUnloadEvent event) {
Entity[] entities = event.getChunk().getEntities();
// see if any entities were a pet, and update their location
for (Entity entity : entities) {
if (m_pets.containsKey(entity.getUniqueId())) {
// this entity is a pet!
m_pets.get(entity.getUniqueId()).UpdateLastKnownLocation(entity.getLocation());
updatePet(entity);
}
}
}
@EventHandler(priority = EventPriority.LOW)
public void onEntityDamaged(EntityDamageEvent event) {
if (!(event.getEntity() instanceof LivingEntity)) {
return;
}
final LivingEntity entity = (LivingEntity)event.getEntity();
final UUID entityID = entity.getUniqueId();
if (!m_pets.containsKey(entityID)) {
return;
}
event.setCancelled(true);
}
/**
* Called when an entity is damaged
*/
@EventHandler(priority = EventPriority.LOW)
public void onEntityDamagedByEntity(EntityDamageByEntityEvent event) {
if (!(event.getEntity() instanceof LivingEntity)) {
return;
}
final LivingEntity entity = (LivingEntity)event.getEntity();
final UUID entityID = entity.getUniqueId();
Player attackPlayer = ((event.getDamager() instanceof Player) ? (Player)event.getDamager() : null);
if (!m_pets.containsKey(entityID)) {
return;
}
if (attackPlayer != null) {
Module.sendMessage("bAnimalCare", attackPlayer, "This animal is a pet. You can't hurt it.");
PlayerPet playerPet = m_pets.get(entityID);
if (Module.hasPermission(attackPlayer, "bAnimalCare.override")) {
Module.sendMessage("bAnimalCare", attackPlayer, "Animal owner: " + playerPet.GetOwner());
}
if (playerPet.GetOwner().equalsIgnoreCase(attackPlayer.getName())) {
Module.sendMessage("bAnimalCare", attackPlayer, "To kill your pet. First release it by using String.");
}
}
// Someone's pet, cancel any damage.
event.setCancelled(true);
}
@EventHandler(priority = EventPriority.LOW)
public void onPlayerCommandPreprocessEvent(PlayerCommandPreprocessEvent event) {
final Player player = event.getPlayer();
if (!Module.hasPermission(player, "bAnimalCare.teleportHorse")) {
return;
}
ArrayList<String> commands = new ArrayList<String>();
commands.add("spawn");
commands.add("tp");
commands.add("home");
commands.add("build");
commands.add("tpa");
commands.add("warp");
final Entity vehicle = event.getPlayer().getVehicle();
if (vehicle == null || vehicle.getType() != EntityType.HORSE) {
return;
}
for (String command : commands) {
if (event.getMessage().startsWith("/" + command)) {
vehicle.eject();
m_tpVehicle.put(event.getPlayer().getName(), vehicle);
return;
}
}
}
/**
* Called when an entity teleports
*/
@EventHandler(priority = EventPriority.LOW)
public void onEntityTeleport(PlayerTeleportEvent event) {
final Player player = event.getPlayer();
if (!Module.hasPermission(player, "bAnimalCare.teleportHorse")) {
return;
}
if (event.getCause() != TeleportCause.PLUGIN && event.getCause() != TeleportCause.COMMAND) {
return;
}
final Entity vehicle = m_tpVehicle.get(event.getPlayer().getName());
if (vehicle == null) {
return;
}
if (vehicle.getType() == EntityType.HORSE) {
Module.sendMessage("bAnimalCare", player, "Please wait whilst we teleport your horse to you...");
new BukkitRunnable() {
public void run() {
vehicle.teleport(player);
new BukkitRunnable() {
public void run() {
vehicle.setPassenger(player);
}
}.runTaskLater(bFundamentals.getInstance(), 40L);
}
}.runTaskLater(bFundamentals.getInstance(), 20L);
}
}
/**
* Get the number of pets a player has
*/
private int getNumberOfPets(Player player) {
final String playerName = player.getName();
int noofPets = 0;
for (PlayerPet pet : m_pets.values()) {
if (pet.GetOwner().equalsIgnoreCase(playerName)) {
noofPets++;
}
}
return noofPets;
}
/**
* Attempt to capture an entity
*/
private void attemptToCaptureEntity(Player player, LivingEntity entity) {
if (isBlackListed(entity)) {
// Dont output a message, just pretend this never happened
return;
}
if (isEntityOwned(entity)) {
if (!m_pets.get(entity.getUniqueId()).GetOwner().equalsIgnoreCase(player.getName())) {
Module.sendMessage("bAnimalCare", player, "Someone else has already claimed this pet.");
}
return;
}
captureEntity(player, entity);
}
private void captureEntity(Player player, LivingEntity entity) {
String playerName = player.getName();
UUID entityID = entity.getUniqueId();
// Store the pet in memory
PlayerPet pet = new PlayerPet(playerName);
pet.UpdateLastKnownLocation(entity.getLocation());
m_pets.put(entityID, pet);
// Store the pet into our database
addNewPet(playerName, entity);
// Give the pet a custom name
if (entity.getCustomName() == null) {
String petName = getRandomPetName();
entity.setCustomName(petName);
entity.setCustomNameVisible(true);
}
String mobType = entity.getType().name().replace("Entity", "");
Module.sendMessage("bAnimalCare", player, "You have tamed a new " + mobType.toLowerCase() + " pet.");
}
private boolean isBlackListed(LivingEntity entity) {
if (entity.getType() == EntityType.WOLF)
return true;
if (entity.getType() == EntityType.HORSE)
return false;
if (entity.getType() == EntityType.SQUID)
return false;
if (entity.getType() == EntityType.VILLAGER)
return false;
if (entity instanceof Animals)
return false;
return true;
}
private boolean isEntityOwned(LivingEntity entity) {
final UUID entityID = entity.getUniqueId();
return m_pets.containsKey(entityID);
}
/**
* Get the lowest child region from a give location
*/
private ProtectedRegion getChildRegionFromLocation(Location location) {
ArrayList<ProtectedRegion> possibleRegions = new ArrayList<ProtectedRegion>();
final World world = location.getWorld();
// create a world edit vector for the position
final com.sk89q.worldedit.Vector worldeditLocation = new com.sk89q.worldedit.Vector(
location.getX(),
location.getY(),
location.getZ()
);
// loop through every region
for(ProtectedRegion currentRegion : WORLDGUARD.getRegionManager(world).getRegions().values()){
// if the current region contains the sign, add it to the list of possible regions
if (currentRegion.contains(worldeditLocation)) {
possibleRegions.add(currentRegion);
}
}
// if we didnt get any regions, bail.
if (possibleRegions.size() == 0) {
return null;
}
// if we only got one region, it has to be the region we use
if (possibleRegions.size() == 1) {
return possibleRegions.get(0);
}
// work out the lowest child of the regions
int childLevel = 0;
ProtectedRegion lowestChild = null;
for (ProtectedRegion currentRegion : possibleRegions)
{
if (currentRegion.getParent() != null)
{
ProtectedRegion tempRegion = currentRegion;
int tempChildLevel = 0;
while(tempRegion.getParent() != null)
{
tempRegion = tempRegion.getParent();
tempChildLevel++;
}
if (tempChildLevel > childLevel)
{
childLevel = tempChildLevel;
lowestChild = currentRegion;
}
}
}
// if we found the lowest child return that
if (lowestChild != null) {
return lowestChild;
}
// if we didn't find the lowest child, but found some regions, return the first region
return possibleRegions.get(0);
}
/**
* Make sure the database table exists, else create it
*/
private void setupDatabase() {
if (m_database.tableExists(m_dbPrefix + "bAnimalCare"))
return;
final String createQuery =
"CREATE TABLE " + m_dbPrefix + "bAnimalCare " +
"(" +
"Player varchar(32)," +
"EntityID TEXT," +
"Location TEXT" +
")";
m_database.query(createQuery, true);
}
/**
* Load all entities into memory for a quick lookup
*/
private void loadPets() {
final String selectAll = "Select * FROM " + m_dbPrefix + "bAnimalCare";
ResultSet result = m_database.queryResult(selectAll);
if (result != null) {
try {
while (result.next()) {
String playername = result.getString("Player");
UUID entityID = UUID.fromString(result.getString("EntityID"));
Location location = locationFromString(result.getString("Location"));
PlayerPet pet = new PlayerPet(playername);
pet.UpdateLastKnownLocation(location);
m_pets.put(entityID, pet);
}
} catch (Exception ex) {
ex.printStackTrace();
m_database.freeResult(result);
return;
}
m_database.freeResult(result);
}
}
/**
* Convert a location to a database format string
*/
private String locationToString(Location location) {
return location.getWorld().getName() + ":" + location.getX() + ":" + location.getY() + ":" + location.getZ();
}
/**
* Get a location from a location string
*/
private Location locationFromString(String locationString) {
String[] locationPart = locationString.split(":");
World world = Bukkit.getWorld(locationPart[0].replace(":", ""));
double xPosition = Double.parseDouble(locationPart[1].replace(":", ""));
double yPosition = Double.parseDouble(locationPart[2].replace(":", ""));
double zPosition = Double.parseDouble(locationPart[3].replace(":", ""));
return new Location(world, xPosition, yPosition, zPosition);
}
/**
* Add a new pet to the database
*/
private void addNewPet(String player, Entity entity) {
String addPet =
"INSERT INTO " + m_dbPrefix + "bAnimalCare " +
"VALUES ('" +
player + "', '" +
entity.getUniqueId().toString() + "', '" +
locationToString(entity.getLocation()) +
"')";
m_database.query(addPet);
}
/**
* Update a pet in the database
*/
private void updatePet(Entity entity) {
String updatePet =
"UPDATE " + m_dbPrefix + "bAnimalCare " +
"SET Location='" + locationToString(entity.getLocation()) + "' " +
"WHERE EntityID='" + entity.getUniqueId().toString() +
"'";
m_database.query(updatePet);
}
private void releasePet(OfflinePlayer player, UUID entityID) {
m_pets.remove(entityID);
String removePet =
"DELETE FROM " + m_dbPrefix + "bAnimalCare " +
"WHERE EntityID='" +
entityID.toString() +
"'";
m_database.query(removePet);
}
public void listPets(Player player, OfflinePlayer listPlayer) {
final String playerName = listPlayer.getName();
HashMap<String, PlayerPet> pets = new HashMap<String, PlayerPet>();
for (Entry<UUID, PlayerPet> petEntry : m_pets.entrySet()) {
if (petEntry.getValue().GetOwner().equalsIgnoreCase(playerName)) {
pets.put(petEntry.getKey().toString(), petEntry.getValue());
}
}
if (player.getName().equalsIgnoreCase(listPlayer.getName())) {
Module.sendMessage("bAnimalCare", player, "You have " + pets.size() + " pets...");
} else {
Module.sendMessage("bAnimalCare", player, listPlayer.getName() + " has " + pets.size() + " pets...");
}
int petIndex = 0;
for (Entry<String, PlayerPet> petEntry : pets.entrySet()) {
UUID petId = UUID.fromString(petEntry.getKey());
Entity pet = entityFromUUID(petId);
if (pet == null) {
// Get last known location from database
Location location = petEntry.getValue().GetLocation();
location.getWorld().loadChunk(location.getChunk());
pet = entityFromUUID(petId, location.getChunk());
if (pet == null) {
String petLocation = "[" + location.getBlockX() + ", " + location.getBlockY() + ", " + location.getBlockZ() + ", " + location.getWorld().getName() + "]";
String petInfo = petIndex + " - " + petLocation;
Module.sendMessage("bAnimalCare", player, petInfo);
petIndex++;
continue;
}
}
String petName = ((LivingEntity)pet).getCustomName();
Location location = pet.getLocation();
String petLocation = "[" + location.getBlockX() + ", " + location.getBlockY() + ", " + location.getBlockZ() + ", " + location.getWorld().getName() + "]";
String petInfo = petIndex + " - " + petName + " - " + petLocation;
Module.sendMessage("bAnimalCare", player, petInfo);
petIndex++;
}
}
private Entity entityFromUUID(UUID petId) {
for (World world : Bukkit.getWorlds()) {
for (Entity entity : world.getEntities()) {
if (entity.getUniqueId().toString().equalsIgnoreCase(petId.toString()))
return entity;
}
}
return null;
}
private Entity entityFromUUID(UUID petId, Chunk chunk) {
for (Entity entity : chunk.getEntities()) {
if (entity.getUniqueId().toString().equalsIgnoreCase(petId.toString()))
return entity;
}
return null;
}
public void releasePet(OfflinePlayer player, String petIdString) {
int petIndex = Integer.parseInt(petIdString);
final String playerName = player.getName();
HashMap<String, PlayerPet> pets = new HashMap<String, PlayerPet>();
for (Entry<UUID, PlayerPet> petEntry : m_pets.entrySet()) {
if (petEntry.getValue().GetOwner().equalsIgnoreCase(playerName)) {
pets.put(petEntry.getKey().toString(), petEntry.getValue());
}
}
int index = 0;
for (Entry<String, PlayerPet> petEntry : pets.entrySet()) {
if (index == petIndex) {
UUID petId = UUID.fromString(petEntry.getKey());
releasePet(player, petId);
if (player.isOnline()) {
Module.sendMessage(getName(), player.getPlayer(), "Your pet has been released...");
}
Entity pet = entityFromUUID(petId);
if (pet == null) {
// Get last known location from database
Location location = petEntry.getValue().GetLocation();
location.getWorld().loadChunk(location.getChunk());
pet = entityFromUUID(petId, location.getChunk());
}
if (pet != null) {
((LivingEntity)pet).setCustomName(null);
((LivingEntity)pet).setCustomNameVisible(false);
}
break;
}
index++;
}
}
public void tpToPet(Player player, String petIdString, OfflinePlayer owner) {
int petIndex = Integer.parseInt(petIdString);
final String playerName = owner.getName();
HashMap<String, PlayerPet> pets = new HashMap<String, PlayerPet>();
for (Entry<UUID, PlayerPet> petEntry : m_pets.entrySet()) {
if (petEntry.getValue().GetOwner().equalsIgnoreCase(playerName)) {
pets.put(petEntry.getKey().toString(), petEntry.getValue());
}
}
int index = 0;
for (Entry<String, PlayerPet> petEntry : pets.entrySet()) {
if (index == petIndex) {
UUID petId = UUID.fromString(petEntry.getKey());
Entity pet = entityFromUUID(petId);
Location location;
if (pet == null) {
// Get last known location from database
location = petEntry.getValue().GetLocation();
}
else {
location = pet.getLocation();
}
player.teleport(location);
Module.sendMessage(getName(), player, "You have been teleported to the pet...");
break;
}
}
}
private String getRandomPetName() {
String[] allnames =
{
"Aaliyah","Aaron","Aarushi","Abbey","Abbi","Abbie","Abby","Abdul","Abdullah","Abel",
"Abi","Abia","Abigail","Abraham","Abram","Abriel","Acacia","Ace","Ada","Adalyn",
"Adam","Adan","Addie","Addison","Ade","Adelaide","Adele","Adelina","Aden","Adnan",
"Adreanna","Adrian","Adriana","Adrianna","Adrianne","Adrienne","Aerona","Agatha","Aggie","Agnes",
"Ahmad","Aida","Aidan","Aiden","Aileen","Aimee","Aine","Ainsley","Ainsley","Aisha",
"Aisling","Al","Alain","Alaina","Alan","Alana","Alanna","Alannah","Alayah","Alayna",
"Alba","Albert","Alberto","Alden","Aleah","Alec","Alecia","Aleisha","Alejandra","Alejandro",
"Alena","Alessandra","Alex","Alex","Alexa","Alexander","Alexandra","Alexandria","Alexia","Alexis",
"Alexis","Alexus","Alfie","Alfonso","Alfred","Alfredo","Ali","Ali","Alia","Alice",
"Alicia","Alina","Alisa","Alisha","Alison","Alissa","Alistair","Alivia","Aliyah","Alize",
"Alka","Allan","Allen","Allie","Allison","Ally","Allyson","Alma","Alondra","Alonzo",
"Alphonso","Alton","Alvin","Alycia","Alyshialynn","Alyson","Alyssa","Alyssia","Amalia","Amanda",
"Amani","Amara","Amari","Amari","Amaris","Amaya","Amber","Amelia","Amelie","America",
"Amethyst","Amie","Amina","Amir","Amos","Amy","Amya","Ana","Anahi","Anamaria",
"Anastasia","Andie","Andre","Andrea","Andreas","Andres","Andrew","Andromeda","Andy","Angel",
"Angel","Angela","Angelia","Angelica","Angelina","Angeline","Angelique","Angelo","Angie","Angus",
"Anika","Anita","Aniya","Aniyah","Anjali","Ann","Anna","Annabel","Annabella","Annabelle",
"Annabeth","Annalisa","Annalise","Anne","Anneke","Annemarie","Annette","Annie","Annika","Annmarie",
"Anselma","Anthea","Anthony","Antoinette","Anton","Antonia","Antonio","Antony","Anuja","Anya",
"Aoibhe","Aoife","Aphrodite","Apple","April","Aqua","Arabella","Aran","Archer","Archie",
"Ari","Aria","Ariadne","Ariana","Arianna","Arianne","Ariel","Ariella","Arielle","Arisha",
"Arleen","Arlene","Arlo","Arman","Armando","Arnold","Arrie","Art","Artemis","Arthur",
"Arturo","Asa","Ash","Asha","Ashanti","Asher","Ashlee","Ashleigh","Ashley","Ashley",
"Ashlie","Ashlyn","Ashlynn","Ashton","Ashton","Ashvini","Asia","Asma","Aspen","Aspen",
"Aston","Astrid","Athena","Atticus","Aubree","Aubrey","Audra","Audrey","Audwin","August",
"Aurora","Austin","Autumn","Ava","Avalon","Avery","Avery","Avril","Axel","Aya",
"Ayanna","Ayden","Ayesha","Ayisha","Ayla","Azalea","Azaria","Azariah","Bailey","Bailey",
"Barbara","Barclay","Barnaby","Barney","Barry","Bart","Bartholomew","Basil","Baylee","Bea",
"Beatrice","Beatrix","Beau","Becca","Beccy","Beckett","Becky","Belinda","Bella","Belle",
"Ben","Benedict","Benita","Benjamin","Bennett","Bennie","Benny","Benthe","Bentley","Bernadette",
"Bernard","Bernice","Bert","Bertha","Beryl","Bess","Beth","Bethan","Bethanie","Bethany",
"Betsy","Bettina","Betty","Beverly","Beyonce","Bhu","Bianca","Bill","Billie","Billy",
"Bladen","Blain","Blaine","Blair","Blaise","Blake","Blanche","Blaze","Blossom","Blythe",
"Bob","Bobbi","Bobbie","Bobby","Bonita","Bonnie","Boris","Boston","Boyd","Brad",
"Braden","Bradford","Bradley","Bradwin","Brady","Braeden","Braelyn","Branden","Brandi","Brandon",
"Braxton","Brayan","Brayden","Braydon","Breanna","Bree","Brenda","Brendan","Brenden","Brendon",
"Brenna","Brennan","Brent","Bret","Brett","Brevyn","Bria","Brian","Briana","Brianna",
"Brianne","Brice","Bridget","Bridgette","Briella","Brielle","Brinley","Britney","Britt","Brittany",
"Brittney","Brock","Brodie","Brody","Brogan","Bronson","Bronte","Bronwen","Bronwyn","Brooke",
"Brooklyn","Brooklynn","Bruce","Bruno","Bryan","Bryanna","Bryant","Bryce","Brynlee","Brynn",
"Bryon","Bryony","Bryson","Buddy","Burt","Burton","Butch","Byron","Cadby","Cade",
"Caden","Cadence","Cael","Caesar","Cailin","Caitlan","Caitlin","Caitlyn","Caleb","Caleigh",
"Calhoun","Cali","Callan","Callie","Callista","Callum","Calum","Calvin","Calypso","Cam",
"Camden","Cameron","Cameron","Cami","Camila","Camilla","Camille","Campbell","Camron","Camryn",
"Candace","Candice","Candy","Caoimhe","Caprice","Cara","Carey","Carina","Carissa","Carl",
"Carla","Carley","Carlos","Carlton","Carly","Carlynn","Carmen","Carol","Carole","Carolina",
"Caroline","Carolyn","Carrie","Carsen","Carson","Carter","Carter","Cary","Carys","Casey",
"Casey","Cash","Casper","Cassandra","Cassidy","Cassie","Castiel","Cate","Caterina","Cathal",
"Cathalina","Catherine","Cathleen","Cathy","Catriona","Cayden","Cayla","Cece","Cecelia","Cecil",
"Cecilia","Cecily","Cedric","Celeste","Celestine","Celia","Celina","Celine","Cerys","Cesar",
"Chad","Chance","Chandler","Chanel","Chanelle","Channing","Chantal","Chantelle","Charis","Charity",
"Charlene","Charles","Charley","Charlie","Charlie","Charlize","Charlotte","Charmaine","Chase","Chastity",
"Chaz","Chelsea","Chelsey","Chenille","Cher","Cheri","Cherie","Cherry","Cheryl","Chesney",
"Chester","Cheyanne","Cheyenne","Chiara","Chip","Chloe","Chris","Chris","Chrissy","Christa",
"Christal","Christi","Christian","Christiana","Christie","Christina","Christine","Christopher","Christy","Chrystal",
"Chuck","Cian","Ciara","Ciaran","Ciel","Cierra","Cillian","Cindy","Claire","Clancy",
"Clara","Clare","Clarence","Clarice","Clarissa","Clarisse","Clark","Claude","Claudette","Claudia",
"Clay","Clayton","Clea","Clement","Cleo","Clifford","Clifton","Clint","Clinton","Clodagh",
"Clover","Clyde","Coby","Coco","Cody","Colby","Cole","Colette","Colin","Colleen",
"Collin","Colm","Colt","Colton","Conner","Connie","Connor","Conor","Conrad","Constance",
"Cooper","Cora","Coral","Coralie","Coraline","Corbin","Cordelia","Corey","Cori","Corina",
"Corinne","Cormac","Cornelius","Corra","Cory","Cosette","Courtney","Craig","Cristian","Cristina",
"Cristobal","Cruz","Crystal","Cullen","Curt","Curtis","Cuthbert","Cynthia","Cyril","Cyrus",
"Dacey","Dagmar","Dahlia","Daire","Daisy","Dakota","Dakota","Dale","Dallas","Dalton",
"Damian","Damien","Damion","Damon","Dan","Dana","Dana","Dane","Danette","Dani",
"Danica","Daniel","Daniela","Daniella","Danielle","Danika","Danny","Dante","Daphne","Dara",
"Dara","Daragh","Darcie","Darcy","Darcy","Daren","Daria","Darian","Darin","Darius",
"Darla","Darlene","Darnell","Darragh","Darrel","Darrell","Darren","Darrin","Darryl","Darwin",
"Daryl","Dashawn","Dashee","Dave","David","Davida","Davina","Davion","Davis","Dawn",
"Dawson","Dax","Dayna","Daysha","Deacon","Dean","Deana","Deandre","Deann","Deanna",
"Deanne","Debbie","Debora","Deborah","Debra","Declan","Dee","Deena","Deidre","Deirdre",
"Deja","Delaney","Delanie","Delbert","Delia","Delilah","Della","Delores","Demetrius","Demi",
"Dena","Denis","Denise","Dennis","Denny","Denver","Denzel","Derek","Derrick","Desiree",
"Desmond","Destinee","Destiny","Devin","Devon","Dewayne","Dewey","Dexter","Dhalsim","Diamond",
"Diana","Diane","Dianna","Dianne","Diarmuid","Dick","Diego","Dieter","Dillon","Dimitri",
"Dina","Dino","Dion","Dionne","Dirk","Django","Dmitri","Dolly","Dolores","Dominic",
"Dominick","Dominique","Don","Donald","Donna","Donnie","Donovan","Dora","Doreen","Dorian",
"Doris","Dorothy","Doug","Douglas","Doyle","Drake","Drew","Drew","Duane","Duke",
"Dulce","Duncan","Dustin","Dwayne","Dwight","Dylan","Eabha","Eamon","Earl","Earnest",
"Easton","Ebony","Ed","Eddie","Eddy","Eden","Eden","Edgar","Edie","Edison",
"Edith","Edmund","Edna","Eduardo","Edward","Edwin","Efrain","Eileen","Eilidh","Eimear",
"Elaina","Elaine","Eleanor","Electra","Elena","Eli","Eliana","Elias","Elijah","Elin",
"Elina","Eliot","Elisa","Elisabeth","Elise","Elisha","Eliza","Elizabeth","Ella","Elle",
"Ellen","Ellie","Elliot","Elliott","Ellis","Elly","Elmer","Elmo","Elodie","Eloise",
"Elora","Elsa","Elsie","Elyza","Emanuel","Emanuela","Ember","Emely","Emer","Emerald",
"Emerson","Emet","Emil","Emilee","Emilia","Emiliano","Emilie","Emilio","Emily","Emma",
"Emmaline","Emmalyn","Emmanuel","Emmeline","Emmett","Emmie","Emmy","Enrique","Enzo","Eoghan",
"Eoin","Eric","Erica","Erick","Erik","Erika","Erin","Ernest","Ernesto","Ernie",
"Errol","Ervin","Esmay","Esme","Esmeralda","Esteban","Estee","Estelle","Ester","Esther",
"Ethan","Ethel","Etienne","Eugene","Eugenie","Eunice","Eustace","Eva","Evan","Evangeline",
"Evangelos","Eve","Evelyn","Everett","Evie","Ewan","Ezekiel","Ezra","abian","abio",
"Fabrizia","Faith","Fallon","Fanny","Farah","arley","Farrah","Fatima","Fawn","Fay",
"Faye","ebian","Felicia","Felicity","elipe","elix","Fern","Fernanda","ernando","Ffion",
"Fidel","inbar","inlay","inley","inn","Fiona","ionn","letcher","Fleur","Flor",
"Flora","Florence","loyd","lynn","orrest","oster","ox","Frances","Francesca","rancesco",
"Francine","rancis","rancisco","rank","rankie","ranklin","ranklyn","raser","red","reddie",
"Freddy","rederick","redrick","Freya","Gabby","Gabe","Gabriel","Gabriela","Gabriella","Gabrielle",
"Gage","Gail","Gale","Gareth","Garman","Garrett","Garrison","Garry","Garth","Gary",
"Gavin","Gayle","Gaynor","Gemma","Gena","Gene","Genesis","Genevieve","Geoffrey","George",
"Georgia","Georgina","Geraint","Gerald","Geraldine","Gerard","Gerardo","Gerry","Gertrude","Gia",
"Gian","Gianna","Gideon","Gigi","Gilbert","Gilberto","Giles","Gillian","Gina","Ginger",
"Ginny","Gino","Giorgio","Giovanna","Giovanni","Giselle","Gisselle","Gladys","Glen","Glenda",
"Glenn","Gloria","Glyndwr","Godric","Gordon","Grace","Gracie","Grady","Graeme","Graham",
"Grant","Grayson","Greg","Gregg","Gregor","Gregory","Greta","Gretchen","Griffin","Guadalupe",
"Guillermo","Guinevere","Gunner","Gus","Gustavo","Guy","Gwen","Gwendolyn","Gwyneth","Habiba",
"Hadley","Hailee","Hailey","Haleigh","Haley","Halle","Hallie","Hamish","Hank","Hanna",
"Hannah","Hans","Harley","Harley","Harmony","Harold","Harper","Harriet","Harrison","Harry",
"Harvey","Hassan","Hattie","Hayden","Haylee","Hayley","Hazel","Hazeline","Heath","Heather",
"Heaven","Hector","Heidi","Helen","Helena","Helga","Helina","Henri","Henrietta","Henry",
"Hera","Herbert","Herman","Hermione","Hester","Hetty","Hilary","Hilda","Holden","Hollie",
"Holly","Homer","Honesty","Honey","Honor","Honour","Hope","Horace","Horatio","Howard",
"Hubert","Hudson","Hugh","Hugo","Hunter","Huw","Hyacinth","Iain","Ian","Ibrahim",
"Ida","Idris","Iggy","Ignacio","Igor","Iliana","Ilona","Ilse","Imani","Imogen",
"India","Indiana","Indira","Ines","Ingrid","Iona","Ira","Irene","Iris","Irma",
"Irving","Irwin","Isa","Isaac","Isabel","Isabella","Isabelle","Isaiah","Isha","Isiah",
"Isis","Isla","Ismael","Isobel","Isolde","Israel","Issac","Itzel","Ivan","Ivana",
"Ivy","Iyanna","Izabella","Izidora","Izzy","Jace","Jacinda","Jacinta","Jack","Jackie",
"Jackie","Jackson","Jacob","Jacoby","Jacqueline","Jacquelyn","Jada","Jade","Jaden","Jaden",
"Jadon","Jadyn","Jaelynn","Jago","Jai","Jaiden","Jaime","Jake","Jakob","Jalen",
"Jamal","James","Jameson","Jamie","Jamie","Jamison","Jan","Jana","Jancis","Jane",
"Janelle","Janessa","Janet","Janette","Janice","Janie","Janine","Janis","Janiya","Jaqueline",
"Jared","Jarrett","Jarvis","Jase","Jasmin","Jasmine","Jason","Jasper","Javier","Javon",
"Jaxon","Jaxson","Jay","Jayda","Jayden","Jayden","Jaydon","Jayla","Jaylen","Jaylin",
"Jaylinn","Jaylon","Jaylynn","Jayne","Jayson","Jazlyn","Jazmin","Jazmine","Jean","Jeanette",
"Jeanine","Jeanne","Jeannette","Jeannie","Jeannine","Jeb","Jed","Jediah","Jeff","Jeffery",
"Jeffrey","Jeffry","Jemima","Jemma","Jena","Jenna","Jenni","Jennie","Jennifer","Jenny",
"Jensen","Jensen","Jerald","Jeremiah","Jeremy","Jeri","Jericho","Jermaine","Jerome","Jerri",
"Jerry","Jess","Jesse","Jessica","Jessie","Jessie","Jesus","Jethro","Jett","Jewel",
"Jill","Jillian","Jim","Jimmie","Jimmy","Jo","Joan","Joann","Joanna","Joanne",
"Joaquin","Jocelyn","Jodi","Jodie","Jody","Jody","Joe","Joel","Joelle","Joey",
"Johan","Johanna","John","Johnathan","Johnathon","Johnnie","Johnny","Jolene","Jolie","Jon",
"Jonah","Jonas","Jonathan","Jonathon","Joni","Jordan","Jordan","Jordy","Jordyn","Jorge",
"Jorja","Jose","Joselyn","Joseph","Josephine","Josh","Joshua","Josiah","Josie","Josue",
"Joy","Joyce","Juan","Juanita","Judas","Jude","Judith","Judy","Jules","Julia",
"Julian","Juliana","Julianna","Julianne","Julie","Juliet","Juliette","Julio","Julissa","Julius",
"June","Justice","Justice","Justin","Justine","Kacey","Kade","Kaden","Kai","Kaiden",
"Kaidence","Kailey","Kailyn","Kaitlin","Kaitlyn","Kaitlynn","Kale","Kalea","Kaleb","Kaleigh",
"Kali","Kalia","Kamala","Kameron","Kamryn","Kane","Kara","Karen","Kari","Karin",
"Karina","Karissa","Karl","Karla","Karla","Karlee","Karly","Karolina","Karyn","Kasey",
"Kassandra","Kassidy","Kassie","Kat","Katarina","Kate","Katelyn","Katelynn","Katerina","Katharine",
"Katherine","Kathleen","Kathryn","Kathy","Katia","Katie","Katlyn","Katrina","Katy","Katya",
"Kay","Kaya","Kayden","Kaye","Kayla","Kaylee","Kayleigh","Kaylen","Kayley","Kaylie",
"Kaylin","Kayson","Keanu","Keaton","Kedrick","Keegan","Keeley","Keely","Keenan","Keira",
"Keisha","Keith","Kelis","Kellen","Kelley","Kelli","Kellie","Kellin","Kelly","Kelly",
"Kelsey","Kelsie","Kelvin","Ken","Kendall","Kendall","Kendra","Kendrick","Kennedy","Kenneth",
"Kenny","Kent","Kenzie","Keri","Kerian","Kerri","Kerry","Kerry","Kevin","Khalil",
"Kian","Kiana","Kiara","Kiera","Kieran","Kierra","Kiersten","Kiki","Kiley","Killian",
"Kim","Kim","Kimberlee","Kimberley","Kimberly","Kimbriella","Kimmy","Kingsley","Kingston","Kinley",
"Kinsey","Kinsley","Kip","Kira","Kirk","Kirsten","Kirsty","Kiswa","Kit","Kitty",
"Klay","Kobe","Kody","Kolby","Kourtney","Kris","Kris","Krista","Kristen","Kristi",
"Kristian","Kristie","Kristin","Kristina","Kristine","Kristopher","Kristy","Krystal","Kurt","Kurtis",
"Kye","Kyla","Kylar","Kyle","Kylee","Kyleigh","Kylen","Kyler","Kylie","Kyra",
"Kyrin","Lacey","Lacey","Lachlan","Lacy","Ladonna","Laila","Lakyn","Lala","Lamar",
"Lamont","Lana","Lance","Landen","Landon","Lane","Langdon","Lara","Larissa","Larry",
"Lars","Laura","Laurel","Lauren","Laurence","Lauri","Laurie","Laurie","Lauryn","Lavana",
"Lavender","Lawrence","Lawson","Layla","Layne","Layton","Lea","Leah","Leandro","Leann",
"Leanna","Leanne","Lee","Lee","Leela","Leena","Leia","Leigh","Leila","Leilani",
"Lela","Leland","Lena","Lennie","Lennox","Lenny","Leo","Leon","Leona","Leonard",
"Leonardo","Leonel","Leonie","Leopold","Leora","Leroy","Lesa","Lesley","Leslie","Leslie",
"Lesly","Lester","Leticia","Leuan","Leven","Levi","Lewis","Lexi","Lexie","Lia",
"Liam","Liana","Lianne","Libby","Liberty","Lidia","Lief","Lila","Lilac","Lilah",
"Lilian","Liliana","Lilita","Lilith","Lillian","Lillie","Lilly","Lily","Lina","Lincoln",
"Linda","Lindsay","Lindsey","Lionel","Lisa","Lisandro","Lisette","Livia","Liz","Liza",
"Lizbeth","Lizzie","Lizzy","Lloyd","Lochlan","Logan","Logan","Lois","Lola","Lolita",
"Lonnie","Lora","Loran","Loren","Lorena","Lorenzo","Loretta","Lori","Lorie","Loris",
"Lorna","Lorraine","Lorri","Lorrie","Lottie","Lotus","Louie","Louis","Louisa","Louise",
"Lowell","Luann","Luca","Lucas","Lucia","Lucian","Luciano","Lucie","Lucille","Lucinda",
"Lucky","Lucy","Luigi","Luis","Lukas","Luke","Lulu","Luna","Lupita","Luther",
"Lydia","Lyla","Lyle","Lyna","Lynda","Lyndon","Lynette","Lynn","Lynn","Lynne",
"Lynnette","Lyra","Lysander","Mabel","Macey","Macie","Mack","Mackenzie","Macy","Mada",
"adalyn","Maddie","Maddison","Maddox","Maddy","Madeleine","Madeline","Madelyn","Madison","Madisyn",
"adyson","Mae","Maeve","Magda","Magdalena","Maggie","Magnus","Maia","Maire","Maisie",
"aisy","Maja","Makayla","Makenna","Makenzie","Malachi","Malcolm","Malia","Malik","Mallory",
"andy","Manuel","Mara","Marc","Marcel","Marcella","Marci","Marcia","Marco","Marcos",
"Marcus","Marcy","Margaret","Margarita","Margie","Margo","Margret","Maria","Mariah","Mariam",
"arian","Mariana","Marianna","Marianne","Marie","Marilyn","Marina","Mario","Marion","Marion",
"arisa","Marisol","Marissa","Maritza","Marjorie","Mark","Marla","Marlee","Marlene","Marley",
"Marley","Marlon","Marnie","Marquis","Marsha","Marshall","Martha","Martin","Martina","Marty",
"Martyn","Marvin","Mary","Maryam","Maryann","Marybeth","Mason","Mat","Mateo","Mathew",
"atilda","Matt","Matthew","Matthias","Maura","Maureen","Maurice","Mauricio","Maverick","Mavis",
"Max","Maximilian","Maximus","Maxine","Maxwell","May","Maya","Mckayla","Mckenna","Mckenzie",
"ea","Meadow","Meagan","Meera","Meg","Megan","Meghan","Mehtab","Mei","Mekhi",
"elanie","Melina","Melinda","Melissa","Melody","Melvin","Mercedes","Mercy","Meredith","Merick",
"Mervyn","Mia","Micah","Michael","Michaela","Micheal","Michele","Michelle","Mick","Mickey",
"Miguel","Mika","Mikaela","Mikayla","Mike","Mikey","Mikhaela","Mila","Milan","Mildred",
"ilena","Miles","Miley","Miller","Millie","Milly","Milo","Milton","Mimi","Mina",
"indy","Minerva","Minnie","Mira","Miranda","Miriam","Misha","Misty","Mitch","Mitchell",
"Mitt","Mitzi","Mohamed","Mohammad","Mohammed","Moises","Mollie","Molly","Mona","Monica",
"onika","Monique","Montana","Monte","Monty","Morgan","Morgan","Morris","Moses","Muhammad",
"Murphy","Murray","Mya","Myfanwy","Myles","Myra","Myron","Nadene","Nadia","Nadine",
"Naja","Nala","Nancy","Nanette","Naomi","Nash","Nasir","Natalia","Natalie","Natasha",
"Nate","Nath","Nathan","Nathanael","Nathaniel","Naya","Nayeli","Neal","Ned","Neil",
"Nell","Nelly","Nelson","Nena","Nesbit","Nestor","Nevaeh","Neve","Neville","Nia",
"Niall","Niamh","Nichola","Nicholas","Nick","Nicki","Nickolas","Nicky","Nico","Nicola",
"Nicolas","Nicole","Nicolette","Nigel","Niki","Nikita","Nikki","Nikolas","Nila","Nils",
"Nina","Nishka","Noah","Noe","Noel","Noelle","Nolan","Nora","Noreen","Norma",
"Norman","Nova","Oakes","Oakley","Oasis","Ocean","Octavia","Octavio","Odalis","Odele",
"Odelia","Odette","Oisin","Olga","Olive","Oliver","Olivia","Ollie","Olly","Omar",
"Opal","Ophelia","Oran","Orianna","Orla","Orlaith","Orlando","Oscar","Osvaldo","Otis",
"Otto","Owen","Ozzie","Pablo","Padraig","Paige","Paisley","Palmer","Pam","Pamela",
"Pandora","Pansy","Paola","Paolo","Paris","Parker","Pascal","Pasquale","Pat","Patience",
"Patrice","Patricia","Patrick","Patsy","Patti","Patty","Paul","Paula","Paulette","Paulina",
"Pauline","Paxton","Payton","Payton","Pearl","Pedro","Peggy","Penelope","Penny","Percy",
"Perla","Perry","Persephone","Petar","Pete","Peter","Petra","Petunia","Peyton","Peyton",
"Phebian","Phil","Philip","Phillip","Phillipa","Philomena","Phineas","Phoebe","Phoenix","Phoenix",
"Phyllis","Pierce","Piers","Piper","Pippa","Polly","Poppy","Porter","Portia","Precious",
"Presley","Preslie","Preston","Primrose","Prince","Princess","Priscilla","Promise","Prudence","Prue",
"Queenie","Quentin","Quiana","Quincy","Quinlan","Quinn","Quinn","Quinton","Quintrell","Rabia",
"Rachael","Rachel","Rachelle","Rae","Raegan","Rafael","Rafferty","Raheem","Rahul","Raiden",
"Raina","Raine","Rajesh","Ralph","Ram","Rameel","Ramon","Ramona","Ramsha","Randal",
"Randall","Randi","Randolph","Randy","Rania","Raphael","Raquel","Rashad","Rashan","Rashid",
"Raul","Raven","Ravi","Ray","Raymond","Rayna","Rayne","Reagan","Reanna","Reanne",
"Rebecca","Rebekah","Reece","Reed","Reef","Reese","Reese","Regan","Regina","Reginald",
"Rehan","Reid","Reina","Remco","Rena","Renata","Rene","Rene","Renee","Reuben",
"Rex","Reyna","Reynaldo","Reza","Rhea","Rhett","Rhian","Rhiannon","Rhoda","Rhona",
"Rhonda","Rhys","Ria","Rian","Rianna","Ricardo","Richard","Richie","Rick","Rickey",
"Rickie","Ricky","Rico","Rihanna","Rik","Riker","Rikki","Riley","Riley","Rio",
"Rita","River","River","Roanne","Rob","Robbie","Robby","Robert","Roberta","Roberto",
"Robin","Robin","Robyn","Rocco","Rochelle","Rocio","Rocky","Rod","Roderick","Rodger",
"Rodney","Rodolfo","Rodrigo","Rogelio","Roger","Rohan","Roisin","Roland","Rolando","Roman",
"Romeo","Ron","Ronald","Ronan","Ronda","Roni","Ronnie","Ronny","Roosevelt","Rory",
"Rosa","Rosalie","Rosalind","Rosalynn","Rose","Rosella","Rosemarie","Rosemary","Rosetta","Rosie",
"Ross","Rosy","Rowan","Rowan","Roxanne","Roxie","Roxy","Roy","Rozlynn","Ruairi",
"Ruben","Rubin","Ruby","Rudolph","Rudy","Rufus","Rupert","Russell","Rusty","Ruth",
"Ryan","Ryder","Ryker","Rylan","Ryland","Rylee","Ryleigh","Ryley","Rylie","Sabrina",
"Sade","Sadhbh","Sadie","Saffron","Sage","Said","Saige","Saira","Sally","Salma",
"Salome","Salvador","Salvatore","Sam","Sam","Samantha","Samara","Samir","Samira","Sammie",
"Sammy","Samuel","Sandra","Sandy","Sandy","Sanjay","Santiago","Saoirse","Sapphire","Sara",
"Sarah","Sarina","Sariya","Sascha","Sasha","Saskia","Saul","Savanna","Savannah","Sawyer",
"Scarlet","Scarlett","Scot","Scott","Scottie","Scotty","Seamus","Sean","Seb","Sebastian",
"Sebastianne","Sebestian","Selah","Selena","Selina","Selma","Senuri","Seren","Serena","Serenity",
"Sergio","Seth","Shakira","Shana","Shane","Shania","Shannon","Shannon","Shari","Sharon",
"Shaun","Shauna","Shawn","Shawn","Shawna","Shawnette","Shayla","Shea","Shea","Sheena",
"Sheila","Shelby","Sheldon","Shelia","Shelley","Shelly","Sheri","Sheridan","Sherman","Sherri",
"Sherrie","Sherry","Sheryl","Shirley","Shreya","Shyla","Sian","Sid","Sidney","Sidney",
"Sienna","Sierra","Silas","Silvia","Simon","Simone","Simran","Sinead","Siobhan","Sky",
"Skye","Skylar","Skylar","Skyler","Skyler","Slade","Sloane","Sofia","Solomon","Sondra",
"Sonia","Sonja","Sonny","Sonya","Sophia","Sophie","Sophy","Spencer","Spike","Stacey",
"Stacey","Staci","Stacie","Stacy","Stacy","Stan","Stanley","Star","Starla","Stefan",
"Stefanie","Stella","Stephan","Stephanie","Stephen","Sterling","Steve","Steven","Stevie","Stewart",
"Stuart","Sue","Suki","Summer","Susan","Susanna","Susanne","Susie","Sutton","Suzanne",
"Suzette","Suzy","Sybil","Sydney","Sylvester","Sylvia","Tabatha","Tabitha","Tadhg","Tahlia",
"Tala","Talia","Tallulah","Tamara","Tamera","Tami","Tamia","Tammi","Tammie","Tammy",
"Tamra","Tamsin","Tania","Tanisha","Tanner","Tanya","Tara","Tariq","Tarquin","Taryn",
"Tasha","Tate","Tatiana","Tatum","Tawana","Taya","Tayla","Taylah","Tayler","Taylor",
"Taylor","Teagan","Ted","Teddy","Teegan","Tegan","Teo","Terence","Teresa","Teri",
"Terrance","Terrell","Terrence","Terri","Terrie","Terry","Terry","Tess","Tessa","Tex",
"Thad","Thaddeus","Thea","Thelma","Theo","Theodore","Theresa","Therese","Thomas","Tia",
"Tiago","Tiana","Tiberius","Tiffany","Tiger","Tilly","Tim","Timmy","Timothy","Tina",
"Titus","Tobias","Toby","Tod","Todd","Tom","Tomas","Tommie","Tommy","Toni",
"Tonia","Tony","Tonya","Tori","Toryn","Trace","Tracey","Tracey","Traci","Tracie",
"Tracy","Tracy","Travis","Trent","Trenton","Trevon","Trevor","Trey","Tricia","Trina",
"Trinity","Trish","Trisha","Tristan","Tristen","Triston","Trixy","Troy","Trudy","Tucker",
"Ty","Tyler","Tyra","Tyrese","Tyrone","Tyson","Ulrica","Ulysses","Uma","Umar",
"Una","Uriah","Uriel","Ursula","Usama","Valarie","Valentin","Valentina","Valentino","Valeria",
"Valerie","Van","Vance","Vanessa","Vasco","Vaughn","Veda","Velma","Venetia","Venus",
"Vera","Verity","Vernon","Veronica","Vicki","Vickie","Vicky","Victor","Victoria","Vihan",
"Vijay","Vince","Vincent","Vinnie","Viola","Violet","Virgil","Virginia","Vishal","Vivian",
"Vivian","Viviana","Vivienne","Vladimir","Vonda","Wade","Walker","Wallace","Wallis","Walter",
"Wanda","Warren","Waverley","Waylon","Wayne","Wendell","Wendi","Wendy","Wesley","Weston",
"Whitney","Wilbert","Wilbur","Wiley","Wilfred","Wilhelm","Wilhelmina","Will","Willam","Willard",
"Willem","William","Willie","Willis","Willow","Wilma","Wilson","Winnie","Winnifred","Winston",
"Winter","Wolfgang","Wyatt","Xander","Xanthe","Xavier","Xaviera","Xena","Ximena","Xochitl",
"Yahir","Yardley","Yasmin","Yasmine","Yehudi","Yesenia","Yestin","Yolanda","York","Ysabel",
"Yulissa","Yuri","Yvaine","Yvette","Yvonne","Zac","Zach","Zachariah","Zachary","Zachery",
"Zack","Zackary","Zackery","Zaheera","Zahra","Zaiden","Zain","Zaine","Zaira","Zak",
"Zali","Zander","Zane","Zara","Zaria","Zayden","Zayn","Zayne","Zeb","Zebulon",
"Zed","Zeke","Zelda","Zelida","Zelina","Zendaya","Zia","Ziggy","Zina","Zion",
"Ziva","Zoe","Zoey","Zola","Zoltan","Zora","Zoya","Zula","Zuri","Zuriel",
"Zyana", "Zylen"
};
int randomIndex = (int) (Math.random() * (allnames.length - 1));
return allnames[randomIndex];
}
}