const usernameGenerator = {
    generate () {
        const randAdjIndex = Math.floor(Math.random() * adjectives.length);
        const randAnimalIndex = Math.floor(Math.random() * animals.length);
        const randNumber = Math.floor(Math.random() * 100);
        return adjectives[randAdjIndex].charAt(0).toUpperCase() + adjectives[randAdjIndex].slice(1) +
            animals[randAnimalIndex].replace(/ /g, '') +
            randNumber;
    }
};

const adjectives = [
    'aback',
    'abaft',
    'abashed',
    'abiding',
    'abject',
    'able',
    'abnormal',
    'aboriginal',
    'abounding',
    'abrupt',
    'absent',
    'absorbed',
    'absorbing',
    'abstracted',
    'absurd',
    'abundant',
    'acceptable',
    'accessible',
    'accidental',
    'accurate',
    'acid',
    'acidic',
    'acoustic',
    'acrid',
    'adamant',
    'adaptable',
    'addicted',
    'adhesive',
    'adjoining',
    'adorable',
    'adventurous',
    'afraid',
    'aggressive',
    'agreeable',
    'ahead',
    'ajar',
    'alert',
    'alike',
    'alive',
    'alleged',
    'alluring',
    'aloof',
    'amazing',
    'ambiguous',
    'ambitious',
    'amuck',
    'amused',
    'amusing',
    'ancient',
    'angry',
    'animated',
    'annoyed',
    'annoying',
    'anxious',
    'apathetic',
    'aquatic',
    'aromatic',
    'arrogant',
    'ashamed',
    'aspiring',
    'assorted',
    'astonishing',
    'attractive',
    'auspicious',
    'automatic',
    'available',
    'average',
    'aware',
    'awesome',
    'axiomatic',
    'bad',
    'barbarous',
    'bashful',
    'bawdy',
    'beautiful',
    'befitting',
    'belligerent',
    'beneficial',
    'berserk',
    'bewildered',
    'big',
    'billowy',
    'bite-sized',
    'bitter',
    'bizarre',
    'blue',
    'blushing',
    'boiling',
    'boorish',
    'bored',
    'boring',
    'bouncy',
    'boundless',
    'brainy',
    'brash',
    'brave',
    'brawny',
    'breakable',
    'breezy',
    'brief',
    'bright',
    'broad',
    'brown',
    'bumpy',
    'burly',
    'bustling',
    'busy',
    'cagey',
    'calculating',
    'calm',
    'capable',
    'capricious',
    'careful',
    'careless',
    'caring',
    'cautious',
    'ceaseless',
    'certain',
    'changeable',
    'charming',
    'cheap',
    'cheerful',
    'chief',
    'childlike',
    'chilly',
    'chivalrous',
    'chubby',
    'chunky',
    'clammy',
    'classy',
    'clean',
    'clear',
    'clever',
    'cloistered',
    'cloudy',
    'closed',
    'clumsy',
    'cluttered',
    'coherent',
    'cold',
    'colorful',
    'colossal',
    'comfortable',
    'common',
    'complete',
    'complex',
    'concerned',
    'confused',
    'conscious',
    'cool',
    'cooperative',
    'coordinated',
    'courageous',
    'cowardly',
    'crabby',
    'crazy',
    'creepy',
    'crooked',
    'cuddly',
    'cultured',
    'cumbersome',
    'curious',
    'curly',
    'curved',
    'curvy',
    'cute',
    'cynical',
    'dangerous',
    'dapper',
    'dashing',
    'dazzling',
    'deafening',
    'dear',
    'debonair',
    'decisive',
    'decorous',
    'deep',
    'defeated',
    'defective',
    'defiant',
    'delicate',
    'delicious',
    'delightful',
    'demonic',
    'delirious',
    'dependent',
    'descriptive',
    'detailed',
    'determined',
    'devilish',
    'didactic',
    'different',
    'difficult',
    'diligent',
    'disastrous',
    'discreet',
    'disgusted',
    'disgusting',
    'disillusioned',
    'distinct',
    'dizzy',
    'doubtful',
    'drab',
    'dramatic',
    'dreary',
    'drunk',
    'dry',
    'dull',
    'dusty',
    'dynamic',
    'dysfunctional',
    'eager',
    'early',
    'earthy',
    'easy',
    'economic',
    'educated',
    'efficacious',
    'efficient',
    'elastic',
    'elated',
    'elderly',
    'electric',
    'elegant',
    'elfin',
    'elite',
    'embarrassed',
    'eminent',
    'empty',
    'enchanted',
    'enchanting',
    'encouraging',
    'endurable',
    'energetic',
    'enormous',
    'entertaining',
    'enthusiastic',
    'envious',
    'equable',
    'equal',
    'erratic',
    'ethereal',
    'evanescent',
    'evasive',
    'even',
    'excellent',
    'excited',
    'exciting',
    'exclusive',
    'exotic',
    'expensive',
    'exuberant',
    'exultant',
    'fabulous',
    'faded',
    'faint',
    'fair',
    'faithful',
    'familiar',
    'famous',
    'fanatical',
    'fancy',
    'fantastic',
    'far',
    'fascinated',
    'fast',
    'fat',
    'faulty',
    'fearful',
    'fearless',
    'feeble',
    'feigned',
    'festive',
    'fierce',
    'fine',
    'finicky',
    'flaky',
    'flashy',
    'flat',
    'flawless',
    'flimsy',
    'flippant',
    'flowery',
    'fluffy',
    'fluttering',
    'foamy',
    'foolish',
    'foregoing',
    'forgetful',
    'fortunate',
    'frail',
    'fragile',
    'frantic',
    'free',
    'freezing',
    'frequent',
    'fresh',
    'fretful',
    'friendly',
    'frightened',
    'frightening',
    'full',
    'fumbling',
    'funny',
    'furry',
    'furtive',
    'future',
    'futuristic',
    'fuzzy',
    'gainful',
    'gaping',
    'gaudy',
    'general',
    'gentle',
    'giant',
    'giddy',
    'gifted',
    'gigantic',
    'glamorous',
    'gleaming',
    'glib',
    'glistening',
    'glorious',
    'glossy',
    'godly',
    'good',
    'goofy',
    'gorgeous',
    'graceful',
    'grandiose',
    'grateful',
    'gray',
    'great',
    'greedy',
    'green',
    'grey',
    'groovy',
    'grouchy',
    'grubby',
    'grumpy',
    'guarded',
    'guiltless',
    'gullible',
    'gusty',
    'habitual',
    'hallowed',
    'halting',
    'handsome',
    'handy',
    'hapless',
    'happy',
    'harmonious',
    'harsh',
    'heady',
    'healthy',
    'heartbreaking',
    'heavenly',
    'heavy',
    'helpful',
    'hesitant',
    'hideous',
    'hilarious',
    'hissing',
    'historical',
    'holistic',
    'hollow',
    'homely',
    'honorable',
    'horrible',
    'hospitable',
    'huge',
    'hulking',
    'humdrum',
    'humorous',
    'hungry',
    'hurried',
    'hurt',
    'hushed',
    'husky',
    'hypnotic',
    'hysterical',
    'icky',
    'icy',
    'idiotic',
    'ignorant',
    'illustrious',
    'imaginary',
    'immense',
    'imminent',
    'impartial',
    'imperfect',
    'impolite',
    'important',
    'imported',
    'impossible',
    'incandescent',
    'incompetent',
    'inconclusive',
    'industrious',
    'incredible',
    'inexpensive',
    'infamous',
    'innate',
    'innocent',
    'inquisitive',
    'insidious',
    'instinctive',
    'intelligent',
    'interesting',
    'internal',
    'invincible',
    'irate',
    'irritating',
    'itchy',
    'jaded',
    'jagged',
    'jazzy',
    'jealous',
    'jittery',
    'jolly',
    'joyous',
    'judicious',
    'juicy',
    'jumbled',
    'jumpy',
    'juvenile',
    'keen',
    'kind',
    'kindhearted',
    'kindly',
    'knowing',
    'knowledgeable',
    'known',
    'lackadaisical',
    'lacking',
    'languid',
    'large',
    'last',
    'laughable',
    'lavish',
    'lazy',
    'lean',
    'learned',
    'left',
    'lethal',
    'light',
    'likeable',
    'literate',
    'little',
    'lively',
    'lonely',
    'long',
    'longing',
    'loose',
    'lopsided',
    'loud',
    'lovely',
    'loving',
    'lowly',
    'lucky',
    'ludicrous',
    'lumpy',
    'lush',
    'luxuriant',
    'lying',
    'lyrical',
    'macabre',
    'macho',
    'maddening',
    'magenta',
    'magical',
    'magnificent',
    'majestic',
    'makeshift',
    'mammoth',
    'maniacal',
    'massive',
    'married',
    'marvelous',
    'material',
    'materialistic',
    'mature',
    'mean',
    'measly',
    'meaty',
    'medical',
    'meek',
    'mellow',
    'melodic',
    'melted',
    'merciful',
    'mere',
    'messy',
    'mighty',
    'milky',
    'mindless',
    'miniature',
    'minor',
    'misty',
    'mixed',
    'modern',
    'momentous',
    'mountainous',
    'muddled',
    'mundane',
    'murky',
    'mushy',
    'mute',
    'mysterious',
    'naive',
    'nappy',
    'narrow',
    'natural',
    'nauseating',
    'near',
    'neat',
    'nebulous',
    'necessary',
    'needless',
    'needy',
    'neighborly',
    'nervous',
    'new',
    'nice',
    'nifty',
    'nimble',
    'nippy',
    'noiseless',
    'noisy',
    'nonchalant',
    'nondescript',
    'nonstop',
    'normal',
    'nostalgic',
    'nosy',
    'noxious',
    'nutritious',
    'nutty',
    'oafish',
    'obedient',
    'obnoxious',
    'obsequious',
    'observant',
    'obtainable',
    'oceanic',
    'odd',
    'offbeat',
    'old',
    'omniscient',
    'onerous',
    'open',
    'opposite',
    'optimal',
    'orange',
    'ordinary',
    'organic',
    'outgoing',
    'outrageous',
    'outstanding',
    'overconfident',
    'overjoyed',
    'overrated',
    'overt',
    'overwrought',
    'painful',
    'painstaking',
    'pale',
    'paltry',
    'panicky',
    'panoramic',
    'parallel',
    'parched',
    'parsimonious',
    'past',
    'peaceful',
    'penitent',
    'perfect',
    'permissible',
    'perpetual',
    'phobic',
    'physical',
    'pink',
    'piquant',
    'placid',
    'plain',
    'plant',
    'plastic',
    'plausible',
    'pleasant',
    'plucky',
    'pointless',
    'poised',
    'polite',
    'political',
    'possible',
    'powerful',
    'precious',
    'premium',
    'present',
    'pretty',
    'previous',
    'pricey',
    'prickly',
    'private',
    'probable',
    'productive',
    'profuse',
    'protective',
    'proud',
    'psychedelic',
    'psychotic',
    'puffy',
    'pumped',
    'puny',
    'purple',
    'purring',
    'pushy',
    'puzzled',
    'puzzling',
    'quaint',
    'quarrelsome',
    'questionable',
    'quick',
    'quiet',
    'quirky',
    'quixotic',
    'quizzical',
    'rabid',
    'ragged',
    'rainy',
    'rambunctious',
    'rampant',
    'rapid',
    'rare',
    'raspy',
    'ratty',
    'ready',
    'real',
    'rebel',
    'receptive',
    'recondite',
    'red',
    'redundant',
    'reflective',
    'regular',
    'relieved',
    'remarkable',
    'reminiscent',
    'repulsive',
    'resolute',
    'resonant',
    'responsible',
    'rich',
    'right',
    'righteous',
    'rightful',
    'rigid',
    'ripe',
    'ritzy',
    'roasted',
    'robust',
    'romantic',
    'roomy',
    'rotten',
    'rough',
    'round',
    'royal',
    'ruddy',
    'rude',
    'rural',
    'rustic',
    'ruthless',
    'sad',
    'safe',
    'salty',
    'sassy',
    'satisfying',
    'savory',
    'scandalous',
    'scarce',
    'scared',
    'scary',
    'scattered',
    'scientific',
    'scintillating',
    'scrawny',
    'screeching',
    'secret',
    'secretive',
    'sedate',
    'seemly',
    'selective',
    'selfish',
    'separate',
    'serious',
    'shaggy',
    'shaky',
    'shallow',
    'sharp',
    'shiny',
    'shivering',
    'shocking',
    'short',
    'shrill',
    'shy',
    'sick',
    'silent',
    'silky',
    'silly',
    'simple',
    'simplistic',
    'sincere',
    'skillful',
    'skinny',
    'sleepy',
    'slim',
    'slimy',
    'slippery',
    'sloppy',
    'slow',
    'small',
    'smart',
    'smelly',
    'smiling',
    'smoggy',
    'sneaky',
    'snobbish',
    'snotty',
    'soft',
    'soggy',
    'solid',
    'somber',
    'sophisticated',
    'sordid',
    'sore',
    'sour',
    'sparkling',
    'special',
    'spectacular',
    'spicy',
    'spiffy',
    'spiky',
    'spiritual',
    'spiteful',
    'splendid',
    'spooky',
    'spotless',
    'spotted',
    'spotty',
    'spurious',
    'square',
    'squealing',
    'squeamish',
    'stale',
    'standing',
    'statuesque',
    'steadfast',
    'steady',
    'steep',
    'sticky',
    'stiff',
    'stingy',
    'stormy',
    'strange',
    'striped',
    'strong',
    'stupendous',
    'sturdy',
    'subdued',
    'subsequent',
    'substantial',
    'successful',
    'succinct',
    'sulky',
    'super',
    'superb',
    'superficial',
    'supreme',
    'swanky',
    'sweet',
    'sweltering',
    'swift',
    'taboo',
    'tacit',
    'tacky',
    'talented',
    'tall',
    'tame',
    'tan',
    'tangible',
    'tangy',
    'tart',
    'tasteful',
    'tasteless',
    'tasty',
    'tawdry',
    'tearful',
    'tedious',
    'teeny',
    'temporary',
    'tender',
    'tense',
    'tenuous',
    'terrific',
    'tested',
    'testy',
    'thankful',
    'therapeutic',
    'thick',
    'thin',
    'thinkable',
    'thirsty',
    'thoughtful',
    'thoughtless',
    'threatening',
    'thundering',
    'tidy',
    'tiny',
    'tired',
    'tiresome',
    'toothsome',
    'torpid',
    'tough',
    'towering',
    'tranquil',
    'tremendous',
    'tricky',
    'trite',
    'troubled',
    'truculent',
    'true',
    'truthful',
    'typical',
    'ubiquitous',
    'ultra',
    'unarmed',
    'unbecoming',
    'unbiased',
    'understood',
    'uneven',
    'uninterested',
    'unique',
    'unkempt',
    'unknown',
    'unnatural',
    'unruly',
    'unsightly',
    'unsuitable',
    'untidy',
    'unused',
    'unusual',
    'unwieldy',
    'unwritten',
    'upbeat',
    'uppity',
    'upset',
    'uptight',
    'useful',
    'utopian',
    'vacuous',
    'vagabond',
    'vague',
    'valuable',
    'vast',
    'vengeful',
    'venomous',
    'verdant',
    'versed',
    'victorious',
    'vigorous',
    'violet',
    'vivacious',
    'voiceless',
    'volatile',
    'voracious',
    'wacky',
    'waiting',
    'wakeful',
    'wandering',
    'wanting',
    'warm',
    'wary',
    'wasteful',
    'watery',
    'weak',
    'wealthy',
    'weary',
    'whimsical',
    'whispering',
    'wicked',
    'wide',
    'wiggly',
    'wild',
    'willing',
    'windy',
    'wiry',
    'wise',
    'wistful',
    'witty',
    'wonderful',
    'wooden',
    'woozy',
    'workable',
    'worried',
    'wrathful',
    'wry',
    'yielding',
    'young',
    'youthful',
    'zany',
    'zealous',
    'zesty',
    'zippy'
];

