text:
Module:sa-verb/data

-- This is a data module for Module:sa-verb.

local conj_data = {}

local sa_utils = require("Module:sa-utilities") local to_IAST = require("Module:sa-utilities/translit/SLP1-to-IAST").tr

local sub = mw.ustring.sub local gsub = mw.ustring.gsub local gasub = string.gsub -- For when byte by byte comparison is good enough. local match = mw.ustring.match local split = mw.text.split

-- Returns { form, stem } if the stem is explicity provided in the form (i.e. form = "rinakti " or form = "rincanti ") local function split_xs(form) if form == nil then return nil end local s = split(form, "<") if s[2] ~= nil then local sanitized_s2 = sub(s[2], 1, -2) return {s[1], sanitized_s2} else return {form, nil} end end

-- Splits "stem1,stem2" into { stem1, stem2 } local function split_stems(form) -- TODO: in the older system, we'd have entries where multiple stems could be supplied and show up side-by-side in the same table. -- I.e. "áricat" and "áraikṣīt" as two aorist variants of "riṇakti". The current system is to make them both separate entries altogether -- so their conjugation systems don't overlap and cause confusion. -- Older entries using the older version of this module need to be updated—right now, any extra stems that are supplied are just ignored -- Note: this doesn't affect manually provided forms, like irregular third-person singular active perfects having long/short-vowel forms return split(form, ",")[1] end

local function apply_ending(args, data, tag, stem, es, is_part) if type(es) == "string" then es = {es} end local forms = data.forms[tag] or {} local i = #forms + 1 for _, e in ipairs(es) do       local note if type(e) == "table" then note = e.note e = e[1] end -- reduce Vedic forms to zero in case of novedic parameter if args.novedic == true and note and match(note, "[vV]edic$") then stem = ""; e = ""; note = "" else args.has_accent = match(stem, sa_utils.accent) local set_stem = stem -- if 'set', add 'i' between consonants, except before 'y' (optative) if args.set == true and match(stem, sa_utils.consonant .. "$") and match(e, "^[tTDmrvshQz]") then set_stem = sa_utils.internal_sandhi({   	            stem = stem,                	ending = "i",            	    has_accent = args.has_accent,        	        non_final = true,    	            mono = args.mono,    	            accent_override = args.accent_override,    	            no_retroflex_root_s = args.no_retroflex_root_s            	}) end if args.auto_sandhi == true then forms[i] = sa_utils.internal_sandhi({               	stem = set_stem,            	    ending = e,					has_accent = args.has_accent,                	non_final = is_part,            	    mono = args.mono,        	        j_to_z = args.j_to_z,                	h_to_g = args.h_to_g,					diaspirate = args.diaspirate,					no_syncope = args.no_syncope,					accent_override = args.accent_override,					no_retroflex_root_s = args.no_retroflex_root_s -- for roots 'pis'/'niṃs'/'hiṃs' and 'tresus' (from 'tras')            	}) else forms[i] = set_stem .. e       	end -- Apply special tagging, currently just Ⓛ. forms[i] = gasub(forms[i],				"a("..sa_utils.accent.."?)("..sa_utils.consonant.."a)Ⓛ", "A%1%2") forms[i] = gasub(forms[i], "Ⓛ", "") -- Clean up. if note then forms["note" .. i] = note end i = i + 1 end end data.forms[tag] = forms end

local function make_forms(args, data, stem, forms) for mood, mood_forms in pairs(forms) do   	if args.tense == "nonf" then local tag = mood apply_ending(args, data, tag, stem, mood_forms, false) else for voice, voice_forms in pairs(mood_forms) do	           if mood == "part" then local tag = mood .. "_" .. voice apply_ending(args, data, tag, stem, voice_forms, true) else for person_number, es in pairs(voice_forms) do local tag = mood .. "_" .. voice .. "_" .. person_number apply_ending(args, data, tag, stem, es, false) end end end end end end

local function validate(stem, lemma) if stem == nil then error("could not detect stem from " .. to_IAST(lemma) .. "; set args.o to fill in values manually") end end

local function detect(t, lemma, match_pattern, oxy_match_pattern, strong) local prefix = "weak_" if strong then prefix = "strong_" end

if not t[prefix .. "did_lemma"] then lemma = split_stems(lemma) local splitted = split_xs(lemma) if splitted == nil then return nil end t[prefix .. "3s"] = splitted[1]

t[prefix .. "stem"] = splitted[2] t[prefix .. "oxy"] = "" t[prefix .. "did_lemma"] = true end

local detected_stem = match(t[prefix .. "3s"], match_pattern) if detected_stem ~= nil then if oxy_match_pattern ~= nil then t[prefix .. "oxy"] = match(t[prefix .. "3s"], oxy_match_pattern) end if t[prefix .. "stem"] == nil then t[prefix .. "stem"] = detected_stem end return true end return false end

local function detect_strong(t, lemma, match_pattern, oxy_match_pattern) return detect(t, lemma, match_pattern, oxy_match_pattern, true) end

local function detect_weak(t, lemma, match_pattern, oxy_match_pattern) return detect(t, lemma, match_pattern, oxy_match_pattern, false) end

local function use_strong_for_weak(t, weak_lemma) if weak_lemma ~= nil then return false end t["weak_stem"] = t["strong_stem"] t["weak_oxy"] = t["strong_oxy"] return true end

-- Only for verbs with 3p on -ati, override with 'class=' parameter. -- Does not detect 'iyāy' and 'alar' (Whitney §1002e). local function detect_intensive(args, t)	-- anchoring detection pattern at the end to allow for prefixes if match(t.strong_stem, sa_utils.consonant.."a/?[nrlv][iI]"..sa_utils.consonant.."+"..sa_utils.vowel.."M?"..sa_utils.consonant.."*$") then if match(t.strong_stem, "vivy?"..sa_utils.vowel..sa_utils.consonant.."$") then -- prefixed class 3 verb like 'upaviveṣṭi' return false else -- dissyllabic reduplication return true end elseif match(t.strong_stem, sa_utils.consonant.."[Aeo]/?"..sa_utils.consonant.."+"..sa_utils.vowel_with_accent.."M?"..sa_utils.consonant.."*$") or match(t.strong_stem, sa_utils.consonant.."a/?[rlNYRnmMd]"..sa_utils.consonant.."+[aiufx]M?"..sa_utils.consonant.."*$") -- avoiding 'saṃśās' or args.class == "int" then t["intensive"] = "1" return true end end

