local G={}G.__index=G G.ClassName="\083\105\103\110\097\108"function G.new()local a=setmetatable({},G)a._bindableEvent=Instance.new("\066\105\110\100\097\098\108\101\069\118\101\110\116")a._argData=nil a._argCount=nil return a end function G.Fire(G,...)G._argData={...}G._argCount=select("\035",...)G._bindableEvent:Fire()G._argData=nil G._argCount=nil end function G.Connect(G,a)if type(a)~="\102\117\110\099\116\105\111\110"then error(("\099\111\110\110\101\099\116\040\037\115\041"):format(typeof(a)),2)end return G._bindableEvent.Event:Connect(function()a(unpack(G._argData,1,G._argCount))end)end function G.Wait(G)G._bindableEvent.Event:Wait()assert(G._argData,"\077\105\115\115\105\110\103 \097\114\103 \100\097\116\097\044 \108\105\107\101\108\121 \100\117\101 \116\111 \058\084\119\101\101\110\083\105\122\101\047\080\111\115\105\116\105\111\110 \099\111\114\114\117\112\116\105\110\103 \116\104\114\101\097\100\114\101\102\115\046")return unpack(G._argData,1,G._argCount)end function G.Destroy(G)if G._bindableEvent then G._bindableEvent:Destroy()G._bindableEvent=nil end G._argData=nil G._argCount=nil end function G.Disconnect(G)G:Destroy()end return G


local v1 = {};
v1.__index = v1;
v1.ClassName = "Signal";
function v1.new()
	local v2 = setmetatable({}, v1);
	v2._bindableEvent = Instance.new("BindableEvent");
	v2._argData = nil;
	v2._argCount = nil;
	return v2;
end;
function v1.Fire(p1, ...)
	p1._argData = { ... };
	p1._argCount = select("#", ...);
	p1._bindableEvent:Fire();
	p1._argData = nil;
	p1._argCount = nil;
end;
function v1.Connect(p2, p3)
	if type(p3) ~= "function" then
		error(("connect(%s)"):format(typeof(p3)), 2);
	end;
	return p2._bindableEvent.Event:Connect(function()
		p3(unpack(p2._argData, 1, p2._argCount));
	end);
end;
function v1.Wait(p4)
	p4._bindableEvent.Event:Wait();
	assert(p4._argData, "Missing arg data, likely due to :TweenSize/Position corrupting threadrefs.");
	return unpack(p4._argData, 1, p4._argCount);
end;
function v1.Destroy(p5)
	if p5._bindableEvent then
		p5._bindableEvent:Destroy();
		p5._bindableEvent = nil;
	end;
	p5._argData = nil;
	p5._argCount = nil;
end;
function v1.Disconnect(p6)
	p6:Destroy();
end;
return v1;
