local function y(w)local s={}for w,X in pairs(w)do if type(X)=="\116\097\098\108\101"then s[w]=y(X)else s[w]=X end end return s end local function w(s,X)for X,H in pairs(X)do if type(X)=="\115\116\114\105\110\103"then if s[X]==nil then if type(H)=="\116\097\098\108\101"then s[X]=y(H)else s[X]=H end elseif type(s[X])=="\116\097\098\108\101"and type(H)=="\116\097\098\108\101"then w(s[X],H)end end end end


local function DeepCopyTable(t)
	local copy = {}
	for key, value in pairs(t) do
		if type(value) == "table" then
			copy[key] = DeepCopyTable(value)
		else
			copy[key] = value
		end
	end
	return copy
end

local function ReconcileTable(target, template)
	for k, v in pairs(template) do
		if type(k) == "string" then -- Only string keys will be reconciled
			if target[k] == nil then
				if type(v) == "table" then
					target[k] = DeepCopyTable(v)
				else
					target[k] = v
				end
			elseif type(target[k]) == "table" and type(v) == "table" then
				ReconcileTable(target[k], v)
			end
		end
	end
end
