diff --git a/CSMPFunctions.lua b/CSMPFunctions.lua
index 7c9a58e..d9fdde5 100644
--- a/CSMPFunctions.lua
+++ b/CSMPFunctions.lua
@@ -1,49 +1,75 @@
+rbxlegacyversion = ""
+
-- VERSION CODENAME DOCUMENTATION
+-- -------------------------------------------------------------
-- pre-alpha
-- - Mid-2008 or lower.
-- - Support for "fake" 2006/2007 clients, or the real things.
-- - Uses Legacy joinscript.
-- - Does not support hats or any other form of customization besides body colors.
+-- -------------------------------------------------------------
-- pre-alpha-ext
-- - Mid-2008 or lower.
-- - Support for "fake" 2006/2007 clients, or the real things.
-- - Uses Legacy joinscript.
--- - Supports most kinds of customization.
+-- - Supports only hats, body colors, and T-Shirts.
+-- -------------------------------------------------------------
-- alpha
-- - Mid-2008 or lower.
-- - Uses Legacy joinscript.
--- - Supports most kinds of customization.
+-- - Supports only hats, body colors, T-Shirts, shirts, and pants.
+-- -------------------------------------------------------------
-- beta
-- - Late-2008-Early 2009.
-- - Uses Legacy joinscript.
--- - Supports most kinds of customization.
+-- - Supports only hats, body colors, T-Shirts, shirts, and pants.
+-- -------------------------------------------------------------
+-- delta-beta
+-- - Late-2008-Early 2009.
+-- - Uses RBXPri joinscript.
+-- - Supports only hats, body colors, T-Shirts, shirts, and pants.
+-- -------------------------------------------------------------
-- pre-gamma
-- - Late-2009-Early 2010.
-- - Uses Legacy joinscript.
--- - Supports most kinds of customization.
+-- - Supports all kinds of customization.
+-- -------------------------------------------------------------
-- delta-pre-gamma
-- - Late-2009-Early 2010.
-- - Uses RBXPri joinscript.
--- - Supports most kinds of customization.
+-- - Supports all kinds of customization.
+-- -------------------------------------------------------------
-- gamma
-- - Mid-2010-November 2010.
-- - Uses Legacy joinscript.
--- - Supports most kinds of customization.
+-- - Supports all kinds of customization.
+-- -------------------------------------------------------------
-- delta-gamma
-- - Mid-2010-November 2010.
-- - Uses RBXPri joinscript.
--- - Supports most kinds of customization.
+-- - Supports all kinds of customization.
+-- -------------------------------------------------------------
-- delta
-- - December-2010-Early 2011.
-- - Uses RBXPri joinscript.
-- - Supports the more modern 2011 user interface.
--- - Supports most kinds of customization.
+-- - Supports all kinds of customization.
+-- -------------------------------------------------------------
+-- delta-omega
+-- - Mid-2011-Early-2012.
+-- - Uses RBXPri joinscript.
+-- - Supports the more modern 2011 user interface.
+-- - Supports all kinds of customization.
+-- -------------------------------------------------------------
-- omega
--- - Mid-2011-???.
+-- - Mid-2011-Early-2012.
-- - Uses RBXPri joinscript.
-- - Meant for more modern clients which don't use early 2011's UI.
--- - Supports most kinds of customization.
-rbxlegacyversion = ""
+-- - Supports all kinds of customization.
+-- -------------------------------------------------------------
+-- Don't edit anything below unless you know what you are doing.
+-- -------------------------------------------------------------
+
if (rbxlegacyversion == "pre-alpha") then
settings().Rendering.frameRateManager = 2;
settings().Rendering.graphicsMode = 2;
@@ -66,6 +92,10 @@ elseif (rbxlegacyversion == "beta") then
settings().Rendering.FrameRateManager = 2;
settings().Network.SendRate = 30;
settings().Network.ReceiveRate = 60;
+elseif (rbxlegacyversion == "delta-beta") then
+ settings().Rendering.FrameRateManager = 2;
+ settings().Network.SendRate = 30;
+ settings().Network.ReceiveRate = 60;
elseif (rbxlegacyversion == "pre-gamma") then
settings().Rendering.FrameRateManager = 2;
settings().Network.DataSendRate = 30;
@@ -81,30 +111,42 @@ elseif (rbxlegacyversion == "gamma") then
settings().Network.DataSendRate = 30;
settings().Network.PhysicsSendRate = 20;
settings().Network.ReceiveRate = 60;
-elseif (rbxlegacyversion == "delta-gamma") then -- october 2010
+ pcall(function() game:GetService("ScriptContext").ScriptsDisabled = false end);
+ pcall(function() settings().Diagnostics:LegacyScriptMode() end);
+elseif (rbxlegacyversion == "delta-gamma") then
settings().Rendering.FrameRateManager = 2;
settings().Network.DataSendRate = 30;
settings().Network.PhysicsSendRate = 20;
settings().Network.ReceiveRate = 60;
-elseif (rbxlegacyversion == "delta") then -- late 2010-early 2011.
+ pcall(function() game:GetService("ScriptContext").ScriptsDisabled = false end);
+ pcall(function() settings().Diagnostics:LegacyScriptMode() end);
+elseif (rbxlegacyversion == "delta") then
settings().Rendering.FrameRateManager = 2;
-
- game:GetService("CoreGui").DescendantAdded:connect(function(Child)
- if (Child:IsA("BaseScript")) and (Child.Name~="SubMenuBuilder") and (Child.Name~="ToolTipper") and (Child.Name~="MainBotChatScript") then
- Child:Remove();
- end
- end)
-
- coroutine.resume(coroutine.create(function()
- while not game:GetService("CoreGui"):FindFirstChild("RobloxGui") do game:GetService("CoreGui").ChildAdded:wait(); end
- game:GetService("CoreGui").RobloxGui.TopLeftControl:Remove();
- end))
-
+ pcall(function() game:GetService("ScriptContext").ScriptsDisabled = false end);
+ pcall(function() settings().Diagnostics:LegacyScriptMode() end);
coroutine.resume(coroutine.create(function()
loadstring('\108\111\99\97\108\32\67\111\114\101\71\117\105\32\61\32\103\97\109\101\58\71\101\116\83\101\114\118\105\99\101\40\34\67\111\114\101\71\117\105\34\41\59\10\119\104\105\108\101\32\110\111\116\32\67\111\114\101\71\117\105\58\70\105\110\100\70\105\114\115\116\67\104\105\108\100\40\34\82\111\98\108\111\120\71\117\105\34\41\32\100\111\10\9\67\111\114\101\71\117\105\46\67\104\105\108\100\65\100\100\101\100\58\119\97\105\116\40\41\59\10\101\110\100\10\108\111\99\97\108\32\82\111\98\108\111\120\71\117\105\32\61\32\67\111\114\101\71\117\105\46\82\111\98\108\111\120\71\117\105\59\10\108\111\99\97\108\32\66\111\116\116\111\109\76\101\102\116\67\111\110\116\114\111\108\32\61\32\82\111\98\108\111\120\71\117\105\58\70\105\110\100\70\105\114\115\116\67\104\105\108\100\40\34\66\111\116\116\111\109\76\101\102\116\67\111\110\116\114\111\108\34\41\10\108\111\99\97\108\32\66\111\116\116\111\109\82\105\103\104\116\67\111\110\116\114\111\108\32\61\32\82\111\98\108\111\120\71\117\105\58\70\105\110\100\70\105\114\115\116\67\104\105\108\100\40\34\66\111\116\116\111\109\82\105\103\104\116\67\111\110\116\114\111\108\34\41\10\108\111\99\97\108\32\84\111\112\76\101\102\116\67\111\110\116\114\111\108\32\61\32\82\111\98\108\111\120\71\117\105\58\70\105\110\100\70\105\114\115\116\67\104\105\108\100\40\34\84\111\112\76\101\102\116\67\111\110\116\114\111\108\34\41\10\108\111\99\97\108\32\66\117\105\108\100\84\111\111\108\115\32\61\32\82\111\98\108\111\120\71\117\105\58\70\105\110\100\70\105\114\115\116\67\104\105\108\100\40\34\66\117\105\108\100\84\111\111\108\115\34\41\10\102\117\110\99\116\105\111\110\32\109\97\107\101\89\82\101\108\97\116\105\118\101\40\41\10\66\111\116\116\111\109\76\101\102\116\67\111\110\116\114\111\108\46\83\105\122\101\67\111\110\115\116\114\97\105\110\116\32\61\32\50\10\66\111\116\116\111\109\82\105\103\104\116\67\111\110\116\114\111\108\46\83\105\122\101\67\111\110\115\116\114\97\105\110\116\32\61\32\50\10\105\102\32\84\111\112\76\101\102\116\67\111\110\116\114\111\108\32\116\104\101\110\32\84\111\112\76\101\102\116\67\111\110\116\114\111\108\46\83\105\122\101\67\111\110\115\116\114\97\105\110\116\32\61\32\50\32\101\110\100\10\105\102\32\66\117\105\108\100\84\111\111\108\115\32\116\104\101\110\32\66\117\105\108\100\84\111\111\108\115\46\70\114\97\109\101\46\83\105\122\101\67\111\110\115\116\114\97\105\110\116\32\61\32\50\32\101\110\100\10\66\111\116\116\111\109\76\101\102\116\67\111\110\116\114\111\108\46\80\111\115\105\116\105\111\110\32\61\32\85\68\105\109\50\46\110\101\119\40\48\44\48\44\49\44\45\66\111\116\116\111\109\76\101\102\116\67\111\110\116\114\111\108\46\65\98\115\111\108\117\116\101\83\105\122\101\46\89\41\10\66\111\116\116\111\109\82\105\103\104\116\67\111\110\116\114\111\108\46\80\111\115\105\116\105\111\110\32\61\32\85\68\105\109\50\46\110\101\119\40\49\44\45\66\111\116\116\111\109\82\105\103\104\116\67\111\110\116\114\111\108\46\65\98\115\111\108\117\116\101\83\105\122\101\46\88\44\49\44\45\66\111\116\116\111\109\82\105\103\104\116\67\111\110\116\114\111\108\46\65\98\115\111\108\117\116\101\83\105\122\101\46\89\41\10\101\110\100\10\102\117\110\99\116\105\111\110\32\109\97\107\101\88\82\101\108\97\116\105\118\101\40\41\10\66\111\116\116\111\109\76\101\102\116\67\111\110\116\114\111\108\46\83\105\122\101\67\111\110\115\116\114\97\105\110\116\32\61\32\49\10\66\111\116\116\111\109\82\105\103\104\116\67\111\110\116\114\111\108\46\83\105\122\101\67\111\110\115\116\114\97\105\110\116\32\61\32\49\10\105\102\32\84\111\112\76\101\102\116\67\111\110\116\114\111\108\32\116\104\101\110\32\84\111\112\76\101\102\116\67\111\110\116\114\111\108\46\83\105\122\101\67\111\110\115\116\114\97\105\110\116\32\61\32\49\32\101\110\100\10\105\102\32\66\117\105\108\100\84\111\111\108\115\32\116\104\101\110\32\66\117\105\108\100\84\111\111\108\115\46\70\114\97\109\101\46\83\105\122\101\67\111\110\115\116\114\97\105\110\116\32\61\32\49\32\101\110\100\10\66\111\116\116\111\109\76\101\102\116\67\111\110\116\114\111\108\46\80\111\115\105\116\105\111\110\32\61\32\85\68\105\109\50\46\110\101\119\40\48\44\48\44\49\44\45\66\111\116\116\111\109\76\101\102\116\67\111\110\116\114\111\108\46\65\98\115\111\108\117\116\101\83\105\122\101\46\89\41\10\66\111\116\116\111\109\82\105\103\104\116\67\111\110\116\114\111\108\46\80\111\115\105\116\105\111\110\32\61\32\85\68\105\109\50\46\110\101\119\40\49\44\45\66\111\116\116\111\109\82\105\103\104\116\67\111\110\116\114\111\108\46\65\98\115\111\108\117\116\101\83\105\122\101\46\88\44\49\44\45\66\111\116\116\111\109\82\105\103\104\116\67\111\110\116\114\111\108\46\65\98\115\111\108\117\116\101\83\105\122\101\46\89\41\10\101\110\100\10\108\111\99\97\108\32\102\117\110\99\116\105\111\110\32\114\101\115\105\122\101\40\41\10\105\102\32\82\111\98\108\111\120\71\117\105\46\65\98\115\111\108\117\116\101\83\105\122\101\46\120\32\62\32\82\111\98\108\111\120\71\117\105\46\65\98\115\111\108\117\116\101\83\105\122\101\46\121\32\116\104\101\110\10\109\97\107\101\89\82\101\108\97\116\105\118\101\40\41\10\101\108\115\101\10\109\97\107\101\88\82\101\108\97\116\105\118\101\40\41\10\101\110\100\10\101\110\100\10\82\111\98\108\111\120\71\117\105\46\67\104\97\110\103\101\100\58\99\111\110\110\101\99\116\40\102\117\110\99\116\105\111\110\40\112\114\111\112\101\114\116\121\41\10\105\102\32\112\114\111\112\101\114\116\121\32\61\61\32\34\65\98\115\111\108\117\116\101\83\105\122\101\34\32\116\104\101\110\10\119\97\105\116\40\41\10\114\101\115\105\122\101\40\41\10\101\110\100\10\101\110\100\41\10\119\97\105\116\40\41\10\114\101\115\105\122\101\40\41\10')()
end))
-elseif (rbxlegacyversion == "omega") then -- mid 2011 and above, or if you are trying to use RBXPri code.
+ coroutine.resume(coroutine.create(function()
+ for _,v in pairs(game:GetChildren()) do
+ if v.Name == "GuiRoot" then
+ coroutine.resume(coroutine.create(function()
+ v.ScoreHud.Parent = nil
+ end)) end end end))
+elseif (rbxlegacyversion == "delta-omega") then
settings().Rendering.FrameRateManager = 2;
+ pcall(function() game:GetService("ScriptContext").ScriptsDisabled = false end);
+ pcall(function() settings().Diagnostics:LegacyScriptMode() end);
+ coroutine.resume(coroutine.create(function()
+ for _,v in pairs(game:GetChildren()) do
+ if v.Name == "GuiRoot" then
+ coroutine.resume(coroutine.create(function()
+ v.ScoreHud.Parent = nil
+ end)) end end end))
+elseif (rbxlegacyversion == "omega") then
+ settings().Rendering.FrameRateManager = 2;
+ pcall(function() game:GetService("ScriptContext").ScriptsDisabled = false end);
+ pcall(function() settings().Diagnostics:LegacyScriptMode() end);
end
rbxversion = version();
@@ -142,11 +184,65 @@ function LoadCharacterNew(playerApp,newChar)
end
end)
end
+ elseif (newVal.CustomizationType.Value == 3) then
+ if (rbxlegacyversion ~= "pre-alpha") then
+ pcall(function()
+ local newTShirt = game.Workspace:InsertContent("http://www.roblox.com/asset/?id="..newVal.Value)
+ if newTShirt[1] then
+ if newTShirt[1].className == "ShirtGraphic" then
+ newTShirt[1].Parent = newChar
+ else
+ newTShirt[1]:remove()
+ end
+ end
+ end)
+ end
+ elseif (newVal.CustomizationType.Value == 4) then
+ if (rbxlegacyversion ~= "pre-alpha" or rbxlegacyversion ~= "pre-alpha-ext") then
+ pcall(function()
+ local newShirt = game.Workspace:InsertContent("http://www.roblox.com/asset/?id="..newVal.Value)
+ if newShirt[1] then
+ if newShirt[1].className == "Shirt" then
+ newShirt[1].Parent = newChar
+ else
+ newShirt[1]:remove()
+ end
+ end
+ end)
+ end
+ elseif (newVal.CustomizationType.Value == 5) then
+ if (rbxlegacyversion ~= "pre-alpha" or rbxlegacyversion ~= "pre-alpha-ext") then
+ pcall(function()
+ local newPants = game.Workspace:InsertContent("http://www.roblox.com/asset/?id="..newVal.Value)
+ if newPants[1] then
+ if newPants[1].className == "Pants" then
+ newPants[1].Parent = newChar
+ else
+ newPants[1]:remove()
+ end
+ end
+ end)
+ end
+ elseif (newVal.CustomizationType.Value == 6) then
+ if (rbxlegacyversion ~= "pre-alpha" or rbxlegacyversion ~= "pre-alpha-ext" or rbxlegacyversion ~= "alpha" or rbxlegacyversion ~= "beta" or rbxlegacyversion ~= "delta-beta") then
+ pcall(function()
+ local newFace = game.Workspace:InsertContent("http://www.roblox.com/asset/?id="..newVal.Value)
+ if newFace[1] then
+ if newFace[1].className == "Decal" then
+ newWaitForChild(charparts[1],"face"):remove()
+ newFace[1].Parent = charparts[1]
+ newFace[1].Face = "Front"
+ else
+ newFace[1]:remove()
+ end
+ end
+ end)
+ end
end
end
end
-function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID)
+function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID)
local newCharApp = Instance.new("IntValue",Player);
newCharApp.Name = "Appearance";
--BODY COLORS
@@ -208,7 +304,7 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
for i=1,3,1 do
local newHat = Instance.new("StringValue",newCharApp);
if (i == 1) then
- if (RightLegColorID ~= nil) then
+ if (Hat1ID ~= nil) then
newHat.Value = Hat1ID;
newHat.Name = Hat1ID;
else
@@ -216,7 +312,7 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
newHat.Name = "NoHat.rbxm";
end
elseif (i == 2) then
- if (RightLegColorID ~= nil) then
+ if (Hat2ID ~= nil) then
newHat.Value = Hat2ID;
newHat.Name = Hat2ID;
else
@@ -224,7 +320,7 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
newHat.Name = "NoHat.rbxm";
end
elseif (i == 3) then
- if (RightLegColorID ~= nil) then
+ if (Hat3ID ~= nil) then
newHat.Value = Hat3ID;
newHat.Name = Hat3ID;
else
@@ -237,15 +333,65 @@ function InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,Torso
typeValue.Parent = newHat;
typeValue.Value = 2;
end
+ --T-SHIRT
+ local newTShirt = Instance.new("StringValue",newCharApp);
+ if (TShirtID ~= nil or TShirtID ~= "0") then
+ newTShirt.Value = TShirtID;
+ else
+ newTShirt.Value = "0";
+ end
+ newTShirt.Name = "T-Shirt";
+ local typeValue = Instance.new("NumberValue");
+ typeValue.Name = "CustomizationType";
+ typeValue.Parent = newTShirt;
+ typeValue.Value = 3;
+ --SHIRT
+ local newShirt = Instance.new("StringValue",newCharApp);
+ if (ShirtID ~= nil or ShirtID ~= "0") then
+ newShirt.Value = ShirtID;
+ else
+ newShirt.Value = "0";
+ end
+ newShirt.Name = "Shirt";
+ local typeValue = Instance.new("NumberValue");
+ typeValue.Name = "CustomizationType";
+ typeValue.Parent = newShirt;
+ typeValue.Value = 4;
+ --PANTS
+ local newPants = Instance.new("StringValue",newCharApp);
+ if (PantsID ~= nil or PantsID ~= "0") then
+ newPants.Value = PantsID;
+ else
+ newPants.Value = "0";
+ end
+ newPants.Name = "Pants";
+ local typeValue = Instance.new("NumberValue");
+ typeValue.Name = "CustomizationType";
+ typeValue.Parent = newPants;
+ typeValue.Value = 5;
+ --FACE
+ local newFace = Instance.new("StringValue",newCharApp);
+ if (FaceID ~= nil or FaceID ~= "0") then
+ newFace.Value = FaceID;
+ else
+ newFace.Value = "0";
+ end
+ newFace.Name = "Face";
+ local typeValue = Instance.new("NumberValue");
+ typeValue.Name = "CustomizationType";
+ typeValue.Parent = newFace;
+ typeValue.Value = 6;
end
function CSServer(Port,PlayerLimit)
- if (rbxlegacyversion == "delta" or rbxlegacyversion == "delta-gamma" or rbxlegacyversion == "omega" or rbxlegacyversion == "delta-pre-gamma") then
+ if (rbxlegacyversion == "delta" or rbxlegacyversion == "delta-gamma" or rbxlegacyversion == "omega" or rbxlegacyversion == "delta-pre-gamma" or rbxlegacyversion == "delta-omega" or rbxlegacyversion == "delta-beta") then
assert((type(Port)~="number" or tonumber(Port)~=nil or Port==nil),"CSRun Error: Port must be nil or a number.");
local NetworkServer=game:GetService("NetworkServer");
pcall(NetworkServer.Stop,NetworkServer);
NetworkServer:Start(Port);
- game:GetService("Players").MaxPlayers = PlayerLimit
+ if (rbxlegacyversion ~= "omega") then
+ game:GetService("Players").MaxPlayers = PlayerLimit;
+ end
game:GetService("Players").PlayerAdded:connect(function(Player)
if (game:GetService("Players").NumPlayers > game:GetService("Players").MaxPlayers) then
local message = Instance.new("Message")
@@ -279,8 +425,10 @@ function CSServer(Port,PlayerLimit)
game.Workspace:InsertContent("rbxasset://Fonts//Health2010.rbxm");
elseif (rbxlegacyversion == "delta") then
game.Workspace:InsertContent("rbxasset://Fonts//Health2011.rbxm");
- elseif (rbxlegacyversion == "omega") then
+ game.Workspace:InsertContent("rbxasset://Fonts//CoreGui2011.rbxm");
+ elseif (rbxlegacyversion == "omega" or rbxlegacyversion == "delta-omega") then
game.Workspace:InsertContent("rbxasset://Fonts//Health2012.rbxm");
+ game.Workspace:InsertContent("rbxasset://Fonts//CoreGui2012.rbxm");
end
pcall(function() game.Close:connect(function() NetworkServer:Stop(); end) end);
NetworkServer.IncommingConnection:connect(IncommingConnection);
@@ -330,20 +478,10 @@ function CSServer(Port,PlayerLimit)
end
end
-function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,Ticket)
- if (rbxlegacyversion == "delta" or rbxlegacyversion == "delta-gamma" or rbxlegacyversion == "omega" or rbxlegacyversion == "delta-pre-gamma") then
+function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,Ticket)
+ if (rbxlegacyversion == "delta" or rbxlegacyversion == "delta-gamma" or rbxlegacyversion == "omega" or rbxlegacyversion == "delta-pre-gamma" or rbxlegacyversion == "delta-omega" or rbxlegacyversion == "delta-beta") then
pcall(function() game:SetPlaceID(-1, false) end);
pcall(function() game:GetService("Players"):SetChatStyle(Enum.ChatStyle.ClassicAndBubble) end);
-
- pcall(function()
- game:GetService("GuiService").Changed:connect(function()
- pcall(function() game:GetService("GuiService").ShowLegacyPlayerList=true; end);
- pcall(function() game.CoreGui.RobloxGui.PlayerListScript:Remove(); end);
- pcall(function() game.CoreGui.RobloxGui.PlayerListTopRightFrame:Remove(); end);
- pcall(function() game.CoreGui.RobloxGui.BigPlayerListWindowImposter:Remove(); end);
- pcall(function() game.CoreGui.RobloxGui.BigPlayerlist:Remove(); end);
- end);
- end)
game:GetService("RunService"):Run();
assert((ServerIP~=nil and ServerPort~=nil),"CSConnect Error: ServerIP and ServerPort must be defined.");
local function SetMessage(Message) game:SetMessage(Message); end
@@ -431,21 +569,16 @@ function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,He
pcall(function() Player.Name=PlayerName or ""; end);
pcall(function() Visit:SetUploadUrl(""); end);
game:GetService("Visit");
- InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID);
+ if (rbxlegacyversion == "delta") then
+ game.CoreGui.RobloxGui.TopLeftControl.Help.Active = true;
+ elseif (rbxlegacyversion == "omega" or rbxlegacyversion == "delta-omega") then
+ game.CoreGui.RobloxGui.ControlFrame.BottomRightControl.Help.Active = true;
+ end
+ InitalizeClientAppearance(Player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID);
else
pcall(function() game:SetPlaceID(-1, false) end);
pcall(function() game:GetService("Players"):SetChatStyle(Enum.ChatStyle.ClassicAndBubble) end);
- pcall(function()
- game:GetService("GuiService").Changed:connect(function()
- pcall(function() game:GetService("GuiService").ShowLegacyPlayerList=true; end);
- pcall(function() game.CoreGui.RobloxGui.PlayerListScript:Remove(); end);
- pcall(function() game.CoreGui.RobloxGui.PlayerListTopRightFrame:Remove(); end);
- pcall(function() game.CoreGui.RobloxGui.BigPlayerListWindowImposter:Remove(); end);
- pcall(function() game.CoreGui.RobloxGui.BigPlayerlist:Remove(); end);
- end);
- end)
-
local suc, err = pcall(function()
client = game:GetService("NetworkClient")
player = game:GetService("Players"):CreateLocalPlayer(UserID)
@@ -456,7 +589,7 @@ function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,He
player.CharacterAppearance=0;
pcall(function() player.Name=PlayerName or ""; end);
game:GetService("Visit");
- InitalizeClientAppearance(player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID);
+ InitalizeClientAppearance(player,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID);
end)
local function dieerror(errmsg)
@@ -506,11 +639,15 @@ function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,He
client.ConnectionRejected:connect(rejected)
client.ConnectionFailed:connect(failed)
client:Connect(ServerIP,ServerPort, 0, 20)
- if (rbxlegacyversion == "pre-alpha" or rbxlegacyversion == "pre-alpha-ext") then
+ if (rbxlegacyversion == "pre-alpha") then
game.GuiRoot.MainMenu["Toolbox"]:Remove()
game.GuiRoot.MainMenu["Edit Mode"]:Remove()
game.GuiRoot.RightPalette.ReportAbuse:Remove()
game.GuiRoot.ChatMenuPanel:Remove()
+ elseif (rbxlegacyversion == "pre-alpha-ext") then
+ game.GuiRoot.MainMenu["Toolbox"]:Remove()
+ game.GuiRoot.MainMenu["Edit Mode"]:Remove()
+ game.GuiRoot.ChatMenuPanel:Remove()
else
game.GuiRoot.MainMenu["Tools"]:Remove()
game.GuiRoot.MainMenu["Insert"]:Remove()
@@ -526,20 +663,31 @@ function CSConnect(UserID,ServerIP,ServerPort,PlayerName,Hat1ID,Hat2ID,Hat3ID,He
end
end
-function CSSolo(UserID,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,Ticket)
- local plr = game.Players:CreateLocalPlayer(UserID);
- game:GetService("RunService"):run();
+function CSSolo(UserID,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID)
+ if (rbxlegacyversion == "omega" or rbxlegacyversion == "delta-omega") then
+ game:GetService("RunService"):Run();
+ else
+ game:GetService("RunService"):run();
+ end
if (rbxlegacyversion == "gamma" or rbxlegacyversion == "delta-gamma") then
game.Workspace:InsertContent("rbxasset://Fonts//Health2010.rbxm");
elseif (rbxlegacyversion == "delta") then
game.Workspace:InsertContent("rbxasset://Fonts//Health2011.rbxm");
- elseif (rbxlegacyversion == "omega") then
+ game.Workspace:InsertContent("rbxasset://Fonts//CoreGui2011.rbxm");
+ elseif (rbxlegacyversion == "omega" or rbxlegacyversion == "delta-omega") then
game.Workspace:InsertContent("rbxasset://Fonts//Health2012.rbxm");
+ game.Workspace:InsertContent("rbxasset://Fonts//CoreGui2012.rbxm");
end
+ if (rbxlegacyversion == "delta") then
+ game.CoreGui.RobloxGui.TopLeftControl.Help.Active = true;
+ elseif (rbxlegacyversion == "omega" or rbxlegacyversion == "delta-omega") then
+ game.CoreGui.RobloxGui.ControlFrame.BottomRightControl.Help.Active = true;
+ end
+ local plr = game.Players:CreateLocalPlayer(UserID);
plr.Name = PlayerName;
plr:LoadCharacter();
plr.CharacterAppearance=0;
- InitalizeClientAppearance(plr,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID);
+ InitalizeClientAppearance(plr,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID);
LoadCharacterNew(newWaitForChild(plr,"Appearance"),plr.Character);
game:GetService("Visit");
while true do wait()
diff --git a/CoreGui2011.rbxm b/CoreGui2011.rbxm
new file mode 100644
index 0000000..cbd6915
--- /dev/null
+++ b/CoreGui2011.rbxm
@@ -0,0 +1,3601 @@
+
+ null
+ nil
+ -
+
+ false
+
+ GUI_Copy
+ script.PlayerList:clone().Parent = game.StarterGui;
+script:remove();
+ true
+
+
-
+
+ false
+
+ PlayerList
+ local t = {}
+
+local function ScopedConnect(parentInstance, instance, event, signalFunc, syncFunc, removeFunc)
+ local eventConnection = nil
+
+ --Connection on parentInstance is scoped by parentInstance (when destroyed, it goes away)
+ local tryConnect = function()
+ if game:IsAncestorOf(parentInstance) then
+ --Entering the world, make sure we are connected/synced
+ if not eventConnection then
+ eventConnection = instance[event]:connect(signalFunc)
+ if syncFunc then syncFunc() end
+ end
+ else
+ --Probably leaving the world, so disconnect for now
+ if eventConnection then
+ eventConnection:disconnect()
+ if removeFunc then removeFunc() end
+ end
+ end
+ end
+
+ --Hook it up to ancestryChanged signal
+ local connection = parentInstance.AncestryChanged:connect(tryConnect)
+
+ --Now connect us if we're already in the world
+ tryConnect()
+
+ return connection
+end
+
+local function CreateButtons(frame, buttons, yPos, ySize)
+ local buttonNum = 1
+ local buttonObjs = {}
+ for i, obj in ipairs(buttons) do
+ local button = Instance.new("TextButton")
+ button.Name = "Button" .. buttonNum
+ button.Font = Enum.Font.Arial
+ button.FontSize = Enum.FontSize.Size18
+ button.AutoButtonColor = true
+ button.Style = Enum.ButtonStyle.RobloxButtonDefault
+ button.Text = obj.Text
+ button.TextColor3 = Color3.new(1,1,1)
+ button.MouseButton1Click:connect(obj.Function)
+ button.Parent = frame
+ buttonObjs[buttonNum] = button
+
+ buttonNum = buttonNum + 1
+ end
+ local numButtons = buttonNum-1
+
+ if numButtons == 1 then
+ frame.Button1.Position = UDim2.new(0.35, 0, yPos.Scale, yPos.Offset)
+ frame.Button1.Size = UDim2.new(.4,0,ySize.Scale, ySize.Offset)
+ elseif numButtons == 2 then
+ frame.Button1.Position = UDim2.new(0.1, 0, yPos.Scale, yPos.Offset)
+ frame.Button1.Size = UDim2.new(.8/3,0, ySize.Scale, ySize.Offset)
+
+ frame.Button2.Position = UDim2.new(0.55, 0, yPos.Scale, yPos.Offset)
+ frame.Button2.Size = UDim2.new(.35,0, ySize.Scale, ySize.Offset)
+ elseif numButtons >= 3 then
+ local spacing = .1 / numButtons
+ local buttonSize = .9 / numButtons
+
+ buttonNum = 1
+ while buttonNum <= numButtons do
+ buttonObjs[buttonNum].Position = UDim2.new(spacing*buttonNum + (buttonNum-1) * buttonSize, 0, yPos.Scale, yPos.Offset)
+ buttonObjs[buttonNum].Size = UDim2.new(buttonSize, 0, ySize.Scale, ySize.Offset)
+ buttonNum = buttonNum + 1
+ end
+ end
+end
+
+local function setSliderPos(newAbsPosX,slider,sliderPosition,bar,steps)
+
+ local newStep = steps - 1 --otherwise we really get one more step than we want
+
+ local relativePosX = math.min(1, math.max(0, (newAbsPosX - bar.AbsolutePosition.X) / bar.AbsoluteSize.X ) )
+ local wholeNum, remainder = math.modf(relativePosX * newStep)
+ if remainder > 0.5 then
+ wholeNum = wholeNum + 1
+ end
+ relativePosX = wholeNum/newStep
+
+ local result = math.ceil(relativePosX * newStep)
+ if sliderPosition.Value ~= (result + 1) then --onky update if we moved a step
+ sliderPosition.Value = result + 1
+
+ if relativePosX == 1 then
+ slider.Position = UDim2.new(1,-slider.AbsoluteSize.X,slider.Position.Y.Scale,slider.Position.Y.Offset)
+ else
+ slider.Position = UDim2.new(relativePosX,0,slider.Position.Y.Scale,slider.Position.Y.Offset)
+ end
+ end
+
+end
+
+local function cancelSlide(areaSoak)
+ areaSoak.Visible = false
+ if areaSoakMouseMoveCon then areaSoakMouseMoveCon:disconnect() end
+end
+
+t.CreateStyledMessageDialog = function(title, message, style, buttons)
+ local frame = Instance.new("Frame")
+ frame.Size = UDim2.new(0.5, 0, 0, 165)
+ frame.Position = UDim2.new(0.25, 0, 0.5, -72.5)
+ frame.Name = "MessageDialog"
+ frame.Active = true
+ frame.Style = Enum.FrameStyle.RobloxRound
+
+ local styleImage = Instance.new("ImageLabel")
+ styleImage.Name = "StyleImage"
+ styleImage.BackgroundTransparency = 1
+ styleImage.Position = UDim2.new(0,5,0,15)
+ if style == "error" or style == "Error" then
+ styleImage.Size = UDim2.new(0, 71, 0, 71)
+ styleImage.Image = "http://www.roblox.com/asset?id=42565285"
+ elseif style == "notify" or style == "Notify" then
+ styleImage.Size = UDim2.new(0, 71, 0, 71)
+ styleImage.Image = "http://www.roblox.com/asset?id=42604978"
+ elseif style == "confirm" or style == "Confirm" then
+ styleImage.Size = UDim2.new(0, 74, 0, 76)
+ styleImage.Image = "http://www.roblox.com/asset?id=42557901"
+ else
+ return t.CreateMessageDialog(title,message,buttons)
+ end
+ styleImage.Parent = frame
+
+ local titleLabel = Instance.new("TextLabel")
+ titleLabel.Name = "Title"
+ titleLabel.Text = title
+ titleLabel.BackgroundTransparency = 1
+ titleLabel.TextColor3 = Color3.new(221/255,221/255,221/255)
+ titleLabel.Position = UDim2.new(0, 80, 0, 0)
+ titleLabel.Size = UDim2.new(1, -80, 0, 40)
+ titleLabel.Font = Enum.Font.ArialBold
+ titleLabel.FontSize = Enum.FontSize.Size36
+ titleLabel.TextXAlignment = Enum.TextXAlignment.Center
+ titleLabel.TextYAlignment = Enum.TextYAlignment.Center
+ titleLabel.Parent = frame
+
+ local messageLabel = Instance.new("TextLabel")
+ messageLabel.Name = "Message"
+ messageLabel.Text = message
+ messageLabel.TextColor3 = Color3.new(221/255,221/255,221/255)
+ messageLabel.Position = UDim2.new(0.025, 80, 0, 45)
+ messageLabel.Size = UDim2.new(0.95, -80, 0, 55)
+ messageLabel.BackgroundTransparency = 1
+ messageLabel.Font = Enum.Font.Arial
+ messageLabel.FontSize = Enum.FontSize.Size18
+ messageLabel.TextWrap = true
+ messageLabel.TextXAlignment = Enum.TextXAlignment.Left
+ messageLabel.TextYAlignment = Enum.TextYAlignment.Top
+ messageLabel.Parent = frame
+
+ CreateButtons(frame, buttons, UDim.new(0, 105), UDim.new(0, 40) )
+
+ return frame
+end
+
+t.CreateMessageDialog = function(title, message, buttons)
+ local frame = Instance.new("Frame")
+ frame.Size = UDim2.new(0.5, 0, 0.5, 0)
+ frame.Position = UDim2.new(0.25, 0, 0.25, 0)
+ frame.Name = "MessageDialog"
+ frame.Active = true
+ frame.Style = Enum.FrameStyle.RobloxRound
+
+ local titleLabel = Instance.new("TextLabel")
+ titleLabel.Name = "Title"
+ titleLabel.Text = title
+ titleLabel.BackgroundTransparency = 1
+ titleLabel.TextColor3 = Color3.new(221/255,221/255,221/255)
+ titleLabel.Position = UDim2.new(0, 0, 0, 0)
+ titleLabel.Size = UDim2.new(1, 0, 0.15, 0)
+ titleLabel.Font = Enum.Font.ArialBold
+ titleLabel.FontSize = Enum.FontSize.Size36
+ titleLabel.TextXAlignment = Enum.TextXAlignment.Center
+ titleLabel.TextYAlignment = Enum.TextYAlignment.Center
+ titleLabel.Parent = frame
+
+ local messageLabel = Instance.new("TextLabel")
+ messageLabel.Name = "Message"
+ messageLabel.Text = message
+ messageLabel.TextColor3 = Color3.new(221/255,221/255,221/255)
+ messageLabel.Position = UDim2.new(0.025, 0, 0.175, 0)
+ messageLabel.Size = UDim2.new(0.95, 0, .55, 0)
+ messageLabel.BackgroundTransparency = 1
+ messageLabel.Font = Enum.Font.Arial
+ messageLabel.FontSize = Enum.FontSize.Size18
+ messageLabel.TextWrap = true
+ messageLabel.TextXAlignment = Enum.TextXAlignment.Left
+ messageLabel.TextYAlignment = Enum.TextYAlignment.Top
+ messageLabel.Parent = frame
+
+ CreateButtons(frame, buttons, UDim.new(0.8,0), UDim.new(0.15, 0))
+
+ return frame
+end
+
+t.CreateDropDownMenu = function(items, onSelect, forRoblox)
+ local width = UDim.new(0, 100)
+ local height = UDim.new(0, 32)
+
+ local xPos = 0.055
+ local frame = Instance.new("Frame")
+ frame.Name = "DropDownMenu"
+ frame.BackgroundTransparency = 1
+ frame.Size = UDim2.new(width, height)
+
+ local dropDownMenu = Instance.new("TextButton")
+ dropDownMenu.Name = "DropDownMenuButton"
+ dropDownMenu.TextWrap = true
+ dropDownMenu.TextColor3 = Color3.new(1,1,1)
+ dropDownMenu.Text = "Choose One"
+ dropDownMenu.Font = Enum.Font.ArialBold
+ dropDownMenu.FontSize = Enum.FontSize.Size18
+ dropDownMenu.TextXAlignment = Enum.TextXAlignment.Left
+ dropDownMenu.TextYAlignment = Enum.TextYAlignment.Center
+ dropDownMenu.BackgroundTransparency = 1
+ dropDownMenu.AutoButtonColor = true
+ dropDownMenu.Style = Enum.ButtonStyle.RobloxButton
+ dropDownMenu.Size = UDim2.new(1,0,1,0)
+ dropDownMenu.Parent = frame
+ dropDownMenu.ZIndex = 2
+
+ local dropDownIcon = Instance.new("ImageLabel")
+ dropDownIcon.Name = "Icon"
+ dropDownIcon.Active = false
+ dropDownIcon.Image = "http://www.roblox.com/asset/?id=45732894"
+ dropDownIcon.BackgroundTransparency = 1
+ dropDownIcon.Size = UDim2.new(0,11,0,6)
+ dropDownIcon.Position = UDim2.new(1,-11,0.5, -2)
+ dropDownIcon.Parent = dropDownMenu
+ dropDownIcon.ZIndex = 2
+
+ local itemCount = #items
+ local dropDownItemCount = #items
+ local useScrollButtons = false
+ if dropDownItemCount > 6 then
+ useScrollButtons = true
+ dropDownItemCount = 6
+ end
+
+ local droppedDownMenu = Instance.new("TextButton")
+ droppedDownMenu.Name = "List"
+ droppedDownMenu.Text = ""
+ droppedDownMenu.BackgroundTransparency = 1
+ --droppedDownMenu.AutoButtonColor = true
+ droppedDownMenu.Style = Enum.ButtonStyle.RobloxButton
+ droppedDownMenu.Visible = false
+ droppedDownMenu.Active = true --Blocks clicks
+ droppedDownMenu.Position = UDim2.new(0,0,0,0)
+ droppedDownMenu.Size = UDim2.new(1,0, (1 + dropDownItemCount)*.8, 0)
+ droppedDownMenu.Parent = frame
+ droppedDownMenu.ZIndex = 2
+
+ local choiceButton = Instance.new("TextButton")
+ choiceButton.Name = "ChoiceButton"
+ choiceButton.BackgroundTransparency = 1
+ choiceButton.BorderSizePixel = 0
+ choiceButton.Text = "ReplaceMe"
+ choiceButton.TextColor3 = Color3.new(1,1,1)
+ choiceButton.TextXAlignment = Enum.TextXAlignment.Left
+ choiceButton.TextYAlignment = Enum.TextYAlignment.Center
+ choiceButton.BackgroundColor3 = Color3.new(1, 1, 1)
+ choiceButton.Font = Enum.Font.Arial
+ choiceButton.FontSize = Enum.FontSize.Size18
+ if useScrollButtons then
+ choiceButton.Size = UDim2.new(1,-13, .8/((dropDownItemCount + 1)*.8),0)
+ else
+ choiceButton.Size = UDim2.new(1, 0, .8/((dropDownItemCount + 1)*.8),0)
+ end
+ choiceButton.TextWrap = true
+ choiceButton.ZIndex = 2
+
+ local dropDownSelected = false
+
+ local scrollUpButton
+ local scrollDownButton
+ local scrollMouseCount = 0
+
+ local setZIndex = function(baseZIndex)
+ droppedDownMenu.ZIndex = baseZIndex +1
+ if scrollUpButton then
+ scrollUpButton.ZIndex = baseZIndex + 3
+ end
+ if scrollDownButton then
+ scrollDownButton.ZIndex = baseZIndex + 3
+ end
+
+ local children = droppedDownMenu:GetChildren()
+ if children then
+ for i, child in ipairs(children) do
+ if child.Name == "ChoiceButton" then
+ child.ZIndex = baseZIndex + 2
+ elseif child.Name == "ClickCaptureButton" then
+ child.ZIndex = baseZIndex
+ end
+ end
+ end
+ end
+
+ local scrollBarPosition = 1
+ local updateScroll = function()
+ if scrollUpButton then
+ scrollUpButton.Active = scrollBarPosition > 1
+ end
+ if scrollDownButton then
+ scrollDownButton.Active = scrollBarPosition + dropDownItemCount <= itemCount
+ end
+
+ local children = droppedDownMenu:GetChildren()
+ if not children then return end
+
+ local childNum = 1
+ for i, obj in ipairs(children) do
+ if obj.Name == "ChoiceButton" then
+ if childNum < scrollBarPosition or childNum >= scrollBarPosition + dropDownItemCount then
+ obj.Visible = false
+ else
+ obj.Position = UDim2.new(0,0,((childNum-scrollBarPosition+1)*.8)/((dropDownItemCount+1)*.8),0)
+ obj.Visible = true
+ end
+ obj.TextColor3 = Color3.new(1,1,1)
+ obj.BackgroundTransparency = 1
+
+ childNum = childNum + 1
+ end
+ end
+ end
+ local toggleVisibility = function()
+ dropDownSelected = not dropDownSelected
+
+ dropDownMenu.Visible = not dropDownSelected
+ droppedDownMenu.Visible = dropDownSelected
+ if dropDownSelected then
+ setZIndex(4)
+ else
+ setZIndex(2)
+ end
+ if useScrollButtons then
+ updateScroll()
+ end
+ end
+ droppedDownMenu.MouseButton1Click:connect(toggleVisibility)
+
+ local updateSelection = function(text)
+ local foundItem = false
+ local children = droppedDownMenu:GetChildren()
+ local childNum = 1
+ if children then
+ for i, obj in ipairs(children) do
+ if obj.Name == "ChoiceButton" then
+ if obj.Text == text then
+ obj.Font = Enum.Font.ArialBold
+ foundItem = true
+ scrollBarPosition = childNum
+ else
+ obj.Font = Enum.Font.Arial
+ end
+ childNum = childNum + 1
+ end
+ end
+ end
+ if not text then
+ dropDownMenu.Text = "Choose One"
+ scrollBarPosition = 1
+ else
+ if not foundItem then
+ error("Invalid Selection Update -- " .. text)
+ end
+
+ if scrollBarPosition + dropDownItemCount > itemCount + 1 then
+ scrollBarPosition = itemCount - dropDownItemCount + 1
+ end
+
+ dropDownMenu.Text = text
+ end
+ end
+
+ local function scrollDown()
+ if scrollBarPosition + dropDownItemCount <= itemCount then
+ scrollBarPosition = scrollBarPosition + 1
+ updateScroll()
+ return true
+ end
+ return false
+ end
+ local function scrollUp()
+ if scrollBarPosition > 1 then
+ scrollBarPosition = scrollBarPosition - 1
+ updateScroll()
+ return true
+ end
+ return false
+ end
+
+ if useScrollButtons then
+ --Make some scroll buttons
+ scrollUpButton = Instance.new("ImageButton")
+ scrollUpButton.Name = "ScrollUpButton"
+ scrollUpButton.BackgroundTransparency = 1
+ scrollUpButton.Image = "rbxasset://textures/ui/scrollbuttonUp.png"
+ scrollUpButton.Size = UDim2.new(0,17,0,17)
+ scrollUpButton.Position = UDim2.new(1,-11,(1*.8)/((dropDownItemCount+1)*.8),0)
+ scrollUpButton.MouseButton1Click:connect(
+ function()
+ scrollMouseCount = scrollMouseCount + 1
+ end)
+ scrollUpButton.MouseLeave:connect(
+ function()
+ scrollMouseCount = scrollMouseCount + 1
+ end)
+ scrollUpButton.MouseButton1Down:connect(
+ function()
+ scrollMouseCount = scrollMouseCount + 1
+
+ scrollUp()
+ local val = scrollMouseCount
+ wait(0.5)
+ while val == scrollMouseCount do
+ if scrollUp() == false then
+ break
+ end
+ wait(0.1)
+ end
+ end)
+
+ scrollUpButton.Parent = droppedDownMenu
+
+ scrollDownButton = Instance.new("ImageButton")
+ scrollDownButton.Name = "ScrollDownButton"
+ scrollDownButton.BackgroundTransparency = 1
+ scrollDownButton.Image = "rbxasset://textures/ui/scrollbuttonDown.png"
+ scrollDownButton.Size = UDim2.new(0,17,0,17)
+ scrollDownButton.Position = UDim2.new(1,-11,1,-11)
+ scrollDownButton.Parent = droppedDownMenu
+ scrollDownButton.MouseButton1Click:connect(
+ function()
+ scrollMouseCount = scrollMouseCount + 1
+ end)
+ scrollDownButton.MouseLeave:connect(
+ function()
+ scrollMouseCount = scrollMouseCount + 1
+ end)
+ scrollDownButton.MouseButton1Down:connect(
+ function()
+ scrollMouseCount = scrollMouseCount + 1
+
+ scrollDown()
+ local val = scrollMouseCount
+ wait(0.5)
+ while val == scrollMouseCount do
+ if scrollDown() == false then
+ break
+ end
+ wait(0.1)
+ end
+ end)
+
+ local scrollbar = Instance.new("ImageLabel")
+ scrollbar.Name = "ScrollBar"
+ scrollbar.Image = "rbxasset://textures/ui/scrollbar.png"
+ scrollbar.BackgroundTransparency = 1
+ scrollbar.Size = UDim2.new(0, 18, (dropDownItemCount*.8)/((dropDownItemCount+1)*.8), -(17) - 11 - 4)
+ scrollbar.Position = UDim2.new(1,-11,(1*.8)/((dropDownItemCount+1)*.8),17+2)
+ scrollbar.Parent = droppedDownMenu
+ end
+
+ for i,item in ipairs(items) do
+ -- needed to maintain local scope for items in event listeners below
+ local button = choiceButton:clone()
+ if forRoblox then
+ button.RobloxLocked = true
+ end
+ button.Text = item
+ button.Parent = droppedDownMenu
+ button.MouseButton1Click:connect(function()
+ --Remove Highlight
+ button.TextColor3 = Color3.new(1,1,1)
+ button.BackgroundTransparency = 1
+
+ updateSelection(item)
+ onSelect(item)
+
+ toggleVisibility()
+ end)
+ button.MouseEnter:connect(function()
+ --Add Highlight
+ button.TextColor3 = Color3.new(0,0,0)
+ button.BackgroundTransparency = 0
+ end)
+
+ button.MouseLeave:connect(function()
+ --Remove Highlight
+ button.TextColor3 = Color3.new(1,1,1)
+ button.BackgroundTransparency = 1
+ end)
+ end
+
+ --This does the initial layout of the buttons
+ updateScroll()
+
+ local bigFakeButton = Instance.new("TextButton")
+ bigFakeButton.BackgroundTransparency = 1
+ bigFakeButton.Name = "ClickCaptureButton"
+ bigFakeButton.Size = UDim2.new(0, 4000, 0, 3000)
+ bigFakeButton.Position = UDim2.new(0, -2000, 0, -1500)
+ bigFakeButton.ZIndex = 1
+ bigFakeButton.Text = ""
+ bigFakeButton.Parent = droppedDownMenu
+ bigFakeButton.MouseButton1Click:connect(toggleVisibility)
+
+ dropDownMenu.MouseButton1Click:connect(toggleVisibility)
+ return frame, updateSelection
+end
+
+t.CreatePropertyDropDownMenu = function(instance, property, enum)
+
+ local items = enum:GetEnumItems()
+ local names = {}
+ local nameToItem = {}
+ for i,obj in ipairs(items) do
+ names[i] = obj.Name
+ nameToItem[obj.Name] = obj
+ end
+
+ local frame
+ local updateSelection
+ frame, updateSelection = t.CreateDropDownMenu(names, function(text) instance[property] = nameToItem[text] end)
+
+ ScopedConnect(frame, instance, "Changed",
+ function(prop)
+ if prop == property then
+ updateSelection(instance[property].Name)
+ end
+ end,
+ function()
+ updateSelection(instance[property].Name)
+ end)
+
+ return frame
+end
+
+t.GetFontHeight = function(font, fontSize)
+ if font == nil or fontSize == nil then
+ error("Font and FontSize must be non-nil")
+ end
+
+ if font == Enum.Font.Legacy then
+ if fontSize == Enum.FontSize.Size8 then
+ return 12
+ elseif fontSize == Enum.FontSize.Size9 then
+ return 14
+ elseif fontSize == Enum.FontSize.Size10 then
+ return 15
+ elseif fontSize == Enum.FontSize.Size11 then
+ return 17
+ elseif fontSize == Enum.FontSize.Size12 then
+ return 18
+ elseif fontSize == Enum.FontSize.Size14 then
+ return 21
+ elseif fontSize == Enum.FontSize.Size18 then
+ return 27
+ elseif fontSize == Enum.FontSize.Size24 then
+ return 36
+ elseif fontSize == Enum.FontSize.Size36 then
+ return 54
+ elseif fontSize == Enum.FontSize.Size48 then
+ return 72
+ else
+ error("Unknown FontSize")
+ end
+ elseif font == Enum.Font.Arial or font == Enum.Font.ArialBold then
+ if fontSize == Enum.FontSize.Size8 then
+ return 8
+ elseif fontSize == Enum.FontSize.Size9 then
+ return 9
+ elseif fontSize == Enum.FontSize.Size10 then
+ return 10
+ elseif fontSize == Enum.FontSize.Size11 then
+ return 11
+ elseif fontSize == Enum.FontSize.Size12 then
+ return 12
+ elseif fontSize == Enum.FontSize.Size14 then
+ return 14
+ elseif fontSize == Enum.FontSize.Size18 then
+ return 18
+ elseif fontSize == Enum.FontSize.Size24 then
+ return 24
+ elseif fontSize == Enum.FontSize.Size36 then
+ return 36
+ elseif fontSize == Enum.FontSize.Size48 then
+ return 48
+ else
+ error("Unknown FontSize")
+ end
+ else
+ error("Unknown Font " .. font)
+ end
+end
+
+local function layoutGuiObjectsHelper(frame, guiObjects, settingsTable)
+ local totalPixels = frame.AbsoluteSize.Y
+ local pixelsRemaining = frame.AbsoluteSize.Y
+ for i, child in ipairs(guiObjects) do
+ if child:IsA("TextLabel") or child:IsA("TextButton") then
+ local isLabel = child:IsA("TextLabel")
+ if isLabel then
+ pixelsRemaining = pixelsRemaining - settingsTable["TextLabelPositionPadY"]
+ else
+ pixelsRemaining = pixelsRemaining - settingsTable["TextButtonPositionPadY"]
+ end
+ child.Position = UDim2.new(child.Position.X.Scale, child.Position.X.Offset, 0, totalPixels - pixelsRemaining)
+ child.Size = UDim2.new(child.Size.X.Scale, child.Size.X.Offset, 0, pixelsRemaining)
+
+ if child.TextFits and child.TextBounds.Y < pixelsRemaining then
+ child.Visible = true
+ if isLabel then
+ child.Size = UDim2.new(child.Size.X.Scale, child.Size.X.Offset, 0, child.TextBounds.Y + settingsTable["TextLabelSizePadY"])
+ else
+ child.Size = UDim2.new(child.Size.X.Scale, child.Size.X.Offset, 0, child.TextBounds.Y + settingsTable["TextButtonSizePadY"])
+ end
+
+ while not child.TextFits do
+ child.Size = UDim2.new(child.Size.X.Scale, child.Size.X.Offset, 0, child.AbsoluteSize.Y + 1)
+ end
+ pixelsRemaining = pixelsRemaining - child.AbsoluteSize.Y
+
+ if isLabel then
+ pixelsRemaining = pixelsRemaining - settingsTable["TextLabelPositionPadY"]
+ else
+ pixelsRemaining = pixelsRemaining - settingsTable["TextButtonPositionPadY"]
+ end
+ else
+ child.Visible = false
+ pixelsRemaining = -1
+ end
+
+ else
+ --GuiObject
+ child.Position = UDim2.new(child.Position.X.Scale, child.Position.X.Offset, 0, totalPixels - pixelsRemaining)
+ pixelsRemaining = pixelsRemaining - child.AbsoluteSize.Y
+ child.Visible = (pixelsRemaining >= 0)
+ end
+ end
+end
+
+t.LayoutGuiObjects = function(frame, guiObjects, settingsTable)
+ if not frame:IsA("GuiObject") then
+ error("Frame must be a GuiObject")
+ end
+ for i, child in ipairs(guiObjects) do
+ if not child:IsA("GuiObject") then
+ error("All elements that are layed out must be of type GuiObject")
+ end
+ end
+
+ if not settingsTable then
+ settingsTable = {}
+ end
+
+ if not settingsTable["TextLabelSizePadY"] then
+ settingsTable["TextLabelSizePadY"] = 0
+ end
+ if not settingsTable["TextLabelPositionPadY"] then
+ settingsTable["TextLabelPositionPadY"] = 0
+ end
+ if not settingsTable["TextButtonSizePadY"] then
+ settingsTable["TextButtonSizePadY"] = 12
+ end
+ if not settingsTable["TextButtonPositionPadY"] then
+ settingsTable["TextButtonPositionPadY"] = 2
+ end
+
+ --Wrapper frame takes care of styled objects
+ local wrapperFrame = Instance.new("Frame")
+ wrapperFrame.Name = "WrapperFrame"
+ wrapperFrame.BackgroundTransparency = 1
+ wrapperFrame.Size = UDim2.new(1,0,1,0)
+ wrapperFrame.Parent = frame
+
+ for i, child in ipairs(guiObjects) do
+ child.Parent = wrapperFrame
+ end
+
+ local recalculate = function()
+ wait()
+ layoutGuiObjectsHelper(wrapperFrame, guiObjects, settingsTable)
+ end
+
+ frame.Changed:connect(
+ function(prop)
+ if prop == "AbsoluteSize" then
+ --Wait a heartbeat for it to sync in
+ recalculate()
+ end
+ end)
+ frame.AncestryChanged:connect(recalculate)
+
+ layoutGuiObjectsHelper(wrapperFrame, guiObjects, settingsTable)
+end
+
+
+t.CreateSlider = function(steps,width,position)
+ local sliderGui = Instance.new("Frame")
+ sliderGui.Size = UDim2.new(1,0,1,0)
+ sliderGui.BackgroundTransparency = 1
+ sliderGui.Name = "SliderGui"
+
+ local areaSoak = Instance.new("TextButton")
+ areaSoak.Name = "AreaSoak"
+ areaSoak.Text = ""
+ areaSoak.BackgroundTransparency = 1
+ areaSoak.Active = false
+ areaSoak.Size = UDim2.new(1,0,1,0)
+ areaSoak.Visible = false
+ areaSoak.ZIndex = 4
+ areaSoak.Parent = sliderGui
+
+ local sliderPosition = Instance.new("IntValue")
+ sliderPosition.Name = "SliderPosition"
+ sliderPosition.Value = 0
+ sliderPosition.Parent = sliderGui
+
+ local id = math.random(1,100)
+
+ local bar = Instance.new("Frame")
+ bar.Name = "Bar"
+ bar.BackgroundColor3 = Color3.new(0,0,0)
+ if type(width) == "number" then
+ bar.Size = UDim2.new(0,width,0,5)
+ else
+ bar.Size = UDim2.new(0,200,0,5)
+ end
+ bar.BorderColor3 = Color3.new(95/255,95/255,95/255)
+ bar.ZIndex = 2
+ bar.Parent = sliderGui
+
+ if position["X"] and position["X"]["Scale"] and position["X"]["Offset"] and position["Y"] and position["Y"]["Scale"] and position["Y"]["Offset"] then
+ bar.Position = position
+ end
+
+ local slider = Instance.new("ImageButton")
+ slider.Name = "Slider"
+ slider.BackgroundTransparency = 1
+ slider.Image = "rbxasset://textures/ui/Slider.png"
+ slider.Position = UDim2.new(0,0,0.5,-10)
+ slider.Size = UDim2.new(0,20,0,20)
+ slider.ZIndex = 3
+ slider.Parent = bar
+
+ local areaSoakMouseMoveCon = nil
+
+ areaSoak.MouseLeave:connect(function()
+ if areaSoak.Visible then
+ cancelSlide(areaSoak)
+ end
+ end)
+ areaSoak.MouseButton1Up:connect(function()
+ if areaSoak.Visible then
+ cancelSlide(areaSoak)
+ end
+ end)
+
+ slider.MouseButton1Down:connect(function()
+ areaSoak.Visible = true
+ if areaSoakMouseMoveCon then areaSoakMouseMoveCon:disconnect() end
+ areaSoakMouseMoveCon = areaSoak.MouseMoved:connect(function(x,y)
+ setSliderPos(x,slider,sliderPosition,bar,steps)
+ end)
+ end)
+
+ slider.MouseButton1Up:connect(function() cancelSlide(areaSoak) end)
+
+ sliderPosition.Changed:connect(function(prop)
+ local relativePosX = (sliderPosition.Value - 1) / steps
+ slider.Position = UDim2.new(relativePosX,0,slider.Position.Y.Scale,slider.Position.Y.Offset)
+ end)
+
+ return sliderGui, sliderPosition
+
+end
+
+
+t.CreateScrollingFrame = function(orderList,scrollStyle)
+ local frame = Instance.new("Frame")
+ frame.Name = "ScrollingFrame"
+ frame.BackgroundTransparency = 1
+ frame.Size = UDim2.new(1,0,1,0)
+
+ local scrollUpButton = Instance.new("ImageButton")
+ scrollUpButton.Name = "ScrollUpButton"
+ scrollUpButton.BackgroundTransparency = 1
+ scrollUpButton.Image = "rbxasset://textures/ui/scrollbuttonUp.png"
+ scrollUpButton.Size = UDim2.new(0,17,0,17)
+
+
+ local scrollDownButton = Instance.new("ImageButton")
+ scrollDownButton.Name = "ScrollDownButton"
+ scrollDownButton.BackgroundTransparency = 1
+ scrollDownButton.Image = "rbxasset://textures/ui/scrollbuttonDown.png"
+ scrollDownButton.Size = UDim2.new(0,17,0,17)
+
+ local style = "simple"
+ if scrollStyle and tostring(scrollStyle) then
+ style = scrollStyle
+ end
+
+ local scrollPosition = 1
+ local rowSize = 1
+
+ local layoutGridScrollBar = function()
+ local guiObjects = {}
+ if orderList then
+ for i, child in ipairs(orderList) do
+ if child.Parent == frame then
+ table.insert(guiObjects, child)
+ end
+ end
+ else
+ local children = frame:GetChildren()
+ if children then
+ for i, child in ipairs(children) do
+ if child:IsA("GuiObject") then
+ table.insert(guiObjects, child)
+ end
+ end
+ end
+ end
+ if #guiObjects == 0 then
+ scrollUpButton.Active = false
+ scrollDownButton.Active = false
+ scrollPosition = 1
+ return
+ end
+
+ if scrollPosition > #guiObjects then
+ scrollPosition = #guiObjects
+ end
+
+ local totalPixelsY = frame.AbsoluteSize.Y
+ local pixelsRemainingY = frame.AbsoluteSize.Y
+
+ local totalPixelsX = frame.AbsoluteSize.X
+
+ local xCounter = 0
+ local rowSizeCounter = 0
+ local setRowSize = true
+
+ local pixelsBelowScrollbar = 0
+ local pos = #guiObjects
+ while pixelsBelowScrollbar < totalPixelsY and pos >= 1 do
+ if pos >= scrollPosition then
+ pixelsBelowScrollbar = pixelsBelowScrollbar + guiObjects[pos].AbsoluteSize.Y
+ else
+ xCounter = xCounter + guiObjects[pos].AbsoluteSize.X
+ rowSizeCounter = rowSizeCounter + 1
+ if xCounter >= totalPixelsX then
+ if setRowSize then
+ rowSize = rowSizeCounter - 1
+ setRowSize = false
+ end
+
+ rowSizeCounter = 0
+ xCounter = 0
+ if pixelsBelowScrollbar + guiObjects[pos].AbsoluteSize.Y <= totalPixelsY then
+ --It fits, so back up our scroll position
+ pixelsBelowScrollbar = pixelsBelowScrollbar + guiObjects[pos].AbsoluteSize.Y
+ if scrollPosition <= rowSize then
+ scrollPosition = rowSize
+ break
+ else
+ --print("Backing up ScrollPosition from -- " ..scrollPosition)
+ scrollPosition = scrollPosition - rowSize
+ end
+ else
+ break
+ end
+ end
+ end
+ pos = pos - 1
+ end
+
+ xCounter = 0
+ --print("ScrollPosition = " .. scrollPosition)
+ pos = scrollPosition
+ rowSizeCounter = 0
+ setRowSize = true
+ local lastChildSize = 0
+
+ local xOffset,yOffset = 0
+ if guiObjects[1] then
+ yOffset = math.ceil(math.floor(math.fmod(totalPixelsY,guiObjects[1].AbsoluteSize.X))/2)
+ xOffset = math.ceil(math.floor(math.fmod(totalPixelsX,guiObjects[1].AbsoluteSize.Y))/2)
+ end
+
+ for i, child in ipairs(guiObjects) do
+ if i < scrollPosition then
+ --print("Hiding " .. child.Name)
+ child.Visible = false
+ else
+ if pixelsRemainingY < 0 then
+ --print("Out of Space " .. child.Name)
+ child.Visible = false
+ else
+ --print("Laying out " .. child.Name)
+ --GuiObject
+ if setRowSize then rowSizeCounter = rowSizeCounter + 1 end
+ if xCounter + child.AbsoluteSize.X >= totalPixelsX then
+ if setRowSize then
+ rowSize = rowSizeCounter - 1
+ setRowSize = false
+ end
+ xCounter = 0
+ pixelsRemainingY = pixelsRemainingY - child.AbsoluteSize.Y
+ end
+ child.Position = UDim2.new(child.Position.X.Scale,xCounter + xOffset, 0, totalPixelsY - pixelsRemainingY + yOffset)
+ xCounter = xCounter + child.AbsoluteSize.X
+ child.Visible = ((pixelsRemainingY - child.AbsoluteSize.Y) >= 0)
+ lastChildSize = child.AbsoluteSize
+ end
+ end
+ end
+
+ scrollUpButton.Active = (scrollPosition > 1)
+ if lastChildSize == 0 then
+ scrollDownButton.Active = false
+ else
+ scrollDownButton.Active = ((pixelsRemainingY - lastChildSize.Y) < 0)
+ end
+ end
+
+
+ local layoutSimpleScrollBar = function()
+ local guiObjects = {}
+
+ if orderList then
+ for i, child in ipairs(orderList) do
+ if child.Parent == frame then
+ table.insert(guiObjects, child)
+ end
+ end
+ else
+ local children = frame:GetChildren()
+ if children then
+ for i, child in ipairs(children) do
+ if child:IsA("GuiObject") then
+ table.insert(guiObjects, child)
+ end
+ end
+ end
+ end
+ if #guiObjects == 0 then
+ scrollUpButton.Active = false
+ scrollDownButton.Active = false
+ scrollPosition = 1
+ return
+ end
+
+ if scrollPosition > #guiObjects then
+ scrollPosition = #guiObjects
+ end
+
+ local totalPixels = frame.AbsoluteSize.Y
+ local pixelsRemaining = frame.AbsoluteSize.Y
+
+ local pixelsBelowScrollbar = 0
+ local pos = #guiObjects
+ while pixelsBelowScrollbar < totalPixels and pos >= 1 do
+ if pos >= scrollPosition then
+ pixelsBelowScrollbar = pixelsBelowScrollbar + guiObjects[pos].AbsoluteSize.Y
+ else
+ if pixelsBelowScrollbar + guiObjects[pos].AbsoluteSize.Y <= totalPixels then
+ --It fits, so back up our scroll position
+ pixelsBelowScrollbar = pixelsBelowScrollbar + guiObjects[pos].AbsoluteSize.Y
+ if scrollPosition <= 1 then
+ scrollPosition = 1
+ break
+ else
+ --print("Backing up ScrollPosition from -- " ..scrollPosition)
+ scrollPosition = scrollPosition - 1
+ end
+ else
+ break
+ end
+ end
+ pos = pos - 1
+ end
+
+ --print("ScrollPosition = " .. scrollPosition)
+ pos = scrollPosition
+ for i, child in ipairs(guiObjects) do
+ if i < scrollPosition then
+ --print("Hiding " .. child.Name)
+ child.Visible = false
+ else
+ if pixelsRemaining < 0 then
+ --print("Out of Space " .. child.Name)
+ child.Visible = false
+ else
+ --print("Laying out " .. child.Name)
+ --GuiObject
+ child.Position = UDim2.new(child.Position.X.Scale, child.Position.X.Offset, 0, totalPixels - pixelsRemaining)
+ pixelsRemaining = pixelsRemaining - child.AbsoluteSize.Y
+ child.Visible = (pixelsRemaining >= 0)
+ end
+ end
+ end
+ scrollUpButton.Active = (scrollPosition > 1)
+ scrollDownButton.Active = (pixelsRemaining < 0)
+ end
+
+ local reentrancyGuard = false
+ local recalculate = function()
+ if reentrancyGuard then
+ return
+ end
+ reentrancyGuard = true
+ wait()
+ local success, err = nil
+ if style == "grid" then
+ success, err = pcall(function() layoutGridScrollBar(frame) end)
+ elseif style == "simple" then
+ success, err = pcall(function() layoutSimpleScrollBar(frame) end)
+ end
+ if not success then print(err) end
+
+ reentrancyGuard = false
+ end
+
+ local scrollUp = function()
+ if scrollUpButton.Active then
+ scrollPosition = scrollPosition - rowSize
+ recalculate()
+ end
+ end
+
+ local scrollDown = function()
+ if scrollDownButton.Active then
+ scrollPosition = scrollPosition + rowSize
+ recalculate()
+ end
+ end
+
+ local scrollMouseCount = 0
+ scrollUpButton.MouseButton1Click:connect(
+ function()
+ --print("Up-MouseButton1Click")
+ scrollMouseCount = scrollMouseCount + 1
+ end)
+ scrollUpButton.MouseLeave:connect(
+ function()
+ --print("Up-Leave")
+ scrollMouseCount = scrollMouseCount + 1
+ end)
+
+ scrollUpButton.MouseButton1Down:connect(
+ function()
+ --print("Up-Down")
+ scrollMouseCount = scrollMouseCount + 1
+
+ scrollUp()
+ local val = scrollMouseCount
+ wait(0.5)
+ while val == scrollMouseCount do
+ if scrollUp() == false then
+ break
+ end
+ wait(0.1)
+ end
+ end)
+
+ scrollDownButton.MouseButton1Click:connect(
+ function()
+ --print("Down-Click")
+ scrollMouseCount = scrollMouseCount + 1
+ end)
+ scrollDownButton.MouseLeave:connect(
+ function()
+ --print("Down-Leave")
+ scrollMouseCount = scrollMouseCount + 1
+ end)
+ scrollDownButton.MouseButton1Down:connect(
+ function()
+ --print("Down-Down")
+ scrollMouseCount = scrollMouseCount + 1
+
+ scrollDown()
+ local val = scrollMouseCount
+ wait(0.5)
+ while val == scrollMouseCount do
+ if scrollDown() == false then
+ break
+ end
+ wait(0.1)
+ end
+ end)
+
+
+ frame.ChildAdded:connect(function()
+ recalculate()
+ end)
+
+ frame.ChildRemoved:connect(function()
+ recalculate()
+ end)
+
+ frame.Changed:connect(
+ function(prop)
+ if prop == "AbsoluteSize" then
+ --Wait a heartbeat for it to sync in
+ recalculate()
+ end
+ end)
+ frame.AncestryChanged:connect(recalculate)
+
+ return frame, scrollUpButton, scrollDownButton, recalculate
+end
+local function binaryGrow(min, max, fits)
+ if min > max then
+ return min
+ end
+ local biggestLegal = min
+
+ while min <= max do
+ local mid = min + math.floor((max - min) / 2)
+ if fits(mid) and (biggestLegal == nil or biggestLegal < mid) then
+ biggestLegal = mid
+
+ --Try growing
+ min = mid + 1
+ else
+ --Doesn't fit, shrink
+ max = mid - 1
+ end
+ end
+ return biggestLegal
+end
+
+
+local function binaryShrink(min, max, fits)
+ if min > max then
+ return min
+ end
+ local smallestLegal = max
+
+ while min <= max do
+ local mid = min + math.floor((max - min) / 2)
+ if fits(mid) and (smallestLegal == nil or smallestLegal > mid) then
+ smallestLegal = mid
+
+ --It fits, shrink
+ max = mid - 1
+ else
+ --Doesn't fit, grow
+ min = mid + 1
+ end
+ end
+ return smallestLegal
+end
+
+
+local function getGuiOwner(instance)
+ while instance ~= nil do
+ if instance:IsA("ScreenGui") or instance:IsA("BillboardGui") then
+ return instance
+ end
+ instance = instance.Parent
+ end
+ return nil
+end
+
+t.AutoTruncateTextObject = function(textLabel)
+ local text = textLabel.Text
+
+ local fullLabel = textLabel:Clone()
+ fullLabel.Name = "Full" .. textLabel.Name
+ fullLabel.BorderSizePixel = 0
+ fullLabel.BackgroundTransparency = 0
+ fullLabel.Text = text
+ fullLabel.TextXAlignment = Enum.TextXAlignment.Center
+ fullLabel.Position = UDim2.new(0,-3,0,0)
+ fullLabel.Size = UDim2.new(0,100,1,0)
+ fullLabel.Visible = false
+ fullLabel.Parent = textLabel
+
+ local shortText = nil
+ local mouseEnterConnection = nil
+ local mouseLeaveConnection= nil
+
+ local checkForResize = function()
+ if getGuiOwner(textLabel) == nil then
+ return
+ end
+ textLabel.Text = text
+ if textLabel.TextFits then
+ --Tear down the rollover if it is active
+ if mouseEnterConnection then
+ mouseEnterConnection:disconnect()
+ mouseEnterConnection = nil
+ end
+ if mouseLeaveConnection then
+ mouseLeaveConnection:disconnect()
+ mouseLeaveConnection = nil
+ end
+ else
+ local len = string.len(text)
+ textLabel.Text = text .. "~"
+
+ --Shrink the text
+ local textSize = binaryGrow(0, len,
+ function(pos)
+ if pos == 0 then
+ textLabel.Text = "~"
+ else
+ textLabel.Text = string.sub(text, 1, pos) .. "~"
+ end
+ return textLabel.TextFits
+ end)
+ shortText = string.sub(text, 1, textSize) .. "~"
+ textLabel.Text = shortText
+
+ --Make sure the fullLabel fits
+ if not fullLabel.TextFits then
+ --Already too small, grow it really bit to start
+ fullLabel.Size = UDim2.new(0, 10000, 1, 0)
+ end
+
+ --Okay, now try to binary shrink it back down
+ local fullLabelSize = binaryShrink(textLabel.AbsoluteSize.X,fullLabel.AbsoluteSize.X,
+ function(size)
+ fullLabel.Size = UDim2.new(0, size, 1, 0)
+ return fullLabel.TextFits
+ end)
+ fullLabel.Size = UDim2.new(0,fullLabelSize+6,1,0)
+
+ --Now setup the rollover effects, if they are currently off
+ if mouseEnterConnection == nil then
+ mouseEnterConnection = textLabel.MouseEnter:connect(
+ function()
+ fullLabel.ZIndex = textLabel.ZIndex + 1
+ fullLabel.Visible = true
+ --textLabel.Text = ""
+ end)
+ end
+ if mouseLeaveConnection == nil then
+ mouseLeaveConnection = textLabel.MouseLeave:connect(
+ function()
+ fullLabel.Visible = false
+ --textLabel.Text = shortText
+ end)
+ end
+ end
+ end
+ textLabel.AncestryChanged:connect(checkForResize)
+ textLabel.Changed:connect(
+ function(prop)
+ if prop == "AbsoluteSize" then
+ checkForResize()
+ end
+ end)
+
+ checkForResize()
+
+ local function changeText(newText)
+ text = newText
+ fullLabel.Text = text
+ checkForResize()
+ end
+
+ return textLabel, changeText
+end
+
+local function TransitionTutorialPages(fromPage, toPage, transitionFrame, currentPageValue)
+ if fromPage then
+ fromPage.Visible = false
+ if transitionFrame.Visible == false then
+ transitionFrame.Size = fromPage.Size
+ transitionFrame.Position = fromPage.Position
+ end
+ else
+ if transitionFrame.Visible == false then
+ transitionFrame.Size = UDim2.new(0.0,50,0.0,50)
+ transitionFrame.Position = UDim2.new(0.5,-25,0.5,-25)
+ end
+ end
+ transitionFrame.Visible = true
+ currentPageValue.Value = nil
+
+ local newsize, newPosition
+ if toPage then
+ --Make it visible so it resizes
+ toPage.Visible = true
+
+ newSize = toPage.Size
+ newPosition = toPage.Position
+
+ toPage.Visible = false
+ else
+ newSize = UDim2.new(0.0,50,0.0,50)
+ newPosition = UDim2.new(0.5,-25,0.5,-25)
+ end
+ transitionFrame:TweenSizeAndPosition(newSize, newPosition, Enum.EasingDirection.InOut, Enum.EasingStyle.Quad, 0.3, true,
+ function(state)
+ if state == Enum.TweenStatus.Completed then
+ transitionFrame.Visible = false
+ if toPage then
+ toPage.Visible = true
+ currentPageValue.Value = toPage
+ end
+ end
+ end)
+end
+
+t.CreateTutorial = function(name, tutorialKey, createButtons)
+ local frame = Instance.new("Frame")
+ frame.Name = "Tutorial-" .. name
+ frame.BackgroundTransparency = 1
+ frame.Size = UDim2.new(0.6, 0, 0.6, 0)
+ frame.Position = UDim2.new(0.2, 0, 0.2, 0)
+
+ local transitionFrame = Instance.new("Frame")
+ transitionFrame.Name = "TransitionFrame"
+ transitionFrame.Style = Enum.FrameStyle.RobloxRound
+ transitionFrame.Size = UDim2.new(0.6, 0, 0.6, 0)
+ transitionFrame.Position = UDim2.new(0.2, 0, 0.2, 0)
+ transitionFrame.Visible = false
+ transitionFrame.Parent = frame
+
+ local currentPageValue = Instance.new("ObjectValue")
+ currentPageValue.Name = "CurrentTutorialPage"
+ currentPageValue.Value = nil
+ currentPageValue.Parent = frame
+
+ local boolValue = Instance.new("BoolValue")
+ boolValue.Name = "Buttons"
+ boolValue.Value = createButtons
+ boolValue.Parent = frame
+
+ local pages = Instance.new("Frame")
+ pages.Name = "Pages"
+ pages.BackgroundTransparency = 1
+ pages.Size = UDim2.new(1,0,1,0)
+ pages.Parent = frame
+
+ local function getVisiblePageAndHideOthers()
+ local visiblePage = nil
+ local children = pages:GetChildren()
+ if children then
+ for i,child in ipairs(children) do
+ if child.Visible then
+ if visiblePage then
+ child.Visible = false
+ else
+ visiblePage = child
+ end
+ end
+ end
+ end
+ return visiblePage
+ end
+
+ local showTutorial = function(alwaysShow)
+ if alwaysShow or UserSettings().GameSettings:GetTutorialState(tutorialKey) == false then
+ print("Showing tutorial-",tutorialKey)
+ local currentTutorialPage = getVisiblePageAndHideOthers()
+
+ local firstPage = pages:FindFirstChild("TutorialPage1")
+ if firstPage then
+ TransitionTutorialPages(currentTutorialPage, firstPage, transitionFrame, currentPageValue)
+ else
+ error("Could not find TutorialPage1")
+ end
+ end
+ end
+
+ local dismissTutorial = function()
+ local currentTutorialPage = getVisiblePageAndHideOthers()
+
+ if currentTutorialPage then
+ TransitionTutorialPages(currentTutorialPage, nil, transitionFrame, currentPageValue)
+ end
+
+ UserSettings().GameSettings:SetTutorialState(tutorialKey, true)
+ end
+
+ local gotoPage = function(pageNum)
+ local page = pages:FindFirstChild("TutorialPage" .. pageNum)
+ local currentTutorialPage = getVisiblePageAndHideOthers()
+ TransitionTutorialPages(currentTutorialPage, page, transitionFrame, currentPageValue)
+ end
+
+ return frame, showTutorial, dismissTutorial, gotoPage
+end
+
+local function CreateBasicTutorialPage(name, handleResize, skipTutorial)
+ local frame = Instance.new("Frame")
+ frame.Name = "TutorialPage"
+ frame.Style = Enum.FrameStyle.RobloxRound
+ frame.Size = UDim2.new(0.6, 0, 0.6, 0)
+ frame.Position = UDim2.new(0.2, 0, 0.2, 0)
+ frame.Visible = false
+
+ local frameHeader = Instance.new("TextLabel")
+ frameHeader.Name = "Header"
+ frameHeader.Text = name
+ frameHeader.BackgroundTransparency = 1
+ frameHeader.FontSize = Enum.FontSize.Size24
+ frameHeader.Font = Enum.Font.ArialBold
+ frameHeader.TextColor3 = Color3.new(1,1,1)
+ frameHeader.TextXAlignment = Enum.TextXAlignment.Center
+ frameHeader.TextWrap = true
+ frameHeader.Size = UDim2.new(1,-55, 0, 22)
+ frameHeader.Position = UDim2.new(0,0,0,0)
+ frameHeader.Parent = frame
+
+ local skipButton = Instance.new("ImageButton")
+ skipButton.Name = "SkipButton"
+ skipButton.AutoButtonColor = false
+ skipButton.BackgroundTransparency = 1
+ skipButton.Image = "http://www.roblox.com/asset/?id=37813546"
+ skipButton.MouseButton1Click:connect(function()
+ skipButton.Image = "http://www.roblox.com/asset/?id=37813546"
+ skipTutorial()
+ end)
+ skipButton.MouseEnter:connect(function()
+ skipButton.Image = "http://www.roblox.com/asset/?id=37813556"
+ end)
+ skipButton.MouseLeave:connect(function()
+ skipButton.Image = "http://www.roblox.com/asset/?id=37813546"
+ end)
+ skipButton.Size = UDim2.new(0, 55, 0, 22)
+ skipButton.Position = UDim2.new(1, -55, 0, 0)
+ skipButton.Parent = frame
+
+ local innerFrame = Instance.new("Frame")
+ innerFrame.Name = "ContentFrame"
+ innerFrame.BackgroundTransparency = 1
+ innerFrame.Position = UDim2.new(0,0,0,22)
+ innerFrame.Parent = frame
+
+ local nextButton = Instance.new("TextButton")
+ nextButton.Name = "NextButton"
+ nextButton.Text = "Next"
+ nextButton.TextColor3 = Color3.new(1,1,1)
+ nextButton.Font = Enum.Font.Arial
+ nextButton.FontSize = Enum.FontSize.Size18
+ nextButton.Style = Enum.ButtonStyle.RobloxButtonDefault
+ nextButton.Size = UDim2.new(0,80, 0, 32)
+ nextButton.Position = UDim2.new(0.5, 5, 1, -32)
+ nextButton.Active = false
+ nextButton.Visible = false
+ nextButton.Parent = frame
+
+ local prevButton = Instance.new("TextButton")
+ prevButton.Name = "PrevButton"
+ prevButton.Text = "Previous"
+ prevButton.TextColor3 = Color3.new(1,1,1)
+ prevButton.Font = Enum.Font.Arial
+ prevButton.FontSize = Enum.FontSize.Size18
+ prevButton.Style = Enum.ButtonStyle.RobloxButton
+ prevButton.Size = UDim2.new(0,80, 0, 32)
+ prevButton.Position = UDim2.new(0.5, -85, 1, -32)
+ prevButton.Active = false
+ prevButton.Visible = false
+ prevButton.Parent = frame
+
+ innerFrame.Size = UDim2.new(1,0,1,-22-35)
+
+ local parentConnection = nil
+
+ local function basicHandleResize()
+ if frame.Visible and frame.Parent then
+ local maxSize = math.min(frame.Parent.AbsoluteSize.X, frame.Parent.AbsoluteSize.Y)
+ handleResize(200,maxSize)
+ end
+ end
+
+ frame.Changed:connect(
+ function(prop)
+ if prop == "Parent" then
+ if parentConnection ~= nil then
+ parentConnection:disconnect()
+ parentConnection = nil
+ end
+ if frame.Parent and frame.Parent:IsA("GuiObject") then
+ parentConnection = frame.Parent.Changed:connect(
+ function(parentProp)
+ if parentProp == "AbsoluteSize" then
+ wait()
+ basicHandleResize()
+ end
+ end)
+ basicHandleResize()
+ end
+ end
+
+ if prop == "Visible" then
+ basicHandleResize()
+ end
+ end)
+
+ return frame, innerFrame
+end
+
+t.CreateTextTutorialPage = function(name, text, skipTutorialFunc)
+ local frame = nil
+ local contentFrame = nil
+
+ local textLabel = Instance.new("TextLabel")
+ textLabel.BackgroundTransparency = 1
+ textLabel.TextColor3 = Color3.new(1,1,1)
+ textLabel.Text = text
+ textLabel.TextWrap = true
+ textLabel.TextXAlignment = Enum.TextXAlignment.Left
+ textLabel.TextYAlignment = Enum.TextYAlignment.Center
+ textLabel.Font = Enum.Font.Arial
+ textLabel.FontSize = Enum.FontSize.Size14
+ textLabel.Size = UDim2.new(1,0,1,0)
+
+ local function handleResize(minSize, maxSize)
+ size = binaryShrink(minSize, maxSize,
+ function(size)
+ frame.Size = UDim2.new(0, size, 0, size)
+ return textLabel.TextFits
+ end)
+ frame.Size = UDim2.new(0, size, 0, size)
+ frame.Position = UDim2.new(0.5, -size/2, 0.5, -size/2)
+ end
+
+ frame, contentFrame = CreateBasicTutorialPage(name, handleResize, skipTutorialFunc)
+ textLabel.Parent = contentFrame
+
+ return frame
+end
+
+t.CreateImageTutorialPage = function(name, imageAsset, x, y, skipTutorialFunc)
+ local frame = nil
+ local contentFrame = nil
+
+ local imageLabel = Instance.new("ImageLabel")
+ imageLabel.BackgroundTransparency = 1
+ imageLabel.Image = imageAsset
+ imageLabel.Size = UDim2.new(0,x,0,y)
+ imageLabel.Position = UDim2.new(0.5,-x/2,0.5,-y/2)
+
+ local function handleResize(minSize, maxSize)
+ size = binaryShrink(minSize, maxSize,
+ function(size)
+ return size >= x and size >= y
+ end)
+ if size >= x and size >= y then
+ imageLabel.Size = UDim2.new(0,x, 0,y)
+ imageLabel.Position = UDim2.new(0.5,-x/2, 0.5, -y/2)
+ else
+ if x > y then
+ --X is limiter, so
+ imageLabel.Size = UDim2.new(1,0,y/x,0)
+ imageLabel.Position = UDim2.new(0,0, 0.5 - (y/x)/2, 0)
+ else
+ --Y is limiter
+ imageLabel.Size = UDim2.new(x/y,0,1, 0)
+ imageLabel.Position = UDim2.new(0.5-(x/y)/2, 0, 0, 0)
+ end
+ end
+ frame.Size = UDim2.new(0, size, 0, size)
+ frame.Position = UDim2.new(0.5, -size/2, 0.5, -size/2)
+ end
+
+ frame, contentFrame = CreateBasicTutorialPage(name, handleResize, skipTutorialFunc)
+ imageLabel.Parent = contentFrame
+
+ return frame
+end
+
+t.AddTutorialPage = function(tutorial, tutorialPage)
+ local transitionFrame = tutorial.TransitionFrame
+ local currentPageValue = tutorial.CurrentTutorialPage
+
+ if not tutorial.Buttons.Value then
+ tutorialPage.ContentFrame.Size = UDim2.new(1,0,1,-22)
+ tutorialPage.NextButton.Parent = nil
+ tutorialPage.PrevButton.Parent = nil
+ end
+
+ local children = tutorial.Pages:GetChildren()
+ if children and #children > 0 then
+ tutorialPage.Name = "TutorialPage" .. (#children+1)
+ local previousPage = children[#children]
+ if not previousPage:IsA("GuiObject") then
+ error("All elements under Pages must be GuiObjects")
+ end
+
+ if tutorial.Buttons.Value then
+ if previousPage.NextButton.Active then
+ error("NextButton already Active on previousPage, please only add pages with RbxGui.AddTutorialPage function")
+ end
+ previousPage.NextButton.MouseButton1Click:connect(
+ function()
+ TransitionTutorialPages(previousPage, tutorialPage, transitionFrame, currentPageValue)
+ end)
+ previousPage.NextButton.Active = true
+ previousPage.NextButton.Visible = true
+
+ if tutorialPage.PrevButton.Active then
+ error("PrevButton already Active on tutorialPage, please only add pages with RbxGui.AddTutorialPage function")
+ end
+ tutorialPage.PrevButton.MouseButton1Click:connect(
+ function()
+ TransitionTutorialPages(tutorialPage, previousPage, transitionFrame, currentPageValue)
+ end)
+ tutorialPage.PrevButton.Active = true
+ tutorialPage.PrevButton.Visible = true
+ end
+
+ tutorialPage.Parent = tutorial.Pages
+ else
+ --First child
+ tutorialPage.Name = "TutorialPage1"
+ tutorialPage.Parent = tutorial.Pages
+ end
+end
+
+t.Help =
+ function(funcNameOrFunc)
+ --input argument can be a string or a function. Should return a description (of arguments and expected side effects)
+ if funcNameOrFunc == "CreatePropertyDropDownMenu" or funcNameOrFunc == t.CreatePropertyDropDownMenu then
+ return "Function CreatePropertyDropDownMenu. " ..
+ "Arguments: (instance, propertyName, enumType). " ..
+ "Side effect: returns a container with a drop-down-box that is linked to the 'property' field of 'instance' which is of type 'enumType'"
+ end
+ if funcNameOrFunc == "CreateDropDownMenu" or funcNameOrFunc == t.CreateDropDownMenu then
+ return "Function CreateDropDownMenu. " ..
+ "Arguments: (items, onItemSelected). " ..
+ "Side effect: Returns 2 results, a container to the gui object and a 'updateSelection' function for external updating. The container is a drop-down-box created around a list of items"
+ end
+ if funcNameOrFunc == "CreateMessageDialog" or funcNameOrFunc == t.CreateMessageDialog then
+ return "Function CreateMessageDialog. " ..
+ "Arguments: (title, message, buttons). " ..
+ "Side effect: Returns a gui object of a message box with 'title' and 'message' as passed in. 'buttons' input is an array of Tables contains a 'Text' and 'Function' field for the text/callback of each button"
+ end
+ if funcNameOrFunc == "CreateStyledMessageDialog" or funcNameOrFunc == t.CreateStyledMessageDialog then
+ return "Function CreateStyledMessageDialog. " ..
+ "Arguments: (title, message, style, buttons). " ..
+ "Side effect: Returns a gui object of a message box with 'title' and 'message' as passed in. 'buttons' input is an array of Tables contains a 'Text' and 'Function' field for the text/callback of each button, 'style' is a string, either Error, Notify or Confirm"
+ end
+ if funcNameOrFunc == "GetFontHeight" or funcNameOrFunc == t.GetFontHeight then
+ return "Function GetFontHeight. " ..
+ "Arguments: (font, fontSize). " ..
+ "Side effect: returns the size in pixels of the given font + fontSize"
+ end
+ if funcNameOrFunc == "LayoutGuiObjects" or funcNameOrFunc == t.LayoutGuiObjects then
+
+ end
+ if funcNameOrFunc == "CreateScrollingFrame" or funcNameOrFunc == t.CreateScrollingFrame then
+ return "Function CreateScrollingFrame. " ..
+ "Arguments: (orderList, style) " ..
+ "Side effect: returns 4 objects, (scrollFrame, scrollUpButton, scrollDownButton, recalculateFunction). 'scrollFrame' can be filled with GuiObjects. It will lay them out and allow scrollUpButton/scrollDownButton to interact with them. Orderlist is optional (and specifies the order to layout the children. Without orderlist, it uses the children order. style is also optional, and allows for a 'grid' styling if style is passed 'grid' as a string. recalculateFunction can be called when a relayout is needed (when orderList changes)"
+ end
+ if funcNameOrFunc == "AutoTruncateTextObject" or funcNameOrFunc == t.AutoTruncateTextObject then
+ return "Function AutoTruncateTextObject. " ..
+ "Arguments: (textLabel) " ..
+ "Side effect: returns 2 objects, (textLabel, changeText). The 'textLabel' input is modified to automatically truncate text (with ellipsis), if it gets too small to fit. 'changeText' is a function that can be used to change the text, it takes 1 string as an argument"
+ end
+ if funcNameOrFunc == "CreateSlider" or funcNameOrFunc == t.CreateSlider then
+ return "Function CreateSlider. " ..
+ "Arguments: (steps, width, position) " ..
+ "Side effect: returns 2 objects, (sliderGui, sliderPosition). The 'steps' argument specifies how many different positions the slider can hold along the bar. 'width' specifies in pixels how wide the bar should be (modifiable afterwards if desired). 'position' argument should be a UDim2 for slider positioning. 'sliderPosition' is an IntValue whose current .Value specifies the specific step the slider is currently on."
+ end
+ end
+
+local NewPlayerListGui = Instance.new("ScreenGui",script.Parent)
+NewPlayerListGui.Name = "NewPlayerList"
+
+coroutine.resume(coroutine.create(function()
+NewPlayerListGui.Parent = game.CoreGui
+if game.CoreGui:FindFirstChild("NewPlayerList") then
+game.CoreGui["NewPlayerList"].Parent = nil
+end end))
+
+local localTesting = true
+
+local friendWord = "Friend"
+local friendWordLowercase = "friend"
+
+local testFriendingPlaces = {}
+testFriendingPlaces[41324860] = true
+local enableFriendingGlobally = false
+
+local testPlayerListPlaces = {}
+testPlayerListPlaces[41324860] = true
+testPlayerListPlaces[10042455] = true
+local enablePlayerListGlobally = false
+
+local bigEasingStyle = Enum.EasingStyle.Back
+local smallEasingStyle = Enum.EasingStyle.Quart
+local lightBackground = true
+
+local function waitForChild(instance, name)
+ while not instance:FindFirstChild(name) do
+ instance.ChildAdded:wait()
+ end
+end
+
+local function waitForProperty(instance, prop)
+ while not instance[prop] do
+ instance.Changed:wait()
+ end
+end
+
+local function Color3I(r,g,b)
+ return Color3.new(r/255,g/255,b/255)
+end
+
+function robloxLock(instance)
+end
+
+function ArrayRemove(t, obj)
+ for i, obj2 in ipairs(t) do
+ if obj == obj2 then
+ table.remove(t, i)
+ return true
+ end
+ end
+ return false
+end
+
+local function getPlayers()
+ local result = {}
+ local players = game:GetService("Players"):GetChildren()
+ if players then
+ for i, player in ipairs(players) do
+ if player:IsA("Player") then
+ table.insert(result, player)
+ end
+ end
+ end
+ return result
+end
+
+local brickColorTable = {}
+for i = 0, 63 do
+ brickColorTable[BrickColor.palette(i).Name] = BrickColor.palette(i).Color
+end
+
+local function remapColor(i, j)
+ brickColorTable[BrickColor.palette(i).Name] = BrickColor.palette(j).Color
+end
+
+remapColor(13, 12)
+remapColor(14, 12)
+remapColor(15, 12)
+remapColor(61, 29)
+remapColor(63, 62)
+remapColor(56, 50)
+remapColor(45, 53)
+remapColor(51, 20)
+remapColor(4, 20)
+remapColor(59, 35)
+remapColor(60, 29)
+
+local function getColor(brickColor)
+ if brickColorTable[brickColor.Name] then
+ return brickColorTable[brickColor.Name]
+ else
+ return brickColor.Color;
+ end
+end
+
+
+
+local function getTeams()
+ local result = {}
+ local teams = game:GetService("Teams"):GetChildren()
+ for i, team in ipairs(teams) do
+ if team:IsA("Team") then
+ table.insert(result, team)
+ end
+ end
+ return result
+end
+
+local supportFriends = false
+local currentBoardType = "PlayerList"
+local currentStatCount = 0
+
+local createBoardsFunction = nil
+
+
+local playerTable = {}
+local teamTable = {}
+local teamColorTable = {}
+
+local removePlayerFunction = nil
+local recreatePlayerFunction = nil
+local addPlayerFunction = function(player)
+ if recreatePlayerFunction then
+ recreatePlayerFunction(player)
+ end
+end
+local sortPlayerListsFunction = nil
+
+local minimizedState = nil
+local bigWindowImposter = nil
+local smallWindowPosition = UDim2.new(0, -20, 0,5)--UDim2.new(0, 0, 0,0)
+local smallWindowSize = UDim2.new(1,0,1,0)--UDim2.new(1,5,1,0)
+local bigWindowSize = UDim2.new(0.6,0,0.6,0)
+local bigWindowPosition = UDim2.new(.2, 0, .2,0)
+
+local debounceTeamsChanged = false
+
+local currentWindowState = "Small"
+local previousWindowState = nil
+local transitionWindowsFunction = nil
+
+local container = nil
+local topRightTrayContainer = nil
+
+local playerContextMenu = nil
+local contextMenuElements = {}
+
+local function addContextMenuLabel(getText1, getText2, isVisible)
+ local t = {}
+ t.Type = "Label"
+ t.GetText1 = getText1
+ t.GetText2 = getText2
+ t.IsVisible = isVisible
+ table.insert(contextMenuElements, t)
+end
+local function addContextMenuButton(text, isVisible, isActive, doIt)
+ local t = {}
+ t.Text = text
+ t.Type = "Button"
+ t.IsVisible = isVisible
+ t.IsActive = isActive
+ t.DoIt = doIt
+ table.insert(contextMenuElements, t)
+end
+
+local function getFriendStatus(player)
+ if player == game.Players.LocalPlayer then
+ return Enum.FriendStatus.NotFriend
+ else
+ return game.Players.LocalPlayer:GetFriendStatus(player)
+ end
+end
+--Populate the ContextMenus
+addContextMenuLabel(
+ --GetText1
+ function(player)
+ return "Loading..."
+ end,
+ --GetText2
+ nil,
+ --IsVisible
+ function(player)
+ return getFriendStatus(player) == Enum.FriendStatus.Unknown
+ end)
+
+--[[
+addContextMenuLabel(
+ --GetText1
+ function(player)
+ return player.Name
+ end,
+ --GetText2
+ nil,
+ --IsVisible
+ function(player)
+ return true
+ end)]]--
+addContextMenuButton("Send " .. friendWord .. " Request",
+ --IsVisible
+ function(player)
+ return getFriendStatus(player) == Enum.FriendStatus.NotFriend
+ end,
+ --IsActive
+ function(player)
+ return true
+ end,
+ --DoIt
+ function(player)
+ return game.Players.LocalPlayer:RequestFriendship(player)
+ end
+)
+addContextMenuButton("Un" .. friendWordLowercase,
+ --IsVisible
+ function(player)
+ return getFriendStatus(player) == Enum.FriendStatus.Friend
+ end,
+ --IsActive
+ function(player)
+ return true
+ end,
+ --DoIt
+ function(player)
+ return game.Players.LocalPlayer:RevokeFriendship(player)
+ end
+)
+addContextMenuButton("Accept " .. friendWord .. " Request",
+ --IsVisible
+ function(player)
+ return getFriendStatus(player) == Enum.FriendStatus.FriendRequestReceived
+ end,
+ --IsActive
+ function(player)
+ return true
+ end,
+ --DoIt
+ function(player)
+ return game.Players.LocalPlayer:RequestFriendship(player)
+ end
+)
+
+addContextMenuButton("Deny " .. friendWord .. " Request",
+ --IsVisible
+ function(player)
+ return getFriendStatus(player) == Enum.FriendStatus.FriendRequestReceived
+ end,
+ --IsActive
+ function(player)
+ return true
+ end,
+ --DoIt
+ function(player)
+ return game.Players.LocalPlayer:RevokeFriendship(player)
+ end
+)
+
+addContextMenuButton("Cancel " .. friendWord .. " Request",
+ --IsVisible
+ function(player)
+ return getFriendStatus(player) == Enum.FriendStatus.FriendRequestSent
+ end,
+ --IsActive
+ function(player)
+ return true
+ end,
+ --DoIt
+ function(player)
+ return game.Players.LocalPlayer:RevokeFriendship(player)
+ end
+)
+
+
+local function getStatColumns(players)
+ for i, player in ipairs(players) do
+ local leaderstats = player:FindFirstChild("leaderstats")
+ if leaderstats then
+ --print(player, " is King of the List")
+ local stats = {}
+ local children = leaderstats:GetChildren()
+ if children then
+ for i, stat in ipairs(children) do
+ if stat:IsA("IntValue") then
+ table.insert(stats, stat.Name)
+ else
+ --TODO: This should check for IntValue only but current ScoreHud does not
+ table.insert(stats, stat.Name)
+ end
+ end
+ end
+ return stats
+ end
+ end
+ return nil
+end
+
+local function determineBoardType()
+ local players = getPlayers()
+
+ local foundLeaderstats = false
+ local numStats = 0
+ local foundTeam = false
+
+ local stats = getStatColumns(players)
+ if stats then
+ foundLeaderstats = true
+ numStats = #stats
+ end
+
+ for i, player in ipairs(players) do
+ if not foundTeam then
+ if not player.Neutral then
+ foundTeam = true
+ break
+ end
+ end
+ end
+
+ if foundLeaderstats and foundTeam then
+ return "TeamScore", numStats
+ elseif foundLeaderstats then
+ return "PlayerScore", numStats
+ elseif foundTeam then
+ return "TeamList", numStats
+ else
+ return "PlayerList", numStats
+ end
+end
+
+local function toggleBigWindow()
+ if container == nil then
+ return
+ end
+
+ if currentWindowState == "Big" then
+ --Hide it
+ if previousWindowState == nil or previousWindowState == "Big" or previousWindowState == "None" then
+ transitionWindowsFunction("None")
+ else
+ transitionWindowsFunction("Small")
+ end
+ else
+ previousWindowState = currentWindowState
+ transitionWindowsFunction("Big")
+ end
+end
+local previousBigPlayerList = nil
+local function rebuildBoard(owner, boardType, numStats)
+ print("RebuildBoard")
+ if topRightTrayContainer == nil then
+ topRightTrayContainer = owner:FindFirstChild("PlayerListTopRightFrame")
+ if topRightTrayContainer == nil then
+ topRightTrayContainer = Instance.new("Frame")
+ topRightTrayContainer.Name = "PlayerListTopRightFrame"
+ topRightTrayContainer.BackgroundTransparency = 1
+ topRightTrayContainer.Size = UDim2.new(0.2, 16, 0.42, 16)--UDim2.new(0.2, 0, 0.42, 0)
+ topRightTrayContainer.Position = UDim2.new(0.8, 0, 0, 0)--UDim2.new(0.8, 0, 0, 0)
+ topRightTrayContainer.Parent = container
+ end
+ end
+ if minimizedState == nil then
+ minimizedState = Instance.new("Frame")
+ minimizedState.Name = "MinimizedPlayerlist"
+ minimizedState.BackgroundTransparency = 1
+ minimizedState.Position = UDim2.new(1, -166, 0,0) --UDim2.new(1, -153, 0,0)
+ minimizedState.Size = UDim2.new(0, 151, 0, 30)
+
+ --[[local playerListButton = Instance.new("ImageButton")
+ playerListButton.Name = "GoBigButton"
+ playerListButton.Image = "rbxasset://textures/ui/playerlist_hidden_maximize.png"
+ playerListButton.BackgroundTransparency = 1
+ playerListButton.Size = UDim2.new(0.0, 116, 0, 30)
+ playerListButton.Position = UDim2.new(0, 35, 0, 0)
+ playerListButton.MouseButton1Click:connect(
+ function()
+ toggleBigWindow()
+ end)
+ playerListButton.Parent = minimizedState]]
+
+ playerListButton = Instance.new("ImageButton")
+ playerListButton.Name = "GoSmallButton"
+ playerListButton.Image = "rbxasset://textures/ui/playerlist_hidden_small.png"
+ playerListButton.BackgroundTransparency = 1
+ playerListButton.Size = UDim2.new(0.0, 35, 0, 30)
+ playerListButton.Position = UDim2.new(1, -35, 0, 0)
+ playerListButton.MouseButton1Click:connect(
+ function()
+ transitionWindowsFunction("Small")
+ end)
+ playerListButton.Parent = minimizedState
+
+ minimizedState.Visible = false
+ robloxLock(minimizedState)
+ minimizedState.Parent = topRightTrayContainer
+ end
+ if bigWindowImposter == nil then
+ bigWindowImposter = owner:FindFirstChild("BigPlayerListWindowImposter")
+ if bigWindowImposter == nil then
+ bigWindowImposter = Instance.new("Frame")
+ bigWindowImposter.Name = "BigPlayerListWindowImposter"
+ bigWindowImposter.Visible = false
+ --bigWindowImposter.Style = Enum.FrameStyle.RobloxRound
+ bigWindowImposter.BackgroundColor3 = Color3.new(0,0,0)
+ bigWindowImposter.BackgroundTransparency = 0.7
+ bigWindowImposter.BorderSizePixel = 0
+ --bigWindowImposter.Size = UDim2.new(0.4, 0, 0.4, 0)
+ bigWindowImposter.Size = UDim2.new(0.4, 7, 0.4, 7)
+ bigWindowImposter.Position = UDim2.new(0.3, 0, 0.3, 0)
+ robloxLock(bigWindowImposter)
+ bigWindowImposter.Parent = container
+ end
+ end
+ if container == nil or container ~= owner then
+ container = owner
+
+ topRightTrayContainer.Parent = container
+ bigWindowImposter.Parent = container
+ end
+
+ local smallVisible = true
+ local bigVisible = false
+ if container then
+ if topRightTrayContainer then
+ --Delete the old boards
+ if topRightTrayContainer:FindFirstChild("SmallPlayerlist") then
+ smallVisible = topRightTrayContainer.SmallPlayerlist.Visible
+ topRightTrayContainer.SmallPlayerlist.Parent = nil
+ print("Removed small playerlist")
+ else
+ print("Did not remove small playerlist")
+ end
+ end
+ if container:FindFirstChild("BigPlayerlist") then
+ bigVisible = container.BigPlayerlist.Visible or (previousBigPlayerList ~= nil)
+ container.BigPlayerlist.Parent = nil
+ if previousBigPlayerList ~= nil then
+ pcall(function() game.GuiService:RemoveCenterDialog(previousBigPlayerList) end)
+ previousBigPlayerList = nil
+ end
+ end
+ end
+
+ local smallBoard, bigBoard = createBoardsFunction(boardType, numStats)
+ if smallBoard then
+ smallBoard.Visible = smallVisible
+ smallBoard.Parent = topRightTrayContainer
+ end
+ if bigBoard then
+ if bigVisible then
+ previousBigPlayerList = bigBoard
+ local centerDialogSupported, msg = pcall(function() game.GuiService:AddCenterDialog(previousBigPlayerList, Enum.CenterDialogType.PlayerInitiatedDialog,
+ function()
+ previousBigPlayerList.Visible = true
+ end)
+ end)
+ bigBoard.Visible = bigVisible
+ else
+ bigBoard.Visible = false
+ end
+ bigBoard.Parent = container
+ end
+ return container
+end
+
+
+local function showBigPlayerWindow()
+ if container:FindFirstChild("BigPlayerlist") then
+ if container.BigPlayerlist.Visible then
+ return
+ end
+ end
+
+ bigWindowImposter.Visible = true
+ bigWindowImposter:TweenSizeAndPosition(bigWindowSize, bigWindowPosition, Enum.EasingDirection.Out, bigEasingStyle, 0.3, true,
+ function(state)
+ if state == Enum.TweenStatus.Completed then
+ bigWindowImposter.Visible = false
+ if container:FindFirstChild("BigPlayerlist") then
+ container.BigPlayerlist.Visible = true
+ end
+ end
+ end)
+end
+
+local function hideBigPlayerWindow(completed)
+ if playerContextMenu then
+ playerContextMenu.Visible = false
+ end
+
+ if container:FindFirstChild("BigPlayerlist") then
+ if container.BigPlayerlist.Visible == false and bigWindowImposter.Visible == false then
+ if completed then
+ completed()
+ end
+ --Already completely hidden
+ return
+ end
+ container.BigPlayerlist.Visible = false
+ end
+
+ local completedFunction = completed
+ bigWindowImposter.Visible = true
+ bigWindowImposter:TweenSizeAndPosition(UDim2.new(0.4, 0, 0.4, 0), UDim2.new(0.3, 0, 0.3, 0), Enum.EasingDirection.In, Enum.EasingStyle.Quart, 0.15, true,
+ function(state)
+ if state == Enum.TweenStatus.Completed then
+ bigWindowImposter.Visible = false
+ if completedFunction then
+ completedFunction()
+ end
+ end
+ end)
+end
+local function hideSmallPlayerWindow(completed)
+ if playerContextMenu then
+ playerContextMenu.Visible = false
+ end
+ if topRightTrayContainer:FindFirstChild("SmallPlayerlist") then
+ local completedFunction = completed
+ if topRightTrayContainer.SmallPlayerlist.Visible then
+ topRightTrayContainer.SmallPlayerlist:TweenPosition(UDim2.new(1,0,smallWindowPosition.Y.Scale, smallWindowPosition.Y.Offset), Enum.EasingDirection.Out, smallEasingStyle, 0.3, true,
+ function(state)
+ --print(state)
+ if state == Enum.TweenStatus.Completed then
+ if topRightTrayContainer:FindFirstChild("SmallPlayerlist") then
+ topRightTrayContainer.SmallPlayerlist.Visible = false
+ end
+ if completedFunction then
+ completedFunction()
+ end
+ end
+ end)
+ return
+ end
+ end
+ if completed then
+ completed()
+ end
+end
+
+
+transitionWindowsFunction = function(desiredState)
+ if desiredState == "Big" then
+ minimizedState.Visible = false
+ hideSmallPlayerWindow()
+
+ if previousBigPlayerList ~= nil then
+ if previousBigPlayerList ~= container:FindFirstChild("BigPlayerlist") then
+ pcall(function() game.GuiService:RemoveCenterDialog(previousBigPlayerList) end)
+ previousBigPlayerList = nil
+ previousBigPlayerList = container:FindFirstChild("BigPlayerlist")
+ end
+ else
+ previousBigPlayerList = container:FindFirstChild("BigPlayerlist")
+ end
+
+ if previousBigPlayerList then
+ local firstShow = false
+ local centerDialogSupported, msg = pcall(function() game.GuiService:AddCenterDialog(previousBigPlayerList, Enum.CenterDialogType.PlayerInitiatedDialog,
+ function()
+ if not firstShow then
+ showBigPlayerWindow()
+ firstShow = true
+ else
+ previousBigPlayerList.Visible = true
+ end
+ end)
+ end)
+ if centerDialogSupported == false then
+ print("Exception", msg)
+ showBigPlayerWindow()
+ end
+ else
+ showBigPlayerWindow()
+ end
+ currentWindowState = "Big"
+ elseif desiredState == "Small" then
+ minimizedState.Visible = false
+ if previousBigPlayerList ~= nil then
+ pcall(function() game.GuiService:RemoveCenterDialog(previousBigPlayerList) end)
+ previousBigPlayerList = nil
+ end
+
+ hideBigPlayerWindow()
+ if topRightTrayContainer:FindFirstChild("SmallPlayerlist") then
+ if not topRightTrayContainer.SmallPlayerlist.Visible or topRightTrayContainer.SmallPlayerlist.Position ~= smallWindowPosition then
+ topRightTrayContainer.SmallPlayerlist.Visible = true
+ topRightTrayContainer.SmallPlayerlist:TweenPosition(smallWindowPosition, Enum.EasingDirection.Out, smallEasingStyle, 0.3, true)
+ end
+ end
+ currentWindowState = "Small"
+ elseif desiredState == "None" then
+ if previousBigPlayerList ~= nil then
+ pcall(function() game.GuiService:RemoveCenterDialog(previousBigPlayerList) end)
+ previousBigPlayerList = nil
+ end
+
+ local smallDone = false
+ local bigDone = false
+ hideSmallPlayerWindow(
+ function()
+ smallDone = true
+ if bigDone and smallDone then
+ minimizedState.Visible = true
+ end
+ end)
+ hideBigPlayerWindow(
+ function()
+ bigDone = true
+ if bigDone and smallDone then
+ minimizedState.Visible = true
+ end
+ end)
+ currentWindowState = "None"
+ end
+end
+
+local function getStatValuesForPlayer(player)
+ local leaderstats = player:FindFirstChild("leaderstats")
+ if leaderstats then
+ local children = leaderstats:GetChildren()
+ if children then
+ local result = {}
+ --Just go based on position
+ for i, stat in ipairs(children) do
+ if stat:IsA("IntValue") then
+ table.insert(result, stat)
+ else
+ table.insert(result, 0)
+ end
+ end
+
+ return result, leaderstats
+ end
+ end
+ return nil
+end
+
+--ChildAdded on Player (if it's name is "leaderstats")
+
+if UserSettings and LoadLibrary then
+
+ RbxGui,msg = t
+ print("Libraries loaded")
+
+ local function createTeamName(name, color)
+ local fontHeight = 20 --RbxGui.GetFontHeight(Enum.Font.ArialBold, Enum.FontSize.Size18)
+ local frame = Instance.new("Frame")
+ frame.Name = "Team-" .. name
+ frame.BorderSizePixel = 0
+ frame.BackgroundTransparency = 0.5
+ frame.BackgroundColor3 = Color3.new(1,1,1)
+ frame.Size = UDim2.new(1, 0, 0, fontHeight)
+ frame.Position = UDim2.new(0,0,0,0)
+
+ local label = Instance.new("TextLabel")
+ label.Name = "NameLabel"
+ label.Text = " " .. name
+ label.Font = Enum.Font.ArialBold
+ label.FontSize = Enum.FontSize.Size18
+ label.Position = UDim2.new(0,0,0,0)
+ label.Size = UDim2.new(1,0,1,0)
+ label.TextColor3 = Color3.new(1,1,1)
+ label.BackgroundTransparency = 0.5
+ label.BackgroundColor3 = getColor(color)
+ label.BorderSizePixel = 0
+ label.TextXAlignment = Enum.TextXAlignment.Left
+ label = RbxGui.AutoTruncateTextObject(label)
+ label.Parent = frame
+
+ return frame
+ end
+
+ local function getFriendStatusIcon(friendStatus)
+ if friendStatus == Enum.FriendStatus.Unknown or friendStatus == Enum.FriendStatus.NotFriend then
+ return nil
+ elseif friendStatus == Enum.FriendStatus.Friend then
+ return "rbxasset://textures/ui/PlayerlistFriendIcon.png"
+ elseif friendStatus == Enum.FriendStatus.FriendRequestSent then
+ return "rbxasset://textures/ui/PlayerlistFriendRequestSentIcon.png"
+ elseif friendStatus == Enum.FriendStatus.FriendRequestReceived then
+ return "rbxasset://textures/ui/PlayerlistFriendRequestReceivedIcon.png"
+ else
+ error("Unknown FriendStatus: " .. friendStatus)
+ end
+ end
+
+ local function getMembershipTypeIcon(membershipType)
+ --TODO: replace with proper icons
+ if membershipType == Enum.MembershipType.None then
+ return ""
+ elseif membershipType == Enum.MembershipType.BuildersClub then
+ return "rbxasset://textures/ui/TinyBcIcon.png"
+ elseif membershipType == Enum.MembershipType.TurboBuildersClub then
+ return "rbxasset://textures/ui/TinyTbcIcon.png"
+ elseif membershipType == Enum.MembershipType.OutrageousBuildersClub then
+ return "rbxasset://textures/ui/TinyObcIcon.png"
+ else
+ error("Uknown membershipType" .. membershipType)
+ end
+ end
+
+
+ local function updatePlayerFriendStatus(nameObject, friendStatus)
+ local fontHeight = 20 --RbxGui.GetFontHeight(Enum.Font.ArialBold, Enum.FontSize.Size14)
+
+ local friendIconImage = getFriendStatusIcon(friendStatus)
+ nameObject.MembershipTypeLabel.FriendStatusLabel.Visible = (friendIconImage ~= nil)
+
+ if friendIconImage ~= nil then
+ --Show friend icon
+ nameObject.MembershipTypeLabel.FriendStatusLabel.Image = friendIconImage
+ nameObject.NameLabel.Position =UDim2.new(0,2*fontHeight,0,1)
+ nameObject.NameLabel.Size = UDim2.new(1,-2*fontHeight,1,-2)
+ else
+ --Hide the friend icon
+ nameObject.NameLabel.Position = UDim2.new(0,fontHeight+1,0,1)
+ nameObject.NameLabel.Size = UDim2.new(1,-(fontHeight+1),1,-2)
+ end
+ end
+ local function updatePlayerName(nameObject, membershipStatus, teamColor)
+ local fontHeight = 20 --RbxGui.GetFontHeight(Enum.Font.ArialBold, Enum.FontSize.Size14)
+
+ nameObject.Size = UDim2.new(1,0,0,fontHeight)
+ nameObject.MembershipTypeLabel.Image = getMembershipTypeIcon(membershipStatus)
+ end
+
+
+ local function updatePlayerNameColor(player, teamColor)
+ local function updatePlayerNameColorHelper(nameObject)
+ if teamColor ~= nil then
+ nameObject.NameLabel.TextColor3 = getColor(teamColor)
+ nameObject.NameLabel.FullNameLabel.TextColor3 = getColor(teamColor)
+ else
+ nameObject.NameLabel.TextColor3 = Color3.new(1,1,1)
+ nameObject.NameLabel.FullNameLabel.TextColor3 = Color3.new(1,1,1)
+ end
+ end
+
+ updatePlayerNameColorHelper(playerTable[player].NameObjectSmall)
+ updatePlayerNameColorHelper(playerTable[player].NameObjectBig)
+ end
+
+
+ local function createPlayerName(name, membershipStatus, teamColor, friendStatus)
+ local frame = Instance.new("Frame")
+ frame.Name = "Player_" .. name
+ if lightBackground then
+ frame.BackgroundColor3 = Color3.new(1,1,1)
+ else
+ frame.BackgroundColor3 = Color3.new(1,1,1)
+ end
+ frame.BackgroundTransparency = 0.5
+ frame.BorderSizePixel = 0
+
+ local membershipStatusLabel = Instance.new("ImageLabel")
+ membershipStatusLabel.Name = "MembershipTypeLabel"
+ membershipStatusLabel.BackgroundTransparency = 1
+ membershipStatusLabel.Size = UDim2.new(1,0,1,0)
+ membershipStatusLabel.Position = UDim2.new(0,0,0,0)
+ membershipStatusLabel.SizeConstraint = Enum.SizeConstraint.RelativeYY
+ membershipStatusLabel.Parent = frame
+
+ local friendStatusLabel = Instance.new("ImageLabel")
+ friendStatusLabel.Name = "FriendStatusLabel"
+ friendStatusLabel.Visible = false
+ friendStatusLabel.BackgroundTransparency = 1
+ friendStatusLabel.Size = UDim2.new(1,0,1,0)
+ friendStatusLabel.Position = UDim2.new(1,0,0,0)
+ friendStatusLabel.Parent = membershipStatusLabel
+
+ local changeNameFunction
+ local nameLabel = Instance.new("TextLabel")
+ nameLabel.Name = "NameLabel"
+ nameLabel.Text = name
+ nameLabel.Font = Enum.Font.ArialBold
+ nameLabel.FontSize = Enum.FontSize.Size14
+ nameLabel.TextColor3 = Color3.new(1,1,1)
+ nameLabel.BackgroundTransparency = 1
+ nameLabel.BackgroundColor3 = Color3.new(0,0,0)
+ nameLabel.TextXAlignment = Enum.TextXAlignment.Left
+ nameLabel, changeNameFunction = RbxGui.AutoTruncateTextObject(nameLabel)
+ nameLabel.Parent = frame
+
+ updatePlayerName(frame, membershipStatus, teamColor)
+ if supportFriends then
+ updatePlayerFriendStatus(frame, friendStatus)
+ else
+ updatePlayerFriendStatus(frame, Enum.FriendStatus.NotFriend)
+ end
+ return frame, changeNameFunction
+ end
+
+ local function createStatColumn(i, numColumns, isTeam, color3, isHeader)
+ local textLabel = Instance.new("TextLabel")
+ textLabel.Name = "Stat" .. i
+ textLabel.TextColor3 = Color3.new(1,1,1)
+ textLabel.TextXAlignment = Enum.TextXAlignment.Right
+ textLabel.TextYAlignment = Enum.TextYAlignment.Center
+ textLabel.FontSize = Enum.FontSize.Size14
+ if isHeader then
+ textLabel.FontSize = Enum.FontSize.Size18
+ else
+ textLabel.FontSize = Enum.FontSize.Size14
+ end
+ if isHeader or isTeam then
+ textLabel.Font = Enum.Font.ArialBold
+ else
+ textLabel.Font = Enum.Font.Arial
+ end
+
+ if isTeam then
+ textLabel.BackgroundColor3 = color3
+ textLabel.Text = 0
+ else
+ textLabel.BackgroundColor3 = Color3.new(0,0,0)
+ textLabel.Text = ""
+ end
+ textLabel.BackgroundTransparency = 1
+ if i == numColumns then
+ textLabel.Size = UDim2.new(1/numColumns, -6, 1, 0)
+ else
+ textLabel.Size = UDim2.new(1/numColumns, -4, 1, 0)
+ end
+
+ textLabel.Position = UDim2.new((i-1) * (1/numColumns), 0, 0, 0)
+ return RbxGui.AutoTruncateTextObject(textLabel)
+ end
+
+ local function createStatHeaders(stats, numColumns, isBig)
+ local frame = Instance.new("Frame")
+ frame.Name = "Headers"
+ frame.BorderSizePixel = 0
+ frame.BackgroundColor3 = Color3.new(0,0,0)
+ frame.BackgroundTransparency = 1
+
+ local nameSize
+ if isBig then
+ nameSize = 0.5
+ elseif numColumns == 1 then
+ nameSize = 0.7
+ elseif numColumns == 2 then
+ nameSize = 0.6
+ else
+ nameSize = 0.45
+ end
+ frame.Size = UDim2.new(1-nameSize, 0, 1,0)
+ if isBig then
+ frame.Position = UDim2.new(nameSize,-25, 0,0)
+ else
+ frame.Position = UDim2.new(nameSize,0, 0,0)
+ end
+
+ local i = 1
+ while i <= numColumns do
+ local headerColumn, changeText = createStatColumn(i, numColumns, false, nil, true)
+ changeText(stats[i])
+ headerColumn.Parent = frame
+ i = i + 1
+ end
+ return frame, textChangers
+ end
+
+ local function createStatColumns(nameObject, numColumns, isTeam, isBig)
+ local frame = Instance.new("Frame")
+ frame.Name = nameObject.Name .. "_WithStats"
+ frame.BorderSizePixel = 0
+ frame.BackgroundColor3 = nameObject.BackgroundColor3
+ frame.BackgroundTransparency = nameObject.BackgroundTransparency
+ frame.Size = nameObject.Size
+ frame.Position = nameObject.Position
+
+ nameObject.BackgroundTransparency = 1
+
+ if numColumns == 0 then
+ nameObject.Size = UDim2.new(1,0,1,0)
+ nameObject.Position = UDim2.new(0,0,0,0)
+ nameObject.Parent = frame
+ return frame
+ end
+
+ local statFrame = Instance.new("Frame")
+ statFrame.Name = "Stats"
+ if isTeam then
+ statFrame.BorderSizePixel = 0
+ statFrame.BackgroundColor3 = nameObject.NameLabel.BackgroundColor3
+ statFrame.BackgroundTransparency = nameObject.NameLabel.BackgroundTransparency
+ else
+ statFrame.BackgroundTransparency = 1
+ end
+
+ local nameSize
+ if isBig then
+ nameSize = 0.5
+ elseif numColumns == 1 then
+ nameSize = 0.7
+ elseif numColumns == 2 then
+ nameSize = 0.6
+ else
+ nameSize = 0.45
+ end
+ nameObject.Size = UDim2.new(nameSize, 0, 1, 0)
+ nameObject.Position = UDim2.new(0, 0, 0, 0)
+ statFrame.Size = UDim2.new(1-nameSize,0, 1,0)
+ statFrame.Position = UDim2.new(nameSize,0, 0,0)
+
+ nameObject.Parent = frame
+ statFrame.Parent = frame
+
+ local textChangers = {}
+ local i = 1
+ while i <= numColumns do
+ local statColumn, changeText = createStatColumn(i, numColumns, isTeam, statFrame.BackgroundColor3)
+ statColumn.Parent = statFrame
+ table.insert(textChangers, changeText)
+
+ i = i + 1
+ end
+
+ return frame, statFrame, textChangers
+ end
+
+ local function createAlternatingRows(objects)
+ for i, line in ipairs(objects) do
+ if i % 2 == 0 then
+ line.BackgroundTransparency = 1
+ else
+ line.BackgroundTransparency = 0.95
+ end
+ end
+ end
+ local removeFromTeam = nil
+
+ local function clearTableEntry(obj, tableInfo)
+ if tableInfo.MainObjectSmall then
+ tableInfo.MainObjectSmall.Parent = nil
+ tableInfo.MainObjectSmall = nil
+ end
+ if tableInfo.MainObjectBig then
+ tableInfo.MainObjectBig.Parent = nil
+ tableInfo.MainObjectBig = nil
+ end
+ if tableInfo.Connections then
+ for i, connection in ipairs(tableInfo.Connections) do
+ connection:disconnect()
+ end
+ tableInfo.Connections = nil
+ end
+ if tableInfo.LeaderStatConnections then
+ for i, connection in ipairs(tableInfo.LeaderStatConnections) do
+ connection:disconnect()
+ end
+ tableInfo.LeaderStatConnections = nil
+ end
+ if tableInfo.CurrentTeam then
+ removeFromTeam(obj)
+ tableInfo.CurrentTeam = nil
+ end
+ if tableInfo.Players then
+ for i, player in ipairs(tableInfo.Players) do
+ playerTable[player].CurrentTeam = nil
+ end
+ tableInfo.Players = {}
+ end
+ if tableInfo.StatValues then
+ tableInfo.StatValues = nil
+ end
+ end
+
+ local function resetPlayerTable()
+ for player, info in pairs(playerTable) do
+ clearTableEntry(player, info)
+ playerTable[player] = nil
+ end
+ playerTable = {}
+ end
+
+ local function resetTeamTable()
+ for team, info in pairs(teamTable) do
+ clearTableEntry(team, info)
+ teamTable[team] = nil
+ end
+ teamTable = {}
+ teamColorTable = {}
+ end
+
+ local function getBoardTypeInfo()
+ local isTeam = (currentBoardType == "TeamScore" or currentBoardType == "TeamList")
+ local isScore = (currentBoardType == "TeamScore" or currentBoardType == "PlayerScore")
+ return isTeam, isScore
+ end
+
+
+ local function recomputeTeamScore(team, column)
+ if not team or team == "Neutral" then
+ return
+ end
+
+ local function recomputeScoreHelper(statChangers)
+ if statChangers and column <= #statChangers then
+ local sum = 0
+ for i, p in ipairs(teamTable[team].Players) do
+ if playerTable[p].StatValues and column <= #playerTable[p].StatValues then
+ sum = sum + playerTable[p].StatValues[column].Value
+ end
+ end
+ statChangers[column](sum)
+ end
+ end
+
+ recomputeScoreHelper(teamTable[team].StatChangersSmall)
+ recomputeScoreHelper(teamTable[team].StatChangersBig)
+ end
+ local function recomputeCompleteTeamScore(team)
+ local col = 1
+ while col <= currentStatCount do
+ recomputeTeamScore(team, col)
+ col = col + 1
+ end
+ end
+ removeFromTeam = function(player)
+ if playerTable[player].CurrentTeam ~= nil then
+ ArrayRemove(teamTable[playerTable[player].CurrentTeam].Players, player)
+ recomputeCompleteTeamScore(playerTable[player].CurrentTeam)
+ playerTable[player].CurrentTeam = nil
+ end
+ end
+
+ local function assignToTeam(player)
+ local isTeam, isScore = getBoardTypeInfo()
+
+ if isTeam then
+ local newTeam = nil
+
+ if player.Neutral or teamColorTable[player.TeamColor.Name] == nil then
+ newTeam = "Neutral"
+ else
+ newTeam = teamColorTable[player.TeamColor.Name]
+ end
+
+ if playerTable[player].CurrentTeam == newTeam then
+ return
+ end
+
+ removeFromTeam(player)
+
+ playerTable[player].CurrentTeam = newTeam
+ table.insert(teamTable[newTeam].Players, player)
+
+ if newTeam == "Neutral" then
+ updatePlayerNameColor(player, nil)
+ else
+ updatePlayerNameColor(player, player.TeamColor)
+ end
+
+ recomputeCompleteTeamScore(newTeam)
+
+ --Relayout
+ if sortPlayerListsFunction then
+ sortPlayerListsFunction()
+ end
+ end
+ end
+
+ local function buildTeamObject(team, numStatColumns, suffix)
+ local isTeam, isScore = getBoardTypeInfo()
+ local teamObject = createTeamName(team.Name, team.TeamColor)
+ if not teamTable[team] then
+ teamTable[team] = {}
+ end
+ teamTable[team]["NameObject" .. suffix] = teamObject
+ if isScore then
+ local statObject
+ local textChangers
+ teamObject, statObject, textChangers = createStatColumns(teamObject, numStatColumns, true, suffix == "Big")
+ teamTable[team]["StatObject" .. suffix] = statObject
+ teamTable[team]["StatChangers" .. suffix] = textChangers
+ end
+ teamTable[team]["MainObject" .. suffix] = teamObject
+ if not teamTable[team].Players then
+ teamTable[team].Players = {}
+ end
+ return teamObject
+ end
+
+ local currentContextMenuPlayer = nil
+ local function updatePlayerContextMenu(player)
+ currentContextMenuPlayer = player
+ local elementHeight = 20
+ local function highlight(button)
+ button.TextColor3 = Color3.new(0,0,0)
+ button.BackgroundColor3 = Color3.new(0.8,0.8,0.8)
+ end
+ local function clearHighlight(button)
+ button.TextColor3 = Color3.new(1,1,1)
+ button.BackgroundColor3 = Color3.new(0,0,0)
+ end
+ if playerContextMenu == nil then
+ playerContextMenu = Instance.new("Frame")
+ playerContextMenu.Name = "PlayerListContextMenu"
+ playerContextMenu.BackgroundTransparency = 1
+ playerContextMenu.Visible = false
+
+ local playerContextMenuButton = Instance.new("TextButton")
+ playerContextMenuButton.Name = "PlayerListContextMenuButton"
+ playerContextMenuButton.Text = ""
+ playerContextMenuButton.Style = Enum.ButtonStyle.RobloxButtonDefault
+ playerContextMenuButton.ZIndex = 4
+ playerContextMenuButton.Size = UDim2.new(1, 0, 1, -20)
+ playerContextMenuButton.Visible = true
+ playerContextMenuButton.Parent = playerContextMenu
+
+ for i, contextElement in ipairs(contextMenuElements) do
+ local element = contextElement
+ if element.Type == "Button" then
+ local button = Instance.new("TextButton")
+ button.Name = "ContextButton" .. i
+ button.BackgroundColor3 = Color3.new(0,0,0)
+ button.BorderSizePixel = 0
+ button.TextXAlignment = Enum.TextXAlignment.Left
+ button.Text = " " .. contextElement.Text
+ button.Font = Enum.Font.Arial
+ button.FontSize = Enum.FontSize.Size14
+ button.Size = UDim2.new(1, 8, 0, elementHeight)
+ button.TextColor3 = Color3.new(1,1,1)
+ button.ZIndex = 4
+ button.Parent = playerContextMenuButton
+ button.MouseButton1Click:connect(function()
+ if button.Active then
+ local success, result = pcall(function() element.DoIt(currentContextMenuPlayer) end)
+ playerContextMenu.Visible = false
+ end
+ end)
+
+ button.MouseEnter:connect(function()
+ if button.Active then
+ highlight(button)
+ end
+ end)
+ button.MouseLeave:connect(function()
+ if button.Active then
+ clearHighlight(button)
+ end
+ end)
+
+ contextElement.Button = button
+ contextElement.Element = button
+ elseif element.Type == "Label" then
+ local frame = Instance.new("Frame")
+ frame.Name = "ContextLabel" .. i
+ frame.BackgroundTransparency = 1
+ frame.Size = UDim2.new(1, 8, 0, elementHeight)
+
+ local label = Instance.new("TextLabel")
+ label.Name = "Text1"
+ label.BackgroundTransparency = 1
+ label.BackgroundColor3 = Color3.new(1,1,1)
+ label.BorderSizePixel = 0
+ label.TextXAlignment = Enum.TextXAlignment.Left
+ label.Font = Enum.Font.ArialBold
+ label.FontSize = Enum.FontSize.Size14
+ label.Position = UDim2.new(0.0, 0, 0, 0)
+ label.Size = UDim2.new(0.5, 0, 1, 0)
+ label.TextColor3 = Color3.new(1,1,1)
+ label.ZIndex = 4
+ label.Parent = frame
+ element.Label1 = label
+
+ if element.GetText2 then
+ label = Instance.new("TextLabel")
+ label.Name = "Text2"
+ label.BackgroundTransparency = 1
+ label.BackgroundColor3 = Color3.new(1,1,1)
+ label.BorderSizePixel = 0
+ label.TextXAlignment = Enum.TextXAlignment.Right
+ label.Font = Enum.Font.Arial
+ label.FontSize = Enum.FontSize.Size14
+ label.Position = UDim2.new(0.5, 0, 0, 0)
+ label.Size = UDim2.new(0.5, 0, 1, 0)
+ label.TextColor3 = Color3.new(1,1,1)
+ label.ZIndex = 4
+ label.Parent = frame
+ element.Label2 = label
+ end
+ frame.Parent = playerContextMenuButton
+ element.Label = frame
+ element.Element = frame
+ end
+ end
+
+ playerContextMenu.ZIndex = 4
+ playerContextMenu.MouseLeave:connect(function() playerContextMenu.Visible = false end)
+ robloxLock(playerContextMenu)
+ playerContextMenu.Parent = NewPlayerListGui
+
+ end
+
+ local elementPos = 0
+ for i, contextElement in ipairs(contextMenuElements) do
+ local isVisible = false
+
+ if contextElement.IsVisible then
+ local success, visible = pcall(function() return contextElement.IsVisible(currentContextMenuPlayer) end)
+ if success then
+ isVisible = visible
+ else
+ print("Error in IsVisible call: " .. visible)
+ end
+ end
+
+ if contextElement.Type == "Button" then
+ contextElement.Button.Visible = isVisible
+ if contextElement.Button.Visible then
+ isVisible = true
+ clearHighlight(contextElement.Button)
+ if contextElement.IsActive then
+ local success, active = pcall(function() return contextElement.IsActive(currentContextMenuPlayer) end)
+ if success then
+ contextElement.Button.Active = active
+ else
+ print("Error in IsActive call: " .. active)
+ end
+ end
+ if contextElement.Button.Active then
+ contextElement.Button.TextColor3 = Color3.new(1,1,1)
+ else
+ contextElement.Button.TextColor3 = Color3.new(0.7,0.7,0.7)
+ end
+ end
+ elseif contextElement.Type == "Label" then
+ contextElement.Label.Visible = isVisible
+ if contextElement.Label.Visible then
+ local success, text = pcall(function() return contextElement.GetText1(currentContextMenuPlayer) end)
+ if success then
+ contextElement.Label1.Text = " " .. text
+ else
+ print("Error in GetText1 call: " .. text)
+ end
+
+ if contextElement.GetText2 then
+ local success, text = pcall(function() return contextElement.GetText2(currentContextMenuPlayer) end)
+ if success then
+ contextElement.Label2.Text = " " .. text
+ else
+ print("Error in GetText2 call: " .. text)
+ end
+ end
+ end
+ end
+ if isVisible then
+ contextElement.Element.Position = UDim2.new(0,-4, 0, elementPos * elementHeight - 4)
+ elementPos = elementPos + 1
+ end
+ end
+ playerContextMenu.Size = UDim2.new(0, 150, 0, elementPos*elementHeight + 13 + 20)
+ end
+ local function showPlayerMenu(player, x, y)
+ updatePlayerContextMenu(player)
+ x = x - (playerContextMenu.AbsoluteSize.X/2)
+ if x + playerContextMenu.AbsoluteSize.X >= NewPlayerListGui.AbsoluteSize.X then
+ x = NewPlayerListGui.AbsoluteSize.X - playerContextMenu.AbsoluteSize.X
+ end
+ playerContextMenu.Visible = true
+ playerContextMenu.Position = UDim2.new(0, x, 0, y-playerContextMenu.AbsoluteSize.Y)
+ end
+
+ local function buildPlayerObject(player, numStatColumns, suffix)
+ local isTeam, isScore = getBoardTypeInfo()
+
+ local playerObject = nil
+ local changePlayerNameFunction = nil
+ local currentColor = nil
+ if isTeam and not player.Neutral then
+ currentColor = player.TeamColor.Color
+ else
+ currentColor = Color3.new(1,1,1)
+ end
+ playerObject, changePlayerNameFunction = createPlayerName(player.Name, player.MembershipType, currentColor, getFriendStatus(player))
+
+ if not playerTable[player] then
+ playerTable[player] = {}
+ end
+ if not playerTable[player].Connections then
+ playerTable[player].Connections = {}
+ end
+ if not playerTable[player].CurrentTeam then
+ playerTable[player].CurrentTeam = nil
+ end
+ playerTable[player]["NameObject" .. suffix] = playerObject
+ playerTable[player]["ChangeName" .. suffix] = changePlayerNameFunction
+
+ if isScore then
+ local statObject = nil
+ local textChangers = nil
+ playerObject, statObject, textChangers = createStatColumns(playerObject, numStatColumns, false, suffix == "Big")
+ playerTable[player]["StatObject" .. suffix]= statObject
+ playerTable[player]["StatChangers" .. suffix] = textChangers
+
+ local statValues, leaderstats = getStatValuesForPlayer(player)
+ if not statValues or #statValues < numStatColumns then
+ if not playerTable[player].LeaderStatConnections then
+ playerTable[player].LeaderStatConnections = {}
+ end
+ --Setup a listener to see when this data gets filled in
+ if not leaderstats then
+ --print("No leaderstats for ", player)
+ --We don't even have a leaderstats child, wait for one
+ table.insert(playerTable[player].LeaderStatConnections,
+ player.ChildAdded:connect(
+ function(child)
+ if child.Name == "leaderstats" then
+ --print("Got a leaderstats for ", player)
+
+ --Connections will be torn down
+ recreatePlayerFunction(player)
+ else
+ --print("Unknown child, listening for connection")
+ table.insert(playerTable[player].LeaderStatConnections,
+ child.Changed:connect(
+ function(prop)
+ if prop == "Name" and child.Name == "leaderstats" then
+ --Connections will be torn down
+ recreatePlayerFunction(player)
+ end
+ end))
+ end
+ end))
+ else
+ --print("Need more children")
+ --We have a leaderstats, but not enough children, recreate if we get them
+ table.insert(playerTable[player].LeaderStatConnections,
+ leaderstats.ChildAdded:connect(
+ function(child)
+ --TODO only look for IntValue
+ recreatePlayerFunction(player)
+ end)
+ )
+ table.insert(playerTable[player].LeaderStatConnections,
+ leaderstats.AncestryChanged:connect(
+ function(child)
+ --We got deleted, try again
+ recreatePlayerFunction(player)
+ end)
+ )
+ end
+ end
+ if statValues then
+ if not playerTable[player].StatValues then
+ playerTable[player].StatValues = {}
+ end
+ local pos = 1
+ while pos <= numStatColumns and pos <= #statValues do
+ local currentColumn = pos
+ local statValue = statValues[pos]
+ local statChanger = textChangers[pos]
+
+ local updateStat = function(val)
+ statChanger(val)
+ recomputeTeamScore(playerTable[player].CurrentTeam, currentColumn)
+ end
+ if pos > #playerTable[player].StatValues then
+ table.insert(playerTable[player].StatValues, statValue)
+ end
+
+ table.insert(playerTable[player].Connections,
+ statValue.Changed:connect(updateStat)
+ )
+ table.insert(playerTable[player].Connections,
+ statValue.AncestryChanged:connect(
+ function()
+ recreatePlayerFunction(player)
+ end)
+ )
+ updateStat(statValue.Value)
+ pos = pos + 1
+ end
+ end
+ end
+
+ if supportFriends and player ~= game.Players.LocalPlayer and player.userId > 0 and game.Players.LocalPlayer.userId > 0 then
+ local button = Instance.new("TextButton")
+ button.Name = playerObject.Name .. "Button"
+ button.Text = ""
+ button.Active = false
+ button.Size = playerObject.Size
+ button.Position = playerObject.Position
+ button.BackgroundColor3 = playerObject.BackgroundColor3
+
+ local secondButton = Instance.new("TextButton")
+ secondButton.Name = playerObject.Name .. "RealButton"
+ secondButton.Text = ""
+ secondButton.BackgroundTransparency = 1
+ secondButton.BackgroundColor3 = playerObject.BackgroundColor3
+ secondButton.Parent.BackgroundTransparency = 1
+ secondButton.Parent.Visible = true
+ secondButton.ZIndex = 2
+ secondButton.Size = UDim2.new(1,0,1,0)
+
+ local previousTransparency = nil
+ table.insert(playerTable[player].Connections,
+ secondButton.MouseEnter:connect(--button.MouseEnter:connect(
+ function()
+ if previousTransparency == nil then
+ previousTransparency = secondButton--[[button]].BackgroundTransparency
+ end
+
+ if lightBackground then
+ --button.BackgroundColor3 = Color3.new(0,0,0)
+ --button.BackgroundTransparency = 0
+ secondButton.Parent.BackgroundTransparency = 0
+ else
+ --button.BackgroundColor3 = Color3.new(1,1,1)
+ --secondButton.button.BackgroundTransparency = 1--0.80
+ secondButton.Parent.BackgroundTransparency = 1
+ end
+ end))
+ table.insert(playerTable[player].Connections,
+ secondButton.MouseLeave:connect(--button.MouseLeave:connect(
+ function()
+ if previousTransparency ~= nil then
+ if lightBackground then
+ --button.BackgroundColor3 = Color3.new(1,1,1)
+ --button.BackgroundTransparency = previousTransparency
+ else
+ --secondButtonbutton.BackgroundColor3 = Color3.new(1,1,1)
+ --nbutton.BackgroundTransparency = previousTransparency
+ end
+
+ previousTransparency = nil
+ end
+ secondButton.Parent.BackgroundTransparency = 1
+ end))
+
+ local mouseDownX, mouseDownY
+ table.insert(playerTable[player].Connections,
+ secondButton.MouseButton1Down:connect(function(x,y)
+ mouseDownX = x
+ mouseDownY = y
+ end))
+ table.insert(playerTable[player].Connections,
+ secondButton.MouseButton1Click:connect(function()
+ showPlayerMenu(player, mouseDownX, secondButton.AbsolutePosition.Y + secondButton.AbsoluteSize.Y )
+ end))
+ playerObject.BackgroundTransparency = 1
+ playerObject.Size = UDim2.new(1,0,1,0)
+ playerObject.Position = UDim2.new(0,0,0,0)
+ playerObject.Parent = button
+
+ playerTable[player]["MainObject" .. suffix] = button
+
+ playerObject = button
+ else
+ playerTable[player]["MainObject" .. suffix] = playerObject
+
+ if player == game.Players.LocalPlayer and supportFriends then
+ table.insert(playerTable[player].Connections,
+ player.FriendStatusChanged:connect(
+ function(otherPlayer, friendStatus)
+ if playerTable[otherPlayer] then
+ updatePlayerFriendStatus(playerTable[otherPlayer]["NameObject" .. suffix], friendStatus)
+ end
+ end)
+ )
+ end
+ end
+ table.insert(playerTable[player].Connections,
+ player.Changed:connect(
+ function(prop)
+ if prop == "MembershipType" then
+ updatePlayerName(playerTable[player]["NameObject" .. suffix], player.MembershipType, currentColor)
+ elseif prop == "Name" then
+ playerTable[player]["ChangeName" .. suffix](player.Name)
+ elseif prop == "Neutral" or prop == "TeamColor" then
+ assignToTeam(player)
+ end
+ end)
+ )
+ return playerObject
+ end
+
+ local function orderScrollList(scrollOrder, objectName, scrollFrame)
+ local pos = 0
+ local order = {}
+ local isTeam, isScore = getBoardTypeInfo()
+ for i, obj in ipairs(scrollOrder) do
+ order[obj] = 0
+ end
+
+ if isTeam then
+ local teams = getTeams()
+ for i, team in ipairs(teams) do
+ --print(team, objectName, teamTable[team][objectName])
+ order[teamTable[team][objectName]] = pos
+ pos = pos + 1
+ for i, player in ipairs(teamTable[team].Players) do
+ if playerTable[player] then
+ order[playerTable[player][objectName]] = pos
+ pos = pos + 1
+ end
+ end
+ end
+
+ if #teamTable["Neutral"].Players > 0 then
+ teamTable["Neutral"][objectName].Parent = scrollFrame
+ order[teamTable["Neutral"][objectName]] = pos
+ pos = pos + 1
+ for i, player in ipairs(teamTable["Neutral"].Players) do
+ order[playerTable[player][objectName]] = pos
+ pos = pos + 1
+ end
+ else
+ teamTable["Neutral"][objectName].Parent = nil
+ end
+ else
+ local players = getPlayers()
+ for i, player in ipairs(players) do
+ order[playerTable[player][objectName]] = pos
+ pos = pos + 1
+ end
+ end
+
+ table.sort(scrollOrder,
+ function(a,b)
+ return order[a] < order[b]
+ end)
+ end
+
+ local function createPlayerListBasics(frame, isBig)
+ local headerFrame = Instance.new("Frame")
+ headerFrame.Name = "Header"
+ headerFrame.BackgroundTransparency = 1
+ headerFrame.Size = UDim2.new(1,-13,0,26)
+ headerFrame.Position = UDim2.new(0,0,0,0) --UDim2.new(0,-6,0,-6)
+ headerFrame.Parent = frame
+
+ local lowerPaneFrame = Instance.new("Frame")
+ lowerPaneFrame.Name = "ScrollingArea"
+ lowerPaneFrame.BackgroundTransparency = 1
+ lowerPaneFrame.Size = UDim2.new(1,-3,1,-26)
+ lowerPaneFrame.Position = UDim2.new(0,0,0,26)
+ lowerPaneFrame.Parent = frame
+
+ local scrollOrder = {}
+ local scrollFrame, scrollUp, scrollDown, recalculateScroll = RbxGui.CreateScrollingFrame(scrollOrder)
+
+ local scrollBar = Instance.new("Frame")
+ scrollBar.Name = "ScrollBar"
+ scrollBar.BackgroundTransparency = 0.9
+ scrollBar.BackgroundColor3 = Color3.new(1,1,1)
+ scrollBar.BorderSizePixel = 0
+ scrollBar.Size = UDim2.new(0, 17, 1, -36)
+ if isBig then scrollBar.Size = UDim2.new(0, 17, 1, -61) end
+ scrollBar.Parent = lowerPaneFrame
+
+ scrollFrame.Parent = lowerPaneFrame
+ scrollUp.Parent = lowerPaneFrame
+ scrollDown.Parent = lowerPaneFrame
+
+ if isBig then
+ scrollFrame.Position = UDim2.new(0,0,0,0) --UDim2.new(0,-7,0,0)
+ scrollUp.Position = UDim2.new(1,-41,0,5) --UDim2.new(1,-19,0,0)
+ scrollDown.Position = UDim2.new(1,-41,1,-35) -- UDim2.new(1,-19,1,-15)
+ scrollBar.Position = UDim2.new(1, -41, 0, 24) -- UDim2.new(1, -19, 0, 19)
+
+ scrollFrame.Size = UDim2.new(1,-48,1,0)
+ headerFrame.Size = UDim2.new(1,-20,0,32)
+
+ else
+ scrollBar.Position = UDim2.new(1, -19, 0, 14) --UDim2.new(1, -17, 0, 19)
+ scrollFrame.Position = UDim2.new(0,1,0,0) -- UDim2.new(0,-5,0,0)
+ scrollUp.Position = UDim2.new(1,-19,0,-5) --UDim2.new(1,-17,0,0)
+ scrollDown.Position = UDim2.new(1,-19,1,-20) --UDim2.new(1,-17,1,-15)
+
+ lowerPaneFrame.Position = UDim2.new(0,0,0,30)
+
+ local toggleScrollBar = function(visible)
+ if visible then
+ scrollFrame.Size = UDim2.new(1,-16,1,0)
+ headerFrame.Size = UDim2.new(1,-16,0,32)
+ else
+ scrollFrame.Size = UDim2.new(1,0,1,0)--UDim2.new(1,5,1,0)
+ headerFrame.Size = UDim2.new(1,5,0,32)
+ end
+ scrollUp.Visible = visible
+ scrollDown.Visible = visible
+ scrollBar.Visible = visible
+ end
+ scrollUp.Changed:connect(function(prop)
+ if prop == "Active" then
+ toggleScrollBar(scrollUp.Active or scrollDown.Active)
+ end
+ end)
+
+ scrollDown.Changed:connect(function(prop)
+ if prop == "Active" then
+ toggleScrollBar(scrollUp.Active or scrollDown.Active)
+ end
+ end)
+
+ toggleScrollBar(scrollUp.Active or scrollDown.Active)
+ end
+ return headerFrame, scrollFrame, recalculateScroll, scrollOrder
+ end
+
+ createBoardsFunction = function (boardType, numStatColumns)
+ print("Create Boards")
+ local smallFrame = Instance.new("Frame")
+ smallFrame.Name = "SmallPlayerlist"
+ smallFrame.Position = smallWindowPosition
+ smallFrame.Active = false
+ smallFrame.Size = smallWindowSize
+ --smallFrame.Style = Enum.FrameStyle.RobloxRound
+ smallFrame.BackgroundColor3 = Color3.new(0,0,0)
+ smallFrame.BackgroundTransparency = 0.7
+ smallFrame.BorderSizePixel = 0
+
+ local bigFrame = Instance.new("Frame")
+ bigFrame.Name = "BigPlayerlist"
+ bigFrame.Size = bigWindowSize
+ bigFrame.Position = bigWindowPosition
+ --bigFrame.Style = Enum.FrameStyle.RobloxRound
+ bigFrame.BackgroundColor3 = Color3.new(0,0,0)
+ bigFrame.BackgroundTransparency = 0.7
+ bigFrame.BorderSizePixel = 0
+ bigFrame.Visible = false
+
+ local bigFrameWrapper = Instance.new("Frame")
+ bigFrameWrapper.Name = "Expander"
+ --bigFrameWrapper.Size = UDim2.new(1,5,1,0)
+ bigFrameWrapper.Size = UDim2.new(1,21,1,16)
+ bigFrameWrapper.Position = UDim2.new(0, 0, 0,0)
+ bigFrameWrapper.BackgroundTransparency = 1
+ bigFrameWrapper.Parent = bigFrame
+
+ local smallHeaderFrame, scrollFrameSmall, recalculateScrollSmall, scrollOrderSmall = createPlayerListBasics(smallFrame, false)
+ local bigHeaderFrame, scrollFrameBig, recalculateScrollBig, scrollOrderBig = createPlayerListBasics(bigFrameWrapper, true)
+
+ local playerListButton = Instance.new("ImageButton")
+ playerListButton.Name = "GoBigButton"
+ playerListButton.BackgroundTransparency = 1
+ playerListButton.Image = "rbxasset://textures/ui/playerlist_small_maximize.png"
+ playerListButton.Size = UDim2.new(0.0, 35, 0, 29)
+ playerListButton.Position = UDim2.new(0, 0, 0, 0)
+ playerListButton.MouseButton1Click:connect(
+ function()
+ toggleBigWindow()
+ end)
+ playerListButton.Parent = smallHeaderFrame
+
+ playerListButton = Instance.new("ImageButton")
+ playerListButton.Name = "CloseButton"
+ playerListButton.BackgroundTransparency = 1
+ playerListButton.Image = "rbxasset://textures/ui/playerlist_small_hide.png"
+ playerListButton.Size = UDim2.new(0.0, 38, 0, 29)
+ playerListButton.Position = UDim2.new(0, 35, 0, 0)
+ playerListButton.MouseButton1Click:connect(
+ function()
+ transitionWindowsFunction("None")
+ end)
+ playerListButton.Parent = smallHeaderFrame
+
+ playerListButton = Instance.new("ImageButton")
+ playerListButton.Name = "CloseButton"
+ playerListButton.Image = "rbxasset://textures/ui/playerlist_big_hide.png"
+ playerListButton.BackgroundTransparency = 1
+ playerListButton.Size = UDim2.new(0.0, 29, 0, 29)
+ playerListButton.Position = UDim2.new(1, -30, 0.5, -15)
+ playerListButton.MouseButton1Click:connect(
+ function()
+ toggleBigWindow()
+ end)
+ playerListButton.Parent = bigHeaderFrame
+
+ local placeName = Instance.new("TextLabel")
+ placeName.Name = "PlaceName"
+ placeName.Text = " Player List"
+ placeName.FontSize = Enum.FontSize.Size24
+ placeName.TextXAlignment = Enum.TextXAlignment.Left
+ placeName.Font = Enum.Font.ArialBold
+ placeName.BackgroundTransparency = 1
+ placeName.TextColor3 = Color3.new(1,1,1)
+ placeName.Size = UDim2.new(0.5, 0, 1, 0)
+ placeName.Position = UDim2.new(0, 0, 0.0, 0)
+ placeName = RbxGui.AutoTruncateTextObject(placeName)
+ placeName.Parent = bigHeaderFrame
+
+
+ currentBoardType = boardType
+ currentStatCount = numStatColumns
+ local isTeam, isScore = getBoardTypeInfo()
+ local players = getPlayers()
+
+ if isScore then
+ local statColumns = getStatColumns(players)
+ numStatColumns = #statColumns
+ if numStatColumns > 3 then
+ numStatColumns = 3
+ end
+ createStatHeaders(statColumns, numStatColumns, false).Parent = smallHeaderFrame
+ createStatHeaders(statColumns, currentStatCount, true).Parent = bigHeaderFrame
+ end
+
+ --Clean up all old stuff
+ resetPlayerTable()
+
+ for i, player in ipairs(players) do
+ local playerObject = buildPlayerObject(player, numStatColumns, "Small")
+ table.insert(scrollOrderSmall, playerObject)
+ playerObject.Parent = scrollFrameSmall
+
+ playerObject = buildPlayerObject(player, currentStatCount, "Big")
+ table.insert(scrollOrderBig, playerObject)
+ playerObject.Parent = scrollFrameBig
+ end
+
+ --Clean up old stuff
+ resetTeamTable()
+
+ local teamStatObjects = {}
+ if isTeam then
+ local teams = getTeams()
+ local i = #teams
+ while i >= 1 do
+ --We go backwards so the "first" team color gets the team
+ local team = teams[i]
+ teamColorTable[team.TeamColor.Name] = team
+ i = i - 1
+ end
+
+ --Adding/Removing a Team causes a full invalidation of the board
+ for i, team in ipairs(teams) do
+ local teamObject = buildTeamObject(team, numStatColumns, "Small")
+ table.insert(scrollOrderSmall, teamObject)
+ teamObject.Parent = scrollFrameSmall
+
+ teamObject = buildTeamObject(team, currentStatCount, "Big")
+ table.insert(scrollOrderBig, teamObject)
+ teamObject.Parent = scrollFrameBig
+ end
+
+ teamTable["Neutral"] = {}
+ teamTable["Neutral"].Players = {}
+
+ local neutralTeamObject = createTeamName("Neutral", BrickColor.palette(8))
+ teamTable["Neutral"].NameObjectSmall = neutralTeamObject
+ teamTable["Neutral"].StatObjectSmall = nil
+ teamTable["Neutral"].MainObjectSmall = neutralTeamObject
+ table.insert(scrollOrderSmall, neutralTeamObject)
+
+ neutralTeamObject = createTeamName("Neutral", BrickColor.palette(8))
+ teamTable["Neutral"].NameObjectBig = neutralTeamObject
+ teamTable["Neutral"].StatObjectBig = nil
+ teamTable["Neutral"].MainObjectBig = neutralTeamObject
+ table.insert(scrollOrderBig, neutralTeamObject)
+
+ local neutralPlayers = {}
+ for i, player in ipairs(players) do
+ assignToTeam(player)
+ end
+ end
+
+ removePlayerFunction = function(player)
+ if playerTable[player] then
+ ArrayRemove(scrollOrderSmall, playerTable[player].MainObjectSmall)
+ ArrayRemove(scrollOrderBig, playerTable[player].MainObjectBig)
+
+ clearTableEntry(player, playerTable[player])
+
+ playerTable[player] = nil
+ end
+ end
+ recreatePlayerFunction = function(player)
+ removePlayerFunction(player)
+
+ local playerObject = buildPlayerObject(player, numStatColumns, "Small")
+ table.insert(scrollOrderSmall, playerObject)
+ robloxLock(playerObject)
+ playerObject.Parent = scrollFrameSmall
+
+ playerObject = buildPlayerObject(player, currentStatCount, "Big")
+ table.insert(scrollOrderBig, playerObject)
+ robloxLock(playerObject)
+ playerObject.Parent = scrollFrameBig
+
+ local isTeam, isScore = getBoardTypeInfo()
+ if isTeam then
+ assignToTeam(player)
+ end
+
+ sortPlayerListsFunction()
+ end
+
+ sortPlayerListsFunction = function()
+ orderScrollList(scrollOrderSmall, "MainObjectSmall", scrollFrameSmall)
+ recalculateScrollSmall()
+ createAlternatingRows(scrollOrderSmall)
+
+ orderScrollList(scrollOrderBig, "MainObjectBig", scrollFrameBig)
+ recalculateScrollBig()
+ createAlternatingRows(scrollOrderBig)
+ end
+
+ sortPlayerListsFunction()
+
+ robloxLock(smallFrame)
+ robloxLock(bigFrame)
+ return smallFrame, bigFrame
+ end
+
+ --Teams changing invalidates the whole board
+ local function teamsChanged()
+ if debounceTeamsChanged then
+ return
+ end
+
+ debounceTeamsChanged = true
+ wait()
+ rebuildBoard(NewPlayerListGui, determineBoardType())
+ debounceTeamsChanged = false
+ end
+
+
+ local checkIfBoardChanged = function()
+ local newBoardType, numStats = determineBoardType()
+ if newBoardType ~= currentBoardType or numStats ~= currentStatCount then
+ --print("BoardChanged to " .. newBoardType .. " with " .. numStats .. " stats")
+ rebuildBoard(NewPlayerListGui, newBoardType, numStats)
+ end
+ end
+
+ local function buildPlayerList()
+ waitForChild(game, "Players")
+ waitForProperty(game.Players, "LocalPlayer")
+
+ local playerListEnabled = testPlayerListPlaces[game.PlaceId] or enablePlayerListGlobally
+ if localTesting and (game.PlaceId == 0) or (game.PlaceId == -1) then
+ playerListEnabled = true
+ end
+ if not playerListEnabled then
+ --No playerlist
+ return
+ end
+
+ supportFriends = testFriendingPlaces[game.PlaceId] or enableFriendingGlobally
+ if localTesting and (game.PlaceId == 0) or (game.PlaceId == -1) then
+ supportFriends = false
+ end
+
+ local teams = game:GetService("Teams")
+ if teams then
+ local teamConnections = {}
+
+ teams.ChildAdded:connect(
+ function(child)
+ if child:IsA("Team") then
+ teamsChanged()
+ teamConnections[child] = child.Changed:connect(
+ function(prop)
+ if prop == "TeamColor" or prop == "Name" then
+ --Rebuild when things change
+ teamsChanged()
+ end
+ end)
+ end
+ end)
+ teams.ChildRemoved:connect(
+ function(child)
+ if child:IsA("Team") then
+ if teamConnections[child] then
+ teamConnections[child]:disconnect()
+ teamConnections[child] = nil
+ end
+ teamsChanged()
+ end
+ end)
+ end
+
+ game.Players.ChildAdded:connect(
+ function(player)
+ if player:IsA("Player") then
+ addPlayerFunction(player)
+ end
+ end)
+
+ game.Players.ChildRemoved:connect(
+ function(player)
+ if player:IsA("Player") then
+ if removePlayerFunction then
+ removePlayerFunction(player)
+ end
+ end
+ end)
+
+ rebuildBoard(NewPlayerListGui, determineBoardType())
+
+ delay(0,
+ function()
+ while true do
+ wait(5)
+ checkIfBoardChanged()
+ end
+ end)
+ end
+
+ buildPlayerList()
+end
+ true
+
+
+
+
\ No newline at end of file
diff --git a/CoreGui2012.rbxm b/CoreGui2012.rbxm
new file mode 100644
index 0000000..cbd6915
--- /dev/null
+++ b/CoreGui2012.rbxm
@@ -0,0 +1,3601 @@
+
+ null
+ nil
+ -
+
+ false
+
+ GUI_Copy
+ script.PlayerList:clone().Parent = game.StarterGui;
+script:remove();
+ true
+
+
-
+
+ false
+
+ PlayerList
+ local t = {}
+
+local function ScopedConnect(parentInstance, instance, event, signalFunc, syncFunc, removeFunc)
+ local eventConnection = nil
+
+ --Connection on parentInstance is scoped by parentInstance (when destroyed, it goes away)
+ local tryConnect = function()
+ if game:IsAncestorOf(parentInstance) then
+ --Entering the world, make sure we are connected/synced
+ if not eventConnection then
+ eventConnection = instance[event]:connect(signalFunc)
+ if syncFunc then syncFunc() end
+ end
+ else
+ --Probably leaving the world, so disconnect for now
+ if eventConnection then
+ eventConnection:disconnect()
+ if removeFunc then removeFunc() end
+ end
+ end
+ end
+
+ --Hook it up to ancestryChanged signal
+ local connection = parentInstance.AncestryChanged:connect(tryConnect)
+
+ --Now connect us if we're already in the world
+ tryConnect()
+
+ return connection
+end
+
+local function CreateButtons(frame, buttons, yPos, ySize)
+ local buttonNum = 1
+ local buttonObjs = {}
+ for i, obj in ipairs(buttons) do
+ local button = Instance.new("TextButton")
+ button.Name = "Button" .. buttonNum
+ button.Font = Enum.Font.Arial
+ button.FontSize = Enum.FontSize.Size18
+ button.AutoButtonColor = true
+ button.Style = Enum.ButtonStyle.RobloxButtonDefault
+ button.Text = obj.Text
+ button.TextColor3 = Color3.new(1,1,1)
+ button.MouseButton1Click:connect(obj.Function)
+ button.Parent = frame
+ buttonObjs[buttonNum] = button
+
+ buttonNum = buttonNum + 1
+ end
+ local numButtons = buttonNum-1
+
+ if numButtons == 1 then
+ frame.Button1.Position = UDim2.new(0.35, 0, yPos.Scale, yPos.Offset)
+ frame.Button1.Size = UDim2.new(.4,0,ySize.Scale, ySize.Offset)
+ elseif numButtons == 2 then
+ frame.Button1.Position = UDim2.new(0.1, 0, yPos.Scale, yPos.Offset)
+ frame.Button1.Size = UDim2.new(.8/3,0, ySize.Scale, ySize.Offset)
+
+ frame.Button2.Position = UDim2.new(0.55, 0, yPos.Scale, yPos.Offset)
+ frame.Button2.Size = UDim2.new(.35,0, ySize.Scale, ySize.Offset)
+ elseif numButtons >= 3 then
+ local spacing = .1 / numButtons
+ local buttonSize = .9 / numButtons
+
+ buttonNum = 1
+ while buttonNum <= numButtons do
+ buttonObjs[buttonNum].Position = UDim2.new(spacing*buttonNum + (buttonNum-1) * buttonSize, 0, yPos.Scale, yPos.Offset)
+ buttonObjs[buttonNum].Size = UDim2.new(buttonSize, 0, ySize.Scale, ySize.Offset)
+ buttonNum = buttonNum + 1
+ end
+ end
+end
+
+local function setSliderPos(newAbsPosX,slider,sliderPosition,bar,steps)
+
+ local newStep = steps - 1 --otherwise we really get one more step than we want
+
+ local relativePosX = math.min(1, math.max(0, (newAbsPosX - bar.AbsolutePosition.X) / bar.AbsoluteSize.X ) )
+ local wholeNum, remainder = math.modf(relativePosX * newStep)
+ if remainder > 0.5 then
+ wholeNum = wholeNum + 1
+ end
+ relativePosX = wholeNum/newStep
+
+ local result = math.ceil(relativePosX * newStep)
+ if sliderPosition.Value ~= (result + 1) then --onky update if we moved a step
+ sliderPosition.Value = result + 1
+
+ if relativePosX == 1 then
+ slider.Position = UDim2.new(1,-slider.AbsoluteSize.X,slider.Position.Y.Scale,slider.Position.Y.Offset)
+ else
+ slider.Position = UDim2.new(relativePosX,0,slider.Position.Y.Scale,slider.Position.Y.Offset)
+ end
+ end
+
+end
+
+local function cancelSlide(areaSoak)
+ areaSoak.Visible = false
+ if areaSoakMouseMoveCon then areaSoakMouseMoveCon:disconnect() end
+end
+
+t.CreateStyledMessageDialog = function(title, message, style, buttons)
+ local frame = Instance.new("Frame")
+ frame.Size = UDim2.new(0.5, 0, 0, 165)
+ frame.Position = UDim2.new(0.25, 0, 0.5, -72.5)
+ frame.Name = "MessageDialog"
+ frame.Active = true
+ frame.Style = Enum.FrameStyle.RobloxRound
+
+ local styleImage = Instance.new("ImageLabel")
+ styleImage.Name = "StyleImage"
+ styleImage.BackgroundTransparency = 1
+ styleImage.Position = UDim2.new(0,5,0,15)
+ if style == "error" or style == "Error" then
+ styleImage.Size = UDim2.new(0, 71, 0, 71)
+ styleImage.Image = "http://www.roblox.com/asset?id=42565285"
+ elseif style == "notify" or style == "Notify" then
+ styleImage.Size = UDim2.new(0, 71, 0, 71)
+ styleImage.Image = "http://www.roblox.com/asset?id=42604978"
+ elseif style == "confirm" or style == "Confirm" then
+ styleImage.Size = UDim2.new(0, 74, 0, 76)
+ styleImage.Image = "http://www.roblox.com/asset?id=42557901"
+ else
+ return t.CreateMessageDialog(title,message,buttons)
+ end
+ styleImage.Parent = frame
+
+ local titleLabel = Instance.new("TextLabel")
+ titleLabel.Name = "Title"
+ titleLabel.Text = title
+ titleLabel.BackgroundTransparency = 1
+ titleLabel.TextColor3 = Color3.new(221/255,221/255,221/255)
+ titleLabel.Position = UDim2.new(0, 80, 0, 0)
+ titleLabel.Size = UDim2.new(1, -80, 0, 40)
+ titleLabel.Font = Enum.Font.ArialBold
+ titleLabel.FontSize = Enum.FontSize.Size36
+ titleLabel.TextXAlignment = Enum.TextXAlignment.Center
+ titleLabel.TextYAlignment = Enum.TextYAlignment.Center
+ titleLabel.Parent = frame
+
+ local messageLabel = Instance.new("TextLabel")
+ messageLabel.Name = "Message"
+ messageLabel.Text = message
+ messageLabel.TextColor3 = Color3.new(221/255,221/255,221/255)
+ messageLabel.Position = UDim2.new(0.025, 80, 0, 45)
+ messageLabel.Size = UDim2.new(0.95, -80, 0, 55)
+ messageLabel.BackgroundTransparency = 1
+ messageLabel.Font = Enum.Font.Arial
+ messageLabel.FontSize = Enum.FontSize.Size18
+ messageLabel.TextWrap = true
+ messageLabel.TextXAlignment = Enum.TextXAlignment.Left
+ messageLabel.TextYAlignment = Enum.TextYAlignment.Top
+ messageLabel.Parent = frame
+
+ CreateButtons(frame, buttons, UDim.new(0, 105), UDim.new(0, 40) )
+
+ return frame
+end
+
+t.CreateMessageDialog = function(title, message, buttons)
+ local frame = Instance.new("Frame")
+ frame.Size = UDim2.new(0.5, 0, 0.5, 0)
+ frame.Position = UDim2.new(0.25, 0, 0.25, 0)
+ frame.Name = "MessageDialog"
+ frame.Active = true
+ frame.Style = Enum.FrameStyle.RobloxRound
+
+ local titleLabel = Instance.new("TextLabel")
+ titleLabel.Name = "Title"
+ titleLabel.Text = title
+ titleLabel.BackgroundTransparency = 1
+ titleLabel.TextColor3 = Color3.new(221/255,221/255,221/255)
+ titleLabel.Position = UDim2.new(0, 0, 0, 0)
+ titleLabel.Size = UDim2.new(1, 0, 0.15, 0)
+ titleLabel.Font = Enum.Font.ArialBold
+ titleLabel.FontSize = Enum.FontSize.Size36
+ titleLabel.TextXAlignment = Enum.TextXAlignment.Center
+ titleLabel.TextYAlignment = Enum.TextYAlignment.Center
+ titleLabel.Parent = frame
+
+ local messageLabel = Instance.new("TextLabel")
+ messageLabel.Name = "Message"
+ messageLabel.Text = message
+ messageLabel.TextColor3 = Color3.new(221/255,221/255,221/255)
+ messageLabel.Position = UDim2.new(0.025, 0, 0.175, 0)
+ messageLabel.Size = UDim2.new(0.95, 0, .55, 0)
+ messageLabel.BackgroundTransparency = 1
+ messageLabel.Font = Enum.Font.Arial
+ messageLabel.FontSize = Enum.FontSize.Size18
+ messageLabel.TextWrap = true
+ messageLabel.TextXAlignment = Enum.TextXAlignment.Left
+ messageLabel.TextYAlignment = Enum.TextYAlignment.Top
+ messageLabel.Parent = frame
+
+ CreateButtons(frame, buttons, UDim.new(0.8,0), UDim.new(0.15, 0))
+
+ return frame
+end
+
+t.CreateDropDownMenu = function(items, onSelect, forRoblox)
+ local width = UDim.new(0, 100)
+ local height = UDim.new(0, 32)
+
+ local xPos = 0.055
+ local frame = Instance.new("Frame")
+ frame.Name = "DropDownMenu"
+ frame.BackgroundTransparency = 1
+ frame.Size = UDim2.new(width, height)
+
+ local dropDownMenu = Instance.new("TextButton")
+ dropDownMenu.Name = "DropDownMenuButton"
+ dropDownMenu.TextWrap = true
+ dropDownMenu.TextColor3 = Color3.new(1,1,1)
+ dropDownMenu.Text = "Choose One"
+ dropDownMenu.Font = Enum.Font.ArialBold
+ dropDownMenu.FontSize = Enum.FontSize.Size18
+ dropDownMenu.TextXAlignment = Enum.TextXAlignment.Left
+ dropDownMenu.TextYAlignment = Enum.TextYAlignment.Center
+ dropDownMenu.BackgroundTransparency = 1
+ dropDownMenu.AutoButtonColor = true
+ dropDownMenu.Style = Enum.ButtonStyle.RobloxButton
+ dropDownMenu.Size = UDim2.new(1,0,1,0)
+ dropDownMenu.Parent = frame
+ dropDownMenu.ZIndex = 2
+
+ local dropDownIcon = Instance.new("ImageLabel")
+ dropDownIcon.Name = "Icon"
+ dropDownIcon.Active = false
+ dropDownIcon.Image = "http://www.roblox.com/asset/?id=45732894"
+ dropDownIcon.BackgroundTransparency = 1
+ dropDownIcon.Size = UDim2.new(0,11,0,6)
+ dropDownIcon.Position = UDim2.new(1,-11,0.5, -2)
+ dropDownIcon.Parent = dropDownMenu
+ dropDownIcon.ZIndex = 2
+
+ local itemCount = #items
+ local dropDownItemCount = #items
+ local useScrollButtons = false
+ if dropDownItemCount > 6 then
+ useScrollButtons = true
+ dropDownItemCount = 6
+ end
+
+ local droppedDownMenu = Instance.new("TextButton")
+ droppedDownMenu.Name = "List"
+ droppedDownMenu.Text = ""
+ droppedDownMenu.BackgroundTransparency = 1
+ --droppedDownMenu.AutoButtonColor = true
+ droppedDownMenu.Style = Enum.ButtonStyle.RobloxButton
+ droppedDownMenu.Visible = false
+ droppedDownMenu.Active = true --Blocks clicks
+ droppedDownMenu.Position = UDim2.new(0,0,0,0)
+ droppedDownMenu.Size = UDim2.new(1,0, (1 + dropDownItemCount)*.8, 0)
+ droppedDownMenu.Parent = frame
+ droppedDownMenu.ZIndex = 2
+
+ local choiceButton = Instance.new("TextButton")
+ choiceButton.Name = "ChoiceButton"
+ choiceButton.BackgroundTransparency = 1
+ choiceButton.BorderSizePixel = 0
+ choiceButton.Text = "ReplaceMe"
+ choiceButton.TextColor3 = Color3.new(1,1,1)
+ choiceButton.TextXAlignment = Enum.TextXAlignment.Left
+ choiceButton.TextYAlignment = Enum.TextYAlignment.Center
+ choiceButton.BackgroundColor3 = Color3.new(1, 1, 1)
+ choiceButton.Font = Enum.Font.Arial
+ choiceButton.FontSize = Enum.FontSize.Size18
+ if useScrollButtons then
+ choiceButton.Size = UDim2.new(1,-13, .8/((dropDownItemCount + 1)*.8),0)
+ else
+ choiceButton.Size = UDim2.new(1, 0, .8/((dropDownItemCount + 1)*.8),0)
+ end
+ choiceButton.TextWrap = true
+ choiceButton.ZIndex = 2
+
+ local dropDownSelected = false
+
+ local scrollUpButton
+ local scrollDownButton
+ local scrollMouseCount = 0
+
+ local setZIndex = function(baseZIndex)
+ droppedDownMenu.ZIndex = baseZIndex +1
+ if scrollUpButton then
+ scrollUpButton.ZIndex = baseZIndex + 3
+ end
+ if scrollDownButton then
+ scrollDownButton.ZIndex = baseZIndex + 3
+ end
+
+ local children = droppedDownMenu:GetChildren()
+ if children then
+ for i, child in ipairs(children) do
+ if child.Name == "ChoiceButton" then
+ child.ZIndex = baseZIndex + 2
+ elseif child.Name == "ClickCaptureButton" then
+ child.ZIndex = baseZIndex
+ end
+ end
+ end
+ end
+
+ local scrollBarPosition = 1
+ local updateScroll = function()
+ if scrollUpButton then
+ scrollUpButton.Active = scrollBarPosition > 1
+ end
+ if scrollDownButton then
+ scrollDownButton.Active = scrollBarPosition + dropDownItemCount <= itemCount
+ end
+
+ local children = droppedDownMenu:GetChildren()
+ if not children then return end
+
+ local childNum = 1
+ for i, obj in ipairs(children) do
+ if obj.Name == "ChoiceButton" then
+ if childNum < scrollBarPosition or childNum >= scrollBarPosition + dropDownItemCount then
+ obj.Visible = false
+ else
+ obj.Position = UDim2.new(0,0,((childNum-scrollBarPosition+1)*.8)/((dropDownItemCount+1)*.8),0)
+ obj.Visible = true
+ end
+ obj.TextColor3 = Color3.new(1,1,1)
+ obj.BackgroundTransparency = 1
+
+ childNum = childNum + 1
+ end
+ end
+ end
+ local toggleVisibility = function()
+ dropDownSelected = not dropDownSelected
+
+ dropDownMenu.Visible = not dropDownSelected
+ droppedDownMenu.Visible = dropDownSelected
+ if dropDownSelected then
+ setZIndex(4)
+ else
+ setZIndex(2)
+ end
+ if useScrollButtons then
+ updateScroll()
+ end
+ end
+ droppedDownMenu.MouseButton1Click:connect(toggleVisibility)
+
+ local updateSelection = function(text)
+ local foundItem = false
+ local children = droppedDownMenu:GetChildren()
+ local childNum = 1
+ if children then
+ for i, obj in ipairs(children) do
+ if obj.Name == "ChoiceButton" then
+ if obj.Text == text then
+ obj.Font = Enum.Font.ArialBold
+ foundItem = true
+ scrollBarPosition = childNum
+ else
+ obj.Font = Enum.Font.Arial
+ end
+ childNum = childNum + 1
+ end
+ end
+ end
+ if not text then
+ dropDownMenu.Text = "Choose One"
+ scrollBarPosition = 1
+ else
+ if not foundItem then
+ error("Invalid Selection Update -- " .. text)
+ end
+
+ if scrollBarPosition + dropDownItemCount > itemCount + 1 then
+ scrollBarPosition = itemCount - dropDownItemCount + 1
+ end
+
+ dropDownMenu.Text = text
+ end
+ end
+
+ local function scrollDown()
+ if scrollBarPosition + dropDownItemCount <= itemCount then
+ scrollBarPosition = scrollBarPosition + 1
+ updateScroll()
+ return true
+ end
+ return false
+ end
+ local function scrollUp()
+ if scrollBarPosition > 1 then
+ scrollBarPosition = scrollBarPosition - 1
+ updateScroll()
+ return true
+ end
+ return false
+ end
+
+ if useScrollButtons then
+ --Make some scroll buttons
+ scrollUpButton = Instance.new("ImageButton")
+ scrollUpButton.Name = "ScrollUpButton"
+ scrollUpButton.BackgroundTransparency = 1
+ scrollUpButton.Image = "rbxasset://textures/ui/scrollbuttonUp.png"
+ scrollUpButton.Size = UDim2.new(0,17,0,17)
+ scrollUpButton.Position = UDim2.new(1,-11,(1*.8)/((dropDownItemCount+1)*.8),0)
+ scrollUpButton.MouseButton1Click:connect(
+ function()
+ scrollMouseCount = scrollMouseCount + 1
+ end)
+ scrollUpButton.MouseLeave:connect(
+ function()
+ scrollMouseCount = scrollMouseCount + 1
+ end)
+ scrollUpButton.MouseButton1Down:connect(
+ function()
+ scrollMouseCount = scrollMouseCount + 1
+
+ scrollUp()
+ local val = scrollMouseCount
+ wait(0.5)
+ while val == scrollMouseCount do
+ if scrollUp() == false then
+ break
+ end
+ wait(0.1)
+ end
+ end)
+
+ scrollUpButton.Parent = droppedDownMenu
+
+ scrollDownButton = Instance.new("ImageButton")
+ scrollDownButton.Name = "ScrollDownButton"
+ scrollDownButton.BackgroundTransparency = 1
+ scrollDownButton.Image = "rbxasset://textures/ui/scrollbuttonDown.png"
+ scrollDownButton.Size = UDim2.new(0,17,0,17)
+ scrollDownButton.Position = UDim2.new(1,-11,1,-11)
+ scrollDownButton.Parent = droppedDownMenu
+ scrollDownButton.MouseButton1Click:connect(
+ function()
+ scrollMouseCount = scrollMouseCount + 1
+ end)
+ scrollDownButton.MouseLeave:connect(
+ function()
+ scrollMouseCount = scrollMouseCount + 1
+ end)
+ scrollDownButton.MouseButton1Down:connect(
+ function()
+ scrollMouseCount = scrollMouseCount + 1
+
+ scrollDown()
+ local val = scrollMouseCount
+ wait(0.5)
+ while val == scrollMouseCount do
+ if scrollDown() == false then
+ break
+ end
+ wait(0.1)
+ end
+ end)
+
+ local scrollbar = Instance.new("ImageLabel")
+ scrollbar.Name = "ScrollBar"
+ scrollbar.Image = "rbxasset://textures/ui/scrollbar.png"
+ scrollbar.BackgroundTransparency = 1
+ scrollbar.Size = UDim2.new(0, 18, (dropDownItemCount*.8)/((dropDownItemCount+1)*.8), -(17) - 11 - 4)
+ scrollbar.Position = UDim2.new(1,-11,(1*.8)/((dropDownItemCount+1)*.8),17+2)
+ scrollbar.Parent = droppedDownMenu
+ end
+
+ for i,item in ipairs(items) do
+ -- needed to maintain local scope for items in event listeners below
+ local button = choiceButton:clone()
+ if forRoblox then
+ button.RobloxLocked = true
+ end
+ button.Text = item
+ button.Parent = droppedDownMenu
+ button.MouseButton1Click:connect(function()
+ --Remove Highlight
+ button.TextColor3 = Color3.new(1,1,1)
+ button.BackgroundTransparency = 1
+
+ updateSelection(item)
+ onSelect(item)
+
+ toggleVisibility()
+ end)
+ button.MouseEnter:connect(function()
+ --Add Highlight
+ button.TextColor3 = Color3.new(0,0,0)
+ button.BackgroundTransparency = 0
+ end)
+
+ button.MouseLeave:connect(function()
+ --Remove Highlight
+ button.TextColor3 = Color3.new(1,1,1)
+ button.BackgroundTransparency = 1
+ end)
+ end
+
+ --This does the initial layout of the buttons
+ updateScroll()
+
+ local bigFakeButton = Instance.new("TextButton")
+ bigFakeButton.BackgroundTransparency = 1
+ bigFakeButton.Name = "ClickCaptureButton"
+ bigFakeButton.Size = UDim2.new(0, 4000, 0, 3000)
+ bigFakeButton.Position = UDim2.new(0, -2000, 0, -1500)
+ bigFakeButton.ZIndex = 1
+ bigFakeButton.Text = ""
+ bigFakeButton.Parent = droppedDownMenu
+ bigFakeButton.MouseButton1Click:connect(toggleVisibility)
+
+ dropDownMenu.MouseButton1Click:connect(toggleVisibility)
+ return frame, updateSelection
+end
+
+t.CreatePropertyDropDownMenu = function(instance, property, enum)
+
+ local items = enum:GetEnumItems()
+ local names = {}
+ local nameToItem = {}
+ for i,obj in ipairs(items) do
+ names[i] = obj.Name
+ nameToItem[obj.Name] = obj
+ end
+
+ local frame
+ local updateSelection
+ frame, updateSelection = t.CreateDropDownMenu(names, function(text) instance[property] = nameToItem[text] end)
+
+ ScopedConnect(frame, instance, "Changed",
+ function(prop)
+ if prop == property then
+ updateSelection(instance[property].Name)
+ end
+ end,
+ function()
+ updateSelection(instance[property].Name)
+ end)
+
+ return frame
+end
+
+t.GetFontHeight = function(font, fontSize)
+ if font == nil or fontSize == nil then
+ error("Font and FontSize must be non-nil")
+ end
+
+ if font == Enum.Font.Legacy then
+ if fontSize == Enum.FontSize.Size8 then
+ return 12
+ elseif fontSize == Enum.FontSize.Size9 then
+ return 14
+ elseif fontSize == Enum.FontSize.Size10 then
+ return 15
+ elseif fontSize == Enum.FontSize.Size11 then
+ return 17
+ elseif fontSize == Enum.FontSize.Size12 then
+ return 18
+ elseif fontSize == Enum.FontSize.Size14 then
+ return 21
+ elseif fontSize == Enum.FontSize.Size18 then
+ return 27
+ elseif fontSize == Enum.FontSize.Size24 then
+ return 36
+ elseif fontSize == Enum.FontSize.Size36 then
+ return 54
+ elseif fontSize == Enum.FontSize.Size48 then
+ return 72
+ else
+ error("Unknown FontSize")
+ end
+ elseif font == Enum.Font.Arial or font == Enum.Font.ArialBold then
+ if fontSize == Enum.FontSize.Size8 then
+ return 8
+ elseif fontSize == Enum.FontSize.Size9 then
+ return 9
+ elseif fontSize == Enum.FontSize.Size10 then
+ return 10
+ elseif fontSize == Enum.FontSize.Size11 then
+ return 11
+ elseif fontSize == Enum.FontSize.Size12 then
+ return 12
+ elseif fontSize == Enum.FontSize.Size14 then
+ return 14
+ elseif fontSize == Enum.FontSize.Size18 then
+ return 18
+ elseif fontSize == Enum.FontSize.Size24 then
+ return 24
+ elseif fontSize == Enum.FontSize.Size36 then
+ return 36
+ elseif fontSize == Enum.FontSize.Size48 then
+ return 48
+ else
+ error("Unknown FontSize")
+ end
+ else
+ error("Unknown Font " .. font)
+ end
+end
+
+local function layoutGuiObjectsHelper(frame, guiObjects, settingsTable)
+ local totalPixels = frame.AbsoluteSize.Y
+ local pixelsRemaining = frame.AbsoluteSize.Y
+ for i, child in ipairs(guiObjects) do
+ if child:IsA("TextLabel") or child:IsA("TextButton") then
+ local isLabel = child:IsA("TextLabel")
+ if isLabel then
+ pixelsRemaining = pixelsRemaining - settingsTable["TextLabelPositionPadY"]
+ else
+ pixelsRemaining = pixelsRemaining - settingsTable["TextButtonPositionPadY"]
+ end
+ child.Position = UDim2.new(child.Position.X.Scale, child.Position.X.Offset, 0, totalPixels - pixelsRemaining)
+ child.Size = UDim2.new(child.Size.X.Scale, child.Size.X.Offset, 0, pixelsRemaining)
+
+ if child.TextFits and child.TextBounds.Y < pixelsRemaining then
+ child.Visible = true
+ if isLabel then
+ child.Size = UDim2.new(child.Size.X.Scale, child.Size.X.Offset, 0, child.TextBounds.Y + settingsTable["TextLabelSizePadY"])
+ else
+ child.Size = UDim2.new(child.Size.X.Scale, child.Size.X.Offset, 0, child.TextBounds.Y + settingsTable["TextButtonSizePadY"])
+ end
+
+ while not child.TextFits do
+ child.Size = UDim2.new(child.Size.X.Scale, child.Size.X.Offset, 0, child.AbsoluteSize.Y + 1)
+ end
+ pixelsRemaining = pixelsRemaining - child.AbsoluteSize.Y
+
+ if isLabel then
+ pixelsRemaining = pixelsRemaining - settingsTable["TextLabelPositionPadY"]
+ else
+ pixelsRemaining = pixelsRemaining - settingsTable["TextButtonPositionPadY"]
+ end
+ else
+ child.Visible = false
+ pixelsRemaining = -1
+ end
+
+ else
+ --GuiObject
+ child.Position = UDim2.new(child.Position.X.Scale, child.Position.X.Offset, 0, totalPixels - pixelsRemaining)
+ pixelsRemaining = pixelsRemaining - child.AbsoluteSize.Y
+ child.Visible = (pixelsRemaining >= 0)
+ end
+ end
+end
+
+t.LayoutGuiObjects = function(frame, guiObjects, settingsTable)
+ if not frame:IsA("GuiObject") then
+ error("Frame must be a GuiObject")
+ end
+ for i, child in ipairs(guiObjects) do
+ if not child:IsA("GuiObject") then
+ error("All elements that are layed out must be of type GuiObject")
+ end
+ end
+
+ if not settingsTable then
+ settingsTable = {}
+ end
+
+ if not settingsTable["TextLabelSizePadY"] then
+ settingsTable["TextLabelSizePadY"] = 0
+ end
+ if not settingsTable["TextLabelPositionPadY"] then
+ settingsTable["TextLabelPositionPadY"] = 0
+ end
+ if not settingsTable["TextButtonSizePadY"] then
+ settingsTable["TextButtonSizePadY"] = 12
+ end
+ if not settingsTable["TextButtonPositionPadY"] then
+ settingsTable["TextButtonPositionPadY"] = 2
+ end
+
+ --Wrapper frame takes care of styled objects
+ local wrapperFrame = Instance.new("Frame")
+ wrapperFrame.Name = "WrapperFrame"
+ wrapperFrame.BackgroundTransparency = 1
+ wrapperFrame.Size = UDim2.new(1,0,1,0)
+ wrapperFrame.Parent = frame
+
+ for i, child in ipairs(guiObjects) do
+ child.Parent = wrapperFrame
+ end
+
+ local recalculate = function()
+ wait()
+ layoutGuiObjectsHelper(wrapperFrame, guiObjects, settingsTable)
+ end
+
+ frame.Changed:connect(
+ function(prop)
+ if prop == "AbsoluteSize" then
+ --Wait a heartbeat for it to sync in
+ recalculate()
+ end
+ end)
+ frame.AncestryChanged:connect(recalculate)
+
+ layoutGuiObjectsHelper(wrapperFrame, guiObjects, settingsTable)
+end
+
+
+t.CreateSlider = function(steps,width,position)
+ local sliderGui = Instance.new("Frame")
+ sliderGui.Size = UDim2.new(1,0,1,0)
+ sliderGui.BackgroundTransparency = 1
+ sliderGui.Name = "SliderGui"
+
+ local areaSoak = Instance.new("TextButton")
+ areaSoak.Name = "AreaSoak"
+ areaSoak.Text = ""
+ areaSoak.BackgroundTransparency = 1
+ areaSoak.Active = false
+ areaSoak.Size = UDim2.new(1,0,1,0)
+ areaSoak.Visible = false
+ areaSoak.ZIndex = 4
+ areaSoak.Parent = sliderGui
+
+ local sliderPosition = Instance.new("IntValue")
+ sliderPosition.Name = "SliderPosition"
+ sliderPosition.Value = 0
+ sliderPosition.Parent = sliderGui
+
+ local id = math.random(1,100)
+
+ local bar = Instance.new("Frame")
+ bar.Name = "Bar"
+ bar.BackgroundColor3 = Color3.new(0,0,0)
+ if type(width) == "number" then
+ bar.Size = UDim2.new(0,width,0,5)
+ else
+ bar.Size = UDim2.new(0,200,0,5)
+ end
+ bar.BorderColor3 = Color3.new(95/255,95/255,95/255)
+ bar.ZIndex = 2
+ bar.Parent = sliderGui
+
+ if position["X"] and position["X"]["Scale"] and position["X"]["Offset"] and position["Y"] and position["Y"]["Scale"] and position["Y"]["Offset"] then
+ bar.Position = position
+ end
+
+ local slider = Instance.new("ImageButton")
+ slider.Name = "Slider"
+ slider.BackgroundTransparency = 1
+ slider.Image = "rbxasset://textures/ui/Slider.png"
+ slider.Position = UDim2.new(0,0,0.5,-10)
+ slider.Size = UDim2.new(0,20,0,20)
+ slider.ZIndex = 3
+ slider.Parent = bar
+
+ local areaSoakMouseMoveCon = nil
+
+ areaSoak.MouseLeave:connect(function()
+ if areaSoak.Visible then
+ cancelSlide(areaSoak)
+ end
+ end)
+ areaSoak.MouseButton1Up:connect(function()
+ if areaSoak.Visible then
+ cancelSlide(areaSoak)
+ end
+ end)
+
+ slider.MouseButton1Down:connect(function()
+ areaSoak.Visible = true
+ if areaSoakMouseMoveCon then areaSoakMouseMoveCon:disconnect() end
+ areaSoakMouseMoveCon = areaSoak.MouseMoved:connect(function(x,y)
+ setSliderPos(x,slider,sliderPosition,bar,steps)
+ end)
+ end)
+
+ slider.MouseButton1Up:connect(function() cancelSlide(areaSoak) end)
+
+ sliderPosition.Changed:connect(function(prop)
+ local relativePosX = (sliderPosition.Value - 1) / steps
+ slider.Position = UDim2.new(relativePosX,0,slider.Position.Y.Scale,slider.Position.Y.Offset)
+ end)
+
+ return sliderGui, sliderPosition
+
+end
+
+
+t.CreateScrollingFrame = function(orderList,scrollStyle)
+ local frame = Instance.new("Frame")
+ frame.Name = "ScrollingFrame"
+ frame.BackgroundTransparency = 1
+ frame.Size = UDim2.new(1,0,1,0)
+
+ local scrollUpButton = Instance.new("ImageButton")
+ scrollUpButton.Name = "ScrollUpButton"
+ scrollUpButton.BackgroundTransparency = 1
+ scrollUpButton.Image = "rbxasset://textures/ui/scrollbuttonUp.png"
+ scrollUpButton.Size = UDim2.new(0,17,0,17)
+
+
+ local scrollDownButton = Instance.new("ImageButton")
+ scrollDownButton.Name = "ScrollDownButton"
+ scrollDownButton.BackgroundTransparency = 1
+ scrollDownButton.Image = "rbxasset://textures/ui/scrollbuttonDown.png"
+ scrollDownButton.Size = UDim2.new(0,17,0,17)
+
+ local style = "simple"
+ if scrollStyle and tostring(scrollStyle) then
+ style = scrollStyle
+ end
+
+ local scrollPosition = 1
+ local rowSize = 1
+
+ local layoutGridScrollBar = function()
+ local guiObjects = {}
+ if orderList then
+ for i, child in ipairs(orderList) do
+ if child.Parent == frame then
+ table.insert(guiObjects, child)
+ end
+ end
+ else
+ local children = frame:GetChildren()
+ if children then
+ for i, child in ipairs(children) do
+ if child:IsA("GuiObject") then
+ table.insert(guiObjects, child)
+ end
+ end
+ end
+ end
+ if #guiObjects == 0 then
+ scrollUpButton.Active = false
+ scrollDownButton.Active = false
+ scrollPosition = 1
+ return
+ end
+
+ if scrollPosition > #guiObjects then
+ scrollPosition = #guiObjects
+ end
+
+ local totalPixelsY = frame.AbsoluteSize.Y
+ local pixelsRemainingY = frame.AbsoluteSize.Y
+
+ local totalPixelsX = frame.AbsoluteSize.X
+
+ local xCounter = 0
+ local rowSizeCounter = 0
+ local setRowSize = true
+
+ local pixelsBelowScrollbar = 0
+ local pos = #guiObjects
+ while pixelsBelowScrollbar < totalPixelsY and pos >= 1 do
+ if pos >= scrollPosition then
+ pixelsBelowScrollbar = pixelsBelowScrollbar + guiObjects[pos].AbsoluteSize.Y
+ else
+ xCounter = xCounter + guiObjects[pos].AbsoluteSize.X
+ rowSizeCounter = rowSizeCounter + 1
+ if xCounter >= totalPixelsX then
+ if setRowSize then
+ rowSize = rowSizeCounter - 1
+ setRowSize = false
+ end
+
+ rowSizeCounter = 0
+ xCounter = 0
+ if pixelsBelowScrollbar + guiObjects[pos].AbsoluteSize.Y <= totalPixelsY then
+ --It fits, so back up our scroll position
+ pixelsBelowScrollbar = pixelsBelowScrollbar + guiObjects[pos].AbsoluteSize.Y
+ if scrollPosition <= rowSize then
+ scrollPosition = rowSize
+ break
+ else
+ --print("Backing up ScrollPosition from -- " ..scrollPosition)
+ scrollPosition = scrollPosition - rowSize
+ end
+ else
+ break
+ end
+ end
+ end
+ pos = pos - 1
+ end
+
+ xCounter = 0
+ --print("ScrollPosition = " .. scrollPosition)
+ pos = scrollPosition
+ rowSizeCounter = 0
+ setRowSize = true
+ local lastChildSize = 0
+
+ local xOffset,yOffset = 0
+ if guiObjects[1] then
+ yOffset = math.ceil(math.floor(math.fmod(totalPixelsY,guiObjects[1].AbsoluteSize.X))/2)
+ xOffset = math.ceil(math.floor(math.fmod(totalPixelsX,guiObjects[1].AbsoluteSize.Y))/2)
+ end
+
+ for i, child in ipairs(guiObjects) do
+ if i < scrollPosition then
+ --print("Hiding " .. child.Name)
+ child.Visible = false
+ else
+ if pixelsRemainingY < 0 then
+ --print("Out of Space " .. child.Name)
+ child.Visible = false
+ else
+ --print("Laying out " .. child.Name)
+ --GuiObject
+ if setRowSize then rowSizeCounter = rowSizeCounter + 1 end
+ if xCounter + child.AbsoluteSize.X >= totalPixelsX then
+ if setRowSize then
+ rowSize = rowSizeCounter - 1
+ setRowSize = false
+ end
+ xCounter = 0
+ pixelsRemainingY = pixelsRemainingY - child.AbsoluteSize.Y
+ end
+ child.Position = UDim2.new(child.Position.X.Scale,xCounter + xOffset, 0, totalPixelsY - pixelsRemainingY + yOffset)
+ xCounter = xCounter + child.AbsoluteSize.X
+ child.Visible = ((pixelsRemainingY - child.AbsoluteSize.Y) >= 0)
+ lastChildSize = child.AbsoluteSize
+ end
+ end
+ end
+
+ scrollUpButton.Active = (scrollPosition > 1)
+ if lastChildSize == 0 then
+ scrollDownButton.Active = false
+ else
+ scrollDownButton.Active = ((pixelsRemainingY - lastChildSize.Y) < 0)
+ end
+ end
+
+
+ local layoutSimpleScrollBar = function()
+ local guiObjects = {}
+
+ if orderList then
+ for i, child in ipairs(orderList) do
+ if child.Parent == frame then
+ table.insert(guiObjects, child)
+ end
+ end
+ else
+ local children = frame:GetChildren()
+ if children then
+ for i, child in ipairs(children) do
+ if child:IsA("GuiObject") then
+ table.insert(guiObjects, child)
+ end
+ end
+ end
+ end
+ if #guiObjects == 0 then
+ scrollUpButton.Active = false
+ scrollDownButton.Active = false
+ scrollPosition = 1
+ return
+ end
+
+ if scrollPosition > #guiObjects then
+ scrollPosition = #guiObjects
+ end
+
+ local totalPixels = frame.AbsoluteSize.Y
+ local pixelsRemaining = frame.AbsoluteSize.Y
+
+ local pixelsBelowScrollbar = 0
+ local pos = #guiObjects
+ while pixelsBelowScrollbar < totalPixels and pos >= 1 do
+ if pos >= scrollPosition then
+ pixelsBelowScrollbar = pixelsBelowScrollbar + guiObjects[pos].AbsoluteSize.Y
+ else
+ if pixelsBelowScrollbar + guiObjects[pos].AbsoluteSize.Y <= totalPixels then
+ --It fits, so back up our scroll position
+ pixelsBelowScrollbar = pixelsBelowScrollbar + guiObjects[pos].AbsoluteSize.Y
+ if scrollPosition <= 1 then
+ scrollPosition = 1
+ break
+ else
+ --print("Backing up ScrollPosition from -- " ..scrollPosition)
+ scrollPosition = scrollPosition - 1
+ end
+ else
+ break
+ end
+ end
+ pos = pos - 1
+ end
+
+ --print("ScrollPosition = " .. scrollPosition)
+ pos = scrollPosition
+ for i, child in ipairs(guiObjects) do
+ if i < scrollPosition then
+ --print("Hiding " .. child.Name)
+ child.Visible = false
+ else
+ if pixelsRemaining < 0 then
+ --print("Out of Space " .. child.Name)
+ child.Visible = false
+ else
+ --print("Laying out " .. child.Name)
+ --GuiObject
+ child.Position = UDim2.new(child.Position.X.Scale, child.Position.X.Offset, 0, totalPixels - pixelsRemaining)
+ pixelsRemaining = pixelsRemaining - child.AbsoluteSize.Y
+ child.Visible = (pixelsRemaining >= 0)
+ end
+ end
+ end
+ scrollUpButton.Active = (scrollPosition > 1)
+ scrollDownButton.Active = (pixelsRemaining < 0)
+ end
+
+ local reentrancyGuard = false
+ local recalculate = function()
+ if reentrancyGuard then
+ return
+ end
+ reentrancyGuard = true
+ wait()
+ local success, err = nil
+ if style == "grid" then
+ success, err = pcall(function() layoutGridScrollBar(frame) end)
+ elseif style == "simple" then
+ success, err = pcall(function() layoutSimpleScrollBar(frame) end)
+ end
+ if not success then print(err) end
+
+ reentrancyGuard = false
+ end
+
+ local scrollUp = function()
+ if scrollUpButton.Active then
+ scrollPosition = scrollPosition - rowSize
+ recalculate()
+ end
+ end
+
+ local scrollDown = function()
+ if scrollDownButton.Active then
+ scrollPosition = scrollPosition + rowSize
+ recalculate()
+ end
+ end
+
+ local scrollMouseCount = 0
+ scrollUpButton.MouseButton1Click:connect(
+ function()
+ --print("Up-MouseButton1Click")
+ scrollMouseCount = scrollMouseCount + 1
+ end)
+ scrollUpButton.MouseLeave:connect(
+ function()
+ --print("Up-Leave")
+ scrollMouseCount = scrollMouseCount + 1
+ end)
+
+ scrollUpButton.MouseButton1Down:connect(
+ function()
+ --print("Up-Down")
+ scrollMouseCount = scrollMouseCount + 1
+
+ scrollUp()
+ local val = scrollMouseCount
+ wait(0.5)
+ while val == scrollMouseCount do
+ if scrollUp() == false then
+ break
+ end
+ wait(0.1)
+ end
+ end)
+
+ scrollDownButton.MouseButton1Click:connect(
+ function()
+ --print("Down-Click")
+ scrollMouseCount = scrollMouseCount + 1
+ end)
+ scrollDownButton.MouseLeave:connect(
+ function()
+ --print("Down-Leave")
+ scrollMouseCount = scrollMouseCount + 1
+ end)
+ scrollDownButton.MouseButton1Down:connect(
+ function()
+ --print("Down-Down")
+ scrollMouseCount = scrollMouseCount + 1
+
+ scrollDown()
+ local val = scrollMouseCount
+ wait(0.5)
+ while val == scrollMouseCount do
+ if scrollDown() == false then
+ break
+ end
+ wait(0.1)
+ end
+ end)
+
+
+ frame.ChildAdded:connect(function()
+ recalculate()
+ end)
+
+ frame.ChildRemoved:connect(function()
+ recalculate()
+ end)
+
+ frame.Changed:connect(
+ function(prop)
+ if prop == "AbsoluteSize" then
+ --Wait a heartbeat for it to sync in
+ recalculate()
+ end
+ end)
+ frame.AncestryChanged:connect(recalculate)
+
+ return frame, scrollUpButton, scrollDownButton, recalculate
+end
+local function binaryGrow(min, max, fits)
+ if min > max then
+ return min
+ end
+ local biggestLegal = min
+
+ while min <= max do
+ local mid = min + math.floor((max - min) / 2)
+ if fits(mid) and (biggestLegal == nil or biggestLegal < mid) then
+ biggestLegal = mid
+
+ --Try growing
+ min = mid + 1
+ else
+ --Doesn't fit, shrink
+ max = mid - 1
+ end
+ end
+ return biggestLegal
+end
+
+
+local function binaryShrink(min, max, fits)
+ if min > max then
+ return min
+ end
+ local smallestLegal = max
+
+ while min <= max do
+ local mid = min + math.floor((max - min) / 2)
+ if fits(mid) and (smallestLegal == nil or smallestLegal > mid) then
+ smallestLegal = mid
+
+ --It fits, shrink
+ max = mid - 1
+ else
+ --Doesn't fit, grow
+ min = mid + 1
+ end
+ end
+ return smallestLegal
+end
+
+
+local function getGuiOwner(instance)
+ while instance ~= nil do
+ if instance:IsA("ScreenGui") or instance:IsA("BillboardGui") then
+ return instance
+ end
+ instance = instance.Parent
+ end
+ return nil
+end
+
+t.AutoTruncateTextObject = function(textLabel)
+ local text = textLabel.Text
+
+ local fullLabel = textLabel:Clone()
+ fullLabel.Name = "Full" .. textLabel.Name
+ fullLabel.BorderSizePixel = 0
+ fullLabel.BackgroundTransparency = 0
+ fullLabel.Text = text
+ fullLabel.TextXAlignment = Enum.TextXAlignment.Center
+ fullLabel.Position = UDim2.new(0,-3,0,0)
+ fullLabel.Size = UDim2.new(0,100,1,0)
+ fullLabel.Visible = false
+ fullLabel.Parent = textLabel
+
+ local shortText = nil
+ local mouseEnterConnection = nil
+ local mouseLeaveConnection= nil
+
+ local checkForResize = function()
+ if getGuiOwner(textLabel) == nil then
+ return
+ end
+ textLabel.Text = text
+ if textLabel.TextFits then
+ --Tear down the rollover if it is active
+ if mouseEnterConnection then
+ mouseEnterConnection:disconnect()
+ mouseEnterConnection = nil
+ end
+ if mouseLeaveConnection then
+ mouseLeaveConnection:disconnect()
+ mouseLeaveConnection = nil
+ end
+ else
+ local len = string.len(text)
+ textLabel.Text = text .. "~"
+
+ --Shrink the text
+ local textSize = binaryGrow(0, len,
+ function(pos)
+ if pos == 0 then
+ textLabel.Text = "~"
+ else
+ textLabel.Text = string.sub(text, 1, pos) .. "~"
+ end
+ return textLabel.TextFits
+ end)
+ shortText = string.sub(text, 1, textSize) .. "~"
+ textLabel.Text = shortText
+
+ --Make sure the fullLabel fits
+ if not fullLabel.TextFits then
+ --Already too small, grow it really bit to start
+ fullLabel.Size = UDim2.new(0, 10000, 1, 0)
+ end
+
+ --Okay, now try to binary shrink it back down
+ local fullLabelSize = binaryShrink(textLabel.AbsoluteSize.X,fullLabel.AbsoluteSize.X,
+ function(size)
+ fullLabel.Size = UDim2.new(0, size, 1, 0)
+ return fullLabel.TextFits
+ end)
+ fullLabel.Size = UDim2.new(0,fullLabelSize+6,1,0)
+
+ --Now setup the rollover effects, if they are currently off
+ if mouseEnterConnection == nil then
+ mouseEnterConnection = textLabel.MouseEnter:connect(
+ function()
+ fullLabel.ZIndex = textLabel.ZIndex + 1
+ fullLabel.Visible = true
+ --textLabel.Text = ""
+ end)
+ end
+ if mouseLeaveConnection == nil then
+ mouseLeaveConnection = textLabel.MouseLeave:connect(
+ function()
+ fullLabel.Visible = false
+ --textLabel.Text = shortText
+ end)
+ end
+ end
+ end
+ textLabel.AncestryChanged:connect(checkForResize)
+ textLabel.Changed:connect(
+ function(prop)
+ if prop == "AbsoluteSize" then
+ checkForResize()
+ end
+ end)
+
+ checkForResize()
+
+ local function changeText(newText)
+ text = newText
+ fullLabel.Text = text
+ checkForResize()
+ end
+
+ return textLabel, changeText
+end
+
+local function TransitionTutorialPages(fromPage, toPage, transitionFrame, currentPageValue)
+ if fromPage then
+ fromPage.Visible = false
+ if transitionFrame.Visible == false then
+ transitionFrame.Size = fromPage.Size
+ transitionFrame.Position = fromPage.Position
+ end
+ else
+ if transitionFrame.Visible == false then
+ transitionFrame.Size = UDim2.new(0.0,50,0.0,50)
+ transitionFrame.Position = UDim2.new(0.5,-25,0.5,-25)
+ end
+ end
+ transitionFrame.Visible = true
+ currentPageValue.Value = nil
+
+ local newsize, newPosition
+ if toPage then
+ --Make it visible so it resizes
+ toPage.Visible = true
+
+ newSize = toPage.Size
+ newPosition = toPage.Position
+
+ toPage.Visible = false
+ else
+ newSize = UDim2.new(0.0,50,0.0,50)
+ newPosition = UDim2.new(0.5,-25,0.5,-25)
+ end
+ transitionFrame:TweenSizeAndPosition(newSize, newPosition, Enum.EasingDirection.InOut, Enum.EasingStyle.Quad, 0.3, true,
+ function(state)
+ if state == Enum.TweenStatus.Completed then
+ transitionFrame.Visible = false
+ if toPage then
+ toPage.Visible = true
+ currentPageValue.Value = toPage
+ end
+ end
+ end)
+end
+
+t.CreateTutorial = function(name, tutorialKey, createButtons)
+ local frame = Instance.new("Frame")
+ frame.Name = "Tutorial-" .. name
+ frame.BackgroundTransparency = 1
+ frame.Size = UDim2.new(0.6, 0, 0.6, 0)
+ frame.Position = UDim2.new(0.2, 0, 0.2, 0)
+
+ local transitionFrame = Instance.new("Frame")
+ transitionFrame.Name = "TransitionFrame"
+ transitionFrame.Style = Enum.FrameStyle.RobloxRound
+ transitionFrame.Size = UDim2.new(0.6, 0, 0.6, 0)
+ transitionFrame.Position = UDim2.new(0.2, 0, 0.2, 0)
+ transitionFrame.Visible = false
+ transitionFrame.Parent = frame
+
+ local currentPageValue = Instance.new("ObjectValue")
+ currentPageValue.Name = "CurrentTutorialPage"
+ currentPageValue.Value = nil
+ currentPageValue.Parent = frame
+
+ local boolValue = Instance.new("BoolValue")
+ boolValue.Name = "Buttons"
+ boolValue.Value = createButtons
+ boolValue.Parent = frame
+
+ local pages = Instance.new("Frame")
+ pages.Name = "Pages"
+ pages.BackgroundTransparency = 1
+ pages.Size = UDim2.new(1,0,1,0)
+ pages.Parent = frame
+
+ local function getVisiblePageAndHideOthers()
+ local visiblePage = nil
+ local children = pages:GetChildren()
+ if children then
+ for i,child in ipairs(children) do
+ if child.Visible then
+ if visiblePage then
+ child.Visible = false
+ else
+ visiblePage = child
+ end
+ end
+ end
+ end
+ return visiblePage
+ end
+
+ local showTutorial = function(alwaysShow)
+ if alwaysShow or UserSettings().GameSettings:GetTutorialState(tutorialKey) == false then
+ print("Showing tutorial-",tutorialKey)
+ local currentTutorialPage = getVisiblePageAndHideOthers()
+
+ local firstPage = pages:FindFirstChild("TutorialPage1")
+ if firstPage then
+ TransitionTutorialPages(currentTutorialPage, firstPage, transitionFrame, currentPageValue)
+ else
+ error("Could not find TutorialPage1")
+ end
+ end
+ end
+
+ local dismissTutorial = function()
+ local currentTutorialPage = getVisiblePageAndHideOthers()
+
+ if currentTutorialPage then
+ TransitionTutorialPages(currentTutorialPage, nil, transitionFrame, currentPageValue)
+ end
+
+ UserSettings().GameSettings:SetTutorialState(tutorialKey, true)
+ end
+
+ local gotoPage = function(pageNum)
+ local page = pages:FindFirstChild("TutorialPage" .. pageNum)
+ local currentTutorialPage = getVisiblePageAndHideOthers()
+ TransitionTutorialPages(currentTutorialPage, page, transitionFrame, currentPageValue)
+ end
+
+ return frame, showTutorial, dismissTutorial, gotoPage
+end
+
+local function CreateBasicTutorialPage(name, handleResize, skipTutorial)
+ local frame = Instance.new("Frame")
+ frame.Name = "TutorialPage"
+ frame.Style = Enum.FrameStyle.RobloxRound
+ frame.Size = UDim2.new(0.6, 0, 0.6, 0)
+ frame.Position = UDim2.new(0.2, 0, 0.2, 0)
+ frame.Visible = false
+
+ local frameHeader = Instance.new("TextLabel")
+ frameHeader.Name = "Header"
+ frameHeader.Text = name
+ frameHeader.BackgroundTransparency = 1
+ frameHeader.FontSize = Enum.FontSize.Size24
+ frameHeader.Font = Enum.Font.ArialBold
+ frameHeader.TextColor3 = Color3.new(1,1,1)
+ frameHeader.TextXAlignment = Enum.TextXAlignment.Center
+ frameHeader.TextWrap = true
+ frameHeader.Size = UDim2.new(1,-55, 0, 22)
+ frameHeader.Position = UDim2.new(0,0,0,0)
+ frameHeader.Parent = frame
+
+ local skipButton = Instance.new("ImageButton")
+ skipButton.Name = "SkipButton"
+ skipButton.AutoButtonColor = false
+ skipButton.BackgroundTransparency = 1
+ skipButton.Image = "http://www.roblox.com/asset/?id=37813546"
+ skipButton.MouseButton1Click:connect(function()
+ skipButton.Image = "http://www.roblox.com/asset/?id=37813546"
+ skipTutorial()
+ end)
+ skipButton.MouseEnter:connect(function()
+ skipButton.Image = "http://www.roblox.com/asset/?id=37813556"
+ end)
+ skipButton.MouseLeave:connect(function()
+ skipButton.Image = "http://www.roblox.com/asset/?id=37813546"
+ end)
+ skipButton.Size = UDim2.new(0, 55, 0, 22)
+ skipButton.Position = UDim2.new(1, -55, 0, 0)
+ skipButton.Parent = frame
+
+ local innerFrame = Instance.new("Frame")
+ innerFrame.Name = "ContentFrame"
+ innerFrame.BackgroundTransparency = 1
+ innerFrame.Position = UDim2.new(0,0,0,22)
+ innerFrame.Parent = frame
+
+ local nextButton = Instance.new("TextButton")
+ nextButton.Name = "NextButton"
+ nextButton.Text = "Next"
+ nextButton.TextColor3 = Color3.new(1,1,1)
+ nextButton.Font = Enum.Font.Arial
+ nextButton.FontSize = Enum.FontSize.Size18
+ nextButton.Style = Enum.ButtonStyle.RobloxButtonDefault
+ nextButton.Size = UDim2.new(0,80, 0, 32)
+ nextButton.Position = UDim2.new(0.5, 5, 1, -32)
+ nextButton.Active = false
+ nextButton.Visible = false
+ nextButton.Parent = frame
+
+ local prevButton = Instance.new("TextButton")
+ prevButton.Name = "PrevButton"
+ prevButton.Text = "Previous"
+ prevButton.TextColor3 = Color3.new(1,1,1)
+ prevButton.Font = Enum.Font.Arial
+ prevButton.FontSize = Enum.FontSize.Size18
+ prevButton.Style = Enum.ButtonStyle.RobloxButton
+ prevButton.Size = UDim2.new(0,80, 0, 32)
+ prevButton.Position = UDim2.new(0.5, -85, 1, -32)
+ prevButton.Active = false
+ prevButton.Visible = false
+ prevButton.Parent = frame
+
+ innerFrame.Size = UDim2.new(1,0,1,-22-35)
+
+ local parentConnection = nil
+
+ local function basicHandleResize()
+ if frame.Visible and frame.Parent then
+ local maxSize = math.min(frame.Parent.AbsoluteSize.X, frame.Parent.AbsoluteSize.Y)
+ handleResize(200,maxSize)
+ end
+ end
+
+ frame.Changed:connect(
+ function(prop)
+ if prop == "Parent" then
+ if parentConnection ~= nil then
+ parentConnection:disconnect()
+ parentConnection = nil
+ end
+ if frame.Parent and frame.Parent:IsA("GuiObject") then
+ parentConnection = frame.Parent.Changed:connect(
+ function(parentProp)
+ if parentProp == "AbsoluteSize" then
+ wait()
+ basicHandleResize()
+ end
+ end)
+ basicHandleResize()
+ end
+ end
+
+ if prop == "Visible" then
+ basicHandleResize()
+ end
+ end)
+
+ return frame, innerFrame
+end
+
+t.CreateTextTutorialPage = function(name, text, skipTutorialFunc)
+ local frame = nil
+ local contentFrame = nil
+
+ local textLabel = Instance.new("TextLabel")
+ textLabel.BackgroundTransparency = 1
+ textLabel.TextColor3 = Color3.new(1,1,1)
+ textLabel.Text = text
+ textLabel.TextWrap = true
+ textLabel.TextXAlignment = Enum.TextXAlignment.Left
+ textLabel.TextYAlignment = Enum.TextYAlignment.Center
+ textLabel.Font = Enum.Font.Arial
+ textLabel.FontSize = Enum.FontSize.Size14
+ textLabel.Size = UDim2.new(1,0,1,0)
+
+ local function handleResize(minSize, maxSize)
+ size = binaryShrink(minSize, maxSize,
+ function(size)
+ frame.Size = UDim2.new(0, size, 0, size)
+ return textLabel.TextFits
+ end)
+ frame.Size = UDim2.new(0, size, 0, size)
+ frame.Position = UDim2.new(0.5, -size/2, 0.5, -size/2)
+ end
+
+ frame, contentFrame = CreateBasicTutorialPage(name, handleResize, skipTutorialFunc)
+ textLabel.Parent = contentFrame
+
+ return frame
+end
+
+t.CreateImageTutorialPage = function(name, imageAsset, x, y, skipTutorialFunc)
+ local frame = nil
+ local contentFrame = nil
+
+ local imageLabel = Instance.new("ImageLabel")
+ imageLabel.BackgroundTransparency = 1
+ imageLabel.Image = imageAsset
+ imageLabel.Size = UDim2.new(0,x,0,y)
+ imageLabel.Position = UDim2.new(0.5,-x/2,0.5,-y/2)
+
+ local function handleResize(minSize, maxSize)
+ size = binaryShrink(minSize, maxSize,
+ function(size)
+ return size >= x and size >= y
+ end)
+ if size >= x and size >= y then
+ imageLabel.Size = UDim2.new(0,x, 0,y)
+ imageLabel.Position = UDim2.new(0.5,-x/2, 0.5, -y/2)
+ else
+ if x > y then
+ --X is limiter, so
+ imageLabel.Size = UDim2.new(1,0,y/x,0)
+ imageLabel.Position = UDim2.new(0,0, 0.5 - (y/x)/2, 0)
+ else
+ --Y is limiter
+ imageLabel.Size = UDim2.new(x/y,0,1, 0)
+ imageLabel.Position = UDim2.new(0.5-(x/y)/2, 0, 0, 0)
+ end
+ end
+ frame.Size = UDim2.new(0, size, 0, size)
+ frame.Position = UDim2.new(0.5, -size/2, 0.5, -size/2)
+ end
+
+ frame, contentFrame = CreateBasicTutorialPage(name, handleResize, skipTutorialFunc)
+ imageLabel.Parent = contentFrame
+
+ return frame
+end
+
+t.AddTutorialPage = function(tutorial, tutorialPage)
+ local transitionFrame = tutorial.TransitionFrame
+ local currentPageValue = tutorial.CurrentTutorialPage
+
+ if not tutorial.Buttons.Value then
+ tutorialPage.ContentFrame.Size = UDim2.new(1,0,1,-22)
+ tutorialPage.NextButton.Parent = nil
+ tutorialPage.PrevButton.Parent = nil
+ end
+
+ local children = tutorial.Pages:GetChildren()
+ if children and #children > 0 then
+ tutorialPage.Name = "TutorialPage" .. (#children+1)
+ local previousPage = children[#children]
+ if not previousPage:IsA("GuiObject") then
+ error("All elements under Pages must be GuiObjects")
+ end
+
+ if tutorial.Buttons.Value then
+ if previousPage.NextButton.Active then
+ error("NextButton already Active on previousPage, please only add pages with RbxGui.AddTutorialPage function")
+ end
+ previousPage.NextButton.MouseButton1Click:connect(
+ function()
+ TransitionTutorialPages(previousPage, tutorialPage, transitionFrame, currentPageValue)
+ end)
+ previousPage.NextButton.Active = true
+ previousPage.NextButton.Visible = true
+
+ if tutorialPage.PrevButton.Active then
+ error("PrevButton already Active on tutorialPage, please only add pages with RbxGui.AddTutorialPage function")
+ end
+ tutorialPage.PrevButton.MouseButton1Click:connect(
+ function()
+ TransitionTutorialPages(tutorialPage, previousPage, transitionFrame, currentPageValue)
+ end)
+ tutorialPage.PrevButton.Active = true
+ tutorialPage.PrevButton.Visible = true
+ end
+
+ tutorialPage.Parent = tutorial.Pages
+ else
+ --First child
+ tutorialPage.Name = "TutorialPage1"
+ tutorialPage.Parent = tutorial.Pages
+ end
+end
+
+t.Help =
+ function(funcNameOrFunc)
+ --input argument can be a string or a function. Should return a description (of arguments and expected side effects)
+ if funcNameOrFunc == "CreatePropertyDropDownMenu" or funcNameOrFunc == t.CreatePropertyDropDownMenu then
+ return "Function CreatePropertyDropDownMenu. " ..
+ "Arguments: (instance, propertyName, enumType). " ..
+ "Side effect: returns a container with a drop-down-box that is linked to the 'property' field of 'instance' which is of type 'enumType'"
+ end
+ if funcNameOrFunc == "CreateDropDownMenu" or funcNameOrFunc == t.CreateDropDownMenu then
+ return "Function CreateDropDownMenu. " ..
+ "Arguments: (items, onItemSelected). " ..
+ "Side effect: Returns 2 results, a container to the gui object and a 'updateSelection' function for external updating. The container is a drop-down-box created around a list of items"
+ end
+ if funcNameOrFunc == "CreateMessageDialog" or funcNameOrFunc == t.CreateMessageDialog then
+ return "Function CreateMessageDialog. " ..
+ "Arguments: (title, message, buttons). " ..
+ "Side effect: Returns a gui object of a message box with 'title' and 'message' as passed in. 'buttons' input is an array of Tables contains a 'Text' and 'Function' field for the text/callback of each button"
+ end
+ if funcNameOrFunc == "CreateStyledMessageDialog" or funcNameOrFunc == t.CreateStyledMessageDialog then
+ return "Function CreateStyledMessageDialog. " ..
+ "Arguments: (title, message, style, buttons). " ..
+ "Side effect: Returns a gui object of a message box with 'title' and 'message' as passed in. 'buttons' input is an array of Tables contains a 'Text' and 'Function' field for the text/callback of each button, 'style' is a string, either Error, Notify or Confirm"
+ end
+ if funcNameOrFunc == "GetFontHeight" or funcNameOrFunc == t.GetFontHeight then
+ return "Function GetFontHeight. " ..
+ "Arguments: (font, fontSize). " ..
+ "Side effect: returns the size in pixels of the given font + fontSize"
+ end
+ if funcNameOrFunc == "LayoutGuiObjects" or funcNameOrFunc == t.LayoutGuiObjects then
+
+ end
+ if funcNameOrFunc == "CreateScrollingFrame" or funcNameOrFunc == t.CreateScrollingFrame then
+ return "Function CreateScrollingFrame. " ..
+ "Arguments: (orderList, style) " ..
+ "Side effect: returns 4 objects, (scrollFrame, scrollUpButton, scrollDownButton, recalculateFunction). 'scrollFrame' can be filled with GuiObjects. It will lay them out and allow scrollUpButton/scrollDownButton to interact with them. Orderlist is optional (and specifies the order to layout the children. Without orderlist, it uses the children order. style is also optional, and allows for a 'grid' styling if style is passed 'grid' as a string. recalculateFunction can be called when a relayout is needed (when orderList changes)"
+ end
+ if funcNameOrFunc == "AutoTruncateTextObject" or funcNameOrFunc == t.AutoTruncateTextObject then
+ return "Function AutoTruncateTextObject. " ..
+ "Arguments: (textLabel) " ..
+ "Side effect: returns 2 objects, (textLabel, changeText). The 'textLabel' input is modified to automatically truncate text (with ellipsis), if it gets too small to fit. 'changeText' is a function that can be used to change the text, it takes 1 string as an argument"
+ end
+ if funcNameOrFunc == "CreateSlider" or funcNameOrFunc == t.CreateSlider then
+ return "Function CreateSlider. " ..
+ "Arguments: (steps, width, position) " ..
+ "Side effect: returns 2 objects, (sliderGui, sliderPosition). The 'steps' argument specifies how many different positions the slider can hold along the bar. 'width' specifies in pixels how wide the bar should be (modifiable afterwards if desired). 'position' argument should be a UDim2 for slider positioning. 'sliderPosition' is an IntValue whose current .Value specifies the specific step the slider is currently on."
+ end
+ end
+
+local NewPlayerListGui = Instance.new("ScreenGui",script.Parent)
+NewPlayerListGui.Name = "NewPlayerList"
+
+coroutine.resume(coroutine.create(function()
+NewPlayerListGui.Parent = game.CoreGui
+if game.CoreGui:FindFirstChild("NewPlayerList") then
+game.CoreGui["NewPlayerList"].Parent = nil
+end end))
+
+local localTesting = true
+
+local friendWord = "Friend"
+local friendWordLowercase = "friend"
+
+local testFriendingPlaces = {}
+testFriendingPlaces[41324860] = true
+local enableFriendingGlobally = false
+
+local testPlayerListPlaces = {}
+testPlayerListPlaces[41324860] = true
+testPlayerListPlaces[10042455] = true
+local enablePlayerListGlobally = false
+
+local bigEasingStyle = Enum.EasingStyle.Back
+local smallEasingStyle = Enum.EasingStyle.Quart
+local lightBackground = true
+
+local function waitForChild(instance, name)
+ while not instance:FindFirstChild(name) do
+ instance.ChildAdded:wait()
+ end
+end
+
+local function waitForProperty(instance, prop)
+ while not instance[prop] do
+ instance.Changed:wait()
+ end
+end
+
+local function Color3I(r,g,b)
+ return Color3.new(r/255,g/255,b/255)
+end
+
+function robloxLock(instance)
+end
+
+function ArrayRemove(t, obj)
+ for i, obj2 in ipairs(t) do
+ if obj == obj2 then
+ table.remove(t, i)
+ return true
+ end
+ end
+ return false
+end
+
+local function getPlayers()
+ local result = {}
+ local players = game:GetService("Players"):GetChildren()
+ if players then
+ for i, player in ipairs(players) do
+ if player:IsA("Player") then
+ table.insert(result, player)
+ end
+ end
+ end
+ return result
+end
+
+local brickColorTable = {}
+for i = 0, 63 do
+ brickColorTable[BrickColor.palette(i).Name] = BrickColor.palette(i).Color
+end
+
+local function remapColor(i, j)
+ brickColorTable[BrickColor.palette(i).Name] = BrickColor.palette(j).Color
+end
+
+remapColor(13, 12)
+remapColor(14, 12)
+remapColor(15, 12)
+remapColor(61, 29)
+remapColor(63, 62)
+remapColor(56, 50)
+remapColor(45, 53)
+remapColor(51, 20)
+remapColor(4, 20)
+remapColor(59, 35)
+remapColor(60, 29)
+
+local function getColor(brickColor)
+ if brickColorTable[brickColor.Name] then
+ return brickColorTable[brickColor.Name]
+ else
+ return brickColor.Color;
+ end
+end
+
+
+
+local function getTeams()
+ local result = {}
+ local teams = game:GetService("Teams"):GetChildren()
+ for i, team in ipairs(teams) do
+ if team:IsA("Team") then
+ table.insert(result, team)
+ end
+ end
+ return result
+end
+
+local supportFriends = false
+local currentBoardType = "PlayerList"
+local currentStatCount = 0
+
+local createBoardsFunction = nil
+
+
+local playerTable = {}
+local teamTable = {}
+local teamColorTable = {}
+
+local removePlayerFunction = nil
+local recreatePlayerFunction = nil
+local addPlayerFunction = function(player)
+ if recreatePlayerFunction then
+ recreatePlayerFunction(player)
+ end
+end
+local sortPlayerListsFunction = nil
+
+local minimizedState = nil
+local bigWindowImposter = nil
+local smallWindowPosition = UDim2.new(0, -20, 0,5)--UDim2.new(0, 0, 0,0)
+local smallWindowSize = UDim2.new(1,0,1,0)--UDim2.new(1,5,1,0)
+local bigWindowSize = UDim2.new(0.6,0,0.6,0)
+local bigWindowPosition = UDim2.new(.2, 0, .2,0)
+
+local debounceTeamsChanged = false
+
+local currentWindowState = "Small"
+local previousWindowState = nil
+local transitionWindowsFunction = nil
+
+local container = nil
+local topRightTrayContainer = nil
+
+local playerContextMenu = nil
+local contextMenuElements = {}
+
+local function addContextMenuLabel(getText1, getText2, isVisible)
+ local t = {}
+ t.Type = "Label"
+ t.GetText1 = getText1
+ t.GetText2 = getText2
+ t.IsVisible = isVisible
+ table.insert(contextMenuElements, t)
+end
+local function addContextMenuButton(text, isVisible, isActive, doIt)
+ local t = {}
+ t.Text = text
+ t.Type = "Button"
+ t.IsVisible = isVisible
+ t.IsActive = isActive
+ t.DoIt = doIt
+ table.insert(contextMenuElements, t)
+end
+
+local function getFriendStatus(player)
+ if player == game.Players.LocalPlayer then
+ return Enum.FriendStatus.NotFriend
+ else
+ return game.Players.LocalPlayer:GetFriendStatus(player)
+ end
+end
+--Populate the ContextMenus
+addContextMenuLabel(
+ --GetText1
+ function(player)
+ return "Loading..."
+ end,
+ --GetText2
+ nil,
+ --IsVisible
+ function(player)
+ return getFriendStatus(player) == Enum.FriendStatus.Unknown
+ end)
+
+--[[
+addContextMenuLabel(
+ --GetText1
+ function(player)
+ return player.Name
+ end,
+ --GetText2
+ nil,
+ --IsVisible
+ function(player)
+ return true
+ end)]]--
+addContextMenuButton("Send " .. friendWord .. " Request",
+ --IsVisible
+ function(player)
+ return getFriendStatus(player) == Enum.FriendStatus.NotFriend
+ end,
+ --IsActive
+ function(player)
+ return true
+ end,
+ --DoIt
+ function(player)
+ return game.Players.LocalPlayer:RequestFriendship(player)
+ end
+)
+addContextMenuButton("Un" .. friendWordLowercase,
+ --IsVisible
+ function(player)
+ return getFriendStatus(player) == Enum.FriendStatus.Friend
+ end,
+ --IsActive
+ function(player)
+ return true
+ end,
+ --DoIt
+ function(player)
+ return game.Players.LocalPlayer:RevokeFriendship(player)
+ end
+)
+addContextMenuButton("Accept " .. friendWord .. " Request",
+ --IsVisible
+ function(player)
+ return getFriendStatus(player) == Enum.FriendStatus.FriendRequestReceived
+ end,
+ --IsActive
+ function(player)
+ return true
+ end,
+ --DoIt
+ function(player)
+ return game.Players.LocalPlayer:RequestFriendship(player)
+ end
+)
+
+addContextMenuButton("Deny " .. friendWord .. " Request",
+ --IsVisible
+ function(player)
+ return getFriendStatus(player) == Enum.FriendStatus.FriendRequestReceived
+ end,
+ --IsActive
+ function(player)
+ return true
+ end,
+ --DoIt
+ function(player)
+ return game.Players.LocalPlayer:RevokeFriendship(player)
+ end
+)
+
+addContextMenuButton("Cancel " .. friendWord .. " Request",
+ --IsVisible
+ function(player)
+ return getFriendStatus(player) == Enum.FriendStatus.FriendRequestSent
+ end,
+ --IsActive
+ function(player)
+ return true
+ end,
+ --DoIt
+ function(player)
+ return game.Players.LocalPlayer:RevokeFriendship(player)
+ end
+)
+
+
+local function getStatColumns(players)
+ for i, player in ipairs(players) do
+ local leaderstats = player:FindFirstChild("leaderstats")
+ if leaderstats then
+ --print(player, " is King of the List")
+ local stats = {}
+ local children = leaderstats:GetChildren()
+ if children then
+ for i, stat in ipairs(children) do
+ if stat:IsA("IntValue") then
+ table.insert(stats, stat.Name)
+ else
+ --TODO: This should check for IntValue only but current ScoreHud does not
+ table.insert(stats, stat.Name)
+ end
+ end
+ end
+ return stats
+ end
+ end
+ return nil
+end
+
+local function determineBoardType()
+ local players = getPlayers()
+
+ local foundLeaderstats = false
+ local numStats = 0
+ local foundTeam = false
+
+ local stats = getStatColumns(players)
+ if stats then
+ foundLeaderstats = true
+ numStats = #stats
+ end
+
+ for i, player in ipairs(players) do
+ if not foundTeam then
+ if not player.Neutral then
+ foundTeam = true
+ break
+ end
+ end
+ end
+
+ if foundLeaderstats and foundTeam then
+ return "TeamScore", numStats
+ elseif foundLeaderstats then
+ return "PlayerScore", numStats
+ elseif foundTeam then
+ return "TeamList", numStats
+ else
+ return "PlayerList", numStats
+ end
+end
+
+local function toggleBigWindow()
+ if container == nil then
+ return
+ end
+
+ if currentWindowState == "Big" then
+ --Hide it
+ if previousWindowState == nil or previousWindowState == "Big" or previousWindowState == "None" then
+ transitionWindowsFunction("None")
+ else
+ transitionWindowsFunction("Small")
+ end
+ else
+ previousWindowState = currentWindowState
+ transitionWindowsFunction("Big")
+ end
+end
+local previousBigPlayerList = nil
+local function rebuildBoard(owner, boardType, numStats)
+ print("RebuildBoard")
+ if topRightTrayContainer == nil then
+ topRightTrayContainer = owner:FindFirstChild("PlayerListTopRightFrame")
+ if topRightTrayContainer == nil then
+ topRightTrayContainer = Instance.new("Frame")
+ topRightTrayContainer.Name = "PlayerListTopRightFrame"
+ topRightTrayContainer.BackgroundTransparency = 1
+ topRightTrayContainer.Size = UDim2.new(0.2, 16, 0.42, 16)--UDim2.new(0.2, 0, 0.42, 0)
+ topRightTrayContainer.Position = UDim2.new(0.8, 0, 0, 0)--UDim2.new(0.8, 0, 0, 0)
+ topRightTrayContainer.Parent = container
+ end
+ end
+ if minimizedState == nil then
+ minimizedState = Instance.new("Frame")
+ minimizedState.Name = "MinimizedPlayerlist"
+ minimizedState.BackgroundTransparency = 1
+ minimizedState.Position = UDim2.new(1, -166, 0,0) --UDim2.new(1, -153, 0,0)
+ minimizedState.Size = UDim2.new(0, 151, 0, 30)
+
+ --[[local playerListButton = Instance.new("ImageButton")
+ playerListButton.Name = "GoBigButton"
+ playerListButton.Image = "rbxasset://textures/ui/playerlist_hidden_maximize.png"
+ playerListButton.BackgroundTransparency = 1
+ playerListButton.Size = UDim2.new(0.0, 116, 0, 30)
+ playerListButton.Position = UDim2.new(0, 35, 0, 0)
+ playerListButton.MouseButton1Click:connect(
+ function()
+ toggleBigWindow()
+ end)
+ playerListButton.Parent = minimizedState]]
+
+ playerListButton = Instance.new("ImageButton")
+ playerListButton.Name = "GoSmallButton"
+ playerListButton.Image = "rbxasset://textures/ui/playerlist_hidden_small.png"
+ playerListButton.BackgroundTransparency = 1
+ playerListButton.Size = UDim2.new(0.0, 35, 0, 30)
+ playerListButton.Position = UDim2.new(1, -35, 0, 0)
+ playerListButton.MouseButton1Click:connect(
+ function()
+ transitionWindowsFunction("Small")
+ end)
+ playerListButton.Parent = minimizedState
+
+ minimizedState.Visible = false
+ robloxLock(minimizedState)
+ minimizedState.Parent = topRightTrayContainer
+ end
+ if bigWindowImposter == nil then
+ bigWindowImposter = owner:FindFirstChild("BigPlayerListWindowImposter")
+ if bigWindowImposter == nil then
+ bigWindowImposter = Instance.new("Frame")
+ bigWindowImposter.Name = "BigPlayerListWindowImposter"
+ bigWindowImposter.Visible = false
+ --bigWindowImposter.Style = Enum.FrameStyle.RobloxRound
+ bigWindowImposter.BackgroundColor3 = Color3.new(0,0,0)
+ bigWindowImposter.BackgroundTransparency = 0.7
+ bigWindowImposter.BorderSizePixel = 0
+ --bigWindowImposter.Size = UDim2.new(0.4, 0, 0.4, 0)
+ bigWindowImposter.Size = UDim2.new(0.4, 7, 0.4, 7)
+ bigWindowImposter.Position = UDim2.new(0.3, 0, 0.3, 0)
+ robloxLock(bigWindowImposter)
+ bigWindowImposter.Parent = container
+ end
+ end
+ if container == nil or container ~= owner then
+ container = owner
+
+ topRightTrayContainer.Parent = container
+ bigWindowImposter.Parent = container
+ end
+
+ local smallVisible = true
+ local bigVisible = false
+ if container then
+ if topRightTrayContainer then
+ --Delete the old boards
+ if topRightTrayContainer:FindFirstChild("SmallPlayerlist") then
+ smallVisible = topRightTrayContainer.SmallPlayerlist.Visible
+ topRightTrayContainer.SmallPlayerlist.Parent = nil
+ print("Removed small playerlist")
+ else
+ print("Did not remove small playerlist")
+ end
+ end
+ if container:FindFirstChild("BigPlayerlist") then
+ bigVisible = container.BigPlayerlist.Visible or (previousBigPlayerList ~= nil)
+ container.BigPlayerlist.Parent = nil
+ if previousBigPlayerList ~= nil then
+ pcall(function() game.GuiService:RemoveCenterDialog(previousBigPlayerList) end)
+ previousBigPlayerList = nil
+ end
+ end
+ end
+
+ local smallBoard, bigBoard = createBoardsFunction(boardType, numStats)
+ if smallBoard then
+ smallBoard.Visible = smallVisible
+ smallBoard.Parent = topRightTrayContainer
+ end
+ if bigBoard then
+ if bigVisible then
+ previousBigPlayerList = bigBoard
+ local centerDialogSupported, msg = pcall(function() game.GuiService:AddCenterDialog(previousBigPlayerList, Enum.CenterDialogType.PlayerInitiatedDialog,
+ function()
+ previousBigPlayerList.Visible = true
+ end)
+ end)
+ bigBoard.Visible = bigVisible
+ else
+ bigBoard.Visible = false
+ end
+ bigBoard.Parent = container
+ end
+ return container
+end
+
+
+local function showBigPlayerWindow()
+ if container:FindFirstChild("BigPlayerlist") then
+ if container.BigPlayerlist.Visible then
+ return
+ end
+ end
+
+ bigWindowImposter.Visible = true
+ bigWindowImposter:TweenSizeAndPosition(bigWindowSize, bigWindowPosition, Enum.EasingDirection.Out, bigEasingStyle, 0.3, true,
+ function(state)
+ if state == Enum.TweenStatus.Completed then
+ bigWindowImposter.Visible = false
+ if container:FindFirstChild("BigPlayerlist") then
+ container.BigPlayerlist.Visible = true
+ end
+ end
+ end)
+end
+
+local function hideBigPlayerWindow(completed)
+ if playerContextMenu then
+ playerContextMenu.Visible = false
+ end
+
+ if container:FindFirstChild("BigPlayerlist") then
+ if container.BigPlayerlist.Visible == false and bigWindowImposter.Visible == false then
+ if completed then
+ completed()
+ end
+ --Already completely hidden
+ return
+ end
+ container.BigPlayerlist.Visible = false
+ end
+
+ local completedFunction = completed
+ bigWindowImposter.Visible = true
+ bigWindowImposter:TweenSizeAndPosition(UDim2.new(0.4, 0, 0.4, 0), UDim2.new(0.3, 0, 0.3, 0), Enum.EasingDirection.In, Enum.EasingStyle.Quart, 0.15, true,
+ function(state)
+ if state == Enum.TweenStatus.Completed then
+ bigWindowImposter.Visible = false
+ if completedFunction then
+ completedFunction()
+ end
+ end
+ end)
+end
+local function hideSmallPlayerWindow(completed)
+ if playerContextMenu then
+ playerContextMenu.Visible = false
+ end
+ if topRightTrayContainer:FindFirstChild("SmallPlayerlist") then
+ local completedFunction = completed
+ if topRightTrayContainer.SmallPlayerlist.Visible then
+ topRightTrayContainer.SmallPlayerlist:TweenPosition(UDim2.new(1,0,smallWindowPosition.Y.Scale, smallWindowPosition.Y.Offset), Enum.EasingDirection.Out, smallEasingStyle, 0.3, true,
+ function(state)
+ --print(state)
+ if state == Enum.TweenStatus.Completed then
+ if topRightTrayContainer:FindFirstChild("SmallPlayerlist") then
+ topRightTrayContainer.SmallPlayerlist.Visible = false
+ end
+ if completedFunction then
+ completedFunction()
+ end
+ end
+ end)
+ return
+ end
+ end
+ if completed then
+ completed()
+ end
+end
+
+
+transitionWindowsFunction = function(desiredState)
+ if desiredState == "Big" then
+ minimizedState.Visible = false
+ hideSmallPlayerWindow()
+
+ if previousBigPlayerList ~= nil then
+ if previousBigPlayerList ~= container:FindFirstChild("BigPlayerlist") then
+ pcall(function() game.GuiService:RemoveCenterDialog(previousBigPlayerList) end)
+ previousBigPlayerList = nil
+ previousBigPlayerList = container:FindFirstChild("BigPlayerlist")
+ end
+ else
+ previousBigPlayerList = container:FindFirstChild("BigPlayerlist")
+ end
+
+ if previousBigPlayerList then
+ local firstShow = false
+ local centerDialogSupported, msg = pcall(function() game.GuiService:AddCenterDialog(previousBigPlayerList, Enum.CenterDialogType.PlayerInitiatedDialog,
+ function()
+ if not firstShow then
+ showBigPlayerWindow()
+ firstShow = true
+ else
+ previousBigPlayerList.Visible = true
+ end
+ end)
+ end)
+ if centerDialogSupported == false then
+ print("Exception", msg)
+ showBigPlayerWindow()
+ end
+ else
+ showBigPlayerWindow()
+ end
+ currentWindowState = "Big"
+ elseif desiredState == "Small" then
+ minimizedState.Visible = false
+ if previousBigPlayerList ~= nil then
+ pcall(function() game.GuiService:RemoveCenterDialog(previousBigPlayerList) end)
+ previousBigPlayerList = nil
+ end
+
+ hideBigPlayerWindow()
+ if topRightTrayContainer:FindFirstChild("SmallPlayerlist") then
+ if not topRightTrayContainer.SmallPlayerlist.Visible or topRightTrayContainer.SmallPlayerlist.Position ~= smallWindowPosition then
+ topRightTrayContainer.SmallPlayerlist.Visible = true
+ topRightTrayContainer.SmallPlayerlist:TweenPosition(smallWindowPosition, Enum.EasingDirection.Out, smallEasingStyle, 0.3, true)
+ end
+ end
+ currentWindowState = "Small"
+ elseif desiredState == "None" then
+ if previousBigPlayerList ~= nil then
+ pcall(function() game.GuiService:RemoveCenterDialog(previousBigPlayerList) end)
+ previousBigPlayerList = nil
+ end
+
+ local smallDone = false
+ local bigDone = false
+ hideSmallPlayerWindow(
+ function()
+ smallDone = true
+ if bigDone and smallDone then
+ minimizedState.Visible = true
+ end
+ end)
+ hideBigPlayerWindow(
+ function()
+ bigDone = true
+ if bigDone and smallDone then
+ minimizedState.Visible = true
+ end
+ end)
+ currentWindowState = "None"
+ end
+end
+
+local function getStatValuesForPlayer(player)
+ local leaderstats = player:FindFirstChild("leaderstats")
+ if leaderstats then
+ local children = leaderstats:GetChildren()
+ if children then
+ local result = {}
+ --Just go based on position
+ for i, stat in ipairs(children) do
+ if stat:IsA("IntValue") then
+ table.insert(result, stat)
+ else
+ table.insert(result, 0)
+ end
+ end
+
+ return result, leaderstats
+ end
+ end
+ return nil
+end
+
+--ChildAdded on Player (if it's name is "leaderstats")
+
+if UserSettings and LoadLibrary then
+
+ RbxGui,msg = t
+ print("Libraries loaded")
+
+ local function createTeamName(name, color)
+ local fontHeight = 20 --RbxGui.GetFontHeight(Enum.Font.ArialBold, Enum.FontSize.Size18)
+ local frame = Instance.new("Frame")
+ frame.Name = "Team-" .. name
+ frame.BorderSizePixel = 0
+ frame.BackgroundTransparency = 0.5
+ frame.BackgroundColor3 = Color3.new(1,1,1)
+ frame.Size = UDim2.new(1, 0, 0, fontHeight)
+ frame.Position = UDim2.new(0,0,0,0)
+
+ local label = Instance.new("TextLabel")
+ label.Name = "NameLabel"
+ label.Text = " " .. name
+ label.Font = Enum.Font.ArialBold
+ label.FontSize = Enum.FontSize.Size18
+ label.Position = UDim2.new(0,0,0,0)
+ label.Size = UDim2.new(1,0,1,0)
+ label.TextColor3 = Color3.new(1,1,1)
+ label.BackgroundTransparency = 0.5
+ label.BackgroundColor3 = getColor(color)
+ label.BorderSizePixel = 0
+ label.TextXAlignment = Enum.TextXAlignment.Left
+ label = RbxGui.AutoTruncateTextObject(label)
+ label.Parent = frame
+
+ return frame
+ end
+
+ local function getFriendStatusIcon(friendStatus)
+ if friendStatus == Enum.FriendStatus.Unknown or friendStatus == Enum.FriendStatus.NotFriend then
+ return nil
+ elseif friendStatus == Enum.FriendStatus.Friend then
+ return "rbxasset://textures/ui/PlayerlistFriendIcon.png"
+ elseif friendStatus == Enum.FriendStatus.FriendRequestSent then
+ return "rbxasset://textures/ui/PlayerlistFriendRequestSentIcon.png"
+ elseif friendStatus == Enum.FriendStatus.FriendRequestReceived then
+ return "rbxasset://textures/ui/PlayerlistFriendRequestReceivedIcon.png"
+ else
+ error("Unknown FriendStatus: " .. friendStatus)
+ end
+ end
+
+ local function getMembershipTypeIcon(membershipType)
+ --TODO: replace with proper icons
+ if membershipType == Enum.MembershipType.None then
+ return ""
+ elseif membershipType == Enum.MembershipType.BuildersClub then
+ return "rbxasset://textures/ui/TinyBcIcon.png"
+ elseif membershipType == Enum.MembershipType.TurboBuildersClub then
+ return "rbxasset://textures/ui/TinyTbcIcon.png"
+ elseif membershipType == Enum.MembershipType.OutrageousBuildersClub then
+ return "rbxasset://textures/ui/TinyObcIcon.png"
+ else
+ error("Uknown membershipType" .. membershipType)
+ end
+ end
+
+
+ local function updatePlayerFriendStatus(nameObject, friendStatus)
+ local fontHeight = 20 --RbxGui.GetFontHeight(Enum.Font.ArialBold, Enum.FontSize.Size14)
+
+ local friendIconImage = getFriendStatusIcon(friendStatus)
+ nameObject.MembershipTypeLabel.FriendStatusLabel.Visible = (friendIconImage ~= nil)
+
+ if friendIconImage ~= nil then
+ --Show friend icon
+ nameObject.MembershipTypeLabel.FriendStatusLabel.Image = friendIconImage
+ nameObject.NameLabel.Position =UDim2.new(0,2*fontHeight,0,1)
+ nameObject.NameLabel.Size = UDim2.new(1,-2*fontHeight,1,-2)
+ else
+ --Hide the friend icon
+ nameObject.NameLabel.Position = UDim2.new(0,fontHeight+1,0,1)
+ nameObject.NameLabel.Size = UDim2.new(1,-(fontHeight+1),1,-2)
+ end
+ end
+ local function updatePlayerName(nameObject, membershipStatus, teamColor)
+ local fontHeight = 20 --RbxGui.GetFontHeight(Enum.Font.ArialBold, Enum.FontSize.Size14)
+
+ nameObject.Size = UDim2.new(1,0,0,fontHeight)
+ nameObject.MembershipTypeLabel.Image = getMembershipTypeIcon(membershipStatus)
+ end
+
+
+ local function updatePlayerNameColor(player, teamColor)
+ local function updatePlayerNameColorHelper(nameObject)
+ if teamColor ~= nil then
+ nameObject.NameLabel.TextColor3 = getColor(teamColor)
+ nameObject.NameLabel.FullNameLabel.TextColor3 = getColor(teamColor)
+ else
+ nameObject.NameLabel.TextColor3 = Color3.new(1,1,1)
+ nameObject.NameLabel.FullNameLabel.TextColor3 = Color3.new(1,1,1)
+ end
+ end
+
+ updatePlayerNameColorHelper(playerTable[player].NameObjectSmall)
+ updatePlayerNameColorHelper(playerTable[player].NameObjectBig)
+ end
+
+
+ local function createPlayerName(name, membershipStatus, teamColor, friendStatus)
+ local frame = Instance.new("Frame")
+ frame.Name = "Player_" .. name
+ if lightBackground then
+ frame.BackgroundColor3 = Color3.new(1,1,1)
+ else
+ frame.BackgroundColor3 = Color3.new(1,1,1)
+ end
+ frame.BackgroundTransparency = 0.5
+ frame.BorderSizePixel = 0
+
+ local membershipStatusLabel = Instance.new("ImageLabel")
+ membershipStatusLabel.Name = "MembershipTypeLabel"
+ membershipStatusLabel.BackgroundTransparency = 1
+ membershipStatusLabel.Size = UDim2.new(1,0,1,0)
+ membershipStatusLabel.Position = UDim2.new(0,0,0,0)
+ membershipStatusLabel.SizeConstraint = Enum.SizeConstraint.RelativeYY
+ membershipStatusLabel.Parent = frame
+
+ local friendStatusLabel = Instance.new("ImageLabel")
+ friendStatusLabel.Name = "FriendStatusLabel"
+ friendStatusLabel.Visible = false
+ friendStatusLabel.BackgroundTransparency = 1
+ friendStatusLabel.Size = UDim2.new(1,0,1,0)
+ friendStatusLabel.Position = UDim2.new(1,0,0,0)
+ friendStatusLabel.Parent = membershipStatusLabel
+
+ local changeNameFunction
+ local nameLabel = Instance.new("TextLabel")
+ nameLabel.Name = "NameLabel"
+ nameLabel.Text = name
+ nameLabel.Font = Enum.Font.ArialBold
+ nameLabel.FontSize = Enum.FontSize.Size14
+ nameLabel.TextColor3 = Color3.new(1,1,1)
+ nameLabel.BackgroundTransparency = 1
+ nameLabel.BackgroundColor3 = Color3.new(0,0,0)
+ nameLabel.TextXAlignment = Enum.TextXAlignment.Left
+ nameLabel, changeNameFunction = RbxGui.AutoTruncateTextObject(nameLabel)
+ nameLabel.Parent = frame
+
+ updatePlayerName(frame, membershipStatus, teamColor)
+ if supportFriends then
+ updatePlayerFriendStatus(frame, friendStatus)
+ else
+ updatePlayerFriendStatus(frame, Enum.FriendStatus.NotFriend)
+ end
+ return frame, changeNameFunction
+ end
+
+ local function createStatColumn(i, numColumns, isTeam, color3, isHeader)
+ local textLabel = Instance.new("TextLabel")
+ textLabel.Name = "Stat" .. i
+ textLabel.TextColor3 = Color3.new(1,1,1)
+ textLabel.TextXAlignment = Enum.TextXAlignment.Right
+ textLabel.TextYAlignment = Enum.TextYAlignment.Center
+ textLabel.FontSize = Enum.FontSize.Size14
+ if isHeader then
+ textLabel.FontSize = Enum.FontSize.Size18
+ else
+ textLabel.FontSize = Enum.FontSize.Size14
+ end
+ if isHeader or isTeam then
+ textLabel.Font = Enum.Font.ArialBold
+ else
+ textLabel.Font = Enum.Font.Arial
+ end
+
+ if isTeam then
+ textLabel.BackgroundColor3 = color3
+ textLabel.Text = 0
+ else
+ textLabel.BackgroundColor3 = Color3.new(0,0,0)
+ textLabel.Text = ""
+ end
+ textLabel.BackgroundTransparency = 1
+ if i == numColumns then
+ textLabel.Size = UDim2.new(1/numColumns, -6, 1, 0)
+ else
+ textLabel.Size = UDim2.new(1/numColumns, -4, 1, 0)
+ end
+
+ textLabel.Position = UDim2.new((i-1) * (1/numColumns), 0, 0, 0)
+ return RbxGui.AutoTruncateTextObject(textLabel)
+ end
+
+ local function createStatHeaders(stats, numColumns, isBig)
+ local frame = Instance.new("Frame")
+ frame.Name = "Headers"
+ frame.BorderSizePixel = 0
+ frame.BackgroundColor3 = Color3.new(0,0,0)
+ frame.BackgroundTransparency = 1
+
+ local nameSize
+ if isBig then
+ nameSize = 0.5
+ elseif numColumns == 1 then
+ nameSize = 0.7
+ elseif numColumns == 2 then
+ nameSize = 0.6
+ else
+ nameSize = 0.45
+ end
+ frame.Size = UDim2.new(1-nameSize, 0, 1,0)
+ if isBig then
+ frame.Position = UDim2.new(nameSize,-25, 0,0)
+ else
+ frame.Position = UDim2.new(nameSize,0, 0,0)
+ end
+
+ local i = 1
+ while i <= numColumns do
+ local headerColumn, changeText = createStatColumn(i, numColumns, false, nil, true)
+ changeText(stats[i])
+ headerColumn.Parent = frame
+ i = i + 1
+ end
+ return frame, textChangers
+ end
+
+ local function createStatColumns(nameObject, numColumns, isTeam, isBig)
+ local frame = Instance.new("Frame")
+ frame.Name = nameObject.Name .. "_WithStats"
+ frame.BorderSizePixel = 0
+ frame.BackgroundColor3 = nameObject.BackgroundColor3
+ frame.BackgroundTransparency = nameObject.BackgroundTransparency
+ frame.Size = nameObject.Size
+ frame.Position = nameObject.Position
+
+ nameObject.BackgroundTransparency = 1
+
+ if numColumns == 0 then
+ nameObject.Size = UDim2.new(1,0,1,0)
+ nameObject.Position = UDim2.new(0,0,0,0)
+ nameObject.Parent = frame
+ return frame
+ end
+
+ local statFrame = Instance.new("Frame")
+ statFrame.Name = "Stats"
+ if isTeam then
+ statFrame.BorderSizePixel = 0
+ statFrame.BackgroundColor3 = nameObject.NameLabel.BackgroundColor3
+ statFrame.BackgroundTransparency = nameObject.NameLabel.BackgroundTransparency
+ else
+ statFrame.BackgroundTransparency = 1
+ end
+
+ local nameSize
+ if isBig then
+ nameSize = 0.5
+ elseif numColumns == 1 then
+ nameSize = 0.7
+ elseif numColumns == 2 then
+ nameSize = 0.6
+ else
+ nameSize = 0.45
+ end
+ nameObject.Size = UDim2.new(nameSize, 0, 1, 0)
+ nameObject.Position = UDim2.new(0, 0, 0, 0)
+ statFrame.Size = UDim2.new(1-nameSize,0, 1,0)
+ statFrame.Position = UDim2.new(nameSize,0, 0,0)
+
+ nameObject.Parent = frame
+ statFrame.Parent = frame
+
+ local textChangers = {}
+ local i = 1
+ while i <= numColumns do
+ local statColumn, changeText = createStatColumn(i, numColumns, isTeam, statFrame.BackgroundColor3)
+ statColumn.Parent = statFrame
+ table.insert(textChangers, changeText)
+
+ i = i + 1
+ end
+
+ return frame, statFrame, textChangers
+ end
+
+ local function createAlternatingRows(objects)
+ for i, line in ipairs(objects) do
+ if i % 2 == 0 then
+ line.BackgroundTransparency = 1
+ else
+ line.BackgroundTransparency = 0.95
+ end
+ end
+ end
+ local removeFromTeam = nil
+
+ local function clearTableEntry(obj, tableInfo)
+ if tableInfo.MainObjectSmall then
+ tableInfo.MainObjectSmall.Parent = nil
+ tableInfo.MainObjectSmall = nil
+ end
+ if tableInfo.MainObjectBig then
+ tableInfo.MainObjectBig.Parent = nil
+ tableInfo.MainObjectBig = nil
+ end
+ if tableInfo.Connections then
+ for i, connection in ipairs(tableInfo.Connections) do
+ connection:disconnect()
+ end
+ tableInfo.Connections = nil
+ end
+ if tableInfo.LeaderStatConnections then
+ for i, connection in ipairs(tableInfo.LeaderStatConnections) do
+ connection:disconnect()
+ end
+ tableInfo.LeaderStatConnections = nil
+ end
+ if tableInfo.CurrentTeam then
+ removeFromTeam(obj)
+ tableInfo.CurrentTeam = nil
+ end
+ if tableInfo.Players then
+ for i, player in ipairs(tableInfo.Players) do
+ playerTable[player].CurrentTeam = nil
+ end
+ tableInfo.Players = {}
+ end
+ if tableInfo.StatValues then
+ tableInfo.StatValues = nil
+ end
+ end
+
+ local function resetPlayerTable()
+ for player, info in pairs(playerTable) do
+ clearTableEntry(player, info)
+ playerTable[player] = nil
+ end
+ playerTable = {}
+ end
+
+ local function resetTeamTable()
+ for team, info in pairs(teamTable) do
+ clearTableEntry(team, info)
+ teamTable[team] = nil
+ end
+ teamTable = {}
+ teamColorTable = {}
+ end
+
+ local function getBoardTypeInfo()
+ local isTeam = (currentBoardType == "TeamScore" or currentBoardType == "TeamList")
+ local isScore = (currentBoardType == "TeamScore" or currentBoardType == "PlayerScore")
+ return isTeam, isScore
+ end
+
+
+ local function recomputeTeamScore(team, column)
+ if not team or team == "Neutral" then
+ return
+ end
+
+ local function recomputeScoreHelper(statChangers)
+ if statChangers and column <= #statChangers then
+ local sum = 0
+ for i, p in ipairs(teamTable[team].Players) do
+ if playerTable[p].StatValues and column <= #playerTable[p].StatValues then
+ sum = sum + playerTable[p].StatValues[column].Value
+ end
+ end
+ statChangers[column](sum)
+ end
+ end
+
+ recomputeScoreHelper(teamTable[team].StatChangersSmall)
+ recomputeScoreHelper(teamTable[team].StatChangersBig)
+ end
+ local function recomputeCompleteTeamScore(team)
+ local col = 1
+ while col <= currentStatCount do
+ recomputeTeamScore(team, col)
+ col = col + 1
+ end
+ end
+ removeFromTeam = function(player)
+ if playerTable[player].CurrentTeam ~= nil then
+ ArrayRemove(teamTable[playerTable[player].CurrentTeam].Players, player)
+ recomputeCompleteTeamScore(playerTable[player].CurrentTeam)
+ playerTable[player].CurrentTeam = nil
+ end
+ end
+
+ local function assignToTeam(player)
+ local isTeam, isScore = getBoardTypeInfo()
+
+ if isTeam then
+ local newTeam = nil
+
+ if player.Neutral or teamColorTable[player.TeamColor.Name] == nil then
+ newTeam = "Neutral"
+ else
+ newTeam = teamColorTable[player.TeamColor.Name]
+ end
+
+ if playerTable[player].CurrentTeam == newTeam then
+ return
+ end
+
+ removeFromTeam(player)
+
+ playerTable[player].CurrentTeam = newTeam
+ table.insert(teamTable[newTeam].Players, player)
+
+ if newTeam == "Neutral" then
+ updatePlayerNameColor(player, nil)
+ else
+ updatePlayerNameColor(player, player.TeamColor)
+ end
+
+ recomputeCompleteTeamScore(newTeam)
+
+ --Relayout
+ if sortPlayerListsFunction then
+ sortPlayerListsFunction()
+ end
+ end
+ end
+
+ local function buildTeamObject(team, numStatColumns, suffix)
+ local isTeam, isScore = getBoardTypeInfo()
+ local teamObject = createTeamName(team.Name, team.TeamColor)
+ if not teamTable[team] then
+ teamTable[team] = {}
+ end
+ teamTable[team]["NameObject" .. suffix] = teamObject
+ if isScore then
+ local statObject
+ local textChangers
+ teamObject, statObject, textChangers = createStatColumns(teamObject, numStatColumns, true, suffix == "Big")
+ teamTable[team]["StatObject" .. suffix] = statObject
+ teamTable[team]["StatChangers" .. suffix] = textChangers
+ end
+ teamTable[team]["MainObject" .. suffix] = teamObject
+ if not teamTable[team].Players then
+ teamTable[team].Players = {}
+ end
+ return teamObject
+ end
+
+ local currentContextMenuPlayer = nil
+ local function updatePlayerContextMenu(player)
+ currentContextMenuPlayer = player
+ local elementHeight = 20
+ local function highlight(button)
+ button.TextColor3 = Color3.new(0,0,0)
+ button.BackgroundColor3 = Color3.new(0.8,0.8,0.8)
+ end
+ local function clearHighlight(button)
+ button.TextColor3 = Color3.new(1,1,1)
+ button.BackgroundColor3 = Color3.new(0,0,0)
+ end
+ if playerContextMenu == nil then
+ playerContextMenu = Instance.new("Frame")
+ playerContextMenu.Name = "PlayerListContextMenu"
+ playerContextMenu.BackgroundTransparency = 1
+ playerContextMenu.Visible = false
+
+ local playerContextMenuButton = Instance.new("TextButton")
+ playerContextMenuButton.Name = "PlayerListContextMenuButton"
+ playerContextMenuButton.Text = ""
+ playerContextMenuButton.Style = Enum.ButtonStyle.RobloxButtonDefault
+ playerContextMenuButton.ZIndex = 4
+ playerContextMenuButton.Size = UDim2.new(1, 0, 1, -20)
+ playerContextMenuButton.Visible = true
+ playerContextMenuButton.Parent = playerContextMenu
+
+ for i, contextElement in ipairs(contextMenuElements) do
+ local element = contextElement
+ if element.Type == "Button" then
+ local button = Instance.new("TextButton")
+ button.Name = "ContextButton" .. i
+ button.BackgroundColor3 = Color3.new(0,0,0)
+ button.BorderSizePixel = 0
+ button.TextXAlignment = Enum.TextXAlignment.Left
+ button.Text = " " .. contextElement.Text
+ button.Font = Enum.Font.Arial
+ button.FontSize = Enum.FontSize.Size14
+ button.Size = UDim2.new(1, 8, 0, elementHeight)
+ button.TextColor3 = Color3.new(1,1,1)
+ button.ZIndex = 4
+ button.Parent = playerContextMenuButton
+ button.MouseButton1Click:connect(function()
+ if button.Active then
+ local success, result = pcall(function() element.DoIt(currentContextMenuPlayer) end)
+ playerContextMenu.Visible = false
+ end
+ end)
+
+ button.MouseEnter:connect(function()
+ if button.Active then
+ highlight(button)
+ end
+ end)
+ button.MouseLeave:connect(function()
+ if button.Active then
+ clearHighlight(button)
+ end
+ end)
+
+ contextElement.Button = button
+ contextElement.Element = button
+ elseif element.Type == "Label" then
+ local frame = Instance.new("Frame")
+ frame.Name = "ContextLabel" .. i
+ frame.BackgroundTransparency = 1
+ frame.Size = UDim2.new(1, 8, 0, elementHeight)
+
+ local label = Instance.new("TextLabel")
+ label.Name = "Text1"
+ label.BackgroundTransparency = 1
+ label.BackgroundColor3 = Color3.new(1,1,1)
+ label.BorderSizePixel = 0
+ label.TextXAlignment = Enum.TextXAlignment.Left
+ label.Font = Enum.Font.ArialBold
+ label.FontSize = Enum.FontSize.Size14
+ label.Position = UDim2.new(0.0, 0, 0, 0)
+ label.Size = UDim2.new(0.5, 0, 1, 0)
+ label.TextColor3 = Color3.new(1,1,1)
+ label.ZIndex = 4
+ label.Parent = frame
+ element.Label1 = label
+
+ if element.GetText2 then
+ label = Instance.new("TextLabel")
+ label.Name = "Text2"
+ label.BackgroundTransparency = 1
+ label.BackgroundColor3 = Color3.new(1,1,1)
+ label.BorderSizePixel = 0
+ label.TextXAlignment = Enum.TextXAlignment.Right
+ label.Font = Enum.Font.Arial
+ label.FontSize = Enum.FontSize.Size14
+ label.Position = UDim2.new(0.5, 0, 0, 0)
+ label.Size = UDim2.new(0.5, 0, 1, 0)
+ label.TextColor3 = Color3.new(1,1,1)
+ label.ZIndex = 4
+ label.Parent = frame
+ element.Label2 = label
+ end
+ frame.Parent = playerContextMenuButton
+ element.Label = frame
+ element.Element = frame
+ end
+ end
+
+ playerContextMenu.ZIndex = 4
+ playerContextMenu.MouseLeave:connect(function() playerContextMenu.Visible = false end)
+ robloxLock(playerContextMenu)
+ playerContextMenu.Parent = NewPlayerListGui
+
+ end
+
+ local elementPos = 0
+ for i, contextElement in ipairs(contextMenuElements) do
+ local isVisible = false
+
+ if contextElement.IsVisible then
+ local success, visible = pcall(function() return contextElement.IsVisible(currentContextMenuPlayer) end)
+ if success then
+ isVisible = visible
+ else
+ print("Error in IsVisible call: " .. visible)
+ end
+ end
+
+ if contextElement.Type == "Button" then
+ contextElement.Button.Visible = isVisible
+ if contextElement.Button.Visible then
+ isVisible = true
+ clearHighlight(contextElement.Button)
+ if contextElement.IsActive then
+ local success, active = pcall(function() return contextElement.IsActive(currentContextMenuPlayer) end)
+ if success then
+ contextElement.Button.Active = active
+ else
+ print("Error in IsActive call: " .. active)
+ end
+ end
+ if contextElement.Button.Active then
+ contextElement.Button.TextColor3 = Color3.new(1,1,1)
+ else
+ contextElement.Button.TextColor3 = Color3.new(0.7,0.7,0.7)
+ end
+ end
+ elseif contextElement.Type == "Label" then
+ contextElement.Label.Visible = isVisible
+ if contextElement.Label.Visible then
+ local success, text = pcall(function() return contextElement.GetText1(currentContextMenuPlayer) end)
+ if success then
+ contextElement.Label1.Text = " " .. text
+ else
+ print("Error in GetText1 call: " .. text)
+ end
+
+ if contextElement.GetText2 then
+ local success, text = pcall(function() return contextElement.GetText2(currentContextMenuPlayer) end)
+ if success then
+ contextElement.Label2.Text = " " .. text
+ else
+ print("Error in GetText2 call: " .. text)
+ end
+ end
+ end
+ end
+ if isVisible then
+ contextElement.Element.Position = UDim2.new(0,-4, 0, elementPos * elementHeight - 4)
+ elementPos = elementPos + 1
+ end
+ end
+ playerContextMenu.Size = UDim2.new(0, 150, 0, elementPos*elementHeight + 13 + 20)
+ end
+ local function showPlayerMenu(player, x, y)
+ updatePlayerContextMenu(player)
+ x = x - (playerContextMenu.AbsoluteSize.X/2)
+ if x + playerContextMenu.AbsoluteSize.X >= NewPlayerListGui.AbsoluteSize.X then
+ x = NewPlayerListGui.AbsoluteSize.X - playerContextMenu.AbsoluteSize.X
+ end
+ playerContextMenu.Visible = true
+ playerContextMenu.Position = UDim2.new(0, x, 0, y-playerContextMenu.AbsoluteSize.Y)
+ end
+
+ local function buildPlayerObject(player, numStatColumns, suffix)
+ local isTeam, isScore = getBoardTypeInfo()
+
+ local playerObject = nil
+ local changePlayerNameFunction = nil
+ local currentColor = nil
+ if isTeam and not player.Neutral then
+ currentColor = player.TeamColor.Color
+ else
+ currentColor = Color3.new(1,1,1)
+ end
+ playerObject, changePlayerNameFunction = createPlayerName(player.Name, player.MembershipType, currentColor, getFriendStatus(player))
+
+ if not playerTable[player] then
+ playerTable[player] = {}
+ end
+ if not playerTable[player].Connections then
+ playerTable[player].Connections = {}
+ end
+ if not playerTable[player].CurrentTeam then
+ playerTable[player].CurrentTeam = nil
+ end
+ playerTable[player]["NameObject" .. suffix] = playerObject
+ playerTable[player]["ChangeName" .. suffix] = changePlayerNameFunction
+
+ if isScore then
+ local statObject = nil
+ local textChangers = nil
+ playerObject, statObject, textChangers = createStatColumns(playerObject, numStatColumns, false, suffix == "Big")
+ playerTable[player]["StatObject" .. suffix]= statObject
+ playerTable[player]["StatChangers" .. suffix] = textChangers
+
+ local statValues, leaderstats = getStatValuesForPlayer(player)
+ if not statValues or #statValues < numStatColumns then
+ if not playerTable[player].LeaderStatConnections then
+ playerTable[player].LeaderStatConnections = {}
+ end
+ --Setup a listener to see when this data gets filled in
+ if not leaderstats then
+ --print("No leaderstats for ", player)
+ --We don't even have a leaderstats child, wait for one
+ table.insert(playerTable[player].LeaderStatConnections,
+ player.ChildAdded:connect(
+ function(child)
+ if child.Name == "leaderstats" then
+ --print("Got a leaderstats for ", player)
+
+ --Connections will be torn down
+ recreatePlayerFunction(player)
+ else
+ --print("Unknown child, listening for connection")
+ table.insert(playerTable[player].LeaderStatConnections,
+ child.Changed:connect(
+ function(prop)
+ if prop == "Name" and child.Name == "leaderstats" then
+ --Connections will be torn down
+ recreatePlayerFunction(player)
+ end
+ end))
+ end
+ end))
+ else
+ --print("Need more children")
+ --We have a leaderstats, but not enough children, recreate if we get them
+ table.insert(playerTable[player].LeaderStatConnections,
+ leaderstats.ChildAdded:connect(
+ function(child)
+ --TODO only look for IntValue
+ recreatePlayerFunction(player)
+ end)
+ )
+ table.insert(playerTable[player].LeaderStatConnections,
+ leaderstats.AncestryChanged:connect(
+ function(child)
+ --We got deleted, try again
+ recreatePlayerFunction(player)
+ end)
+ )
+ end
+ end
+ if statValues then
+ if not playerTable[player].StatValues then
+ playerTable[player].StatValues = {}
+ end
+ local pos = 1
+ while pos <= numStatColumns and pos <= #statValues do
+ local currentColumn = pos
+ local statValue = statValues[pos]
+ local statChanger = textChangers[pos]
+
+ local updateStat = function(val)
+ statChanger(val)
+ recomputeTeamScore(playerTable[player].CurrentTeam, currentColumn)
+ end
+ if pos > #playerTable[player].StatValues then
+ table.insert(playerTable[player].StatValues, statValue)
+ end
+
+ table.insert(playerTable[player].Connections,
+ statValue.Changed:connect(updateStat)
+ )
+ table.insert(playerTable[player].Connections,
+ statValue.AncestryChanged:connect(
+ function()
+ recreatePlayerFunction(player)
+ end)
+ )
+ updateStat(statValue.Value)
+ pos = pos + 1
+ end
+ end
+ end
+
+ if supportFriends and player ~= game.Players.LocalPlayer and player.userId > 0 and game.Players.LocalPlayer.userId > 0 then
+ local button = Instance.new("TextButton")
+ button.Name = playerObject.Name .. "Button"
+ button.Text = ""
+ button.Active = false
+ button.Size = playerObject.Size
+ button.Position = playerObject.Position
+ button.BackgroundColor3 = playerObject.BackgroundColor3
+
+ local secondButton = Instance.new("TextButton")
+ secondButton.Name = playerObject.Name .. "RealButton"
+ secondButton.Text = ""
+ secondButton.BackgroundTransparency = 1
+ secondButton.BackgroundColor3 = playerObject.BackgroundColor3
+ secondButton.Parent.BackgroundTransparency = 1
+ secondButton.Parent.Visible = true
+ secondButton.ZIndex = 2
+ secondButton.Size = UDim2.new(1,0,1,0)
+
+ local previousTransparency = nil
+ table.insert(playerTable[player].Connections,
+ secondButton.MouseEnter:connect(--button.MouseEnter:connect(
+ function()
+ if previousTransparency == nil then
+ previousTransparency = secondButton--[[button]].BackgroundTransparency
+ end
+
+ if lightBackground then
+ --button.BackgroundColor3 = Color3.new(0,0,0)
+ --button.BackgroundTransparency = 0
+ secondButton.Parent.BackgroundTransparency = 0
+ else
+ --button.BackgroundColor3 = Color3.new(1,1,1)
+ --secondButton.button.BackgroundTransparency = 1--0.80
+ secondButton.Parent.BackgroundTransparency = 1
+ end
+ end))
+ table.insert(playerTable[player].Connections,
+ secondButton.MouseLeave:connect(--button.MouseLeave:connect(
+ function()
+ if previousTransparency ~= nil then
+ if lightBackground then
+ --button.BackgroundColor3 = Color3.new(1,1,1)
+ --button.BackgroundTransparency = previousTransparency
+ else
+ --secondButtonbutton.BackgroundColor3 = Color3.new(1,1,1)
+ --nbutton.BackgroundTransparency = previousTransparency
+ end
+
+ previousTransparency = nil
+ end
+ secondButton.Parent.BackgroundTransparency = 1
+ end))
+
+ local mouseDownX, mouseDownY
+ table.insert(playerTable[player].Connections,
+ secondButton.MouseButton1Down:connect(function(x,y)
+ mouseDownX = x
+ mouseDownY = y
+ end))
+ table.insert(playerTable[player].Connections,
+ secondButton.MouseButton1Click:connect(function()
+ showPlayerMenu(player, mouseDownX, secondButton.AbsolutePosition.Y + secondButton.AbsoluteSize.Y )
+ end))
+ playerObject.BackgroundTransparency = 1
+ playerObject.Size = UDim2.new(1,0,1,0)
+ playerObject.Position = UDim2.new(0,0,0,0)
+ playerObject.Parent = button
+
+ playerTable[player]["MainObject" .. suffix] = button
+
+ playerObject = button
+ else
+ playerTable[player]["MainObject" .. suffix] = playerObject
+
+ if player == game.Players.LocalPlayer and supportFriends then
+ table.insert(playerTable[player].Connections,
+ player.FriendStatusChanged:connect(
+ function(otherPlayer, friendStatus)
+ if playerTable[otherPlayer] then
+ updatePlayerFriendStatus(playerTable[otherPlayer]["NameObject" .. suffix], friendStatus)
+ end
+ end)
+ )
+ end
+ end
+ table.insert(playerTable[player].Connections,
+ player.Changed:connect(
+ function(prop)
+ if prop == "MembershipType" then
+ updatePlayerName(playerTable[player]["NameObject" .. suffix], player.MembershipType, currentColor)
+ elseif prop == "Name" then
+ playerTable[player]["ChangeName" .. suffix](player.Name)
+ elseif prop == "Neutral" or prop == "TeamColor" then
+ assignToTeam(player)
+ end
+ end)
+ )
+ return playerObject
+ end
+
+ local function orderScrollList(scrollOrder, objectName, scrollFrame)
+ local pos = 0
+ local order = {}
+ local isTeam, isScore = getBoardTypeInfo()
+ for i, obj in ipairs(scrollOrder) do
+ order[obj] = 0
+ end
+
+ if isTeam then
+ local teams = getTeams()
+ for i, team in ipairs(teams) do
+ --print(team, objectName, teamTable[team][objectName])
+ order[teamTable[team][objectName]] = pos
+ pos = pos + 1
+ for i, player in ipairs(teamTable[team].Players) do
+ if playerTable[player] then
+ order[playerTable[player][objectName]] = pos
+ pos = pos + 1
+ end
+ end
+ end
+
+ if #teamTable["Neutral"].Players > 0 then
+ teamTable["Neutral"][objectName].Parent = scrollFrame
+ order[teamTable["Neutral"][objectName]] = pos
+ pos = pos + 1
+ for i, player in ipairs(teamTable["Neutral"].Players) do
+ order[playerTable[player][objectName]] = pos
+ pos = pos + 1
+ end
+ else
+ teamTable["Neutral"][objectName].Parent = nil
+ end
+ else
+ local players = getPlayers()
+ for i, player in ipairs(players) do
+ order[playerTable[player][objectName]] = pos
+ pos = pos + 1
+ end
+ end
+
+ table.sort(scrollOrder,
+ function(a,b)
+ return order[a] < order[b]
+ end)
+ end
+
+ local function createPlayerListBasics(frame, isBig)
+ local headerFrame = Instance.new("Frame")
+ headerFrame.Name = "Header"
+ headerFrame.BackgroundTransparency = 1
+ headerFrame.Size = UDim2.new(1,-13,0,26)
+ headerFrame.Position = UDim2.new(0,0,0,0) --UDim2.new(0,-6,0,-6)
+ headerFrame.Parent = frame
+
+ local lowerPaneFrame = Instance.new("Frame")
+ lowerPaneFrame.Name = "ScrollingArea"
+ lowerPaneFrame.BackgroundTransparency = 1
+ lowerPaneFrame.Size = UDim2.new(1,-3,1,-26)
+ lowerPaneFrame.Position = UDim2.new(0,0,0,26)
+ lowerPaneFrame.Parent = frame
+
+ local scrollOrder = {}
+ local scrollFrame, scrollUp, scrollDown, recalculateScroll = RbxGui.CreateScrollingFrame(scrollOrder)
+
+ local scrollBar = Instance.new("Frame")
+ scrollBar.Name = "ScrollBar"
+ scrollBar.BackgroundTransparency = 0.9
+ scrollBar.BackgroundColor3 = Color3.new(1,1,1)
+ scrollBar.BorderSizePixel = 0
+ scrollBar.Size = UDim2.new(0, 17, 1, -36)
+ if isBig then scrollBar.Size = UDim2.new(0, 17, 1, -61) end
+ scrollBar.Parent = lowerPaneFrame
+
+ scrollFrame.Parent = lowerPaneFrame
+ scrollUp.Parent = lowerPaneFrame
+ scrollDown.Parent = lowerPaneFrame
+
+ if isBig then
+ scrollFrame.Position = UDim2.new(0,0,0,0) --UDim2.new(0,-7,0,0)
+ scrollUp.Position = UDim2.new(1,-41,0,5) --UDim2.new(1,-19,0,0)
+ scrollDown.Position = UDim2.new(1,-41,1,-35) -- UDim2.new(1,-19,1,-15)
+ scrollBar.Position = UDim2.new(1, -41, 0, 24) -- UDim2.new(1, -19, 0, 19)
+
+ scrollFrame.Size = UDim2.new(1,-48,1,0)
+ headerFrame.Size = UDim2.new(1,-20,0,32)
+
+ else
+ scrollBar.Position = UDim2.new(1, -19, 0, 14) --UDim2.new(1, -17, 0, 19)
+ scrollFrame.Position = UDim2.new(0,1,0,0) -- UDim2.new(0,-5,0,0)
+ scrollUp.Position = UDim2.new(1,-19,0,-5) --UDim2.new(1,-17,0,0)
+ scrollDown.Position = UDim2.new(1,-19,1,-20) --UDim2.new(1,-17,1,-15)
+
+ lowerPaneFrame.Position = UDim2.new(0,0,0,30)
+
+ local toggleScrollBar = function(visible)
+ if visible then
+ scrollFrame.Size = UDim2.new(1,-16,1,0)
+ headerFrame.Size = UDim2.new(1,-16,0,32)
+ else
+ scrollFrame.Size = UDim2.new(1,0,1,0)--UDim2.new(1,5,1,0)
+ headerFrame.Size = UDim2.new(1,5,0,32)
+ end
+ scrollUp.Visible = visible
+ scrollDown.Visible = visible
+ scrollBar.Visible = visible
+ end
+ scrollUp.Changed:connect(function(prop)
+ if prop == "Active" then
+ toggleScrollBar(scrollUp.Active or scrollDown.Active)
+ end
+ end)
+
+ scrollDown.Changed:connect(function(prop)
+ if prop == "Active" then
+ toggleScrollBar(scrollUp.Active or scrollDown.Active)
+ end
+ end)
+
+ toggleScrollBar(scrollUp.Active or scrollDown.Active)
+ end
+ return headerFrame, scrollFrame, recalculateScroll, scrollOrder
+ end
+
+ createBoardsFunction = function (boardType, numStatColumns)
+ print("Create Boards")
+ local smallFrame = Instance.new("Frame")
+ smallFrame.Name = "SmallPlayerlist"
+ smallFrame.Position = smallWindowPosition
+ smallFrame.Active = false
+ smallFrame.Size = smallWindowSize
+ --smallFrame.Style = Enum.FrameStyle.RobloxRound
+ smallFrame.BackgroundColor3 = Color3.new(0,0,0)
+ smallFrame.BackgroundTransparency = 0.7
+ smallFrame.BorderSizePixel = 0
+
+ local bigFrame = Instance.new("Frame")
+ bigFrame.Name = "BigPlayerlist"
+ bigFrame.Size = bigWindowSize
+ bigFrame.Position = bigWindowPosition
+ --bigFrame.Style = Enum.FrameStyle.RobloxRound
+ bigFrame.BackgroundColor3 = Color3.new(0,0,0)
+ bigFrame.BackgroundTransparency = 0.7
+ bigFrame.BorderSizePixel = 0
+ bigFrame.Visible = false
+
+ local bigFrameWrapper = Instance.new("Frame")
+ bigFrameWrapper.Name = "Expander"
+ --bigFrameWrapper.Size = UDim2.new(1,5,1,0)
+ bigFrameWrapper.Size = UDim2.new(1,21,1,16)
+ bigFrameWrapper.Position = UDim2.new(0, 0, 0,0)
+ bigFrameWrapper.BackgroundTransparency = 1
+ bigFrameWrapper.Parent = bigFrame
+
+ local smallHeaderFrame, scrollFrameSmall, recalculateScrollSmall, scrollOrderSmall = createPlayerListBasics(smallFrame, false)
+ local bigHeaderFrame, scrollFrameBig, recalculateScrollBig, scrollOrderBig = createPlayerListBasics(bigFrameWrapper, true)
+
+ local playerListButton = Instance.new("ImageButton")
+ playerListButton.Name = "GoBigButton"
+ playerListButton.BackgroundTransparency = 1
+ playerListButton.Image = "rbxasset://textures/ui/playerlist_small_maximize.png"
+ playerListButton.Size = UDim2.new(0.0, 35, 0, 29)
+ playerListButton.Position = UDim2.new(0, 0, 0, 0)
+ playerListButton.MouseButton1Click:connect(
+ function()
+ toggleBigWindow()
+ end)
+ playerListButton.Parent = smallHeaderFrame
+
+ playerListButton = Instance.new("ImageButton")
+ playerListButton.Name = "CloseButton"
+ playerListButton.BackgroundTransparency = 1
+ playerListButton.Image = "rbxasset://textures/ui/playerlist_small_hide.png"
+ playerListButton.Size = UDim2.new(0.0, 38, 0, 29)
+ playerListButton.Position = UDim2.new(0, 35, 0, 0)
+ playerListButton.MouseButton1Click:connect(
+ function()
+ transitionWindowsFunction("None")
+ end)
+ playerListButton.Parent = smallHeaderFrame
+
+ playerListButton = Instance.new("ImageButton")
+ playerListButton.Name = "CloseButton"
+ playerListButton.Image = "rbxasset://textures/ui/playerlist_big_hide.png"
+ playerListButton.BackgroundTransparency = 1
+ playerListButton.Size = UDim2.new(0.0, 29, 0, 29)
+ playerListButton.Position = UDim2.new(1, -30, 0.5, -15)
+ playerListButton.MouseButton1Click:connect(
+ function()
+ toggleBigWindow()
+ end)
+ playerListButton.Parent = bigHeaderFrame
+
+ local placeName = Instance.new("TextLabel")
+ placeName.Name = "PlaceName"
+ placeName.Text = " Player List"
+ placeName.FontSize = Enum.FontSize.Size24
+ placeName.TextXAlignment = Enum.TextXAlignment.Left
+ placeName.Font = Enum.Font.ArialBold
+ placeName.BackgroundTransparency = 1
+ placeName.TextColor3 = Color3.new(1,1,1)
+ placeName.Size = UDim2.new(0.5, 0, 1, 0)
+ placeName.Position = UDim2.new(0, 0, 0.0, 0)
+ placeName = RbxGui.AutoTruncateTextObject(placeName)
+ placeName.Parent = bigHeaderFrame
+
+
+ currentBoardType = boardType
+ currentStatCount = numStatColumns
+ local isTeam, isScore = getBoardTypeInfo()
+ local players = getPlayers()
+
+ if isScore then
+ local statColumns = getStatColumns(players)
+ numStatColumns = #statColumns
+ if numStatColumns > 3 then
+ numStatColumns = 3
+ end
+ createStatHeaders(statColumns, numStatColumns, false).Parent = smallHeaderFrame
+ createStatHeaders(statColumns, currentStatCount, true).Parent = bigHeaderFrame
+ end
+
+ --Clean up all old stuff
+ resetPlayerTable()
+
+ for i, player in ipairs(players) do
+ local playerObject = buildPlayerObject(player, numStatColumns, "Small")
+ table.insert(scrollOrderSmall, playerObject)
+ playerObject.Parent = scrollFrameSmall
+
+ playerObject = buildPlayerObject(player, currentStatCount, "Big")
+ table.insert(scrollOrderBig, playerObject)
+ playerObject.Parent = scrollFrameBig
+ end
+
+ --Clean up old stuff
+ resetTeamTable()
+
+ local teamStatObjects = {}
+ if isTeam then
+ local teams = getTeams()
+ local i = #teams
+ while i >= 1 do
+ --We go backwards so the "first" team color gets the team
+ local team = teams[i]
+ teamColorTable[team.TeamColor.Name] = team
+ i = i - 1
+ end
+
+ --Adding/Removing a Team causes a full invalidation of the board
+ for i, team in ipairs(teams) do
+ local teamObject = buildTeamObject(team, numStatColumns, "Small")
+ table.insert(scrollOrderSmall, teamObject)
+ teamObject.Parent = scrollFrameSmall
+
+ teamObject = buildTeamObject(team, currentStatCount, "Big")
+ table.insert(scrollOrderBig, teamObject)
+ teamObject.Parent = scrollFrameBig
+ end
+
+ teamTable["Neutral"] = {}
+ teamTable["Neutral"].Players = {}
+
+ local neutralTeamObject = createTeamName("Neutral", BrickColor.palette(8))
+ teamTable["Neutral"].NameObjectSmall = neutralTeamObject
+ teamTable["Neutral"].StatObjectSmall = nil
+ teamTable["Neutral"].MainObjectSmall = neutralTeamObject
+ table.insert(scrollOrderSmall, neutralTeamObject)
+
+ neutralTeamObject = createTeamName("Neutral", BrickColor.palette(8))
+ teamTable["Neutral"].NameObjectBig = neutralTeamObject
+ teamTable["Neutral"].StatObjectBig = nil
+ teamTable["Neutral"].MainObjectBig = neutralTeamObject
+ table.insert(scrollOrderBig, neutralTeamObject)
+
+ local neutralPlayers = {}
+ for i, player in ipairs(players) do
+ assignToTeam(player)
+ end
+ end
+
+ removePlayerFunction = function(player)
+ if playerTable[player] then
+ ArrayRemove(scrollOrderSmall, playerTable[player].MainObjectSmall)
+ ArrayRemove(scrollOrderBig, playerTable[player].MainObjectBig)
+
+ clearTableEntry(player, playerTable[player])
+
+ playerTable[player] = nil
+ end
+ end
+ recreatePlayerFunction = function(player)
+ removePlayerFunction(player)
+
+ local playerObject = buildPlayerObject(player, numStatColumns, "Small")
+ table.insert(scrollOrderSmall, playerObject)
+ robloxLock(playerObject)
+ playerObject.Parent = scrollFrameSmall
+
+ playerObject = buildPlayerObject(player, currentStatCount, "Big")
+ table.insert(scrollOrderBig, playerObject)
+ robloxLock(playerObject)
+ playerObject.Parent = scrollFrameBig
+
+ local isTeam, isScore = getBoardTypeInfo()
+ if isTeam then
+ assignToTeam(player)
+ end
+
+ sortPlayerListsFunction()
+ end
+
+ sortPlayerListsFunction = function()
+ orderScrollList(scrollOrderSmall, "MainObjectSmall", scrollFrameSmall)
+ recalculateScrollSmall()
+ createAlternatingRows(scrollOrderSmall)
+
+ orderScrollList(scrollOrderBig, "MainObjectBig", scrollFrameBig)
+ recalculateScrollBig()
+ createAlternatingRows(scrollOrderBig)
+ end
+
+ sortPlayerListsFunction()
+
+ robloxLock(smallFrame)
+ robloxLock(bigFrame)
+ return smallFrame, bigFrame
+ end
+
+ --Teams changing invalidates the whole board
+ local function teamsChanged()
+ if debounceTeamsChanged then
+ return
+ end
+
+ debounceTeamsChanged = true
+ wait()
+ rebuildBoard(NewPlayerListGui, determineBoardType())
+ debounceTeamsChanged = false
+ end
+
+
+ local checkIfBoardChanged = function()
+ local newBoardType, numStats = determineBoardType()
+ if newBoardType ~= currentBoardType or numStats ~= currentStatCount then
+ --print("BoardChanged to " .. newBoardType .. " with " .. numStats .. " stats")
+ rebuildBoard(NewPlayerListGui, newBoardType, numStats)
+ end
+ end
+
+ local function buildPlayerList()
+ waitForChild(game, "Players")
+ waitForProperty(game.Players, "LocalPlayer")
+
+ local playerListEnabled = testPlayerListPlaces[game.PlaceId] or enablePlayerListGlobally
+ if localTesting and (game.PlaceId == 0) or (game.PlaceId == -1) then
+ playerListEnabled = true
+ end
+ if not playerListEnabled then
+ --No playerlist
+ return
+ end
+
+ supportFriends = testFriendingPlaces[game.PlaceId] or enableFriendingGlobally
+ if localTesting and (game.PlaceId == 0) or (game.PlaceId == -1) then
+ supportFriends = false
+ end
+
+ local teams = game:GetService("Teams")
+ if teams then
+ local teamConnections = {}
+
+ teams.ChildAdded:connect(
+ function(child)
+ if child:IsA("Team") then
+ teamsChanged()
+ teamConnections[child] = child.Changed:connect(
+ function(prop)
+ if prop == "TeamColor" or prop == "Name" then
+ --Rebuild when things change
+ teamsChanged()
+ end
+ end)
+ end
+ end)
+ teams.ChildRemoved:connect(
+ function(child)
+ if child:IsA("Team") then
+ if teamConnections[child] then
+ teamConnections[child]:disconnect()
+ teamConnections[child] = nil
+ end
+ teamsChanged()
+ end
+ end)
+ end
+
+ game.Players.ChildAdded:connect(
+ function(player)
+ if player:IsA("Player") then
+ addPlayerFunction(player)
+ end
+ end)
+
+ game.Players.ChildRemoved:connect(
+ function(player)
+ if player:IsA("Player") then
+ if removePlayerFunction then
+ removePlayerFunction(player)
+ end
+ end
+ end)
+
+ rebuildBoard(NewPlayerListGui, determineBoardType())
+
+ delay(0,
+ function()
+ while true do
+ wait(5)
+ checkIfBoardChanged()
+ end
+ end)
+ end
+
+ buildPlayerList()
+end
+ true
+
+
+
+
\ No newline at end of file
diff --git a/Health2011.rbxm b/Health2011.rbxm
index d453181..4fadee2 100644
--- a/Health2011.rbxm
+++ b/Health2011.rbxm
@@ -15,34 +15,7 @@ script:remove();
HealthGUI
true
- -
-
- false
- 4290164919
- 1
- 4279970357
- 1
- rbxasset://textures/healthgui/HurtOverlay.png
- hurtOverlay
-
- 2
- 0
- 0
- -22
-
-
- 1
- 0
- 1.1500001
- 30
-
- 0
- true
- 1
- true
-
-
- -
+
-
false
4285215356
@@ -68,7 +41,7 @@ script:remove();
1
true
-
-
+
-
false
4294967295
@@ -95,7 +68,7 @@ script:remove();
true
- -
+
-
false
4294967295
@@ -122,7 +95,7 @@ script:remove();
true
- -
+
-
false
4294967295
@@ -148,13 +121,14 @@ script:remove();
1
true
-
-
+
-
false
Script
h = script.Parent.Parent.Parent.Parent.Parent.Character.Humanoid
-tray = script.Parent
+tray = script.Parent.Parent
+base = tray.Parent
local lastHealth = 100
local lastHealth2 = 100
local maxWidth = 0.96
@@ -193,11 +167,6 @@ function UpdateGUI(health)
end
end
-
-function HealthChanged(health)
-
-end
-
function AnimateBars(x, y, lastX, height)
local width = math.abs(x - lastX)
if( x > lastX ) then
@@ -234,7 +203,8 @@ function AnimateHurtOverlay()
-- overlay.Position = UDim2.new(-2, 0, -2, -22)
-- overlay.Size = UDim2.new(4.5, 0, 4.65, 30)
- overlay = HealthGUI_prototype.hurtOverlay
+ overlay = base.hurtOverlay
+ overlay.Visible = true
overlay.Position = UDim2.new(-2, 0, -2, -22)
overlay.Size = UDim2.new(4.5, 0, 4.65, 30)
-- Animate In, fast
@@ -264,21 +234,22 @@ function AnimateHurtOverlay()
-- Hide after we're done
overlay.Position = UDim2.new(10, 0, 0, 0)
+ overlay.Visible = false
end
h.Changed:connect(function()
- UpdateGUI(health)
- if ( (lastHealth2 - health) > (humanoid.MaxHealth / 10) ) then
- lastHealth2 = health
+ UpdateGUI(h.Health)
+ if ( (lastHealth2 - h.Health) > (h.MaxHealth / 10) ) then
+ lastHealth2 = h.Health
else
- lastHealth2 = health
+ lastHealth2 = h.Health
end end)
true
- -
+
-
false
4294967295
@@ -305,7 +276,7 @@ h.Changed:connect(function()
true
- -
+
-
false
4294967295
@@ -333,6 +304,33 @@ h.Changed:connect(function()
+ -
+
+ false
+ 4290164919
+ 1
+ 4279970357
+ 1
+ rbxasset://textures/healthgui/HurtOverlay.png
+ hurtOverlay
+
+ 2
+ 0
+ 0
+ -22
+
+
+ 1
+ 0
+ 1.1500001
+ 30
+
+ 0
+ false
+ 1
+ true
+
+
\ No newline at end of file
diff --git a/Health2012.rbxm b/Health2012.rbxm
index d453181..4fadee2 100644
--- a/Health2012.rbxm
+++ b/Health2012.rbxm
@@ -15,34 +15,7 @@ script:remove();
HealthGUI
true
- -
-
- false
- 4290164919
- 1
- 4279970357
- 1
- rbxasset://textures/healthgui/HurtOverlay.png
- hurtOverlay
-
- 2
- 0
- 0
- -22
-
-
- 1
- 0
- 1.1500001
- 30
-
- 0
- true
- 1
- true
-
-
- -
+
-
false
4285215356
@@ -68,7 +41,7 @@ script:remove();
1
true
-
-
+
-
false
4294967295
@@ -95,7 +68,7 @@ script:remove();
true
- -
+
-
false
4294967295
@@ -122,7 +95,7 @@ script:remove();
true
- -
+
-
false
4294967295
@@ -148,13 +121,14 @@ script:remove();
1
true
-
-
+
-
false
Script
h = script.Parent.Parent.Parent.Parent.Parent.Character.Humanoid
-tray = script.Parent
+tray = script.Parent.Parent
+base = tray.Parent
local lastHealth = 100
local lastHealth2 = 100
local maxWidth = 0.96
@@ -193,11 +167,6 @@ function UpdateGUI(health)
end
end
-
-function HealthChanged(health)
-
-end
-
function AnimateBars(x, y, lastX, height)
local width = math.abs(x - lastX)
if( x > lastX ) then
@@ -234,7 +203,8 @@ function AnimateHurtOverlay()
-- overlay.Position = UDim2.new(-2, 0, -2, -22)
-- overlay.Size = UDim2.new(4.5, 0, 4.65, 30)
- overlay = HealthGUI_prototype.hurtOverlay
+ overlay = base.hurtOverlay
+ overlay.Visible = true
overlay.Position = UDim2.new(-2, 0, -2, -22)
overlay.Size = UDim2.new(4.5, 0, 4.65, 30)
-- Animate In, fast
@@ -264,21 +234,22 @@ function AnimateHurtOverlay()
-- Hide after we're done
overlay.Position = UDim2.new(10, 0, 0, 0)
+ overlay.Visible = false
end
h.Changed:connect(function()
- UpdateGUI(health)
- if ( (lastHealth2 - health) > (humanoid.MaxHealth / 10) ) then
- lastHealth2 = health
+ UpdateGUI(h.Health)
+ if ( (lastHealth2 - h.Health) > (h.MaxHealth / 10) ) then
+ lastHealth2 = h.Health
else
- lastHealth2 = health
+ lastHealth2 = h.Health
end end)
true
- -
+
-
false
4294967295
@@ -305,7 +276,7 @@ h.Changed:connect(function()
true
- -
+
-
false
4294967295
@@ -333,6 +304,33 @@ h.Changed:connect(function()
+ -
+
+ false
+ 4290164919
+ 1
+ 4279970357
+ 1
+ rbxasset://textures/healthgui/HurtOverlay.png
+ hurtOverlay
+
+ 2
+ 0
+ 0
+ -22
+
+
+ 1
+ 0
+ 1.1500001
+ 30
+
+ 0
+ false
+ 1
+ true
+
+
\ No newline at end of file
diff --git a/RBX2008/RBX2008Launcher/RBX2008Launcher.sln b/RBX2008/RBX2008Launcher/RBX2008Launcher.sln
deleted file mode 100644
index a604cc1..0000000
--- a/RBX2008/RBX2008Launcher/RBX2008Launcher.sln
+++ /dev/null
@@ -1,18 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
-# SharpDevelop 4.4
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RBX2008Launcher", "RBX2008Launcher\RBX2008Launcher.csproj", "{F92FFBED-2767-4676-9711-BB89CDA58A43}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Any CPU = Debug|Any CPU
- Release|Any CPU = Release|Any CPU
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {F92FFBED-2767-4676-9711-BB89CDA58A43}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {F92FFBED-2767-4676-9711-BB89CDA58A43}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {F92FFBED-2767-4676-9711-BB89CDA58A43}.Release|Any CPU.Build.0 = Release|Any CPU
- {F92FFBED-2767-4676-9711-BB89CDA58A43}.Release|Any CPU.ActiveCfg = Release|Any CPU
- EndGlobalSection
-EndGlobal
diff --git a/RBX2008/RBX2008Launcher/RBX2008Launcher/GlobalVars.cs b/RBX2008/RBX2008Launcher/RBX2008Launcher/GlobalVars.cs
deleted file mode 100644
index 9b1413b..0000000
--- a/RBX2008/RBX2008Launcher/RBX2008Launcher/GlobalVars.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-public static class GlobalVars
-{
- public static string ClientDir = "";
- public static string Map = "Baseplate.rbxl";
- public static string PlayerName = "Player";
- public static bool CloseOnLaunch = true;
-}
\ No newline at end of file
diff --git a/RBX2008/RBX2008Launcher/RBX2008Launcher/MainForm.Designer.cs b/RBX2008/RBX2008Launcher/RBX2008Launcher/MainForm.Designer.cs
deleted file mode 100644
index 249f983..0000000
--- a/RBX2008/RBX2008Launcher/RBX2008Launcher/MainForm.Designer.cs
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
- * Created by SharpDevelop.
- * User: BITL-Gaming
- * Date: 10/7/2016
- * Time: 3:01 PM
- *
- * To change this template use Tools | Options | Coding | Edit Standard Headers.
- */
-namespace RBXLegacyLauncher
-{
- partial class MainForm
- {
- ///
- /// Designer variable used to keep track of non-visual components.
- ///
- private System.ComponentModel.IContainer components = null;
-
- ///
- /// Disposes resources used by the form.
- ///
- /// true if managed resources should be disposed; otherwise, false.
- protected override void Dispose(bool disposing)
- {
- if (disposing) {
- if (components != null) {
- components.Dispose();
- }
- }
- base.Dispose(disposing);
- }
-
- ///
- /// This method is required for Windows Forms designer support.
- /// Do not change the method contents inside the source code editor. The Forms designer might
- /// not be able to load this method if it was changed manually.
- ///
- private void InitializeComponent()
- {
- this.label1 = new System.Windows.Forms.Label();
- this.listBox1 = new System.Windows.Forms.ListBox();
- this.checkBox1 = new System.Windows.Forms.CheckBox();
- this.button3 = new System.Windows.Forms.Button();
- this.button5 = new System.Windows.Forms.Button();
- this.textBox2 = new System.Windows.Forms.TextBox();
- this.label15 = new System.Windows.Forms.Label();
- this.button2 = new System.Windows.Forms.Button();
- this.SuspendLayout();
- //
- // label1
- //
- this.label1.Location = new System.Drawing.Point(100, 57);
- this.label1.Name = "label1";
- this.label1.Size = new System.Drawing.Size(70, 18);
- this.label1.TabIndex = 1;
- this.label1.Text = "Map List";
- this.label1.TextAlign = System.Drawing.ContentAlignment.TopCenter;
- //
- // listBox1
- //
- this.listBox1.FormattingEnabled = true;
- this.listBox1.Location = new System.Drawing.Point(12, 73);
- this.listBox1.Name = "listBox1";
- this.listBox1.Size = new System.Drawing.Size(264, 134);
- this.listBox1.TabIndex = 0;
- this.listBox1.SelectedIndexChanged += new System.EventHandler(this.ListBox1SelectedIndexChanged);
- //
- // checkBox1
- //
- this.checkBox1.Checked = true;
- this.checkBox1.CheckState = System.Windows.Forms.CheckState.Checked;
- this.checkBox1.Location = new System.Drawing.Point(12, 35);
- this.checkBox1.Name = "checkBox1";
- this.checkBox1.Size = new System.Drawing.Size(158, 19);
- this.checkBox1.TabIndex = 5;
- this.checkBox1.Text = "Close Launcher on Launch";
- this.checkBox1.UseCompatibleTextRendering = true;
- this.checkBox1.UseVisualStyleBackColor = true;
- this.checkBox1.CheckedChanged += new System.EventHandler(this.CheckBox1CheckedChanged);
- //
- // button3
- //
- this.button3.Location = new System.Drawing.Point(12, 240);
- this.button3.Name = "button3";
- this.button3.Size = new System.Drawing.Size(264, 24);
- this.button3.TabIndex = 6;
- this.button3.Text = "Launch ROBLOX Studio";
- this.button3.UseVisualStyleBackColor = true;
- this.button3.Click += new System.EventHandler(this.Button3Click);
- //
- // button5
- //
- this.button5.Location = new System.Drawing.Point(192, 35);
- this.button5.Name = "button5";
- this.button5.Size = new System.Drawing.Size(84, 32);
- this.button5.TabIndex = 10;
- this.button5.Text = "Save Config";
- this.button5.UseVisualStyleBackColor = true;
- this.button5.Click += new System.EventHandler(this.Button5Click);
- //
- // textBox2
- //
- this.textBox2.Location = new System.Drawing.Point(96, 9);
- this.textBox2.Name = "textBox2";
- this.textBox2.Size = new System.Drawing.Size(180, 20);
- this.textBox2.TabIndex = 11;
- this.textBox2.Text = "Player";
- this.textBox2.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
- this.textBox2.TextChanged += new System.EventHandler(this.TextBox2TextChanged);
- //
- // label15
- //
- this.label15.Location = new System.Drawing.Point(12, 12);
- this.label15.Name = "label15";
- this.label15.Size = new System.Drawing.Size(87, 15);
- this.label15.TabIndex = 12;
- this.label15.Text = "PLAYER NAME:";
- //
- // button2
- //
- this.button2.Location = new System.Drawing.Point(12, 210);
- this.button2.Name = "button2";
- this.button2.Size = new System.Drawing.Size(264, 24);
- this.button2.TabIndex = 2;
- this.button2.Text = "LAUNCH GAME";
- this.button2.UseVisualStyleBackColor = true;
- this.button2.Click += new System.EventHandler(this.Button2Click);
- //
- // MainForm
- //
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.BackColor = System.Drawing.SystemColors.ControlLightLight;
- this.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
- this.ClientSize = new System.Drawing.Size(288, 275);
- this.Controls.Add(this.label15);
- this.Controls.Add(this.textBox2);
- this.Controls.Add(this.button5);
- this.Controls.Add(this.button3);
- this.Controls.Add(this.checkBox1);
- this.Controls.Add(this.button2);
- this.Controls.Add(this.listBox1);
- this.Controls.Add(this.label1);
- this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
- this.MaximizeBox = false;
- this.Name = "MainForm";
- this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
- this.Text = "RBX2008 Launcher";
- this.Load += new System.EventHandler(this.MainFormLoad);
- this.ResumeLayout(false);
- this.PerformLayout();
- }
- private System.Windows.Forms.Label label15;
- private System.Windows.Forms.TextBox textBox2;
- private System.Windows.Forms.Button button5;
- private System.Windows.Forms.Button button3;
- private System.Windows.Forms.CheckBox checkBox1;
- private System.Windows.Forms.Button button2;
- private System.Windows.Forms.ListBox listBox1;
- private System.Windows.Forms.Label label1;
- }
-}
diff --git a/RBX2008/RBX2008Launcher/RBX2008Launcher/MainForm.cs b/RBX2008/RBX2008Launcher/RBX2008Launcher/MainForm.cs
deleted file mode 100644
index 99f94e5..0000000
--- a/RBX2008/RBX2008Launcher/RBX2008Launcher/MainForm.cs
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * Created by SharpDevelop.
- * User: BITL-Gaming
- * Date: 10/7/2016
- * Time: 3:01 PM
- *
- * To change this template use Tools | Options | Coding | Edit Standard Headers.
- */
-using System;
-using System.Collections.Generic;
-using System.Drawing;
-using System.Windows.Forms;
-using System.IO;
-using System.Diagnostics;
-using System.Threading;
-
-namespace RBXLegacyLauncher
-{
- ///
- /// Description of MainForm.
- ///
- public partial class MainForm : Form
- {
- public MainForm()
- {
- //
- // The InitializeComponent() call is required for Windows Forms designer support.
- //
- InitializeComponent();
-
- //
- // TODO: Add constructor code after the InitializeComponent() call.
- //
- }
- void Button2Click(object sender, EventArgs e)
- {
- string luafile = GlobalVars.ClientDir + @"\\game.lua";
- string rbxexe = GlobalVars.ClientDir + @"\\RobloxApp.exe";
- string mapfile = GlobalVars.ClientDir + @"\\maps\\" + GlobalVars.Map;
- string settingsluafile = GlobalVars.ClientDir + @"\\game.lua";
- string quote = "\"";
- string args = "";
- args = "-script " + quote + "dofile('" + settingsluafile + "'); game:Load('" + mapfile + "'); wait(0.001); dofile('" + luafile + "'); _G.Play('" + GlobalVars.PlayerName + "');" + quote;
- Process.Start(rbxexe, args);
- WriteConfigValues();
- if (GlobalVars.CloseOnLaunch == true)
- {
- this.Close();
- }
- }
-
- void MainFormLoad(object sender, EventArgs e)
- {
- if (!File.Exists("config.txt"))
- {
- WriteConfigValues();
- }
- GlobalVars.ClientDir = Path.Combine(Environment.CurrentDirectory, @"client");
- GlobalVars.ClientDir = GlobalVars.ClientDir.Replace(@"\",@"\\");
- GlobalVars.Map = "Baseplate.rbxl";
- string mapdir = GlobalVars.ClientDir + @"\\maps\\";
- DirectoryInfo dinfo = new DirectoryInfo(mapdir);
- FileInfo[] Files = dinfo.GetFiles("*.rbxl");
- foreach( FileInfo file in Files )
- {
- listBox1.Items.Add(file.Name);
- }
- listBox1.SelectedItem = GlobalVars.Map;
- ReadConfigValues();
- }
-
- void ReadConfigValues()
- {
- string line1, line2;
-
- using(StreamReader reader = new StreamReader("config.txt"))
- {
- line1 = reader.ReadLine();
- line2 = reader.ReadLine();
- }
-
- bool bline1 = Convert.ToBoolean(line1);
- GlobalVars.CloseOnLaunch = bline1;
-
- GlobalVars.PlayerName = line2;
-
- if (GlobalVars.CloseOnLaunch == true)
- {
- checkBox1.Checked = true;
- }
- else if (GlobalVars.CloseOnLaunch == false)
- {
- checkBox1.Checked = false;
- }
-
- textBox2.Text = GlobalVars.PlayerName;
- }
-
- void WriteConfigValues()
- {
- string[] lines = { GlobalVars.CloseOnLaunch.ToString(), GlobalVars.PlayerName.ToString() };
- File.WriteAllLines("config.txt", lines);
- }
-
- void ListBox1SelectedIndexChanged(object sender, EventArgs e)
- {
- GlobalVars.Map = listBox1.SelectedItem.ToString();
- }
-
- void CheckBox1CheckedChanged(object sender, EventArgs e)
- {
- if (checkBox1.Checked == true)
- {
- GlobalVars.CloseOnLaunch = true;
- }
- else if (checkBox1.Checked == false)
- {
- GlobalVars.CloseOnLaunch = false;
- }
- }
-
- void Button5Click(object sender, EventArgs e)
- {
- WriteConfigValues();
- }
-
- void TextBox2TextChanged(object sender, EventArgs e)
- {
- GlobalVars.PlayerName = textBox2.Text;
- }
-
- void Button3Click(object sender, EventArgs e)
- {
- string rbxexe = GlobalVars.ClientDir + @"\\RobloxApp.exe";
- Process.Start(rbxexe);
- WriteConfigValues();
- if (GlobalVars.CloseOnLaunch == true)
- {
- this.Close();
- }
- }
- }
-}
diff --git a/RBX2008/RBX2008Launcher/RBX2008Launcher/MainForm.resx b/RBX2008/RBX2008Launcher/RBX2008Launcher/MainForm.resx
deleted file mode 100644
index 1af7de1..0000000
--- a/RBX2008/RBX2008Launcher/RBX2008Launcher/MainForm.resx
+++ /dev/null
@@ -1,120 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
\ No newline at end of file
diff --git a/RBX2008/RBX2008Launcher/RBX2008Launcher/Program.cs b/RBX2008/RBX2008Launcher/RBX2008Launcher/Program.cs
deleted file mode 100644
index 4be6f26..0000000
--- a/RBX2008/RBX2008Launcher/RBX2008Launcher/Program.cs
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Created by SharpDevelop.
- * User: BITL-Gaming
- * Date: 10/7/2016
- * Time: 3:01 PM
- *
- * To change this template use Tools | Options | Coding | Edit Standard Headers.
- */
-using System;
-using System.Windows.Forms;
-
-namespace RBXLegacyLauncher
-{
- ///
- /// Class with program entry point.
- ///
- internal sealed class Program
- {
- ///
- /// Program entry point.
- ///
- [STAThread]
- private static void Main(string[] args)
- {
- Application.EnableVisualStyles();
- Application.SetCompatibleTextRenderingDefault(false);
- Application.Run(new MainForm());
- }
-
- }
-}
diff --git a/RBX2008/RBX2008Launcher/RBX2008Launcher/Properties/AssemblyInfo.cs b/RBX2008/RBX2008Launcher/RBX2008Launcher/Properties/AssemblyInfo.cs
deleted file mode 100644
index d620dcf..0000000
--- a/RBX2008/RBX2008Launcher/RBX2008Launcher/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,31 +0,0 @@
-#region Using directives
-
-using System;
-using System.Reflection;
-using System.Runtime.InteropServices;
-
-#endregion
-
-// General Information about an assembly is controlled through the following
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("RBXLegacyLauncher")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("RBXLegacyLauncher")]
-[assembly: AssemblyCopyright("Copyright 2016")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// This sets the default COM visibility of types in the assembly to invisible.
-// If you need to expose a type to COM, use [ComVisible(true)] on that type.
-[assembly: ComVisible(false)]
-
-// The assembly version has following format :
-//
-// Major.Minor.Build.Revision
-//
-// You can specify all the values or you can use the default the Revision and
-// Build Numbers by using the '*' as shown below:
-[assembly: AssemblyVersion("1.0.*")]
diff --git a/RBX2008/RBX2008Launcher/RBX2008Launcher/RBX2008Launcher.csproj b/RBX2008/RBX2008Launcher/RBX2008Launcher/RBX2008Launcher.csproj
deleted file mode 100644
index 8fd8672..0000000
--- a/RBX2008/RBX2008Launcher/RBX2008Launcher/RBX2008Launcher.csproj
+++ /dev/null
@@ -1,80 +0,0 @@
-
-
-
- {F92FFBED-2767-4676-9711-BB89CDA58A43}
- Debug
- AnyCPU
- WinExe
- RBX2008Launcher
- RBX2008Launcher
- v4.0
-
-
- Properties
- Resources\RBXLegacyIcon.ico
- False
- False
- False
- False
- obj\$(Configuration)\
- 4
-
-
- x86
- 4194304
- False
- Auto
- 4096
-
-
- bin\Debug\
- True
- Full
- False
- True
- DEBUG;TRACE
-
-
- bin\Release\
- False
- None
- True
- False
- TRACE
- obj\
-
-
-
-
- 3.5
-
-
-
- 3.5
-
-
-
-
-
- 3.5
-
-
-
-
-
-
- MainForm.cs
-
-
-
-
-
-
- MainForm.cs
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/RBX2008/RBX2008Launcher/RBX2008Launcher/Resources/RBXLegacyIcon.ico b/RBX2008/RBX2008Launcher/RBX2008Launcher/Resources/RBXLegacyIcon.ico
deleted file mode 100644
index d166bf8..0000000
Binary files a/RBX2008/RBX2008Launcher/RBX2008Launcher/Resources/RBXLegacyIcon.ico and /dev/null differ
diff --git a/RBX2008/RBX2008Launcher/RBX2008Launcher/Resources/RBXLegacylogo.png b/RBX2008/RBX2008Launcher/RBX2008Launcher/Resources/RBXLegacylogo.png
deleted file mode 100644
index 5504e8c..0000000
Binary files a/RBX2008/RBX2008Launcher/RBX2008Launcher/Resources/RBXLegacylogo.png and /dev/null differ
diff --git a/RBX2008/RBX2008Launcher/RBX2008Launcher/app.config b/RBX2008/RBX2008Launcher/RBX2008Launcher/app.config
deleted file mode 100644
index 970c80b..0000000
--- a/RBX2008/RBX2008Launcher/RBX2008Launcher/app.config
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/RBX2008/game.lua b/RBX2008/game.lua
deleted file mode 100644
index 99abbab..0000000
--- a/RBX2008/game.lua
+++ /dev/null
@@ -1,15 +0,0 @@
-function Play(PlayerName)
- local plr = game.Players:CreateLocalPlayer(0);
- plr.Name = PlayerName;
- game:GetService("Visit");
- game:GetService("RunService"):run();
- plr:LoadCharacter();
- while true do wait(0.001)
- if plr.Character.Humanoid.Health == 0 then
- wait(5);
- plr:LoadCharacter();
- end
- end
-end
-
-_G.Play=Play;
diff --git a/RBX2008/settings.lua b/RBX2008/settings.lua
deleted file mode 100644
index 6c844e9..0000000
--- a/RBX2008/settings.lua
+++ /dev/null
@@ -1 +0,0 @@
-settings().Rendering.frameRateManager = 2;
\ No newline at end of file
diff --git a/RBXLegacyLauncher/RBXLegacyLauncher/CharacterCustomization.Designer.cs b/RBXLegacyLauncher/RBXLegacyLauncher/CharacterCustomization.Designer.cs
index 2719ccb..6dc6719 100644
--- a/RBXLegacyLauncher/RBXLegacyLauncher/CharacterCustomization.Designer.cs
+++ b/RBXLegacyLauncher/RBXLegacyLauncher/CharacterCustomization.Designer.cs
@@ -39,6 +39,7 @@ namespace RBXLegacyLauncher
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(CharacterCustomization));
this.button1 = new System.Windows.Forms.Button();
this.button2 = new System.Windows.Forms.Button();
+ this.button3 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// button1
@@ -61,12 +62,23 @@ namespace RBXLegacyLauncher
this.button2.UseVisualStyleBackColor = true;
this.button2.Click += new System.EventHandler(this.Button2Click);
//
+ // button3
+ //
+ this.button3.Location = new System.Drawing.Point(9, 132);
+ this.button3.Name = "button3";
+ this.button3.Size = new System.Drawing.Size(242, 54);
+ this.button3.TabIndex = 33;
+ this.button3.Text = "Clothing";
+ this.button3.UseVisualStyleBackColor = true;
+ this.button3.Click += new System.EventHandler(this.Button3Click);
+ //
// CharacterCustomization
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.SystemColors.ControlLightLight;
- this.ClientSize = new System.Drawing.Size(263, 137);
+ this.ClientSize = new System.Drawing.Size(263, 198);
+ this.Controls.Add(this.button3);
this.Controls.Add(this.button2);
this.Controls.Add(this.button1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
@@ -77,6 +89,7 @@ namespace RBXLegacyLauncher
this.Load += new System.EventHandler(this.CharacterCustomizationLoad);
this.ResumeLayout(false);
}
+ private System.Windows.Forms.Button button3;
private System.Windows.Forms.Button button2;
private System.Windows.Forms.Button button1;
}
diff --git a/RBXLegacyLauncher/RBXLegacyLauncher/CharacterCustomization.cs b/RBXLegacyLauncher/RBXLegacyLauncher/CharacterCustomization.cs
index 04e260a..b8c5e41 100644
--- a/RBXLegacyLauncher/RBXLegacyLauncher/CharacterCustomization.cs
+++ b/RBXLegacyLauncher/RBXLegacyLauncher/CharacterCustomization.cs
@@ -58,5 +58,11 @@ namespace RBXLegacyLauncher
CharacterCustomization_HatMenu chats = new CharacterCustomization_HatMenu();
chats.Show();
}
+
+ void Button3Click(object sender, EventArgs e)
+ {
+ CharacterCustomization_ClothingMenu clothes = new CharacterCustomization_ClothingMenu();
+ clothes.Show();
+ }
}
}
diff --git a/RBXLegacyLauncher/RBXLegacyLauncher/CharacterCustomization_ClothingMenu.Designer.cs b/RBXLegacyLauncher/RBXLegacyLauncher/CharacterCustomization_ClothingMenu.Designer.cs
new file mode 100644
index 0000000..e17b9f5
--- /dev/null
+++ b/RBXLegacyLauncher/RBXLegacyLauncher/CharacterCustomization_ClothingMenu.Designer.cs
@@ -0,0 +1,145 @@
+/*
+ * Created by SharpDevelop.
+ * User: BITL
+ * Date: 6/17/2017
+ * Time: 8:41 AM
+ *
+ * To change this template use Tools | Options | Coding | Edit Standard Headers.
+ */
+namespace RBXLegacyLauncher
+{
+ partial class CharacterCustomization_ClothingMenu
+ {
+ ///
+ /// Designer variable used to keep track of non-visual components.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Disposes resources used by the form.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing) {
+ if (components != null) {
+ components.Dispose();
+ }
+ }
+ base.Dispose(disposing);
+ }
+
+ ///
+ /// This method is required for Windows Forms designer support.
+ /// Do not change the method contents inside the source code editor. The Forms designer might
+ /// not be able to load this method if it was changed manually.
+ ///
+ private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(CharacterCustomization_ClothingMenu));
+ this.label1 = new System.Windows.Forms.Label();
+ this.label2 = new System.Windows.Forms.Label();
+ this.label3 = new System.Windows.Forms.Label();
+ this.textBox1 = new System.Windows.Forms.TextBox();
+ this.textBox2 = new System.Windows.Forms.TextBox();
+ this.textBox3 = new System.Windows.Forms.TextBox();
+ this.textBox4 = new System.Windows.Forms.TextBox();
+ this.label4 = new System.Windows.Forms.Label();
+ this.SuspendLayout();
+ //
+ // label1
+ //
+ this.label1.Location = new System.Drawing.Point(12, 9);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(53, 15);
+ this.label1.TabIndex = 0;
+ this.label1.Text = "T-Shirt ID";
+ //
+ // label2
+ //
+ this.label2.Location = new System.Drawing.Point(12, 37);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(42, 15);
+ this.label2.TabIndex = 2;
+ this.label2.Text = "Shirt ID";
+ //
+ // label3
+ //
+ this.label3.Location = new System.Drawing.Point(12, 62);
+ this.label3.Name = "label3";
+ this.label3.Size = new System.Drawing.Size(49, 15);
+ this.label3.TabIndex = 3;
+ this.label3.Text = "Pants ID";
+ //
+ // textBox1
+ //
+ this.textBox1.Location = new System.Drawing.Point(71, 6);
+ this.textBox1.Name = "textBox1";
+ this.textBox1.Size = new System.Drawing.Size(100, 20);
+ this.textBox1.TabIndex = 4;
+ this.textBox1.TextChanged += new System.EventHandler(this.TextBox1TextChanged);
+ //
+ // textBox2
+ //
+ this.textBox2.Location = new System.Drawing.Point(71, 32);
+ this.textBox2.Name = "textBox2";
+ this.textBox2.Size = new System.Drawing.Size(100, 20);
+ this.textBox2.TabIndex = 5;
+ this.textBox2.TextChanged += new System.EventHandler(this.TextBox2TextChanged);
+ //
+ // textBox3
+ //
+ this.textBox3.Location = new System.Drawing.Point(71, 59);
+ this.textBox3.Name = "textBox3";
+ this.textBox3.Size = new System.Drawing.Size(100, 20);
+ this.textBox3.TabIndex = 6;
+ this.textBox3.TextChanged += new System.EventHandler(this.TextBox3TextChanged);
+ //
+ // textBox4
+ //
+ this.textBox4.Location = new System.Drawing.Point(71, 86);
+ this.textBox4.Name = "textBox4";
+ this.textBox4.Size = new System.Drawing.Size(100, 20);
+ this.textBox4.TabIndex = 7;
+ this.textBox4.TextChanged += new System.EventHandler(this.TextBox4TextChanged);
+ //
+ // label4
+ //
+ this.label4.Location = new System.Drawing.Point(12, 89);
+ this.label4.Name = "label4";
+ this.label4.Size = new System.Drawing.Size(49, 15);
+ this.label4.TabIndex = 8;
+ this.label4.Text = "Face ID";
+ //
+ // CharacterCustomization_ClothingMenu
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.BackColor = System.Drawing.SystemColors.ControlLightLight;
+ this.ClientSize = new System.Drawing.Size(179, 113);
+ this.Controls.Add(this.label4);
+ this.Controls.Add(this.textBox4);
+ this.Controls.Add(this.textBox3);
+ this.Controls.Add(this.textBox2);
+ this.Controls.Add(this.textBox1);
+ this.Controls.Add(this.label3);
+ this.Controls.Add(this.label2);
+ this.Controls.Add(this.label1);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
+ this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+ this.Name = "CharacterCustomization_ClothingMenu";
+ this.Text = "Clothing";
+ this.Load += new System.EventHandler(this.CharacterCustomization_ClothingMenuLoad);
+ this.ResumeLayout(false);
+ this.PerformLayout();
+ }
+ private System.Windows.Forms.Label label4;
+ private System.Windows.Forms.TextBox textBox4;
+ private System.Windows.Forms.TextBox textBox3;
+ private System.Windows.Forms.TextBox textBox2;
+ private System.Windows.Forms.TextBox textBox1;
+ private System.Windows.Forms.Label label3;
+ private System.Windows.Forms.Label label2;
+ private System.Windows.Forms.Label label1;
+ }
+}
diff --git a/RBXLegacyLauncher/RBXLegacyLauncher/CharacterCustomization_ClothingMenu.cs b/RBXLegacyLauncher/RBXLegacyLauncher/CharacterCustomization_ClothingMenu.cs
new file mode 100644
index 0000000..8b575ff
--- /dev/null
+++ b/RBXLegacyLauncher/RBXLegacyLauncher/CharacterCustomization_ClothingMenu.cs
@@ -0,0 +1,120 @@
+/*
+ * Created by SharpDevelop.
+ * User: BITL
+ * Date: 6/17/2017
+ * Time: 8:41 AM
+ *
+ * To change this template use Tools | Options | Coding | Edit Standard Headers.
+ */
+using System;
+using System.Drawing;
+using System.Windows.Forms;
+
+namespace RBXLegacyLauncher
+{
+ ///
+ /// Description of CharacterCustomization_ClothingMenu.
+ ///
+ public partial class CharacterCustomization_ClothingMenu : Form
+ {
+ public CharacterCustomization_ClothingMenu()
+ {
+ //
+ // The InitializeComponent() call is required for Windows Forms designer support.
+ //
+ InitializeComponent();
+
+ //
+ // TODO: Add constructor code after the InitializeComponent() call.
+ //
+ }
+
+ void TextBox1TextChanged(object sender, EventArgs e)
+ {
+ int parsedValue;
+ if (int.TryParse(textBox1.Text, out parsedValue))
+ {
+ if (textBox1.Text.Equals(""))
+ {
+ GlobalVars.Custom_TShirt = 0;
+ }
+ else
+ {
+ GlobalVars.Custom_TShirt = Convert.ToInt32(textBox1.Text);
+ }
+ }
+ else
+ {
+ GlobalVars.Custom_TShirt = 0;
+ }
+ }
+
+ void TextBox2TextChanged(object sender, EventArgs e)
+ {
+ int parsedValue;
+ if (int.TryParse(textBox2.Text, out parsedValue))
+ {
+ if (textBox2.Text.Equals(""))
+ {
+ GlobalVars.Custom_Shirt = 0;
+ }
+ else
+ {
+ GlobalVars.Custom_Shirt = Convert.ToInt32(textBox2.Text);
+ }
+ }
+ else
+ {
+ GlobalVars.Custom_Shirt = 0;
+ }
+ }
+
+ void TextBox3TextChanged(object sender, EventArgs e)
+ {
+ int parsedValue;
+ if (int.TryParse(textBox3.Text, out parsedValue))
+ {
+ if (textBox3.Text.Equals(""))
+ {
+ GlobalVars.Custom_Pants = 0;
+ }
+ else
+ {
+ GlobalVars.Custom_Pants = Convert.ToInt32(textBox3.Text);
+ }
+ }
+ else
+ {
+ GlobalVars.Custom_Pants = 0;
+ }
+ }
+
+ void TextBox4TextChanged(object sender, EventArgs e)
+ {
+ int parsedValue;
+ if (int.TryParse(textBox4.Text, out parsedValue))
+ {
+ if (textBox4.Text.Equals(""))
+ {
+ GlobalVars.Custom_Face = 0;
+ }
+ else
+ {
+ GlobalVars.Custom_Face = Convert.ToInt32(textBox4.Text);
+ }
+ }
+ else
+ {
+ GlobalVars.Custom_Face = 0;
+ }
+ }
+
+ void CharacterCustomization_ClothingMenuLoad(object sender, EventArgs e)
+ {
+ textBox1.Text = GlobalVars.Custom_TShirt.ToString();
+ textBox2.Text = GlobalVars.Custom_Shirt.ToString();
+ textBox3.Text = GlobalVars.Custom_Pants.ToString();
+ textBox4.Text = GlobalVars.Custom_Face.ToString();
+ }
+ }
+}
diff --git a/RBXLegacyLauncher/RBXLegacyLauncher/CharacterCustomization_ClothingMenu.resx b/RBXLegacyLauncher/RBXLegacyLauncher/CharacterCustomization_ClothingMenu.resx
new file mode 100644
index 0000000..8fcf2e5
--- /dev/null
+++ b/RBXLegacyLauncher/RBXLegacyLauncher/CharacterCustomization_ClothingMenu.resx
@@ -0,0 +1,6293 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+
+ AAABAAYAEBAAAAAAIABoBAAAZgAAACAgAAAAACAAqBAAAM4EAAAwMAAAAAAgAKglAAB2FQAAQEAAAAAA
+ IAAoQgAAHjsAAICAAAAAACAAKAgBAEZ9AAAAAAAAAAAgACggBABuhQEAKAAAABAAAAAgAAAAAQAgAAAA
+ AABABAAAAAAAAAAAAAAAAAAAAAAAAP//////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////95eXn/1dXV/25ubv/Q0ND/iYmJ/6Wl
+ pf+hoaH/hYWF/4mJif/V1dX/srKy/9zc3P//////////////////////f39///////9ubm7/0NDQ/4mJ
+ if/FxcX/sbGx/5WVlf+JiYn/1dXV/5SUlP/Kysr//////////////////////8/Pz///////+vr///Ly
+ ///X1///zs7//+Li///39///////////////////6+v/////////////xsb//5mZ//+MjP//+Pj//4mJ
+ //9hYf//q6v//9DQ//+8vP//dnb//4GB///l5f//2Nj//5CQ//+Rkf//5ub//66u///x8f//mZn//4mJ
+ ///y8v//mpr//29v//96ev//k5P//0pK///x8f//nZ3//5iY////////l5f//+rq//+rq///9PT//8vL
+ ///19f//ra3//1BQ///9/f//lpb//9vb//+Njf//h4f///39////////t7f//8vL////////qKj///f3
+ //+dnf//kZH//+bm//9jY///+vr//4eH//++vv//iIj//4mJ///5+f///////8zM//+fn////v7//6Wl
+ ///6+v//np7//6ys///V1f//jY3///j4//+MjP//zs7//2Ji///t7f///v7//5yc///7+///4+P//4uL
+ //+iov///Pz//83N///Pz///2Nj//21t//+hof//oaH//4uL//+YmP//tLT//7Gx///Hx///ior//5iY
+ ///c3P//w8P//6Cg//+goP//nJz//7+////9/f///////////////////////9TU//+srP////////Dw
+ ///a2v//////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//KAAAACAAAABAAAAAAQAgAAAAAACAEAAAAAAAAAAA
+ AAAAAAAAAAAAAP//////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////////////////////3t7
+ e/9ra2v/f39//9fX1/97e3v/a2tr/39/f//X19f/u7u7/2tra/9zc3P/w8PD/5+fn///////e3t7/8PD
+ w/+7u7v/a2tr/4uLi//r6+v//////3t7e//Dw8P/////////////////////////////////////////
+ ////////T09P/6+vr////////////09PT/+Dg4P/6+vr//////9PT0//r6+v/6+vr/+vr6//Z2dn/39/
+ f/8nJyf/r6+v/09PT/+vr6//8/Pz/+vr6///////T09P/6+vr///////////////////////////////
+ //////////////////9PT0//r6+v////////////T09P/4ODg//r6+v//////09PT/+vr6//x8fH/9fX
+ 1/9/f3///////09PT/+vr6//T09P/6+vr//z8/P/6+vr/7u7u/9XV1f/n5+f/+vr6///////////////
+ /////////////////////////////09PT/+vr6////////////97e3v/a2tr/39/f//X19f/u7u7/2tr
+ a/+Li4v/6+vr/8fHx/9/f3//a2tr/+vr6/+7u7v/a2tr/4uLi//r6+v/e3t7/8PDw//b29v/w8PD////
+ ////////////////////////////////////////e3t7/8PDw///////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////////////////////+zs
+ ///Nzf///////9XV//+Li///lJT//6io//+8vP//z8///+Pj///6+v//////////////////////////
+ ////////9fX//7m5/////////////////////////////7u7//+Pj///j4///4+P//+ysv//////////
+ ///o6P//Ojr//zo6//83N///YGD//6+v//+srP//mJj//4OD//9vb///Q0P//5SU//+lpf//vb3/////
+ //////////////z8//9TU///V1f//1ZW///k5P//////////////////YGD//5mZ//+vr///qqr//0ZG
+ ////////5eX//zk5///IyP//8/P//yIi//+env/////////////////////////////i4v//Hx///1ZW
+ //9MTP//l5f////////+/v//aWn//5iY////////ysr//z8///+dnf////////////9eXv//4+P/////
+ ///+/v//PT3//+Hh//84OP//zs7/////////////Pz///1JS//93d///b2///0ZG//8zM////v7//4yM
+ //8MDP//+vr///v7//9ubv//bW3//4KC//97e//////////////+/v//WVn//62t/////////////1tb
+ ///m5v////////////8sLP//ODj//9TU//////////////39//8tLf//Ojr//7m5//8+Pv//9fX//0lJ
+ ///U1P//i4v//wQE///Q0P////////////+Zmf//ZGT///7+/////////////5CQ//93d///////////
+ ////////WFj//+jo/////////////z4+///Z2f/////////////W1v//Q0P//x0d///5+f///////y4u
+ //81Nf//dHT///v7////////fHz//1ZW///7+//////////////////////////////Cwv//SEj///v7
+ //////////////////9WVv//6+v/////////////8PD/////////////0tL//w4O//+env//QkL/////
+ //////////////b2/////////v7//4iI//8yMv//dHT//1dX///6+v//////////////////5ub//zQ0
+ ///q6v///////////////////////1NT///u7v////////j4//8/P///bm7///Dw////////3t7//1pa
+ //8XF///+fn///////+6uv//x8f///b2////////0dH//yQk///k5P//MjL//+fn////////////////
+ ///u7v//S0v//6Cg////////////////////////T0////Dw/////////Pz//z8///+wsP//Njb//7u7
+ /////////////xwc///39///+/v//yUl//91df//JSX//97e///k5P//Rkb//z4+///Q0P//////////
+ ///////////////////6+v//aGj//3d3///9/f////////////9NTf//8/P/////////////Pj7/////
+ //+zs///goL/////////////Ghr///7+///n5///Hx///3Jy//9TU////////5ub//8LC///uLj/////
+ /////////////+jo///09P/////////////+/v//j4///1FR///y8v///////0pK///39///////////
+ //89Pf//xsb//zc3///W1v////////////8fH/////////39///g4P//vr7//+np///+/v//R0f//5qa
+ ///////////////////+/v//UFD//0RE///x8f/////////////+/v//UVH//5aW////////SEj///n5
+ /////////////zc3//9WVv//6en//////////////////x0d///R0f//6ur///39/////////v7//3Jy
+ //9PT///R0f//+Tk/////////////6am//9wcP//urr//0BA///t7f///////319//90dP///v7/////
+ //9ERP///Pz/////////////////////////////3t7//4SE//86Ov//YGD//3Jy//9YWP//RUX//0ND
+ //83N///hIT////////MzP//OTn//7Ky///p6f//ODj///T0////////v7///zw8//95ef//bGz///7+
+ /////////////0JC//9+fv//e3v//3h4//90dP//cHD//0JC//9UVP//rKz///f3////////////////
+ ///////////////////////////////////z8///YWH//yUl//+/v///////////////////xcX//3Bw
+ ///9/f//////////////////z8///8PD///Gxv//yMj//8vL///Nzf//8PD/////////////////////
+ ////////////////////////////////////////////////////////zc3/////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAwAAAAYAAAAAEAIAAAAAAAgCUAAAAA
+ AAAAAAAAAAAAAAAAAAD//////v7+/////////////v7+///////+/v7////////////+/v7/////////
+ ///+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+
+ /v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+
+ /v/+/v7///////7+/v/+/v7///////7+/v//////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////////////////////+/v7//v7+//7+/v/+/v7//v7+//7+
+ /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+ /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+ /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v///////v7+////
+ /////////v7+///////+/v7////////////+/v7////////////+/v7///////7+/v/+/v7///////7+
+ /v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+
+ /v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+
+ /v//////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+ /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+ /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+ /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v///////v7+/////////////v7+//////+qqqr/X19f/19f
+ X/9fX1//ZGRk//////+qqqr/X19f/19fX/9fX1//ZGRk//7+/v/+/v7/goKC/19fX/9fX1//ZGRk//7+
+ /v+qqqr/3Nzc//7+/v+qqqr/ZGRk//7+/v/+/v7/goKC/19fX/9fX1//3Nzc//7+/v/+/v7/+vr6/19f
+ X/+0tLT///////7+/v/+/v7///////7+/v/+/v7///////7+/v//////////////////////////////
+ //93d3f/BgYG/9/f3//f39//4ODg//////93d3f/BgYG/9/f3//f39//4ODg//////+IiIj/DQ0N/9/f
+ 3//f39//ODg4//////93d3f/rq6u/9/f3/9oaGj/BwcH//////+IiIj/DQ0N/9/f3//f39//aGho////
+ ////////9/f3/wAAAP+Hh4f////////////////////////////////////////////+/v7//v7+//7+
+ /v/+/v7//v7+//7+/v93d3f/BwcH//7+/v/+/v7//v7+//7+/v93d3f/BAQE/5+fn//S0tL//v7+//7+
+ /v93d3f/BwcH//7+/v/MzMz/Kioq//7+/v93d3f/SkpK/19fX/8sLCz/BwcH//7+/v93d3f/BwcH//7+
+ /v/+/v7//v7+//7+/v/+/v7/9/f3/wAAAP+Hh4f//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+ /v///////v7+/////////////v7+//////93d3f/BwcH///////+/v7///////////93d3f/BAQE/5+f
+ n//S0tL///////7+/v93d3f/BwcH//7+/v/MzMz/oqKi//7+/v93d3f/x8fH//7+/v93d3f/BwcH//7+
+ /v93d3f/BwcH//7+/v/+/v7///////7+/v/+/v7/f39//ywsLP99fX3/3Nzc//7+/v/+/v7///////7+
+ /v/+/v7///////7+/v////////////////////////////////93d3f/BwcH////////////////////
+ //93d3f/BgYG/9/f3//f39//4ODg//////+IiIj/DQ0N/9/f3//f39//aGho//////+IiIj/tbW1/9/f
+ 3/9oaGj/Hx8f//////+IiIj/DQ0N/9/f3//f39//aGho//////+IiIj/DQ0N/+jo6P/u7u7/UFBQ////
+ ///////////////////////////////////+/v7//v7+//7+/v/+/v7//v7+//7+/v93d3f/BwcH//7+
+ /v/+/v7//v7+//7+/v+qqqr/X19f/19fX/9fX1//ZGRk//7+/v/+/v7/goKC/19fX/9fX1//3Nzc//7+
+ /v/+/v7/goKC/19fX/9fX1//3Nzc//7+/v/+/v7/goKC/19fX/9fX1//3Nzc//7+/v+qqqr/ZGRk//7+
+ /v/+/v7/h4eH//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v///////v7+/////////////v7+////
+ //93d3f/BwcH///////+/v7////////////+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+
+ /v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+
+ /v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+/v//////////////
+ ///////////////////u7u7/4ODg////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+/9XV
+ /v+Pj/7//v7+//7+/v/Y2P7/fHz+/0hI/v9aWv7/bm7+/4GB/v+Wlv7/qan+/729/v/R0f7/5ub+//7+
+ /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7/mZn+/7Oz/v/+/v7//v7+//7+
+ /v/+/v7//v7+//7+/v///////v7+/9ra///X1///19f+/9fX///X1/7/19f//+rq///+/v7/////////
+ ///+/v7/zs7//xQU/v8MDP7/XV3//zU1/v8JCf7/VVX//5aW/v+Hh/7/c3P//19f/v9LS/7/Nzf//yMj
+ /v8PD/7/AwP//+vr/v/19f7/oaH///39/v/+/v7///////7+/v/+/v7///////7+/v+pqf7/Dg7//xQU
+ /v9VVf7/5eX///7+/v/+/v7///////7+/v///////////xUV//8GBv//Bwf//wcH//8HB///AwP//3R0
+ ///////////////////Jyf//EhL//35+///c3P//JSX//wYG///n5///////////////////////////
+ ///////////////////9/f//IyP//6Cg//9AQP//BAT//1pa///29v///////////////////////8DA
+ //8MDP//trb//+rq//9dXf//ERH//5aW///8/P/////////////+/v7//v7+/w8P/v/Pz/7//v7+//7+
+ /v/+/v7/dXX+/2Zm/v/+/v7//v7+/8TE/v8PD/7/iIj+//7+/v/+/v7/yMj+/wAA/v8+Pv7/7u7+//7+
+ /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7/ZGT+/wUF/v9FRf7/29v+/zg4/v83N/7/5ub+//7+
+ /v/+/v7/09P+/xER/v+dnf7//v7+//7+/v/+/v7/urr+/yMj/v86Ov7/6+v+//7+/v///////v7+/w8P
+ ///V1f///v7+///////+/v7/g4P//1hY///+/v7/vr7//w0N//+Rkf7///////7+/v/+/v7/zc3//xER
+ /v9HR/7/Kyv//9bW/v+xsf7/hob//1tb/v8wMP7/tbX///7+/v/o6P7/LS3//xYW/v/39/7///////f3
+ /v9cXP7/HR3//83N/v/j4/7/HR3//4CA/v/+/v7///////7+/v/+/v7/+fn//zw8/v9UVP7//v7///7+
+ /v///////f3//wwM///V1f//////////////////kZH//0lJ//+4uP//DAz//5mZ////////////////
+ ////////x8f//xgY//+Skv//AQH//0xM//8AAP//UVH//35+//9ERP//b2////////9OTv//DQ3//wEB
+ ///o6P/////////////+/v//hob//w0N//8lJf//ZGT///7+///////////////////+/v//b2///ykp
+ ///y8v/////////////+/v7//f3+/wwM/v/b2/7//v7+//7+/v/+/v7/n5/+/xcX/v8LC/7/o6P+//7+
+ /v/+/v7//v7+//7+/v/+/v7/sbH+/wAA/v8dHf7/srL+//Ly/v8AAP7/6Oj+//7+/v9sbP7/MDD+//7+
+ /v/n5/7/Kyv+/wAA/v+pqf7//v7+//7+/v/+/v7//v7+/6+v/v9WVv7/+vr+//7+/v/+/v7//v7+//7+
+ /v+lpf7/Dg7+/9bW/v/+/v7//v7+//7+/v//////+/v+/wkJ///c3P///v7+///////+/v7/rKz//wYG
+ //+qqv7////////////+/v7///////j4/v+AgP7/Bwf//xkZ/v/x8f7///////7+/v8PD/7/RUX//0lJ
+ /v8YGP7/wcH///7+/v/+/v7/6ur//y4u/v9DQ/7/9/f///7+/v/+/v7///////7+/v/+/v7///////7+
+ /v/+/v7//////9LS/v8MDP7/rKz///7+/v/+/v7///////7+/v//////+/v//wgI///g4P//////////
+ ////////w8P//7Ky////////////////////////w8P//yoq//8qKv//goL//ygo////////////////
+ //+2tv//iYn//21t///j4///////////////////2Nj//0BA//8AAP//SEj///X1////////////////
+ ////////////////////////7+///yYm//92dv///v7////////////////////////+/v7/+fn+/wUF
+ /v/h4f7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/v7/7/RET+/wAA/v+Dg/7/rq7+/ysr
+ /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//39/v9zc/7/BQX+/1BQ/v/R0f7/Nzf+/0ND
+ /v/09P7//v7+//7+/v/+/v7//v7+//7+/v/9/f7/T0/+/z4+/v/7+/7//v7+//7+/v/+/v7//v7+//7+
+ /v//////+fn+/wQE///l5f///v7+///////+/v7/paX//19f/v+Bgf7/9fX///7+/v/+/v7//v7//7W1
+ /v8tLf7/CQn//ykp/v/9/f7///////7+/v/+/v7///////7+/v/+/v7///////7+/v/d3f7/SUn//xgY
+ /v/8/P7/rKz//wcH/v/Jyf7///////7+/v/+/v7///////7+/v/+/v7/gYH//xER/v+4uP7///////7+
+ /v/+/v7///////7+/v//////9/f//wEB///n5///////////////////dnb//zIy//81Nf//IyP//7i4
+ ///+/v/////////////7+///e3v//wAA///s7P////////////8cHP//Hx///zAw//92dv//5eX/////
+ ////////kZH//0RE///Pz///Dw///6Sk/////////////////////////////////////////v7//6io
+ //8NDf//kpL///7+///////////////////+/v7/9/f+/wAA/v/q6v7//v7+//7+/v/+/v7/fX3+/11d
+ /v/7+/7/jo7+/wwM/v9oaP7//v7+//7+/v/+/v7/qan+/wAA/v/29v7//v7+//b2/v8AAP7/ra3+/6qq
+ /v8iIv7/ODj+//7+/v/+/v7/R0f+/3Fx/v8bG/7/hYX+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+ /v/+/v7//v7+//7+/v/Hx/7/GBj+/2ho/v/6+v7//v7+//7+/v//////9PT+/wAA///t7f///v7+////
+ ///+/v7/hob//1ZW/v/+/v7//////5mZ/v87O/7///////7+/v/+/v7/paX//wAA/v/9/f7//////+Dg
+ /v8AAP7/nJz//6ys/v8KCv7/y8v///7+/v/z8/7/CAj//w4O/v9mZv7//v7///7+/v/+/v7///////7+
+ /v/+/v7//Pz///7+/v/+/v7///////7+/v/+/v7/4eH//y8v/v9CQv7/7Oz///7+/v//////8fH//wAA
+ ///w8P//////////////////jo7//09P////////7u7//z8///9hYf//////////////////oqL//wkJ
+ /////////////+Tk//9aWv//ODj//xUV//91df////////////+ysv//AAD//0hI///6+v//////////
+ ///////////////////j4///OTn//+Tk//////////////////////////////Ly//9NTf//JSX//9jY
+ ///+/v7/7+/+/wAA/v/z8/7//v7+//7+/v/+/v7/lJT+/0ZG/v/Z2f7/KCj+/0VF/v/t7f7//v7+//7+
+ /v/+/v7/np7+/xER/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/9/f7//v7+//7+/v9RUf7/Kyv+//Hx
+ /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v9MTP7/Fhb+/yMj/v/g4P7//v7+//7+/v/+/v7//v7+//7+
+ /v9xcf7/Gxv+/9zc/v//////6+v+/wAA///29v///v7+///////+/v7/nJz//wUF/v8DA/7/cHD///v7
+ /v/+/v7///////7+/v/+/v7/l5f//xoa/v/+/v7///////7+/v/+/v7///////7+/v/+/v7//f3//2xs
+ /v8XF/7/Cgr//42N/v/9/f7///////7+/v/+/v7//////6Oj/v8UFP7/5+f//2dn/v8eHv7/2tr///7+
+ /v/+/v7//v7//3l5/v8YGP7/19f///7+/v//////6ur//wAA///5+f//////////////////3t7//7u7
+ ///g4P///v7///////////////////7+///V1f//VFT//wQE//80NP//TU3//2dn//+AgP//mZn//7Ky
+ ///Ly///a2v//yMj///g4P//wsL//x8f//9JSf//6Oj/////////////5+f//xMT//+np/////////39
+ //9tbf//Ghr//9XV///+/v//gYH//xQU///T0//////////////+/v7/5eX+/wAA/v/7+/7//v7+//7+
+ /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/j4/7/i4v+/zEx/v8HB/7/T0/+/6am/v+xsf7/mJj+/35+
+ /v9lZf7/S0v+/zIy/v8YGP7/Jyf+/+Pj/v/+/v7//v7+/+7u/v9UVP7/GRn+/7q6/v/+/v7/VFT+/1BQ
+ /v/+/v7//v7+//7+/v/9/f7/dXX+/xUV/v9ubv7/ERH+/83N/v/+/v7//v7+//7+/v//////5OT+/wAA
+ //++vv//ubn+/7i4//+0tP7/sbH//66u/v+qqv7/lJT//0BA/v8FBf7/QED//5qa/v/t7f7///////7+
+ /v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+/v/+/v7/m5v//w0N
+ /v9QUP7/EhL//+bm/v/+/v7///////7+/v/+/v7//v7//319/v8ODv7/yMj///7+/v/+/v7///////7+
+ /v//////4+P//yAg//8mJv//Jib//ysr//8sLP//MDD//zIy//80NP//QED//4uL///i4v//////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////9bW//8wMP//oaH///////////////////////////////////7+///h4f//////////
+ ///////////////////+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+ /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+ /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/5+f7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+ /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v///////v7+/////////////v7+///////+/v7///////7+
+ /v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+
+ /v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+
+ /v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+/v//////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////////////////////////////////////+/v7//v7+//7+
+ /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+ /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+ /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+ /v///////v7+/////////////v7+///////+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+
+ /v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+
+ /v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+
+ /v/+/v7///////7+/v//////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+ /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+ /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+ /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v///////v7+/////////////v7+////
+ ///+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+
+ /v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+
+ /v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+/v/+/v7//v7+//7+
+ /v/+/v7//v7+//7+/v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+
+ /v/+/v7///////7+/v/+/v7///////7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+ /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+ /v///////////////////////v7+////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////v7+/////////////v7+///////+/v7///////7+/v/+/v7///////7+
+ /v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+
+ /v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+
+ /v/+/v7///////7+/v/+/v7///////7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7///////7+
+ /v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+
+ /v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+
+ /v/+/v7///////7+/v/+/v7///////7+/v/+/v7///////7+/v///////////////////////v7+////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////////8AAAAAAAD//wAA
+ AAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA
+ //8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAA
+ AAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA
+ //8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAA
+ AAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA
+ //8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAA
+ AAAAAP//AAAAAAAA//8oAAAAQAAAAIAAAAABACAAAAAAAABCAAAAAAAAAAAAAAAAAAAAAAAA////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////8/Pz/9/f3//f39//39/f/9/f3//f39//6+v
+ r///////z8/P/39/f/9/f3//f39//39/f/9/f3//r6+v////////////z8/P/39/f/9/f3//f39//39/
+ f/+vr6///////8/Pz/+vr6/////////////Pz8//f39//6+vr////////////8/Pz/9/f3//f39//39/
+ f/+vr6///////////////////////8/Pz/9/f3//r6+v////////////////////////////////////
+ //////////////////////////////////////////////////////////////////+fn5//AAAA/y8v
+ L/9/f3//f39//39/f/+vr6///////5+fn/8AAAD/Ly8v/39/f/9/f3//f39//6+vr///////z8/P/09P
+ T/8vLy//f39//39/f/9PT0//X19f//////+fn5//X19f////////////n5+f/wAAAP9fX1///////8/P
+ z/9PT0//Ly8v/39/f/9/f3//f39//6+vr/////////////////+fn5//AAAA/19fX///////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////n5+f/wAAAP9fX1////////////////////////////+fn5//AAAA/19fX///////////////
+ /////////////5+fn/8AAAD/X19f////////////n5+f/19fX///////n5+f/y8vL/9/f3//f39//09P
+ T/8AAAD/X19f//////+fn5//AAAA/19fX////////////8/Pz/+vr6//////////////////n5+f/wAA
+ AP9fX1//////////////////////////////////////////////////////////////////////////
+ /////////////////////////////5+fn/8AAAD/X19f////////////////////////////n5+f/wAA
+ AP8vLy//f39//6+vr/////////////////+fn5//AAAA/19fX///////z8/P/09PT/9fX1///////5+f
+ n/8vLy//f39//39/f/9PT0//AAAA/19fX///////n5+f/wAAAP9fX1//////////////////////////
+ /////////////5+fn/8AAAD/X19f////////////////////////////////////////////////////
+ //////////////////////////////////////////////////+fn5//AAAA/19fX///////////////
+ /////////////5+fn/8AAAD/Ly8v/39/f/+vr6//////////////////n5+f/wAAAP9fX1///////8/P
+ z/9/f3//r6+v//////+fn5//X19f////////////n5+f/wAAAP9fX1///////5+fn/8AAAD/X19f////
+ /////////////////////////////8/Pz/9PT0//Ly8v/39/f/+vr6//////////////////////////
+ ////////////////////////////////////////////////////////////////////////n5+f/wAA
+ AP9fX1////////////////////////////+fn5//AAAA/19fX////////////////////////////5+f
+ n/8AAAD/X19f////////////z8/P/6+vr///////n5+f/19fX////////////5+fn/8AAAD/X19f////
+ //+fn5//AAAA/19fX////////////8/Pz/+vr6///////8/Pz/9PT0//Ly8v/6+vr//Pz8//f39//6+v
+ r///////////////////////////////////////////////////////////////////////////////
+ /////////////5+fn/8AAAD/X19f////////////////////////////n5+f/wAAAP8vLy//f39//39/
+ f/9/f3//r6+v///////Pz8//T09P/y8vL/9/f3//f39//39/f/+vr6///////8/Pz/9/f3//f39//39/
+ f/9PT0//Ly8v/6+vr///////z8/P/09PT/8vLy//f39//39/f/9/f3//r6+v//////+fn5//AAAA/19f
+ X////////////5+fn/9fX1//////////////////////////////////////////////////////////
+ //////////////////////////////////+fn5//AAAA/19fX////////////////////////////8/P
+ z/9/f3//f39//39/f/9/f3//f39//6+vr////////////8/Pz/9/f3//f39//39/f/+vr6//////////
+ ////////z8/P/39/f/9/f3//f39//6+vr//////////////////Pz8//f39//39/f/9/f3//r6+v////
+ ////////z8/P/39/f/+vr6/////////////Pz8//r6+v////////////////////////////////////
+ ////////////////////////////////////////////////////////n5+f/wAAAP9fX1//////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////////////////////8/P
+ z/9/f3//r6+v////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////+0tP//R0f//+/v/////////////9ra//9+fv//IyP//w0N//8gIP//NDT//0hI
+ //9bW///cHD//4OD//+Xl///qqr//76+///S0v//7u7/////////////////////////////////////
+ ////////////////////////////////////////2dn//zQ0//+1tf//////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////+srP//BQX//wAA//8uLv//oKD//zg4//8AAP//BAT//0pK
+ //93d///Y2P//09P//86Ov//Jyf//xIS//8BAf//AAD//wAA//8AAP//AAD//0lJ/////////////87O
+ ///w8P//////////////////////////////////////////////////5+f//yIi//8CAv//AAD//1ZW
+ ///m5v/////////////////////////////////////////////Ozv//Hx///x8f//8fH///Hx///x8f
+ //8fH///Hx///x8f//+trf////////////////////////////+lpf//AwP//zU1//+urv//Dg7//wAA
+ //8GBv//k5P//+np////////////////////////////////////////+/v//+np///V1f//wMD//01N
+ //8MDP//+vr//729//8MDP//KSn//9zc////////////////////////////////////////8/P//zQ0
+ //8ODv//zc3//4+P//8MDP//EBD//5iY///9/f//////////////////////////////////w8P//wAA
+ //9HR///X1///19f//9fX///X1///1dX//8AAP//lJT///////////////////////+fn///AgL//zw8
+ ///x8f///////8/P//8YGP//BQX//8PD////////////////////////////////////////////////
+ //////////////////+lpf//AAD//35+//8JCf//LCz//xQU//8TE///v7//////////////////////
+ ////////+vr//0lJ//8FBf//u7v/////////////4OD//0xM//8AAP//Ozv//9TU////////////////
+ /////////////7+///8AAP//v7/////////////////////////z8///AAD//4aG////////////////
+ //+Xl///AQH//0ND///z8///////////////////a2v//wAA//8ICP//rq7/////////////////////
+ ////////////////////////////////////////5eX//wAA//8AAP//Nzf//+3t///d3f//Kyv//wUF
+ //+amv///////////////////v7//2Fh//8AAP//oqL/////////////////////////////qan//xgY
+ //8FBf//np7///////////////////////+/v///AAD//8fH/////////////////////////v7//wMD
+ //93d/////////////+Pj///AAD//0tL///29v///////////////////////2ho//8VFf//NTX//wIC
+ //+Wlv////////Ly///Jyf//np7//3Jy//9HR///Y2P//////////////////5+f//8BAf//Hx////Hx
+ //////////////Hx//9KSv//AAD//3Bw///7+////////35+//8AAP//hob/////////////////////
+ /////////////+/v//8lJf//FRX//+Li////////////////////////urr//wAA///IyP//////////
+ //////////////////8QEP//aWn///////+Hh///AAD//1JS///5+f//////////////////////////
+ //9hYf//Hx////Hx//8gIP//AAD//0hI//8BAf//AAD//wAA//8ICP//ExP//w8P///7+////////5KS
+ //8BAf//CQn//woK///5+f///////////////////Pz//3R0//8AAP//SUn//46O//8AAP//aWn///7+
+ //////////////////////////////39//9PT///AwP//729/////////////////////////////7e3
+ //8AAP//ycn/////////////////////////////HR3//1tb//9/f///AAD//1pa///7+///////////
+ ////////////////////////X1///xcX//89Pf//AAD//0JC//+zs///AAD//3Fx///a2v///Pz//6Sk
+ //8AAP//yMj///////+Skv//AQH//w8P//8AAP//wsL/////////////////////////////np7//wYG
+ //8AAP//Tk7///v7//////////////////////////////////+Fhf//AAD//4qK////////////////
+ //////////////////+3t///AAD//9DQ/////////////////////////////yws//8LC///AAD//2Nj
+ ///8/P//////////////////////////////////+Pj//z8///8AAP//ERH//52d///+/v//8vL//wAA
+ //+Hh/////////7+//+Cgv//AAD//4uL/////////////5qa//8BAf//AAD//4KC////////////////
+ ///////////////////Cwv//TU3///X1//////////////////////////////////+5uf//AgL//1RU
+ ///+/v//////////////////////////////////sbH//wAA///Q0P//////////////////////////
+ //86Ov//AAD//2tr///9/f//////////////////////////////////xMT//yoq//8AAP//HR3//+fn
+ //////////////////8PD///Kyv//319//9UVP//AAD//1BQ///x8f//////////////////oKD//wIC
+ //8tLf//8/P/////////////////////////////////////////////////////////////////////
+ ///g4P//FBT//ykp///x8f///////////////////////////////////////7Cw//8AAP//09P/////
+ ////////////////////////SEj//3V1///+/v/////////////////////////////w8P//aWn//wEB
+ //8bG///Jib//zIy////////////////////////Xl7//yAg//8BAf//AgL//4OD///9/f//////////
+ //////////////7+//9PT///AAD//zo6///x8f//////////////////////////////////////////
+ ///////////////////39///NDT//w0N///W1v//////////////////////////////////////////
+ //+wsP//AAD//9fX/////////////////////////////8PD////////////////////////////////
+ //+vr///Gxv//wEB//9paf//8PD//09P//84OP//////////////////////////////////9/f//+Pj
+ /////////////////////////////8PD//84OP//AAD//yIi//8FBf//Njb//+7u////////////////
+ ////////////////////////////////////////ZGT//wAA//+srP//////////////////////////
+ ////////////////////////qKj//wAA///X1///////////////////////////////////////////
+ ///////////////////9/f//nJz//xsb//8AAP//S0v//9TU//9ISP//Ozv/////////////////////
+ /////////////////////////////////////////Pz//2Bg//8AAP//AQH//46O///6+v//rq7//wcH
+ //8xMf//7Oz/////////////////////////////////////////////nJz//wAA//9ubv//////////
+ /////////////////////////////////////////////6io//8AAP//3Nz/////////////////////
+ ///z8///f3///39///+Wlv//+fn////////////////////////19f//hYX//w4O//8DA///Dg7//z8/
+ ///////////////////////////////////////////////////////////////////o6P//YGD//wEB
+ //8gIP//+vr///////9ZWf//AAD//5+f/////////////////////////////////////////////729
+ //8REf//HBz//83N//////////////////////////////////////////////////+mpv//AAD//9/f
+ ////////////////////////8PD//wAA//8AAP//AAD//yws///ExP//////////////////////////
+ ///q6v//bm7//wYG//8JCf//6en//////////////////3Z2//93d///h4f//5iY///b2///////////
+ //////////////////84OP//Nzf///////+Xl///AAD//29v////////////////////////////////
+ ////////////////////////2dn//yUl//8KCv//rKz/////////////////////////////////////
+ ////////n5///wAA///f3/////////////////////////f3//8AAP//g4P//7Oz//8dHf//AQH//2ho
+ ///v7/////////////////////////////87O///AAD//+vr//////////////////8HB///AgL//wAA
+ //8AAP//AwP//1ZW///Q0P/////////////u7v//AwP//4CA//+0tP//AwP//1BQ///8/P//////////
+ ///////////////////////////////////////////////////t7f//QUH//wEB//+EhP///v7/////
+ /////////////////////////////5+f//8AAP//5ub////////////////////////+/v//AAD//3t7
+ ////////8vL//21t//8CAv//GRn//+fn////////////////////////ODj//wAA///09P//////////
+ ///w8P//AAD//4yM///4+P//3t7//z09//8AAP//qan/////////////p6f//wAA//+Xl///Cwv//zc3
+ ///19f////////////////////////////////////////////////////////////////////////n5
+ //9kZP//AAD//1pa///39/////////////////////////////+cnP//AAD//+jo////////////////
+ /////////////wcH//90dP//////////////////enr//wAA///z8////////////////////////zMz
+ //8AAP///Pz/////////////2tr//wAA//9/f///6en//9zc//8LC///T0///////////////////11d
+ //8DA///Fhb//yIi///p6f//////////////////////////////////////////////////////////
+ /////////////////////////v7//4yM//8CAv//Nzf//+bm////////////////////////l5f//wAA
+ ///o6P////////////////////////////8PD///bW3//////////////v7//1VV//8XF///////////
+ //////////////////8xMf//Bgb//////////////////8TE//8AAP//AAD//wAA//8DA///Dw///+Tk
+ //////////////z8//8VFf//AAD//xMT///Y2P//////////////////////////////////////////
+ //+mpv//1NT/////////////////////////////////////////////sbH//wwM//8cHP//zs7/////
+ /////////////5eX//8AAP//8PD/////////////////////////////Fhb//2Rk////////+Pj//2Bg
+ //8AAP//YGD/////////////////////////////Kir//xAQ///////////////////5+f//1NT//7Gx
+ //+Ojv//a2v//6io///////////////////IyP//AAD//wgI///Cwv//////////////////////////
+ ///////////////////i4v//Dg7//xQU///Ozv//////////////////////////////////////////
+ ///Ozv//CQn//woK///Y2P////////////+Tk///AAD///Dw/////////////////////////////x4e
+ //9cXP//6Oj//zo6//8AAP//e3v///39/////////////////////////////ygo//8ZGf//////////
+ ///////////////////////////////////////////////////9/f//VVX//wAA//+goP//////////
+ ///////////////////////////////////+/v//SUn//wkJ//8eHv//EBD//8jI////////////////
+ ///////////////////+/v//bm7//wAA//91df//////////////////kJD//wAA///x8f//////////
+ //////////////////8mJv//CAj//wUF//8KCv//qKj/////////////////////////////////////
+ //8gIP//IiL////////////////////////////////////////////////////////9/f//ZWX//wAA
+ //8BAf//Kyv//9LS////////////////////////////////////////oaH//wAA//+MjP//4eH//yMj
+ //8NDf//wMD/////////////////////////////dnb//wAA//9tbf///v7//////////////////5CQ
+ //8AAP//9/f/////////////////////////////Wlr//1ZW//95ef//0ND/////////////////////
+ ////////////////////////Hh7//xUV//+Wlv//sLD//8nJ///i4v//+fn/////////////////////
+ ///9/f//ZWX//wAA//+EhP//ubn//xgY//8ICP//lpb///7+////////////////////////5+f//xER
+ //84OP///Pz////////k5P//Jyf//woK//+6uv//////////////////f3///wAA//9lZf///v7/////
+ //////////////////+Kiv//AAD///f3////////////////////////////////////////////////
+ /////////////////////////////9zc//+Cgv//KCj//wAA//8AAP//AAD//wAA//8AAP//AAD//wEB
+ //8VFf//Li7//0hI//9hYf//TU3//wAA//+IiP/////////////p6f//Skr//wAA//9RUf//7e3/////
+ /////////////1FR//8HB///1tb//////////////////+jo//8sLP//Bwf//7Oz////////hob//wAA
+ //9eXv///Pz/////////////////////////////iIj//wAA///6+v//////////////////////////
+ ///////////////////////////////////o6P//kpL//zc3//8AAP//AQH//zw8//+Wlv//6+v///Hx
+ ///X1///vb3//6Sk//+Li///cnL//1hY//8+Pv//JSX//wwM//+Li/////////////////////////7+
+ //+Pj///Bwf//x0d///Cwv///////6mp//8AAP//hob/////////////////////////////7Oz//zEx
+ //8FBf//Xl7//wAA//9WVv//+/v//////////////////////////////////4iI//8AAP////////n5
+ ///39///9fX///Dw///w8P//6en//+jo///k5P//3d3//6Gh//9HR///AwP//wAA//8tLf//h4f//+Dg
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////8/P//8oKP//AwP//3l5//8WFv//NDT///v7////////////////
+ ///////////////////u7v//Njb//wAA//9PT///+fn/////////////////////////////////////
+ //+AgP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//ICD//3l5
+ ///T0///////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////9PT//2Rk//8AAP//Bgb//9HR
+ //////////////////////////////////////////////Hx//94eP//+Pj/////////////////////
+ ////////////////////////v7///4CA//+IiP//iIj//4mJ//+QkP//kJD//5KS//+Xl///l5f//5qa
+ //+fn///xcX///39////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////qqr//42N////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////////////////////wAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAIAAAAAAAQAAAQAgAAAAAAAACAEAAAAAAAAA
+ AAAAAAAAAAAAAP//////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////z8/P/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/7+/v/////////////////8/Pz//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP+/v7////////////////////////////8/Pz//AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/v7+//////////////////z8/P/8AAAD/v7+/////////////////////
+ ////////Pz8//wAAAP8AAAD/AAAA/7+/v////////////////////////////z8/P/8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/v7+//////////////////////////////////////////////////z8/
+ P/8AAAD/AAAA/wAAAP+/v7//////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////Pz8//wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/v7+//////////////////z8/
+ P/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/7+/v///////////////
+ /////////////z8/P/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP+/v7//////////
+ ////////Pz8//wAAAP+/v7////////////////////////////8/Pz//AAAA/wAAAP8AAAD/v7+/////
+ ////////////////////////Pz8//wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP+/v7//////////
+ ////////////////////////////////////////Pz8//wAAAP8AAAD/AAAA/7+/v///////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////8/Pz//AAAA/wAAAP8AAAD/v7+/////////////////////
+ ////////////////////////////////////////Pz8//wAAAP8AAAD/AAAA/7+/v///////////////
+ /////////////////////////////////////////////z8/P/8AAAD/AAAA/wAAAP+/v7//////////
+ //////////////////8/Pz//AAAA/7+/v/////////////////8/Pz//AAAA/7+/v///////////////
+ /////////////z8/P/8AAAD/AAAA/wAAAP+/v7//////////////////Pz8//wAAAP8AAAD/AAAA/7+/
+ v////////////////////////////z8/P/8AAAD/v7+/////////////////////////////////////
+ //8/Pz//AAAA/wAAAP8AAAD/v7+/////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////////////////////z8/
+ P/8AAAD/AAAA/wAAAP+/v7//////////////////////////////////////////////////////////
+ //8/Pz//AAAA/wAAAP8AAAD/v7+/////////////////////////////////////////////////////
+ ////////Pz8//wAAAP8AAAD/AAAA/7+/v////////////////////////////z8/P/8AAAD/v7+/////
+ /////////////z8/P/8AAAD/v7+/////////////////////////////Pz8//wAAAP8AAAD/AAAA/7+/
+ v/////////////////8/Pz//AAAA/wAAAP8AAAD/v7+/////////////////////////////Pz8//wAA
+ AP+/v7///////////////////////////////////////z8/P/8AAAD/AAAA/wAAAP+/v7//////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////Pz8//wAAAP8AAAD/AAAA/7+/v///////////////
+ /////////////////////////////////////////////z8/P/8AAAD/AAAA/wAAAP+/v7//////////
+ //////////////////////////////////////////////////8/Pz//AAAA/wAAAP8AAAD/v7+/////
+ ////////////////////////Pz8//wAAAP+/v7//////////////////Pz8//wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/v7+//////////////////z8/P/8AAAD/AAAA/wAA
+ AP+/v7//////////////////////////////////////////////////////////////////////////
+ ////////Pz8//wAAAP8AAAD/AAAA/7+/v///////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //8/Pz//AAAA/wAAAP8AAAD/v7+/////////////////////////////////////////////////////
+ ////////Pz8//wAAAP8AAAD/AAAA/7+/v///////////////////////////////////////////////
+ /////////////z8/P/8AAAD/AAAA/wAAAP+/v7////////////////////////////8/Pz//AAAA/7+/
+ v/////////////////8/Pz//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP+/v7//////////////////Pz8//wAAAP8AAAD/AAAA/7+/v///////////////////////////////
+ //////////////////////////////////////////////////8/Pz//AAAA/wAAAP8AAAD/v7+/////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////z8/P/8AAAD/AAAA/wAAAP+/v7//////////
+ //////////////////////////////////////////////////8/Pz//AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/7+/v///////////////////////////////////////Pz8//wAAAP8AAAD/AAAA/7+/
+ v/////////////////8/Pz//AAAA/wAAAP8AAAD/v7+//////////////////z8/P/8AAAD/v7+/////
+ ////////////////////////Pz8//wAAAP8AAAD/AAAA/7+/v/////////////////8/Pz//AAAA/wAA
+ AP8AAAD/v7+/////////////////////////////////////////////////////////////////////
+ /////////////z8/P/8AAAD/AAAA/wAAAP+/v7//////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////Pz8//wAAAP8AAAD/AAAA/7+/v///////////////////////////////////////////////
+ /////////////z8/P/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/v7+/////////////////////
+ //////////////////8/Pz//AAAA/wAAAP8AAAD/v7+//////////////////z8/P/8AAAD/AAAA/wAA
+ AP+/v7//////////////////Pz8//wAAAP+/v7////////////////////////////8/Pz//AAAA/wAA
+ AP8AAAD/v7+//////////////////z8/P/8AAAD/AAAA/wAAAP+/v7//////////////////////////
+ ////////////////////////////////////////////////////////Pz8//wAAAP8AAAD/AAAA/7+/
+ v///////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////8/Pz//AAAA/wAAAP8AAAD/v7+/////
+ ////////////////////////////////////////////////////////Pz8//wAAAP8AAAD/AAAA/7+/
+ v////////////////////////////////////////////////////////////z8/P/8AAAD/AAAA/wAA
+ AP+/v7////////////////////////////////////////////////////////////8/Pz//AAAA/7+/
+ v////////////////////////////z8/P/8AAAD/AAAA/wAAAP+/v7//////////////////Pz8//wAA
+ AP8AAAD/AAAA/7+/v///////////////////////////////////////////////////////////////
+ ////////Pz8//wAAAP8AAAD/AAAA/7+/v///////Pz8//wAAAP+/v7//////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////z8/P/8AAAD/AAAA/wAAAP+/v7//////////////////////////////////////////
+ //////////////////8/Pz//AAAA/wAAAP8AAAD/v7+/////////////////////////////////////
+ ////////////////////////Pz8//wAAAP8AAAD/AAAA/7+/v///////////////////////////////
+ /////////////////////////////z8/P/8AAAD/v7+/////////////////////////////Pz8//wAA
+ AP8AAAD/AAAA/7+/v/////////////////8/Pz//AAAA/wAAAP8AAAD/v7+/////////////////////
+ //////////////////////////////////////////////////8/Pz//AAAA/wAAAP8AAAD/v7+/////
+ //8/Pz//AAAA/7+/v///////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////Pz8//wAAAP8AAAD/AAAA/7+/
+ v////////////////////////////////////////////////////////////z8/P/8AAAD/AAAA/wAA
+ AP+/v7////////////////////////////////////////////////////////////8/Pz//AAAA/wAA
+ AP8AAAD/v7+/////////////////////////////Pz8//wAAAP+/v7//////////////////Pz8//wAA
+ AP+/v7////////////////////////////8/Pz//AAAA/wAAAP8AAAD/v7+//////////////////z8/
+ P/8AAAD/AAAA/wAAAP+/v7////////////////////////////8/Pz//AAAA/7+/v///////////////
+ //8/Pz//AAAA/wAAAP8AAAD/v7+/////////////////////////////Pz8//wAAAP+/v7//////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////8/Pz//AAAA/wAAAP8AAAD/v7+/////////////////////////////////////
+ ////////////////////////Pz8//wAAAP8AAAD/AAAA/7+/v///////////////////////////////
+ /////////////////////////////z8/P/8AAAD/AAAA/wAAAP+/v7//////////////////////////
+ //8/Pz//AAAA/7+/v/////////////////8/Pz//AAAA/7+/v////////////////////////////z8/
+ P/8AAAD/AAAA/wAAAP+/v7//////////////////Pz8//wAAAP8AAAD/AAAA/7+/v///////////////
+ /////////////z8/P/8AAAD/v7+//////////////////z8/P/8AAAD/AAAA/wAAAP+/v7//////////
+ //////////////////8/Pz//AAAA/7+/v///////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////z8/P/8AAAD/AAAA/wAA
+ AP+/v7////////////////////////////////////////////////////////////8/Pz//AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP+/v7//////////////////////////
+ //8/Pz//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/7+/v///////////////////////////////
+ ////////Pz8//wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP+/v7//////////////////////////
+ /////////////z8/P/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/v7+/////////////////////
+ ////////Pz8//wAAAP8AAAD/AAAA/7+/v////////////////////////////z8/P/8AAAD/v7+/////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////Pz8//wAAAP8AAAD/AAAA/7+/v///////////////////////////////
+ /////////////////////////////z8/P/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/7+/v////////////////////////////z8/P/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/v7+///////////////////////////////////////8/Pz//AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/7+/v///////////////////////////////////////Pz8//wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP+/v7////////////////////////////8/Pz//AAAA/wAAAP8AAAD/v7+/////
+ ////////////////////////Pz8//wAAAP+/v7//////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////////8/Pz//AAAA/wAA
+ AP8AAAD/v7+/////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////z8/P/8AAAD/AAAA/wAAAP+/v7//////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////Pz8//wAA
+ AP8AAAD/AAAA/7+/v///////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////8/Pz//AAAA/wAAAP8AAAD/v7+/////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///c3P//Ojr//9PT///////////////////////////////////////////////////Q0P//dHT//xoa
+ //8QEP//JSX//zc3//9KSv//Xl7//3Nz//+Ghv//mpr//6ys///AwP//19f//+np///7+///////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////z8//9YWP//eHj///b2////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////2dn//x0d//8AAP//EBD//8LC////////////////
+ /////////////+Pj//+Jif//Kyv//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8SEv//Jib//zg4//9LS///YGD//3R0//+Hh///m5v//6+v
+ ///Dw///+Pj/////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////a2v//wAA//8AAP//IyP//7u7////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////////////////////9LS
+ //8VFf//AAD//wAA//8AAP//CAj//6ys////////8fH//56e//9CQv//AgL//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//+0tP//////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////4iI//8AAP//AAD//wAA//8AAP//AAD//11d
+ ///p6f//////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////Nzf//FRX//wAA//8AAP//AAD//wAA//8AAP//AwP//4aG
+ //8JCf//AAD//wAA//8AAP//AAD//wAA//8REf//Zmb//8HB///29v//5+f//9PT//+7u///qan//5aW
+ //9/f///bGz//1hY//9ERP//Li7//xwc//8HB///AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//3Fx////////////////////////7+///0xM///ExP//////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //+iov//AQH//wAA//8AAP//Cgr//wAA//8AAP//AAD//xMT//+fn////f3/////////////////////
+ ////////////////////////////////////////////////////////////////////////rKz//z8/
+ //8/P///Pz///z8///8/P///Pz///z8///8/P///Pz///z8///8/P///Pz///z8///8/P///Pz///z8/
+ //95ef//////////////////////////////////////////////////////////////////yMj//w8P
+ //8AAP//AAD//woK//+lpf//KSn//wAA//8AAP//AAD//wAA//8AAP//AAD//wgI//9VVf//sLD///j4
+ ////////////////////////////////////////////////////////////////////////////////
+ ///y8v//3d3//8nJ//+1tf//oqL//4uL//94eP//TEz//wAA//8AAP//MDD//////////////////+rq
+ //8wMP//AAD//wYG//+goP//////////////////////////////////////////////////////////
+ ////////////////////////////////////////u7v//wYG//8AAP//AAD//1BQ///w8P//cHD//wMD
+ //8AAP//AAD//wAA//9AQP//2dn/////////////////////////////////////////////////////
+ //////////////////////////////////+Rkf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//z4+////////////////////////////////
+ /////////////////////////////8HB//8PD///AAD//wAA//8ODv//vr7////////s7P//OTn//wAA
+ //8AAP//AAD//wAA//8aGv//8fH/////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///o6P//AAD//wAA//8CAv//7u7////////k5P//Kir//wAA//8AAP//AAD//wAA//93d////Pz/////
+ /////////////////////////////////////////////////////////////////////////////8/P
+ //8PD///AAD//wAA//85Of//9fX/////////////y8v//zAw//8AAP//AAD//wAA//8HB///gYH///j4
+ /////////////////////////////////////////////////////////////////////////////5GR
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//MDD///////////////////////////////////////////////////////++vv//Cgr//wAA
+ //8AAP//Dw///8jI///////////////////19f//TEz//wAA//8AAP//AAD//xYW///y8v//////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////8qKv//AAD//wAA//+wsP//3d3//yQk
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//9OTv//8vL/////////////////////////////////////
+ ///////////////////////////////////h4f//Ghr//wAA//8AAP//JSX//+rq////////////////
+ ////////+/v//4qK//8KCv//AAD//wAA//8AAP//KSn//8HB////////////////////////////////
+ ////////////////////////////////////////gID//wAA//8AAP//X1///7+///+/v///v7///7+/
+ //+/v///v7///7+///+/v///v7///7+///+fn///AAD//wAA//8jI///////////////////////////
+ ////////////////////////tbX//woK//8AAP//AAD//xUV///Nzf//////////////////////////
+ ///8/P//YmL//wAA//8AAP//AAD//zMz///o6P//////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////2xs//8AAP//AAD//01N//8dHf//AAD//wAA//8GBv//qan//1FR//8AAP//AAD//wAA
+ //8tLf//4OD/////////////////////////////////////////////////////////////7e3//ykp
+ //8AAP//AAD//xYW///d3f///////////////////////////////////////93d//9HR///AAD//wAA
+ //8AAP//AQH//2Vl///t7f//////////////////////////////////////////////////////////
+ //9/f///AAD//wAA//9/f////////////////////////////////////////////////////////+Hh
+ //8AAP//AAD//xQU/////////////////////////////////////////////7Oz//8GBv//AAD//wAA
+ //8WFv//0tL////////////////////////////////////////d3f//AAD//wAA//8AAP//AAD//yMj
+ ///b2///////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////rKz//wAA//8AAP//AAD//wAA
+ //8AAP//Cgr//7q6/////////f3//3t7//8BAf//AAD//wAA//8WFv//xMT/////////////////////
+ //////////////////////////////b2//88PP//AAD//wAA//8KCv//y8v/////////////////////
+ //////////////////////////////////+lpf//FRX//wAA//8AAP//AAD//xcX//+mpv//////////
+ /////////////////////////////////////////////39///8AAP//AAD//39/////////////////
+ ////////////////////////////////////////8PD//wAA//8AAP//BQX/////////////////////
+ //////////////////+kpP//Bgb//wAA//8AAP//HR3//9zc////////////////////////////////
+ /////////////9HR//8AAP//AAD//wAA//8AAP//AAD//xUV///Kyv//////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////r6///AQH//wAA//8AAP//AAD//w8P///Dw////////////////////////6Sk
+ //8ICP//AAD//wAA//8GBv//oKD////////////////////////////////////////8/P//U1P//wAA
+ //8AAP//AwP//7a2////////////////////////////////////////////////////////////////
+ ///s7P//YmL//wAA//8AAP//AAD//wQE///R0f//////////////////////////////////////////
+ ////////f3///wAA//8AAP//kJD/////////////////////////////////////////////////////
+ ///8/P//AAD//wAA//8AAP//9fX/////////////////////////////pKT//wMD//8AAP//AAD//yQk
+ ///c3P//////////////////////////////////////////////////0dH//wAA//8AAP//FBT//wYG
+ //8AAP//AAD//woK//+2tv//////////////////////////////////////////////////9/f//9DQ
+ //+lpf//eXn//05O///Dw////////////////////////////////////////76+//8EBP//AAD//wAA
+ //8VFf//ycn//////////////////////////////////8fH//8YGP//AAD//wAA//8AAP//d3f///z8
+ /////////////////////////////25u//8AAP//AAD//wAA//+amv//////////////////////////
+ //////////////////////////////////////////////////+Pj///AAD//wAA//8AAP//jo7/////
+ //////////////////////////////////////////////////9/f///AAD//wAA//+Rkf//////////
+ //////////////////////////////////////////////////8NDf//AAD//wAA///o6P//////////
+ /////////////5aW//8CAv//AAD//wAA//8kJP//5OT/////////////////////////////////////
+ ///////////////////R0f//AAD//wAA//8/P///wMD//w8P//8AAP//AAD//wQE//+dnf//////////
+ ///6+v//09P//6io//9+fv//U1P//ycn//8DA///AAD//wAA//8AAP//AAD//3l5////////////////
+ //////////////////+0tP//Cgr//wAA//8AAP//AAD//2dn////////////////////////////////
+ /////////////+Li//8xMf//AAD//wAA//8AAP//Tk7///Ly//////////////////+MjP//AAD//wAA
+ //8AAP//f3//////////////////////////////////////////////////////////////////////
+ ////////wsL//wUF//8AAP//AAD//1ZW///9/f//////////////////////////////////////////
+ /////////////3p6//8AAP//AAD//5GR////////////////////////////////////////////////
+ /////////////xsb//8AAP//AAD//9vb//////////////////+Vlf//AQH//wAA//8AAP//LS3//+jo
+ /////////////////////////////////////////////////////////////8bG//8AAP//AAD//z8/
+ ////////z8///xkZ//8AAP//AAD//wEB//+EhP//f3///wUF//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//OTn/////////////////////////////qqr//wYG//8AAP//AAD//wAA
+ //8AAP//KSn///////////////////////////////////////////////////T0//9TU///AAD//wAA
+ //8AAP//LS3//+Dg////////pqb//wEB//8AAP//AAD//2Fh///9/f//////////////////////////
+ /////////////////////////////////////////////+bm//8YGP//AAD//wAA//8rK///8/P/////
+ ////////////////////////////////////////////////////////cHD//wAA//8AAP//kZH/////
+ ////////////////////////////////////////////////////////KCj//wAA//8AAP//zMz/////
+ ////////iYn//wAA//8AAP//AAD//zEx///q6v//////////////////////////////////////////
+ ////////////////////////v7///wAA//8AAP//Pz/////////5+f//Z2f//wAA//8AAP//AAD//wAA
+ //8cHP//AAD//wAA//8AAP//AAD//wAA//8AAP//AQH//yIi//9MTP//AAD//wAA//8DA///8PD/////
+ /////////////5+f//8DA///AAD//wAA//8iIv//AgL//wAA//8AAP//6Oj/////////////////////
+ //////////////////////////////39//9+fv//AQH//wAA//8AAP//Fhb//4yM//8GBv//AAD//wAA
+ //9ISP//+vr/////////////////////////////////////////////////////////////////////
+ ///6+v//PDz//wAA//8AAP//Dg7//9jY////////////////////////////////////////////////
+ //////////////////9wcP//AAD//wAA//+Rkf//////////////////////////////////////////
+ //////////////////81Nf//AAD//wAA//+9vf///////4WF//8AAP//AAD//wAA//83N///7+//////
+ //////////////////////////////////////////////////////////////////+/v///AAD//wAA
+ //9LS///xsb//ysr//8AAP//AAD//wAA//8EBP//eXn//5qa//8AAP//AAD//xwc//9ycv//oaH//8vL
+ ///z8/////////////8pKf//AAD//wAA//+zs///////////////////pKT//wMD//8AAP//AAD//yQk
+ //8ZGf//AAD//wAA//+lpf//////////////////////////////////////////////////////////
+ //+np///CQn//wAA//8AAP//AAD//wAA//8AAP//MjL///Ly////////////////////////////////
+ /////////////////////////////////////////////29v//8AAP//AAD//wEB//+vr///////////
+ /////////////////////////////////////////////////////////////3Bw//8AAP//AAD//5eX
+ /////////////////////////////////////////////////////////////0FB//8AAP//AAD//7Cw
+ //95ef//AAD//wAA//8AAP//Q0P//+/v////////////////////////////////////////////////
+ /////////////////////////////7+///8AAP//AAD//xAQ//8CAv//AAD//wAA//8AAP//NDT//8/P
+ ////////urr//wAA//8AAP//OTn//////////////////////////////////2xs//8AAP//AAD//3Bw
+ ////////////////////////pKT//wYG//8AAP//AAD//wAA//8AAP//AAD//2Rk////////////////
+ ///////////////////////////////////////////////////Jyf//GRn//wAA//8AAP//AAD//yAg
+ ///n5///////////////////////////////////////////////////////////////////////////
+ //+mpv//AAD//wAA//8AAP//eXn/////////////////////////////////////////////////////
+ ////////////////////////cHD//wAA//8AAP//oaH/////////////////////////////////////
+ ////////////////////////UVH//wAA//8AAP//Ly///wAA//8AAP//AAD//0RE///19f//////////
+ ////////////////////////////////////////////////////////////////////////sbH//wAA
+ //8AAP//AAD//wAA//8AAP//Cgr//42N///8/P/////////////Z2f//AAD//wAA//8fH///////////
+ ////////////////////////iIj//wAA//8AAP//Ly//////////////////////////////s7P//wYG
+ //8AAP//AAD//wAA//8AAP//JCT/////////////////////////////////////////////////////
+ ///////////////////k5P//MjL//wAA//8TE///19f/////////////////////////////////////
+ ////////////////////////////////////////0tL//wsL//8AAP//AAD//0VF///8/P//////////
+ //////////////////////////////////////////////////////////////////9wcP//AAD//wAA
+ //+hof////////////////////////////////////////////////////////////9iYv//AAD//wAA
+ //8AAP//AAD//wAA//9PT///+fn/////////////////////////////////////////////////////
+ /////////////////////////////+bm//9LS///AAD//wAA//8AAP//AAD//0VF///e3v//////////
+ //////////////T0//8AAP//AAD//wQE///8/P///////////////////f3//4CA//8CAv//AAD//wAA
+ //8ICP//9vb/////////////////////////////s7P//wYG//8AAP//AAD//wAA//8AAP//5OT/////
+ ///////////////////////////////////////////////////////////////////19f//XV3//8TE
+ /////////////////////////////////////////////////////////////////////////////+/v
+ //8lJf//AAD//wAA//8gIP//6+v/////////////////////////////////////////////////////
+ /////////////////////////////2dn//8AAP//AAD//6Gh////////////////////////////////
+ /////////////////////////////25u//8AAP//AAD//wAA//8AAP//Vlb///n5////////////////
+ //////////////////////////////////////////////////////////////39//+Zmf//EBD//wAA
+ //8AAP//AAD//xIS//+hof///f3//////////////////////////////////xER//8AAP//AAD//6+v
+ ///m5v///////+/v//9OTv//AAD//wAA//8AAP//HBz//8jI////////////////////////////////
+ ////////urr//woK//8AAP//AAD//wAA//+fn///////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////9/f//UFD//wAA//8AAP//Bwf//8rK////////////////
+ ////////////////////////////////////////////////////////////////////////YmL//wAA
+ //8AAP//oaH/////////////////////////////////////////////////////////////enr//wAA
+ //8AAP//AAD//1tb///8/P//////////////////////////////////////////////////////////
+ ///////////////////Y2P//Pj7//wAA//8AAP//AAD//wAA//8AAP//YmL/////////////////////
+ ////////////////////////LCz//wAA//8AAP//AAD//wAA//8PD///FRX//wAA//8AAP//AAD//zw8
+ ///n5///////////////////////////////////////////////////vr7//woK//8AAP//AAD//xUV
+ ///S0v//////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////////////////////4aG
+ //8AAP//AAD//wAA//+cnP//////////////////////////////////////////////////////////
+ //////////////////////////////////9iYv//AAD//wAA//+hof//////////////////////////
+ //////////////////////////////////+Jif//AAD//wAA//9paf///Pz/////////////////////
+ ///////////////////////////////////////////////////5+f//goL//wcH//8AAP//AAD//wAA
+ //8EBP//AAD//wAA//9iYv////////////////////////////////////////////9ISP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//9tbf//+vr/////////////////////////////////////
+ ////////////////////////p6f//wAA//8AAP//AAD//xMT///IyP//////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////+7u///AwP//wAA//8AAP//ZGT/////////////////////
+ /////////////////////////////////////////////////////////////////////////////2Ji
+ //8AAP//AAD//6ys/////////////////////////////////////////////////////////////5iY
+ //8AAP//bm7///39////////////////////////////////////////////////////////////////
+ ////////xsb//ysr//8AAP//AAD//wAA//8CAv//bW3//5WV//8AAP//AAD//2lp////////////////
+ /////////////////////////////729//91df//UlL//y0t//8HB///AAD//wAA//8ICP//oKD/////
+ //////////////////////////////////////////////////////////////z8//+UlP//AAD//wAA
+ //8AAP//AAD//w8P///IyP//////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////4eH//xMT
+ //8AAP//AAD//zU1///4+P//////////////////////////////////////////////////////////
+ ////////////////////////////////////////YmL//wAA//8AAP//sLD/////////////////////
+ ////////////////////////////////////////paX//3l5////////////////////////////////
+ ////////////////////////////////////////8fH//2tr//8CAv//AAD//wAA//8AAP//Kyv//8bG
+ ////////oaH//wAA//8AAP//cHD/////////////////////////////////////////////////////
+ //////////////z8///h4f//vLz//9LS////////////////////////////////////////////////
+ //////////////////+1tf//LS3//wAA//8AAP//AAD//wAA//8AAP//AAD//w8P//++vv//////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////f3//81Nf//AAD//wAA//8UFP//4eH/////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //9iYv//AAD//wAA//+wsP//////////////////////////////////////////////////////////
+ ///w8P///////////////////////////////////////////////////////////////////////7Gx
+ //8cHP//AAD//wAA//8AAP//BQX//4GB///4+P////////////+amv//AAD//wAA//9wcP//////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////////////////////Nzf//QkL//wAA//8AAP//AAD//wAA
+ //8QEP//enr//xUV//8AAP//AAD//woK//++vv//////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////ZGT//wAA
+ //8AAP//AwP//7y8////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////1FR//8AAP//AAD//7Cw////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////5+f//gID//wwM//8AAP//AAD//wAA//8AAP//UlL//9nZ
+ /////////////5GR//8AAP//AAD//3Bw////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///f3///XFz//wEB//8AAP//AAD//wAA//8JCf//dXX//+3t////////0tL//xUV//8AAP//AAD//woK
+ //+2tv//////////////////////////////////////////////////////////////////////////
+ /////////////////////////////52d//8AAP//AAD//wAA//+Hh///////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////UVH//wAA//8AAP//sLD/////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////5+f//2lp//8EBP//AAD//wAA//8AAP//BAT//2pq///o6P//kZH//wAA//8AAP//fX3/////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////9vb//0dH//8AAP//AAD//wAA//8AAP//BQX//7u7
+ ////////////////////////09P//x0d//8AAP//AAD//wYG//+zs///////////////////////////
+ ///////////////////////////////////////////////////////////////////Ly///CAj//wAA
+ //8AAP//NDT///39////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////9RUf//AAD//wAA//+ysv//////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////9nZ//9SUv//AAD//wAA
+ //8AAP//AAD//w0N//85Of//AAD//wAA//9/f///////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////f3//6Wl//8aGv//AAD//wAA//8AAP//BQX//3V1///29v//////////////////29v//wkJ
+ //8AAP//AAD//wkJ///m5v//////////////////////////////////////////////////////////
+ /////////////////////////////9/f//8pKf//AAD//wAA//8AAP//cHD///z8////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////1FR//8AAP//AAD//7+/////////////////////////////////////////////////
+ ////////0dH//wAA//8AAP//AAD//wAA//8AAP//Wlr//+np////////////////////////////////
+ ///////////////////////////////////Fxf//Ozv//wAA//8AAP//AAD//wAA//8AAP//AAD//39/
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////Ly//91df//BQX//wAA
+ //8AAP//CAj///X1//////////////////+Bgf//AAD//wAA//8AAP//j4//////////////////////
+ /////////////////////////////////////////////////////////////////////////////+/v
+ //9HR///AAD//wAA//8AAP//Skr//+/v////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////UVH//wAA//8AAP//v7//////
+ ///////////////////////////////////////////////////g4P//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//EhL//56e///9/f//////////////////////////////////////////////////////////
+ ////////rq7//ycn//8AAP//AAD//wAA//8AAP//Jib//9/f////////////////////////////////
+ ////////09P//9bW///n5///9fX/////////////////////////////////////////////////////
+ //////////////////////////////////+Ojv//AAD//wAA//9KSv//////////////////np7//wEB
+ //8AAP//AAD//25u////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////z8//9qav//AAD//wAA//8AAP//KSn//93d
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////9KSv//AAD//wAA//+/v///////////////////////////////////////////
+ /////////////+Hh//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//z8////X1///////////
+ ////////////////////////////////////////////////////////+/v//5eX//8YGP//AAD//wAA
+ //8AAP//ycn///////////////////////////////////////8vL///AAD//wAA//8AAP//Bwf//xkZ
+ //8pKf//OTn//4OD///u7v///////////////////////////////////////////////////////1NT
+ //8AAP//AAD//5KS/////////////7q6//8GBv//AAD//wAA//9RUf///Pz/////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////+UlP//AwP//wAA//8AAP//FBT//8LC////////////////////////////////
+ /////////////////////////////////////////////////////////////z8///8AAP//AAD//7+/
+ ////////////////////////////////////////////////////////7u7//wAA//8AAP//ERH/////
+ //+4uP//ICD//wAA//8AAP//AAD//wcH//+AgP//+Pj/////////////////////////////////////
+ /////////////////////////////35+//8AAP//AAD//wAA///R0f//////////////////////////
+ /////////////xsb//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wwM//9ycv//4uL/////
+ ///////////////////////////////////6+v//Dg7//wAA//8AAP//3Nz////////Q0P//Dw///wAA
+ //8AAP//Njb///X1////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////////+3t///Dw///wAA
+ //8AAP//Bgb//52d////////////////////////////////////////////////////////////////
+ ////////////////////////Pz///wAA//8AAP//v7//////////////////////////////////////
+ ///////////////////w8P//AAD//wAA//8AAP/////////////09P//cnL//wMD//8AAP//AAD//wAA
+ //8oKP//wMD/////////////////////////////////////////////////////////////cHD//wAA
+ //8AAP//AAD//97e////////////////////////////////////////BAT//wAA//8AAP//CAj//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8GBv//YWH//+Li/////////////////////////////7+/
+ //8AAP//AAD//yYm////////5OT//x0d//8AAP//AAD//yIi///p6f//////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////U1P//IiL//wAA//8AAP//AAD//3Nz///8/P//////////
+ //////////////////////////////////////////////////////////////////8/P///AAD//wAA
+ ///Jyf////////////////////////////////////////////////////////z8//8AAP//AAD//wAA
+ ////////////////////////zMz//zEx//8AAP//AAD//wAA//8BAf//ZGT//+7u////////////////
+ //////////////////////////////////9wcP//AAD//wAA//8AAP//4uL/////////////////////
+ /////////////+vr//8AAP//AAD//wwM////////+Pj//+np///b2///n5///ykp//8AAP//AAD//wAA
+ //8VFf//6+v/////////////////////////////dHT//wAA//8AAP//cHD//+/v//8vL///AAD//wAA
+ //8SEv//2dn/////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///p6f//Ozv//wAA//8AAP//AAD//0xM///x8f//////////////////////////////////////////
+ /////////////////////////////z8///8AAP//AAD//9HR////////////////////////////////
+ /////////////////////////////wAA//8AAP//AAD///Dw////////////////////////+/v//4mJ
+ //8KCv//AAD//wAA//8AAP//srL//////////////////////////////////////////////////3Bw
+ //8AAP//AAD//wAA///w8P//////////////////////////////////2Nj//wAA//8AAP//JSX/////
+ ////////////////////////ysr//wEB//8AAP//AAD//6en////////////////////////////////
+ //8qKv//AAD//wAA//+0tP//R0f//wAA//8AAP//Bwf//8PD////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////////////////////4+P//XFz//wAA//8AAP//AAD//ysr
+ ///f3///////////////////////////////////////////////////////////////////Pz///wAA
+ //8AAP//0dH/////////////////////////////////////////////////////////////DQ3//wAA
+ //8AAP//8PD//////////////////////////////////9zc//8ODv//AAD//wAA///X1///////////
+ ////////////////////////////////////////bGz//wAA//8AAP//AAD///Pz////////////////
+ ///////////////////AwP//AAD//wAA//85Of////////////////////////j4//8sLP//AAD//wAA
+ //9NTf//////////////////////////////////4OD//wAA//8AAP//CQn//1lZ//8AAP//AAD//wEB
+ //+pqf//////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////9/f//hob//wEB//8AAP//AAD//xQU///Cwv//////////////////////////
+ //////////////////////////////////80NP//AAD//wAA///R0f//////////////////////////
+ //////////////////////////////////8REf//AAD//wAA///j4///////////////////////////
+ ////////+vr//wMD//8AAP//AQH///f3////////////////////////////////////////////////
+ //9iYv//AAD//wAA//8AAP///////////////////////////////////////6qq//8AAP//AAD//ycn
+ //+env//wcH//+Xl////////e3v//wAA//8AAP//Dg7//+Hh////////////////////////////////
+ //+Wlv//AAD//wAA//8DA///AAD//wAA//8AAP//ior/////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////qqr//woK
+ //8AAP//AAD//wYG//+dnf///////////////////////////////////////////////////////zAw
+ //8AAP//AAD//9HR/////////////////////////////////////////////////////////////xwc
+ //8AAP//AAD//+Hh///////////////////////////////////d3f//AAD//wAA//8eHv//////////
+ /////////////////////////////////////////////2Ji//8AAP//AAD//wgI////////////////
+ ////////////////////////lpb//wAA//8AAP//AAD//wAA//8AAP//AAD//wwM//8DA///AAD//wAA
+ //+Wlv///////////////////////////////////////0xM//8AAP//AAD//wAA//8AAP//AAD//2ho
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////+6uv///Pz/////////////////////////////////////////////////////
+ ////////////////////////////////////////ysr//xkZ//8AAP//AAD//wAA//9zc////Pz/////
+ ////////////////////////////////////////MDD//wAA//8AAP//0dH/////////////////////
+ ////////////////////////////////////////IiL//wAA//8AAP//09P/////////////////////
+ /////////f3//3l5//8AAP//AAD//z4+////////////////////////////////////////////////
+ ////////YmL//wAA//8AAP//ERH///////////////////////////////////////98fP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//PDz///z8////////////////////////////////
+ ///29v//Cgr//wAA//8AAP//AAD//wAA//9MTP///Pz/////////////////////////////////////
+ ////////////////////////////////////////////////////////19f//wcH//9bW////Pz/////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////4+P//zEx//8AAP//AAD//wAA//9MTP//8fH/////////////////////////////////////
+ //8wMP//AAD//wAA///h4f//////////////////////////////////////////////////////////
+ //8qKv//AAD//wAA///R0f////////////////////////X1//9ZWf//AAD//wAA//8AAP//Y2P/////
+ //////////////////////////////////////////////////9XV///AAD//wAA//8eHv//////////
+ /////////////////////////////+np//+6uv//mZn//3R0//9SUv//MDD//w0N//8AAP//AAD//wgI
+ ///Y2P///////////////////////////////////////7e3//8AAP//AAD//wAA//8AAP//MjL///Pz
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////z8//84OP//AAD//wAA//9QUP//+fn/////////////////////////////////////
+ ////////////////////////////////////////////////////////8/P//09P//8AAP//AAD//wAA
+ //8rK///39///////////////////////////////////zAw//8AAP//AAD//+Hh////////////////
+ /////////////////////////////////////////////zAw//8AAP//AAD//8LC////////////////
+ ///k5P//NDT//wAA//8AAP//AAD//zg4///m5v//////////////////////////////////////////
+ /////////////1FR//8AAP//AAD//yIi////////////////////////////////////////////////
+ /////////////////////////////+jo///ExP//w8P/////////////////////////////////////
+ ////////bW3//wAA//8AAP//AAD//yAg///m5v//////////////////////////////////////////
+ ////////////////////////////////////////////////////////j4///wAA//8AAP//AAD//wAA
+ //9NTf//9fX/////////////////////////////////////////////////////////////////////
+ ////////////////////////+fn//yQk//8AAP//AAD//wAA//+Fhf//////////////////////////
+ ////////Ly///wAA//8AAP//4eH/////////////////////////////////////////////////////
+ ////////ODj//wAA//8AAP//v7//////////////yMj//xkZ//8AAP//AAD//wAA//9fX///+Pj/////
+ ////////////////////////////////////////////////////////UVH//wAA//8AAP//MDD/////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////+/v//8dHf//AAD//wAA//8PD///1dX/////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////9vb//8KCv//AAD//wAA//8AAP//AAD//wAA//9DQ///9fX/////////////////////
+ //////////////////////////////////////////////////////////////z8//9bW///AAD//wAA
+ //8AAP//cHD///////////////////////////////////////8iIv//AAD//wAA///h4f//////////
+ //////////////////////////////////////////////////8/P///AAD//wAA//+0tP///////6Sk
+ //8ICP//AAD//wAA//8DA///jo7/////////////////////////////////////////////////////
+ //////////////////9RUf//AAD//wAA//80NP//////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///5+f//R0f//wAA//8AAP//AAD//5yc////////////////////////////////////////////////
+ ///////////////////////////////////////////////////9/f//QUH//wAA//8AAP//JSX//3p6
+ //8AAP//AAD//wAA//87O///7+//////////////////////////////////////////////////////
+ ///////////////////9/f//YmL//wAA//8AAP//AAD//2lp///9/f//////////////////////////
+ /////////////yIi//8AAP//AAD//+Hh////////////////////////////////////////////////
+ /////////////0dH//8AAP//AAD//yMj//8UFP//AAD//wAA//8AAP//ERH//7m5////////////////
+ /////////////////////////////////////////////////////////////0BA//8AAP//AAD//z8/
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////+fn//09P//8AAP//AAD//wAA//8AAP//DAz//6Cg
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////5WV//8AAP//AAD//wIC///Cwv///////4mJ//8AAP//AAD//wAA//83N///7e3/////
+ /////////////////////////////////////////////////////////f3//2lp//8AAP//AAD//wAA
+ //9eXv///f3/////////////////////////////////////////////IiL//wAA//8AAP//5+f/////
+ ////////////////////////////////////////////////////////UVH//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//ygo///a2v//////////////////////////////////////////////////////////
+ ////////////////////////Pz///wAA//8AAP//SEj/////////////////////////////////////
+ //////////////////////////////////////////////////////////////////////////////n5
+ //9PT///AAD//wAA//8AAP//BAT//wAA//8AAP//AAD//1pa///x8f//////////////////////////
+ ///////////////////////////////////////////////////h4f//Dg7//wAA//8AAP//b2//////
+ /////////////42N//8BAf//AAD//wAA//8tLf//6ur/////////////////////////////////////
+ //////////////////9zc///AAD//wAA//8AAP//W1v///z8////////////////////////////////
+ //////////////////8iIv//AAD//wAA///w8P//////////////////////////////////////////
+ //////////////////9XV///AAD//wAA//8AAP//AAD//wYG//9SUv//7+//////////////////////
+ //////////////////////////////////////////////////////////////////8/P///AAD//wAA
+ //9RUf//////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////5+f//T0///wAA//8AAP//AAD//4mJ///MzP//Jib//wAA
+ //8AAP//AAD//yMj///Ly///////////////////////////////////////////////////////////
+ /////////////0ZG//8AAP//AAD//yEh///z8////////////////////////5aW//8BAf//AAD//wAA
+ //8rK///5OT/////////////////////////////////////////////eXn//wAA//8AAP//AAD//09P
+ ///8/P///////////////////////////////////////////////////////yIi//8AAP//AAD///Dw
+ /////////////////////////////////////////////////////////////5qa//93d///nJz//7y8
+ ///h4f///Pz/////////////////////////////////////////////////////////////////////
+ /////////////////////////////zg4//8AAP//AAD//wUF//8jI///OTn//1VV//9sbP//h4f//6Gh
+ //+4uP//0tL//+rq////////////////////////////////////////////////////////+fn//09P
+ //8AAP//AAD//wAA//+Jif/////////////z8///YmL//wAA//8AAP//AAD//wUF//+Kiv///f3/////
+ //////////////////////////////////////////////////+goP//AAD//wAA//8BAf//vr7/////
+ /////////////////////////////5mZ//8DA///AAD//wAA//8kJP//5OT/////////////////////
+ /////////////4SE//8AAP//AAD//wAA//9PT///+fn/////////////////////////////////////
+ ////////////////////////Gxv//wAA//8AAP//8PD/////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////19f//35+//8jI///AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wYG//8gIP//Nzf//1FR
+ //9qav//g4P//52d//+1tf//zs7//+bm//9PT///AAD//wAA//8BAf//jY3/////////////////////
+ ////////p6f//w8P//8AAP//AAD//wAA//9HR///5+f/////////////////////////////////////
+ ////////5eX//xAQ//8AAP//AAD//2ho/////////////////////////////////////////////6Sk
+ //8DA///AAD//wAA//8eHv//3Nz///////////////////////+Jif//AAD//wAA//8AAP//Q0P///b2
+ //////////////////////////////////////////////////////////////////8REf//AAD//wAA
+ ///w8P//////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///m5v//jY3//zMz//8AAP//AAD//wAA//8AAP//AAD//wAA//8CAv//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AQH//5aW////////////////////////////////////////39///zo6//8AAP//AAD//wAA
+ //8WFv//uLj///////////////////////////////////////9RUf//AAD//wAA//8eHv//8fH/////
+ /////////////////////////////////////////////6am//8GBv//AAD//wAA//8dHf//1dX/////
+ ////////k5P//wAA//8AAP//AAD//0FB///19f//////////////////////////////////////////
+ /////////////////////////////xER//8AAP//AAD///Dw////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////+/v//+cnP//Q0P//wIC//8AAP//AAD//wAA//8AAP//AAD//wwM
+ //9aWv//tLT///r6///v7///2Nj//7u7//+lpf//iYn//3Bw//9YWP//Ozv//yUl//8JCf//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wEB//+Wlv//////////////////////////
+ ////////////////////////+/v//3t7//8DA///AAD//wAA//8BAf//c3P///n5////////////////
+ ////////p6f//wAA//8AAP//AQH//7q6////////////////////////////////////////////////
+ /////////////7Oz//8GBv//AAD//wAA//8VFf//0tL//5aW//8BAf//AAD//wAA//83N///7+//////
+ ////////////////////////////////////////////////////////////////////////ERH//wAA
+ //8AAP///Pz/////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////9/f//6ys//9SUv//Bwf//wAA
+ //8AAP//AAD//wAA//8AAP//BQX//0xM//+mpv//8/P/////////////////////////////////////
+ ///////////////////////////////////v7///2Nj//7u7//+lpf//iYn//3Bw//9YWP//Ozv//yUl
+ //8LC///lpb//////////////////////////////////////////////////////////////////8DA
+ //8cHP//AAD//wAA//8AAP//NDT//9vb/////////////+rq//8VFf//AAD//wAA//9hYf//////////
+ /////////////////////////////////////////////////////////////7S0//8KCv//AAD//wAA
+ //8PD///AQH//wAA//8AAP//MzP//+/v////////////////////////////////////////////////
+ //////////////////////////////////8REf//AAD//wAA////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///8/P//u7v//2Fh//8PD///AAD//wAA//8AAP//AAD//wAA//8BAf//PT3//5eX///r6///////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////+3t//9RUf//AAD//wAA//8AAP//DQ3//6Oj
+ ////////WVn//wAA//8AAP//Gxv//+/v////////////////////////////////////////////////
+ /////////////////////////////76+//8KCv//AAD//wAA//8AAP//AAD//y0t///q6v//////////
+ /////////////////////////////////////////////////////////////////////////////xER
+ //8AAP//AAD/////////////9vb///Dw///w8P//8PD///Dw///n5///4eH//+Hh///h4f//4eH//9XV
+ ///R0f//0dH//9HR///R0f//wsL//7+///+4uP//cXH//xoa//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8uLv//iIj//+Li////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////+Xl///CQn//wAA//8AAP//AAD//0JC//8AAP//AAD//wAA//+0tP//////////
+ /////////////////////////////////////////////////////////////////////////////76+
+ //8PD///AAD//wAA//8nJ///6ur/////////////////////////////////////////////////////
+ ////////////////////////////////////////AwP//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//yAg//96ev//09P/////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////////////////////////////////////U1P//LS3//wAA
+ //8AAP//AAD//wAA//8AAP//XFz/////////////////////////////////////////////////////
+ /////////////////////////////////////////////8jI//8PD///JCT//+Tk////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//Fhb//2tr///Fxf///f3/////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////39///a2v//wEB//8AAP//AAD//xgY///s7P//////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////8nJ///j4///////////////////////////////////////////////////////////
+ /////////////////////////////////////////////wAA//8AAP//AgL//xER//8REf//ERH//xER
+ //8REf//Fhb//yIi//8iIv//IiL//yIi//8iIv//KSn//zAw//8wMP//MDD//zAw//8wMP//Ojr//z8/
+ //8/P///Xl7//7e3///6+v//////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////srL//xQU//8AAP//ra3/////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////5OT//4eH////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAQAAAAIAAAEAIAAAAAAAACAEAAAA
+ AAAAAAAAAAAAAAAAAAD/////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////39/f/8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/39/f///////////////////////////////////////f39//wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/f39/////////////////////////////////////
+ ////////////////////////f39//wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9/f3//////////////////////////
+ /////////////39/f/8AAAD/AAAA/wAAAP9/f3//////////////////////////////////////////
+ //////////////////9/f3//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/39/f///////////////
+ /////////////////////////////////////////////39/f/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9/f3//////////////////////////
+ /////////////////////////////////////////////////////////////////////////////39/
+ f/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/f39/////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////////9/f3//AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9/f3///////////////////////////////////////39/
+ f/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/39/f///////////////////////////////
+ /////////////////////////////39/f/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/f39/////////////////////
+ //////////////////9/f3//AAAA/wAAAP8AAAD/f39/////////////////////////////////////
+ ////////////////////////f39//wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9/f3//////////
+ //////////////////////////////////////////////////9/f3//AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/f39/////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //9/f3//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/39/f///////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////f39//wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/f39/////////////////////////////////////
+ //9/f3//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9/f3//////////////////////////
+ //////////////////////////////////9/f3//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/39/f///////////////
+ ////////////////////////f39//wAAAP8AAAD/AAAA/39/f///////////////////////////////
+ /////////////////////////////39/f/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/f39/////
+ ////////////////////////////////////////////////////////f39//wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/39/f///////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////f39//wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9/f3//////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////////////////////39/
+ f/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/39/f///////////////////////////////
+ ////////f39//wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/f39/////////////////////
+ ////////////////////////////////////////f39//wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9/f3//////////
+ /////////////////////////////39/f/8AAAD/AAAA/wAAAP9/f3//////////////////////////
+ //////////////////////////////////9/f3//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/39/
+ f////////////////////////////////////////////////////////////39/f/8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9/f3//////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////39/f/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/f39/////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //9/f3//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/39/f///////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////39/f/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/f39/////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////f39//wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9/f3//////////
+ //////////////////////////////////////////////////9/f3//AAAA/wAAAP8AAAD/f39/////
+ //////////////////////////////////9/f3//AAAA/wAAAP8AAAD/f39/////////////////////
+ ////////////////////////////////////////f39//wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP9/f3///////////////////////////////////////39/f/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/f39/////////////////////////////////////////////////////////////f39//wAA
+ AP8AAAD/AAAA/39/f///////////////////////////////////////////////////////////////
+ //////////////////9/f3//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/39/f///////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////f39//wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9/f3//////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////9/f3//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/39/f///////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////39/f/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/f39/////
+ ////////////////////////////////////////////////////////f39//wAAAP8AAAD/AAAA/39/
+ f///////////////////////////////////////f39//wAAAP8AAAD/AAAA/39/f///////////////
+ /////////////////////////////////////////////39/f/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/f39///////////////////////////////////////9/f3//AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/39/f////////////////////////////////////////////////////////////39/
+ f/8AAAD/AAAA/wAAAP9/f3//////////////////////////////////////////////////////////
+ ////////////////////////f39//wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9/f3//////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////39/f/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/f39/////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////f39//wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9/f3//////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////9/f3//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/39/
+ f////////////////////////////////////////////////////////////39/f/8AAAD/AAAA/wAA
+ AP9/f3///////////////////////////////////////39/f/8AAAD/AAAA/wAAAP9/f3//////////
+ //////////////////////////////////////////////////9/f3//AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/39/f///////////////////////////////////////f39//wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP9/f3//////////////////////////////////////////////////////////
+ //9/f3//AAAA/wAAAP8AAAD/f39/////////////////////////////////////////////////////
+ /////////////////////////////39/f/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/f39/////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////9/f3//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/39/f///////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////39/f/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/f39/////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////f39//wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP9/f3////////////////////////////////////////////////////////////9/f3//AAAA/wAA
+ AP8AAAD/f39///////////////////////////////////////9/f3//AAAA/wAAAP8AAAD/f39/////
+ ////////////////////////////////////////////////////////f39//wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP9/f3///////////////////////////////////////39/f/8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/f39/////////////////////////////////////////////////////
+ ////////f39//wAAAP8AAAD/AAAA/39/f///////////////////////////////////////////////
+ //////////////////////////////////9/f3//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/39/
+ f///////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////f39//wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9/f3//////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////9/f3//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/39/
+ f///////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////39/f/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/f39/////////////////////////////////////////////////////////////f39//wAA
+ AP8AAAD/AAAA/39/f///////////////////////////////////////f39//wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/f39///////////////////////////////////////9/f3//AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/39/f///////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////f39//wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP9/f3//////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////39/f/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/f39/////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////f39//wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP9/f3//////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////9/f3//AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/39/f////////////////////////////////////////////////////////////39/
+ f/8AAAD/AAAA/wAAAP9/f3///////////////////////////////////////39/f/8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/39/f///////////////////////////////////////f39//wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9/f3//////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////39/f/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/f39/////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////9/f3//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/39/
+ f///////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////39/f/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/f39/////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////f39//wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP9/f3//////////////////////////////////////////////////////////
+ //9/f3//AAAA/wAAAP8AAAD/f39///////////////////////////////////////9/f3//AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9/f3///////////////////////////////////////39/
+ f/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/f39/////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////9/f3//AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/39/f///////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////f39//wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP9/f3//////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////9/f3//AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/39/f///////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////39/f/8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/f39/////////////////////////////////////////////////////
+ ////////f39//wAAAP8AAAD/AAAA/39/f///////////////////////////////////////f39//wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/f39/////////////////////////////////////
+ //9/f3//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/39/f///////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////f39//wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP9/f3//////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////39/f/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/f39/////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////f39//wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/39/f///////////////
+ //////////////////////////////////////////////////////////////////9/f3//AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/39/f///////////////////////////////////////f39//wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9/f3///////////////////////////////////////39/
+ f/8AAAD/AAAA/wAAAP9/f3//////////////////////////////////////////////////////////
+ //9/f3//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/39/f///////////////////////////////
+ ////////f39//wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9/f3//////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////39/f/8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/f39/////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////9/f3//AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/39/f///////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////39/f/8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9/f3//////////
+ ////////////////////////////////////////////////////////////////////////f39//wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9/f3///////////////////////////////////////39/
+ f/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/f39/////////////////////////////////////
+ //9/f3//AAAA/wAAAP8AAAD/f39/////////////////////////////////////////////////////
+ ////////f39//wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9/f3//////////////////////////
+ /////////////39/f/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/f39/////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////////9/f3//AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/39/f///////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////f39//wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP9/f3//////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////////9/f3//AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/f39/////
+ /////////////////////////////////////////////////////////////////////////////39/
+ f/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/f39/////////////////////////////////////
+ //9/f3//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/39/f///////////////////////////////
+ ////////f39//wAAAP8AAAD/AAAA/39/f///////////////////////////////////////////////
+ /////////////39/f/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/f39/////////////////////
+ //////////////////9/f3//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/39/f///////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////f39//wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9/f3//////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////39/f/8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/f39/////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////f39//wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/39/
+ f///////////////////////////////////////////////////////////////////////////////
+ //9/f3//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/39/f///////////////////////////////
+ ////////f39//wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9/f3//////////////////////////
+ /////////////39/f/8AAAD/AAAA/wAAAP9/f3//////////////////////////////////////////
+ //////////////////9/f3//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/39/f///////////////
+ ////////////////////////f39//wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9/f3//////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////////////////////39/
+ f/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/f39/////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////////9/f3//AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/39/f///////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////////////////////39/
+ f/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/f39/////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////f39//wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9/f3//////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////9/f3//AAAA/wAAAP8AAAD/f39/////////////////////////////////////
+ ////////////////////////f39//wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9/f3//////////
+ /////////////////////////////39/f/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/f39/////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////39/f/8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/f39//////////////////39/f/8AAAD/AAAA/wAAAP9/f3//////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////f39//wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9/f3//////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //9/f3//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/39/f///////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////39/f/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/f39/////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////f39//wAAAP8AAAD/AAAA/39/f///////////////////////////////
+ /////////////////////////////39/f/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/f39/////
+ //////////////////////////////////9/f3//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/39/
+ f///////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////////9/f3//AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/39/f/////////////////9/f3//AAAA/wAAAP8AAAD/f39/////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////////////////////39/
+ f/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/f39/////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////f39//wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9/f3//////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////9/f3//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/39/f///////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////39/f/8AAAD/AAAA/wAAAP9/f3//////////////////////////
+ //////////////////////////////////9/f3//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/39/
+ f///////////////////////////////////////f39//wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP9/f3//////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////f39//wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9/f3//////////////////f39//wAAAP8AAAD/AAAA/39/
+ f///////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //9/f3//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/39/f///////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////39/f/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/f39/////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////f39//wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9/f3//////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////9/f3//AAAA/wAAAP8AAAD/f39/////////////////////
+ ////////////////////////////////////////f39//wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP9/f3///////////////////////////////////////39/f/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/f39/////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////////////////////39/
+ f/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/f39//////////////////39/f/8AAAD/AAAA/wAA
+ AP9/f3//////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////f39//wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9/f3//////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////9/f3//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/39/f///////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////39/f/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/f39/////
+ ////////////////////////////////////////////////////////f39//wAAAP8AAAD/AAAA/39/
+ f///////////////////////////////////////f39//wAAAP8AAAD/AAAA/39/f///////////////
+ /////////////////////////////////////////////39/f/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/f39///////////////////////////////////////9/f3//AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/39/f////////////////////////////////////////////////////////////39/
+ f/8AAAD/AAAA/wAAAP9/f3///////////////////////////////////////39/f/8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/f39/////////////////////////////////////////////////////
+ ////////f39//wAAAP8AAAD/AAAA/39/f///////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////39/f/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/f39/////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////f39//wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9/f3//////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////9/f3//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/39/
+ f////////////////////////////////////////////////////////////39/f/8AAAD/AAAA/wAA
+ AP9/f3///////////////////////////////////////39/f/8AAAD/AAAA/wAAAP9/f3//////////
+ //////////////////////////////////////////////////9/f3//AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/39/f///////////////////////////////////////f39//wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP9/f3//////////////////////////////////////////////////////////
+ //9/f3//AAAA/wAAAP8AAAD/f39///////////////////////////////////////9/f3//AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/39/f///////////////////////////////////////////////
+ /////////////39/f/8AAAD/AAAA/wAAAP9/f3//////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////9/f3//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/39/f///////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////39/f/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/f39/////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////f39//wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP9/f3////////////////////////////////////////////////////////////9/f3//AAAA/wAA
+ AP8AAAD/f39///////////////////////////////////////9/f3//AAAA/wAAAP8AAAD/f39/////
+ ////////////////////////////////////////////////////////f39//wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP9/f3///////////////////////////////////////39/f/8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/f39/////////////////////////////////////////////////////
+ ////////f39//wAAAP8AAAD/AAAA/39/f///////////////////////////////////////f39//wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9/f3//////////////////////////////////////////
+ //////////////////9/f3//AAAA/wAAAP8AAAD/f39/////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////f39//wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9/f3//////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////9/f3//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/39/
+ f///////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////39/f/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/f39/////////////////////////////////////////////////////////////f39//wAA
+ AP8AAAD/AAAA/39/f///////////////////////////////////////f39//wAAAP8AAAD/AAAA/39/
+ f////////////////////////////////////////////////////////////39/f/8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/f39///////////////////////////////////////9/f3//AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/39/f///////////////////////////////////////////////
+ /////////////39/f/8AAAD/AAAA/wAAAP9/f3///////////////////////////////////////39/
+ f/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/f39/////////////////////////////////////
+ ////////////////////////f39//wAAAP8AAAD/AAAA/39/f///////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////39/f/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/f39/////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////f39//wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/f39/////////////////////////////////////////////////////////////f39//wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/39/
+ f///////////////////////////////////////////////////////////////////////////////
+ //9/f3//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/f39/////////////////////////////////////////////////////////////////////
+ /////////////39/f/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP9/f3//////////////////////////////////////////////////////////
+ //9/f3//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/39/f///////////////////////////////
+ /////////////////////////////39/f/8AAAD/AAAA/wAAAP9/f3//////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////9/f3//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/39/
+ f///////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////39/f/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/39/f////////////////////////////////////////////////////////////39/
+ f/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP9/f3//////////////////////////////////////////////////////////////////////////
+ ////////f39//wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/39/f///////////////////////////////////////////////////////////////
+ //////////////////9/f3//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/f39/////////////////////////////////////////////////////
+ ////////f39//wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9/f3//////////////////////////
+ //////////////////////////////////9/f3//AAAA/wAAAP8AAAD/f39/////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////f39//wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP9/f3//////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////9/f3//AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP9/f3//////////////////////////////////////////////////////////
+ //9/f3//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/f39/////////////////////////////////////////////////////////////////////
+ /////////////39/f/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP9/f3//////////////////////////////////////////////////////////
+ ////////////////////////f39//wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/39/f///////////////////////////////////////////////
+ /////////////39/f/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/f39/////////////////////
+ ////////////////////////////////////////f39//wAAAP8AAAD/AAAA/39/f///////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////39/f/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/f39/////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////f39//wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/f39/////////////////////////////////////////////////////
+ ////////f39//wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/39/f///////////////////////////////////////////////////////////////
+ //////////////////9/f3//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/f39/////////////////////////////////////////////////////
+ /////////////////////////////39/f/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9/f3//////////////////////////////////////////
+ //////////////////9/f3//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/39/f///////////////
+ /////////////////////////////////////////////39/f/8AAAD/AAAA/wAAAP9/f3//////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////9/f3//AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/39/f///////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////f39//wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP9/f3//////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////39/f/8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/f39/////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////////9/f3//AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/39/f///////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////f39//wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9/f3//////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////////////////////39/
+ f/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/f39/////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //9/f3//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/39/f///////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////f39//wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9/f3//////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////90dP//dHT/////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////6+v//v7///11d//8NDf//Ghr//ycn//9ERP//U1P//2Fh//96ev//iIj//6Oj
+ //+3t///xMT//+Hh///r6///////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////6en//z8///+hof//////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////90dP//AAD//wAA//9VVf//+vr/////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////9LS//9xcf//Ghr//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8aGv//Jyf//0RE//9TU///YWH//3p6//+IiP//o6P//7y8
+ ///Hx///4eH///Dw////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////8/P//zg4//8AAP//AAD//0FB
+ ///c3P//////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////90dP//AAD//wAA//8AAP//AAD//0FB
+ ///z8///////////////////////////////////////////////////////////////////////////
+ ///k5P//hIT//ysr//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//x4e//8sLP//RET//1ZW//9hYf//f3///4yM//+jo///vLz//8fH
+ ///h4f//8PD/////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////+vr//0xM//8AAP//AAD//wAA
+ //8AAP//CAj//4aG///6+v//////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////r6//9ra///AAD//wAA//8AAP//AAD//wAA
+ //8AAP//Li7//+np////////////////////////////////////////////////////////8PD//56e
+ //9DQ///AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//Hh7//yws//9ERP//Wlr//2Rk//9/f///kZH//+Xl////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////2dn//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//Kir//8jI////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////r6//9VVf//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8iIv//2dn///////////////////////////////////r6//+ysv//VVX//wgI
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//+Hh///////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////4OD//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//amr///Dw////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////r6//9VVf//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//xUV///Cwv//////////////////x8f//2lp//8VFf//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//S0v/////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////52d//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8aGv//qKj/////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////r6//9VVf//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//DQ3//6+v///r6///Jyf//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//CAj//1VV//+ysv//9vb//+Tk
+ ///a2v//xMT//6+v//+env//f3///3Bw//9hYf//RET//zg4//8jI///CAj//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//w0N
+ ///29v///////////////////////////////////////////////////////8LC//9iYv//8/P/////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////7Oz//8EBP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//9NTf//4eH/////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////Pz//9ISP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8EBP//e3v//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//9HR///np7///Pz////////////////
+ ///////////////////////////////////////////////////////////////////29v//4eH//8/P
+ ///AwP//o6P//5GR//9/f///ZGT//1ZW//9ERP//LCz//x4e//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//w8P//////////////////////////////////////////////////8LC//8NDf//AAD//zU1
+ ///p6f//////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////8zM//8NDf//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//Jib//wQE//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//w0N
+ //+Pj///+vr/////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////5GR//9/f///f3///39///9/f///f3///39/
+ //9/f///f3///39///9/f///f3///39///9/f///f3///39///9/f///f3///39///9/f///f3///39/
+ //9/f///f3///39///9/f///f3///39///9/f///f3///39///9/f///f3///39////R0f//////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////Pz//88PP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//ykp//+Dg///AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//MzP//5CQ///k5P//////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////+vr///h4f//xMT//7Oz
+ //+jo///g4P//3d3//9hYf//TEz//0BA//8jI///DQ3//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//39//////////////////////////////////////////////6+v//8NDf//AAD//wAA
+ //8AAP//Ghr//8zM////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////93d//8aGv//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//NTX///Pz///Q0P//Njb//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//zEx///MzP//////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////8jI///AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//lZX/////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////Pz//88PP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//ykp///p6f///////6Gh//8EBP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//yIi//98fP//2dn/////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////4eH//9bW//9aWv//AAD//wAA
+ //8AAP//AAD//wAA//9ERP///////////////////////////////////////6ys//8EBP//AAD//wAA
+ //8AAP//AAD//wAA//8NDf//qKj/////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////+np//8pKf//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//IiL//+np//////////////r6//+Skv//DQ3//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//BAT//3Jy///z8///////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////IyP//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//39/
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////Pz//88PP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//ykp///p6f//////////////////s7P//w0N//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//Jib//8fH////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////s7P//wAA
+ //8AAP//AAD//wAA//8AAP//CAj///b2/////////////////////////////6Wl//8EBP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//+Dg///////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////Pz//88PP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//FRX//9nZ/////////////////////////////+Hh//9NTf//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//Hh7//7Cw////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////yMj//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //96ev//////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////+np//8pKf//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//zg4///p6f/////////////////////////////Cwv//FRX//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//0RE////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////////////////////Dw
+ //8AAP//AAD//wAA//8AAP//AAD//wAA///Dw////////////////////////5OT//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//1lZ///z8///////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////r6//9QUP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//DQ3//8LC/////////////////////////////////////////////6io
+ //8aGv//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//VVX//+Xl////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////////8jI///AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//YWH/////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////+np//8pKf//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//zw8///z8////////////////////////////////////////9nZ//8eHv//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//9ERP//////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////NDT//wAA//8AAP//AAD//wAA//8AAP//f3///////////////////5OT//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//NTX//+np////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////////9ra///AAD//wAA
+ //8AAP//AAD//wAA//8AAP//BAT//6ys////////////////////////////////////////////////
+ ////////8PD//2Zm//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8REf//lpb///r6
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////IyP//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//2Fh////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////+np//8pKf//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//zw8///z8///////////////////////////////////////////////////6en//ykp
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//FRX//8zM////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////3R0//8AAP//AAD//wAA//8AAP//AAD//0RE/////////////3h4//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8aGv//zMz/////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////////+IiP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//5OT////////////////////////////////////////////////
+ ////////////////////////xcX//yoq//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //85Of//1NT/////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////////////////////wQE
+ //8AAP//AAD//wAA//8AAP//AAD//39///9/f///f3///39///9/f///f3///39///9/f///f3///39/
+ //9/f///f3///39///9/f///f3///39///9/f///f3///39///9/f///f3///39///9RUf//AAD//wAA
+ //8AAP//AAD//wAA//9ISP//////////////////////////////////////////////////////////
+ /////////////////////////////////////////////+Hh//8pKf//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//0hI///z8///////////////////////////////////////////////////////////
+ ///z8///PDz//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8NDf//u7v/////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////+7u///AAD//wAA//8AAP//AAD//wAA//8EBP//8/P//3R0//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//Ghr//7S0//8iIv//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//w0N
+ //+oqP//////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////////+hof//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//3h4////////////////////////////////////////////////
+ ///////////////////////////////////29v//goL//wgI//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wQE//97e///9vb/////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //8AAP//AAD//wAA//8AAP//AAD//wAA////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////r6///wAA
+ //8AAP//AAD//wAA//8AAP//RET/////////////////////////////////////////////////////
+ /////////////////////////////////////////////9nZ//8aGv//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//1VV///6+v//////////////////////////////////////////////////////////
+ //////////////b2//9VVf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wQE//+lpf//////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////8/P//wQE//8AAP//AAD//wAA//8AAP//AAD//0BA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//Ghr//9nZ////////6en//zw8//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//4OD////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////////+3t///BAT//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//1lZ////////////////////////////////////////////////
+ ///////////////////////////////////////////////////Z2f//PT3//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//yIi//+5uf//////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////AAD//wAA//8AAP//AAD//wAA//8AAP//////////////////////////////////////////
+ /////////////////////////////////////////////////////////////////////////////8TE
+ //8AAP//AAD//wAA//8AAP//AAD//zAw////////////////////////////////////////////////
+ /////////////////////////////////////////////9nZ//8aGv//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//1VV///6+v//////////////////////////////////////////////////////////
+ ////////////////////////xMT//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//4+P
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////87O///AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//KSn//9nZ///////////////////6+v//YmL//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//WVn///Pz////////////////////////////////////////////////
+ ///////////////////////////////////////////////////////////////////MzP//DQ3//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//0FB///6+v//////////////////////////////////////////
+ //////////////////////////////////////////////////////////////////+dnf//ERH//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//11d///s7P//////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////wAA//8AAP//AAD//wAA//8AAP//AAD/////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///ExP//AAD//wAA//8AAP//AAD//wAA//8jI///////////////////////////////////////////
+ /////////////////////////////////////////////9nZ//8aGv//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//1lZ///6+v//////////////////////////////////////////////////////////
+ /////////////////////////////7Oz//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//dHT///r6////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////eHj//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//KSn//+np//////////////////////////////////+Li///BAT//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//81Nf//6en/////////////////////////////////////
+ ///////////////////////////////////////////////////////////////////d3f//Ghr//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//ykp///z8///////////////////////////////////////////
+ /////////////////////////////////////////////////////////////////////////////+np
+ //9VVf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//ERH//52d////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////8AAP//AAD//wAA//8AAP//AAD//wAA////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////4eH//wAA//8AAP//AAD//wAA//8AAP//Fhb/////////////////////////////////////
+ /////////////////////////////////////////////8LC//8aGv//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//3R0////////////////////////////////////////////////////////////////
+ //////////////////////////////////+jo///AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//9VVf//+vr/////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////7u7//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//MTH//+np/////////////////////////////////////////////7Oz
+ //8NDf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//xoa///MzP//////////////////////////
+ ///////////////////////////////////////////////////////////////////p6f//KSn//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//xoa///p6f//////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////7S0//8iIv//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//a2v/////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////AAD//wAA//8AAP//AAD//wAA//8AAP//////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////+Hh//8AAP//AAD//wAA//8AAP//AAD//wAA////////////////////////////////
+ /////////////////////////////////////////////8LC//8NDf//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//3R0////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////o6P//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//zw8///z8///////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////////////////////z8///BAT//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//PDz///Pz////////////////////////////////////////////////
+ ////////1NT//yIi//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//DQ3//6io////////////////
+ ///////////////////////////////////////////////////////////////////z8///PDz//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//w0N///Z2f//////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////8/P//3Jy//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//ERH//93d
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////wAA//8AAP//AAD//wAA//8AAP//Hh7/////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////29v//AAD//wAA//8AAP//AAD//wAA//8AAP//9vb/////////////////////
+ /////////////////////////////////////////////8LC//8NDf//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//3R0////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////6Oj//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//KSn//+np////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////9ra//+zs///iIj//7e3////////////////////////////////
+ ////////////////////////////////////////////////////////6en//xER//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//PDz///Pz////////////////////////////////////////////////
+ ///////////////////p6f//PDz//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//g4P/////
+ ///////////////////////////////////////////////////////////////////6+v//UFD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wQE//+/v///////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////+Dg///AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//7e3
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////8AAP//AAD//wAA//8AAP//AAD//yMj////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////wAA//8AAP//AAD//wAA//8AAP//AAD//+Hh////////////////
+ /////////////////////////////////////////////8LC//8NDf//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//5OT////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////+jo///AAD//wAA//8AAP//AAD//wAA
+ //9RUf//Ghr//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8aGv//2dn/////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///g4P//t7f//4yM//9hYf//ODj//w0N//8AAP//AAD//wAA//9aWv//////////////////////////
+ ////////////////////////////////////////////////////////6en//ykp//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//VVX///b2////////////////////////////////////////////////
+ //////////////////////////////r6//9iYv//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //9ZWf//8/P/////////////////////////////////////////////////////////////b2///wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//+oqP//////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////+3t///BAT//wAA//8AAP//AAD//wAA//8AAP//AAD//4OD
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////AAD//wAA//8AAP//AAD//wAA//8jI///////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////8REf//AAD//wAA//8AAP//AAD//wAA///h4f//////////
+ /////////////////////////////////////////////6ys//8ICP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//5OT////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////o6P//wAA//8AAP//AAD//wAA
+ //8AAP//f3///+np//8pKf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//xER///Cwv//////////
+ ////////////////////////////////////////////////////////5+f//7y8//+Rkf//ZGT//zg4
+ //8NDf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//FRX/////////////////////
+ ////////////////////////////////////////////////////////3d3//ykp//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//+vr////////////////////////////////////////////////
+ /////////////////////////////////////////////4uL//8EBP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//zU1///p6f//////////////////////////////////////////////////i4v//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//+Pj///////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////h4f//FRX//wAA//8AAP//AAD//wAA//8AAP//AAD//0hI
+ ///6+v//////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////wAA//8AAP//AAD//wAA//8AAP//IyP/////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////IyP//wAA//8AAP//AAD//wAA//8AAP//xMT/////
+ /////////////////////////////////////////////6ys//8EBP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//5OT////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////6Oj//8AAP//AAD//wAA
+ //8AAP//AAD//39/////////8PD//zw8//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//CAj//6ys
+ /////////////////////////////+vr//+/v///kZH//2ho//88PP//ERH//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA///S0v//////////
+ ////////////////////////////////////////////////////////2dn//xoa//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//+zs///////////////////////////////////////////
+ ////////////////////////////////////////////////////////s7P//w0N//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//Ghr//8zM////////////////////////////////////////paX//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//9vb///////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////29v//MTH//wAA//8AAP//AAD//wAA//8AAP//AAD//yIi
+ ///w8P//////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////8AAP//AAD//wAA//8AAP//AAD//yMj
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////ycn//8AAP//AAD//wAA//8AAP//AAD//8TE
+ /////////////////////////////////////////////6ys//8EBP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//BAT//6Wl////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////////+env//AAD//wAA
+ //8AAP//AAD//wAA//9/f//////////////z8///UFD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8EBP//lpb////////Z2f//RET//xYW//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//kZH/////
+ ////////////////////////////////////////////////////////2dn//xoa//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//cHD/////////////////////////////////////
+ ///////////////////////////////////////////////////////////////////U1P//IiL//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8NDf//qKj/////////////////////////////u7v//wQE
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//9VVf//+vr/////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////YmL//wAA//8AAP//AAD//wAA//8AAP//AAD//w0N
+ ///Q0P//////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////////////////////r6///AAD//wAA//8AAP//AAD//wAA
+ //8jI///////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////9ERP//AAD//wAA//8AAP//AAD//wAA
+ //+rq////////////////////////////////////////6Wl//8EBP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//BAT//6ys////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////f3///wAA
+ //8AAP//AAD//wAA//8AAP//f3////////////////////r6//9nZ///AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//98fP//4eH//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//1NT
+ ////////////////////////////////////////////////////////wsL//w0N//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//zQ0////////////////////////////////
+ /////////////////////////////////////////////////////////////////////////////+zs
+ //9BQf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//+Dg///////////////////0ND//w0N
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//88PP//8/P/////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////nZ3//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //+hof//////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////4eH//wAA//8AAP//AAD//wAA
+ //8AAP//IyP/////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////RET//wAA//8AAP//AAD//wAA
+ //8AAP//o6P//////////////////////////////////5OT//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//BAT//6ys////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////////////////////39/
+ //8AAP//AAD//wAA//8AAP//AAD//39//////////////////////////////0tL//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//15e//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8NDf//+vr/////////////////////////////////////////////wsL//w0N//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//8PD/////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////+vr//2dn//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//1lZ///z8///4eH//xoa
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8pKf//7Oz/////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////zMz//wgI//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //9ra///////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////+Hh//8AAP//AAD//wAA
+ //8AAP//AAD//yMj////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////15e//8AAP//AAD//wAA
+ //8AAP//AAD//5GR/////////////////////////////5OT//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//DQ3//7Oz////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //9/f///AAD//wAA//8AAP//AAD//wAA//9/f///////////////////6en//1VV//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8ICP//CAj//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8EBP//MDD//1pa//+IiP//q6v//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//8vL////////////////////////////////////////r6///w0N//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//i4v//wgI//8AAP//AAD//wAA//8AAP//AAD//7Oz////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////k5P//wQE//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//NTX//ykp
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8aGv//3d3/////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////7Oz//x4e//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //84OP//+vr/////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////////////////////////////////////h4f//AAD//wAA
+ //8AAP//AAD//wAA//8jI///////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////////9hYf//AAD//wAA
+ //8AAP//AAD//wAA//9/f////////////////////////5OT//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//DQ3//8LC////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////f3///wAA//8AAP//AAD//wAA//8AAP//jIz/////////////nZ3//xER//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//9FRf//4eH//zg4//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//zAw//9WVv//f3///6+v///W1v//+vr///////////////////////80NP//AAD//wAA
+ //8AAP//AAD//wAA//+Hh////////////////////////////////////////8LC//8NDf//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//5OT//9ERP//AAD//wAA//8AAP//AAD//wAA//9tbf//////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////+3t///DQ3//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8NDf//zMz/////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////+vr//0VF//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8aGv//5eX/////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////4eH//wAA
+ //8AAP//AAD//wAA//8AAP//IyP/////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////c3P//wAA
+ //8AAP//AAD//wAA//8AAP//d3f//////////////////4OD//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//DQ3//8LC////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////39///8AAP//AAD//wAA//8AAP//AAD//6Oj///Z2f//QUH//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//xER//+hof////////////9TU///AAD//wAA//8AAP//AAD//wAA
+ //9wcP//0tL///b2////////////////////////////////////////////////////////cHD//wAA
+ //8AAP//AAD//wAA//8AAP//R0f/////////////////////////////////////////////wsL//w0N
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//IiL//wAA//8AAP//AAD//wAA//8AAP//Kyv/////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////9nZ//8mJv//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8EBP//t7f/////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////4CA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8EBP//v7//////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////////////////////+Hh
+ //8AAP//AAD//wAA//8AAP//AAD//yMj////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////////////////////39/
+ //8AAP//AAD//wAA//8AAP//AAD//2Fh/////////////3R0//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//Ghr//8LC////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////9/f///AAD//wAA//8AAP//AAD//wAA//9CQv//CAj//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//1VV///s7P//////////////////aGj//wAA//8AAP//AAD//wAA
+ //8AAP//f3///////////////////////////////////////////////////////////////////7u7
+ //8AAP//AAD//wAA//8AAP//AAD//wgI///29v//////////////////////////////////////////
+ ///Cwv//DQ3//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ ///n5///////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////7Oz//0FB//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//oaH/////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////6+v//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//j4//////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///h4f//AAD//wAA//8AAP//AAD//wAA//88PP//////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //+IiP//AAD//wAA//8AAP//AAD//wAA//9hYf///////3R0//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//Ghr//9nZ////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////f3///wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//Hh7//7S0/////////////////////////////4OD//8AAP//AAD//wAA
+ //8AAP//AAD//2Rk////////////////////////////////////////////////////////////////
+ ///z8///BAT//wAA//8AAP//AAD//wAA//8AAP//w8P/////////////////////////////////////
+ /////////////8LC//8aGv//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//q6v/////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////////////////////////////////////6+v//Z2f//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//g4P/////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////93d//8NDf//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//WVn/////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////4eH//wAA//8AAP//AAD//wAA//8AAP//RET/////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////o6P//wAA//8AAP//AAD//wAA//8AAP//RET//3R0//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//Ghr//9nZ////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////2ho//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//b2////Pz//////////////////////////////////+jo///AAD//wAA
+ //8AAP//AAD//wAA//9MTP//////////////////////////////////////////////////////////
+ /////////////zs7//8AAP//AAD//wAA//8AAP//AAD//39/////////////////////////////////
+ ////////////////////////2dn//xoa//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//2ho////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //+Tk///BAT//wAA//8AAP//AAD//wAA//8AAP//Z2f/////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////Pz//8uLv//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//Li7///Pz////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////+Hh//8AAP//AAD//wAA//8AAP//AAD//0RE////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////6Oj//8AAP//AAD//wAA//8AAP//AAD//wQE//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//Hh7//9nZ////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////9hYf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8qKv//yMj/////////////////////////////////////////////xMT//wAA
+ //8AAP//AAD//wAA//8AAP//MDD/////////////////////////////////////////////////////
+ /////////////8zM//8aGv//AAD//wAA//8AAP//AAD//wAA//8/P///////////////////////////
+ ///////////////////////////////////Z2f//Ghr//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8rK///////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////7e3//8NDf//AAD//wAA//8AAP//TEz///r6////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////9ZWf//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//DQ3//9nZ////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////h4f//AAD//wAA//8AAP//AAD//wAA//9ERP//////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////ExP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//KSn//+np////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////p6f//NTX//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wQE//+Cgv//+vr//////////////////////////////////////////////////93d
+ //8AAP//AAD//wAA//8AAP//AAD//xER////////////////////////////////////////////////
+ /////////////52d//8ICP//AAD//wAA//8AAP//AAD//wAA//8AAP//BAT///Pz////////////////
+ /////////////////////////////////////////////9nZ//8aGv//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//+fn////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////2dn//yYm//8AAP//NTX///Pz////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////+Skv//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//6+v////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////4eH//wAA//8AAP//AAD//wAA//8AAP//RET/////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////xMT//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//KSn//+np////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////+dnf//ERH//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//zk5///Z2f//////////////////////////////////////////////////////////
+ ///29v//AAD//wAA//8AAP//AAD//wAA//8AAP//8/P/////////////////////////////////////
+ ////////+vr//2dn//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//x4e///p6f//////////
+ ////////////////////////////////////////////////////////2dn//xoa//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//+rq///////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////s7P//YmL//+np////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////+/v///BAT//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//4CA////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////9ra//8AAP//AAD//wAA//8AAP//AAD//0RE////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////9ra//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//KSn//+np////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////9nZ//9BQf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//DQ3//5aW///6+v//////////////////////////////////////////////////////////
+ /////////////xYW//8AAP//AAD//wAA//8AAP//AAD//9ra////////////////////////////////
+ ////////6en//zg4//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//0FB///p6f//////////
+ ///////////////////////////////////////////////////////////////////Z2f//KSn//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//YWH/////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////////////////////p6f//Ghr//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//0VF///6+v//////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////ExP//AAD//wAA//8AAP//AAD//wAA//9ERP//////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////h4f//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//PDz///Pz////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////+vr//4aG//8ICP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//SEj//+Xl////////////////////////////////////////////////////////////////
+ //////////////////8wMP//AAD//wAA//8AAP//AAD//wAA//9VVf//kZH//7y8///g4P//////////
+ ////////v7///xoa//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//3Bw///6+v//////////
+ /////////////////////////////////////////////////////////////////////////////+np
+ //8pKf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//yMj///6+v//////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////////////////////6+v//PDz//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//x4e///s7P//////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////xMT//wAA//8AAP//AAD//wAA//8AAP//RET/////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////6+v//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//PDz///Pz////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////yMj//y4u//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//8TE////////////////////////////////////////////////////////////////
+ ////////////////////////TEz//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wgI
+ //80NP//U1P//wQE//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//CAj//6Gh////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////6en//ykp//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//VVX///r6////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////c3P//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wgI///MzP//////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////8TE//8AAP//AAD//wAA//8AAP//AAD//0RE
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//PDz///Pz////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////z8///b2///wQE//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA///ExP//////////////////////////////////////////////////////////
+ /////////////////////////////2Rk//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//Hh7//8zM////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////p6f//KSn//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//9VVf//+vr/////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////paX//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//+dnf//////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////////////////////ExP//AAD//wAA//8AAP//AAD//wAA
+ //9ERP//////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////BAT//wAA//8AAP//AAD//wAA
+ //8AAP//VVX///Pz////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////+0tP//Hh7//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//xMT/////////////////////////////////////////////////////
+ //////////////////////////////////9/f///AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//RUX//+zs////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////+np//8mJv//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//0xM
+ ///z8///////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////1NT//w0N//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//9nZ///////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////xMT//wAA//8AAP//AAD//wAA
+ //8AAP//RET/////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////yMj//8AAP//AAD//wAA
+ //8AAP//VVX///r6////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////+np//9VVf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//BAT//w0N
+ //8AAP//AAD//wAA//8AAP//AAD//8TE////////////////////////////////////////////////
+ ////////////////////////////////////////o6P//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//d3f///r6////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////kZH//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//PDz///Pz////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////8/P//yYm//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//81Nf//9vb/////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////8TE//8AAP//AAD//wAA
+ //8AAP//AAD//1NT////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////////8jI///AAD//wAA
+ //8AAP//VVX///r6////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////52d//8REf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//MTH//8zM
+ //9ERP//AAD//wAA//8AAP//AAD//wAA///ExP//////////////////////////////////////////
+ /////////////////////////////////////////////87O//8nJ///AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8NDf//paX/////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////8TE//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//88PP//8/P/////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////0xM//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8VFf//5eX/////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////////////////////////////////////ExP//AAD//wAA
+ //8AAP//AAD//wAA//9hYf//////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////QED//wAA
+ //8AAP//a2v///r6////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////2dn//0FB//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8ICP//ior///r6
+ ////////RET//wAA//8AAP//AAD//wAA//8AAP//4eH/////////////////////////////////////
+ //////////////////////////////////////////////////////////////r6///a2v//t7f//5GR
+ //9ra///TEz//x4e//8AAP//AAD//wAA//8AAP//AAD//wAA//8iIv//0ND/////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////8/P//4KC//8NDf//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//zw8///z8///////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////4iI//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8EBP//u7v/////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////xMT//wAA
+ //8AAP//AAD//wAA//8AAP//YWH/////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////////////////////0RE
+ //8AAP//dHT/////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///6+v//hob//wgI//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//9BQf//3Nz/////
+ /////////////0RE//8AAP//AAD//wAA//8AAP//AAD//+Hh////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////9vb//9bW//+zs///jIz//2ho//9eXv//7Oz/////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////6+v//nZ3//xoa//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//PDz//+np////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////7u7//8EBP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//iIj/////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////////////////////8TE
+ //8AAP//AAD//wAA//8AAP//AAD//2Fh////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //9TU///dHT/////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///IyP//Li7//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//xER//+dnf//////////
+ //////////////////9ERP//AAD//wAA//8AAP//AAD//wAA///h4f//////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////+ysv//Kir//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8pKf//6en/////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////+Hh//8VFf//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//UVH/////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///ExP//AAD//wAA//8AAP//AAD//wAA//9hYf//////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////xcX/////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////////////////////Pz
+ //9vb///BAT//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//1VV///l5f//////////
+ ////////////////////////RET//wAA//8AAP//AAD//wAA//8AAP//4eH/////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////8jI//9CQv//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8nJ///AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//ykp///p6f//////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////b2//81Nf//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//KSn///Pz////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////xMT//wAA//8AAP//AAD//wAA//8AAP//YWH/////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////////////////////7S0
+ //8eHv//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//FRX//7Cw////////////////
+ /////////////////////////////ycn//8AAP//AAD//wAA//8AAP//AAD//+Hh////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////3Nz//1lZ//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//0JC///IyP//+vr//1VV//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//KSn//+np
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////////9nZ///AAD//wAA
+ //8AAP//AAD//wAA//8AAP//DQ3//9TU////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////6Oj//8AAP//AAD//wAA//8AAP//AAD//2Fh////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////////////////////+np
+ //9FRf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//9dXf//4eH/////
+ //////////////////////////////////8jI///AAD//wAA//8AAP//AAD//wAA///h4f//////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////s7P//cnL//wQE//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//MjL//7m5///////////////////6+v//VVX//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8pKf//5eX/////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////////+hof//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//6io////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////+jo///AAD//wAA//8AAP//AAD//wAA//9hYf//////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////729//8yMv//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wgI
+ //92dv//8PD/////////////////////////////IyP//wAA//8AAP//AAD//wAA//8AAP//4eH/////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////b2//+Kiv//ERH//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8mJv//paX///////////////////////////////////r6//9VVf//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//xoa///Z2f//////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////////////////////////////////////MzP//CAj//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//3d3////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////o6P//wAA//8AAP//AAD//wAA//8AAP//YWH/////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////6Gh//8iIv//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//xER//+Ojv//9vb//////////////////yMj//8AAP//AAD//wAA//8AAP//AAD///b2
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////9zc//8eHv//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//xER
+ //+Zmf//+vr/////////////////////////////////////////////+vr//1VV//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//Ghr//9nZ////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////////////////////////////////////s7P//IiL//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//0FB///6+v//////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////6Oj//8AAP//AAD//wAA//8AAP//AAD//2Fh////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////9vb//46O//8REf//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//yYm//+lpf////////////8jI///AAD//wAA//8AAP//AAD//wAA
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////yMj//zY2//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8EBP//amr///Dw////////////////////////////////////////////////////////dHT//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8aGv//2dn/////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////////////////////////////////////6+v//SEj//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//+QkP//////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////+jo///AAD//wAA//8AAP//AAD//wAA//9hYf//////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////8PD//3Z2//8ICP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//zY2///Cwv//IyP//wAA//8AAP//AAD//wAA
+ //8AAP//////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////6+v//mZn//xER//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8VFf//nZ3/////////////////////////////////////////////////////
+ //90dP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//xoa///Z2f//////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////////////////////4CA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//3x8///6+v//////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////o6P//wAA//8AAP//AAD//wAA//8AAP//a2v/////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////4eH//2Fh
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD/////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////////////////////s7P//Zmb//wQE//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//85Of//3d3/////////////////////////////////////
+ ////////+vr//ycn//8AAP//AAD//wAA//8AAP//AAD//wAA//8NDf//wsL/////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////oaH//wQE//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//TEz///Pz////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////6Oj//8AAP//AAD//wAA//8AAP//AAD//39/
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////o6P//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//9mZv//8PD/////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////0dH//0VF//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////////////////////////////////////MzP//OTn//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//9nZ////////////////////////////////
+ /////////////3R0//8AAP//AAD//wAA//8AAP//AAD//wAA//8EBP//rKz/////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////Cwv//FRX//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8uLv//4eH/////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////+jo///AAD//wAA//8AAP//AAD//wAA
+ //9/f///////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////6Oj//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//xUV//+oqP//////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////vb3//zIy//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //+dnf//FRX//wAA//8AAP//AAD//wAA//8AAP//AAD//yMj////////////////////////////////
+ /////////////5OT//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//j4//////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////93d//8pKf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//xoa
+ ///Cwv//////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////o6P//wAA//8AAP//AAD//wAA
+ //8AAP//f3//////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////////////////////AwP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//0lJ///h4f//////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////oaH//yIi//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//5mZ///6+v//////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////Dw//8yMv//AAD//wAA//8AAP//AAD//wAA//9tbf//////////////////////////
+ /////////////6ys//8EBP//AAD//wAA//8AAP//AAD//wAA//8AAP//b2//////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////8/P//0VF//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//BAT//6Gh////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////6Oj//8AAP//AAD//wAA
+ //8AAP//AAD//39/////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////xMT//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//CAj//4+P///6+v//////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////////////////////29v//jo7//xER//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//g4P/////////////////////////////////////
+ /////////////////////////////////////////////7+///+Rkf//o6P//7e3///ExP//2tr//+Hh
+ ///29v//////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////Ghr//wAA//8AAP//AAD//wAA//8AAP//u7v/////////////////////
+ /////////////8LC//8NDf//AAD//wAA//8AAP//AAD//wAA//8AAP//UFD///r6////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////////////////////6+v//a2v//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//fHz///r6////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////////+jo///AAD//wAA
+ //8AAP//AAD//wAA//9/f///////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////8TE//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//MTH//8jI
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////////////////////////////////////w8P//dnb//wgI
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//4OD////////////////////////////////
+ //////////////////////////////////////////////////9oaP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8eHv//IyP//0BA//9ERP//YWH//2Rk//9/f///zc3/////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////zs7//wAA//8AAP//AAD//wAA//8AAP//CAj///b2////////////////
+ /////////////9nZ//8aGv//AAD//wAA//8AAP//AAD//wAA//8AAP//ODj///Pz////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////////+Wlv//BAT//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//9QUP//8/P/////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////iIj//wAA
+ //8AAP//AAD//wAA//8AAP//f3//////////////////////////////////////////////////////
+ ///////////////////////////////////////////////////////////////////ExP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8EBP//b2////Dw////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///h4f//YWH//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//+jo///////////////////////////
+ ////////////////////////////////////////////////////////Vlb//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//9CQv//u7v/////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////39///8AAP//AAD//wAA//8AAP//AAD//0tL////////////////
+ /////////////+np//8pKf//AAD//wAA//8AAP//AAD//wAA//8AAP//Jib//+np////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////////////////////7e3
+ //8NDf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//zEx///l5f//////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////////////////////39/
+ //8AAP//AAD//wAA//8AAP//AAD//39/////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////2tr//wAA
+ //8AAP//AAD//wAA//8AAP//IyP/////////////wMD//yoq//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8eHv//sLD/////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//o6P/////////////////////
+ /////////////////////////////////////////////////////////////0RE//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8yMv//qqr///r6////////////////////////////////////////////////////////////////
+ //////////////////////////////////87O///AAD//wAA//8AAP//AAD//wAA//+Vlf//////////
+ //////////////Pz//88PP//AAD//wAA//8AAP//AAD//wAA//8AAP//ERH//9nZ////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////1NT//yIi//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//Ghr//8fH////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //9/f///AAD//wAA//8AAP//AAD//wAA//9/f///////////////////////////////////////////
+ /////////////////////////////////////////////////////////////////////////////+Hh
+ //8AAP//AAD//wAA//8AAP//AAD//yMj///////////////////29v//fn7//wQE//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//9RUf//5eX/////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////6+v//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//6Oj////////////////
+ //////////////////////////////////////////////////////////////////8nJ///AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8mJv//lZX///b2////////////////////////////////////////////////
+ ///////////////////////////////////s7P//AAD//wAA//8AAP//AAD//wAA//8AAP//3Nz/////
+ //////////////r6//9VVf//AAD//wAA//8AAP//AAD//wAA//8AAP//BAT//8LC////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////p6f//PDz//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8ICP//paX/////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////f3///wAA//8AAP//AAD//wAA//8AAP//f3//////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///h4f//AAD//wAA//8AAP//AAD//wAA//8AAP/////////////////////////////U1P//OTn//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//w0N//+Wlv//+vr/////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////4eH//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//+3t///////////
+ ////////////////////////////////////////////////////////////////////////ERH//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8aGv//hYX///Dw////////////////////////////////
+ ////////////////////////////////////////pqb//wAA//8AAP//AAD//wAA//8AAP//Jyf/////
+ //////////////////90dP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//6io////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////b2//9dXf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //+AgP//////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////39///8AAP//AAD//wAA//8AAP//AAD//39/////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////4eH//wAA//8AAP//AAD//wAA//8AAP//AAD///////////////////////////////////r6
+ //+Wlv//DQ3//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//zk5///Q0P//////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////+Hh//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//xMT/////
+ /////////////////////////////////////////////////////////////////////////////wAA
+ //8AAP//AAD//wAA//8AAP//AAD//yMj//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8REf//i4v/////////////////////
+ /////////////////////////////////////////////1pa//8AAP//AAD//wAA//8AAP//AAD//3Fx
+ //////////////////+Tk///AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//4uL////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////4iI//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//1BQ///z8///////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////9/f///AAD//wAA//8AAP//AAD//wAA//+Dg///////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////Pz//8AAP//AAD//wAA//8AAP//AAD//wAA////////////////////////////////
+ /////////////+Xl//9NTf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//BAT//3d3
+ ///29v//////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////h4f//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//8TE
+ /////////////////////////////////////////////////////////////////////////////+Hh
+ //8AAP//AAD//wAA//8AAP//AAD//w0N///////////////////k5P//4eH//8fH///ExP//q6v//319
+ //8REf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//7Cw////////////////
+ //////////////////////////////////////////////r6//8REf//AAD//wAA//8AAP//AAD//wAA
+ //+/v/////////////+srP//BAT//wAA//8AAP//AAD//wAA//8AAP//AAD//2tr////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////qKj//w0N//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//MTH//+Xl////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////f3///wAA//8AAP//AAD//wAA//8AAP//o6P/////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////AAD//wAA//8AAP//AAD//wAA//8AAP//////////////////////////
+ /////////////////////////////6ys//8aGv//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//IiL//7y8////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////4eH//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ ///Hx///////////////////////////////////////////////////////////////////////////
+ ///Pz///AAD//wAA//8AAP//AAD//wAA//8jI///////////////////////////////////////////
+ ////////8PD//4yM//8aGv//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//1VV////////////////
+ ///////////////////////////////////////////////////Hx///AAD//wAA//8AAP//AAD//wAA
+ //8NDf//9vb////////Cwv//DQ3//wAA//8AAP//AAD//wAA//8AAP//AAD//0hI///6+v//////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////////////////////////////////////Hx///Ghr//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8aGv//x8f/////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////39///8AAP//AAD//wAA//8AAP//AAD//6Oj////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////wAA//8AAP//AAD//wAA//8AAP//AAD//+Tk////////////////
+ ////////////////////////////////////////8PD//2Zm//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//9WVv//////////////////////////////////////////////////////////
+ /////////////////////////////////////////////+Hh//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//4eH/////////////////////////////////////////////////////////////////////
+ ////////wMD//wAA//8AAP//AAD//wAA//8AAP//RET/////////////////////////////////////
+ ////////////////////////3Nz//wQE//8AAP//AAD//wAA//8AAP//AAD//xER///s7P//////////
+ ////////////////////////////////////////////////////////fHz//wAA//8AAP//AAD//wAA
+ //8AAP//T0/////////Z2f//Ghr//wAA//8AAP//AAD//wAA//8AAP//AAD//zEx///z8///////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////////////////////+Xl
+ //8xMf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wgI//+lpf//////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////9/f///AAD//wAA//8AAP//AAD//wAA//+jo///////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////8AAP//AAD//wAA//8AAP//AAD//wAA///h4f//////////
+ ////////////////////////////////////////////////////////wMD//yoq//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//d3f/////////////////////////////////////////////////////
+ ///////////////////////////////////////////////////h4f//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//+Hh////////////////////////////////////////////////////////////////
+ /////////////6Oj//8AAP//AAD//wAA//8AAP//AAD//1NT////////////////////////////////
+ /////////////////////////////01N//8AAP//AAD//wAA//8AAP//AAD//wAA//+hof//////////
+ /////////////////////////////////////////////////////////////y8v//8AAP//AAD//wAA
+ //8AAP//AAD//5mZ///p6f//KSn//wAA//8AAP//AAD//wAA//8AAP//AAD//x4e///p6f//////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////8/P//0xM//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//4CA////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////f3///wAA//8AAP//AAD//wAA//8AAP//o6P/////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////ERH//wAA//8AAP//AAD//wAA//8AAP//4eH/////
+ ///////////////////////////////////////////////////////////////////29v//fn7//wQE
+ //8AAP//AAD//wAA//8AAP//AAD//56e////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////4eH//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA///h4f//////////////////////////////////////////////////////////
+ //////////////////+MjP//AAD//wAA//8AAP//AAD//wAA//9kZP//////////////////////////
+ /////////////////////////////6Gh//8AAP//AAD//wAA//8AAP//AAD//wAA//9FRf//////////
+ /////////////////////////////////////////////////////////////+Tk//8AAP//AAD//wAA
+ //8AAP//AAD//wAA///U1P//PDz//wAA//8AAP//AAD//wAA//8AAP//AAD//w0N///Z2f//////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////6+v//fHz//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//UFD///Pz
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////39///8AAP//AAD//wAA//8AAP//AAD//6Oj
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////yMj//8AAP//AAD//wAA//8AAP//AAD//+Hh
+ ////////////////////////////////////////////////////////////////////////////////
+ //80NP//AAD//wAA//8AAP//AAD//wAA///AwP//////////////////////////////////////////
+ /////////////////////////////////////////////////////////////8/P//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//8PD/////////////////////////////////////////////////////
+ ////////////////////////d3f//wAA//8AAP//AAD//wAA//8AAP//f3//////////////////////
+ /////////////////////////////+Xl//8REf//AAD//wAA//8AAP//AAD//wAA//8NDf//4eH/////
+ //////////////////////////////////////////////////////////////////+env//AAD//wAA
+ //8AAP//AAD//wAA//8nJ///VVX//wAA//8AAP//AAD//wAA//8AAP//AAD//wQE//+/v///////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////+dnf//BAT//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8xMf//5eX/////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////9wcP//AAD//wAA//8AAP//AAD//wAA
+ //+jo///////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////8jI///AAD//wAA//8AAP//AAD//wAA
+ ///Ly///////////////////////////////////////////////////////////////////////////
+ ////////DQ3//wAA//8AAP//AAD//wAA//8AAP//4eH/////////////////////////////////////
+ ///////////////////////////////////////////////////////////////////ExP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD/////////////////////////////////////////////////////
+ /////////////////////////////2Fh//8AAP//AAD//wAA//8AAP//AAD//5qa////////////////
+ //////////////////////////////////9NTf//AAD//wAA//8AAP//AAD//wAA//8AAP//j4//////
+ ////////////////////////////////////////////////////////////////////////Vlb//wAA
+ //8AAP//AAD//wAA//8AAP//DQ3//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//+lpf//////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////7+///8REf//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//xoa///Hx///////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////YWH//wAA//8AAP//AAD//wAA
+ //8AAP//o6P/////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////IyP//wAA//8AAP//AAD//wAA
+ //8AAP//xMT/////////////////////////////////////////////////////////////////////
+ ////////6+v//wAA//8AAP//AAD//wAA//8AAP//BAT/////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////xMT//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA////////////////////////////////////////////////
+ //////////////////////////////////9MTP//AAD//wAA//8AAP//AAD//wAA//8EBP//LCz//09P
+ //9wcP//lZX//7y8///d3f////////////+hof//AAD//wAA//8AAP//AAD//wAA//8AAP//OTn///r6
+ ////////////////////////////////////////////////////////////////////////9vb//w0N
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//+Dg///////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////2dn//ykp//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//CAj//6Wl////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////2Fh//8AAP//AAD//wAA
+ //8AAP//AAD//6Oj////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////yws//8AAP//AAD//wAA
+ //8AAP//AAD//8TE////////////////////////////////////////////////////////////////
+ /////////////8vL//8AAP//AAD//wAA//8AAP//AAD//yws////////////////////////////////
+ /////////////////////////////////////////////////////////////////////////////8TE
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//////////////////////////////////////////
+ ////////////////////////////////////////ODj//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wQE//8sLP//DQ3//wAA//8AAP//AAD//wAA//8AAP//BAT//9TU
+ /////////////////////////////////////////////////////////////////////////////7+/
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//9iYv//////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////r6////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////////////////////////////////////w8P//QUH//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//gID/////////////////////////////////////
+ //////////////////////////////////////////////////////////////////9hYf//AAD//wAA
+ //8AAP//AAD//wAA//+jo///////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////////9ERP//AAD//wAA
+ //8AAP//AAD//wAA///ExP//////////////////////////////////////////////////////////
+ //////////////////+rq///AAD//wAA//8AAP//AAD//wAA//9MTP//////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///ExP//AAD//wAA//8AAP//AAD//wAA//8AAP//IyP/////////////////////////////////////
+ /////////////////////////////////////////////yMj//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//4KC
+ ////////////////////////////////////////////////////////////////////////////////
+ //90dP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//9FRf//+vr/////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////7S0//88PP//8/P/////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////////////////////r6
+ //9nZ///AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//9QUP//8/P/////////////////////
+ ////////////////////////////////////////////////////////////////////////YWH//wAA
+ //8AAP//AAD//wAA//8AAP//o6P/////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////RET//wAA
+ //8AAP//AAD//wAA//8AAP//q6v/////////////////////////////////////////////////////
+ ////////////////////////bW3//wAA//8AAP//AAD//wAA//8AAP//a2v/////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////xMT//wAA//8AAP//AAD//wAA//8AAP//AAD//yMj////////////////////////////////
+ //////////////////////////////////////////////////8EBP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//yoq
+ ///29v//////////////////////////////////////////////////////////////////////////
+ ////////Kyv//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8uLv//8/P/////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////Dw//8eHv//AAD//zw8///z8///////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////4+P//8EBP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//zEx///l5f//////////
+ /////////////////////////////////////////////////////////////////////////////2Fh
+ //8AAP//AAD//wAA//8AAP//AAD//6Oj////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////////////////////0RE
+ //8AAP//AAD//wAA//8AAP//AAD//6Oj////////////////////////////////////////////////
+ ///////////////////6+v//d3f//wAA//8AAP//AAD//wAA//8AAP//AAD//4yM////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////8TE//8AAP//AAD//wAA//8AAP//AAD//wAA//8jI///////////////////////////
+ ///////////////////////////////////////////////////w8P//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ ///IyP//////////////////////////////////////////////////////////////////////////
+ ////////3Nz//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8aGv//6en/////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////9vb///AAD//wAA//8AAP//PDz///Pz////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////s7P//w0N//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//Ghr//8fH
+ ////////////////////////////////////////////////////////////////////////////////
+ //9hYf//AAD//wAA//8AAP//AAD//wAA///ExP//////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //9ISP//AAD//wAA//8AAP//AAD//wAA//+jo///////////////////////////////////////////
+ ///////////////////z8///SEj//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//+zs///////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////+8vP//AAD//wAA//8AAP//AAD//wAA//8AAP//NDT/////////////////////
+ ////////////////////////////////////////////////////////9vb//6+v//+IiP//ZGT//0hI
+ //8eHv//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //9vb///////////////////////////////////////////////////////////////////////////
+ /////////////5WV//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8NDf//0ND/////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////AwP//AAD//wAA//8AAP//AAD//wAA//8uLv//6en/////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////Q0P//Hh7//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8ICP//paX/////////////////////////////////////////////////////////////////////
+ ////////YWH//wAA//8AAP//AAD//wAA//8AAP//xMT/////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////YWH//wAA//8AAP//AAD//wAA//8AAP//o6P/////////////////////////////////////
+ ///////////////////Z2f//KSn//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//2dn/////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////o6P//wAA//8AAP//AAD//wAA//8AAP//AAD//0RE////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////b2///a2v//t7f//5GR//9wcP//T0///yws//8ICP//AAD//wAA//8AAP//AAD//wAA
+ //8iIv//8/P/////////////////////////////////////////////////////////////////////
+ //////////////////9LS///AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8EBP//t7f/////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////z8///IiL//wAA//8AAP//AAD//wAA//8AAP//AAD//ykp
+ ///p6f//////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////+np//84OP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//+AgP//////////////////////////////////////////////////////////
+ /////////////2Fh//8AAP//AAD//wAA//8AAP//AAD//8TE////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////2Fh//8AAP//AAD//wAA//8AAP//AAD//4yM////////////////////////////////
+ //////////////////+7u///ERH//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8EBP//nZ3/////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////6Oj//8AAP//AAD//wAA//8AAP//AAD//wAA//9ERP//////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////+Tk///AwP//np7//3d3
+ //9WVv//t7f/////////////////////////////////////////////////////////////////////
+ ///////////////////29v//CAj//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//nZ3/////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////cnL//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//KSn//+np////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////8/P//1VV//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//6Ki////////////////////////////////////////////////
+ //////////////////9hYf//AAD//wAA//8AAP//AAD//wAA///ExP//////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////9hYf//AAD//wAA//8AAP//AAD//wAA//9/f///////////////////////////
+ //////////////////+Tk///BAT//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8aGv//wsL/////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////+jo///AAD//wAA//8AAP//AAD//wAA//8AAP//RET/////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////t7f//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//gID/////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////yMj//wQE//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8iIv//2dn/////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////Pz//88PP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//3R0////////////////////////////////////////////////
+ ////////////////////////YWH//wAA//8AAP//AAD//wAA//8AAP//xMT/////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////YWH//wAA//8AAP//AAD//wAA//8AAP//f3//////////////////////
+ //////////////r6//9nZ///AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8xMf//5eX/////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////o6P//wAA//8AAP//AAD//wAA//8AAP//AAD//2Fh
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////2ho//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//XV3/////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////9vb//yoq//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//xoa///Z2f//////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////Pz//88PP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//3R0////////////////////////////////////////////////
+ /////////////////////////////1pa//8AAP//AAD//wAA//8AAP//AAD//8TE////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////39///8AAP//AAD//wAA//8AAP//AAD//39/////////////////
+ /////////////+np//9BQf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//9ZWf//8/P/////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////6Oj//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //9hYf//////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////8LC//8NDf//AAD//wAA//8AAP//AAD//wAA//8AAP//PDz///r6
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////3d3//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//Ghr//9nZ////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////Pz//88PP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//1VV///6+v//////////////////////////////////////////
+ //////////////////////////////////9ERP//AAD//wAA//8AAP//AAD//wAA///ExP//////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////9/f///AAD//wAA//8AAP//AAD//wAA//9wcP//////////
+ /////////////9TU//8iIv//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//+IiP//////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////+jo///AAD//wAA//8AAP//AAD//wAA
+ //8AAP//YWH/////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////9nZ//8aGv//AAD//wAA//8AAP//AAD//wAA//8AAP//KSn///Dw
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////9DQ//8EBP//AAD//wAA//8AAP//AAD//wAA
+ //8ICP//Xl7//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8aGv//x8f/////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////r6//88PP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//1VV///6+v//////////////////////////////////////////
+ ////////////////////////////////////////RET//wAA//8AAP//AAD//wAA//8AAP//xMT/////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////f3///wAA//8AAP//AAD//wAA//8AAP//YWH/////
+ /////////////6+v//8NDf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//w0N//+zs///////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////o6P//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//3Bw////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////+np//8pKf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//2Nj
+ ///29v//////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////r6//8xMf//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//j4////////+Li///AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//w0N///Cwv//////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////r6//9VVf//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//1VV///6+v//////////////////////////////////////////
+ /////////////////////////////////////////////0RE//8AAP//AAD//wAA//8AAP//AAD//8TE
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////39///8AAP//AAD//wAA//8AAP//AAD//zAw
+ //9eXv//PDz//xYW//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//yYm///U1P//////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////4OD//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//9/f///////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////+np//8pKf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//MTH//9nZ////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////+Cgv//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//OTn///r6/////////////5OT//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//DQ3//8LC
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////r6//9VVf//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//0hI///6+v//////////////////////////////////////////
+ //////////////////////////////////////////////////9ERP//AAD//wAA//8AAP//AAD//wAA
+ ///ExP//////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////+env//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//0VF///s7P//////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////////9/f///AAD//wAA
+ //8AAP//AAD//wAA//8AAP//f3//////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////+np//8pKf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8NDf//np7/////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////////////////////Q0P//BAT//wAA//8AAP//AAD//wAA
+ //8AAP//CAj//9nZ////////////////////////k5P//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8NDf//t7f/////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////r6//9VVf//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//zw8///z8///////////////////////////////////////////
+ ////////////////////////////////////////////////////////RET//wAA//8AAP//AAD//wAA
+ //8AAP//xMT/////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////o6P//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//3Bw///6+v//////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////f3///wAA
+ //8AAP//AAD//wAA//8AAP//AAD//39/////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////+np//8pKf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//9ZWf//8PD/////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////////////////////6+v//OTn//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//4+P//////////////////////////////////+Tk///AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wQE//+srP//////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////////9ZWf//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//zw8///z8///////////////////////////////////////////
+ /////////////////////////////////////////////////////////////0RE//8AAP//AAD//wAA
+ //8AAP//AAD//9ra////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////6Oj//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//BAT//52d////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////////////////////39/
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//+jo///////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////+np//8pKf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//xER
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//yIi///IyP//////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////j4///wAA//8AAP//AAD//wAA
+ //8AAP//AAD//zY2///6+v///////////////////////////////////////6Wl//8EBP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//BAT//6ys////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////////90dP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//zw8///z8///////////////////////////////////////////
+ //////////////////////////////////////////////////////////////////9ERP//AAD//wAA
+ //8AAP//AAD//wAA///h4f//////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////////+jo///AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//Ghr//8LC////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //9/f///AAD//wAA//8AAP//AAD//wAA//8AAP//o6P/////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////+np//8pKf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//5OT
+ ///s7P//SEj//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//BAT//4uL////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////2dn//wgI//8AAP//AAD//wAA
+ //8AAP//AAD//wQE///Q0P//////////////////////////////////////////////////rKz//wQE
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8EBP//qKj/////////////////////////////////////
+ //////////////////////////////////////////////////////////////////90dP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//ykp///z8///////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////RET//wAA
+ //8AAP//AAD//wAA//8AAP//4eH/////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////vLz//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8aGv//S0v//+Xl////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////f3///wAA//8AAP//AAD//wAA//8AAP//AAD//6Oj////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////+np//8pKf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//5OT
+ //////////////////+Skv//CAj//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//RUX//+np
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////zk5//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//+Cgv//////////////////////////////////////////////////////////
+ //+srP//BAT//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//+Tk///////////////////////////
+ //////////////////////////////////////////////////////////////////90dP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//ykp///p6f//////////////////////////////////////////
+ /////////////////////////////////////////////////////////////////////////////0RE
+ //8AAP//AAD//wAA//8AAP//AAD//+Hh////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////////////////////8TE
+ //8AAP//AAD//wAA//8nJ///TEz//2ho//+MjP//s7P//9bW///z8///////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////39///8AAP//AAD//wAA//8AAP//AAD//wAA//8WFv//PDz//1NT//9oaP//f3///56e
+ //+3t///z8///+Tk////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////+np//8pKf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//5OT
+ /////////////////////////////9DQ//8qKv//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8VFf//t7f/////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////5aW//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8xMf//+vr/////////////////////////////////////////////////////
+ /////////////6ys//8EBP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//5OT////////////////
+ //////////////////////////////////////////////////////////////////+AgP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//ykp///p6f//////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //9ERP//AAD//wAA//8AAP//AAD//wAA///h4f//////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///p6f//vLz//93d////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////9iYv//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//x4e//84OP//T0///2Rk//9/f///mpr//7Oz///Ly///4eH/////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////+np//8pKf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//5OT
+ ////////////////////////////////////////8/P//2tr//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//9zc///+vr/////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////+Hh//8NDf//AAD//wAA
+ //8AAP//AAD//wAA//8EBP//0ND/////////////////////////////////////////////////////
+ ////////////////////////t7f//w0N//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//k5P/////
+ //////////////////////////////////////////////////////////////////+Tk///AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//ykp///p6f//////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////RET//wAA//8AAP//AAD//wAA//8AAP//4eH/////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////0tL//3Fx//8eHv//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//Ghr//zQ0//9MTP//YWH//3p6//+Vlf//r6///8fH///h4f//+vr/////////////////////
+ /////////////////////////////+np//8pKf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//5OT
+ ////////////////////////////////////////////////////////rKz//xER//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//zEx///d3f//////////////////////////////////////////
+ //////////////////////////////////////////////////////////////////9BQf//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//goL/////////////////////////////////////////////////////
+ ///////////////////////////////////Cwv//DQ3//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //94eP////////////////////////////////////////////////////////////+Tk///AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//xoa///d3f//////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////ycn//8AAP//AAD//wAA//8AAP//AAD//+Hh////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////////////////////9zc
+ //+EhP//Jyf//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8WFv//MDD//0hI
+ //9hYf//d3f//5GR//+rq///xMT//9bW//8pKf//AAD//wAA//8AAP//AAD//wAA//8AAP//BAT//6Gh
+ ///////////////////////////////////////////////////////////////////h4f//PDz//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//DQ3//6Gh////////////////////////////////
+ //////////////////////////////////////////////////////////////////+Zmf//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//Kir///b2////////////////////////////////////////////////
+ /////////////////////////////////////////////8LC//8NDf//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//3R0//////////////////////////////////////////////////+Tk///AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//xoa///Z2f//////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////8jI///AAD//wAA//8AAP//AAD//wAA///h4f//////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////////////////////////////////////s7P//kJD//zs7
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//BAT//6ys
+ //////////////////////////////////////////////////////////////////////////////r6
+ //+Dg///BAT//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//WVn///Pz////////////////
+ ///////////////////////////////////////////////////////////////////l5f//ERH//wAA
+ //8AAP//AAD//wAA//8AAP//BAT//8jI////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////wsL//w0N//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//dHT///////////////////////////////////////+dnf//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//xoa///Z2f//////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////IyP//wAA//8AAP//AAD//wAA//8AAP//4eH/////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////8/P//6am//9HR///BAT//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//BAT//wQE
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//BAT//6ys
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////8PD//8iIv//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8iIv//zMz/////
+ ////////////////////////////////////////////////////////////////////////TU3//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//3d3////////////////////////////////////////////////
+ ///////////////////////////////////////////////////////////////////MzP//Ghr//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//9dXf//+vr///////////////////////+srP//BAT//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//xER///Z2f//////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////yMj//8AAP//AAD//wAA//8AAP//AAD//+Hh////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////b2//+ysv//WVn//wgI//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8/P///lZX//+zs
+ ////////6+v//9bW///AwP//o6P//4OD//9ra///Vlb//0BA//8jI///BAT//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//BAT//6ys
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////8PD//1VV//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wQE
+ //+Li///////////////////////////////////////////////////////////////////oaH//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//yoq///29v//////////////////////////////////////////
+ /////////////////////////////////////////////////////////////////////////////9nZ
+ //8aGv//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//1VV///6+v////////////+srP//BAT//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//w0N///Cwv//////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////8jI///AAD//wAA//8AAP//AAD//wAA///h4f//////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////wsL//2Rk//8VFf//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//MzP//4SE///k5P//////////
+ ///////////////////////////////////////////////////////////////////r6///1tb//8DA
+ //+jo///g4P//2tr//9WVv//QED//yMj//8EBP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//BAT//6ys
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////mZn//w0N//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//0VF///p6f//////////////////////////////////////////////////7Oz//xER
+ //8AAP//AAD//wAA//8AAP//AAD//wQE///IyP//////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////2dn//xoa//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//VVX///r6//+srP//BAT//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//w0N///Cwv//////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////IyP//wAA//8AAP//AAD//wAA//8AAP//8/P/////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////9LS//95ef//Hh7//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//x4e//98fP//0tL/////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////+vr///W1v//wMD//6Oj//+Dg///a2v//1ZW
+ //9AQP//IyP//wQE//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//BAT//6ys
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////////////////////Z2f//MTH//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//Ghr//7e3/////////////////////////////////////////////1VV
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//9vb///////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////Z2f//Ghr//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//89Pf//BAT//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//w0N///Cwv//////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////yMj//8AAP//AAD//wAA//8AAP//AAD/////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////g4P//hIT//y4u//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8VFf//aWn//8fH////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////6+v//9bW///AwP//o6P//4OD//9ra///Vlb//0BA//8jI///CAj//6ys
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////b2//9zc///AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//d3f///r6/////////////////////////////6ys
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8iIv//8/P/////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////93d//8pKf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wQE//+7u///////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////8jI///AAD//wAA//8AAP//AAD//wAA
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////7Oz//5WV//8/P///AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//DQ3//11d//+2tv//+vr/////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////////////////////7e3
+ //8VFf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//81Nf//3d3//////////////////+zs
+ //8VFf//AAD//wAA//8AAP//AAD//wAA//8AAP//wMD/////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////6en//ykp//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wQE//+srP//////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////IyP//wAA//8AAP//AAD//wAA
+ //8AAP//////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////////////////////Pz
+ //+mpv//S0v//wQE//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wQE//9OTv//pqb///Pz////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////6en//0VF//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//w0N//+lpf//////////
+ //9iYv//AAD//wAA//8AAP//AAD//wAA//8AAP//b2//////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////////////////////p6f//KSn//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wQE//+srP//////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////yMj//8AAP//AAD//wAA
+ //8AAP//AAD/////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////////////////////////////////////6+v//trb//11d
+ //8NDf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//Pz///56e///s7P//////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////j4///wQE//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//15e
+ //+qqv//AAD//wAA//8AAP//AAD//wAA//8AAP//IiL///Pz////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////+np//8pKf//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wQE//+srP//////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////////8jI///AAD//wAA
+ //8AAP//AAD//wAA////////////////////////+vr//+Hh///h4f//4eH//+Hh///h4f//4eH//+Hh
+ ///h4f//4eH//9ra///ExP//xMT//8TE///ExP//xMT//8TE///ExP//xMT//8TE//+zs///o6P//6Oj
+ //+jo///o6P//6Oj//+jo///o6P//6Oj//+jo///jIz//39///9/f///f3///39///9kZP//FRX//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//zMz
+ //+IiP//5OT/////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////MzP//Jib//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//729////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////6en//zw8
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//+amv//////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////DQ3//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8iIv//fHz//9XV
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////Pz//9iYv//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//2Ji////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///z8///PDz//wAA//8AAP//AAD//wAA//+Tk///////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////////////////////wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//FRX//21t///Hx///////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////6io//8NDf//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//x4e///w8P//////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////Pz//88PP//AAD//wAA//+Tk///////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//w0N//9dXf//u7v///r6////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////4eH//zk5
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//+0tP//////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////8/P//zw8//+Pj///////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8ICP//UlL//6qq///29v//////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///6+v//e3v//wQE//8AAP//AAD//wAA//8AAP//AAD//wAA//9iYv//////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////29v//////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
+ //8AAP//AAD//wAA//8AAP//AAD//0ND//+env//7Oz/////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////AwP//Hh7//wAA//8AAP//AAD//wAA//8aGv//8PD/////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////8AAP//AAD//wAA//8AAP//AAD//wgI//8jI///IyP//yMj//8jI///IyP//yMj
+ //8jI///IyP//yMj//8jI///IyP//zg4//9ERP//RET//0RE//9ERP//RET//0RE//9ERP//RET//0RE
+ //9ERP//RET//2Fh//9hYf//YWH//2Fh//9hYf//YWH//2Fh//9hYf//YWH//2Fh//9hYf//a2v//39/
+ //9/f///f3///39///9/f///lZX//+Tk////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////+zs//9RUf//AAD//wAA//8AAP//rKz/////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////5aW//8ICP//VVX/////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////1NT//+zs////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
+
+
+
\ No newline at end of file
diff --git a/RBXLegacyLauncher/RBXLegacyLauncher/GlobalVars.cs b/RBXLegacyLauncher/RBXLegacyLauncher/GlobalVars.cs
index 4487e61..3b9bf18 100644
--- a/RBXLegacyLauncher/RBXLegacyLauncher/GlobalVars.cs
+++ b/RBXLegacyLauncher/RBXLegacyLauncher/GlobalVars.cs
@@ -40,6 +40,10 @@
public static string Custom_Hat1ID_Offline = "NoHat.rbxm";
public static string Custom_Hat2ID_Offline = "NoHat.rbxm";
public static string Custom_Hat3ID_Offline = "NoHat.rbxm";
+ public static int Custom_TShirt = 0;
+ public static int Custom_Shirt = 0;
+ public static int Custom_Pants = 0;
+ public static int Custom_Face = 0;
public static int HeadColorID = 24;
public static int TorsoColorID = 23;
public static int LeftArmColorID = 24;
diff --git a/RBXLegacyLauncher/RBXLegacyLauncher/LauncherFuncs.cs b/RBXLegacyLauncher/RBXLegacyLauncher/LauncherFuncs.cs
index 92286ba..35ebd61 100644
--- a/RBXLegacyLauncher/RBXLegacyLauncher/LauncherFuncs.cs
+++ b/RBXLegacyLauncher/RBXLegacyLauncher/LauncherFuncs.cs
@@ -31,7 +31,7 @@ namespace RBXLegacyLauncher
public static void ReadConfigValues(string cfgpath)
{
string line1;
- string Decryptline1, Decryptline2, Decryptline3, Decryptline4, Decryptline5, Decryptline6, Decryptline7, Decryptline8, Decryptline9, Decryptline10, Decryptline11, Decryptline12, Decryptline13, Decryptline14, Decryptline15, Decryptline16, Decryptline17, Decryptline18, Decryptline19, Decryptline20, Decryptline21, Decryptline22;
+ string Decryptline1, Decryptline2, Decryptline3, Decryptline4, Decryptline5, Decryptline6, Decryptline7, Decryptline8, Decryptline9, Decryptline10, Decryptline11, Decryptline12, Decryptline13, Decryptline14, Decryptline15, Decryptline16, Decryptline17, Decryptline18, Decryptline19, Decryptline20, Decryptline21, Decryptline22, Decryptline23, Decryptline24, Decryptline25, Decryptline26;
using(StreamReader reader = new StreamReader(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\config.txt"))
{
@@ -65,6 +65,10 @@ namespace RBXLegacyLauncher
Decryptline20 = SecurityFuncs.Base64Decode(result[19]);
Decryptline21 = SecurityFuncs.Base64Decode(result[20]);
Decryptline22 = SecurityFuncs.Base64Decode(result[21]);
+ Decryptline23 = SecurityFuncs.Base64Decode(result[22]);
+ Decryptline24 = SecurityFuncs.Base64Decode(result[23]);
+ Decryptline25 = SecurityFuncs.Base64Decode(result[24]);
+ Decryptline26 = SecurityFuncs.Base64Decode(result[25]);
bool bline1 = Convert.ToBoolean(Decryptline1);
GlobalVars.CloseOnLaunch = bline1;
@@ -112,6 +116,15 @@ namespace RBXLegacyLauncher
int iline22 = Convert.ToInt32(Decryptline22);
GlobalVars.PlayerLimit = iline22;
+
+ int iline23 = Convert.ToInt32(Decryptline23);
+ GlobalVars.Custom_TShirt = iline23;
+ int iline24 = Convert.ToInt32(Decryptline24);
+ GlobalVars.Custom_Shirt = iline24;
+ int iline25 = Convert.ToInt32(Decryptline25);
+ GlobalVars.Custom_Pants = iline25;
+ int iline26 = Convert.ToInt32(Decryptline26);
+ GlobalVars.Custom_Face = iline26;
}
public static void WriteConfigValues(string cfgpath)
@@ -138,7 +151,11 @@ namespace RBXLegacyLauncher
SecurityFuncs.Base64Encode(GlobalVars.ColorMenu_RightArmColor.ToString()),
SecurityFuncs.Base64Encode(GlobalVars.ColorMenu_LeftLegColor.ToString()),
SecurityFuncs.Base64Encode(GlobalVars.ColorMenu_RightLegColor.ToString()),
- SecurityFuncs.Base64Encode(GlobalVars.PlayerLimit.ToString())
+ SecurityFuncs.Base64Encode(GlobalVars.PlayerLimit.ToString()),
+ SecurityFuncs.Base64Encode(GlobalVars.Custom_TShirt.ToString()),
+ SecurityFuncs.Base64Encode(GlobalVars.Custom_Shirt .ToString()),
+ SecurityFuncs.Base64Encode(GlobalVars.Custom_Pants.ToString()),
+ SecurityFuncs.Base64Encode(GlobalVars.Custom_Face.ToString())
};
File.WriteAllText(cfgpath, SecurityFuncs.Base64Encode(string.Join("|",lines)));
}
@@ -167,6 +184,10 @@ namespace RBXLegacyLauncher
GlobalVars.ColorMenu_LeftLegColor = "Color [A=255, R=164, G=189, B=71]";
GlobalVars.ColorMenu_RightLegColor = "Color [A=255, R=164, G=189, B=71]";
GlobalVars.PlayerLimit = 12;
+ GlobalVars.Custom_TShirt = 0;
+ GlobalVars.Custom_Shirt = 0;
+ GlobalVars.Custom_Pants = 0;
+ GlobalVars.Custom_Face = 0;
}
public static void ReadClientValues(string clientpath)
@@ -250,5 +271,18 @@ namespace RBXLegacyLauncher
//2147483647 is max id.
GlobalVars.UserID = randomID;
}
+
+ public static bool IsProcessOpen(string name)
+ {
+ foreach (Process clsProcess in Process.GetProcesses())
+ {
+ if (clsProcess.ProcessName.Contains(name))
+ {
+ return true;
+ }
+ }
+
+ return false;
+ }
}
}
diff --git a/RBXLegacyLauncher/RBXLegacyLauncher/LoaderForm.cs b/RBXLegacyLauncher/RBXLegacyLauncher/LoaderForm.cs
index ed09648..410dbdd 100644
--- a/RBXLegacyLauncher/RBXLegacyLauncher/LoaderForm.cs
+++ b/RBXLegacyLauncher/RBXLegacyLauncher/LoaderForm.cs
@@ -69,19 +69,19 @@ namespace RBXLegacyLauncher
string HatIDOffline3 = GlobalVars.Custom_Hat3ID_Offline;
if (GlobalVars.UsesPlayerName == true && GlobalVars.UsesID == true)
{
- args = "-script " + quote + "dofile('" + luafile + "'); _G.CSConnect(" + GlobalVars.UserID + ",'" + ip + "'," + port + ",'" + GlobalVars.PlayerName + "','" + HatIDOffline1 + "','" + HatIDOffline2 + "','" + HatIDOffline3 + "'," + GlobalVars.HeadColorID + "," + GlobalVars.TorsoColorID + "," + GlobalVars.LeftArmColorID + "," + GlobalVars.RightArmColorID + "," + GlobalVars.LeftLegColorID + "," + GlobalVars.RightLegColorID + ");" + quote;
+ args = "-script " + quote + "dofile('" + luafile + "'); _G.CSConnect(" + GlobalVars.UserID + ",'" + GlobalVars.IP + "'," + GlobalVars.RobloxPort + ",'" + GlobalVars.PlayerName + "','" + HatIDOffline1 + "','" + HatIDOffline2 + "','" + HatIDOffline3 + "'," + GlobalVars.HeadColorID + "," + GlobalVars.TorsoColorID + "," + GlobalVars.LeftArmColorID + "," + GlobalVars.RightArmColorID + "," + GlobalVars.LeftLegColorID + "," + GlobalVars.RightLegColorID + ",'" + GlobalVars.Custom_TShirt + "','" + GlobalVars.Custom_Shirt + "','" + GlobalVars.Custom_Pants + "','" + GlobalVars.Custom_Face + "');" + quote;
}
else if (GlobalVars.UsesPlayerName == false && GlobalVars.UsesID == true)
{
- args = "-script " + quote + "dofile('" + luafile + "'); _G.CSConnect(" + GlobalVars.UserID + ",'" + ip + "'," + port + ",'Player','" + HatIDOffline1 + "','" + HatIDOffline2 + "','" + HatIDOffline3 + "'," + GlobalVars.HeadColorID + "," + GlobalVars.TorsoColorID + "," + GlobalVars.LeftArmColorID + "," + GlobalVars.RightArmColorID + "," + GlobalVars.LeftLegColorID + "," + GlobalVars.RightLegColorID + ");" + quote;
+ args = "-script " + quote + "dofile('" + luafile + "'); _G.CSConnect(" + GlobalVars.UserID + ",'" + GlobalVars.IP + "'," + GlobalVars.RobloxPort + ",'Player','" + HatIDOffline1 + "','" + HatIDOffline2 + "','" + HatIDOffline3 + "'," + GlobalVars.HeadColorID + "," + GlobalVars.TorsoColorID + "," + GlobalVars.LeftArmColorID + "," + GlobalVars.RightArmColorID + "," + GlobalVars.LeftLegColorID + "," + GlobalVars.RightLegColorID + ",'" + GlobalVars.Custom_TShirt + "','" + GlobalVars.Custom_Shirt + "','" + GlobalVars.Custom_Pants + "','" + GlobalVars.Custom_Face + "');" + quote;
}
else if (GlobalVars.UsesPlayerName == true && GlobalVars.UsesID == false)
{
- args = "-script " + quote + "dofile('" + luafile + "'); _G.CSConnect(0,'" + ip + "'," + port + ",'" + GlobalVars.PlayerName + "','" + HatIDOffline1 + "','" + HatIDOffline2 + "','" + HatIDOffline3 + "'," + GlobalVars.HeadColorID + "," + GlobalVars.TorsoColorID + "," + GlobalVars.LeftArmColorID + "," + GlobalVars.RightArmColorID + "," + GlobalVars.LeftLegColorID + "," + GlobalVars.RightLegColorID + ");" + quote;
+ args = "-script " + quote + "dofile('" + luafile + "'); _G.CSConnect(0,'" + GlobalVars.IP + "'," + GlobalVars.RobloxPort + ",'" + GlobalVars.PlayerName + "','" + HatIDOffline1 + "','" + HatIDOffline2 + "','" + HatIDOffline3 + "'," + GlobalVars.HeadColorID + "," + GlobalVars.TorsoColorID + "," + GlobalVars.LeftArmColorID + "," + GlobalVars.RightArmColorID + "," + GlobalVars.LeftLegColorID + "," + GlobalVars.RightLegColorID + ",'" + GlobalVars.Custom_TShirt + "','" + GlobalVars.Custom_Shirt + "','" + GlobalVars.Custom_Pants + "','" + GlobalVars.Custom_Face + "');" + quote;
}
else if (GlobalVars.UsesPlayerName == false && GlobalVars.UsesID == false)
{
- args = "-script " + quote + "dofile('" + luafile + "'); _G.CSConnect(0,'" + ip + "'," + port + ",'Player','" + HatIDOffline1 + "','" + HatIDOffline2 + "','" + HatIDOffline3 + "'," + GlobalVars.HeadColorID + "," + GlobalVars.TorsoColorID + "," + GlobalVars.LeftArmColorID + "," + GlobalVars.RightArmColorID + "," + GlobalVars.LeftLegColorID + "," + GlobalVars.RightLegColorID + ");" + quote;
+ args = "-script " + quote + "dofile('" + luafile + "'); _G.CSConnect(0,'" + GlobalVars.IP + "'," + GlobalVars.RobloxPort + ",'Player','" + HatIDOffline1 + "','" + HatIDOffline2 + "','" + HatIDOffline3 + "'," + GlobalVars.HeadColorID + "," + GlobalVars.TorsoColorID + "," + GlobalVars.LeftArmColorID + "," + GlobalVars.RightArmColorID + "," + GlobalVars.LeftLegColorID + "," + GlobalVars.RightLegColorID + ",'" + GlobalVars.Custom_TShirt + "','" + GlobalVars.Custom_Shirt + "','" + GlobalVars.Custom_Pants + "','" + GlobalVars.Custom_Face + "');" + quote;
}
try
{
@@ -109,7 +109,14 @@ namespace RBXLegacyLauncher
}
else
{
- label1.Text = "Launching Game...";
+ string ExtractedArg = GlobalVars.SharedArgs.Replace("rbxlegacy://", "").Replace("rbxlegacy", "").Replace(":", "").Replace("/", "").Replace("?", "");
+ string ConvertedArg = SecurityFuncs.Base64Decode(ExtractedArg);
+ string[] SplitArg = ConvertedArg.Split('|');
+ string ip = SecurityFuncs.Base64Decode(SplitArg[0]);
+ string port = SecurityFuncs.Base64Decode(SplitArg[1]);
+ string client = SecurityFuncs.Base64Decode(SplitArg[2]);
+ label1.Text = "Launching " + client + " Game...";
+ Process.Start("sudppipe.exe", "-p " + ip + " " + port + " " + port);
StartGame();
}
}
diff --git a/RBXLegacyLauncher/RBXLegacyLauncher/MainForm.cs b/RBXLegacyLauncher/RBXLegacyLauncher/MainForm.cs
index 7fc6074..82293ef 100644
--- a/RBXLegacyLauncher/RBXLegacyLauncher/MainForm.cs
+++ b/RBXLegacyLauncher/RBXLegacyLauncher/MainForm.cs
@@ -87,6 +87,7 @@ namespace RBXLegacyLauncher
}
WriteConfigValues();
+ Process.Start("sudppipe.exe", "-p " + GlobalVars.IP + " " + GlobalVars.RobloxPort + " " + GlobalVars.RobloxPort);
StartClient();
if (GlobalVars.CloseOnLaunch == true)
@@ -497,6 +498,7 @@ namespace RBXLegacyLauncher
void Button19Click(object sender, EventArgs e)
{
+ DialogResult result = MessageBox.Show("Note: If the health bar or scoreboard don't appear, just reset your character. If your character does not move or your character lags after the client window is loaded, just open the server window then minimize it.","RBXLegacy Launcher - Play Solo", MessageBoxButtons.OK, MessageBoxIcon.Information);
WriteConfigValues();
StartSolo();
@@ -619,19 +621,19 @@ namespace RBXLegacyLauncher
string HatIDOffline3 = GlobalVars.Custom_Hat3ID_Offline;
if (GlobalVars.UsesPlayerName == true && GlobalVars.UsesID == true)
{
- args = "-script " + quote + "dofile('" + luafile + "'); _G.CSConnect(" + GlobalVars.UserID + ",'" + GlobalVars.IP + "'," + GlobalVars.RobloxPort + ",'" + GlobalVars.PlayerName + "','" + HatIDOffline1 + "','" + HatIDOffline2 + "','" + HatIDOffline3 + "'," + GlobalVars.HeadColorID + "," + GlobalVars.TorsoColorID + "," + GlobalVars.LeftArmColorID + "," + GlobalVars.RightArmColorID + "," + GlobalVars.LeftLegColorID + "," + GlobalVars.RightLegColorID + ");" + quote;
+ args = "-script " + quote + "dofile('" + luafile + "'); _G.CSConnect(" + GlobalVars.UserID + ",'localhost'," + GlobalVars.RobloxPort + ",'" + GlobalVars.PlayerName + "','" + HatIDOffline1 + "','" + HatIDOffline2 + "','" + HatIDOffline3 + "'," + GlobalVars.HeadColorID + "," + GlobalVars.TorsoColorID + "," + GlobalVars.LeftArmColorID + "," + GlobalVars.RightArmColorID + "," + GlobalVars.LeftLegColorID + "," + GlobalVars.RightLegColorID + ",'" + GlobalVars.Custom_TShirt + "','" + GlobalVars.Custom_Shirt + "','" + GlobalVars.Custom_Pants + "','" + GlobalVars.Custom_Face + "');" + quote;
}
else if (GlobalVars.UsesPlayerName == false && GlobalVars.UsesID == true)
{
- args = "-script " + quote + "dofile('" + luafile + "'); _G.CSConnect(" + GlobalVars.UserID + ",'" + GlobalVars.IP + "'," + GlobalVars.RobloxPort + ",'Player','" + HatIDOffline1 + "','" + HatIDOffline2 + "','" + HatIDOffline3 + "'," + GlobalVars.HeadColorID + "," + GlobalVars.TorsoColorID + "," + GlobalVars.LeftArmColorID + "," + GlobalVars.RightArmColorID + "," + GlobalVars.LeftLegColorID + "," + GlobalVars.RightLegColorID + ");" + quote;
+ args = "-script " + quote + "dofile('" + luafile + "'); _G.CSConnect(" + GlobalVars.UserID + ",'localhost'," + GlobalVars.RobloxPort + ",'Player','" + HatIDOffline1 + "','" + HatIDOffline2 + "','" + HatIDOffline3 + "'," + GlobalVars.HeadColorID + "," + GlobalVars.TorsoColorID + "," + GlobalVars.LeftArmColorID + "," + GlobalVars.RightArmColorID + "," + GlobalVars.LeftLegColorID + "," + GlobalVars.RightLegColorID + ",'" + GlobalVars.Custom_TShirt + "','" + GlobalVars.Custom_Shirt + "','" + GlobalVars.Custom_Pants + "','" + GlobalVars.Custom_Face + "');" + quote;
}
else if (GlobalVars.UsesPlayerName == true && GlobalVars.UsesID == false)
{
- args = "-script " + quote + "dofile('" + luafile + "'); _G.CSConnect(0,'" + GlobalVars.IP + "'," + GlobalVars.RobloxPort + ",'" + GlobalVars.PlayerName + "','" + HatIDOffline1 + "','" + HatIDOffline2 + "','" + HatIDOffline3 + "'," + GlobalVars.HeadColorID + "," + GlobalVars.TorsoColorID + "," + GlobalVars.LeftArmColorID + "," + GlobalVars.RightArmColorID + "," + GlobalVars.LeftLegColorID + "," + GlobalVars.RightLegColorID + ");" + quote;
+ args = "-script " + quote + "dofile('" + luafile + "'); _G.CSConnect(0,'localhost'," + GlobalVars.RobloxPort + ",'" + GlobalVars.PlayerName + "','" + HatIDOffline1 + "','" + HatIDOffline2 + "','" + HatIDOffline3 + "'," + GlobalVars.HeadColorID + "," + GlobalVars.TorsoColorID + "," + GlobalVars.LeftArmColorID + "," + GlobalVars.RightArmColorID + "," + GlobalVars.LeftLegColorID + "," + GlobalVars.RightLegColorID + ",'" + GlobalVars.Custom_TShirt + "','" + GlobalVars.Custom_Shirt + "','" + GlobalVars.Custom_Pants + "','" + GlobalVars.Custom_Face + "');" + quote;
}
else if (GlobalVars.UsesPlayerName == false && GlobalVars.UsesID == false)
{
- args = "-script " + quote + "dofile('" + luafile + "'); _G.CSConnect(0,'" + GlobalVars.IP + "'," + GlobalVars.RobloxPort + ",'Player','" + HatIDOffline1 + "','" + HatIDOffline2 + "','" + HatIDOffline3 + "'," + GlobalVars.HeadColorID + "," + GlobalVars.TorsoColorID + "," + GlobalVars.LeftArmColorID + "," + GlobalVars.RightArmColorID + "," + GlobalVars.LeftLegColorID + "," + GlobalVars.RightLegColorID + ");" + quote;
+ args = "-script " + quote + "dofile('" + luafile + "'); _G.CSConnect(0,'localhost'," + GlobalVars.RobloxPort + ",'Player','" + HatIDOffline1 + "','" + HatIDOffline2 + "','" + HatIDOffline3 + "'," + GlobalVars.HeadColorID + "," + GlobalVars.TorsoColorID + "," + GlobalVars.LeftArmColorID + "," + GlobalVars.RightArmColorID + "," + GlobalVars.LeftLegColorID + "," + GlobalVars.RightLegColorID + ",'" + GlobalVars.Custom_TShirt + "','" + GlobalVars.Custom_Shirt + "','" + GlobalVars.Custom_Pants + "','" + GlobalVars.Custom_Face + "');" + quote;
}
try
{
@@ -660,19 +662,19 @@ namespace RBXLegacyLauncher
string HatIDOffline3 = GlobalVars.Custom_Hat3ID_Offline;
if (GlobalVars.UsesPlayerName == true && GlobalVars.UsesID == true)
{
- args = quote + mapfile + "\" -script \"dofile('" + luafile + "'); _G.CSSolo(" + GlobalVars.UserID + ",'" + GlobalVars.PlayerName + "','" + HatIDOffline1 + "','" + HatIDOffline2 + "','" + HatIDOffline3 + "'," + GlobalVars.HeadColorID + "," + GlobalVars.TorsoColorID + "," + GlobalVars.LeftArmColorID + "," + GlobalVars.RightArmColorID + "," + GlobalVars.LeftLegColorID + "," + GlobalVars.RightLegColorID + ");" + quote;
+ args = quote + mapfile + "\" -script \"dofile('" + luafile + "'); _G.CSSolo(" + GlobalVars.UserID + ",'" + GlobalVars.PlayerName + "','" + HatIDOffline1 + "','" + HatIDOffline2 + "','" + HatIDOffline3 + "'," + GlobalVars.HeadColorID + "," + GlobalVars.TorsoColorID + "," + GlobalVars.LeftArmColorID + "," + GlobalVars.RightArmColorID + "," + GlobalVars.LeftLegColorID + "," + GlobalVars.RightLegColorID + ",'" + GlobalVars.Custom_TShirt + "','" + GlobalVars.Custom_Shirt + "','" + GlobalVars.Custom_Pants + "','" + GlobalVars.Custom_Face + "');" + quote;
}
else if (GlobalVars.UsesPlayerName == false && GlobalVars.UsesID == true)
{
- args = quote + mapfile + "\" -script \"dofile('" + luafile + "'); _G.CSSolo(" + GlobalVars.UserID + ",'Player','" + HatIDOffline1 + "','" + HatIDOffline2 + "','" + HatIDOffline3 + "'," + GlobalVars.HeadColorID + "," + GlobalVars.TorsoColorID + "," + GlobalVars.LeftArmColorID + "," + GlobalVars.RightArmColorID + "," + GlobalVars.LeftLegColorID + "," + GlobalVars.RightLegColorID + ");" + quote;
+ args = quote + mapfile + "\" -script \"dofile('" + luafile + "'); _G.CSSolo(" + GlobalVars.UserID + ",'Player','" + HatIDOffline1 + "','" + HatIDOffline2 + "','" + HatIDOffline3 + "'," + GlobalVars.HeadColorID + "," + GlobalVars.TorsoColorID + "," + GlobalVars.LeftArmColorID + "," + GlobalVars.RightArmColorID + "," + GlobalVars.LeftLegColorID + "," + GlobalVars.RightLegColorID + ",'" + GlobalVars.Custom_TShirt + "','" + GlobalVars.Custom_Shirt + "','" + GlobalVars.Custom_Pants + "','" + GlobalVars.Custom_Face + "');" + quote;
}
else if (GlobalVars.UsesPlayerName == true && GlobalVars.UsesID == false)
{
- args = quote + mapfile + "\" -script \"dofile('" + luafile + "'); _G.CSSolo(0,'" + GlobalVars.PlayerName + "','" + HatIDOffline1 + "','" + HatIDOffline2 + "','" + HatIDOffline3 + "'," + GlobalVars.HeadColorID + "," + GlobalVars.TorsoColorID + "," + GlobalVars.LeftArmColorID + "," + GlobalVars.RightArmColorID + "," + GlobalVars.LeftLegColorID + "," + GlobalVars.RightLegColorID + ");" + quote;
+ args = quote + mapfile + "\" -script \"dofile('" + luafile + "'); _G.CSSolo(0,'" + GlobalVars.PlayerName + "','" + HatIDOffline1 + "','" + HatIDOffline2 + "','" + HatIDOffline3 + "'," + GlobalVars.HeadColorID + "," + GlobalVars.TorsoColorID + "," + GlobalVars.LeftArmColorID + "," + GlobalVars.RightArmColorID + "," + GlobalVars.LeftLegColorID + "," + GlobalVars.RightLegColorID + ",'" + GlobalVars.Custom_TShirt + "','" + GlobalVars.Custom_Shirt + "','" + GlobalVars.Custom_Pants + "','" + GlobalVars.Custom_Face + "');" + quote;
}
else if (GlobalVars.UsesPlayerName == false && GlobalVars.UsesID == false )
{
- args = quote + mapfile + "\" -script \"dofile('" + luafile + "'); _G.CSSolo(0,'Player','" + HatIDOffline1 + "','" + HatIDOffline2 + "','" + HatIDOffline3 + "'," + GlobalVars.HeadColorID + "," + GlobalVars.TorsoColorID + "," + GlobalVars.LeftArmColorID + "," + GlobalVars.RightArmColorID + "," + GlobalVars.LeftLegColorID + "," + GlobalVars.RightLegColorID + ");" + quote;
+ args = quote + mapfile + "\" -script \"dofile('" + luafile + "'); _G.CSSolo(0,'Player','" + HatIDOffline1 + "','" + HatIDOffline2 + "','" + HatIDOffline3 + "'," + GlobalVars.HeadColorID + "," + GlobalVars.TorsoColorID + "," + GlobalVars.LeftArmColorID + "," + GlobalVars.RightArmColorID + "," + GlobalVars.LeftLegColorID + "," + GlobalVars.RightLegColorID + ",'" + GlobalVars.Custom_TShirt + "','" + GlobalVars.Custom_Shirt + "','" + GlobalVars.Custom_Pants + "','" + GlobalVars.Custom_Face + "');" + quote;
}
try
{
@@ -763,6 +765,7 @@ namespace RBXLegacyLauncher
}
else if (command.Equals("rbxlegacy client"))
{
+ Process.Start("sudppipe.exe", "-p " + GlobalVars.IP + " " + GlobalVars.RobloxPort + " " + GlobalVars.RobloxPort);
StartClient();
}
else if (command.Equals("rbxlegacy client solo"))
diff --git a/RBXLegacyLauncher/RBXLegacyLauncher/RBXLegacyLauncher.csproj b/RBXLegacyLauncher/RBXLegacyLauncher/RBXLegacyLauncher.csproj
index a3add37..da19dfc 100644
--- a/RBXLegacyLauncher/RBXLegacyLauncher/RBXLegacyLauncher.csproj
+++ b/RBXLegacyLauncher/RBXLegacyLauncher/RBXLegacyLauncher.csproj
@@ -59,6 +59,10 @@
CharacterCustomization.cs
+
+
+ CharacterCustomization_ClothingMenu.cs
+
CharacterCustomization_HatMenu.cs
@@ -99,6 +103,9 @@
CharacterCustomization.cs
+
+ CharacterCustomization_ClothingMenu.cs
+
CharacterCustomization_HatMenu.cs
diff --git a/RBXLegacySetup.iss b/RBXLegacySetup.iss
index 743784c..380656b 100644
--- a/RBXLegacySetup.iss
+++ b/RBXLegacySetup.iss
@@ -1,7 +1,7 @@
; Script generated by the Inno Script Studio Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
-#define AppVer "1.17_Final"
+#define AppVer "1.18_Final"
[Setup]
; NOTE: The value of AppId uniquely identifies this application.
@@ -38,6 +38,7 @@ Source: "RBXLegacy\clients\*"; DestDir: "{app}\clients"; Flags: ignoreversion re
Source: "RBXLegacy\maps\*"; DestDir: "{app}\maps"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "RBXLegacy\models\*"; DestDir: "{app}\models"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "RBXLegacy\charcustom\*"; DestDir: "{app}\charcustom"; Flags: ignoreversion recursesubdirs createallsubdirs
+Source: "RBXLegacy\sudppipe.exe"; DestDir: "{app}"; Flags: ignoreversion
[Icons]
Name: "{group}\RBXLegacy"; Filename: "{app}\RBXLegacyLauncher.exe"
diff --git a/RBXLegacy_site/games.php b/RBXLegacy_site/games.php
index 4cdccd2..5b2a378 100644
--- a/RBXLegacy_site/games.php
+++ b/RBXLegacy_site/games.php
@@ -15,7 +15,7 @@
+
+
Games
@@ -57,9 +63,7 @@ echo "".noHTML($row['name'])."
";
echo "Map: ".noHTML($row['map'])."
";
echo "Client: ".noHTML(base64_decode($row['client']))."
";
echo "Player Limit: ".noHTML($row['playerlimit'])."
";
-date_default_timezone_set('America/Phoenix');
-$date = date('m/d/Y h:i:s a', time());
-echo " Creation Time: ".$date."
";
+echo " Creation Time: ".noHTML($row['date'])."
";
$stringbuild = $row['ip']."|".$row['port']."|".$row['client'];
$encryptstring = base64_encode($stringbuild);
$url = "RBXLegacy://".$encryptstring;
diff --git a/RBXLegacy_site/getservercode.php b/RBXLegacy_site/getservercode.php
index efe0b99..75d984d 100644
--- a/RBXLegacy_site/getservercode.php
+++ b/RBXLegacy_site/getservercode.php
@@ -24,12 +24,14 @@ $namefixed = mysqli_real_escape_string($con,$_POST['name']);
$ipcrypt = base64_encode($_POST['ip']);
$clientcrypt = base64_encode($_POST['client']);
$portcrypt = base64_encode($_POST['port']);
+date_default_timezone_set('America/Phoenix');
+$date = date('m/d/Y h:i:s a', time());
-$sql="INSERT INTO games (name, map, ip, port, client, playerlimit)
+$sql="INSERT INTO games (name, map, ip, port, client, playerlimit, date)
VALUES
-('$namefixed','$_POST[map]','$ipcrypt','$portcrypt','$clientcrypt','$_POST[playerlimit]')";
+('$namefixed','$_POST[map]','$ipcrypt','$portcrypt','$clientcrypt','$_POST[playerlimit]','$date')";
if (!$con->query($sql))
{
@@ -44,7 +46,7 @@ $playerlimit=$_POST['playerlimit'];