local b=math.min local y=math.max local V=math.cos local S=math.sin local X=math.pi local U=Vector3.new local G=U(0,0,0)local function L(b,...)local y={}local V=""for b,S in pairs({...})do y[S]=true V=V..((V==""and""or" \111\114 ")..S)end local S=type(b)assert(y[S],V..(" \116\121\112\101 \101\120\112\101\099\116\101\100\044 \103\111\116\058 "..S))end
---------------
--| Utility |--
---------------

local math_min = math.min
local math_max = math.max
local math_cos = math.cos
local math_sin = math.sin
local math_pi = math.pi

local Vector3_new = Vector3.new
local ZERO_VECTOR3 = Vector3_new(0, 0, 0)

local function AssertTypes(param, ...)
	local allowedTypes = {}
	local typeString = ""
	for _, typeName in pairs({ ... }) do
		allowedTypes[typeName] = true
		typeString = typeString .. (typeString == "" and "" or " or ") .. typeName
	end
	local theType = type(param)
	assert(allowedTypes[theType], typeString .. " type expected, got: " .. theType)
end