conj_data["pres"] = {} setmetatable(conj_data["pres"], {   __call = function (self, args, data)        local make_thematic_forms = function (oxy)            return {                ["indic"] = {                    ["av"] = {                        ["1_s"] = "A" .. oxy .. "mi",                        ["2_s"] = "a" .. oxy .. "si",                        ["3_s"] = "a" .. oxy .. "ti",                        ["1_d"] = "A" .. oxy .. "vas",                        ["2_d"] = "a" .. oxy .. "Tas",                        ["3_d"] = "a" .. oxy .. "tas",                        ["1_p"] = "A" .. oxy .. "mas",                        ["2_p"] = "a" .. oxy .. "Ta",                        ["3_p"] = "a" .. oxy .. "nti"                    },                    ["mv"] = {                        ["1_s"] = "e" .. oxy .. "",                        ["2_s"] = "a" .. oxy .. "se",                        ["3_s"] = "a" .. oxy .. "te", ["1_d"] = "A" .. oxy .. "vahe", ["2_d"] = "e" .. oxy .. "Te", ["3_d"] = "e" .. oxy .. "te", ["1_p"] = "A" .. oxy .. "mahe", ["2_p"] = "a" .. oxy .. "Dve", ["3_p"] = "a" .. oxy .. "nte" }               },                ["imper"] = { ["av"] = { ["1_s"] = "A" .. oxy .. "ni", --                       ["2_s"] = {"a" .. oxy, "a" .. oxy .. "tAt"}, ["2_s"] = "a" .. oxy, ["3_s"] = "a" .. oxy .. "tu", ["1_d"] = "A" .. oxy .. "va", ["2_d"] = "a" .. oxy .. "tam", ["3_d"] = "a" .. oxy .. "tAm", ["1_p"] = "A" .. oxy .. "ma", ["2_p"] = "a" .. oxy .. "ta", ["3_p"] = "a" .. oxy .. "ntu" },                   ["mv"] = { ["1_s"] = "E" .. oxy .. "",                       ["2_s"] = "a" .. oxy .. "sva", ["3_s"] = "a" .. oxy .. "tAm", ["1_d"] = "A" .. oxy .. "vahE", ["2_d"] = "e" .. oxy .. "TAm", ["3_d"] = "e" .. oxy .. "tAm", ["1_p"] = "A" .. oxy .. "mahE", ["2_p"] = "a" .. oxy .. "Dvam", ["3_p"] = "a" .. oxy .. "ntAm" },               },                ["optat"] = { ["av"] = { ["1_s"] = "e" .. oxy .. "yam", ["2_s"] = "e" .. oxy .. "s", ["3_s"] = "e" .. oxy .. "t", ["1_d"] = "e" .. oxy .. "va", ["2_d"] = "e" .. oxy .. "tam", ["3_d"] = "e" .. oxy .. "tAm", ["1_p"] = "e" .. oxy .. "ma", ["2_p"] = "e" .. oxy .. "ta", ["3_p"] = "e" .. oxy .. "yus" },                   ["mv"] = { ["1_s"] = "e" .. oxy .. "ya", ["2_s"] = "e" .. oxy .. "TAs", ["3_s"] = "e" .. oxy .. "ta", ["1_d"] = "e" .. oxy .. "vahi", ["2_d"] = "e" .. oxy .. "yATAm", ["3_d"] = "e" .. oxy .. "yAtAm", ["1_p"] = "e" .. oxy .. "mahi", ["2_p"] = "e" .. oxy .. "Dvam", ["3_p"] = "e" .. oxy .. "ran" },               },                ["part"] = { ["av"] = "a" .. oxy .. "t", ["mv"] = "a" .. oxy .. "mAna" }           }        end

local make_athematic_strong_forms_cons = function return { ["indic"] = { ["av"] = { ["1_s"] = "mi", ["2_s"] = "si", ["3_s"] = "ti", },               },                ["imper"] = { ["av"] = { ["3_s"] = "tu", }               }            }        end local make_athematic_strong_forms_vow = function return { ["imper"] = { ["av"] = { ["1_s"] = "Ani", ["1_d"] = "Ava", ["1_p"] = "Ama", },                   ["mv"] = { ["1_s"] = "E", ["1_d"] = "AvahE", ["1_p"] = "AmahE", }               }            }		end local make_athematic_weak_forms_cons = function (oxy) -- endings starting with consonant not m/v/y return { ["indic"] = { ["av"] = { ["2_d"] = "Ta" .. oxy .. "s", ["3_d"] = "ta" .. oxy .. "s", ["2_p"] = "Ta" .. oxy, },                   ["mv"] = { ["2_s"] = "se" .. oxy, ["3_s"] = "te" .. oxy, ["2_p"] = "Dve" .. oxy, }               },                ["imper"] = { ["av"] = { --                       ["2_s"] = {"Di" .. oxy, "tA" .. oxy .. "t"}, ["2_d"] = "ta" .. oxy .. "m", ["3_d"] = "tA" .. oxy .. "m", ["2_p"] = "ta" .. oxy .. "",                   },                    ["mv"] = { ["2_s"] = "sva" .. oxy, ["3_s"] = "tA" .. oxy .. "m", ["2_p"] = "Dva" .. oxy .. "m", }               }            }        end local make_athematic_weak_forms_mvy = function (oxy) -- endings starting with m/v/y return { ["indic"] = { ["av"] = { ["1_d"] = "va" .. oxy .. "s", ["1_p"] = "ma" .. oxy .. "s", },                   ["mv"] = { ["1_d"] = "va" .. oxy .. "he", ["1_p"] = "ma" .. oxy .. "he", }               },                ["optat"] = { ["av"] = { ["1_s"] = "yA" .. oxy .. "m", ["2_s"] = "yA" .. oxy .. "s", ["3_s"] = "yA" .. oxy .. "t", ["1_d"] = "yA" .. oxy .. "va", ["2_d"] = "yA" .. oxy .. "tam", ["3_d"] = "yA" .. oxy .. "tAm", ["1_p"] = "yA" .. oxy .. "ma", ["2_p"] = "yA" .. oxy .. "ta", ["3_p"] = "yu" .. oxy .. "s" }               }            }        end local make_athematic_weak_forms_vow = function (oxy) -- endings starting with vowels return { ["indic"] = { ["av"] = { ["3_p"] = "a" .. oxy .. "nti" },                   ["mv"] = { ["1_s"] = "e" .. oxy, ["2_d"] = "A" .. oxy .. "Te", ["3_d"] = "A" .. oxy .. "te", ["3_p"] = "a" .. oxy .. "te" }               },                ["imper"] = { ["av"] = { ["3_p"] = "a" .. oxy .. "ntu" },                   ["mv"] = { ["2_d"] = "A" .. oxy .. "TAm", ["3_d"] = "A" .. oxy .. "tAm", ["3_p"] = "a" .. oxy .. "tAm" }               },                ["optat"] = { ["mv"] = { ["1_s"] = "Iya" .. oxy, ["2_s"] = "ITA" .. oxy .. "s", ["3_s"] = "Ita" .. oxy, ["1_d"] = "Iva" .. oxy .. "hi", ["2_d"] = "IyA" .. oxy .. "TAm", ["3_d"] = "IyA" .. oxy .. "tAm", ["1_p"] = "Ima" .. oxy .. "hi", ["2_p"] = "IDva" .. oxy .. "m", ["3_p"] = "Ira" .. oxy .. "n" }               },                ["part"] = { ["av"] = "a" .. oxy .. "t", ["mv"] = "Ana" .. oxy, }           }        end local make_athematic_class_3_forms_vow = function -- endings starting with vowel for class 3 (no oxy) return { ["indic"] = { ["av"] = { ["3_p"] = "ati" },                   ["mv"] = { ["1_s"] = "e", ["2_d"] = "ATe", ["3_d"] = "Ate", ["3_p"] = "ate" }               },                ["imper"] = { ["av"] = { ["3_p"] = "atu" },                   ["mv"] = { ["2_d"] = "ATAm", ["3_d"] = "AtAm", ["3_p"] = "atAm" }               },                ["optat"] = { ["mv"] = { ["1_s"] = "Iya", ["2_s"] = "ITAs", ["3_s"] = "Ita", ["1_d"] = "Ivahi", ["2_d"] = "IyATAm", ["3_d"] = "IyAtAm", ["1_p"] = "Imahi", ["2_p"] = "IDvam", ["3_p"] = "Iran" }               },                ["part"] = { ["av"] = "at", ["mv"] = "Ana", }       	}        end local make_extra_class_5_8_forms = function(oxy) return { ["indic"] = { ["av"] = { ["1_d"] = "va" .. oxy .. "s", ["1_p"] = "ma" .. oxy .. "s", },          			["mv"] = { ["1_d"] = "va" .. oxy .. "he", ["1_p"] = "ma" .. oxy .. "he", }          		},           		["imper"] = { ["av"] = { ["2_s"] = {"u" .. oxy, {"uhi" .. oxy, note = "Vedic"}} }              	}           	}        end local make_intensive_weak_forms_extra = function -- not in case of dissyllabic reduplication (Whitney §1007a) return { ["indic"] = { ["av"] = { ["1_s"] = "Imi", ["2_s"] = "Izi", ["3_s"] = "Iti", }              	},                ["imper"] = { ["av"] = { ["3_s"] = "Itu", }               }            	}        end local make_athematic_imper_2s_Di = function(oxy) return { ["imper"] = { ["av"] = { ["2_s"] = "Di" .. oxy }               }			}		end local make_athematic_imper_2s_hi = function(oxy) return { ["imper"] = { ["av"] = { ["2_s"] = "hi" .. oxy }               }			}		end local make_class_9_cons_imper_2s = function(oxy) return { ["imper"] = { ["av"] = { ["2_s"] = "Ana" .. oxy }               }			}		end local t = {} local is_thematic = args.weak_lemma == nil if is_thematic then if not detect_strong(t, args.strong_lemma, "(.+)a" .. sa_utils.accent .. "?ti$", "a(" .. sa_utils.accent .. "?)ti$") then if not detect_strong(t, args.strong_lemma, "(.+)a" .. sa_utils.accent .. "?te$", "a(" .. sa_utils.accent .. "?)te$") then validate(t["strong_stem"], args.strong_lemma) else args.n = "m" -- deponent end end make_forms(args, data, t["strong_stem"], make_thematic_forms(t["strong_oxy"])) -- class 10 (Whitney §1043f) if (args.class == "10" or not args.class) and match(t.strong_stem, sa_utils.vowel           	.."M?"..sa_utils.consonant.."+a" .. sa_utils.accent .. "?y$") then args.accent_override = true make_forms(args, data, t["strong_stem"], {					["part"] = {						["mv"] = ,					}       		}) end -- active athematic verbs elseif detect_strong(t, args.strong_lemma, "(.+)[tDwQ]i$") or match(args.strong_lemma, "^<.+>$") then if not detect_weak(t, args.weak_lemma, "(.+)a" .. sa_utils.accent .. "?nti$", "a(" .. sa_utils.accent .. "?)nti$") then if not detect_weak(t, args.weak_lemma, "(.+A)" .. sa_utils.accent .. "?nti$", "A(" .. sa_utils.accent .. "?)nti$") then if not detect_weak(t, args.weak_lemma, "(.+)ati$", sa_utils.vowel .. "(" .. sa_utils.accent .. "?).+ati$") then validate(t["weak_stem"], args.weak_lemma) else t.ati_3p = true end end end -- if no strong stem supplied, check weak stem in case of possible sandhi if match(args.strong_lemma, "[ktp]ti$")	then t.strong_stem = gasub(t.strong_stem, ".$", gasub(t.weak_stem, ".+(.)$", "%1")) -- if 3s ends on -dhi/-ṭi elseif match(args.strong_lemma, "[Dw]i$") then if match(t.weak_stem, "kz$") then t.strong_stem = gasub(t.strong_stem, "z$", "kz") else t.strong_stem = gasub(t.strong_stem, ".$", gasub(t.weak_stem, ".+(.)$", "%1")) if match(t.strong_stem, "h$") then args.h_to_g = true elseif match(t.strong_stem, "j$") then args.j_to_z = true end end -- if 3s ends on -ḍhi elseif match(args.strong_lemma, "Qi$") then t.strong_stem = gasub(t.strong_stem, "^(.*)$", "%1h") -- error for roots on -i/ī/u/ū when no weak stem provided elseif match(args.weak_lemma, sa_utils.consonant.."i?ya/?n?ti$") or ( match(args.weak_lemma, "uva/?n?ti$") and not match(t.strong_stem, "[nR]o/?")) then error("Please add weak stem for roots on -i/-ī and -u/-ū.") end make_forms(args, data, t["strong_stem"], make_athematic_strong_forms_cons) if t.ati_3p == true and match (t.strong_stem, "I$") then -- assuming 3s on -īti is intensive (as a normal class 3 root on -ī would have -eti) args.n = "a" make_forms(args, data, t["weak_stem"], make_athematic_strong_forms_vow) -- using weak stem with (normally) strong endings elseif t.ati_3p == true and (args.class == "int" or not args.class) and detect_intensive(args, t) then -- intensive verbs args.n = "a"	-- no middle (maybe add middle participle?) make_forms(args, data, t["weak_stem"], make_athematic_strong_forms_vow) if t.intensive == "1" then	-- no dissyllabic reduplication if match(t.strong_stem, sa_utils.vowel_with_accent.."$") then -- Whitney §1004a make_forms(args, data, t["strong_stem"], make_intensive_weak_forms_extra) else make_forms(args, data, t["weak_stem"], make_intensive_weak_forms_extra) end end else if match(t.strong_stem, "O/?$") and match(t.weak_stem, "u$") then -- Whitney §626 t.strong_stem = gasub(t.strong_stem, "O(/?)$", "a%1v") elseif match(t.strong_stem, "a/?vI$") and match(t.weak_stem, "[uU]v?$") then -- e.g. 'brū', see Whitney §632-3 t.strong_stem = gasub(t.strong_stem, "I$", "") elseif match(t.strong_stem, "i$") and match(t.weak_stem, "[^iy]$") then -- for 'set' verbs (Whitney §631) t.strong_stem = gasub(t.strong_stem, "i$", "") end make_forms(args, data, t["strong_stem"], make_athematic_strong_forms_vow) end if match(args.weak_lemma, "ati$") then -- if 3p on -ati and no weak stem provided args.accent_override = true -- for class 5/8 verbs on vowel + -noti elseif match(t.strong_stem, sa_utils.vowel .. "[nR]o/?$") then t.temp_stem = gasub(t.strong_stem, "o/?$", "") make_forms(args, data, t["temp_stem"], make_extra_class_5_8_forms(t["weak_oxy"])) -- includes active imper. 2s t.imper_2s_created = true -- for verbs like āpnoti elseif match(t.strong_stem, sa_utils.consonant .. "[nR]o/?$") then args.no_syncope = true t.weak_stem = gasub(t.weak_stem, "uv$", "u") -- class 9 elseif match(t.strong_stem, "[nR]A/?$") and match(t.weak_stem, "[nR]$") then t.weak_stem = gasub(t.weak_stem, "^.*$", "%1I") end if t.imper_2s_created == true then -- do nothing elseif match(t.weak_stem, sa_utils.consonant .."[nR]I$") then -- Whitney §722 t.temp_stem = gasub(t.weak_stem, "[nR]I$", "") make_forms(args, data, t["temp_stem"], make_class_9_cons_imper_2s(t["weak_oxy"])) elseif match(t.weak_stem, sa_utils.vowel .. "$") or match(t.weak_stem, sa_utils.consonant.."[yrv]$") or match(t.weak_stem, "^y$") then make_forms(args, data, t["weak_stem"], make_athematic_imper_2s_hi(t["weak_oxy"])) else make_forms(args, data, t["weak_stem"], make_athematic_imper_2s_Di(t["weak_oxy"])) end make_forms(args, data, t["weak_stem"], make_athematic_weak_forms_cons(t["weak_oxy"])) if args.extra_1p_stem then -- optional extra stem for endings starting with m/v/y t.weak_stem = args.extra_1p_stem end make_forms(args, data, t["weak_stem"], make_athematic_weak_forms_mvy(t["weak_oxy"])) if match(args.weak_lemma, ".<.*>$") then t.weak_stem = gasub(args.weak_lemma, "a?" .. sa_utils.accent .. "?n?ti<.*>$", "") elseif args.extra_1p_stem or match(t.weak_stem, "[nR]I$") then t.weak_stem = gasub(args.weak_lemma, "a?" .. sa_utils.accent .. "?nti$", "") end if t.ati_3p == true then args.accent_override = false make_forms(args, data, t["weak_stem"], make_athematic_class_3_forms_vow) else make_forms(args, data, t["weak_stem"], make_athematic_weak_forms_vow(t["weak_oxy"])) end -- deponent verbs elseif detect_strong(t, args.strong_lemma, "(.+)[tDwQ]e/?$", "[tDwQ]e(/?)$") then args.n = "m" -- deponent if not detect_weak(t, args.weak_lemma, "(.+"..sa_utils.accent..".+)ate$", sa_utils.vowel.."("..sa_utils.accent..").+ate$") then if not detect_weak(t, args.weak_lemma, "(.+)a"..sa_utils.accent.."?te$", "a("..sa_utils.accent.."?)te$") then if not detect_weak(t, args.weak_lemma, "(.+A/?)te$") then validate(t["weak_stem"], args.weak_lemma) end end elseif t.strong_oxy ~= "" then t.accented_class_3 = true end -- for class 5/8 verbs on vowel + -nute (+ tarute) -- adding '-no' for detection as this might be the strong stem supplied to form 1st person imperative if match(t.strong_stem, sa_utils.vowel .. "[nRr][uo]/?$") and (not args.class or match(args.class, "^[58]$")) and not args.extra_1p_stem then t.temp_stem = gasub(t.strong_stem, "[uo]/?$", "") make_forms(args, data, t["temp_stem"], make_extra_class_5_8_forms(t["weak_oxy"])) -- for verbs like āpnoti, but middle (the regex also includes hnute, but this is ok) elseif match(t.strong_stem, sa_utils.consonant .. "[nR][uo]/?$") then args.no_syncope = true end -- produce 1st person imperative if strong stem is supplied with 3sg if match(args.strong_lemma, "<.*>$") then make_forms(args, data, t["strong_stem"], make_athematic_strong_forms_vow) -- or if root has 'a/ā' (when guṇa would be the same), -- and not accented class 3 (accent on strong stem unpredictable) or potentially class 7 elseif match(t.strong_stem, "[aA]"..sa_utils.accent.."?"..sa_utils.consonant.."*$") and not t.accented_class_3 == true and not match(t.strong_stem, "[NYRnm]"..sa_utils.consonant.."$") then -- look at 3p to avoid possible sandhi before 3s -te t.strong_stem = gasub(t.weak_stem, "([aA])("..sa_utils.consonant.."*)$", "%1"..t.strong_oxy.."%2") make_forms(args, data, t["strong_stem"], make_athematic_strong_forms_vow) -- or if stem ends on -[nṇ]u (including hnu/snu is ok) elseif match(t.strong_stem, "[nR]u$") then t.strong_stem = gasub(t.strong_stem, "u$", "o"..t.strong_oxy) make_forms(args, data, t["strong_stem"], make_athematic_strong_forms_vow) -- or class 9 elseif match(t.strong_stem, "[nR]I$") and match(t.weak_stem, "[nR]$") then t.strong_stem = gasub(t.strong_stem, "I$", "A"..t.strong_oxy) make_forms(args, data, t["strong_stem"], make_athematic_strong_forms_vow) end if match(args.strong_lemma, sa_utils.vowel_with_accent .. "te/?$") then t.weak_stem_before_cons = gasub(args.strong_lemma, "te/?$", "") elseif match(args.strong_lemma, sa_utils.vowel_with_accent .. "te/?<.*>$") then t.weak_stem_before_cons = gasub(args.strong_lemma, "te/?<.*>$", "") else t.weak_stem_before_cons = t.weak_stem end if t.accented_class_3 == true then args.accent_override = true -- no accent on class 3 stem if ending starts with consonant end make_forms(args, data, t["weak_stem_before_cons"], make_athematic_weak_forms_cons(t["strong_oxy"])) if args.extra_1p_stem then t.weak_stem_before_cons = args.extra_1p_stem end make_forms(args, data, t["weak_stem_before_cons"], make_athematic_weak_forms_mvy(t["strong_oxy"])) if match(args.weak_lemma, ".<.*>$") then t.weak_stem = gasub(args.weak_lemma, "a?" .. sa_utils.accent .. "?te<.*>$", "") end if t.accented_class_3 == true then args.accent_override = false make_forms(args, data, t["weak_stem"], make_athematic_class_3_forms_vow) else make_forms(args, data, t["weak_stem"], make_athematic_weak_forms_vow(t["weak_oxy"])) end else validate(t["strong_stem"], args.strong_lemma) end end })

