function splitbyte(q)local y,K,b=string.byte(q),128,{false;false;false,false,false;false;false;false}for q=1,8,1 do if y>=K then b[q],y=true,y-K end K=K/2 end return b end function formbyte(...)local q=0 for y=1,8,1 do local K=select(y,...)if K then q=q+2^(8-y)end end return string.char(q)end local q="\102"function deflate(y,...)return string.pack(string.rep(y or q,#{...}),...)end function flate(y,K,b)return string.unpack(string.rep(y or q,b),K)end function getNativeSize(y)return#string.pack(y or q,1)end

function splitbyte(input)
	local byte,p,flags = string.byte(input),128,{false,false,false,false,false,false,false,false}
	for i=1,8 do
		if byte>=p then flags[i],byte = true,byte-p end
		p=p/2
	end
	return flags
end
function formbyte(...)
	local byte = 0
	for p=1,8 do
		local bit=select(p,...)
		if bit then byte=byte+2^(8-p) end
	end
	return string.char(byte)
end
local valueType = "f"
function deflate(forceType,...) 
	return string.pack(string.rep(forceType or valueType,#{...}),...)
end 
function flate(forceType,raw,n)
	return string.unpack(string.rep(forceType or valueType,n),raw)
end 

function getNativeSize(forceType) 
	return #string.pack(forceType or valueType ,1) 
end