const animals = [
    'Aardvark',
    'Albatross',
    'Alligator',
    'Alpaca',
    'Ant',
    'Anteater',
    'Antelope',
    'Ape',
    'Armadillo',
    'Donkey',
    'Baboon',
    'Badger',
    'Barracuda',
    'Bat',
    'Bear',
    'Beaver',
    'Bee',
    'Bison',
    'Boar',
    'Buffalo',
    'Butterfly',
    'Camel',
    'Capybara',
    'Caribou',
    'Cassowary',
    'Cat',
    'Caterpillar',
    'Cattle',
    'Chamois',
    'Cheetah',
    'Chicken',
    'Chimpanzee',
    'Chinchilla',
    'Chough',
    'Clam',
    'Cobra',
    'Cockroach',
    'Cod',
    'Cormorant',
    'Coyote',
    'Crab',
    'Crane',
    'Crocodile',
    'Crow',
    'Curlew',
    'Deer',
    'Dinosaur',
    'Dog',
    'Dogfish',
    'Dolphin',
    'Dotterel',
    'Dove',
    'Dragonfly',
    'Duck',
    'Dugong',
    'Dunlin',
    'Eagle',
    'Echidna',
    'Eel',
    'Eland',
    'Elephant',
    'Elk',
    'Emu',
    'Falcon',
    'Ferret',
    'Finch',
    'Fish',
    'Flamingo',
    'Fly',
    'Fox',
    'Frog',
    'Gaur',
    'Gazelle',
    'Gerbil',
    'Giraffe',
    'Gnat',
    'Gnu',
    'Goat',
    'Goldfinch',
    'Goldfish',
    'Goose',
    'Gorilla',
    'Goshawk',
    'Grasshopper',
    'Grouse',
    'Guanaco',
    'Gull',
    'Hamster',
    'Hare',
    'Hawk',
    'Hedgehog',
    'Heron',
    'Herring',
    'Hippopotamus',
    'Hornet',
    'Horse',
    'Human',
    'Hummingbird',
    'Hyena',
    'Ibex',
    'Ibis',
    'Jackal',
    'Jaguar',
    'Jay',
    'Jellyfish',
    'Kangaroo',
    'Kingfisher',
    'Koala',
    'Kookabura',
    'Kouprey',
    'Kudu',
    'Lapwing',
    'Lark',
    'Lemur',
    'Leopard',
    'Lion',
    'Llama',
    'Lobster',
    'Locust',
    'Loris',
    'Louse',
    'Lyrebird',
    'Magpie',
    'Mallard',
    'Manatee',
    'Mandrill',
    'Mantis',
    'Marten',
    'Meerkat',
    'Mink',
    'Mole',
    'Mongoose',
    'Monkey',
    'Moose',
    'Mosquito',
    'Mouse',
    'Mule',
    'Narwhal',
    'Newt',
    'Nightingale',
    'Octopus',
    'Okapi',
    'Opossum',
    'Oryx',
    'Ostrich',
    'Otter',
    'Owl',
    'Oyster',
    'Panther',
    'Parrot',
    'Partridge',
    'Peafowl',
    'Pelican',
    'Penguin',
    'Pheasant',
    'Pig',
    'Pigeon',
    'Pony',
    'Porcupine',
    'Porpoise',
    'Quail',
    'Quelea',
    'Quetzal',
    'Rabbit',
    'Raccoon',
    'Rail',
    'Ram',
    'Rat',
    'Raven',
    'Red deer',
    'Red panda',
    'Reindeer',
    'Rhinoceros',
    'Rook',
    'Salamander',
    'Salmon',
    'Sand Dollar',
    'Sandpiper',
    'Sardine',
    'Scorpion',
    'Seahorse',
    'Seal',
    'Shark',
    'Sheep',
    'Shrew',
    'Skunk',
    'Snail',
    'Snake',
    'Sparrow',
    'Spider',
    'Spoonbill',
    'Squid',
    'Squirrel',
    'Starling',
    'Stingray',
    'Stinkbug',
    'Stork',
    'Swallow',
    'Swan',
    'Tapir',
    'Tarsier',
    'Termite',
    'Tiger',
    'Toad',
    'Trout',
    'Turkey',
    'Turtle',
    'Viper',
    'Vulture',
    'Wallaby',
    'Walrus',
    'Wasp',
    'Weasel',
    'Whale',
    'Wildcat',
    'Wolf',
    'Wolverine',
    'Wombat',
    'Woodcock',
    'Woodpecker',
    'Worm',
    'Wren',
    'Yak',
    'Zebra'
];

module.exports = usernameGenerator;