conj_data["impf"] = {} setmetatable(conj_data["impf"], {   __call = function (self, args, data)    	-- accent for augmentless forms    	local make_thematic_impf_forms = function(oxy)     		return {               	["indic"] = {                   	["av"] = {                       	["1_s"] = "a" .. oxy .. "m",                       	["2_s"] = "a" .. oxy .. "s",               	        ["3_s"] = "a" .. oxy .. "t",                   	    ["1_d"] = "A" .. oxy .. "va",                       	["2_d"] = "a" .. oxy .. "tam",                        ["3_d"] = "a" .. oxy .. "tAm",               	        ["1_p"] = "A" .. oxy .. "ma",                   	    ["2_p"] = "a" .. oxy .. "ta",                       	["3_p"] = "a" .. oxy .. "nt"                   	},                   	["mv"] = {                       	["1_s"] = "e" .. oxy,                       	["2_s"] = "a" .. oxy .. "TAs",                       	["3_s"] = "a" .. oxy .. "ta", ["1_d"] = "A" .. oxy .. "vahi", ["2_d"] = "e" .. oxy .. "TAm", ["3_d"] = "e" .. oxy .. "tAm", ["1_p"] = "A" .. oxy .. "mahi", ["2_p"] = "a" .. oxy .. "Dvam", ["3_p"] = "a" .. oxy .. "nta" },              	}            }    	end local athematic_impf_strong_endings_cons = { ["indic"] = { ["av"] = { ["2_s"] = "s", ["3_s"] = "t", },           },        }    	local athematic_impf_strong_endings_vow = { ["indic"] = { ["av"] = { ["1_s"] = "am", },           },        }    	-- accent for augmentless forms local make_athematic_impf_weak_forms_cons = function(oxy) -- endings starting with consonants not m/v/y return { ["indic"] = { ["av"] = { ["2_d"] = "ta" .. oxy .. "m", ["3_d"] = "tA" .. oxy .. "m", ["2_p"] = "ta" .. oxy, },   	            ["mv"] = { ["2_s"] = "TA" .. oxy .. "s", ["3_s"] = "ta" .. oxy, ["2_p"] = "Dva" .. oxy .. "m", }           	}        	}    	end local make_athematic_impf_weak_forms_mvy = function(oxy) -- endings starting with m/v/y return { ["indic"] = { ["av"] = { ["1_d"] = "va" .. oxy, ["1_p"] = "ma" .. oxy, },   	            ["mv"] = { ["1_d"] = "va" .. oxy .. "hi", ["1_p"] = "ma" .. oxy .. "hi", }           	}        	}    	end local make_athematic_impf_weak_forms_vow = function(oxy) -- endings starting with vowels (without active 3p) return { ["indic"] = { ["av"] = { --                   	["3_p"] = "a" .. oxy .. "n", },   	            ["mv"] = { ["1_s"] = "i" .. oxy, ["2_d"] = "A" .. oxy .. "TAm", ["3_d"] = "A" .. oxy .. "tAm", ["3_p"] = "a" .. oxy .. "ta" }           	}        	}    	end local make_athematic_impf_3p_an = function(oxy) return { ["indic"] = { ["av"] = { ["3_p"] = "a" .. oxy .. "n" }       		}        	}    	end local make_athematic_impf_3p_us = function(oxy) return { ["indic"] = { ["av"] = { ["3_p"] = "u" .. oxy .. "s" }       		}        	}    	end local intensive_impf_weak_endings_extra = { ["indic"] = { ["av"] = { ["2_s"] = "Is", ["3_s"] = "It", },           },        }    	local t = {} local is_thematic = args.weak_lemma == nil if is_thematic then if not detect_strong(t, args.strong_lemma, "(.+)a/?t$", "a(/?)t$") then if not detect_strong(t, args.strong_lemma, "(.+)a/?ta$", "a(/?)ta$") then validate(t["strong_stem"], args.strong_lemma) else args.n = "m" -- deponent end end make_forms(args, data, t["strong_stem"], make_thematic_impf_forms(t["strong_oxy"])) -- active verbs elseif detect_strong(t, args.strong_lemma, "(.*" .. sa_utils.vowel_with_accent .. ")t$") or detect_strong(t, args.strong_lemma, "(.+[kNwRtnprlsH])$") or match(args.strong_lemma, "^<.+>$") then if not detect_weak(t, args.weak_lemma, "(.+)a/?n$", "a(/?)n$") then if not detect_weak(t, args.weak_lemma, "(.+A)/?n$", "A(/?)n$") then if not detect_weak(t, args.weak_lemma, "(.+)u[Hs]$") then validate(t["weak_stem"], args.weak_lemma) else t.us_3p = true end end end -- look at weak stem if 3s '-t' disappeared and no strong stem is supplied if match(args.strong_lemma, "[kwpH]$") then if args.diaspirate == true then t.strong_stem = gasub(t.strong_stem, "([GDB])(.+)$", function(cons, post) return sa_utils.deaspirate[cons] .. post end) end if match(args.strong_lemma, "k$") then t.strong_stem = gasub(t.strong_stem, ".$", gasub(t.weak_stem, ".+(.)$", "%1")) if match(t.strong_stem, "h$") then args.h_to_g = true end elseif match(t.weak_stem, "kz$") then t.strong_stem = gasub(t.strong_stem, ".$", "kz") else t.strong_stem = gasub(t.strong_stem, ".$", gasub(t.weak_stem, ".+(.)$", "%1")) if match(t.strong_stem, "j$") then args.j_to_z = true elseif match(t.strong_stem, "f$") then t.strong_stem = gasub(t.strong_stem, ".$", "r") end end elseif match(t.weak_stem, "[tTdD]$") and match(args.strong_lemma, "[^tTdD]" .. sa_utils.vowel_with_accent.."t$") then t.strong_stem = gasub(t.strong_stem, "^(.+)$", "%1" .. gasub(t.weak_stem, ".+(.)$", "%1")) -- error for roots on -i/ī/u/ū when no weak stem provided elseif match(args.weak_lemma, sa_utils.consonant.."i?ya/?n$") or ( match(args.weak_lemma, "uva/?n$") and not match(t.strong_stem, "[nR]o/?")) then error("Please add weak stem for roots on -i/-ī and -u/-ū.") end -- intensive verbs if t.us_3p == true and match(t.strong_stem, "I$") then -- assuming 3s on -īt is intensive (as a normal class 3 root on -ī would have -et) args.n = "a" make_forms(args, data, t["weak_stem"], athematic_impf_strong_endings_vow) -- using weak stem with (normally) strong ending elseif t.us_3p == true and (args.class == "int" or not args.class) and detect_intensive(args, t) then args.n = "a" -- no middle make_forms(args, data, t["weak_stem"], athematic_impf_strong_endings_vow) else -- non-intensive if match(args.strong_lemma, "O/?t$") and match(t.weak_stem, "u$") then -- Whitney §626 t.strong_stem_before_vow = gasub(t.strong_stem, "O(/?)$", "a%1v") -- verbs with inserted 'ī' in 2/3 sg., see Whitney §631-3 (roots on -ī should have -e in strong stem) elseif match(args.strong_lemma, "It$") then t.strong_stem_before_vow = gasub(t.strong_stem, "I$", "") else t.strong_stem_before_vow = t.strong_stem end make_forms(args, data, t["strong_stem_before_vow"], athematic_impf_strong_endings_vow) end -- use 3s form for 2s and 3s (if appropriate) local syllable = sa_utils.vowel_with_accent..sa_utils.consonant.."+" if match(args.strong_lemma, "^"..syllable..sa_utils.vowel_with_accent   		.."t<"..syllable..sa_utils.vowel_with_accent.."[tTdD]>$") or match(args.strong_lemma, "^"..syllable..syllable..sa_utils.vowel_with_accent.."t<"   		..syllable..syllable..sa_utils.vowel_with_accent.."[tTdD]>$") then -- do nothing elseif match(args.strong_lemma, sa_utils.vowel_with_accent.."t<.+>$") then t.strong_stem = gasub(args.strong_lemma, "t<.+>$", "") end make_forms(args, data, t["strong_stem"], athematic_impf_strong_endings_cons) -- if intensive without dissyllabic reduplication if t.intensive == "1" then if match(t.strong_stem, sa_utils.vowel_with_accent.."$") then -- Whitney §1004a make_forms(args, data, t["strong_stem"], intensive_impf_weak_endings_extra) else make_forms(args, data, t["weak_stem"], intensive_impf_weak_endings_extra) end end -- e.g. āpnot if match(t.strong_stem, sa_utils.consonant .. "[nR]o/?$") then args.no_syncope = true t.weak_stem = gasub(t.weak_stem, "uv$", "u") -- extra forms for verbs on vowel + -noti elseif match(t.strong_stem, sa_utils.vowel .. "[nR]o/?$") then t.temp_stem = gasub(t.strong_stem, "o/?$", "") make_forms(args, data, t["temp_stem"], make_athematic_impf_weak_forms_mvy(t["weak_oxy"])) -- class 9 elseif match(t.strong_stem, "[nR]A/?$") and match(t.weak_stem, "[nR]$") then t.weak_stem = gasub(t.weak_stem, "^.*$", "%1I") -- class 3 roots on -ṛ elseif match(args.weak_lemma, ".aru[Hs]$") and not match(t.strong_stem, "A/?$") then t.weak_stem = gasub(t.weak_stem, "ar$", "f") -- class 3 roots on -i/ī/u/ū with no weak stem provided elseif match(args.weak_lemma, ".a[vy]u[Hs]$") and not match(t.strong_stem, "A/?$") then error("Please add weak stem for class 3 roots on -i/-ī and -u/-ū.") end make_forms(args, data, t["weak_stem"], make_athematic_impf_weak_forms_cons(t["weak_oxy"])) if args.extra_1p_stem then t.weak_stem = args.extra_1p_stem end make_forms(args, data, t["weak_stem"], make_athematic_impf_weak_forms_mvy(t["weak_oxy"])) if match(args.weak_lemma, "n<.*>$") then t.weak_stem = gasub(args.weak_lemma, "a?/?n<.*>$", "") -- class 3 verbs on -ā with weak stem supplied elseif match(args.weak_lemma, "u[Hs]<.*>$") and match(t.strong_stem, "A$") then t.weak_stem = gasub(args.weak_lemma, "u[Hs]<.*>$", "") elseif args.extra_1p_stem or match(t.weak_stem, "[nR]I$") then t.weak_stem = gasub(args.weak_lemma, "a/?n$", "") end make_forms(args, data, t["weak_stem"], make_athematic_impf_weak_forms_vow(t["weak_oxy"])) if t.us_3p == true then -- active 3p for class 3 verbs is often not from the weak stem if match(args.weak_lemma, ".<.*>$") then t.weak_stem = gasub(args.weak_lemma, 'u[Hs]<.*>$', '') else t.weak_stem = gasub(t.weak_stem, "f$", "ar") end make_forms(args, data, t["weak_stem"], make_athematic_impf_3p_us(t["weak_oxy"])) else if match(t.strong_stem, "A$") and match(t.weak_stem, "A$") then	-- Whitney §621a t.temp_stem = gasub(t.weak_stem, "A$", "") make_forms(args, data, t["temp_stem"], make_athematic_impf_3p_us(t["weak_oxy"])) end make_forms(args, data, t["weak_stem"], make_athematic_impf_3p_an(t["weak_oxy"])) end -- deponent verbs elseif detect_strong(t, args.strong_lemma, "(.+)[tDwQ]a/?$") then if detect_weak(t, args.weak_lemma, "(.+)a/?ta$", "a(/?)ta$") or detect_weak(t, args.weak_lemma, "(.+A/?)ta$") then args.n = "m" -- deponent -- for verbs on vowel + -nuta (+ impf. of tarute) if match(t.strong_stem, sa_utils.vowel .. "[nRr]u$") and (not args.class or match(args.class, "^[58]$")) and not args.extra_1p_stem then t.temp_stem = gasub(t.strong_stem, "u$", "") make_forms(args, data, t["temp_stem"], make_athematic_impf_weak_forms_mvy(t["weak_oxy"])) -- e.g. āpnot, but middle elseif match(t.strong_stem, sa_utils.consonant .. "[nR]u?$") then args.no_syncope = true end if match(args.strong_lemma, sa_utils.vowel_with_accent .. "ta$") then t.weak_stem_before_cons = gasub(args.strong_lemma, "ta$", "") else t.weak_stem_before_cons = t.weak_stem end make_forms(args, data, t["weak_stem_before_cons"], make_athematic_impf_weak_forms_cons(t["weak_oxy"])) if args.extra_1p_stem then t.weak_stem_before_cons = args.extra_1p_stem end make_forms(args, data, t["weak_stem_before_cons"], make_athematic_impf_weak_forms_mvy(t["weak_oxy"])) if match(args.weak_lemma, ".<.*>$") then t.weak_stem = gasub(args.weak_lemma, "a?/?ta<.*>$", "") end make_forms(args, data, t["weak_stem"], make_athematic_impf_weak_forms_vow(t["weak_oxy"])) else validate(t["weak_stem"], args.weak_lemma) end else validate(t["strong_stem"], args.strong_lemma) end end })

conj_data["fut"] = {} setmetatable(conj_data["fut"], {   __call = function (self, args, data)        local make_strong_forms = function (oxy)            return {                ["indic"] = {                    ["av"] = {                        ["1_s"] = "syA" .. oxy .. "mi",                        ["2_s"] = "sya" .. oxy .. "si",                        ["3_s"] = "sya" .. oxy .. "ti",                        ["1_d"] = "syA" .. oxy .. "vas",                        ["2_d"] = "sya" .. oxy .. "Tas",                        ["3_d"] = "sya" .. oxy .. "tas",                        ["1_p"] = "syA" .. oxy .. "mas",                        ["2_p"] = "sya" .. oxy .. "Ta",                        ["3_p"] = "sya" .. oxy .. "nti"                    },                    ["mv"] = {                        ["1_s"] = "sye" .. oxy,                        ["2_s"] = "sya" .. oxy .. "se",                        ["3_s"] = "sya" .. oxy .. "te", ["1_d"] = "syA" .. oxy .. "vahe", ["2_d"] = "sye" .. oxy .. "Te", ["3_d"] = "sye" .. oxy .. "te", ["1_p"] = "syA" .. oxy .. "mahe", ["2_p"] = "sya" .. oxy .. "Dve", ["3_p"] = "sya" .. oxy .. "nte" }               },                ["part"] = { ["av"] = "sya" .. oxy .. "t", ["mv"] = "sya" .. oxy .. "mAna" }           }        end local t = {} if not detect_strong(t, args.strong_lemma, "(.+).ya" .. sa_utils.accent .. "?ti$", "(" .. sa_utils.accent .. "?)ti$") then if not detect_strong(t, args.strong_lemma, "(.+).ya" .. sa_utils.accent .. "?te$", "(" .. sa_utils.accent .. "?)te$") then validate(t["strong_stem"], args.strong_lemma) else args.n = "m" -- deponent end end make_forms(args, data, t["strong_stem"], make_strong_forms(t["strong_oxy"])) table.insert(data.categories, "Sanskrit verbs with s-future") end })

conj_data["pfut"] = {} setmetatable(conj_data["pfut"], {	__call = function (self, args, data)		local make_perph_forms = function (oxy)           return {                ["indic"] = {                    ["av"] = {                        ["1_s"] = "tA" .. oxy .. "smi",                        ["2_s"] = "tA" .. oxy .. "si",                        ["3_s"] = "tA" .. oxy,                        ["1_d"] = "tA" .. oxy .. "svas",                        ["2_d"] = "tA" .. oxy .. "sTas",                        ["3_d"] = {"tA" .. oxy .. "rO", {"tA" .. oxy .. "rA", note = "Vedic"}}, -- 'gantārā' occurs in Rigveda 8.13.10                        ["1_p"] = "tA" .. oxy .. "smas",                        ["2_p"] = "tA" .. oxy .. "sTa",                        ["3_p"] = "tA" .. oxy .. "ras"                    },                    ["mv"] = {                        ["1_s"] = "tA" .. oxy .. "he",                        ["2_s"] = "tA" .. oxy .. "se", ["3_s"] = "tA" .. oxy, ["1_d"] = "tA" .. oxy .. "svahe", ["2_d"] = "tA" .. oxy .. "sATe", ["3_d"] = "tA" .. oxy .. "rO", ["1_p"] = "tA" .. oxy .. "smahe", ["2_p"] = "tA" .. oxy .. "Dve", ["3_p"] = "tA" .. oxy .. "ras" }               },            }		end local t = {} if not detect_strong(t, args.strong_lemma, "(.+)tA" .. sa_utils.accent .. "?$", "(" .. sa_utils.accent .. "?)$") then validate(t["strong_stem"], args.strong_lemma) -- for the periphrastic future, there is no way to tell if the verb is deponent from the lemma (third-person singular form) -- atmanepada verbs require the "n=m" argument to avoid showing the active forms end make_forms(args, data, t["strong_stem"], make_perph_forms(t["strong_oxy"])) table.insert(data.categories, "Sanskrit verbs with periphrastic future") end })

