function methods.CreateFadeFunctions(u,a)local O={}for a,u in pairs(a)do O[a]={}for u,C in pairs(u)do O[a][u]={Target=C.FadedIn;Current=a[u];NormalizedExptValue=1}end end local function C(u,C)for O,p in pairs(O)do for p,d in pairs(p)do d.Target=a[O][p].FadedIn d.NormalizedExptValue=C:NormalizedDefaultExptValueInSeconds(u)end end end local function p(u,C)for O,p in pairs(O)do for p,d in pairs(p)do d.Target=a[O][p].FadedOut d.NormalizedExptValue=C:NormalizedDefaultExptValueInSeconds(u)end end end local function d()for a,u in pairs(O)do for u,O in pairs(u)do a[u]=O.Current end end end local function b(a,u)for O,C in pairs(O)do for O,C in pairs(C)do C.Current=u:Expt(C.Current,C.Target,C.NormalizedExptValue,a)end end d()end return C,p,b end function methods.NewBindableEvent(u,a)local O=Instance.new("\066\105\110\100\097\098\108\101\069\118\101\110\116")O.Name=a return O end

function methods:CreateFadeFunctions(fadeObjects)
	local AnimParams = {}
	for object, properties in pairs(fadeObjects) do
		AnimParams[object] = {}
		for property, values in pairs(properties) do
			AnimParams[object][property] = {
				Target = values.FadedIn,
				Current = object[property],
				NormalizedExptValue = 1,
			}
		end
	end

	local function FadeInFunction(duration, CurveUtil)
		for object, properties in pairs(AnimParams) do
			for property, values in pairs(properties) do
				values.Target = fadeObjects[object][property].FadedIn
				values.NormalizedExptValue = CurveUtil:NormalizedDefaultExptValueInSeconds(duration)
			end
		end
	end

	local function FadeOutFunction(duration, CurveUtil)
		for object, properties in pairs(AnimParams) do
			for property, values in pairs(properties) do
				values.Target = fadeObjects[object][property].FadedOut
				values.NormalizedExptValue = CurveUtil:NormalizedDefaultExptValueInSeconds(duration)
			end
		end
	end

	local function AnimGuiObjects()
		for object, properties in pairs(AnimParams) do
			for property, values in pairs(properties) do
				object[property] = values.Current
			end
		end
	end

	local function UpdateAnimFunction(dtScale, CurveUtil)
		for object, properties in pairs(AnimParams) do
			for property, values in pairs(properties) do
				values.Current = CurveUtil:Expt(
					values.Current,
					values.Target,
					values.NormalizedExptValue,
					dtScale
				)
			end
		end

		AnimGuiObjects()
	end

	return FadeInFunction, FadeOutFunction, UpdateAnimFunction
end

function methods:NewBindableEvent(name)
	local bindable = Instance.new("BindableEvent")
	bindable.Name = name
	return bindable
end
