Add files via upload

This commit is contained in:
Barret
2023-11-14 14:56:58 +01:00
committed by GitHub
parent 21fcd48275
commit 8fda87f365
28 changed files with 1336 additions and 256 deletions
+7 -256
View File
@@ -14,254 +14,7 @@
# THE SOFTWARE.
import os
import random
import re
import socket
import struct
import time
import torch
import torch.nn.functional as F
from sympy import symbols, lambdify, Abs, sin, cos, tan, sinh, cosh, tanh, exp, log, sqrt, atan, asin, acos, cbrt
import numpy as np
MANIFEST = {
"name": "ZSuite",
"version": (2, 0, 0),
"author": "TheBarret",
"project": "https://github.com/TheBarret/",
"description": "A suite of useful nodes for ComfyUI",
}
# Initializing variables and instances
random.seed()
os.chdir(os.path.dirname(os.path.abspath(__file__)))
# Constants
MAX_SEED = 2 ** 31 - 1
# Cheat sheet:
#Gain values : 0.0 0.9 1.4 2.7 3.7 7.7 8.7 12.5 14.4 15.7 16.6 19.7 20.7 22.9 25.4
# 28.0 29.7 32.8 33.8 36.4 37.2 38.6 40.2 42.1 43.4 43.9 44.5 48.0 49.6
#Sample rates : 0.25, 1.024, 1.536, 1.792, 1.92, 2.048, 2.16, 2.56, 2.88, 3.2 MSps
DEVICE_FREQUENCY = 100000000
DEVICE_IQ = 1024000
DEVICE_TUNER = 1
DEVICE_GAIN = 40.2
class ZSuitePrompter:
def __init__(self):
pass
@classmethod
def INPUT_TYPES(cls):
"""
Define input types for the ZSuite Prompter node.
"""
return {
"required": {
"text": ("STRING", {"multiline": True, "default": "__preamble__ painting made by __artist__"}),
"trigger": ("INT", {"default": 0}),
},
}
RETURN_TYPES = ("STRING",)
FUNCTION = "process_text"
CATEGORY = "Prompt"
@classmethod
def process_text(cls, text, trigger):
"""
Process the input text by replacing placeholders with random words from corresponding text files.
"""
import re
# Extract placeholders between double underscores
placeholders = re.findall(r'__([^_]+)__', text)
print(f"[ZSuite] Signal [{trigger}]")
print(f"[ZSuite] Replacing: {placeholders}")
# Replace each placeholder with a random word from its corresponding text file
for placeholder in placeholders:
file_path = os.path.join("blocks", f"{placeholder}.txt")
if os.path.exists(file_path):
with open(file_path, "r", encoding="utf-8") as file:
words = [line.strip() for line in file.readlines() if line.strip()]
if words:
replacement = random.choice(words)
text = text.replace(f"__{placeholder}__", replacement)
print(f"[ZSuite] Finished: {text}")
return (text,)
# Seed Modifier Node
class ZSuiteSeedMod:
def __init__(self):
pass
@classmethod
def INPUT_TYPES(cls):
"""
Define input types for the Seed Modifier node.
"""
# Assign default preset
preset_default = "abs(seed * tan(trigger) + 0.1 * abs(seed))"
return {
"required": {
"seed": ("INT", {"default": 0}),
"expression": ("STRING", {"multiline": True, "default": preset_default}),
"trigger": ("INT", {"default": 0}),
},
}
@classmethod
def OUTPUT_TYPES(cls):
"""
Define output types for the Seed Modifier node.
"""
return {
"sum": ("INT", {}),
"dec": ("FLOAT", {}),
}
RETURN_TYPES = ("INT", "FLOAT")
FUNCTION = "modify_seed"
CATEGORY = "Math"
def modify_seed(self, seed, expression, trigger):
"""
Modify the seed based on the selected expression, while retaining its essence with overflow check.
"""
print(f"[ZSuite] Signal [{trigger}]")
# Define symbols for the expression
sym_seed, sym_trigger = symbols('seed trigger')
# Create a lambda function from the expression
expr_function = lambdify((sym_seed, sym_trigger), expression, modules=['numpy'])
# Evaluate the expression using provided seed and trigger
modification_amount = expr_function(seed, trigger)
# Save both integer and decimal representations
modification_amount_integer = int(modification_amount)
modification_amount_decimal = float(modification_amount)
# Save end product
interpolated_value = modification_amount_integer
# Use min and max to handle overflow with wraparound to 0
interpolated_value = interpolated_value % (MAX_SEED + 1)
print(f"[ZSuite] Input: {expression} [{seed},{trigger}]")
print(f"[ZSuite] Output: {interpolated_value}")
# Store the outcome for the next cycle
self.last_sum = interpolated_value
return (interpolated_value,modification_amount_decimal)
class ZSuiteNoise:
def __init__(self):
pass
@classmethod
def INPUT_TYPES(cls):
return {
"required": {
"latents": ("LATENT",),
"rtl_tcp_host": ("STRING", {"default": "192.168.2.3", "multiline": False}),
"rtl_tcp_port": ("INT", {"default": 10080, "min": 0, "max": 65535}),
"duration": ("FLOAT", {"default": 0.5, "min": 0.0, "max": 10.0, "step": 0.1}),
"strength": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 200.0, "step": 0.01}),
}
}
RETURN_TYPES = ("LATENT",)
FUNCTION = "inject_rtl_noise"
CATEGORY = "latent/noise"
def inject_rtl_noise(self, latents, rtl_tcp_host, rtl_tcp_port, duration, strength):
print(f"[ZSuite] Addressing device [{rtl_tcp_host}:{rtl_tcp_port}]")
noise = self.collect_rtl_noise(rtl_tcp_host, rtl_tcp_port, duration)
return self.inject_noise(latents, noise, strength)
def inject_noise(self, latents, noise, strength):
s = latents.copy()
if noise is None:
return (s,)
# Ensure noise is a NumPy array
noise = np.array(noise)
# Obtain min/max
data_min = np.min(noise)
data_max = np.max(noise)
# Iterate elements and scale them
print(f"[ZSuite] Injecting noise...")
for i in range(s["samples"].numel()):
raw = float(strength * float(noise[i % noise.size]))
data_scaled = (raw - data_min) / (data_max - data_min)
data_scaled = 2 * data_scaled - 1
s["samples"].view(-1)[i] = data_scaled
return (s,)
def collect_rtl_noise(self, host, port, duration):
print(f"[ZSuite] Opening connection...")
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.settimeout(5) # Set a shorter timeout for testing
try:
s.connect((host, port))
except Exception as e:
print(f"[ZSuite] Error caught: {e}")
return np.array([]), np.array([])
print(f"[ZSuite] Sending parameters [{DEVICE_FREQUENCY},{DEVICE_IQ},{DEVICE_TUNER},{DEVICE_GAIN}]")
self.send_command(s, 0x01, DEVICE_FREQUENCY)
self.send_command(s, 0x02, DEVICE_IQ)
self.send_command(s, 0x03, DEVICE_TUNER)
self.send_command(s, 0x04, DEVICE_GAIN)
noise_data = self.collect_data(s, duration)
return self.prepare_noise(noise_data)
def send_command(self, sock, opcode, value):
if opcode in {0x01, 0x02}: # Frequency and IQ Sample Rate commands
cmd_bytes = struct.pack('>BI', opcode, value)
elif opcode in {0x04, 0x05, 0x06, 0x0d}: # Gain, Frequency Correction, IF Gain, Tuner Gain Index commands
cmd_bytes = struct.pack('>BHH', opcode, int(value), 0) # Ensure value is an integer
elif opcode in {0x03, 0x07, 0x08, 0x09, 0x0a, 0x0e}: # Single uint8 value
cmd_bytes = struct.pack('>BB', opcode, int(value)) # Ensure value is an integer
else:
raise ValueError(f"[ZSuite] Unsupported opcode {opcode}")
sock.sendall(cmd_bytes)
def collect_data(self, sock, duration):
samples = []
chunk_size = 4096
timer_start = time.time()
while True:
data = sock.recv(chunk_size)
if not data:
break
samples.extend(struct.unpack('h' * (len(data) // 2), data))
if time.time() - timer_start > duration:
break
print(f"[ZSuite] Captured {len(samples)} samples")
return np.array(samples)
def prepare_noise(self, data):
combined_data = np.array(data)
return combined_data
import importlib
# NODE_CLASS_MAPPINGS
if "NODE_CLASS_MAPPINGS" not in globals():
@@ -270,11 +23,9 @@ if "NODE_CLASS_MAPPINGS" not in globals():
if "NODE_DISPLAY_NAME_MAPPINGS" not in globals():
NODE_DISPLAY_NAME_MAPPINGS = {}
# FINALIZE
NODE_CLASS_MAPPINGS["ZSUITE_PROMPTER"] = ZSuitePrompter
NODE_CLASS_MAPPINGS["ZSUITE_SEED_MODIFIER"] = ZSuiteSeedMod
NODE_CLASS_MAPPINGS["ZSUITE_NOISE"] = ZSuiteNoise
NODE_DISPLAY_NAME_MAPPINGS["ZSUITE_PROMPTER"] = "ZSuite Prompter"
NODE_DISPLAY_NAME_MAPPINGS["ZSUITE_SEED_MODIFIER"] = "ZSuite Seed Modifier"
NODE_DISPLAY_NAME_MAPPINGS["ZSUITE_NOISE"] = "ZSuite Noise"
for node in os.listdir(os.path.dirname(__file__) + os.sep + 'nodes'):
if node.startswith('ZS_'):
node = node.split('.')[0]
node_import = importlib.import_module('custom_nodes.Zephys.nodes.' + node)
print(f"[ZSuite] Loading {node}...")
NODE_CLASS_MAPPINGS.update(node_import.NODE_CLASS_MAPPINGS)
+59
View File
@@ -0,0 +1,59 @@
import os
import random
import re
import socket
import struct
import time
import torch
import numpy as np
# Initializing variables and instances
random.seed()
os.chdir(os.path.dirname(os.path.abspath(__file__)))
class ZSuitePrompter:
def __init__(self):
pass
@classmethod
def INPUT_TYPES(cls):
"""
Define input types for the ZSuite Prompter node.
"""
return {
"required": {
"text": ("STRING", {"multiline": True, "default": "__preamble__ painting made by __artist__"}),
"trigger": ("INT", {"default": 0}),
},
}
RETURN_TYPES = ("STRING",)
FUNCTION = "process_text"
CATEGORY = "Prompt"
@classmethod
def process_text(cls, text, trigger):
"""
Process the input text by replacing placeholders with random words from corresponding text files.
"""
import re
# Extract placeholders between double underscores
placeholders = re.findall(r'__([^_]+)__', text)
print(f"[ZSuite] Signal [{trigger}]")
print(f"[ZSuite] Replacing: {placeholders}")
# Replace each placeholder with a random word from its corresponding text file
for placeholder in placeholders:
file_path = os.path.join("blocks", f"{placeholder}.txt")
if os.path.exists(file_path):
with open(file_path, "r", encoding="utf-8") as file:
words = [line.strip() for line in file.readlines() if line.strip()]
if words:
replacement = random.choice(words)
text = text.replace(f"__{placeholder}__", replacement)
print(f"[ZSuite] Finished: {text}")
return (text,)
NODE_CLASS_MAPPINGS = { "ZSuite: Prompter": ZSuitePrompter }
+152
View File
@@ -0,0 +1,152 @@
# #######################################################################################################################
# This node facilitates communication with an RTL-SDR device (Digital Radio Receiver) through a TCP connection.
# Once connected, it captures live ambient RF noise, which is then embedded into a latent vector.
# Protocol: https://hz.tools/rtl_tcp/ Paul Tagliamonte 2020-11-03
# Overview:
# - The node establishes a TCP connection with the RTL-SDR device.
# - Sends essential parameters such as frequency, IQ sample rate, tuner, and gain settings.
# - Collects ambient RF noise data from the device for a specified duration.
# - Scales and injects the noise into a given latent vector, adjusting its strength.
# - The injected latent vector is then returned for further processing.
# Cheat sheet:
# Frequnecy : Depending device type but generally 5Khz ~ 1.7Ghz, in `Hz` unit notation
# Gain values : 0.0, 0.9, 1.4, 2.7, 3.7, 7.7, 8.7, 12.5, 14.4, 15.7, 16.6, 19.7, 20.7, 22.9, 25.4,
# 28.0, 29.7, 32.8, 33.8, 36.4, 37.2, 38.6, 40.2, 42.1, 43.4, 43.9, 44.5, 48.0, 49.6 (Default: 0 = auto)
# Samplerates : 0.25, 1.024, 1.536, 1.792, 1.92, 2.048, 2.16, 2.56, 2.88, 3.2 MSps (Default: 1.024 MSps)
import os
import random
import re
import socket
import struct
import time
import torch
import numpy as np
# Settings for RTL-SDR device
DEVICE_HOST = "192.168.2.3"
DEVICE_PORT = 10080
DEVICE_BUFFER = 4096
DEVICE_FREQUENCY = 100000000
DEVICE_IQ = 1024000
DEVICE_TUNER = 1
DEVICE_GAIN = 20.7
class ZSuiteNoise:
def __init__(self):
pass
@classmethod
def INPUT_TYPES(cls):
# Define input types for the inject_rtl_noise function
return {
"required": {
"latents": ("LATENT",),
"rtl_tcp_host": ("STRING", {"default": DEVICE_HOST, "multiline": False}),
"rtl_tcp_port": ("INT", {"default": DEVICE_PORT, "min": 0, "max": 65535}),
"duration": ("FLOAT", {"default": 0.3, "min": 0.0, "max": 10.0, "step": 0.1}),
"strength": ("FLOAT", {"default": 0.5, "min": 0.0, "max": 1.0, "step": 0.01}),
"trigger": ("INT", {"default": 0}),
}
}
RETURN_TYPES = ("LATENT",)
FUNCTION = "inject_rtl_noise"
CATEGORY = "latent/noise"
def inject_rtl_noise(self, latents, rtl_tcp_host, rtl_tcp_port, duration, strength, trigger):
print(f"[ZSuite] Signal [{trigger}]")
# Inject RTL-SDR noise into latent samples
print(f"[ZSuite] Addressing device [{rtl_tcp_host}:{rtl_tcp_port}]")
noise = self.collect_rtl_noise(rtl_tcp_host, rtl_tcp_port, duration)
return self.inject_noise(latents, noise, strength)
def inject_noise(self, latents, noise, strength):
# Inject noise into latent samples
s = latents.copy()
if noise is None:
return (s,)
# Ensure noise is a NumPy array
noise = np.array(noise)
# Obtain min/max values from noise data
data_min = np.min(noise)
data_max = np.max(noise)
# Scale and inject noise into latent samples
print(f"[ZSuite] Injecting noise...")
for i in range(s["samples"].numel()):
raw = float(strength * float(noise[i % noise.size]))
data_scaled = (raw - data_min) / (data_max - data_min)
data_scaled = 2 * data_scaled - 1
s["samples"].view(-1)[i] = data_scaled
return (s,)
def collect_rtl_noise(self, host, port, duration):
# Collect RTL-SDR noise data from specified host and port
print(f"[ZSuite] Opening connection...")
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.settimeout(5) # Set a shorter timeout for testing
try:
s.connect((host, port))
except Exception as e:
print(f"[ZSuite] Error caught: {e}")
return np.array([]), np.array([])
# Send RTL-SDR parameters to the device
print(f"[ZSuite] Sending parameters [{DEVICE_FREQUENCY},{DEVICE_IQ},{DEVICE_TUNER},{DEVICE_GAIN}]")
self.send_command(s, 0x01, DEVICE_FREQUENCY)
self.send_command(s, 0x02, DEVICE_IQ)
self.send_command(s, 0x03, DEVICE_TUNER)
self.send_command(s, 0x04, DEVICE_GAIN)
# Collect noise data from the device
noise_data = self.collect_data(s, duration)
return self.prepare_noise(noise_data)
def send_command(self, sock, opcode, value):
# Send command to the RTL-SDR device
if opcode in {0x01, 0x02}: # Frequency and IQ Sample Rate commands
cmd_bytes = struct.pack('>BI', opcode, value)
elif opcode in {0x04, 0x05, 0x06, 0x0d}: # Gain, Frequency Correction, IF Gain, Tuner Gain Index commands
cmd_bytes = struct.pack('>BHH', opcode, int(value), 0) # Ensure value is an integer
elif opcode in {0x03, 0x07, 0x08, 0x09, 0x0a, 0x0e}: # Single uint8 value
cmd_bytes = struct.pack('>BB', opcode, int(value)) # Ensure value is an integer
else:
raise ValueError(f"[ZSuite] Unsupported opcode {opcode}")
sock.sendall(cmd_bytes)
def collect_data(self, sock, duration):
# Collect data from the RTL-SDR device for the specified duration
samples = []
chunk_size = DEVICE_BUFFER
timer_start = time.time()
while True:
data = sock.recv(chunk_size)
if not data:
break
samples.extend(struct.unpack('h' * (len(data) // 2), data))
if time.time() - timer_start > duration:
break
print(f"[ZSuite] Captured {len(samples)} samples")
return np.array(samples)
def prepare_noise(self, data):
# Prepare noise data for injection
combined_data = np.array(data)
return combined_data
# Mapping for the ZSuite: RF Noise node class
NODE_CLASS_MAPPINGS = {"ZSuite: RF Noise": ZSuiteNoise}
+82
View File
@@ -0,0 +1,82 @@
import os
import random
import re
import socket
import struct
import time
import torch
import torch.nn.functional as F
from sympy import symbols, lambdify, Abs, sin, cos, tan, sinh, cosh, tanh, exp, log, sqrt, atan, asin, acos, cbrt
import numpy as np
# Constants
MAX_SEED = 2 ** 31 - 1
class ZSuiteSeedMod:
def __init__(self):
pass
@classmethod
def INPUT_TYPES(cls):
"""
Define input types for the Seed Modifier node.
"""
# Assign default preset
preset_default = "abs(seed * tan(trigger) + 0.1 * abs(seed))"
return {
"required": {
"seed": ("INT", {"default": 0}),
"expression": ("STRING", {"multiline": True, "default": preset_default}),
"trigger": ("INT", {"default": 0}),
},
}
@classmethod
def OUTPUT_TYPES(cls):
"""
Define output types for the Seed Modifier node.
"""
return {
"sum": ("INT", {}),
"dec": ("FLOAT", {}),
}
RETURN_TYPES = ("INT", "FLOAT")
FUNCTION = "modify_seed"
CATEGORY = "Math"
def modify_seed(self, seed, expression, trigger):
"""
Modify the seed based on the selected expression, while retaining its essence with overflow check.
"""
print(f"[ZSuite] Signal [{trigger}]")
# Define symbols for the expression
sym_seed, sym_trigger = symbols('seed trigger')
# Create a lambda function from the expression
expr_function = lambdify((sym_seed, sym_trigger), expression, modules=['numpy'])
# Evaluate the expression using provided seed and trigger
modification_amount = expr_function(seed, trigger)
# Save both integer and decimal representations
modification_amount_integer = int(modification_amount)
modification_amount_decimal = float(modification_amount)
# Save end product
interpolated_value = modification_amount_integer
# Use min and max to handle overflow with wraparound to 0
interpolated_value = interpolated_value % (MAX_SEED + 1)
print(f"[ZSuite] Input: {expression} [{seed},{trigger}]")
print(f"[ZSuite] Output: {interpolated_value}")
# Store the outcome for the next cycle
self.last_sum = interpolated_value
return (interpolated_value,modification_amount_decimal)
NODE_CLASS_MAPPINGS = { "ZSuite: SeedMod": ZSuiteSeedMod }
+1
View File
@@ -0,0 +1 @@
Panda␍Parrot␍Ox␍Owl␍Otter␍Peacock␍Pelican␍Pigeon␍Puppy␍Rabbit␍Pig␍Penguin␍Ostrich␍Lion␍Lizard␍Lobster␍Leopard␍ladybug␍Louse␍Mole␍Mouse␍Octopus␍Moth␍Mosquito␍Monkey␍Raccoon␍Swan␍Tiger␍Toad␍Swallow␍Stork␍Squirrel␍Starfish␍Turkey␍Woodpecker␍Worm␍Whale␍Walrus␍Turtle␍Squid␍Seagull␍Seahorse␍Robin␍Reindeer␍Rat␍Raven␍Seal␍Shark␍Snake␍Sparrow␍Spider␍Shrimp␍Shells␍Sheep␍Koala␍Coyote␍Crab␍Cow␍Coral␍Cormorant␍Crocodile␍Kitten␍Dog␍Dolphin␍Deer␍Crow␍Cockroach␍Clams␍Bear␍Bee␍Bat␍Badger␍Alligator␍Ant␍Beetle␍Butterfly␍Chimpanzee␍Chicken␍Centipede␍Camel␍Cat␍Grasshopper␍Hamster␍Hare␍Gorilla␍Goose␍Goat␍Dove␍Goldfish␍Hawk␍Hedgehog␍Jellyfish␍Kangaroo␍Horse␍Hedgehong␍Hippopotamus␍Giraffe␍Fish␍Flamingo␍Elephant␍Elk␍Fly␍Fox␍Frog␍Ducks␍Dragonfly␍Sea anemone␍Black bird␍Bald eagle␍Tropical fish␍Sea lion␍Sea turtle␍Sea urchin␍Blue whale␍Arctic wolf
+9
View File
@@ -0,0 +1,9 @@
Greek Classical Architecture
Roman Classical Architecture
Gothic Architecture
Baroque Architecture
Neoclassical Architecture
Victorian Architecture
Modern Architecture
Post-Modern Architecture
Neofuturist Architecture
File diff suppressed because one or more lines are too long
+96
View File
@@ -0,0 +1,96 @@
Skull
Cranium
Mandibles
Maxilla
Nasal bone
Zygomatic bone
Face
Eyes
Nose
Ears
Mouth
Tongue
Teeth
Cheeks
Chin
Neck
Trachea
Esophagus
Cervical vertebrae
Torso
Credit: MedicalGraphics
Shoulders
Chest
Pectoralis
Ribcage
Lungs
Heart
Upper Abdomen
Abdominal muscles
Stomach
Kidneys
Liver
Lower Abdomen
Small Intestines
Large Intestines
Colon
Rectum
Posterior
Spine
Gluteus maximus
Arms
Brachium
Humerus
Biceps
Triceps
Elbow
Forearm
Ulna
Radius
Hand
Carpals
Metacarpals
Legs
Thigh
Quadriceps
Hamstring
Knee
Crus
Shin
Tibia
Fibia
Ankle
Foot
Tarsals
Metatarsals
Trachea
Bronchioles
Lungs
Alveoli
Diaphragm
Heart
Blood Vessels
Arteries
Veins
Capillaries
Blood
Skull
Vertebrae
Scapula
Ribs
Humerus
Ulna
Radius
Pelvis
Carpals/Metacarpals
Femur
Patella
Tibia
Fibia
Tarsals/Metatarsals
Mouth
Esophagus
Stomach
Small Intestines
Large Intestine
Rectum
+1
View File
@@ -0,0 +1 @@
Advertising designer␍Animator␍Architect␍Art teacher␍Cake decorator␍Courtroom sketch artist␍Drafter␍Editorial cartoonist␍Electrical engineer␍Fashion designer␍Graphic designer␍Illustrator␍Interior designer␍Makeup artist␍Plumber␍Tattoo artist␍Technical illustrator
+61
View File
@@ -0,0 +1,61 @@
Argentina
Australia
Austria
Belgium
Brazil
Canada
Chile
China
Colombia
Denmark
Egypt
France
Germany
Greece
India
Indonesia
Italy
Japan
Malaysia
Mexico
Norway
Poland
Portugal
Russia
South Africa
South Korea
Spain
Sweden
Switzerland
Thailand
Turkey
Ukraine
United Arab Emirates
United Kingdom
United States
Vietnam
Austria
Bahrain
Botswana
Costa Rica
Croatia
Czech Republic
Dominican Republic
Ecuador
Estonia
Ghana
Hungary
Iceland
Jamaica
Kenya
Lebanon
Lithuania
Malaysia
Morocco
Nepal
Peru
Philippines
Singapore
Slovenia
Tanzania
Uruguay
File diff suppressed because one or more lines are too long
+308
View File
@@ -0,0 +1,308 @@
Alu Gobi
Alu Matar
American Pancakes
Apple Pie
Arros negre
Arroz con huevo
Arroz con pollo
Avocado Toast
BLT Sandwich
Bacon Egg and Cheese Sandwich
Bagels
Baguette
Baked Ziti
Banana Bread
Banana Split
Barbecue Ribs
Barfi
Beef Rendang (rendang)
Beef Vindaloo
Beefaroni
Beignet
Beignets
Blanquette de Veau
Bocadillo de carne
Bocadillo de jamon
Bocadillo de pollo
Bocadillo de queso
Boeuf Bourguignon
Bouillabaisse
Bread Pudding
Breakfast Burrito
Brioche
Brodetto Di Pesce
Brownies
Buffalo Wings
Burrito
Butter Chicken
Cabrales
California-Style Pizza
Cannele
Carrot Halwa
Cassoulet
Chaat Papri
Cham-Cham
Chana Masala
Chapati
Chausson aux Pommes
Cheese Dog
Cheeseburger
Cheesesteak
Chiacchiere
Chicago-Style Deep Dish Pizza
Chicken 65
Chicken Biriyani
Chicken Fried Steak
Chicken Nuggets
Chicken Parmigiana
Chicken Tajine
Chicken Tikka
Chicken and Waffles
Chicken with Chestnuts
Chili Chicken
Chili Dog
Chili con Carne
Chimichanga
Chinese Chicken Salad
Chistorra
Chocolate Chip Cookie
Chocolate Italian Sponge Cake
Chocolate caliente
Chop Suey
Chouquette
Club Sandwich
Cobb Salad
Conejo con arroz
Coq au Vin
Cordero asado
Coriander Chutney
Corn on the Cob
Cornbread
Couscous
Crab Cake
Creamy Chicken Marsala
Creamy Lemon Parmesan Chicken Piccata
Creamy Mushroom Soup With Italian Sausage
Creme Brulee
Crepe
Croissant
Croque Monsieur
Croquetas de bacalao
Croquetas de jamon
Cuban Sandwich
Cupcake
Daifuku
Daiwa Sushi
Dal Makhani
Dango
Date Tamarind Chutney
Dessert Bars
Deviled Eggs
Dhokla
Doughnut
Easy Italian Stuffed Peppers
Ebi furai
Eclair
Eggplant And Italian Sausage Gratin
Eggs Benedict
Empanada Galleg
Endo Sushi
Escargot
Espetos
Fajitas
Fish Fry
Flan
Focaccia Di Genova
French Onion Soup
Fried Chicken
Frozen Yogurt
Frutti Di Mare
Fudge
Fuet
Gachas
Galette Complet
Gambas a la plancha
Garlic Butter Italian Sausage Sandwiches
Garlic Parmesan Cheese Bombs
Garlic Soya Chicken
General Tso's Chicken
Gougere
Gratin Dauphinois
Grilled Cheese
Gulab Jamun
Gumbo
Gyoza
Hakata ramen
Himono
Hoagie
Honey Chilli Potato
Hot Italian Sliders
Houtou Fudou
Ice Cream Float
Idli
Italian Beef
Italian Braised Chicken
Italian Chicken Meal Prep Bowls
Italian Crescent Casserole
Italian Garlic Bread Grilled Cheese
Italian Green Salad
Italian Oven Roasted Vegetables
Italian Ravioli
Italian Roasted Potatoes
Italian Sandwich Roll-Ups
Italian Sausage And Peppers
Italian Sausage Rigatoni
Italian Seafood Pasta With Mussels & Calamari
Italian Skillet Chicken With Tomatoes And Mushrooms
Italian Style Chicken Mozzarella Skillet
Italian Wedding Soup
Jabugo
Jalebi
Jambalaya
Jambon-Beurre
Kaiseki
Kaisendon
Kansas City-Style Barbecue
Karaage
Kasutera
Katsukura
Kayu
Key Lime Pie
Kheema
Kheer
Korokke
Kulfi
Kung Pao Chicken
Kushiyaki
Ladoo
Lamb Kebabs
Lamb Vindaloo
Lime Pickle
Lle Flottante
Lobster Roll
Longaniza
Mac and Cheese
Macaron
Madeleine
Magdalenas
Magret de canard
Maisen
Makizushi
Malai Kofta (Veggie Balls With Sauce)
Mango Lassi
Marinara Sauce
Masala Chai
Masala Dosa
Masoor Dal
Meatloaf
Medu Vada
Milkshake
Mille Feuille
Miso Soup
Mofongo
Molten Chocolate Cake
Monaka
Montadito
Morcilla de Burgos
Moules Frites
Mussels In Spicy Red Arrabbiata Sauce
Naan
Napolitana de chocolate
Nashville Hot Chicken
Natillas
Navratan Korma (Nine Gem Curry)
Negima yakitori
New England Clam Chowder
New York-Style Cheesecake
New York-Style Pizza
Okonomiyaki
Omelette
Omurice
Onion Pakora
Onion Rings
Orzo With Italian Sausage And Peppers
Osso Buco
Oyakodon
Pa amb tomaquet
Pain au Chocolat
Palmie
Pane Bianco
Papadum
Pasta Salad
Pastrami on Rye
Pecan Pie
Pernil
Pesto Sliders
Pissaladiere
Pisto
Po'Boy
Poke Salad
Porchetta
Pot Pie
Pot Roast
Pot au feu
Pulao
Pulled Pork
Queso Tetilla
Quiche
Quince Paste
Quinoi
Rabas
Ragu Alla Bolognese
Raita
Rajma
Ras Malai
Ratatouille
Ravioli With Garlic Basil Oil
Red Velvet Cake
Reuben
Rillettes
Roast Beef Sandwich
Rogan Josh
Romesco
Roscon de Reyes
S'more
Saag Paneer
Sambar
Samosa
Sauce Bechamel
Shoyu ramen
Shrimp And Corn Risotto With Bacon
Shrimp and Grits
Sicilian Pizza
Slow Cooker Italian Beef
Snickerdoodle
Soba
Sofrito
Souffle
Spaghetti Olio E Aglio
Spaghetti and Meatballs
Steak Tartare
Stromboli
Stuffed Italian Flank Steak
Submarine Sandwich
Sukiyaki
Sundae
Surf and Turf
Tandoori Chicken
Tapenade
Tarta de Santiago
Tarte
Tartine
Teppanyaki
Teriyaki
Texas-Style Barbecue
Tomate Farcie
Tomate frito
Tomato & Basil Bruschetta
Tonkotsu ramen
Torta del Casar
Tortellini Pasta Carbonara
Tortellini Soup With Italian Sausage And Spinach
Tsunahachi
Turron
Udon
Uthapam
Vegetable Jalfrezi
Verdejo
Yakisoba
+1
View File
@@ -0,0 +1 @@
Tequila␍Jägermeister␍Vodka␍Whiskey␍Rum␍Gin␍Sambuca␍Chartreuse␍Absinthe␍Schnapps␍Pilsner␍Stout␍Porter␍Wheat beer␍Lager␍Belgian ale␍Brown ale␍Amber ale␍Saison␍Cabernet Sauvignon␍Merlot␍Pinot Noir␍Chardonnay␍Sauvignon Blanc␍Pinot Grigio␍Riesling␍Syrah/Shiraz␍Zinfandel␍Malbec
+20
View File
@@ -0,0 +1,20 @@
House
Mansion
Temple
Mosque
Church
Synagogue
Cathedral
Skyscraper
Castle
Chalet
Cottage
Lodge
Barn
Warehouse
Factory
Office building
Apartment building
Hotel
School
Hospital
+129
View File
@@ -0,0 +1,129 @@
Abraham Lincoln
Albert Einstein
Alfred Hitchcock
Al Gore
Amelia Earhart
Angelina Jolie
Anne Frank
Audrey Hepburn
Aung San Suu Kyi
Babe Ruth
Barack Obama
Benazir Bhutto
Bill Gates
Billie Holiday
Billie Jean King
Bob Geldof
Brad Pitt
C.S. Lewis
Carl Lewis
Charles Darwin
Charles de Gaulle
Christopher Columbus
Cleopatra
Coco Chanel
Cristiano Ronaldo
Dalai Lama
David Beckham
Desmond Tutu
Donald Trump
Elon Musk
Elvis Presley
Emile Zatopek
Emmeline Pankhurst
Ernest Hemingway
Eva Peron
Fidel Castro
Florence Nightingale
Franklin D. Roosevelt
George Clooney
George Orwell
Grace Kelly
Greta Thunberg
Haile Selassie
Henry Ford
Indira Gandhi
Ingrid Bergman
J.K.Rowling
J.R.R. Tolkien
Jacqueline Kennedy Onassis
Jawaharlal Nehru
Jesse Owens
Jimmy Wales
Joe Biden
John F. Kennedy
John Lennon
John M Keynes
Jon Stewart
Joseph Stalin
Julie Andrews
Katherine Hepburn
Kim Kardashian
Kylie Minogue
Lance Armstrong
Lech Walesa
Leonardo da Vinci
Leo Tolstoy
Lionel Messi
Lord Baden Powell
Louis Pasteur
Ludwig Beethoven
Lyndon Johnson
Madonna
Mahatma Gandhi
Malala Yousafzai
Malcolm X
Mao Zedong
Margaret Thatcher
Marie Antoinette
Marie Curie
Marilyn Monroe
Martin Luther King
Mary Magdalene
Mata Hari
Michael Jackson
Michael Jordon
Mikhail Gorbachev
Mother Teresa
Muhammad Ali
Neil Armstrong
Nelson Mandela
Oprah Winfrey
Oscar Wilde
Pablo Picasso
Paul Krugman
Paul McCartney
Pele
Peter Sellers
Plato
Pope Francis
Pope John Paul II
Prince Charles
Queen Elizabeth II
Queen Victoria
Richard Branson
Roger Federer
Roman Abramovich
Ronald Reagan
Rosa Parks
Rupert Murdoch
Sacha Baron Cohen
Shakira
Sigmund Freud
Simon Bolivar
Stephen Hawking
Stephen King
Steve Jobs
Sting
Thomas Edison
Tiger Woods
Tim Berners Lee
Tom Cruise
Usain Bolt
Vincent Van Gogh
Vladimir Lenin
Vladimir Putin
Walt Disney
Winston Churchill
Woodrow Wilson
Wright Brothers Orville
+1
View File
@@ -0,0 +1 @@
Apple␍Apricot␍Avocado␍Banana␍Bilberry␍Blackberry␍Blackcurrant␍Blueberry␍Boysenberry␍Currant␍Cherry␍Cherimoya␍Chico fruit␍Cloudberry␍Coconut␍Cranberry␍Cucumber␍Custard apple␍Damson␍Date␍Dragonfruit␍Durian␍Elderberry␍Feijoa␍Fig␍Goji berry␍Gooseberry␍Grape␍Raisin␍Grapefruit␍Guava␍Honeyberry␍Huckleberry␍Jabuticaba␍Jackfruit␍Jambul␍Jujube␍Juniper berry␍Kiwano␍Kiwifruit␍Kumquat␍Lemon␍Lime␍Loquat␍Longan␍Lychee␍Mango␍Mangosteen␍Marionberry␍Melon␍Cantaloupe␍Honeydew␍Watermelon␍Miracle fruit␍Mulberry␍Nectarine␍Nance␍Olive␍Orange␍Blood orange␍Clementine␍Mandarine␍Tangerine␍Papaya␍Passionfruit␍Peach␍Pear␍Persimmon␍Physalis␍Plantain␍Plum␍Prune␍Pineapple␍Plumcot␍Pomegranate␍Pomelo␍Purple mangosteen␍Quince␍Raspberry␍Salmonberry␍Rambutan␍Redcurrant␍Salal berry␍Salak␍Satsuma␍Soursop␍Star fruit␍Solanum quitoense␍Strawberry␍Tamarillo␍Tamarind␍Ugli fruit␍Yuzu
+20
View File
@@ -0,0 +1,20 @@
Sofa
Dining Table
Bed
Chair
Bookshelf
Coffee Table
Dresser
Desk
TV Stand
Nightstand
Cabinet
Ottoman
Recliner
Wardrobe
End Table
Accent Chair
Loveseat
Futon
Buffet
Bar Stool
+59
View File
@@ -0,0 +1,59 @@
Ant-Man
Aquaman
Asterix
The Atom
The Avengers
Batgirl
Batman
Batwoman
Black Canary
Black Panther
Captain America
Captain Marvel
Catwoman
Conan the Barbarian
Daredevil
The Defenders
Doc Savage
Doctor Strange
Elektra
Fantastic Four
Ghost Rider
Green Arrow
Green Lantern
Guardians of the Galaxy
Hawkeye
Hellboy
Incredible Hulk
Iron Fist
Iron Man
Marvelman
Robin
The Rocketeer
The Shadow
Spider-Man
Sub-Mariner
Supergirl
Superman
Teenage Mutant Ninja Turtles
Thor
The Wasp
Watchmen
Wolverine
Wonder Woman
X-Men
Zatanna
Zatara
Black Adam
Catwoman
Deadshot
Deadpool
Venom
Thanos
Red Hood
The Comedian
John Constantine
Lobo
Amanda Waller
Wild Dog
Harley Quinn
+39
View File
@@ -0,0 +1,39 @@
New Year's
Valentine's
Easter
International Workers
Memorial
Independence
Labor
Columbus
Halloween
All Saints
All Souls
Bonfire Night
Veterans
Thanksgiving
Christmas Eve
Christmas
Boxing
New Year's Eve
Martin Luther King
Presidents'
St. Patrick's
Easter Monday
Mother's
Father's
Hanukkah
Kwanzaa
Diwali
Navaratri
Ramadaan
Eid al-Fitr
Eid al-Adha
Chinese New Year
Rosh Hashanah
Yom Kippur
Passover
Hanami
Día de los Muertos
Las Posadas
Mardi Gras
+37
View File
@@ -0,0 +1,37 @@
Anoplura
ant
bedbug
bee
beetle
Blattodea
caterpillar
centipede
Coleoptera
Coleorrhyncha
Dermaptera
Diptera
dragonfly
fly
Hemiptera
hornet
Hymenoptera
Lepidoptera
locust
Mecoptera
mosquito
moth
Neuroptera
Odonata
Orthoptera
Phasmatodea
Psocoptera
scarab
scorpion
Siphonaptera
spider
tarantula
Thysanoptera
Thysanura
Trichoptera
wasp
Zoraptera
+21
View File
@@ -0,0 +1,21 @@
anatomically correct
biologically accurate
scientifically accurate
realistically portrayed
true to life
faithfully depicted
precisely rendered
exact representation
anatomically precise
accurately depicted
realistically accurate
meticulously detailed
authentically captured
intricately designed
flawlessly represented
true to form
precisely crafted
faithfully rendered
veraciously illustrated
true to nature
impeccably portrayed
+1
View File
@@ -0,0 +1 @@
Aetherpunk␍Anthropunk␍Atompunk␍Biopunk␍Bronzepunk␍Candlepunk␍Cassettepunk␍Catholicpunk␍Clockpunk␍Cloudpunk␍Cyberpunk␍Decopunk␍Desertpunk␍Dieselpunk␍Dollpunk␍Dungeonpunk␍Ecopunk␍ElfPunk␍Flowerpunk␍Forestpunk␍Formicapunk␍Furpunk␍Futurismpunk␍Gothicpunk␍Greenpunk␍Lunarpunk␍Magicpunk␍Mesopunk␍Modempunk␍Nanopunk␍Oceanpunk␍Piratepunk␍Postcyberpunk␍Raypunk␍Rococopunk␍Silkpunk␍Solarpunk␍Steampunk␍Steelpunk␍Tidalpunk␍Yurtpunk
+22
View File
@@ -0,0 +1,22 @@
Ascended
Brackern
Celestial
Dragon
Golem
Human
Minotaur
Spirit
Titan
Troll
Undead
Yeti␍Beastfolk␍Imperial␍Nord␍Redguard␍Dwemer␍Falmer␍Giant␍Goblin␍Nymph␍Android␍Robot␍Alien
Horde
Dragon
Insectoid
Humanoid
Dragonknight
Sorcerer
Nightblade
Templar
Warden
Necromancer
+1
View File
@@ -0,0 +1 @@
Archon␍Assassin␍Bard␍Beastlord␍Beastmaster␍Berserker␍Bladedancer␍Brigand␍Bruiser␍Cabalist␍Champion␍Channeler␍Chloromancer␍Coercer␍Conjuror␍Death Knight␍Defiler␍Demon␍Dirge␍Dominator␍Druid␍Elementalist␍Fury␍Guardian␍Hunter␍Illusionist␍Inquisitor␍Justicar␍Liberator␍Mage␍Marksman␍Monk␍Mystic␍Necromancer␍Nightblade␍Paladin␍Paragon␍Priest␍Purifier␍Pyromancer␍Ranger␍Reaver␍Riftblade␍Riftstalker␍Rogue␍Saboteur␍Sentinel␍Shadowknight␍Shaman␍Stormcaller␍Swashbuckler␍Tempest␍Templar␍Troubadour␍Void Knight␍Warden␍Warlock␍Warlord␍Warrior␍Wizard
+1
View File
@@ -0,0 +1 @@
Humanoid␍Insectoid␍Reptiloind␍Avianoid␍Alienoid␍Cetaceanoid␍Arachnoid␍Androids␍Cephalopod␍Saurianoid␍Amphibianoid␍ungoid␍Zoanoid␍Mechanoid␍Molluscanoid␍Plantoid␍Aquaticoid␍Cryptid␍Echinodermoid␍Gigantoid␍Radiogenicoid␍Felinoid␍Avianoid␍Cnidarianoid␍Bipedaloid␍Batrachoid␍Saurianoid␍Therianoid␍Rodentoid␍Octopoid␍Lupoid␍Canoid␍Ursoid␍Chitinoid␍Insectiform␍Gastropodoid␍Nautiloind␍Echinoid␍Ectoplasmic␍Procyonid␍Ctenophoranoid
+1
View File
@@ -0,0 +1 @@
Abstract African art Analogue Anamorphic Anime Anthropomorphic Appropriation Architectural Art-Deco Art-Nouveau Art Deco Artisan Craft Art Nouveau Asian art Aviation Bio art Body art Burned Carbon Fiber Cartoonist Cellshading Cinematic Comical Conceptual art Constructivism Cubism Dadaism Dark Diffracted Digital Digital art Doodling Dystopian Environmental art Etching Expressionism Expressionistic Fantastical Feminist art Festive Filigree Fluorescence Folk art Fresh Futurism Gouache Graffiti art Horror Hyperrealism Illustrative Impressionism Ink Installation art Iridescent Islamic art Isometric Kinetic art Kurzgesagt Land art Latin American art Line art Luminescence Malevolent Medieval Period Melancholic Memphis Style Minimalism Museum Background Mystical Naive art Nautical Neo-Dada Neofuturist Neo Gothic New Objectivity Oil Pastel Op art Outsider art Paint Pandora Pencil Drawing Performance art Phosphorescence Photorealism Polygon Pop Art Pop Surrealism Post Apocalyptic Post Impressionism Postmodernism Primitive art Provenance Psychic Regionalism Renaissance Retro-Futurism Rough Social Realism Soft Sound art Spectral Spikey Stained Glass Street Art Surreal Synthwave Thick Thin Toasty Tribal Ukiyoe Unrealistic Vaporwave Vector Vibrant Video art Watercolor
+1
View File
@@ -0,0 +1 @@
acorn Alligator apple Arcane Assassin badger bag bag of cotton balls bag of popcorn bag of rubber bands Bald eagle ball of yarn balloon banana bananas bandana bangle bracelet bar of soap baseball baseball bat baseball hat basketball beaded bracelet beaded necklace bed beef bell belt Bison blouse blowdryer boar bonesaw book bookmark book of jokes book of matches boom box bottle bottle cap bottle of glue bottle of honey bottle of ink bottle of lotion bottle of nail polish bottle of oil bottle of paint bottle of perfume bottle of pills bottle of soda bottle of sunscreen bottle of syrup bottle of water bouquet of flowers bow bowl bow tie box box of baking soda box of chalk box of chocolates box of crayons box of markers box of Q-tips box of tissues bracelet bread broccoli brush buckle bull butter knife button camera candle candlestick candy bar candy cane candy wrapper can of beans can of chili can of peas can of whipped cream canteen canvas car Caracal card carrot carrots cars carton of ice cream cat catalogue CD cell phone cellphone cement stone centipede chain chair chalk chapter book check book cheetah chenille stick chicken chocolate Christmas ornament class ring clay pot clock clothes clothes pin cobra coffee mug coffee pot comb comic book computer conditioner container of pudding cookie jar cookie tin cork couch cow cowboy hat craft book credit card crow crowbar cucumber cup dagger Deer deodorant desk dictionary dog dolphin domino set door dove Dragon drawer drill press Dwarfs egg egg beater egg timer Elephant empty bottle empty jar empty tin can eraser extension cord eye liner face wash fake flowers feather feather duster fennec fox few batteries fish fishing hook flag flashlight floor flowers flyswatter food football fork fridge frying pan game cartridge game CD garden spade giraffe glass glasses glow stick grid paper grocery list hair brush hair clip hair pin hair ribbon hair tie hammer hamster hand bag handbasket hand fan handful of change handheld game system hand mirror hanger harmonica helmet hornet Horse house ice cream stick ice cube ice pick incense holder ipod ipod charger jaguar jar of jam jar of peanut butter jar of pickles jigsaw puzzle key keyboard keychain key chain keys kitchen knife knife Koala lace ladle lamp lamp shade laser pointer leg warmers lemon letter opener light light bulb lighter lime lion lip gloss lobster locket lotion magazine magnet magnifying glass map marble martini glass matchbook microphone milk miniature portrait mirror mobile phone model car money monitor Moose mop mouse pad mp3 player multitool music CD nail nail clippers nail filer Native Indian necktie Necromancer needle Neptunus Norsemen notebook notepad novel ocarina orange Otter outlet Owl Ox package of crisp and crunchy edibles package of glitter packet of seeds pack of cards pail paint brush paintbrush pair of binoculars pair of dice pair of earrings pair of glasses pair of handcuffs pair of knitting needles pair of rubber gloves pair of safety goggles pair of scissors pair of socks pair of sunglasses pair of tongs pair of water goggles panda pants paper paperclip pasta strainer pearl necklace pen pencil pencil holder pepper shaker perfume Phoenix phone photo album picture frame piece of gum pillow pinecone plastic fork plate plush bear plush cat plush dinosaur plush dog plush frog plush octopus plush pony plush rabbit plush unicorn pocketknife pocketwatch pool stick pop can Poseidon postage stamp puddle purse purse/bag quartz crystal quilt rabbit Racoon radio rat Red Devil remote rhino ring rock rolling pin roll of duct tape roll of gauze roll of masking tape roll of stickers roll of toilet paper Rooster rope rubber band rubber duck rubber stamp rug rusty nail safety pin sailboat salt shaker Samurai sandal sandglass sand paper scallop shell scarf scotch tape screw screwdriver seat belt shampoo shark sharpie shawl sheep sheet of paper shirt shirt button shoe lace shoes shopping bag shovel Siberian Husky sidewalk sketch pad slipper small pouch snail shell Snake snow bear snowglobe soap soccer ball socks sofa Spartan spatula speakers spectacles spice bottle sponge spool of ribbon spool of string spool of thread spool of wire spoon spring squirrel squirt gun statuette steak knife stick sticker book stick of incense sticky note stockings stop sign straw street lights sun glasses sword table Tanker tea cup tea pot teddies television tennis ball tennis racket thermometer thimble thread tiger tire swing tissue box toe ring toilet toilet paper tube tomato toothbrush toothpaste tooth pick toothpick towel toy boat toy car toy plane toy robot toy soldier toy top trash bag tree Trojan trucks tube of lip balm tube of lipstick turtle tv tweezers twister umbrella vase video games wallet Warhammer washcloth washing machine watch water water bottle wedding ring whale whip whistle white out window wine glass wireless control wishbone Wizard wolf wooden spoon word search wrench wristwatch zebra zipper
+204
View File
@@ -0,0 +1,204 @@
amaranth
arugula
beet greens
black olive
bok choy
borage greens
broccoli rabe
brussels sprout
cabbage
catsear
celery
celtuce
chaya
chickweed
chicory
chinese mallow
chrysanthemum leaves
collard greens
common purslane
corn salad
cress
dandelion
endive
fat hen
fiddlehead
fluted pumpkin
garden rocket
golden samphire
good king henry
greater plantain
kai-lan
kale
komatsuna
kuka
lagos bologi
lamb's lettuce
lamb's quarters
land cress
lettuce
lizard's tail
malabar spinach
melokhia
miner's lettuce
mizuna greens
mustard
napa cabbage
new zealand spinach
orache
pak choy
paracress
pea sprout
poke
radicchio
samphire
sea beet
sea kale
sierra leone bologi
soko
sorrel
spinach
summer purslane
swiss chard
tatsoi
turnip greens
watercress
water spinach
wheatgrass
winter purslane
yarrow
yao choy
avocado
bell pepper
bitter melon
chayote
cucumber
ivy gourd
eggplant
luffa
olive fruit
pumpkin
squash
corn
sweet pepper
tinda
tomatillo
tomato
west indian gherkin
winter melon
zucchini
artichoke
broccoli
caper
cauliflower
courgette flowers
squash blossoms
american groundnut
azuki bean
black-eyed pea
chickpea
common bean
drumstick
dolichos bean
fava bean
garbanzo
green bean
guar
horse gram
indian pea
lentil
lima bean
moth bean
mung bean
okra
pea
peanut
pigeon pea
ricebean
runner bean
snap pea
snow pea
soybean
tarwi
tepary bean
urad bean
velvet bean
winged bean
yardlong bean
asparagus
cardoon
celeriac
celery
florence fennel
kohlrabi
kurrat
lemongrass
leek
lotus root
nopal
onion
pearl onion
potato onion
prussian asparagus
spring onion
shallot
tree onion
welsh onion
wild leek
ahipa
arracacha
bamboo shoot
beetroot
burdock
broadleaf arrowhead
camas
canna
carrot
cassava
chinese artichoke
daikon
earthnut pea
elephant foot yam
ensete
galangal
jerusalem artichoke
jicama
mashua
parsnip
pignut
potato
prairie turnip
radish
rutabaga
salsify
scorzonera
skirret
swede
sweet potato
taro
tigernut
turmeric
turnip
ulluco
wasabi
water caltrop
water chestnut
yacon
yam
aonori
arame
carola
dabberlocks
dulse
hijiki
kombu
laver
mozuku
nori
ogonori
sea grape
sea lettuce
wakame
tofu
tempeh
seitan