conj_data["cond"] = {} setmetatable(conj_data["cond"], {   __call = function (self, args, data)        local t = {}        if not detect_strong(t, args.strong_lemma, "(.+).yat$") then            if not detect_strong(t, args.strong_lemma, "(.+).yata$") then                validate(t["strong_stem"], args.strong_lemma)            else                args.n = "m" -- deponent            end        end        make_forms(args, data, t["strong_stem"], { ["indic"] = { ["av"] = { ["1_s"] = "syam", ["2_s"] = "syas", ["3_s"] = "syat", ["1_d"] = "syAva", ["2_d"] = "syatam", ["3_d"] = "syatAm", ["1_p"] = "syAma", ["2_p"] = "syata", ["3_p"] = "syant" },               ["mv"] = { ["1_s"] = "sye", ["2_s"] = "syaTAs", ["3_s"] = "syata", ["1_d"] = "syAvahi", ["2_d"] = "syeTAm", ["3_d"] = "syetAm", ["1_p"] = "syAmahi", ["2_p"] = "syaDvam", ["3_p"] = "syanta" }           }        })    end })

conj_data["aor"] = {} setmetatable(conj_data["aor"], {   __call = function (self, args, data)        -- there is some added complexity here compared to the other tenses due to the number of aorist types in Sanskrit        local strong_is_endings = {            ["indic"] = {                ["av"] = {                    ["1_s"] = "izam",                    ["2_s"] = "Is",                    ["3_s"] = "It",                    ["1_d"] = "izva",                    ["2_d"] = "izwam",                    ["3_d"] = "izwAm",                    ["1_p"] = "izma",                    ["2_p"] = "izwa",                    ["3_p"] = "izus"                },            }        }

local weak_is_endings = { ["indic"] = { ["mv"] = { ["1_s"] = "izi", ["2_s"] = "izWAs", ["3_s"] = "izwa", ["1_d"] = "izvahi", ["2_d"] = "izATAm", ["3_d"] = "izAtAm", ["1_p"] = "izmahi", ["2_p"] = "iQvam", ["3_p"] = "izata" },           }        }

local strong_s_endings = { ["indic"] = { ["av"] = { ["1_s"] = "sam", ["2_s"] = {"sIs", {"s", note = "Vedic"}}, ["3_s"] = {"sIt", {"s", note = "Vedic"}}, ["1_d"] = "sva", ["2_d"] = "stam", ["3_d"] = "stAm", ["1_p"] = "sma", ["2_p"] = "sta", ["3_p"] = "sus" },           }        }

local weak_s_endings = { ["indic"] = { ["mv"] = { ["1_s"] = "si", ["2_s"] = "sTAs", ["3_s"] = "sta", ["1_d"] = "svahi", ["2_d"] = "sATAm", ["3_d"] = "sAtAm", ["1_p"] = "smahi", ["2_p"] = "sDvam", -- further treated by sandhi module ["3_p"] = "sata" },           }        }        -- accent for augmentless forms local make_strong_sa_forms = function(oxy) return { ["indic"] = { ["av"] = { ["1_s"] = "sa" .. oxy .. "m", ["2_s"] = "sa" .. oxy .. "s", ["3_s"] = "sa" .. oxy .. "t", ["1_d"] = "sA" .. oxy .. "va", ["2_d"] = "sa" .. oxy .. "tam", ["3_d"] = "sa" .. oxy .. "tAm", ["1_p"] = "sA" .. oxy .. "ma", ["2_p"] = "sa" .. oxy .. "ta", ["3_p"] = "sa" .. oxy .. "n" },           	}        	}        end local make_weak_sa_forms = function (oxy) return { ["indic"] = { ["mv"] = { ["1_s"] = "si" .. oxy, ["2_s"] = "sa" .. oxy .. "TAs", ["3_s"] = "sa" .. oxy .. "ta", ["1_d"] = "sA" .. oxy .. "vahi", ["2_d"] = "sA" .. oxy .. "TAm", ["3_d"] = "sA" .. oxy .. "tAm", ["1_p"] = "sA" .. oxy .. "mahi", ["2_p"] = "sa" .. oxy .. "Dvam", ["3_p"] = "sa" .. oxy .. "nta" },           	}        	}        end -- accent for augmentless forms local make_strong_a_forms = function(oxy) return { ["indic"] = { ["av"] = { ["1_s"] = "a" .. oxy .. "m", ["2_s"] = "a" .. oxy .. "s", ["3_s"] = "a" .. oxy .. "t", ["1_d"] = "A" .. oxy .. "va", ["2_d"] = "a" .. oxy .. "tam", ["3_d"] = "a" .. oxy .. "tAm", ["1_p"] = "A" .. oxy .. "ma", ["2_p"] = "a" .. oxy .. "ta", ["3_p"] = "a" .. oxy .. "nt" },           	}        	}        end local make_weak_a_forms = function(oxy) return { ["indic"] = { ["mv"] = { ["1_s"] = "e" .. oxy, ["2_s"] = "a" .. oxy .. "TAs", ["3_s"] = "a" .. oxy .. "ta", ["1_d"] = "A" .. oxy .. "vahi", ["2_d"] = "e" .. oxy .. "TAm", ["3_d"] = "e" .. oxy .. "tAm", ["1_p"] = "A" .. oxy .. "mahi", ["2_p"] = "a" .. oxy .. "Dvam", ["3_p"] = "a" .. oxy .. "nta" },           	}        	}        end

local strong_root_endings = { -- without 3p ["indic"] = { ["av"] = { ["1_s"] = "am", ["2_s"] = "s", ["3_s"] = "t", ["1_d"] = "va", ["2_d"] = "tam", ["3_d"] = "tAm", ["1_p"] = "ma", ["2_p"] = "ta", --             	["3_p"] = "us" -- for bhū: -an (abhūvan) }           }        }        -- only for some Vedic forms, the root-aorist can only be in active voice in Classical Sanskrit -- to some extent speculative local weak_root_endings = { ["indic"] = { ["mv"] = { ["1_s"] = "i", ["2_s"] = "TAs", ["3_s"] = "ta", ["1_d"] = "vahi", ["2_d"] = "ATAm", ["3_d"] = "AtAm", -- 'akrātām' (Whitney §834a) ["1_p"] = "mahi", ["2_p"] = "Dvam", ["3_p"] = "ata" -- but '-ran' frequently occurs, see Whitney §834b },           }        }        local t = {} local weak_lemma = args.weak_lemma or args.passive_lemma -- detection of oxytone accent in case of injunctive if (not args.aor or args.aor == "sa") and detect_strong(t, args.strong_lemma, "(.+k)za/?t$", "kza(/?)t$") then table.insert(data.categories, "Sanskrit verbs with sa-aorist") make_forms(args, data, t["strong_stem"], make_strong_sa_forms(t["strong_oxy"])) if use_strong_for_weak(t, weak_lemma) then make_forms(args, data, t["weak_stem"], make_weak_sa_forms(t["weak_oxy"])) end elseif (not args.aor or args.aor == "s" or args.aor == "ṣ") and detect_strong(t, args.strong_lemma, "(.+)[sz]It$") then table.insert(data.categories, "Sanskrit verbs with s-aorist") make_forms(args, data, t["strong_stem"], strong_s_endings) if use_strong_for_weak(t, weak_lemma) then make_forms(args, data, t["weak_stem"], weak_s_endings) end elseif (not args.aor or args.aor == "iṣ" or args.aor == "siṣ") and detect_strong(t, args.strong_lemma, "(.+)It$") then if args.aor == "siṣ" then table.insert(data.categories, "Sanskrit verbs with siṣ-aorist") make_forms(args, data, t["strong_stem"], strong_is_endings) -- middle forms for siṣ-aorist are not allowed by the grammarians (but might have existed: Whitney §915) else table.insert(data.categories, "Sanskrit verbs with iṣ-aorist") make_forms(args, data, t["strong_stem"], strong_is_endings) if use_strong_for_weak(t, weak_lemma) then make_forms(args, data, t["weak_stem"], weak_is_endings) end end elseif (not args.aor or args.aor == "a") and detect_strong(t, args.strong_lemma, "(.+)a/?t$", "a(/?)t$") then table.insert(data.categories, "Sanskrit verbs with a-aorist") make_forms(args, data, t["strong_stem"], make_strong_a_forms(t["strong_oxy"])) if use_strong_for_weak(t, weak_lemma) then make_forms(args, data, t["weak_stem"], make_weak_a_forms(t["weak_oxy"])) end -- the 't' of 'avart' should be detected as part of the stem elseif (not args.aor or args.aor == "root") and (detect_strong(t, args.strong_lemma, "(.+" .. sa_utils.vowel .. ")t$")       or detect_strong(t, args.strong_lemma, "(.+[kNwRtnprlsH])$") ) then table.insert(data.categories, "Sanskrit verbs with root-aorist") make_forms(args, data, t["strong_stem"], strong_root_endings) -- for active 3p, remove final ā from stem if match(t.strong_stem, "A$") then t.strong_stem = gasub(t.strong_stem, "A$", "") make_forms(args, data, t["strong_stem"], { 					["indic"] = {          				["av"] = {           					["3_p"] = "us"           				}           			}           		}) else make_forms(args, data, t["strong_stem"], { 					["indic"] = {       				["av"] = {        					["3_p"] = "an"        				}           			}           		}) end elseif args.strong_lemma ~= "-" then error("Could not detect aorist type from " .. to_IAST(args.strong_lemma)) -- failed to recognize an aorist type end if weak_lemma then -- if ends on -gdha, -ddha or -bdha, then the stem necessarily ends on resp. -h/dh/bh local aspirate = { ['g'] = 'h', ['d'] = 'D', ['b'] = 'B' } weak_lemma = gasub(weak_lemma, '(.+)([gdb])(Da)$', function(a,b,c) return a .. aspirate[b].. c end) if match(weak_lemma, "hDa$") then args.h_to_g = true end if (not args.aor or args.aor == "iṣ") and detect_weak(t, weak_lemma, "(.+)izwa$") then table.insert(data.categories, "Sanskrit verbs with iṣ-aorist") make_forms(args, data, t["weak_stem"], weak_is_endings) elseif (not args.aor or args.aor == "sa") and detect_weak(t, weak_lemma, "(.+k)za/?ta$", "kza(/?)ta$") then table.insert(data.categories, "Sanskrit verbs with sa-aorist") make_forms(args, data, t["weak_stem"], make_weak_sa_forms(t["weak_oxy"])) elseif (not args.aor or args.aor == "[sṣ]") and (detect_weak(t, weak_lemma, "(.+)sta$") or detect_weak(t, weak_lemma, "(.+)zwa$")           or detect_weak(t, weak_lemma, "(.+[ktp])ta$") or detect_weak(t, weak_lemma, "(.+[ghdDbB])Da$")) then table.insert(data.categories, "Sanskrit verbs with s-aorist") make_forms(args, data, t["weak_stem"], weak_s_endings) elseif (not args.aor or args.aor == "a") and detect_weak(t, weak_lemma, "(.+)a/?ta$", "a(/?)ta$") then table.insert(data.categories, "Sanskrit verbs with a-aorist") make_forms(args, data, t["weak_stem"], make_weak_a_forms(t["weak_oxy"])) elseif (not args.aor or args.aor == "root") and (detect_weak(t, weak_lemma, "(.+)ta$")            or detect_weak(t, weak_lemma, "(.+[ghdDbB])Da$")) then table.insert(data.categories, "Sanskrit verbs with root-aorist") make_forms(args, data, t["weak_stem"], weak_root_endings) else error("Could not detect aorist type from " .. to_IAST(weak_lemma)) -- failed to recognize an aorist type end end end })

conj_data["bene"] = {} setmetatable(conj_data["bene"], {   __call = function (self, args, data)        local make_strong_forms = function (oxy)            return {                ["optat"] = {                    ["av"] = {                        ["1_s"] = "yA" .. oxy .. "sam",                        ["2_s"] = "yA" .. oxy .. "s",                        ["3_s"] = "yA" .. oxy .. "t",                        ["1_d"] = "yA" .. oxy .. "sva",                        ["2_d"] = "yA" .. oxy .. "stam",                        ["3_d"] = "yA" .. oxy .. "stAm",                        ["1_p"] = "yA" .. oxy .. "sma",                        ["2_p"] = "yA" .. oxy .. "sta",                        ["3_p"] = "yA" .. oxy .. "sus"                    },                }            }        end

local make_weak_forms = function (oxy) return { ["optat"] = { ["mv"] = { ["1_s"] = "sIya" .. oxy, ["2_s"] = "sIzWA" .. oxy .. "s", ["3_s"] = "sIzwa" .. oxy, ["1_d"] = "sIva" .. oxy .. "hi", ["2_d"] =, -- Whitney §924a: "of very questionable value" ["3_d"] = , ["1_p"] = "sIma" .. oxy .. "hi", ["2_p"] = "sIQva" .. oxy .. "m", ["3_p"] = "sIra" .. oxy .. "nt" },               }            }        end local t = {} if detect_strong(t, args.strong_lemma, "(.+)yA" .. sa_utils.accent .. "?t$", "yA(" .. sa_utils.accent .. "?)t$") then make_forms(args, data, t["strong_stem"], make_strong_forms(t["strong_oxy"])) elseif args.strong_lemma ~= "-" then validate(t["strong_stem"], args.strong_lemma) end local weak_lemma = args.weak_lemma or args.passive_lemma if use_strong_for_weak(t, weak_lemma) then make_forms(args, data, t["weak_stem"], make_weak_forms(t["weak_oxy"])) elseif detect_weak(t, weak_lemma, "(.+)[sz]Izwa" .. sa_utils.accent .. "?$", "[sz]Izwa(" .. sa_utils.accent .. "?)$") then make_forms(args, data, t["weak_stem"], make_weak_forms(t["weak_oxy"])) else validate(t["weak_stem"], weak_lemma) end end })

