local v=require((game:GetService("\082\101\112\108\105\099\097\116\101\100\083\116\111\114\097\103\101")):WaitForChild("\078\101\118\101\114\109\111\114\101"))local E=game:GetService("\080\108\097\121\101\114\115")local F=v("\066\105\110\100\101\114")local N=setmetatable({},F)N.ClassName="\080\108\097\121\101\114\066\105\110\100\101\114"N.__index=N function N.new(v,E)local Q=setmetatable(F.new(v,E),N)return Q end function N.Init(v)local F={(getmetatable(N)).Init(v)}v._maid:GiveTask(E.PlayerAdded:Connect(function(E)v:Bind(E)end))for E,F in pairs(E:GetPlayers())do v:Bind(F)end return unpack(F)end return N
--- Binds the given class to each player in the game
-- @classmod PlayerBinder

local require = require(game:GetService("ReplicatedStorage"):WaitForChild("Nevermore"))

local Players = game:GetService("Players")

local Binder = require("Binder")

local PlayerBinder = setmetatable({}, Binder)
PlayerBinder.ClassName = "PlayerBinder"
PlayerBinder.__index = PlayerBinder

function PlayerBinder.new(tag, class)
	local self = setmetatable(Binder.new(tag, class), PlayerBinder)

	return self
end

function PlayerBinder:Init()
	local results = { getmetatable(PlayerBinder).Init(self) }

	self._maid:GiveTask(Players.PlayerAdded:Connect(function(player)
		self:Bind(player)
	end))
	for _, item in pairs(Players:GetPlayers()) do
		self:Bind(item)
	end

	return unpack(results)
end

return PlayerBinder