conj_data["perf"] = {} setmetatable(conj_data["perf"], {   __call = function (self, args, data)        local make_weak_forms_cons = function (oxy)   -- endings starting with consonant            return {                ["indic"] = {                    ["av"] = {                        ["1_d"] = "va" .. oxy,                        ["1_p"] = "ma" .. oxy,                    },                    ["mv"] = {                        ["2_s"] = "se" .. oxy,                        ["1_d"] = "va" .. oxy .. "he",                        ["1_p"] = "ma" .. oxy .. "he",                        ["2_p"] = "Dve" .. oxy,                    }                },                ["part"] = { --                    ["av"] = "vA" .. oxy .. "Ms",                }            }        end        local make_weak_forms_vow = function (oxy)		-- endings starting with vowel            return {                ["indic"] = {                    ["av"] = { ["2_d"] = "a" .. oxy .. "Tus", ["3_d"] = "a" .. oxy .. "tus", ["2_p"] = "a" .. oxy, ["3_p"] = "u" .. oxy .. "s" },                   ["mv"] = { ["1_s"] = "e" .. oxy, ["3_s"] = "e" .. oxy, ["2_d"] = "A" .. oxy .. "Te", ["3_d"] = "A" .. oxy .. "te", ["3_p"] = "ire" .. oxy }               },                ["part"] = { ["mv"] = "Ana" .. oxy }           }        end local make_vedic_anit_forms = function (oxy) return { ["indic"] = { ["av"] = { ["1_d"] = , ["1_p"] = , },                   ["mv"] = { ["2_s"] = , ["1_d"] = , ["1_p"] = , ["2_p"] = , ["3_p"] = , }               }            }        end local make_anit_perf_participle = function(oxy) return { ["part"] = { ["av"] = "vA" .. oxy .. "Ms" } } end local make_set_perf_participle = function(oxy) return { ["part"] = { ["av"] = "ivA" .. oxy .. "Ms" } } end local make_strong_au_forms = function(oxy) return { ["indic"] = { ["av"] = { ["1_s"] = "O" .. oxy, ["2_s"] = {"A" .. oxy .. "Ta", {"iTa" .. oxy, note = "Later Sanskrit"}}, ["3_s"] = "O" .. oxy, },				}      		}        end local anit_perf_2s_ending = { ["indic"] = { ["av"] = { ["2_s"] = "Ta" }           }        }        local set_perf_2s_ending = { ["indic"] = { ["av"] = { ["2_s"] = "iTa" }           }        }        local make_weak_perf_2s = function(oxy) return { ["indic"] = { ["av"] = { ["2_s"] = }           	}        	}        end local t = {} if detect_strong(t, args.strong_lemma, "(.+)O/?$", "O(/?)$") then make_forms(args, data, t["strong_stem"], make_strong_au_forms(t["strong_oxy"])) args.set = true make_forms(args, data, t["strong_stem"], make_weak_forms_cons(t["strong_oxy"])) make_forms(args, data, t["strong_stem"], make_set_perf_participle(t["strong_oxy"])) make_forms(args, data, t["strong_stem"], make_weak_forms_vow(t["strong_oxy"])) else if not detect_strong(t, args.strong_lemma, "(.+)a$") then if not detect_strong(t, args.strong_lemma, "(.+)e" .. sa_utils.accent .. "?$", "e(" .. sa_utils.accent .. "?)$") then validate(t["strong_stem"], args.strong_lemma) else args.n = "m" -- deponent end end local weak_lemma = args.weak_lemma or args.passive_lemma if not use_strong_for_weak(t, weak_lemma) then if not detect_weak(t, weak_lemma, "(.+)u" .. sa_utils.accent .. "?[Hs]$", "u(" .. sa_utils.accent .. "?)[Hs]$") then validate(t["weak_stem"], weak_lemma) end end -- if no strong stem supplied in case of e.g. cakāra, look at weak stem if match(args.strong_lemma, "A"..sa_utils.accent.."?"..sa_utils.consonant.."a$") and not match(t.weak_stem, "A"..sa_utils.accent.."?"..sa_utils.consonant.."$") then t.strong_stem = gasub(t.strong_stem, "A("..sa_utils.accent.."?.)$", "a%1") end -- if Brugmann's law is applicable if match(t.strong_stem, "a"..sa_utils.accent.."?"..sa_utils.consonant.."$") or match(t.strong_stem, "[eo]"..sa_utils.accent.."?$") then make_forms(args, data, t["strong_stem"], {					["indic"] = {               		["av"] = {                    		["1_s"] = {"a", {"aⓁ", note = "Later Sanskrit"}}, -- only 3 verbs with vriddhi-form in Vedic (Whitney §793d)                			["3_s"] = "aⓁ",                		},            		}            	}) else make_forms(args, data, t["strong_stem"], {					["indic"] = {						["av"] = {							["1_s"] = "a",							["3_s"] = "a",						},					}       		}) end if args.weak_lemma and ( match(args.weak_lemma, sa_utils.consonant.."i?yu/?[Hs]$") or match(args.weak_lemma, "uvu/?[Hs]$") ) then error("Please add weak stem for active participle for roots on -i/-ī and -u/-ū.") elseif match(t.weak_stem, sa_utils.consonant .. 'r$') then t.weak_stem = gasub(t.weak_stem, 'r$', 'f') -- change -r of weak stem to -ṛ if after consonant elseif match(t.weak_stem, "[uU]$") or match(t.weak_stem, sa_utils.consonant..sa_utils.consonant.."[iI]$") then args.no_syncope = true end -- anit roots (on -ṛ or -u) if match(t.weak_stem, "[uf]$") and not args.set == true then make_forms(args, data, t["strong_stem"], anit_perf_2s_ending) make_forms(args, data, t["weak_stem"], make_weak_forms_cons(t["weak_oxy"])) make_forms(args, data, t["weak_stem"], make_anit_perf_participle(t["weak_oxy"])) if match(args.weak_lemma, ".<.*>$") then t.weak_stem = gasub(args.weak_lemma, "u/?[Hs]<.*>$", "") end make_forms(args, data, t["weak_stem"], make_weak_forms_vow(t["weak_oxy"])) else args.set = false -- as this interferes with adding -tha -- rules for 2s if (match(t.strong_stem, "uva/?.$") and match(t.weak_stem, "U.$")) -- e.g. uvac- or (match(t.strong_stem, "iya/?.$") and match(t.weak_stem, "I.$")) -- iyaj- or (match(t.strong_stem, "[aA]/?[NYRnmM]?[^yrv]$") and (match(t.weak_stem, "e.$")	-- e.g. tatan- / ten- or match(t.weak_stem, sa_utils.consonant..sa_utils.consonant.."$"))) -- e.g. jajan- / jajñ- or match(t.strong_stem, "U/?v$") -- babhūv- or match(t.strong_stem, "a/?[yvr]$") or match(t.strong_stem, "[eo]/?$") then -- e.g. ninay-, dadhar- make_forms(args, data, t["strong_stem"], anit_perf_2s_ending) -- add -tha t["Ta_added"] = true end if match(t.strong_stem, "a/?[^yrlv]$") and match(t.weak_stem, "e.$") then --				or match(t.weak_stem, sa_utils.consonant..sa_utils.consonant.."$")) then -- this specific line might be wrong					make_forms(args, data, t["weak_stem"], make_weak_perf_2s(t["weak_oxy"]))				else					make_forms(args, data, t["strong_stem"], set_perf_2s_ending)  -- add -itha				end				if match(t.strong_stem, "a"..sa_utils.accent.."?"..sa_utils.consonant.."$") and not t.Ta_added then					make_forms(args, data, t["strong_stem"], { ["indic"] = { ["av"] = { ["2_s"] = }               		}            		})				end				-- use (supplied) weak stem for participle				if sa_utils.is_monosyllabic(t.weak_stem) or args.mono == true then	-- not accurate for some verbs (Whitney §803a)        			make_forms(args, data, t["weak_stem"], make_set_perf_participle(t["weak_oxy"]))        		else        			make_forms(args, data, t["weak_stem"], make_anit_perf_participle(t["weak_oxy"]))				end				-- change weak stem to form used in 3p				if args.weak_lemma then					if match(args.weak_lemma, ".<.*>$") then						t.weak_stem = gasub(args.weak_lemma, "u/?[Hs]<.*>$", "")					else 						t.weak_stem = gasub(t.weak_stem, "("..sa_utils.consonant..")f$", "%1r")						t.weak_stem = gasub(t.weak_stem, "[uU]$", "uv")						t.weak_stem = gasub(t.weak_stem, "("..sa_utils.vowel..sa_utils.consonant..")[iI]$", "%1y")						t.weak_stem = gasub(t.weak_stem, "("..sa_utils.consonant..sa_utils.consonant..")[iI]$", "%1iy") end end args.set = true make_forms(args, data, t["weak_stem"], make_weak_forms_cons(t["weak_oxy"])) make_forms(args, data, t["weak_stem"], make_weak_forms_vow(t["weak_oxy"])) -- Vedic rules from Whitney §798a (omitting y/r/l/v from the consonants 				-- as r+r is not allowed and none of them are among Wh.'s examples) if match(t.weak_stem, "[aiufx][kKgGNcCjJYwWqQRtTdDnpPbBmLSzsh]$") then args.set = false if args.weak_lemma and match(args.weak_lemma, "<.*>$") then t.weak_stem = gasub(args.weak_lemma, "^.*<(.*)>$", "%1") end make_forms(args, data, t["weak_stem"], make_vedic_anit_forms(t["weak_oxy"])) end end end end })

local function legacy_split_stems(form) return split(form, ",") end

-- Gets stems for COMPLEX_FORM given a pattern in MATCH_RE local function legacy_get_stem(complex_form, match_re) local s = split_xs(complex_form) if s[2] ~= nil then return s[2] end return match(s[1], match_re) end

-- Returns { stems, accents } local function legacy_get_stems_from_lemmas(lemma, match_pattern, oxy_match_pattern) local strong_lemmas = legacy_split_stems(lemma) local strong_stems = {} local oxys = nil if oxy_match_pattern ~= nil then oxys = {} end for i, strong_lemma in ipairs(strong_lemmas) do       local prov = split_xs(strong_lemma)[1] if oxy_match_pattern ~= nil then oxys[i] = match(prov, oxy_match_pattern) end strong_stems[i] = legacy_get_stem(strong_lemma, match_pattern) validate(strong_stems[i], strong_lemma) end return { strong_stems, oxys } end

conj_data["nonf"] = {} setmetatable(conj_data["nonf"], {   -- TODO: this whole system needs to be removed    -- it's kept just so as to not break verbal entries which use this module, but non-finite forms    -- should now be part of the root derivations and not tied to the verbal conjugation    __call = function (self, args, data)        local make_strong_forms = function (oxy)            return {                ["gerundive_mn"] = { "ya", "tavya" .. oxy, "anI" .. oxy .. "ya" },                ["gerundive_f"] = { "yA", "tavyA" .. oxy, "anI" .. oxy .. "yA" }             }        end

local make_weak_forms = function (oxy) return { ["gerund"] = "tvA" .. oxy, ["part_mn"] = "ta" .. oxy, ["part_f"] = "tA" .. oxy }       end local strong_stems = legacy_get_stems_from_lemmas(       	args.strong_lemma,        	"(.+)ya$",        	"(" .. sa_utils.accent .. "?)"       )        for i, strong_stem in ipairs(strong_stems[1]) do        	make_forms(args, data, strong_stem, {	        	["inf"] = "tum"	        }) strong_stem = gsub(strong_stem, sa_utils.accent, "") make_forms(args, data, strong_stem, make_strong_forms(strong_stems[2][i])) local ya_form = #(data.forms["gerundive_mn"]) - 2 -- TODO: This is not a great way of doing this local prov = split_xs(legacy_split_stems(args.strong_lemma)[i])[1] data.forms["gerundive_mn"][1] = prov data.forms["gerundive_f"][1] = match(prov, "(.+)a$") .. "A" end

local weak_lemma = args.weak_lemma or args.passive_lemma if weak_lemma == nil then for i, strong_stem in ipairs(strong_stems[1]) do           	make_forms(args, data, gsub(strong_stem, sa_utils.accent, ""), make_weak_forms(strong_stems[2][i])) end else local weak_stems = legacy_get_stems_from_lemmas(       		weak_lemma,        		"(.+).a" .. sa_utils.accent .. "?$",        		"a(" .. sa_utils.accent .. "?)$"       	)        	for i, weak_stem in ipairs(weak_stems[1]) do        		make_forms(args, data, weak_stem, make_weak_forms(weak_stems[2][i])) end end end })

return conj_data

title: Module:sa-verb/data


text:
Template:sa-conj/documentation

Uses Module:sa-verb as backend.

Basic Usage
If you are unfamiliar with Sanskrit verbs, this, this, and this serve as great guides to get familiar with conjugations.

This template can be called in eight different ways:
 * : a table with the infinitive, gerund, gerundives, and past passive participle
 * : a table with the present tense (incl. the indicative, optative, imperative, and active participles)
 * : a table with the imperfect tense
 * : a table with the future tense (incl. the simple, peripherastic, and active participles)
 * : a table with the conditional tense
 * : a table with the aorist tense
 * : a table with the benedictive/precative, originally the optative of the aorist
 * : a table with the perfect tense (incl. active participles)

The first argument is always the third-person singular indicative active-voice form (or optative, in the case of the benedictive) of the verb in that tense. For instance, will produce a table for the present-tense conjugation of. will likewise produce a table for the imperfect-tense conjugation of that verb.

One of the uses of this argument is to provide the strong stem. If the 3s form alone is not sufficient, supplemental information can be supplied by suffixing extra data delimited by "<...>"; see below for details.

If no other non-keyword arguments are passed, the verb is assumed to be thematic, and this is all that is necessary. If a second argument is passed, the verb is assumed to be athematic and the the second argument should be the third-person plural indicative active-voice form (or optative, in the case of the benedictive) of the verb. If a third argument is passed, it should be the third-person singular indicative passive-voice form (or optative, in the case of the benedictive) of the verb (the verb is not necessarily assumed to be athematic if the passive stem is provided, since the passive stem of thematic verbs is often different from the non-passive stem). For instance, will produce a table for the present-tense athematic conjugation of. For aorist and benedictive tables, the passive stem must be provided if it is different from the active stem, but the middle/weak stem is unused; hence produces the aorist table for.

The "<...>" in that example encloses the stem of the verb. In the case of "leḍhi", the stem "leh" cannot be inferred from the third-person tense due to internal sandhi. Hence, we must provide the stem in brackets like that. All non-keyword arguments can take a stem like this, and, if provided, will be used in place of stem information extracted from the third-person form (although the third-person form should still be provided so the module can infer the class of the verb). ALSO, the bracketed stem argument must be provided if the third-person form is irregular.

The aorist and precative forms tables are slightly different. The contrast between strong and weak is the same as active versus middle. The first non-keyword argument is the third-person singular active, and the second non-keyword argument is the third-person singular middle. The seven different aorist formations cannot always be distinguished on the basis of the 3s, and therefore the formation can be identified by aor, as follows:

The non-finite forms table is special and takes at most two non-keyword arguments
 * the first required argument is the infinitive form of the verb (with a possible bracketed stem). For, we would write.
 * the second optional argument is the past passive participle (masculine/neuter) form of the verb (with a possible bracketed stem). For, we would write.

Sandhi
Usually, like in the case of, this module is smart and will apply a variety of sandhi rules to produce a correct output. Occasionally, though, this is not welcome. For instance, in, the internal sandhi rules will try to eliminate the स in the root. To avoid this, use the argument "auto_sandhi=false".

Other sandhi-related arguments are:
 * "h_to_g=1": to convert h > g before {t, th, d, dh} (duh + -tá = dugdhá) instead of h + t > ḍh (lih + -tá = līḍhá)
 * "j_to_z=1": to convert j > ṣ before {t, th} instead of j > k
 * "diaspirate=1": for verbs from diaspirate roots, like

Limiting Voices
A number of Sanskrit verbs are deponent (only middle voice), active-only, or have no passive. By default, this module will conjugate as many voices as each tense has. To limit the voices, use the argument "n=...". "a" stands for "active", "m" stands for "middle", and "p" stands for "passive", so "n=amp" will produce all three voices, "n=m" will produce just the middle voice, and "n=am" will produce both the active and middle voices, for example.

Overriding Arguments
Occasionally, the automatic sandhi is unable to predict the right form in a particular case or the verb has some special cases. To handle this, every single cell of the table can be completely overridden by a keyword argument to the table. It should be of the form:
 * "[mood]_[voice]_[person]_[number]" for finite forms
 * "part_[voice]" for participles
 * "inf" for the infinitive, "gerundive_mn" for the masculine/neuter gerundive, "gerundive_f" for the feminine gerundive, "part_mn" for the masculine/neuter past passive participle, and "part_f" for the feminine past passive participle

where
 * "[mood]" is one of "indic", "optat", "imper"
 * "[voice]" is one of "av", "mv", "pv"
 * "[person]" is one "1", "2", "3"
 * and "[number]" is one of "s", "d", "p"

For instance, in, the second-person singular indicative present form will be *अस्सि by default, but it is actually irregular and is असि. Hence, we override the default value by providing the arg "indic_av_2_s=asi" in.

khelati
For (thematic, class 1, no ablaut),

asti
For (athematic, class 2), ("<ās>" is provided as the form "āsīt" is irregular).

leḍhi
For (athematic, class 2, irregular),

riṇakti
For (athematic, class 7),

TODO

 * injunctive
 * subjunctive

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/

title: Template:sa-conj/documentation


text: 𬊂

title: 𬊂


text:
suunnistuskilpailu

Noun

 * 1) orienteering competition

title: suunnistuskilpailu


text:
suunnitteluvaihe

Noun

 * 1) design phase, planning phase

title: suunnitteluvaihe


text:
suuntavaikutelma

Noun

 * 1) the illusion that a sound is coming from a certain direction such as with stereo playback

title: suuntavaikutelma


text:
suurherttuakunta

Noun

 * 1) grand duchy

title: suurherttuakunta


text:
suurjännitejohto

Noun

 * 1) high-voltage power line

title: suurjännitejohto


text:
suurjännitekaapeli

Noun

 * 1) high-voltage cable

title: suurjännitekaapeli


text:
suurjännitelinja

Noun

 * 1) high-voltage power line

title: suurjännitelinja


text:
suurkeittiölaite

Noun

 * 1) professional kitchen appliance

title: suurkeittiölaite


text:
suurmaanomistaja

Noun

 * 1) large landowner

title: suurmaanomistaja


text:
suurryhmäterapia

Noun

 * 1) large group therapy

title: suurryhmäterapia


text:
sydänlihasvaurio

Noun

 * 1) heart muscle damage

title: sydänlihasvaurio


text: sydäntautilääkäri

title: sydäntautilääkäri


text:
symbolijärjestelmä

Noun

 * 1) system of symbols

title: symbolijärjestelmä


text:
synnytysmasennus

Noun

 * 1) postpartum depression

title: synnytysmasennus


text:
synnytysvalmennus

Noun

 * 1) birthing class

title: synnytysvalmennus


text:
syrjintälautakunta

Noun

 * 1) discrimination board

title: syrjintälautakunta


text:
sytytysjärjestelmä

Noun

 * 1) ignition system

title: sytytysjärjestelmä


text:
sytytysjärjestys

Noun

 * 1) ignition order

title: sytytysjärjestys


text:
syyllisyydentunto

Noun

 * 1) sense of guilt

title: syyllisyydentunto


text:
syysistuntokausi

Etymology
🇰🇲

Noun

 * 1) autumn/fall session of a judicial, legislative, or other deliberative body

title: syysistuntokausi


text:
잔대

Etymology
Of native Korean origin

Noun

 * 1) ** Lyrics of a folk song from southern Pyongan.
 * 1) ** Lyrics of a folk song from southern Pyongan.
 * 1) ** Lyrics of a folk song from southern Pyongan.

title: 잔대


text: sintrar

title: sintrar


text: sintrande

title: sintrande


text: sintrades

title: sintrades


text: sintrats

title: sintrats


text: sintras

title: sintras


text: sintrade

title: sintrade


text: sintrat

title: sintrat


text: смерте

title: смерте


text:
호미

Etymology
From 🇨🇬. Perhaps compare 🇨🇬.

Noun

 * 1) hoe

title: 호미


text:
호매

Etymology
See main entry.

title: 호매


text:
square degree

Noun

 * 1)  A unit of solid angle equal to π²/32400 steradians

Translations

 * Chinese:
 * Mandarin: 平方度
 * Finnish: neliöaste
 * French:
 * German: Quadratgrad
 * Japanese: 平方度
 * Latin: gradus quadratus
 * Portuguese: grau quadrado
 * Spanish: grado cuadrado

title: square degree


text: square degrees

title: square degrees


text: pêpa

title: pêpa


text:
Nikoghosyan

Etymology
Borrowed from.

Statistics

 * According to data collected by Forebears in 2014, Nikoghosyan is the 285490th most common surname in the United States, belonging to 62 individuals.

title: Nikoghosyan


text:
Nigoghosian

Etymology
Variant of.

Statistics

 * According to data collected by Forebears in 2014, Nigoghosian is the 336459th most common surname in the United States, belonging to 49 individuals.

title: Nigoghosian


text: Nigoghosians

title: Nigoghosians


text: Nikoghosyans

title: Nikoghosyans


text:
Նիկողոսյան

Etymology
From.

title: Նիկողոսյան


text: Ordishes

title: Ordishes


text:
motivatiebrief

Etymology
From.

Noun

 * 1) cover letter

title: motivatiebrief


text:
sceamhaíl

Etymology
From.

Noun

 * 1) yelping
 * 2) squealing
 * 3) yapping
 * 1) yapping

title: sceamhaíl


text:
աղոթարար

Etymology
From. .

Adjective

 * 1) that prays to god, that addresses god in prayer

Noun

 * 1) mantis, praying mantis insect of the order

title: աղոթարար


text:
cycle rack

Noun

 * 1) A rack where cyclists can park their bicycles.

title: cycle rack


text:
commis de cuisine

Noun

 * 1) kitchenhand person who is employed to assist a cook in a kitchen

title: commis de cuisine


text: cycle racks

title: cycle racks


text:
கௌளி

Etymology
. Cognate with 🇨🇬.

Noun

 * 1) house lizard, common house gecko

title: கௌளி


text: 𤈶

title: 𤈶


text: sisande

title: sisande


text: sisade

title: sisade


text: sisat

title: sisat


text:
Finnishman

Etymology
From.

Noun

 * 1)  A native or inhabitant of Finland.

title: Finnishman


text: Finnishmen

title: Finnishmen


text: Barbini

title: Barbini


text: Di Leva

title: Di Leva


text: Genuardi

title: Genuardi


text:
Talk:AAVE

AAE
How should AAE be mentioned here best? Backinstadiums (talk) 09:47, 17 July 2022 (UTC)

title: Talk:AAVE


text: 𤇄

title: 𤇄


text: Tavoliere

title: Tavoliere


text:
безмірний

Etymology
From. Compare 🇨🇬, 🇨🇬, 🇨🇬.

Adjective

 * 1) immeasurable, beyond measure, measureless, immense

title: безмірний


text: surāmerayamajjapamādaṭṭhānaṃ

title: surāmerayamajjapamādaṭṭhānaṃ


text: Castagni

title: Castagni


text:
สุราเมรยมชฺชปมาทฏฺฐานํ

Noun

 * , which is

title: สุราเมรยมชฺชปมาทฏฺฐานํ


text:
สุราเมระยะมัชชะปะมาทัฏฐานัง

Noun

 * , which is

title: สุราเมระยะมัชชะปะมาทัฏฐานัง


text:
abri de jardin

Noun

 * 1) garden shed

title: abri de jardin


text:
rámhaíocht

Etymology
From.

Noun

 * 1) rowing
 * 1) rowing

title: rámhaíocht


text:
безбережний

Etymology
From. Compare 🇨🇬, 🇨🇬.

Adjective

 * 1)  shoreless
 * 2)  boundless, immeasurable

title: безбережний


text: timupo

title: timupo


text:
ἀνταγωνιστής

Etymology
From.

Noun

 * 1) rival, opponent, competitor

title: ἀνταγωνιστής


text: Category:Scottish Gaelic terms derived from the Proto-Indo-European root *h₁reh₁-


text:
maghikol-hikol

Etymology
From.

Verb

 * 1) to wiggle

title: maghikol-hikol


text:
solid hydrogen

Noun

 * 1) The solid phase of hydrogen;  hydrogen state
 * 2) A metal lattice which has absorbed hydrogen gas
 * 1) A metal lattice which has absorbed hydrogen gas
 * 1) A metal lattice which has absorbed hydrogen gas

title: solid hydrogen


text:
kibot-kibot

Etymology
.

Noun

 * 1) wiggle; slither

title: kibot-kibot


text:
былтыркы

Etymology
From adv. былтыр (last year's). Compare to 🇨🇬, etc.

Adjective

 * 1) last year's

title: былтыркы


text:
تمارض

Verb

 * 1) to feign illness, to malinger

title: تمارض


text:
обончу

Etymology
From.

Noun

 * 1) vocalist

title: обончу


text:
обон

Noun

 * 1) tune, melody

Derived terms

 * обончу (vocalist)

title: обон


text:
kimot-kimot

Etymology
.

Noun

 * 1) mumble

title: kimot-kimot


text: ま○こ

title: ま○こ


text:
Talk:essentialism

Usage note (vs stereotype)
Although stereotype is a construct investigated in social psychology, essentialism is a term preferred in cultural studies, which explore issues of gender, race, ethnicity, sexuality, culture, and so on by drawing on feminist, postcolonial, poststructuralist, critical race, queer, and other theories. This difference in inquiry orientation indicates different assumptions underlying stereotypes and essentialism; while the former implies that distorted knowledge about a certain group causes incorrect assumptions and that accurate objective knowledge will overcome the problem, the latter suggests that fixed images of a particular group are implicitly and explicitly produced politically and ideologically. In poststruc- turalism, essentialist representations are conceptualized as constructed by discourses that produce particular meanings through linguistic and semiotic means. In contrast to stereotypes, which usually carry a negative connotation, essentialism is not always negative; it can be strategically deployed by subordinate groups to advocate for their own unique identities that have been marginalized or devalued due to slavery, colonialism, and other forms of oppression. This is called strategic essentialism. Backinstadiums (talk) 10:30, 17 July 2022 (UTC)

title: Talk:essentialism


text:
Talk:facetiae

Plural noun (archaic)
Plural noun : witty or humorous remarks (archaic) Backinstadiums (talk) 10:35, 17 July 2022 (UTC)

title: Talk:facetiae


text: Category:Rhymes:Portuguese/udɨ/2 syllables


text: Citations:Yang

title: Citations:Yang


text: trẹ

title: trẹ


text: Category:Rhymes:Portuguese/udɨ/3 syllables


text:
hamesuoja

Noun

 * 1)  skirt guard, coat guard, dress guard device fitted over the rear wheel of a bicycle to prevent clothing or luggage catching in the wheel

title: hamesuoja


text: gigeste

title: gigeste


text: Category:Rhymes:Portuguese/udɨ/5 syllables


text:
Talk:nonwhiteness

non-Whiteness
Variant Backinstadiums (talk) 10:43, 17 July 2022 (UTC)

title: Talk:nonwhiteness


text: tjutet

title: tjutet


text: tjutets

title: tjutets


text: tjuts

title: tjuts


text:
Talk:choisir

Middle French conjugation
Could I simply include the conjugation table for this language or would I have to do some research first? Are there some irregularities or could have been there? 87.78.75.168 10:48, 17 July 2022 (UTC)

Example sentence translation
Je n’ai pas eu le temps de choisir. I didn’t have the time to choose. 73.74.100.175 04:24, 18 August 2023 (UTC)

title: Talk:choisir


text:
ഖർവം

Etymology
.

Numeral

 * 1)  trillion

title: ഖർവം


text: tjuten

title: tjuten


text: tjutens

title: tjutens


text:
നൂറുകോടി

Etymology
.

Numeral

 * 1) hundred crore, billion

title: നൂറുകോടി


text: Category:Rhymes:Portuguese/adɨ/3 syllables


text: Category:Rhymes:Portuguese/adɨ/2 syllables


text: ημιόνου

title: ημιόνου


text: ημίονο

title: ημίονο


text:
സഹസ്രം

Etymology
.

Numeral

 * 1)  one thousand, 1000

title: സഹസ്രം


text: ημίονε

title: ημίονε


text: ημιόνων

title: ημιόνων


text: ημιόνους

title: ημιόνους


text: ημίονοι

title: ημίονοι


text: നാനൂറാം

title: നാനൂറാം


text: fulsam

title: fulsam


text: confrades

title: confrades


text: അറുനൂറ്

title: അറുനൂറ്


text: എഴുനൂറ്

title: എഴുനൂറ്


text: ημισφαιρίου

title: ημισφαιρίου


text: ημισφαίριου

title: ημισφαίριου


text: ημισφαιρίων

title: ημισφαιρίων


text: ημισφαίρια

title: ημισφαίρια


text: Citations:McCabe's complexity

title: Citations:McCabe's complexity


text:
ദശകോടി

Noun

 * 1)  hundred million; ten crore

title: ദശകോടി


text: ημισελήνου

title: ημισελήνου


text: ημισέληνο

title: ημισέληνο


text: ημισέληνε

title: ημισέληνε


text:
cyclomatic complexity

Noun

 * 1)  A quantitative measure of the number of linearly independent paths (branches) through a program's source code which indicates the complexity of a program or a function.

Translations

 * German: McCabe-Metrik, zyklomatische Komplexität
 * Indonesian: kompleksitas siklomatik

title: cyclomatic complexity


text: ημισελήνων

title: ημισελήνων


text: ημισελήνους

title: ημισελήνους


text: ημισέληνοι

title: ημισέληνοι


text: ημιτονίου

title: ημιτονίου


text: ημιτόνιου

title: ημιτόνιου


text: ημιτονίων

title: ημιτονίων


text: ημιτόνια

title: ημιτόνια


text:
mag-atubang

Etymology
From.

Verb

 * 1) to face on a position
 * 2) to face up to someone
 * 1) to face up to someone

title: mag-atubang


text:
atubangon

Etymology
From.

Verb

 * 1) to face on a position
 * 2) to face up to someone
 * 1) to face up to someone

title: atubangon


text:
kaatubang

Etymology
From.

Noun

 * 1) a person or an object in front of one's self

title: kaatubang


text:
Talk:siege

In its entry in the English language, there is an instance of citation (date, author's name, & title of the literary work) that does not have any quote under it and is itself not under a 'quotations list'. It too is immediately beside the 11th sub-definition of the 2nd sense.

The 'References' section does not have any content but the heading itself.

Please substantiate both, and also organise the former. Thank you.

A Mediocre Lifetime Student (talk) 11:18, 17 July 2022 (UTC)

RFV discussion: July 2022–February 2023
As was mentioned in the Tea Room, there’s no proper citation for this sense of the word siege and the alleged source, the American Mechanical Dictionary, doesn’t seem to list this meaning of the word anywhere. I couldn’t find any evidence of the word being used in this way in GoogleBooks either. Overlordnat1 (talk) 00:36, 17 July 2022 (UTC)

 * FWIW, the American Mechanical Dictionary does mention this meaning. It's in volume III (1876/7), page 2175. 98.170.164.88 00:46, 17 July 2022 (UTC)
 * It's in the OED as well but they only give one example and I can't find any myself. —Al-Muqanna المقنع (talk) 19:55, 24 November 2022 (UTC)

RFV Failed, only OED cite in a mention. Ioaxxere (talk) 18:04, 9 February 2023 (UTC)

title: Talk:siege


text:
რტყაფა

Etymology
From.

title: რტყაფა


text:
ორტყაფუ

Etymology
From.

Noun

 * 1) belt, girdle

title: ორტყაფუ


text: ημίτονου

title: ημίτονου


text: ημιτόνου

title: ημιτόνου


text: ημίτονων

title: ημίτονων


text: ημιτόνων

title: ημιτόνων


text: ημίτονα

title: ημίτονα


text: ημιφορτηγού

title: ημιφορτηγού


text: ημιφορτηγών

title: ημιφορτηγών


text: ημιφορτηγά

title: ημιφορτηγά


text: ημιφώνου

title: ημιφώνου


text: ημίφωνου

title: ημίφωνου


text: ημιφώνων

title: ημιφώνων


text:
ცაშორტყაფუ

Etymology
,.

Noun

 * 1) rainbow

title: ცაშორტყაფუ


text: ημίφωνα

title: ημίφωνα


text:
Module:User:Wpi/zh-dial-list

local export = {}

local variety_list = { "Classical", "Formal", "Taxonomic", "Northeastern Mandarin", "Jilu Mandarin", "Jiaoliao Mandarin", "Central Plains Mandarin", "Lanyin Mandarin", "Southwestern Mandarin", "Jianghuai Mandarin", "Mandarin", "Cantonese", "Gan", "Hakka", "Huizhou", "Jin", "Jiuxing Yumin", "Northern Min", "Eastern Min", "Southern Min", "Puxian Min", "Central Min", "Shaojiang Min", "Zhongshan Min", "Southern Pinghua", "Northern Pinghua", "Shehua", "Waxiang", "Wu", "Xiang", "Xiangnan Tuhua", "Yuebei Tuhua" }

local variety_colour = { ["Classical"]				= "FAF0F2", ["Formal"]					= "FAF0F2", ["Taxonomic"]				= "FAF0F2", ["Northeastern Mandarin"]	= "FAF5F0", ["Jilu Mandarin"]			= "FAF5F0", ["Jiaoliao Mandarin"]		= "FAF5F0", ["Central Plains Mandarin"]	= "FAF5F0", ["Lanyin Mandarin"]			= "FAF5F0", ["Southwestern Mandarin"]	= "FAF5F0", ["Jianghuai Mandarin"]		= "FAF5F0", ["Mandarin"]				= "FAF5F0", ["Cantonese"]				= "F0F5FA", ["Gan"]						= "F0FAF3", ["Hakka"]					= "FAF0F6", ["Huizhou"]					= "FAF9F0", ["Jin"]						= "FAF5F0", ["Jiuxing Yumin"]			= "FAF0FE", ["Northern Min"]			= "F7FAF0", ["Eastern Min"]				= "F7FAF0", ["Southern Min"]			= "F7FAF0", ["Puxian Min"]				= "F7FAF0", ["Central Min"]				= "F7FAF0", ["Shaojiang Min"]			= "F7FAF0", ["Zhongshan Min"]			= "F7FAF0", ["Southern Pinghua"]		= "F0F5FA", ["Northern Pinghua"]		= "F0F5FA", ["Shehua"]					= "FAF0F6", ["Waxiang"]					= "F0FAF6", ["Wu"]						= "F4F0FA", ["Xiang"]					= "F0F2FA", ["Xiangnan Tuhua"]			= "F0F9FA", ["Yuebei Tuhua"]			= "F0F9FA", }

local special_note = { ["Classical"] = "Classical Chinese", ["Formal"] = "Formal (Written Standard Chinese) ", ["Taxonomic"] = "Taxonomic name", }

local function has_value(t, v)   for a, b in ipairs(t) do        if b == v then return true end end return false end

function export.make_table(frame) local variety_data = mw.loadData("Module:zh/data/dial") local dial_table = { [=[ Readable list of Module:zh/data/dial ]=] .. [=[ 	{| class="wikitable" style="margin:0; text-align:center; width: 100%" |-	! style="background:#E8ECFA" | Group ! style="background:#E8ECFA" | English ! style="background:#E8ECFA" | Chinese ! style="background:#E8ECFA" | Code ! style="background:#E8ECFA" | Link]=]} local template = {} local evil = {} local data_size = 0 --	local order_check = {} local seen = {} for _, lang in ipairs(variety_data) do		repeat local code = lang.key local group = lang.group --			local order = lang.order local name = lang.english or code local link = lang.link and "" .. lang.link .. "" or "" .. name .. "" name = lang.english or string.format("%s", code) local chinese = lang.chinese local lat = lang.lat local long = lang.long data_size = data_size + 1 if seen[code] then table.insert(evil, string.format('duplicated code: %s', code)) do break end end seen[code] = true if not group then table.insert(evil, string.format('%s has no value for group', code)) group = "Missing" end if not has_value(variety_list, group) then table.insert(evil, string.format('"%s" is not a valid group', group)) do break end end --			if not order then --				table.insert(evil, string.format('%s has no value for ', code)) --				do break end --			end if not (group == 'Taxonomic' or group == 'Classical' or group == 'Formal') then if not chinese then table.insert(evil, string.format('%s has no value for ', code)) do break end end if not lat then table.insert(evil, string.format('%s has no value for ', code)) end if not long then table.insert(evil, string.format('%s has no value for ', code)) end else chinese = 'N/A' end if not template[group] then template[group] = {} end --			if not order_check[group] then --				order_check[group] = {} --			end --			if order_check[group][order] then --				table.insert(evil, string.format(order_check[group][order] .. ' and ' .. code .. ' share the same order number')) --				do break end --			else --				order_check[group][order] = code --			end --			table.insert(template[group], {order, name, chinese, code, link}) table.insert(template[group], {name, chinese, code, link}) until true end for _, group in ipairs(variety_list) do		local colour = variety_colour[group] if not template[group] then template[group] = {} end --		table.sort(template[group], function(first, second) return first[1] < second[1] end) for i, point in ipairs(template[group]) do			repeat table.insert(dial_table, '\n|-') if not point then do break end elseif i == 1 then table.insert(dial_table, "\n!rowspan=" .. #template[group] .. 						' style="background:#' .. colour .. '"| ' .. (special_note[group] or group)) end table.insert(dial_table, string.format('\n| style="background:#%s" | %s || style="background:#%s" | %s || style="background:#%s" |  || style="background:#%s" | %s \n', colour, point[1], colour, point[2], colour, point[3], colour, point[4])) until true end end --	content = mw.title.new('Module:zh/data/dial'):getContent --	local _, count = content:gsub('\nvariety_data', '') --	count = count - 1 -- L1: local variety_data = {} --	local size_text = (count == data_size) and 'Number of entries: ' .. tostring(data_size) or ''' There are  .. tostring(count - data_size) .. pairs of entries with duplicate codes''' local size_text = 'Number of entries: ' .. tostring(data_size) table.insert(dial_table, '\n|} ') table.insert(dial_table, [[

Errors
Please note that only one error is catched per entry. Preview again until no errors are found. ''']] .. table.concat(evil, '\n\n') .. ' .. size_text)	return table.concat(dial_table, ) end

--TODO: add coords return export

title: Module:User:Wpi/zh-dial-list


text: ημίχρονου

title: ημίχρονου


text:
ᦂᦳᧂᧉ

Etymology
From. Cognate with 🇨🇬, 🇨🇬, 🇨🇬, 🇨🇬, 🇨🇬, 🇨🇬, 🇨🇬.

Noun

 * 1) shrimp

title: ᦂᦳᧂᧉ


text: ημίψηλου

title: ημίψηλου


text: ημίψηλων

title: ημίψηλων


text: ημίψηλα

title: ημίψηλα


text:
hirarom

Etymology
From.

Noun

 * 1) a tuck

title: hirarom


text: たんせき

title: たんせき


text: tanseki

title: tanseki


text: ち○こ

title: ち○こ


text:
kavottaja

Noun

 * 1) leader

title: kavottaja


text: Category:Rhymes:Portuguese/aʎɨ/2 syllables


text:
დეც

Etymology
From. Displaced the native term which is only extractible from.

Noun

 * 1) sky
 * 2) heaven
 * 3) palate roof of the mouth

title: დეც


text:
αποτυχημένος

Participle

 * 1) failed

title: αποτυχημένος


text: Category:sva:Atmospheric phenomena

title: Category:sva:Atmospheric phenomena


text:
დეცა̈ლა̈̄რტყ

Etymology
,.

Noun

 * 1) rainbow

title: დეცა̈ლა̈̄რტყ


text:
কুঁড়

Etymology
, from, from , derived from

Noun

 * 1) deep water in a river or lake

title: কুঁড়


text:
Derpina

Etymology
The name of a character portrayed in rage comics; from.

title: Derpina


text:
بٔلؠ

Adverb

 * 1) for no reason, without cause
 * 2) suddenly

title: بٔلؠ


text:
αποφασισμένος

Participle

 * 1) resolved, determined, decided

title: αποφασισμένος


text:
ქი

Etymology
From, from.

Conjunction

 * 1) that

title: ქი


text:
کۯاے

Noun

 * 1) a cauldron

title: کۯاے


text: ჩი

title: ჩი


text:
مینُن

Verb

 * 1) to measure

title: مینُن


text: ç̌i

title: ç̌i


text:
زینُن

Verb

 * 1) to win
 * 2) to earn, acquire

title: زینُن


text:
کَڈُن

Verb

 * 1) to take out, remove, bring out, eject

title: کَڈُن


text: Category:Laz terms derived from Classical Persian


text: Category:Laz terms derived from Persian

title: Category:Laz terms derived from Persian


text: Category:Laz terms derived from Southwestern Iranian languages


text: Category:Laz terms derived from Western Iranian languages


text:
αποφλοίωση

Noun

 * 1) peeling, stripping, debarking, flaying

title: αποφλοίωση


text:
دُکٲرؠ

Noun

 * 1) scissors

title: دُکٲرؠ


text:
تَپھ

Noun

 * 1) fever

title: تَپھ


text:
𐌼𐌹𐌸𐌲𐌰𐌵𐌹𐌿𐌾𐌰𐌽

Verb

 * 1) to quicken together
 * 2) * Ephesians 2:5
 * "got"

- 𐌾𐌰𐌷 𐍅𐌹𐍃𐌰𐌽𐌳𐌰𐌽𐍃 𐌿𐌽𐍃 𐌳𐌰𐌿𐌸𐌰𐌽𐍃 𐍆𐍂𐌰𐍅𐌰𐌿𐍂𐌷𐍄𐌹𐌼 𐌼𐌹𐌸𐌲𐌰𐌵𐌹𐍅𐌹𐌳𐌰 𐌿𐌽𐍃 𐍇𐍂𐌹𐍃𐍄𐌰𐌿 – 𐌰𐌽𐍃𐍄𐌰𐌹 𐍃𐌹𐌾𐌿𐌸 𐌲𐌰𐌽𐌰𐍃𐌹𐌳𐌰𐌹

 * 1) * Colossians 2:13
 * "got"

- 𐌾𐌰𐌷 𐌹𐌶𐍅𐌹𐍃 𐌳𐌰𐌿𐌸𐌰𐌽𐍃 𐍅𐌹𐍃𐌰𐌽𐌳𐌰𐌽𐍃 𐌼𐌹𐍃𐍃𐌰𐌳𐌴𐌳𐌹𐌼 𐌾𐌰𐌷 𐌿𐌽𐌱𐌹𐌼𐌰𐌹𐍄𐌰 𐌻𐌴𐌹𐌺𐌹𐍃 𐌹𐌶𐍅𐌰𐍂𐌹𐍃 𐌼𐌹𐌸𐌲𐌰𐌵𐌹𐍅𐌹𐌳𐌰 𐌼𐌹𐌸 𐌹𐌼𐌼𐌰, 𐍆𐍂𐌰𐌲𐌹𐌱𐌰𐌽𐌳𐍃 𐌿𐌽𐍃 𐌰𐌻𐌻𐍉𐍃 𐌼𐌹𐍃𐍃𐌰𐌳𐌴𐌳𐌹𐌽𐍃

title: 𐌼𐌹𐌸𐌲𐌰𐌵𐌹𐌿𐌾𐌰𐌽


text: sirener

title: sirener


text: sirenerna

title: sirenerna


text: sirenens

title: sirenens


text: sireners

title: sireners


text: sirenernas

title: sirenernas


text:
কুইৰ্মা

Etymology
, from, from. Cognate with 🇨🇬,.

Noun

 * 1)  guest

title: কুইৰ্মা


text: hobbetyhoys

title: hobbetyhoys


text: hoddy peaks

title: hoddy peaks


text: hoddy-dods

title: hoddy-dods


text: hoddy-peaks

title: hoddy-peaks


text: Hoff crabs

title: Hoff crabs


text: hog jaws

title: hog jaws


text: hoihos

title: hoihos


text: holinights

title: holinights


text: holopeptides

title: holopeptides


text: holoplastocyanins

title: holoplastocyanins


text: home invaders

title: home invaders


text: home nations

title: home nations


text: home notes

title: home notes


text: home planets

title: home planets


text: homegames

title: homegames


text: Homerites

title: Homerites


text: tillför

title: tillför


text: tillförde

title: tillförde


text: 𐌼𐌹𐌸𐌲𐌰𐌵𐌹𐍅𐌹𐌳𐌰

title: 𐌼𐌹𐌸𐌲𐌰𐌵𐌹𐍅𐌹𐌳𐌰


text: tillförande

title: tillförande


text: tillfördes

title: tillfördes


text: tillförts

title: tillförts


text: tillföras

title: tillföras


text: tillförs

title: tillförs


text: tillföres

title: tillföres


text:
Bouctouche

Etymology
Borrowed from, derived in turn from the toponym , which translates to "large bay".

Etymology
The name of the town derives from the toponym, which translates to "large bay".

title: Bouctouche


text:
homo sapiens

Etymology 1
, from +.

Noun

 * 1) A human being ().

Etymology
From +.

title: homo sapiens


text: homoaconitases

title: homoaconitases


text: homoaconitates

title: homoaconitates


text: homocapitalists

title: homocapitalists


text: homodimerizers

title: homodimerizers


text: homoeoids

title: homoeoids


text: homœomorphs

title: homœomorphs


text: homoerythromycins

title: homoerythromycins


text: homofermentations

title: homofermentations


text:
tillförsel

Etymology
. Cognate of 🇨🇬.

Noun

 * 1) supply, inflow

title: tillförsel


text: tillförseln

title: tillförseln


text: tillförselns

title: tillförselns


text: tillförsels

title: tillförsels


text: User:Santi2222/Basque pronouns

title: User:Santi2222/Basque pronouns


text:
derpiness

Etymology
From.

Noun

 * 1) The quality of being derpy.

title: derpiness


text:
Grassel

Etymology
Borrowed from South.

Statistics

 * According to the 2010 United States Census, Grassel is the 40432nd most common surname in the United States, belonging to 541 individuals. Grassel is most common among White (94.09%) individuals.

title: Grassel


text: Grassels

title: Grassels


text: Buckses

title: Buckses


text:
가재미

Etymology
umlaut form of.

Usage notes
The Standard South Korean term for the flounder or flatfish is. In many regional dialects, however, the fish is known as, a phonological change due to a process of I-mutation, similar to the change between and , or  and.

title: 가재미


text:
yrsel

Noun

 * 1) dizziness, vertigo

title: yrsel


text: yrseln

title: yrseln


text: yrselns

title: yrselns


text: yrsels

title: yrsels


text:
Gibert

Etymology
Borrowed from and.

Statistics

 * According to the 2010 United States Census, Gibert is the 40432nd most common surname in the United States, belonging to 541 individuals. Gibert is most common among White (53.79%), Black/African American (29.94%) and Hispanic/Latino (11.09%) individuals.

title: Gibert


text:
pupuk

Etymology
From.

Noun

 * 1)  fertilizer, fertiliser:
 * 2) A natural substance that is used to make the ground more suitable for growing plants.
 * 3) A chemical compound created to have the same effect.
 * 1) A chemical compound created to have the same effect.

Noun

 * 1)  Fertilizer:
 * 2) A natural substance that is used to make the ground more suitable for growing plants.
 * 3) A chemical compound created to have the same effect.
 * 1) A chemical compound created to have the same effect.

Etymology
.

Adjective

 * 1) holey
 * 2) self-polluting
 * 3) ejaculated
 * 1) self-polluting
 * 2) ejaculated

title: pupuk


text:
азатчыл

Etymology
From adj. азат (free, independent) + affix -чыл.

Adjective

 * 1) freedom-loving

Noun

 * 1) love of freedom

title: азатчыл


text:
Reconstruction:Proto-Slavic/šibenica

Etymology
According to Vasmer, related to.

Noun

 * 1)  gallows

Descendants

 * East Slavic:
 * West Slavic:
 * Pomeranian:
 * Sorbian:
 * West Slavic:
 * Pomeranian:
 * Sorbian:
 * Pomeranian:
 * Sorbian:
 * Pomeranian:
 * Sorbian:
 * Pomeranian:
 * Sorbian:
 * Sorbian:

title: Reconstruction:Proto-Slavic/šibenica


text:
Caraquet

Etymology
Borrowed from, further etymology. The name may derive from the 🇨🇬 toponym, translated as "where two rivers meet".

Etymology
Etymology. The name may derive from the 🇨🇬 toponym, translated as "where two rivers meet".

title: Caraquet


text:
азатчылдык

Etymology
From.

Noun

 * 1) freedom-loving

title: азатчылдык


text:
Giambra

Etymology
Borrowed from.

Statistics

 * According to the 2010 United States Census, Giambra is the 40432nd most common surname in the United States, belonging to 541 individuals. Giambra is most common among White (94.45%) individuals.

Etymology
Variant of.

title: Giambra


text: Giambras

title: Giambras


text: Giberts

title: Giberts


text: sport bikes

title: sport bikes


text: sports centers

title: sports centers


text: sports centres

title: sports centres


text: spring quillworts

title: spring quillworts


text: springing lines

title: springing lines


text:
yrvaken

Etymology
Disputed. . Arguably the first part of the compound is more closely related to. Compare 🇨🇬, 🇨🇬.

Adjective

 * 1) drowsy, still half asleep

title: yrvaken


text: yrvakna

title: yrvakna


text: yrvakne

title: yrvakne


text:
Eshbach

Etymology
Variant spelling of.

Statistics

 * According to the 2010 United States Census, Eshbach is the 40432nd most common surname in the United States, belonging to 541 individuals. Eshbach is most common among White (95.75%) individuals.

title: Eshbach


text:
Estis

Etymology
Variant of.

Statistics

 * According to the 2010 United States Census, Estis is the 40432nd most common surname in the United States, belonging to 541 individuals. Estis is most common among White (67.84%) and Black/African American (25.88%) individuals.

title: Estis


text: Estises

title: Estises


text: Eshbachs

title: Eshbachs


text:
হাঁঠ

Etymology
. Cognate with 🇨🇬, 🇨🇬.

Noun

 * 1)  to walk

title: হাঁঠ


text:
Ezelle

Etymology
Variant spelling of.

Statistics

 * According to the 2010 United States Census, Ezelle is the 40432nd most common surname in the United States, belonging to 541 individuals. Ezelle is most common among White (87.62%) individuals.

title: Ezelle


text: yras

title: yras


text: yran

title: yran


text: yrans

title: yrans


text: yrar

title: yrar


text: yrade

title: yrade


text: yrat

title: yrat


text: yrande

title: yrande


text: yrades

title: yrades


text: yrats

title: yrats


text: yrde

title: yrde


text:
Folley

Etymology
Two main origins:
 * English topographic surname from.
 * English nickname for an eccentric or foolish person, from.

Statistics

 * According to the 2010 United States Census, Folley is the 40432nd most common surname in the United States, belonging to 541 individuals. Folley is most common among White (74.12%) and Black/African American (20.15%) individuals.

title: Folley


text:
Florenceville-Bristol

Etymology
The town is named after the communities of and.

title: Florenceville-Bristol


text:
badosan

Etymology
From.

Verb

 * 1) to impregnate

title: badosan


text:
закручувати

Etymology
From the stem of. Compare 🇨🇬, 🇨🇬, 🇨🇬.

Verb

 * 1) to twist
 * 2) to spin, to twirl
 * 3) to screw tight, to tighten

title: закручувати


text: Folleys

title: Folleys


text: Ezelles

title: Ezelles


text:
magbados

Etymology
From.

Verb

 * 1) to become pregnant
 * 2) to impregnate

title: magbados


text:
Grand Bay-Westfield

Etymology
The town is named after the communities of and.

title: Grand Bay-Westfield


text:
từ khi

Etymology
🇰🇲.

Adverb

 * 1) since

title: từ khi


text: boscases

title: boscases


text: cartas postalas

title: cartas postalas


text:
закрутити

Etymology
From. Compare 🇨🇬, 🇨🇬, 🇨🇬.

Verb

 * 1) to twist
 * 2) to spin, to twirl
 * 3) to screw tight, to tighten

title: закрутити


text: fuelhas de chaul

title: fuelhas de chaul


text: fuelhas

title: fuelhas


text: pitits noms

title: pitits noms


text: cròsses de memòria

title: cròsses de memòria


text: còps de fiau

title: còps de fiau


text: salas de minjar

title: salas de minjar


text:
phầy

Etymology
From.

Noun

 * 1) bamboo

title: phầy


text: despieches

title: despieches


text: trobairises

title: trobairises


text: volontats

title: volontats


text: safrans tua-chin

title: safrans tua-chin


text: sagèls maris

title: sagèls maris


text: safrans dels prats

title: safrans dels prats


text: penches de lop

title: penches de lop


text: lillacs d'Espanha

title: lillacs d'Espanha


text: lillacs

title: lillacs


text: lillacs de Nòstra-Dama

title: lillacs de Nòstra-Dama


text: lillacs d'Espanh

title: lillacs d'Espanh


text: lillacs blancs

title: lillacs blancs


text: pans cogons

title: pans cogons


text: alhs bords

title: alhs bords


text:
가자미

Noun

 * 1) flatfish, flounder
 * 2) any type of fish in the flounder family, i.e., plaice, sole, fluke, turbot, halibut, sand dab, etc.

Usage notes
The term is a general term used to refer to fish in the  and  families, although more specific names are often preferred when known.

title: 가자미


text: ataücs

title: ataücs


text:
Fojtik

Etymology
Borrowed from.

Statistics

 * According to the 2010 United States Census, Fojtik is the 40432nd most common surname in the United States, belonging to 541 individuals. Fojtik is most common among White (96.67%) individuals.

title: Fojtik


text: aucièras

title: aucièras


text: aurelhas d'ors

title: aurelhas d'ors


text: barcaréses

title: barcaréses


text: bernats pudents

title: bernats pudents


text: boissons negres

title: boissons negres


text:
Frankson

Etymology
From.

Statistics

 * According to the 2010 United States Census, Frankson is the 40432nd most common surname in the United States, belonging to 541 individuals. Frankson is most common among White (48.06%), American Indian/Alaska Native (24.03%) and Black/African American (19.41%) individuals.

title: Frankson


text: brèçes

title: brèçes


text: cades endormits

title: cades endormits


text:
miss-meal colic

Noun

 * 1)  weight loss via missing meals

title: miss-meal colic


text: endormida

title: endormida


text: endormits

title: endormits


text:
mellan Skylla och Karybdis

Prepositional phrase

 * 1)  between Scylla and Charybdis

title: mellan Skylla och Karybdis


text: endormidas

title: endormidas


text: platonics

title: platonics


text: platonicas

title: platonicas


text: còsses

title: còsses


text: cades morvís

title: cades morvís


text: coas de rat

title: coas de rat


text: cluèges

title: cluèges


text: ceses de lop

title: ceses de lop


text: ceses d'audor

title: ceses d'audor


text: cardons blus

title: cardons blus


text: camòmilhas salvatjas

title: camòmilhas salvatjas


text: camòmilhas romanas

title: camòmilhas romanas


text: camòmilhas pudentas

title: camòmilhas pudentas


text: guirauds pudents

title: guirauds pudents


text: cades sorbins

title: cades sorbins


text: Franksons

title: Franksons


text: Fojtiks

title: Fojtiks


text:
Reconstruction:Proto-Slavic/groxotъ

Etymology
Compare 🇨🇬, 🇨🇬, further 🇨🇬 and 🇨🇬.

Some scholars, (Mladenov), argue for an onomatopoeic origin.

Noun

 * 1) rumble, thud

Descendants

 * East Slavic:
 * South Slavic:
 * West Slavic:
 * South Slavic:
 * West Slavic:
 * West Slavic:
 * West Slavic:
 * West Slavic:
 * West Slavic:
 * West Slavic:

title: Reconstruction:Proto-Slavic/groxotъ


text: èrbas desenfladuras

title: èrbas desenfladuras


text: èrbas

title: èrbas


text: endreches

title: endreches


text: espins negres

title: espins negres


text: gensemins salvatges

title: gensemins salvatges


text: gensemins

title: gensemins


text: grands paires

title: grands paires


text: lachugas lombardas

title: lachugas lombardas


text: lachugas

title: lachugas


text: liris de mar

title: liris de mar


text: liris de Nòva Zelanda

title: liris de Nòva Zelanda


text: liris roges

title: liris roges


text: liris salvatges

title: liris salvatges


text: maus de mar

title: maus de mar


text: moges blancs

title: moges blancs


text: moges

title: moges


text: moges de Narbona

title: moges de Narbona


text: moges negres

title: moges negres


text: mojas blancas

title: mojas blancas


text: mojas de montanha

title: mojas de montanha


text: mojas de Narbona

title: mojas de Narbona


text: mojas negras

title: mojas negras


text: naps del diable

title: naps del diable


text: pastisses

title: pastisses


text: pitas culòtas

title: pitas culòtas


text: puèges

title: puèges


text: saumas de Bigòrra

title: saumas de Bigòrra


text: saumas

title: saumas


text: tartugas de palús

title: tartugas de palús


text: tartugas

title: tartugas


text: tartugues

title: tartugues


text: taulas de nuech

title: taulas de nuech


text: tròces

title: tròces


text: volps

title: volps


text: èrbas d'abelha

title: èrbas d'abelha


text: èrbas de cocut

title: èrbas de cocut


text: èrbas de cordon

title: èrbas de cordon


text:
Marichal

Etymology
Borrowed from.

Statistics

 * According to the 2010 United States Census, Marichal is the 40432nd most common surname in the United States, belonging to 541 individuals. Marichal is most common among Hispanic/Latino (88.91%) individuals.

title: Marichal